(self.webpackChunksubstack=self.webpackChunksubstack||[]).push([["1300"],{94963:function(){},91296:function(e,t,i){var n=0/0,r=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,o=/^0b[01]+$/i,s=/^0o[0-7]+$/i,c=parseInt,l="object"==typeof i.g&&i.g&&i.g.Object===Object&&i.g,d="object"==typeof self&&self&&self.Object===Object&&self,u=l||d||Function("return this")(),h=Object.prototype.toString,p=Math.max,m=Math.min,f=function(){return u.Date.now()};function g(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function v(e){if("number"==typeof e)return e;if("symbol"==typeof(t=e)||t&&"object"==typeof t&&"[object Symbol]"==h.call(t))return n;if(g(e)){var t,i="function"==typeof e.valueOf?e.valueOf():e;e=g(i)?i+"":i}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(r,"");var l=o.test(e);return l||s.test(e)?c(e.slice(2),l?2:8):a.test(e)?n:+e}e.exports=function(e,t,i){var n,r,a,o,s,c,l=0,d=!1,u=!1,h=!0;if("function"!=typeof e)throw TypeError("Expected a function");function b(t){var i=n,a=r;return n=r=void 0,l=t,o=e.apply(a,i)}function y(e){var i=e-c,n=e-l;return void 0===c||i>=t||i<0||u&&n>=a}function k(){var e,i,n,r=f();if(y(r))return T(r);s=setTimeout(k,(e=r-c,i=r-l,n=t-e,u?m(n,a-i):n))}function T(e){return(s=void 0,h&&n)?b(e):(n=r=void 0,o)}function C(){var e,i=f(),a=y(i);if(n=arguments,r=this,c=i,a){if(void 0===s)return l=e=c,s=setTimeout(k,t),d?b(e):o;if(u)return s=setTimeout(k,t),b(c)}return void 0===s&&(s=setTimeout(k,t)),o}return t=v(t)||0,g(i)&&(d=!!i.leading,a=(u="maxWait"in i)?p(v(i.maxWait)||0,t):a,h="trailing"in i?!!i.trailing:h),C.cancel=function(){void 0!==s&&clearTimeout(s),l=0,n=c=r=s=void 0},C.flush=function(){return void 0===s?o:T(f())},C}},2043:function(e){var t;t=function(){"use strict";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"],r={},a=null;function o(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 c(){for(var i=this.getLevel(),r=0;r=0&&t<=u.levels.SILENT)return t;throw TypeError("log.setLevel() called with invalid level: "+e)}"string"==typeof e?h+=":"+e:"symbol"==typeof e&&(h=void 0),u.name=e,u.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},u.methodFactory=i||d,u.getLevel=function(){return null!=l?l:null!=s?s:o},u.setLevel=function(e,i){return l=m(e),!1!==i&&function(e){var i=(n[e]||"silent").toUpperCase();if(typeof window!==t&&h){try{window.localStorage[h]=i;return}catch(e){}try{window.document.cookie=encodeURIComponent(h)+"="+i+";"}catch(e){}}}(l),c.call(u)},u.setDefaultLevel=function(e){s=m(e),p()||u.setLevel(e,!1)},u.resetLevel=function(){l=null,function(){if(typeof window!==t&&h){try{window.localStorage.removeItem(h)}catch(e){}try{window.document.cookie=encodeURIComponent(h)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(e){}}}(),c.call(u)},u.enableAll=function(e){u.setLevel(u.levels.TRACE,e)},u.disableAll=function(e){u.setLevel(u.levels.SILENT,e)},u.rebuild=function(){if(a!==u&&(o=m(a.getLevel())),c.call(u),a===u)for(var e in r)r[e].rebuild()},o=m(a?a.getLevel():"WARN");var f=p();null!=f&&(l=m(f)),c.call(u)}(a=new u).getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw TypeError("You must supply a name when creating a logger.");var t=r[e];return t||(t=r[e]=new u(e,a.methodFactory)),t};var h=typeof window!==t?window.log:void 0;return a.noConflict=function(){return typeof window!==t&&window.log===a&&(window.log=h),a},a.getLoggers=function(){return r},a.default=a,a},"function"==typeof define&&define.amd?define(t):e.exports?e.exports=t():this.log=t()},53962:function(e,t,i){"use strict";i.d(t,{Z:()=>n});/** * @license lucide-preact v0.453.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */let n=(0,i(36150).Z)("Clipboard",[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]])},32503:function(e,t,i){"use strict";i.d(t,{Z:()=>n});/** * @license lucide-preact v0.453.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */let n=(0,i(36150).Z)("Radio",[["path",{d:"M4.9 19.1C1 15.2 1 8.8 4.9 4.9",key:"1vaf9d"}],["path",{d:"M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5",key:"u1ii0m"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5",key:"1j5fej"}],["path",{d:"M19.1 4.9C23 8.8 23 15.1 19.1 19",key:"10b0cb"}]])},6942:function(e,t,i){"use strict";i.d(t,{BL:()=>tB,y7:()=>im,VS:()=>iP,Me:()=>iy,Ih:()=>tV,IC:()=>ik,Z5:()=>iT,tt:()=>iS});var n,r,a=i(98661);let o=e=>{let t=a.useRef(e);return a.useEffect(()=>{t.current=e}),t},s=function(){for(var e,t,i=0,n="",r=arguments.length;i0&&r[r.length-1])&&(6===s[0]||2===s[0])){a=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function v(e,t){var i="function"==typeof Symbol&&e[Symbol.iterator];if(!i)return e;var n,r,a=i.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=a.next()).done;)o.push(n.value)}catch(e){r={error:e}}finally{try{n&&!n.done&&(i=a.return)&&i.call(a)}finally{if(r)throw r.error}}return o}function b(e,t,i){if(i||2==arguments.length)for(var n,r=0,a=t.length;r1||s(e,t)})},t&&(n[e]=t(n[e])))}function s(e,t){try{var i;(i=r[e](t)).value instanceof y?Promise.resolve(i.value.v).then(c,l):d(a[0][2],i)}catch(e){d(a[0][3],e)}}function c(e){s("next",e)}function l(e){s("throw",e)}function d(e,t){e(t),a.shift(),a.length&&s(a[0][0],a[0][1])}}(this,arguments,function(){var t,i,n;return f(this,function(r){switch(r.label){case 0:t=e.getReader(),r.label=1;case 1:r.trys.push([1,,9,10]),r.label=2;case 2:return[4,y(t.read())];case 3:if(n=(i=r.sent()).value,!i.done)return[3,5];return[4,y(void 0)];case 4:return[2,r.sent()];case 5:return[4,y(n)];case 6:return[4,r.sent()];case 7:return r.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}})})}function en(e){return u(null==e?void 0:e.getReader)}function er(e){if(e instanceof $)return e;if(null!=e){var t,i,n,r;if(u(e[H])){return t=e,new $(function(e){var i=t[H]();if(u(i.subscribe))return i.subscribe(e);throw TypeError("Provided object does not correctly implement Symbol.observable")})}if(z(e)){return i=e,new $(function(e){for(var t=0;t0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(t){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,t)},t.prototype._subscribe=function(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)},t.prototype._innerSubscribe=function(e){var t=this,i=this.hasError,n=this.isStopped,r=this.observers;return i||n?w:(this.currentObservers=null,r.push(e),new S(function(){t.currentObservers=null,C(r,e)}))},t.prototype._checkFinalizedStatuses=function(e){var t=this.hasError,i=this.thrownError,n=this.isStopped;t?e.error(i):n&&e.complete()},t.prototype.asObservable=function(){var e=new $;return e.source=this,e},t.create=function(e,t){return new ev(e,t)},t}($),ev=function(e){function t(t,i){var n=e.call(this)||this;return n.destination=t,n.source=i,n}return m(t,e),t.prototype.next=function(e){var t,i;null===(i=null===(t=this.destination)||void 0===t?void 0:t.next)||void 0===i||i.call(t,e)},t.prototype.error=function(e){var t,i;null===(i=null===(t=this.destination)||void 0===t?void 0:t.error)||void 0===i||i.call(t,e)},t.prototype.complete=function(){var e,t;null===(t=null===(e=this.destination)||void 0===e?void 0:e.complete)||void 0===t||t.call(e)},t.prototype._subscribe=function(e){var t,i;return null!==(i=null===(t=this.source)||void 0===t?void 0:t.subscribe(e))&&void 0!==i?i:w},t}(eg);function eb(e,t){return h(function(i,n){var r=0;i.subscribe(Q(n,function(i){return e.call(t,i,r++)&&n.next(i)}))})}var ey=function(e){function t(t){var i=e.call(this)||this;return i._value=t,i}return m(t,e),Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(t){var i=e.prototype._subscribe.call(this,t);return i.closed||t.next(this._value),i},t.prototype.getValue=function(){var e=this.hasError,t=this.thrownError,i=this._value;if(e)throw t;return this._throwIfClosed(),i},t.prototype.next=function(t){e.prototype.next.call(this,this._value=t)},t}(eg);function ek(){for(var e=[],t=0;tt in e?e_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,eB=(e,t)=>{for(var i in t||(t={}))eU.call(t,i)&&eF(e,i,t[i]);if(eL)for(var i of eL(t))ej.call(t,i)&&eF(e,i,t[i]);return e},eV=(e,t,i)=>new Promise((n,r)=>{var a=e=>{try{s(i.next(e))}catch(e){r(e)}},o=e=>{try{s(i.throw(e))}catch(e){r(e)}},s=e=>e.done?n(e.value):Promise.resolve(e.value).then(a,o);s((i=i.apply(e,t)).next())});function eq(e){var t,i,n;return void 0!==e&&(!!(t=e)&&t.hasOwnProperty("participant")&&t.hasOwnProperty("source")&&t.hasOwnProperty("track")&&void 0!==(null==(i=t.publication)?void 0:i.track)||!!(n=e)&&n.hasOwnProperty("participant")&&n.hasOwnProperty("source")&&n.hasOwnProperty("publication")&&void 0!==n.publication)}function eQ(e){return!!e&&e.hasOwnProperty("participant")&&e.hasOwnProperty("source")&&void 0===e.publication}function eW(e){if("string"==typeof e||"number"==typeof e)return`${e}`;if(eQ(e))return`${e.participant.identity}_${e.source}_placeholder`;if(eq(e))return`${e.participant.identity}_${e.publication.source}_${e.publication.trackSid}`;throw Error(`Can't generate a id for the given track reference: ${e}`)}function eG(e,t){return void 0!==t&&(eq(e)?t.some(t=>t.participant.identity===e.participant.identity&&eq(t)&&t.publication.trackSid===e.publication.trackSid):!!eQ(e)&&t.some(t=>t.participant.identity===e.participant.identity&&eQ(t)&&t.source===e.source))}function ez(e){return e instanceof c.Ix}var eK=[c.TQ.ConnectionStateChanged,c.TQ.RoomMetadataChanged,c.TQ.ActiveSpeakersChanged,c.TQ.ConnectionQualityChanged,c.TQ.ParticipantConnected,c.TQ.ParticipantDisconnected,c.TQ.ParticipantPermissionsChanged,c.TQ.ParticipantMetadataChanged,c.TQ.TrackMuted,c.TQ.TrackUnmuted,c.TQ.TrackPublished,c.TQ.TrackUnpublished,c.TQ.TrackStreamStateChanged,c.TQ.TrackSubscriptionFailed,c.TQ.TrackSubscriptionPermissionChanged,c.TQ.TrackSubscriptionStatusChanged,c.TQ.LocalTrackPublished,c.TQ.LocalTrackUnpublished];c.dd.TrackPublished,c.dd.TrackUnpublished,c.dd.TrackMuted,c.dd.TrackUnmuted,c.dd.TrackStreamStateChanged,c.dd.TrackSubscribed,c.dd.TrackUnsubscribed,c.dd.TrackSubscriptionPermissionChanged,c.dd.TrackSubscriptionFailed,c.dd.LocalTrackPublished,c.dd.LocalTrackUnpublished,c.dd.ConnectionQualityChanged,c.dd.IsSpeakingChanged,c.dd.ParticipantMetadataChanged,c.dd.ParticipantPermissionsChanged,c.dd.TrackMuted,c.dd.TrackUnmuted,c.dd.TrackPublished,c.dd.TrackUnpublished,c.dd.TrackStreamStateChanged,c.dd.TrackSubscriptionFailed,c.dd.TrackSubscriptionPermissionChanged,c.dd.TrackSubscriptionStatusChanged,c.dd.LocalTrackPublished,c.dd.LocalTrackUnpublished;var eH=d.getLogger("lk-components-js");eH.setDefaultLevel("WARN");var eJ=[{columns:1,rows:1,name:"1x1",minTiles:1,maxTiles:1,minWidth:0,minHeight:0},{columns:1,rows:2,name:"1x2",minTiles:2,maxTiles:2,minWidth:0,minHeight:0},{columns:2,rows:1,name:"2x1",minTiles:2,maxTiles:2,minWidth:900,minHeight:0},{columns:2,rows:2,name:"2x2",minTiles:3,maxTiles:4,minWidth:560,minHeight:0},{columns:3,rows:3,name:"3x3",minTiles:5,maxTiles:9,minWidth:700,minHeight:0},{columns:4,rows:4,name:"4x4",minTiles:10,maxTiles:16,minWidth:960,minHeight:0},{columns:5,rows:5,name:"5x5",minTiles:17,maxTiles:25,minWidth:1100,minHeight:0}];function e$(e){return"object"==typeof e}function eY(e){return Array.isArray(e)&&e.filter(e$).length>0}function eX(e,t){var i,n,r,a;return(null!=(n=null==(i=e.joinedAt)?void 0:i.getTime())?n:0)-(null!=(a=null==(r=t.joinedAt)?void 0:r.getTime())?a:0)}function eZ(e,t){return Array(Math.max(e.length,t.length)).fill([]).map((i,n)=>[e[n],t[n]])}function e0(e,t,i){return e.filter(e=>!t.map(e=>i(e)).includes(i(e)))}function e1(e){return e.map(e=>"string"==typeof e||"number"==typeof e?`${e}`:eW(e))}function e5(e,t){let i=t.findIndex(t=>eW(t)===eW(e));if(-1===i)throw Error(`Element not part of the array: ${eW(e)} not in ${e1(t)}`);return i}function e2(e,t){return e.reduce((e,i,n)=>n%t==0?[...e,[i]]:[...e.slice(0,-1),[...e.slice(-1)[0],i]],[])}function e3(e){return`lk-${e}`}function e6(e){if(eq(e))return e.publication;{let{source:t,name:i,participant:n}=e;if(t&&i)return n.getTrackPublications().find(e=>e.source===t&&e.trackName===i);if(i)return n.getTrackPublicationByName(i);if(t)return n.getTrackPublication(t);else throw Error("At least one of source and name needs to be defined")}}function e4(e,...t){return new $(i=>{let n=()=>{i.next(e)};return t.forEach(t=>{e.on(t,n)}),()=>{t.forEach(t=>{e.off(t,n)})}}).pipe(em(e))}function e9(e,t){return new $(i=>{let n=(...e)=>{i.next(e)};return e.on(t,n),()=>{e.off(t,n)}})}function e7(e){return e4(e,c.TQ.AudioPlaybackStatusChanged).pipe(G(e=>({canPlayAudio:e.canPlaybackAudio})))}function e8(e){return e4(e,c.TQ.VideoPlaybackStatusChanged).pipe(G(e=>({canPlayVideo:e.canPlaybackVideo})))}function te(e,...t){return new $(i=>{let n=()=>{i.next(e)};return t.forEach(t=>{e.on(t,n)}),()=>{t.forEach(t=>{e.off(t,n)})}}).pipe(em(e))}function tt(e){return te(e,c.dd.TrackMuted,c.dd.TrackUnmuted,c.dd.ParticipantPermissionsChanged,c.dd.TrackPublished,c.dd.TrackUnpublished,c.dd.LocalTrackPublished,c.dd.LocalTrackUnpublished,c.dd.MediaDevicesError,c.dd.TrackSubscriptionStatusChanged).pipe(G(e=>{let{isMicrophoneEnabled:t,isCameraEnabled:i,isScreenShareEnabled:n}=e,r=e.getTrackPublication(c.fQ.Source.Microphone);return{isCameraEnabled:i,isMicrophoneEnabled:t,isScreenShareEnabled:n,cameraTrack:e.getTrackPublication(c.fQ.Source.Camera),microphoneTrack:r,participant:e}}))}function ti(e,t){return new $(i=>{let n=(...e)=>{i.next(e)};return e.on(t,n),()=>{e.off(t,n)}})}function tn(e){var t,i,n,r;return te(e.participant,c.dd.TrackMuted,c.dd.TrackUnmuted,c.dd.TrackSubscribed,c.dd.TrackUnsubscribed,c.dd.LocalTrackPublished,c.dd.LocalTrackUnpublished).pipe(G(t=>{var i,n;let r=null!=(i=e.publication)?i:t.getTrackPublication(e.source);return null==(n=null==r?void 0:r.isMuted)||n}),em(null==(r=null!=(n=null==(t=e.publication)?void 0:t.isMuted)?n:null==(i=e.participant.getTrackPublication(e.source))?void 0:i.isMuted)||r))}function tr(e,t,i=!0){let n=[e.localParticipant,...Array.from(e.remoteParticipants.values())],r=[];return n.forEach(e=>{t.forEach(t=>{let n=Array.from(e.trackPublications.values()).filter(e=>e.source===t&&(!i||e.track)).map(t=>({participant:e,publication:t,source:t.source}));r.push(...n)})}),{trackReferences:r,participants:n}}new TextEncoder,new TextDecoder;var ta={videoEnabled:!0,audioEnabled:!0,videoDeviceId:"",audioDeviceId:"",username:""},{load:to,save:ts}=(n="lk-user-choices",{load:()=>(function(e){if("undefined"==typeof localStorage){eH.error("Local storage is not available.");return}try{let t=localStorage.getItem(e);if(!t){eH.warn(`Item with key ${e} does not exist in local storage.`);return}return JSON.parse(t)}catch(e){eH.error(`Error getting item from local storage: ${e}`);return}})(n),save:e=>(function(e,t){if("undefined"==typeof localStorage){eH.error("Local storage is not available.");return}try{localStorage.setItem(e,JSON.stringify(t))}catch(e){eH.error(`Error setting item to local storage: ${e}`)}})(n,e)});i(91296);var tc=i(34155),tl=Object.defineProperty,td=Object.defineProperties,tu=Object.getOwnPropertyDescriptors,th=Object.getOwnPropertySymbols,tp=Object.prototype.hasOwnProperty,tm=Object.prototype.propertyIsEnumerable,tf=(e,t,i)=>t in e?tl(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,tg=(e,t)=>{for(var i in t||(t={}))tp.call(t,i)&&tf(e,i,t[i]);if(th)for(var i of th(t))tm.call(t,i)&&tf(e,i,t[i]);return e},tv=(e,t)=>td(e,tu(t)),tb=(e,t)=>{var i={};for(var n in e)tp.call(e,n)&&0>t.indexOf(n)&&(i[n]=e[n]);if(null!=e&&th)for(var n of th(e))0>t.indexOf(n)&&tm.call(e,n)&&(i[n]=e[n]);return i},ty=(e,t,i)=>new Promise((n,r)=>{var a=e=>{try{s(i.next(e))}catch(e){r(e)}},o=e=>{try{s(i.throw(e))}catch(e){r(e)}},s=e=>e.done?n(e.value):Promise.resolve(e.value).then(a,o);s((i=i.apply(e,t)).next())}),tk=()=>r||(r=function(){let e=!1,t=[],i=new Map;if("undefined"==typeof window)return;let n=new ResizeObserver((n,r)=>{t=t.concat(n),e||window.requestAnimationFrame(()=>{let n=new Set;for(let e=0;ei(t[e],r))}t=[],e=!1}),e=!0});return{observer:n,subscribe(e,t){var r;n.observe(e);let a=null!=(r=i.get(e))?r:[];a.push(t),i.set(e,a)},unsubscribe(e,t){var r;let a=null!=(r=i.get(e))?r:[];if(1===a.length){n.unobserve(e),i.delete(e);return}let o=a.indexOf(t);-1!==o&&a.splice(o,1),i.set(e,a)}}}()),tT=e=>{let[t,i]=a.useState({width:0,height:0});return a.useLayoutEffect(()=>{if(e.current){let{width:t,height:n}=e.current.getBoundingClientRect();i({width:t,height:n})}},[e.current]),!function(e,t){let i=tk(),n=o(t);a.useLayoutEffect(()=>{let t=!1,r=e.current;if(r)return null==i||i.subscribe(r,a),()=>{t=!0,null==i||i.unsubscribe(r,a)};function a(e,i){t||n.current(e,i)}},[e.current,i,n]),null==i||i.observer}(e,a.useCallback(e=>i(e.contentRect),[])),t};function tC(e,t,i=!0){let[n,r]=a.useState(t);return a.useEffect(()=>{if(i&&r(t),"undefined"==typeof window||!e)return;let n=e.subscribe(r);return()=>n.unsubscribe()},[e,i]),n}var tS=a.createContext(void 0);function tw(){let e=a.useContext(tS);if(!e)throw Error("Tried to access LayoutContext context outside a LayoutContextProvider provider.");return e}function tE(){return a.useContext(tS)}var tP=a.createContext(void 0);function tR(){return a.useContext(tP)}function tx(e){let t=tR(),i=null!=e?e:t;if(!i)throw Error("No TrackRef, make sure you are inside a TrackRefContext or pass the TrackRef explicitly");return i}var tI=a.createContext(void 0);function tO(){return a.useContext(tI)}function tM(e){var t;let i=tO(),n=tR(),r=null!=(t=null!=e?e:i)?t:null==n?void 0:n.participant;if(!r)throw Error("No participant provided, make sure you are inside a participant context or pass the participant explicitly");return r}var tD=a.createContext(void 0);function tN(){let e=a.useContext(tD);if(!e)throw Error("tried to access room context outside of livekit room component");return e}function tA(){return a.useContext(tD)}function t_(e){let t=tA(),i=null!=e?e:t;if(!i)throw Error("No room provided, make sure you are inside a Room context or pass the room explicitly");return i}var tL=a.createContext(void 0);function tU(...e){let t=tg({},e[0]);for(let i=1;i=65&&90>=e.charCodeAt(2)?t[e]=function(...e){return(...t)=>{for(let i of e)if("function"==typeof i)try{i(...t)}catch(e){console.error(e)}}}(i,r):("className"===e||"UNSAFE_className"===e)&&"string"==typeof i&&"string"==typeof r?t[e]=s(i,r):t[e]=void 0!==r?r:i}}return t}function tj(e,t={}){var i,n;let r=tM("string"==typeof e?t.participant:e.participant),o="string"==typeof e?{participant:r,source:e}:e,[s,c]=a.useState(!!((null==(i=o.publication)?void 0:i.isMuted)||(null==(n=r.getTrackPublication(o.source))?void 0:n.isMuted)));return a.useEffect(()=>{let e=tn(o).subscribe(c);return()=>e.unsubscribe()},[eW(o)]),s}var tF={connect:!0,audio:!1,video:!1};function tB(e={}){let t=function(e={}){let t=t_(e.room),[i,n]=a.useState([]);return a.useEffect(()=>{let i=(function(e,t={}){var i;let n;let r=new $(e=>(n=e,()=>o.unsubscribe())).pipe(em(Array.from(e.remoteParticipants.values()))),a=null!=(i=t.additionalRoomEvents)?i:eK,o=e4(e,...Array.from(new Set([c.TQ.ParticipantConnected,c.TQ.ParticipantDisconnected,c.TQ.ConnectionStateChanged,...a]))).subscribe(e=>null==n?void 0:n.next(Array.from(e.remoteParticipants.values())));return e.remoteParticipants.size>0&&(null==n||n.next(Array.from(e.remoteParticipants.values()))),r})(t,{additionalRoomEvents:e.updateOnlyOn}).subscribe(n);return()=>i.unsubscribe()},[t,JSON.stringify(e.updateOnlyOn)]),i}(e),{localParticipant:i}=function(e={}){let t=t_(e.room),[i,n]=a.useState(t.localParticipant),[r,o]=a.useState(i.isMicrophoneEnabled),[s,c]=a.useState(i.isMicrophoneEnabled),[l,d]=a.useState(i.lastMicrophoneError),[u,h]=a.useState(i.lastCameraError),[p,m]=a.useState(i.isMicrophoneEnabled),[f,g]=a.useState(void 0),[v,b]=a.useState(void 0),y=e=>{c(e.isCameraEnabled),o(e.isMicrophoneEnabled),m(e.isScreenShareEnabled),b(e.cameraTrack),g(e.microphoneTrack),d(e.participant.lastMicrophoneError),h(e.participant.lastCameraError),n(e.participant)};return a.useEffect(()=>{let e=tt(t.localParticipant).subscribe(y);return()=>e.unsubscribe()},[t]),{isMicrophoneEnabled:r,isScreenShareEnabled:p,isCameraEnabled:s,microphoneTrack:f,cameraTrack:v,lastMicrophoneError:l,lastCameraError:u,localParticipant:i}}(e);return a.useMemo(()=>[i,...t],[i,t])}function tV(e=[c.fQ.Source.Camera,c.fQ.Source.Microphone,c.fQ.Source.ScreenShare,c.fQ.Source.ScreenShareAudio,c.fQ.Source.Unknown],t={}){let i=t_(t.room),[n,r]=a.useState([]),[o,s]=a.useState([]),l=a.useMemo(()=>e.map(e=>e$(e)?e.source:e),[JSON.stringify(e)]);return a.useEffect(()=>{let e=(function(e,t,i){var n,r;let a=null!=(n=i.additionalRoomEvents)?n:eK,o=null==(r=i.onlySubscribed)||r;return e4(e,...Array.from(new Set([c.TQ.ParticipantConnected,c.TQ.ParticipantDisconnected,c.TQ.ConnectionStateChanged,c.TQ.LocalTrackPublished,c.TQ.LocalTrackUnpublished,c.TQ.TrackPublished,c.TQ.TrackUnpublished,c.TQ.TrackSubscriptionStatusChanged,...a]).values())).pipe(G(e=>{let i=tr(e,t,o);return eH.debug(`TrackReference[] was updated. (length ${i.trackReferences.length})`,i),i}),em(tr(e,t,o)))})(i,l,{additionalRoomEvents:t.updateOnlyOn,onlySubscribed:t.onlySubscribed}).subscribe(({trackReferences:e,participants:t})=>{eH.debug("setting track bundles",e,t),r(e),s(t)});return()=>e.unsubscribe()},[i,JSON.stringify(t.onlySubscribed),JSON.stringify(t.updateOnlyOn),JSON.stringify(e)]),a.useMemo(()=>{if(!eY(e))return n;{let t=function(e,t){let i=new Map;if(eY(e)){let n=e.filter(e=>e.withPlaceholder).map(e=>e.source);t.forEach(e=>{let t=e.getTrackPublications().map(e=>{var t;return null==(t=e.track)?void 0:t.source}).filter(e=>void 0!==e),r=Array.from(function(e,t){let i=new Set(e);for(let e of t)i.delete(e);return i}(new Set(n),new Set(t)));r.length>0&&i.set(e.identity,r)})}return i}(e,o),i=Array.from(n);return o.forEach(e=>{var r;t.has(e.identity)&&(null!=(r=t.get(e.identity))?r:[]).forEach(t=>{!n.find(({participant:i,publication:n})=>e.identity===i.identity&&n.source===t)&&(eH.debug(`Add ${t} placeholder for participant ${e.identity}.`),i.push({participant:e,source:t}))})}),i}},[n,o,e])}function tq(e={}){var t;let[i,n]=a.useState(function(e,t=!1){var i,n,r,a,o;let s={videoEnabled:null!=(i=null==e?void 0:e.videoEnabled)?i:ta.videoEnabled,audioEnabled:null!=(n=null==e?void 0:e.audioEnabled)?n:ta.audioEnabled,videoDeviceId:null!=(r=null==e?void 0:e.videoDeviceId)?r:ta.videoDeviceId,audioDeviceId:null!=(a=null==e?void 0:e.audioDeviceId)?a:ta.audioDeviceId,username:null!=(o=null==e?void 0:e.username)?o:ta.username};if(t)return s;{let e=to();return eB(eB({},s),null!=e?e:{})}}(e.defaults,null!=(t=e.preventLoad)&&t)),r=a.useCallback(e=>{n(t=>tv(tg({},t),{audioEnabled:e}))},[]),o=a.useCallback(e=>{n(t=>tv(tg({},t),{videoEnabled:e}))},[]),s=a.useCallback(e=>{n(t=>tv(tg({},t),{audioDeviceId:e}))},[]),c=a.useCallback(e=>{n(t=>tv(tg({},t),{videoDeviceId:e}))},[]),l=a.useCallback(e=>{n(t=>tv(tg({},t),{username:e}))},[]);return a.useEffect(()=>{var t;!function(e,t=!1){!0!==t&&ts(e)}(i,null!=(t=e.preventSave)&&t)},[i,e.preventSave]),{userChoices:i,saveAudioInputEnabled:r,saveVideoInputEnabled:o,saveAudioInputDeviceId:s,saveVideoInputDeviceId:c,saveUsername:l}}var tQ=a.forwardRef(function(e,t){let{mergedProps:i}=function({props:e}){let{dispatch:t,state:i}=tw().widget,{className:n}=a.useMemo(()=>({className:[e3("button"),e3("chat-toggle")].join(" ")}),[]);return{mergedProps:a.useMemo(()=>tU(e,{className:n,onClick:()=>{t&&t({msg:"toggle_chat"})},"aria-pressed":(null==i?void 0:i.showChat)?"true":"false","data-lk-unread-msgs":i?i.unreadMessages<10?i.unreadMessages.toFixed(0):"9+":"0"}),[e,n,t,i])}}({props:e});return a.createElement("button",tg({ref:t},i),e.children)}),tW=a.forwardRef(function(e,t){let{buttonProps:i}=function(e){let t=tN(),i=function(e){let t=t_(e);return tC(a.useMemo(()=>e9(t,c.TQ.ConnectionStateChanged).pipe(G(([e])=>e),em(t.state)),[t]),t.state)}(t);return{buttonProps:a.useMemo(()=>{let{className:n,disconnect:r}={className:e3("disconnect-button"),disconnect:e=>{t.disconnect(e)}};return tU(e,{className:n,onClick:()=>{var t;return r(null==(t=e.stopTracks)||t)},disabled:i===c.em.Disconnected})},[t,e,i])}}(e);return a.createElement("button",tg({ref:t},i),e.children)}),tG=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentColor"},e),a.createElement("path",{d:"M1.354.646a.5.5 0 1 0-.708.708l14 14a.5.5 0 0 0 .708-.708L11 10.293V4.5A1.5 1.5 0 0 0 9.5 3H3.707zM0 4.5a1.5 1.5 0 0 1 .943-1.393l9.532 9.533c-.262.224-.603.36-.975.36h-8A1.5 1.5 0 0 1 0 11.5z"}),a.createElement("path",{d:"m15.2 3.6-2.8 2.1a1 1 0 0 0-.4.8v3a1 1 0 0 0 .4.8l2.8 2.1a.5.5 0 0 0 .8-.4V4a.5.5 0 0 0-.8-.4"})),tz=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentColor"},e),a.createElement("path",{d:"M0 4.5A1.5 1.5 0 0 1 1.5 3h8A1.5 1.5 0 0 1 11 4.5v7A1.5 1.5 0 0 1 9.5 13h-8A1.5 1.5 0 0 1 0 11.5zM15.2 3.6l-2.8 2.1a1 1 0 0 0-.4.8v3a1 1 0 0 0 .4.8l2.8 2.1a.5.5 0 0 0 .8-.4V4a.5.5 0 0 0-.8-.4"})),tK=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:18,fill:"none"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M0 2.75A2.75 2.75 0 0 1 2.75 0h10.5A2.75 2.75 0 0 1 16 2.75v13.594a.75.75 0 0 1-1.234.572l-3.691-3.12a1.25 1.25 0 0 0-.807-.296H2.75A2.75 2.75 0 0 1 0 10.75zM2.75 1.5c-.69 0-1.25.56-1.25 1.25v8c0 .69.56 1.25 1.25 1.25h7.518c.65 0 1.279.23 1.775.65l2.457 2.077V2.75c0-.69-.56-1.25-1.25-1.25z",clipRule:"evenodd"}),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M3 4.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5m0 2a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5",clipRule:"evenodd"})),tH=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none"},e),a.createElement("path",{fill:"currentcolor",fillRule:"evenodd",d:"M5.293 2.293a1 1 0 0 1 1.414 0l4.823 4.823a1.25 1.25 0 0 1 0 1.768l-4.823 4.823a1 1 0 0 1-1.414-1.414L9.586 8 5.293 3.707a1 1 0 0 1 0-1.414",clipRule:"evenodd"})),tJ=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none"},e),a.createElement("g",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5},a.createElement("path",{d:"M10 1.75h4.25m0 0V6m0-4.25L9 7M6 14.25H1.75m0 0V10m0 4.25L7 9"}))),t$=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none"},e),a.createElement("path",{fill:"currentcolor",fillRule:"evenodd",d:"M8.961.894C8.875-.298 7.125-.298 7.04.894c-.066.912-1.246 1.228-1.76.472-.67-.99-2.186-.115-1.664.96.399.824-.465 1.688-1.288 1.289-1.076-.522-1.95.994-.961 1.665.756.513.44 1.693-.472 1.759-1.192.086-1.192 1.836 0 1.922.912.066 1.228 1.246.472 1.76-.99.67-.115 2.186.96 1.664.824-.399 1.688.465 1.289 1.288-.522 1.076.994 1.95 1.665.961.513-.756 1.693-.44 1.759.472.086 1.192 1.836 1.192 1.922 0 .066-.912 1.246-1.228 1.76-.472.67.99 2.186.115 1.664-.96-.399-.824.465-1.687 1.288-1.289 1.076.522 1.95-.994.961-1.665-.756-.513-.44-1.693.472-1.759 1.192-.086 1.192-1.836 0-1.922-.912-.066-1.228-1.246-.472-1.76.99-.67.115-2.186-.96-1.664-.824.399-1.687-.465-1.289-1.288.522-1.076-.994-1.95-1.665-.961-.513.756-1.693.44-1.759-.472M8 13A5 5 0 1 0 8 3a5 5 0 0 0 0 10",clipRule:"evenodd"})),tY=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M2 2.75A2.75 2.75 0 0 1 4.75 0h6.5A2.75 2.75 0 0 1 14 2.75v10.5A2.75 2.75 0 0 1 11.25 16h-6.5A2.75 2.75 0 0 1 2 13.25v-.5a.75.75 0 0 1 1.5 0v.5c0 .69.56 1.25 1.25 1.25h6.5c.69 0 1.25-.56 1.25-1.25V2.75c0-.69-.56-1.25-1.25-1.25h-6.5c-.69 0-1.25.56-1.25 1.25v.5a.75.75 0 0 1-1.5 0z",clipRule:"evenodd"}),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M8.78 7.47a.75.75 0 0 1 0 1.06l-2.25 2.25a.75.75 0 1 1-1.06-1.06l.97-.97H1.75a.75.75 0 0 1 0-1.5h4.69l-.97-.97a.75.75 0 0 1 1.06-1.06z",clipRule:"evenodd"})),tX=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none"},e),a.createElement("path",{fill:"currentcolor",fillRule:"evenodd",d:"M4 6.104V4a4 4 0 1 1 8 0v2.104c1.154.326 2 1.387 2 2.646v4.5A2.75 2.75 0 0 1 11.25 16h-6.5A2.75 2.75 0 0 1 2 13.25v-4.5c0-1.259.846-2.32 2-2.646M5.5 4a2.5 2.5 0 0 1 5 0v2h-5z",clipRule:"evenodd"})),tZ=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentColor"},e),a.createElement("path",{d:"M12.227 11.52a5.48 5.48 0 0 0 1.246-2.97.5.5 0 0 0-.995-.1 4.5 4.5 0 0 1-.962 2.359l-1.07-1.07C10.794 9.247 11 8.647 11 8V3a3 3 0 0 0-6 0v1.293L1.354.646a.5.5 0 1 0-.708.708l14 14a.5.5 0 0 0 .708-.708zM8 12.5c.683 0 1.33-.152 1.911-.425l.743.743c-.649.359-1.378.59-2.154.66V15h2a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1h2v-1.522a5.5 5.5 0 0 1-4.973-4.929.5.5 0 0 1 .995-.098A4.5 4.5 0 0 0 8 12.5"}),a.createElement("path",{d:"M8.743 10.907 5 7.164V8a3 3 0 0 0 3.743 2.907"})),t0=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentColor"},e),a.createElement("path",{fillRule:"evenodd",d:"M2.975 8.002a.5.5 0 0 1 .547.449 4.5 4.5 0 0 0 8.956 0 .5.5 0 1 1 .995.098A5.5 5.5 0 0 1 8.5 13.478V15h2a.5.5 0 0 1 0 1h-5a.5.5 0 0 1 0-1h2v-1.522a5.5 5.5 0 0 1-4.973-4.929.5.5 0 0 1 .448-.547",clipRule:"evenodd"}),a.createElement("path",{d:"M5 3a3 3 0 1 1 6 0v5a3 3 0 0 1-6 0z"})),t1=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentcolor"},e),a.createElement("path",{d:"M0 11.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm6-5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm6-6a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"}),a.createElement("path",{d:"M0 11.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm6-5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm6-6a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"})),t5=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentcolor"},e),a.createElement("path",{d:"M0 11.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm6-5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"}),a.createElement("path",{d:"M0 11.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm6-5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"}),a.createElement("g",{opacity:.25},a.createElement("path",{d:"M12 .5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"}),a.createElement("path",{d:"M12 .5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"}))),t2=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentcolor"},e),a.createElement("path",{d:"M0 11.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"}),a.createElement("path",{d:"M0 11.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"}),a.createElement("g",{opacity:.25},a.createElement("path",{d:"M6 6.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"}),a.createElement("path",{d:"M6 6.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm6-6a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"}),a.createElement("path",{d:"M12 .5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"}))),t3=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentColor"},e),a.createElement("g",{opacity:.25},a.createElement("path",{d:"M0 11.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm6-5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm6-6a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"}),a.createElement("path",{d:"M0 11.5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm6-5a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5zm6-6a.5.5 0 0 1 .5-.5h3a.5.5 0 0 1 .5.5v15a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5z"}))),t6=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:20,height:16,fill:"none"},e),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M0 2.75A2.75 2.75 0 0 1 2.75 0h14.5A2.75 2.75 0 0 1 20 2.75v10.5A2.75 2.75 0 0 1 17.25 16H2.75A2.75 2.75 0 0 1 0 13.25zM2.75 1.5c-.69 0-1.25.56-1.25 1.25v10.5c0 .69.56 1.25 1.25 1.25h14.5c.69 0 1.25-.56 1.25-1.25V2.75c0-.69-.56-1.25-1.25-1.25z",clipRule:"evenodd"}),a.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M9.47 4.22a.75.75 0 0 1 1.06 0l2.25 2.25a.75.75 0 0 1-1.06 1.06l-.97-.97v4.69a.75.75 0 0 1-1.5 0V6.56l-.97.97a.75.75 0 0 1-1.06-1.06z",clipRule:"evenodd"})),t4=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:20,height:16,fill:"none"},e),a.createElement("g",{fill:"currentColor"},a.createElement("path",{d:"M7.28 4.22a.75.75 0 0 0-1.06 1.06L8.94 8l-2.72 2.72a.75.75 0 1 0 1.06 1.06L10 9.06l2.72 2.72a.75.75 0 1 0 1.06-1.06L11.06 8l2.72-2.72a.75.75 0 0 0-1.06-1.06L10 6.94z"}),a.createElement("path",{fillRule:"evenodd",d:"M2.75 0A2.75 2.75 0 0 0 0 2.75v10.5A2.75 2.75 0 0 0 2.75 16h14.5A2.75 2.75 0 0 0 20 13.25V2.75A2.75 2.75 0 0 0 17.25 0zM1.5 2.75c0-.69.56-1.25 1.25-1.25h14.5c.69 0 1.25.56 1.25 1.25v10.5c0 .69-.56 1.25-1.25 1.25H2.75c-.69 0-1.25-.56-1.25-1.25z",clipRule:"evenodd"}))),t9=e=>a.createElement("svg",tg({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none"},e),a.createElement("g",{stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5},a.createElement("path",{d:"M13.25 7H9m0 0V2.75M9 7l5.25-5.25M2.75 9H7m0 0v4.25M7 9l-5.25 5.25"}))),t7=a.forwardRef(function(e,t){var{trackRef:i}=e,n=tb(e,["trackRef"]);let r=tR(),{mergedProps:o,inFocus:s}=function({trackRef:e,props:t}){let i=tx(e),n=tE(),{className:r}=a.useMemo(()=>({className:[e3("button"),e3("focus-toggle-button")].join(" ")}),[]),o=a.useMemo(()=>eG(i,null==n?void 0:n.pin.state),[e,null==n?void 0:n.pin.state]);return{mergedProps:a.useMemo(()=>tU(t,{className:r,onClick:e=>{var r,a,s,c,l;null==(r=t.onClick)||r.call(t,e),o?null==(s=null==n?void 0:(a=n.pin).dispatch)||s.call(a,{msg:"clear_pin"}):null==(l=null==n?void 0:(c=n.pin).dispatch)||l.call(c,{msg:"set_pin",trackReference:i})}}),[t,r,e,o,null==n?void 0:n.pin]),inFocus:o}}({trackRef:null!=i?i:r,props:n});return a.createElement(tS.Consumer,null,e=>void 0!==e&&a.createElement("button",tg({ref:t},o),n.children?n.children:s?a.createElement(t9,null):a.createElement(tJ,null)))});function t8(e){return void 0!==e}function ie(...e){return tU(...e.filter(t8))}var it=a.forwardRef(function(e,t){var{kind:i,initialSelection:n,onActiveDeviceChange:r,onDeviceListChange:o,onDeviceSelectError:s,exactMatch:l,track:d,requestPermissions:u,onError:p}=e,m=tb(e,["kind","initialSelection","onActiveDeviceChange","onDeviceListChange","onDeviceSelectError","exactMatch","track","requestPermissions","onError"]);let f=tA(),g=a.useCallback(e=>{f&&f.emit(c.TQ.MediaDevicesError,e),null==p||p(e)},[f,p]),{devices:v,activeDeviceId:b,setActiveMediaDevice:y,className:k}=function({kind:e,room:t,track:i,requestPermissions:n,onError:r}){let o=tA(),s=tC(a.useMemo(()=>(function(e,t,i=!0){var n,r;let a=()=>eV(this,null,function*(){try{let t=yield c.du.getLocalDevices(e,i);o.next(t)}catch(e){null==t||t(e)}}),o=new eg,s=o.pipe((r=()=>{var e;null==(e=null==navigator?void 0:navigator.mediaDevices)||e.removeEventListener("devicechange",a)},h(function(e,t){try{e.subscribe(t)}finally{t.add(r)}})));if("undefined"!=typeof window){if(!window.isSecureContext)throw Error("Accessing media devices is available only in secure contexts (HTTPS and localhost), in some or all supporting browsers. See: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/mediaDevices");null==(n=null==navigator?void 0:navigator.mediaDevices)||n.addEventListener("devicechange",a)}return ep(c.du.getLocalDevices(e,i).catch(e=>(null==t||t(e),[])),s)})(e,r,n),[e,n,r]),[]),[l,d]=a.useState(""),{className:u,activeDeviceObservable:p,setActiveMediaDevice:m}=a.useMemo(()=>(function(e,t,i){let n=new ey(void 0),r=t?e9(t,c.TQ.ActiveDeviceChanged).pipe(eb(([t])=>t===e),G(([e,t])=>(eH.debug("activeDeviceObservable | RoomEvent.ActiveDeviceChanged",{kind:e,deviceId:t}),t)),em(t.getActiveDevice(e))):n.asObservable();return{className:e3("media-device-select"),activeDeviceObservable:r,setActiveMediaDevice:(r,...a)=>eV(this,[r,...a],function*(r,a={}){var o,s,l;if(t){let i;eH.debug(`Switching active device of kind "${e}" with id ${r}.`),yield t.switchActiveDevice(e,r,a.exact);let d=null!=(o=t.getActiveDevice(e))?o:r;d!==r&&"default"!==r&&eH.info(`We tried to select the device with id (${r}), but the browser decided to select the device with id (${d}) instead.`),"audioinput"===e?i=null==(s=t.localParticipant.getTrackPublication(c.fQ.Source.Microphone))?void 0:s.track:"videoinput"===e&&(i=null==(l=t.localParticipant.getTrackPublication(c.fQ.Source.Camera))?void 0:l.track);let u="default"===r&&!i||"default"===r&&(null==i?void 0:i.mediaStreamTrack.label.startsWith("Default"));n.next(u?r:d)}else if(i){yield i.setDeviceId(a.exact?{exact:r}:r);let e=yield i.getDeviceId();n.next("default"===r&&i.mediaStreamTrack.label.startsWith("Default")?r:e)}else n.value!==r&&(eH.warn("device switch skipped, please provide either a room or a local track to switch on. "),n.next(r))})}})(e,null!=t?t:o,i),[e,t,o,i]);return a.useEffect(()=>{let e=p.subscribe(e=>{eH.info("setCurrentDeviceId",e),e&&d(e)});return()=>{null==e||e.unsubscribe()}},[p]),{devices:s,className:u,activeDeviceId:l,setActiveMediaDevice:m}}({kind:i,room:f,track:d,requestPermissions:u,onError:g});a.useEffect(()=>{void 0!==n&&y(n)},[y]),a.useEffect(()=>{"function"==typeof o&&o(v)},[o,v]),a.useEffect(()=>{b&&""!==b&&(null==r||r(b))},[b]);let T=e=>ty(this,null,function*(){try{yield y(e,{exact:l})}catch(e){if(e instanceof Error)null==s||s(e);else throw e}}),C=a.useMemo(()=>ie(m,{className:k},{className:"lk-list"}),[k,m]);function S(e,t,i){return e===t||0===i&&"default"===t}return a.createElement("ul",tg({ref:t},C),v.map((e,t)=>a.createElement("li",{key:e.deviceId,id:e.deviceId,"data-lk-active":S(e.deviceId,b,t),"aria-selected":S(e.deviceId,b,t),role:"option"},a.createElement("button",{className:"lk-button",onClick:()=>T(e.deviceId)},e.label))))});function ii(e,t){switch(e){case c.fQ.Source.Microphone:return t?a.createElement(t0,null):a.createElement(tZ,null);case c.fQ.Source.Camera:return t?a.createElement(tz,null):a.createElement(tG,null);case c.fQ.Source.ScreenShare:return t?a.createElement(t4,null):a.createElement(t6,null);default:return}}var ir=a.forwardRef(function(e,t){var{showIcon:i}=e,n=tb(e,["showIcon"]);let{buttonProps:r,enabled:o}=function(e){var t,{source:i,onChange:n,initialState:r,captureOptions:o,publishOptions:s,onDeviceError:l}=e,d=tb(e,["source","onChange","initialState","captureOptions","publishOptions","onDeviceError"]);let u=tA(),h=null==(t=null==u?void 0:u.localParticipant)?void 0:t.getTrackPublication(i),p=a.useRef(!1),{toggle:m,className:f,pendingObserver:g,enabledObserver:v}=a.useMemo(()=>u?function(e,t,i,n,r){let{localParticipant:a}=t,o=(e,t)=>{let i=!1;switch(e){case c.fQ.Source.Camera:i=t.isCameraEnabled;break;case c.fQ.Source.Microphone:i=t.isMicrophoneEnabled;break;case c.fQ.Source.ScreenShare:i=t.isScreenShareEnabled}return i},s=tt(a).pipe(G(t=>o(e,t.participant)),em(o(e,a))),l=new eg;return{className:e3("button"),toggle:(t,o)=>eV(this,null,function*(){try{switch(null!=o||(o=i),l.next(!0),e){case c.fQ.Source.Camera:yield a.setCameraEnabled(null!=t?t:!a.isCameraEnabled,o,n);break;case c.fQ.Source.Microphone:yield a.setMicrophoneEnabled(null!=t?t:!a.isMicrophoneEnabled,o,n);break;case c.fQ.Source.ScreenShare:yield a.setScreenShareEnabled(null!=t?t:!a.isScreenShareEnabled,o,n)}}catch(e){if(r&&e instanceof Error)null==r||r(e);else throw e}finally{l.next(!1)}}),enabledObserver:s,pendingObserver:l.asObservable()}}(i,u,o,s,l):function(){let e=!1,t=new eg,i=new eg;return{className:e3("button"),toggle:n=>eV(this,null,function*(){i.next(!0),e=null!=n?n:!e,t.next(e),i.next(!1)}),enabledObserver:t.asObservable(),pendingObserver:i.asObservable()}}(),[u,i,JSON.stringify(o),s]),b=tC(g,!1),y=tC(v,null!=r?r:!!(null==h?void 0:h.isEnabled));a.useEffect(()=>{null==n||n(y,p.current),p.current=!1},[y,n]),a.useEffect(()=>{void 0!==r&&(eH.debug("forcing initial toggle state",i,r),m(r))},[]);let k=a.useMemo(()=>tU(d,{className:f}),[d,f]),T=a.useCallback(e=>{var t;p.current=!0,m().finally(()=>p.current=!1),null==(t=d.onClick)||t.call(d,e)},[d,m]);return{toggle:m,enabled:y,pending:b,track:h,buttonProps:tv(tg({},k),{"aria-pressed":y,"data-lk-source":i,"data-lk-enabled":y,disabled:b,onClick:T})}}(n);return a.createElement("button",tg({ref:t},r),(null==i||i)&&ii(n.source,o),n.children)}),ia=a.forwardRef(function(e,t){var i;let{className:n,quality:r}=function(e={}){let t=tM(e.participant),{className:i,connectionQualityObserver:n}=a.useMemo(()=>(function(e){return{className:e3("connection-quality"),connectionQualityObserver:ti(e,c.dd.ConnectionQualityChanged).pipe(G(([e])=>e),em(e.connectionQuality))}})(t),[t]);return{className:i,quality:tC(n,c.ZV.Unknown)}}(e),o=a.useMemo(()=>tv(tg({},ie(e,{className:n})),{"data-lk-quality":r}),[r,e,n]);return a.createElement("div",tg({ref:t},o),null!=(i=e.children)?i:function(e){switch(e){case c.ZV.Excellent:return a.createElement(t1,null);case c.ZV.Good:return a.createElement(t5,null);case c.ZV.Poor:return a.createElement(t2,null);default:return a.createElement(t3,null)}}(r))}),io=a.forwardRef(function(e,t){var{participant:i}=e,n=tb(e,["participant"]);let r=tM(i),{className:o,infoObserver:s}=a.useMemo(()=>({className:"lk-participant-name",infoObserver:te(r,c.dd.ParticipantMetadataChanged,c.dd.ParticipantNameChanged).pipe(G(({name:e,identity:t,metadata:i})=>({name:e,identity:t,metadata:i})),em({name:r.name,identity:r.identity,metadata:r.metadata}))}),[r]),{identity:l,name:d}=tC(s,{name:r.name,identity:r.identity,metadata:r.metadata}),u=a.useMemo(()=>ie(n,{className:o,"data-lk-participant-name":d}),[n,o,d]);return a.createElement("span",tg({ref:t},u),""!==d?d:l,n.children)}),is=a.forwardRef(function(e,t){var i,{trackRef:n,show:r="always"}=e,o=tb(e,["trackRef","show"]);let{className:s,isMuted:l}=function(e){var t,i;let n=tx(e),{className:r,mediaMutedObserver:o}=a.useMemo(()=>(function(e){let t="track-muted-indicator-camera";switch(e.source){case c.fQ.Source.Camera:t="track-muted-indicator-camera";break;case c.fQ.Source.Microphone:t="track-muted-indicator-microphone"}return{className:e3(t),mediaMutedObserver:tn(e)}})(n),[eW(n)]);return{isMuted:tC(o,!!((null==(t=n.publication)?void 0:t.isMuted)||(null==(i=n.participant.getTrackPublication(n.source))?void 0:i.isMuted))),className:r}}(n),d="always"===r||"muted"===r&&l||"unmuted"===r&&!l,u=a.useMemo(()=>ie(o,{className:s}),[s,o]);return d?a.createElement("div",tv(tg({ref:t},u),{"data-lk-muted":l}),null!=(i=o.children)?i:ii(n.source,!l)):null}),ic=e=>a.createElement("svg",tg({width:320,height:320,viewBox:"0 0 320 320",preserveAspectRatio:"xMidYMid meet",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),a.createElement("path",{d:"M160 180C204.182 180 240 144.183 240 100C240 55.8172 204.182 20 160 20C115.817 20 79.9997 55.8172 79.9997 100C79.9997 144.183 115.817 180 160 180Z",fill:"white",fillOpacity:.25}),a.createElement("path",{d:"M97.6542 194.614C103.267 191.818 109.841 192.481 115.519 195.141C129.025 201.466 144.1 205 159.999 205C175.899 205 190.973 201.466 204.48 195.141C210.158 192.481 216.732 191.818 222.345 194.614C262.703 214.719 291.985 253.736 298.591 300.062C300.15 310.997 291.045 320 280 320H39.9997C28.954 320 19.8495 310.997 21.4087 300.062C28.014 253.736 57.2966 214.72 97.6542 194.614Z",fill:"white",fillOpacity:.25}));function il(e,t={}){var i;let[n,r]=a.useState(e6(e)),[o,s]=a.useState(null==n?void 0:n.isMuted),[l,d]=a.useState(null==n?void 0:n.isSubscribed),[u,h]=a.useState(null==n?void 0:n.track),[p,m]=a.useState("landscape"),f=a.useRef(),{className:g,trackObserver:v}=a.useMemo(()=>(function(e){let t=e6(e),i=tt(e.participant).pipe(G(()=>e6(e)),em(t));return{className:e3(e.source===c.fQ.Source.Camera||e.source===c.fQ.Source.ScreenShare?"participant-media-video":"participant-media-audio"),trackObserver:i}})(e),[null!=(i=e.participant.sid)?i:e.participant.identity,e.source,eq(e)&&e.publication.trackSid]);return a.useEffect(()=>{let e=v.subscribe(e=>{eH.debug("update track",e),r(e),s(null==e?void 0:e.isMuted),d(null==e?void 0:e.isSubscribed),h(null==e?void 0:e.track)});return()=>null==e?void 0:e.unsubscribe()},[v]),a.useEffect(()=>{var i,n;return u&&(f.current&&u.detach(f.current),(null==(i=t.element)?void 0:i.current)&&!(ez(e.participant)&&(null==u?void 0:u.kind)==="audio")&&u.attach(t.element.current)),f.current=null==(n=t.element)?void 0:n.current,()=>{f.current&&(null==u||u.detach(f.current))}},[u,t.element]),a.useEffect(()=>{var e,t;"number"==typeof(null==(e=null==n?void 0:n.dimensions)?void 0:e.width)&&"number"==typeof(null==(t=null==n?void 0:n.dimensions)?void 0:t.height)&&m(n.dimensions.width>n.dimensions.height?"landscape":"portrait")},[n]),{publication:n,isMuted:o,isSubscribed:l,track:u,elementProps:ie(t.props,tg({className:g,"data-lk-local-participant":e.participant.isLocal,"data-lk-source":null==n?void 0:n.source},(null==n?void 0:n.kind)==="video"&&{"data-lk-orientation":p}))}}var id=a.forwardRef(function(e,t){var{onTrackClick:i,onClick:n,onSubscriptionStatusChanged:r,trackRef:o,manageSubscription:s}=e,l=tb(e,["onTrackClick","onClick","onSubscriptionStatusChanged","trackRef","manageSubscription"]);let d=tx(o),u=a.useRef(null);a.useImperativeHandle(t,()=>u.current);let h=function(e,t){var i;let n="current"in e,r=n?t:e,{threshold:o=0,root:s=null,rootMargin:c="0%",freezeOnceVisible:l=!1,initialIsIntersecting:d=!1}=r??{},[u,h]=(0,a.useState)(null),p=n?e.current:u,[m,f]=(0,a.useState)(()=>({isIntersecting:d,entry:void 0})),g=(0,a.useRef)();g.current=null==r?void 0:r.onChange;let v=(null==(i=m.entry)?void 0:i.isIntersecting)&&l;(0,a.useEffect)(()=>{let e;if(!p||!("IntersectionObserver"in window)||v)return;let t=new IntersectionObserver(i=>{let n=Array.isArray(t.thresholds)?t.thresholds:[t.thresholds];i.forEach(t=>{let i=t.isIntersecting&&n.some(e=>t.intersectionRatio>=e);f({isIntersecting:i,entry:t}),g.current&&g.current(i,t),i&&l&&e&&(e(),e=void 0)})},{threshold:o,root:s,rootMargin:c});return t.observe(p),()=>{t.disconnect()}},[p,JSON.stringify(o),s,c,v,l]);let b=(0,a.useRef)(null);if((0,a.useEffect)(()=>{var e;p||null==(e=m.entry)||!e.target||l||v||b.current===m.entry.target||(b.current=m.entry.target,f({isIntersecting:d,entry:void 0}))},[p,m.entry,l,v,d]),n)return m.entry;let y=[h,!!m.isIntersecting,m.entry];return y.ref=y[0],y.isIntersecting=y[1],y.entry=y[2],y}(u,{}),p=function(e,t){let[i,n]=(0,a.useState)(e);return(0,a.useEffect)(()=>{let t=setTimeout(()=>{n(e)},3e3);return()=>{clearTimeout(t)}},[e,3e3]),i}(h,3e3);a.useEffect(()=>{s&&d.publication instanceof c.E8&&(null==p?void 0:p.isIntersecting)===!1&&(null==h?void 0:h.isIntersecting)===!1&&d.publication.setSubscribed(!1)},[p,d,s]),a.useEffect(()=>{s&&d.publication instanceof c.E8&&(null==h?void 0:h.isIntersecting)===!0&&d.publication.setSubscribed(!0)},[h,d,s]);let{elementProps:m,publication:f,isSubscribed:g}=il(d,{element:u,props:l});return a.useEffect(()=>{null==r||r(!!g)},[g,r]),a.createElement("video",tv(tg({ref:u},m),{muted:!0,onClick:e=>{null==n||n(e),null==i||i({participant:null==d?void 0:d.participant,track:f})}}))}),iu=a.forwardRef(function(e,t){var{trackRef:i,onSubscriptionStatusChanged:n,volume:r,muted:o}=e,s=tb(e,["trackRef","onSubscriptionStatusChanged","volume","muted"]);let l=tx(i),d=a.useRef(null);a.useImperativeHandle(t,()=>d.current);let{elementProps:u,isSubscribed:h,track:p,publication:m}=il(l,{element:d,props:s});return a.useEffect(()=>{null==n||n(!!h)},[h,n]),a.useEffect(()=>{void 0!==p&&void 0!==r&&(p instanceof c.rl?p.setVolume(r):eH.warn("Volume can only be set on remote audio tracks."))},[r,p]),a.useEffect(()=>{void 0!==m&&void 0!==o&&(m instanceof c.E8?m.setEnabled(!o):eH.warn("Can only call setEnabled on remote track publications."))},[o,m,p]),a.createElement("audio",tg({ref:d},u))});function ih(e){let t=!!tO();return e.participant&&!t?a.createElement(tI.Provider,{value:e.participant},e.children):a.createElement(a.Fragment,null,e.children)}function ip(e){let t=!!tR();return e.trackRef&&!t?a.createElement(tP.Provider,{value:e.trackRef},e.children):a.createElement(a.Fragment,null,e.children)}var im=a.forwardRef(function(e,t){var i,n,{trackRef:r,children:o,onParticipantClick:s,disableSpeakingIndicator:l}=e,d=tb(e,["trackRef","children","onParticipantClick","disableSpeakingIndicator"]);let u=tx(r),{elementProps:h}=function({trackRef:e,onParticipantClick:t,disableSpeakingIndicator:i,htmlProps:n}){let r=tx(e),o=a.useMemo(()=>{let{className:e}={className:e3("participant-tile")};return tU(n,{className:e,onClick:e=>{var i,a;if(null==(i=n.onClick)||i.call(n,e),"function"==typeof t){let e=null!=(a=r.publication)?a:r.participant.getTrackPublication(r.source);t({participant:r.participant,track:e})}}})},[n,t,r.publication,r.source,r.participant]),s=r.participant.getTrackPublication(c.fQ.Source.Microphone),l=a.useMemo(()=>({participant:r.participant,source:c.fQ.Source.Microphone,publication:s}),[s,r.participant]),d=tj(r),u=tj(l),h=function(e){let t=tM(e);return tC(a.useMemo(()=>ti(t,c.dd.IsSpeakingChanged).pipe(G(([e])=>e)),[t]),t.isSpeaking)}(r.participant),p=function(e){if(e.publication instanceof c.Zr){let t=e.publication.track;if(t){let{facingMode:e}=(0,c.ul)(t);return e}}return"undefined"}(r);return{elementProps:tg({"data-lk-audio-muted":u,"data-lk-video-muted":d,"data-lk-speaking":!0!==i&&h,"data-lk-local-participant":r.participant.isLocal,"data-lk-source":r.source,"data-lk-facing-mode":p},o)}}({htmlProps:d,disableSpeakingIndicator:l,onParticipantClick:s,trackRef:u}),p=function(e){let t=tM(e),i=t_();return tC(a.useMemo(()=>e9(i,c.TQ.ParticipantEncryptionStatusChanged).pipe(eb(([,e])=>t.identity===(null==e?void 0:e.identity)||!e&&t.identity===i.localParticipant.identity),G(([e])=>e),em(t instanceof c.Ix?t.isE2EEEnabled:t.isEncrypted)),[i,t]),t instanceof c.Ix?t.isE2EEEnabled:t.isEncrypted)}(u.participant),m=tE(),f=null==(i=function(e){let t=a.useContext(tL);return t}())?void 0:i.autoSubscription,g=a.useCallback(e=>{u.source&&!e&&m&&m.pin.dispatch&&eG(u,m.pin.state)&&m.pin.dispatch({msg:"clear_pin"})},[u,m]);return a.createElement("div",tg({ref:t,style:{position:"relative"}},h),a.createElement(ip,{trackRef:u},a.createElement(ih,{participant:u.participant},null!=o?o:a.createElement(a.Fragment,null,eq(u)&&((null==(n=u.publication)?void 0:n.kind)==="video"||u.source===c.fQ.Source.Camera||u.source===c.fQ.Source.ScreenShare)?a.createElement(id,{trackRef:u,onSubscriptionStatusChanged:g,manageSubscription:f}):eq(u)&&a.createElement(iu,{trackRef:u,onSubscriptionStatusChanged:g}),a.createElement("div",{className:"lk-participant-placeholder"},a.createElement(ic,null)),a.createElement("div",{className:"lk-participant-metadata"},a.createElement("div",{className:"lk-participant-metadata-item"},u.source===c.fQ.Source.Camera?a.createElement(a.Fragment,null,p&&a.createElement(tX,{style:{marginRight:"0.25rem"}}),a.createElement(is,{trackRef:{participant:u.participant,source:c.fQ.Source.Microphone},show:"muted"}),a.createElement(io,null)):a.createElement(a.Fragment,null,a.createElement(t6,{style:{marginRight:"0.25rem"}}),a.createElement(io,null,"'s screen"))),a.createElement(ia,{className:"lk-participant-metadata-item"}))),a.createElement(t7,{trackRef:u}))))});function ig(e){var{tracks:t}=e,i=tb(e,["tracks"]);return a.createElement(a.Fragment,null,t.map(e=>{var t;return a.createElement(tP.Provider,{value:e,key:eW(e)},(t=i.children,a.Children.map(t,e=>a.isValidElement(e)&&a.Children.only(t)?a.cloneElement(e,tv(tg({},void 0),{key:void 0})):e)))}))}function iv({totalPageCount:e,nextPage:t,prevPage:i,currentPage:n,pagesContainer:r}){let[o,s]=a.useState(!1);return a.useEffect(()=>{let e;return r&&(e=(function(e,t=1e3){var i,n;if(null===e)return ek(!1);let r=(function e(t,i,n,r){if(u(n)&&(r=n,n=void 0),r){return e(t,i,n).pipe((a=r,G(function(e){return eT(e)?a.apply(void 0,b([],v(e))):a(e)})))}var a,o,s,c,l=v(u((o=t).addEventListener)&&u(o.removeEventListener)?eS.map(function(e){return function(r){return t[e](i,r,n)}}):u((s=t).addListener)&&u(s.removeListener)?eC.map(eE(t,i)):u((c=t).on)&&u(c.off)?ew.map(eE(t,i)):[],2),d=l[0],h=l[1];if(!d&&z(t))return es(function(t){return e(t,i,n)})(er(t));if(!d)throw TypeError("Invalid event target");return new $(function(e){var t=function(){for(var t=[],i=0;i!0)),a=r.pipe(function(e,t){var i=e instanceof Date&&!isNaN(e)?{first:e}:"number"==typeof e?{each:e}:e,n=i.first,r=i.each,a=i.with,o=void 0===a?eN:a,s=i.scheduler,c=void 0===s?eM:s,l=i.meta,d=void 0===l?null:l;if(null==n&&null==r)throw TypeError("No timeout provided.");return h(function(e,t){var i,a,s=null,l=0,u=function(e){a=eo(t,c,function(){try{i.unsubscribe(),er(o({meta:d,lastValue:s,seen:l})).subscribe(t)}catch(e){t.error(e)}},e)};i=e.subscribe(Q(t,function(e){null==a||a.unsubscribe(),l++,t.next(s=e),r>0&&u(r)},void 0,void 0,function(){(null==a?void 0:a.closed)||null==a||a.unsubscribe(),s=null})),l||u(null!=n?"number"==typeof n?n:+n-c.now():r)})}({each:t,with:()=>ep(ek(!1),a.pipe(h(function(e,t){var i=!1,n=Q(t,function(){null==n||n.unsubscribe(),i=!0},O);er(r).subscribe(n),e.subscribe(Q(t,function(e){return i&&t.next(e)}))})))}),(void 0===n&&(n=J),i=null!=i?i:eA,h(function(e,t){var r,a=!0;e.subscribe(Q(t,function(e){var o=n(e);(a||!i(r,o))&&(a=!1,r=o,t.next(e))}))})));return a})(r.current,2e3).subscribe(s)),()=>{e&&e.unsubscribe()}},[r]),a.createElement("div",{className:"lk-pagination-control","data-lk-user-interaction":o},a.createElement("button",{className:"lk-button",onClick:i},a.createElement(tH,null)),a.createElement("span",{className:"lk-pagination-count"},`${n} of ${e}`),a.createElement("button",{className:"lk-button",onClick:t},a.createElement(tH,null)))}var ib=a.forwardRef(function({totalPageCount:e,currentPage:t},i){let n=Array(e).fill("").map((e,i)=>i+1===t?a.createElement("span",{"data-lk-active":!0,key:i}):a.createElement("span",{key:i}));return a.createElement("div",{ref:i,className:"lk-pagination-indicator"},n)});function iy(e){var{tracks:t}=e,i=tb(e,["tracks"]);let n=a.createRef(),r=a.useMemo(()=>ie(i,{className:"lk-grid-layout"}),[i]),{layout:o}=function(e,t){let{width:i,height:n}=tT(e),r=i>0&&n>0?function e(t,i,n,r){let a=0,o=t.find((e,t,n)=>{a=t;let r=-1!==n.findIndex((i,n)=>{let r=i.maxTiles===e.maxTiles;return n>t&&r});return e.maxTiles>=i&&!r});if(void 0===o){if(o=t[t.length-1])eH.warn(`No layout found for: participantCount: ${i}, width/height: ${n}/${r} fallback to biggest available layout (${o.name}).`);else throw Error("No layout or fallback layout found.")}if((n0){let i=t[a-1];o=e(t.slice(0,a),i.maxTiles,n,r)}return o}(eJ,t,i,n):eJ["0"];return a.useEffect(()=>{e.current&&r&&(e.current.style.setProperty("--lk-col-count",null==r?void 0:r.columns.toString()),e.current.style.setProperty("--lk-row-count",null==r?void 0:r.rows.toString()))},[e,r]),{layout:r}}(n,t.length),s=function(e,t){let[i,n]=a.useState(1),r=Math.max(Math.ceil(t.length/e),1);i>r&&n(r);let o=i*e,s=o-e,l=e=>{n(t=>"next"===e?t===r?t:t+1:1===t?t:t-1)},d=(function(e,t,i={}){let n=a.useRef([]),r=a.useRef(-1),o=t!==r.current,s="function"==typeof i.customSortFunction?i.customSortFunction(e):function(e){let t=[],i=[],n=[],r=[];return e.forEach(e=>{e.participant.isLocal&&e.source===c.fQ.Source.Camera?t.push(e):e.source===c.fQ.Source.ScreenShare?i.push(e):e.source===c.fQ.Source.Camera?n.push(e):r.push(e)}),[...t,...function(e){let t=[],i=[];return e.forEach(e=>{e.participant.isLocal?t.push(e):i.push(e)}),t.sort((e,t)=>eX(e.participant,t.participant)),i.sort((e,t)=>eX(e.participant,t.participant)),[...i,...t]}(i),...function(e){let t=[],i=[];return e.forEach(e=>{e.participant.isLocal?t.push(e):i.push(e)}),i.sort((e,t)=>{var i,n,r,a,o,s,c,l,d,u,h;if(e.participant.isSpeaking&&t.participant.isSpeaking)return i=e.participant,t.participant.audioLevel-i.audioLevel;if(e.participant.isSpeaking!==t.participant.isSpeaking)return n=e.participant,r=t.participant,n.isSpeaking===r.isSpeaking?0:n.isSpeaking?-1:1;if(e.participant.lastSpokeAt!==t.participant.lastSpokeAt)return a=e.participant,o=t.participant,void 0!==a.lastSpokeAt||void 0!==o.lastSpokeAt?(null!=(c=null==(s=o.lastSpokeAt)?void 0:s.getTime())?c:0)-(null!=(d=null==(l=a.lastSpokeAt)?void 0:l.getTime())?d:0):0;return eq(e)!==eq(t)?(u=e,h=t,eq(u)?eq(h)?0:-1:+!!eq(h)):e.participant.isCameraEnabled!==t.participant.isCameraEnabled?function(e,t){let i=e.participant.isCameraEnabled;return i===t.participant.isCameraEnabled?0:i?-1:1}(e,t):eX(e.participant,t.participant)}),[...t,...i]}(n),...r]}(e),l=[...s];if(!1===o)try{l=function(e,t,i){var n,r;let a=(n=e,r=t,n.map(e=>{let t=r.find(t=>eW(e)===eW(t)||"number"!=typeof e&&eQ(e)&&eq(t)&&eQ(e)&&eq(t)&&t.participant.identity===e.participant.identity&&t.source===e.source);return null!=t?t:e}));if(a.length{if(e&&t){var r;let o={dropped:e0(r=e2(a,i)[n],t,eW),added:e0(t,r,eW)};(0!==o.added.length||0!==o.dropped.length)&&(eH.debug(`Detected visual changes on page: ${n}, current: ${e1(e)}, next: ${e1(t)}`,{changes:o}),o.added.length===o.dropped.length&&eZ(o.added,o.dropped).forEach(([e,t])=>{if(e&&t)a=function(e,t,i){let n=e5(e,i),r=e5(t,i);return i.splice(n,1,t),i.splice(r,1,e),i}(e,t,a);else throw Error(`For a swap action we need a addition and a removal one is missing: ${e}, ${t}`)}),0===o.added.length&&o.dropped.length>0&&o.dropped.forEach(e=>{a=function(e,t){let i=e5(e,t);return t.splice(i,1),t}(e,a)}),o.added.length>0&&0===o.dropped.length&&o.added.forEach(e=>{a=[...a,e]}))}}),a.length>t.length){let e=e0(a,t,eW);a=a.filter(t=>!e.map(eW).includes(eW(t)))}return a}(n.current,s,t)}catch(e){eH.error("Error while running updatePages(): ",e)}return o?n.current=s:n.current=l,r.current=t,l})(t,e).slice(s,o);return{totalPageCount:r,nextPage:()=>l("next"),prevPage:()=>l("previous"),setPage:e=>{e>r?n(r):e<1?n(1):n(e)},firstItemIndex:s,lastItemIndex:o,tracks:d,currentPage:i}}(o.maxTiles,t);return!function(e,t={}){var i;let n=a.useRef(null),r=a.useRef(null),o=null!=(i=t.minSwipeDistance)?i:50,s=e=>{r.current=null,n.current=e.targetTouches[0].clientX},c=e=>{r.current=e.targetTouches[0].clientX},l=a.useCallback(()=>{if(!n.current||!r.current)return;let e=n.current-r.current,i=e>o,a=e<-o;i&&t.onLeftSwipe&&t.onLeftSwipe(),a&&t.onRightSwipe&&t.onRightSwipe()},[o,t]);a.useEffect(()=>{let t=e.current;return t&&(t.addEventListener("touchstart",s,{passive:!0}),t.addEventListener("touchmove",c,{passive:!0}),t.addEventListener("touchend",l,{passive:!0})),()=>{t&&(t.removeEventListener("touchstart",s),t.removeEventListener("touchmove",c),t.removeEventListener("touchend",l))}},[e,l])}(n,{onLeftSwipe:s.nextPage,onRightSwipe:s.prevPage}),a.createElement("div",tg({ref:n,"data-lk-pagination":s.totalPageCount>1},r),a.createElement(ig,{tracks:s.tracks},i.children),t.length>o.maxTiles&&a.createElement(a.Fragment,null,a.createElement(ib,{totalPageCount:s.totalPageCount,currentPage:s.currentPage}),a.createElement(iv,tg({pagesContainer:n},s))))}var ik=a.forwardRef(function(e,t){let{room:i,htmlProps:n}=function(e){let t=tg(tg({},tF),e),{token:i,serverUrl:n,options:r,room:o,connectOptions:s,connect:l,audio:d,video:u,screen:h,onConnected:p,onDisconnected:m,onError:f,onMediaDeviceFailure:g,onEncryptionError:v,simulateParticipants:b}=t,y=tb(t,["token","serverUrl","options","room","connectOptions","connect","audio","video","screen","onConnected","onDisconnected","onError","onMediaDeviceFailure","onEncryptionError","simulateParticipants"]);r&&o&&eH.warn("when using a manually created room, the options object will be ignored. set the desired options directly when creating the room instead.");let[k,T]=a.useState();a.useEffect(()=>{T(null!=o?o:new c.du(r))},[o]);let C=a.useMemo(()=>{let{className:e}={className:"lk-room-container"};return tU(y,{className:e})},[y]);return a.useEffect(()=>{if(!k)return;let e=()=>{let e=k.localParticipant;eH.debug("trying to publish local tracks"),Promise.all([e.setMicrophoneEnabled(!!d,"boolean"!=typeof d?d:void 0),e.setCameraEnabled(!!u,"boolean"!=typeof u?u:void 0),e.setScreenShareEnabled(!!h,"boolean"!=typeof h?h:void 0)]).catch(e=>{eH.warn(e),null==f||f(e)})},t=e=>{let t=c.CB.getFailure(e);null==g||g(t)},i=e=>{null==v||v(e)};return k.on(c.TQ.SignalConnected,e).on(c.TQ.MediaDevicesError,t).on(c.TQ.EncryptionError,i),()=>{k.off(c.TQ.SignalConnected,e).off(c.TQ.MediaDevicesError,t).off(c.TQ.EncryptionError,i)}},[k,d,u,h,f,v,g]),a.useEffect(()=>{if(k){if(b){k.simulateParticipants({participants:{count:b},publish:{audio:!0,useRealTracks:!0}});return}if(!i){eH.debug("no token yet");return}if(!n){eH.warn("no livekit url provided"),null==f||f(Error("no livekit url provided"));return}l?(eH.debug("connecting"),k.connect(n,i,s).catch(e=>{eH.warn(e),null==f||f(e)})):(eH.debug("disconnecting because connect is false"),k.disconnect())}},[l,i,JSON.stringify(s),k,f,n,b]),a.useEffect(()=>{if(!k)return;let e=e=>{switch(e){case c.em.Disconnected:m&&m();break;case c.em.Connected:p&&p()}};return k.on(c.TQ.ConnectionStateChanged,e),()=>{k.off(c.TQ.ConnectionStateChanged,e)}},[i,p,m,k]),a.useEffect(()=>{if(k)return()=>{eH.info("disconnecting on onmount"),k.disconnect()}},[k]),{room:k,htmlProps:C}}(e);return a.createElement("div",tg({ref:t},n),i&&a.createElement(tD.Provider,{value:i},a.createElement(tL.Provider,{value:e.featureFlags},e.children)))});function iT({volume:e,muted:t}){let i=tV([c.fQ.Source.Microphone,c.fQ.Source.ScreenShareAudio,c.fQ.Source.Unknown],{updateOnlyOn:[],onlySubscribed:!0}).filter(e=>!ez(e.participant)&&e.publication.kind===c.fQ.Kind.Audio);return a.createElement("div",{style:{display:"none"}},i.map(i=>a.createElement(iu,{key:eW(i),trackRef:i,volume:e,muted:t})))}function iC(e){var{kind:t,initialSelection:i,onActiveDeviceChange:n,tracks:r,requestPermissions:o=!1}=e,s=tb(e,["kind","initialSelection","onActiveDeviceChange","tracks","requestPermissions"]);let[c,d]=a.useState(!1),[u,h]=a.useState([]),[p,m]=a.useState(!0),[f,g]=a.useState(o),v=(e,t)=>{eH.debug("handle device change"),d(!1),null==n||n(e,t)},b=a.useRef(null),y=a.useRef(null);a.useLayoutEffect(()=>{c&&g(!0)},[c]),a.useLayoutEffect(()=>{b.current&&y.current&&(u||p)&&(function(e,t){return eV(this,null,function*(){let{x:i,y:n}=yield(0,l.oo)(e,t,{placement:"top",middleware:[(0,l.cv)(6),(0,l.RR)(),(0,l.uY)({padding:5})]});return{x:i,y:n}})})(b.current,y.current).then(({x:e,y:t})=>{y.current&&Object.assign(y.current.style,{left:`${e}px`,top:`${t}px`})}),m(!1)},[b,y,u,p]);let k=a.useCallback(e=>{y.current&&e.target!==b.current&&c&&!y.current.contains(e.target)&&d(!1)},[c,y,b]);return a.useEffect(()=>(document.addEventListener("click",k),window.addEventListener("resize",()=>m(!0)),()=>{document.removeEventListener("click",k),window.removeEventListener("resize",()=>m(!0))}),[k,m]),a.createElement(a.Fragment,null,a.createElement("button",tv(tg({className:"lk-button lk-button-menu","aria-pressed":c},s),{onClick:()=>d(!c),ref:b}),s.children),!s.disabled&&a.createElement("div",{className:"lk-device-menu",ref:y,style:{visibility:c?"visible":"hidden"}},t?a.createElement(it,{initialSelection:i,onActiveDeviceChange:e=>v(t,e),onDeviceListChange:h,kind:t,track:null==r?void 0:r[t],requestPermissions:f}):a.createElement(a.Fragment,null,a.createElement("div",{className:"lk-device-menu-heading"},"Audio inputs"),a.createElement(it,{kind:"audioinput",onActiveDeviceChange:e=>v("audioinput",e),onDeviceListChange:h,track:null==r?void 0:r.audioinput,requestPermissions:f}),a.createElement("div",{className:"lk-device-menu-heading"},"Video inputs"),a.createElement(it,{kind:"videoinput",onActiveDeviceChange:e=>v("videoinput",e),onDeviceListChange:h,track:null==r?void 0:r.videoinput,requestPermissions:f}))))}function iS(e){var{defaults:t={},onValidate:i,onSubmit:n,onError:r,debug:o,joinLabel:s="Join Room",micLabel:l="Microphone",camLabel:d="Camera",userLabel:u="Username",persistUserChoices:h=!0}=e,p=tb(e,["defaults","onValidate","onSubmit","onError","debug","joinLabel","micLabel","camLabel","userLabel","persistUserChoices"]);let[m,f]=a.useState(ta),{userChoices:g,saveAudioInputDeviceId:v,saveAudioInputEnabled:b,saveVideoInputDeviceId:y,saveVideoInputEnabled:k,saveUsername:T}=tq({defaults:tg(tg(tg(tg(tg({},void 0!==t.audioDeviceId&&{audioDeviceId:t.audioDeviceId}),void 0!==t.videoDeviceId&&{videoDeviceId:t.videoDeviceId}),void 0!==t.audioEnabled&&{audioEnabled:t.audioEnabled}),void 0!==t.videoEnabled&&{videoEnabled:t.videoEnabled}),void 0!==t.username&&{username:t.username}),preventSave:!h,preventLoad:!h}),[C,S]=a.useState(g.audioEnabled),[w,E]=a.useState(g.videoEnabled),[P,R]=a.useState(g.audioDeviceId),[x,I]=a.useState(g.videoDeviceId),[O,M]=a.useState(g.username);a.useEffect(()=>{b(C)},[C,b]),a.useEffect(()=>{k(w)},[w,k]),a.useEffect(()=>{v(P)},[P,v]),a.useEffect(()=>{y(x)},[x,y]),a.useEffect(()=>{T(O)},[O,T]);let D=function(e,t){let[i,n]=a.useState(),r=a.useMemo(()=>new c.WU,[]);return a.useEffect(()=>{let i=!1,a=[];return r.lock().then(r=>ty(this,null,function*(){try{(e.audio||e.video)&&(a=yield(0,c.Ai)(e),i?a.forEach(e=>e.stop()):n(a))}catch(e){t&&e instanceof Error?t(e):eH.error(e)}finally{r()}})),()=>{i=!0,a.forEach(e=>{e.stop()})}},[JSON.stringify(e),t,r]),i}({audio:!!C&&{deviceId:g.audioDeviceId},video:!!w&&{deviceId:g.videoDeviceId}},r),N=a.useRef(null),A=a.useMemo(()=>null==D?void 0:D.filter(e=>e.kind===c.fQ.Kind.Video)[0],[D]),_=a.useMemo(()=>{if(!A)return"undefined";{let{facingMode:e}=(0,c.ul)(A);return e}},[A]),L=a.useMemo(()=>null==D?void 0:D.filter(e=>e.kind===c.fQ.Kind.Audio)[0],[D]);a.useEffect(()=>(N.current&&A&&(A.unmute(),A.attach(N.current)),()=>{null==A||A.detach()}),[A]);let[U,j]=a.useState(),F=a.useCallback(e=>"function"==typeof i?i(e):""!==e.username,[i]);return a.useEffect(()=>{let e={username:O,videoEnabled:w,videoDeviceId:x,audioEnabled:C,audioDeviceId:P};f(e),j(F(e))},[O,w,F,C,P,x]),a.useEffect(()=>{!function(e){var t,i;if("undefined"!=typeof window&&void 0!==tc&&((null==(t=null==tc?void 0:tc.env)?void 0:t.NODE_ENV)==="dev"||(null==(i=null==tc?void 0:tc.env)?void 0:i.NODE_ENV)==="development")){let e=document.querySelector(".lk-room-container");e&&!getComputedStyle(e).getPropertyValue("--lk-has-imported-styles")&&eH.warn("It looks like you're not using the `@livekit/components-styles package`. To render the UI with the default styling, please import it in your layout or page.")}}()},[]),a.createElement("div",tg({className:"lk-prejoin"},p),a.createElement("div",{className:"lk-video-container"},A&&a.createElement("video",{ref:N,width:"1280",height:"720","data-lk-facing-mode":_}),(!A||!w)&&a.createElement("div",{className:"lk-camera-off-note"},a.createElement(ic,null))),a.createElement("div",{className:"lk-button-group-container"},a.createElement("div",{className:"lk-button-group audio"},a.createElement(ir,{initialState:C,source:c.fQ.Source.Microphone,onChange:e=>S(e)},l),a.createElement("div",{className:"lk-button-group-menu"},a.createElement(iC,{initialSelection:P,kind:"audioinput",disabled:!L,tracks:{audioinput:L},onActiveDeviceChange:(e,t)=>R(t)}))),a.createElement("div",{className:"lk-button-group video"},a.createElement(ir,{initialState:w,source:c.fQ.Source.Camera,onChange:e=>E(e)},d),a.createElement("div",{className:"lk-button-group-menu"},a.createElement(iC,{initialSelection:x,kind:"videoinput",disabled:!A,tracks:{videoinput:A},onActiveDeviceChange:(e,t)=>I(t)})))),a.createElement("form",{className:"lk-username-container"},a.createElement("input",{className:"lk-form-control",id:"username",name:"username",type:"text",defaultValue:O,placeholder:u,onChange:e=>M(e.target.value),autoComplete:"off"}),a.createElement("button",{className:"lk-button lk-join-button",type:"submit",onClick:function(e){e.preventDefault(),F(m)?"function"==typeof n&&n(m):eH.warn("Validation failed with: ",m)},disabled:!U},s)),o&&a.createElement(a.Fragment,null,a.createElement("strong",null,"User Choices:"),a.createElement("ul",{className:"lk-list",style:{overflow:"hidden",maxWidth:"15rem"}},a.createElement("li",null,"Username: ",`${m.username}`),a.createElement("li",null,"Video Enabled: ",`${m.videoEnabled}`),a.createElement("li",null,"Audio Enabled: ",`${m.audioEnabled}`),a.createElement("li",null,"Video Device: ",`${m.videoDeviceId}`),a.createElement("li",null,"Audio Device: ",`${m.audioDeviceId}`))))}var iw=a.forwardRef(function(e,t){var{label:i}=e,n=tb(e,["label"]);let r=tN(),{mergedProps:o,canPlayAudio:s}=function({room:e,props:t}){let i=t_(e),{className:n,roomAudioPlaybackAllowedObservable:r,handleStartAudioPlayback:o}=a.useMemo(()=>(function(){return{className:e3("start-audio-button"),roomAudioPlaybackAllowedObservable:e7,handleStartAudioPlayback:e=>eV(this,null,function*(){eH.info("Start Audio for room: ",e),yield e.startAudio()})}})(),[]),{canPlayAudio:s}=tC(a.useMemo(()=>r(i),[i,r]),{canPlayAudio:i.canPlaybackAudio});return{mergedProps:a.useMemo(()=>tU(t,{className:n,onClick:()=>{o(i)},style:{display:s?"none":"block"}}),[t,n,s,o,i]),canPlayAudio:s}}({room:r,props:n}),{mergedProps:c,canPlayVideo:l}=function({room:e,props:t}){let i=t_(e),{className:n,roomVideoPlaybackAllowedObservable:r,handleStartVideoPlayback:o}=a.useMemo(()=>(function(){return{className:e3("start-audio-button"),roomVideoPlaybackAllowedObservable:e8,handleStartVideoPlayback:e=>eV(this,null,function*(){eH.info("Start Video for room: ",e),yield e.startVideo()})}})(),[]),{canPlayVideo:s}=tC(a.useMemo(()=>r(i),[i,r]),{canPlayVideo:i.canPlaybackVideo});return{mergedProps:a.useMemo(()=>tU(t,{className:n,onClick:()=>{o(i)},style:{display:s?"none":"block"}}),[t,n,s,o,i]),canPlayVideo:s}}({room:r,props:o}),{style:d}=c,u=tb(c,["style"]);return d.display=s&&l?"none":"block",a.createElement("button",tg({ref:t,style:d},u),null!=i?i:`Start ${s?"Video":"Audio"}`)}),iE=a.forwardRef(function(e,t){let{mergedProps:i}=function({props:e}){let{dispatch:t,state:i}=tw().widget,n="lk-button lk-settings-toggle";return{mergedProps:a.useMemo(()=>tU(e,{className:n,onClick:()=>{t&&t({msg:"toggle_settings"})},"aria-pressed":(null==i?void 0:i.showSettings)?"true":"false"}),[e,n,t,i])}}({props:e});return a.createElement("button",tg({ref:t},i),e.children)});function iP(e){var t,i,n,r,o,{variation:s,controls:l,saveUserChoices:d=!0}=e,u=tb(e,["variation","controls","saveUserChoices"]);let[h,p]=a.useState(!1),m=tE();a.useEffect(()=>{var e,t;(null==(e=null==m?void 0:m.widget.state)?void 0:e.showChat)!==void 0&&p(null==(t=null==m?void 0:m.widget.state)?void 0:t.showChat)},[null==(t=null==m?void 0:m.widget.state)?void 0:t.showChat]);let f=function(e){let t=e=>"undefined"!=typeof window&&window.matchMedia(e).matches,[i,n]=a.useState(t(e));function r(){n(t(e))}return a.useEffect(()=>{let t=window.matchMedia(e);return r(),t.addListener?t.addListener(r):t.addEventListener("change",r),()=>{t.removeListener?t.removeListener(r):t.removeEventListener("change",r)}},[e]),i}(`(max-width: ${h?1e3:760}px)`);null!=s||(s=f?"minimal":"verbose");let g=tg({leave:!0},l),v=function(){let e=tN();return tC(a.useMemo(()=>{var t;return ti(t=e.localParticipant,c.dd.ParticipantPermissionsChanged).pipe(G(()=>t.permissions),em(t.permissions))},[e]),e.localParticipant.permissions)}();v?(null!=g.camera||(g.camera=v.canPublish),null!=g.microphone||(g.microphone=v.canPublish),null!=g.screenShare||(g.screenShare=v.canPublish),null!=g.chat||(g.chat=v.canPublishData&&(null==l?void 0:l.chat))):(g.camera=!1,g.chat=!1,g.microphone=!1,g.screenShare=!1);let b=a.useMemo(()=>"minimal"===s||"verbose"===s,[s]),y=a.useMemo(()=>"textOnly"===s||"verbose"===s,[s]),k="undefined"!=typeof navigator&&navigator.mediaDevices&&!!navigator.mediaDevices.getDisplayMedia,[T,C]=a.useState(!1),S=a.useCallback(e=>{C(e)},[C]),w=ie({className:"lk-control-bar"},u),{saveAudioInputEnabled:E,saveVideoInputEnabled:P,saveAudioInputDeviceId:R,saveVideoInputDeviceId:x}=tq({preventSave:!d}),I=a.useCallback((e,t)=>t?E(e):null,[E]),O=a.useCallback((e,t)=>t?P(e):null,[P]);return a.createElement("div",tg({},w),g.microphone&&a.createElement("div",{className:"lk-button-group"},a.createElement(ir,{source:c.fQ.Source.Microphone,showIcon:b,onChange:I},y&&"Microphone"),a.createElement("div",{className:"lk-button-group-menu"},a.createElement(iC,{kind:"audioinput",onActiveDeviceChange:(e,t)=>R(null!=t?t:"")}))),g.camera&&a.createElement("div",{className:"lk-button-group"},a.createElement(ir,{source:c.fQ.Source.Camera,showIcon:b,onChange:O},y&&"Camera"),a.createElement("div",{className:"lk-button-group-menu"},a.createElement(iC,{kind:"videoinput",onActiveDeviceChange:(e,t)=>x(null!=t?t:"")}))),g.screenShare&&k&&a.createElement(ir,{source:c.fQ.Source.ScreenShare,captureOptions:{audio:!0,selfBrowserSurface:"include"},showIcon:b,onChange:S},y&&(T?"Stop screen share":"Share screen")),g.chat&&a.createElement(tQ,null,b&&a.createElement(tK,null),y&&"Chat"),g.settings&&a.createElement(iE,null,b&&a.createElement(t$,null),y&&"Settings"),g.leave&&a.createElement(tW,null,b&&a.createElement(tY,null),y&&"Leave"),a.createElement(iw,null))}},87949:function(e,t,i){"use strict";let n,r,a,o,s;i.d(t,{Ai:()=>a5,CB:()=>ei,E8:()=>aX,Ix:()=>aY,TQ:()=>en,WU:()=>r$,ZV:()=>ep,Zr:()=>aJ,dd:()=>er,du:()=>a0,em:()=>em,fQ:()=>rg,rl:()=>aW,ul:()=>a2});var c,l,d,u,h,p,m,f,g,v,b,y,k,T,C,S,w,E,P,R,x,I,O,M,D,N,A,_,L,U,j,F,B,V,q,Q,W,G,z,K,H,J,$,Y,X,Z,ee,et,ei,en,er,ea,eo,es,ec,el,ed,eu,eh,ep,em,ef,eg=i(34155);function ev(e,t){if(!e)throw Error(t)}function eb(e){if("number"!=typeof e)throw Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>0x7fffffff||e<-0x80000000)throw Error("invalid int 32: "+e)}function ey(e){if("number"!=typeof e)throw Error("invalid uint 32: "+typeof e);if(!Number.isInteger(e)||e>0xffffffff||e<0)throw Error("invalid uint 32: "+e)}function ek(e){if("number"!=typeof e)throw Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>34028234663852886e22||e<-34028234663852886e22))throw Error("invalid float 32: "+e)}let eT=Symbol("@bufbuild/protobuf/enum-type");function eC(e,t,i,n){e[eT]=eS(t,i.map(t=>({no:t.no,name:t.name,localName:e[t.no]})))}function eS(e,t,i){let n=Object.create(null),r=Object.create(null),a=[];for(let e of t){let t=ew(e);a.push(t),n[e.name]=t,r[e.no]=t}return{typeName:e,values:a,findName:e=>n[e],findNumber:e=>r[e]}}function ew(e){return"localName"in e?e:Object.assign(Object.assign({},e),{localName:e.name})}class eE{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){let i=this.getType().runtime.bin,n=i.makeReadOptions(t);return i.readMessage(this,n.readerFactory(e),e.byteLength,n),this}fromJson(e,t){let 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 Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(e instanceof Error?e.message:String(e)))}return this.fromJson(i,t)}toBinary(e){let t=this.getType().runtime.bin,i=t.makeWriteOptions(e),n=i.writerFactory();return t.writeMessage(this,n,i),n.finish()}toJson(e){let t=this.getType().runtime.json,i=t.makeWriteOptions(e);return t.writeMessage(this,i)}toJsonString(e){var t;return JSON.stringify(this.toJson(e),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}}function eP(){let e=0,t=0;for(let i=0;i<28;i+=7){let n=this.buf[this.pos++];if(e|=(127&n)<>4,(128&i)==0)return this.assertBounds(),[e,t];for(let i=3;i<=31;i+=7){let n=this.buf[this.pos++];if(t|=(127&n)<>>n,a=r>>>7!=0||0!=t,o=(a?128|r:r)&255;if(i.push(o),!a)return}let n=e>>>28&15|(7&t)<<4,r=t>>3!=0;if(i.push((r?128|n:n)&255),r){for(let e=3;e<31;e+=7){let n=t>>>e,r=n>>>7!=0,a=(r?128|n:n)&255;if(i.push(a),!r)return}i.push(t>>>31&1)}}function ex(e){let t="-"===e[0];t&&(e=e.slice(1));let i=0,n=0;function r(t,r){let a=Number(e.slice(t,r));n*=1e6,(i=1e6*i+a)>=0x100000000&&(n+=i/0x100000000|0,i%=0x100000000)}return r(-24,-18),r(-18,-12),r(-12,-6),r(-6),t?eM(i,n):eO(i,n)}function eI(e,t){if({lo:e,hi:t}={lo:e>>>0,hi:t>>>0},t<=2097151)return String(0x100000000*t+e);let i=0xffffff&e,n=(e>>>24|t<<8)&0xffffff,r=t>>16&65535,a=i+6777216*n+6710656*r,o=n+8147497*r,s=2*r;return a>=1e7&&(o+=Math.floor(a/1e7),a%=1e7),o>=1e7&&(s+=Math.floor(o/1e7),o%=1e7),s.toString()+eD(o)+eD(a)}function eO(e,t){return{lo:0|e,hi:0|t}}function eM(e,t){return t=~t,e?e=~e+1:t+=1,eO(e,t)}let eD=e=>{let t=String(e);return"0000000".slice(t.length)+t};function eN(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 eA(){let e=this.buf[this.pos++],t=127&e;if((128&e)==0||(t|=(127&(e=this.buf[this.pos++]))<<7,(128&e)==0)||(t|=(127&(e=this.buf[this.pos++]))<<14,(128&e)==0)||(t|=(127&(e=this.buf[this.pos++]))<<21,(128&e)==0))return this.assertBounds(),t;t|=(15&(e=this.buf[this.pos++]))<<28;for(let t=5;(128&e)!=0&&t<10;t++)e=this.buf[this.pos++];if((128&e)!=0)throw Error("invalid varint");return this.assertBounds(),t>>>0}let e_=function(){let 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 eg||"object"!=typeof eg.env||"1"!==eg.env.BUF_BIGINT_DISABLE)){let t=BigInt("-9223372036854775808"),i=BigInt("9223372036854775807"),n=BigInt("0"),r=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(e){let n="bigint"==typeof e?e:BigInt(e);if(n>i||nr||t(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))}}let t=e=>ev(/^-?[0-9]+$/.test(e),"int64 invalid: ".concat(e)),i=e=>ev(/^[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),ex(e)),uEnc:e=>("string"!=typeof e&&(e=e.toString()),i(e),ex(e)),dec:(e,t)=>(function(e,t){let i=eO(e,t),n=0x80000000&i.hi;n&&(i=eM(i.lo,i.hi));let r=eI(i.lo,i.hi);return n?"-"+r:r})(e,t),uDec:(e,t)=>eI(e,t)}}();function eL(e,t,i){if(t===i)return!0;if(e==z.BYTES){if(!(t instanceof Uint8Array)||!(i instanceof Uint8Array)||t.length!==i.length)return!1;for(let e=0;e>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(ey(e);e>127;)this.buf.push(127&e|128),e>>>=7;return this.buf.push(e),this}int32(e){return eb(e),eN(e,this.buf),this}bool(e){return this.buf.push(+!!e),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){ek(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){ey(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){eb(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return eb(e),eN(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),n=e_.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=e_.uEnc(e);return i.setInt32(0,n.lo,!0),i.setInt32(4,n.hi,!0),this.raw(t)}int64(e){let t=e_.enc(e);return eR(t.lo,t.hi,this.buf),this}sint64(e){let t=e_.enc(e),i=t.hi>>31;return eR(t.lo<<1^i,(t.hi<<1|t.lo>>>31)^i,this.buf),this}uint64(e){let t=e_.uEnc(e);return eR(t.lo,t.hi,this.buf),this}}class eB{constructor(e,t){this.varint64=eP,this.uint32=eA,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 Error("illegal tag: field no "+t+" wire type "+i);return[t,i]}skip(e){let t=this.pos;switch(e){case H.Varint:for(;128&this.buf[this.pos++];);break;case H.Bit64:this.pos+=4;case H.Bit32:this.pos+=4;break;case H.LengthDelimited:let i=this.uint32();this.pos+=i;break;case H.StartGroup:let n;for(;(n=this.tag()[1])!==H.EndGroup;)this.skip(n);break;default:throw Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(t,this.pos)}assertBounds(){if(this.pos>this.len)throw RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){let e=this.uint32();return e>>>1^-(1&e)}int64(){return e_.dec(...this.varint64())}uint64(){return e_.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(1&e);return e=(e>>>1|(1&t)<<31)^i,t=t>>>1^i,e_.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 e_.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return e_.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 eV(e){let t=e.field.localName,i=Object.create(null);return i[t]=function(e){let t=e.field;if(t.repeated)return[];if(void 0!==t.default)return t.default;switch(t.kind){case"enum":return t.T.values[0].no;case"scalar":return eU(t.T,t.L);case"message":let i=t.T,n=new i;return i.fieldWrapper?i.fieldWrapper.unwrapField(n):n;case"map":throw"map fields are not allowed to be extensions"}}(e),[i,()=>i[t]]}let eq="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),eQ=[];for(let e=0;e>4,o=a,r=2;break;case 2:i[n++]=(15&o)<<4|(60&a)>>2,o=a,r=3;break;case 3:i[n++]=(3&o)<<6|a,r=0}}if(1==r)throw Error("invalid base64 string.");return i.subarray(0,n)},enc(e){let t="",i=0,n,r=0;for(let a=0;a>2],r=(3&n)<<4,i=1;break;case 1:t+=eq[r|n>>4],r=(15&n)<<2,i=2;break;case 2:t+=eq[r|n>>6],t+=eq[63&n],i=0}return i&&(t+=eq[r],t+="=",1==i&&(t+="=")),t}};function eG(e,t){let i=e.getType();return t.extendee.typeName===i.typeName&&!!i.runtime.bin.listUnknownFields(e).find(e=>e.no==t.field.no)}function ez(e,t){ev(e.extendee.typeName==t.getType().typeName,"extension ".concat(e.typeName," can only be applied to message ").concat(e.extendee.typeName))}function eK(e,t){let i=e.localName;if(e.repeated)return t[i].length>0;if(e.oneof)return t[e.oneof.localName].case===i;switch(e.kind){case"enum":case"scalar":if(e.opt||e.req)return void 0!==t[i];if("enum"==e.kind)return t[i]!==e.T.values[0].no;return!ej(e.T,t[i]);case"message":return void 0!==t[i];case"map":return Object.keys(t[i]).length>0}}function eH(e,t){let i=e.localName,n=!e.opt&&!e.req;if(e.repeated)t[i]=[];else if(e.oneof)t[e.oneof.localName]={case:void 0};else switch(e.kind){case"map":t[i]={};break;case"enum":t[i]=n?e.T.values[0].no:void 0;break;case"scalar":t[i]=n?eU(e.T,e.L):void 0;break;case"message":t[i]=void 0}}function eJ(e,t){if(null===e||"object"!=typeof e||!Object.getOwnPropertyNames(eE.prototype).every(t=>t in e&&"function"==typeof e[t]))return!1;let i=e.getType();return null!==i&&"function"==typeof i&&"typeName"in i&&"string"==typeof i.typeName&&(void 0===t||i.typeName==t.typeName)}function e$(e,t){return eJ(t)||!e.fieldWrapper?t:e.fieldWrapper.wrapField(t)}z.DOUBLE,z.FLOAT,z.INT64,z.UINT64,z.INT32,z.UINT32,z.BOOL,z.STRING,z.BYTES;let eY={ignoreUnknownFields:!1},eX={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0},eZ=Symbol(),e0=Symbol();function e1(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 e5(e,t,i,n,r){let a=i.localName;if(i.repeated){if(ev("map"!=i.kind),null===t)return;if(!Array.isArray(t))throw Error("cannot decode field ".concat(r.typeName,".").concat(i.name," from JSON: ").concat(e1(t)));let o=e[a];for(let e of t){if(null===e)throw Error("cannot decode field ".concat(r.typeName,".").concat(i.name," from JSON: ").concat(e1(e)));switch(i.kind){case"message":o.push(i.T.fromJson(e,n));break;case"enum":let t=e3(i.T,e,n.ignoreUnknownFields,!0);t!==e0&&o.push(t);break;case"scalar":try{o.push(e2(i.T,e,i.L,!0))}catch(n){let t="cannot decode field ".concat(r.typeName,".").concat(i.name," from JSON: ").concat(e1(e));throw n instanceof Error&&n.message.length>0&&(t+=": ".concat(n.message)),Error(t)}}}}else if("map"==i.kind){if(null===t)return;if("object"!=typeof t||Array.isArray(t))throw Error("cannot decode field ".concat(r.typeName,".").concat(i.name," from JSON: ").concat(e1(t)));let o=e[a];for(let[e,a]of Object.entries(t)){let s;if(null===a)throw Error("cannot decode field ".concat(r.typeName,".").concat(i.name," from JSON: map value null"));try{s=function(e,t){if(e===z.BOOL)switch(t){case"true":t=!0;break;case"false":t=!1}return e2(e,t,K.BIGINT,!0).toString()}(i.K,e)}catch(n){let e="cannot decode map key for field ".concat(r.typeName,".").concat(i.name," from JSON: ").concat(e1(t));throw n instanceof Error&&n.message.length>0&&(e+=": ".concat(n.message)),Error(e)}switch(i.V.kind){case"message":o[s]=i.V.T.fromJson(a,n);break;case"enum":let c=e3(i.V.T,a,n.ignoreUnknownFields,!0);c!==e0&&(o[s]=c);break;case"scalar":try{o[s]=e2(i.V.T,a,K.BIGINT,!0)}catch(n){let e="cannot decode map value for field ".concat(r.typeName,".").concat(i.name," from JSON: ").concat(e1(t));throw n instanceof Error&&n.message.length>0&&(e+=": ".concat(n.message)),Error(e)}}}}else switch(i.oneof&&(e=e[i.oneof.localName]={case:a},a="value"),i.kind){case"message":let o=i.T;if(null===t&&"google.protobuf.Value"!=o.typeName)return;let s=e[a];eJ(s)?s.fromJson(t,n):(e[a]=s=o.fromJson(t,n),o.fieldWrapper&&!i.oneof&&(e[a]=o.fieldWrapper.unwrapField(s)));break;case"enum":let c=e3(i.T,t,n.ignoreUnknownFields,!1);switch(c){case eZ:eH(i,e);break;case e0:break;default:e[a]=c}break;case"scalar":try{let n=e2(i.T,t,i.L,!1);n===eZ?eH(i,e):e[a]=n}catch(n){let e="cannot decode field ".concat(r.typeName,".").concat(i.name," from JSON: ").concat(e1(t));throw n instanceof Error&&n.message.length>0&&(e+=": ".concat(n.message)),Error(e)}}}function e2(e,t,i,n){if(null===t)return n?eU(e,i):eZ;switch(e){case z.DOUBLE:case z.FLOAT:if("NaN"===t)return Number.NaN;if("Infinity"===t)return Number.POSITIVE_INFINITY;if("-Infinity"===t)return Number.NEGATIVE_INFINITY;if(""===t||"string"==typeof t&&t.trim().length!==t.length||"string"!=typeof t&&"number"!=typeof t)break;let r=Number(t);if(Number.isNaN(r)||!Number.isFinite(r))break;return e==z.FLOAT&&ek(r),r;case z.INT32:case z.FIXED32:case z.SFIXED32:case z.SINT32:case z.UINT32:let a;if("number"==typeof t?a=t:"string"==typeof t&&t.length>0&&t.trim().length===t.length&&(a=Number(t)),void 0===a)break;return e==z.UINT32||e==z.FIXED32?ey(a):eb(a),a;case z.INT64:case z.SFIXED64:case z.SINT64:if("number"!=typeof t&&"string"!=typeof t)break;let o=e_.parse(t);return i?o.toString():o;case z.FIXED64:case z.UINT64:if("number"!=typeof t&&"string"!=typeof t)break;let s=e_.uParse(t);return i?s.toString():s;case z.BOOL:if("boolean"!=typeof t)break;return t;case z.STRING:if("string"!=typeof t)break;try{encodeURIComponent(t)}catch(e){throw Error("invalid UTF8")}return t;case z.BYTES:if(""===t)return new Uint8Array(0);if("string"!=typeof t)break;return eW.dec(t)}throw Error()}function e3(e,t,i,n){if(null===t)return"google.protobuf.NullValue"==e.typeName?0:n?e.values[0].no:eZ;switch(typeof t){case"number":if(Number.isInteger(t))return t;break;case"string":let r=e.findName(t);if(void 0!==r)return r.no;if(i)return e0}throw Error("cannot decode enum ".concat(e.typeName," from JSON: ").concat(e1(t)))}function e6(e,t,i){if("map"==e.kind){ev("object"==typeof t&&null!=t);let n={},r=Object.entries(t);switch(e.V.kind){case"scalar":for(let[t,i]of r)n[t.toString()]=e9(e.V.T,i);break;case"message":for(let[e,t]of r)n[e.toString()]=t.toJson(i);break;case"enum":let a=e.V.T;for(let[e,t]of r)n[e.toString()]=e4(a,t,i.enumAsInteger)}return i.emitDefaultValues||r.length>0?n:void 0}if(e.repeated){ev(Array.isArray(t));let n=[];switch(e.kind){case"scalar":for(let i=0;i0?n:void 0}switch(e.kind){case"scalar":return e9(e.T,t);case"enum":return e4(e.T,t,i.enumAsInteger);case"message":return e$(e.T,t).toJson(i)}}function e4(e,t,i){var n;if(ev("number"==typeof t),"google.protobuf.NullValue"==e.typeName)return null;if(i)return t;let r=e.findNumber(t);return null!==(n=null==r?void 0:r.name)&&void 0!==n?n:t}function e9(e,t){switch(e){case z.INT32:case z.SFIXED32:case z.SINT32:case z.FIXED32:case z.UINT32:return ev("number"==typeof t),t;case z.FLOAT:case z.DOUBLE:if(ev("number"==typeof t),Number.isNaN(t))return"NaN";if(t===Number.POSITIVE_INFINITY)return"Infinity";if(t===Number.NEGATIVE_INFINITY)return"-Infinity";return t;case z.STRING:return ev("string"==typeof t),t;case z.BOOL:return ev("boolean"==typeof t),t;case z.UINT64:case z.FIXED64:case z.INT64:case z.SFIXED64:case z.SINT64:return ev("bigint"==typeof t||"string"==typeof t||"number"==typeof t),t.toString();case z.BYTES:return ev(t instanceof Uint8Array),eW.enc(t)}}let e7=Symbol("@bufbuild/protobuf/unknown-fields"),e8={readUnknownFields:!0,readerFactory:e=>new eB(e)},te={writeUnknownFields:!0,writerFactory:()=>new eF};function tt(e,t,i,n,r){let{repeated:a,localName:o}=i;switch(i.oneof&&((e=e[i.oneof.localName]).case!=o&&delete e.value,e.case=o,o="value"),i.kind){case"scalar":case"enum":let s="enum"==i.kind?z.INT32:i.T,c=tr;if("scalar"==i.kind&&i.L>0&&(c=tn),a){let i=e[o];if(n==H.LengthDelimited&&s!=z.STRING&&s!=z.BYTES){let e=t.uint32()+t.pos;for(;t.pose.no-t.no)),this.numbersAsc}byMember(){if(!this.members){let e;this.members=[];let t=this.members;for(let i of this.list())i.oneof?i.oneof!==e&&(e=i.oneof,t.push(e)):t.push(i)}return this.members}}function th(e,t){let i=tm(e);return t?i:ty(tb(i))}let tp=tm;function tm(e){let t=!1,i=[];for(let n=0;n"".concat(e,"$"),tb=e=>tg.has(e)?tv(e):e,ty=e=>tf.has(e)?tv(e):e;class tk{constructor(e){this.kind="oneof",this.repeated=!1,this.packed=!1,this.opt=!1,this.req=!1,this.default=void 0,this.fields=[],this.name=e,this.localName=th(e,!1)}addField(e){ev(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;enew tu(e,e=>(function(e,t){var i,n,r,a,o,s;let c;let l=[];for(let t of"function"==typeof e?e():e){if(t.localName=th(t.name,void 0!==t.oneof),t.jsonName=null!==(i=t.jsonName)&&void 0!==i?i:tp(t.name),t.repeated=null!==(n=t.repeated)&&void 0!==n&&n,"scalar"==t.kind&&(t.L=null!==(r=t.L)&&void 0!==r?r:K.BIGINT),t.delimited=null!==(a=t.delimited)&&void 0!==a&&a,t.req=null!==(o=t.req)&&void 0!==o&&o,t.opt=null!==(s=t.opt)&&void 0!==s&&s,void 0===t.packed&&(t.packed="enum"==t.kind||"scalar"==t.kind&&t.T!=z.BYTES&&t.T!=z.STRING),void 0!==t.oneof){let e="string"==typeof t.oneof?t.oneof:t.oneof.name;c&&c.name==e||(c=new tk(e)),t.oneof=c,c.addField(t)}l.push(t)}return l})(e)),h=e=>{for(let t of e.getType().fields.byMember()){if(t.opt)continue;let i=t.localName;if(t.repeated){e[i]=[];continue}switch(t.kind){case"oneof":e[i]={case:void 0};break;case"enum":e[i]=0;break;case"map":e[i]={};break;case"scalar":e[i]=eU(t.T,t.L)}}},{syntax:"proto3",json:{makeReadOptions:function(e){return e?Object.assign(Object.assign({},eY),e):eY},makeWriteOptions:function(e){return e?Object.assign(Object.assign({},eX),e):eX},readMessage(e,t,i,n){if(null==t||Array.isArray(t)||"object"!=typeof t)throw Error("cannot decode message ".concat(e.typeName," from JSON: ").concat(e1(t)));n=null!=n?n:new e;let r=new Map,a=i.typeRegistry;for(let[o,s]of Object.entries(t)){let t=e.fields.findJsonName(o);if(t){if(t.oneof){if(null===s&&"scalar"==t.kind)continue;let i=r.get(t.oneof);if(void 0!==i)throw Error("cannot decode message ".concat(e.typeName,' from JSON: multiple keys for oneof "').concat(t.oneof.name,'" present: "').concat(i,'", "').concat(o,'"'));r.set(t.oneof,o)}e5(n,s,t,i,e)}else{let t=!1;if((null==a?void 0:a.findExtension)&&o.startsWith("[")&&o.endsWith("]")){let r=a.findExtension(o.substring(1,o.length-1));if(r&&r.extendee.typeName==e.typeName){t=!0;let[e,a]=eV(r);e5(e,s,r.field,i,r),function(e,t,i,n){ez(t,e);let r=t.runtime.bin.makeReadOptions(n),a=t.runtime.bin.makeWriteOptions(n);if(eG(e,t)){let i=e.getType().runtime.bin.listUnknownFields(e).filter(e=>e.no!=t.field.no);for(let t of(e.getType().runtime.bin.discardUnknownFields(e),i))e.getType().runtime.bin.onUnknownField(e,t.no,t.wireType,t.data)}let o=a.writerFactory(),s=t.field;s.opt||s.repeated||"enum"!=s.kind&&"scalar"!=s.kind||(s=Object.assign(Object.assign({},t.field),{opt:!0})),t.runtime.bin.writeField(s,i,o,a);let c=r.readerFactory(o.finish());for(;c.pos=0;--i)if(e[i].no==t.no)return[e[i]];return[]}return e.filter(e=>e.no===t.no)}(e.getType().runtime.bin.listUnknownFields(e),t.field),[a,o]=eV(t);for(let e of r)t.runtime.bin.readField(a,n.readerFactory(e.data),t.field,e.wireType,n);return o()}(e,a,t),n=e6(a.field,i,t);void 0!==n&&(r[a.field.jsonName]=n)}}}catch(r){let e=i?"cannot encode field ".concat(n.typeName,".").concat(i.name," to JSON"):"cannot encode message ".concat(n.typeName," to JSON"),t=r instanceof Error?r.message:String(r);throw Error(e+(t.length>0?": ".concat(t):""))}return r},readScalar:(e,t,i)=>e2(e,t,null!=i?i:K.BIGINT,!0),writeScalar(e,t,i){if(void 0!==t&&(i||ej(e,t)))return e9(e,t)},debug:e1},bin:{makeReadOptions:function(e){return e?Object.assign(Object.assign({},e8),e):e8},makeWriteOptions:function(e){return e?Object.assign(Object.assign({},te),e):te},listUnknownFields(e){var t;return null!==(t=e[e7])&&void 0!==t?t:[]},discardUnknownFields(e){delete e[e7]},writeUnknownFields(e,t){let i=e[e7];if(i)for(let e of i)t.tag(e.no,e.wireType).raw(e.data)},onUnknownField(e,t,i,n){Array.isArray(e[e7])||(e[e7]=[]),e[e7].push({no:t,wireType:i,data:n})},readMessage(e,t,i,n,r){let a,o;let s=e.getType(),c=r?t.len:t.pos+i;for(;t.poseJ(e,l)?e:new l(e));else{let i=e[n];l.fieldWrapper?"google.protobuf.BytesValue"===l.typeName?t[n]=td(i):t[n]=i:t[n]=eJ(i,l)?i:new l(i)}}}},equals:(e,t,i)=>t===i||!!t&&!!i&&e.fields.byMember().every(e=>{let 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)=>eL(e.T,t,r[i]));case"enum":return n.every((e,t)=>eL(z.INT32,e,r[t]))}throw Error("repeated cannot contain ".concat(e.kind))}switch(e.kind){case"message":return e.T.equals(n,r);case"enum":return eL(z.INT32,n,r);case"scalar":return eL(e.T,n,r);case"oneof":if(n.case!==r.case)return!1;let a=e.findField(n.case);if(void 0===a)return!0;switch(a.kind){case"message":return a.T.equals(n.value,r.value);case"enum":return eL(z.INT32,n.value,r.value);case"scalar":return eL(a.T,n.value,r.value)}throw Error("oneof cannot contain ".concat(a.kind));case"map":let o=Object.keys(n).concat(Object.keys(r));switch(e.V.kind){case"message":let s=e.V.T;return o.every(e=>s.equals(n[e],r[e]));case"enum":return o.every(e=>eL(z.INT32,n[e],r[e]));case"scalar":let c=e.V.T;return o.every(e=>eL(c,n[e],r[e]))}}}),clone(e){let t=e.getType(),i=new t;for(let n of t.fields.byMember()){let t;let r=e[n.localName];if(n.repeated)t=r.map(tl);else if("map"==n.kind)for(let[e,a]of(t=i[n.localName],Object.entries(r)))t[e]=tl(a);else t="oneof"==n.kind?n.findField(r.case)?{case:r.case,value:tl(r.value)}:{case:void 0}:tl(r);i[n.localName]=t}for(let n of t.runtime.bin.listUnknownFields(e))t.runtime.bin.onUnknownField(i,n.no,n.wireType,n.data);return i}}),{newFieldList:u,initFields:h}),makeMessageType(e,t,i){return function(e,t,i,n){var r;let a=null!==(r=null==n?void 0:n.localName)&&void 0!==r?r:t.substring(t.lastIndexOf(".")+1),o={[a]:function(t){e.util.initFields(this),e.util.initPartial(t,this)}}[a];return Object.setPrototypeOf(o.prototype,new eE),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:function(e,t,i){let n={};for(let e of t){let t=ew(e);n[t.localName]=t.no,n[t.no]=t.localName}return eC(n,e,t),n},makeEnumType:eS,getEnumType:function(e){let t=e[eT];return ev(t,"missing enum type on enum object"),t},makeExtension(e,t,i){var n;let r;return n=this,{typeName:e,extendee:t,get field(){if(!r){let t="function"==typeof i?i():i;t.name=e.split(".").pop(),t.jsonName="[".concat(e,"]"),r=n.util.newFieldList([t]).list()[0]}return r},runtime:n}}}),tC=tT.makeEnum("livekit.TrackType",[{no:0,name:"AUDIO"},{no:1,name:"VIDEO"},{no:2,name:"DATA"}]),tS=tT.makeEnum("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"}]),tw=tT.makeEnum("livekit.VideoQuality",[{no:0,name:"LOW"},{no:1,name:"MEDIUM"},{no:2,name:"HIGH"},{no:3,name:"OFF"}]),tE=tT.makeEnum("livekit.ConnectionQuality",[{no:0,name:"POOR"},{no:1,name:"GOOD"},{no:2,name:"EXCELLENT"},{no:3,name:"LOST"}]),tP=tT.makeEnum("livekit.ClientConfigSetting",[{no:0,name:"UNSET"},{no:1,name:"DISABLED"},{no:2,name:"ENABLED"}]),tR=tT.makeEnum("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"},{no:8,name:"MIGRATION"},{no:9,name:"SIGNAL_CLOSE"}]),tx=tT.makeEnum("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"}]),tI=tT.makeEnum("livekit.SubscriptionError",[{no:0,name:"SE_UNKNOWN"},{no:1,name:"SE_CODEC_UNSUPPORTED"},{no:2,name:"SE_TRACK_NOTFOUND"}]),tO=tT.makeEnum("livekit.AudioTrackFeature",[{no:0,name:"TF_STEREO"},{no:1,name:"TF_NO_DTX"},{no:2,name:"TF_AUTO_GAIN_CONTROL"},{no:3,name:"TF_ECHO_CANCELLATION"},{no:4,name:"TF_NOISE_SUPPRESSION"},{no:5,name:"TF_ENHANCED_NOISE_CANCELLATION"}]),tM=tT.makeMessageType("livekit.Room",()=>[{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:14,name:"departure_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:tD,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:13,name:"version",kind:"message",T:t2}]),tD=tT.makeMessageType("livekit.Codec",()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}]),tN=tT.makeMessageType("livekit.ParticipantPermission",()=>[{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:tT.getEnumType(tS),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},{no:11,name:"agent",kind:"scalar",T:8}]),tA=tT.makeMessageType("livekit.ParticipantInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"identity",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:tT.getEnumType(t_)},{no:4,name:"tracks",kind:"message",T:tF,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:tN},{no:12,name:"region",kind:"scalar",T:9},{no:13,name:"is_publisher",kind:"scalar",T:8},{no:14,name:"kind",kind:"enum",T:tT.getEnumType(tL)}]),t_=tT.makeEnum("livekit.ParticipantInfo.State",[{no:0,name:"JOINING"},{no:1,name:"JOINED"},{no:2,name:"ACTIVE"},{no:3,name:"DISCONNECTED"}]),tL=tT.makeEnum("livekit.ParticipantInfo.Kind",[{no:0,name:"STANDARD"},{no:1,name:"INGRESS"},{no:2,name:"EGRESS"},{no:3,name:"SIP"},{no:4,name:"AGENT"}]),tU=tT.makeEnum("livekit.Encryption.Type",[{no:0,name:"NONE"},{no:1,name:"GCM"},{no:2,name:"CUSTOM"}]),tj=tT.makeMessageType("livekit.SimulcastCodecInfo",()=>[{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:tB,repeated:!0}]),tF=tT.makeMessageType("livekit.TrackInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:tT.getEnumType(tC)},{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:tT.getEnumType(tS)},{no:10,name:"layers",kind:"message",T:tB,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:tj,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:tT.getEnumType(tU)},{no:17,name:"stream",kind:"scalar",T:9},{no:18,name:"version",kind:"message",T:t2},{no:19,name:"audio_features",kind:"enum",T:tT.getEnumType(tO),repeated:!0}]),tB=tT.makeMessageType("livekit.VideoLayer",()=>[{no:1,name:"quality",kind:"enum",T:tT.getEnumType(tw)},{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}]),tV=tT.makeMessageType("livekit.DataPacket",()=>[{no:1,name:"kind",kind:"enum",T:tT.getEnumType(tq)},{no:4,name:"participant_identity",kind:"scalar",T:9},{no:5,name:"destination_identities",kind:"scalar",T:9,repeated:!0},{no:2,name:"user",kind:"message",T:tG,oneof:"value"},{no:3,name:"speaker",kind:"message",T:tQ,oneof:"value"},{no:6,name:"sip_dtmf",kind:"message",T:tz,oneof:"value"},{no:7,name:"transcription",kind:"message",T:tK,oneof:"value"}]),tq=tT.makeEnum("livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]),tQ=tT.makeMessageType("livekit.ActiveSpeakerUpdate",()=>[{no:1,name:"speakers",kind:"message",T:tW,repeated:!0}]),tW=tT.makeMessageType("livekit.SpeakerInfo",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"level",kind:"scalar",T:2},{no:3,name:"active",kind:"scalar",T:8}]),tG=tT.makeMessageType("livekit.UserPacket",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:5,name:"participant_identity",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:12},{no:3,name:"destination_sids",kind:"scalar",T:9,repeated:!0},{no:6,name:"destination_identities",kind:"scalar",T:9,repeated:!0},{no:4,name:"topic",kind:"scalar",T:9,opt:!0},{no:8,name:"id",kind:"scalar",T:9,opt:!0},{no:9,name:"start_time",kind:"scalar",T:4,opt:!0},{no:10,name:"end_time",kind:"scalar",T:4,opt:!0}]),tz=tT.makeMessageType("livekit.SipDTMF",()=>[{no:3,name:"code",kind:"scalar",T:13},{no:4,name:"digit",kind:"scalar",T:9}]),tK=tT.makeMessageType("livekit.Transcription",()=>[{no:2,name:"participant_identity",kind:"scalar",T:9},{no:3,name:"track_id",kind:"scalar",T:9},{no:4,name:"segments",kind:"message",T:tH,repeated:!0}]),tH=tT.makeMessageType("livekit.TranscriptionSegment",()=>[{no:1,name:"id",kind:"scalar",T:9},{no:2,name:"text",kind:"scalar",T:9},{no:3,name:"start_time",kind:"scalar",T:4},{no:4,name:"end_time",kind:"scalar",T:4},{no:5,name:"final",kind:"scalar",T:8},{no:6,name:"language",kind:"scalar",T:9}]),tJ=tT.makeMessageType("livekit.ParticipantTracks",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}]),t$=tT.makeMessageType("livekit.ServerInfo",()=>[{no:1,name:"edition",kind:"enum",T:tT.getEnumType(tY)},{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},{no:7,name:"agent_protocol",kind:"scalar",T:5}]),tY=tT.makeEnum("livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]),tX=tT.makeMessageType("livekit.ClientInfo",()=>[{no:1,name:"sdk",kind:"enum",T:tT.getEnumType(tZ)},{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}]),tZ=tT.makeEnum("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"},{no:9,name:"PYTHON"},{no:10,name:"CPP"}]),t0=tT.makeMessageType("livekit.ClientConfiguration",()=>[{no:1,name:"video",kind:"message",T:t1},{no:2,name:"screen",kind:"message",T:t1},{no:3,name:"resume_connection",kind:"enum",T:tT.getEnumType(tP)},{no:4,name:"disabled_codecs",kind:"message",T:t5},{no:5,name:"force_relay",kind:"enum",T:tT.getEnumType(tP)}]),t1=tT.makeMessageType("livekit.VideoConfiguration",()=>[{no:1,name:"hardware_encoder",kind:"enum",T:tT.getEnumType(tP)}]),t5=tT.makeMessageType("livekit.DisabledCodecs",()=>[{no:1,name:"codecs",kind:"message",T:tD,repeated:!0},{no:2,name:"publish",kind:"message",T:tD,repeated:!0}]),t2=tT.makeMessageType("livekit.TimedVersion",()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}]),t3=tT.makeEnum("livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}]),t6=tT.makeEnum("livekit.StreamState",[{no:0,name:"ACTIVE"},{no:1,name:"PAUSED"}]),t4=tT.makeEnum("livekit.CandidateProtocol",[{no:0,name:"UDP"},{no:1,name:"TCP"},{no:2,name:"TLS"}]),t9=tT.makeMessageType("livekit.SignalRequest",()=>[{no:1,name:"offer",kind:"message",T:ic,oneof:"message"},{no:2,name:"answer",kind:"message",T:ic,oneof:"message"},{no:3,name:"trickle",kind:"message",T:it,oneof:"message"},{no:4,name:"add_track",kind:"message",T:ie,oneof:"message"},{no:5,name:"mute",kind:"message",T:ii,oneof:"message"},{no:6,name:"subscription",kind:"message",T:id,oneof:"message"},{no:7,name:"track_setting",kind:"message",T:iu,oneof:"message"},{no:8,name:"leave",kind:"message",T:im,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:iv,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:iO,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:iD,oneof:"message"},{no:13,name:"simulate",kind:"message",T:iA,oneof:"message"},{no:14,name:"ping",kind:"scalar",T:3,oneof:"message"},{no:15,name:"update_metadata",kind:"message",T:ib,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:i_,oneof:"message"},{no:17,name:"update_audio_track",kind:"message",T:ih,oneof:"message"},{no:18,name:"update_video_track",kind:"message",T:ip,oneof:"message"}]),t7=tT.makeMessageType("livekit.SignalResponse",()=>[{no:1,name:"join",kind:"message",T:ir,oneof:"message"},{no:2,name:"answer",kind:"message",T:ic,oneof:"message"},{no:3,name:"offer",kind:"message",T:ic,oneof:"message"},{no:4,name:"trickle",kind:"message",T:it,oneof:"message"},{no:5,name:"update",kind:"message",T:il,oneof:"message"},{no:6,name:"track_published",kind:"message",T:io,oneof:"message"},{no:8,name:"leave",kind:"message",T:im,oneof:"message"},{no:9,name:"mute",kind:"message",T:ii,oneof:"message"},{no:10,name:"speakers_changed",kind:"message",T:ik,oneof:"message"},{no:11,name:"room_update",kind:"message",T:iT,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:iS,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:iE,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:ix,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:iM,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:is,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:ia,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:iL,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:iF,oneof:"message"}]),t8=tT.makeMessageType("livekit.SimulcastCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"cid",kind:"scalar",T:9}]),ie=tT.makeMessageType("livekit.AddTrackRequest",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"type",kind:"enum",T:tT.getEnumType(tC)},{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:tT.getEnumType(tS)},{no:9,name:"layers",kind:"message",T:tB,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:t8,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:tT.getEnumType(tU)},{no:15,name:"stream",kind:"scalar",T:9}]),it=tT.makeMessageType("livekit.TrickleRequest",()=>[{no:1,name:"candidateInit",kind:"scalar",T:9},{no:2,name:"target",kind:"enum",T:tT.getEnumType(t3)}]),ii=tT.makeMessageType("livekit.MuteTrackRequest",()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"muted",kind:"scalar",T:8}]),ir=tT.makeMessageType("livekit.JoinResponse",()=>[{no:1,name:"room",kind:"message",T:tM},{no:2,name:"participant",kind:"message",T:tA},{no:3,name:"other_participants",kind:"message",T:tA,repeated:!0},{no:4,name:"server_version",kind:"scalar",T:9},{no:5,name:"ice_servers",kind:"message",T:iy,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:t0},{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:t$},{no:13,name:"sif_trailer",kind:"scalar",T:12}]),ia=tT.makeMessageType("livekit.ReconnectResponse",()=>[{no:1,name:"ice_servers",kind:"message",T:iy,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:t0}]),io=tT.makeMessageType("livekit.TrackPublishedResponse",()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:tF}]),is=tT.makeMessageType("livekit.TrackUnpublishedResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]),ic=tT.makeMessageType("livekit.SessionDescription",()=>[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sdp",kind:"scalar",T:9}]),il=tT.makeMessageType("livekit.ParticipantUpdate",()=>[{no:1,name:"participants",kind:"message",T:tA,repeated:!0}]),id=tT.makeMessageType("livekit.UpdateSubscription",()=>[{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:tJ,repeated:!0}]),iu=tT.makeMessageType("livekit.UpdateTrackSettings",()=>[{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:tT.getEnumType(tw)},{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}]),ih=tT.makeMessageType("livekit.UpdateLocalAudioTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"features",kind:"enum",T:tT.getEnumType(tO),repeated:!0}]),ip=tT.makeMessageType("livekit.UpdateLocalVideoTrack",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13}]),im=tT.makeMessageType("livekit.LeaveRequest",()=>[{no:1,name:"can_reconnect",kind:"scalar",T:8},{no:2,name:"reason",kind:"enum",T:tT.getEnumType(tR)},{no:3,name:"action",kind:"enum",T:tT.getEnumType(ig)},{no:4,name:"regions",kind:"message",T:iU}]),ig=tT.makeEnum("livekit.LeaveRequest.Action",[{no:0,name:"DISCONNECT"},{no:1,name:"RESUME"},{no:2,name:"RECONNECT"}]),iv=tT.makeMessageType("livekit.UpdateVideoLayers",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:tB,repeated:!0}]),ib=tT.makeMessageType("livekit.UpdateParticipantMetadata",()=>[{no:1,name:"metadata",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9}]),iy=tT.makeMessageType("livekit.ICEServer",()=>[{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}]),ik=tT.makeMessageType("livekit.SpeakersChanged",()=>[{no:1,name:"speakers",kind:"message",T:tW,repeated:!0}]),iT=tT.makeMessageType("livekit.RoomUpdate",()=>[{no:1,name:"room",kind:"message",T:tM}]),iC=tT.makeMessageType("livekit.ConnectionQualityInfo",()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"quality",kind:"enum",T:tT.getEnumType(tE)},{no:3,name:"score",kind:"scalar",T:2}]),iS=tT.makeMessageType("livekit.ConnectionQualityUpdate",()=>[{no:1,name:"updates",kind:"message",T:iC,repeated:!0}]),iw=tT.makeMessageType("livekit.StreamStateInfo",()=>[{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:tT.getEnumType(t6)}]),iE=tT.makeMessageType("livekit.StreamStateUpdate",()=>[{no:1,name:"stream_states",kind:"message",T:iw,repeated:!0}]),iP=tT.makeMessageType("livekit.SubscribedQuality",()=>[{no:1,name:"quality",kind:"enum",T:tT.getEnumType(tw)},{no:2,name:"enabled",kind:"scalar",T:8}]),iR=tT.makeMessageType("livekit.SubscribedCodec",()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:iP,repeated:!0}]),ix=tT.makeMessageType("livekit.SubscribedQualityUpdate",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:iP,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:iR,repeated:!0}]),iI=tT.makeMessageType("livekit.TrackPermission",()=>[{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}]),iO=tT.makeMessageType("livekit.SubscriptionPermission",()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:iI,repeated:!0}]),iM=tT.makeMessageType("livekit.SubscriptionPermissionUpdate",()=>[{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}]),iD=tT.makeMessageType("livekit.SyncState",()=>[{no:1,name:"answer",kind:"message",T:ic},{no:2,name:"subscription",kind:"message",T:id},{no:3,name:"publish_tracks",kind:"message",T:io,repeated:!0},{no:4,name:"data_channels",kind:"message",T:iN,repeated:!0},{no:5,name:"offer",kind:"message",T:ic},{no:6,name:"track_sids_disabled",kind:"scalar",T:9,repeated:!0}]),iN=tT.makeMessageType("livekit.DataChannelInfo",()=>[{no:1,name:"label",kind:"scalar",T:9},{no:2,name:"id",kind:"scalar",T:13},{no:3,name:"target",kind:"enum",T:tT.getEnumType(t3)}]),iA=tT.makeMessageType("livekit.SimulateScenario",()=>[{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:tT.getEnumType(t4),oneof:"scenario"},{no:6,name:"subscriber_bandwidth",kind:"scalar",T:3,oneof:"scenario"},{no:7,name:"disconnect_signal_on_resume",kind:"scalar",T:8,oneof:"scenario"},{no:8,name:"disconnect_signal_on_resume_no_messages",kind:"scalar",T:8,oneof:"scenario"},{no:9,name:"leave_request_full_reconnect",kind:"scalar",T:8,oneof:"scenario"}]),i_=tT.makeMessageType("livekit.Ping",()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}]),iL=tT.makeMessageType("livekit.Pong",()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}]),iU=tT.makeMessageType("livekit.RegionSettings",()=>[{no:1,name:"regions",kind:"message",T:ij,repeated:!0}]),ij=tT.makeMessageType("livekit.RegionInfo",()=>[{no:1,name:"region",kind:"scalar",T:9},{no:2,name:"url",kind:"scalar",T:9},{no:3,name:"distance",kind:"scalar",T:3}]),iF=tT.makeMessageType("livekit.SubscriptionResponse",()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:tT.getEnumType(tI)}]);var iB="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},iV={exports:{}};p=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"],r={},a=null;function o(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 c(){for(var i=this.getLevel(),r=0;r=0&&t<=u.levels.SILENT)return t;throw TypeError("log.setLevel() called with invalid level: "+e)}"string"==typeof e?h+=":"+e:"symbol"==typeof e&&(h=void 0),u.name=e,u.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},u.methodFactory=i||d,u.getLevel=function(){return null!=l?l:null!=s?s:o},u.setLevel=function(e,i){return l=m(e),!1!==i&&function(e){var i=(n[e]||"silent").toUpperCase();if(typeof window!==t&&h){try{window.localStorage[h]=i;return}catch(e){}try{window.document.cookie=encodeURIComponent(h)+"="+i+";"}catch(e){}}}(l),c.call(u)},u.setDefaultLevel=function(e){s=m(e),p()||u.setLevel(e,!1)},u.resetLevel=function(){l=null,function(){if(typeof window!==t&&h){try{window.localStorage.removeItem(h)}catch(e){}try{window.document.cookie=encodeURIComponent(h)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(e){}}}(),c.call(u)},u.enableAll=function(e){u.setLevel(u.levels.TRACE,e)},u.disableAll=function(e){u.setLevel(u.levels.SILENT,e)},u.rebuild=function(){if(a!==u&&(o=m(a.getLevel())),c.call(u),a===u)for(var e in r)r[e].rebuild()},o=m(a?a.getLevel():"WARN");var f=p();null!=f&&(l=m(f)),c.call(u)}(a=new u).getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw TypeError("You must supply a name when creating a logger.");var t=r[e];return t||(t=r[e]=new u(e,a.methodFactory)),t};var h=typeof window!==t?window.log:void 0;return a.noConflict=function(){return typeof window!==t&&window.log===a&&(window.log=h),a},a.getLoggers=function(){return r},a.default=a,a},iV.exports?iV.exports=p():iB.log=p();var iq=iV.exports;(m=J||(J={}))[m.trace=0]="trace",m[m.debug=1]="debug",m[m.info=2]="info",m[m.warn=3]="warn",m[m.error=4]="error",m[m.silent=5]="silent",(f=$||($={})).Default="livekit",f.Room="livekit-room",f.Participant="livekit-participant",f.Track="livekit-track",f.Publication="livekit-track-publication",f.Engine="livekit-engine",f.Signal="livekit-signal",f.PCManager="livekit-pc-manager",f.PCTransport="livekit-pc-transport",f.E2EE="lk-e2ee";let iQ=iq.getLogger("livekit");function iW(e){let t=iq.getLogger(e);return t.setDefaultLevel(iQ.getLevel()),t}Object.values($).map(e=>iq.getLogger(e)),iQ.setDefaultLevel(J.info);let iG=iq.getLogger("lk-e2ee"),iz=[0,300,1200,2700,4800,7e3,7e3,7e3,7e3,7e3];function iK(e,t,i,n){return new(i||(i=Promise))(function(r,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?r(e.value):((t=e.value)instanceof i?t:new i(function(e){e(t)})).then(o,s)}c((n=n.apply(e,t||[])).next())})}function iH(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,i=e[Symbol.asyncIterator];return i?i.call(e):(e=function(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 TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(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)})}}}"function"==typeof SuppressedError&&SuppressedError;var iJ={exports:{}},i$="object"==typeof Reflect?Reflect:null,iY=i$&&"function"==typeof i$.apply?i$.apply:function(e,t,i){return Function.prototype.apply.call(e,t,i)};Y=i$&&"function"==typeof i$.ownKeys?i$.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var iX=Number.isNaN||function(e){return e!=e};function iZ(){iZ.init.call(this)}iJ.exports=iZ,iJ.exports.once=function(e,t){return new Promise(function(i,n){var r,a,o;function s(i){e.removeListener(t,c),n(i)}function c(){"function"==typeof e.removeListener&&e.removeListener("error",s),i([].slice.call(arguments))}i8(e,t,c,{once:!0}),"error"!==t&&(r=e,a=s,o={once:!0},"function"==typeof r.on&&i8(r,"error",a,o))})},iZ.EventEmitter=iZ,iZ.prototype._events=void 0,iZ.prototype._eventsCount=0,iZ.prototype._maxListeners=void 0;var i0=10;function i1(e){if("function"!=typeof e)throw TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function i5(e){return void 0===e._maxListeners?iZ.defaultMaxListeners:e._maxListeners}function i2(e,t,i,n){if(i1(i),void 0===(a=e._events)?(a=e._events=Object.create(null),e._eventsCount=0):(void 0!==a.newListener&&(e.emit("newListener",t,i.listener?i.listener:i),a=e._events),o=a[t]),void 0===o)o=a[t]=i,++e._eventsCount;else if("function"==typeof o?o=a[t]=n?[i,o]:[o,i]:n?o.unshift(i):o.push(i),(r=i5(e))>0&&o.length>r&&!o.warned){o.warned=!0;var r,a,o,s=Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=o.length,console&&console.warn&&console.warn(s)}return e}function i3(){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 i6(e,t,i){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:i},r=i3.bind(n);return r.listener=i,n.wrapFn=r,r}function i4(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=Array(e.length),i=0;i0&&(a=t[0]),a instanceof Error)throw a;var a,o=Error("Unhandled error."+(a?" ("+a.message+")":""));throw o.context=a,o}var s=r[e];if(void 0===s)return!1;if("function"==typeof s)iY(s,this,t);else for(var c=s.length,l=i7(s,c),i=0;i=0;a--)if(i[a]===t||i[a].listener===t){o=i[a].listener,r=a;break}if(r<0)return this;0===r?i.shift():function(e,t){for(;t+1=0;n--)this.removeListener(e,t[n]);return this},iZ.prototype.listeners=function(e){return i4(this,e,!0)},iZ.prototype.rawListeners=function(e){return i4(this,e,!1)},iZ.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):i9.call(e,t)},iZ.prototype.listenerCount=i9,iZ.prototype.eventNames=function(){return this._eventsCount>0?Y(this._events):[]};var ne=iJ.exports;let nt=!0,ni=!0;function nn(e,t,i){let n=e.match(t);return n&&n.length>=i&&parseInt(n[i],10)}function nr(e,t,i){if(!e.RTCPeerConnection)return;let n=e.RTCPeerConnection.prototype,r=n.addEventListener;n.addEventListener=function(e,n){if(e!==t)return r.apply(this,arguments);let a=e=>{let 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,a),r.apply(this,[e,a])};let a=n.removeEventListener;n.removeEventListener=function(e,i){if(e!==t||!this._eventMap||!this._eventMap[t]||!this._eventMap[t].has(i))return a.apply(this,arguments);let 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,a.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 na(e){return"boolean"!=typeof e?Error("Argument type: "+typeof e+". Please use a boolean."):(nt=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function no(e){return"boolean"!=typeof e?Error("Argument type: "+typeof e+". Please use a boolean."):(ni=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function ns(){"object"==typeof window&&!nt&&"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}function nc(e,t){ni&&console.warn(e+" is deprecated, please use "+t+" instead.")}function nl(e){return"[object Object]"===Object.prototype.toString.call(e)}function nd(e,t,i){let n=i?"outbound-rtp":"inbound-rtp",r=new Map;if(null===t)return r;let a=[];return e.forEach(e=>{"track"===e.type&&e.trackIdentifier===t.id&&a.push(e)}),a.forEach(t=>{e.forEach(i=>{i.type===n&&i.trackId===t.id&&function e(t,i,n){!(!i||n.has(i.id))&&(n.set(i.id,i),Object.keys(i).forEach(r=>{r.endsWith("Id")?e(t,t.get(i[r]),n):r.endsWith("Ids")&&i[r].forEach(i=>{e(t,t.get(i),n)})}))}(e,i,r)})}),r}function nu(e,t){let i=e&&e.navigator;if(!i.mediaDevices)return;let n=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;let t={};return Object.keys(e).forEach(i=>{if("require"===i||"advanced"===i||"mediaSource"===i)return;let n="object"==typeof e[i]?e[i]:{ideal:e[i]};void 0!==n.exact&&"number"==typeof n.exact&&(n.min=n.max=n.exact);let 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={})[r("max",i)]=n.ideal):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){let 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 a=e.video.facingMode;a=a&&("object"==typeof a?a:{ideal:a});let o=t.version<66;if(a&&("user"===a.exact||"environment"===a.exact||"user"===a.ideal||"environment"===a.ideal)&&!(i.mediaDevices.getSupportedConstraints&&i.mediaDevices.getSupportedConstraints().facingMode&&!o)){let t;if(delete e.video.facingMode,"environment"===a.exact||"environment"===a.ideal?t=["back","rear"]:("user"===a.exact||"user"===a.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=a.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=n(e.video),ns("chrome: "+JSON.stringify(e)),r(e)})}e.video=n(e.video)}return ns("chrome: "+JSON.stringify(e)),r(e)},a=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(a(e))})})}).bind(i),i.mediaDevices.getUserMedia){let 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(a(e))))}}}function nh(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function np(e){if("object"!=typeof e||!e.RTCPeerConnection||"ontrack"in e.RTCPeerConnection.prototype)nr(e,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e));else{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});let 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};let 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};let 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)}}}function nm(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){let 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()};let 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};let n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){n.apply(this,arguments);let t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}let 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))})};let n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach(e=>{let 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)){let t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){let 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 nf(e){if(!e.RTCPeerConnection)return;let t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){let[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,[]);let r=function(e){let t={};return e.result().forEach(e=>{let 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},a=function(e){return new Map(Object.keys(e).map(t=>[t,e[t]]))};return arguments.length>=2?t.apply(this,[function(e){i(a(r(e)))},e]):new Promise((e,i)=>{t.apply(this,[function(t){e(a(r(t)))},i])}).then(i,n)}}function ng(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){let t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e});let i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){let e=i.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){let e=this;return this._pc.getStats().then(t=>nd(t,e.track,!0))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){let t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e}),nr(e,"track",e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){let e=this;return this._pc.getStats().then(t=>nd(t,e.track,!1))}}if(!("getStats"in e.RTCRtpSender.prototype&&"getStats"in e.RTCRtpReceiver.prototype))return;let t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){let e,t,i;let n=arguments[0];return(this.getSenders().forEach(t=>{t.track===n&&(e?i=!0:e=t)}),this.getReceivers().forEach(e=>(e.track===n&&(t?i=!0:t=e),e.track===n)),i||e&&t)?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):e?e.getStats():t?t.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function nv(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(e=>this._shimmedLocalStreams[e][0])};let t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){if(!i)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};let 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};let 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")});let t=this.getSenders();i.apply(this,arguments);let n=this.getSenders().filter(e=>-1===t.indexOf(e));this._shimmedLocalStreams[e.id]=[e].concat(n)};let 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)};let r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach(t=>{let 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 nb(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return nv(e);let i=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){let e=i.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map(e=>this._reverseStreams[e.id])};let 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]){let i=new e.MediaStream(t.getTracks());this._streams[t.id]=i,this._reverseStreams[i.id]=t,t=i}n.apply(this,[t])};let r=e.RTCPeerConnection.prototype.removeStream;function a(e,t){let i=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{let n=e._reverseStreams[t],r=e._streams[n.id];i=i.replace(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");let 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||{};let r=this._streams[i.id];if(r)r.addTrack(t),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{let 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){let i=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=({[t](){let e=arguments,t=arguments.length&&"function"==typeof arguments[0];return t?i.apply(this,[t=>{let i=a(this,t);e[0].apply(null,[i])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):i.apply(this,arguments).then(e=>a(this,e))}})[t]});let o=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){var e,t;let i;return arguments.length&&arguments[0].type?(arguments[0]=(e=this,t=arguments[0],i=t.sdp,Object.keys(e._reverseStreams||[]).forEach(t=>{let n=e._reverseStreams[t],r=e._streams[n.id];i=i.replace(RegExp(n.id,"g"),r.id)}),new RTCSessionDescription({type:t.type,sdp:i})),o.apply(this,arguments)):o.apply(this,arguments)};let s=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){let e=s.get.apply(this);return""===e.type?e:a(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){let t;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");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 ny(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){let i=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=({[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}})[t]})}function nk(e,t){nr(e,"negotiationneeded",e=>{let i=e.target;if(!(t.version<72)&&(!i.getConfiguration||"plan-b"!==i.getConfiguration().sdpSemantics)||"stable"===i.signalingState)return e})}var nT=Object.freeze({__proto__:null,fixNegotiationNeeded:nk,shimAddTrackRemoveTrack:nb,shimAddTrackRemoveTrackWithNative:nv,shimGetDisplayMedia:function(e,t){if((!e.navigator.mediaDevices||!("getDisplayMedia"in e.navigator.mediaDevices))&&e.navigator.mediaDevices){if("function"!=typeof t){console.error("shimGetDisplayMedia: getSourceId argument is not a function");return}e.navigator.mediaDevices.getDisplayMedia=function(i){return t(i).then(t=>{let n=i.video&&i.video.width,r=i.video&&i.video.height,a=i.video&&i.video.frameRate;return i.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:a||3}},n&&(i.video.mandatory.maxWidth=n),r&&(i.video.mandatory.maxHeight=r),e.navigator.mediaDevices.getUserMedia(i)})}}},shimGetSendersWithDtmf:nm,shimGetStats:nf,shimGetUserMedia:nu,shimMediaStream:nh,shimOnTrack:np,shimPeerConnection:ny,shimSenderReceiverGetStats:ng});function nC(e,t){let i=e&&e.navigator,n=e&&e.MediaStreamTrack;if(i.getUserMedia=function(e,t,n){nc("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),i.mediaDevices.getUserMedia(e).then(t,n)},!(t.version>55&&"autoGainControl"in i.mediaDevices.getSupportedConstraints())){let 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&&(e((i=JSON.parse(JSON.stringify(i))).audio,"autoGainControl","mozAutoGainControl"),e(i.audio,"noiseSuppression","mozNoiseSuppression")),t(i)},n&&n.prototype.getSettings){let t=n.prototype.getSettings;n.prototype.getSettings=function(){let i=t.apply(this,arguments);return e(i,"mozAutoGainControl","autoGainControl"),e(i,"mozNoiseSuppression","noiseSuppression"),i}}if(n&&n.prototype.applyConstraints){let t=n.prototype.applyConstraints;n.prototype.applyConstraints=function(i){return"audio"===this.kind&&"object"==typeof i&&(e(i=JSON.parse(JSON.stringify(i)),"autoGainControl","mozAutoGainControl"),e(i,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[i])}}}}function nS(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 nw(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){let i=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=({[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}})[t]});let 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(){let[e,r,a]=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,a)}}function nE(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender)||e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;let t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e});let i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){let 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 nP(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender)||e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;let t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e}),nr(e,"track",e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function nR(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){nc("removeStream","removeTrack"),this.getSenders().forEach(t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)})})}function nx(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function nI(e){if(!("object"==typeof e&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]);let i=(e=[...e]).length>0;i&&e.forEach(e=>{if("rid"in e&&!/^[a-z0-9]{0,16}$/i.test(e.rid))throw TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw RangeError("max_framerate must be >= 0.0")});let n=t.apply(this,arguments);if(i){let{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 nO(e){if(!("object"==typeof e&&e.RTCRtpSender))return;let t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){let e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function nM(e){if(!("object"==typeof e&&e.RTCPeerConnection))return;let 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 nD(e){if(!("object"==typeof e&&e.RTCPeerConnection))return;let 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 nN=Object.freeze({__proto__:null,shimAddTransceiver:nI,shimCreateAnswer:nD,shimCreateOffer:nM,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)){let 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:nO,shimGetUserMedia:nC,shimOnTrack:nS,shimPeerConnection:nw,shimRTCDataChannel:nx,shimReceiverGetStats:nP,shimRemoveStream:nR,shimSenderGetStats:nE});function nA(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)){let 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=Array(i>1?i-1:0),r=1;r{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=[]);let t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);let i=e.getTracks();this.getSenders().forEach(e=>{i.includes(e.track)&&this.removeTrack(e)})})}}function n_(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);let t=new Event("addstream");t.stream=e,this.dispatchEvent(t)})})}});let t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){let 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);let i=new Event("addstream");i.stream=t,e.dispatchEvent(i)})}),t.apply(e,arguments)}}}function nL(e){if("object"!=typeof e||!e.RTCPeerConnection)return;let t=e.RTCPeerConnection.prototype,i=t.createOffer,n=t.createAnswer,r=t.setLocalDescription,a=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){let 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){let i=arguments.length>=2?arguments[2]:arguments[0],r=n.apply(this,[i]);return t?(r.then(e,t),Promise.resolve()):r};let s=function(e,t,i){let n=r.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n};t.setLocalDescription=s,s=function(e,t,i){let n=a.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n},t.setRemoteDescription=s,s=function(e,t,i){let n=o.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n},t.addIceCandidate=s}function nU(e){let t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){let e=t.mediaDevices,i=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>i(nj(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=(function(e,i,n){t.mediaDevices.getUserMedia(e).then(i,n)}).bind(t))}function nj(e){return e&&void 0!==e.video?Object.assign({},e,{video:function e(t){return nl(t)?Object.keys(t).reduce(function(i,n){let r=nl(t[n]),a=r?e(t[n]):t[n],o=r&&!Object.keys(a).length;return void 0===a||o?i:Object.assign(i,{[n]:a})},{}):t}(e.video)}):e}function nF(e){if(!e.RTCPeerConnection)return;let t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,i){if(e&&e.iceServers){let t=[];for(let i=0;it.generateCertificate})}function nB(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 nV(e){let t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);let 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);let 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 nq(e){"object"==typeof e&&!e.AudioContext&&(e.AudioContext=e.webkitAudioContext)}var nQ=Object.freeze({__proto__:null,shimAudioContext:nq,shimCallbacksAPI:nL,shimConstraints:nj,shimCreateOfferLegacy:nV,shimGetUserMedia:nU,shimLocalStreamsAPI:nA,shimRTCIceServerUrls:nF,shimRemoteStreamsAPI:n_,shimTrackEventTransceiver:nB}),nW={exports:{}};!function(e){let t={};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){let i=t.splitSections(e);return i&&i[0]},t.getMediaSections=function(e){let 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;let i={foundation:(t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" "))[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;e0?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){let t;let i={},n=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e{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){let 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){let 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){let t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map(e=>parseInt(e,10))}},t.getMid=function(e){let i=t.matchPrefix(e,"a=mid:")[0];if(i)return i.substring(6)},t.parseFingerprint=function(e){let 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){let 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;let 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){let 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){let i={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=t.splitLines(e)[0].split(" ");i.profile=n[2];for(let r=3;r{i.headerExtensions.push(t.parseExtmap(e))});let 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){let i;let n=[],r=t.parseRtpParameters(e),a=-1!==r.fecMechanisms.indexOf("RED"),o=-1!==r.fecMechanisms.indexOf("ULPFEC"),s=t.matchPrefix(e,"a=ssrc:").map(e=>t.parseSsrcMedia(e)).filter(e=>"cname"===e.attribute),c=s.length>0&&s[0].ssrc,l=t.matchPrefix(e,"a=ssrc-group:FID").map(e=>e.substring(17).split(" ").map(e=>parseInt(e,10)));l.length>0&&l[0].length>1&&l[0][0]===c&&(i=l[0][1]),r.codecs.forEach(e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:c,codecPayloadType:parseInt(e.parameters.apt,10)};c&&i&&(t.rtx={ssrc:i}),n.push(t),a&&((t=JSON.parse(JSON.stringify(t))).fec={ssrc:c,mechanism:o?"red+ulpfec":"red"},n.push(t))}}),0===n.length&&c&&n.push({ssrc:c});let d=t.matchPrefix(e,"b=");return d.length&&(d=0===d[0].indexOf("b=TIAS:")?parseInt(d[0].substring(7),10):0===d[0].indexOf("b=AS:")?950*parseInt(d[0].substring(5),10)-16e3:void 0,n.forEach(e=>{e.maxBitrate=d})),n},t.parseRtcpParameters=function(e){let 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);let r=t.matchPrefix(e,"a=rtcp-rsize");i.reducedSize=r.length>0,i.compound=0===r.length;let a=t.matchPrefix(e,"a=rtcp-mux");return i.mux=a.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;let n=t.matchPrefix(e,"a=msid:");if(1===n.length)return{stream:(i=n[0].substring(7).split(" "))[0],track:i[1]};let r=t.matchPrefix(e,"a=ssrc:").map(e=>t.parseSsrcMedia(e)).filter(e=>"msid"===e.attribute);if(r.length>0)return{stream:(i=r[0].value.split(" "))[0],track:i[1]}},t.parseSctpDescription=function(e){let i;let n=t.parseMLine(e),r=t.matchPrefix(e,"a=max-message-size:");r.length>0&&(i=parseInt(r[0].substring(19),10)),isNaN(i)&&(i=65536);let a=t.matchPrefix(e,"a=sctp-port:");if(a.length>0)return{port:parseInt(a[0].substring(12),10),protocol:n.fmt,maxMessageSize:i};let o=t.matchPrefix(e,"a=sctpmap:");if(o.length>0){let e=o[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:i}}},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){return"v=0\r\no="+(n||"thisisadapterortc")+" "+(e||t.generateSessionId())+" "+(void 0!==i?i:2)+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,i){let n=t.splitLines(e);for(let e=0;e(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t))}function nJ(e){e.RTCIceCandidate&&(!e.RTCIceCandidate||!("relayProtocol"in e.RTCIceCandidate.prototype))&&nr(e,"icecandidate",e=>{if(e.candidate){let t=nz.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol=({0:"tls",1:"tcp",2:"udp"})[t.priority>>24])}return e})}function n$(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}});let i=function(e){if(!e||!e.sdp)return!1;let t=nz.splitSections(e.sdp);return t.shift(),t.some(e=>{let t=nz.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")})},n=function(e){let t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return -1;let i=parseInt(t[1],10);return i!=i?-1:i},r=function(e){let i=65536;return"firefox"===t.browser&&(i=t.version<57?-1===e?16384:0x7ffffff5:t.version<60?57===t.version?65535:65536:0x7ffffff5),i},a=function(e,i){let n=65536;"firefox"===t.browser&&57===t.version&&(n=65535);let r=nz.matchPrefix(e.sdp,"a=max-message-size:");return r.length>0?n=parseInt(r[0].substring(19),10):"firefox"===t.browser&&-1!==i&&(n=0x7ffffff5),n},o=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){let{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(i(arguments[0])){let e;let t=n(arguments[0]),i=r(t),o=a(arguments[0],t);e=0===i&&0===o?Number.POSITIVE_INFINITY:0===i||0===o?Math.max(i,o):Math.min(i,o);let s={};Object.defineProperty(s,"maxMessageSize",{get:()=>e}),this._sctp=s}return o.apply(this,arguments)}}function nY(e){if(!(e.RTCPeerConnection&&"createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){let i=e.send;e.send=function(){let n=arguments[0],r=n.length||n.size||n.byteLength;if("open"===e.readyState&&t.sctp&&r>t.sctp.maxMessageSize)throw TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return i.apply(e,arguments)}}let i=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){let e=i.apply(this,arguments);return t(e,this),e},nr(e,"datachannel",e=>(t(e.channel,e.target),e))}function nX(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;let 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=>{let i=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{let t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;let i=new Event("connectionstatechange",e);t.dispatchEvent(i)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),i.apply(this,arguments)}})}function nZ(e,t){if(!e.RTCPeerConnection||"chrome"===t.browser&&t.version>=71||"safari"===t.browser&&t.version>=605)return;let i=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){let 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 n0(e,t){if(!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype))return;let 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 n1(e,t){if(!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype))return;let 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}).type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}return e.sdp||"offer"!==e.type&&"answer"!==e.type?i.apply(this,[e]):("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then(e=>i.apply(this,[e]))})}var n5=Object.freeze({__proto__:null,removeExtmapAllowMixed:nZ,shimAddIceCandidateNullOrEmpty:n0,shimConnectionState:nX,shimMaxMessageSize:n$,shimParameterlessSetLocalDescription:n1,shimRTCIceCandidate:nH,shimRTCIceCandidateRelayProtocol:nJ,shimSendThrowTypeError:nY});!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},i=function(e){let t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;let{navigator:i}=e;return i.mozGetUserMedia?(t.browser="firefox",t.version=nn(i.userAgent,/Firefox\/(\d+)\./,1)):i.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection?(t.browser="chrome",t.version=nn(i.userAgent,/Chrom(e|ium)\/(\d+)\./,2)):e.RTCPeerConnection&&i.userAgent.match(/AppleWebKit\/(\d+)\./)?(t.browser="safari",t.version=nn(i.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype):t.browser="Not a supported browser.",t}(e),n={browserDetails:i,commonShim:n5,extractVersion:nn,disableLog:na,disableWarnings:no,sdp:nK};switch(i.browser){case"chrome":if(!nT||!ny||!t.shimChrome){ns("Chrome shim is not included in this adapter release.");break}if(null===i.version){ns("Chrome shim can not determine version, not shimming.");break}ns("adapter.js shimming chrome."),n.browserShim=nT,n0(e,i),n1(e),nu(e,i),nh(e),ny(e,i),np(e),nb(e,i),nm(e),nf(e),ng(e),nk(e,i),nH(e),nJ(e),nX(e),n$(e,i),nY(e),nZ(e,i);break;case"firefox":if(!nN||!nw||!t.shimFirefox){ns("Firefox shim is not included in this adapter release.");break}ns("adapter.js shimming firefox."),n.browserShim=nN,n0(e,i),n1(e),nC(e,i),nw(e,i),nS(e),nR(e),nE(e),nP(e),nx(e),nI(e),nO(e),nM(e),nD(e),nH(e),nX(e),n$(e,i),nY(e);break;case"safari":if(!nQ||!t.shimSafari){ns("Safari shim is not included in this adapter release.");break}ns("adapter.js shimming safari."),n.browserShim=nQ,n0(e,i),n1(e),nF(e),nV(e),nL(e),nA(e),n_(e),nB(e),nU(e),nq(e),nH(e),nJ(e),n$(e,i),nY(e),nZ(e,i);break;default:ns("Unsupported browser!")}}({window:"undefined"==typeof window?void 0:window});let n2="lk_e2ee";function n3(){return void 0!==window.RTCRtpScriptTransform}(v=X||(X={})).SetKey="setKey",v.RatchetRequest="ratchetRequest",v.KeyRatcheted="keyRatcheted",(Z||(Z={})).KeyRatcheted="keyRatcheted",(b=ee||(ee={})).ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",b.EncryptionError="encryptionError",(et||(et={})).Error="cryptorError",ne.EventEmitter;class n6 extends Error{constructor(e,t){super(t||"an error has occured"),this.code=e}}class n4 extends n6{constructor(e,t,i){super(1,e),this.status=i,this.reason=t}}class n9 extends n6{constructor(e){super(21,null!=e?e:"device is unsupported")}}class n7 extends n6{constructor(e){super(20,null!=e?e:"track is invalid")}}class n8 extends n6{constructor(e){super(10,null!=e?e:"unsupported server")}}class re extends n6{constructor(e){super(12,null!=e?e:"unexpected connection state")}}class rt extends n6{constructor(e){super(13,null!=e?e:"unable to negotiate")}}function ri(e,t,i){void 0===t&&(t=50),void 0===i&&(i={});var n,r,a,o=null!=(n=i.isImmediate)&&n,s=null!=(r=i.callback)&&r,c=i.maxWait,l=Date.now(),d=[],u=function(){var i=[].slice.call(arguments),n=this;return new Promise(function(r,u){var h=o&&void 0===a;if(void 0!==a&&clearTimeout(a),a=setTimeout(function(){if(a=void 0,l=Date.now(),!o){var t=e.apply(n,i);s&&s(t),d.forEach(function(e){return(0,e.resolve)(t)}),d=[]}},function(){if(void 0!==c){var e=Date.now()-l;if(e+t>=c)return c-e}return t}()),h){var p=e.apply(n,i);return s&&s(p),r(p)}d.push({resolve:r,reject:u})})};return u.cancel=function(e){void 0!==a&&clearTimeout(a),d.forEach(function(t){return(0,t.reject)(e)}),d=[]},u}(y=ei||(ei={})).PermissionDenied="PermissionDenied",y.NotFound="NotFound",y.DeviceInUse="DeviceInUse",y.Other="Other",(k=ei||(ei={})).getFailure=function(e){if(e&&"name"in e)return"NotFoundError"===e.name||"DevicesNotFoundError"===e.name?k.NotFound:"NotAllowedError"===e.name||"PermissionDeniedError"===e.name?k.PermissionDenied:"NotReadableError"===e.name||"TrackStartError"===e.name?k.DeviceInUse:k.Other},(T=en||(en={})).Connected="connected",T.Reconnecting="reconnecting",T.Reconnected="reconnected",T.Disconnected="disconnected",T.ConnectionStateChanged="connectionStateChanged",T.MediaDevicesChanged="mediaDevicesChanged",T.ParticipantConnected="participantConnected",T.ParticipantDisconnected="participantDisconnected",T.TrackPublished="trackPublished",T.TrackSubscribed="trackSubscribed",T.TrackSubscriptionFailed="trackSubscriptionFailed",T.TrackUnpublished="trackUnpublished",T.TrackUnsubscribed="trackUnsubscribed",T.TrackMuted="trackMuted",T.TrackUnmuted="trackUnmuted",T.LocalTrackPublished="localTrackPublished",T.LocalTrackUnpublished="localTrackUnpublished",T.LocalAudioSilenceDetected="localAudioSilenceDetected",T.ActiveSpeakersChanged="activeSpeakersChanged",T.ParticipantMetadataChanged="participantMetadataChanged",T.ParticipantNameChanged="participantNameChanged",T.RoomMetadataChanged="roomMetadataChanged",T.DataReceived="dataReceived",T.TranscriptionReceived="transcriptionReceived",T.ConnectionQualityChanged="connectionQualityChanged",T.TrackStreamStateChanged="trackStreamStateChanged",T.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",T.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",T.AudioPlaybackStatusChanged="audioPlaybackChanged",T.VideoPlaybackStatusChanged="videoPlaybackChanged",T.MediaDevicesError="mediaDevicesError",T.ParticipantPermissionsChanged="participantPermissionsChanged",T.SignalConnected="signalConnected",T.RecordingStatusChanged="recordingStatusChanged",T.ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",T.EncryptionError="encryptionError",T.DCBufferStatusChanged="dcBufferStatusChanged",T.ActiveDeviceChanged="activeDeviceChanged",(C=er||(er={})).TrackPublished="trackPublished",C.TrackSubscribed="trackSubscribed",C.TrackSubscriptionFailed="trackSubscriptionFailed",C.TrackUnpublished="trackUnpublished",C.TrackUnsubscribed="trackUnsubscribed",C.TrackMuted="trackMuted",C.TrackUnmuted="trackUnmuted",C.LocalTrackPublished="localTrackPublished",C.LocalTrackUnpublished="localTrackUnpublished",C.ParticipantMetadataChanged="participantMetadataChanged",C.ParticipantNameChanged="participantNameChanged",C.DataReceived="dataReceived",C.TranscriptionReceived="transcriptionReceived",C.IsSpeakingChanged="isSpeakingChanged",C.ConnectionQualityChanged="connectionQualityChanged",C.TrackStreamStateChanged="trackStreamStateChanged",C.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",C.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",C.MediaDevicesError="mediaDevicesError",C.AudioStreamAcquired="audioStreamAcquired",C.ParticipantPermissionsChanged="participantPermissionsChanged",C.PCTrackAdded="pcTrackAdded",(S=ea||(ea={})).TransportsCreated="transportsCreated",S.Connected="connected",S.Disconnected="disconnected",S.Resuming="resuming",S.Resumed="resumed",S.Restarting="restarting",S.Restarted="restarted",S.SignalResumed="signalResumed",S.SignalRestarted="signalRestarted",S.Closing="closing",S.MediaTrackAdded="mediaTrackAdded",S.ActiveSpeakersUpdate="activeSpeakersUpdate",S.DataPacketReceived="dataPacketReceived",S.TranscriptionReceived="transcriptionReceived",S.RTPVideoMapUpdate="rtpVideoMapUpdate",S.DCBufferStatusChanged="dcBufferStatusChanged",S.ParticipantUpdate="participantUpdate",S.RoomUpdate="roomUpdate",S.SpeakersChanged="speakersChanged",S.StreamStateChanged="streamStateChanged",S.ConnectionQualityUpdate="connectionQualityUpdate",S.SubscriptionError="subscriptionError",S.SubscriptionPermissionUpdate="subscriptionPermissionUpdate",S.RemoteMute="remoteMute",S.SubscribedQualityUpdate="subscribedQualityUpdate",S.LocalTrackUnpublished="localTrackUnpublished",S.Offline="offline",(w=eo||(eo={})).Message="message",w.Muted="muted",w.Unmuted="unmuted",w.Restarted="restarted",w.Ended="ended",w.Subscribed="subscribed",w.Unsubscribed="unsubscribed",w.UpdateSettings="updateSettings",w.UpdateSubscription="updateSubscription",w.AudioPlaybackStarted="audioPlaybackStarted",w.AudioPlaybackFailed="audioPlaybackFailed",w.AudioSilenceDetected="audioSilenceDetected",w.VisibilityChanged="visibilityChanged",w.VideoDimensionsChanged="videoDimensionsChanged",w.VideoPlaybackStarted="videoPlaybackStarted",w.VideoPlaybackFailed="videoPlaybackFailed",w.ElementAttached="elementAttached",w.ElementDetached="elementDetached",w.UpstreamPaused="upstreamPaused",w.UpstreamResumed="upstreamResumed",w.SubscriptionPermissionChanged="subscriptionPermissionChanged",w.SubscriptionStatusChanged="subscriptionStatusChanged",w.SubscriptionFailed="subscriptionFailed",w.TrackProcessorUpdate="trackProcessorUpdate",w.AudioTrackFeatureUpdate="audioTrackFeatureUpdate",w.TranscriptionReceived="transcriptionReceived",w.TimeSyncUpdate="timeSyncUpdate";let rn=/version\/(\d+(\.?_?\d+)+)/i;function rr(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1];if(void 0===e&&"undefined"==typeof navigator)return;let i=(null!=e?e:navigator.userAgent).toLowerCase();if(void 0===n||t){let e=ra.find(e=>{let{test:t}=e;return t.test(i)});n=null==e?void 0:e.describe(i)}return n}let ra=[{test:/firefox|iceweasel|fxios/i,describe:e=>({name:"Firefox",version:ro(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e),os:e.toLowerCase().includes("fxios")?"iOS":void 0,osVersion:rs(e)})},{test:/chrom|crios|crmo/i,describe:e=>({name:"Chrome",version:ro(/(?:chrome|chromium|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e),os:e.toLowerCase().includes("crios")?"iOS":void 0,osVersion:rs(e)})},{test:/safari|applewebkit/i,describe:e=>({name:"Safari",version:ro(rn,e),os:e.includes("mobile/")?"iOS":"macOS",osVersion:rs(e)})}];function ro(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=t.match(e);return n&&n.length>=i&&n[i]||""}function rs(e){return e.includes("mac os")?ro(/\(.+?(\d+_\d+(:?_\d+)?)/,e,1).replace(/_/g,"."):void 0}class rc{}rc.setTimeout=function(){return setTimeout(...arguments)},rc.setInterval=function(){return setInterval(...arguments)},rc.clearTimeout=function(){return clearTimeout(...arguments)},rc.clearInterval=function(){return clearInterval(...arguments)};class rl{constructor(e,t,i,n,r){if("object"==typeof e)this.width=e.width,this.height=e.height,this.aspectRatio=e.aspectRatio,this.encoding={maxBitrate:e.maxBitrate,maxFramerate:e.maxFramerate,priority:e.priority};else if(void 0!==t&&void 0!==i)this.width=e,this.height=t,this.aspectRatio=e/t,this.encoding={maxBitrate:i,maxFramerate:n,priority:r};else throw TypeError("Unsupported options: provide at least width, height and maxBitrate")}get resolution(){return{width:this.width,height:this.height,frameRate:this.encoding.maxFramerate,aspectRatio:this.aspectRatio}}}let rd=["vp8","h264"],ru=["vp8","h264","vp9","av1"];(E=es||(es={})).telephone={maxBitrate:12e3},E.speech={maxBitrate:2e4},E.music={maxBitrate:32e3},E.musicStereo={maxBitrate:48e3},E.musicHighQuality={maxBitrate:64e3},E.musicHighQualityStereo={maxBitrate:96e3};let rh={h90:new rl(160,90,9e4,20),h180:new rl(320,180,16e4,20),h216:new rl(384,216,18e4,20),h360:new rl(640,360,45e4,20),h540:new rl(960,540,8e5,25),h720:new rl(1280,720,17e5,30),h1080:new rl(1920,1080,3e6,30),h1440:new rl(2560,1440,5e6,30),h2160:new rl(3840,2160,8e6,30)},rp={h120:new rl(160,120,7e4,20),h180:new rl(240,180,125e3,20),h240:new rl(320,240,14e4,20),h360:new rl(480,360,33e4,20),h480:new rl(640,480,5e5,20),h540:new rl(720,540,6e5,25),h720:new rl(960,720,13e5,30),h1080:new rl(1440,1080,23e5,30),h1440:new rl(1920,1440,38e5,30)},rm={h360fps3:new rl(640,360,2e5,3,"medium"),h360fps15:new rl(640,360,4e5,15,"medium"),h720fps5:new rl(1280,720,8e5,5,"medium"),h720fps15:new rl(1280,720,15e5,15,"medium"),h720fps30:new rl(1280,720,2e6,30,"medium"),h1080fps15:new rl(1920,1080,25e5,15,"medium"),h1080fps30:new rl(1920,1080,5e6,30,"medium"),original:new rl(0,0,7e6,30,"medium")},rf=[];(P=ec||(ec={}))[P.LOW=0]="LOW",P[P.MEDIUM=1]="MEDIUM",P[P.HIGH=2]="HIGH";class rg extends ne.EventEmitter{constructor(e,t){var i;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super(),this.attachedElements=[],this.isMuted=!1,this.streamState=rg.StreamState.Active,this.isInBackground=!1,this._currentBitrate=0,this.log=iQ,this.appVisibilityChangedListener=()=>{this.backgroundTimeout&&clearTimeout(this.backgroundTimeout),"hidden"===document.visibilityState?this.backgroundTimeout=setTimeout(()=>this.handleAppVisibilityChanged(),5e3):this.handleAppVisibilityChanged()},this.log=iW(null!==(i=n.loggerName)&&void 0!==i?i:$.Track),this.loggerContextCb=n.loggerContextCb,this.setMaxListeners(100),this.kind=t,this._mediaStreamTrack=e,this._mediaStreamID=e.id,this.source=rg.Source.Unknown}get logContext(){var e;return Object.assign(Object.assign({},null===(e=this.loggerContextCb)||void 0===e?void 0:e.call(this)),rw(this))}get currentBitrate(){return this._currentBitrate}get mediaStreamTrack(){return this._mediaStreamTrack}get mediaStreamID(){return this._mediaStreamID}attach(e){let t="audio";this.kind===rg.Kind.Video&&(t="video"),0===this.attachedElements.length&&rg.Kind.Video&&this.addAppVisibilityListener(),e||("audio"===t&&(rf.forEach(t=>{null!==t.parentElement||e||(e=t)}),e&&rf.splice(rf.indexOf(e),1)),e||(e=document.createElement(t))),this.attachedElements.includes(e)||this.attachedElements.push(e),rv(this.mediaStreamTrack,e);let i=e.srcObject.getTracks(),n=i.some(e=>"audio"===e.kind);return e.play().then(()=>{this.emit(n?eo.AudioPlaybackStarted:eo.VideoPlaybackStarted)}).catch(t=>{"NotAllowedError"===t.name?this.emit(n?eo.AudioPlaybackFailed:eo.VideoPlaybackFailed,t):"AbortError"===t.name?iQ.debug("".concat(n?"audio":"video"," playback aborted, likely due to new play request")):iQ.warn("could not playback ".concat(n?"audio":"video"),t),n&&e&&i.some(e=>"video"===e.kind)&&"NotAllowedError"===t.name&&(e.muted=!0,e.play().catch(()=>{}))}),this.emit(eo.ElementAttached,e),e}detach(e){try{if(e){rb(this.mediaStreamTrack,e);let t=this.attachedElements.indexOf(e);return t>=0&&(this.attachedElements.splice(t,1),this.recycleElement(e),this.emit(eo.ElementDetached,e)),e}let t=[];return this.attachedElements.forEach(e=>{rb(this.mediaStreamTrack,e),t.push(e),this.recycleElement(e),this.emit(eo.ElementDetached,e)}),this.attachedElements=[],t}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),this.timeSyncHandle&&cancelAnimationFrame(this.timeSyncHandle)}updateLoggerOptions(e){e.loggerName&&(this.log=iW(e.loggerName)),e.loggerContextCb&&(this.loggerContextCb=e.loggerContextCb)}recycleElement(e){if(e instanceof HTMLAudioElement){let t=!0;e.pause(),rf.forEach(e=>{e.parentElement||(t=!1)}),t&&rf.push(e)}}handleAppVisibilityChanged(){return iK(this,void 0,void 0,function*(){this.isInBackground="hidden"===document.visibilityState,this.isInBackground||this.kind!==rg.Kind.Video||setTimeout(()=>this.attachedElements.forEach(e=>e.play().catch(()=>{})),0)})}addAppVisibilityListener(){rA()?(this.isInBackground="hidden"===document.visibilityState,document.addEventListener("visibilitychange",this.appVisibilityChangedListener)):this.isInBackground=!1}removeAppVisibilityListener(){rA()&&document.removeEventListener("visibilitychange",this.appVisibilityChangedListener)}}function rv(e,t){let i,n;i=t.srcObject instanceof MediaStream?t.srcObject:new MediaStream,(n="audio"===e.kind?i.getAudioTracks():i.getVideoTracks()).includes(e)||(n.forEach(e=>{i.removeTrack(e)}),i.addTrack(e)),rD()&&t instanceof HTMLVideoElement||(t.autoplay=!0),t.muted=0===i.getAudioTracks().length,t instanceof HTMLVideoElement&&(t.playsInline=!0),t.srcObject!==i&&(t.srcObject=i,(rD()||rM())&&t instanceof HTMLVideoElement&&setTimeout(()=>{t.srcObject=i,t.play().catch(()=>{})},0))}function rb(e,t){if(t.srcObject instanceof MediaStream){let i=t.srcObject;i.removeTrack(e),i.getTracks().length>0?t.srcObject=i:t.srcObject=null}}function ry(e,t,i){var n;let r=null!==(n=void 0===e?void 0:"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e)))&&void 0!==n?n:{};return!0===r.audio&&(r.audio={}),!0===r.video&&(r.video={}),r.audio&&rk(r.audio,t),r.video&&rk(r.video,i),r}function rk(e,t){return Object.keys(t).forEach(i=>{void 0===e[i]&&(e[i]=t[i])}),e}function rT(e){let t={};if(e.video){if("object"==typeof e.video){let i={},n=e.video;Object.keys(n).forEach(e=>{"resolution"===e?rk(i,n.resolution):i[e]=n[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 rC(){let e="undefined"!=typeof window&&(window.AudioContext||window.webkitAudioContext);if(e)return new e({latencyHint:"interactive"})}function rS(e){let t=e.split("/")[1].toLowerCase();if(!ru.includes(t))throw Error("Video codec not supported: ".concat(t));return t}function rw(e){return e instanceof rg?{trackID:e.sid,source:e.source,muted:e.isMuted,enabled:e.mediaStreamTrack.enabled,kind:e.kind,streamID:e.mediaStreamID,streamTrackID:e.mediaStreamTrack.id}:{trackID:e.trackSid,enabled:e.isEnabled,muted:e.isMuted,trackInfo:Object.assign({mimeType:e.mimeType,name:e.trackName,encrypted:e.isEncrypted,kind:e.kind,source:e.source},e.track?rw(e.track):{})}}(x=a=(R=rg||(rg={})).Kind||(R.Kind={})).Audio="audio",x.Video="video",x.Unknown="unknown",(I=o=R.Source||(R.Source={})).Camera="camera",I.Microphone="microphone",I.ScreenShare="screen_share",I.ScreenShareAudio="screen_share_audio",I.Unknown="unknown",(O=s=R.StreamState||(R.StreamState={})).Active="active",O.Paused="paused",O.Unknown="unknown",R.kindToProto=function(e){switch(e){case a.Audio:return tC.AUDIO;case a.Video:return tC.VIDEO;default:return tC.DATA}},R.kindFromProto=function(e){switch(e){case tC.AUDIO:return a.Audio;case tC.VIDEO:return a.Video;default:return a.Unknown}},R.sourceToProto=function(e){switch(e){case o.Camera:return tS.CAMERA;case o.Microphone:return tS.MICROPHONE;case o.ScreenShare:return tS.SCREEN_SHARE;case o.ScreenShareAudio:return tS.SCREEN_SHARE_AUDIO;default:return tS.UNKNOWN}},R.sourceFromProto=function(e){switch(e){case tS.CAMERA:return o.Camera;case tS.MICROPHONE:return o.Microphone;case tS.SCREEN_SHARE:return o.ScreenShare;case tS.SCREEN_SHARE_AUDIO:return o.ScreenShareAudio;default:return o.Unknown}},R.streamStateFromProto=function(e){switch(e){case t6.ACTIVE:return s.Active;case t6.PAUSED:return s.Paused;default:return s.Unknown}};let rE="https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension";function rP(e){return iK(this,void 0,void 0,function*(){return new Promise(t=>rc.setTimeout(t,e))})}function rR(){return"addTransceiver"in RTCPeerConnection.prototype}function rx(){return"addTrack"in RTCPeerConnection.prototype}function rI(e){return"av1"===e||"vp9"===e}function rO(e){return!!document&&(e||(e=document.createElement("audio")),"setSinkId"in e)}function rM(){var e;return(null===(e=rr())||void 0===e?void 0:e.name)==="Firefox"}function rD(){var e;return(null===(e=rr())||void 0===e?void 0:e.name)==="Safari"}function rN(){var e,t;return!!rA()&&(null!==(t=null===(e=navigator.userAgentData)||void 0===e?void 0:e.mobile)&&void 0!==t?t:/Tablet|iPad|Mobile|Android|BlackBerry/.test(navigator.userAgent))}function rA(){return"undefined"!=typeof document}function r_(){return"ReactNative"==navigator.product}function rL(e){return e.hostname.endsWith(".livekit.cloud")||e.hostname.endsWith(".livekit.run")}function rU(){if(global&&global.LiveKitReactNativeGlobal)return global.LiveKitReactNativeGlobal}function rj(){if(!r_())return;let e=rU();if(e)return e.platform}function rF(){if(rA())return window.devicePixelRatio;if(r_()){let e=rU();if(e)return e.devicePixelRatio}return 1}function rB(e,t){let i=e.split("."),n=t.split("."),r=Math.min(i.length,n.length);for(let e=0;ea)return 1;if(t(rQ||(rQ=new ResizeObserver(rV)),rQ),rG=null,rz=()=>(rG||(rG=new IntersectionObserver(rq,{root:null,rootMargin:"0px"})),rG);function rK(){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],r=document.createElement("canvas");r.width=e,r.height=t;let a=r.getContext("2d");null==a||a.fillRect(0,0,r.width,r.height),n&&a&&(a.beginPath(),a.arc(e/2,t/2,50,0,2*Math.PI,!0),a.closePath(),a.fillStyle="grey",a.fill());let[o]=r.captureStream().getTracks();if(!o)throw Error("Could not get empty media stream video track");return o.enabled=i,o}function rH(){if(!r){let e=new AudioContext,t=e.createOscillator(),i=e.createGain();i.gain.setValueAtTime(0,0);let n=e.createMediaStreamDestination();if(t.connect(i),i.connect(n),t.start(),[r]=n.stream.getAudioTracks(),!r)throw Error("Could not get empty media stream audio track");r.enabled=!1}return r.clone()}class rJ{constructor(e,t){this.onFinally=t,this.promise=new Promise((t,i)=>iK(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 r${constructor(){this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){let e;this._locks+=1;let t=new Promise(t=>e=()=>{this._locks-=1,t()}),i=this._locking.then(()=>e);return this._locking=this._locking.then(()=>t),i}}function rY(e){if("string"==typeof e||"number"==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 rX(e){return e.startsWith("ws")?e.replace(/^(ws)/,"http"):e}let rZ="default";class r0{static getInstance(){return void 0===this.instance&&(this.instance=new r0),this.instance}getDevices(e){return iK(this,arguments,void 0,function(e){var t=this;let i=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return function*(){var n;if((null===(n=r0.userMediaPromiseMap)||void 0===n?void 0:n.size)>0){iQ.debug("awaiting getUserMedia promise");try{e?yield r0.userMediaPromiseMap.get(e):yield Promise.all(r0.userMediaPromiseMap.values())}catch(e){iQ.warn("error waiting for media permissons")}}let r=yield navigator.mediaDevices.enumerateDevices();if(i&&!(rD()&&t.hasDeviceInUse(e))&&(0===r.length||r.some(t=>{let i=""===t.label,n=!e||t.kind===e;return i&&n}))){let t=yield navigator.mediaDevices.getUserMedia({video:"audioinput"!==e&&"audiooutput"!==e,audio:"videoinput"!==e});r=yield navigator.mediaDevices.enumerateDevices(),t.getTracks().forEach(e=>{e.stop()})}return e&&(r=r.filter(t=>t.kind===e)),r}()})}normalizeDeviceId(e,t,i){return iK(this,void 0,void 0,function*(){if(t!==rZ)return t;let n=yield this.getDevices(e),r=new Map(n.map(e=>[e.groupId,0]));n.forEach(e=>{var t;return r.set(e.groupId,(null!==(t=r.get(e.groupId))&&void 0!==t?t:0)+1)});let a=n.find(e=>{var t;return(i===e.groupId||(null!==(t=r.get(e.groupId))&&void 0!==t?t:0)>1)&&e.deviceId!==rZ});return null==a?void 0:a.deviceId})}hasDeviceInUse(e){return e?r0.userMediaPromiseMap.has(e):r0.userMediaPromiseMap.size>0}}r0.mediaDeviceKinds=["audioinput","audiooutput","videoinput"],r0.userMediaPromiseMap=new Map;class r1 extends rg{get sender(){return this._sender}set sender(e){this._sender=e}get constraints(){return this._constraints}constructor(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4?arguments[4]:void 0;super(e,t,r),this.manuallyStopped=!1,this._isUpstreamPaused=!1,this.handleTrackMuteEvent=()=>this.debouncedTrackMuteHandler().catch(()=>this.log.debug("track mute bounce got cancelled by an unmute event",this.logContext)),this.debouncedTrackMuteHandler=ri(()=>iK(this,void 0,void 0,function*(){yield this.pauseUpstream()}),5e3),this.handleTrackUnmuteEvent=()=>iK(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(eo.Ended,this)},this.reacquireTrack=!1,this.providedByUser=n,this.muteLock=new r$,this.pauseUpstreamLock=new r$,this.processorLock=new r$,this.restartLock=new r$,this.setMediaStreamTrack(e,!0),this._constraints=e.getConstraints(),i&&(this._constraints=i)}get id(){return this._mediaStreamTrack.id}get dimensions(){if(this.kind!==rg.Kind.Video)return;let{width:e,height:t}=this._mediaStreamTrack.getSettings();if(e&&t)return{width:e,height:t}}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 iK(this,void 0,void 0,function*(){let i;if(e!==this._mediaStreamTrack||t){if(this._mediaStreamTrack&&(this.attachedElements.forEach(e=>{rb(this._mediaStreamTrack,e)}),this.debouncedTrackMuteHandler.cancel("new-track"),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent)),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){let t=yield this.processorLock.lock();try{if(this.log.debug("restarting processor",this.logContext),"unknown"===this.kind)throw TypeError("cannot set processor on track of unknown kind");this.processorElement&&(rv(e,this.processorElement),this.processorElement.muted=!0),yield this.processor.restart({track:e,kind:this.kind,element:this.processorElement}),i=this.processor.processedTrack}finally{t()}}this.sender&&(yield this.sender.replaceTrack(null!=i?i:e)),this.providedByUser||this._mediaStreamTrack===e||this._mediaStreamTrack.stop(),this._mediaStreamTrack=e,e&&(this._mediaStreamTrack.enabled=!this.isMuted,yield this.resumeUpstream(),this.attachedElements.forEach(t=>{rv(null!=i?i:e,t)}))}})}waitForDimensions(){return iK(this,arguments,void 0,function(){var e=this;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3;return function*(){var i;if(e.kind===rg.Kind.Audio)throw Error("cannot get dimensions for audio tracks");(null===(i=rr())||void 0===i?void 0:i.os)==="iOS"&&(yield rP(10));let n=Date.now();for(;Date.now()-n{rb(this.mediaStreamTrack,e)}),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.stop();let i=(yield navigator.mediaDevices.getUserMedia(t)).getTracks()[0];return i.addEventListener("ended",this.handleEnded),this.log.debug("re-acquired MediaStreamTrack",this.logContext),yield this.setMediaStreamTrack(i),this._constraints=e,this.emit(eo.Restarted,this),this.manuallyStopped&&(this.log.warn("track was stopped during a restart, stopping restarted track",this.logContext),this.stop()),this}finally{t()}})}setTrackMuted(e){this.log.debug("setting ".concat(this.kind," track ").concat(e?"muted":"unmuted"),this.logContext),(this.isMuted!==e||this._mediaStreamTrack.enabled===e)&&(this.isMuted=e,this._mediaStreamTrack.enabled=!e,this.emit(e?eo.Muted:eo.Unmuted,this))}get needsReAcquisition(){return"live"!==this._mediaStreamTrack.readyState||this._mediaStreamTrack.muted||!this._mediaStreamTrack.enabled||this.reacquireTrack}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return iK(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),!rN()||(this.log.debug("visibility changed, is in Background: ".concat(this.isInBackground),this.logContext),this.isInBackground||!this.needsReAcquisition||this.isUserProvided||this.isMuted||(this.log.debug("track needs to be reacquired, restarting ".concat(this.source),this.logContext),yield this.restart(),this.reacquireTrack=!1))})}stop(){var e;this.manuallyStopped=!0,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 iK(this,void 0,void 0,function*(){let e=yield this.pauseUpstreamLock.lock();try{if(!0===this._isUpstreamPaused)return;if(!this.sender){this.log.warn("unable to pause upstream for an unpublished track",this.logContext);return}this._isUpstreamPaused=!0,this.emit(eo.UpstreamPaused,this);let e=rr();if((null==e?void 0:e.name)==="Safari"&&0>rB(e.version,"12.0"))throw new n9("pauseUpstream is not supported on Safari < 12.");yield this.sender.replaceTrack(null)}finally{e()}})}resumeUpstream(){return iK(this,void 0,void 0,function*(){let e=yield this.pauseUpstreamLock.lock();try{if(!1===this._isUpstreamPaused)return;if(!this.sender){this.log.warn("unable to resume upstream for an unpublished track",this.logContext);return}this._isUpstreamPaused=!1,this.emit(eo.UpstreamResumed,this),yield this.sender.replaceTrack(this._mediaStreamTrack)}finally{e()}})}getRTCStatsReport(){return iK(this,void 0,void 0,function*(){var e;if(null===(e=this.sender)||void 0===e?void 0:e.getStats)return yield this.sender.getStats()})}setProcessor(e){return iK(this,arguments,void 0,function(e){var t=this;let i=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return function*(){var n,r;let a=yield t.processorLock.lock();try{t.log.debug("setting up processor",t.logContext),t.processorElement=null!==(n=t.processorElement)&&void 0!==n?n:document.createElement(t.kind);let a={kind:t.kind,track:t._mediaStreamTrack,element:t.processorElement,audioContext:t.audioContext};if(yield e.init(a),t.processor&&(yield t.stopProcessor()),"unknown"===t.kind)throw TypeError("cannot set processor on track of unknown kind");if(rv(t._mediaStreamTrack,t.processorElement),t.processorElement.muted=!0,t.processorElement.play().catch(e=>t.log.error("failed to play processor element",Object.assign(Object.assign({},t.logContext),{error:e}))),t.processor=e,t.processor.processedTrack){for(let e of t.attachedElements)e!==t.processorElement&&i&&(rb(t._mediaStreamTrack,e),rv(t.processor.processedTrack,e));yield null===(r=t.sender)||void 0===r?void 0:r.replaceTrack(t.processor.processedTrack)}t.emit(eo.TrackProcessorUpdate,t.processor)}finally{a()}}()})}getProcessor(){return this.processor}stopProcessor(){return iK(this,void 0,void 0,function*(){var e,t;this.processor&&(this.log.debug("stopping processor",this.logContext),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._mediaStreamTrack.applyConstraints(this._constraints),yield this.setMediaStreamTrack(this._mediaStreamTrack,!0),this.emit(eo.TrackProcessorUpdate))})}}class r5 extends ne.EventEmitter{constructor(e){super(),this.onWorkerMessage=e=>{var t,i;let{kind:n,data:r}=e.data;switch(n){case"error":iQ.error(r.error.message),this.emit(ee.EncryptionError,r.error);break;case"initAck":r.enabled&&this.keyProvider.getKeys().forEach(e=>{this.postKey(e)});break;case"enable":if(this.encryptionEnabled!==r.enabled&&r.participantIdentity===(null===(t=this.room)||void 0===t?void 0:t.localParticipant.identity))this.emit(ee.ParticipantEncryptionStatusChanged,r.enabled,this.room.localParticipant),this.encryptionEnabled=r.enabled;else if(r.participantIdentity){let e=null===(i=this.room)||void 0===i?void 0:i.getParticipantByIdentity(r.participantIdentity);if(!e)throw TypeError("couldn't set encryption status, participant not found".concat(r.participantIdentity));this.emit(ee.ParticipantEncryptionStatusChanged,r.enabled,e)}this.encryptionEnabled&&this.keyProvider.getKeys().forEach(e=>{this.postKey(e)});break;case"ratchetKey":this.keyProvider.emit(X.KeyRatcheted,r.material,r.keyIndex)}},this.onWorkerError=e=>{iQ.error("e2ee worker encountered an error:",{error:e.error}),this.emit(ee.EncryptionError,e.error)},this.keyProvider=e.keyProvider,this.worker=e.worker,this.encryptionEnabled=!1}setup(e){if(!(void 0!==window.RTCRtpSender&&void 0!==window.RTCRtpSender.prototype.createEncodedStreams||n3()))throw new n9("tried to setup end-to-end encryption on an unsupported browser");if(iQ.info("setting up e2ee"),e!==this.room){this.room=e,this.setupEventListeners(e,this.keyProvider);let t={kind:"init",data:{keyProviderOptions:this.keyProvider.getOptions(),loglevel:iG.getLevel()}};this.worker&&(iQ.info("initializing worker",{worker:this.worker}),this.worker.onmessage=this.onWorkerMessage,this.worker.onerror=this.onWorkerError,this.worker.postMessage(t))}}setParticipantCryptorEnabled(e,t){iQ.debug("set e2ee to ".concat(e," for participant ").concat(t)),this.postEnable(e,t)}setSifTrailer(e){e&&0!==e.length?this.postSifTrailer(e):iQ.warn("ignoring server sent trailer as it's empty")}setupEngine(e){e.on(ea.RTPVideoMapUpdate,e=>{this.postRTPMap(e)})}setupEventListeners(e,t){e.on(en.TrackPublished,(e,t)=>this.setParticipantCryptorEnabled(e.trackInfo.encryption!==tU.NONE,t.identity)),e.on(en.ConnectionStateChanged,t=>{t===em.Connected&&e.remoteParticipants.forEach(e=>{e.trackPublications.forEach(t=>{this.setParticipantCryptorEnabled(t.trackInfo.encryption!==tU.NONE,e.identity)})})}).on(en.TrackUnsubscribed,(e,t,i)=>{var n;let r={kind:"removeTransform",data:{participantIdentity:i.identity,trackId:e.mediaStreamID}};null===(n=this.worker)||void 0===n||n.postMessage(r)}).on(en.TrackSubscribed,(e,t,i)=>{this.setupE2EEReceiver(e,i.identity,t.trackInfo)}).on(en.SignalConnected,()=>{if(!this.room)throw TypeError("expected room to be present on signal connect");this.setParticipantCryptorEnabled(this.room.localParticipant.isE2EEEnabled,this.room.localParticipant.identity),t.getKeys().forEach(e=>{this.postKey(e)})}),e.localParticipant.on(er.LocalTrackPublished,e=>iK(this,void 0,void 0,function*(){this.setupE2EESender(e.track,e.track.sender)})),t.on(X.SetKey,e=>this.postKey(e)).on(X.RatchetRequest,(e,t)=>this.postRatchetRequest(e,t))}postRatchetRequest(e,t){if(!this.worker)throw Error("could not ratchet key, worker is missing");this.worker.postMessage({kind:"ratchetRequest",data:{participantIdentity:e,keyIndex:t}})}postKey(e){var t;let{key:i,participantIdentity:n,keyIndex:r}=e;if(!this.worker)throw Error("could not set key, worker is missing");let a={kind:"setKey",data:{participantIdentity:n,isPublisher:n===(null===(t=this.room)||void 0===t?void 0:t.localParticipant.identity),key:i,keyIndex:r}};this.worker.postMessage(a)}postEnable(e,t){if(this.worker)this.worker.postMessage({kind:"enable",data:{enabled:e,participantIdentity:t}});else throw ReferenceError("failed to enable e2ee, worker is not ready")}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");let 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");this.worker.postMessage({kind:"setSifTrailer",data:{trailer:e}})}setupE2EEReceiver(e,t,i){if(e.receiver){if(!(null==i?void 0:i.mimeType)||""===i.mimeType)throw TypeError("MimeType missing from trackInfo, cannot set up E2EE cryptor");this.handleReceiver(e.receiver,e.mediaStreamID,t,"video"===e.kind?rS(i.mimeType):void 0)}}setupE2EESender(e,t){if(!(e instanceof r1)||!t){t||iQ.warn("early return because sender is not ready");return}this.handleSender(t,e.mediaStreamID,void 0)}handleReceiver(e,t,i,n){return iK(this,void 0,void 0,function*(){if(this.worker){if(n3())e.transform=new RTCRtpScriptTransform(this.worker,{kind:"decode",participantIdentity:i,trackId:t,codec:n});else{if(n2 in e&&n){this.worker.postMessage({kind:"updateCodec",data:{trackId:t,codec:n,participantIdentity:i}});return}let r=e.writableStream,a=e.readableStream;if(!r||!a){let t=e.createEncodedStreams();e.writableStream=t.writable,r=t.writable,e.readableStream=t.readable,a=t.readable}let o={kind:"decode",data:{readableStream:a,writableStream:r,trackId:t,codec:n,participantIdentity:i}};this.worker.postMessage(o,[a,r])}e[n2]=!0}})}handleSender(e,t,i){var n;if(!(n2 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(n3()){iQ.info("initialize script transform");let n={kind:"encode",participantIdentity:this.room.localParticipant.identity,trackId:t,codec:i};e.transform=new RTCRtpScriptTransform(this.worker,n)}else{iQ.info("initialize encoded streams");let 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[n2]=!0}}}(M=el||(el={}))[M.WAITING=0]="WAITING",M[M.RUNNING=1]="RUNNING",M[M.COMPLETED=2]="COMPLETED";class r2{constructor(){this.pendingTasks=new Map,this.taskMutex=new r$,this.nextTaskIndex=0}run(e){return iK(this,void 0,void 0,function*(){let t={id:this.nextTaskIndex++,enqueuedAt:Date.now(),status:el.WAITING};this.pendingTasks.set(t.id,t);let i=yield this.taskMutex.lock();try{return t.executedAt=Date.now(),t.status=el.RUNNING,yield e()}finally{t.status=el.COMPLETED,this.pendingTasks.delete(t.id),i()}})}flush(){return iK(this,void 0,void 0,function*(){return this.run(()=>iK(this,void 0,void 0,function*(){}))})}snapshot(){return Array.from(this.pendingTasks.values())}}let r3=["syncState","trickle","offer","answer","simulate","leave"];(D=ed||(ed={}))[D.CONNECTING=0]="CONNECTING",D[D.CONNECTED=1]="CONNECTED",D[D.RECONNECTING=2]="RECONNECTING",D[D.DISCONNECTING=3]="DISCONNECTING",D[D.DISCONNECTED=4]="DISCONNECTED";class r6{get currentState(){return this.state}get isDisconnected(){return this.state===ed.DISCONNECTING||this.state===ed.DISCONNECTED}get isEstablishingConnection(){return this.state===ed.CONNECTING||this.state===ed.RECONNECTING}constructor(){var e;let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.rtt=0,this.state=ed.DISCONNECTED,this.log=iQ,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.log=iW(null!==(e=i.loggerName)&&void 0!==e?e:$.Signal),this.loggerContextCb=i.loggerContextCb,this.useJSON=t,this.requestQueue=new r2,this.queuedRequests=[],this.closingLock=new r$,this.connectionLock=new r$,this.state=ed.DISCONNECTED}get logContext(){var e,t;return null!==(t=null===(e=this.loggerContextCb)||void 0===e?void 0:e.call(this))&&void 0!==t?t:{}}join(e,t,i,n){return iK(this,void 0,void 0,function*(){return this.state=ed.CONNECTING,this.options=i,yield this.connect(e,t,i,n)})}reconnect(e,t,i,n){return iK(this,void 0,void 0,function*(){if(!this.options){this.log.warn("attempted to reconnect without signal options being set, ignoring",this.logContext);return}return this.state=ed.RECONNECTING,this.clearPingInterval(),yield this.connect(e,t,Object.assign(Object.assign({},this.options),{reconnect:!0,sid:i,reconnectReason:n}))})}connect(e,t,i,n){var r;this.connectOptions=i,e=(e=(r=e).startsWith("http")?r.replace(/^(http)/,"ws"):r).replace(/\/$/,"")+"/rtc";let a=function(e,t,i){var n;let r=new URLSearchParams;return 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",r_()?"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),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),"?".concat(r.toString())}(t,function(){var e;let t=new tX({sdk:tZ.JS,protocol:13,version:"2.1.5"});return r_()&&(t.os=null!==(e=rj())&&void 0!==e?e:""),t}(),i);return new Promise((t,r)=>iK(this,void 0,void 0,function*(){let o=yield this.connectionLock.lock();try{let o=()=>iK(this,void 0,void 0,function*(){this.close(),clearTimeout(s),r(new n4("room connection has been cancelled (signal)"))}),s=setTimeout(()=>{this.close(),r(new n4("room connection has timed out (signal)"))},i.websocketTimeout);(null==n?void 0:n.aborted)&&o(),null==n||n.addEventListener("abort",o),this.log.debug("connecting to ".concat(e+a),this.logContext),this.ws&&(yield this.close(!1)),this.ws=new WebSocket(e+a),this.ws.binaryType="arraybuffer",this.ws.onopen=()=>{clearTimeout(s)},this.ws.onerror=t=>iK(this,void 0,void 0,function*(){if(this.state!==ed.CONNECTED){this.state=ed.DISCONNECTED,clearTimeout(s);try{let t=yield fetch("http".concat(e.substring(2),"/validate").concat(a));if(t.status.toFixed(0).startsWith("4")){let e=yield t.text();r(new n4(e,0,t.status))}else r(new n4("Internal error",2,t.status))}catch(e){r(new n4("server was not reachable",1))}return}this.handleWSError(t)}),this.ws.onmessage=e=>iK(this,void 0,void 0,function*(){var a,s,c;let l;if("string"==typeof e.data){let t=JSON.parse(e.data);l=t7.fromJson(t,{ignoreUnknownFields:!0})}else if(e.data instanceof ArrayBuffer)l=t7.fromBinary(new Uint8Array(e.data));else{this.log.error("could not decode websocket message: ".concat(typeof e.data),this.logContext);return}if(this.state!==ed.CONNECTED){let e=!1;if((null===(a=l.message)||void 0===a?void 0:a.case)==="join"?(this.state=ed.CONNECTED,null==n||n.removeEventListener("abort",o),this.pingTimeoutDuration=l.message.value.pingTimeout,this.pingIntervalDuration=l.message.value.pingInterval,this.pingTimeoutDuration&&this.pingTimeoutDuration>0&&(this.log.debug("ping config",Object.assign(Object.assign({},this.logContext),{timeout:this.pingTimeoutDuration,interval:this.pingIntervalDuration})),this.startPingInterval()),t(l.message.value)):this.state===ed.RECONNECTING&&"leave"!==l.message.case?(this.state=ed.CONNECTED,null==n||n.removeEventListener("abort",o),this.startPingInterval(),(null===(s=l.message)||void 0===s?void 0:s.case)==="reconnect"?t(l.message.value):(this.log.debug("declaring signal reconnected without reconnect response received",this.logContext),t(void 0),e=!0)):this.isEstablishingConnection&&"leave"===l.message.case?r(new n4("Received leave request while trying to (re)connect",4)):i.reconnect||r(new n4("did not receive join response, got ".concat(null===(c=l.message)||void 0===c?void 0:c.case," instead"))),!e)return}this.signalLatency&&(yield rP(this.signalLatency)),this.handleSignalResponse(l)}),this.ws.onclose=e=>{this.isEstablishingConnection&&r(new n4("Websocket got closed during a (re)connection attempt")),this.log.warn("websocket closed",Object.assign(Object.assign({},this.logContext),{reason:e.reason,code:e.code,wasClean:e.wasClean,state:this.state})),this.handleOnClose(e.reason)}}finally{o()}}))}close(){return iK(this,arguments,void 0,function(){var e=this;let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0];return function*(){let i=yield e.closingLock.lock();try{if(t&&(e.state=ed.DISCONNECTING),e.ws){e.ws.onmessage=null,e.ws.onopen=null,e.ws.onclose=null;let t=new Promise(t=>{e.ws?e.ws.onclose=()=>{t()}:t()});e.ws.readyState1&&void 0!==arguments[1]&&arguments[1];return function*(){if(!i&&!function(e){let t=r3.indexOf(e.case)>=0;return iQ.trace("request allowed to bypass queue:",{canPass:t,req:e}),t}(e)&&t.state===ed.RECONNECTING){t.queuedRequests.push(()=>iK(t,void 0,void 0,function*(){yield this.sendRequest(e,!0)}));return}if(i||(yield t.requestQueue.flush()),t.signalLatency&&(yield rP(t.signalLatency)),!t.ws||t.ws.readyState!==t.ws.OPEN){t.log.error("cannot send signal request before connected, type: ".concat(null==e?void 0:e.case),t.logContext);return}let n=new t9({message:e});try{t.useJSON?t.ws.send(n.toJsonString()):t.ws.send(n.toBinary())}catch(e){t.log.error("error sending signal message",Object.assign(Object.assign({},t.logContext),{error:e}))}}()})}handleSignalResponse(e){var t,i;let n=e.message;if(void 0==n){this.log.debug("received unsupported message",this.logContext);return}let r=!1;if("answer"===n.case){let e=r4(n.value);this.onAnswer&&this.onAnswer(e)}else if("offer"===n.case){let e=r4(n.value);this.onOffer&&this.onOffer(e)}else if("trickle"===n.case){let 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||("pongResp"===n.case?(this.rtt=Date.now()-Number.parseInt(n.value.lastPingTimestamp.toString()),this.resetPingTimeout(),r=!0):this.log.debug("unsupported message",Object.assign(Object.assign({},this.logContext),{msgCase:n.case})));r||this.resetPingTimeout()}setReconnected(){for(;this.queuedRequests.length>0;){let e=this.queuedRequests.shift();e&&this.requestQueue.run(e)}}handleOnClose(e){return iK(this,void 0,void 0,function*(){if(this.state===ed.DISCONNECTED)return;let t=this.onClose;yield this.close(),this.log.debug("websocket connection closed: ".concat(e),Object.assign(Object.assign({},this.logContext),{reason:e})),t&&t(e)})}handleWSError(e){this.log.error("websocket error",Object.assign(Object.assign({},this.logContext),{error:e}))}resetPingTimeout(){if(this.clearPingTimeout(),!this.pingTimeoutDuration){this.log.warn("ping timeout duration not set",this.logContext);return}this.pingTimeout=rc.setTimeout(()=>{this.log.warn("ping timeout triggered. last pong received at: ".concat(new Date(Date.now()-1e3*this.pingTimeoutDuration).toUTCString()),this.logContext),this.handleOnClose("ping timeout")},1e3*this.pingTimeoutDuration)}clearPingTimeout(){this.pingTimeout&&rc.clearTimeout(this.pingTimeout)}startPingInterval(){if(this.clearPingInterval(),this.resetPingTimeout(),!this.pingIntervalDuration){this.log.warn("ping interval duration not set",this.logContext);return}this.log.debug("start ping interval",this.logContext),this.pingInterval=rc.setInterval(()=>{this.sendPing()},1e3*this.pingIntervalDuration)}clearPingInterval(){this.log.debug("clearing ping interval",this.logContext),this.clearPingTimeout(),this.pingInterval&&rc.clearInterval(this.pingInterval)}}function r4(e){let t={type:"offer",sdp:e.sdp};switch(e.type){case"answer":case"offer":case"pranswer":case"rollback":t.type=e.type}return t}function r9(e){return new ic({sdp:e.sdp,type:e.type})}var r7={},r8={exports:{}},ae=r8.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")+(null!=e.tcptype?" tcptype %s":"%v"),null!=e.generation&&(t+=" generation %d"),t+=(null!=e["network-id"]?" network-id %d":"%v")+(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: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: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")+(null!=e.mediaClockValue?"=%s":"")+(null!=e.rateNumerator?" rate=%s":"")+(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(ae).forEach(function(e){ae[e].forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})});var at=r8.exports;N=function(e){return String(Number(e))===e?Number(e):e},A=function(e,t,i,n){if(n&&!i)t[n]=N(e[1]);else for(var r=0;r1&&(e[i[0]]=void 0),e},r7.parseParams=function(e){return e.split(/;\s?/).reduce(U,{})},r7.parseFmtpConfig=r7.parseParams,r7.parsePayloads=function(e){return e.toString().split(" ").map(Number)},r7.parseRemoteCandidates=function(e){for(var t=[],i=e.split(" ").map(N),n=0;n=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""}})},ar=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;r1&&void 0!==arguments[1]?arguments[1]:{};super(),this.log=iQ,this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate=!1,this.trackBitrates=[],this.remoteStereoMids=[],this.remoteNackMids=[],this.negotiate=ri(e=>iK(this,void 0,void 0,function*(){this.emit(al.NegotiationStarted);try{yield this.createAndSendOffer()}catch(t){if(e)e(t);else throw t}}),100),this.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)},this.log=iW(null!==(t=i.loggerName)&&void 0!==t?t:$.PCTransport),this.loggerOptions=i,this.config=e,this._pc=this.createPC()}createPC(){let e=new RTCPeerConnection(this.config);return e.onicecandidate=e=>{var t;e.candidate&&(null===(t=this.onIceCandidate)||void 0===t||t.call(this,e.candidate))},e.onicecandidateerror=e=>{var t;null===(t=this.onIceCandidateError)||void 0===t||t.call(this,e)},e.oniceconnectionstatechange=()=>{var t;null===(t=this.onIceConnectionStateChange)||void 0===t||t.call(this,e.iceConnectionState)},e.onsignalingstatechange=()=>{var t;null===(t=this.onSignalingStatechange)||void 0===t||t.call(this,e.signalingState)},e.onconnectionstatechange=()=>{var t;null===(t=this.onConnectionStateChange)||void 0===t||t.call(this,e.connectionState)},e.ondatachannel=e=>{var t;null===(t=this.onDataChannel)||void 0===t||t.call(this,e)},e.ontrack=e=>{var t;null===(t=this.onTrack)||void 0===t||t.call(this,e)},e}get logContext(){var e,t;return Object.assign({},null===(t=(e=this.loggerOptions).loggerContextCb)||void 0===t?void 0:t.call(e))}get isICEConnected(){return null!==this._pc&&("connected"===this.pc.iceConnectionState||"completed"===this.pc.iceConnectionState)}addIceCandidate(e){return iK(this,void 0,void 0,function*(){if(this.pc.remoteDescription&&!this.restartingIce)return this.pc.addIceCandidate(e);this.pendingCandidates.push(e)})}setRemoteDescription(e){return iK(this,void 0,void 0,function*(){var t;let i;if("offer"===e.type){let{stereoMids:t,nackMids:i}=function(e){var t;let i=[],n=[],r=ac(null!==(t=e.sdp)&&void 0!==t?t:""),a=0;return r.media.forEach(e=>{var t;"audio"===e.type&&(e.rtp.some(e=>"opus"===e.codec&&(a=e.payload,!0)),(null===(t=e.rtcpFb)||void 0===t?void 0:t.some(e=>e.payload===a&&"nack"===e.type))&&n.push(e.mid),e.fmtp.some(t=>t.payload===a&&(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){let n=ac(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(let 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=as(n)}yield this.setMungedSDP(e,i,!0),this.pendingCandidates.forEach(e=>{this.pc.addIceCandidate(e)}),this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate?(this.renegotiate=!1,yield this.createAndSendOffer()):"answer"===e.type&&(this.emit(al.NegotiationComplete),e.sdp&&ac(e.sdp).media.forEach(e=>{"video"===e.type&&this.emit(al.RTPVideoPayloadTypes,e.rtp)}))})}createAndSendOffer(e){return iK(this,void 0,void 0,function*(){var t;if(void 0===this.onOffer)return;if((null==e?void 0:e.iceRestart)&&(this.log.debug("restarting ICE",this.logContext),this.restartingIce=!0),this._pc&&"have-local-offer"===this._pc.signalingState){let t=this._pc.remoteDescription;if((null==e?void 0:e.iceRestart)&&t)yield this._pc.setRemoteDescription(t);else{this.renegotiate=!0;return}}else if(!this._pc||"closed"===this._pc.signalingState){this.log.warn("could not createOffer with closed peer connection",this.logContext);return}this.log.debug("starting to negotiate",this.logContext);let i=yield this.pc.createOffer(e),n=ac(null!==(t=i.sdp)&&void 0!==t?t:"");n.media.forEach(e=>{"audio"===e.type?au(e,[],[]):"video"===e.type&&this.trackBitrates.some(t=>{var i,n,r;let a;if(!e.msid||!t.cid||!e.msid.includes(t.cid))return!1;let o=0;if(e.rtp.some(e=>e.codec.toUpperCase()===t.codec.toUpperCase()&&(o=e.payload,!0)),0===o)return!0;if(rI(t.codec)&&(a=0,(null===(n=(i=e).ext)||void 0===n?void 0:n.some(e=>e.uri===rE||(e.value>a&&(a=e.value),!1)))||null===(r=i.ext)||void 0===r||r.push({value:a+1,uri:rE})),"av1"!==t.codec)return!0;let s=Math.round(.7*t.maxbr);for(let t of e.fmtp)if(t.payload===o){t.config.includes("x-google-start-bitrate")||(t.config+=";x-google-start-bitrate=".concat(s));break}return!0})}),yield this.setMungedSDP(i,as(n)),this.onOffer(i)})}createAndSetAnswer(){return iK(this,void 0,void 0,function*(){var e;let t=yield this.pc.createAnswer(),i=ac(null!==(e=t.sdp)&&void 0!==e?e:"");return i.media.forEach(e=>{"audio"===e.type&&au(e,this.remoteStereoMids,this.remoteNackMids)}),yield this.setMungedSDP(t,as(i)),t})}createDataChannel(e,t){return this.pc.createDataChannel(e,t)}addTransceiver(e,t){return this.pc.addTransceiver(e,t)}addTrack(e){if(!this._pc)throw new re("PC closed, cannot add track");return this._pc.addTrack(e)}setTrackCodecBitrate(e){this.trackBitrates.push(e)}setConfiguration(e){var t;if(!this._pc)throw new re("PC closed, cannot configure");return null===(t=this._pc)||void 0===t?void 0:t.setConfiguration(e)}canRemoveTrack(){var e;return!!(null===(e=this._pc)||void 0===e?void 0:e.removeTrack)}removeTrack(e){var t;return null===(t=this._pc)||void 0===t?void 0:t.removeTrack(e)}getConnectionState(){var e,t;return null!==(t=null===(e=this._pc)||void 0===e?void 0:e.connectionState)&&void 0!==t?t:"closed"}getICEConnectionState(){var e,t;return null!==(t=null===(e=this._pc)||void 0===e?void 0:e.iceConnectionState)&&void 0!==t?t:"closed"}getSignallingState(){var e,t;return null!==(t=null===(e=this._pc)||void 0===e?void 0:e.signalingState)&&void 0!==t?t:"closed"}getTransceivers(){var e,t;return null!==(t=null===(e=this._pc)||void 0===e?void 0:e.getTransceivers())&&void 0!==t?t:[]}getSenders(){var e,t;return null!==(t=null===(e=this._pc)||void 0===e?void 0:e.getSenders())&&void 0!==t?t:[]}getLocalDescription(){var e;return null===(e=this._pc)||void 0===e?void 0:e.localDescription}getRemoteDescription(){var e;return null===(e=this.pc)||void 0===e?void 0:e.remoteDescription}getStats(){return this.pc.getStats()}getConnectedAddress(){return iK(this,void 0,void 0,function*(){var e;if(!this._pc)return;let t="",i=new Map,n=new Map;if((yield this._pc.getStats()).forEach(e=>{switch(e.type){case"transport":t=e.selectedCandidatePairId;break;case"candidate-pair":""===t&&e.selected&&(t=e.id),i.set(e.id,e);break;case"remote-candidate":n.set(e.id,"".concat(e.address,":").concat(e.port))}}),""===t)return;let r=null===(e=i.get(t))||void 0===e?void 0:e.remoteCandidateId;if(void 0!==r)return n.get(r)})}setMungedSDP(e,t,i){return iK(this,void 0,void 0,function*(){if(t){let n=e.sdp;e.sdp=t;try{this.log.debug("setting munged ".concat(i?"remote":"local"," description"),this.logContext),i?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e);return}catch(i){this.log.warn("not able to set ".concat(e.type,", falling back to unmodified sdp"),Object.assign(Object.assign({},this.logContext),{error:i,sdp:t})),e.sdp=n}}try{i?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e)}catch(r){let t="unknown error";r instanceof Error?t=r.message:"string"==typeof r&&(t=r);let n={error:t,sdp:e.sdp};throw!i&&this.pc.remoteDescription&&(n.remoteSdp=this.pc.remoteDescription),this.log.error("unable to set ".concat(e.type),Object.assign(Object.assign({},this.logContext),{fields:n})),new rt(t)}})}}function au(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)))}let ah={audioPreset:es.music,dtx:!0,red:!0,forceStereo:!1,simulcast:!0,screenShareEncoding:rm.h1080fps15.encoding,stopMicTrackOnMute:!1,videoCodec:"vp8",backupCodec:!0},ap={autoGainControl:!0,echoCancellation:!0,noiseSuppression:!0},am={resolution:rh.h720.resolution},af={adaptiveStream:!1,dynacast:!1,stopLocalTrackOnUnpublish:!0,reconnectPolicy:new class{constructor(e){this._retryDelays=void 0!==e?[...e]:iz}nextRetryDelayInMs(e){if(e.retryCount>=this._retryDelays.length)return null;let t=this._retryDelays[e.retryCount];return e.retryCount<=1?t:t+1e3*Math.random()}},disconnectOnPageLeave:!0,webAudioMix:!0},ag={autoSubscribe:!0,maxRetries:1,peerConnectionTimeout:15e3,websocketTimeout:15e3};(j=eu||(eu={}))[j.NEW=0]="NEW",j[j.CONNECTING=1]="CONNECTING",j[j.CONNECTED=2]="CONNECTED",j[j.FAILED=3]="FAILED",j[j.CLOSING=4]="CLOSING",j[j.CLOSED=5]="CLOSED";class av{get needsPublisher(){return this.isPublisherConnectionRequired}get needsSubscriber(){return this.isSubscriberConnectionRequired}get currentState(){return this.state}constructor(e,t,i){var n;this.peerConnectionTimeout=ag.peerConnectionTimeout,this.log=iQ,this.updateState=()=>{var e;let t=this.state,i=this.requiredTransports.map(e=>e.getConnectionState());i.every(e=>"connected"===e)?this.state=eu.CONNECTED:i.some(e=>"failed"===e)?this.state=eu.FAILED:i.some(e=>"connecting"===e)?this.state=eu.CONNECTING:i.every(e=>"closed"===e)?this.state=eu.CLOSED:i.some(e=>"closed"===e)?this.state=eu.CLOSING:i.every(e=>"new"===e)&&(this.state=eu.NEW),t!==this.state&&(this.log.debug("pc state change: from ".concat(eu[t]," to ").concat(eu[this.state]),this.logContext),null===(e=this.onStateChange)||void 0===e||e.call(this,this.state,this.publisher.getConnectionState(),this.subscriber.getConnectionState()))},this.log=iW(null!==(n=i.loggerName)&&void 0!==n?n:$.PCManager),this.loggerOptions=i,this.isPublisherConnectionRequired=!t,this.isSubscriberConnectionRequired=t,this.publisher=new ad(e,i),this.subscriber=new ad(e,i),this.publisher.onConnectionStateChange=this.updateState,this.subscriber.onConnectionStateChange=this.updateState,this.publisher.onIceConnectionStateChange=this.updateState,this.subscriber.onIceConnectionStateChange=this.updateState,this.publisher.onSignalingStatechange=this.updateState,this.subscriber.onSignalingStatechange=this.updateState,this.publisher.onIceCandidate=e=>{var t;null===(t=this.onIceCandidate)||void 0===t||t.call(this,e,t3.PUBLISHER)},this.subscriber.onIceCandidate=e=>{var t;null===(t=this.onIceCandidate)||void 0===t||t.call(this,e,t3.SUBSCRIBER)},this.subscriber.onDataChannel=e=>{var t;null===(t=this.onDataChannel)||void 0===t||t.call(this,e)},this.subscriber.onTrack=e=>{var t;null===(t=this.onTrack)||void 0===t||t.call(this,e)},this.publisher.onOffer=e=>{var t;null===(t=this.onPublisherOffer)||void 0===t||t.call(this,e)},this.state=eu.NEW,this.connectionLock=new r$}get logContext(){var e,t;return Object.assign({},null===(t=(e=this.loggerOptions).loggerContextCb)||void 0===t?void 0:t.call(e))}requirePublisher(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];this.isPublisherConnectionRequired=e,this.updateState()}requireSubscriber(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0];this.isSubscriberConnectionRequired=e,this.updateState()}createAndSendPublisherOffer(e){return this.publisher.createAndSendOffer(e)}setPublisherAnswer(e){return this.publisher.setRemoteDescription(e)}removeTrack(e){return this.publisher.removeTrack(e)}close(){return iK(this,void 0,void 0,function*(){if(this.publisher&&"closed"!==this.publisher.getSignallingState()){let e=this.publisher;for(let t of e.getSenders())try{e.canRemoveTrack()&&e.removeTrack(t)}catch(e){this.log.warn("could not removeTrack",Object.assign(Object.assign({},this.logContext),{error:e}))}}yield Promise.all([this.publisher.close(),this.subscriber.close()]),this.updateState()})}triggerIceRestart(){return iK(this,void 0,void 0,function*(){this.subscriber.restartingIce=!0,this.needsPublisher&&(yield this.createAndSendPublisherOffer({iceRestart:!0}))})}addIceCandidate(e,t){return iK(this,void 0,void 0,function*(){t===t3.PUBLISHER?yield this.publisher.addIceCandidate(e):yield this.subscriber.addIceCandidate(e)})}createSubscriberAnswerFromOffer(e){return iK(this,void 0,void 0,function*(){return this.log.debug("received server offer",Object.assign(Object.assign({},this.logContext),{RTCSdpType:e.type,sdp:e.sdp,signalingState:this.subscriber.getSignallingState().toString()})),yield this.subscriber.setRemoteDescription(e),yield this.subscriber.createAndSetAnswer()})}updateConfiguration(e,t){this.publisher.setConfiguration(e),this.subscriber.setConfiguration(e),t&&this.triggerIceRestart()}ensurePCTransportConnection(e,t){return iK(this,void 0,void 0,function*(){var i;let n=yield this.connectionLock.lock();try{this.isPublisherConnectionRequired&&"connected"!==this.publisher.getConnectionState()&&"connecting"!==this.publisher.getConnectionState()&&(this.log.debug("negotiation required, start negotiating",this.logContext),this.publisher.negotiate()),yield Promise.all(null===(i=this.requiredTransports)||void 0===i?void 0:i.map(i=>this.ensureTransportConnected(i,e,t)))}finally{n()}})}negotiate(e){return iK(this,void 0,void 0,function*(){return new Promise((t,i)=>iK(this,void 0,void 0,function*(){let n=setTimeout(()=>{i("negotiation timed out")},this.peerConnectionTimeout);e.signal.addEventListener("abort",()=>{clearTimeout(n),i("negotiation aborted")}),this.publisher.once(al.NegotiationStarted,()=>{!e.signal.aborted&&this.publisher.once(al.NegotiationComplete,()=>{clearTimeout(n),t()})}),yield this.publisher.negotiate(e=>{clearTimeout(n),i(e)})}))})}addPublisherTransceiver(e,t){return this.publisher.addTransceiver(e,t)}addPublisherTrack(e){return this.publisher.addTrack(e)}createPublisherDataChannel(e,t){return this.publisher.createDataChannel(e,t)}getConnectedAddress(e){return e===t3.PUBLISHER?this.publisher.getConnectedAddress():e===t3.SUBSCRIBER?this.publisher.getConnectedAddress():this.requiredTransports[0].getConnectedAddress()}get requiredTransports(){let e=[];return this.isPublisherConnectionRequired&&e.push(this.publisher),this.isSubscriberConnectionRequired&&e.push(this.subscriber),e}ensureTransportConnected(e,t){return iK(this,arguments,void 0,function(e,t){var i=this;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.peerConnectionTimeout;return function*(){if("connected"!==e.getConnectionState())return new Promise((e,r)=>iK(i,void 0,void 0,function*(){let i=()=>{this.log.warn("abort transport connection",this.logContext),rc.clearTimeout(a),r(new n4("room connection has been cancelled",3))};(null==t?void 0:t.signal.aborted)&&i(),null==t||t.signal.addEventListener("abort",i);let a=rc.setTimeout(()=>{null==t||t.signal.removeEventListener("abort",i),r(new n4("could not establish pc connection"))},n);for(;this.state!==eu.CONNECTED;)if(yield rP(50),null==t?void 0:t.signal.aborted){r(new n4("room connection has been cancelled",3));return}rc.clearTimeout(a),null==t||t.signal.removeEventListener("abort",i),e()}))}()})}}function ab(e,t){let i,n;return t?("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:(i-n)*8e3/(e.timestamp-t.timestamp):0}class ay extends r1{get enhancedNoiseCancellation(){return this.isKrispNoiseFilterEnabled}constructor(e,t){let i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0;super(e,rg.Kind.Audio,t,i,r),this.stopOnMute=!1,this.isKrispNoiseFilterEnabled=!1,this.monitorSender=()=>iK(this,void 0,void 0,function*(){let e;if(!this.sender){this._currentBitrate=0;return}try{e=yield this.getSenderStats()}catch(e){this.log.error("could not get audio sender stats",Object.assign(Object.assign({},this.logContext),{error:e}));return}e&&this.prevStats&&(this._currentBitrate=ab(e,this.prevStats)),this.prevStats=e}),this.handleKrispNoiseFilterEnable=()=>{this.isKrispNoiseFilterEnabled=!0,this.log.debug("Krisp noise filter enabled",this.logContext),this.emit(eo.AudioTrackFeatureUpdate,this,tO.TF_ENHANCED_NOISE_CANCELLATION,!0)},this.handleKrispNoiseFilterDisable=()=>{this.isKrispNoiseFilterEnabled=!1,this.log.debug("Krisp noise filter disabled",this.logContext),this.emit(eo.AudioTrackFeatureUpdate,this,tO.TF_ENHANCED_NOISE_CANCELLATION,!1)},this.audioContext=n,this.checkForSilence()}setDeviceId(e){return iK(this,void 0,void 0,function*(){return this._constraints.deviceId===e&&this._mediaStreamTrack.getSettings().deviceId===rY(e)||(this._constraints.deviceId=e,this.isMuted||(yield this.restartTrack()),this.isMuted||rY(e)===this._mediaStreamTrack.getSettings().deviceId)})}mute(){let e=Object.create(null,{mute:{get:()=>super.mute}});return iK(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{if(this.isMuted)return this.log.debug("Track already muted",this.logContext),this;return this.source===rg.Source.Microphone&&this.stopOnMute&&!this.isUserProvided&&(this.log.debug("stopping mic track",this.logContext),this._mediaStreamTrack.stop()),yield e.mute.call(this),this}finally{t()}})}unmute(){let e=Object.create(null,{unmute:{get:()=>super.unmute}});return iK(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{if(!this.isMuted)return this.log.debug("Track already unmuted",this.logContext),this;let t=this._constraints.deviceId&&this._mediaStreamTrack.getSettings().deviceId!==rY(this._constraints.deviceId);return this.source===rg.Source.Microphone&&(this.stopOnMute||"ended"===this._mediaStreamTrack.readyState||t)&&!this.isUserProvided&&(this.log.debug("reacquiring mic track",this.logContext),yield this.restartTrack()),yield e.unmute.call(this),this}finally{t()}})}restartTrack(e){return iK(this,void 0,void 0,function*(){let t;if(e){let i=rT({audio:e});"boolean"!=typeof i.audio&&(t=i.audio)}yield this.restart(t)})}restart(e){let t=Object.create(null,{restart:{get:()=>super.restart}});return iK(this,void 0,void 0,function*(){let i=yield t.restart.call(this,e);return this.checkForSilence(),i})}startMonitor(){rA()&&!this.monitorInterval&&(this.monitorInterval=setInterval(()=>{this.monitorSender()},2e3))}setProcessor(e){return iK(this,void 0,void 0,function*(){var t;let i=yield this.processorLock.lock();try{if(!this.audioContext)throw Error("Audio context needs to be set on LocalAudioTrack in order to enable processors");this.processor&&(yield this.stopProcessor());let i={kind:this.kind,track:this._mediaStreamTrack,audioContext:this.audioContext};this.log.debug("setting up audio processor ".concat(e.name),this.logContext),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),this.processor.processedTrack.addEventListener("enable-lk-krisp-noise-filter",this.handleKrispNoiseFilterEnable),this.processor.processedTrack.addEventListener("disable-lk-krisp-noise-filter",this.handleKrispNoiseFilterDisable)),this.emit(eo.TrackProcessorUpdate,this.processor)}finally{i()}})}setAudioContext(e){this.audioContext=e}getSenderStats(){return iK(this,void 0,void 0,function*(){var e;let t;if(null===(e=this.sender)||void 0===e?void 0:e.getStats)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 iK(this,void 0,void 0,function*(){let e=yield function(e){return iK(this,arguments,void 0,function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;return function*(){let i=rC();if(i){let n=i.createAnalyser();n.fftSize=2048;let r=new Uint8Array(n.frequencyBinCount);i.createMediaStreamSource(new MediaStream([e.mediaStreamTrack])).connect(n),yield rP(t),n.getByteTimeDomainData(r);let a=r.some(e=>128!==e&&0!==e);return i.close(),!a}return!1}()})}(this);return e&&(this.isMuted||this.log.warn("silence detected on local audio track",this.logContext),this.emit(eo.AudioSilenceDetected)),e})}}function ak(e,t,i){switch(e.kind){case"audio":return new ay(e,t,!1,void 0,i);case"video":return new aN(e,t,!1,i);default:throw new n7("unsupported track type: ".concat(e.kind))}}let aT=Object.values(rh),aC=Object.values(rp),aS=Object.values(rm),aw=[rh.h180,rh.h360],aE=[rp.h180,rp.h360],aP=e=>[{scaleResolutionDownBy:2,fps:e.encoding.maxFramerate}].map(t=>{var i,n;return new rl(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)/(null!==(n=t.fps)&&void 0!==n?n:30))))),t.fps,e.encoding.priority)}),aR=["q","h","f"];function ax(e,t,i,n){var r,a;let o;let s=null==n?void 0:n.videoEncoding;e&&(s=null==n?void 0:n.screenShareEncoding);let c=null==n?void 0:n.simulcast,l=null==n?void 0:n.scalabilityMode,d=null==n?void 0:n.videoCodec;if(!s&&!c&&!l||!t||!i)return[{}];s||(s=function(e,t,i,n){let r=function(e,t,i){if(e)return aS;let n=t>i?t/i:i/t;return Math.abs(n-16/9)=o)break}if(n)switch(n){case"av1":(a=Object.assign({},a)).maxBitrate=.7*a.maxBitrate;break;case"vp9":(a=Object.assign({},a)).maxBitrate=.85*a.maxBitrate}return a}(e,t,i,d),iQ.debug("using video encoding",s));let u=new rl(t,i,s.maxBitrate,s.maxFramerate,s.priority);if(l&&rI(d)){let e=new aD(l),t=[];if(e.spatial>3)throw Error("unsupported scalabilityMode: ".concat(l));let i=rr();if(rD()||(null==i?void 0:i.name)==="Chrome"&&0>rB(null==i?void 0:i.version,"113")){let i="h"==e.suffix?2:3;for(let n=0;n0){let e=h[0];h.length>1&&([,o]=h);let n=Math.max(t,i);if(n>=960&&o)return aO(t,i,[e,o,u]);if(n>=480)return aO(t,i,[e,u])}return aO(t,i,[u])}function aI(e,t){if(e)return aP(t);let{width:i,height:n}=t,r=i>n?i/n:n/i;return Math.abs(r-16/9){if(r>=aR.length)return;let a=Math.min(e,t),o={rid:aR[r],scaleResolutionDownBy:Math.max(1,a/Math.min(i.width,i.height)),maxBitrate:i.encoding.maxBitrate};i.encoding.maxFramerate&&(o.maxFramerate=i.encoding.maxFramerate);let s=rM()||0===r;i.encoding.priority&&s&&(o.priority=i.encoding.priority,o.networkPriority=i.encoding.priority),n.push(o)}),r_()&&"ios"===rj()){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,iQ.info("Simulcast on iOS React-Native requires all encodings to share the same framerate.")),iQ.info('Setting framerate of encoding "'.concat(null!==(n=i.rid)&&void 0!==n?n:"",'" to ').concat(e)),i.maxFramerate=e)})}return n}function aM(e){if(e)return e.sort((e,t)=>{let{encoding:i}=e,{encoding:n}=t;return i.maxBitrate>n.maxBitrate?1:i.maxBitraten.maxFramerate?1:-1:0})}class aD{constructor(e){let t=e.match(/^L(\d)T(\d)(h|_KEY|_KEY_SHIFT){0,1}$/);if(!t)throw 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 aN extends r1{get sender(){return this._sender}set sender(e){this._sender=e,this.degradationPreference&&this.setDegradationPreference(this.degradationPreference)}constructor(e,t){let i=!(arguments.length>2)||void 0===arguments[2]||arguments[2],n=arguments.length>3?arguments[3]:void 0;super(e,rg.Kind.Video,t,i,n),this.simulcastCodecs=new Map,this.degradationPreference="balanced",this.monitorSender=()=>iK(this,void 0,void 0,function*(){let e;if(!this.sender){this._currentBitrate=0;return}try{e=yield this.getSenderStats()}catch(e){this.log.error("could not get audio sender stats",Object.assign(Object.assign({},this.logContext),{error:e}));return}let t=new Map(e.map(e=>[e.rid,e]));if(this.prevStats){let e=0;t.forEach((t,i)=>{var n;let r=null===(n=this.prevStats)||void 0===n?void 0:n.get(i);e+=ab(t,r)}),this._currentBitrate=e}this.prevStats=t}),this.senderLock=new r$}get isSimulcast(){return!!this.sender&&!!(this.sender.getParameters().encodings.length>1)}startMonitor(e){var t;if(this.signalClient=e,!rA())return;let i=null===(t=this.sender)||void 0===t?void 0:t.getParameters();i&&(this.encodings=i.encodings),!this.monitorInterval&&(this.monitorInterval=setInterval(()=>{this.monitorSender()},2e3))}stop(){this._mediaStreamTrack.getConstraints(),this.simulcastCodecs.forEach(e=>{e.mediaStreamTrack.stop()}),super.stop()}pauseUpstream(){let e=Object.create(null,{pauseUpstream:{get:()=>super.pauseUpstream}});return iK(this,void 0,void 0,function*(){yield e.pauseUpstream.call(this);try{for(var t,i,n,r,a,o,s=!0,c=iH(this.simulcastCodecs.values());!(t=(o=yield c.next()).done);s=!0)r=o.value,s=!1,yield null===(a=r.sender)||void 0===a?void 0:a.replaceTrack(null)}catch(e){i={error:e}}finally{try{!s&&!t&&(n=c.return)&&(yield n.call(c))}finally{if(i)throw i.error}}})}resumeUpstream(){let e=Object.create(null,{resumeUpstream:{get:()=>super.resumeUpstream}});return iK(this,void 0,void 0,function*(){yield e.resumeUpstream.call(this);try{for(var t,i,n,r,a,o,s=!0,c=iH(this.simulcastCodecs.values());!(t=(o=yield c.next()).done);s=!0)r=o.value,s=!1,yield null===(a=r.sender)||void 0===a?void 0:a.replaceTrack(r.mediaStreamTrack)}catch(e){i={error:e}}finally{try{!s&&!t&&(n=c.return)&&(yield n.call(c))}finally{if(i)throw i.error}}})}mute(){let e=Object.create(null,{mute:{get:()=>super.mute}});return iK(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{if(this.isMuted)return this.log.debug("Track already muted",this.logContext),this;return this.source!==rg.Source.Camera||this.isUserProvided||(this.log.debug("stopping camera track",this.logContext),this._mediaStreamTrack.stop()),yield e.mute.call(this),this}finally{t()}})}unmute(){let e=Object.create(null,{unmute:{get:()=>super.unmute}});return iK(this,void 0,void 0,function*(){let t=yield this.muteLock.lock();try{if(!this.isMuted)return this.log.debug("Track already unmuted",this.logContext),this;return this.source!==rg.Source.Camera||this.isUserProvided||(this.log.debug("reacquiring camera track",this.logContext),yield this.restartTrack()),yield e.unmute.call(this),this}finally{t()}})}setTrackMuted(e){for(let t of(super.setTrackMuted(e),this.simulcastCodecs.values()))t.mediaStreamTrack.enabled=!e}getSenderStats(){return iK(this,void 0,void 0,function*(){var e;if(!(null===(e=this.sender)||void 0===e?void 0:e.getStats))return[];let t=[],i=yield this.sender.getStats();return i.forEach(e=>{var n;if("outbound-rtp"===e.type){let r={type:"video",streamId:e.id,frameHeight:e.frameHeight,frameWidth:e.frameWidth,framesPerSecond:e.framesPerSecond,framesSent:e.framesSent,firCount:e.firCount,pliCount:e.pliCount,nackCount:e.nackCount,packetsSent:e.packetsSent,bytesSent:e.bytesSent,qualityLimitationReason:e.qualityLimitationReason,qualityLimitationDurations:e.qualityLimitationDurations,qualityLimitationResolutionChanges:e.qualityLimitationResolutionChanges,rid:null!==(n=e.rid)&&void 0!==n?n:e.id,retransmittedPacketsSent:e.retransmittedPacketsSent,targetBitrate:e.targetBitrate,timestamp:e.timestamp},a=i.get(e.remoteId);a&&(r.jitter=a.jitter,r.packetsLost=a.packetsLost,r.roundTripTime=a.roundTripTime),t.push(r)}}),t.sort((e,t)=>{var i,n;return(null!==(i=t.frameWidth)&&void 0!==i?i:0)-(null!==(n=e.frameWidth)&&void 0!==n?n:0)}),t})}setPublishingQuality(e){let t=[];for(let i=ec.LOW;i<=ec.HIGH;i+=1)t.push(new iP({quality:i,enabled:i<=e}));this.log.debug("setting publishing quality. max quality ".concat(e),this.logContext),this.setPublishingLayers(t)}setDeviceId(e){return iK(this,void 0,void 0,function*(){return this._constraints.deviceId===e&&this._mediaStreamTrack.getSettings().deviceId===rY(e)||(this._constraints.deviceId=e,this.isMuted||(yield this.restartTrack()),this.isMuted||rY(e)===this._mediaStreamTrack.getSettings().deviceId)})}restartTrack(e){return iK(this,void 0,void 0,function*(){let t;if(e){let i=rT({video:e});"boolean"!=typeof i.video&&(t=i.video)}yield this.restart(t);try{for(var i,n,r,a,o,s=!0,c=iH(this.simulcastCodecs.values());!(i=(o=yield c.next()).done);s=!0)a=o.value,s=!1,a.sender&&(a.mediaStreamTrack=this.mediaStreamTrack.clone(),yield a.sender.replaceTrack(a.mediaStreamTrack))}catch(e){n={error:e}}finally{try{!s&&!i&&(r=c.return)&&(yield r.call(c))}finally{if(n)throw n.error}}})}setProcessor(e){let t=Object.create(null,{setProcessor:{get:()=>super.setProcessor}});return iK(this,arguments,void 0,function(e){var i=this;let n=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return function*(){if(yield t.setProcessor.call(i,e,n),null===(c=i.processor)||void 0===c?void 0:c.processedTrack)try{for(var r,a,o,s,c,l,d,u=!0,h=iH(i.simulcastCodecs.values());!(r=(d=yield h.next()).done);u=!0)s=d.value,u=!1,yield null===(l=s.sender)||void 0===l?void 0:l.replaceTrack(i.processor.processedTrack)}catch(e){a={error:e}}finally{try{!u&&!r&&(o=h.return)&&(yield o.call(h))}finally{if(a)throw a.error}}}()})}setDegradationPreference(e){return iK(this,void 0,void 0,function*(){if(this.degradationPreference=e,this.sender)try{this.log.debug("setting degradationPreference to ".concat(e),this.logContext);let t=this.sender.getParameters();t.degradationPreference=e,this.sender.setParameters(t)}catch(e){this.log.warn("failed to set degradationPreference",Object.assign({error:e},this.logContext))}})}addSimulcastTrack(e,t){if(this.simulcastCodecs.has(e)){this.log.error("".concat(e," already added, skipping adding simulcast codec"),this.logContext);return}let i={codec:e,mediaStreamTrack:this.mediaStreamTrack.clone(),sender:void 0,encodings:t};return this.simulcastCodecs.set(e,i),i}setSimulcastTrackSender(e,t){let i=this.simulcastCodecs.get(e);i&&(i.sender=t,setTimeout(()=>{this.subscribedCodecs&&this.setPublishingCodecs(this.subscribedCodecs)},5e3))}setPublishingCodecs(e){return iK(this,void 0,void 0,function*(){var t,i,n,r,a,o,s;if(this.log.debug("setting publishing codecs",Object.assign(Object.assign({},this.logContext),{codecs:e,currentCodec:this.codec})),!this.codec&&e.length>0)return yield this.setPublishingLayers(e[0].qualities),[];this.subscribedCodecs=e;let c=[];try{for(t=!0,i=iH(e);!(r=(n=yield i.next()).done);t=!0)if(s=n.value,t=!1,this.codec&&this.codec!==s.codec){let e=this.simulcastCodecs.get(s.codec);if(this.log.debug("try setPublishingCodec for ".concat(s.codec),Object.assign(Object.assign({},this.logContext),{simulcastCodecInfo:e})),e&&e.sender)e.encodings&&(this.log.debug("try setPublishingLayersForSender ".concat(s.codec),this.logContext),yield aA(e.sender,e.encodings,s.qualities,this.senderLock,this.log,this.logContext));else for(let e of s.qualities)if(e.enabled){c.push(s.codec);break}}else yield this.setPublishingLayers(s.qualities)}catch(e){a={error:e}}finally{try{!t&&!r&&(o=i.return)&&(yield o.call(i))}finally{if(a)throw a.error}}return c})}setPublishingLayers(e){return iK(this,void 0,void 0,function*(){this.log.debug("setting publishing layers",Object.assign(Object.assign({},this.logContext),{qualities:e})),this.sender&&this.encodings&&(yield aA(this.sender,this.encodings,e,this.senderLock,this.log,this.logContext))})}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return iK(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),rN()&&this.isInBackground&&this.source===rg.Source.Camera&&(this._mediaStreamTrack.enabled=!1)})}}function aA(e,t,i,n,r,a){return iK(this,void 0,void 0,function*(){let o=yield n.lock();r.debug("setPublishingLayersForSender",Object.assign(Object.assign({},a),{sender:e,qualities:i,senderEncodings:t}));try{let n=e.getParameters(),{encodings:o}=n;if(!o)return;if(o.length!==t.length){r.warn("cannot set publishing layers, encodings mismatch",Object.assign(Object.assign({},a),{encodings:o,senderEncodings:t}));return}let s=!1;o.forEach((e,n)=>{var o;let c=null!==(o=e.rid)&&void 0!==o?o:"";""===c&&(c="q");let l=a_(c),d=i.find(e=>e.quality===l);d&&e.active!==d.enabled&&(s=!0,e.active=d.enabled,r.debug("setting layer ".concat(d.quality," to ").concat(e.active?"enabled":"disabled"),a),rM()&&(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=o,r.debug("setting encodings",Object.assign(Object.assign({},a),{encodings:n.encodings})),yield e.setParameters(n))}finally{o()}})}function a_(e){switch(e){case"f":default:return ec.HIGH;case"h":return ec.MEDIUM;case"q":return ec.LOW}}function aL(e,t,i,n){if(!i)return[new tB({quality:ec.HIGH,width:e,height:t,bitrate:0,ssrc:0})];if(n){let n=new aD(i[0].scalabilityMode),r=[],a="h"==n.suffix?1.5:2,o="h"==n.suffix?2:3;for(let s=0;s{var n,r,a;let o=null!==(n=i.scaleResolutionDownBy)&&void 0!==n?n:1;return new tB({quality:a_(null!==(r=i.rid)&&void 0!==r?r:""),width:Math.ceil(e/o),height:Math.ceil(t/o),bitrate:null!==(a=i.maxBitrate)&&void 0!==a?a:0,ssrc:0})})}let aU="_lossy",aj="_reliable",aF="leave-reconnect";(F=eh||(eh={}))[F.New=0]="New",F[F.Connected=1]="Connected",F[F.Disconnected=2]="Disconnected",F[F.Reconnecting=3]="Reconnecting",F[F.Closed=4]="Closed";class aB extends ne.EventEmitter{get isClosed(){return this._isClosed}get pendingReconnect(){return!!this.reconnectTimeout}constructor(e){var t;super(),this.options=e,this.rtcConfig={},this.peerConnectionTimeout=ag.peerConnectionTimeout,this.fullReconnectOnNext=!1,this.subscriberPrimary=!1,this.pcState=eh.New,this._isClosed=!0,this.pendingTrackResolvers={},this.reconnectAttempts=0,this.reconnectStart=0,this.attemptingReconnect=!1,this.joinAttempts=0,this.maxJoinAttempts=1,this.shouldFailNext=!1,this.log=iQ,this.handleDataChannel=e=>iK(this,[e],void 0,function(e){var t=this;let{channel:i}=e;return function*(){if(i){if(i.label===aj)t.reliableDCSub=i;else{if(i.label!==aU)return;t.lossyDCSub=i}t.log.debug("on data channel ".concat(i.id,", ").concat(i.label),t.logContext),i.onmessage=t.handleDataMessage}}()}),this.handleDataMessage=e=>iK(this,void 0,void 0,function*(){var t,i,n;let r=yield this.dataProcessLock.lock();try{let r;if(e.data instanceof ArrayBuffer)r=e.data;else if(e.data instanceof Blob)r=yield e.data.arrayBuffer();else{this.log.error("unsupported data type",Object.assign(Object.assign({},this.logContext),{data:e.data}));return}let a=tV.fromBinary(new Uint8Array(r));(null===(t=a.value)||void 0===t?void 0:t.case)==="speaker"?this.emit(ea.ActiveSpeakersUpdate,a.value.value.speakers):(null===(i=a.value)||void 0===i?void 0:i.case)==="user"?this.emit(ea.DataPacketReceived,a.value.value,a.kind):(null===(n=a.value)||void 0===n?void 0:n.case)==="transcription"&&this.emit(ea.TranscriptionReceived,a.value.value)}finally{r()}}),this.handleDataError=e=>{let t=0===e.currentTarget.maxRetransmits?"lossy":"reliable";if(e instanceof ErrorEvent&&e.error){let{error:i}=e.error;this.log.error("DataChannel error on ".concat(t,": ").concat(e.message),Object.assign(Object.assign({},this.logContext),{error:i}))}else this.log.error("Unknown DataChannel error on ".concat(t),Object.assign(Object.assign({},this.logContext),{event:e}))},this.handleBufferedAmountLow=e=>{let t=0===e.currentTarget.maxRetransmits?tq.LOSSY:tq.RELIABLE;this.updateAndEmitDCBufferStatus(t)},this.handleDisconnect=(e,t)=>{if(this._isClosed)return;this.log.warn("".concat(e," disconnected"),this.logContext),0===this.reconnectAttempts&&(this.reconnectStart=Date.now());let i=Date.now()-this.reconnectStart,n=this.getNextRetryDelay({elapsedMs:i,retryCount:this.reconnectAttempts});if(null===n){(e=>{this.log.warn("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(e,"ms. giving up"),this.logContext),this.emit(ea.Disconnected),this.close()})(i);return}e===aF&&(n=0),this.log.debug("reconnecting in ".concat(n,"ms"),this.logContext),this.clearReconnectTimeout(),this.token&&this.regionUrlProvider&&this.regionUrlProvider.updateToken(this.token),this.reconnectTimeout=rc.setTimeout(()=>this.attemptReconnect(t).finally(()=>this.reconnectTimeout=void 0),n)},this.waitForRestarted=()=>new Promise((e,t)=>{this.pcState===eh.Connected&&e();let i=()=>{this.off(ea.Disconnected,n),e()},n=()=>{this.off(ea.Restarted,i),t()};this.once(ea.Restarted,i),this.once(ea.Disconnected,n)}),this.updateAndEmitDCBufferStatus=e=>{let t=this.isBufferStatusLow(e);void 0!==t&&t!==this.dcBufferStatus.get(e)&&(this.dcBufferStatus.set(e,t),this.emit(ea.DCBufferStatusChanged,t,e))},this.isBufferStatusLow=e=>{let t=this.dataChannelForKind(e);if(t)return t.bufferedAmount<=t.bufferedAmountLowThreshold},this.handleBrowserOnLine=()=>{this.client.currentState===ed.RECONNECTING&&(this.clearReconnectTimeout(),this.attemptReconnect(tx.RR_SIGNAL_DISCONNECTED))},this.log=iW(null!==(t=e.loggerName)&&void 0!==t?t:$.Engine),this.loggerOptions={loggerName:e.loggerName,loggerContextCb:()=>this.logContext},this.client=new r6(void 0,this.loggerOptions),this.client.signalLatency=this.options.expSignalLatency,this.reconnectPolicy=this.options.reconnectPolicy,this.registerOnLineListener(),this.closingLock=new r$,this.dataProcessLock=new r$,this.dcBufferStatus=new Map([[tq.LOSSY,!0],[tq.RELIABLE,!0]]),this.client.onParticipantUpdate=e=>this.emit(ea.ParticipantUpdate,e),this.client.onConnectionQuality=e=>this.emit(ea.ConnectionQualityUpdate,e),this.client.onRoomUpdate=e=>this.emit(ea.RoomUpdate,e),this.client.onSubscriptionError=e=>this.emit(ea.SubscriptionError,e),this.client.onSubscriptionPermissionUpdate=e=>this.emit(ea.SubscriptionPermissionUpdate,e),this.client.onSpeakersChanged=e=>this.emit(ea.SpeakersChanged,e),this.client.onStreamStateUpdate=e=>this.emit(ea.StreamStateChanged,e)}get logContext(){var e,t,i,n,r,a,o,s;return{room:null===(t=null===(e=this.latestJoinResponse)||void 0===e?void 0:e.room)||void 0===t?void 0:t.name,roomID:null===(n=null===(i=this.latestJoinResponse)||void 0===i?void 0:i.room)||void 0===n?void 0:n.sid,participant:null===(a=null===(r=this.latestJoinResponse)||void 0===r?void 0:r.participant)||void 0===a?void 0:a.identity,pID:null===(s=null===(o=this.latestJoinResponse)||void 0===o?void 0:o.participant)||void 0===s?void 0:s.sid}}join(e,t,i,n){return iK(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();let r=yield this.client.join(e,t,i,n);return this._isClosed=!1,this.latestJoinResponse=r,this.subscriberPrimary=r.subscriberPrimary,this.pcManager||(yield this.configure(r)),this.subscriberPrimary||this.negotiate(),this.clientConfiguration=r.clientConfiguration,r}catch(r){if(r instanceof n4&&1===r.reason&&(this.log.warn("Couldn't connect to server, attempt ".concat(this.joinAttempts," of ").concat(this.maxJoinAttempts),this.logContext),this.joinAttempts{e&&(e.close(),e.onbufferedamountlow=null,e.onclose=null,e.onclosing=null,e.onerror=null,e.onmessage=null,e.onopen=null)};t(this.lossyDC),t(this.lossyDCSub),t(this.reliableDC),t(this.reliableDCSub),this.lossyDC=void 0,this.lossyDCSub=void 0,this.reliableDC=void 0,this.reliableDCSub=void 0})}cleanupClient(){return iK(this,void 0,void 0,function*(){yield this.client.close(),this.client.resetCallbacks()})}addTrack(e){if(this.pendingTrackResolvers[e.cid])throw new n7("a track with the same ID has already been published");return new Promise((t,i)=>{let n=setTimeout(()=>{delete this.pendingTrackResolvers[e.cid],i(new n4("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(Error("Cancelled publication by calling unpublish"))}},this.client.sendAddTrack(e)})}removeTrack(e){if(e.track&&this.pendingTrackResolvers[e.track.id]){let{reject:t}=this.pendingTrackResolvers[e.track.id];t&&t(),delete this.pendingTrackResolvers[e.track.id]}try{return this.pcManager.removeTrack(e),!0}catch(e){this.log.warn("failed to remove track",Object.assign(Object.assign({},this.logContext),{error:e}))}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 iK(this,void 0,void 0,function*(){var e;return null===(e=this.pcManager)||void 0===e?void 0:e.getConnectedAddress()})}setRegionUrlProvider(e){this.regionUrlProvider=e}configure(e){return iK(this,void 0,void 0,function*(){var t,i,n;if(this.pcManager&&this.pcManager.currentState!==eu.NEW)return;this.participantSid=null===(t=e.participant)||void 0===t?void 0:t.sid;let r=this.makeRTCConfiguration(e);this.pcManager=new av(r,e.subscriberPrimary,this.loggerOptions),this.emit(ea.TransportsCreated,this.pcManager.publisher,this.pcManager.subscriber),this.pcManager.onIceCandidate=(e,t)=>{this.client.sendIceCandidate(e,t)},this.pcManager.onPublisherOffer=e=>{this.client.sendOffer(e)},this.pcManager.onDataChannel=this.handleDataChannel,this.pcManager.onStateChange=(t,i,n)=>iK(this,void 0,void 0,function*(){if(this.log.debug("primary PC state changed ".concat(t),this.logContext),["closed","disconnected","failed"].includes(i)&&(this.publisherConnectionPromise=void 0),t===eu.CONNECTED){let t=this.pcState===eh.New;this.pcState=eh.Connected,t&&this.emit(ea.Connected,e)}else t===eu.FAILED&&this.pcState===eh.Connected&&(this.pcState=eh.Disconnected,this.handleDisconnect("peerconnection failed","failed"===n?tx.RR_SUBSCRIBER_FAILED:tx.RR_PUBLISHER_FAILED));let r=this.client.isDisconnected||this.client.currentState===ed.RECONNECTING,a=[eu.FAILED,eu.CLOSING,eu.CLOSED].includes(t);r&&a&&!this._isClosed&&this.emit(ea.Offline)}),this.pcManager.onTrack=e=>{this.emit(ea.MediaTrackAdded,e.track,e.streams[0],e.receiver)},void 0!==(n=null===(i=e.serverInfo)||void 0===i?void 0:i.protocol)&&n>13||this.createDataChannels()})}setupSignalClientCallbacks(){this.client.onAnswer=e=>iK(this,void 0,void 0,function*(){this.pcManager&&(this.log.debug("received server answer",Object.assign(Object.assign({},this.logContext),{RTCSdpType:e.type})),yield this.pcManager.setPublisherAnswer(e))}),this.client.onTrickle=(e,t)=>{this.pcManager&&(this.log.trace("got ICE candidate from peer",Object.assign(Object.assign({},this.logContext),{candidate:e,target:t})),this.pcManager.addIceCandidate(e,t))},this.client.onOffer=e=>iK(this,void 0,void 0,function*(){if(!this.pcManager)return;let t=yield this.pcManager.createSubscriberAnswerFromOffer(e);this.client.sendAnswer(t)}),this.client.onLocalTrackPublished=e=>{var t;if(this.log.debug("received trackPublishedResponse",Object.assign(Object.assign({},this.logContext),{cid:e.cid,track:null===(t=e.track)||void 0===t?void 0:t.sid})),!this.pendingTrackResolvers[e.cid]){this.log.error("missing track resolver for ".concat(e.cid),Object.assign(Object.assign({},this.logContext),{cid:e.cid}));return}let{resolve:i}=this.pendingTrackResolvers[e.cid];delete this.pendingTrackResolvers[e.cid],i(e.track)},this.client.onLocalTrackUnpublished=e=>{this.emit(ea.LocalTrackUnpublished,e)},this.client.onTokenRefresh=e=>{this.token=e},this.client.onRemoteMuteChanged=(e,t)=>{this.emit(ea.RemoteMute,e,t)},this.client.onSubscribedQualityUpdate=e=>{this.emit(ea.SubscribedQualityUpdate,e)},this.client.onClose=()=>{this.handleDisconnect("signal",tx.RR_SIGNAL_DISCONNECTED)},this.client.onLeave=e=>{switch(this.log.debug("client leave request",Object.assign(Object.assign({},this.logContext),{reason:null==e?void 0:e.reason})),e.regions&&this.regionUrlProvider&&(this.log.debug("updating regions",this.logContext),this.regionUrlProvider.setServerReportedRegions(e.regions)),e.action){case ig.DISCONNECT:this.emit(ea.Disconnected,null==e?void 0:e.reason),this.close();break;case ig.RECONNECT:this.fullReconnectOnNext=!0,this.handleDisconnect(aF);break;case ig.RESUME:this.handleDisconnect(aF)}}}makeRTCConfiguration(e){var t;let i=Object.assign({},this.rtcConfig);if((null===(t=this.signalOpts)||void 0===t?void 0:t.e2eeEnabled)&&(this.log.debug("E2EE - setting up transports with insertable streams",this.logContext),i.encodedInsertableStreams=!0),e.iceServers&&!i.iceServers){let t=[];e.iceServers.forEach(e=>{let i={urls:e.urls};e.username&&(i.username=e.username),e.credential&&(i.credential=e.credential),t.push(i)}),i.iceServers=t}return e.clientConfiguration&&e.clientConfiguration.forceRelay===tP.ENABLED&&(i.iceTransportPolicy="relay"),i.sdpSemantics="unified-plan",i.continualGatheringPolicy="gather_continually",i}createDataChannels(){this.pcManager&&(this.lossyDC&&(this.lossyDC.onmessage=null,this.lossyDC.onerror=null),this.reliableDC&&(this.reliableDC.onmessage=null,this.reliableDC.onerror=null),this.lossyDC=this.pcManager.createPublisherDataChannel(aU,{ordered:!0,maxRetransmits:0}),this.reliableDC=this.pcManager.createPublisherDataChannel(aj,{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)}createSender(e,t,i){return iK(this,void 0,void 0,function*(){if(rR())return yield this.createTransceiverRTCRtpSender(e,t,i);if(rx())return this.log.warn("using add-track fallback",this.logContext),yield this.createRTCRtpSender(e.mediaStreamTrack);throw new re("Required webRTC APIs not supported on this device")})}createSimulcastSender(e,t,i,n){return iK(this,void 0,void 0,function*(){if(rR())return this.createSimulcastTransceiverSender(e,t,i,n);if(rx())return this.log.debug("using add-track fallback",this.logContext),this.createRTCRtpSender(e.mediaStreamTrack);throw new re("Cannot stream on this device")})}createTransceiverRTCRtpSender(e,t,i){return iK(this,void 0,void 0,function*(){if(!this.pcManager)throw new re("publisher is closed");let n=[];e.mediaStream&&n.push(e.mediaStream),e instanceof aN&&(e.codec=t.videoCodec);let r={direction:"sendonly",streams:n};return i&&(r.sendEncodings=i),(yield this.pcManager.addPublisherTransceiver(e.mediaStreamTrack,r)).sender})}createSimulcastTransceiverSender(e,t,i,n){return iK(this,void 0,void 0,function*(){if(!this.pcManager)throw new re("publisher is closed");let r={direction:"sendonly"};n&&(r.sendEncodings=n);let a=yield this.pcManager.addPublisherTransceiver(t.mediaStreamTrack,r);if(i.videoCodec)return e.setSimulcastTrackSender(i.videoCodec,a.sender),a.sender})}createRTCRtpSender(e){return iK(this,void 0,void 0,function*(){if(!this.pcManager)throw new re("publisher is closed");return this.pcManager.addPublisherTrack(e)})}attemptReconnect(e){return iK(this,void 0,void 0,function*(){var t,i,n;if(!this._isClosed){if(this.attemptingReconnect){iQ.warn("already attempting reconnect, returning early",this.logContext);return}((null===(t=this.clientConfiguration)||void 0===t?void 0:t.resumeConnection)===tP.DISABLED||(null!==(n=null===(i=this.pcManager)||void 0===i?void 0:i.currentState)&&void 0!==n?n:eu.NEW)===eu.NEW)&&(this.fullReconnectOnNext=!0);try{this.attemptingReconnect=!0,this.fullReconnectOnNext?yield this.restartConnection():yield this.resumeConnection(e),this.clearPendingReconnect(),this.fullReconnectOnNext=!1}catch(t){this.reconnectAttempts+=1;let e=!0;t instanceof re?(this.log.debug("received unrecoverable error",Object.assign(Object.assign({},this.logContext),{error:t})),e=!1):t instanceof aV||(this.fullReconnectOnNext=!0),e?this.handleDisconnect("reconnect",tx.RR_UNKNOWN):(this.log.info("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(Date.now()-this.reconnectStart,"ms. giving up"),this.logContext),this.emit(ea.Disconnected),yield this.close())}finally{this.attemptingReconnect=!1}}})}getNextRetryDelay(e){try{return this.reconnectPolicy.nextRetryDelayInMs(e)}catch(e){this.log.warn("encountered error in reconnect policy",Object.assign(Object.assign({},this.logContext),{error:e}))}return null}restartConnection(e){return iK(this,void 0,void 0,function*(){var t,i,n;try{let i;if(!this.url||!this.token)throw new re("could not reconnect, url or token not saved");this.log.info("reconnecting, attempt: ".concat(this.reconnectAttempts),this.logContext),this.emit(ea.Restarting),this.client.isDisconnected||(yield this.client.sendLeave()),yield this.cleanupPeerConnections(),yield this.cleanupClient();try{if(!this.signalOpts)throw this.log.warn("attempted connection restart, without signal options present",this.logContext),new aV;i=yield this.join(null!=e?e:this.url,this.token,this.signalOpts)}catch(e){if(e instanceof n4&&0===e.reason)throw new re("could not reconnect, token might be expired");throw new aV}if(this.shouldFailNext)throw this.shouldFailNext=!1,Error("simulated failure");if(this.client.setReconnected(),this.emit(ea.SignalRestarted,i),yield this.waitForPCReconnected(),this.client.currentState!==ed.CONNECTED)throw new aV("Signal connection got severed during reconnect");null===(t=this.regionUrlProvider)||void 0===t||t.resetAttempts(),this.emit(ea.Restarted)}catch(t){let e=yield null===(i=this.regionUrlProvider)||void 0===i?void 0:i.getNextBestRegionUrl();if(e){yield this.restartConnection(e);return}throw null===(n=this.regionUrlProvider)||void 0===n||n.resetAttempts(),t}})}resumeConnection(e){return iK(this,void 0,void 0,function*(){var t;let i;if(!this.url||!this.token)throw new re("could not reconnect, url or token not saved");if(!this.pcManager)throw new re("publisher and subscriber connections unset");this.log.info("resuming signal connection, attempt ".concat(this.reconnectAttempts),this.logContext),this.emit(ea.Resuming);try{this.setupSignalClientCallbacks(),i=yield this.client.reconnect(this.url,this.token,this.participantSid,e)}catch(t){let e="";if(t instanceof Error&&(e=t.message,this.log.error(t.message,Object.assign(Object.assign({},this.logContext),{error:t}))),t instanceof n4&&0===t.reason)throw new re("could not reconnect, token might be expired");if(t instanceof n4&&4===t.reason)throw t;throw new aV(e)}if(this.emit(ea.SignalResumed),i){let e=this.makeRTCConfiguration(i);this.pcManager.updateConfiguration(e)}else this.log.warn("Did not receive reconnect response",this.logContext);if(this.shouldFailNext)throw this.shouldFailNext=!1,Error("simulated failure");if(yield this.pcManager.triggerIceRestart(),yield this.waitForPCReconnected(),this.client.currentState!==ed.CONNECTED)throw new aV("Signal connection got severed during reconnect");this.client.setReconnected(),(null===(t=this.reliableDC)||void 0===t?void 0:t.readyState)==="open"&&null===this.reliableDC.id&&this.createDataChannels(),this.emit(ea.Resumed)})}waitForPCInitialConnection(e,t){return iK(this,void 0,void 0,function*(){if(!this.pcManager)throw new re("PC manager is closed");yield this.pcManager.ensurePCTransportConnection(t,e)})}waitForPCReconnected(){return iK(this,void 0,void 0,function*(){this.pcState=eh.Reconnecting,this.log.debug("waiting for peer connection to reconnect",this.logContext);try{if(yield rP(2e3),!this.pcManager)throw new re("PC manager is closed");yield this.pcManager.ensurePCTransportConnection(void 0,this.peerConnectionTimeout),this.pcState=eh.Connected}catch(e){throw this.pcState=eh.Disconnected,new n4("could not establish PC connection, ".concat(e.message))}})}sendDataPacket(e,t){return iK(this,void 0,void 0,function*(){let i=e.toBinary();yield this.ensurePublisherConnected(t);let n=this.dataChannelForKind(t);n&&n.send(i),this.updateAndEmitDCBufferStatus(t)})}ensureDataTransportConnected(e){return iK(this,arguments,void 0,function(e){var t=this;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.subscriberPrimary;return function*(){var n;if(!t.pcManager)throw new re("PC manager is closed");let r=i?t.pcManager.subscriber:t.pcManager.publisher,a=i?"Subscriber":"Publisher";if(!r)throw new n4("".concat(a," connection not set"));let o=!1;i||t.dataChannelForKind(e,i)||(t.createDataChannels(),o=!0),o||i||t.pcManager.publisher.isICEConnected||"checking"===t.pcManager.publisher.getICEConnectionState()||(o=!0),o&&t.negotiate();let s=t.dataChannelForKind(e,i);if((null==s?void 0:s.readyState)==="open")return;let c=new Date().getTime()+t.peerConnectionTimeout;for(;new Date().getTime()iK(this,void 0,void 0,function*(){if(!this.pcManager){t(new rt("PC manager is closed"));return}this.pcManager.requirePublisher(),0!=this.pcManager.publisher.getTransceivers().length||this.lossyDC||this.reliableDC||this.createDataChannels();let i=new AbortController,n=()=>{i.abort(),this.log.debug("engine disconnected while negotiation was ongoing",this.logContext),e()};this.isClosed&&t("cannot negotiate on closed engine"),this.on(ea.Closing,n),this.pcManager.publisher.once(al.RTPVideoPayloadTypes,e=>{let t=new Map;e.forEach(e=>{let i=e.codec.toLowerCase();ru.includes(i)&&t.set(e.payload,i)}),this.emit(ea.RTPVideoMapUpdate,t)});try{yield this.pcManager.negotiate(i),e()}catch(e){e instanceof rt&&(this.fullReconnectOnNext=!0),this.handleDisconnect("negotiation",tx.RR_UNKNOWN),t(e)}finally{this.off(ea.Closing,n)}}))})}dataChannelForKind(e,t){if(t){if(e===tq.LOSSY)return this.lossyDCSub;if(e===tq.RELIABLE)return this.reliableDCSub}else{if(e===tq.LOSSY)return this.lossyDC;if(e===tq.RELIABLE)return this.reliableDC}}sendSyncState(e,t){var i,n;if(!this.pcManager){this.log.warn("sync state cannot be sent without peer connection setup",this.logContext);return}let r=this.pcManager.subscriber.getLocalDescription(),a=this.pcManager.subscriber.getRemoteDescription(),o=null===(n=null===(i=this.signalOpts)||void 0===i?void 0:i.autoSubscribe)||void 0===n||n,s=[],c=[];e.forEach(e=>{e.isDesired!==o&&s.push(e.trackSid),e.isEnabled||c.push(e.trackSid)}),this.client.sendSyncState(new iD({answer:r?r9({sdp:r.sdp,type:r.type}):void 0,offer:a?r9({sdp:a.sdp,type:a.type}):void 0,subscription:new id({trackSids:s,subscribe:!o,participantTracks:[]}),publishTracks:function(e){let t=[];return e.forEach(e=>{void 0!==e.track&&t.push(new io({cid:e.track.mediaStreamID,track:e.trackInfo}))}),t}(t),dataChannels:this.dataChannelsInfo(),trackSidsDisabled:c}))}failNext(){this.shouldFailNext=!0}dataChannelsInfo(){let e=[],t=(t,i)=>{(null==t?void 0:t.id)!==void 0&&null!==t.id&&e.push(new iN({label:t.label,id:t.id,target:i}))};return t(this.dataChannelForKind(tq.LOSSY),t3.PUBLISHER),t(this.dataChannelForKind(tq.RELIABLE),t3.PUBLISHER),t(this.dataChannelForKind(tq.LOSSY,!0),t3.SUBSCRIBER),t(this.dataChannelForKind(tq.RELIABLE,!0),t3.SUBSCRIBER),e}clearReconnectTimeout(){this.reconnectTimeout&&rc.clearTimeout(this.reconnectTimeout)}clearPendingReconnect(){this.clearReconnectTimeout(),this.reconnectAttempts=0}registerOnLineListener(){rA()&&window.addEventListener("online",this.handleBrowserOnLine)}deregisterOnLineListener(){rA()&&window.removeEventListener("online",this.handleBrowserOnLine)}}class aV extends Error{}class aq{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 rL(this.serverUrl)}getServerUrl(){return this.serverUrl}getNextBestRegionUrl(e){return iK(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));let t=this.regionSettings.regions.filter(e=>!this.attemptedRegions.find(t=>t.url===e.url));if(!(t.length>0))return null;{let e=t[0];return this.attemptedRegions.push(e),iQ.debug("next region: ".concat(e.region)),e.url}})}resetAttempts(){this.attemptedRegions=[]}fetchRegionSettings(e){return iK(this,void 0,void 0,function*(){var t;let i=yield fetch("".concat((t=this.serverUrl,"".concat(t.protocol.replace("ws","http"),"//").concat(t.host,"/settings")),"/regions"),{headers:{authorization:"Bearer ".concat(this.token)},signal:e});if(i.ok){let e=yield i.json();return this.lastUpdateAt=Date.now(),e}throw new n4("Could not fetch region settings: ".concat(i.statusText),401===i.status?0:void 0,i.status)})}setServerReportedRegions(e){this.regionSettings=e,this.lastUpdateAt=Date.now()}}class aQ extends rg{constructor(e,t,i,n,r){super(e,i,r),this.sid=t,this.receiver=n}setMuted(e){this.isMuted!==e&&(this.isMuted=e,this._mediaStreamTrack.enabled=!e,this.emit(e?eo.Muted:eo.Unmuted,this))}setMediaStream(e){this.mediaStream=e;let t=i=>{i.track===this._mediaStreamTrack&&(e.removeEventListener("removetrack",t),this.receiver=void 0,this._currentBitrate=0,this.emit(eo.Ended,this))};e.addEventListener("removetrack",t)}start(){this.startMonitor(),super.enable()}stop(){this.stopMonitor(),super.disable()}getRTCStatsReport(){return iK(this,void 0,void 0,function*(){var e;if(null===(e=this.receiver)||void 0===e?void 0:e.getStats)return yield this.receiver.getStats()})}startMonitor(){this.monitorInterval||(this.monitorInterval=setInterval(()=>this.monitorReceiver(),2e3)),"undefined"!=typeof RTCRtpReceiver&&"getSynchronizationSources"in RTCRtpReceiver&&this.registerTimeSyncUpdate()}registerTimeSyncUpdate(){let e=()=>{var t;this.timeSyncHandle=requestAnimationFrame(()=>e());let i=null===(t=this.receiver)||void 0===t?void 0:t.getSynchronizationSources()[0];if(i){let{timestamp:e,rtpTimestamp:t}=i;t&&this.rtpTimestamp!==t&&(this.emit(eo.TimeSyncUpdate,{timestamp:e,rtpTimestamp:t}),this.rtpTimestamp=t)}};e()}}class aW extends aQ{constructor(e,t,i,n,r,a){super(e,t,rg.Kind.Audio,i,a),this.monitorReceiver=()=>iK(this,void 0,void 0,function*(){if(!this.receiver){this._currentBitrate=0;return}let e=yield this.getReceiverStats();e&&this.prevStats&&this.receiver&&(this._currentBitrate=ab(e,this.prevStats)),this.prevStats=e}),this.audioContext=n,this.webAudioPluginNodes=[],r&&(this.sinkId=r.deviceId)}setVolume(e){var t;for(let i of this.attachedElements)this.audioContext?null===(t=this.gainNode)||void 0===t||t.gain.setTargetAtTime(e,0,.1):i.volume=e;r_()&&this._mediaStreamTrack._setVolume(e),this.elementVolume=e}getVolume(){if(this.elementVolume)return this.elementVolume;if(r_())return 1;let e=0;return this.attachedElements.forEach(t=>{t.volume>e&&(e=t.volume)}),e}setSinkId(e){return iK(this,void 0,void 0,function*(){this.sinkId=e,yield Promise.all(this.attachedElements.map(t=>{if(rO(t))return t.setSinkId(e)}))})}attach(e){let t=0===this.attachedElements.length;return e?super.attach(e):e=super.attach(),this.sinkId&&rO(e)&&e.setSinkId(this.sinkId),this.audioContext&&t&&(this.log.debug("using audio context mapping",this.logContext),this.connectWebAudio(this.audioContext,e),e.volume=0,e.muted=!0),this.elementVolume&&this.setVolume(this.elementVolume),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(e,t){this.disconnectWebAudio(),this.sourceNode=e.createMediaStreamSource(t.srcObject);let i=this.sourceNode;this.webAudioPluginNodes.forEach(e=>{i.connect(e),i=e}),this.gainNode=e.createGain(),i.connect(this.gainNode),this.gainNode.connect(e.destination),this.elementVolume&&this.gainNode.gain.setTargetAtTime(this.elementVolume,0,.1),"running"!==e.state&&e.resume().then(()=>{"running"!==e.state&&this.emit(eo.AudioPlaybackFailed,Error("Audio Context couldn't be started automatically"))}).catch(e=>{this.emit(eo.AudioPlaybackFailed,e)})}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 iK(this,void 0,void 0,function*(){let e;if(this.receiver&&this.receiver.getStats)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 aG extends aQ{constructor(e,t,i,n,r){super(e,t,rg.Kind.Video,i,r),this.elementInfos=[],this.monitorReceiver=()=>iK(this,void 0,void 0,function*(){if(!this.receiver){this._currentBitrate=0;return}let e=yield this.getReceiverStats();e&&this.prevStats&&this.receiver&&(this._currentBitrate=ab(e,this.prevStats)),this.prevStats=e}),this.debouncedHandleResize=ri(()=>{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?rb(this._mediaStreamTrack,t):rv(this._mediaStreamTrack,t)})}attach(e){if(e?super.attach(e):e=super.attach(),this.adaptiveStreamSettings&&void 0===this.elementInfos.find(t=>t.element===e)){let t=new az(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()):this.log.warn("visibility resize observer not triggered",this.logContext)}stopObservingElementInfo(e){if(!this.isAdaptiveStream){this.log.warn("stopObservingElementInfo ignored",this.logContext);return}for(let t of this.elementInfos.filter(t=>t===e))t.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);for(let e of t=super.detach())this.stopObservingElement(e);return t}getDecoderImplementation(){var e;return null===(e=this.prevStats)||void 0===e?void 0:e.decoderImplementation}getReceiverStats(){return iK(this,void 0,void 0,function*(){let e;if(!this.receiver||!this.receiver.getStats)return;let t=yield this.receiver.getStats(),i="",n=new Map;return t.forEach(t=>{"inbound-rtp"===t.type?(i=t.codecId,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}):"codec"===t.type&&n.set(t.id,t)}),e&&""!==i&&n.get(i)&&(e.mimeType=n.get(i).mimeType),e})}stopObservingElement(e){for(let t of this.elementInfos.filter(t=>t.element===e))this.stopObservingElementInfo(t)}handleAppVisibilityChanged(){let e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return iK(this,void 0,void 0,function*(){yield e.handleAppVisibilityChanged.call(this),this.isAdaptiveStream&&this.updateVisibility()})}updateVisibility(){var e,t;let i=this.elementInfos.reduce((e,t)=>Math.max(e,t.visibilityChangedAt||0),0),n=(null===(t=null===(e=this.adaptiveStreamSettings)||void 0===e?void 0:e.pauseVideoInBackground)||void 0===t||!!t)&&this.isInBackground,r=this.elementInfos.some(e=>e.pictureInPicture),a=this.elementInfos.some(e=>e.visible)&&!n||r;if(this.lastVisible!==a){if(!a&&Date.now()-i<100){rc.setTimeout(()=>{this.updateVisibility()},100);return}this.lastVisible=a,this.emit(eo.VisibilityChanged,a,this)}}updateDimensions(){var e,t;let i=0,n=0,r=this.getPixelDensity();for(let e of this.elementInfos){let t=e.width()*r,a=e.height()*r;t+a>i+n&&(i=t,n=a)}((null===(e=this.lastDimensions)||void 0===e?void 0:e.width)!==i||(null===(t=this.lastDimensions)||void 0===t?void 0:t.height)!==n)&&(this.lastDimensions={width:i,height:n},this.emit(eo.VideoDimensionsChanged,this.lastDimensions,this))}getPixelDensity(){var e;let t=null===(e=this.adaptiveStreamSettings)||void 0===e?void 0:e.pixelDensity;return"screen"===t?rF():t?t:rF()>2?2:1}}class az{get visible(){return this.isPiP||this.isIntersecting}get pictureInPicture(){return this.isPiP}constructor(e,t){this.onVisibilityChanged=e=>{var t;let{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:aK(e),this.isPiP=rA()&&document.pictureInPictureElement===e,this.visibilityChangedAt=0}width(){return this.element.clientWidth}height(){return this.element.clientHeight}observe(){this.isIntersecting=aK(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,rz().observe(this.element),rW().observe(this.element),this.element.addEventListener("enterpictureinpicture",this.onEnterPiP),this.element.addEventListener("leavepictureinpicture",this.onLeavePiP)}stopObserving(){var e,t;null===(e=rz())||void 0===e||e.unobserve(this.element),null===(t=rW())||void 0===t||t.unobserve(this.element),this.element.removeEventListener("enterpictureinpicture",this.onEnterPiP),this.element.removeEventListener("leavepictureinpicture",this.onLeavePiP)}}function aK(e){let t=e.offsetTop,i=e.offsetLeft,n=e.offsetWidth,r=e.offsetHeight,{hidden:a}=e,{opacity:o,display:s}=getComputedStyle(e);for(;e.offsetParent;)t+=(e=e.offsetParent).offsetTop,i+=e.offsetLeft;return twindow.pageYOffset&&i+n>window.pageXOffset&&!a&&(""===o||parseFloat(o)>0)&&"none"!==s}class aH extends ne.EventEmitter{constructor(e,t,i,n){var r;super(),this.metadataMuted=!1,this.encryption=tU.NONE,this.log=iQ,this.handleMuted=()=>{this.emit(eo.Muted)},this.handleUnmuted=()=>{this.emit(eo.Unmuted)},this.log=iW(null!==(r=null==n?void 0:n.loggerName)&&void 0!==r?r:$.Publication),this.loggerContextCb=this.loggerContextCb,this.setMaxListeners(100),this.kind=e,this.trackSid=t,this.trackName=i,this.source=rg.Source.Unknown}setTrack(e){this.track&&(this.track.off(eo.Muted,this.handleMuted),this.track.off(eo.Unmuted,this.handleUnmuted)),this.track=e,e&&(e.on(eo.Muted,this.handleMuted),e.on(eo.Unmuted,this.handleUnmuted))}get logContext(){var e;return Object.assign(Object.assign({},null===(e=this.loggerContextCb)||void 0===e?void 0:e.call(this)),rw(this))}get isMuted(){return this.metadataMuted}get isEnabled(){return!0}get isSubscribed(){return void 0!==this.track}get isEncrypted(){return this.encryption!==tU.NONE}get audioTrack(){if(this.track instanceof ay||this.track instanceof aW)return this.track}get videoTrack(){if(this.track instanceof aN||this.track instanceof aG)return this.track}updateInfo(e){this.trackSid=e.sid,this.trackName=e.name,this.source=rg.sourceFromProto(e.source),this.mimeType=e.mimeType,this.kind===rg.Kind.Video&&e.width>0&&(this.dimensions={width:e.width,height:e.height},this.simulcasted=e.simulcast),this.encryption=e.encryption,this.trackInfo=e,this.log.debug("update publication info",Object.assign(Object.assign({},this.logContext),{info:e}))}}(V=(B=aH||(aH={})).SubscriptionStatus||(B.SubscriptionStatus={})).Desired="desired",V.Subscribed="subscribed",V.Unsubscribed="unsubscribed",(q=B.PermissionStatus||(B.PermissionStatus={})).Allowed="allowed",q.NotAllowed="not_allowed";class aJ extends aH{get isUpstreamPaused(){var e;return null===(e=this.track)||void 0===e?void 0:e.isUpstreamPaused}constructor(e,t,i,n){super(e,t.sid,t.name,n),this.track=void 0,this.handleTrackEnded=()=>{this.emit(eo.Ended)},this.updateInfo(t),this.setTrack(i)}setTrack(e){this.track&&this.track.off(eo.Ended,this.handleTrackEnded),super.setTrack(e),e&&e.on(eo.Ended,this.handleTrackEnded)}get isMuted(){return this.track?this.track.isMuted:super.isMuted}get audioTrack(){return super.audioTrack}get videoTrack(){return super.videoTrack}mute(){return iK(this,void 0,void 0,function*(){var e;return null===(e=this.track)||void 0===e?void 0:e.mute()})}unmute(){return iK(this,void 0,void 0,function*(){var e;return null===(e=this.track)||void 0===e?void 0:e.unmute()})}pauseUpstream(){return iK(this,void 0,void 0,function*(){var e;yield null===(e=this.track)||void 0===e?void 0:e.pauseUpstream()})}resumeUpstream(){return iK(this,void 0,void 0,function*(){var e;yield null===(e=this.track)||void 0===e?void 0:e.resumeUpstream()})}getTrackFeatures(){var e;if(!(this.track instanceof ay))return[];{let t=this.track.mediaStreamTrack.getSettings(),i=new Set;return t.autoGainControl&&i.add(tO.TF_AUTO_GAIN_CONTROL),t.echoCancellation&&i.add(tO.TF_ECHO_CANCELLATION),t.noiseSuppression&&i.add(tO.TF_NOISE_SUPPRESSION),t.channelCount&&t.channelCount>1&&i.add(tO.TF_STEREO),(null===(e=this.options)||void 0===e?void 0:e.dtx)||i.add(tO.TF_STEREO),this.track.enhancedNoiseCancellation&&i.add(tO.TF_ENHANCED_NOISE_CANCELLATION),Array.from(i.values())}}}(Q=ep||(ep={})).Excellent="excellent",Q.Good="good",Q.Poor="poor",Q.Lost="lost",Q.Unknown="unknown";class a$ extends ne.EventEmitter{get logContext(){var e,t;return Object.assign({},null===(t=null===(e=this.loggerOptions)||void 0===e?void 0:e.loggerContextCb)||void 0===t?void 0:t.call(e))}get isEncrypted(){return this.trackPublications.size>0&&Array.from(this.trackPublications.values()).every(e=>e.isEncrypted)}get isAgent(){var e,t;return null!==(t=null===(e=this.permissions)||void 0===e?void 0:e.agent)&&void 0!==t&&t}constructor(e,t,i,n,r){var a;super(),this.audioLevel=0,this.isSpeaking=!1,this._connectionQuality=ep.Unknown,this.log=iQ,this.log=iW(null!==(a=null==r?void 0:r.loggerName)&&void 0!==a?a:$.Participant),this.loggerOptions=r,this.setMaxListeners(100),this.sid=e,this.identity=t,this.name=i,this.metadata=n,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=new Map}getTrackPublications(){return Array.from(this.trackPublications.values())}getTrackPublication(e){for(let[,t]of this.trackPublications)if(t.source===e)return t}getTrackPublicationByName(e){for(let[,t]of this.trackPublications)if(t.trackName===e)return t}get connectionQuality(){return this._connectionQuality}get isCameraEnabled(){var e;let t=this.getTrackPublication(rg.Source.Camera);return!(null===(e=null==t?void 0:t.isMuted)||void 0===e||e)}get isMicrophoneEnabled(){var e;let t=this.getTrackPublication(rg.Source.Microphone);return!(null===(e=null==t?void 0:t.isMuted)||void 0===e||e)}get isScreenShareEnabled(){return!!this.getTrackPublication(rg.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,this.log.trace("update participant info",Object.assign(Object.assign({},this.logContext),{info:e})),!0)}_setMetadata(e){let t=this.metadata!==e,i=this.metadata;this.metadata=e,t&&this.emit(er.ParticipantMetadataChanged,i)}_setName(e){let t=this.name!==e;this.name=e,t&&this.emit(er.ParticipantNameChanged,e)}setPermissions(e){var t,i,n,r,a;let o=this.permissions,s=e.canPublish!==(null===(t=this.permissions)||void 0===t?void 0:t.canPublish)||e.canSubscribe!==(null===(i=this.permissions)||void 0===i?void 0:i.canSubscribe)||e.canPublishData!==(null===(n=this.permissions)||void 0===n?void 0:n.canPublishData)||e.hidden!==(null===(r=this.permissions)||void 0===r?void 0:r.hidden)||e.recorder!==(null===(a=this.permissions)||void 0===a?void 0:a.recorder)||e.canPublishSources.length!==this.permissions.canPublishSources.length||e.canPublishSources.some((e,t)=>{var i;return e!==(null===(i=this.permissions)||void 0===i?void 0:i.canPublishSources[t])});return this.permissions=e,s&&this.emit(er.ParticipantPermissionsChanged,o),s}setIsSpeaking(e){e!==this.isSpeaking&&(this.isSpeaking=e,e&&(this.lastSpokeAt=new Date),this.emit(er.IsSpeakingChanged,e))}setConnectionQuality(e){let t=this._connectionQuality;this._connectionQuality=function(e){switch(e){case tE.EXCELLENT:return ep.Excellent;case tE.GOOD:return ep.Good;case tE.POOR:return ep.Poor;case tE.LOST:return ep.Lost;default:return ep.Unknown}}(e),t!==this._connectionQuality&&this.emit(er.ConnectionQualityChanged,this._connectionQuality)}setAudioContext(e){this.audioContext=e,this.audioTrackPublications.forEach(t=>(t.track instanceof aW||t.track instanceof ay)&&t.track.setAudioContext(e))}addTrackPublication(e){switch(e.on(eo.Muted,()=>{this.emit(er.TrackMuted,e)}),e.on(eo.Unmuted,()=>{this.emit(er.TrackUnmuted,e)}),e.track&&(e.track.sid=e.trackSid),this.trackPublications.set(e.trackSid,e),e.kind){case rg.Kind.Audio:this.audioTrackPublications.set(e.trackSid,e);break;case rg.Kind.Video:this.videoTrackPublications.set(e.trackSid,e)}}}class aY extends a${constructor(e,t,i,n){super(e,t,void 0,void 0,{loggerName:n.loggerName,loggerContextCb:()=>this.engine.logContext}),this.pendingPublishing=new Set,this.pendingPublishPromises=new Map,this.participantTrackPermissions=[],this.allParticipantsAllowedToSubscribe=!0,this.encryptionType=tU.NONE,this.handleReconnecting=()=>{this.reconnectFuture||(this.reconnectFuture=new rJ)},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=>this.log.warn(e.message,this.logContext)),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=()=>{this.log.debug("updating track subscription permissions",Object.assign(Object.assign({},this.logContext),{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 Error("Invalid track permission, must provide at least one of participantIdentity and participantSid");return new iI({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)=>{if(void 0===t&&(t=!0),!e.sid){this.log.error("could not update mute status for unpublished track",Object.assign(Object.assign({},this.logContext),rw(e)));return}this.engine.updateMuteStatus(e.sid,t)},this.onTrackUpstreamPaused=e=>{this.log.debug("upstream paused",Object.assign(Object.assign({},this.logContext),rw(e))),this.onTrackMuted(e,!0)},this.onTrackUpstreamResumed=e=>{this.log.debug("upstream resumed",Object.assign(Object.assign({},this.logContext),rw(e))),this.onTrackMuted(e,e.isMuted)},this.onTrackFeatureUpdate=e=>{let t=this.audioTrackPublications.get(e.sid);if(!t){this.log.warn("Could not update local audio track settings, missing publication for track ".concat(e.sid),this.logContext);return}this.engine.client.sendUpdateLocalAudioTrack(t.trackSid,t.getTrackFeatures())},this.handleSubscribedQualityUpdate=e=>iK(this,void 0,void 0,function*(){if(!(null===(o=this.roomOptions)||void 0===o?void 0:o.dynacast))return;let t=this.videoTrackPublications.get(e.trackSid);if(!t){this.log.warn("received subscribed quality update for unknown track",Object.assign(Object.assign({},this.logContext),{trackSid:e.trackSid}));return}if(e.subscribedCodecs.length>0){if(!t.videoTrack)return;let u=yield t.videoTrack.setPublishingCodecs(e.subscribedCodecs);try{for(var i,n,r,a,o,s,c,l=!0,d=iH(u);!(i=(c=yield d.next()).done);l=!0)a=c.value,l=!1,function(e){return!!rd.find(t=>t===e)}(a)&&(this.log.debug("publish ".concat(a," for ").concat(t.videoTrack.sid),Object.assign(Object.assign({},this.logContext),rw(t))),yield this.publishAdditionalCodecForTrack(t.videoTrack,a,t.options))}catch(e){n={error:e}}finally{try{!l&&!i&&(r=d.return)&&(yield r.call(d))}finally{if(n)throw n.error}}}else e.subscribedQualities.length>0&&(yield null===(s=t.videoTrack)||void 0===s?void 0:s.setPublishingLayers(e.subscribedQualities))}),this.handleLocalTrackUnpublished=e=>{let t=this.trackPublications.get(e.trackSid);if(!t){this.log.warn("received unpublished event for unknown track",Object.assign(Object.assign({},this.logContext),{trackSid:e.trackSid}));return}this.unpublishTrack(t.track)},this.handleTrackEnded=e=>iK(this,void 0,void 0,function*(){if(e.source===rg.Source.ScreenShare||e.source===rg.Source.ScreenShareAudio)this.log.debug("unpublishing local track due to TrackEnded",Object.assign(Object.assign({},this.logContext),rw(e))),this.unpublishTrack(e);else if(e.isUserProvided)yield e.mute();else if(e instanceof ay||e instanceof aN)try{if(rA())try{let t=yield null==navigator?void 0:navigator.permissions.query({name:e.source===rg.Source.Camera?"camera":"microphone"});if(t&&"denied"===t.state)throw this.log.warn("user has revoked access to ".concat(e.source),Object.assign(Object.assign({},this.logContext),rw(e))),t.onchange=()=>{"denied"!==t.state&&(e.isMuted||e.restartTrack(),t.onchange=null)},Error("GetUserMedia Permission denied")}catch(e){}e.isMuted||(this.log.debug("track ended, attempting to use a different device",Object.assign(Object.assign({},this.logContext),rw(e))),yield e.restartTrack())}catch(t){this.log.warn("could not restart track, muting instead",Object.assign(Object.assign({},this.logContext),rw(e))),yield e.mute()}}),this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.trackPublications=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!==tU.NONE}getTrackPublication(e){let t=super.getTrackPublication(e);if(t)return t}getTrackPublicationByName(e){let t=super.getTrackPublicationByName(e);if(t)return t}setupEngine(e){this.engine=e,this.engine.on(ea.RemoteMute,(e,t)=>{let i=this.trackPublications.get(e);i&&i.track&&(t?i.mute():i.unmute())}),this.engine.on(ea.Connected,this.handleReconnected).on(ea.SignalRestarted,this.handleReconnected).on(ea.SignalResumed,this.handleReconnected).on(ea.Restarting,this.handleReconnecting).on(ea.Resuming,this.handleReconnecting).on(ea.LocalTrackUnpublished,this.handleLocalTrackUnpublished).on(ea.SubscribedQualityUpdate,this.handleSubscribedQualityUpdate).on(ea.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(rg.Source.Camera,e,t,i)}setMicrophoneEnabled(e,t,i){return this.setTrackEnabled(rg.Source.Microphone,e,t,i)}setScreenShareEnabled(e,t,i){return this.setTrackEnabled(rg.Source.ScreenShare,e,t,i)}setPermissions(e){let t=this.permissions,i=super.setPermissions(e);return i&&t&&this.emit(er.ParticipantPermissionsChanged,t),i}setE2EEEnabled(e){return iK(this,void 0,void 0,function*(){this.encryptionType=e?tU.GCM:tU.NONE,yield this.republishAllTracks(void 0,!1)})}setTrackEnabled(e,t,i,n){return iK(this,void 0,void 0,function*(){this.log.debug("setTrackEnabled",Object.assign(Object.assign({},this.logContext),{source:e,enabled:t}));let r=this.getTrackPublication(e);if(t){if(r)yield r.unmute();else{let t;if(this.pendingPublishing.has(e)){this.log.info("skipping duplicate published source",Object.assign(Object.assign({},this.logContext),{source:e}));return}this.pendingPublishing.add(e);try{switch(e){case rg.Source.Camera:t=yield this.createTracks({video:null==i||i});break;case rg.Source.Microphone:t=yield this.createTracks({audio:null==i||i});break;case rg.Source.ScreenShare:t=yield this.createScreenTracks(Object.assign({},i));break;default:throw new n7(e)}let a=[];for(let e of t)this.log.info("publishing track",Object.assign(Object.assign({},this.logContext),rw(e))),a.push(this.publishTrack(e,n));let o=yield Promise.all(a);[r]=o}catch(e){throw null==t||t.forEach(e=>{e.stop()}),e instanceof Error&&!(e instanceof n7)&&this.emit(er.MediaDevicesError,e),e}finally{this.pendingPublishing.delete(e)}}}else if(r&&r.track){if(e===rg.Source.ScreenShare){r=yield this.unpublishTrack(r.track);let e=this.getTrackPublication(rg.Source.ScreenShareAudio);e&&e.track&&this.unpublishTrack(e.track)}else yield r.mute()}return r})}enableCameraAndMicrophone(){return iK(this,void 0,void 0,function*(){if(!(this.pendingPublishing.has(rg.Source.Camera)||this.pendingPublishing.has(rg.Source.Microphone))){this.pendingPublishing.add(rg.Source.Camera),this.pendingPublishing.add(rg.Source.Microphone);try{let e=yield this.createTracks({audio:!0,video:!0});yield Promise.all(e.map(e=>this.publishTrack(e)))}finally{this.pendingPublishing.delete(rg.Source.Camera),this.pendingPublishing.delete(rg.Source.Microphone)}}})}createTracks(e){return iK(this,void 0,void 0,function*(){var t,i;let n;let r=rT(ry(e,null===(t=this.roomOptions)||void 0===t?void 0:t.audioCaptureDefaults,null===(i=this.roomOptions)||void 0===i?void 0:i.videoCaptureDefaults));try{n=yield navigator.mediaDevices.getUserMedia(r)}catch(e){throw e instanceof Error&&(r.audio&&(this.microphoneError=e),r.video&&(this.cameraError=e)),e}return r.audio&&(this.microphoneError=void 0,this.emit(er.AudioStreamAcquired)),r.video&&(this.cameraError=void 0),n.getTracks().map(t=>{let i;let a="audio"===t.kind;a?e.audio:e.video;let o=a?r.audio:r.video;"boolean"!=typeof o&&(i=o);let s=ak(t,i,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});return s.kind===rg.Kind.Video?s.source=rg.Source.Camera:s.kind===rg.Kind.Audio&&(s.source=rg.Source.Microphone),s.mediaStream=n,s})})}createScreenTracks(e){return iK(this,void 0,void 0,function*(){var t,i,n;let r;if(void 0===e&&(e={}),void 0===navigator.mediaDevices.getDisplayMedia)throw new n9("getDisplayMedia not supported");void 0===e.resolution&&!function(){let e=rr();return(null==e?void 0:e.name)==="Safari"&&e.version.startsWith("17.")}()&&(e.resolution=rm.h1080fps30.resolution);let a=(r=null===(i=(t=e).video)||void 0===i||i,t.resolution&&t.resolution.width>0&&t.resolution.height>0&&(r="boolean"==typeof r?{}:r,r=rD()?Object.assign(Object.assign({},r),{width:{max:t.resolution.width},height:{max:t.resolution.height},frameRate:t.resolution.frameRate}):Object.assign(Object.assign({},r),{width:{ideal:t.resolution.width},height:{ideal:t.resolution.height},frameRate:t.resolution.frameRate})),{audio:null!==(n=t.audio)&&void 0!==n&&n,video:r,controller:t.controller,selfBrowserSurface:t.selfBrowserSurface,surfaceSwitching:t.surfaceSwitching,systemAudio:t.systemAudio,preferCurrentTab:t.preferCurrentTab}),o=yield navigator.mediaDevices.getDisplayMedia(a),s=o.getVideoTracks();if(0===s.length)throw new n7("no video track found");let c=new aN(s[0],void 0,!1,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});c.source=rg.Source.ScreenShare,e.contentHint&&(c.mediaStreamTrack.contentHint=e.contentHint);let l=[c];if(o.getAudioTracks().length>0){this.emit(er.AudioStreamAcquired);let e=new ay(o.getAudioTracks()[0],void 0,!1,this.audioContext,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});e.source=rg.Source.ScreenShareAudio,l.push(e)}return l})}publishTrack(e,t){return iK(this,void 0,void 0,function*(){var i,n,r,a;let o,s;if(e instanceof ay&&e.setAudioContext(this.audioContext),yield null===(i=this.reconnectFuture)||void 0===i?void 0:i.promise,e instanceof r1&&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 rg.Source.Microphone:t="audioinput";break;case rg.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 ay(e,o,!0,this.audioContext,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});break;case"video":e=new aN(e,o,!0,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});break;default:throw new n7("unsupported MediaStreamTrack kind ".concat(e.kind))}else e.updateLoggerOptions({loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});if(this.trackPublications.forEach(t=>{t.track&&t.track===e&&(s=t)}),s)return this.log.warn("track has already been published, skipping",Object.assign(Object.assign({},this.logContext),rw(s))),s;let c="channelCount"in e.mediaStreamTrack.getSettings()&&2===e.mediaStreamTrack.getSettings().channelCount||2===e.mediaStreamTrack.getConstraints().channelCount,l=null!==(n=null==t?void 0:t.forceStereo)&&void 0!==n?n:c;l&&(t||(t={}),void 0===t.dtx&&this.log.info("Opus DTX will be disabled for stereo tracks by default. Enable them explicitly to make it work.",Object.assign(Object.assign({},this.logContext),rw(e))),void 0===t.red&&this.log.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!==(a=t.red)&&void 0!==a||(t.red=!1));let d=Object.assign(Object.assign({},this.roomOptions.publishDefaults),t);!function(){let e=rr(),t="17.2";if(e)return"Safari"!==e.name&&"iOS"!==e.os||!!("iOS"===e.os&&e.osVersion&&rB(t,e.osVersion)>=0)||!!("Safari"===e.name&&rB(t,e.version)>=0)}()&&this.roomOptions.e2ee&&(this.log.info("End-to-end encryption is set up, simulcast publishing will be disabled on Safari versions and iOS browsers running iOS < v17.2",Object.assign({},this.logContext)),d.simulcast=!1),d.source&&(e.source=d.source);let u=this.publish(e,d,l);this.pendingPublishPromises.set(e,u);try{return yield u}catch(e){throw e}finally{this.pendingPublishPromises.delete(e)}})}publish(e,t,i){return iK(this,void 0,void 0,function*(){var n,r,a,o,s,c,l,d,u,h,p,m,f;let g,v;Array.from(this.trackPublications.values()).find(t=>e instanceof r1&&t.source===e.source)&&e.source!==rg.Source.Unknown&&this.log.info("publishing a second track with the same source: ".concat(e.source),Object.assign(Object.assign({},this.logContext),rw(e))),t.stopMicTrackOnMute&&e instanceof ay&&(e.stopOnMute=!0),e.source===rg.Source.ScreenShare&&rM()&&(t.simulcast=!1),"av1"===t.videoCodec&&!function(){if(!("getCapabilities"in RTCRtpSender)||rD())return!1;let e=RTCRtpSender.getCapabilities("video"),t=!1;if(e){for(let i of e.codecs)if("video/AV1"===i.mimeType){t=!0;break}}return t}()&&(t.videoCodec=void 0),"vp9"===t.videoCodec&&!function(){if(!("getCapabilities"in RTCRtpSender)||rM())return!1;if(rD()){let e=rr();if((null==e?void 0:e.version)&&0>rB(e.version,"16"))return!1}let e=RTCRtpSender.getCapabilities("video"),t=!1;if(e){for(let i of e.codecs)if("video/VP9"===i.mimeType){t=!0;break}}return t}()&&(t.videoCodec=void 0),void 0===t.videoCodec&&(t.videoCodec="vp8");let b=t.videoCodec;e.on(eo.Muted,this.onTrackMuted),e.on(eo.Unmuted,this.onTrackUnmuted),e.on(eo.Ended,this.handleTrackEnded),e.on(eo.UpstreamPaused,this.onTrackUpstreamPaused),e.on(eo.UpstreamResumed,this.onTrackUpstreamResumed),e.on(eo.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate);let y=new ie({cid:e.mediaStreamTrack.id,name:t.name,type:rg.kindToProto(e.kind),muted:e.isMuted,source:rg.sourceToProto(e.source),disableDtx:!(null===(n=t.dtx)||void 0===n||n),encryption:this.encryptionType,stereo:i,disableRed:this.isE2EEEnabled||!(null===(r=t.red)||void 0===r||r),stream:null==t?void 0:t.stream});if(e.kind===rg.Kind.Video){let i={width:0,height:0};try{i=yield e.waitForDimensions()}catch(n){let t=null!==(o=null===(a=this.roomOptions.videoCaptureDefaults)||void 0===a?void 0:a.resolution)&&void 0!==o?o:rh.h720.resolution;i={width:t.width,height:t.height},this.log.error("could not determine track dimensions, using defaults",Object.assign(Object.assign(Object.assign({},this.logContext),rw(e)),{dims:i}))}y.width=i.width,y.height=i.height,e instanceof aN&&(rI(b)&&(e.source===rg.Source.ScreenShare&&(t.scalabilityMode="L1T3","contentHint"in e.mediaStreamTrack&&(e.mediaStreamTrack.contentHint="motion",this.log.info("forcing contentHint to motion for screenshare with SVC codecs",Object.assign(Object.assign({},this.logContext),rw(e))))),t.scalabilityMode=null!==(s=t.scalabilityMode)&&void 0!==s?s:"L3T3_KEY"),y.simulcastCodecs=[new t8({codec:b,cid:e.mediaStreamTrack.id})],!0===t.backupCodec&&(t.backupCodec={codec:"vp8"}),t.backupCodec&&b!==t.backupCodec.codec&&y.encryption===tU.NONE&&(this.roomOptions.dynacast||(this.roomOptions.dynacast=!0),y.simulcastCodecs.push(new t8({codec:t.backupCodec.codec,cid:""})))),g=ax(e.source===rg.Source.ScreenShare,y.width,y.height,t),y.layers=aL(y.width,y.height,g,rI(t.videoCodec))}else e.kind===rg.Kind.Audio&&(g=[{maxBitrate:null===(c=t.audioPreset)||void 0===c?void 0:c.maxBitrate,priority:null!==(d=null===(l=t.audioPreset)||void 0===l?void 0:l.priority)&&void 0!==d?d:"high",networkPriority:null!==(h=null===(u=t.audioPreset)||void 0===u?void 0:u.priority)&&void 0!==h?h:"high"}]);if(!this.engine||this.engine.isClosed)throw new re("cannot publish track when not connected");let k=yield this.engine.addTrack(y);if(k.codecs.forEach(e=>{void 0===v&&(v=e.mimeType)}),v&&e.kind===rg.Kind.Video){let i=rS(v);i!==b&&(this.log.debug("falling back to server selected codec",Object.assign(Object.assign(Object.assign({},this.logContext),rw(e)),{codec:i})),t.videoCodec=i,g=ax(e.source===rg.Source.ScreenShare,y.width,y.height,t))}let T=new aJ(e.kind,k,e,{loggerName:this.roomOptions.loggerName,loggerContextCb:()=>this.logContext});if(T.options=t,e.sid=k.sid,!this.engine.pcManager)throw new re("pcManager is not ready");if(this.log.debug("publishing ".concat(e.kind," with encodings"),Object.assign(Object.assign({},this.logContext),{encodings:g,trackInfo:k})),e.sender=yield this.engine.createSender(e,t,g),e instanceof aN&&(null!==(p=t.degradationPreference)&&void 0!==p||(t.degradationPreference=e.source===rg.Source.ScreenShare||e.constraints.height&&rY(e.constraints.height)>=1080?"maintain-resolution":"balanced"),e.setDegradationPreference(t.degradationPreference)),g){if(rM()&&e.kind===rg.Kind.Audio){let t;for(let i of this.engine.pcManager.publisher.getTransceivers())if(i.sender===e.sender){t=i;break}t&&this.engine.pcManager.publisher.setTrackCodecBitrate({transceiver:t,codec:"opus",maxbr:(null===(m=g[0])||void 0===m?void 0:m.maxBitrate)?g[0].maxBitrate/1e3:0})}else e.codec&&rI(e.codec)&&(null===(f=g[0])||void 0===f?void 0:f.maxBitrate)&&this.engine.pcManager.publisher.setTrackCodecBitrate({cid:y.cid,codec:e.codec,maxbr:g[0].maxBitrate/1e3})}return yield this.engine.negotiate(),e instanceof aN?e.startMonitor(this.engine.client):e instanceof ay&&e.startMonitor(),this.addTrackPublication(T),this.emit(er.LocalTrackPublished,T),T})}get isLocal(){return!0}publishAdditionalCodecForTrack(e,t,i){return iK(this,void 0,void 0,function*(){var n;let r;if(this.encryptionType!==tU.NONE)return;if(this.trackPublications.forEach(t=>{t.track&&t.track===e&&(r=t)}),!r)throw new n7("track is not published");if(!(e instanceof aN))throw new n7("track is not a video track");let a=Object.assign(Object.assign({},null===(n=this.roomOptions)||void 0===n?void 0:n.publishDefaults),i),o=function(e,t,i){var n,r,a,o;if(!i.backupCodec||!0===i.backupCodec||i.backupCodec.codec===i.videoCodec)return;t!==i.backupCodec.codec&&iQ.warn("requested a different codec than specified as backup",{serverRequested:t,backup:i.backupCodec.codec}),i.videoCodec=t,i.videoEncoding=i.backupCodec.encoding;let s=e.mediaStreamTrack.getSettings(),c=null!==(n=s.width)&&void 0!==n?n:null===(r=e.dimensions)||void 0===r?void 0:r.width,l=null!==(a=s.height)&&void 0!==a?a:null===(o=e.dimensions)||void 0===o?void 0:o.height;return ax(e.source===rg.Source.ScreenShare,c,l,i)}(e,t,a);if(!o){this.log.info("backup codec has been disabled, ignoring request to add additional codec for track",Object.assign(Object.assign({},this.logContext),rw(e)));return}let s=e.addSimulcastTrack(t,o);if(!s)return;let c=new ie({cid:s.mediaStreamTrack.id,type:rg.kindToProto(e.kind),muted:e.isMuted,source:rg.sourceToProto(e.source),sid:e.sid,simulcastCodecs:[{codec:a.videoCodec,cid:s.mediaStreamTrack.id}]});if(c.layers=aL(c.width,c.height,o),!this.engine||this.engine.isClosed)throw new re("cannot publish track when not connected");let l=yield this.engine.addTrack(c);yield this.engine.createSimulcastSender(e,s,a,o),yield this.engine.negotiate(),this.log.debug("published ".concat(t," for track ").concat(e.sid),Object.assign(Object.assign({},this.logContext),{encodings:o,trackInfo:l}))})}unpublishTrack(e,t){return iK(this,void 0,void 0,function*(){var i,n;let r=this.getPublicationForTrack(e),a=r?rw(r):void 0;if(this.log.debug("unpublishing track",Object.assign(Object.assign({},this.logContext),a)),!r||!r.track){this.log.warn("track was not unpublished because no publication was found",Object.assign(Object.assign({},this.logContext),a));return}(e=r.track).off(eo.Muted,this.onTrackMuted),e.off(eo.Unmuted,this.onTrackUnmuted),e.off(eo.Ended,this.handleTrackEnded),e.off(eo.UpstreamPaused,this.onTrackUpstreamPaused),e.off(eo.UpstreamResumed,this.onTrackUpstreamResumed),e.off(eo.AudioTrackFeatureUpdate,this.onTrackFeatureUpdate),void 0===t&&(t=null===(n=null===(i=this.roomOptions)||void 0===i?void 0:i.stopLocalTrackOnUnpublish)||void 0===n||n),t&&e.stop();let o=!1,s=e.sender;if(e.sender=void 0,this.engine.pcManager&&this.engine.pcManager.currentStatethis.unpublishTrack(e)))).filter(e=>e instanceof aJ)})}republishAllTracks(e){return iK(this,arguments,void 0,function(e){var t=this;let i=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return function*(){let n=[];t.trackPublications.forEach(t=>{t.track&&(e&&(t.options=Object.assign(Object.assign({},t.options),e)),n.push(t))}),yield Promise.all(n.map(e=>iK(t,void 0,void 0,function*(){let t=e.track;yield this.unpublishTrack(t,!1),i&&!t.isMuted&&t.source!==rg.Source.ScreenShare&&t.source!==rg.Source.ScreenShareAudio&&(t instanceof ay||t instanceof aN)&&!t.isUserProvided&&(this.log.debug("restarting existing track",Object.assign(Object.assign({},this.logContext),{track:e.trackSid})),yield t.restartTrack()),yield this.publishTrack(t,e.options)})))}()})}publishData(e){return iK(this,arguments,void 0,function(e){var t=this;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(){let n=i.reliable?tq.RELIABLE:tq.LOSSY,r=i.destinationIdentities,a=i.topic,o=new tV({kind:n,value:{case:"user",value:new tG({participantIdentity:t.identity,payload:e,destinationIdentities:r,topic:a})}});yield t.engine.sendDataPacket(o,n)}()})}setTrackSubscriptionPermissions(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];this.participantTrackPermissions=t,this.allParticipantsAllowedToSubscribe=e,this.engine.client.isDisconnected||this.updateTrackSubscriptionPermissions()}updateInfo(e){return!!(e.sid===this.sid&&super.updateInfo(e))&&(e.tracks.forEach(e=>{var t,i;let n=this.trackPublications.get(e.sid);if(n){let r=n.isMuted||null!==(i=null===(t=n.track)||void 0===t?void 0:t.isUpstreamPaused)&&void 0!==i&&i;r!==e.muted&&(this.log.debug("updating server mute state after reconcile",Object.assign(Object.assign(Object.assign({},this.logContext),rw(n)),{mutedOnServer:r})),this.engine.client.sendMuteTrack(e.sid,r))}}),!0)}getPublicationForTrack(e){let t;return this.trackPublications.forEach(i=>{let n=i.track;n&&(e instanceof MediaStreamTrack?(n instanceof ay||n instanceof aN)&&n.mediaStreamTrack===e&&(t=i):e===n&&(t=i))}),t}}class aX extends aH{constructor(e,t,i,n){super(e,t.sid,t.name,n),this.track=void 0,this.allowed=!0,this.disabled=!1,this.currentVideoQuality=ec.HIGH,this.handleEnded=e=>{this.setTrack(void 0),this.emit(eo.Ended,e)},this.handleVisibilityChange=e=>{this.log.debug("adaptivestream video visibility ".concat(this.trackSid,", visible=").concat(e),this.logContext),this.disabled=!e,this.emitTrackUpdate()},this.handleVideoDimensionsChange=e=>{this.log.debug("adaptivestream video dimensions ".concat(e.width,"x").concat(e.height),this.logContext),this.videoDimensions=e,this.emitTrackUpdate()},this.subscribed=i,this.updateInfo(t)}setSubscribed(e){let t=this.subscriptionStatus,i=this.permissionStatus;this.subscribed=e,e&&(this.allowed=!0);let n=new id({trackSids:[this.trackSid],subscribe:this.subscribed,participantTracks:[new tJ({participantSid:"",trackSids:[this.trackSid]})]});this.emit(eo.UpdateSubscription,n),this.emitSubscriptionUpdateIfChanged(t),this.emitPermissionUpdateIfChanged(i)}get subscriptionStatus(){return!1===this.subscribed?aH.SubscriptionStatus.Unsubscribed:super.isSubscribed?aH.SubscriptionStatus.Subscribed:aH.SubscriptionStatus.Desired}get permissionStatus(){return this.allowed?aH.PermissionStatus.Allowed:aH.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()&&!e!==this.disabled&&(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 aG&&(this.videoDimensions=e),this.currentVideoQuality=void 0,this.emitTrackUpdate())}setVideoFPS(e){this.isManualOperationAllowed()&&this.track instanceof aG&&this.fps!==e&&(this.fps=e,this.emitTrackUpdate())}get videoQuality(){return this.currentVideoQuality}setTrack(e){let t=this.subscriptionStatus,i=this.permissionStatus,n=this.track;n!==e&&(n&&(n.off(eo.VideoDimensionsChanged,this.handleVideoDimensionsChange),n.off(eo.VisibilityChanged,this.handleVisibilityChange),n.off(eo.Ended,this.handleEnded),n.detach(),n.stopMonitor(),this.emit(eo.Unsubscribed,n)),super.setTrack(e),e&&(e.sid=this.trackSid,e.on(eo.VideoDimensionsChanged,this.handleVideoDimensionsChange),e.on(eo.VisibilityChanged,this.handleVisibilityChange),e.on(eo.Ended,this.handleEnded),this.emit(eo.Subscribed,e)),this.emitPermissionUpdateIfChanged(i),this.emitSubscriptionUpdateIfChanged(t))}setAllowed(e){let t=this.subscriptionStatus,i=this.permissionStatus;this.allowed=e,this.emitPermissionUpdateIfChanged(i),this.emitSubscriptionUpdateIfChanged(t)}setSubscriptionError(e){this.emit(eo.SubscriptionFailed,e)}updateInfo(e){super.updateInfo(e);let t=this.metadataMuted;this.metadataMuted=e.muted,this.track?this.track.setMuted(e.muted):t!==e.muted&&this.emit(e.muted?eo.Muted:eo.Unmuted)}emitSubscriptionUpdateIfChanged(e){let t=this.subscriptionStatus;e!==t&&this.emit(eo.SubscriptionStatusChanged,t,e)}emitPermissionUpdateIfChanged(e){this.permissionStatus!==e&&this.emit(eo.SubscriptionPermissionChanged,this.permissionStatus,e)}isManualOperationAllowed(){return this.kind===rg.Kind.Video&&this.isAdaptiveStream?(this.log.warn("adaptive stream is enabled, cannot change video track settings",this.logContext),!1):!!this.isDesired||(this.log.warn("cannot update track settings when not subscribed",this.logContext),!1)}get isAdaptiveStream(){return this.track instanceof aG&&this.track.isAdaptiveStream}emitTrackUpdate(){let e=new iu({trackSids:[this.trackSid],disabled:this.disabled,fps:this.fps});this.videoDimensions?(e.width=Math.ceil(this.videoDimensions.width),e.height=Math.ceil(this.videoDimensions.height)):void 0!==this.currentVideoQuality?e.quality=this.currentVideoQuality:e.quality=ec.HIGH,this.emit(eo.UpdateSettings,e)}}class aZ extends a${static fromParticipantInfo(e,t){return new aZ(e,t.sid,t.identity,t.name,t.metadata)}get logContext(){return Object.assign(Object.assign({},super.logContext),{rpID:this.sid,remoteParticipant:this.identity})}constructor(e,t,i,n,r,a){super(t,i||"",n,r,a),this.signalClient=e,this.trackPublications=new Map,this.audioTrackPublications=new Map,this.videoTrackPublications=new Map,this.volumeMap=new Map}addTrackPublication(e){super.addTrackPublication(e),e.on(eo.UpdateSettings,t=>{this.log.debug("send update settings",Object.assign(Object.assign({},this.logContext),rw(e))),this.signalClient.sendUpdateTrackSettings(t)}),e.on(eo.UpdateSubscription,e=>{e.participantTracks.forEach(e=>{e.participantSid=this.sid}),this.signalClient.sendUpdateSubscription(e)}),e.on(eo.SubscriptionPermissionChanged,t=>{this.emit(er.TrackSubscriptionPermissionChanged,e,t)}),e.on(eo.SubscriptionStatusChanged,t=>{this.emit(er.TrackSubscriptionStatusChanged,e,t)}),e.on(eo.Subscribed,t=>{this.emit(er.TrackSubscribed,t,e)}),e.on(eo.Unsubscribed,t=>{this.emit(er.TrackUnsubscribed,t,e)}),e.on(eo.SubscriptionFailed,t=>{this.emit(er.TrackSubscriptionFailed,e.trackSid,t)})}getTrackPublication(e){let t=super.getTrackPublication(e);if(t)return t}getTrackPublicationByName(e){let t=super.getTrackPublicationByName(e);if(t)return t}setVolume(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:rg.Source.Microphone;this.volumeMap.set(t,e);let i=this.getTrackPublication(t);i&&i.track&&i.track.setVolume(e)}getVolume(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:rg.Source.Microphone,t=this.getTrackPublication(e);return t&&t.track?t.track.getVolume():this.volumeMap.get(e)}addSubscribedMediaTrack(e,t,i,n,r,a){let o,s=this.getTrackPublicationBySid(t);if(s||t.startsWith("TR")||this.trackPublications.forEach(t=>{s||e.kind!==t.kind.toString()||(s=t)}),!s){if(0===a){this.log.error("could not find published track",Object.assign(Object.assign({},this.logContext),{trackSid:t})),this.emit(er.TrackSubscriptionFailed,t);return}void 0===a&&(a=20),setTimeout(()=>{this.addSubscribedMediaTrack(e,t,i,n,r,a-1)},150);return}if("ended"===e.readyState){this.log.error("unable to subscribe because MediaStreamTrack is ended. Do not call MediaStreamTrack.stop()",Object.assign(Object.assign({},this.logContext),rw(s))),this.emit(er.TrackSubscriptionFailed,t);return}return(o="video"===e.kind?new aG(e,t,n,r):new aW(e,t,n,this.audioContext,this.audioOutput)).source=s.source,o.isMuted=s.isMuted,o.setMediaStream(i),o.start(),s.setTrack(o),this.volumeMap.has(s.source)&&o instanceof aW&&o.setVolume(this.volumeMap.get(s.source)),s}get hasMetadata(){return!!this.participantInfo}getTrackPublicationBySid(e){return this.trackPublications.get(e)}updateInfo(e){if(!super.updateInfo(e))return!1;let t=new Map,i=new Map;return e.tracks.forEach(e=>{var n,r;let a=this.getTrackPublicationBySid(e.sid);if(a)a.updateInfo(e);else{let t=rg.kindFromProto(e.type);if(!t)return;(a=new aX(t,e,null===(n=this.signalClient.connectOptions)||void 0===n?void 0:n.autoSubscribe,{loggerContextCb:()=>this.logContext,loggerName:null===(r=this.loggerOptions)||void 0===r?void 0:r.loggerName})).updateInfo(e),i.set(e.sid,a);let o=Array.from(this.trackPublications.values()).find(e=>e.source===(null==a?void 0:a.source));o&&a.source!==rg.Source.Unknown&&this.log.debug("received a second track publication for ".concat(this.identity," with the same source: ").concat(a.source),Object.assign(Object.assign({},this.logContext),{oldTrack:rw(o),newTrack:rw(a)})),this.addTrackPublication(a)}t.set(e.sid,a)}),this.trackPublications.forEach(e=>{t.has(e.trackSid)||(this.log.trace("detected removed track on remote participant, unpublishing",Object.assign(Object.assign({},this.logContext),rw(e))),this.unpublishTrack(e.trackSid,!0))}),i.forEach(e=>{this.emit(er.TrackPublished,e)}),!0}unpublishTrack(e,t){let i=this.trackPublications.get(e);if(!i)return;let{track:n}=i;switch(n&&(n.stop(),i.setTrack(void 0)),this.trackPublications.delete(e),i.kind){case rg.Kind.Audio:this.audioTrackPublications.delete(e);break;case rg.Kind.Video:this.videoTrackPublications.delete(e)}t&&this.emit(er.TrackUnpublished,i)}setAudioOutput(e){return iK(this,void 0,void 0,function*(){this.audioOutput=e;let t=[];this.audioTrackPublications.forEach(i=>{var n;i.track instanceof aW&&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=Array(t>1?t-1:0),n=1;niK(this,void 0,void 0,function*(){var n;if(!("undefined"!=typeof RTCPeerConnection&&(rR()||rx()))){if(r_())throw Error("WebRTC isn't detected, have you called registerGlobals?");throw Error("LiveKit doesn't seem to be supported on this browser. Try to update your browser and make sure no browser extensions are disabling webRTC.")}let r=yield this.disconnectLock.lock();if(this.state===em.Connected)return this.log.info("already connected to room ".concat(this.name),this.logContext),r(),Promise.resolve();if(this.connectFuture)return r(),this.connectFuture.promise;this.setAndEmitConnectionState(em.Connecting),(null===(n=this.regionUrlProvider)||void 0===n?void 0:n.getServerUrl().toString())!==e&&(this.regionUrl=void 0,this.regionUrlProvider=void 0),rL(new URL(e))&&(void 0===this.regionUrlProvider?this.regionUrlProvider=new aq(e,t):this.regionUrlProvider.updateToken(t),this.regionUrlProvider.fetchRegionSettings().catch(e=>{this.log.warn("could not fetch region settings",Object.assign(Object.assign({},this.logContext),{error:e}))}));let a=(n,o,s)=>iK(this,void 0,void 0,function*(){var c;this.abortController&&this.abortController.abort();let l=new AbortController;this.abortController=l,null==r||r();try{yield this.attemptConnection(null!=s?s:e,t,i,l),this.abortController=void 0,n()}catch(e){if(this.regionUrlProvider&&e instanceof n4&&3!==e.reason&&0!==e.reason){let t=null;try{t=yield this.regionUrlProvider.getNextBestRegionUrl(null===(c=this.abortController)||void 0===c?void 0:c.signal)}catch(e){if(e instanceof n4&&(401===e.status||3===e.reason)){this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),o(e);return}}t?(this.log.info("Initial connection failed with ConnectionError: ".concat(e.message,". Retrying with another region: ").concat(t),this.logContext),this.recreateEngine(),yield a(n,o,t)):(this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),o(e))}else this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),o(e)}}),o=this.regionUrl;return this.regionUrl=void 0,this.connectFuture=new rJ((e,t)=>{a(e,t,o)},()=>{this.clearConnectionFutures()}),this.connectFuture.promise}),this.connectSignal=(e,t,i,n,r,a)=>iK(this,void 0,void 0,function*(){var o,s,c;let l=yield i.join(e,t,{autoSubscribe:n.autoSubscribe,adaptiveStream:"object"==typeof r.adaptiveStream||r.adaptiveStream,maxRetries:n.maxRetries,e2eeEnabled:!!this.e2eeManager,websocketTimeout:n.websocketTimeout},a.signal),d=l.serverInfo;if(d||(d={version:l.serverVersion,region:l.serverRegion}),this.log.debug("connected to Livekit Server ".concat(Object.entries(d).map(e=>{let[t,i]=e;return"".concat(t,": ").concat(i)}).join(", ")),{room:null===(o=l.room)||void 0===o?void 0:o.name,roomSid:null===(s=l.room)||void 0===s?void 0:s.sid,identity:null===(c=l.participant)||void 0===c?void 0:c.identity}),!l.serverVersion)throw new n8("unknown server version");return"0.15.1"===l.serverVersion&&this.options.dynacast&&(this.log.debug("disabling dynacast due to server version",this.logContext),r.dynacast=!1),l}),this.applyJoinResponse=e=>{let t=e.participant;if(this.localParticipant.sid=t.sid,this.localParticipant.identity=t.identity,this.options.e2ee&&this.e2eeManager)try{this.e2eeManager.setSifTrailer(e.sifTrailer)}catch(e){this.log.error(e instanceof Error?e.message:"Could not set SifTrailer",Object.assign(Object.assign({},this.logContext),{error:e}))}this.handleParticipantUpdates([t,...e.otherParticipants]),e.room&&this.handleRoomUpdate(e.room)},this.attemptConnection=(e,t,i,n)=>iK(this,void 0,void 0,function*(){var r,a,o;this.state===em.Reconnecting||this.isResuming||(null===(r=this.engine)||void 0===r?void 0:r.pendingReconnect)?(this.log.info("Reconnection attempt replaced by new connection attempt",this.logContext),this.recreateEngine()):this.maybeCreateEngine(),(null===(a=this.regionUrlProvider)||void 0===a?void 0:a.isCloud())&&this.engine.setRegionUrlProvider(this.regionUrlProvider),this.acquireAudioContext(),this.connOptions=Object.assign(Object.assign({},ag),i),this.connOptions.rtcConfig&&(this.engine.rtcConfig=this.connOptions.rtcConfig),this.connOptions.peerConnectionTimeout&&(this.engine.peerConnectionTimeout=this.connOptions.peerConnectionTimeout);try{let i=yield this.connectSignal(e,t,this.engine,this.connOptions,this.options,n);this.applyJoinResponse(i),this.setupLocalParticipantEvents(),this.emit(en.SignalConnected)}catch(t){yield this.engine.close(),this.recreateEngine();let e=new n4("could not establish signal connection");throw t instanceof Error&&(e.message="".concat(e.message,": ").concat(t.message)),t instanceof n4&&(e.reason=t.reason,e.status=t.status),this.log.debug("error trying to establish signal connection",Object.assign(Object.assign({},this.logContext),{error:t})),e}if(n.signal.aborted)throw yield this.engine.close(),this.recreateEngine(),new n4("Connection attempt aborted");try{yield this.engine.waitForPCInitialConnection(this.connOptions.peerConnectionTimeout,n)}catch(e){throw yield this.engine.close(),this.recreateEngine(),e}rA()&&this.options.disconnectOnPageLeave&&(window.addEventListener("pagehide",this.onPageLeave),window.addEventListener("beforeunload",this.onPageLeave)),rA()&&(document.addEventListener("freeze",this.onPageLeave),null===(o=navigator.mediaDevices)||void 0===o||o.addEventListener("devicechange",this.handleDeviceChange)),this.setAndEmitConnectionState(em.Connected),this.emit(en.Connected),this.registerConnectionReconcile()}),this.disconnect=function(){for(var e=arguments.length,i=Array(e),n=0;n0)||void 0===arguments[0]||arguments[0];return function*(){var i,n,r,a;let o=yield e.disconnectLock.lock();try{if(e.state===em.Disconnected){e.log.debug("already disconnected",e.logContext);return}e.log.info("disconnect from room",Object.assign({},e.logContext)),(e.state===em.Connecting||e.state===em.Reconnecting||e.isResuming)&&(e.log.warn("abort connection attempt",e.logContext),null===(i=e.abortController)||void 0===i||i.abort(),null===(r=null===(n=e.connectFuture)||void 0===n?void 0:n.reject)||void 0===r||r.call(n,new n4("Client initiated disconnect")),e.connectFuture=void 0),(null===(a=e.engine)||void 0===a?void 0:a.client.isDisconnected)||(yield e.engine.client.sendLeave()),e.engine&&(yield e.engine.close()),e.handleDisconnect(t,tR.CLIENT_INITIATED),e.engine=void 0}finally{o()}}()})},this.onPageLeave=()=>iK(this,void 0,void 0,function*(){this.log.info("Page leave detected, disconnecting",this.logContext),yield this.disconnect()}),this.startAudio=()=>iK(this,void 0,void 0,function*(){let e=[],t=rr();if(t&&"iOS"===t.os){let t="livekit-dummy-audio-el",i=document.getElementById(t);if(!i){(i=document.createElement("audio")).id=t,i.autoplay=!0,i.hidden=!0;let e=rH();e.enabled=!0;let n=new MediaStream([e]);i.srcObject=n,document.addEventListener("visibilitychange",()=>{i&&(i.srcObject=document.hidden?null:n,document.hidden||(this.log.debug("page visible again, triggering startAudio to resume playback and update playback status",this.logContext),this.startAudio()))}),document.body.append(i),this.once(en.Disconnected,()=>{null==i||i.remove(),i=null})}e.push(i)}this.remoteParticipants.forEach(t=>{t.audioTrackPublications.forEach(t=>{t.track&&t.track.attachedElements.forEach(t=>{e.push(t)})})});try{yield Promise.all([this.acquireAudioContext(),...e.map(e=>(e.muted=!1,e.play()))]),this.handleAudioPlaybackStarted()}catch(e){throw this.handleAudioPlaybackFailed(e),e}}),this.startVideo=()=>iK(this,void 0,void 0,function*(){let e=[];for(let t of this.remoteParticipants.values())t.videoTrackPublications.forEach(t=>{var i;null===(i=t.track)||void 0===i||i.attachedElements.forEach(t=>{e.includes(t)||e.push(t)})});yield Promise.all(e.map(e=>e.play())).then(()=>{this.handleVideoPlaybackStarted()}).catch(e=>{"NotAllowedError"===e.name?this.handleVideoPlaybackFailed():this.log.warn("Resuming video playback failed, make sure you call `startVideo` directly in a user gesture handler",this.logContext)})}),this.handleRestarting=()=>{for(let e of(this.clearConnectionReconcile(),this.isResuming=!1,this.remoteParticipants.values()))this.handleParticipantDisconnected(e.identity,e);this.setAndEmitConnectionState(em.Reconnecting)&&this.emit(en.Reconnecting)},this.handleSignalRestarted=e=>iK(this,void 0,void 0,function*(){this.log.debug("signal reconnected to server, region ".concat(e.serverRegion),Object.assign(Object.assign({},this.logContext),{region:e.serverRegion})),this.bufferedEvents=[],this.applyJoinResponse(e);try{yield this.localParticipant.republishAllTracks(void 0,!0)}catch(e){this.log.error("error trying to re-publish tracks after reconnection",Object.assign(Object.assign({},this.logContext),{error:e}))}try{yield this.engine.waitForRestarted(),this.log.debug("fully reconnected to server",Object.assign(Object.assign({},this.logContext),{region:e.serverRegion}))}catch(e){return}this.setAndEmitConnectionState(em.Connected),this.emit(en.Reconnected),this.registerConnectionReconcile(),this.emitBufferedEvents()}),this.handleParticipantUpdates=e=>{e.forEach(e=>{var t;if(e.identity===this.localParticipant.identity){this.localParticipant.updateInfo(e);return}""===e.identity&&(e.identity=null!==(t=this.sidToIdentity.get(e.sid))&&void 0!==t?t:"");let i=this.remoteParticipants.get(e.identity);e.state===t_.DISCONNECTED?this.handleParticipantDisconnected(e.identity,i):i=this.getOrCreateParticipant(e.identity,e)})},this.handleActiveSpeakersUpdate=e=>{let t=[],i={};e.forEach(e=>{if(i[e.sid]=!0,e.sid===this.localParticipant.sid)this.localParticipant.audioLevel=e.level,this.localParticipant.setIsSpeaking(!0),t.push(this.localParticipant);else{let i=this.getRemoteParticipantBySid(e.sid);i&&(i.audioLevel=e.level,i.setIsSpeaking(!0),t.push(i))}}),i[this.localParticipant.sid]||(this.localParticipant.audioLevel=0,this.localParticipant.setIsSpeaking(!1)),this.remoteParticipants.forEach(e=>{i[e.sid]||(e.audioLevel=0,e.setIsSpeaking(!1))}),this.activeSpeakers=t,this.emitWhenConnected(en.ActiveSpeakersChanged,t)},this.handleSpeakersChanged=e=>{let t=new Map;this.activeSpeakers.forEach(e=>{t.set(e.sid,e)}),e.forEach(e=>{let i=this.getRemoteParticipantBySid(e.sid);e.sid===this.localParticipant.sid&&(i=this.localParticipant),i&&(i.audioLevel=e.level,i.setIsSpeaking(e.active),e.active?t.set(e.sid,i):t.delete(e.sid))});let i=Array.from(t.values());i.sort((e,t)=>t.audioLevel-e.audioLevel),this.activeSpeakers=i,this.emitWhenConnected(en.ActiveSpeakersChanged,i)},this.handleStreamStateUpdate=e=>{e.streamStates.forEach(e=>{let t=this.getRemoteParticipantBySid(e.participantSid);if(!t)return;let i=t.getTrackPublicationBySid(e.trackSid);i&&i.track&&(i.track.streamState=rg.streamStateFromProto(e.state),t.emit(er.TrackStreamStateChanged,i,i.track.streamState),this.emitWhenConnected(en.TrackStreamStateChanged,i,i.track.streamState,t))})},this.handleSubscriptionPermissionUpdate=e=>{let t=this.getRemoteParticipantBySid(e.participantSid);if(!t)return;let i=t.getTrackPublicationBySid(e.trackSid);i&&i.setAllowed(e.allowed)},this.handleSubscriptionError=e=>{let t=Array.from(this.remoteParticipants.values()).find(t=>t.trackPublications.has(e.trackSid));if(!t)return;let i=t.getTrackPublicationBySid(e.trackSid);i&&i.setSubscriptionError(e.err)},this.handleDataPacket=(e,t)=>{let i=this.remoteParticipants.get(e.participantIdentity);this.emit(en.DataReceived,e.payload,i,t,e.topic),null==i||i.emit(er.DataReceived,e.payload,t)},this.bufferedSegments=new Map,this.handleTranscription=e=>{let t=e.participantIdentity===this.localParticipant.identity?this.localParticipant:this.remoteParticipants.get(e.participantIdentity),i=null==t?void 0:t.trackPublications.get(e.trackId),n=e.segments.map(e=>{let{id:t,text:i,language:n,startTime:r,endTime:a,final:o}=e;return{id:t,text:i,startTime:Number.parseInt(r.toString()),endTime:Number.parseInt(a.toString()),final:o,language:n}});null==i||i.emit(eo.TranscriptionReceived,n),null==t||t.emit(er.TranscriptionReceived,n,i),this.emit(en.TranscriptionReceived,n,t,i)},this.handleAudioPlaybackStarted=()=>{!this.canPlaybackAudio&&(this.audioEnabled=!0,this.emit(en.AudioPlaybackStatusChanged,!0))},this.handleAudioPlaybackFailed=e=>{this.log.warn("could not playback audio",Object.assign(Object.assign({},this.logContext),{error:e})),this.canPlaybackAudio&&(this.audioEnabled=!1,this.emit(en.AudioPlaybackStatusChanged,!1))},this.handleVideoPlaybackStarted=()=>{this.isVideoPlaybackBlocked&&(this.isVideoPlaybackBlocked=!1,this.emit(en.VideoPlaybackStatusChanged,!0))},this.handleVideoPlaybackFailed=()=>{this.isVideoPlaybackBlocked||(this.isVideoPlaybackBlocked=!0,this.emit(en.VideoPlaybackStatusChanged,!1))},this.handleDeviceChange=()=>iK(this,void 0,void 0,function*(){this.emit(en.MediaDevicesChanged)}),this.handleRoomUpdate=e=>{let t=this.roomInfo;this.roomInfo=e,t&&t.metadata!==e.metadata&&this.emitWhenConnected(en.RoomMetadataChanged,e.metadata),(null==t?void 0:t.activeRecording)!==e.activeRecording&&this.emitWhenConnected(en.RecordingStatusChanged,e.activeRecording)},this.handleConnectionQualityUpdate=e=>{e.updates.forEach(e=>{if(e.participantSid===this.localParticipant.sid){this.localParticipant.setConnectionQuality(e.quality);return}let t=this.getRemoteParticipantBySid(e.participantSid);t&&t.setConnectionQuality(e.quality)})},this.onLocalParticipantMetadataChanged=e=>{this.emit(en.ParticipantMetadataChanged,e,this.localParticipant)},this.onLocalParticipantNameChanged=e=>{this.emit(en.ParticipantNameChanged,e,this.localParticipant)},this.onLocalTrackMuted=e=>{this.emit(en.TrackMuted,e,this.localParticipant)},this.onLocalTrackUnmuted=e=>{this.emit(en.TrackUnmuted,e,this.localParticipant)},this.onTrackProcessorUpdate=e=>{var t;null===(t=null==e?void 0:e.onPublish)||void 0===t||t.call(e,this)},this.onLocalTrackPublished=e=>iK(this,void 0,void 0,function*(){var t,i,n,r,a,o;null===(t=e.track)||void 0===t||t.on(eo.TrackProcessorUpdate,this.onTrackProcessorUpdate),null===(r=null===(n=null===(i=e.track)||void 0===i?void 0:i.getProcessor())||void 0===n?void 0:n.onPublish)||void 0===r||r.call(n,this),this.emit(en.LocalTrackPublished,e,this.localParticipant),e.track instanceof ay&&(yield e.track.checkForSilence())&&this.emit(en.LocalAudioSilenceDetected,e);let s=yield null===(a=e.track)||void 0===a?void 0:a.getDeviceId(),c=(o=e.source)===rg.Source.Microphone?"audioinput":o===rg.Source.Camera?"videoinput":void 0;c&&s&&s!==this.localParticipant.activeDeviceMap.get(c)&&(this.localParticipant.activeDeviceMap.set(c,s),this.emit(en.ActiveDeviceChanged,c,s))}),this.onLocalTrackUnpublished=e=>{var t;null===(t=e.track)||void 0===t||t.off(eo.TrackProcessorUpdate,this.onTrackProcessorUpdate),this.emit(en.LocalTrackUnpublished,e,this.localParticipant)},this.onLocalConnectionQualityChanged=e=>{this.emit(en.ConnectionQualityChanged,e,this.localParticipant)},this.onMediaDevicesError=e=>{this.emit(en.MediaDevicesError,e)},this.onLocalParticipantPermissionsChanged=e=>{this.emit(en.ParticipantPermissionsChanged,e,this.localParticipant)},this.setMaxListeners(100),this.remoteParticipants=new Map,this.sidToIdentity=new Map,this.options=Object.assign(Object.assign({},af),e),this.log=iW(null!==(i=this.options.loggerName)&&void 0!==i?i:$.Room),this.options.audioCaptureDefaults=Object.assign(Object.assign({},ap),null==e?void 0:e.audioCaptureDefaults),this.options.videoCaptureDefaults=Object.assign(Object.assign({},am),null==e?void 0:e.videoCaptureDefaults),this.options.publishDefaults=Object.assign(Object.assign({},ah),null==e?void 0:e.publishDefaults),this.maybeCreateEngine(),this.disconnectLock=new r$,this.localParticipant=new aY("","",this.engine,this.options),this.options.videoCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("videoinput",rY(this.options.videoCaptureDefaults.deviceId)),this.options.audioCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("audioinput",rY(this.options.audioCaptureDefaults.deviceId)),(null===(n=this.options.audioOutput)||void 0===n?void 0:n.deviceId)&&this.switchActiveDevice("audiooutput",rY(this.options.audioOutput.deviceId)).catch(e=>this.log.warn("Could not set audio output: ".concat(e.message),this.logContext)),this.options.e2ee&&this.setupE2EE()}setE2EEEnabled(e){return iK(this,void 0,void 0,function*(){if(this.e2eeManager)yield Promise.all([this.localParticipant.setE2EEEnabled(e)]),""!==this.localParticipant.identity&&this.e2eeManager.setParticipantCryptorEnabled(e,this.localParticipant.identity);else throw Error("e2ee not configured, please set e2ee settings within the room options")})}setupE2EE(){var e;this.options.e2ee&&(this.e2eeManager=new r5(this.options.e2ee),this.e2eeManager.on(ee.ParticipantEncryptionStatusChanged,(e,t)=>{t instanceof aY&&(this.isE2EEEnabled=e),this.emit(en.ParticipantEncryptionStatusChanged,e,t)}),this.e2eeManager.on(ee.EncryptionError,e=>this.emit(en.EncryptionError,e)),null===(e=this.e2eeManager)||void 0===e||e.setup(this))}get logContext(){var e;return{room:this.name,roomID:null===(e=this.roomInfo)||void 0===e?void 0:e.sid,participant:this.localParticipant.identity,pID:this.localParticipant.sid}}get isRecording(){var e,t;return null!==(t=null===(e=this.roomInfo)||void 0===e?void 0:e.activeRecording)&&void 0!==t&&t}getSid(){return iK(this,void 0,void 0,function*(){return this.state===em.Disconnected?"":this.roomInfo&&""!==this.roomInfo.sid?this.roomInfo.sid:new Promise((e,t)=>{let i=t=>{""!==t.sid&&(this.engine.off(ea.RoomUpdate,i),e(t.sid))};this.engine.on(ea.RoomUpdate,i),this.once(en.Disconnected,()=>{this.engine.off(ea.RoomUpdate,i),t("Room disconnected before room server id was available")})})})}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 aB(this.options),this.engine.on(ea.ParticipantUpdate,this.handleParticipantUpdates).on(ea.RoomUpdate,this.handleRoomUpdate).on(ea.SpeakersChanged,this.handleSpeakersChanged).on(ea.StreamStateChanged,this.handleStreamStateUpdate).on(ea.ConnectionQualityUpdate,this.handleConnectionQualityUpdate).on(ea.SubscriptionError,this.handleSubscriptionError).on(ea.SubscriptionPermissionUpdate,this.handleSubscriptionPermissionUpdate).on(ea.MediaTrackAdded,(e,t,i)=>{this.onTrackAdded(e,t,i)}).on(ea.Disconnected,e=>{this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e)}).on(ea.ActiveSpeakersUpdate,this.handleActiveSpeakersUpdate).on(ea.DataPacketReceived,this.handleDataPacket).on(ea.TranscriptionReceived,this.handleTranscription).on(ea.Resuming,()=>{this.clearConnectionReconcile(),this.isResuming=!0,this.log.info("Resuming signal connection",this.logContext)}).on(ea.Resumed,()=>{this.registerConnectionReconcile(),this.isResuming=!1,this.log.info("Resumed signal connection",this.logContext),this.updateSubscriptions(),this.emitBufferedEvents()}).on(ea.SignalResumed,()=>{this.bufferedEvents=[],(this.state===em.Reconnecting||this.isResuming)&&this.sendSyncState()}).on(ea.Restarting,this.handleRestarting).on(ea.SignalRestarted,this.handleSignalRestarted).on(ea.Offline,()=>{this.setAndEmitConnectionState(em.Reconnecting)&&this.emit(en.Reconnecting)}).on(ea.DCBufferStatusChanged,(e,t)=>{this.emit(en.DCBufferStatusChanged,e,t)}),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 r0.getInstance().getDevices(e,t)}prepareConnection(e,t){return iK(this,void 0,void 0,function*(){if(this.state===em.Disconnected){this.log.debug("prepareConnection to ".concat(e),this.logContext);try{if(rL(new URL(e))&&t){this.regionUrlProvider=new aq(e,t);let i=yield this.regionUrlProvider.getNextBestRegionUrl();i&&this.state===em.Disconnected&&(this.regionUrl=i,yield fetch(rX(i),{method:"HEAD"}),this.log.debug("prepared connection to ".concat(i),this.logContext))}else yield fetch(rX(e),{method:"HEAD"})}catch(e){this.log.warn("could not prepare connection",Object.assign(Object.assign({},this.logContext),{error:e}))}}})}getParticipantByIdentity(e){return this.localParticipant.identity===e?this.localParticipant:this.remoteParticipants.get(e)}clearConnectionFutures(){this.connectFuture=void 0}simulateScenario(e,t){return iK(this,void 0,void 0,function*(){let i,n=()=>{};switch(e){case"signal-reconnect":yield this.engine.client.handleOnClose("simulate disconnect");break;case"speaker":i=new iA({scenario:{case:"speakerUpdate",value:3}});break;case"node-failure":i=new iA({scenario:{case:"nodeFailure",value:!0}});break;case"server-leave":i=new iA({scenario:{case:"serverLeave",value:!0}});break;case"migration":i=new iA({scenario:{case:"migration",value:!0}});break;case"resume-reconnect":this.engine.failNext(),yield this.engine.client.handleOnClose("simulate resume-disconnect");break;case"disconnect-signal-on-resume":n=()=>iK(this,void 0,void 0,function*(){yield this.engine.client.handleOnClose("simulate resume-disconnect")}),i=new iA({scenario:{case:"disconnectSignalOnResume",value:!0}});break;case"disconnect-signal-on-resume-no-messages":n=()=>iK(this,void 0,void 0,function*(){yield this.engine.client.handleOnClose("simulate resume-disconnect")}),i=new iA({scenario:{case:"disconnectSignalOnResumeNoMessages",value:!0}});break;case"full-reconnect":this.engine.fullReconnectOnNext=!0,yield this.engine.client.handleOnClose("simulate full-reconnect");break;case"force-tcp":case"force-tls":i=new iA({scenario:{case:"switchCandidateProtocol",value:"force-tls"===e?2:1}}),n=()=>iK(this,void 0,void 0,function*(){let e=this.engine.client.onLeave;e&&e(new im({reason:tR.CLIENT_INITIATED,action:ig.RECONNECT}))});break;case"subscriber-bandwidth":if(void 0===t||"number"!=typeof t)throw Error("subscriber-bandwidth requires a number as argument");i=new iA({scenario:{case:"subscriberBandwidth",value:BigInt(t)}});break;case"leave-full-reconnect":i=new iA({scenario:{case:"leaveRequestFullReconnect",value:!0}})}i&&(yield this.engine.client.sendSimulateScenario(i),yield n())})}get canPlaybackAudio(){return this.audioEnabled}get canPlaybackVideo(){return!this.isVideoPlaybackBlocked}getActiveDevice(e){return this.localParticipant.activeDeviceMap.get(e)}switchActiveDevice(e,t){return iK(this,arguments,void 0,function(e,t){var i=this;let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return function*(){var r,a,o,s;let c=!1,l=!0,d=n?{exact:t}:t;if("audioinput"===e){let e=i.options.audioCaptureDefaults.deviceId;i.options.audioCaptureDefaults.deviceId=d,c=e!==d;let t=Array.from(i.localParticipant.audioTrackPublications.values()).filter(e=>e.source===rg.Source.Microphone);try{l=(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 i.options.audioCaptureDefaults.deviceId=e,t}}else if("videoinput"===e){let e=i.options.videoCaptureDefaults.deviceId;i.options.videoCaptureDefaults.deviceId=d,c=e!==d;let t=Array.from(i.localParticipant.videoTrackPublications.values()).filter(e=>e.source===rg.Source.Camera);try{l=(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 i.options.videoCaptureDefaults.deviceId=e,t}}else if("audiooutput"===e){if(!rO()&&!i.options.webAudioMix||i.options.webAudioMix&&i.audioContext&&!("setSinkId"in i.audioContext))throw Error("cannot switch audio output, setSinkId not supported");i.options.webAudioMix&&(t=null!==(r=yield r0.getInstance().normalizeDeviceId("audiooutput",t))&&void 0!==r?r:""),null!==(a=(s=i.options).audioOutput)&&void 0!==a||(s.audioOutput={});let e=i.options.audioOutput.deviceId;i.options.audioOutput.deviceId=t,c=e!==d;try{i.options.webAudioMix?null===(o=i.audioContext)||void 0===o||o.setSinkId(t):yield Promise.all(Array.from(i.remoteParticipants.values()).map(e=>e.setAudioOutput({deviceId:t})))}catch(t){throw i.options.audioOutput.deviceId=e,t}}return c&&l&&(i.localParticipant.activeDeviceMap.set(e,t),i.emit(en.ActiveDeviceChanged,e,t)),l}()})}setupLocalParticipantEvents(){this.localParticipant.on(er.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).on(er.ParticipantNameChanged,this.onLocalParticipantNameChanged).on(er.TrackMuted,this.onLocalTrackMuted).on(er.TrackUnmuted,this.onLocalTrackUnmuted).on(er.LocalTrackPublished,this.onLocalTrackPublished).on(er.LocalTrackUnpublished,this.onLocalTrackUnpublished).on(er.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).on(er.MediaDevicesError,this.onMediaDevicesError).on(er.AudioStreamAcquired,this.startAudio).on(er.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged)}recreateEngine(){var e;null===(e=this.engine)||void 0===e||e.close(),this.engine=void 0,this.isResuming=!1,this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.bufferedEvents=[],this.maybeCreateEngine()}onTrackAdded(e,t,i){let n;if(this.state===em.Connecting||this.state===em.Reconnecting){let n=()=>{this.onTrackAdded(e,t,i),r()},r=()=>{this.off(en.Reconnected,n),this.off(en.Connected,n),this.off(en.Disconnected,r)};this.once(en.Reconnected,n),this.once(en.Connected,n),this.once(en.Disconnected,r);return}if(this.state===em.Disconnected){this.log.warn("skipping incoming track after Room disconnected",this.logContext);return}let r=function(e){let t=e.split("|");return t.length>1?[t[0],e.substr(t[0].length+1)]:[e,""]}(t.id),a=r[0],o=r[1],s=e.id;if(o&&o.startsWith("TR")&&(s=o),a===this.localParticipant.sid){this.log.warn("tried to create RemoteParticipant for local participant",this.logContext);return}let c=Array.from(this.remoteParticipants.values()).find(e=>e.sid===a);if(!c){this.log.error("Tried to add a track for a participant, that's not present. Sid: ".concat(a),this.logContext);return}this.options.adaptiveStream&&(n="object"==typeof this.options.adaptiveStream?this.options.adaptiveStream:{}),c.addSubscribedMediaTrack(e,s,t,i,n)}handleDisconnect(){var e;let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0],i=arguments.length>1?arguments[1]:void 0;if(this.clearConnectionReconcile(),this.isResuming=!1,this.bufferedEvents=[],this.state!==em.Disconnected){this.regionUrl=void 0;try{this.remoteParticipants.forEach(e=>{e.trackPublications.forEach(t=>{e.unpublishTrack(t.trackSid)})}),this.localParticipant.trackPublications.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(er.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).off(er.ParticipantNameChanged,this.onLocalParticipantNameChanged).off(er.TrackMuted,this.onLocalTrackMuted).off(er.TrackUnmuted,this.onLocalTrackUnmuted).off(er.LocalTrackPublished,this.onLocalTrackPublished).off(er.LocalTrackUnpublished,this.onLocalTrackUnpublished).off(er.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).off(er.MediaDevicesError,this.onMediaDevicesError).off(er.AudioStreamAcquired,this.startAudio).off(er.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged),this.localParticipant.trackPublications.clear(),this.localParticipant.videoTrackPublications.clear(),this.localParticipant.audioTrackPublications.clear(),this.remoteParticipants.clear(),this.sidToIdentity.clear(),this.activeSpeakers=[],this.audioContext&&"boolean"==typeof this.options.webAudioMix&&(this.audioContext.close(),this.audioContext=void 0),rA()&&(window.removeEventListener("beforeunload",this.onPageLeave),window.removeEventListener("pagehide",this.onPageLeave),window.removeEventListener("freeze",this.onPageLeave),null===(e=navigator.mediaDevices)||void 0===e||e.removeEventListener("devicechange",this.handleDeviceChange))}finally{this.setAndEmitConnectionState(em.Disconnected),this.emit(en.Disconnected,i)}}}handleParticipantDisconnected(e,t){this.remoteParticipants.delete(e),t&&(t.trackPublications.forEach(e=>{t.unpublishTrack(e.trackSid,!0)}),this.emit(en.ParticipantDisconnected,t))}acquireAudioContext(){return iK(this,void 0,void 0,function*(){var e,t;if("boolean"!=typeof this.options.webAudioMix&&this.options.webAudioMix.audioContext?this.audioContext=this.options.webAudioMix.audioContext:this.audioContext&&"closed"!==this.audioContext.state||(this.audioContext=null!==(e=rC())&&void 0!==e?e:void 0),this.audioContext&&"suspended"===this.audioContext.state)try{yield this.audioContext.resume()}catch(e){this.log.warn("Could not resume audio context",Object.assign(Object.assign({},this.logContext),{error:e}))}this.options.webAudioMix&&this.remoteParticipants.forEach(e=>e.setAudioContext(this.audioContext)),this.localParticipant.setAudioContext(this.audioContext);let i=(null===(t=this.audioContext)||void 0===t?void 0:t.state)==="running";i!==this.canPlaybackAudio&&(this.audioEnabled=i,this.emit(en.AudioPlaybackStatusChanged,i))})}createParticipant(e,t){var i;let n;return n=t?aZ.fromParticipantInfo(this.engine.client,t):new aZ(this.engine.client,"",e,void 0,void 0,{loggerContextCb:()=>this.logContext,loggerName:this.options.loggerName}),this.options.webAudioMix&&n.setAudioContext(this.audioContext),(null===(i=this.options.audioOutput)||void 0===i?void 0:i.deviceId)&&n.setAudioOutput(this.options.audioOutput).catch(e=>this.log.warn("Could not set audio output: ".concat(e.message),this.logContext)),n}getOrCreateParticipant(e,t){if(this.remoteParticipants.has(e)){let i=this.remoteParticipants.get(e);return t&&i.updateInfo(t)&&this.sidToIdentity.set(t.sid,t.identity),i}let i=this.createParticipant(e,t);return this.remoteParticipants.set(e,i),this.sidToIdentity.set(t.sid,t.identity),this.emitWhenConnected(en.ParticipantConnected,i),i.on(er.TrackPublished,e=>{this.emitWhenConnected(en.TrackPublished,e,i)}).on(er.TrackSubscribed,(e,t)=>{e.kind===rg.Kind.Audio?(e.on(eo.AudioPlaybackStarted,this.handleAudioPlaybackStarted),e.on(eo.AudioPlaybackFailed,this.handleAudioPlaybackFailed)):e.kind===rg.Kind.Video&&(e.on(eo.VideoPlaybackFailed,this.handleVideoPlaybackFailed),e.on(eo.VideoPlaybackStarted,this.handleVideoPlaybackStarted)),this.emit(en.TrackSubscribed,e,t,i)}).on(er.TrackUnpublished,e=>{this.emit(en.TrackUnpublished,e,i)}).on(er.TrackUnsubscribed,(e,t)=>{this.emit(en.TrackUnsubscribed,e,t,i)}).on(er.TrackSubscriptionFailed,e=>{this.emit(en.TrackSubscriptionFailed,e,i)}).on(er.TrackMuted,e=>{this.emitWhenConnected(en.TrackMuted,e,i)}).on(er.TrackUnmuted,e=>{this.emitWhenConnected(en.TrackUnmuted,e,i)}).on(er.ParticipantMetadataChanged,e=>{this.emitWhenConnected(en.ParticipantMetadataChanged,e,i)}).on(er.ParticipantNameChanged,e=>{this.emitWhenConnected(en.ParticipantNameChanged,e,i)}).on(er.ConnectionQualityChanged,e=>{this.emitWhenConnected(en.ConnectionQualityChanged,e,i)}).on(er.ParticipantPermissionsChanged,e=>{this.emitWhenConnected(en.ParticipantPermissionsChanged,e,i)}).on(er.TrackSubscriptionStatusChanged,(e,t)=>{this.emitWhenConnected(en.TrackSubscriptionStatusChanged,e,t,i)}).on(er.TrackSubscriptionFailed,(e,t)=>{this.emit(en.TrackSubscriptionFailed,e,i,t)}).on(er.TrackSubscriptionPermissionChanged,(e,t)=>{this.emitWhenConnected(en.TrackSubscriptionPermissionChanged,e,t,i)}),t&&i.updateInfo(t),i}sendSyncState(){let e=Array.from(this.remoteParticipants.values()).reduce((e,t)=>(e.push(...t.getTrackPublications()),e),[]),t=this.localParticipant.getTrackPublications();this.engine.sendSyncState(e,t)}updateSubscriptions(){for(let e of this.remoteParticipants.values())for(let t of e.videoTrackPublications.values())t.isSubscribed&&t instanceof aX&&t.emitTrackUpdate()}getRemoteParticipantBySid(e){let t=this.sidToIdentity.get(e);if(t)return this.remoteParticipants.get(t)}registerConnectionReconcile(){this.clearConnectionReconcile();let e=0;this.connectionReconcileInterval=rc.setInterval(()=>{this.engine&&!this.engine.isClosed&&this.engine.verifyTransport()?e=0:(e++,this.log.warn("detected connection state mismatch",Object.assign(Object.assign({},this.logContext),{numFailures:e,engine:{closed:this.engine.isClosed,transportsConnected:this.engine.verifyTransport()}})),e>=3&&(this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,tR.STATE_MISMATCH)))},2e3)}clearConnectionReconcile(){this.connectionReconcileInterval&&rc.clearInterval(this.connectionReconcileInterval)}setAndEmitConnectionState(e){return e!==this.state&&(this.state=e,this.emit(en.ConnectionStateChanged,this.state),!0)}emitBufferedEvents(){this.bufferedEvents.forEach(e=>{let[t,i]=e;this.emit(t,...i)}),this.bufferedEvents=[]}emitWhenConnected(e){for(var t=arguments.length,i=Array(t>1?t-1:0),n=1;nthis.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(e),this.localParticipant.emit(er.LocalTrackPublished,e)}if(n.audio){let e=new aJ(rg.Kind.Audio,new tF({source:tS.MICROPHONE,sid:Math.floor(1e4*Math.random()).toString(),type:tC.AUDIO}),new ay(n.useRealTracks?(yield navigator.mediaDevices.getUserMedia({audio:!0})).getAudioTracks()[0]:rH(),void 0,!1,this.audioContext,{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext}),{loggerName:this.options.loggerName,loggerContextCb:()=>this.logContext});this.localParticipant.addTrackPublication(e),this.localParticipant.emit(er.LocalTrackPublished,e)}for(let e=0;e1?t-1:0),n=1;nt?Array.isArray(t)?e(t):"object"==typeof t?"logContext"in t&&t.logContext:t:void 0)})(i).filter(e=>void 0!==e);this.log.debug("room event ".concat(e),Object.assign(Object.assign({},this.logContext),{event:e,args:t}))}return super.emit(e,...i)}}(G=ef||(ef={}))[G.IDLE=0]="IDLE",G[G.RUNNING=1]="RUNNING",G[G.SKIPPED=2]="SKIPPED",G[G.SUCCESS=3]="SUCCESS",G[G.FAILED=4]="FAILED";class a1 extends ne.EventEmitter{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super(),this.status=ef.IDLE,this.logs=[],this.errorsAsWarnings=!1,this.url=e,this.token=t,this.name=this.constructor.name,this.room=new a0(i.roomOptions),this.connectOptions=i.connectOptions,i.errorsAsWarnings&&(this.errorsAsWarnings=i.errorsAsWarnings)}run(e){return iK(this,void 0,void 0,function*(){if(this.status!==ef.IDLE)throw Error("check is running already");this.setStatus(ef.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!==ef.SKIPPED&&this.setStatus(this.isSuccess()?ef.SUCCESS:ef.FAILED),e&&e(),this.getInfo()})}isSuccess(){return!this.logs.some(e=>"error"===e.level)}connect(){return iK(this,void 0,void 0,function*(){return this.room.state===em.Connected||(yield this.room.connect(this.url,this.token)),this.room})}disconnect(){return iK(this,void 0,void 0,function*(){this.room&&this.room.state!==em.Disconnected&&(yield this.room.disconnect(),yield new Promise(e=>setTimeout(e,500)))})}skip(){this.setStatus(ef.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 a5(e){return iK(this,void 0,void 0,function*(){var t,i;null!=e||(e={}),null!==(t=e.audio)&&void 0!==t||(e.audio=!0),null!==(i=e.video)&&void 0!==i||(e.video=!0);let n=rT(ry(e,ap,am)),r=navigator.mediaDevices.getUserMedia(n);e.audio&&(r0.userMediaPromiseMap.set("audioinput",r),r.catch(()=>r0.userMediaPromiseMap.delete("audioinput"))),e.video&&(r0.userMediaPromiseMap.set("videoinput",r),r.catch(()=>r0.userMediaPromiseMap.delete("videoinput")));let a=yield r;return a.getTracks().map(t=>{let i;let r="audio"===t.kind;r?e.audio:e.video;let o=r?n.audio:n.video;"boolean"!=typeof o&&(i=o),i?i.deviceId=t.getSettings().deviceId:i={deviceId:t.getSettings().deviceId};let s=ak(t,i);return s.kind===rg.Kind.Video?s.source=rg.Source.Camera:s.kind===rg.Kind.Audio&&(s.source=rg.Source.Microphone),s.mediaStream=a,s})})}function a2(e){var t,i;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e instanceof r1?e.mediaStreamTrack:e,a=r.getSettings(),o={facingMode:null!==(t=n.defaultFacingMode)&&void 0!==t?t:"user",confidence:"low"};if("facingMode"in a){let e=a.facingMode;iQ.trace("rawFacingMode",{rawFacingMode:e}),e&&"string"==typeof e&&(void 0===(i=e)||["user","environment","left","right"].includes(i))&&(o={facingMode:e,confidence:"high"})}if(["low","medium"].includes(o.confidence)){iQ.trace("Try to get facing mode from device label: (".concat(r.label,")"));let e=function(e){var t;let i=e.trim().toLowerCase();return""===i?void 0:a3.has(i)?a3.get(i):null===(t=Array.from(a6.entries()).find(e=>{let[t]=e;return i.includes(t)}))||void 0===t?void 0:t[1]}(r.label);void 0!==e&&(o=e)}return o}ne.EventEmitter;let a3=new Map([["obs virtual camera",{facingMode:"environment",confidence:"medium"}]]),a6=new Map([["iphone",{facingMode:"environment",confidence:"medium"}],["ipad",{facingMode:"environment",confidence:"medium"}]])}}]); //# sourceMappingURL=1300.28bff6d4.js.map