@whereby.com/browser-sdk 3.10.2 → 3.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/v3-embed.js +10 -12
- package/dist/cdn/v3-react.js +2 -2
- package/dist/embed/index.cjs +20 -2
- package/dist/embed/index.esm.js +19 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.esm.js +1 -1
- package/package.json +2 -2
package/dist/cdn/v3-embed.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
var whereby=function(){"use strict";
|
|
2
|
-
/*! (c) Andrea Giammarchi - ISC */var
|
|
3
|
-
/*! (c) Andrea Giammarchi - ISC */try{
|
|
4
|
-
/*! (c) Andrea Giammarchi - ISC */try{
|
|
1
|
+
var whereby=function(){"use strict";
|
|
2
|
+
/*! (c) Andrea Giammarchi - ISC */var e={};try{e.WeakMap=WeakMap}catch(t){e.WeakMap=function(e,t){var n=t.defineProperty,r=t.hasOwnProperty,o=s.prototype;return o.delete=function(e){return this.has(e)&&delete e[this._]},o.get=function(e){return this.has(e)?e[this._]:void 0},o.has=function(e){return r.call(e,this._)},o.set=function(e,t){return n(e,this._,{configurable:!0,value:t}),this},s;function s(t){n(this,"_",{value:"_@ungap/weakmap"+e++}),t&&t.forEach(a,this)}function a(e){this.set(e[0],e[1])}}(Math.random(),Object)}var t=e.WeakMap,n={};try{n.Event=new Event(".").constructor}catch(e){try{n.Event=new CustomEvent(".").constructor}catch(e){n.Event=function(e,t){t||(t={});var n=document.createEvent("Event"),r=!!t.bubbles,o=!!t.cancelable;n.initEvent(e,r,o);try{n.bubbles=r,n.cancelable=o}catch(n){}return n}}}var r=n.Event,o={};
|
|
3
|
+
/*! (c) Andrea Giammarchi - ISC */try{o.WeakSet=WeakSet}catch(e){!function(e){var t=new e,n=r.prototype;function r(n){t.set(this,new e),n&&n.forEach(this.add,this)}n.add=function(e){return t.get(this).set(e,1),this},n.delete=function(e){return t.get(this).delete(e)},n.has=function(e){return t.get(this).has(e)},o.WeakSet=r}(WeakMap)}var s,a,i,c=o.WeakSet,l="-"+Math.random().toFixed(6)+"%",u=!1;
|
|
4
|
+
/*! (c) Andrea Giammarchi - ISC */try{s=document.createElement("template"),i="tabindex",(a="content")in s&&(s.innerHTML="<p "+i+'="'+l+'"></p>',s[a].childNodes[0].getAttribute(i)==l)||(l="_dt: "+l.slice(1,-1)+";",u=!0)}catch(e){}var h="\x3c!--"+l+"--\x3e",p=8,f=1,d=3,m=/^(?:plaintext|script|style|textarea|title|xmp)$/i,g=/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
|
|
5
5
|
/*! (c) Andrea Giammarchi - ISC */
|
|
6
|
-
function
|
|
6
|
+
function v(e){return e.join(h).replace(x,$).replace(k,_)}var b=" \\f\\n\\r\\t",y="[^"+b+"\\/>\"'=]+",w="["+b+"]+"+y,C="<([A-Za-z]+[A-Za-z0-9:._-]*)((?:",E="(?:\\s*=\\s*(?:'[^']*?'|\"[^\"]*?\"|<[^>]*?>|"+y.replace("\\/","")+"))?)",k=new RegExp(C+w+E+"+)(["+b+"]*/?>)","g"),x=new RegExp(C+w+E+"*)(["+b+"]*/>)","g"),N=new RegExp("("+w+"\\s*=\\s*)(['\"]?)"+h+"\\2","gi");function _(e,t,n,r){return"<"+t+n.replace(N,A)+r}function A(e,t,n){return t+(n||'"')+l+(n||'"')}function $(e,t,n){return g.test(t)?e:"<"+t+n+"></"+t+">"}const{isArray:S}=Array,{indexOf:j,slice:O}=[];var L=e=>({get:t=>e.get(t),set:(t,n)=>(e.set(t,n),n)});const T=(e,t)=>111===e.nodeType?1/t<0?t?(({firstChild:e,lastChild:t})=>{const n=document.createRange();return n.setStartAfter(e),n.setEndAfter(t),n.deleteContents(),e})(e):e.lastChild:t?e.valueOf():e.firstChild:e,M=e=>{const{childNodes:t}=e,{length:n}=t;if(n<2)return n?t[0]:e;const r=O.call(t,0);return{ELEMENT_NODE:1,nodeType:111,firstChild:r[0],lastChild:r[n-1],valueOf(){if(t.length!==n){let t=0;for(;t<n;)e.appendChild(r[t++])}return e}}};
|
|
7
7
|
/*! (c) Andrea Giammarchi - ISC */
|
|
8
|
-
var
|
|
9
|
-
/*! (c) Andrea Giammarchi - ISC */var
|
|
10
|
-
/*! (c) Andrea Giammarchi - ISC */let Ce=null;const Re=x(new WeakMap),Te=(e,t,r)=>{e.apply(t,r)},ke={async:!1,always:!1},Pe=(e,t)=>"function"==typeof t?t(e):t,De=(e,t,r,i)=>{const s=Ce.i++,{hook:n,args:a,stack:o,length:c}=Ce;s===c&&(Ce.length=o.push({}));const d=o[s];if(d.args=a,s===c){const s="function"==typeof r,{async:a,always:o}=(s?i:r)||i||ke;d.$=s?r(t):Pe(void 0,t),d._=a?Re.get(n)||Re.set(n,we()):Te,d.f=t=>{const r=e(d.$,t);(o||d.$!==r)&&(d.$=r,d._(n,null,d.args))}}return[d.$,d.f]},Ie=new WeakMap;function Ee({hook:e}){return e===this.hook}const Oe=new WeakMap,Me=x(Oe),xe=()=>{},Le=e=>(t,r)=>{const i=Ce.i++,{hook:s,after:n,stack:a,length:o}=Ce;if(i<o){const s=a[i],{update:o,values:c,stop:d}=s;if(!r||r.some(Fe,c)){s.values=r,e&&d(e);const{clean:i}=s;i&&(s.clean=null,i());const a=()=>{s.clean=t()};e?o(a):n.push(a)}}else{const i=e?we():xe,o={clean:null,update:i,values:r,stop:xe};Ce.length=a.push(o),(Me.get(s)||Me.set(s,[])).push(o);const c=()=>{o.clean=t()};e?o.stop=i(c):n.push(c)}},je=e=>{(Oe.get(e)||[]).forEach((e=>{const{clean:t,stop:r}=e;r(),t&&(e.clean=null,t())}))};Oe.has.bind(Oe);const Ae=Le(!0),Ne=Le(!1),Be=(e,t)=>{const r=Ce.i++,{stack:i,length:s}=Ce;return r===s?Ce.length=i.push({$:e(),_:t}):t&&!t.some(Fe,i[r]._)||(i[r]={$:e(),_:t}),i[r].$};function Fe(e,t){return e!==this[t]}let $e=null;try{$e=new{o(){}}.o}catch(MS){}let Ve=e=>class extends e{};if($e){const{getPrototypeOf:FS,setPrototypeOf:$S}=Object,{construct:VS}="object"==typeof Reflect?Reflect:{construct(e,t,r){const i=[null];for(let e=0;e<t.length;e++)i.push(t[e]);const s=e.bind.apply(e,i);return $S(new s,r.prototype)}};Ve=function(e,t){function r(){return VS(t?FS(e):e,arguments,r)}return $S(r.prototype,e.prototype),$S(r,e)}}const Ue={map:{},re:null},ze=e=>new RegExp(`<(/)?(${e.join("|")})([^A-Za-z0-9:._-])`,"g");let qe=null;const Ge=(e,t)=>{const{map:r,re:i}=qe||t;return e.replace(i,((e,t,i,s)=>{const{tagName:n,is:a,element:o}=r[i];return o?t?`</${a}>`:`<${a}${s}`:t?`</${n}>`:`<${n} is="${a}"${s}`}))},He=({tagName:e,is:t,element:r})=>r?t:`${e}[is="${t}"]`,We=()=>qe,Ke=e=>{qe=e},Je={useCallback:(e,t)=>Be((()=>e),t),useContext:e=>{const{hook:t,args:r}=Ce,i=Ie.get(e),s={hook:t,args:r};return i.some(Ee,s)||i.push(s),e.value},useEffect:Ae,useLayoutEffect:Ne,useMemo:Be,useReducer:De,useRef:e=>{const t=Ce.i++,{stack:r,length:i}=Ce;return t===i&&(Ce.length=r.push({current:e})),r[t]},useState:(e,t)=>De(Pe,e,void 0,t)},{render:Qe,html:Ze,svg:Ye}=(e=>{const t=ae(de);return ce(e).forEach((r=>{t[r]=e[r](t[r]||("convert"===r?_:String))})),r.prototype=t,pe(r);function r(){return se.apply(this,arguments)}})({transform:()=>e=>Ge(e,Ue)}),Xe="_🔥",{defineProperties:et}=Object,tt=new r,rt=new r,it=new r,st=new d,nt=!0,at="attributeChangedCallback",ot="connectedCallback",ct=`dis${ot}`,dt=(e,t,r)=>{if(r in e){const i=e[r];t[r]={configurable:nt,value(){return St.call(this),i.apply(this,arguments)}}}else t[r]={configurable:nt,value:St}},lt=e=>{const{prototype:t}=e,i=[],s={html:{configurable:nt,get:_t},svg:{configurable:nt,get:bt}};if(s[Xe]={value:{events:i,info:null}},"handleEvent"in t||(s.handleEvent={configurable:nt,value:yt}),"render"in t&&t.render.length){const{oninit:e}=t;et(t,{oninit:{configurable:nt,value(){const t=(e=>{const t=[];return function r(){const i=Ce,s=[];Ce={hook:r,args:arguments,stack:t,i:0,length:t.length,after:s};try{return e.apply(null,arguments)}finally{Ce=i;for(let e=0,{length:t}=s;e<t;e++)s[e]()}}})(this.render.bind(this,Je));et(this,{render:{configurable:nt,value:t}}),this.addEventListener("disconnected",je.bind(null,t),!1),e&&e.apply(this,arguments)}}})}"oninit"in t&&(i.push("init"),dt(t,s,"render")),dt(t,s,at),dt(t,s,ot),dt(t,s,ct),[[at,"onattributechanged",wt],[ot,"onconnected",Ct],[ct,"ondisconnected",Tt],[ot,"render",Rt]].forEach((([e,r,n])=>{if(!(e in t)&&r in t)if("render"!==r&&i.push(r.slice(2)),e in s){const t=s[e].value;s[e]={configurable:nt,value(){return t.apply(this,arguments),n.apply(this,arguments)}}}else s[e]={configurable:nt,value:n}}));const n=e.booleanAttributes||[];n.forEach((e=>{e in t||(s[e]={configurable:nt,get(){return this.hasAttribute(e)},set(t){t&&"false"!==t?this.setAttribute(e,t):this.removeAttribute(e)}})}));const a=e.observedAttributes||[];a.forEach((e=>{e in t||(s[e]={configurable:nt,get(){return this.getAttribute(e)},set(t){null==t?this.removeAttribute(e):this.setAttribute(e,t)}})}));(e.mappedAttributes||[]).forEach((e=>{const n=new r,a="on"+e in t;a&&i.push(e),s[e]={configurable:nt,get(){return n.get(this)},set(t){if(n.set(this,t),a){const r=pt(e);if(r.detail=t,st.has(this))this.dispatchEvent(r);else{const e=it.get(this);e?e.push(r):it.set(this,[r])}}}}})),et(t,s);const o=n.concat(a);return o.length?et(e,{observedAttributes:{configurable:nt,get:()=>o}}):e},pt=e=>new s(e),ut=(...e)=>new ve("html",e);ut.for=Ze.for;const ht=(...e)=>new ve("svg",e);ht.for=Ye.for;const mt=(e,t,i)=>{const s=ft(e,t,new r);return i.set(e,s),s},ft=(e,t,r)=>(i,...s)=>{const n=r.get(i)||((e,t,{info:r})=>{const i=r?Ge(t.join(Xe),r).split(Xe):t;return e.set(t,i),i})(r,i,e[Xe]);return Qe(e,(()=>t(n,...s)))};function gt(e){this.addEventListener(e,this)}function vt(e){this.dispatchEvent(e)}function _t(){return tt.get(this)||mt(this,ut,tt)}function bt(){return rt.get(this)||mt(this,ht,rt)}function yt(e){this[`on${e.type}`](e)}function St(){if(!st.has(this)){st.add(this),this[Xe].events.forEach(gt,this),this.dispatchEvent(pt("init"));const e=it.get(this);e&&(it.delete(this),e.forEach(vt,this))}}function wt(e,t,r){const i=pt("attributechanged");i.attributeName=e,i.oldValue=t,i.newValue=r,this.dispatchEvent(i)}function Ct(){this.dispatchEvent(pt("connected"))}function Rt(){this.render()}function Tt(){this.dispatchEvent(pt("disconnected"))}const{create:kt,defineProperty:Pt,defineProperties:Dt,getOwnPropertyNames:It,getOwnPropertySymbols:Et,getOwnPropertyDescriptor:Ot,keys:Mt}=Object,xt={element:HTMLElement},Lt=new r;new r;const jt=new r;new r;const At=e=>{const t=kt(null),r=kt(null),i={prototype:r,statics:t};return It(e).concat(Et(e)).forEach((i=>{const s=Ot(e,i);switch(s.enumerable=!1,i){case"extends":i="tagName";case"contains":case"includes":case"name":case"booleanAttributes":case"mappedAttributes":case"observedAttributes":case"style":case"tagName":t[i]=s;break;default:r[i]=s}})),i},Nt=(e,t,r)=>{if(!/^([A-Z][A-Za-z0-9_]*)(<([A-Za-z0-9:._-]+)>|:([A-Za-z0-9:._-]+))?$/.test(e))throw"Invalid name";const{$1:i,$3:s,$4:n}=RegExp;let a=s||n||t.tagName||t.extends||"element";const o="fragment"===a;if(o)a="element";else if(!/^[A-Za-z0-9:._-]+$/.test(a))throw"Invalid tag";let c="",d="";a.indexOf("-")<0?(c=i.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z])([A-Z]))/g,"$2$5-$3$6").toLowerCase()+r,c.indexOf("-")<0&&(d="-heresy")):(c=a+r,a="element");const l=c+d;if(customElements.get(l))throw`Duplicated ${l} definition`;const p=Ve("object"==typeof t?jt.get(t)||((e,t)=>{const{statics:r,prototype:i}=At(e),s=Ve(xt[t]||(xt[t]=document.createElement(t).constructor),!1);return Dt(s.prototype,i),Dt(s,r),jt.set(e,lt(s)),s})(t,a):Lt.get(t)||(e=>{const t=Ve(e,!1);return Lt.set(e,lt(t)),t})(t),!0),u="element"===a;if(Pt(p,"new",{value:u?()=>document.createElement(l):()=>document.createElement(a,{is:l})}),Pt(p.prototype,"is",{value:l}),""===r){const e=(e=>{const{length:t}=e;let r=0,i=0;for(;i<t;)r=(r<<5)-r+e.charCodeAt(i++),r&=r;return r.toString(36)})(c.toUpperCase());Ue.map[i]=Bt(p,a,l,{id:e,i:0}),Ue.re=ze(Mt(Ue.map))}if(o){const{render:e}=p.prototype;Pt(p.prototype,"render",{configurable:!0,value(){if(e&&e.apply(this,arguments),this.parentNode){const{firstChild:e}=this;let t=null;if(e){const r=document.createRange();r.setStartBefore(e),r.setEndAfter(this.lastChild),t=r.extractContents(),this.parentNode.replaceChild(t,this)}}}})}const h=[l,p];return u||h.push({extends:a}),customElements.define(...h),{Class:p,is:l,name:i,tagName:a}},Bt=(e,t,r,i)=>{const{prototype:s}=e,n=((e,t)=>({tagName:e,is:t,element:"element"===e}))(t,r),a=[He(n)],o=e.includes||e.contains;if(o){const e={};Mt(o).forEach((t=>{const r=`-${i.id}-${i.i++}`,{Class:s,is:n,name:c,tagName:d}=Nt(t,o[t],r);a.push(He(e[c]=Bt(s,d,n,i)))}));const t=ze(Mt(e)),{events:r}=s[Xe],n={events:r,info:{map:e,re:t}};if(Pt(s,Xe,{value:n}),"render"in s){const{render:e}=s,{info:t}=n;Pt(s,"render",{configurable:!0,value(){const r=We();Ke(t);const i=e.apply(this,arguments);return Ke(r),i}})}}return"style"in e&&(e=>{if((e||"").length){const t=document.createElement("style");t.type="text/css",t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e));const r=document.head||document.querySelector("head");r.insertBefore(t,r.lastChild)}})(e.style(...a)),n};var Ft=()=>Math.random().toString(36).substring(7).split("").join("."),$t={INIT:`@@redux/INIT${Ft()}`,REPLACE:`@@redux/REPLACE${Ft()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${Ft()}`};function Vt(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function Ut(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}function zt(e){return Vt(e)&&"type"in e&&"string"==typeof e.type}var qt=Symbol.for("immer-nothing"),Gt=Symbol.for("immer-draftable"),Ht=Symbol.for("immer-state"),Wt=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}];function Kt(e,...t){{const r=Wt[e],i="function"==typeof r?r.apply(null,t):r;throw new Error(`[Immer] ${i}`)}}var Jt=Object.getPrototypeOf;function Qt(e){return!!e&&!!e[Ht]}function Zt(e){return!!e&&(Xt(e)||Array.isArray(e)||!!e[Gt]||!!e.constructor?.[Gt]||sr(e)||nr(e))}var Yt=Object.prototype.constructor.toString();function Xt(e){if(!e||"object"!=typeof e)return!1;const t=Jt(e);if(null===t)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return r===Object||"function"==typeof r&&Function.toString.call(r)===Yt}function er(e,t){0===tr(e)?Object.entries(e).forEach((([r,i])=>{t(r,i,e)})):e.forEach(((r,i)=>t(i,r,e)))}function tr(e){const t=e[Ht];return t?t.type_:Array.isArray(e)?1:sr(e)?2:nr(e)?3:0}function rr(e,t){return 2===tr(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function ir(e,t,r){const i=tr(e);2===i?e.set(t,r):3===i?e.add(r):e[t]=r}function sr(e){return e instanceof Map}function nr(e){return e instanceof Set}function ar(e){return e.copy_||e.base_}function or(e,t){if(sr(e))return new Map(e);if(nr(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);if(!t&&Xt(e)){if(!Jt(e)){const t=Object.create(null);return Object.assign(t,e)}return{...e}}const r=Object.getOwnPropertyDescriptors(e);delete r[Ht];let i=Reflect.ownKeys(r);for(let t=0;t<i.length;t++){const s=i[t],n=r[s];!1===n.writable&&(n.writable=!0,n.configurable=!0),(n.get||n.set)&&(r[s]={configurable:!0,writable:!0,enumerable:n.enumerable,value:e[s]})}return Object.create(Jt(e),r)}function cr(e,t=!1){return lr(e)||Qt(e)||!Zt(e)||(tr(e)>1&&(e.set=e.add=e.clear=e.delete=dr),Object.freeze(e),t&&er(e,((e,t)=>cr(t,!0)))),e}function dr(){Kt(2)}function lr(e){return Object.isFrozen(e)}var pr,ur={};function hr(e){const t=ur[e];return t||Kt(0,e),t}function mr(){return pr}function fr(e,t){t&&(hr("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function gr(e){vr(e),e.drafts_.forEach(br),e.drafts_=null}function vr(e){e===pr&&(pr=e.parent_)}function _r(e){return pr={drafts_:[],parent_:pr,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function br(e){const t=e[Ht];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function yr(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return void 0!==e&&e!==r?(r[Ht].modified_&&(gr(t),Kt(4)),Zt(e)&&(e=Sr(t,e),t.parent_||Cr(t,e)),t.patches_&&hr("Patches").generateReplacementPatches_(r[Ht].base_,e,t.patches_,t.inversePatches_)):e=Sr(t,r,[]),gr(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==qt?e:void 0}function Sr(e,t,r){if(lr(t))return t;const i=t[Ht];if(!i)return er(t,((s,n)=>wr(e,i,t,s,n,r))),t;if(i.scope_!==e)return t;if(!i.modified_)return Cr(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;const t=i.copy_;let s=t,n=!1;3===i.type_&&(s=new Set(t),t.clear(),n=!0),er(s,((s,a)=>wr(e,i,t,s,a,r,n))),Cr(e,t,!1),r&&e.patches_&&hr("Patches").generatePatches_(i,r,e.patches_,e.inversePatches_)}return i.copy_}function wr(e,t,r,i,s,n,a){if(s===r&&Kt(5),Qt(s)){const a=Sr(e,s,n&&t&&3!==t.type_&&!rr(t.assigned_,i)?n.concat(i):void 0);if(ir(r,i,a),!Qt(a))return;e.canAutoFreeze_=!1}else a&&r.add(s);if(Zt(s)&&!lr(s)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;Sr(e,s),t&&t.scope_.parent_||Cr(e,s)}}function Cr(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&cr(t,r)}var Rr={get(e,t){if(t===Ht)return e;const r=ar(e);if(!rr(r,t))return function(e,t,r){const i=Pr(t,r);return i?"value"in i?i.value:i.get?.call(e.draft_):void 0}(e,r,t);const i=r[t];return e.finalized_||!Zt(i)?i:i===kr(e.base_,t)?(Ir(e),e.copy_[t]=Er(i,e)):i},has:(e,t)=>t in ar(e),ownKeys:e=>Reflect.ownKeys(ar(e)),set(e,t,r){const i=Pr(ar(e),t);if(i?.set)return i.set.call(e.draft_,r),!0;if(!e.modified_){const i=kr(ar(e),t),a=i?.[Ht];if(a&&a.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((s=r)===(n=i)?0!==s||1/s==1/n:s!=s&&n!=n)&&(void 0!==r||rr(e.base_,t)))return!0;Ir(e),Dr(e)}var s,n;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==kr(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,Ir(e),Dr(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=ar(e),i=Reflect.getOwnPropertyDescriptor(r,t);return i?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:i.enumerable,value:r[t]}:i},defineProperty(){Kt(11)},getPrototypeOf:e=>Jt(e.base_),setPrototypeOf(){Kt(12)}},Tr={};function kr(e,t){const r=e[Ht];return(r?ar(r):e)[t]}function Pr(e,t){if(!(t in e))return;let r=Jt(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=Jt(r)}}function Dr(e){e.modified_||(e.modified_=!0,e.parent_&&Dr(e.parent_))}function Ir(e){e.copy_||(e.copy_=or(e.base_,e.scope_.immer_.useStrictShallowCopy_))}er(Rr,((e,t)=>{Tr[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),Tr.deleteProperty=function(e,t){return isNaN(parseInt(t))&&Kt(13),Tr.set.call(this,e,t,void 0)},Tr.set=function(e,t,r){return"length"!==t&&isNaN(parseInt(t))&&Kt(14),Rr.set.call(this,e[0],t,r,e[0])};function Er(e,t){const r=sr(e)?hr("MapSet").proxyMap_(e,t):nr(e)?hr("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),i={type_:r?1:0,scope_:t?t.scope_:mr(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let s=i,n=Rr;r&&(s=[i],n=Tr);const{revoke:a,proxy:o}=Proxy.revocable(s,n);return i.draft_=o,i.revoke_=a,o}(e,t);return(t?t.scope_:mr()).drafts_.push(r),r}function Or(e){return Qt(e)||Kt(10,e),Mr(e)}function Mr(e){if(!Zt(e)||lr(e))return e;const t=e[Ht];let r;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=or(e,t.scope_.immer_.useStrictShallowCopy_)}else r=or(e,!0);return er(r,((e,t)=>{ir(r,e,Mr(t))})),t&&(t.finalized_=!1),r}var xr=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,r)=>{if("function"==typeof e&&"function"!=typeof t){const r=t;t=e;const i=this;return function(e=r,...s){return i.produce(e,(e=>t.call(this,e,...s)))}}let i;if("function"!=typeof t&&Kt(6),void 0!==r&&"function"!=typeof r&&Kt(7),Zt(e)){const s=_r(this),n=Er(e,void 0);let a=!0;try{i=t(n),a=!1}finally{a?gr(s):vr(s)}return fr(s,r),yr(i,s)}if(!e||"object"!=typeof e){if(i=t(e),void 0===i&&(i=e),i===qt&&(i=void 0),this.autoFreeze_&&cr(i,!0),r){const t=[],s=[];hr("Patches").generateReplacementPatches_(e,i,t,s),r(t,s)}return i}Kt(1,e)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...r)=>this.produceWithPatches(t,(t=>e(t,...r)));let r,i;return[this.produce(e,t,((e,t)=>{r=e,i=t})),r,i]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){Zt(e)||Kt(8),Qt(e)&&(e=Or(e));const t=_r(this),r=Er(e,void 0);return r[Ht].isManual_=!0,vr(t),r}finishDraft(e,t){const r=e&&e[Ht];r&&r.isManual_||Kt(9);const{scope_:i}=r;return fr(i,t),yr(void 0,i)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const i=t[r];if(0===i.path.length&&"replace"===i.op){e=i.value;break}}r>-1&&(t=t.slice(r+1));const i=hr("Patches").applyPatches_;return Qt(e)?i(e,t):this.produce(e,(e=>i(e,t)))}},Lr=xr.produce;xr.produceWithPatches.bind(xr),xr.setAutoFreeze.bind(xr),xr.setUseStrictShallowCopy.bind(xr),xr.applyPatches.bind(xr),xr.createDraft.bind(xr),xr.finishDraft.bind(xr);var jr=(e,t,r)=>{if(1===t.length&&t[0]===r){let t=!1;try{const r={};e(r)===r&&(t=!0)}catch{}if(t){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("The result function returned its own inputs without modification. e.g\n`createSelector([state => state.todos], todos => todos)`\nThis could lead to inefficient memoization and unnecessary re-renders.\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.",{stack:e})}}},Ar=(e,t,r)=>{const{memoize:i,memoizeOptions:s}=t,{inputSelectorResults:n,inputSelectorResultsCopy:a}=e,o=i((()=>({})),...s);if(!(o.apply(null,n)===o.apply(null,a))){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("An input selector returned a different result when passed same arguments.\nThis means your output selector will likely run more frequently than intended.\nAvoid returning a new reference inside your input selector, e.g.\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`",{arguments:r,firstInputs:n,secondInputs:a,stack:e})}},Nr={inputStabilityCheck:"once",identityFunctionCheck:"once"};var Br=e=>Array.isArray(e)?e:[e];function Fr(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every((e=>"function"==typeof e))){const r=e.map((e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e)).join(", ");throw new TypeError(`${t}[${r}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function $r(e,t){const r=[],{length:i}=e;for(let s=0;s<i;s++)r.push(e[s].apply(null,t));return r}var Vr="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},Ur=0,zr=1;function qr(){return{s:Ur,v:void 0,o:null,p:null}}function Gr(e,t={}){let r=qr();const{resultEqualityCheck:i}=t;let s,n=0;function a(){let t=r;const{length:a}=arguments;for(let e=0,r=a;e<r;e++){const r=arguments[e];if("function"==typeof r||"object"==typeof r&&null!==r){let e=t.o;null===e&&(t.o=e=new WeakMap);const i=e.get(r);void 0===i?(t=qr(),e.set(r,t)):t=i}else{let e=t.p;null===e&&(t.p=e=new Map);const i=e.get(r);void 0===i?(t=qr(),e.set(r,t)):t=i}}const o=t;let c;if(t.s===zr?c=t.v:(c=e.apply(null,arguments),n++),o.s=zr,i){const e=s?.deref?.()??s;null!=e&&i(e,c)&&(c=e,0!==n&&n--);s="object"==typeof c&&null!==c||"function"==typeof c?new Vr(c):c}return o.v=c,c}return a.clearCache=()=>{r=qr(),a.resetResultsCount()},a.resultsCount=()=>n,a.resetResultsCount=()=>{n=0},a}function Hr(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,i=(...e)=>{let t,i=0,s=0,n={},a=e.pop();"object"==typeof a&&(n=a,a=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(a,`createSelector expects an output function after the inputs, but received: [${typeof a}]`);const o={...r,...n},{memoize:c,memoizeOptions:d=[],argsMemoize:l=Gr,argsMemoizeOptions:p=[],devModeChecks:u={}}=o,h=Br(d),m=Br(p),f=Fr(e),g=c((function(){return i++,a.apply(null,arguments)}),...h);let v=!0;const _=l((function(){s++;const e=$r(f,arguments);t=g.apply(null,e);{const{identityFunctionCheck:r,inputStabilityCheck:i}=((e,t)=>{const{identityFunctionCheck:r,inputStabilityCheck:i}={...Nr,...t};return{identityFunctionCheck:{shouldRun:"always"===r||"once"===r&&e,run:jr},inputStabilityCheck:{shouldRun:"always"===i||"once"===i&&e,run:Ar}}})(v,u);if(r.shouldRun&&r.run(a,e,t),i.shouldRun){const t=$r(f,arguments);i.run({inputSelectorResults:e,inputSelectorResultsCopy:t},{memoize:c,memoizeOptions:h},arguments)}v&&(v=!1)}return t}),...m);return Object.assign(_,{resultFunc:a,memoizedResultFunc:g,dependencies:f,dependencyRecomputations:()=>s,resetDependencyRecomputations:()=>{s=0},lastResult:()=>t,recomputations:()=>i,resetRecomputations:()=>{i=0},memoize:c,argsMemoize:l})};return Object.assign(i,{withTypes:()=>i}),i}var Wr=Hr(Gr),Kr=Object.assign(((e,t=Wr)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const r=Object.keys(e),i=t(r.map((t=>e[t])),((...e)=>e.reduce(((e,t,i)=>(e[r[i]]=t,e)),{})));return i}),{withTypes:()=>Kr});((...e)=>{const t=Hr(...e),r=Object.assign(((...e)=>{const r=t(...e),i=(e,...t)=>r(Qt(e)?Or(e):e,...t);return Object.assign(i,r),i}),{withTypes:()=>r})})(Gr);function Jr(e,t){function r(...r){if(t){let i=t(...r);if(!i)throw new Error("prepareAction did not return an object");return{type:e,payload:i.payload,..."meta"in i&&{meta:i.meta},..."error"in i&&{error:i.error}}}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>zt(t)&&t.type===e,r}function Qr(e,t){for(const r of e)if(t(r))return r}function Zr(e){return Zt(e)?Lr(e,(()=>{})):e}function Yr(e,t,r){if(e.has(t)){let i=e.get(t);return r.update&&(i=r.update(i,t,e),e.set(t,i)),i}if(!r.insert)throw new Error("No insert provided for key not already in map");const i=r.insert(t,e);return e.set(t,i),i}function Xr(e){const t={},r=[];let i;const s={addCase(e,n){if(r.length>0)throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`");if(i)throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`");const a="string"==typeof e?e:e.type;if(!a)throw new Error("`builder.addCase` cannot be called with an empty action type");if(a in t)throw new Error(`\`builder.addCase\` cannot be called with two reducers for the same action type '${a}'`);return t[a]=n,s},addMatcher(e,t){if(i)throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`");return r.push({matcher:e,reducer:t}),s},addDefaultCase(e){if(i)throw new Error("`builder.addDefaultCase` can only be called once");return i=e,s}};return e(s),[t,r,i]}var ei=(e=21)=>{let t="",r=e;for(;r--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t};function ti(...e){return t=>e.some((e=>((e,t)=>{return(r=e)&&"function"==typeof r.match?e.match(t):e(t);var r})(e,t)))}var ri=["name","message","stack","code"],ii=class{constructor(e,t){this.payload=e,this.meta=t}_type},si=class{constructor(e,t){this.payload=e,this.meta=t}_type},ni=e=>{if("object"==typeof e&&null!==e){const t={};for(const r of ri)"string"==typeof e[r]&&(t[r]=e[r]);return t}return{message:String(e)}},ai=(()=>{function e(e,t,r){const i=Jr(e+"/fulfilled",((e,t,r,i)=>({payload:e,meta:{...i||{},arg:r,requestId:t,requestStatus:"fulfilled"}}))),s=Jr(e+"/pending",((e,t,r)=>({payload:void 0,meta:{...r||{},arg:t,requestId:e,requestStatus:"pending"}}))),n=Jr(e+"/rejected",((e,t,i,s,n)=>({payload:s,error:(r&&r.serializeError||ni)(e||"Rejected"),meta:{...n||{},arg:i,requestId:t,rejectedWithValue:!!s,requestStatus:"rejected",aborted:"AbortError"===e?.name,condition:"ConditionError"===e?.name}})));return Object.assign((function(e){return(a,o,c)=>{const d=r?.idGenerator?r.idGenerator(e):ei(),l=new AbortController;let p,u;function h(e){u=e,l.abort()}const m=async function(){let m;try{let n=r?.condition?.(e,{getState:o,extra:c});if(function(e){return null!==e&&"object"==typeof e&&"function"==typeof e.then}(n)&&(n=await n),!1===n||l.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const f=new Promise(((e,t)=>{p=()=>{t({name:"AbortError",message:u||"Aborted"})},l.signal.addEventListener("abort",p)}));a(s(d,e,r?.getPendingMeta?.({requestId:d,arg:e},{getState:o,extra:c}))),m=await Promise.race([f,Promise.resolve(t(e,{dispatch:a,getState:o,extra:c,requestId:d,signal:l.signal,abort:h,rejectWithValue:(e,t)=>new ii(e,t),fulfillWithValue:(e,t)=>new si(e,t)})).then((t=>{if(t instanceof ii)throw t;return t instanceof si?i(t.payload,d,e,t.meta):i(t,d,e)}))])}catch(t){m=t instanceof ii?n(null,d,e,t.payload,t.meta):n(t,d,e)}finally{p&&l.signal.removeEventListener("abort",p)}return r&&!r.dispatchConditionRejection&&n.match(m)&&m.meta.condition||a(m),m}();return Object.assign(m,{abort:h,requestId:d,arg:e,unwrap:()=>m.then(oi)})}}),{pending:s,rejected:n,fulfilled:i,settled:ti(n,i),typePrefix:e})}return e.withTypes=()=>e,e})();function oi(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var ci=Symbol.for("rtk-slice-createasyncthunk");function di(e,t){return`${e}/${t}`}function li({creators:e}={}){const t=e?.asyncThunk?.[ci];return function(e){const{name:r,reducerPath:i=r}=e;if(!r)throw new Error("`name` is a required option for createSlice");const s=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},n=Object.keys(s),a={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},o={addCase(e,t){const r="string"==typeof e?e:e.type;if(!r)throw new Error("`context.addCase` cannot be called with an empty action type");if(r in a.sliceCaseReducersByType)throw new Error("`context.addCase` cannot be called with two reducers for the same action type: "+r);return a.sliceCaseReducersByType[r]=t,o},addMatcher:(e,t)=>(a.sliceMatchers.push({matcher:e,reducer:t}),o),exposeAction:(e,t)=>(a.actionCreators[e]=t,o),exposeCaseReducer:(e,t)=>(a.sliceCaseReducersByName[e]=t,o)};function c(){if("object"==typeof e.extraReducers)throw new Error("The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice");const[t={},r=[],i]="function"==typeof e.extraReducers?Xr(e.extraReducers):[e.extraReducers],s={...t,...a.sliceCaseReducersByType};return function(e,t){if("object"==typeof t)throw new Error("The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer");let r,[i,s,n]=Xr(t);if("function"==typeof e)r=()=>Zr(e());else{const t=Zr(e);r=()=>t}function a(e=r(),t){let a=[i[t.type],...s.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===a.filter((e=>!!e)).length&&(a=[n]),a.reduce(((e,r)=>{if(r){if(Qt(e)){const i=r(e,t);return void 0===i?e:i}if(Zt(e))return Lr(e,(e=>r(e,t)));{const i=r(e,t);if(void 0===i){if(null===e)return e;throw new Error("A case reducer on a non-draftable value must not return undefined")}return i}}return e}),e)}return a.getInitialState=r,a}(e.initialState,(e=>{for(let t in s)e.addCase(t,s[t]);for(let t of a.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of r)e.addMatcher(t.matcher,t.reducer);i&&e.addDefaultCase(i)}))}n.forEach((i=>{const n=s[i],a={reducerName:i,type:di(r,i),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(n)?function({type:e,reducerName:t,createNotation:r},i,s){let n,a;if("reducer"in i){if(r&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(i))throw new Error("Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.");n=i.reducer,a=i.prepare}else n=i;s.addCase(e,n).exposeCaseReducer(t,n).exposeAction(t,a?Jr(e,a):Jr(e))}(a,n,o):function({type:e,reducerName:t},r,i,s){if(!s)throw new Error("Cannot use `create.asyncThunk` in the built-in `createSlice`. Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.");const{payloadCreator:n,fulfilled:a,pending:o,rejected:c,settled:d,options:l}=r,p=s(e,n,l);i.exposeAction(t,p),a&&i.addCase(p.fulfilled,a);o&&i.addCase(p.pending,o);c&&i.addCase(p.rejected,c);d&&i.addMatcher(p.settled,d);i.exposeCaseReducer(t,{fulfilled:a||hi,pending:o||hi,rejected:c||hi,settled:d||hi})}(a,n,o,t)}));const d=e=>e,l=new Map;let p;function u(e,t){return p||(p=c()),p(e,t)}function h(){return p||(p=c()),p.getInitialState()}function m(t,r=!1){function i(e){let i=e[t];if(void 0===i){if(!r)throw new Error("selectSlice returned undefined for an uninjected slice reducer");i=h()}return i}function s(t=d){const i=Yr(l,r,{insert:()=>new WeakMap});return Yr(i,t,{insert:()=>{const i={};for(const[s,n]of Object.entries(e.selectors??{}))i[s]=pi(n,t,h,r);return i}})}return{reducerPath:t,getSelectors:s,get selectors(){return s(i)},selectSlice:i}}const f={name:r,reducer:u,actions:a.actionCreators,caseReducers:a.sliceCaseReducersByName,getInitialState:h,...m(i),injectInto(e,{reducerPath:t,...r}={}){const s=t??i;return e.inject({reducerPath:s,reducer:u},r),{...f,...m(s,!0)}}};return f}}function pi(e,t,r,i){function s(s,...n){let a=t(s);if(void 0===a){if(!i)throw new Error("selectState returned undefined for an uninjected slice reducer");a=r()}return e(a,...n)}return s.unwrapped=e,s}var ui=li();function hi(){}var mi="listener",fi="completed",gi="cancelled",vi=`task-${gi}`,_i=`task-${fi}`,bi=`${mi}-${gi}`,yi=`${mi}-${fi}`,Si=class{constructor(e){this.code=e,this.message=`task ${gi} (reason: ${e})`}name="TaskAbortError";message},wi=(e,t)=>{if("function"!=typeof e)throw new Error(`${t} is not a function`)},Ci=()=>{},Ri=(e,t=Ci)=>(e.catch(t),e),Ti=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),ki=(e,t)=>{const r=e.signal;r.aborted||("reason"in r||Object.defineProperty(r,"reason",{enumerable:!0,value:t,configurable:!0,writable:!0}),e.abort(t))},Pi=e=>{if(e.aborted){const{reason:t}=e;throw new Si(t)}};function Di(e,t){let r=Ci;return new Promise(((i,s)=>{const n=()=>s(new Si(e.reason));e.aborted?n():(r=Ti(e,n),t.finally((()=>r())).then(i,s))})).finally((()=>{r=Ci}))}var Ii=e=>t=>Ri(Di(e,t).then((t=>(Pi(e),t)))),Ei=e=>{const t=Ii(e);return e=>t(new Promise((t=>setTimeout(t,e))))},{assign:Oi}=Object,Mi={},xi="listenerMiddleware",Li=(e,t)=>(r,i)=>{wi(r,"taskExecutor");const s=new AbortController;var n;n=s,Ti(e,(()=>ki(n,e.reason)));const a=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof Si?"cancelled":"rejected",error:e}}finally{t?.()}})((async()=>{Pi(e),Pi(s.signal);const t=await r({pause:Ii(s.signal),delay:Ei(s.signal),signal:s.signal});return Pi(s.signal),t}),(()=>ki(s,_i)));return i?.autoJoin&&t.push(a.catch(Ci)),{result:Ii(e)(a),cancel(){ki(s,vi)}}},ji=(e,t)=>(r,i)=>Ri((async(r,i)=>{Pi(t);let s=()=>{};const n=[new Promise(((t,i)=>{let n=e({predicate:r,effect:(e,r)=>{r.unsubscribe(),t([e,r.getState(),r.getOriginalState()])}});s=()=>{n(),i()}}))];null!=i&&n.push(new Promise((e=>setTimeout(e,i,null))));try{const e=await Di(t,Promise.race(n));return Pi(t),e}finally{s()}})(r,i)),Ai=e=>{let{type:t,actionCreator:r,matcher:i,predicate:s,effect:n}=e;if(t)s=Jr(t).match;else if(r)t=r.type,s=r.match;else if(i)s=i;else if(!s)throw new Error("Creating or removing a listener requires one of the known fields for matching an action");return wi(n,"options.listener"),{predicate:s,type:t,effect:n}},Ni=Object.assign((e=>{const{type:t,predicate:r,effect:i}=Ai(e);return{id:ei(),effect:i,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error("Unsubscribe not initialized")}}}),{withTypes:()=>Ni}),Bi=e=>{e.pending.forEach((e=>{ki(e,bi)}))},Fi=(e,t,r)=>{try{e(t,r)}catch(e){setTimeout((()=>{throw e}),0)}},$i=Object.assign(Jr(`${xi}/add`),{withTypes:()=>$i}),Vi=Jr(`${xi}/removeAll`),Ui=Object.assign(Jr(`${xi}/remove`),{withTypes:()=>Ui}),zi=(...e)=>{console.error(`${xi}/error`,...e)};let qi=!0,Gi=!0;function Hi(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function Wi(e,t,r){if(!e.RTCPeerConnection)return;const i=e.RTCPeerConnection.prototype,s=i.addEventListener;i.addEventListener=function(e,i){if(e!==t)return s.apply(this,arguments);const n=e=>{const t=r(e);t&&(i.handleEvent?i.handleEvent(t):i(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(i,n),s.apply(this,[e,n])};const n=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return n.apply(this,arguments);if(!this._eventMap[t].has(r))return n.apply(this,arguments);const i=this._eventMap[t].get(r);return this._eventMap[t].delete(r),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,n.apply(this,[e,i])},Object.defineProperty(i,"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 Ki(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(qi=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function Ji(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(Gi=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function Qi(){if("object"==typeof window){if(qi)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function Zi(e,t){Gi&&console.warn(e+" is deprecated, please use "+t+" instead.")}function Yi(e){return"[object Object]"===Object.prototype.toString.call(e)}function Xi(e){return Yi(e)?Object.keys(e).reduce((function(t,r){const i=Yi(e[r]),s=i?Xi(e[r]):e[r],n=i&&!Object.keys(s).length;return void 0===s||n?t:Object.assign(t,{[r]:s})}),{}):e}function es(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?es(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{es(e,e.get(t),r)}))})))}function ts(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",s=new Map;if(null===t)return s;const n=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&n.push(e)})),n.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&es(e,r,s)}))})),s}const rs=Qi;function is(e,t){const r=e&&e.navigator;if(!r.mediaDevices)return;const i=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((r=>{if("require"===r||"advanced"===r||"mediaSource"===r)return;const i="object"==typeof e[r]?e[r]:{ideal:e[r]};void 0!==i.exact&&"number"==typeof i.exact&&(i.min=i.max=i.exact);const s=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==i.ideal){t.optional=t.optional||[];let e={};"number"==typeof i.ideal?(e[s("min",r)]=i.ideal,t.optional.push(e),e={},e[s("max",r)]=i.ideal,t.optional.push(e)):(e[s("",r)]=i.ideal,t.optional.push(e))}void 0!==i.exact&&"number"!=typeof i.exact?(t.mandatory=t.mandatory||{},t.mandatory[s("",r)]=i.exact):["min","max"].forEach((e=>{void 0!==i[e]&&(t.mandatory=t.mandatory||{},t.mandatory[s(e,r)]=i[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},s=function(e,s){if(t.version>=61)return s(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=i(e.audio)}if(e&&"object"==typeof e.video){let n=e.video.facingMode;n=n&&("object"==typeof n?n:{ideal:n});const a=t.version<66;if(n&&("user"===n.exact||"environment"===n.exact||"user"===n.ideal||"environment"===n.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||a)){let t;if(delete e.video.facingMode,"environment"===n.exact||"environment"===n.ideal?t=["back","rear"]:"user"!==n.exact&&"user"!==n.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let a=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!a&&r.length&&t.includes("back")&&(a=r[r.length-1]),a&&(e.video.deviceId=n.exact?{exact:a.deviceId}:{ideal:a.deviceId}),e.video=i(e.video),rs("chrome: "+JSON.stringify(e)),s(e)}))}e.video=i(e.video)}return rs("chrome: "+JSON.stringify(e)),s(e)},n=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(r.getUserMedia=function(e,t,i){s(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{i&&i(n(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return s(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(n(e))))))}}}function ss(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function ns(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.track.id)):{track:r.track};const s=new Event("track");s.track=r.track,s.receiver=i,s.transceiver={receiver:i},s.streams=[t.stream],this.dispatchEvent(s)})),t.stream.getTracks().forEach((r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.id)):{track:r};const s=new Event("track");s.track=r,s.receiver=i,s.transceiver={receiver:i},s.streams=[t.stream],this.dispatchEvent(s)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else Wi(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function as(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){let s=r.apply(this,arguments);return s||(s=t(this,e),this._senders.push(s)),s};const i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){i.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function os(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,i]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const s=function(e){const t={};return e.result().forEach((e=>{const r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{r[t]=e.stat(t)})),t[r.id]=r})),t},n=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(n(s(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(n(s(t)))},r])})).then(r,i)}}function cs(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>ts(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),Wi(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>ts(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,r,i;return this.getSenders().forEach((r=>{r.track===e&&(t?i=!0:t=r)})),this.getReceivers().forEach((t=>(t.track===e&&(r?i=!0:r=t),t.track===e))),i||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function ds(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const i=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(i)&&this._shimmedLocalStreams[r.id].push(i):this._shimmedLocalStreams[r.id]=[r,i],i};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();r.apply(this,arguments);const i=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(i)};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],i.apply(this,arguments)};const s=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const r=this._shimmedLocalStreams[t].indexOf(e);-1!==r&&this._shimmedLocalStreams[t].splice(r,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),s.apply(this,arguments)}}function ls(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return ds(e);const r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}i.apply(this,[t])};const s=e.RTCPeerConnection.prototype.removeStream;function n(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],s=e._streams[i.id];r=r.replace(new RegExp(s.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:r})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},s.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,r){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const i=[].slice.call(arguments,1);if(1!==i.length||!i[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find((e=>e.track===t)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const s=this._streams[r.id];if(s)s.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const i=new e.MediaStream([t]);this._streams[r.id]=i,this._reverseStreams[i.id]=r,this.addStream(i)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[t=>{const r=n(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>n(this,e)))}};e.RTCPeerConnection.prototype[t]=i[t]}));const a=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],s=e._streams[i.id];r=r.replace(new RegExp(i.id,"g"),s.id)})),new RTCSessionDescription({type:t.type,sdp:r})}(this,arguments[0]),a.apply(this,arguments)):a.apply(this,arguments)};const o=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=o.get.apply(this);return""===e.type?e:n(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((r=>{this._streams[r].getTracks().find((t=>e.track===t))&&(t=this._streams[r])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function ps(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}))}function us(e,t){Wi(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var hs=Object.freeze({__proto__:null,fixNegotiationNeeded:us,shimAddTrackRemoveTrack:ls,shimAddTrackRemoveTrackWithNative:ds,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then((t=>{const i=r.video&&r.video.width,s=r.video&&r.video.height,n=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:n||3}},i&&(r.video.mandatory.maxWidth=i),s&&(r.video.mandatory.maxHeight=s),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))},shimGetSendersWithDtmf:as,shimGetStats:os,shimGetUserMedia:is,shimMediaStream:ss,shimOnTrack:ns,shimPeerConnection:ps,shimSenderReceiverGetStats:cs});function ms(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){Zi("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(e).then(t,i)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){const e=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])},t=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(r){return"object"==typeof r&&"object"==typeof r.audio&&(r=JSON.parse(JSON.stringify(r)),e(r.audio,"autoGainControl","mozAutoGainControl"),e(r.audio,"noiseSuppression","mozNoiseSuppression")),t(r)},i&&i.prototype.getSettings){const t=i.prototype.getSettings;i.prototype.getSettings=function(){const r=t.apply(this,arguments);return e(r,"mozAutoGainControl","autoGainControl"),e(r,"mozNoiseSuppression","noiseSuppression"),r}}if(i&&i.prototype.applyConstraints){const t=i.prototype.applyConstraints;i.prototype.applyConstraints=function(r){return"audio"===this.kind&&"object"==typeof r&&(r=JSON.parse(JSON.stringify(r)),e(r,"autoGainControl","mozAutoGainControl"),e(r,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[r])}}}}function fs(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 gs(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}));const r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},i=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,s,n]=arguments;return i.apply(this,[e||null]).then((e=>{if(t.version<53&&!s)try{e.forEach((e=>{e.type=r[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,i)=>{e.set(i,Object.assign({},t,{type:r[t.type]||t.type}))}))}return e})).then(s,n)}}function vs(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.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 _s(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),Wi(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function bs(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){Zi("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function ys(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function Ss(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]),e=[...e];const r=e.length>0;r&&e.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const i=t.apply(this,arguments);if(r){const{sender:t}=i,r=t.getParameters();(!("encodings"in r)||1===r.encodings.length&&0===Object.keys(r.encodings[0]).length)&&(r.encodings=e,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return i})}function ws(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function Cs(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function Rs(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}var Ts=Object.freeze({__proto__:null,shimAddTransceiver:Ss,shimCreateAnswer:Rs,shimCreateOffer:Cs,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===r.video?r.video={mediaSource:t}:r.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(r)})},shimGetParameters:ws,shimGetUserMedia:ms,shimOnTrack:fs,shimPeerConnection:gs,shimRTCDataChannel:ys,shimReceiverGetStats:_s,shimRemoveStream:bs,shimSenderGetStats:vs});function ks(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((r=>t.call(this,r,e))),e.getVideoTracks().forEach((r=>t.call(this,r,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...r){return r&&r.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const r=e.getTracks();this.getSenders().forEach((e=>{r.includes(e.track)&&this.removeTrack(e)}))})}}function Ps(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const r=new Event("addstream");r.stream=t,e.dispatchEvent(r)}))}),t.apply(e,arguments)}}}function Ds(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,s=t.setLocalDescription,n=t.setRemoteDescription,a=t.addIceCandidate;t.createOffer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],s=r.apply(this,[i]);return t?(s.then(e,t),Promise.resolve()):s},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],s=i.apply(this,[r]);return t?(s.then(e,t),Promise.resolve()):s};let o=function(e,t,r){const i=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i};t.setLocalDescription=o,o=function(e,t,r){const i=n.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.setRemoteDescription=o,o=function(e,t,r){const i=a.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.addIceCandidate=o}function Is(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>r(Es(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function Es(e){return e&&void 0!==e.video?Object.assign({},e,{video:Xi(e.video)}):e}function Os(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){const t=[];for(let r=0;r<e.iceServers.length;r++){let i=e.iceServers[r];void 0===i.urls&&i.url?(Zi("RTCIceServer.url","RTCIceServer.urls"),i=JSON.parse(JSON.stringify(i)),i.urls=i.url,delete i.url,t.push(i)):t.push(e.iceServers[r])}e.iceServers=t}return new t(e,r)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function Ms(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 xs(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const r=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&r?"sendrecv"===r.direction?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":"recvonly"===r.direction&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):!0!==e.offerToReceiveVideo||r||this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function Ls(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var js=Object.freeze({__proto__:null,shimAudioContext:Ls,shimCallbacksAPI:Ds,shimConstraints:Es,shimCreateOfferLegacy:xs,shimGetUserMedia:Is,shimLocalStreamsAPI:ks,shimRTCIceServerUrls:Os,shimRemoteStreamsAPI:Ps,shimTrackEventTransceiver:Ms}),As="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Ns(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Bs={exports:{}};!function(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},t.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},t.getDescription=function(e){const r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){const r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((e=>0===e.indexOf(r)))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const r={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":r.relatedAddress=t[e+1];break;case"rport":r.relatedPort=parseInt(t[e+1],10);break;case"tcptype":r.tcpType=t[e+1];break;case"ufrag":r.ufrag=t[e+1],r.usernameFragment=t[e+1];break;default:void 0===r[t[e]]&&(r[t[e]]=t[e+1])}return r},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const r=e.component;"rtp"===r?t.push(1):"rtcp"===r?t.push(2):t.push(r),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const i=e.type;return t.push("typ"),t.push(i),"host"!==i&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const r={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),r.name=t[0],r.clockRate=parseInt(t[1],10),r.channels=3===t.length?parseInt(t[2],10):1,r.numChannels=r.channels,r},t.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let r;const i=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<i.length;e++)r=i[e].trim().split("="),t[r[0].trim()]=r[1];return t},t.writeFmtp=function(e){let t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const i=[];Object.keys(e.parameters).forEach((t=>{void 0!==e.parameters[t]?i.push(t+"="+e.parameters[t]):i.push(t)})),t+="a=fmtp:"+r+" "+i.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),r={ssrc:parseInt(e.substring(7,t),10)},i=e.indexOf(":",t);return i>-1?(r.attribute=e.substring(t+1,i),r.value=e.substring(i+1)):r.attribute=e.substring(t+1),r},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},t.getMid=function(e){const r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){const t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,r){return t.matchPrefix(e+r,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,r){const i=t.matchPrefix(e+r,"a=ice-ufrag:")[0],s=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&s?{usernameFragment:i.substring(12),password:s.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" ");r.profile=i[2];for(let s=3;s<i.length;s++){const n=i[s],a=t.matchPrefix(e,"a=rtpmap:"+n+" ")[0];if(a){const i=t.parseRtpMap(a),s=t.matchPrefix(e,"a=fmtp:"+n+" ");switch(i.parameters=s.length?t.parseFmtp(s[0]):{},i.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+n+" ").map(t.parseRtcpFb),r.codecs.push(i),i.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(i.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach((e=>{r.headerExtensions.push(t.parseExtmap(e))}));const s=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return r.codecs.forEach((e=>{s.forEach((t=>{e.rtcpFeedback.find((e=>e.type===t.type&&e.parameter===t.parameter))||e.rtcpFeedback.push(t)}))})),r},t.writeRtpDescription=function(e,r){let i="";i+="m="+e+" ",i+=r.codecs.length>0?"9":"0",i+=" "+(r.profile||"UDP/TLS/RTP/SAVPF")+" ",i+=r.codecs.map((e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType)).join(" ")+"\r\n",i+="c=IN IP4 0.0.0.0\r\n",i+="a=rtcp:9 IN IP4 0.0.0.0\r\n",r.codecs.forEach((e=>{i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)}));let s=0;return r.codecs.forEach((e=>{e.maxptime>s&&(s=e.maxptime)})),s>0&&(i+="a=maxptime:"+s+"\r\n"),r.headerExtensions&&r.headerExtensions.forEach((e=>{i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){const r=[],i=t.parseRtpParameters(e),s=-1!==i.fecMechanisms.indexOf("RED"),n=-1!==i.fecMechanisms.indexOf("ULPFEC"),a=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),o=a.length>0&&a[0].ssrc;let c;const d=t.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substring(17).split(" ").map((e=>parseInt(e,10)))));d.length>0&&d[0].length>1&&d[0][0]===o&&(c=d[0][1]),i.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:o,codecPayloadType:parseInt(e.parameters.apt,10)};o&&c&&(t.rtx={ssrc:c}),r.push(t),s&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:o,mechanism:n?"red+ulpfec":"red"},r.push(t))}})),0===r.length&&o&&r.push({ssrc:o});let l=t.matchPrefix(e,"b=");return l.length&&(l=0===l[0].indexOf("b=TIAS:")?parseInt(l[0].substring(7),10):0===l[0].indexOf("b=AS:")?1e3*parseInt(l[0].substring(5),10)*.95-16e3:void 0,r.forEach((e=>{e.maxBitrate=l}))),r},t.parseRtcpParameters=function(e){const r={},i=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];i&&(r.cname=i.value,r.ssrc=i.ssrc);const s=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=s.length>0,r.compound=0===s.length;const n=t.matchPrefix(e,"a=rtcp-mux");return r.mux=n.length>0,r},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 r;const i=t.matchPrefix(e,"a=msid:");if(1===i.length)return r=i[0].substring(7).split(" "),{stream:r[0],track:r[1]};const s=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return s.length>0?(r=s[0].value.split(" "),{stream:r[0],track:r[1]}):void 0},t.parseSctpDescription=function(e){const r=t.parseMLine(e),i=t.matchPrefix(e,"a=max-message-size:");let s;i.length>0&&(s=parseInt(i[0].substring(19),10)),isNaN(s)&&(s=65536);const n=t.matchPrefix(e,"a=sctp-port:");if(n.length>0)return{port:parseInt(n[0].substring(12),10),protocol:r.fmt,maxMessageSize:s};const a=t.matchPrefix(e,"a=sctpmap:");if(a.length>0){const e=a[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:s}}},t.writeSctpDescription=function(e,t){let r=[];return r="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&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,22)},t.writeSessionBoilerplate=function(e,r,i){let s;const n=void 0!==r?r:2;s=e||t.generateSessionId();return"v=0\r\no="+(i||"thisisadapterortc")+" "+s+" "+n+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,r){const i=t.splitLines(e);for(let e=0;e<i.length;e++)switch(i[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[e].substring(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const r=t.splitLines(e)[0].substring(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){const r=t.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const r=t.splitLines(e);for(let e=0;e<r.length;e++)if(r[e].length<2||"="!==r[e].charAt(1))return!1;return!0},e.exports=t}(Bs);var Fs=Bs.exports,$s=Ns(Fs),Vs=e({__proto__:null,default:$s},[Fs]);function Us(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substring(2)),e.candidate&&e.candidate.length){const r=new t(e),i=$s.parseCandidate(e.candidate);for(const e in i)e in r||Object.defineProperty(r,e,{value:i[e]});return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,Wi(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function zs(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||Wi(e,"icecandidate",(e=>{if(e.candidate){const t=$s.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function qs(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(function(e){if(!e||!e.sdp)return!1;const t=$s.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=$s.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))}(arguments[0])){const e=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const r=parseInt(t[1],10);return r!=r?-1:r}(arguments[0]),r=function(e){let r=65536;return"firefox"===t.browser&&(r=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),r}(e),i=function(e,r){let i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);const s=$s.matchPrefix(e.sdp,"a=max-message-size:");return s.length>0?i=parseInt(s[0].substring(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i}(arguments[0],e);let s;s=0===r&&0===i?Number.POSITIVE_INFINITY:0===r||0===i?Math.max(r,i):Math.min(r,i);const n={};Object.defineProperty(n,"maxMessageSize",{get:()=>s}),this._sctp=n}return r.apply(this,arguments)}}function Gs(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const r=e.send;e.send=function(){const i=arguments[0],s=i.length||i.size||i.byteLength;if("open"===e.readyState&&t.sctp&&s>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}const r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=r.apply(this,arguments);return t(e,this),e},Wi(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function Hs(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}}))}function Ws(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const r=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:r}):t.sdp=r}return r.apply(this,arguments)}}function Ks(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.addIceCandidate;r&&0!==r.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():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function Js(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.setLocalDescription;r&&0!==r.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return r.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}if(e.sdp||"offer"!==e.type&&"answer"!==e.type)return r.apply(this,[e]);return("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then((e=>r.apply(this,[e])))})}var Qs=Object.freeze({__proto__:null,removeExtmapAllowMixed:Ws,shimAddIceCandidateNullOrEmpty:Ks,shimConnectionState:Hs,shimMaxMessageSize:qs,shimParameterlessSetLocalDescription:Js,shimRTCIceCandidate:Us,shimRTCIceCandidateRelayProtocol:zs,shimSendThrowTypeError:Gs});const Zs=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=Qi,i=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=Hi(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=Hi(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=Hi(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),s={browserDetails:i,commonShim:Qs,extractVersion:Hi,disableLog:Ki,disableWarnings:Ji,sdp:Vs};switch(i.browser){case"chrome":if(!hs||!ps||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),s;if(null===i.version)return r("Chrome shim can not determine version, not shimming."),s;r("adapter.js shimming chrome."),s.browserShim=hs,Ks(e,i),Js(e),is(e,i),ss(e),ps(e,i),ns(e),ls(e,i),as(e),os(e),cs(e),us(e,i),Us(e),zs(e),Hs(e),qs(e,i),Gs(e),Ws(e,i);break;case"firefox":if(!Ts||!gs||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),s;r("adapter.js shimming firefox."),s.browserShim=Ts,Ks(e,i),Js(e),ms(e,i),gs(e,i),fs(e),bs(e),vs(e),_s(e),ys(e),Ss(e),ws(e),Cs(e),Rs(e),Us(e),Hs(e),qs(e,i),Gs(e);break;case"safari":if(!js||!t.shimSafari)return r("Safari shim is not included in this adapter release."),s;r("adapter.js shimming safari."),s.browserShim=js,Ks(e,i),Js(e),Os(e),xs(e),Ds(e),ks(e),Ps(e),Ms(e),Is(e),Ls(e),Us(e),zs(e),qs(e,i),Gs(e),Ws(e,i);break;default:r("Unsupported browser!")}return s}({window:"undefined"==typeof window?void 0:window});function Ys(e){return{id:e.id,tracks:e.getTracks().map((function(e){return{id:e.id,kind:e.kind,label:e.label,enabled:e.enabled,muted:e.muted,readyState:e.readyState}}))}}var Xs=function(e,t,r){var i=0,s=!!window.mozRTCPeerConnection,n=!!window.RTCIceGatherer,a={};if(r.forEach((function(r){if(window[r+"RTCPeerConnection"]&&("webkit"!==r||!n)){var o=window[r+"RTCPeerConnection"],c=function(r,c){var d=new o(r,c),l="PC_"+i++;d.__rtcStatsId=l,r||(r={nullConfig:!0}),((r=JSON.parse(JSON.stringify(r)))&&r.iceServers||[]).forEach((function(e){delete e.credential})),r.browserType=s?"moz":n?"edge":"webkit",e("create",l,r),c&&e("constraints",l,c),d.addEventListener("icecandidate",(function(t){e("onicecandidate",l,t.candidate)})),d.addEventListener("addstream",(function(t){e("onaddstream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("track",(function(t){e("ontrack",l,t.track.kind+":"+t.track.id+" "+t.streams.map((function(e){return"stream:"+e.id})))})),d.addEventListener("removestream",(function(t){e("onremovestream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("signalingstatechange",(function(){e("onsignalingstatechange",l,d.signalingState)})),d.addEventListener("iceconnectionstatechange",(function(){e("oniceconnectionstatechange",l,d.iceConnectionState)})),d.addEventListener("icegatheringstatechange",(function(){e("onicegatheringstatechange",l,d.iceGatheringState)})),d.addEventListener("connectionstatechange",(function(){e("onconnectionstatechange",l,d.connectionState)})),d.addEventListener("negotiationneeded",(function(){e("onnegotiationneeded",l,void 0)})),d.addEventListener("datachannel",(function(t){e("ondatachannel",l,[t.channel.id,t.channel.label])}));var p=function(){d.getStats(null).then((function(t){var r=function(e){if(!e.entries)return e;var t={};return e.forEach((function(e,r){t[r]=e})),t}(t),i=JSON.parse(JSON.stringify(r));e("getstats",l,function(e,t){t=JSON.parse(JSON.stringify(t)),Object.keys(t).forEach((function(r){var i=t[r];delete i.id,e[r]&&Object.keys(i).forEach((function(s){i[s]===e[r][s]&&delete t[r][s],(0===Object.keys(i).length||1===Object.keys(i).length&&i.timestamp)&&delete t[r]}))}));var r=-1/0;return Object.keys(t).forEach((function(e){var i=t[e];i.timestamp>r&&(r=i.timestamp)})),Object.keys(t).forEach((function(e){var i=t[e];i.timestamp===r&&(i.timestamp=0)})),t.timestamp=r,t}(a[l]||{},r)),a[l]=i}))};if(!n&&t)var u=window.setInterval((function(){"closed"!==d.signalingState?p():window.clearInterval(u)}),t);return n||d.addEventListener("connectionstatechange",(function(){"connected"!==d.connectionState&&"failed"!==d.connectionState||p()})),d};["createDataChannel","close"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){return e(t,this.__rtcStatsId,arguments),r.apply(this,arguments)})})),["addStream","removeStream"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0],s=i.getTracks().map((function(e){return e.kind+":"+e.id})).join(",");return e(t,this.__rtcStatsId,i.id+" "+s),r.apply(this,arguments)})})),["addTrack"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0],s=[].slice.call(arguments,1);return e(t,this.__rtcStatsId,i.kind+":"+i.id+" "+(s.map((function(e){return"stream:"+e.id})).join(";")||"-")),r.apply(this,arguments)})})),["removeTrack"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=arguments[0].track;return e(t,this.__rtcStatsId,i?i.kind+":"+i.id:"null"),r.apply(this,arguments)})})),["createOffer","createAnswer"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i,s=this.__rtcStatsId,n=arguments;return 1===arguments.length&&"object"==typeof arguments[0]?i=arguments[0]:3===arguments.length&&"object"==typeof arguments[2]&&(i=arguments[2]),e(t,this.__rtcStatsId,i),r.apply(this,i?[i]:void 0).then((function(r){if(e(t+"OnSuccess",s,r),!(n.length>0&&"function"==typeof n[0]))return r;n[0].apply(null,[r])}),(function(r){if(e(t+"OnFailure",s,r.toString()),!(n.length>1&&"function"==typeof n[1]))throw r;n[1].apply(null,[r])}))})})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var r=o.prototype[t];r&&(o.prototype[t]=function(){var i=this.__rtcStatsId,s=arguments;return e(t,this.__rtcStatsId,s[0]),r.apply(this,[s[0]]).then((function(){e(t+"OnSuccess",i,void 0),s.length>=2&&"function"==typeof s[1]&&s[1].apply(null,[])}),(function(r){if(e(t+"OnFailure",i,r.toString()),!(s.length>=3&&"function"==typeof s[2]))throw r;s[2].apply(null,[r])}))})})),o.generateCertificate&&Object.defineProperty(c,"generateCertificate",{get:function(){return arguments.length?o.generateCertificate.apply(null,arguments):o.generateCertificate}}),window[r+"RTCPeerConnection"]=c,window[r+"RTCPeerConnection"].prototype=o.prototype}})),r.forEach((function(t){var r=t+(t.length?"GetUserMedia":"getUserMedia");if(navigator[r]){var i=navigator[r].bind(navigator);navigator[r]=function(){e("getUserMedia",null,arguments[0]);var t=arguments[1],r=arguments[2];i(arguments[0],(function(r){e("getUserMediaOnSuccess",null,Ys(r)),t&&t(r)}),(function(t){e("getUserMediaOnFailure",null,t.name),r&&r(t)}))}.bind(navigator)}})),navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){var o=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(){return e("navigator.mediaDevices.getUserMedia",null,arguments[0]),o.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getUserMediaOnSuccess",null,Ys(t)),t}),(function(t){return e("navigator.mediaDevices.getUserMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){var c=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getDisplayMedia=function(){return e("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),c.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getDisplayMediaOnSuccess",null,Ys(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){a={}}}},en=Ns(Xs);let tn;const rn=new Uint8Array(16);function sn(){if(!tn&&(tn="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!tn))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return tn(rn)}const nn=[];for(let US=0;US<256;++US)nn.push((US+256).toString(16).slice(1));var an={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function on(e,t,r){if(an.randomUUID&&!t&&!e)return an.randomUUID();const i=(e=e||{}).random||(e.rng||sn)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=i[e];return t}return function(e,t=0){return nn[e[t+0]]+nn[e[t+1]]+nn[e[t+2]]+nn[e[t+3]]+"-"+nn[e[t+4]]+nn[e[t+5]]+"-"+nn[e[t+6]]+nn[e[t+7]]+"-"+nn[e[t+8]]+nn[e[t+9]]+"-"+nn[e[t+10]]+nn[e[t+11]]+nn[e[t+12]]+nn[e[t+13]]+nn[e[t+14]]+nn[e[t+15]]}(i)}var cn,dn,ln={},pn={exports:{}};function un(){if(dn)return cn;dn=1;var e=1e3,t=60*e,r=60*t,i=24*r,s=7*i,n=365.25*i;function a(e,t,r,i){var s=t>=1.5*r;return Math.round(e/r)+" "+i+(s?"s":"")}return cn=function(o,c){c=c||{};var d=typeof o;if("string"===d&&o.length>0)return function(a){if((a=String(a)).length>100)return;var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(a);if(!o)return;var c=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*n;case"weeks":case"week":case"w":return c*s;case"days":case"day":case"d":return c*i;case"hours":case"hour":case"hrs":case"hr":case"h":return c*r;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(o);if("number"===d&&isFinite(o))return c.long?function(s){var n=Math.abs(s);if(n>=i)return a(s,n,i,"day");if(n>=r)return a(s,n,r,"hour");if(n>=t)return a(s,n,t,"minute");if(n>=e)return a(s,n,e,"second");return s+" ms"}(o):function(s){var n=Math.abs(s);if(n>=i)return Math.round(s/i)+"d";if(n>=r)return Math.round(s/r)+"h";if(n>=t)return Math.round(s/t)+"m";if(n>=e)return Math.round(s/e)+"s";return s+"ms"}(o);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(o))}}var hn=function(e){function t(e){let i,s,n,a=null;function o(...e){if(!o.enabled)return;const r=o,s=Number(new Date),n=s-(i||s);r.diff=n,r.prev=i,r.curr=s,i=s,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((i,s)=>{if("%%"===i)return"%";a++;const n=t.formatters[s];if("function"==typeof n){const t=e[a];i=n.call(r,t),e.splice(a,1),a--}return i})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return o.namespace=e,o.useColors=t.useColors(),o.color=t.selectColor(e),o.extend=r,o.destroy=t.destroy,Object.defineProperty(o,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==a?a:(s!==t.namespaces&&(s=t.namespaces,n=t.enabled(e)),n),set:e=>{a=e}}),"function"==typeof t.init&&t.init(o),o}function r(e,r){const i=t(this.namespace+(void 0===r?":":r)+e);return i.log=this.log,i}function i(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(i),...t.skips.map(i).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const i=("string"==typeof e?e:"").split(/[\s,]+/),s=i.length;for(r=0;r<s;r++)i[r]&&("-"===(e=i[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.slice(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,i;for(r=0,i=t.skips.length;r<i;r++)if(t.skips[r].test(e))return!1;for(r=0,i=t.names.length;r<i;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=un(),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t};!function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let i=0,s=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(s=i))})),t.splice(s,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=hn(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(pn,pn.exports);var mn,fn,gn=pn.exports,vn={},_n={exports:{}};mn=_n,fn=_n.exports,function(e,t){var r="function",i="undefined",s="object",n="string",a="major",o="model",c="name",d="type",l="vendor",p="version",u="architecture",h="console",m="mobile",f="tablet",g="smarttv",v="wearable",_="embedded",b="Amazon",y="Apple",S="ASUS",w="BlackBerry",C="Browser",R="Chrome",T="Firefox",k="Google",P="Huawei",D="LG",I="Microsoft",E="Motorola",O="Opera",M="Samsung",x="Sharp",L="Sony",j="Xiaomi",A="Zebra",N="Facebook",B="Chromium OS",F="Mac OS",$=function(e){for(var t={},r=0;r<e.length;r++)t[e[r].toUpperCase()]=e[r];return t},V=function(e,t){return typeof e===n&&-1!==U(t).indexOf(U(e))},U=function(e){return e.toLowerCase()},z=function(e,t){if(typeof e===n)return e=e.replace(/^\s\s*/,""),typeof t===i?e:e.substring(0,500)},q=function(e,i){for(var n,a,o,c,d,l,p=0;p<i.length&&!d;){var u=i[p],h=i[p+1];for(n=a=0;n<u.length&&!d&&u[n];)if(d=u[n++].exec(e))for(o=0;o<h.length;o++)l=d[++a],typeof(c=h[o])===s&&c.length>0?2===c.length?typeof c[1]==r?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==r||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):t:this[c[0]]=l?c[1].call(this,l,c[2]):t:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):t):this[c]=l||t;p+=2}},G=function(e,r){for(var i in r)if(typeof r[i]===s&&r[i].length>0){for(var n=0;n<r[i].length;n++)if(V(r[i][n],e))return"?"===i?t:i}else if(V(r[i],e))return"?"===i?t:i;return e},H={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},W={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[p,[c,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[p,[c,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[c,p],[/opios[\/ ]+([\w\.]+)/i],[p,[c,O+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[p,[c,O+" GX"]],[/\bopr\/([\w\.]+)/i],[p,[c,O]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[p,[c,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[c,p],[/\bddg\/([\w\.]+)/i],[p,[c,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[p,[c,"UC"+C]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[p,[c,"WeChat"]],[/konqueror\/([\w\.]+)/i],[p,[c,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[p,[c,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[p,[c,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[p,[c,"Smart Lenovo "+C]],[/(avast|avg)\/([\w\.]+)/i],[[c,/(.+)/,"$1 Secure "+C],p],[/\bfocus\/([\w\.]+)/i],[p,[c,T+" Focus"]],[/\bopt\/([\w\.]+)/i],[p,[c,O+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[p,[c,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[p,[c,"Dolphin"]],[/coast\/([\w\.]+)/i],[p,[c,O+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[p,[c,"MIUI "+C]],[/fxios\/([-\w\.]+)/i],[p,[c,T]],[/\bqihu|(qi?ho?o?|360)browser/i],[[c,"360 "+C]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[c,/(.+)/,"$1 "+C],p],[/samsungbrowser\/([\w\.]+)/i],[p,[c,M+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[c,/_/g," "],p],[/metasr[\/ ]?([\d\.]+)/i],[p,[c,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[c,"Sogou Mobile"],p],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[c,p],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[c],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[c,N],p],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[c,p],[/\bgsa\/([\w\.]+) .*safari\//i],[p,[c,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[p,[c,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[p,[c,R+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[c,R+" WebView"],p],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[p,[c,"Android "+C]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[c,p],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[p,[c,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[p,c],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[c,[p,G,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[c,p],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[c,"Netscape"],p],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[p,[c,T+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[c,p],[/(cobalt)\/([\w\.]+)/i],[c,[p,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[u,"amd64"]],[/(ia32(?=;))/i],[[u,U]],[/((?:i[346]|x)86)[;\)]/i],[[u,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[u,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[u,"armhf"]],[/windows (ce|mobile); ppc;/i],[[u,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[u,/ower/,"",U]],[/(sun4\w)[;\)]/i],[[u,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[u,U]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[o,[l,M],[d,f]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[o,[l,M],[d,m]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[o,[l,y],[d,m]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[o,[l,y],[d,f]],[/(macintosh);/i],[o,[l,y]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[o,[l,x],[d,m]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[o,[l,P],[d,f]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[o,[l,P],[d,m]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[o,/_/g," "],[l,j],[d,m]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[o,/_/g," "],[l,j],[d,f]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[o,[l,"OPPO"],[d,m]],[/\b(opd2\d{3}a?) bui/i],[o,[l,"OPPO"],[d,f]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[o,[l,"Vivo"],[d,m]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[o,[l,"Realme"],[d,m]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[o,[l,E],[d,m]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[o,[l,E],[d,f]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[o,[l,D],[d,f]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[o,[l,D],[d,m]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[o,[l,"Lenovo"],[d,f]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[o,/_/g," "],[l,"Nokia"],[d,m]],[/(pixel c)\b/i],[o,[l,k],[d,f]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[o,[l,k],[d,m]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[o,[l,L],[d,m]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[o,"Xperia Tablet"],[l,L],[d,f]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[o,[l,"OnePlus"],[d,m]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[o,[l,b],[d,f]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[o,/(.+)/g,"Fire Phone $1"],[l,b],[d,m]],[/(playbook);[-\w\),; ]+(rim)/i],[o,l,[d,f]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[o,[l,w],[d,m]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[o,[l,S],[d,f]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[o,[l,S],[d,m]],[/(nexus 9)/i],[o,[l,"HTC"],[d,f]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[l,[o,/_/g," "],[d,m]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[o,[l,"Acer"],[d,f]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[o,[l,"Meizu"],[d,m]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[o,[l,"Ulefone"],[d,m]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[l,o,[d,m]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[l,o,[d,f]],[/(surface duo)/i],[o,[l,I],[d,f]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[o,[l,"Fairphone"],[d,m]],[/(u304aa)/i],[o,[l,"AT&T"],[d,m]],[/\bsie-(\w*)/i],[o,[l,"Siemens"],[d,m]],[/\b(rct\w+) b/i],[o,[l,"RCA"],[d,f]],[/\b(venue[\d ]{2,7}) b/i],[o,[l,"Dell"],[d,f]],[/\b(q(?:mv|ta)\w+) b/i],[o,[l,"Verizon"],[d,f]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[o,[l,"Barnes & Noble"],[d,f]],[/\b(tm\d{3}\w+) b/i],[o,[l,"NuVision"],[d,f]],[/\b(k88) b/i],[o,[l,"ZTE"],[d,f]],[/\b(nx\d{3}j) b/i],[o,[l,"ZTE"],[d,m]],[/\b(gen\d{3}) b.+49h/i],[o,[l,"Swiss"],[d,m]],[/\b(zur\d{3}) b/i],[o,[l,"Swiss"],[d,f]],[/\b((zeki)?tb.*\b) b/i],[o,[l,"Zeki"],[d,f]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[l,"Dragon Touch"],o,[d,f]],[/\b(ns-?\w{0,9}) b/i],[o,[l,"Insignia"],[d,f]],[/\b((nxa|next)-?\w{0,9}) b/i],[o,[l,"NextBook"],[d,f]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[l,"Voice"],o,[d,m]],[/\b(lvtel\-)?(v1[12]) b/i],[[l,"LvTel"],o,[d,m]],[/\b(ph-1) /i],[o,[l,"Essential"],[d,m]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[o,[l,"Envizen"],[d,f]],[/\b(trio[-\w\. ]+) b/i],[o,[l,"MachSpeed"],[d,f]],[/\btu_(1491) b/i],[o,[l,"Rotor"],[d,f]],[/(shield[\w ]+) b/i],[o,[l,"Nvidia"],[d,f]],[/(sprint) (\w+)/i],[l,o,[d,m]],[/(kin\.[onetw]{3})/i],[[o,/\./g," "],[l,I],[d,m]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[o,[l,A],[d,f]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[o,[l,A],[d,m]],[/smart-tv.+(samsung)/i],[l,[d,g]],[/hbbtv.+maple;(\d+)/i],[[o,/^/,"SmartTV"],[l,M],[d,g]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[l,D],[d,g]],[/(apple) ?tv/i],[l,[o,y+" TV"],[d,g]],[/crkey/i],[[o,R+"cast"],[l,k],[d,g]],[/droid.+aft(\w+)( bui|\))/i],[o,[l,b],[d,g]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[o,[l,x],[d,g]],[/(bravia[\w ]+)( bui|\))/i],[o,[l,L],[d,g]],[/(mitv-\w{5}) bui/i],[o,[l,j],[d,g]],[/Hbbtv.*(technisat) (.*);/i],[l,o,[d,g]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[l,z],[o,z],[d,g]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[d,g]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[l,o,[d,h]],[/droid.+; (shield) bui/i],[o,[l,"Nvidia"],[d,h]],[/(playstation [345portablevi]+)/i],[o,[l,L],[d,h]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[o,[l,I],[d,h]],[/((pebble))app/i],[l,o,[d,v]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[o,[l,y],[d,v]],[/droid.+; (glass) \d/i],[o,[l,k],[d,v]],[/droid.+; (wt63?0{2,3})\)/i],[o,[l,A],[d,v]],[/(quest( \d| pro)?)/i],[o,[l,N],[d,v]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[l,[d,_]],[/(aeobc)\b/i],[o,[l,b],[d,_]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[o,[d,m]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[o,[d,f]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[d,f]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[d,m]],[/(android[-\w\. ]{0,9});.+buil/i],[o,[l,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[p,[c,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[p,[c,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[c,p],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[p,c]],os:[[/microsoft (windows) (vista|xp)/i],[c,p],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[c,[p,G,H]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[p,G,H],[c,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[p,/_/g,"."],[c,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[c,F],[p,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[p,c],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[c,p],[/\(bb(10);/i],[p,[c,w]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[p,[c,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[p,[c,T+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[p,[c,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[p,[c,"watchOS"]],[/crkey\/([\d\.]+)/i],[p,[c,R+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[c,B],p],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[c,p],[/(sunos) ?([\w\.\d]*)/i],[[c,"Solaris"],p],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[c,p]]},K=function(h,g){if(typeof h===s&&(g=h,h=t),!(this instanceof K))return new K(h,g).getResult();var v=typeof e!==i&&e.navigator?e.navigator:t,_=h||(v&&v.userAgent?v.userAgent:""),b=v&&v.userAgentData?v.userAgentData:t,y=g?function(e,t){var r={};for(var i in e)t[i]&&t[i].length%2==0?r[i]=t[i].concat(e[i]):r[i]=e[i];return r}(W,g):W,S=v&&v.userAgent==_;return this.getBrowser=function(){var e,i={};return i[c]=t,i[p]=t,q.call(i,_,y.browser),i[a]=typeof(e=i[p])===n?e.replace(/[^\d\.]/g,"").split(".")[0]:t,S&&v&&v.brave&&typeof v.brave.isBrave==r&&(i[c]="Brave"),i},this.getCPU=function(){var e={};return e[u]=t,q.call(e,_,y.cpu),e},this.getDevice=function(){var e={};return e[l]=t,e[o]=t,e[d]=t,q.call(e,_,y.device),S&&!e[d]&&b&&b.mobile&&(e[d]=m),S&&"Macintosh"==e[o]&&v&&typeof v.standalone!==i&&v.maxTouchPoints&&v.maxTouchPoints>2&&(e[o]="iPad",e[d]=f),e},this.getEngine=function(){var e={};return e[c]=t,e[p]=t,q.call(e,_,y.engine),e},this.getOS=function(){var e={};return e[c]=t,e[p]=t,q.call(e,_,y.os),S&&!e[c]&&b&&b.platform&&"Unknown"!=b.platform&&(e[c]=b.platform.replace(/chrome os/i,B).replace(/macos/i,F)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return _},this.setUA=function(e){return _=typeof e===n&&e.length>500?z(e,500):e,this},this.setUA(_),this};K.VERSION="1.0.38",K.BROWSER=$([c,p,a]),K.CPU=$([u]),K.DEVICE=$([o,l,d,h,m,g,f,v,_]),K.ENGINE=K.OS=$([c,p]),mn.exports&&(fn=mn.exports=K),fn.UAParser=K;var J=typeof e!==i&&(e.jQuery||e.Zepto);if(J&&!J.ua){var Q=new K;J.ua=Q.getResult(),J.ua.get=function(){return Q.getUA()},J.ua.set=function(e){Q.setUA(e);var t=Q.getResult();for(var r in t)J.ua[r]=t[r]}}}("object"==typeof window?window:As);var bn=_n.exports,yn={},Sn=As&&As.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(yn,"__esModule",{value:!0}),yn.Logger=void 0;const wn=Sn(gn),Cn="mediasoup-client";yn.Logger=class{constructor(e){e?(this._debug=(0,wn.default)(`${Cn}:${e}`),this._warn=(0,wn.default)(`${Cn}:WARN:${e}`),this._error=(0,wn.default)(`${Cn}:ERROR:${e}`)):(this._debug=(0,wn.default)(Cn),this._warn=(0,wn.default)(`${Cn}:WARN`),this._error=(0,wn.default)(`${Cn}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}};var Rn,Tn={},kn={exports:{}},Pn="object"==typeof Reflect?Reflect:null,Dn=Pn&&"function"==typeof Pn.apply?Pn.apply:function(e,t,r){return Function.prototype.apply.call(e,t,r)};Rn=Pn&&"function"==typeof Pn.ownKeys?Pn.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var In=Number.isNaN||function(e){return e!=e};function En(){En.init.call(this)}kn.exports=En,kn.exports.once=function(e,t){return new Promise((function(r,i){function s(r){e.removeListener(t,n),i(r)}function n(){"function"==typeof e.removeListener&&e.removeListener("error",s),r([].slice.call(arguments))}$n(e,t,n,{once:!0}),"error"!==t&&function(e,t,r){"function"==typeof e.on&&$n(e,"error",t,r)}(e,s,{once:!0})}))},En.EventEmitter=En,En.prototype._events=void 0,En.prototype._eventsCount=0,En.prototype._maxListeners=void 0;var On=10;function Mn(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function xn(e){return void 0===e._maxListeners?En.defaultMaxListeners:e._maxListeners}function Ln(e,t,r,i){var s,n,a;if(Mn(r),void 0===(n=e._events)?(n=e._events=Object.create(null),e._eventsCount=0):(void 0!==n.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),a=n[t]),void 0===a)a=n[t]=r,++e._eventsCount;else if("function"==typeof a?a=n[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),(s=xn(e))>0&&a.length>s&&!a.warned){a.warned=!0;var o=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");o.name="MaxListenersExceededWarning",o.emitter=e,o.type=t,o.count=a.length,function(e){console&&console.warn&&console.warn(e)}(o)}return e}function jn(){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 An(e,t,r){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},s=jn.bind(i);return s.listener=r,i.wrapFn=s,s}function Nn(e,t,r){var i=e._events;if(void 0===i)return[];var s=i[t];return void 0===s?[]:"function"==typeof s?r?[s.listener||s]:[s]:r?function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(s):Fn(s,s.length)}function Bn(e){var t=this._events;if(void 0!==t){var r=t[e];if("function"==typeof r)return 1;if(void 0!==r)return r.length}return 0}function Fn(e,t){for(var r=new Array(t),i=0;i<t;++i)r[i]=e[i];return r}function $n(e,t,r,i){if("function"==typeof e.on)i.once?e.once(t,r):e.on(t,r);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function s(n){i.once&&e.removeEventListener(t,s),r(n)}))}}Object.defineProperty(En,"defaultMaxListeners",{enumerable:!0,get:function(){return On},set:function(e){if("number"!=typeof e||e<0||In(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");On=e}}),En.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},En.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||In(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},En.prototype.getMaxListeners=function(){return xn(this)},En.prototype.emit=function(e){for(var t=[],r=1;r<arguments.length;r++)t.push(arguments[r]);var i="error"===e,s=this._events;if(void 0!==s)i=i&&void 0===s.error;else if(!i)return!1;if(i){var n;if(t.length>0&&(n=t[0]),n instanceof Error)throw n;var a=new Error("Unhandled error."+(n?" ("+n.message+")":""));throw a.context=n,a}var o=s[e];if(void 0===o)return!1;if("function"==typeof o)Dn(o,this,t);else{var c=o.length,d=Fn(o,c);for(r=0;r<c;++r)Dn(d[r],this,t)}return!0},En.prototype.addListener=function(e,t){return Ln(this,e,t,!1)},En.prototype.on=En.prototype.addListener,En.prototype.prependListener=function(e,t){return Ln(this,e,t,!0)},En.prototype.once=function(e,t){return Mn(t),this.on(e,An(this,e,t)),this},En.prototype.prependOnceListener=function(e,t){return Mn(t),this.prependListener(e,An(this,e,t)),this},En.prototype.removeListener=function(e,t){var r,i,s,n,a;if(Mn(t),void 0===(i=this._events))return this;if(void 0===(r=i[e]))return this;if(r===t||r.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(s=-1,n=r.length-1;n>=0;n--)if(r[n]===t||r[n].listener===t){a=r[n].listener,s=n;break}if(s<0)return this;0===s?r.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(r,s),1===r.length&&(i[e]=r[0]),void 0!==i.removeListener&&this.emit("removeListener",e,a||t)}return this},En.prototype.off=En.prototype.removeListener,En.prototype.removeAllListeners=function(e){var t,r,i;if(void 0===(r=this._events))return this;if(void 0===r.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==r[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete r[e]),this;if(0===arguments.length){var s,n=Object.keys(r);for(i=0;i<n.length;++i)"removeListener"!==(s=n[i])&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(void 0!==t)for(i=t.length-1;i>=0;i--)this.removeListener(e,t[i]);return this},En.prototype.listeners=function(e){return Nn(this,e,!0)},En.prototype.rawListeners=function(e){return Nn(this,e,!1)},En.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Bn.call(e,t)},En.prototype.listenerCount=Bn,En.prototype.eventNames=function(){return this._eventsCount>0?Rn(this._events):[]};var Vn=kn.exports;Object.defineProperty(Tn,"__esModule",{value:!0}),Tn.EnhancedEventEmitter=void 0;const Un=Vn,zn=new yn.Logger("EnhancedEventEmitter");class qn extends Un.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}emit(e,...t){return super.emit(e,...t)}safeEmit(e,...t){const r=super.listenerCount(e);try{return super.emit(e,...t)}catch(t){return zn.error("safeEmit() | event listener threw an error [eventName:%s]:%o",e,t),Boolean(r)}}on(e,t){return super.on(e,t),this}off(e,t){return super.off(e,t),this}addListener(e,t){return super.on(e,t),this}prependListener(e,t){return super.prependListener(e,t),this}once(e,t){return super.once(e,t),this}prependOnceListener(e,t){return super.prependOnceListener(e,t),this}removeListener(e,t){return super.off(e,t),this}removeAllListeners(e){return super.removeAllListeners(e),this}listenerCount(e){return super.listenerCount(e)}listeners(e){return super.listeners(e)}rawListeners(e){return super.rawListeners(e)}}Tn.EnhancedEventEmitter=qn;var Gn={};Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.InvalidStateError=Gn.UnsupportedError=void 0;class Hn extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Hn):this.stack=new Error(e).stack}}Gn.UnsupportedError=Hn;class Wn extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Wn):this.stack=new Error(e).stack}}Gn.InvalidStateError=Wn;var Kn={};Object.defineProperty(Kn,"__esModule",{value:!0}),Kn.clone=function(e){return void 0===e?void 0:Number.isNaN(e)?NaN:"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))},Kn.generateRandomNumber=function(){return Math.round(1e7*Math.random())},Kn.deepFreeze=function e(t){const r=Reflect.ownKeys(t);for(const i of r){const r=t[i];(r&&"object"==typeof r||"function"==typeof r)&&e(r)}return Object.freeze(t)};var Jn={},Qn={},Zn={},Yn=As&&As.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Zn,"__esModule",{value:!0}),Zn.Logger=void 0;const Xn=Yn(gn),ea="h264-profile-level-id";Zn.Logger=class{constructor(e){e?(this._debug=(0,Xn.default)(`${ea}:${e}`),this._warn=(0,Xn.default)(`${ea}:WARN:${e}`),this._error=(0,Xn.default)(`${ea}:ERROR:${e}`)):(this._debug=(0,Xn.default)(ea),this._warn=(0,Xn.default)(`${ea}:WARN`),this._error=(0,Xn.default)(`${ea}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}},Object.defineProperty(Qn,"__esModule",{value:!0}),Qn.generateProfileLevelIdStringForAnswer=Qn.isSameProfile=Qn.parseSdpProfileLevelId=Qn.levelToString=Qn.profileToString=Qn.profileLevelIdToString=Qn.parseProfileLevelId=Qn.ProfileLevelId=Qn.Level=Qn.Profile=void 0;const ta=new Zn.Logger;var ra,ia;!function(e){e[e.ConstrainedBaseline=1]="ConstrainedBaseline",e[e.Baseline=2]="Baseline",e[e.Main=3]="Main",e[e.ConstrainedHigh=4]="ConstrainedHigh",e[e.High=5]="High",e[e.PredictiveHigh444=6]="PredictiveHigh444"}(ra||(Qn.Profile=ra={})),function(e){e[e.L1_b=0]="L1_b",e[e.L1=10]="L1",e[e.L1_1=11]="L1_1",e[e.L1_2=12]="L1_2",e[e.L1_3=13]="L1_3",e[e.L2=20]="L2",e[e.L2_1=21]="L2_1",e[e.L2_2=22]="L2_2",e[e.L3=30]="L3",e[e.L3_1=31]="L3_1",e[e.L3_2=32]="L3_2",e[e.L4=40]="L4",e[e.L4_1=41]="L4_1",e[e.L4_2=42]="L4_2",e[e.L5=50]="L5",e[e.L5_1=51]="L5_1",e[e.L5_2=52]="L5_2"}(ia||(Qn.Level=ia={}));class sa{constructor(e,t){this.profile=e,this.level=t}}Qn.ProfileLevelId=sa;const na=new sa(ra.ConstrainedBaseline,ia.L3_1);class aa{constructor(e){this.mask=~ua("x",e),this.masked_value=ua("1",e)}isMatch(e){return this.masked_value===(e&this.mask)}}class oa{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const ca=[new oa(66,new aa("x1xx0000"),ra.ConstrainedBaseline),new oa(77,new aa("1xxx0000"),ra.ConstrainedBaseline),new oa(88,new aa("11xx0000"),ra.ConstrainedBaseline),new oa(66,new aa("x0xx0000"),ra.Baseline),new oa(88,new aa("10xx0000"),ra.Baseline),new oa(77,new aa("0x0x0000"),ra.Main),new oa(100,new aa("00000000"),ra.High),new oa(100,new aa("00001100"),ra.ConstrainedHigh),new oa(244,new aa("00000000"),ra.PredictiveHigh444)];function da(e){if("string"!=typeof e||6!==e.length)return;const t=parseInt(e,16);if(0===t)return;const r=255&t,i=t>>8&255,s=t>>16&255;let n;switch(r){case ia.L1_1:n=0!=(16&i)?ia.L1_b:ia.L1_1;break;case ia.L1:case ia.L1_2:case ia.L1_3:case ia.L2:case ia.L2_1:case ia.L2_2:case ia.L3:case ia.L3_1:case ia.L3_2:case ia.L4:case ia.L4_1:case ia.L4_2:case ia.L5:case ia.L5_1:case ia.L5_2:n=r;break;default:return void ta.warn(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${r}]`)}for(const e of ca)if(s===e.profile_idc&&e.profile_iop.isMatch(i))return new sa(e.profile,n);ta.warn(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${s}, profile_iop:${i}]`)}function la(e){if(e.level==ia.L1_b)switch(e.profile){case ra.ConstrainedBaseline:return"42f00b";case ra.Baseline:return"42100b";case ra.Main:return"4d100b";default:return void ta.warn(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`)}let t;switch(e.profile){case ra.ConstrainedBaseline:t="42e0";break;case ra.Baseline:t="4200";break;case ra.Main:t="4d00";break;case ra.ConstrainedHigh:t="640c";break;case ra.High:t="6400";break;case ra.PredictiveHigh444:t="f400";break;default:return void ta.warn(`profileLevelIdToString() | unrecognized profile ${e.profile}`)}let r=e.level.toString(16);return 1===r.length&&(r=`0${r}`),`${t}${r}`}function pa(e={}){const t=e["profile-level-id"];return t?da(t):na}function ua(e,t){return Number(t[0]===e)<<7|Number(t[1]===e)<<6|Number(t[2]===e)<<5|Number(t[3]===e)<<4|Number(t[4]===e)<<3|Number(t[5]===e)<<2|Number(t[6]===e)<<1|Number(t[7]===e)<<0}function ha(e={}){const t=e["level-asymmetry-allowed"];return!0===t||1===t||"1"===t}Qn.parseProfileLevelId=da,Qn.profileLevelIdToString=la,Qn.profileToString=function(e){switch(e){case ra.ConstrainedBaseline:return"ConstrainedBaseline";case ra.Baseline:return"Baseline";case ra.Main:return"Main";case ra.ConstrainedHigh:return"ConstrainedHigh";case ra.High:return"High";case ra.PredictiveHigh444:return"PredictiveHigh444";default:return void ta.warn(`profileToString() | unrecognized profile ${e}`)}},Qn.levelToString=function(e){switch(e){case ia.L1_b:return"1b";case ia.L1:return"1";case ia.L1_1:return"1.1";case ia.L1_2:return"1.2";case ia.L1_3:return"1.3";case ia.L2:return"2";case ia.L2_1:return"2.1";case ia.L2_2:return"2.2";case ia.L3:return"3";case ia.L3_1:return"3.1";case ia.L3_2:return"3.2";case ia.L4:return"4";case ia.L4_1:return"4.1";case ia.L4_2:return"4.2";case ia.L5:return"5";case ia.L5_1:return"5.1";case ia.L5_2:return"5.2";default:return void ta.warn(`levelToString() | unrecognized level ${e}`)}},Qn.parseSdpProfileLevelId=pa,Qn.isSameProfile=function(e={},t={}){const r=pa(e),i=pa(t);return Boolean(r&&i&&r.profile===i.profile)},Qn.generateProfileLevelIdStringForAnswer=function(e={},t={}){if(!e["profile-level-id"]&&!t["profile-level-id"])return void ta.warn("generateProfileLevelIdStringForAnswer() | profile-level-id missing in local and remote params");const r=pa(e),i=pa(t);if(!r)throw new TypeError("invalid local_profile_level_id");if(!i)throw new TypeError("invalid remote_profile_level_id");if(r.profile!==i.profile)throw new TypeError("H264 Profile mismatch");const s=ha(e)&&ha(t),n=r.level,a=i.level,o=function(e,t){return e===ia.L1_b?t!==ia.L1&&t!==ia.L1_b:t===ia.L1_b?e!==ia.L1:e<t}(c=n,d=a)?c:d;var c,d;const l=s?n:o;return ta.debug(`generateProfileLevelIdStringForAnswer() | result [profile:${r.profile}, level:${l}]`),la(new sa(r.profile,l))};var ma=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),fa=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ga=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ma(t,e,r);return fa(t,e),t};Object.defineProperty(Jn,"__esModule",{value:!0}),Jn.validateRtpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(e.codecs&&!Array.isArray(e.codecs))throw new TypeError("caps.codecs is not an array");e.codecs||(e.codecs=[]);for(const t of e.codecs)Ca(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("caps.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)Ta(t)},Jn.validateRtpParameters=wa,Jn.validateSctpStreamParameters=function(e){if("object"!=typeof e)throw new TypeError("params is not an object");if("number"!=typeof e.streamId)throw new TypeError("missing params.streamId");let t=!1;"boolean"==typeof e.ordered?t=!0:e.ordered=!0;if(e.maxPacketLifeTime&&"number"!=typeof e.maxPacketLifeTime)throw new TypeError("invalid params.maxPacketLifeTime");if(e.maxRetransmits&&"number"!=typeof e.maxRetransmits)throw new TypeError("invalid params.maxRetransmits");if(e.maxPacketLifeTime&&e.maxRetransmits)throw new TypeError("cannot provide both maxPacketLifeTime and maxRetransmits");if(t&&e.ordered&&(e.maxPacketLifeTime||e.maxRetransmits))throw new TypeError("cannot be ordered with maxPacketLifeTime or maxRetransmits");t||!e.maxPacketLifeTime&&!e.maxRetransmits||(e.ordered=!1);if(e.label&&"string"!=typeof e.label)throw new TypeError("invalid params.label");if(e.protocol&&"string"!=typeof e.protocol)throw new TypeError("invalid params.protocol")},Jn.validateSctpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(!e.numStreams||"object"!=typeof e.numStreams)throw new TypeError("missing caps.numStreams");!function(e){if("object"!=typeof e)throw new TypeError("numStreams is not an object");if("number"!=typeof e.OS)throw new TypeError("missing numStreams.OS");if("number"!=typeof e.MIS)throw new TypeError("missing numStreams.MIS")}(e.numStreams)},Jn.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(Ia(i))continue;const t=(e.codecs||[]).find((e=>Ea(e,i,{strict:!0,modify:!0})));if(!t)continue;const s={mimeType:t.mimeType,kind:t.kind,clockRate:t.clockRate,channels:t.channels,localPayloadType:t.preferredPayloadType,localRtxPayloadType:void 0,remotePayloadType:i.preferredPayloadType,remoteRtxPayloadType:void 0,localParameters:t.parameters,remoteParameters:i.parameters,rtcpFeedback:Ma(t,i)};r.codecs.push(s)}for(const i of r.codecs){const r=e.codecs.find((e=>Ia(e)&&e.parameters.apt===i.localPayloadType)),s=t.codecs.find((e=>Ia(e)&&e.parameters.apt===i.remotePayloadType));r&&s&&(i.localRtxPayloadType=r.preferredPayloadType,i.remoteRtxPayloadType=s.preferredPayloadType)}for(const i of t.headerExtensions){const t=e.headerExtensions.find((e=>Oa(e,i)));if(!t)continue;const s={kind:i.kind,uri:i.uri,sendId:t.preferredId,recvId:i.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(i.direction){case"sendrecv":s.direction="sendrecv";break;case"recvonly":s.direction="sendonly";break;case"sendonly":s.direction="recvonly";break;case"inactive":s.direction="inactive"}r.headerExtensions.push(s)}return r},Jn.getRecvRtpCapabilities=function(e){const t={codecs:[],headerExtensions:[]};for(const r of e.codecs){const e={mimeType:r.mimeType,kind:r.kind,preferredPayloadType:r.remotePayloadType,clockRate:r.clockRate,channels:r.channels,parameters:r.localParameters,rtcpFeedback:r.rtcpFeedback};if(t.codecs.push(e),!r.remoteRtxPayloadType)continue;const i={mimeType:`${r.kind}/rtx`,kind:r.kind,preferredPayloadType:r.remoteRtxPayloadType,clockRate:r.clockRate,parameters:{apt:r.remotePayloadType},rtcpFeedback:[]};t.codecs.push(i)}for(const r of e.headerExtensions){if("sendrecv"!==r.direction&&"recvonly"!==r.direction)continue;const e={kind:r.kind,uri:r.uri,preferredId:r.recvId,preferredEncrypt:r.encrypt,direction:r.direction};t.headerExtensions.push(e)}return t},Jn.getSendingRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const i of t.codecs){if(i.kind!==e)continue;const t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.localParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){const e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;const t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}return r},Jn.getSendingRemoteRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const i of t.codecs){if(i.kind!==e)continue;const t={mimeType:i.mimeType,payloadType:i.localPayloadType,clockRate:i.clockRate,channels:i.channels,parameters:i.remoteParameters,rtcpFeedback:i.rtcpFeedback};if(r.codecs.push(t),i.localRtxPayloadType){const e={mimeType:`${i.kind}/rtx`,payloadType:i.localRtxPayloadType,clockRate:i.clockRate,parameters:{apt:i.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const i of t.headerExtensions){if(i.kind&&i.kind!==e||"sendrecv"!==i.direction&&"sendonly"!==i.direction)continue;const t={uri:i.uri,id:i.sendId,encrypt:i.encrypt,parameters:{}};r.headerExtensions.push(t)}if(r.headerExtensions.some((e=>"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"goog-remb"!==e.type));else if(r.headerExtensions.some((e=>"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type));else for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type&&"goog-remb"!==e.type));return r},Jn.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(Ea(e[i],t,{strict:!0})){r.push(e[i]),Ia(e[i+1])&&r.push(e[i+1]);break}if(0===r.length)throw new TypeError("no matching codec found")}else r.push(e[0]),Ia(e[1])&&r.push(e[1]);return r},Jn.generateProbatorRtpParameters=function(e){wa(e=_a.clone(e));const t={mid:ba,codecs:[],headerExtensions:[],encodings:[{ssrc:ya}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=Sa,t.headerExtensions=e.headerExtensions,t},Jn.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},Jn.canReceive=function(e,t){if(wa(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};const va=ga(Qn),_a=ga(Kn),ba="probator",ya=1234,Sa=127;function wa(e){if("object"!=typeof e)throw new TypeError("params is not an object");if(e.mid&&"string"!=typeof e.mid)throw new TypeError("params.mid is not a string");if(!Array.isArray(e.codecs))throw new TypeError("missing params.codecs");for(const t of e.codecs)ka(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("params.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)Pa(t);if(e.encodings&&!Array.isArray(e.encodings))throw new TypeError("params.encodings is not an array");e.encodings||(e.encodings=[]);for(const t of e.encodings)Da(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),function(e){if("object"!=typeof e)throw new TypeError("rtcp is not an object");if(e.cname&&"string"!=typeof e.cname)throw new TypeError("invalid rtcp.cname");e.reducedSize&&"boolean"==typeof e.reducedSize||(e.reducedSize=!0)}(e.rtcp)}function Ca(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if(e.kind=r[1].toLowerCase(),e.preferredPayloadType&&"number"!=typeof e.preferredPayloadType)throw new TypeError("invalid codec.preferredPayloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===e.kind?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)Ra(t)}function Ra(e){if("object"!=typeof e)throw new TypeError("fb is not an object");if(!e.type||"string"!=typeof e.type)throw new TypeError("missing fb.type");e.parameter&&"string"==typeof e.parameter||(e.parameter="")}function Ta(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if("audio"!==e.kind&&"video"!==e.kind)throw new TypeError("invalid ext.kind");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.preferredId)throw new TypeError("missing ext.preferredId");if(e.preferredEncrypt&&"boolean"!=typeof e.preferredEncrypt)throw new TypeError("invalid ext.preferredEncrypt");if(e.preferredEncrypt||(e.preferredEncrypt=!1),e.direction&&"string"!=typeof e.direction)throw new TypeError("invalid ext.direction");e.direction||(e.direction="sendrecv")}function ka(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if("number"!=typeof e.payloadType)throw new TypeError("missing codec.payloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===r[1].toLowerCase()?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)Ra(t)}function Pa(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.id)throw new TypeError("missing ext.id");if(e.encrypt&&"boolean"!=typeof e.encrypt)throw new TypeError("invalid ext.encrypt");e.encrypt||(e.encrypt=!1),e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError("invalid header extension parameter")}}function Da(e){if("object"!=typeof e)throw new TypeError("encoding is not an object");if(e.ssrc&&"number"!=typeof e.ssrc)throw new TypeError("invalid encoding.ssrc");if(e.rid&&"string"!=typeof e.rid)throw new TypeError("invalid encoding.rid");if(e.rtx&&"object"!=typeof e.rtx)throw new TypeError("invalid encoding.rtx");if(e.rtx&&"number"!=typeof e.rtx.ssrc)throw new TypeError("missing encoding.rtx.ssrc");if(e.dtx&&"boolean"==typeof e.dtx||(e.dtx=!1),e.scalabilityMode&&"string"!=typeof e.scalabilityMode)throw new TypeError("invalid encoding.scalabilityMode")}function Ia(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function Ea(e,t,{strict:r=!1,modify:i=!1}={}){const s=e.mimeType.toLowerCase();if(s!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(s){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!va.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=va.generateProfileLevelIdStringForAnswer(e.parameters,t.parameters)}catch(e){return!1}i&&(r?(e.parameters["profile-level-id"]=r,t.parameters["profile-level-id"]=r):(delete e.parameters["profile-level-id"],delete t.parameters["profile-level-id"]))}break;case"video/vp9":if(r){if((e.parameters["profile-id"]||0)!==(t.parameters["profile-id"]||0))return!1}}return!0}function Oa(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Ma(e,t){const r=[];for(const i of e.rtcpFeedback||[]){const e=(t.rtcpFeedback||[]).find((e=>e.type===i.type&&(e.parameter===i.parameter||!e.parameter&&!i.parameter)));e&&r.push(e)}return r}var xa={},La={},ja={};Object.defineProperty(ja,"__esModule",{value:!0}),ja.Logger=void 0;const Aa=gn,Na="awaitqueue";ja.Logger=class{constructor(e){e?(this._debug=(0,Aa.default)(`${Na}:${e}`),this._warn=(0,Aa.default)(`${Na}:WARN:${e}`),this._error=(0,Aa.default)(`${Na}:ERROR:${e}`)):(this._debug=(0,Aa.default)(Na),this._warn=(0,Aa.default)(`${Na}:WARN`),this._error=(0,Aa.default)(`${Na}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}},Object.defineProperty(La,"__esModule",{value:!0}),La.AwaitQueue=La.AwaitQueueRemovedTaskError=La.AwaitQueueStoppedError=void 0;const Ba=new ja.Logger;class Fa extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,Fa)}}La.AwaitQueueStoppedError=Fa;class $a extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,$a)}}La.AwaitQueueRemovedTaskError=$a;
|
|
11
|
-
/*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
|
|
12
|
-
let Va;La.AwaitQueue=class{constructor(){this.pendingTasks=new Map,this.nextTaskId=0,this.stopping=!1}get size(){return this.pendingTasks.size}async push(e,t){if(t=t??e.name,Ba.debug(`push() [name:${t}]`),"function"!=typeof e)throw new TypeError("given task is not a function");if(t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,i)=>{const s={id:this.nextTaskId++,task:e,name:t,enqueuedAt:Date.now(),executedAt:void 0,completed:!1,resolve:e=>{if(s.completed)return;s.completed=!0,this.pendingTasks.delete(s.id),Ba.debug(`resolving task [name:${s.name}]`),r(e);const[t]=this.pendingTasks.values();t&&!t.executedAt&&this.execute(t)},reject:e=>{if(!s.completed&&(s.completed=!0,this.pendingTasks.delete(s.id),Ba.debug(`rejecting task [name:${s.name}]: %s`,String(e)),i(e),!this.stopping)){const[e]=this.pendingTasks.values();e&&!e.executedAt&&this.execute(e)}}};this.pendingTasks.set(s.id,s),1===this.pendingTasks.size&&this.execute(s)}))}stop(){Ba.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())Ba.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new Fa);this.stopping=!1}remove(e){Ba.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new $a):Ba.debug(`stop() | no task with given idx [taskIdx:${e}]`)}dump(){const e=Date.now();let t=0;return Array.from(this.pendingTasks.values()).map((r=>({idx:t++,task:r.task,name:r.name,enqueuedTime:r.executedAt?r.executedAt-r.enqueuedAt:e-r.enqueuedAt,executionTime:r.executedAt?e-r.executedAt:0})))}async execute(e){if(Ba.debug(`execute() [name:${e.name}]`),e.executedAt)throw new Error("task already being executed");e.executedAt=Date.now();try{const t=await e.task();e.resolve(t)}catch(t){e.reject(t)}}};var Ua="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:As):e=>(Va||(Va=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),za={};Object.defineProperty(za,"__esModule",{value:!0}),za.Producer=void 0;const qa=Tn,Ga=Gn,Ha=new yn.Logger("Producer");class Wa extends qa.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:i,rtpParameters:s,stopTracks:n,disableTrackOnPause:a,zeroRtpOnPause:o,appData:c}){super(),this._closed=!1,this._observer=new qa.EnhancedEventEmitter,Ha.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=i,this._kind=i.kind,this._rtpParameters=s,this._paused=!!a&&!i.enabled,this._maxSpatialLayer=void 0,this._stopTracks=n,this._disableTrackOnPause=a,this._zeroRtpOnPause=o,this._appData=c||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get closed(){return this._closed}get kind(){return this._kind}get rtpSender(){return this._rtpSender}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get maxSpatialLayer(){return this._maxSpatialLayer}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Ha.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Ha.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Ga.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Ha.debug("pause()"),this._closed?Ha.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@pause",e,t)})).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){Ha.debug("resume()"),this._closed?Ha.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@resume",e,t)})).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(Ha.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new Ga.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new Ga.InvalidStateError("track ended");e!==this._track?(await new Promise(((t,r)=>{this.safeEmit("@replacetrack",e,t,r)})),this.destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this.handleTrack()):Ha.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new Ga.InvalidStateError("closed");if("video"!==this._kind)throw new Ga.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await new Promise(((t,r)=>{this.safeEmit("@setmaxspatiallayer",e,t,r)})).catch((()=>{})),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new Ga.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){Ha.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track&&this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){if(this._track)try{this._track.removeEventListener("ended",this.onTrackEnded),this._stopTracks&&this._track.stop()}catch(e){}}}za.Producer=Wa;var Ka={};Object.defineProperty(Ka,"__esModule",{value:!0}),Ka.Consumer=void 0;const Ja=Tn,Qa=Gn,Za=new yn.Logger("Consumer");class Ya extends Ja.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:s,rtpParameters:n,appData:a}){super(),this._closed=!1,this._observer=new Ja.EnhancedEventEmitter,Za.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=i,this._track=s,this._rtpParameters=n,this._paused=!s.enabled,this._appData=a||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get producerId(){return this._producerId}get closed(){return this._closed}get kind(){return this._track.kind}get rtpReceiver(){return this._rtpReceiver}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Za.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Za.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Qa.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Za.debug("pause()"),this._closed?Za.error("pause() | Consumer closed"):this._paused?Za.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){Za.debug("resume()"),this._closed?Za.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):Za.debug("resume() | Consumer is already resumed")}onTrackEnded(){Za.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){try{this._track.removeEventListener("ended",this.onTrackEnded),this._track.stop()}catch(e){}}}Ka.Consumer=Ya;var Xa={};Object.defineProperty(Xa,"__esModule",{value:!0}),Xa.DataProducer=void 0;const eo=Tn,to=Gn,ro=new yn.Logger("DataProducer");class io extends eo.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new eo.EnhancedEventEmitter,ro.debug("constructor()"),this._id=e,this._dataChannel=t,this._sctpStreamParameters=r,this._appData=i||{},this.handleDataChannel()}get id(){return this._id}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get bufferedAmount(){return this._dataChannel.bufferedAmount}get bufferedAmountLowThreshold(){return this._dataChannel.bufferedAmountLowThreshold}set bufferedAmountLowThreshold(e){this._dataChannel.bufferedAmountLowThreshold=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(ro.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(ro.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(ro.debug("send()"),this._closed)throw new to.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(ro.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?ro.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):ro.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(ro.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||ro.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}Xa.DataProducer=io;var so={};Object.defineProperty(so,"__esModule",{value:!0}),so.DataConsumer=void 0;const no=Tn,ao=new yn.Logger("DataConsumer");class oo extends no.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:s}){super(),this._closed=!1,this._observer=new no.EnhancedEventEmitter,ao.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=i,this._appData=s||{},this.handleDataChannel()}get id(){return this._id}get dataProducerId(){return this._dataProducerId}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get binaryType(){return this._dataChannel.binaryType}set binaryType(e){this._dataChannel.binaryType=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(ao.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(ao.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(ao.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?ao.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):ao.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(ao.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}so.DataConsumer=oo;var co=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),lo=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),po=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&co(t,e,r);return lo(t,e),t},uo=As&&As.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(xa,"__esModule",{value:!0}),xa.Transport=void 0;const ho=La,mo=uo(Ua),fo=yn,go=Tn,vo=Gn,_o=po(Kn),bo=po(Jn),yo=za,So=Ka,wo=Xa,Co=so,Ro=new fo.Logger("Transport");class To{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}let ko=class extends go.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:p,extendedRtpCapabilities:u,canProduceByKind:h}){super(),this._closed=!1,this._iceGatheringState="new",this._connectionState="new",this._producers=new Map,this._consumers=new Map,this._dataProducers=new Map,this._dataConsumers=new Map,this._probatorConsumerCreated=!1,this._awaitQueue=new ho.AwaitQueue,this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._pendingPauseConsumers=new Map,this._consumerPauseInProgress=!1,this._pendingResumeConsumers=new Map,this._consumerResumeInProgress=!1,this._pendingCloseConsumers=new Map,this._consumerCloseInProgress=!1,this._observer=new go.EnhancedEventEmitter,Ro.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=n?n.maxMessageSize:null;const m=_o.clone(c)||{};delete m.iceServers,delete m.iceTransportPolicy,delete m.bundlePolicy,delete m.rtcpMuxPolicy,delete m.sdpSemantics,this._handler=p(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:m,proprietaryConstraints:d,extendedRtpCapabilities:u}),this._appData=l||{},this.handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get iceGatheringState(){return this._iceGatheringState}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){if(!this._closed){Ro.debug("close()"),this._closed=!0,this._awaitQueue.stop(),this._handler.close(),this._connectionState="closed";for(const e of this._producers.values())e.transportClosed();this._producers.clear();for(const e of this._consumers.values())e.transportClosed();this._consumers.clear();for(const e of this._dataProducers.values())e.transportClosed();this._dataProducers.clear();for(const e of this._dataConsumers.values())e.transportClosed();this._dataConsumers.clear(),this._observer.safeEmit("close")}}async getStats(){if(this._closed)throw new vo.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(Ro.debug("restartIce()"),this._closed)throw new vo.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>await this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(Ro.debug("updateIceServers()"),this._closed)throw new vo.InvalidStateError("closed");if(!Array.isArray(e))throw new TypeError("missing iceServers");return this._awaitQueue.push((async()=>this._handler.updateIceServers(e)),"transport.updateIceServers()")}async produce({track:e,encodings:t,codecOptions:r,codec:i,stopTracks:s=!0,disableTrackOnPause:n=!0,zeroRtpOnPause:a=!1,onRtpSender:o,appData:c={}}={}){if(Ro.debug("produce() [track:%o]",e),this._closed)throw new vo.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new vo.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new vo.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new vo.InvalidStateError("track ended");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("produce"))throw new TypeError('no "produce" listener set into this transport');if(c&&"object"!=typeof c)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let d;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?d=void 0:t&&(d=t.map((e=>{const t={active:!0};return!1===e.active&&(t.active=!1),"boolean"==typeof e.dtx&&(t.dtx=e.dtx),"string"==typeof e.scalabilityMode&&(t.scalabilityMode=e.scalabilityMode),"number"==typeof e.scaleResolutionDownBy&&(t.scaleResolutionDownBy=e.scaleResolutionDownBy),"number"==typeof e.maxBitrate&&(t.maxBitrate=e.maxBitrate),"number"==typeof e.maxFramerate&&(t.maxFramerate=e.maxFramerate),"boolean"==typeof e.adaptivePtime&&(t.adaptivePtime=e.adaptivePtime),"string"==typeof e.priority&&(t.priority=e.priority),"string"==typeof e.networkPriority&&(t.networkPriority=e.networkPriority),t})));const{localId:l,rtpParameters:p,rtpSender:u}=await this._handler.send({track:e,encodings:d,codecOptions:r,codec:i,onRtpSender:o});try{bo.validateRtpParameters(p);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:p,appData:c},t,r)})),r=new yo.Producer({id:t,localId:l,rtpSender:u,track:e,rtpParameters:p,stopTracks:s,disableTrackOnPause:n,zeroRtpOnPause:a,appData:c});return this._producers.set(r.id,r),this.handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(l).catch((()=>{})),e}}),"transport.produce()").catch((t=>{if(s)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:i,streamId:s,onRtpReceiver:n,appData:a={}}){if(Ro.debug("consume()"),this._closed)throw new vo.InvalidStateError("closed");if("recv"!==this._direction)throw new vo.UnsupportedError("not a receiving Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing producerId");if("audio"!==r&&"video"!==r)throw new TypeError(`invalid kind '${r}'`);if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(a&&"object"!=typeof a)throw new TypeError("if given, appData must be an object");const o=_o.clone(i);if(!bo.canReceive(o,this._extendedRtpCapabilities))throw new vo.UnsupportedError("cannot consume this Producer");const c=new To({id:e,producerId:t,kind:r,rtpParameters:o,streamId:s,onRtpReceiver:n,appData:a});return this._pendingConsumerTasks.push(c),(0,mo.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),c.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:s="",appData:n={}}={}){if(Ro.debug("produceData()"),this._closed)throw new vo.InvalidStateError("closed");if("send"!==this._direction)throw new vo.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new vo.UnsupportedError("SCTP not enabled by remote Transport");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("producedata"))throw new TypeError('no "producedata" listener set into this transport');if(n&&"object"!=typeof n)throw new TypeError("if given, appData must be an object");return(t||r)&&(e=!1),this._awaitQueue.push((async()=>{const{dataChannel:a,sctpStreamParameters:o}=await this._handler.sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s});bo.validateSctpStreamParameters(o);const{id:c}=await new Promise(((e,t)=>{this.safeEmit("producedata",{sctpStreamParameters:o,label:i,protocol:s,appData:n},e,t)})),d=new wo.DataProducer({id:c,dataChannel:a,sctpStreamParameters:o,appData:n});return this._dataProducers.set(d.id,d),this.handleDataProducer(d),this._observer.safeEmit("newdataproducer",d),d}),"transport.produceData()")}async consumeData({id:e,dataProducerId:t,sctpStreamParameters:r,label:i="",protocol:s="",appData:n={}}){if(Ro.debug("consumeData()"),this._closed)throw new vo.InvalidStateError("closed");if("recv"!==this._direction)throw new vo.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new vo.UnsupportedError("SCTP not enabled by remote Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing dataProducerId");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(n&&"object"!=typeof n)throw new TypeError("if given, appData must be an object");const a=_o.clone(r);return bo.validateSctpStreamParameters(a),this._awaitQueue.push((async()=>{const{dataChannel:r}=await this._handler.receiveDataChannel({sctpStreamParameters:a,label:i,protocol:s}),o=new Co.DataConsumer({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:a,appData:n});return this._dataConsumers.set(o.id,o),this.handleDataConsumer(o),this._observer.safeEmit("newdataconsumer",o),o}),"transport.consumeData()")}async createPendingConsumers(){this._consumerCreationInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingConsumerTasks.length)return void Ro.debug("createPendingConsumers() | there is no Consumer to be created");const e=[...this._pendingConsumerTasks];let t;this._pendingConsumerTasks=[];const r=[];for(const t of e){const{id:e,kind:i,rtpParameters:s,streamId:n,onRtpReceiver:a}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:s,streamId:n,onRtpReceiver:a})}try{const i=await this._handler.receive(r);for(let r=0;r<i.length;++r){const s=e[r],n=i[r],{id:a,producerId:o,kind:c,rtpParameters:d,appData:l}=s.consumerOptions,{localId:p,rtpReceiver:u,track:h}=n,m=new So.Consumer({id:a,localId:p,producerId:o,rtpReceiver:u,track:h,rtpParameters:d,appData:l});this._consumers.set(m.id,m),this.handleConsumer(m),this._probatorConsumerCreated||t||"video"!==c||(t=m),this._observer.safeEmit("newconsumer",m),s.resolve(m)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=bo.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),Ro.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){Ro.error("createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}}),"transport.createPendingConsumers()").then((()=>{this._consumerCreationInProgress=!1,this._pendingConsumerTasks.length>0&&this.createPendingConsumers()})).catch((()=>{}))}pausePendingConsumers(){this._consumerPauseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingPauseConsumers.size)return void Ro.debug("pausePendingConsumers() | there is no Consumer to be paused");const e=Array.from(this._pendingPauseConsumers.values());this._pendingPauseConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.pauseReceiving(t)}catch(e){Ro.error("pausePendingConsumers() | failed to pause Consumers:",e)}}),"transport.pausePendingConsumers").then((()=>{this._consumerPauseInProgress=!1,this._pendingPauseConsumers.size>0&&this.pausePendingConsumers()})).catch((()=>{}))}resumePendingConsumers(){this._consumerResumeInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingResumeConsumers.size)return void Ro.debug("resumePendingConsumers() | there is no Consumer to be resumed");const e=Array.from(this._pendingResumeConsumers.values());this._pendingResumeConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.resumeReceiving(t)}catch(e){Ro.error("resumePendingConsumers() | failed to resume Consumers:",e)}}),"transport.resumePendingConsumers").then((()=>{this._consumerResumeInProgress=!1,this._pendingResumeConsumers.size>0&&this.resumePendingConsumers()})).catch((()=>{}))}closePendingConsumers(){this._consumerCloseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingCloseConsumers.size)return void Ro.debug("closePendingConsumers() | there is no Consumer to be closed");const e=Array.from(this._pendingCloseConsumers.values());this._pendingCloseConsumers.clear();try{await this._handler.stopReceiving(e.map((e=>e.localId)))}catch(e){Ro.error("closePendingConsumers() | failed to close Consumers:",e)}}),"transport.closePendingConsumers").then((()=>{this._consumerCloseInProgress=!1,this._pendingCloseConsumers.size>0&&this.closePendingConsumers()})).catch((()=>{}))}handleHandler(){const e=this._handler;e.on("@connect",(({dtlsParameters:e},t,r)=>{this._closed?r(new vo.InvalidStateError("closed")):this.safeEmit("connect",{dtlsParameters:e},t,r)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(Ro.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(Ro.debug("connection state changed to %s",e),this._connectionState=e,this._closed||this.safeEmit("connectionstatechange",e))}))}handleProducer(e){e.on("@close",(()=>{this._producers.delete(e.id),this._closed||this._awaitQueue.push((async()=>await this._handler.stopSending(e.localId)),"producer @close event").catch((e=>Ro.warn("producer.close() failed:%o",e)))})),e.on("@pause",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.pauseSending(e.localId)),"producer @pause event").then(t).catch(r)})),e.on("@resume",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.resumeSending(e.localId)),"producer @resume event").then(t).catch(r)})),e.on("@replacetrack",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(i)})),e.on("@setmaxspatiallayer",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(i)})),e.on("@setrtpencodingparameters",((t,r,i)=>{this._awaitQueue.push((async()=>await this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(i)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new vo.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.delete(e.id),this._closed||(this._pendingCloseConsumers.set(e.id,e),!1===this._consumerCloseInProgress&&this.closePendingConsumers())})),e.on("@pause",(()=>{this._pendingResumeConsumers.has(e.id)&&this._pendingResumeConsumers.delete(e.id),this._pendingPauseConsumers.set(e.id,e),(0,mo.default)((()=>{this._closed||!1===this._consumerPauseInProgress&&this.pausePendingConsumers()}))})),e.on("@resume",(()=>{this._pendingPauseConsumers.has(e.id)&&this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.set(e.id,e),(0,mo.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new vo.InvalidStateError("closed"));this._handler.getReceiverStats(e.localId).then(t).catch(r)}))}handleDataProducer(e){e.on("@close",(()=>{this._dataProducers.delete(e.id)}))}handleDataConsumer(e){e.on("@close",(()=>{this._dataConsumers.delete(e.id)}))}};xa.Transport=ko;var Po={},Do={},Io={},Eo={exports:{}},Oo=Eo.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Oo).forEach((function(e){Oo[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var Mo=Eo.exports;!function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,i){var s=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:s&&!r[e.name]&&(r[e.name]={});var n=e.push?{}:s?r[e.name]:r;!function(e,r,i,s){if(s&&!i)r[s]=t(e[1]);else for(var n=0;n<i.length;n+=1)null!=e[n+1]&&(r[i[n]]=t(e[n+1]))}(i.match(e.reg),n,e.names,e.name),e.push&&r[e.push].push(n)},i=Mo,s=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},n=[],a=t;return e.split(/(\r\n|\r|\n)/).filter(s).forEach((function(e){var t=e[0],s=e.slice(2);"m"===t&&(n.push({rtp:[],fmtp:[]}),a=n[n.length-1]);for(var o=0;o<(i[t]||[]).length;o+=1){var c=i[t][o];if(c.reg.test(s))return r(c,a,s)}})),t.media=n,t};var n=function(e,r){var i=r.split(/=(.+)/,2);return 2===i.length?e[i[0]]=t(i[1]):1===i.length&&r.length>1&&(e[i[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(n,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var r=[],i=e.split(" ").map(t),s=0;s<i.length;s+=3)r.push({component:i[s],ip:i[s+1],port:i[s+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(n,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var r,i=!1;return"~"!==e[0]?r=t(e):(r=t(e.substring(1,e.length)),i=!0),{scid:r,paused:i}}))}))}}(Io);var xo=Mo,Lo=/%[sdv%]/g,jo=function(e){var t=1,r=arguments,i=r.length;return e.replace(Lo,(function(e){if(t>=i)return e;var s=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}}))},Ao=function(e,t,r){var i=[e+"="+(t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format)];if(t.names)for(var s=0;s<t.names.length;s+=1){var n=t.names[s];t.name?i.push(r[t.name][n]):i.push(r[t.names[s]])}else i.push(r[t.name]);return jo.apply(null,i)},No=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Bo=["i","c","b","a"],Fo=Io,$o=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var r=t.outerOrder||No,i=t.innerOrder||Bo,s=[];return r.forEach((function(t){xo[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(Ao(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(Ao(t,r,e))}))}))})),e.media.forEach((function(e){s.push(Ao("m",xo.m[0],e)),i.forEach((function(t){xo[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(Ao(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(Ao(t,r,e))}))}))}))})),s.join("\r\n")+"\r\n"},Vo=Do.write=$o,Uo=Do.parse=Fo.parse;Do.parseParams=Fo.parseParams,Do.parseFmtpConfig=Fo.parseFmtpConfig,Do.parsePayloads=Fo.parsePayloads,Do.parseRemoteCandidates=Fo.parseRemoteCandidates,Do.parseImageAttributes=Fo.parseImageAttributes,Do.parseSimulcastStreamList=Fo.parseSimulcastStreamList;var zo={},qo=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Go=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ho=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&qo(t,e,r);return Go(t,e),t};Object.defineProperty(zo,"__esModule",{value:!0}),zo.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let i=!1,s=!1;for(const n of e.media){const e=n.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(s)continue;s=!0;break;default:continue}for(const r of n.rtp){const i={kind:e,mimeType:`${e}/${r.codec}`,preferredPayloadType:r.payload,clockRate:r.rate,channels:r.encoding,parameters:{},rtcpFeedback:[]};t.set(i.preferredPayloadType,i)}for(const e of n.fmtp||[]){const r=Wo.parseParams(e.config),i=t.get(e.payload);i&&(r&&r.hasOwnProperty("profile-level-id")&&(r["profile-level-id"]=String(r["profile-level-id"])),i.parameters=r)}for(const r of n.rtcpFb||[]){const i={type:r.type,parameter:r.subtype};if(i.parameter||delete i.parameter,"*"!==r.payload){const e=t.get(r.payload);if(!e)continue;e.rtcpFeedback.push(i)}else for(const r of t.values())r.kind!==e||/.+\/rtx$/i.test(r.mimeType)||r.rtcpFeedback.push(i)}for(const t of n.ext||[]){if(t["encrypt-uri"])continue;const i={kind:e,uri:t.uri,preferredId:t.value};r.push(i)}}return{codecs:Array.from(t.values()),headerExtensions:r}},zo.extractDtlsParameters=function({sdpObject:e}){let t,r=e.setup,i=e.fingerprint;if(!r||!i){const t=(e.media||[]).find((e=>0!==e.port));t&&(r??(r=t.setup),i??(i=t.fingerprint))}if(!r)throw new Error("no a=setup found at SDP session or media level");if(!i)throw new Error("no a=fingerprint found at SDP session or media level");switch(r){case"active":t="client";break;case"passive":t="server";break;case"actpass":t="auto"}return{role:t,fingerprints:[{algorithm:i.type,value:i.hash}]}},zo.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));if(!t)return"";return t.value},zo.applyCodecParameters=function({offerRtpParameters:e,answerMediaObject:t}){for(const r of e.codecs){const e=r.mimeType.toLowerCase();if("audio/opus"!==e)continue;if(!(t.rtp||[]).find((e=>e.payload===r.payloadType)))continue;t.fmtp=t.fmtp||[];let i=t.fmtp.find((e=>e.payload===r.payloadType));i||(i={payload:r.payloadType,config:""},t.fmtp.push(i));const s=Wo.parseParams(i.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(s.stereo=e?1:0);break}}i.config="";for(const e of Object.keys(s))i.config&&(i.config+=";"),i.config+=`${e}=${s[e]}`}};const Wo=Ho(Do);var Ko={};Object.defineProperty(Ko,"__esModule",{value:!0}),Ko.getRtpEncodings=function({offerMediaObject:e}){const t=new Set;for(const r of e.ssrcs||[]){const e=r.id;t.add(e)}if(0===t.size)throw new Error("no a=ssrc lines found");const r=new Map;for(const i of e.ssrcGroups||[]){if("FID"!==i.semantics)continue;let[e,s]=i.ssrcs.split(/\s+/);e=Number(e),s=Number(s),t.has(e)&&(t.delete(e),t.delete(s),r.set(e,s))}for(const e of t)r.set(e,null);const i=[];for(const[e,t]of r){const r={ssrc:e};t&&(r.rtx={ssrc:t}),i.push(r)}return i},Ko.addLegacySimulcast=function({offerMediaObject:e,numStreams:t}){if(t<=1)throw new TypeError("numStreams must be greater than 1");const r=(e.ssrcs||[]).find((e=>"msid"===e.attribute));if(!r)throw new Error("a=ssrc line with msid information not found");const[i,s]=r.value.split(" "),n=r.id;let a;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===n&&(a=Number(t[1]),!0)}));const o=e.ssrcs.find((e=>"cname"===e.attribute));if(!o)throw new Error("a=ssrc line with cname information not found");const c=o.value,d=[],l=[];for(let e=0;e<t;++e)d.push(n+e),a&&l.push(a+e);e.ssrcGroups=[],e.ssrcs=[],e.ssrcGroups.push({semantics:"SIM",ssrcs:d.join(" ")});for(let t=0;t<d.length;++t){const r=d[t];e.ssrcs.push({id:r,attribute:"cname",value:c}),e.ssrcs.push({id:r,attribute:"msid",value:`${i} ${s}`})}for(let t=0;t<l.length;++t){const r=d[t],n=l[t];e.ssrcs.push({id:n,attribute:"cname",value:c}),e.ssrcs.push({id:n,attribute:"msid",value:`${i} ${s}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${n}`})}};var Jo={};Object.defineProperty(Jo,"__esModule",{value:!0}),Jo.addNackSuppportForOpus=function(e){for(const t of e.codecs||[])"audio/opus"!==t.mimeType.toLowerCase()&&"audio/multiopus"!==t.mimeType.toLowerCase()||t.rtcpFeedback?.some((e=>"nack"===e.type&&!e.parameter))||(t.rtcpFeedback||(t.rtcpFeedback=[]),t.rtcpFeedback.push({type:"nack"}))};var Qo={};Object.defineProperty(Qo,"__esModule",{value:!0}),Qo.HandlerInterface=void 0;const Zo=Tn;class Yo extends Zo.EnhancedEventEmitter{constructor(){super()}}Qo.HandlerInterface=Yo;var Xo={},ec={},tc=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),rc=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ic=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&tc(t,e,r);return rc(t,e),t};Object.defineProperty(ec,"__esModule",{value:!0}),ec.OfferMediaSection=ec.AnswerMediaSection=ec.MediaSection=void 0;const sc=ic(Do),nc=ic(Kn);class ac{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:i=!1}){if(this._mediaObject={},this._planB=i,e&&this.setIceParameters(e),t){this._mediaObject.candidates=[];for(const e of t){const t={component:1};t.foundation=e.foundation,t.ip=e.address??e.ip,t.port=e.port,t.priority=e.priority,t.transport=e.protocol,t.type=e.type,e.tcpType&&(t.tcptype=e.tcpType),this._mediaObject.candidates.push(t)}this._mediaObject.endOfCandidates="end-of-candidates",this._mediaObject.iceOptions="renomination"}r&&this.setDtlsRole(r.role)}get mid(){return String(this._mediaObject.mid)}get closed(){return 0===this._mediaObject.port}getObject(){return this._mediaObject}setIceParameters(e){this._mediaObject.iceUfrag=e.usernameFragment,this._mediaObject.icePwd=e.password}pause(){this._mediaObject.direction="inactive"}disable(){this.pause(),delete this._mediaObject.ext,delete this._mediaObject.ssrcs,delete this._mediaObject.ssrcGroups,delete this._mediaObject.simulcast,delete this._mediaObject.simulcast_03,delete this._mediaObject.rids,delete this._mediaObject.extmapAllowMixed}close(){this.disable(),this._mediaObject.port=0}}ec.MediaSection=ac;ec.AnswerMediaSection=class extends ac{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n}),this._mediaObject.mid=String(a.mid),this._mediaObject.type=a.type,this._mediaObject.protocol=a.protocol,s?(this._mediaObject.connection={ip:s.ip,version:s.ipVersion},this._mediaObject.port=s.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.port=7),a.type){case"audio":case"video":this._mediaObject.direction="recvonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[];for(const e of c.codecs){const t={payload:e.payloadType,codec:oc(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=nc.clone(e.parameters)??{};let i=nc.clone(e.rtcpFeedback)??[];if(d){const{opusStereo:t,opusFec:s,opusDtx:n,opusMaxPlaybackRate:a,opusMaxAverageBitrate:c,opusPtime:l,opusNack:p,videoGoogleStartBitrate:u,videoGoogleMaxBitrate:h,videoGoogleMinBitrate:m}=d,f=o.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":case"audio/multiopus":void 0!==t&&(f.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==s&&(f.parameters.useinbandfec=s?1:0,r.useinbandfec=s?1:0),void 0!==n&&(f.parameters.usedtx=n?1:0,r.usedtx=n?1:0),void 0!==a&&(r.maxplaybackrate=a),void 0!==c&&(r.maxaveragebitrate=c),void 0!==l&&(f.parameters.ptime=l,r.ptime=l),p||(f.rtcpFeedback=f.rtcpFeedback.filter((e=>"nack"!==e.type||e.parameter)),i=i.filter((e=>"nack"!==e.type||e.parameter)));break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==u&&(r["x-google-start-bitrate"]=u),void 0!==h&&(r["x-google-max-bitrate"]=h),void 0!==m&&(r["x-google-min-bitrate"]=m)}}const s={payload:e.payloadType,config:""};for(const e of Object.keys(r))s.config&&(s.config+=";"),s.config+=`${e}=${r[e]}`;s.config&&this._mediaObject.fmtp.push(s);for(const t of i)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions){(a.ext||[]).some((t=>t.uri===e.uri))&&this._mediaObject.ext.push({uri:e.uri,value:e.id})}if(l&&"extmap-allow-mixed"===a.extmapAllowMixed&&(this._mediaObject.extmapAllowMixed="extmap-allow-mixed"),a.simulcast){this._mediaObject.simulcast={dir1:"recv",list1:a.simulcast.list1},this._mediaObject.rids=[];for(const e of a.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}else if(a.simulcast_03){this._mediaObject.simulcast_03={value:a.simulcast_03.value.replace(/send/g,"recv")},this._mediaObject.rids=[];for(const e of a.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize",this._planB&&"video"===this._mediaObject.type&&(this._mediaObject.xGoogleFlag="conference");break;case"application":"number"==typeof a.sctpPort?(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize):a.sctpmap&&(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize})}}setDtlsRole(e){switch(e){case"client":this._mediaObject.setup="active";break;case"server":this._mediaObject.setup="passive";break;case"auto":this._mediaObject.setup="actpass"}}resume(){this._mediaObject.direction="recvonly"}muxSimulcastStreams(e){if(!this._mediaObject.simulcast||!this._mediaObject.simulcast.list1)return;const t={};for(const r of e)r.rid&&(t[r.rid]=r);const r=this._mediaObject.simulcast.list1,i=sc.parseSimulcastStreamList(r);for(const e of i)for(const r of e)r.paused=!t[r.scid]?.active;this._mediaObject.simulcast.list1=i.map((e=>e.map((e=>`${e.paused?"~":""}${e.scid}`)).join(","))).join(";")}};function oc(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}ec.OfferMediaSection=class extends ac{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:l,oldDataChannelSpec:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n}),this._mediaObject.mid=String(a),this._mediaObject.type=o,s?(this._mediaObject.connection={ip:s.ip,version:s.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=s.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.protocol=i?"UDP/DTLS/SCTP":"UDP/TLS/RTP/SAVPF",this._mediaObject.port=7),o){case"audio":case"video":{this._mediaObject.direction="sendonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[],this._planB||(this._mediaObject.msid=`${d||"-"} ${l}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:oc(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r={payload:e.payloadType,config:""};for(const t of Object.keys(e.parameters))r.config&&(r.config+=";"),r.config+=`${t}=${e.parameters[t]}`;r.config&&this._mediaObject.fmtp.push(r);for(const t of e.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions)this._mediaObject.ext.push({uri:e.uri,value:e.id});this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize";const e=c.encodings[0],t=e.ssrc,r=e.rtx&&e.rtx.ssrc?e.rtx.ssrc:void 0;this._mediaObject.ssrcs=[],this._mediaObject.ssrcGroups=[],c.rtcp.cname&&this._mediaObject.ssrcs.push({id:t,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:t,attribute:"msid",value:`${d||"-"} ${l}`}),r&&(c.rtcp.cname&&this._mediaObject.ssrcs.push({id:r,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:r,attribute:"msid",value:`${d||"-"} ${l}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":p?(this._mediaObject.payloads=i.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:i.port,maxMessageSize:i.maxMessageSize}):(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=i.port,this._mediaObject.maxMessageSize=i.maxMessageSize)}}setDtlsRole(e){this._mediaObject.setup="actpass"}resume(){this._mediaObject.direction="sendonly"}planBReceive({offerRtpParameters:e,streamId:t,trackId:r}){const i=e.encodings[0],s=i.ssrc,n=i.rtx&&i.rtx.ssrc?i.rtx.ssrc:void 0,a=this._mediaObject.payloads.split(" ");for(const t of e.codecs){if(a.includes(String(t.payloadType)))continue;const e={payload:t.payloadType,codec:oc(t),rate:t.clockRate};t.channels>1&&(e.encoding=t.channels),this._mediaObject.rtp.push(e);const r={payload:t.payloadType,config:""};for(const e of Object.keys(t.parameters))r.config&&(r.config+=";"),r.config+=`${e}=${t.parameters[e]}`;r.config&&this._mediaObject.fmtp.push(r);for(const e of t.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:t.payloadType,type:e.type,subtype:e.parameter})}this._mediaObject.payloads+=` ${e.codecs.filter((e=>!this._mediaObject.payloads.includes(e.payloadType))).map((e=>e.payloadType)).join(" ")}`,this._mediaObject.payloads=this._mediaObject.payloads.trim(),e.rtcp.cname&&this._mediaObject.ssrcs.push({id:s,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:s,attribute:"msid",value:`${t||"-"} ${r}`}),n&&(e.rtcp.cname&&this._mediaObject.ssrcs.push({id:n,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:n,attribute:"msid",value:`${t||"-"} ${r}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${s} ${n}`}))}planBStopReceiving({offerRtpParameters:e}){const t=e.encodings[0],r=t.ssrc,i=t.rtx&&t.rtx.ssrc?t.rtx.ssrc:void 0;this._mediaObject.ssrcs=this._mediaObject.ssrcs.filter((e=>e.id!==r&&e.id!==i)),i&&(this._mediaObject.ssrcGroups=this._mediaObject.ssrcGroups.filter((e=>e.ssrcs!==`${r} ${i}`)))}};var cc=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),dc=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),lc=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&cc(t,e,r);return dc(t,e),t};Object.defineProperty(Xo,"__esModule",{value:!0}),Xo.RemoteSdp=void 0;const pc=lc(Do),uc=ec,hc=new yn.Logger("RemoteSdp");Xo.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:s,planB:n=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=s,this._planB=n,this._sdpObject={version:0,origin:{address:"0.0.0.0",ipVer:4,netType:"IN",sessionId:1e4,sessionVersion:0,username:"mediasoup-client"},name:"-",timing:{start:0,stop:0},media:[]},e&&e.iceLite&&(this._sdpObject.icelite="ice-lite"),r){this._sdpObject.msidSemantic={semantic:"WMS",token:"*"};const e=this._dtlsParameters.fingerprints.length;this._sdpObject.fingerprint={type:r.fingerprints[e-1].algorithm,hash:r.fingerprints[e-1].value},this._sdpObject.groups=[{type:"BUNDLE",mids:""}]}s&&(this._sdpObject.origin.address=s.ip,this._sdpObject.origin.ipVer=s.ipVersion)}updateIceParameters(e){hc.debug("updateIceParameters() [iceParameters:%o]",e),this._iceParameters=e,this._sdpObject.icelite=e.iceLite?"ice-lite":void 0;for(const t of this._mediaSections)t.setIceParameters(e)}updateDtlsRole(e){hc.debug("updateDtlsRole() [role:%s]",e),this._dtlsParameters.role=e;for(const t of this._mediaSections)t.setDtlsRole(e)}getNextMediaSectionIdx(){for(let e=0;e<this._mediaSections.length;++e){const t=this._mediaSections[e];if(t.closed)return{idx:e,reuseMid:t.mid}}return{idx:this._mediaSections.length}}send({offerMediaObject:e,reuseMid:t,offerRtpParameters:r,answerRtpParameters:i,codecOptions:s,extmapAllowMixed:n=!1}){const a=new uc.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:s,extmapAllowMixed:n});t?this._replaceMediaSection(a,t):this._midToIndex.has(a.mid)?this._replaceMediaSection(a):this._addMediaSection(a)}receive({mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:s}){const n=this._midToIndex.get(e);let a;if(void 0!==n&&(a=this._mediaSections[n]),a)a.planBReceive({offerRtpParameters:r,streamId:i,trackId:s}),this._replaceMediaSection(a);else{a=new uc.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,mid:e,kind:t,offerRtpParameters:r,streamId:i,trackId:s});const n=this._mediaSections.find((e=>e.closed));n?this._replaceMediaSection(a,n.mid):this._addMediaSection(a)}}pauseMediaSection(e){this._findMediaSection(e).pause()}resumeSendingMediaSection(e){this._findMediaSection(e).resume()}resumeReceivingMediaSection(e){this._findMediaSection(e).resume()}disableMediaSection(e){this._findMediaSection(e).disable()}closeMediaSection(e){const t=this._findMediaSection(e);return e===this._firstMid?(hc.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),this.disableMediaSection(e),!1):(t.close(),this._regenerateBundleMids(),!0)}muxMediaSectionSimulcast(e,t){const r=this._findMediaSection(e);r.muxSimulcastStreams(t),this._replaceMediaSection(r)}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._findMediaSection(e);r.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(r)}sendSctpAssociation({offerMediaObject:e}){const t=new uc.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,offerMediaObject:e});this._addMediaSection(t)}receiveSctpAssociation({oldDataChannelSpec:e=!1}={}){const t=new uc.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,mid:"datachannel",kind:"application",oldDataChannelSpec:e});this._addMediaSection(t)}getSdp(){return this._sdpObject.origin.sessionVersion++,pc.write(this._sdpObject)}_addMediaSection(e){this._firstMid||(this._firstMid=e.mid),this._mediaSections.push(e),this._midToIndex.set(e.mid,this._mediaSections.length-1),this._sdpObject.media.push(e.getObject()),this._regenerateBundleMids()}_replaceMediaSection(e,t){if("string"==typeof t){const r=this._midToIndex.get(t);if(void 0===r)throw new Error(`no media section found for reuseMid '${t}'`);const i=this._mediaSections[r];this._mediaSections[r]=e,this._midToIndex.delete(i.mid),this._midToIndex.set(e.mid,r),this._sdpObject.media[r]=e.getObject(),this._regenerateBundleMids()}else{const t=this._midToIndex.get(e.mid);if(void 0===t)throw new Error(`no media section found with mid '${e.mid}'`);this._mediaSections[t]=e,this._sdpObject.media[t]=e.getObject()}}_findMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);return this._mediaSections[t]}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var mc={};Object.defineProperty(mc,"__esModule",{value:!0}),mc.parse=function(e){const t=fc.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};const fc=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");var gc=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),vc=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),_c=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&gc(t,e,r);return vc(t,e),t};Object.defineProperty(Po,"__esModule",{value:!0}),Po.Chrome111=void 0;const bc=_c(Do),yc=yn,Sc=_c(Kn),wc=_c(Jn),Cc=_c(zo),Rc=_c(Ko),Tc=_c(Jo),kc=Gn,Pc=Qo,Dc=Xo,Ic=mc,Ec=new yc.Logger("Chrome111"),Oc={OS:1024,MIS:1024};class Mc extends Pc.HandlerInterface{static createFactory(){return()=>new Mc}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome111"}close(){if(Ec.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Ec.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=bc.parse(t.sdp),i=Cc.extractRtpCapabilities({sdpObject:r});return Tc.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ec.debug("getNativeSctpCapabilities()"),{numStreams:Oc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Ec.debug("run()"),this._direction=e,this._remoteSdp=new Dc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:wc.getSendingRtpParameters("audio",d),video:wc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:wc.getSendingRemoteRtpParameters("audio",d),video:wc.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(Ec.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),Ec.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Ec.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ec.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ec.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ec.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i,onRtpSender:s}){if(this.assertNotClosed(),this.assertSendDirection(),Ec.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){let e=1;for(const r of t){const t=r.scalabilityMode?(0,Ic.parse)(r.scalabilityMode).temporalLayers:3;t>e&&(e=t)}t.forEach(((t,r)=>{t.rid=`r${r}`,t.scalabilityMode=`L1T${e}`}))}const n=Sc.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=wc.reduceCodecs(n.codecs,i);const a=Sc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);a.codecs=wc.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});s&&s(c.sender);const d=await this._pc.createOffer();let l=bc.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),Ec.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const p=c.mid;n.mid=p,l=bc.parse(this._pc.localDescription.sdp);const u=l.media[o.idx];if(n.rtcp.cname=Cc.getCname({offerMediaObject:u}),t)if(1===t.length){const e=Rc.getRtpEncodings({offerMediaObject:u});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t;else n.encodings=Rc.getRtpEncodings({offerMediaObject:u});this._remoteSdp.send({offerMediaObject:u,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return Ec.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(p,c),{localId:p,rtpParameters:n,rtpSender:c.sender}}async stopSending(e){if(this.assertSendDirection(),Ec.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Ec.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Ec.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Ec.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Ec.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Ec.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Ec.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Ec.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Ec.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();Ec.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Ec.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();Ec.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Ec.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Oc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=bc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Ec.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ec.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Ec.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Ec.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);for(const t of e){const{trackId:e,onRtpReceiver:i}=t;if(i){const t=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===t));if(!s)throw new Error("transceiver not found");i(s.receiver)}}let s=await this._pc.createAnswer();const n=bc.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));Cc.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:bc.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Ec.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Ec.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ec.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ec.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Ec.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ec.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ec.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Ec.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ec.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ec.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Ec.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ec.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=bc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Ec.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=bc.parse(this._pc.localDescription.sdp));const r=Cc.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new kc.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Po.Chrome111=Mc;var xc={},Lc=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),jc=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ac=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Lc(t,e,r);return jc(t,e),t};Object.defineProperty(xc,"__esModule",{value:!0}),xc.Chrome74=void 0;const Nc=Ac(Do),Bc=yn,Fc=Ac(Kn),$c=Ac(Jn),Vc=Ac(zo),Uc=Ac(Ko),zc=Ac(Jo),qc=Gn,Gc=Qo,Hc=Xo,Wc=mc,Kc=new Bc.Logger("Chrome74"),Jc={OS:1024,MIS:1024};class Qc extends Gc.HandlerInterface{static createFactory(){return()=>new Qc}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome74"}close(){if(Kc.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Kc.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Nc.parse(t.sdp),i=Vc.extractRtpCapabilities({sdpObject:r});return zc.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Kc.debug("getNativeSctpCapabilities()"),{numStreams:Jc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Kc.debug("run()"),this._direction=e,this._remoteSdp=new Hc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:$c.getSendingRtpParameters("audio",d),video:$c.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:$c.getSendingRemoteRtpParameters("audio",d),video:$c.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(Kc.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),Kc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Kc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Kc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Kc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Kc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Kc.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),Kc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const s=Fc.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=$c.reduceCodecs(s.codecs,i);const n=Fc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=$c.reduceCodecs(n.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=Nc.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,Wc.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Kc.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Nc.parse(d.sdp),c=l.media[a.idx],Uc.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Nc.write(l)}),Kc.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=o.mid;if(s.mid=h,l=Nc.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=Vc.getCname({offerMediaObject:c}),t)if(1===t.length){let e=Uc.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),s.encodings=e}else s.encodings=t;else s.encodings=Uc.getRtpEncodings({offerMediaObject:c});if(s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Kc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Kc.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Kc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Kc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Kc.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Kc.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Kc.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Kc.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Kc.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Kc.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Kc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Kc.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Kc.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();Kc.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Kc.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Kc.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();Kc.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Kc.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Kc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Jc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Nc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Kc.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Kc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Kc.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Kc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Nc.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));Vc.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:Nc.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Kc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Kc.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Kc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Kc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Kc.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Kc.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Kc.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Kc.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Kc.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Kc.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Kc.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Kc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Nc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Kc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Nc.parse(this._pc.localDescription.sdp));const r=Vc.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new qc.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}xc.Chrome74=Qc;var Zc={},Yc=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Xc=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ed=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Yc(t,e,r);return Xc(t,e),t};Object.defineProperty(Zc,"__esModule",{value:!0}),Zc.Chrome70=void 0;const td=ed(Do),rd=yn,id=ed(Kn),sd=ed(Jn),nd=ed(zo),ad=ed(Ko),od=Qo,cd=Xo,dd=mc,ld=new rd.Logger("Chrome70"),pd={OS:1024,MIS:1024};class ud extends od.HandlerInterface{static createFactory(){return()=>new ud}constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome70"}close(){if(ld.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){ld.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=td.parse(t.sdp);return nd.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ld.debug("getNativeSctpCapabilities()"),{numStreams:pd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ld.debug("run()"),this._direction=e,this._remoteSdp=new cd.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:sd.getSendingRtpParameters("audio",d),video:sd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:sd.getSendingRemoteRtpParameters("audio",d),video:sd.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(ld.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){ld.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(ld.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});ld.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};ld.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};ld.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();ld.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),ld.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=id.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=sd.reduceCodecs(s.codecs,i);const n=id.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=sd.reduceCodecs(n.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=td.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&(ld.debug("send() | enabling legacy simulcast"),l=td.parse(d.sdp),c=l.media[a.idx],ad.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:td.write(l)});let p=!1;const u=(0,dd.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(ld.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=td.parse(d.sdp),c=l.media[a.idx],ad.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:td.write(l)}),ld.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){ld.debug("send() | applying given encodings");const e=o.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const i=e.encodings[r],s=t[r];if(!s)break;e.encodings[r]=Object.assign(i,s)}await o.sender.setParameters(e)}const h=o.mid;if(s.mid=h,l=td.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=nd.getCname({offerMediaObject:c}),s.encodings=ad.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<s.encodings.length;++e)t[e]&&Object.assign(s.encodings[e],t[e]);if(p&&(s.encodings=[s.encodings[0]]),s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return ld.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){this.assertSendDirection(),ld.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();ld.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};ld.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?ld.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ld.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),ld.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();ld.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};ld.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),ld.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();ld.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};ld.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async getSenderStats(e){this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};ld.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%pd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=td.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),ld.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};ld.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;ld.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};ld.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=td.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));nd.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:td.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),ld.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){ld.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};ld.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();ld.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};ld.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};ld.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=td.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}ld.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=td.parse(this._pc.localDescription.sdp));const r=nd.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Zc.Chrome70=ud;var hd={},md={};Object.defineProperty(md,"__esModule",{value:!0}),md.getRtpEncodings=function({offerMediaObject:e,track:t}){const r=new Set;for(const i of e.ssrcs||[]){if("msid"!==i.attribute)continue;if(i.value.split(" ")[1]===t.id){const e=i.id;r.add(e)}}if(0===r.size)throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);const i=new Map;for(const t of e.ssrcGroups||[]){if("FID"!==t.semantics)continue;let[e,s]=t.ssrcs.split(/\s+/);e=Number(e),s=Number(s),r.has(e)&&(r.delete(e),r.delete(s),i.set(e,s))}for(const e of r)i.set(e,null);const s=[];for(const[e,t]of i){const r={ssrc:e};t&&(r.rtx={ssrc:t}),s.push(r)}return s},md.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let i,s,n;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(i=e.id,n=e.value.split(" ")[0],!0)})))throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===i&&(s=Number(t[1]),!0)}));const a=e.ssrcs.find((e=>"cname"===e.attribute&&e.id===i));if(!a)throw new Error(`a=ssrc line with cname information not found [track.id:${t.id}]`);const o=a.value,c=[],d=[];for(let e=0;e<r;++e)c.push(i+e),s&&d.push(s+e);e.ssrcGroups=e.ssrcGroups||[],e.ssrcs=e.ssrcs||[],e.ssrcGroups.push({semantics:"SIM",ssrcs:c.join(" ")});for(let r=0;r<c.length;++r){const i=c[r];e.ssrcs.push({id:i,attribute:"cname",value:o}),e.ssrcs.push({id:i,attribute:"msid",value:`${n} ${t.id}`})}for(let r=0;r<d.length;++r){const i=c[r],s=d[r];e.ssrcs.push({id:s,attribute:"cname",value:o}),e.ssrcs.push({id:s,attribute:"msid",value:`${n} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${s}`})}};var fd=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),gd=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),vd=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&fd(t,e,r);return gd(t,e),t};Object.defineProperty(hd,"__esModule",{value:!0}),hd.Chrome67=void 0;const _d=vd(Do),bd=yn,yd=vd(Kn),Sd=vd(Jn),wd=vd(zo),Cd=vd(md),Rd=Qo,Td=Xo,kd=new bd.Logger("Chrome67"),Pd={OS:1024,MIS:1024};class Dd extends Rd.HandlerInterface{static createFactory(){return()=>new Dd}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome67"}close(){if(kd.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){kd.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=_d.parse(t.sdp);return wd.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return kd.debug("getNativeSctpCapabilities()"),{numStreams:Pd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){kd.debug("run()"),this._direction=e,this._remoteSdp=new Td.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:Sd.getSendingRtpParameters("audio",d),video:Sd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Sd.getSendingRemoteRtpParameters("audio",d),video:Sd.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(kd.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){kd.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(kd.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});kd.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};kd.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};kd.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();kd.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),kd.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&kd.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,n=await this._pc.createOffer(),a=_d.parse(n.sdp);const o=yd.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=Sd.reduceCodecs(o.codecs);const c=yd.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Sd.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(kd.debug("send() | enabling simulcast"),a=_d.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),Cd.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:_d.write(a)}),kd.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=_d.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=wd.getCname({offerMediaObject:s}),o.encodings=Cd.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};kd.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:o,rtpSender:p}}async stopSending(e){this.assertSendDirection(),kd.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");this._pc.removeTrack(t),t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();kd.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void kd.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};kd.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?kd.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):kd.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),kd.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),kd.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};kd.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Pd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=_d.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),kd.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};kd.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:s}=t;kd.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};kd.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=_d.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));wd.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:_d.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),kd.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:s}=r,n=i,a=e,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===n));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(n,{mid:a,rtpParameters:s,rtpReceiver:o}),t.push({localId:n,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){kd.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};kd.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();kd.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};kd.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};kd.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=_d.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}kd.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=_d.parse(this._pc.localDescription.sdp));const r=wd.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}hd.Chrome67=Dd;var Id={},Ed=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Od=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Md=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ed(t,e,r);return Od(t,e),t};Object.defineProperty(Id,"__esModule",{value:!0}),Id.Chrome55=void 0;const xd=Md(Do),Ld=yn,jd=Gn,Ad=Md(Kn),Nd=Md(Jn),Bd=Md(zo),Fd=Md(md),$d=Qo,Vd=Xo,Ud=new Ld.Logger("Chrome55"),zd={OS:1024,MIS:1024};class qd extends $d.HandlerInterface{static createFactory(){return()=>new qd}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome55"}close(){if(Ud.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Ud.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=xd.parse(t.sdp);return Bd.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ud.debug("getNativeSctpCapabilities()"),{numStreams:zd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ud.debug("run()"),this._direction=e,this._remoteSdp=new Vd.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:Nd.getSendingRtpParameters("audio",d),video:Nd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Nd.getSendingRemoteRtpParameters("audio",d),video:Nd.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Ud.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Ud.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Ud.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ud.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ud.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ud.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ud.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),Ud.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Ud.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,n=await this._pc.createOffer(),a=xd.parse(n.sdp);const o=Ad.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=Nd.reduceCodecs(o.codecs);const c=Ad.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Nd.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Ud.debug("send() | enabling simulcast"),a=xd.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),Fd.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:xd.write(a)}),Ud.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=xd.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Bd.getCname({offerMediaObject:s}),o.encodings=Fd.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Ud.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:o}}async stopSending(e){this.assertSendDirection(),Ud.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();Ud.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Ud.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ud.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new jd.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new jd.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new jd.UnsupportedError("not supported")}async getSenderStats(e){throw new jd.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};Ud.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%zd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=xd.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Ud.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ud.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:s}=t;Ud.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Ud.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=xd.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));Bd.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:xd.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Ud.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:s}=r,n=e,a=i,o=r.streamId||s.rtcp.cname,c=this._pc.getRemoteStreams().find((e=>e.id===o)).getTrackById(a);if(!c)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:n,rtpParameters:s}),t.push({localId:a,track:c})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Ud.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ud.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ud.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new jd.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};Ud.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ud.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=xd.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Ud.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=xd.parse(this._pc.localDescription.sdp));const r=Bd.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Id.Chrome55=qd;var Gd={},Hd=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Wd=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Kd=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Hd(t,e,r);return Wd(t,e),t};Object.defineProperty(Gd,"__esModule",{value:!0}),Gd.Firefox120=void 0;const Jd=Kd(Do),Qd=yn,Zd=Gn,Yd=Kd(Kn),Xd=Kd(Jn),el=Kd(zo),tl=Kd(Ko),rl=Qo,il=Xo,sl=mc,nl=new Qd.Logger("Firefox120"),al={OS:16,MIS:2048};class ol extends rl.HandlerInterface{static createFactory(){return()=>new ol}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Firefox120"}close(){if(nl.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){nl.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"}),t=document.createElement("canvas");t.getContext("2d");const r=t.captureStream().getVideoTracks()[0];try{e.addTransceiver("audio",{direction:"sendrecv"}),e.addTransceiver(r,{direction:"sendrecv",sendEncodings:[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}]});const i=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const s=Jd.parse(i.sdp);return el.extractRtpCapabilities({sdpObject:s})}catch(i){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw i}}async getNativeSctpCapabilities(){return nl.debug("getNativeSctpCapabilities()"),{numStreams:al}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),nl.debug("run()"),this._direction=e,this._remoteSdp=new il.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Xd.getSendingRtpParameters("audio",d),video:Xd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Xd.getSendingRemoteRtpParameters("audio",d),video:Xd.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(nl.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){throw this.assertNotClosed(),new Zd.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),nl.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});nl.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};nl.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();nl.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i,onRtpSender:s}){this.assertNotClosed(),this.assertSendDirection(),nl.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=Yd.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Xd.reduceCodecs(n.codecs,i);const a=Yd.clone(this._sendingRemoteRtpParametersByKind[e.kind]);a.codecs=Xd.reduceCodecs(a.codecs,i);const o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});s&&s(o.sender);const c=await this._pc.createOffer();let d=Jd.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:d});const l=(0,sl.parse)((t||[{}])[0].scalabilityMode);nl.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const p=o.mid;n.mid=p,d=Jd.parse(this._pc.localDescription.sdp);const u=d.media[d.media.length-1];if(n.rtcp.cname=el.getCname({offerMediaObject:u}),t)if(1===t.length){const e=tl.getRtpEncodings({offerMediaObject:u});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t;else n.encodings=tl.getRtpEncodings({offerMediaObject:u});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${l.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:u,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return nl.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(p,o),{localId:p,rtpParameters:n,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),nl.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated transceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.disableMediaSection(t.mid);const r=await this._pc.createOffer();nl.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),nl.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();nl.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),nl.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();nl.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?nl.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):nl.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),nl.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated transceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();nl.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),nl.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();nl.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};nl.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%al.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Jd.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),nl.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};nl.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;nl.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};nl.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);for(const t of e){const{trackId:e,onRtpReceiver:i}=t;if(i){const t=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===t));if(!s)throw new Error("transceiver not found");i(s.receiver)}}let s=await this._pc.createAnswer();const n=Jd.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,a=r.get(e),o=n.media.find((e=>String(e.mid)===a));el.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),s={type:"answer",sdp:Jd.write(n)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:n}),nl.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){nl.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};nl.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();nl.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){nl.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};nl.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();nl.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){nl.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};nl.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();nl.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};nl.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};nl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Jd.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}nl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Jd.parse(this._pc.localDescription.sdp));const r=el.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Zd.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Gd.Firefox120=ol;var cl={},dl=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ll=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),pl=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&dl(t,e,r);return ll(t,e),t};Object.defineProperty(cl,"__esModule",{value:!0}),cl.Firefox60=void 0;const ul=pl(Do),hl=yn,ml=Gn,fl=pl(Kn),gl=pl(Jn),vl=pl(zo),_l=pl(Ko),bl=Qo,yl=Xo,Sl=mc,wl=new hl.Logger("Firefox60"),Cl={OS:16,MIS:2048};class Rl extends bl.HandlerInterface{static createFactory(){return()=>new Rl}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Firefox60"}close(){if(wl.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){wl.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"}),t=document.createElement("canvas");t.getContext("2d");const r=t.captureStream().getVideoTracks()[0];try{e.addTransceiver("audio",{direction:"sendrecv"});const i=e.addTransceiver(r,{direction:"sendrecv"}),s=i.sender.getParameters(),n=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];s.encodings=n,await i.sender.setParameters(s);const a=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const o=ul.parse(a.sdp);return vl.extractRtpCapabilities({sdpObject:o})}catch(i){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw i}}async getNativeSctpCapabilities(){return wl.debug("getNativeSctpCapabilities()"),{numStreams:Cl}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),wl.debug("run()"),this._direction=e,this._remoteSdp=new yl.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:gl.getSendingRtpParameters("audio",d),video:gl.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:gl.getSendingRemoteRtpParameters("audio",d),video:gl.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(wl.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){throw this.assertNotClosed(),new ml.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),wl.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});wl.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};wl.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};wl.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();wl.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertNotClosed(),this.assertSendDirection(),wl.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=fl.clone(t)).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const s=fl.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=gl.reduceCodecs(s.codecs,i);const n=fl.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=gl.reduceCodecs(n.codecs,i);const a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});if(t){const e=a.sender.getParameters();e.encodings=t,await a.sender.setParameters(e)}const o=await this._pc.createOffer();let c=ul.parse(o.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,Sl.parse)((t||[{}])[0].scalabilityMode);wl.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const l=a.mid;s.mid=l,c=ul.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(s.rtcp.cname=vl.getCname({offerMediaObject:p}),t)if(1===t.length){const e=_l.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),s.encodings=e}else s.encodings=t.reverse();else s.encodings=_l.getRtpEncodings({offerMediaObject:p});if(s.encodings.length>1&&("video/vp8"===s.codecs[0].mimeType.toLowerCase()||"video/h264"===s.codecs[0].mimeType.toLowerCase()))for(const e of s.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${d.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return wl.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,a),{localId:l,rtpParameters:s,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),wl.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated transceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.disableMediaSection(t.mid);const r=await this._pc.createOffer();wl.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};wl.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),wl.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();wl.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};wl.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),wl.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();wl.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};wl.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?wl.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):wl.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),wl.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated transceiver not found");const i=r.sender.getParameters();t=i.encodings.length-1-t,i.encodings.forEach(((e,r)=>{e.active=r>=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();wl.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};wl.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),wl.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();wl.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};wl.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};wl.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Cl.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ul.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),wl.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};wl.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;wl.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};wl.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=ul.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,a=r.get(e),o=n.media.find((e=>String(e.mid)===a));vl.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),s={type:"answer",sdp:ul.write(n)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:n}),wl.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){wl.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};wl.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();wl.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){wl.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};wl.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();wl.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){wl.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};wl.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();wl.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};wl.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};wl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ul.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}wl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ul.parse(this._pc.localDescription.sdp));const r=vl.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new ml.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}cl.Firefox60=Rl;var Tl={},kl=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Pl=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Dl=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&kl(t,e,r);return Pl(t,e),t};Object.defineProperty(Tl,"__esModule",{value:!0});var Il=Tl.Safari12=void 0;const El=Dl(Do),Ol=yn,Ml=Dl(Kn),xl=Dl(Jn),Ll=Dl(zo),jl=Dl(Ko),Al=Dl(Jo),Nl=Gn,Bl=Qo,Fl=Xo,$l=mc,Vl=new Ol.Logger("Safari12"),Ul={OS:1024,MIS:1024};class zl extends Bl.HandlerInterface{static createFactory(){return()=>new zl}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari12"}close(){if(Vl.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Vl.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=El.parse(t.sdp),i=Ll.extractRtpCapabilities({sdpObject:r});return Al.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Vl.debug("getNativeSctpCapabilities()"),{numStreams:Ul}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Vl.debug("run()"),this._direction=e,this._remoteSdp=new Fl.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:xl.getSendingRtpParameters("audio",d),video:xl.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:xl.getSendingRemoteRtpParameters("audio",d),video:xl.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Vl.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),Vl.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Vl.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Vl.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Vl.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Vl.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Vl.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i,onRtpSender:s}){this.assertNotClosed(),this.assertSendDirection(),Vl.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const n=Ml.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=xl.reduceCodecs(n.codecs,i);const a=Ml.clone(this._sendingRemoteRtpParametersByKind[e.kind]);a.codecs=xl.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});s&&s(c.sender);let d,l=await this._pc.createOffer(),p=El.parse(l.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:p});const u=(0,$l.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(Vl.debug("send() | enabling legacy simulcast"),p=El.parse(l.sdp),d=p.media[o.idx],jl.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),l={type:"offer",sdp:El.write(p)}),Vl.debug("send() | calling pc.setLocalDescription() [offer:%o]",l),await this._pc.setLocalDescription(l);const h=c.mid;if(n.mid=h,p=El.parse(this._pc.localDescription.sdp),d=p.media[o.idx],n.rtcp.cname=Ll.getCname({offerMediaObject:d}),n.encodings=jl.getRtpEncodings({offerMediaObject:d}),t)for(let e=0;e<n.encodings.length;++e)t[e]&&Object.assign(n.encodings[e],t[e]);if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Vl.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(h,c),{localId:h,rtpParameters:n,rtpSender:c.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Vl.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Vl.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Vl.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Vl.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Vl.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Vl.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Vl.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();Vl.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Vl.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Vl.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Vl.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Vl.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();Vl.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Vl.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Vl.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();Vl.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Vl.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Vl.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ul.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=El.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Vl.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Vl.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Vl.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Vl.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);for(const t of e){const{trackId:e,onRtpReceiver:i}=t;if(i){const t=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===t));if(!s)throw new Error("transceiver not found");i(s.receiver)}}let s=await this._pc.createAnswer();const n=El.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));Ll.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:El.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Vl.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Vl.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Vl.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Vl.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Vl.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Vl.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Vl.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Vl.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Vl.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Vl.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Vl.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Vl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=El.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Vl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=El.parse(this._pc.localDescription.sdp));const r=Ll.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Nl.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Il=Tl.Safari12=zl;var ql={},Gl=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Hl=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Wl=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Gl(t,e,r);return Hl(t,e),t};Object.defineProperty(ql,"__esModule",{value:!0}),ql.Safari11=void 0;const Kl=Wl(Do),Jl=yn,Ql=Wl(Kn),Zl=Wl(Jn),Yl=Wl(zo),Xl=Wl(md),ep=Qo,tp=Xo,rp=new Jl.Logger("Safari11"),ip={OS:1024,MIS:1024};class sp extends ep.HandlerInterface{static createFactory(){return()=>new sp}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari11"}close(){if(rp.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){rp.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Kl.parse(t.sdp);return Yl.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return rp.debug("getNativeSctpCapabilities()"),{numStreams:ip}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){rp.debug("run()"),this._direction=e,this._remoteSdp=new tp.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:Zl.getSendingRtpParameters("audio",d),video:Zl.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Zl.getSendingRemoteRtpParameters("audio",d),video:Zl.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(rp.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){rp.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(rp.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});rp.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};rp.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};rp.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();rp.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),rp.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&rp.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,n=await this._pc.createOffer(),a=Kl.parse(n.sdp);const o=Ql.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=Zl.reduceCodecs(o.codecs);const c=Ql.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Zl.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(rp.debug("send() | enabling simulcast"),a=Kl.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),Xl.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:Kl.write(a)}),rp.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=Kl.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Yl.getCname({offerMediaObject:s}),o.encodings=Xl.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&"video/vp8"===o.codecs[0].mimeType.toLowerCase())for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};rp.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const p=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,p),{localId:l,rtpParameters:o,rtpSender:p}}async stopSending(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();rp.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void rp.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};rp.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?rp.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):rp.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.track;await r.replaceTrack(t),i&&this._sendStream.removeTrack(i),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),rp.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),rp.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};rp.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ip.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Kl.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),rp.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};rp.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i,streamId:s}=t;rp.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};rp.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=Kl.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));Yl.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:Kl.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),rp.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const r of e){const{kind:e,trackId:i,rtpParameters:s}=r,n=e,a=i,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===a));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(a,{mid:n,rtpParameters:s,rtpReceiver:o}),t.push({localId:a,track:o.track,rtpReceiver:o})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){rp.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};rp.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();rp.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async pauseReceiving(e){}async resumeReceiving(e){}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};rp.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};rp.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Kl.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}rp.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Kl.parse(this._pc.localDescription.sdp));const r=Yl.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}ql.Safari11=sp;var np={},ap={},op=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),cp=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),dp=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&op(t,e,r);return cp(t,e),t};Object.defineProperty(ap,"__esModule",{value:!0}),ap.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=lp.clone(e);for(const e of t.codecs??[]){if(e.channels=e.numChannels,delete e.numChannels,e.mimeType=e.mimeType||`${e.kind}/${e.name}`,e.parameters){const t=e.parameters;t.apt&&(t.apt=Number(t.apt)),t["packetization-mode"]&&(t["packetization-mode"]=Number(t["packetization-mode"]))}for(const t of e.rtcpFeedback||[])t.parameter||(t.parameter="")}return t},ap.mangleRtpParameters=function(e){const t=lp.clone(e);t.mid&&(t.muxId=t.mid,delete t.mid);for(const e of t.codecs)e.channels&&(e.numChannels=e.channels,delete e.channels),e.mimeType&&!e.name&&(e.name=e.mimeType.split("/")[1]),delete e.mimeType;return t};const lp=dp(Kn);var pp=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),up=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),hp=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&pp(t,e,r);return up(t,e),t};Object.defineProperty(np,"__esModule",{value:!0}),np.Edge11=void 0;const mp=yn,fp=Gn,gp=hp(Kn),vp=hp(Jn),_p=hp(ap),bp=Qo,yp=new mp.Logger("Edge11");class Sp extends bp.HandlerInterface{static createFactory(){return()=>new Sp}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){yp.debug("close()");try{this._iceGatherer.close()}catch(e){}try{this._iceTransport.stop()}catch(e){}try{this._dtlsTransport.stop()}catch(e){}for(const e of this._rtpSenders.values())try{e.stop()}catch(e){}for(const e of this._rtpReceivers.values())try{e.stop()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){return yp.debug("getNativeRtpCapabilities()"),_p.getCapabilities()}async getNativeSctpCapabilities(){return yp.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){yp.debug("run()"),this._sendingRtpParametersByKind={audio:vp.getSendingRtpParameters("audio",d),video:vp.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${gp.generateRandomNumber()}`,this.setIceGatherer({iceServers:n,iceTransportPolicy:a}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new fp.UnsupportedError("not supported")}async restartIce(e){if(yp.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){yp.debug("restartIce() | calling iceTransport.start()"),this._iceTransport.start(this._iceGatherer,e,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({})}}async getTransportStats(){return this._iceTransport.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){yp.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),yp.debug("send() | calling new RTCRtpSender()");const s=new RTCRtpSender(e,this._dtlsTransport),n=gp.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=vp.reduceCodecs(n.codecs,i);const a=n.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=gp.generateRandomNumber(),a&&(e.rtx={ssrc:gp.generateRandomNumber()});n.encodings=t,n.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=_p.mangleRtpParameters(n);yp.debug("send() | calling rtpSender.send() [params:%o]",o),await s.send(o);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,s),{localId:c,rtpParameters:n,rtpSender:s}}async stopSending(e){yp.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{yp.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw yp.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?yp.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):yp.debug("replaceTrack() [localId:%s, no track]",e);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");r.setTrack(t)}async setMaxSpatialLayer(e,t){yp.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(i)}async setRtpEncodingParameters(e,t){yp.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const i=r.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.setParameters(i)}async getSenderStats(e){const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");return t.getStats()}async sendDataChannel(e){throw new fp.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;yp.debug("receive() [trackId:%s, kind:%s]",e,r)}this._transportReady||await this.setupTransport({localDtlsRole:"server"});for(const r of e){const{trackId:e,kind:i,rtpParameters:s}=r;yp.debug("receive() | calling new RTCRtpReceiver()");const n=new RTCRtpReceiver(this._dtlsTransport,i);n.addEventListener("error",(e=>{yp.error('rtpReceiver "error" event [event:%o]',e)}));const a=_p.mangleRtpParameters(s);yp.debug("receive() | calling rtpReceiver.receive() [params:%o]",a),await n.receive(a);const o=e;this._rtpReceivers.set(o,n),t.push({localId:o,track:n.track,rtpReceiver:n})}return t}async stopReceiving(e){for(const t of e){yp.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{yp.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){yp.warn("stopReceiving() | rtpReceiver.stop() failed:%o",e)}}}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel(e){throw new fp.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{yp.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){yp.debug("setIceGatherer() | iceGatherer.gather() failed: %s",e.toString())}this._iceGatherer=r}setIceTransport(){const e=new RTCIceTransport(this._iceGatherer);e.addEventListener("statechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("icestatechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("candidatepairchange",(e=>{yp.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{yp.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{yp.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{yp.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){yp.debug("setupTransport()");const t=this._dtlsTransport.getLocalParameters();t.role=e,await new Promise(((e,r)=>{this.safeEmit("@connect",{dtlsParameters:t},e,r)})),this._iceTransport.start(this._iceGatherer,this._remoteIceParameters,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({}),this._remoteDtlsParameters.fingerprints=this._remoteDtlsParameters.fingerprints.filter((e=>"sha-256"===e.algorithm||"sha-384"===e.algorithm||"sha-512"===e.algorithm)),this._dtlsTransport.start(this._remoteDtlsParameters),this._transportReady=!0}}np.Edge11=Sp;var wp={},Cp=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Rp=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Tp=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Cp(t,e,r);return Rp(t,e),t};Object.defineProperty(wp,"__esModule",{value:!0}),wp.ReactNativeUnifiedPlan=void 0;const kp=Tp(Do),Pp=yn,Dp=Tp(Kn),Ip=Tp(Jn),Ep=Tp(zo),Op=Tp(Ko),Mp=Tp(Jo),xp=Gn,Lp=Qo,jp=Xo,Ap=mc,Np=new Pp.Logger("ReactNativeUnifiedPlan"),Bp={OS:1024,MIS:1024};class Fp extends Lp.HandlerInterface{static createFactory(){return()=>new Fp}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNativeUnifiedPlan"}close(){if(Np.debug("close()"),!this._closed){if(this._closed=!0,this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Np.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=kp.parse(t.sdp),i=Ep.extractRtpCapabilities({sdpObject:r});return Mp.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Np.debug("getNativeSctpCapabilities()"),{numStreams:Bp}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Np.debug("run()"),this._direction=e,this._remoteSdp=new jp.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Ip.getSendingRtpParameters("audio",d),video:Ip.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ip.getSendingRemoteRtpParameters("audio",d),video:Ip.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Np.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),Np.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Np.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Np.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Np.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Np.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Np.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i,onRtpSender:s}){this.assertNotClosed(),this.assertSendDirection(),Np.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const n=Dp.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Ip.reduceCodecs(n.codecs,i);const a=Dp.clone(this._sendingRemoteRtpParametersByKind[e.kind]);a.codecs=Ip.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});s&&s(c.sender);let d,l=await this._pc.createOffer(),p=kp.parse(l.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:p});let u=!1;const h=(0,Ap.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===n.codecs[0].mimeType.toLowerCase()&&(Np.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,p=kp.parse(l.sdp),d=p.media[o.idx],Op.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),l={type:"offer",sdp:kp.write(p)}),Np.debug("send() | calling pc.setLocalDescription() [offer:%o]",l),await this._pc.setLocalDescription(l);let m=c.mid??void 0;if(m||Np.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),n.mid=m,p=kp.parse(this._pc.localDescription.sdp),d=p.media[o.idx],n.rtcp.cname=Ep.getCname({offerMediaObject:d}),t)if(1===t.length){let e=Op.getRtpEncodings({offerMediaObject:d});Object.assign(e[0],t[0]),u&&(e=[e[0]]),n.encodings=e}else n.encodings=t;else n.encodings=Op.getRtpEncodings({offerMediaObject:d});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${h.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:n,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const f={type:"answer",sdp:this._remoteSdp.getSdp()};return Np.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f),m||(m=c.mid,n.mid=m),this._mapMidTransceiver.set(m,c),{localId:m,rtpParameters:n,rtpSender:c.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Np.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Np.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Np.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Np.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Np.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Np.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Np.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Np.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Np.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Np.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Np.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Np.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();Np.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Np.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Np.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const i=r.sender.getParameters();i.encodings.forEach(((e,r)=>{i.encodings[r]={...e,...t}})),await r.sender.setParameters(i),this._remoteSdp.muxMediaSectionSimulcast(e,i.encodings);const s=await this._pc.createOffer();Np.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Np.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertNotClosed(),this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:s};Np.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Bp.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=kp.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Np.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Np.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s,streamId:n}=t;Np.debug("receive() [trackId:%s, kind:%s]",e,i);const a=s.mid||String(this._mapMidTransceiver.size);r.set(e,a),this._remoteSdp.receive({mid:a,kind:i,offerRtpParameters:s,streamId:n||s.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Np.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);for(const t of e){const{trackId:e,onRtpReceiver:i}=t;if(i){const t=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===t));if(!s)throw new Error("transceiver not found");i(s.receiver)}}let s=await this._pc.createAnswer();const n=kp.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,s=r.get(e),a=n.media.find((e=>String(e.mid)===s));Ep.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:kp.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Np.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{trackId:e}=i,s=r.get(e),n=this._pc.getTransceivers().find((e=>e.mid===s));if(!n)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(s,n),t.push({localId:s,track:n.receiver.track,rtpReceiver:n.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Np.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Np.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Np.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Np.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Np.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Np.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Np.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Np.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Np.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a,protocol:r};Np.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Np.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=kp.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Np.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=kp.parse(this._pc.localDescription.sdp));const r=Ep.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new xp.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}wp.ReactNativeUnifiedPlan=Fp;var $p={},Vp=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Up=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),zp=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Vp(t,e,r);return Up(t,e),t};Object.defineProperty($p,"__esModule",{value:!0}),$p.ReactNative=void 0;const qp=zp(Do),Gp=yn,Hp=Gn,Wp=zp(Kn),Kp=zp(Jn),Jp=zp(zo),Qp=zp(md),Zp=Qo,Yp=Xo,Xp=new Gp.Logger("ReactNative"),eu={OS:1024,MIS:1024};class tu extends Zp.HandlerInterface{static createFactory(){return()=>new tu}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNative"}close(){if(Xp.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Xp.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=qp.parse(t.sdp);return Jp.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Xp.debug("getNativeSctpCapabilities()"),{numStreams:eu}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Xp.debug("run()"),this._direction=e,this._remoteSdp=new Yp.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:Kp.getSendingRtpParameters("audio",d),video:Kp.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Kp.getSendingRemoteRtpParameters("audio",d),video:Kp.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:n||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Xp.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Xp.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Xp.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Xp.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Xp.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Xp.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Xp.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:i}){this.assertSendDirection(),Xp.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Xp.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,n=await this._pc.createOffer(),a=qp.parse(n.sdp);const o=Wp.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=Kp.reduceCodecs(o.codecs);const c=Wp.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Kp.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(Xp.debug("send() | enabling simulcast"),a=qp.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),Qp.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:qp.write(a)}),Xp.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=qp.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Jp.getCname({offerMediaObject:s}),o.encodings=Qp.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<o.encodings.length;++e)t[e]&&Object.assign(o.encodings[e],t[e]);if(o.encodings.length>1&&("video/vp8"===o.codecs[0].mimeType.toLowerCase()||"video/h264"===o.codecs[0].mimeType.toLowerCase()))for(const e of o.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:o,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Xp.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:o}}async stopSending(e){this.assertSendDirection(),Xp.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();Xp.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Xp.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const i={type:"answer",sdp:this._remoteSdp.getSdp()};Xp.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new Hp.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Hp.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Hp.UnsupportedError("not implemented")}async getSenderStats(e){throw new Hp.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:s}){this.assertSendDirection();const n={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:s};Xp.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%eu.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=qp.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Xp.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const i={type:"answer",sdp:this._remoteSdp.getSdp()};Xp.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:n.id,ordered:n.ordered,maxPacketLifeTime:n.maxPacketLifeTime,maxRetransmits:n.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:s}=t;Xp.debug("receive() [trackId:%s, kind:%s]",e,i);const n=i;let a=t.streamId||s.rtcp.cname;Xp.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${Wp.generateRandomNumber()}`,r.set(e,a),this._remoteSdp.receive({mid:n,kind:i,offerRtpParameters:s,streamId:a,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Xp.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=qp.parse(s.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,s=n.media.find((e=>String(e.mid)===i));Jp.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:qp.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Xp.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const i of e){const{kind:e,trackId:s,rtpParameters:n}=i,a=s,o=e,c=r.get(s),d=this._pc.getRemoteStreams().find((e=>e.id===c)).getTrackById(a);if(!d)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:o,rtpParameters:n}),t.push({localId:a,track:d})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Xp.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Xp.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xp.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Hp.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:n,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:n,maxRetransmitTime:n,maxRetransmits:a,protocol:r};Xp.debug("receiveDataChannel() [options:%o]",o);const c=this._pc.createDataChannel(t,o);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Xp.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=qp.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Xp.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=qp.parse(this._pc.localDescription.sdp));const r=Jp.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{dtlsParameters:r},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}$p.ReactNative=tu;var ru=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),iu=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),su=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ru(t,e,r);return iu(t,e),t};Object.defineProperty(vn,"__esModule",{value:!0}),vn.Device=void 0,vn.detectDevice=Tu;const nu=bn,au=yn,ou=Tn,cu=Gn,du=su(Kn),lu=su(Jn),pu=xa,uu=Po,hu=xc,mu=Zc,fu=hd,gu=Id,vu=Gd,_u=cl,bu=Tl,yu=ql,Su=np,wu=wp,Cu=$p,Ru=new au.Logger("Device");function Tu(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return Ru.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void Ru.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(Ru.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(Ru.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)Ru.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new nu.UAParser(e);Ru.debug("detectDevice() | browser detected [ua:%s, parsed:%o]",e,t.getResult());const r=t.getBrowser(),i=r.name?.toLowerCase(),s=parseInt(r.major??"0"),n=t.getEngine(),a=n.name?.toLowerCase(),o=t.getOS(),c=o.name?.toLowerCase(),d=parseFloat(o.version??"0"),l=t.getDevice(),p=l.model?.toLowerCase(),u="ios"===c||"ipad"===p,h=i&&["chrome","chromium","mobile chrome","chrome webview","chrome headless"].includes(i),m=i&&["firefox","mobile firefox","mobile focus"].includes(i),f=i&&["safari","mobile safari"].includes(i),g=i&&["edge"].includes(i);if((h||g)&&!u&&s>=111)return"Chrome111";if(h&&!u&&s>=74||g&&!u&&s>=88)return"Chrome74";if(h&&!u&&s>=70)return"Chrome70";if(h&&!u&&s>=67)return"Chrome67";if(h&&!u&&s>=55)return"Chrome55";if(m&&!u&&s>=120)return"Firefox120";if(m&&!u&&s>=60)return"Firefox60";if(m&&u&&d>=14.3)return"Safari12";if(f&&s>=12&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(f&&s>=11)return"Safari11";if(g&&!u&&s>=11&&s<=18)return"Edge11";if("webkit"===a&&u&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if("blink"===a){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=111?"Chrome111":e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome111"}Ru.warn("detectDevice() | browser not supported [name:%s, version:%s]",i,s)}}vn.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new ou.EnhancedEventEmitter,Ru.debug("constructor()"),r){if(Ru.warn("constructor() | Handler option is DEPRECATED, use handlerName or handlerFactory instead"),"string"!=typeof r)throw new TypeError("non string Handler option no longer supported, use handlerFactory instead");e=r}if(e&&t)throw new TypeError("just one of handlerName or handlerInterface can be given");if(t)this._handlerFactory=t;else{if(e)Ru.debug("constructor() | handler given: %s",e);else{if(!(e=Tu()))throw new cu.UnsupportedError("device not supported");Ru.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=uu.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=hu.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=mu.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=fu.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=gu.Chrome55.createFactory();break;case"Firefox120":this._handlerFactory=vu.Firefox120.createFactory();break;case"Firefox60":this._handlerFactory=_u.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=bu.Safari12.createFactory();break;case"Safari11":this._handlerFactory=yu.Safari11.createFactory();break;case"Edge11":this._handlerFactory=Su.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=wu.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=Cu.ReactNative.createFactory();break;default:throw new TypeError(`unknown handlerName "${e}"`)}}const i=this._handlerFactory();this._handlerName=i.name,i.close(),this._extendedRtpCapabilities=void 0,this._recvRtpCapabilities=void 0,this._canProduceByKind={audio:!1,video:!1},this._sctpCapabilities=void 0}get handlerName(){return this._handlerName}get loaded(){return this._loaded}get rtpCapabilities(){if(!this._loaded)throw new cu.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new cu.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;Ru.debug("load() [routerRtpCapabilities:%o]",e);try{if(this._loaded)throw new cu.InvalidStateError("already loaded");const r=du.clone(e);lu.validateRtpCapabilities(r),t=this._handlerFactory();const i=await t.getNativeRtpCapabilities();Ru.debug("load() | got native RTP capabilities:%o",i);const s=du.clone(i);lu.validateRtpCapabilities(s),this._extendedRtpCapabilities=lu.getExtendedRtpCapabilities(s,r),Ru.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=lu.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=lu.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=lu.getRecvRtpCapabilities(this._extendedRtpCapabilities),lu.validateRtpCapabilities(this._recvRtpCapabilities),Ru.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),Ru.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),lu.validateSctpCapabilities(this._sctpCapabilities),Ru.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new cu.InvalidStateError("not loaded");if("audio"!==e&&"video"!==e)throw new TypeError(`invalid kind "${e}"`);return this._canProduceByKind[e]}createSendTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d}){return Ru.debug("createSendTransport()"),this.createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d}){return Ru.debug("createRecvTransport()"),this.createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l}){if(!this._loaded)throw new cu.InvalidStateError("not loaded");if("string"!=typeof t)throw new TypeError("missing id");if("object"!=typeof r)throw new TypeError("missing iceParameters");if(!Array.isArray(i))throw new TypeError("missing iceCandidates");if("object"!=typeof s)throw new TypeError("missing dtlsParameters");if(n&&"object"!=typeof n)throw new TypeError("wrong sctpParameters");if(l&&"object"!=typeof l)throw new TypeError("if given, appData must be an object");const p=new pu.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",p),p}};var ku={},Pu={};Object.defineProperty(Pu,"__esModule",{value:!0});var Du={};function Iu(){}function Eu(){Eu.init.call(this)}function Ou(e){return void 0===e._maxListeners?Eu.defaultMaxListeners:e._maxListeners}function Mu(e,t,r,i){var s,n,a,o;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((n=e._events)?(n.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),a=n[t]):(n=e._events=new Iu,e._eventsCount=0),a){if("function"==typeof a?a=n[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),!a.warned&&(s=Ou(e))&&s>0&&a.length>s){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=a.length,o=c,"function"==typeof console.warn?console.warn(o):console.log(o)}}else a=n[t]=r,++e._eventsCount;return e}function xu(e,t,r){var i=!1;function s(){e.removeListener(t,s),i||(i=!0,r.apply(e,arguments))}return s.listener=r,s}function Lu(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function ju(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}Object.defineProperty(Du,"__esModule",{value:!0}),function(e){var t=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=As&&As.__exportStar||function(e,r){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(r,i)||t(r,e,i)};Object.defineProperty(e,"__esModule",{value:!0}),r(vn,e),r(xa,e),r(za,e),r(Ka,e),r(Xa,e),r(so,e),r(Pu,e),r(Du,e),r(Qo,e),r(Gn,e)}(ku),function(e){var t=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&t(i,e,s);return r(i,e),i},s=As&&As.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.debug=e.parseScalabilityMode=e.detectDevice=e.Device=e.version=e.types=void 0;const n=s(gn);e.debug=n.default;const a=vn;Object.defineProperty(e,"Device",{enumerable:!0,get:function(){return a.Device}}),Object.defineProperty(e,"detectDevice",{enumerable:!0,get:function(){return a.detectDevice}});const o=i(ku);e.types=o,e.version="3.7.12";var c=mc;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(ln),Iu.prototype=Object.create(null),Eu.EventEmitter=Eu,Eu.usingDomains=!1,Eu.prototype.domain=void 0,Eu.prototype._events=void 0,Eu.prototype._maxListeners=void 0,Eu.defaultMaxListeners=10,Eu.init=function(){this.domain=null,Eu.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Iu,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Eu.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Eu.prototype.getMaxListeners=function(){return Ou(this)},Eu.prototype.emit=function(e){var t,r,i,s,n,a,o,c="error"===e;if(a=this._events)c=c&&null==a.error;else if(!c)return!1;if(o=this.domain,c){if(t=arguments[1],!o){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=o,t.domainThrown=!1,o.emit("error",t),!1}if(!(r=a[e]))return!1;var l="function"==typeof r;switch(i=arguments.length){case 1:!function(e,t,r){if(t)e.call(r);else for(var i=e.length,s=ju(e,i),n=0;n<i;++n)s[n].call(r)}(r,l,this);break;case 2:!function(e,t,r,i){if(t)e.call(r,i);else for(var s=e.length,n=ju(e,s),a=0;a<s;++a)n[a].call(r,i)}(r,l,this,arguments[1]);break;case 3:!function(e,t,r,i,s){if(t)e.call(r,i,s);else for(var n=e.length,a=ju(e,n),o=0;o<n;++o)a[o].call(r,i,s)}(r,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,r,i,s,n){if(t)e.call(r,i,s,n);else for(var a=e.length,o=ju(e,a),c=0;c<a;++c)o[c].call(r,i,s,n)}(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(i-1),n=1;n<i;n++)s[n-1]=arguments[n];!function(e,t,r,i){if(t)e.apply(r,i);else for(var s=e.length,n=ju(e,s),a=0;a<s;++a)n[a].apply(r,i)}(r,l,this,s)}return!0},Eu.prototype.addListener=function(e,t){return Mu(this,e,t,!1)},Eu.prototype.on=Eu.prototype.addListener,Eu.prototype.prependListener=function(e,t){return Mu(this,e,t,!0)},Eu.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,xu(this,e,t)),this},Eu.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,xu(this,e,t)),this},Eu.prototype.removeListener=function(e,t){var r,i,s,n,a;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new Iu:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(s=-1,n=r.length;n-- >0;)if(r[n]===t||r[n].listener&&r[n].listener===t){a=r[n].listener,s=n;break}if(s<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Iu,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,s=e.length;i<s;r+=1,i+=1)e[r]=e[i];e.pop()}(r,s);i.removeListener&&this.emit("removeListener",e,a||t)}return this},Eu.prototype.off=function(e,t){return this.removeListener(e,t)},Eu.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Iu,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Iu:delete r[e]),this;if(0===arguments.length){for(var i,s=Object.keys(r),n=0;n<s.length;++n)"removeListener"!==(i=s[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new Iu,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},Eu.prototype.listeners=function(e){var t,r,i=this._events;return r=i&&(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[],r},Eu.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Lu.call(e,t)},Eu.prototype.listenerCount=Lu,Eu.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};const Au=Object.create(null);Au.open="0",Au.close="1",Au.ping="2",Au.pong="3",Au.message="4",Au.upgrade="5",Au.noop="6";const Nu=Object.create(null);Object.keys(Au).forEach((e=>{Nu[Au[e]]=e}));const Bu={type:"error",data:"parser error"},Fu="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),$u="function"==typeof ArrayBuffer,Vu=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Uu=({type:e,data:t},r,i)=>Fu&&t instanceof Blob?r?i(t):zu(t,i):$u&&(t instanceof ArrayBuffer||Vu(t))?r?i(t):zu(new Blob([t]),i):i(Au[e]+(t||"")),zu=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function qu(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Gu;const Hu="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Wu="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let zS=0;zS<64;zS++)Wu[Hu.charCodeAt(zS)]=zS;const Ku="function"==typeof ArrayBuffer,Ju=(e,t)=>{if("string"!=typeof e)return{type:"message",data:Zu(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:Qu(e.substring(1),t)};return Nu[r]?e.length>1?{type:Nu[r],data:e.substring(1)}:{type:Nu[r]}:Bu},Qu=(e,t)=>{if(Ku){const r=(e=>{let t,r,i,s,n,a=.75*e.length,o=e.length,c=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);const d=new ArrayBuffer(a),l=new Uint8Array(d);for(t=0;t<o;t+=4)r=Wu[e.charCodeAt(t)],i=Wu[e.charCodeAt(t+1)],s=Wu[e.charCodeAt(t+2)],n=Wu[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|s>>2,l[c++]=(3&s)<<6|63&n;return d})(e);return Zu(r,t)}return{base64:!0,data:e}},Zu=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,Yu=String.fromCharCode(30);function Xu(){return new TransformStream({transform(e,t){!function(e,t){Fu&&e.data instanceof Blob?e.data.arrayBuffer().then(qu).then(t):$u&&(e.data instanceof ArrayBuffer||Vu(e.data))?t(qu(e.data)):Uu(e,!1,(e=>{Gu||(Gu=new TextEncoder),t(Gu.encode(e))}))}(e,(r=>{const i=r.length;let s;if(i<126)s=new Uint8Array(1),new DataView(s.buffer).setUint8(0,i);else if(i<65536){s=new Uint8Array(3);const e=new DataView(s.buffer);e.setUint8(0,126),e.setUint16(1,i)}else{s=new Uint8Array(9);const e=new DataView(s.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(i))}e.data&&"string"!=typeof e.data&&(s[0]|=128),t.enqueue(s),t.enqueue(r)}))}})}let eh;function th(e){return e.reduce(((e,t)=>e+t.length),0)}function rh(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let i=0;for(let s=0;s<t;s++)r[s]=e[0][i++],i===e[0].length&&(e.shift(),i=0);return e.length&&i<e[0].length&&(e[0]=e[0].slice(i)),r}function ih(e){if(e)return function(e){for(var t in ih.prototype)e[t]=ih.prototype[t];return e}(e)}ih.prototype.on=ih.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},ih.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},ih.prototype.off=ih.prototype.removeListener=ih.prototype.removeAllListeners=ih.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var s=0;s<i.length;s++)if((r=i[s])===t||r.fn===t){i.splice(s,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},ih.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var s=(r=r.slice(0)).length;i<s;++i)r[i].apply(this,t)}return this},ih.prototype.emitReserved=ih.prototype.emit,ih.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},ih.prototype.hasListeners=function(e){return!!this.listeners(e).length};const sh="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function nh(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const ah=sh.setTimeout,oh=sh.clearTimeout;function ch(e,t){t.useNativeTimers?(e.setTimeoutFn=ah.bind(sh),e.clearTimeoutFn=oh.bind(sh)):(e.setTimeoutFn=sh.setTimeout.bind(sh),e.clearTimeoutFn=sh.clearTimeout.bind(sh))}class dh extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class lh extends ih{constructor(e){super(),this.writable=!1,ch(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new dh(e,t,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=Ju(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}}const ph="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),uh=64,hh={};let mh,fh=0,gh=0;function vh(e){let t="";do{t=ph[e%uh]+t,e=Math.floor(e/uh)}while(e>0);return t}function _h(){const e=vh(+new Date);return e!==mh?(fh=0,mh=e):e+"."+vh(fh++)}for(;gh<uh;gh++)hh[ph[gh]]=gh;let bh=!1;try{bh="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(qS){}const yh=bh;function Sh(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||yh))return new XMLHttpRequest}catch(e){}if(!t)try{return new(sh[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function wh(){}const Ch=null!=new Sh({xdomain:!1}).responseType;class Rh extends ih{constructor(e,t){super(),ch(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=nh(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new Sh(t);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(r)),4===r.readyState&&(200===r.status||1223===r.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=Rh.requestsCount++,Rh.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=wh,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Rh.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(Rh.requestsCount=0,Rh.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",Th);else if("function"==typeof addEventListener){addEventListener("onpagehide"in sh?"pagehide":"unload",Th,!1)}function Th(){for(let e in Rh.requests)Rh.requests.hasOwnProperty(e)&&Rh.requests[e].abort()}const kh="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Ph=sh.WebSocket||sh.MozWebSocket,Dh="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const Ih={websocket:class extends lh{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=Dh?{}:nh(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=Dh?new Ph(e,t,r):t?new Ph(e,t):new Ph(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;Uu(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&kh((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=_h()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!Ph}},webtransport:class extends lh{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){eh||(eh=new TextDecoder);const r=[];let i=0,s=-1,n=!1;return new TransformStream({transform(a,o){for(r.push(a);;){if(0===i){if(th(r)<1)break;const e=rh(r,1);n=128==(128&e[0]),s=127&e[0],i=s<126?3:126===s?1:2}else if(1===i){if(th(r)<2)break;const e=rh(r,2);s=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(th(r)<8)break;const e=rh(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),n=t.getUint32(0);if(n>Math.pow(2,21)-1){o.enqueue(Bu);break}s=n*Math.pow(2,32)+t.getUint32(4),i=3}else{if(th(r)<s)break;const e=rh(r,s);o.enqueue(Ju(n?e:eh.decode(e),t)),i=0}if(0===s||s>e){o.enqueue(Bu);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=Xu();i.readable.pipeTo(e.writable),this.writer=i.writable.getWriter();const s=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),s())})).catch((e=>{}))};s();const n={type:"open"};this.query.sid&&(n.data=`{"sid":"${this.query.sid}"}`),this.writer.write(n).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;this.writer.write(r).then((()=>{i&&kh((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends lh{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port}const t=e&&e.forceBase64;this.supportsBinary=Ch&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(Yu),i=[];for(let e=0;e<r.length;e++){const s=Ju(r[e],t);if(i.push(s),"error"===s.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let s=0;e.forEach(((e,n)=>{Uu(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(Yu))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=_h()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new Rh(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},Eh=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Oh=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function Mh(e){if(e.length>2e3)throw"URI too long";const t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));let s=Eh.exec(e||""),n={},a=14;for(;a--;)n[Oh[a]]=s[a]||"";return-1!=r&&-1!=i&&(n.source=t,n.host=n.host.substring(1,n.host.length-1).replace(/;/g,":"),n.authority=n.authority.replace("[","").replace("]","").replace(/;/g,":"),n.ipv6uri=!0),n.pathNames=function(e,t){const r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||i.splice(0,1);"/"==t.slice(-1)&&i.splice(i.length-1,1);return i}(0,n.path),n.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,i){t&&(r[t]=i)})),r}(0,n.query),n}let xh=class e extends ih{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=Mh(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=Mh(t.host).host),ch(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,i=r.length;e<i;e++){let i=r[e].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new Ih[e](r)}open(){let t;if(this.opts.rememberUpgrade&&e.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(e){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(t){let r=this.createTransport(t),i=!1;e.priorWebsocketSuccess=!1;const s=()=>{i||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(t=>{if(!i)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;e.priorWebsocketSuccess="websocket"===r.name,this.transport.pause((()=>{i||"closed"!==this.readyState&&(l(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=r.name,this.emitReserved("upgradeError",e)}})))};function n(){i||(i=!0,l(),r.close(),r=null)}const a=e=>{const t=new Error("probe error: "+e);t.transport=r.name,n(),this.emitReserved("upgradeError",t)};function o(){a("transport closed")}function c(){a("socket closed")}function d(e){r&&e.name!==r.name&&n()}const l=()=>{r.removeListener("open",s),r.removeListener("error",a),r.removeListener("close",o),this.off("close",c),this.off("upgrading",d)};r.once("open",s),r.once("error",a),r.once("close",o),this.once("close",c),this.once("upgrading",d),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{i||r.open()}),200):r.open()}onOpen(){if(this.readyState="open",e.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let r=0;r<this.writeBuffer.length;r++){const i=this.writeBuffer[r].data;if(i&&(e+="string"==typeof(t=i)?function(e){let t=0,r=0;for(let i=0,s=e.length;i<s;i++)t=e.charCodeAt(i),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(i++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}var t;return this.writeBuffer}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(t){e.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}};xh.protocol=4;const Lh="function"==typeof ArrayBuffer,jh=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,Ah=Object.prototype.toString,Nh="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Ah.call(Blob),Bh="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Ah.call(File);function Fh(e){return Lh&&(e instanceof ArrayBuffer||jh(e))||Nh&&e instanceof Blob||Bh&&e instanceof File}function $h(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if($h(e[t]))return!0;return!1}if(Fh(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return $h(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&$h(e[t]))return!0;return!1}function Vh(e){const t=[],r=e.data,i=e;return i.data=Uh(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Uh(e,t){if(!e)return e;if(Fh(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=Uh(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=Uh(e[i],t));return r}return e}function zh(e,t){return e.data=qh(e.data,t),delete e.attachments,e}function qh(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=qh(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=qh(e[r],t));return e}const Gh=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var Hh;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Hh||(Hh={}));function Wh(e){return"[object Object]"===Object.prototype.toString.call(e)}class Kh extends ih{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===Hh.BINARY_EVENT;r||t.type===Hh.BINARY_ACK?(t.type=r?Hh.EVENT:Hh.ACK,this.reconstructor=new Jh(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!Fh(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===Hh[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Hh.BINARY_EVENT||r.type===Hh.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=this.tryParse(e.substr(t));if(!Kh.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case Hh.CONNECT:return Wh(t);case Hh.DISCONNECT:return void 0===t;case Hh.CONNECT_ERROR:return"string"==typeof t||Wh(t);case Hh.EVENT:case Hh.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===Gh.indexOf(t[0]));case Hh.ACK:case Hh.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Jh{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=zh(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var Qh=Object.freeze({__proto__:null,Decoder:Kh,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==Hh.EVENT&&e.type!==Hh.ACK||!$h(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===Hh.EVENT?Hh.BINARY_EVENT:Hh.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==Hh.BINARY_EVENT&&e.type!==Hh.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=Vh(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},get PacketType(){return Hh},protocol:5});function Zh(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Yh=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Xh extends ih{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Zh(e,"open",this.onopen.bind(this)),Zh(e,"packet",this.onpacket.bind(this)),Zh(e,"error",this.onerror.bind(this)),Zh(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(Yh.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const r={type:Hh.EVENT,data:t,options:{}};if(r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,i=t.pop();this._registerAckCallback(e,i),r.id=e}const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(e,t){var r;const i=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===i)return void(this.acks[e]=t);const s=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),i);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(s),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((i,s)=>{t.push(((e,t)=>r?e?s(e):i(t):i(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...i)=>{if(r!==this._queue[0])return;return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...i)),r.pending=!1,this._drainQueue()})),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:Hh.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Hh.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Hh.EVENT:case Hh.BINARY_EVENT:this.onevent(e);break;case Hh.ACK:case Hh.BINARY_ACK:this.onack(e);break;case Hh.DISCONNECT:this.ondisconnect();break;case Hh.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Hh.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Hh.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function em(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}em.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},em.prototype.reset=function(){this.attempts=0},em.prototype.setMin=function(e){this.ms=e},em.prototype.setMax=function(e){this.max=e},em.prototype.setJitter=function(e){this.jitter=e};class tm extends ih{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,ch(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new em({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||Qh;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new xh(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Zh(t,"open",(function(){r.onopen(),e&&e()})),s=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},n=Zh(t,"error",s);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{i(),s(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}return this.subs.push(i),this.subs.push(n),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Zh(e,"ping",this.onping.bind(this)),Zh(e,"data",this.ondata.bind(this)),Zh(e,"error",this.onerror.bind(this)),Zh(e,"close",this.onclose.bind(this)),Zh(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){kh((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new Xh(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const rm={};function im(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=Mh(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const s=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+s+":"+i.port+t,i.href=i.protocol+"://"+s+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,s=r.id,n=r.path,a=rm[s]&&n in rm[s].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new tm(i,t):(rm[s]||(rm[s]=new tm(i,t)),o=rm[s]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}Object.assign(im,{Manager:tm,Socket:Xh,io:im,connect:im});var sm={},nm={},am={};Object.defineProperty(am,"__esModule",{value:!0}),am.isCorrect=am.isInSubnet=void 0,am.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},am.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var om={};Object.defineProperty(om,"__esModule",{value:!0}),om.RE_SUBNET_STRING=om.RE_ADDRESS=om.GROUPS=om.BITS=void 0,om.BITS=32,om.GROUPS=4,om.RE_ADDRESS=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g,om.RE_SUBNET_STRING=/\/\d{1,2}$/;var cm={};Object.defineProperty(cm,"__esModule",{value:!0}),cm.AddressError=void 0;class dm extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}cm.AddressError=dm;var lm={exports:{}};!function(e,t){(function(){var t;function r(e,t,r){null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function i(){return new r(null)}var s="undefined"!=typeof navigator;s&&"Microsoft Internet Explorer"==navigator.appName?(r.prototype.am=function(e,t,r,i,s,n){for(var a=32767&t,o=t>>15;--n>=0;){var c=32767&this[e],d=this[e++]>>15,l=o*c+d*a;s=((c=a*c+((32767&l)<<15)+r[i]+(1073741823&s))>>>30)+(l>>>15)+o*d+(s>>>30),r[i++]=1073741823&c}return s},t=30):s&&"Netscape"!=navigator.appName?(r.prototype.am=function(e,t,r,i,s,n){for(;--n>=0;){var a=t*this[e++]+r[i]+s;s=Math.floor(a/67108864),r[i++]=67108863&a}return s},t=26):(r.prototype.am=function(e,t,r,i,s,n){for(var a=16383&t,o=t>>14;--n>=0;){var c=16383&this[e],d=this[e++]>>14,l=o*c+d*a;s=((c=a*c+((16383&l)<<14)+r[i]+s)>>28)+(l>>14)+o*d,r[i++]=268435455&c}return s},t=28),r.prototype.DB=t,r.prototype.DM=(1<<t)-1,r.prototype.DV=1<<t;r.prototype.FV=Math.pow(2,52),r.prototype.F1=52-t,r.prototype.F2=2*t-52;var n,a,o="0123456789abcdefghijklmnopqrstuvwxyz",c=new Array;for(n="0".charCodeAt(0),a=0;a<=9;++a)c[n++]=a;for(n="a".charCodeAt(0),a=10;a<36;++a)c[n++]=a;for(n="A".charCodeAt(0),a=10;a<36;++a)c[n++]=a;function d(e){return o.charAt(e)}function l(e,t){var r=c[e.charCodeAt(t)];return null==r?-1:r}function p(e){var t=i();return t.fromInt(e),t}function u(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function h(e){this.m=e}function m(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}function f(e,t){return e&t}function g(e,t){return e|t}function v(e,t){return e^t}function _(e,t){return e&~t}function b(e){if(0==e)return-1;var t=0;return 0==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function y(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function S(){}function w(e){return e}function C(e){this.r2=i(),this.q3=i(),r.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}h.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},h.prototype.revert=function(e){return e},h.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},h.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},h.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},m.prototype.convert=function(e){var t=i();return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&t.compareTo(r.ZERO)>0&&this.m.subTo(t,t),t},m.prototype.revert=function(e){var t=i();return e.copyTo(t),this.reduce(t),t},m.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var r=32767&e[t],i=r*this.mpl+((r*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,i,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},m.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},m.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},r.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},r.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},r.prototype.fromString=function(e,t){var i;if(16==t)i=4;else if(8==t)i=3;else if(256==t)i=8;else if(2==t)i=1;else if(32==t)i=5;else{if(4!=t)return void this.fromRadix(e,t);i=2}this.t=0,this.s=0;for(var s=e.length,n=!1,a=0;--s>=0;){var o=8==i?255&e[s]:l(e,s);o<0?"-"==e.charAt(s)&&(n=!0):(n=!1,0==a?this[this.t++]=o:a+i>this.DB?(this[this.t-1]|=(o&(1<<this.DB-a)-1)<<a,this[this.t++]=o>>this.DB-a):this[this.t-1]|=o<<a,(a+=i)>=this.DB&&(a-=this.DB))}8==i&&0!=(128&e[0])&&(this.s=-1,a>0&&(this[this.t-1]|=(1<<this.DB-a)-1<<a)),this.clamp(),n&&r.ZERO.subTo(this,this)},r.prototype.clamp=function(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t},r.prototype.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},r.prototype.drShiftTo=function(e,t){for(var r=e;r<this.t;++r)t[r-e]=this[r];t.t=Math.max(this.t-e,0),t.s=this.s},r.prototype.lShiftTo=function(e,t){var r,i=e%this.DB,s=this.DB-i,n=(1<<s)-1,a=Math.floor(e/this.DB),o=this.s<<i&this.DM;for(r=this.t-1;r>=0;--r)t[r+a+1]=this[r]>>s|o,o=(this[r]&n)<<i;for(r=a-1;r>=0;--r)t[r]=0;t[a]=o,t.t=this.t+a+1,t.s=this.s,t.clamp()},r.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var i=e%this.DB,s=this.DB-i,n=(1<<i)-1;t[0]=this[r]>>i;for(var a=r+1;a<this.t;++a)t[a-r-1]|=(this[a]&n)<<s,t[a-r]=this[a]>>i;i>0&&(t[this.t-r-1]|=(this.s&n)<<s),t.t=this.t-r,t.clamp()}},r.prototype.subTo=function(e,t){for(var r=0,i=0,s=Math.min(e.t,this.t);r<s;)i+=this[r]-e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i-=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i-=e[r],t[r++]=i&this.DM,i>>=this.DB;i-=e.s}t.s=i<0?-1:0,i<-1?t[r++]=this.DV+i:i>0&&(t[r++]=i),t.t=r,t.clamp()},r.prototype.multiplyTo=function(e,t){var i=this.abs(),s=e.abs(),n=i.t;for(t.t=n+s.t;--n>=0;)t[n]=0;for(n=0;n<s.t;++n)t[n+i.t]=i.am(0,s[n],t,n,0,i.t);t.s=0,t.clamp(),this.s!=e.s&&r.ZERO.subTo(t,t)},r.prototype.squareTo=function(e){for(var t=this.abs(),r=e.t=2*t.t;--r>=0;)e[r]=0;for(r=0;r<t.t-1;++r){var i=t.am(r,t[r],e,2*r,0,1);(e[r+t.t]+=t.am(r+1,2*t[r],e,2*r+1,i,t.t-r-1))>=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},r.prototype.divRemTo=function(e,t,s){var n=e.abs();if(!(n.t<=0)){var a=this.abs();if(a.t<n.t)return null!=t&&t.fromInt(0),void(null!=s&&this.copyTo(s));null==s&&(s=i());var o=i(),c=this.s,d=e.s,l=this.DB-u(n[n.t-1]);l>0?(n.lShiftTo(l,o),a.lShiftTo(l,s)):(n.copyTo(o),a.copyTo(s));var p=o.t,h=o[p-1];if(0!=h){var m=h*(1<<this.F1)+(p>1?o[p-2]>>this.F2:0),f=this.FV/m,g=(1<<this.F1)/m,v=1<<this.F2,_=s.t,b=_-p,y=null==t?i():t;for(o.dlShiftTo(b,y),s.compareTo(y)>=0&&(s[s.t++]=1,s.subTo(y,s)),r.ONE.dlShiftTo(p,y),y.subTo(o,o);o.t<p;)o[o.t++]=0;for(;--b>=0;){var S=s[--_]==h?this.DM:Math.floor(s[_]*f+(s[_-1]+v)*g);if((s[_]+=o.am(0,S,s,b,0,p))<S)for(o.dlShiftTo(b,y),s.subTo(y,s);s[_]<--S;)s.subTo(y,s)}null!=t&&(s.drShiftTo(p,t),c!=d&&r.ZERO.subTo(t,t)),s.t=p,s.clamp(),l>0&&s.rShiftTo(l,s),c<0&&r.ZERO.subTo(s,s)}}},r.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},r.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},r.prototype.exp=function(e,t){if(e>4294967295||e<1)return r.ONE;var s=i(),n=i(),a=t.convert(this),o=u(e)-1;for(a.copyTo(s);--o>=0;)if(t.sqrTo(s,n),(e&1<<o)>0)t.mulTo(n,a,s);else{var c=s;s=n,n=c}return t.revert(s)},r.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,i=(1<<t)-1,s=!1,n="",a=this.t,o=this.DB-a*this.DB%t;if(a-- >0)for(o<this.DB&&(r=this[a]>>o)>0&&(s=!0,n=d(r));a>=0;)o<t?(r=(this[a]&(1<<o)-1)<<t-o,r|=this[--a]>>(o+=this.DB-t)):(r=this[a]>>(o-=t)&i,o<=0&&(o+=this.DB,--a)),r>0&&(s=!0),s&&(n+=d(r));return s?n:"0"},r.prototype.negate=function(){var e=i();return r.ZERO.subTo(this,e),e},r.prototype.abs=function(){return this.s<0?this.negate():this},r.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},r.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+u(this[this.t-1]^this.s&this.DM)},r.prototype.mod=function(e){var t=i();return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(r.ZERO)>0&&e.subTo(t,t),t},r.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new h(t):new m(t),this.exp(e,r)},r.ZERO=p(0),r.ONE=p(1),S.prototype.convert=w,S.prototype.revert=w,S.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},S.prototype.sqrTo=function(e,t){e.squareTo(t)},C.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=i();return e.copyTo(t),this.reduce(t),t},C.prototype.revert=function(e){return e},C.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},C.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},C.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var R,T,k,P=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],D=(1<<26)/P[P.length-1];function I(){var e;e=(new Date).getTime(),T[k++]^=255&e,T[k++]^=e>>8&255,T[k++]^=e>>16&255,T[k++]^=e>>24&255,k>=A&&(k-=A)}if(r.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},r.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),r=Math.pow(e,t),s=p(r),n=i(),a=i(),o="";for(this.divRemTo(s,n,a);n.signum()>0;)o=(r+a.intValue()).toString(e).substr(1)+o,n.divRemTo(s,n,a);return a.intValue().toString(e)+o},r.prototype.fromRadix=function(e,t){this.fromInt(0),null==t&&(t=10);for(var i=this.chunkSize(t),s=Math.pow(t,i),n=!1,a=0,o=0,c=0;c<e.length;++c){var d=l(e,c);d<0?"-"==e.charAt(c)&&0==this.signum()&&(n=!0):(o=t*o+d,++a>=i&&(this.dMultiply(s),this.dAddOffset(o,0),a=0,o=0))}a>0&&(this.dMultiply(Math.pow(t,a)),this.dAddOffset(o,0)),n&&r.ZERO.subTo(this,this)},r.prototype.fromNumber=function(e,t,i){if("number"==typeof t)if(e<2)this.fromInt(1);else for(this.fromNumber(e,i),this.testBit(e-1)||this.bitwiseTo(r.ONE.shiftLeft(e-1),g,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(r.ONE.shiftLeft(e-1),this);else{var s=new Array,n=7&e;s.length=1+(e>>3),t.nextBytes(s),n>0?s[0]&=(1<<n)-1:s[0]=0,this.fromString(s,256)}},r.prototype.bitwiseTo=function(e,t,r){var i,s,n=Math.min(e.t,this.t);for(i=0;i<n;++i)r[i]=t(this[i],e[i]);if(e.t<this.t){for(s=e.s&this.DM,i=n;i<this.t;++i)r[i]=t(this[i],s);r.t=this.t}else{for(s=this.s&this.DM,i=n;i<e.t;++i)r[i]=t(s,e[i]);r.t=e.t}r.s=t(this.s,e.s),r.clamp()},r.prototype.changeBit=function(e,t){var i=r.ONE.shiftLeft(e);return this.bitwiseTo(i,t,i),i},r.prototype.addTo=function(e,t){for(var r=0,i=0,s=Math.min(e.t,this.t);r<s;)i+=this[r]+e[r],t[r++]=i&this.DM,i>>=this.DB;if(e.t<this.t){for(i+=e.s;r<this.t;)i+=this[r],t[r++]=i&this.DM,i>>=this.DB;i+=this.s}else{for(i+=this.s;r<e.t;)i+=e[r],t[r++]=i&this.DM,i>>=this.DB;i+=e.s}t.s=i<0?-1:0,i>0?t[r++]=i:i<-1&&(t[r++]=this.DV+i),t.t=r,t.clamp()},r.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},r.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},r.prototype.multiplyLowerTo=function(e,t,r){var i,s=Math.min(this.t+e.t,t);for(r.s=0,r.t=s;s>0;)r[--s]=0;for(i=r.t-this.t;s<i;++s)r[s+this.t]=this.am(0,e[s],r,s,0,this.t);for(i=Math.min(e.t,t);s<i;++s)this.am(0,e[s],r,s,0,t-s);r.clamp()},r.prototype.multiplyUpperTo=function(e,t,r){--t;var i=r.t=this.t+e.t-t;for(r.s=0;--i>=0;)r[i]=0;for(i=Math.max(t-this.t,0);i<e.t;++i)r[this.t+i-t]=this.am(t-i,e[i],r,0,0,this.t+i-t);r.clamp(),r.drShiftTo(1,r)},r.prototype.modInt=function(e){if(e<=0)return 0;var t=this.DV%e,r=this.s<0?e-1:0;if(this.t>0)if(0==t)r=this[0]%e;else for(var i=this.t-1;i>=0;--i)r=(t*r+this[i])%e;return r},r.prototype.millerRabin=function(e){var t=this.subtract(r.ONE),s=t.getLowestSetBit();if(s<=0)return!1;var n=t.shiftRight(s);(e=e+1>>1)>P.length&&(e=P.length);for(var a=i(),o=0;o<e;++o){a.fromInt(P[Math.floor(Math.random()*P.length)]);var c=a.modPow(n,this);if(0!=c.compareTo(r.ONE)&&0!=c.compareTo(t)){for(var d=1;d++<s&&0!=c.compareTo(t);)if(0==(c=c.modPowInt(2,this)).compareTo(r.ONE))return!1;if(0!=c.compareTo(t))return!1}}return!0},r.prototype.clone=function(){var e=i();return this.copyTo(e),e},r.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},r.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},r.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},r.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},r.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,i=this.DB-e*this.DB%8,s=0;if(e-- >0)for(i<this.DB&&(r=this[e]>>i)!=(this.s&this.DM)>>i&&(t[s++]=r|this.s<<this.DB-i);e>=0;)i<8?(r=(this[e]&(1<<i)-1)<<8-i,r|=this[--e]>>(i+=this.DB-8)):(r=this[e]>>(i-=8)&255,i<=0&&(i+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==s&&(128&this.s)!=(128&r)&&++s,(s>0||r!=this.s)&&(t[s++]=r);return t},r.prototype.equals=function(e){return 0==this.compareTo(e)},r.prototype.min=function(e){return this.compareTo(e)<0?this:e},r.prototype.max=function(e){return this.compareTo(e)>0?this:e},r.prototype.and=function(e){var t=i();return this.bitwiseTo(e,f,t),t},r.prototype.or=function(e){var t=i();return this.bitwiseTo(e,g,t),t},r.prototype.xor=function(e){var t=i();return this.bitwiseTo(e,v,t),t},r.prototype.andNot=function(e){var t=i();return this.bitwiseTo(e,_,t),t},r.prototype.not=function(){for(var e=i(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e},r.prototype.shiftLeft=function(e){var t=i();return e<0?this.rShiftTo(-e,t):this.lShiftTo(e,t),t},r.prototype.shiftRight=function(e){var t=i();return e<0?this.lShiftTo(-e,t):this.rShiftTo(e,t),t},r.prototype.getLowestSetBit=function(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+b(this[e]);return this.s<0?this.t*this.DB:-1},r.prototype.bitCount=function(){for(var e=0,t=this.s&this.DM,r=0;r<this.t;++r)e+=y(this[r]^t);return e},r.prototype.testBit=function(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)},r.prototype.setBit=function(e){return this.changeBit(e,g)},r.prototype.clearBit=function(e){return this.changeBit(e,_)},r.prototype.flipBit=function(e){return this.changeBit(e,v)},r.prototype.add=function(e){var t=i();return this.addTo(e,t),t},r.prototype.subtract=function(e){var t=i();return this.subTo(e,t),t},r.prototype.multiply=function(e){var t=i();return this.multiplyTo(e,t),t},r.prototype.divide=function(e){var t=i();return this.divRemTo(e,t,null),t},r.prototype.remainder=function(e){var t=i();return this.divRemTo(e,null,t),t},r.prototype.divideAndRemainder=function(e){var t=i(),r=i();return this.divRemTo(e,t,r),new Array(t,r)},r.prototype.modPow=function(e,t){var r,s,n=e.bitLength(),a=p(1);if(n<=0)return a;r=n<18?1:n<48?3:n<144?4:n<768?5:6,s=n<8?new h(t):t.isEven()?new C(t):new m(t);var o=new Array,c=3,d=r-1,l=(1<<r)-1;if(o[1]=s.convert(this),r>1){var f=i();for(s.sqrTo(o[1],f);c<=l;)o[c]=i(),s.mulTo(f,o[c-2],o[c]),c+=2}var g,v,_=e.t-1,b=!0,y=i();for(n=u(e[_])-1;_>=0;){for(n>=d?g=e[_]>>n-d&l:(g=(e[_]&(1<<n+1)-1)<<d-n,_>0&&(g|=e[_-1]>>this.DB+n-d)),c=r;0==(1&g);)g>>=1,--c;if((n-=c)<0&&(n+=this.DB,--_),b)o[g].copyTo(a),b=!1;else{for(;c>1;)s.sqrTo(a,y),s.sqrTo(y,a),c-=2;c>0?s.sqrTo(a,y):(v=a,a=y,y=v),s.mulTo(y,o[g],a)}for(;_>=0&&0==(e[_]&1<<n);)s.sqrTo(a,y),v=a,a=y,y=v,--n<0&&(n=this.DB-1,--_)}return s.revert(a)},r.prototype.modInverse=function(e){var t=e.isEven();if(this.isEven()&&t||0==e.signum())return r.ZERO;for(var i=e.clone(),s=this.clone(),n=p(1),a=p(0),o=p(0),c=p(1);0!=i.signum();){for(;i.isEven();)i.rShiftTo(1,i),t?(n.isEven()&&a.isEven()||(n.addTo(this,n),a.subTo(e,a)),n.rShiftTo(1,n)):a.isEven()||a.subTo(e,a),a.rShiftTo(1,a);for(;s.isEven();)s.rShiftTo(1,s),t?(o.isEven()&&c.isEven()||(o.addTo(this,o),c.subTo(e,c)),o.rShiftTo(1,o)):c.isEven()||c.subTo(e,c),c.rShiftTo(1,c);i.compareTo(s)>=0?(i.subTo(s,i),t&&n.subTo(o,n),a.subTo(c,a)):(s.subTo(i,s),t&&o.subTo(n,o),c.subTo(a,c))}return 0!=s.compareTo(r.ONE)?r.ZERO:c.compareTo(e)>=0?c.subtract(e):c.signum()<0?(c.addTo(e,c),c.signum()<0?c.add(e):c):c},r.prototype.pow=function(e){return this.exp(e,new S)},r.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var i=t;t=r,r=i}var s=t.getLowestSetBit(),n=r.getLowestSetBit();if(n<0)return t;for(s<n&&(n=s),n>0&&(t.rShiftTo(n,t),r.rShiftTo(n,r));t.signum()>0;)(s=t.getLowestSetBit())>0&&t.rShiftTo(s,t),(s=r.getLowestSetBit())>0&&r.rShiftTo(s,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return n>0&&r.lShiftTo(n,r),r},r.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=P[P.length-1]){for(t=0;t<P.length;++t)if(r[0]==P[t])return!0;return!1}if(r.isEven())return!1;for(t=1;t<P.length;){for(var i=P[t],s=t+1;s<P.length&&i<D;)i*=P[s++];for(i=r.modInt(i);t<s;)if(i%P[t++]==0)return!1}return r.millerRabin(e)},r.prototype.square=function(){var e=i();return this.squareTo(e),e},r.prototype.Barrett=C,null==T){var E;if(T=new Array,k=0,"undefined"!=typeof window&&window.crypto)if(window.crypto.getRandomValues){var O=new Uint8Array(32);for(window.crypto.getRandomValues(O),E=0;E<32;++E)T[k++]=O[E]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var M=window.crypto.random(32);for(E=0;E<M.length;++E)T[k++]=255&M.charCodeAt(E)}for(;k<A;)E=Math.floor(65536*Math.random()),T[k++]=E>>>8,T[k++]=255&E;k=0,I()}function x(){if(null==R){for(I(),(R=new j).init(T),k=0;k<T.length;++k)T[k]=0;k=0}return R.next()}function L(){}function j(){this.i=0,this.j=0,this.S=new Array}L.prototype.nextBytes=function(e){var t;for(t=0;t<e.length;++t)e[t]=x()},j.prototype.init=function(e){var t,r,i;for(t=0;t<256;++t)this.S[t]=t;for(r=0,t=0;t<256;++t)r=r+this.S[t]+e[t%e.length]&255,i=this.S[t],this.S[t]=this.S[r],this.S[r]=i;this.i=0,this.j=0},j.prototype.next=function(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]};var A=256;e.exports={default:r,BigInteger:r,SecureRandom:L}}).call(As)}(lm);var pm=lm.exports,um={};!function(e){!function(){var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function r(e){return function(e,i){var s,n,a,o,c,d,l,p,u,h=1,m=e.length,f="";for(n=0;n<m;n++)if("string"==typeof e[n])f+=e[n];else if("object"==typeof e[n]){if((o=e[n]).keys)for(s=i[h],a=0;a<o.keys.length;a++){if(null==s)throw new Error(r('[sprintf] Cannot access property "%s" of undefined value "%s"',o.keys[a],o.keys[a-1]));s=s[o.keys[a]]}else s=o.param_no?i[o.param_no]:i[h++];if(t.not_type.test(o.type)&&t.not_primitive.test(o.type)&&s instanceof Function&&(s=s()),t.numeric_arg.test(o.type)&&"number"!=typeof s&&isNaN(s))throw new TypeError(r("[sprintf] expecting number but found %T",s));switch(t.number.test(o.type)&&(p=s>=0),o.type){case"b":s=parseInt(s,10).toString(2);break;case"c":s=String.fromCharCode(parseInt(s,10));break;case"d":case"i":s=parseInt(s,10);break;case"j":s=JSON.stringify(s,null,o.width?parseInt(o.width):0);break;case"e":s=o.precision?parseFloat(s).toExponential(o.precision):parseFloat(s).toExponential();break;case"f":s=o.precision?parseFloat(s).toFixed(o.precision):parseFloat(s);break;case"g":s=o.precision?String(Number(s.toPrecision(o.precision))):parseFloat(s);break;case"o":s=(parseInt(s,10)>>>0).toString(8);break;case"s":s=String(s),s=o.precision?s.substring(0,o.precision):s;break;case"t":s=String(!!s),s=o.precision?s.substring(0,o.precision):s;break;case"T":s=Object.prototype.toString.call(s).slice(8,-1).toLowerCase(),s=o.precision?s.substring(0,o.precision):s;break;case"u":s=parseInt(s,10)>>>0;break;case"v":s=s.valueOf(),s=o.precision?s.substring(0,o.precision):s;break;case"x":s=(parseInt(s,10)>>>0).toString(16);break;case"X":s=(parseInt(s,10)>>>0).toString(16).toUpperCase()}t.json.test(o.type)?f+=s:(!t.number.test(o.type)||p&&!o.sign?u="":(u=p?"+":"-",s=s.toString().replace(t.sign,"")),d=o.pad_char?"0"===o.pad_char?"0":o.pad_char.charAt(1):" ",l=o.width-(u+s).length,c=o.width&&l>0?d.repeat(l):"",f+=o.align?u+s+c:"0"===d?u+c+s:c+u+s)}return f}(function(e){if(s[e])return s[e];var r,i=e,n=[],a=0;for(;i;){if(null!==(r=t.text.exec(i)))n.push(r[0]);else if(null!==(r=t.modulo.exec(i)))n.push("%");else{if(null===(r=t.placeholder.exec(i)))throw new SyntaxError("[sprintf] unexpected placeholder");if(r[2]){a|=1;var o=[],c=r[2],d=[];if(null===(d=t.key.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(o.push(d[1]);""!==(c=c.substring(d[0].length));)if(null!==(d=t.key_access.exec(c)))o.push(d[1]);else{if(null===(d=t.index_access.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");o.push(d[1])}r[2]=o}else a|=2;if(3===a)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");n.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}i=i.substring(r[0].length)}return s[e]=n}(e),arguments)}function i(e,t){return r.apply(null,[e].concat(t||[]))}var s=Object.create(null);e.sprintf=r,e.vsprintf=i,"undefined"!=typeof window&&(window.sprintf=r,window.vsprintf=i)}()}(um);var hm=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),mm=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),fm=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&hm(t,e,r);return mm(t,e),t};Object.defineProperty(nm,"__esModule",{value:!0}),nm.Address4=void 0;const gm=fm(am),vm=fm(om),_m=cm,bm=pm,ym=um;class Sm{constructor(e){this.groups=vm.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=gm.isCorrect(vm.BITS),this.isInSubnet=gm.isInSubnet,this.address=e;const t=vm.RE_SUBNET_STRING.exec(e);if(t){if(this.parsedSubnet=t[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,this.subnetMask<0||this.subnetMask>vm.BITS)throw new _m.AddressError("Invalid subnet mask.");e=e.replace(vm.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new Sm(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(vm.RE_ADDRESS))throw new _m.AddressError("Invalid IPv4 address.");return t}correctForm(){return this.parsedAddress.map((e=>parseInt(e,10))).join(".")}static fromHex(e){const t=e.replace(/:/g,"").padStart(8,"0"),r=[];let i;for(i=0;i<8;i+=2){const e=t.slice(i,i+2);r.push(parseInt(e,16))}return new Sm(r.join("."))}static fromInteger(e){return Sm.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new Sm(t)}toHex(){return this.parsedAddress.map((e=>(0,ym.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<vm.GROUPS;t+=2){const r=(0,ym.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,ym.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new bm.BigInteger(this.parsedAddress.map((e=>(0,ym.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new bm.BigInteger(this.mask()+"0".repeat(vm.BITS-this.subnetMask),2)}startAddress(){return Sm.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new bm.BigInteger("1");return Sm.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new bm.BigInteger(this.mask()+"1".repeat(vm.BITS-this.subnetMask),2)}endAddress(){return Sm.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new bm.BigInteger("1");return Sm.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return Sm.fromInteger(parseInt(e.toString(),10))}mask(e){return void 0===e&&(e=this.subnetMask),this.getBitsBase2(0,e)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}reverseForm(e){e||(e={});const t=this.correctForm().split(".").reverse().join(".");return e.omitSuffix?t:(0,ym.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new Sm("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(vm.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(vm.RE_ADDRESS,(0,ym.sprintf)('<span class="hover-group group-v4 group-6">%s</span>.<span class="hover-group group-v4 group-7">%s</span>',e.slice(0,2).join("."),e.slice(2,4).join(".")))}}nm.Address4=Sm;var wm={},Cm={};Object.defineProperty(Cm,"__esModule",{value:!0}),Cm.RE_URL_WITH_PORT=Cm.RE_URL=Cm.RE_ZONE_STRING=Cm.RE_SUBNET_STRING=Cm.RE_BAD_ADDRESS=Cm.RE_BAD_CHARACTERS=Cm.TYPES=Cm.SCOPES=Cm.GROUPS=Cm.BITS=void 0,Cm.BITS=128,Cm.GROUPS=8,Cm.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},Cm.TYPES={"ff01::1/128":"Multicast (All nodes on this interface)","ff01::2/128":"Multicast (All routers on this interface)","ff02::1/128":"Multicast (All nodes on this link)","ff02::2/128":"Multicast (All routers on this link)","ff05::2/128":"Multicast (All routers in this site)","ff02::5/128":"Multicast (OSPFv3 AllSPF routers)","ff02::6/128":"Multicast (OSPFv3 AllDR routers)","ff02::9/128":"Multicast (RIP routers)","ff02::a/128":"Multicast (EIGRP routers)","ff02::d/128":"Multicast (PIM routers)","ff02::16/128":"Multicast (MLDv2 reports)","ff01::fb/128":"Multicast (mDNSv6)","ff02::fb/128":"Multicast (mDNSv6)","ff05::fb/128":"Multicast (mDNSv6)","ff02::1:2/128":"Multicast (All DHCP servers and relay agents on this link)","ff05::1:2/128":"Multicast (All DHCP servers and relay agents in this site)","ff02::1:3/128":"Multicast (All DHCP servers on this link)","ff05::1:3/128":"Multicast (All DHCP servers in this site)","::/128":"Unspecified","::1/128":"Loopback","ff00::/8":"Multicast","fe80::/10":"Link-local unicast"},Cm.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,Cm.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,Cm.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,Cm.RE_ZONE_STRING=/%.*$/,Cm.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),Cm.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var Rm={};Object.defineProperty(Rm,"__esModule",{value:!0}),Rm.simpleGroup=Rm.spanLeadingZeroes=Rm.spanAll=Rm.spanAllZeroes=void 0;const Tm=um;function km(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function Pm(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}Rm.spanAllZeroes=km,Rm.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,Tm.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,km(e)))).join("")},Rm.spanLeadingZeroes=function(e){return e.split(":").map((e=>Pm(e))).join(":")},Rm.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,Tm.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,Pm(e))))};var Dm={},Im=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Em=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Om=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Im(t,e,r);return Em(t,e),t};Object.defineProperty(Dm,"__esModule",{value:!0}),Dm.possibleElisions=Dm.simpleRegularExpression=Dm.ADDRESS_BOUNDARY=Dm.padGroup=Dm.groupPossibilities=void 0;const Mm=Om(Cm),xm=um;function Lm(e){return(0,xm.sprintf)("(%s)",e.join("|"))}function jm(e){return e.length<4?(0,xm.sprintf)("0{0,%d}%s",4-e.length,e):e}Dm.groupPossibilities=Lm,Dm.padGroup=jm,Dm.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",Dm.simpleRegularExpression=function(e){const t=[];e.forEach(((e,r)=>{0===parseInt(e,16)&&t.push(r)}));const r=t.map((t=>e.map(((e,r)=>{if(r===t){const t=0===r||r===Mm.GROUPS-1?":":"";return Lm([jm(e),t])}return jm(e)})).join(":")));return r.push(e.map(jm).join(":")),Lm(r)},Dm.possibleElisions=function(e,t,r){const i=t?"":":",s=r?"":":",n=[];t||r||n.push("::"),t&&r&&n.push(""),(r&&!t||!r&&t)&&n.push(":"),n.push((0,xm.sprintf)("%s(:0{1,4}){1,%d}",i,e-1)),n.push((0,xm.sprintf)("(0{1,4}:){1,%d}%s",e-1,s)),n.push((0,xm.sprintf)("(0{1,4}:){%d}0{1,4}",e-1));for(let t=1;t<e-1;t++)for(let r=1;r<e-t;r++)n.push((0,xm.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return Lm(n)};var Am=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Nm=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Bm=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Am(t,e,r);return Nm(t,e),t};Object.defineProperty(wm,"__esModule",{value:!0}),wm.Address6=void 0;const Fm=Bm(am),$m=Bm(om),Vm=Bm(Cm),Um=Bm(Rm),zm=nm,qm=Dm,Gm=cm,Hm=pm,Wm=um;function Km(e){if(!e)throw new Error("Assertion failed.")}function Jm(e){return e=(e=e.replace(/^(0{1,})([1-9]+)$/,'<span class="parse-error">$1</span>$2')).replace(/^(0{1,})(0)$/,'<span class="parse-error">$1</span>$2')}function Qm(e){return(0,Wm.sprintf)("%04x",parseInt(e,16))}function Zm(e){return 255&e}class Ym{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=Fm.isInSubnet,this.isCorrect=Fm.isCorrect(Vm.BITS),this.groups=void 0===t?Vm.GROUPS:t,this.address=e;const r=Vm.RE_SUBNET_STRING.exec(e);if(r){if(this.parsedSubnet=r[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,Number.isNaN(this.subnetMask)||this.subnetMask<0||this.subnetMask>Vm.BITS)throw new Gm.AddressError("Invalid subnet mask.");e=e.replace(Vm.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new Gm.AddressError("Invalid subnet mask.");const i=Vm.RE_ZONE_STRING.exec(e);i&&(this.zone=i[0],e=e.replace(Vm.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new Ym(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let i;for(i=0;i<Vm.GROUPS;i++)r.push(t.slice(4*i,4*(i+1)));return new Ym(r.join(":"))}static fromURL(e){let t,r,i=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=Vm.RE_URL_WITH_PORT.exec(e),null===r)return{error:"failed to parse address with port",address:null,port:null};t=r[1],i=r[2]}else if(-1!==e.indexOf("/")){if(e=e.replace(/^[a-z0-9]+:\/\//,""),r=Vm.RE_URL.exec(e),null===r)return{error:"failed to parse address from URL",address:null,port:null};t=r[1]}else t=e;return i?(i=parseInt(i,10),(i<0||i>65536)&&(i=null)):i=null,{address:new Ym(t),port:i}}static fromAddress4(e){const t=new zm.Address4(e),r=Vm.BITS-($m.BITS-t.subnetMask);return new Ym(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new Gm.AddressError("Invalid 'ip6.arpa' form.");const r=t.split(".").reverse();for(let e=7;e>0;e--){const t=4*e;r.splice(t,0,":")}return t=r.join(""),new Ym(t)}microsoftTranscription(){return(0,Wm.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=Vm.BITS-this.subnetMask-Math.abs(e-Vm.BITS);return t<0?"0":function(e){const t=/(\d+)(\d{3})/;for(;t.test(e);)e=e.replace(t,"$1,$2");return e}(new Hm.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new Hm.BigInteger(this.mask()+"0".repeat(Vm.BITS-this.subnetMask),2)}startAddress(){return Ym.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Hm.BigInteger("1");return Ym.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Hm.BigInteger(this.mask()+"1".repeat(Vm.BITS-this.subnetMask),2)}endAddress(){return Ym.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Hm.BigInteger("1");return Ym.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=Vm.SCOPES[this.getBits(12,16).intValue()];return"Global unicast"===this.getType()&&"Link local"!==e&&(e="Global"),e||"Unknown"}getType(){for(const e of Object.keys(Vm.TYPES))if(this.isInSubnet(new Ym(e)))return Vm.TYPES[e];return"Global unicast"}getBits(e,t){return new Hm.BigInteger(this.getBitsBase2(e,t),2)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}getBitsBase16(e,t){const r=t-e;if(r%4!=0)throw new Error("Length of bits to retrieve must be divisible by four");return this.getBits(e,t).toString(16).padStart(r/4,"0")}getBitsPastSubnet(){return this.getBitsBase2(this.subnetMask,Vm.BITS)}reverseForm(e){e||(e={});const t=Math.floor(this.subnetMask/4),r=this.canonicalForm().replace(/:/g,"").split("").slice(0,t).reverse().join(".");return t>0?e.omitSuffix?r:(0,Wm.sprintf)("%s.ip6.arpa.",r):e.omitSuffix?"":"ip6.arpa."}correctForm(){let e,t=[],r=0;const i=[];for(e=0;e<this.parsedAddress.length;e++){const t=parseInt(this.parsedAddress[e],16);0===t&&r++,0!==t&&r>0&&(r>1&&i.push([e-r,e-1]),r=0)}r>1&&i.push([this.parsedAddress.length-r,this.parsedAddress.length-1]);const s=i.map((e=>e[1]-e[0]+1));if(i.length>0){const e=s.indexOf(Math.max(...s));t=function(e,t){const r=[],i=[];let s;for(s=0;s<e.length;s++)s<t[0]?r.push(e[s]):s>t[1]&&i.push(e[s]);return r.concat(["compact"]).concat(i)}(this.parsedAddress,i[e])}else t=this.parsedAddress;for(e=0;e<t.length;e++)"compact"!==t[e]&&(t[e]=parseInt(t[e],16).toString(16));let n=t.join(":");return n=n.replace(/^compact$/,"::"),n=n.replace(/^compact|compact$/,":"),n=n.replace(/compact/,""),n}binaryZeroPad(){return this.bigInteger().toString(2).padStart(Vm.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match($m.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new zm.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new Gm.AddressError("IPv4 addresses can't have leading zeroes.",e.replace($m.RE_ADDRESS,this.address4.parsedAddress.map(Jm).join(".")));this.v4=!0,t[t.length-1]=this.address4.toGroup6(),e=t.join(":")}return e}parse(e){const t=(e=this.parse4in6(e)).match(Vm.RE_BAD_CHARACTERS);if(t)throw new Gm.AddressError((0,Wm.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(Vm.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(Vm.RE_BAD_ADDRESS);if(r)throw new Gm.AddressError((0,Wm.sprintf)("Address failed regex: %s",r.join("")),e.replace(Vm.RE_BAD_ADDRESS,'<span class="parse-error">$1</span>'));let i=[];const s=e.split("::");if(2===s.length){let e=s[0].split(":"),t=s[1].split(":");1===e.length&&""===e[0]&&(e=[]),1===t.length&&""===t[0]&&(t=[]);const r=this.groups-(e.length+t.length);if(!r)throw new Gm.AddressError("Error parsing groups");this.elidedGroups=r,this.elisionBegin=e.length,this.elisionEnd=e.length+this.elidedGroups,i=i.concat(e);for(let e=0;e<r;e++)i.push("0");i=i.concat(t)}else{if(1!==s.length)throw new Gm.AddressError("Too many :: groups found");i=e.split(":"),this.elidedGroups=0}if(i=i.map((e=>(0,Wm.sprintf)("%x",parseInt(e,16)))),i.length!==this.groups)throw new Gm.AddressError("Incorrect number of groups found");return i}canonicalForm(){return this.parsedAddress.map(Qm).join(":")}decimal(){return this.parsedAddress.map((e=>(0,Wm.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new Hm.BigInteger(this.parsedAddress.map(Qm).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return zm.Address4.fromHex(new Hm.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new Ym(this.parsedAddress.slice(0,6).join(":"),6).correctForm();let r="";return/:$/.test(t)||(r=":"),t+r+e.address}inspectTeredo(){const e=this.getBitsBase16(0,32),t=this.getBits(80,96).xor(new Hm.BigInteger("ffff",16)).toString(),r=zm.Address4.fromHex(this.getBitsBase16(32,64)),i=zm.Address4.fromHex(this.getBits(96,128).xor(new Hm.BigInteger("ffffffff",16)).toString(16)),s=this.getBits(64,80),n=this.getBitsBase2(64,80),a=s.testBit(15),o=s.testBit(14),c=s.testBit(8),d=s.testBit(9),l=new Hm.BigInteger(n.slice(2,6)+n.slice(8,16),2).toString(10);return{prefix:(0,Wm.sprintf)("%s:%s",e.slice(0,4),e.slice(4,8)),server4:r.address,client4:i.address,flags:n,coneNat:a,microsoft:{reserved:o,universalLocal:d,groupIndividual:c,nonce:l},udpPort:t}}inspect6to4(){const e=this.getBitsBase16(0,16),t=zm.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,Wm.sprintf)("%s",e.slice(0,4)),gateway:t.address}}to6to4(){if(!this.is4())return null;const e=["2002",this.getBitsBase16(96,112),this.getBitsBase16(112,128),"","/16"].join(":");return new Ym(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map(Zm)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map(Zm))}static fromUnsignedByteArray(e){const t=new Hm.BigInteger("256",10);let r=new Hm.BigInteger("0",10),i=new Hm.BigInteger("1",10);for(let s=e.length-1;s>=0;s--)r=r.add(i.multiply(new Hm.BigInteger(e[s].toString(10),10))),i=i.multiply(t);return Ym.fromBigInteger(r)}isCanonical(){return this.addressMinusSuffix===this.canonicalForm()}isLinkLocal(){return"1111111010000000000000000000000000000000000000000000000000000000"===this.getBitsBase2(0,64)}isMulticast(){return"Multicast"===this.getType()}is4(){return this.v4}isTeredo(){return this.isInSubnet(new Ym("2001::/32"))}is6to4(){return this.isInSubnet(new Ym("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,Wm.sprintf)(":%s",e),(0,Wm.sprintf)("http://[%s]%s/",this.correctForm(),e)}link(e){e||(e={}),void 0===e.className&&(e.className=""),void 0===e.prefix&&(e.prefix="/#address="),void 0===e.v4&&(e.v4=!1);let t=this.correctForm;return e.v4&&(t=this.to4in6),e.className?(0,Wm.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,Wm.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return Um.simpleGroup(this.address).join(":");Km("number"==typeof this.elidedGroups),Km("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...Um.simpleGroup(t)):e.push("");const i=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)i.push((0,Wm.sprintf)("group-%d",e));return e.push((0,Wm.sprintf)('<span class="%s"></span>',i.join(" "))),r.length?e.push(...Um.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(Km(this.address4 instanceof zm.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new Ym(this.correctForm());if(0===r.elidedGroups)t.push((0,qm.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===Vm.GROUPS)t.push((0,qm.possibleElisions)(Vm.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,qm.simpleRegularExpression)(e[0].split(":"))),Km("number"==typeof r.elidedGroups),t.push((0,qm.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,qm.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",qm.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",qm.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}wm.Address6=Ym,function(e){var t=As&&As.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r);var s=Object.getOwnPropertyDescriptor(t,r);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,i,s)}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=As&&As.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=As&&As.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&t(i,e,s);return r(i,e),i};Object.defineProperty(e,"__esModule",{value:!0}),e.v6=e.AddressError=e.Address6=e.Address4=void 0;const s=nm;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return s.Address4}});const n=wm;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return n.Address6}});const a=cm;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return a.AddressError}});const o=i(Rm);e.v6={helpers:o}}(sm);var Xm={exports:{}};!function(e){(function(){var t,r,i,s,n,a,o,c;r={},null!==e&&e.exports?e.exports=r:this.ipaddr=r,o=function(e,t,r,i){var s,n;if(e.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(s=0;i>0;){if((n=r-i)<0&&(n=0),e[s]>>n!=t[s]>>n)return!1;i-=r,s+=1}return!0},r.subnetMatch=function(e,t,r){var i,s,n,a,o;for(n in null==r&&(r="unicast"),t)for(!(a=t[n])[0]||a[0]instanceof Array||(a=[a]),i=0,s=a.length;i<s;i++)if(o=a[i],e.kind()===o[0].kind()&&e.match.apply(e,o))return n;return r},r.IPv4=function(){function e(e){var t,r,i;if(4!==e.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(t=0,r=e.length;t<r;t++)if(!(0<=(i=e[t])&&i<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=e}return e.prototype.kind=function(){return"ipv4"},e.prototype.toString=function(){return this.octets.join(".")},e.prototype.toNormalizedString=function(){return this.toString()},e.prototype.toByteArray=function(){return this.octets.slice(0)},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv4"!==e.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return o(this.octets,e.octets,8,t)},e.prototype.SpecialRanges={unspecified:[[new e([0,0,0,0]),8]],broadcast:[[new e([255,255,255,255]),32]],multicast:[[new e([224,0,0,0]),4]],linkLocal:[[new e([169,254,0,0]),16]],loopback:[[new e([127,0,0,0]),8]],carrierGradeNat:[[new e([100,64,0,0]),10]],private:[[new e([10,0,0,0]),8],[new e([172,16,0,0]),12],[new e([192,168,0,0]),16]],reserved:[[new e([192,0,0,0]),24],[new e([192,0,2,0]),24],[new e([192,88,99,0]),24],[new e([198,51,100,0]),24],[new e([203,0,113,0]),24],[new e([240,0,0,0]),4]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.toIPv4MappedAddress=function(){return r.IPv6.parse("::ffff:"+this.toString())},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,s,n,a;for(a={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},e=0,s=!1,t=r=3;r>=0;t=r+=-1){if(!((i=this.octets[t])in a))return null;if(n=a[i],s&&0!==n)return null;8!==n&&(s=!0),e+=n}return 32-e},e}(),i="(0?\\d+|0x[a-f0-9]+)",s={fourOctet:new RegExp("^"+i+"\\."+i+"\\."+i+"\\."+i+"$","i"),longValue:new RegExp("^"+i+"$","i")},r.IPv4.parser=function(e){var t,r,i,n,a;if(r=function(e){return"0"===e[0]&&"x"!==e[1]?parseInt(e,8):parseInt(e)},t=e.match(s.fourOctet))return function(){var e,s,n,a;for(a=[],e=0,s=(n=t.slice(1,6)).length;e<s;e++)i=n[e],a.push(r(i));return a}();if(t=e.match(s.longValue)){if((a=r(t[1]))>4294967295||a<0)throw new Error("ipaddr: address outside defined range");return function(){var e,t;for(t=[],n=e=0;e<=24;n=e+=8)t.push(a>>n&255);return t}().reverse()}return null},r.IPv6=function(){function e(e,t){var r,i,s,n,a,o;if(16===e.length)for(this.parts=[],r=i=0;i<=14;r=i+=2)this.parts.push(e[r]<<8|e[r+1]);else{if(8!==e.length)throw new Error("ipaddr: ipv6 part count should be 8 or 16");this.parts=e}for(s=0,n=(o=this.parts).length;s<n;s++)if(!(0<=(a=o[s])&&a<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");t&&(this.zoneId=t)}return e.prototype.kind=function(){return"ipv6"},e.prototype.toString=function(){return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/,"::")},e.prototype.toRFC5952String=function(){var e,t,r,i,s;for(i=/((^|:)(0(:|$)){2,})/g,s=this.toNormalizedString(),e=0,t=-1;r=i.exec(s);)r[0].length>t&&(e=r.index,t=r[0].length);return t<0?s:s.substring(0,e)+"::"+s.substring(e+t)},e.prototype.toByteArray=function(){var e,t,r,i,s;for(e=[],t=0,r=(s=this.parts).length;t<r;t++)i=s[t],e.push(i>>8),e.push(255&i);return e},e.prototype.toNormalizedString=function(){var e,t,r;return e=function(){var e,r,i,s;for(s=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],s.push(t.toString(16));return s}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.toFixedLengthString=function(){var e,t,r;return e=function(){var e,r,i,s;for(s=[],e=0,r=(i=this.parts).length;e<r;e++)t=i[e],s.push(t.toString(16).padStart(4,"0"));return s}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv6"!==e.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return o(this.parts,e.parts,16,t)},e.prototype.SpecialRanges={unspecified:[new e([0,0,0,0,0,0,0,0]),128],linkLocal:[new e([65152,0,0,0,0,0,0,0]),10],multicast:[new e([65280,0,0,0,0,0,0,0]),8],loopback:[new e([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new e([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new e([0,0,0,0,0,65535,0,0]),96],rfc6145:[new e([0,0,0,0,65535,0,0,0]),96],rfc6052:[new e([100,65435,0,0,0,0,0,0]),96],"6to4":[new e([8194,0,0,0,0,0,0,0]),16],teredo:[new e([8193,0,0,0,0,0,0,0]),32],reserved:[[new e([8193,3512,0,0,0,0,0,0]),32]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},e.prototype.toIPv4Address=function(){var e,t,i;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=(i=this.parts.slice(-2))[0],t=i[1],new r.IPv4([e>>8,255&e,t>>8,255&t])},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,i,s,n,a;for(a={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},e=0,s=!1,t=r=7;r>=0;t=r+=-1){if(!((i=this.parts[t])in a))return null;if(n=a[i],s&&0!==n)return null;16!==n&&(s=!0),e+=n}return 128-e},e}(),n="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",a={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+n+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+n+")|(?:::)(?:"+n+")?)"+i+"\\."+i+"\\."+i+"\\."+i+"("+c+")?$","i")},t=function(e,t){var r,i,s,n,o,c;if(e.indexOf("::")!==e.lastIndexOf("::"))return null;for((c=(e.match(a.zoneIndex)||[])[0])&&(c=c.substring(1),e=e.replace(/%.+$/,"")),r=0,i=-1;(i=e.indexOf(":",i+1))>=0;)r++;if("::"===e.substr(0,2)&&r--,"::"===e.substr(-2,2)&&r--,r>t)return null;for(o=t-r,n=":";o--;)n+="0:";return":"===(e=e.replace("::",n))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),t=function(){var t,r,i,n;for(n=[],t=0,r=(i=e.split(":")).length;t<r;t++)s=i[t],n.push(parseInt(s,16));return n}(),{parts:t,zoneId:c}},r.IPv6.parser=function(e){var r,i,s,n,o,c,d;if(a.native.test(e))return t(e,8);if((n=e.match(a.transitional))&&(d=n[6]||"",(r=t(n[1].slice(0,-1)+d,6)).parts)){for(i=0,s=(c=[parseInt(n[2]),parseInt(n[3]),parseInt(n[4]),parseInt(n[5])]).length;i<s;i++)if(!(0<=(o=c[i])&&o<=255))return null;return r.parts.push(c[0]<<8|c[1]),r.parts.push(c[2]<<8|c[3]),{parts:r.parts,zoneId:r.zoneId}}return null},r.IPv4.isIPv4=r.IPv6.isIPv6=function(e){return null!==this.parser(e)},r.IPv4.isValid=function(e){try{return new this(this.parser(e)),!0}catch(e){return!1}},r.IPv4.isValidFourPartDecimal=function(e){return!(!r.IPv4.isValid(e)||!e.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},r.IPv6.isValid=function(e){var t;if("string"==typeof e&&-1===e.indexOf(":"))return!1;try{return new this((t=this.parser(e)).parts,t.zoneId),!0}catch(e){return!1}},r.IPv4.parse=function(e){var t;if(null===(t=this.parser(e)))throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},r.IPv6.parse=function(e){var t;if(null===(t=this.parser(e)).parts)throw new Error("ipaddr: string is not formatted like ip address");return new this(t.parts,t.zoneId)},r.IPv4.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=32)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},r.IPv4.subnetMaskFromPrefixLength=function(e){var t,r,i;if((e=parseInt(e))<0||e>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(i=[0,0,0,0],r=0,t=Math.floor(e/8);r<t;)i[r]=255,r++;return t<4&&(i[t]=Math.pow(2,e%8)-1<<8-e%8),new this(i)},r.IPv4.broadcastAddressFromCIDR=function(e){var t,r,i,s,n;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),n=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),s=[],r=0;r<4;)s.push(parseInt(i[r],10)|255^parseInt(n[r],10)),r++;return new this(s)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv4.networkAddressFromCIDR=function(e){var t,r,i,s,n;try{for(i=(t=this.parseCIDR(e))[0].toByteArray(),n=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),s=[],r=0;r<4;)s.push(parseInt(i[r],10)&parseInt(n[r],10)),r++;return new this(s)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv6.parseCIDR=function(e){var t,r,i;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=128)return i=[this.parse(r[1]),t],Object.defineProperty(i,"toString",{value:function(){return this.join("/")}}),i;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},r.isValid=function(e){return r.IPv6.isValid(e)||r.IPv4.isValid(e)},r.parse=function(e){if(r.IPv6.isValid(e))return r.IPv6.parse(e);if(r.IPv4.isValid(e))return r.IPv4.parse(e);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},r.parseCIDR=function(e){try{return r.IPv6.parseCIDR(e)}catch(t){try{return r.IPv4.parseCIDR(e)}catch(e){throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},r.fromByteArray=function(e){var t;if(4===(t=e.length))return new r.IPv4(e);if(16===t)return new r.IPv6(e);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},r.process=function(e){var t;return"ipv6"===(t=this.parse(e)).kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(As)}(Xm);var ef=Xm.exports,tf=function(e,t){if("string"==typeof t)return rf(e,t);if("object"==typeof t){for(var r=!1,i=0;i<t.length;i++)if(rf(e,t[i])){r=!0;break}return r}};function rf(e,t){try{var r=ef.process(e);if(-1===t.indexOf("/")){var i=ef.process(t);return"ipv6"===r.kind()&&"ipv6"===i.kind()?r.toNormalizedString()===i.toNormalizedString():r.toString()==i.toString()}var s=ef.parseCIDR(t);return r.match(s)}catch(e){return!1}}var sf=tf,nf=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,af=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.2.0/24","192.168.0.0/16","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","224.0.0.0/3"],of=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var cf=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(nf.test(e)){r.isValid=!0;for(var i=e.split("."),s=0;s<4;s++)t.push(parseInt(i[s],10));r.boiledIp=t.join("."),sf(r.boiledIp,af)&&(r.isBogon=!0),sf(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),sf(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),sf(r.boiledIp,of)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},df=Ns(cf),lf={exports:{}},pf=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,uf=[],hf=0;hf<256;hf++)uf[hf]=(hf+256).toString(16).substr(1);lf.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,i=uf;return i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+"-"+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]+i[e[r++]]}(e);else{if("[object String]"!==Object.prototype.toString.call(e))return!1;r=e}if(r=r.toLowerCase(),!pf.test(r))return!1;if(void 0===t)t=mf(r);else if(mf(r)!==t)return!1;switch(t){case 1:case 2:return!0;case 3:case 4:case 5:return-1!==["8","9","a","b"].indexOf(r.charAt(19));default:throw new Error("Invalid version provided.")}};var mf=lf.exports.version=function(e){return 0|e.charAt(14)},ff=Ns(lf.exports);const gf=new URLSearchParams(window.location.search).has("debug");class vf{constructor(){this._isEnabled=!1,this._isEnabled=gf}isEnabled(){return this._isEnabled}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}info(...e){if(this._isEnabled)return console.info(...e)}warn(...e){if(this._isEnabled)return console.warn(...e)}error(...e){if(this._isEnabled)return console.error(...e)}withDebugLogger(e){return this._debugger=e,this}debug(...e){if(!this._isEnabled||!this._debugger)return;const t=[];e.forEach((e=>{if("function"==typeof e){const r=e();t.push(r)}else t.push(e)})),this._debugger.print(...t)}}function _f(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{c(i.next(e))}catch(e){n(e)}}function o(e){try{c(i.throw(e))}catch(e){n(e)}}function c(e){e.done?s(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(a,o)}c((i=i.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError,Zs.default;const bf={id:on(),connectionNumber:0},yf=()=>{};let Sf=yf;const wf=function(e,t=console){const r=[];let i,s,n,a,o,c,d,l,p,u,h,m,f=0,g=!1,v=0;const _={connected:!1,trace:(...e)=>{if(e.push(Date.now()),"customEvent"===e[0]&&"roomSessionId"===e[2].type){const t=c&&c[2].value.roomSessionId,r=e[2].value.roomSessionId;c=e,g&&r&&r!==t&&(null==i||i.close()),r&&(g=!0)}else"customEvent"===e[0]&&"clientId"===e[2].type?n=e:"customEvent"===e[0]&&"organizationId"===e[2].type?s=e:"customEvent"===e[0]&&"displayName"===e[2].type?a=e:"customEvent"===e[0]&&"userRole"===e[2].type?o=e:"customEvent"===e[0]&&"deviceId"===e[2].type?l=e:"customEvent"===e[0]&&"roomProduct"===e[2].type?p=e:"customEvent"===e[0]&&"roomMode"===e[2].type?u=e:"customEvent"===e[0]&&"sfuServer"===e[2].type?h=e:"customEvent"===e[0]&&"featureFlags"===e[2].type&&(m=e);(null==i?void 0:i.readyState)===WebSocket.OPEN?(f=0,i.send(JSON.stringify(e))):"getstats"===e[0]?v<20&&(v++,r.push(e)):"customEvent"===e[0]&&"insightsStats"===e[2].type||r.push(e),(null==i?void 0:i.readyState)===WebSocket.CLOSED&&d&&setTimeout((()=>{i.readyState===WebSocket.CLOSED&&d&&_.connect()}),1e3*f)},close:()=>{d=!1,null==i||i.close()},connect:()=>{d=!0,f+=1,null==i||i.close(),_.connected=!0,i=new WebSocket(e+window.location.pathname,"1.0"),i.onerror=e=>{_.connected=!1,t.warn("[RTCSTATS] WebSocket error",e)},i.onclose=e=>{_.connected=!1,t.info(`[RTCSTATS] Closed ${e.code}`),Sf()},i.onopen=()=>{for(bf.connectionNumber++,i.send(JSON.stringify(["clientInfo",null,bf])),s&&i.send(JSON.stringify(s)),n&&i.send(JSON.stringify(n)),c&&i.send(JSON.stringify(c)),a&&i.send(JSON.stringify(a)),o&&i.send(JSON.stringify(o)),l&&i.send(JSON.stringify(l)),u&&i.send(JSON.stringify(u)),p&&i.send(JSON.stringify(p)),h&&i.send(JSON.stringify(h)),m&&i.send(JSON.stringify(m));r.length;)i.send(JSON.stringify(r.shift()));v=0}}};return _}("wss://rtcstats.srv.whereby.com"),Cf=en(wf.trace,1e4,[""]);Sf=(null==Cf?void 0:Cf.resetDelta)||yf;const Rf={sendEvent:(e,t)=>{wf.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{Rf.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{Rf.sendEvent("video_muted",{muted:e})},server:wf};let Tf=[],kf=0;const Pf=new WeakMap,Df=e=>{Tf=Tf.filter((t=>t!==e))};if(window.RTCPeerConnection){const GS=window.RTCPeerConnection;function HS(e){const t=new GS(e);Tf.push(t),Pf.set(t,{index:kf++});const r=()=>{"closed"===t.connectionState&&(Df(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}HS.prototype=GS.prototype,window.RTCPeerConnection=HS}const If=e=>{var t;return null===(t=Pf.get(e))||void 0===t?void 0:t.index},Ef=new WeakMap;const Of=()=>Promise.all(Tf.map((e=>_f(void 0,void 0,void 0,(function*(){let t=Ef.get(e);t||(t={ssrcToTrackId:{}},Ef.set(e,t));try{const r=yield e.getStats();let i=null;if(r.forEach((e=>{if(!("inbound-rtp"!==e.type&&"outbound-rtp"!==e.type||e.trackIdentifier||t.ssrcToTrackId[e.ssrc])){if(e.mediaSourceId){const i=r.get(e.mediaSourceId);i&&i.trackIdentifier&&(t.ssrcToTrackId[e.ssrc]=i.trackIdentifier)}if(!t.ssrcToTrackId[e.ssrc]&&e.trackId){const i=r.get(e.trackId);i&&i.trackIdentifier&&(t.ssrcToTrackId[e.ssrc]=i.trackIdentifier)}t.ssrcToTrackId[e.ssrc]||(i||(i=[]),i.push(e.ssrc))}})),i){const r=[...e.getSenders(),...e.getReceivers()];(yield Promise.all(r.map((e=>e.getStats())))).forEach(((e,i)=>{e.forEach((e=>{"inbound-rtp"!==e.type&&"outbound-rtp"!==e.type||(t.ssrcToTrackId[e.ssrc]=r[i].track.id)}))})),i.forEach((e=>{t.ssrcToTrackId[e]||(t.ssrcToTrackId[e]="?"+e)}))}return[e,r,t]}catch(r){return Rf.sendEvent("trackSsrcLookupFailed",{name:null==r?void 0:r.name,cause:null==r?void 0:r.cause,message:null==r?void 0:r.message}),[e,[],t]}}))))),Mf=(e,t,r,i,s,n)=>{let a=e[i];a||(a={tracks:{},startTime:t,updated:t},e[i]=a),a.updated=t;let o=a.tracks[s];o||(o={ssrcs:{},startTime:t,updated:t},a.tracks[s]=o),o.updated=t;let c=o.ssrcs[n];return c||(c={startTime:t,updated:t,pcIndex:r},o.ssrcs[n]=c),c.updated=t,c},xf=(e,t)=>{Object.entries(e).forEach((([r,i])=>{i.updated<t?delete e[r]:Object.entries(i.tracks).forEach((([e,r])=>{r.updated<t?delete i.tracks[e]:Object.entries(r.ssrcs).forEach((([e,i])=>{i.updated<t&&delete r.ssrcs[e]}))}))}))};function Lf(e,{logger:t,interval:r},i){return _f(this,void 0,void 0,(function*(){const s=Lf.bind(null,e,{interval:r,logger:t});try{const t=e.getClients(),n=t.find((e=>e.isLocalClient&&!e.isPresentation))||{id:"unknown"};let a=e.statsByView[n.id];a||(a={tracks:{},candidatePairs:{},pressure:null},e.statsByView[n.id]=a),a.pressure=e.lastPressureObserverRecord;if(Date.now()-e.lastUpdateTime<400)return i?e.statsByView:(e.subscriptions.forEach((r=>{var i;return null===(i=r.onUpdatedStats)||void 0===i?void 0:i.call(r,e.statsByView,t)})),void(e.nextTimeout=setTimeout(s,r)));if(e.lastUpdateTime=Date.now(),(yield Of()).forEach((([i,s,o])=>{const c=If(i);"closed"===i.connectionState&&(s=new Map,Df(i)),o.previousSSRCs=o.currentSSRCs||{},o.currentSSRCs={},s.forEach((i=>{var d,l,p;if("candidate-pair"===i.type&&/inprogress|succeeded/.test(i.state)){const t=null===(d=o._oldReport)||void 0===d?void 0:d.get(i.id),n=t?i.timestamp-t.timestamp:r,l=c+":"+i.id;let p=a.candidatePairs[l];p||(p={startTime:e.lastUpdateTime,id:l},a.candidatePairs[l]=p),function(e,t,r,i,s){const n=t.bytesReceived-((null==r?void 0:r.bytesReceived)||0),a=t.bytesSent-((null==r?void 0:r.bytesSent)||0);e.bitrateIn=8e3*n/i,e.bitrateOut=8e3*a/i,e.state=t.state,e.roundTripTime=t.currentRoundTripTime,e.requestsSent=t.requestsSent,e.responsesReceived=t.responsesReceived,e.requestsReceived=t.requestsReceived,e.responsesSent=t.responsesSent,e.availableOutgoingBitrate=t.availableOutgoingBitrate,e.availableIncomingBitrate=t.availableIncomingBitrate;const o=s.get(t.remoteCandidateId),c=s.get(t.localCandidateId);e.usingTurn=!1,c&&/relay/i.test(c.candidateType||"")&&(e.usingTurn=!0,e.turnProtocol=c.relayProtocol),o&&c&&(e.localEp=`${c.protocol}:${c.address||c.ip}:${c.port} ${c.candidateType} (${c.networkType})`,e.remoteEp=`${o.protocol}:${o.address||o.ip}:${o.port} ${o.candidateType}`)}(p,i,t,n,s),p.lastRtcStatsTime=e.lastUpdateTime}if("inbound-rtp"===i.type||"outbound-rtp"===i.type){const a=i.mediaType||i.kind,d=i.ssrc;let u=i.trackIdentifier||o.ssrcToTrackId[d],h=null===(l=o._oldReport)||void 0===l?void 0:l.get(i.id);if(h&&h.mediaSourceId!==i.mediaSourceId){const e=s.get(i.mediaSourceId);e&&e.trackIdentifier&&(u=e.trackIdentifier,o.ssrcToTrackId[d]=u)}const m=t.find((e=>{var t;return(null===(t=e[a].track)||void 0===t?void 0:t.id)===u}))||n;if(!i.trackIdentifier&&o.ssrcToTrackId[d]&&(null===(p=m[a].track)||void 0===p?void 0:p.id)&&m[a].track.id!==o.ssrcToTrackId[d]&&(u=m[a].track.id,o.ssrcToTrackId[d]=m[a].track.id),o.currentSSRCs[d]=m.id,h){const e=s.get(i.transportId),t=o._oldReport.get(h.transportId);(t&&(null==e?void 0:e.selectedCandidatePairId)!==t.selectedCandidatePairId||i.bytesReceived<h.bytesReceived||i.bytesSent<h.bytesSent)&&(h=null)}const f=h?i.timestamp-h.timestamp:r,g=Mf(e.statsByView,e.lastUpdateTime,c,m.id,u,d);!function(e,t,r,i,s){if(e.codec)return;e.kind=t.kind||t.mediaType,e.ssrc=t.ssrc,e.direction="inbound-rtp"===t.type?"in":"out";const n=t.codecId&&s.get(t.codecId);e.codec=n&&[n.mimeType,n.channels&&`${n.channels}ch`,n.clockRate,n.payloadType,t.encoderImplementation||t.decoderImplementation,n.sdpFmtpLine].filter(Boolean).join(" "),e.mid=t.mid,e.rid=t.rid}(g,i,0,0,s),function(e,t,r,i,s){const n=(t.nackCount||0)-((null==r?void 0:r.nackCount)||0);if(e.nackCount=(e.nackCount||0)+n,e.nackRate=1e3*n/i,"in"===e.direction){const s=t.packetsReceived-((null==r?void 0:r.packetsReceived)||0);e.packetCount=(e.packetCount||0)+s,e.packetRate=1e3*s/i;const n=t.packetsLost-((null==r?void 0:r.packetsLost)||0);e.packetLossCount=(e.packetLossCount||0)+n,e.packetLossRate=1e3*n/i,e.lossRatio=n/(n+s)*1e3/i;const a=t.bytesReceived-((null==r?void 0:r.bytesReceived)||0);e.byteCount=(e.byteCount||0)+a;let o=0;t.headerBytesReceived&&(o=t.headerBytesReceived-((null==r?void 0:r.headerBytesReceived)||0),e.headerByteCount=(e.headerByteCount||0)+o);const c=a+o;if(e.bitrate=8e3*c/i,e.mediaRatio=a/c,"audio"===t.kind){const i=(t.fecBytesReceived||0)-((null==r?void 0:r.fecBytesReceived)||0);e.fecRatio=i/a}const d=(t.jitterBufferDelay||0)-((null==r?void 0:r.jitterBufferDelay)||0),l=(t.jitterBufferEmittedCount||0)-((null==r?void 0:r.jitterBufferEmittedCount)||0);e.jitter=l?d/l:0}else{const n=t.packetsSent-((null==r?void 0:r.packetsSent)||0);e.packetCount=(e.packetCount||0)+n,e.packetRate=1e3*n/i;const a=t.bytesSent-((null==r?void 0:r.bytesSent)||0);e.byteCount=(e.byteCount||0)+a;let o=0;t.headerBytesSent&&(o=t.headerBytesSent-((null==r?void 0:r.headerBytesSent)||0),e.headerByteCount=(e.headerByteCount||0)+o);const c=a+o;e.bitrate=8e3*c/i,e.mediaRatio=a/c;const d=t.totalPacketSendDelay-((null==r?void 0:r.totalPacketSendDelay)||0);e.sendDelay=d/n;const l=t.retransmittedPacketsSent-((null==r?void 0:r.retransmittedPacketsSent)||0);if(e.retransRatio=l/n*1e3/i,t.remoteId){const r=s.get(t.remoteId);r&&(e.roundTripTime=r.roundTripTime||0,e.jitter=r.jitter||0,e.fractionLost=r.fractionLost||0)}}}(g,i,h,f,s),"video"===a&&function(e,t,r,i,s){e.width=t.frameWidth,e.height=t.frameHeight,e.qualityLimitationReason=t.qualityLimitationReason||"";const n=t.pliCount-((null==r?void 0:r.pliCount)||0);e.pliCount=(e.pliCount||0)+n,e.pliRate=1e3*n/i;const a=t.firCount-((null==r?void 0:r.firCount)||0);if(e.firCount=(e.firCount||0)+a,e.firRate=1e3*a/i,"in"===e.direction){const s=t.keyFramesDecoded-((null==r?void 0:r.keyFramesDecoded)||0);e.kfCount=(e.kfCount||0)+s,e.kfRate=1e3*s/i;const n=t.framesDecoded-((null==r?void 0:r.framesDecoded)||0);e.frameCount=(e.frameCount||0)+n;const a=t.qpSum-((null==r?void 0:r.qpSum)||0);e.qpf=a/n,e.fps=1e3*n/i}else{const n=t.keyFramesEncoded-((null==r?void 0:r.keyFramesEncoded)||0);e.kfCount=(e.kfCount||0)+n,e.kfRate=1e3*n/i;const a=t.framesEncoded-((null==r?void 0:r.framesEncoded)||0);e.frameCount=(e.frameCount||0)+a;const o=t.qpSum-((null==r?void 0:r.qpSum)||0);e.qpf=o/a,e.fps=1e3*a/i;const c=t.totalEncodeTime-((null==r?void 0:r.totalEncodeTime)||0);if(e.encodeTime=c/a,t.mediaSourceId){const r=s.get(t.mediaSourceId);r&&(e.sourceWidth=r.width||0,e.sourceHeight=r.height||0,e.sourceFps=r.framesPerSecond||0)}}}(g,i,h,f,s),"audio"===a&&function(e,t,r,i,s){const n=t.packetsDiscarded-((null==r?void 0:r.packetsDiscarded)||0);if(e.packetsDiscarded=(e.packetsDiscarded||0)+n,"in"===e.direction){const i=t.totalAudioEnergy-((null==r?void 0:r.totalAudioEnergy)||0),s=t.totalSamplesDuration-((null==r?void 0:r.totalSamplesDuration)||0);e.audioLevel=Math.sqrt(i/s);const n=t.totalSamplesReceived||0,a=t.concealmentEvents||0,o=n-((null==r?void 0:r.totalSamplesReceived)||0),c=t.concealedSamples||0,d=c-((null==r?void 0:r.concealedSamples)||0),l=(t.silentConcealedSamples||0)-((null==r?void 0:r.silentConcealedSamples)||0),p=(t.insertedSamplesForDeceleration||0)-((null==r?void 0:r.insertedSamplesForDeceleration)||0),u=(t.removedSamplesForAcceleration||0)-((null==r?void 0:r.removedSamplesForAcceleration)||0);e.audioSamples=n,e.audioConcealmentEvents=a,e.audioConcealedSamples=c,e.audioConcealment=d?d/o:0,e.audioSilentConcealment=l?l/o:0,e.audioAcceleration=u?u/o:0,e.audioDeceleration=p?p/o:0}}(g,i,h)}})),o._oldReport=s,Object.keys(o.previousSSRCs).filter((e=>!o.currentSSRCs[e])).forEach((t=>{const r=o.previousSSRCs[t];if(r){const i=e.statsByView[r];i&&Object.values(i.tracks).forEach((e=>{e.ssrcs[t]&&delete e.ssrcs[t]}))}}))})),xf(e.statsByView,e.lastUpdateTime),Object.entries((null==a?void 0:a.candidatePairs)||{}).forEach((([t,r])=>{const i=r.lastRtcStatsTime===e.lastUpdateTime;r.active=i,i||(r.state="old/inactive",r.inactiveFromTime?e.lastUpdateTime-r.inactiveFromTime>4e3&&delete a.candidatePairs[t]:r.inactiveFromTime=e.lastUpdateTime)})),i)return e.statsByView;e.subscriptions.forEach((r=>{var i;return null===(i=r.onUpdatedStats)||void 0===i?void 0:i.call(r,e.statsByView,t)}))}catch(r){t.warn(r),e.numFailedStatsReports++,Rf.sendEvent("collectStatsFailed",{name:null==r?void 0:r.name,cause:null==r?void 0:r.cause,message:null==r?void 0:r.message})}e.nextTimeout=setTimeout(s,r)}))}const jf={};function Af(e,t=jf,r=window.document){e.forEach((({hostnamePattern:e,token:i})=>{const s=`${e}-${i}`;if(!t[s]&&e.test(r.location.hostname)){const e=r.createElement("meta");e.httpEquiv="origin-trial",e.content=i,r.head.append(e),t[s]=!0}}))}const Nf={sampleRate:1,originTrials:[{hostnamePattern:/hereby\.dev/,token:"AkSNPHJw6EK08X0QU7kORnK9NABzRLAC7dqfXOwk5JwFAQG4Ey7WxLXxsnhieCgC1QHUdevE2EFICy7uBGDANwUAAABqeyJvcmlnaW4iOiJodHRwczovL2hlcmVieS5kZXY6NDQ0MyIsImZlYXR1cmUiOiJDb21wdXRlUHJlc3N1cmVfdjIiLCJleHBpcnkiOjE3MTY5NDA3OTksImlzU3ViZG9tYWluIjp0cnVlfQ=="},{hostnamePattern:/whereby\.com/,token:"Asc2wu8KpSx648i932NICteQDFcB05yl2QUUSHD7AQo8JGP2Fp6FF91TvYVJBsKGzLMH349rysPw5q9tqPC/PAUAAABqeyJvcmlnaW4iOiJodHRwczovL3doZXJlYnkuY29tOjQ0MyIsImZlYXR1cmUiOiJDb21wdXRlUHJlc3N1cmVfdjIiLCJleHBpcnkiOjE3MTY5NDA3OTksImlzU3ViZG9tYWluIjp0cnVlfQ=="}]};const Bf={currentMonitor:null,getClients:()=>[],lastUpdateTime:0,statsByView:{},subscriptions:[],numFailedStatsReports:0},Ff={interval:2e3,logger:new vf},$f=()=>{var e;return null===(e=Bf.currentMonitor)||void 0===e?void 0:e.getUpdatedStats()};function Vf(e,{interval:t,logger:r}){const i=Lf.bind(null,e,{interval:t,logger:r});let s;try{s=function(e,{sampleRate:t,originTrials:r}=Nf,i=globalThis.window){let s;if(Af(r),"PressureObserver"in i)return s=new i.PressureObserver(e,{sampleRate:t}),s.observe("cpu",{sampleInterval:1e3*t}),{stop:()=>{s.unobserve("cpu")}}}((t=>e.lastPressureObserverRecord=t.pop()))}catch(e){r.warn("Failed to observe CPU pressure",e)}return setTimeout(i,t),{getUpdatedStats:()=>i(!0),stop:()=>{clearTimeout(e.nextTimeout),s&&s.stop()}}}const Uf=()=>{let e=ln.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e},zf="[a-fA-F\\d:]",qf=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${zf})|(?<=${zf})(?=\\s|$))`:"",Gf="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",Hf="[a-fA-F\\d]{1,4}",Wf=`\n(?:\n(?:${Hf}:){7}(?:${Hf}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${Hf}:){6}(?:${Gf}|:${Hf}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${Hf}:){5}(?::${Gf}|(?::${Hf}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${Hf}:){4}(?:(?::${Hf}){0,1}:${Gf}|(?::${Hf}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${Hf}:){3}(?:(?::${Hf}){0,2}:${Gf}|(?::${Hf}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${Hf}:){2}(?:(?::${Hf}){0,3}:${Gf}|(?::${Hf}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${Hf}:){1}(?:(?::${Hf}){0,4}:${Gf}|(?::${Hf}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${Hf}){0,5}:${Gf}|(?::${Hf}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),Kf=new RegExp(`(?:^${Gf}$)|(?:^${Wf}$)`),Jf=new RegExp(`^${Gf}$`),Qf=new RegExp(`^${Wf}$`),Zf=e=>e&&e.exact?Kf:new RegExp(`(?:${qf(e)}${Gf}${qf(e)})|(?:${qf(e)}${Wf}${qf(e)})`,"g");Zf.v4=e=>e&&e.exact?Jf:new RegExp(`${qf(e)}${Gf}${qf(e)}`,"g"),Zf.v6=e=>e&&e.exact?Qf:new RegExp(`${qf(e)}${Wf}${qf(e)}`,"g");const Yf={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},Xf={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},eg={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},tg={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},rg={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L2T2_KEY",maxBitrate:8e5}]},ig={encodings:[{}]},sg={encodings:[{maxBitrate:6e5,maxFramerate:2}]},ng={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},ag={encodings:[{dtx:!0}]},og=(e,t,r)=>{const{lowDataModeEnabled:i,simulcastScreenshareOn:s,vp9On:n,lowBandwidth:a}=r;return"audio"===e?Yf:t?a&&!n?sg:n?ag:s?ng:ig:a?n?rg:eg:n?tg:i?eg:Xf},cg=57600,dg=2.6041666666666665,lg=921600,pg=1.0850694444444444;const ug="fetch_mediaserver_config",hg="start_screenshare",mg="stop_screenshare",fg="audio_enabled",gg="client_left",vg="mediaserver_config",_g="new_client",bg="screenshare_started",yg="screenshare_stopped",Sg="room_joined",wg="video_enabled",Cg="ice_candidate",Rg="ice_endofcandidates",Tg="ready_to_receive_offer",kg="sdp_answer",Pg="sdp_offer",Dg="pending_client_left",Ig="media_quality_changed",Eg=new vf;class Og extends Eu{constructor(e){super(),this.reconnectThresholdInMs=0,this._socket=e,this._clients={},this._signalDisconnectTime=void 0,this.rtcManager=void 0,this.metrics={roomJoinedLate:0,pendingClientCanceled:0,evaluationFailed:0,roomJoined:0},e.on("disconnect",(()=>{this._signalDisconnectTime=Date.now()})),e.on(Sg,(e=>this._onRoomJoined(e))),e.on(_g,(e=>this._onNewClient(e))),e.on(gg,(e=>this._onClientLeft(e))),e.on(Dg,(e=>this._onPendingClientLeft(e))),e.on(fg,(e=>this._onAudioEnabled(e))),e.on(wg,(e=>this._onVideoEnabled(e))),e.on(bg,(e=>this._onScreenshareChanged(e,!0))),e.on(yg,(e=>this._onScreenshareChanged(e,!1)))}_onRoomJoined(e){var t,r;return _f(this,void 0,void 0,(function*(){if(this.reconnectThresholdInMs=.8*(e.disconnectTimeout||0),!(null===(t=e.room)||void 0===t?void 0:t.clients))return void this.emit(Sg,e);if(!e.selfId)return void this.emit(Sg,e);const i=null===(r=e.room.clients.find((t=>e.selfId===t.id)))||void 0===r?void 0:r.deviceId;if(!i)return void this.emit(Sg,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave))),void this.emit(Sg,e);const s=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>s)return this._resetClientState(e),this.emit(Sg,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave)));const n=yield $f();e.room.clients.forEach((t=>{var r;try{if(t.id===e.selfId)return;if(!this._clients[t.id])return void this._addClientToState(t);if(!(null===(r=this.rtcManager)||void 0===r?void 0:r.hasClient(t.id)))return;if(this._hasClientStateChanged({clientId:t.id,webcam:t.isVideoEnabled,mic:t.isAudioEnabled,screenShare:t.streams.length>1}))return;if(this._wasClientSendingMedia(t.id)&&!this._isClientMediaActive(n,t.id))return;t.mergeWithOldClientState=!0}catch(e){Eg.error("Failed to evaluate if we should merge client state %o",e),this.metrics.evaluationFailed++}})),e.room.clients.forEach((e=>{e.isPendingToLeave&&this._onPendingClientLeft({clientId:e.id})})),this.metrics.roomJoined++,this.emit(Sg,e)}))}_onClientLeft(e){var t;const{clientId:r}=e,i=this._clients[r];i&&(clearTimeout(i.timeout),delete this._clients[r]),null===(t=this.rtcManager)||void 0===t||t.disconnect(r,null,e.eventClaim),this.emit(gg,e)}_onPendingClientLeft(e){const{clientId:t}=e,r=this._clients[t];r?r.isPendingToLeave||(r.isPendingToLeave=!0,this._wasClientSendingMedia(t)&&(r.checkActiveMediaAttempts=0,this._abortIfNotActive(e))):Eg.warn(`client ${t} not found`)}_onNewClient(e){const{client:{id:t,deviceId:r}}=e,i=this._clients[t];if(i&&i.isPendingToLeave)return clearTimeout(i.timeoutHandler),i.isPendingToLeave=!1,void this.metrics.pendingClientCanceled++;this._getPendingClientsByDeviceId(r).forEach((e=>{clearTimeout(e.timeoutHandler),e.isPendingToLeave=void 0,this.emit(gg,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(_g,e)}_abortIfNotActive(e){return _f(this,void 0,void 0,(function*(){const{clientId:t}=e;let r=this._clients[t];if(!(null==r?void 0:r.isPendingToLeave))return;if(r.checkActiveMediaAttempts++,r.checkActiveMediaAttempts>3)return;(yield this._checkIsActive(t))?r.timeoutHandler=setTimeout((()=>this._abortIfNotActive(e)),500):(r=this._clients[t],(null==r?void 0:r.isPendingToLeave)&&(clearTimeout(r.timeoutHandler),delete this._clients[t],this.emit(gg,e)))}))}_checkIsActive(e){return _f(this,void 0,void 0,(function*(){const t=yield $f();return this._isClientMediaActive(t,e)}))}_isClientMediaActive(e,t){const r=null==e?void 0:e[t];let i=!1;return r&&Object.entries(r.tracks).forEach((([e,t])=>{"probator"!==e&&Object.values(t.ssrcs).forEach((e=>{(e.bitrate||0)>0&&(i=!0)}))})),i}_onAudioEnabled(e){const{clientId:t,isAudioEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isAudioEnabled:r})}_onVideoEnabled(e){const{clientId:t,isVideoEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isVideoEnabled:r})}_onScreenshareChanged(e,t){const{clientId:r}=e;this._clients[r]=Object.assign(Object.assign({},this._clients[r]||{}),{isScreenshareEnabled:t})}_hasClientStateChanged({clientId:e,webcam:t,mic:r,screenShare:i}){const s=this._clients[e];if(!s)throw new Error(`Client ${e} not found in ReconnectManager state`);return t!==s.isVideoEnabled||(r!==s.isAudioEnabled||i!==s.isScreenshareEnabled)}_addClientToState(e){this._clients[e.id]=Object.assign(Object.assign({},this._clients[e.id]||{}),{isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled,isScreenshareEnabled:e.streams.length>1,deviceId:e.deviceId,isPendingToLeave:e.isPendingToLeave,clientId:e.id})}_wasClientSendingMedia(e){const t=this._clients[e];if(!t)throw new Error(`Client ${e} not found in ReconnectManager state`);return t.isAudioEnabled||t.isVideoEnabled||t.isScreenshareEnabled}_getPendingClientsByDeviceId(e){return Object.values(this._clients).filter((t=>t.deviceId===e&&t.isPendingToLeave))}_resetClientState(e){this._clients={},e.room.clients.forEach((t=>{t.id!==e.selfId&&this._addClientToState(t)}))}}var Mg;const xg=null!==(Mg=Zs.default)&&void 0!==Mg?Mg:Zs;class Lg{constructor(e,t,r=!1){this._wasConnectedUsingWebsocket=!1,this._reconnectManager=null,this._socket=im(e,Object.assign({path:"/protocol/socket.io/v4",randomizationFactor:.5,reconnectionDelay:250,reconnectionDelayMax:5e3,timeout:5e3,transports:["websocket"],withCredentials:!0},t)),this._socket.io.on("reconnect",(()=>{this._socket.sendBuffer=[]})),this._socket.io.on("reconnect_attempt",(()=>{this._wasConnectedUsingWebsocket?(this._socket.io.opts.transports=["websocket"],"safari"!==xg.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new Og(this._socket)),this._socket.on("connect",(()=>{"websocket"===this.getTransport()&&(this._wasConnectedUsingWebsocket=!0,this.noopKeepaliveInterval||(this.noopKeepaliveInterval=setInterval((()=>{try{this._socket.connected&&this._socket.io.engine.sendPacket("noop")}catch(e){}}),2e3)))})),this._socket.on("disconnect",(()=>{this.disconnectTimestamp=Date.now(),this.noopKeepaliveInterval&&(clearInterval(this.noopKeepaliveInterval),this.noopKeepaliveInterval=null)}))}setRtcManager(e){this._reconnectManager&&(this._reconnectManager.rtcManager=e)}connect(){this.isConnected()||this.isConnecting()||this._socket.open()}disconnect(){this._socket.disconnect()}disconnectOnConnect(){this._socket.once("connect",(()=>{this._socket.disconnect()}))}emit(e,...t){this._socket.emit.apply(this._socket,arguments)}emitIfConnected(e,t){this.isConnected()&&this.emit(e,t)}getTransport(){return this._socket&&this._socket.io&&this._socket.io.engine&&this._socket.io.engine.transport&&this._socket.io.engine.transport.name}getManager(){return this._socket.io}isConnecting(){return this._socket&&this._socket.connecting}isConnected(){return this._socket&&this._socket.connected}on(e,t){const r=[Sg,gg,_g];return this._reconnectManager&&r.includes(e)?this._interceptEvent(e,t):(this._socket.on(e,t),()=>{this._socket.off(e,t)})}once(e,t){this._socket.once(e,t)}off(e,t){this._socket.off(e,t)}_interceptEvent(e,t){return this._reconnectManager&&this._reconnectManager.on(e,t),()=>{this._reconnectManager&&this._reconnectManager.removeListener(e,t)}}getGlitchFreeMetrics(){var e;return null===(e=this._reconnectManager)||void 0===e?void 0:e.metrics}getReconnectThreshold(){var e;return null===(e=this._reconnectManager)||void 0===e?void 0:e.reconnectThresholdInMs}}const jg=[{pattern:/^(?:([^.]+)[.])?(server:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?(localhost:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?((\d+[.]){3}:?\d*)$/,separator:"."},{pattern:/^(?:([^.]+)-)?(ip-[^.]*[.](?:hereby[.]dev|rfc1918[.]disappear[.]at)(?::\d+|))$/,separator:"-"},{pattern:/^(?:([^.]+)[.])?((:?[^.]+[.]){1,}[^.]+)$/,separator:"."}];!function({host:e="whereby.com",protocol:t="https:"}={}){let r="",i=e,s=".";for(const{separator:t,pattern:n}of jg){const a=n.exec(e);if(a){r=a[1]||"",i=a[2],s=t;break}}const n=r?`${r}${s}${i}`:i}(window&&window.location);const Ag=new vf,Ng={print:(...e)=>console.debug(e[0],...e.slice(1))};Ag.withDebugLogger(Ng);const Bg=new class{constructor(){this.BEGIN_PACKET_LOSS_PERIOD_THRESHOLD=.04,this.END_PACKET_LOSS_PERIOD_THRESHOLD=.005,this.INTERVAL_DIFF_THRESHOLD_MS=4e3,this.STALE_MEASUREMENT_TIMEOUT_MS=1e4,this.MINIMUM_INTERVAL_MS=3e4,this.ssrcsHistory=new Map,this.staleMeasurementTimeouts=new Map}addPacketLossMeasurement(e,t,r){this.handleStaleMeasurements(e);const i=t>this.BEGIN_PACKET_LOSS_PERIOD_THRESHOLD;let s=this.ssrcsHistory.get(e);if(!s)return s={id:e,hasActivePacketLoss:i,currPeriod:i?{begin:r}:void 0,hasPeriodicPacketLoss:!1},void this.ssrcsHistory.set(e,s);s.hasActivePacketLoss?t<this.END_PACKET_LOSS_PERIOD_THRESHOLD&&(this.endPacketLossPeriod(s,r),s.prevIntervalInMs&&s.prevIntervalInMs<this.MINIMUM_INTERVAL_MS&&this.ssrcsHistory.delete(e)):i&&(s.hasActivePacketLoss=!0,s.currPeriod={begin:r})}hasPeriodicPacketLoss(e,t){const r=this.ssrcsHistory.get(e);return r&&this.prevIntervalExceeded(r,t)?(this.ssrcsHistory.delete(r.id),!1):(null==r?void 0:r.hasPeriodicPacketLoss)||!1}prevIntervalExceeded(e,t){if(e.prevPeriod&&e.prevIntervalInMs){return t>this.calculatePeriodCenterTimestamp(e.prevPeriod)+e.prevIntervalInMs+this.INTERVAL_DIFF_THRESHOLD_MS}return!1}handleStaleMeasurements(e){const t=this.staleMeasurementTimeouts.get(e);t&&clearTimeout(t),this.staleMeasurementTimeouts.set(e,setTimeout((()=>{Ag.debug("handleStaleMeasurements() [measurements invalid for ssrc: %s]",e),this.ssrcsHistory.delete(e)}),this.STALE_MEASUREMENT_TIMEOUT_MS))}endPacketLossPeriod(e,t){if(Ag.debug("endPacketLossPeriod() [ssrcId: %s, timestamp: %s]",e.id,t),!e.currPeriod)throw new Error("No packet loss period for "+e.id);e.prevPeriod?(e.currPeriod.end=t,this.addNewPacketLossInterval(e)):e.prevPeriod=Object.assign(Object.assign({},e.currPeriod),{end:t}),delete e.currPeriod,e.hasActivePacketLoss=!1}addNewPacketLossInterval(e){if(Ag.debug("addNewPacketLossInterval() [ssrcId: %s, prevIntervalInMs: %s]",e.id,e.prevIntervalInMs),!e.currPeriod||!e.prevPeriod)throw new Error("missing period timestamps");const t=this.calculatePeriodCenterTimestamp(e.prevPeriod),r=this.calculatePeriodCenterTimestamp(e.currPeriod)-t;if(e.prevIntervalInMs){const t=Math.abs(e.prevIntervalInMs-r);e.hasPeriodicPacketLoss=t<this.INTERVAL_DIFF_THRESHOLD_MS,Ag.debug("addNewPacketLossInterval() [hasPeriodicPacketLoss: %s, intervalDiffInMs: %s]",t<this.INTERVAL_DIFF_THRESHOLD_MS,t)}e.prevIntervalInMs=r,e.prevPeriod=e.currPeriod}calculatePeriodCenterTimestamp(e){if(!e.end)throw new Error("Missing period end timestamp");return e.begin+(e.end-e.begin)/2}},Fg=[{id:"desync",enabled:({client:e,track:t,stats:r})=>!e.isLocalClient&&"audio"===(null==t?void 0:t.kind)&&"object"==typeof(null==r?void 0:r.tracks)&&Object.keys(r.tracks).length>1,check:({stats:e})=>{if(!e)return!1;const t={audio:0,video:0};Object.values(e.tracks).flatMap((e=>Object.values(e.ssrcs))).forEach((e=>{"audio"===e.kind&&e.jitter&&e.jitter>t.audio&&(t.audio=e.jitter),"video"===e.kind&&e.jitter&&e.jitter>t.video&&(t.video=e.jitter)}));return Math.abs(1e3*t.audio-1e3*t.video)>500}},{id:"no-track",enabled:()=>!0,check:({client:e,clients:t,kind:r,track:i})=>{if(!i&&!e.isLocalClient&&"video"===r){const e=t.find((e=>e.isLocalClient));if(e)return!e.isAudioOnlyModeEnabled}return!i}},{id:"ended-track",enabled:({track:e})=>!!e,check:({track:e})=>"ended"===(null==e?void 0:e.readyState)},{id:"no-track-stats",enabled:({hasLiveTrack:e})=>e,check:({client:e,clients:t,kind:r,ssrcs:i})=>{if(0===i.length&&!e.isLocalClient&&"video"===r){const e=t.find((e=>e.isLocalClient));if(e)return!e.isAudioOnlyModeEnabled}return 0===i.length}},{id:"dry-track",enabled:({hasLiveTrack:e,ssrcs:t})=>!(!e||!t),check:({client:e,clients:t,ssrcs:r})=>{let i=!1;if(r.forEach((e=>{i=i||((null==e?void 0:e.bitrate)||0)>0})),!i&&e.isLocalClient){const e=t.filter((e=>!e.isLocalClient));if(e.length>0)return!e.every((e=>e.isAudioOnlyModeEnabled))}return!i}},{id:"low-layer0-bitrate",enabled:({hasLiveTrack:e,ssrc0:t,kind:r,client:i})=>e&&"video"===r&&!!t&&!!(null==t?void 0:t.height)&&!i.isPresentation,check:({ssrc0:e})=>!!(null==e?void 0:e.bitrate)&&(((null==e?void 0:e.height)||0)<200&&e.bitrate<3e4)},{id:"quality-limitation-bw",enabled:({hasLiveTrack:e,stats:t,client:r,kind:i})=>e&&r.isLocalClient&&"video"===i&&!!t,check:({stats:e})=>!!e&&!!Object.values(e.tracks).find((e=>Object.values(e.ssrcs).find((e=>"bandwidth"===e.qualityLimitationReason))))},{id:"quality-limitation-cpu",enabled:({hasLiveTrack:e,stats:t,client:r,kind:i})=>e&&r.isLocalClient&&"video"===i&&!!t,check:({stats:e})=>!!e&&!!Object.values(e.tracks).find((e=>Object.values(e.ssrcs).find((e=>"cpu"===e.qualityLimitationReason))))},{id:"high-plirate",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&!!t&&!!t.height,check:({ssrc0:e})=>((null==e?void 0:e.pliRate)||0)>2},{id:"extreme-plirate",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&!!t&&!!t.height,check:({ssrc0:e})=>((null==e?void 0:e.pliRate)||0)>5},{id:"high-packetloss",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&!!t&&"in"===t.direction,check:({ssrc0:e})=>((null==e?void 0:e.lossRatio)||0)>.02},{id:"extreme-packetloss",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&!!t&&"in"===t.direction,check:({ssrc0:e})=>((null==e?void 0:e.lossRatio)||0)>.1},{id:"high-packetloss",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&!!t&&"out"===t.direction,check:({ssrc0:e})=>((null==e?void 0:e.fractionLost)||0)>.02},{id:"extreme-packetloss",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&!!t&&"out"===t.direction,check:({ssrc0:e})=>((null==e?void 0:e.fractionLost)||0)>.1},{id:"fps-below-20",enabled:({hasLiveTrack:e,ssrc0:t,kind:r,client:i})=>e&&!!t&&!!t.height&&"video"===r&&!i.isPresentation,check:({ssrc0:e})=>((null==e?void 0:e.height)||0)>180&&((null==e?void 0:e.fps)||0)<20},{id:"fps-below-10",enabled:({hasLiveTrack:e,ssrc0:t,kind:r,client:i})=>e&&!!t&&!!t.height&&"video"===r&&!i.isPresentation,check:({ssrc0:e})=>((null==e?void 0:e.fps)||0)<10},{id:"bad-network",enabled:({hasLiveTrack:e,ssrcs:t})=>e&&t.length>0,check:({client:e,clients:t,kind:r,ssrcs:i})=>{if(!i.some((e=>((null==e?void 0:e.bitrate)||0)>0))&&e.isLocalClient&&"video"===r){const e=t.filter((e=>!e.isLocalClient));if(e.length>0)return!e.every((e=>e.isAudioOnlyModeEnabled))}const s=i[0];return!!s&&(0===s.bitrate||(s.lossRatio||0)>.03||(s.fractionLost||0)>.03||!e.isPresentation&&"video"===r&&!!(null==s?void 0:s.bitrate)&&s.bitrate<3e4||"in"===s.direction&&!!s.pliRate&&s.pliRate>2)}},{id:"periodic-packet-loss",enabled:({client:e,hasLiveTrack:t,ssrc0:r})=>e.isLocalClient&&t&&!!(null==r?void 0:r.ssrc)&&"out"===(null==r?void 0:r.direction)&&((null==r?void 0:r.bitrate)||0)>0,check:({ssrc0:e})=>!(!e||!e.ssrc)&&(Bg.addPacketLossMeasurement(e.ssrc,e.fractionLost||0,Date.now()),Bg.hasPeriodicPacketLoss(e.ssrc,Date.now()))},{id:"cpu-pressure-serious",global:!0,enabled:({stats:e})=>{var t;return"cpu"===(null===(t=null==e?void 0:e.pressure)||void 0===t?void 0:t.source)},check:({stats:e})=>{var t;return"serious"===(null===(t=null==e?void 0:e.pressure)||void 0===t?void 0:t.state)}},{id:"cpu-pressure-critical",global:!0,enabled:({stats:e})=>{var t;return"cpu"===(null===(t=null==e?void 0:e.pressure)||void 0===t?void 0:t.source)},check:({stats:e})=>{var t;return"critical"===(null===(t=null==e?void 0:e.pressure)||void 0===t?void 0:t.state)}},{id:"concealed",enabled:({hasLiveTrack:e,ssrc0:t,kind:r})=>e&&!!t&&"audio"===r,check:({ssrc0:e})=>!!(null==e?void 0:e.bitrate)&&"in"===(null==e?void 0:e.direction)&&((null==e?void 0:e.audioLevel)||0)>=.001&&((null==e?void 0:e.audioConcealment)||0)>=.1},{id:"decelerated",enabled:({hasLiveTrack:e,ssrc0:t,kind:r})=>e&&!!t&&"audio"===r,check:({ssrc0:e})=>!!(null==e?void 0:e.bitrate)&&"in"===e.direction&&(e.audioLevel||0)>=.001&&((null==e?void 0:e.audioDeceleration)||0)>=.1},{id:"accelerated",enabled:({hasLiveTrack:e,ssrc0:t,kind:r})=>e&&!!t&&"audio"===r,check:({ssrc0:e})=>!!(null==e?void 0:e.bitrate)&&"in"===e.direction&&(e.audioLevel||0)>=.001&&(e.audioAcceleration||0)>=.1}];let $g=[],Vg=null;const Ug=[{id:"bitrate",enabled:({hasLiveTrack:e,track:t,ssrc0:r})=>e&&!!t&&!!r,value:({trackStats:e})=>Object.values((null==e?void 0:e.ssrcs)||{}).reduce(((e,t)=>e+((null==t?void 0:t.bitrate)||0)),0)},{id:"pixelrate",enabled:({hasLiveTrack:e,track:t,ssrc0:r,kind:i})=>e&&"video"===i&&!!t&&!!r&&!!r.height,value:({trackStats:e})=>Object.values((null==e?void 0:e.ssrcs)||{}).reduce(((e,t)=>e+(t.fps||0)*(t.width||0)*(t.height||0)),0)},{id:"height",enabled:({hasLiveTrack:e,track:t,trackStats:r,ssrc0:i,kind:s})=>e&&"video"===s&&!!r&&!!t&&!!i&&!!i.height,value:({trackStats:e})=>Object.values((null==e?void 0:e.ssrcs)||{}).reduce(((e,t)=>Math.max(e,t.fps>0?t.height:0)),0)},{id:"sourceHeight",enabled:({hasLiveTrack:e,track:t,ssrc0:r,kind:i})=>e&&"video"===i&&!!t&&!!r&&!!r.sourceHeight&&"out"===r.direction,value:({ssrc0:e})=>null==e?void 0:e.sourceHeight},{id:"packetloss",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&!!t&&!!t.bitrate,value:({ssrc0:e})=>("in"===(null==e?void 0:e.direction)?e.lossRatio:null==e?void 0:e.fractionLost)||0},{id:"jitter",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&!!t&&!!t.bitrate&&"in"===t.direction,value:({ssrc0:e})=>null==e?void 0:e.jitter},{id:"mos",enabled:({hasLiveTrack:e,ssrc0:t})=>e&&!!t&&!!t.bitrate&&"out"===t.direction,value:({ssrc0:e})=>{const t=((null==e?void 0:e.roundTripTime)||0)+2*((null==e?void 0:e.jitter)||0)+10;let r=t<160?93.2-t/40:93.2-(t-120)/10;r-=2.5*(100*((null==e?void 0:e.fractionLost)||0));return 1+.035*r+7e-6*r*(r-60)*(100-r)}},{id:"rendered",value:()=>1},{id:"active",value:({hasLiveTrack:e,track:t,ssrc0:r})=>e&&t&&r?1:0},{id:"cpu-pressure",global:!0,enabled:({stats:e})=>{var t;return"cpu"===(null===(t=null==e?void 0:e.pressure)||void 0===t?void 0:t.source)},value:({stats:e})=>{var t;return{nominal:.25,fair:.5,serious:.75,critical:1}[(null===(t=null==e?void 0:e.pressure)||void 0===t?void 0:t.state)||""]||0}},{id:"turn-usage",global:!0,enabled:({stats:e})=>!!Object.values((null==e?void 0:e.candidatePairs)||{}).length,value:({stats:e})=>Object.values((null==e?void 0:e.candidatePairs)||{}).some((e=>e.usingTurn))},{id:"turn-tls-usage",global:!0,enabled:({stats:e})=>!!Object.values((null==e?void 0:e.candidatePairs)||{}).length,value:({stats:e})=>Object.values((null==e?void 0:e.candidatePairs)||{}).some((e=>"tls"===e.turnProtocol))},{id:"concealment",enabled:({hasLiveTrack:e,ssrc0:t,kind:r})=>e&&!!t&&!!t.bitrate&&"in"===t.direction&&"audio"===r&&(t.audioLevel||0)>=.001,value:({ssrc0:e})=>null==e?void 0:e.audioConcealment},{id:"deceleration",enabled:({hasLiveTrack:e,ssrc0:t,kind:r})=>e&&!!t&&!!t.bitrate&&"in"===t.direction&&"audio"===r&&(t.audioLevel||0)>=.001,value:({ssrc0:e})=>null==e?void 0:e.audioDeceleration},{id:"acceleration",enabled:({hasLiveTrack:e,ssrc0:t,kind:r})=>e&&!!t&&!!t.bitrate&&"in"===t.direction&&"audio"===r&&(t.audioLevel||0)>=.001,value:({ssrc0:e})=>null==e?void 0:e.audioAcceleration},{id:"qpf",enabled:({hasLiveTrack:e,track:t,ssrc0:r,kind:i})=>e&&"video"===i&&!!t&&!!r&&!!r.height,value:({trackStats:e})=>Object.values((null==e?void 0:e.ssrcs)||{}).reduce(((e,t)=>e+(t.qpf||0)),0)}];let zg,qg,Gg;const Hg=()=>{zg={},qg={},Gg={aggregated:{issues:qg,metrics:zg}}};function Wg(e,t){Object.values(zg).forEach((e=>{e.curTicks=0,e.curSum=0,e.curMax=0,e.curMin=0,e.curAvg=0})),Object.values(qg).forEach((e=>{e.curTicks=0,e.curRegistered=0,e.active=!1})),t.find((e=>!e.isLocalClient))&&(t.forEach((r=>{const i=e[r.id];["video","audio","global"].forEach((e=>{var s,n;if(("global"!==e||r.isPresentation)&&!(null===(s=r[e])||void 0===s?void 0:s.enabled))return;if("global"===e&&!r.isLocalClient)return;let a=Gg[r.id];a||(a={issues:{},metrics:{}},Gg[r.id]=a);const o=null===(n=r[e])||void 0===n?void 0:n.track,c=!!o&&"ended"!==o.readyState,d=o&&i&&i.tracks[o.id],l=d?Object.values(d.ssrcs).sort(((e,t)=>(e.height||Number.MAX_SAFE_INTEGER)-(t.height||Number.MAX_SAFE_INTEGER))):[],p=l[0],u={client:r,clients:t,kind:e,track:o,trackStats:d,stats:i,hasLiveTrack:c,ssrc0:p,ssrcs:l,issues:a.issues,metrics:a.metrics},h="global"===e?"global":`${r.isLocalClient?"loc":"rem"}-${r.isPresentation?"pres":"cam"}-${e}`;Ug.forEach((t=>{if(t.global&&"global"!==e)return;if(!t.global&&"global"===e)return;if(!t.enabled||t.enabled(u)){const e=`${h}-${t.id}`;let r=a.metrics[e];const i=t.value(u);r||(r={ticks:0,sum:0,avg:0,min:i,max:i},a.metrics[e]=r),r.ticks++,r.sum+=i,r.min=Math.min(r.min,i),r.max=Math.max(r.max,i),r.avg=r.sum/r.ticks;let s=zg[e];s||(s={ticks:0,sum:0,min:i,max:i,avg:0,curTicks:0,curMin:0,curMax:0,curAvg:0,curSum:0,totTicks:0,totMin:0,totMax:0,totAvg:0,totSum:0},zg[e]=s),s.ticks++,s.sum+=i,s.min=Math.min(s.min,i),s.max=Math.max(s.max,i),s.avg=s.sum/s.ticks,0===s.curTicks?(s.curMax=i,s.curMin=i,s.curSum=i):(s.curMax=Math.max(s.curMax,i),s.curMin=Math.min(s.curMin,i),s.curSum+=i),s.curTicks++}})),Fg.forEach((t=>{if(t.global&&"global"!==e)return;if(!t.global&&"global"===e)return;const r=`${h}-${t.id}`,i=t.enabled(u);let s=a.issues[r],n=qg[r];if(i){s||(s={active:!1,ticks:0,registered:0,initial:0,periods:0,current:0,longest:0},a.issues[r]=s),s.ticks++,n||(n={active:!1,ticks:0,registered:0,initial:0,curTicks:0,curRegistered:0},qg[r]=n),n.ticks++,n.curTicks++;t.check(u)?(s.registered++,s.current++,s.active||(s.active=!0,s.periods++),s.ticks===s.initial+1&&(s.initial++,n.initial++),s.current>s.longest&&(s.longest=s.current),n.active=!0,n.registered++,n.curRegistered++):(s.active=!1,s.current=0)}else s&&(s.active=!1,s.current=0)}))}))})),Object.values(zg).forEach((e=>{e.curTicks&&(e.curAvg=e.curSum/e.curTicks,0===e.totTicks&&(e.totMin=e.curSum,e.totMax=e.curSum),e.totTicks++,e.totSum+=e.curSum,e.totMin=Math.min(e.totMin,e.curSum),e.totMax=Math.max(e.totMax,e.curSum),e.totAvg=e.totSum/e.totTicks)})),Object.values(qg).forEach((e=>{e.curTicks})),$g.forEach((r=>{var i;return null===(i=r.onUpdatedIssues)||void 0===i?void 0:i.call(r,Gg,e,t)})))}function Kg(e){return $g.push(e),Vg||(Vg=function(e,t=Ff,r=Bf){return r.subscriptions.push(e),r.currentMonitor||(r.currentMonitor=Vf(r,t)),{stop(){var t;r.subscriptions=r.subscriptions.filter((t=>t!==e)),r.subscriptions.length||(null===(t=r.currentMonitor)||void 0===t||t.stop(),r.currentMonitor=null)}}}({onUpdatedStats:Wg}).stop),{stop(){$g=$g.filter((t=>t!==e)),$g.length||(null==Vg||Vg(),Vg=null,Hg())}}}Hg();class Jg{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?Jg._handleRequest(t):t.response?Jg._handleResponse(t):t.message?Jg._handleMessage(t):void 0}static _handleRequest(e){const t={request:!0};if("string"==typeof e.method&&"number"==typeof e.id)return t.id=e.id,t.method=e.method,t.data=e.data||{},t}static _handleResponse(e){const t={response:!0};if("number"==typeof e.id)return t.id=e.id,e.ok?(t.ok=!0,t.data=e.data||{}):(t.ok=!1,t.errorCode=e.errorCode,t.errorReason=e.errorReason),t}static _handleMessage(e){const t={message:!0};if("string"==typeof e.method)return t.method=e.method,t.data=e.data||{},t}static createRequest(e,t){return{request:!0,id:Math.round(1e7*Math.random()),method:e,data:t||{}}}static createSuccessResponse(e,t){return{response:!0,id:e.id,ok:!0,data:t||{}}}static createErrorResponse(e,t,r){return{response:!0,id:e.id,errorCode:t,errorReason:r}}static createMessage(e,t){return{message:!0,method:e,data:t||{}}}}const Qg=new vf;class Zg extends Eu{constructor(e,t="whereby-sfu#v4"){super(),this.socket=null,this.wsUrl=e,this.protocol=t,this.sents=new Map,this._setupSocket()}_setupSocket(){this.socket=new WebSocket(this.wsUrl,this.protocol),this.socket.onopen=this._onOpen.bind(this),this.socket.onmessage=this._onMessage.bind(this),this.socket.onclose=this._onClose.bind(this),this.socket.onerror=this._onError.bind(this)}_tearDown(){null!==this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.sents.forEach((e=>e.close())),this.emit("close"))}close(){var e;null===(e=this.socket)||void 0===e||e.close()}_onOpen(){Qg.info("Connected"),this.emit("open")}_onMessage(e){const t=Jg.parse(e.data);Qg.info("Received message",t),(null==t?void 0:t.response)?this._handleResponse(t):(null==t?void 0:t.message)&&this.emit("message",t)}_onClose(){Qg.info("Disconnected"),this._tearDown()}_onError(e){Qg.info("Error",e)}_handleResponse(e){const t=this.sents.get(e.id);if(e.ok)t.resolve(e.data);else{const r=new Error(e.errorReason);t.reject(r)}}send(e){try{this.socket&&this.socket.send(JSON.stringify(e))}catch(e){}}message(e,t={}){const r=Jg.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const i=Jg.createRequest(e,t);return this.send(i),new Promise(((e,t)=>{const s={id:i.id,method:i.method,resolve:t=>{this.sents.delete(i.id)&&(clearTimeout(s.timer),e(t))},reject:e=>{this.sents.delete(i.id)&&(clearTimeout(s.timer),t(e))},timer:setTimeout((()=>{this.sents.delete(i.id)&&t(new Error("request timeout"))}),r),close:()=>{clearTimeout(s.timer),t(new Error("transport closed"))}};this.sents.set(i.id,s)}))}}var Yg;const Xg=null!==(Yg=Zs.default)&&void 0!==Yg?Yg:Zs;const ev=400;var tv;const rv="safari"===(null!==(tv=Zs.default)&&void 0!==tv?tv:Zs).browserDetails.browser,iv=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function sv({devices:e,videoId:t,audioId:r,options:i,type:s="ideal"}){const n=e.filter((e=>"audioinput"===e.kind)),a=e.filter((e=>"videoinput"===e.kind)),o=!r||!n.some((e=>e.deviceId===r)),c=!t||!a.some((e=>e.deviceId===t)),d=function({disableAEC:e,disableAGC:t,hd:r,lax:i,lowDataMode:s,preferredDeviceIds:n,resolution:a,simulcast:o,widescreen:c}){var d,l;let p=480,u=240;r&&(p=i||rv?720:{min:360,ideal:720}),o&&(!1===r?(p=360,u=270):u=360);const h={audio:Object.assign({},n.audioId&&{deviceId:n.audioId}),video:Object.assign(Object.assign({},n.videoId?{deviceId:n.videoId}:{facingMode:"user"}),{height:s?u:p,frameRate:s&&!o?15:24})};if(i)return(null===(d=h.audio)||void 0===d?void 0:d.deviceId)||(h.audio=!0),null===(l=h.video)||void 0===l||delete l.facingMode,h;if(a){const[e,t,r]=iv(a);e&&(h.video.width={exact:e}),t&&(h.video.height={exact:t}),r&&(h.video.frameRate={exact:r}),delete h.video.facingMode}else h.video.aspectRatio=c?16/9:4/3;return t&&(h.audio.autoGainControl=!1),e&&(h.audio.echoCancellation=!1),h}(Object.assign({preferredDeviceIds:{audioId:o?null:{[s]:r},videoId:c?null:{[s]:t}}},i));return!1!==r&&n.length||delete d.audio,!1!==t&&a.length||delete d.video,d}const nv=new vf,av=/mobi/i.test(navigator.userAgent);class ov extends Error{constructor(...e){super(...e),this.name="nodevices"}}function cv(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw nv.error(`getUserMedia ${r}`),t})):Promise.reject(new ov("No provided devices"))}function dv(e,t,r,i){var s,n,a;let o={deviceId:null};return t?(o.label=t.label,t.getSettings&&(o=Object.assign(Object.assign({},o),t.getSettings())),o.deviceId?o:(t.getCapabilities&&(o.deviceId=t.getCapabilities().deviceId),o.deviceId?o:(t.label&&r&&(o.deviceId=null===(n=r.find((r=>t.label===r.label&&r.kind===e)))||void 0===n?void 0:n.deviceId),o.deviceId||(o.deviceId=null===(a=t.getConstraints())||void 0===a?void 0:a.deviceId,o.broken=1),o))):(i&&r&&(o.deviceId=null===(s=r.find((t=>t.deviceId===i&&t.kind===e)))||void 0===s?void 0:s.deviceId),o)}function lv(e,t){t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}function pv(e,{replaceStream:t,fallback:r=!0}={}){var i;return _f(this,void 0,void 0,(function*(){let s,n,a,o=null;const c=!1===e.audioId?"video":!1===e.videoId&&"audio",d=av||"video"!==c,l=sv(e),p=(e,t)=>(e.details=Object.assign({constraints:l,constraint:e.constraint||(null==t?void 0:t.constraint),newConstraints:n,fallback:r,stopTracks:d},e!==s&&{error:String(s)}),e);d&&t&&lv(t,c);try{o=yield cv(l)}catch(n){if(s=n,!r)throw p(n);if("OverconstrainedError"===n.name){a={deviceId:{videoId:null,audioId:null},width:{lax:!0},height:{lax:!0},"":{audioId:null,videoId:null,lax:!0}}[n.constraint||""]}else if("NotFoundError"===n.name){if(l.audio&&l.video){try{o=yield cv(sv(Object.assign(Object.assign({},e),{audioId:!1})))}catch(e){if("NotFoundError"!==e.name)throw p(e,n)}try{o||(o=yield cv(sv(Object.assign(Object.assign({},e),{videoId:!1}))))}catch(e){throw p(e,n)}}}else if("NotAllowedError"===n.name||"NotReadableError"===n.name||"AbortError"===n.name)if(t&&!d)lv(t,c),a=e;else if("NotAllowedError"!==n.name){try{o=yield cv(sv(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{lax:!0})})))}catch(e){nv.warn("Tried getting stream again with laxer constraints, but failed: "+(""+e))}const t=(""+n).toLowerCase(),r={audio:"audioId",video:"videoId"}[(null===(i=/(video|audio)/.exec(t))||void 0===i?void 0:i[0])||c||""];if(!o&&r)try{o=yield cv(sv(Object.assign(Object.assign({},e),{[r]:null})))}catch(e){nv.warn(`Re-tried ${r} with no constraints, but failed: ${""+e}`)}if(!o){const t=r?[r]:["videoId","audioId"];for(const r of t){try{o=yield cv(sv(Object.assign(Object.assign({},e),{[r]:!1})))}catch(e){nv.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(o)break}}}}if(a){const t=c?{audio:{videoId:!1},video:{audioId:!1}}[c]:{};n=sv(Object.assign(Object.assign(Object.assign(Object.assign({},e),a),{options:Object.assign(Object.assign({},e.options),{lax:a.lax})}),t));try{o=yield cv(n)}catch(e){throw p(e,s)}}if(!o)throw p(s);let u;return t&&(d||lv(t,c),u=function(e,t,r){const i=[];return r&&"audio"!==r||(i.push(...e.getAudioTracks()),t.getAudioTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),r&&"video"!==r||(i.push(...e.getVideoTracks()),t.getVideoTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),i.forEach((t=>{t.replaced=!0,e.removeTrack(t)})),i}(t,o,c),o=t),{error:s&&p(s),stream:o,replacedTracks:u}}))}function uv({oldDevices:e,newDevices:t,currentAudioId:r,currentVideoId:i,currentSpeakerId:s}){const n=function(e,t){const[r,i]=[e,t].map((e=>e.filter((e=>e.kind&&e.deviceId)).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.kind]:Object.assign(Object.assign({},e[t.kind]),{[t.deviceId]:t})})),{}))),s={};return e.forEach((e=>{e.kind&&e.deviceId&&(s[e.kind]||(s[e.kind]={added:{},removed:{},changed:{}}),i[e.kind]&&i[e.kind][e.deviceId]||(s[e.kind].removed[e.deviceId]=e))})),t.forEach((e=>{e.kind&&e.deviceId&&(s[e.kind]||(s[e.kind]={added:{},removed:{},changed:{}}),r[e.kind]&&r[e.kind][e.deviceId]?r[e.kind][e.deviceId].label&&r[e.kind][e.deviceId].label!==e.label&&(s[e.kind].changed[e.deviceId]=e):s[e.kind].added[e.deviceId]=e)})),s}(e,t),a={},o={};return[["audioinput",r],["videoinput",i],["audiooutput",s]].forEach((([e,r])=>{const i=n[e=e||""];if(i){if(r){if(i.removed[r]&&(a[e]={deviceId:null},"audiooutput"===e)){const r=t.find((e=>"audiooutput"===e.kind));a[e]={deviceId:null==r?void 0:r.deviceId}}i.changed[r]&&(a[e]={deviceId:r})}if(Object.keys(i.added).length){const[t]=Object.keys(i.added).slice(0,1),r=i.added[t];o[e]={deviceId:r.deviceId,label:r.label,kind:r.kind}}}})),{addedDevices:o,changedDevices:a}}var hv;const mv=null!==(hv=Zs.default)&&void 0!==hv?hv:Zs,fv=new vf,gv=mv.browserDetails.browser,vv=mv.browserDetails.version;function _v(e,t){let r=e.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/),i=t.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/);r||(r=e.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/),i=t.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/));for(let e=1;e<r.length;e++)t=t.replace(new RegExp(i[e],"g"),r[e]);return t}function bv(e){return"firefox"!==gv?e:$s.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function yv(e){return function(e,t,r=!1,i=!1){var s,n;try{const a=Uo(e);if((null===(s=null==a?void 0:a.ext)||void 0===s?void 0:s.length)&&a.ext.length>0)return e;if((null==a?void 0:a.media.length)<1)return e;const o=null==a?void 0:a.media.flatMap((e=>e.ext||[])),c=(null===(n=o.find((e=>e.uri===t)))||void 0===n?void 0:n.value)||[...new Set([0,15,...o.map((e=>e.value))])].sort(((e,t)=>e-t)).find(((e,t,r)=>e+1!==r[t+1]))+1;return a.media.forEach((e=>{var s;(r&&"audio"===e.type||i&&"video"===e.type)&&((null===(s=e.ext)||void 0===s?void 0:s.find((e=>e.uri===t)))||(Array.isArray(e.ext)?e.ext.push({value:c,uri:t}):e.ext=[{value:c,uri:t}]))})),Vo(a)}catch(e){console.error("Error during addAbsCaptureTimeExtMap: ",e)}return e}(e,"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time",!0,!0)}function Sv(e,t,r=console){const i=e.getSenders().find((e=>e.track&&"video"===e.track.kind));if(!i)return Promise.resolve();const s=i.getParameters();return s.encodings&&0===s.encodings.length?Promise.resolve():(s.encodings||(s.encodings=[{}]),0===t?delete s.encodings[0].maxBitrate:s.encodings[0].maxBitrate=1e3*t,i.setParameters(s).catch((e=>{r.error("setParameters err: ",e)})))}var wv;const Cv=null!==(wv=Zs.default)&&void 0!==wv?wv:Zs,Rv=new vf;class Tv{constructor({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:r,deprioritizeH264Encoding:i}){this.peerConnectionId=e,this.relayCandidateSeen=!1,this.serverReflexiveCandidateSeen=!1,this.publicHostCandidateSeen=!1,this.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this.pc=null,this.wasEverConnected=!1,this.connectionStatus=null,this.stats={totalSent:0,totalRecv:0},this.bandwidth=t||0,this.maximumTurnBandwidth=r,this.pending=[],this.isOperationPending=!1,this.streamIds=[],this.streams=[],this.earlyIceCandidates=[],this.afterConnected=new Promise((e=>{this.registerConnected=e})),this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._deprioritizeH264Encoding=i}setAndGetPeerConnection({clientId:e,constraints:t,peerConnectionConfig:r,shouldAddLocalVideo:i}){return this.peerConnectionConfig=r,this.shouldAddLocalVideo=i,this.clientId=e,this.pc=new RTCPeerConnection(r),this.signalingState=this.pc.signalingState,this.pc.addEventListener("signalingstatechange",(()=>{if(this.signalingState!==this.pc.signalingState&&(this.signalingState=this.pc.signalingState,"stable"===this.pc.signalingState)){this.isOperationPending=!1;const e=this.pending.shift();e&&e.apply()}})),this.pc}addStream(e){this.streamIds.push(e.id),this.streams.push(e),RTCPeerConnection.prototype.addTrack?(e.getAudioTracks().forEach((t=>{this.pc.addTrack(t,e)})),e.getVideoTracks().forEach((t=>{this.pc.addTrack(t,e)}))):this.pc.addStream(e)}addTrack(e,t){t||(t=this.streams[0]),null==t||t.addTrack(e),this.pc.addTrack(e,t)}removeTrack(e){this.streams[0].removeTrack(e);const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)}removeStream(e){for(let t=0;t<this.streamIds.length;t++)this.streamIds[t]===e.id&&(this.streamIds.splice(t,1),this.streams.splice(t,1));this.pc&&(this.pc.removeTrack?e.getTracks().forEach((e=>{const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)})):this.pc.removeStream&&this.pc.removeStream(e))}_setRemoteDescription(e){return this._deprioritizeH264Encoding&&(e.sdp=function(e){return $s.splitSections(e).map((e=>{if("video"!==$s.getKind(e))return e;const t=$s.matchPrefix(e,"a=rtpmap:").map((e=>$s.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=$s.matchPrefix(e,"m=video")[0],i=/(\s\d+)+$/i.exec(r),s=i?i[0]:"",n=[...s.split(" ").filter((e=>e&&!t.includes(e))),...t].join(" "),a=r.replace(s," "+n);return e.replace(r,a)})).join("")}(e.sdp)),this.srdComplete=this.pc.setRemoteDescription(e),this.srdComplete.then((()=>{this.earlyIceCandidates.forEach((e=>this.pc.addIceCandidate(e))),this.earlyIceCandidates=[]}))}handleOffer(e){if(!this.canModifyPeerConnection())return new Promise((t=>{this.pending.push((()=>this.handleOffer(e).then(t)))}));this.isOperationPending=!0;let t=e.sdp;t=function(e){return"safari"!==gv&&("firefox"!==gv||vv&&vv>=63||60===vv)?e:$s.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==$s.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=bv(t);const r={type:e.type,sdp:t};let i;return this._setRemoteDescription(r).then((()=>this.pc.createAnswer())).then((e=>(i=e,this.pc.setLocalDescription(e)))).then((()=>Sv(this.pc,this.bandwidth))).then((()=>i))}handleAnswer(e){const t=bv(e.sdp),r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>Sv(this.pc,this.bandwidth)),(e=>{Rv.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===Cv.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{Rv.warn("Failed to add ICE candidate ('%s'): %s",e?e.candidate:null,t)})))})):this.earlyIceCandidates.push(e)}canModifyPeerConnection(){return"stable"===this.pc.signalingState&&!this.isOperationPending}close(){const e=this.pc;if(e){e.oniceconnectionstatechange=null,e.onicecandidate=null,e.ontrack=null;try{e.close()}catch(e){Rv.warn("failures during close of session",e)}}}hasConnectedPeerConnection(){return this.pc&&"connected"===this.pc.connectionState}replaceTrack(e,t){const r=this.pc;if(!r)return!1;const i=r.getSenders();if(e||(e=(i.find((e=>e.track&&e.track.kind===t.kind))||{}).track),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<i.length;r++){const s=i[r].track;if((null==s?void 0:s.id)===t.id)return Promise.resolve(t);if((null==s?void 0:s.id)===e.id)return i[r].replaceTrack(t)}return null};let s=r();if(s)return s;let n=null,a=null;s=new Promise(((e,t)=>{n=e,a=t}));let o=0,c=setInterval((()=>_f(this,void 0,void 0,(function*(){const e=r();if(!e)return void(3<++o&&(clearInterval(c),c=null,a("No sender track to replace")));clearInterval(c),c=null;const t=yield e;n(t)}))),1e3);return s}const s=this.streams.find((e=>e.getTracks().find((e=>e.id===t.id))))||this.streams[0];return s?r.addTrack(t,s):Promise.reject(new Error("replaceTrack: No stream?"))}if(!this.canModifyPeerConnection())return void this.pending.push((()=>{this.replaceTrack(e,t)}));this.isOperationPending=!0;const s=r.onnegotiationneeded;return r.onnegotiationneeded=null,this.removeTrack(e),this.addTrack(t),setTimeout((()=>{r.onnegotiationneeded=s}),0),"offer"===r.localDescription.type?r.createOffer().then((e=>(e.sdp=_v(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=_v(r.localDescription.sdp,e.sdp),r.setLocalDescription(e))))}maybeRestrictRelayBandwidth(){var e;-1!==this.maximumTurnBandwidth&&(this.pc.getStats&&(e=this.pc,e.getStats(null).then((e=>{let t,r;return e.forEach((i=>{if("transport"===i.type&&i.selectedCandidatePairId){const s=e.get(i.selectedCandidatePairId);if(!s)return;return t=e.get(s.localCandidateId).candidateType,void(r=e.get(s.remoteCandidateId).candidateType)}"candidate-pair"===i.type&&i.selected&&(t=e.get(i.localCandidateId).candidateType,r=e.get(i.remoteCandidateId).candidateType)})),"relay"===t||"relayed"===t||"relay"===r||"relayed"===r}))).then((e=>{e&&0===this.bandwidth&&this.changeBandwidth(this.maximumTurnBandwidth)})))}changeBandwidth(e){e!==this.bandwidth&&(this.canModifyPeerConnection()?(this.bandwidth=e,this.pc.localDescription&&""!==this.pc.localDescription.type&&Sv(this.pc,this.bandwidth)):this.pending.push((()=>this.changeBandwidth(e))))}setAudioOnly(e,t=[]){this.pc.getTransceivers().filter((e=>{var r,i,s,n,a,o;return"recvonly"!==(null==e?void 0:e.direction)&&"video"===(null===(i=null===(r=null==e?void 0:e.receiver)||void 0===r?void 0:r.track)||void 0===i?void 0:i.kind)&&!t.includes(null===(n=null===(s=null==e?void 0:e.receiver)||void 0===s?void 0:s.track)||void 0===n?void 0:n.id)&&!t.includes(null===(o=null===(a=null==e?void 0:e.sender)||void 0===a?void 0:a.track)||void 0===o?void 0:o.id)})).forEach((t=>{t.direction=e?"sendonly":"sendrecv"}))}}const kv="client_connection_status_changed",Pv="stream_added",Dv="rtc_manager_created",Iv="rtc_manager_destroyed",Ev="local_stream_track_added",Ov="local_stream_track_removed",Mv="connecting",xv="connection_failed",Lv="connection_successful",jv="connection_disconnected",Av="camera",Nv="screen_share";var Bv,Fv,$v="connection_blocked_by_network",Vv="ice_ipv6_seen",Uv="ice_mdns_seen",zv="ice_no_public_ip_gathered",qv="ice_no_public_ip_gathered_3sec",Gv="ice_restart",Hv="microphone_not_working",Wv="microphone_stopped_working",Kv="camera_stopped_working",Jv="new_pc",Qv="sfu_connection_open",Zv="sfu_connection_closed",Yv="dominant_speaker",Xv="pc_sld_failure",e_="pc_on_answer_failure",t_="pc_on_offer_failure";const r_=null!==(Bv=Zs.default)&&void 0!==Bv?Bv:Zs,i_=new vf,s_=class{constructor(e,t){this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=Mv,this.stream=null,this.streamId=null}setup(e){return this.stream=e,this.streamId=e.id,this.setVideoEnabled(this.isVideoEnabled&&e.getVideoTracks().length>0),this.setAudioEnabled(this.isAudioEnabled&&e.getAudioTracks().length>0),this}setStatus(e){return this.status=e,this}setVideoEnabled(e){this.isVideoEnabled=e,this.stream&&this.stream.getVideoTracks().forEach((t=>{t.enabled=e}))}setAudioEnabled(e){this.isAudioEnabled=e,this.stream&&this.stream.getAudioTracks().forEach((t=>{t.enabled=e}))}static getCameraId(){return"0"}static getTypeFromId(e){return"0"===""+e?Av:Nv}}.getCameraId(),n_=r_.browserDetails.browser,a_=r_.browserDetails.version;"firefox"===n_&&r_.browserShim&&"shimGetDisplayMedia"in r_.browserShim&&(null===(Fv=r_.browserShim)||void 0===Fv||Fv.shimGetDisplayMedia(window,"screen"));let o_=!1;"chrome"===n_&&window.document.addEventListener("beforeunload",(()=>{o_=!0}));class c_{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:s,features:n}){const{name:a,session:o,iceServers:c,sfuServer:d,mediaserverConfigTtlSeconds:l}=t;this._selfId=e,this._roomName=a,this._roomSessionId=o&&o.id,this.peerConnections={},this.localStreams={},this.enabledLocalStreamIds=[],this._screenshareVideoTrackIds=[],this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction=null,this._emitter=r,this._serverSocket=i,this._webrtcProvider=s,this._features=n||{},this._isAudioOnlyMode=!1,this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._pendingActionsForConnectedPeerConnections=[],this._audioTrackOnEnded=()=>{Rf.sendEvent("audio_ended",{unloading:o_}),this._emit(Wv,{})},this._videoTrackOnEnded=()=>{Rf.sendEvent("video_ended",{unloading:o_}),this._emit(Kv,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:d,iceServers:c.iceServers||[],mediaserverConfigTtlSeconds:l}),this.totalSessionsCreated=0}numberOfPeerconnections(){return Object.keys(this.peerConnections).length}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._roomName===t&&r===!!this._sfuServer}supportsScreenShareAudio(){return!0}maybeRestrictRelayBandwidth(e){e.maybeRestrictRelayBandwidth()}addNewStream(e,t,r,i,s=[]){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===s_){this._addStreamToPeerConnections(t);const e=t.getAudioTracks()[0],r=t.getVideoTracks()[0];if(e){e.effectTrack||this._monitorAudioTrack(e);const t=s.find((e=>"audio"===e.kind));t&&this._monitorAudioTrack(t)}if(r){r.effectTrack||this._monitorVideoTrack(r);const e=s.find((e=>"video"===e.kind));e&&this._monitorVideoTrack(e)}this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const i=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",i),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",i)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return"audio"!==t.kind||t.effectTrack||this._monitorAudioTrack(t),"video"!==t.kind||t.effectTrack||this._monitorVideoTrack(t),this._replaceTrackToPeerConnections(e,t)}disconnectAll(){Object.keys(this.peerConnections).forEach((e=>{this.disconnect(e)})),this.peerConnections={},this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null)}fixChromeAudio(e){if("chrome"!==n_)return;const t=this._getLocalCameraStream(),r=t.getAudioTracks()[0];return r&&"ended"===r.readyState?navigator.mediaDevices.getUserMedia({audio:e}).then((e=>{const i=e.getAudioTracks()[0];return i.enabled=r.enabled,t.removeTrack(r),t.addTrack(i),this.replaceTrack(r,i)})):void 0}setupSocketListeners(){this._socketListenerDeregisterFunctions=[()=>this._clearMediaServersRefresh(),this._serverSocket.on(vg,(e=>{e.error?i_.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Tg,(e=>{this._connect(e.clientId)})),this._serverSocket.on(Cg,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):i_.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(Rg,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):i_.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(Pg,(e=>{var t,r;const i=this._getSession(e.clientId);if(!i)return void i_.warn("No RTCPeerConnection on SDP_OFFER",e);const s=this._transformIncomingSdp(e.message,i.pc);null===(r=(t=i.handleOffer(s).then((t=>{this._emitServerEvent(kg,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))).catch)||void 0===r||r.call(t,(e=>{this._emit(t_,e)}))})),this._serverSocket.on(kg,(e=>{var t,r;const i=this._getSession(e.clientId);if(!i)return void i_.warn("No RTCPeerConnection on SDP_ANSWER",e);const s=this._transformIncomingSdp(e.message,i.pc);null===(r=null===(t=i.handleAnswer(s))||void 0===t?void 0:t.catch)||void 0===r||r.call(t,(e=>{this._emit(e_,e)}))})),this._serverSocket.on(Sg,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==s_));if(!t)return;const r=this.localStreams[t];if(!r)return void i_.warn("screenshare stream %s not found",t);const i=r.getAudioTracks().length>0;this._emitServerEvent(hg,{streamId:t,hasAudioTrack:i})}))]}sendAudioMutedStats(e){Rf.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Rf.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Rf.sendEvent(e,t)}rtcStatsDisconnect(){Rf.server.close()}rtcStatsReconnect(){Rf.server.connected||Rf.server.connect()}setAudioOnly(e){this._isAudioOnlyMode=e,this._forEachPeerConnection((e=>{e.hasConnectedPeerConnection()&&this._withForcedRenegotiation(e,(()=>e.setAudioOnly(this._isAudioOnlyMode,this._screenshareVideoTrackIds)))}))}setRemoteScreenshareVideoTrackIds(e=[]){const t=this._getFirstLocalNonCameraStream();this._screenshareVideoTrackIds=[...(null==t?void 0:t.track)?[t.track.id]:[],...e]}setRoomSessionId(e){this._roomSessionId=e}_setConnectionStatus(e,t,r){const i=e.connectionStatus;i!==t&&e.peerConnectionId!==this._selfId&&(i===jv&&t===Mv||(e.connectionStatus=t,setTimeout((()=>{this._emit(kv,{streamIds:e.streamIds,clientId:r,status:t,previous:i})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=ev,e.playoutDelayHint=.4}))}catch(e){i_.error("Error during setting jitter buffer target:",e)}}_emitServerEvent(e,t,r){this._serverSocket.emit(e,t,r)}_emit(e,t){this._emitter.emit(e,t)}_addEnabledLocalStreamId(e){this.enabledLocalStreamIds.push(e)}_deleteEnabledLocalStreamId(e){const t=this.enabledLocalStreamIds.indexOf(e);-1!==t&&this.enabledLocalStreamIds.splice(t,1)}_getSession(e){return e in this.peerConnections?this.peerConnections[e]:null}_getOrCreateSession(e,t){let r=this.peerConnections[e];if(void 0===r){const i="safari"===n_&&a_&&a_>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new Tv({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:i}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[s_]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==s_))}_isScreensharingLocally(){return this._getNonLocalCameraStreamIds().length>0}_getFirstLocalNonCameraStream(){const e=this._getNonLocalCameraStreamIds();return 0===e.length?null:this.localStreams[e[0]]}_transformIncomingSdp(e,t){return{type:e.type,sdp:e.sdpU}}_transformOutgoingSdp(e){return{type:e.type,sdpU:e.sdp}}_createSession({clientId:e,initialBandwidth:t,isOfferer:r,peerConnectionId:i,shouldAddLocalVideo:s}){if(!i)throw new Error("peerConnectionId is missing");if(!e)throw new Error("clientId is missing");const n=this._getOrCreateSession(i,t),a={optional:[]};"chrome"===n_&&a.optional.push({googCpuOveruseDetection:!0}),a.optional.push({rtcStatsRoomSessionId:this._roomSessionId}),a.optional.push({rtcStatsClientId:this._selfId}),a.optional.push({rtcStatsPeerId:i}),a.optional.push({rtcStatsConferenceId:this._roomName});const o={iceServers:this._iceServers};if(this._features.turnServerOverrideHost){const e=this._features.turnServerOverrideHost,t=e.indexOf(":")>0?"":":443",r=":"+e+t;o.iceServers=o.iceServers.map((e=>{const t=Object.assign({},e);return t.url&&(t.url=t.url.replace(/:[^?]*/,r)),t.urls&&(t.urls=t.urls.map((e=>e.replace(/:[^?]*/,r)))),t}))}if(this._features.addGoogleStunServers&&(o.iceServers=[...o.iceServers,{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun2.l.google.com:19302"}]),this._features.addCloudflareStunServers&&(o.iceServers=[...o.iceServers,{urls:"stun:stun.cloudflare.com:3478"},{urls:"stun:stun.cloudflare.com:53"}]),this._features.useOnlyTURN){o.iceTransportPolicy="relay";const e={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[this._features.useOnlyTURN];e&&(o.iceServers=o.iceServers.filter((t=>t.url&&t.url.match(e))))}"chrome"===n_&&(o.sdpSemantics="unified-plan");const c=n.setAndGetPeerConnection({constraints:a,peerConnectionConfig:o,shouldAddLocalVideo:s,clientId:e});setTimeout((()=>this._emit(Jv)),0),c.ontrack=t=>{const r=t.streams[0];"default"===r.id&&0===r.getAudioTracks().length||-1===n.streamIds.indexOf(r.id)&&(n.streamIds.push(r.id),this._emit(Pv,{clientId:e,stream:r}),n.connectionStatus===Lv&&setTimeout((()=>{this._emit(kv,{streamIds:n.streamIds,clientId:e,status:n.connectionStatus,previous:Mv})}),0))},c.oniceconnectionstatechange=()=>{let t;const r=n.connectionStatus;switch(c.iceConnectionState){case"checking":t=Mv;break;case"connected":case"completed":t=Lv,n.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!n.wasEverConnected&&(c.iceConnectionState.match(/connected|completed/)||"chrome"===n_&&c.localDescription&&"answer"===c.localDescription.type)&&(n.wasEverConnected=!0,"false"!==this._features.bandwidth&&this.maybeRestrictRelayBandwidth(n)),this._isAudioOnlyMode&&n.setAudioOnly(!0,this._screenshareVideoTrackIds),n.registerConnected();break;case"disconnected":t=jv,setTimeout((()=>{"disconnected"===c.iceConnectionState&&this._maybeRestartIce(e,n)}),2e3);break;case"failed":t=xv,r!==t&&this._maybeRestartIce(e,n),null!==n.relayCandidateSeen||n.wasEverConnected||this._emit($v);break;default:return}this._setConnectionStatus(n,t,e)},c.onconnectionstate=()=>{switch(c.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==Xg.browserDetails.browser||Xg.browserDetails.browser<58||"closed"===e.signalingState)return Promise.resolve(!1);const t=e.getSenders().some((e=>e.track&&"audio"===e.track.kind)),r=e.getReceivers().some((e=>e.track&&"audio"===e.track.kind));return e.getStats(null).then((e=>{let i=!1;return e.forEach((e=>{"outbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!t?"inbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!r||0===e.bytesReceived&&(i="inbound"):0===e.bytesSent&&(i="outbound")})),i}))})(n.pc).then((t=>{!1!==t&&this._emit(Hv,{failureDirection:t,clientId:e})}))}),3e3),n.registerConnected();break;case"failed":const t=xv;null!==n.relayCandidateSeen||n.wasEverConnected||this._emit($v),this._setConnectionStatus(n,t,e)}};const d=this.localStreams[s_];return s&&d&&n.addStream(d),s&&Object.keys(this.localStreams).forEach((e=>{if(e===s_)return;const t=this.localStreams[e];r?n.addStream(t):n.afterConnected.then((()=>{this._emitServerEvent(hg,{receiverId:n.clientId,streamId:t.id,hasAudioTrack:!!t.getAudioTracks().length}),this._withForcedRenegotiation(n,(()=>n.addStream(t)))}))})),n}_cleanup(e){const t=this._getSession(e);t?(t.close(),delete this.peerConnections[e]):i_.warn("No RTCPeerConnection in RTCManager.disconnect()",e)}_forEachPeerConnection(e){Object.values(this.peerConnections).forEach((t=>{e(t)}))}_addStreamToPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.addStream(e)))}))}_addTrackToPeerConnections(e,t){this._forEachPeerConnection((r=>{this._withForcedRenegotiation(r,(()=>r.addTrack(e,t)))}))}_replaceTrackToPeerConnections(e,t){const r=[];return this._forEachPeerConnection((i=>{if(!i.hasConnectedPeerConnection()){i_.info("Session doesn't have a connected PeerConnection, adding pending action!");const s=this._pendingActionsForConnectedPeerConnections;if(!s)return void i_.warn("No pending action is created to replace track, because the pending actions array is null");const n=new Promise(((r,n)=>{s.push((()=>{const s=i.replaceTrack(e,t);if(!s)return i_.error("replaceTrack returned false!"),void n("ReplaceTrack returned false");s.then((e=>r(e))).catch((e=>n(e)))}))}));return void r.push(n)}const s=i.replaceTrack(e,t);s?r.push(s):i_.error("replaceTrack returned false!")})),Promise.all(r)}_removeStreamFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeStream(e)))}))}_removeTrackFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeTrack(e)))}))}_addLocalStream(e,t){this._addEnabledLocalStreamId(e),this.localStreams[e]=t}_removeLocalStream(e){delete this.localStreams[e],this._deleteEnabledLocalStreamId(e)}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitServerEvent(ug)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_monitorAudioTrack(e){var t,r;(null===(t=this._audioTrackBeingMonitored)||void 0===t?void 0:t.id)!==e.id&&(null===(r=this._audioTrackBeingMonitored)||void 0===r||r.removeEventListener("ended",this._audioTrackOnEnded),e.addEventListener("ended",this._audioTrackOnEnded),this._audioTrackBeingMonitored=e)}_monitorVideoTrack(e){var t,r;(null===(t=this._videoTrackBeingMonitored)||void 0===t?void 0:t.id)!==e.id&&(null===(r=this._videoTrackBeingMonitored)||void 0===r||r.removeEventListener("ended",this._videoTrackOnEnded),e.addEventListener("ended",this._videoTrackOnEnded),this._videoTrackBeingMonitored=e)}_connect(e){let t=this._getSession(e),r=t&&t.bandwidth||0;return t?(i_.warn("Replacing peer session",e),this._cleanup(e)):r=this._changeBandwidthForAllClients(!0),t=this._createP2pSession({clientId:e,initialBandwidth:r,shouldAddLocalVideo:!0,isOfferer:!0}),this._negotiatePeerConnection(e,t),Promise.resolve(t)}_maybeRestartIce(e,t){const r=t.pc;"disconnected"!==r.iceConnectionState&&"failed"!==r.iceConnectionState||"offer"===r.localDescription.type&&(t.wasEverConnected=!1,t.relayCandidateSeen=!1,t.serverReflexiveCandidateSeen=!1,t.publicHostCandidateSeen=!1,t.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this._emit(Gv),this._negotiatePeerConnection(e,t,Object.assign({},this.offerOptions,{iceRestart:!0})))}_setCodecPreferences(e,t,r,i){try{const s=e.getTransceivers().filter((e=>{var t,r;return"audio"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));s.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const t=RTCRtpSender.getCapabilities("audio");for(let e=0;e<t.codecs.length;e++)if(i&&"audio/red"===t.codecs[e].mimeType.toLowerCase()){t.codecs.unshift(t.codecs.splice(e,1)[0]);break}void 0!==e.setCodecPreferences&&e.setCodecPreferences(t.codecs)}));const n=e.getTransceivers().filter((e=>{var t,r;return"video"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));n.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const i=RTCRtpSender.getCapabilities("video");for(let e=0;e<i.codecs.length;e++){if(t&&"video/vp9"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}if(r&&"video/av1"===i.codecs[e].mimeType.toLowerCase()){i.codecs.unshift(i.codecs.splice(e,1)[0]);break}}void 0!==e.setCodecPreferences&&e.setCodecPreferences(i.codecs)}))}catch(e){i_.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void i_.warn("No RTCPeerConnection in negotiatePeerConnection()",e);const i=t.pc;if(!t.canModifyPeerConnection())return void t.pending.push((()=>{this._negotiatePeerConnection(e,t,r)}));t.isOperationPending=!0;const{vp9On:s,av1On:n,redOn:a,rtpAbsCaptureTimeOn:o,cleanSdpOn:c}=this._features;(s||n||a)&&this._setCodecPreferences(i,s,n,a),i.createOffer(r||this.offerOptions).then((t=>{o&&(t.sdp=yv(t.sdp)),(s||a)&&"firefox"===n_&&(t.sdp=function(e,t,r){var i,s;try{const n=Uo(e);if(Array.isArray(null==n?void 0:n.media)){const e=n.media.find((e=>"audio"===e.type));if(Array.isArray(null==e?void 0:e.rtp)){const t=e.rtp;for(let s=0;s<t.length;s++)if(r&&"red"===t[s].codec){const r=null===(i=e.payloads)||void 0===i?void 0:i.split(" "),n=null==r?void 0:r.indexOf(""+t[s].payload);n&&-1!==n&&n>=0&&(null==r||r.unshift(r.splice(n,1)[0]),e.payloads=null==r?void 0:r.join(" "))}}const a=n.media.find((e=>"video"===e.type));if(Array.isArray(null==a?void 0:a.rtp)){const e=a.rtp;for(let r=0;r<e.length;r++)if(t&&"VP9"===e[r].codec){const t=null===(s=a.payloads)||void 0===s?void 0:s.split(" "),i=null==t?void 0:t.indexOf(""+e[r].payload);i&&-1!==i&&i>=0&&(null==t||t.unshift(t.splice(i,1)[0]),a.payloads=null==t?void 0:t.join(" "))}}}return Vo(n)}catch(e){fv.error("setCodecPreferenceSDP error:",e)}}(t.sdp,s,a)),c&&(t.sdp=function(e){try{const t=Uo(e);return t.media.forEach((e=>{const t={};e.payloads&&(e.payloads=(""+e.payloads).split(" ").filter((e=>!t[e]&&(t[e]=!0))).join(" "));const r={};e.rtp=e.rtp.filter((e=>!e.payload||t[e.payload]&&!r[e.payload]&&(r[e.payload]=!0)));const i={};e.fmtp&&(e.fmtp=e.fmtp.filter((e=>!e.payload||t[e.payload]&&!i[e.payload]&&(i[e.payload]=!0))));const s={};e.rtcpFb&&(e.rtcpFb=e.rtcpFb.filter((e=>!e.payload||t[e.payload]&&!s[e.payload+e.type]&&(s[e.payload+e.type]=!0))))})),Vo(t)}catch(e){}return e}(t.sdp)),i.setLocalDescription(t).catch((e=>{throw i_.warn("RTCPeerConnection.setLocalDescription() failed with local offer",e),this._emit(Xv,e),e})).then((()=>{this._emitServerEvent(Pg,{receiverId:e,message:this._transformOutgoingSdp(t)})}))})).catch((e=>{i_.warn("RTCPeerConnection.createOffer() failed to create local offer",e)}))}_withForcedRenegotiation(e,t){const r=e.pc,i=r.onnegotationneeded;r.onnegotiationneeded=null,t(),this._negotiatePeerConnection(e.clientId,e),setTimeout((()=>r.onnegotiationneeded=i),0)}_changeBandwidthForAllClients(e){let t=this.numberOfPeerconnections();if(e&&(t+=1),0===t)return 0;t>7&&(t=7);let r=this._features.bandwidth?parseInt(this._features.bandwidth,10):{1:this._features.lowBandwidth?768:0,2:this._features.highP2PBandwidth&&!this._features.lowBandwidth?768:384,3:this._features.highP2PBandwidth&&!this._features.lowBandwidth?512:256,4:192,5:128,6:128,7:64}[t];if(void 0===r)return 0;if(this._features.adjustBitratesFromResolution){const e=this._getLocalCameraStream();if(e){const t=e&&e.getVideoTracks()[0];if(t){const{width:e,height:i,frameRate:s}=t.getSettings();if(e&&i&&s){const t=Math.round(function(e,t,r){let i=e*t;i<cg&&(i=cg),i>lg&&(i=lg);let s=dg;i>lg?s=pg:i>cg&&(s+=-17582143775720163e-22*(i-cg));let n=e*t*s;return r<=15?n*=.7:r<=24&&(n*=.9),n}(e,i,s)/1e3);r=Math.min(t,r||t)}}}}return this._features.higherP2PBitrates&&!this._features.lowBandwidth&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession({clientId:e,initialBandwidth:t,shouldAddLocalVideo:r=!1,isOfferer:i=!1}){const s=this._createSession({peerConnectionId:e,clientId:e,initialBandwidth:t,shouldAddLocalVideo:r,isOfferer:i}),n=s.pc;this._features.increaseIncomingMediaBufferOn&&this._setJitterBufferTarget(n);const a=this.localStreams[s_];return r&&a&&!a.getVideoTracks().length&&this._stoppedVideoTrack&&n.addTrack(this._stoppedVideoTrack,a),n.onicegatheringstatechange=e=>{switch(e.target.iceGatheringState){case"gathering":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=setTimeout((()=>{s.publicHostCandidateSeen||s.relayCandidateSeen||s.serverReflexiveCandidateSeen||"connected"===n.iceConnectionState&&"completed"===n.iceConnectionState||this._emit(qv)}),3e3);break;case"complete":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=void 0}},n.onicecandidate=t=>{var r,i;if(t.candidate){switch(null===(r=t.candidate)||void 0===r?void 0:r.type){case"host":const e=null===(i=null==t?void 0:t.candidate)||void 0===i?void 0:i.address;try{if(Zf.v4({exact:!0}).test(e)){df(e).isPublicIp&&(s.publicHostCandidateSeen=!0)}else if(Zf.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new sm.Address6(e.replace(/^\[(.*)\]/,"$1"));s.ipv6HostCandidateSeen=!0,"Global"===t.getScope()&&(s.publicHostCandidateSeen=!0),t.isTeredo()&&(s.ipv6HostCandidateTeredoSeen=!0),t.is6to4()&&(s.ipv6HostCandidate6to4Seen=!0)}else{const t=e.replace(/.local/,"");t&&ff(t,4)&&(s.mdnsHostCandidateSeen=!0)}}catch(e){i_.info("Error during parsing candidates! Error: ",{error:e})}break;case"srflx":s.serverReflexiveCandidateSeen||(s.serverReflexiveCandidateSeen=!0);break;case"relay":case"relayed":s.relayCandidateSeen||(s.relayCandidateSeen=!0)}this._emitServerEvent(Cg,{receiverId:e,message:t.candidate})}else this._emitServerEvent(Rg,{receiverId:e}),s.publicHostCandidateSeen||s.relayCandidateSeen||s.serverReflexiveCandidateSeen||"connected"===n.iceConnectionState||"completed"===n.iceConnectionState||this._emit(zv),s.ipv6HostCandidateSeen&&this._emit(Vv,{teredoSeen:s.ipv6HostCandidateTeredoSeen,sixtofourSeen:s.ipv6HostCandidate6to4Seen}),s.mdnsHostCandidateSeen&&this._emit(Uv)},n.onnegotiationneeded=()=>{"new"!==n.iceConnectionState&&s.connectionStatus&&this._negotiatePeerConnection(e,s)},s}acceptNewStream({streamId:e,clientId:t,shouldAddLocalVideo:r}){let i=this._getSession(t);if(i&&e!==t)return i;let s=i&&i.bandwidth||0;return i?(i_.warn("Replacing peer session",t),this._cleanup(t)):s=this._changeBandwidthForAllClients(!0),i=this._createP2pSession({clientId:t,initialBandwidth:s,shouldAddLocalVideo:!!r,isOfferer:!1}),this._emitServerEvent(Tg,{receiverId:t}),i}disconnect(e){this._cleanup(e),this._changeBandwidthForAllClients(!1);0===this.numberOfPeerconnections()&&setTimeout((()=>{0===this.numberOfPeerconnections()&&this.rtcStatsDisconnect()}),6e4)}updateStreamResolution(){}stopOrResumeAudio(){}_handleStopOrResumeVideo({enable:e,track:t}){e?this._stoppedVideoTrack?(this._replaceTrackToPeerConnections(this._stoppedVideoTrack,t),delete this._stoppedVideoTrack):this._addTrackToPeerConnections(t):this._stoppedVideoTrack=t}stopOrResumeVideo(e,t){var r;if(["chrome","safari"].includes(n_))if(!1===t){const i="ended"===(null===(r=e.getVideoTracks().find((e=>!e.enabled)))||void 0===r?void 0:r.readyState)?0:5e3;setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(Ov,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),i)}else if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;if(!r)return;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._monitorVideoTrack(i),this._emit(Ev,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}_shareScreen(e,t){this._emitServerEvent(hg,{streamId:e,hasAudioTrack:!!t.getAudioTracks().length}),this._wasScreenSharing=!0,this._addStreamToPeerConnections(t)}removeStream(e,t,r){this._removeLocalStream(e),this._removeStreamFromPeerConnections(t),this._wasScreenSharing=!1,this._emitServerEvent(mg,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}var d_=Object.freeze({__proto__:null,KalmanFilter:class{constructor({R:e=.01,Q:t=2,A:r=1.1,B:i=1,C:s=1.2}={R:.01,Q:2,A:1.1,B:1,C:1.2}){this.R=e,this.Q=t,this.A=r,this.C=s,this.B=i,this.cov=NaN,this.x=NaN}filter(e,t=0){if(isNaN(this.x))this.x=1/this.C*e,this.cov=1/this.C*this.Q*(1/this.C);else{const r=this.predict(t),i=this.uncertainty(),s=i*this.C*(1/(this.C*i*this.C+this.Q));this.x=r+s*(e-this.C*r),this.cov=i-s*this.C*i}return this.x}predict(e=0){return this.A*this.x+this.B*e}uncertainty(){return this.A*this.cov*this.A+this.R}lastMeasurement(){return this.x}setMeasurementNoise(e){this.Q=e}setProcessNoise(e){this.R=e}},calculateStd:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,r)=>e.concat(Math.pow(r-t,2))),[]).reduce(((e,t)=>e+t),0)/e.length},createACFCalculator:()=>{let e=-1,t=0,r=0;return i=>{const s=i.reduce(((e,t)=>e+t),0)/i.length;if(e=e<0?s:.95*e+.05*s,++r<2)return t=s,0;const n=(s-e)*(t-e);return t=s,n}},standardDeviation:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return{mean:t,SD:Math.sqrt(e.reduce(((e,r)=>e+Math.pow(r-t,2)),0)/e.length)}},variance:(e,t=!1)=>{const r=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,t)=>e.concat(Math.pow(t-r,2))),[]).reduce(((e,t)=>e+t),0)/(e.length-(t?0:1))}});const l_={minDecibels:-80,maxDecibels:-10,smoothingTimeConstant:.8,aggSize:1,sampleRate:10,reportRate:2,bins:32,bands:[[0,1,2,3],[4,5,6,7]],separateTrack:{autoGainControl:!1,noiseSupression:!1},binFormula:"bin",scoreFormula:"300 * bands[1].avg / Math.max(bands[1].avg + bands[0].avg, 0.01)",outFormula:"score"},p_=new vf;const u_=new vf,h_=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class m_ extends Eu{constructor(){super(),this._clients={},this._producers={},this._startMonitor()}close(){clearInterval(this._intervalHandle),delete this._intervalHandle,this._producers={},this._clients={}}_startMonitor(){this._intervalHandle=setInterval((()=>{Object.entries(this._producers).forEach((([e,t])=>{this._evaluateClient(e,t)}))}),600)}_evaluateClient(e,t){this._clients[e]||(this._clients[e]={audio:{currentQuality:h_.ok,trend:[]},video:{currentQuality:h_.ok,trend:[]}}),this._evaluateProducer(e,Object.values(t).filter((e=>"audio"===e.kind)),"audio"),this._evaluateProducer(e,Object.values(t).filter((e=>"video"===e.kind)),"video")}_evaluateProducer(e,t,r){if(0===t.length)return;const i=t.reduce(((e,t)=>e+t.score),0)/t.length,s=this._evaluateScore(i);this._updateTrend(s,this._clients[e][r])&&this.emit(Ig,{clientId:e,kind:r,quality:s})}_updateTrend(e,t){return t.trend.push(e),t.trend.length>3&&t.trend.shift(),!(e===t.currentQuality||!t.trend.every((e=>e!==t.currentQuality)))&&(t.currentQuality=e,!0)}addProducer(e,t){e&&t&&"string"==typeof e&&"string"==typeof t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):u_.warn("Missing clientId or producerId")}removeProducer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addConsumer(e,t){e&&t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):u_.warn("Missing clientId or consumerId")}removeConsumer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addProducerScore(e,t,r,i){Array.isArray(i)&&0!==i.length&&!i.some((e=>!e||!e.hasOwnProperty("score")||"number"!=typeof e.score||isNaN(e.score)))?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.map((e=>e.score)))}:u_.warn("Unexpected producer score format")}addConsumerScore(e,t,r,i){i&&i.hasOwnProperty("producerScores")&&Array.isArray(i.producerScores)?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(i.producerScores)}:u_.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?h_.warning:e<=7&&e>0?h_.critical:h_.ok}_calcAvgProducerScore(e){try{if(!Array.isArray(e)||0===e.length)return 0;let t=0,r=0;return e.forEach((e=>{e>0&&(t+=e,r++)})),0===t||0===r?0:t/r}catch(e){return u_.error(e),0}}}var f_;const g_=null!==(f_=Zs.default)&&void 0!==f_?f_:Zs,v_=new vf,__=g_.browserDetails.browser;let b_=!1;const y_=on(),S_=on();"chrome"===__&&window.document.addEventListener("beforeunload",(()=>b_=!0));class w_{constructor({selfId:e,room:t,emitter:r,serverSocket:i,webrtcProvider:s,features:n,eventClaim:a,deviceHandlerFactory:o}){const{session:c,iceServers:d,sfuServer:l,mediaserverConfigTtlSeconds:p}=t;this._selfId=e,this._room=t,this._roomSessionId=null==c?void 0:c.id,this._emitter=r,this._serverSocket=i,this._webrtcProvider=s,this._features=n||{},this._eventClaim=a,this._vegaConnection=null,this._micAnalyser=null,this._micAnalyserDebugger=null,this._mediasoupDevice=o?new ln.Device({handlerFactory:o}):new ln.Device({handlerName:Uf()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=new Map,this._streamIdToVideoResolution=new Map,this._consumers=new Map,this._dataConsumers=new Map,this._localStreamDeregisterFunction=null,this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._micProducer=null,this._micProducerPromise=null,this._micPaused=!1,this._micScoreProducer=null,this._micScoreProducerPromise=null,this._webcamProducer=null,this._webcamProducerPromise=null,this._webcamPaused=!1,this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._sndTransportIceRestartPromise=null,this._rcvTransportIceRestartPromise=null,this._colocation=null,this._stopCameraTimeout=null,this._audioTrackOnEnded=()=>{Rf.sendEvent("audio_ended",{unloading:b_}),this._emitToPWA(Wv,{})},this._videoTrackOnEnded=()=>{Rf.sendEvent("video_ended",{unloading:b_}),this._emitToPWA(Kv,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:p}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._hasVegaConnection=!1,this._qualityMonitor=new m_,this._qualityMonitor.on(Ig,(e=>{this._emitToPWA(Ig,e)}))}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){var i,s;this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,null===(i=this._sendTransport)||void 0===i||i.updateIceServers({iceServers:this._iceServers}),null===(s=this._receiveTransport)||void 0===s||s.updateIceServers({iceServers:this._iceServers}),this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitToSignal(ug)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on(vg,(e=>{e.error?v_.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Sg,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted(),this._features.sfuReconnectV2On&&!this._hasVegaConnection&&this._reconnect&&this._connect()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(hg,{streamId:S_,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){if(this._features.sfuReconnectV2On){if(this._hasVegaConnection)return;if(!this._serverSocket.isConnected()){const e=this._serverSocket.getReconnectThreshold();if(!e)return;if(Date.now()>(this._serverSocket.disconnectTimestamp||0)+e)return}this._reconnectTimeOut&&clearTimeout(this._reconnectTimeOut)}const e=this._features.sfuServerOverrideHost||[this._sfuServer.url],t=new URLSearchParams(Object.assign({clientId:this._selfId,organizationId:this._room.organizationId,roomName:this._room.name,eventClaim:this._room.isClaimed?this._eventClaim:null,lowBw:"true"},Object.keys(this._features||{}).filter((e=>this._features[e]&&/^sfu/.test(e))).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t]:this._features[t]})),{}))),r=`wss://${e}?${t.toString()}`;this._vegaConnection=new Zg(r),this._hasVegaConnection=!0,this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){var e,t;v_.info("_onClose()"),this._hasVegaConnection=!1,null===(e=this._sendTransport)||void 0===e||e.close(),null===(t=this._receiveTransport)||void 0===t||t.close(),this._sendTransport=null,this._receiveTransport=null,this._streamIdToVideoConsumerId.clear(),this._streamIdToVideoResolution.clear(),this._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA(Zv)}_join(){return _f(this,void 0,void 0,(function*(){v_.info("join()"),this._emitToPWA(Qv);try{const{routerRtpCapabilities:e}=yield this._vegaConnection.request("getCapabilities");this._routerRtpCapabilities||(((e,t)=>{const{vp9On:r,h264On:i}=t;if(r){const{preferredPayloadType:t}=e.codecs.find((e=>"video/vp9"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}else if(i){const{preferredPayloadType:t}=e.codecs.find((e=>"video/h264"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}})(e,this._features),this._routerRtpCapabilities=e,yield this._mediasoupDevice.load({routerRtpCapabilities:e})),this._vegaConnection.message("setCapabilities",{rtpCapabilities:this._mediasoupDevice.rtpCapabilities}),this._colocation&&this._vegaConnection.message("setColocation",{colocation:this._colocation}),yield Promise.all([this._createTransport(!0),this._createTransport(!1)]);const t=[];!this._micTrack||this._micProducer||this._micProducerPromise||t.push(this._internalSendMic()),!this._webcamTrack||this._webcamProducer||this._webcamProducerPromise||t.push(this._internalSendWebcam()),!this._screenVideoTrack||this._screenVideoProducer||this._screenVideoProducerPromise||t.push(this._internalSendScreenVideo()),!this._screenAudioTrack||this._screenAudioProducer||this._screenAudioProducerPromise||t.push(this._internalSendScreenAudio()),yield Promise.all(t)}catch(e){v_.error("_join() [error:%o]",e)}}))}_createTransport(e){return _f(this,void 0,void 0,(function*(){const t=e?"createSendTransport":"createRecvTransport",r=yield this._vegaConnection.request("createTransport",{producing:e,consuming:!e,enableTcp:!0,enableUdp:!0,preferUdp:!0,sctpParameters:{enableSctp:!0,numSctpStreams:{OS:1024,MIS:1024},maxSctpMessageSize:262144,sctpSendBufferSize:262144}});r.iceServers=this._iceServers,((e,t)=>{if(!t.useOnlyTURN)return;e.iceTransportPolicy="relay";const r={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[t.useOnlyTURN];r&&(e.iceServers=e.iceServers.filter((e=>e.url&&e.url.match(r))))})(r,this._features);const i=this._mediasoupDevice[t](r),s=t=>_f(this,void 0,void 0,(function*(){if(v_.info(`Transport ConnectionStateChanged ${t}`),"disconnected"===t||"failed"===t)if(e){if(this._sndTransportIceRestartPromise)return;this._sndTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._sndTransportIceRestartPromise=null}))}else{if(this._rcvTransportIceRestartPromise)return;this._rcvTransportIceRestartPromise=this._restartIce(i).finally((()=>{this._rcvTransportIceRestartPromise=null}))}}));i.on("connect",(({dtlsParameters:e},t)=>{var r;null===(r=this._vegaConnection)||void 0===r||r.message("connectTransport",{transportId:i.id,dtlsParameters:e}),t()})).on("connectionstatechange",s),i.observer.once("close",(()=>{i.removeListener(s)})),e?(i.on("produce",(({kind:e,rtpParameters:t,appData:r},s,n)=>_f(this,void 0,void 0,(function*(){var a;try{const{paused:n}=r,{id:o}=yield null===(a=this._vegaConnection)||void 0===a?void 0:a.request("produce",{transportId:i.id,kind:e,rtpParameters:t,paused:n,appData:r});s({id:o})}catch(e){n(e)}})))),i.on("producedata",(({appData:e,sctpStreamParameters:t},r,s)=>_f(this,void 0,void 0,(function*(){var n;try{const{id:s}=yield null===(n=this._vegaConnection)||void 0===n?void 0:n.request("produceData",{transportId:i.id,sctpStreamParameters:t,appData:e});r({id:s})}catch(e){s(e)}})))),this._sendTransport=i):this._receiveTransport=i}))}_restartIce(e,t=0){return _f(this,void 0,void 0,(function*(){if(!e||!("closed"in e)||!("connectionState"in e))return void v_.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void v_.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void v_.info("_restartIce: Connection is healthy ICE restart no loneger needed!");const{iceRestartStarted:r}=e.appData,i=Date.now();if(Number.isFinite(r)&&i-r<3500)return;if(e.appData.iceRestartStarted=i,5<=t)return void v_.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void v_.info("_restartIce: Connection is undefined");const{iceParameters:s}=yield this._vegaConnection.request("restartIce",{transportId:e.id});v_.info("_restartIce: ICE restart iceParameters received from SFU: ",s);const n=yield e.restartIce({iceParameters:s}).then((()=>null)).catch((e=>e));if(n)switch(v_.error(`_restartIce: ICE restart failed: ${n}`),n.message){case"missing transportId":case"no such transport":break;default:yield new Promise((e=>{setTimeout((()=>{e(void 0)}),Math.min(3500*Math.pow(2,t),6e4))})),yield this._restartIce(e,t+1)}else yield new Promise((e=>{setTimeout((()=>{e(void 0)}),6e4*Math.min(8,t+1))})),"failed"!==e.connectionState&&"disconnected"!==e.connectionState||(yield this._restartIce(e,t+1))}))}_internalSendMic(){return _f(this,void 0,void 0,(function*(){v_.info("_internalSendMic()"),this._micProducerPromise=(()=>_f(this,void 0,void 0,(function*(){try{if(!this._micTrack||!this._sendTransport||this._micProducer)return void(this._micProducerPromise=null);const e=this._micPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._micTrack,disableTrackOnPause:!1,stopTracks:!1},og("audio",!1,this._features)),{appData:{streamId:y_,sourceClientId:this._selfId,screenShare:!1,source:"mic",paused:e}}));e?t.pause():t.resume(),this._micProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;v_.info('micProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._micProducer=null,this._micProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._micTrack!==this._micProducer.track&&(yield this._replaceMicTrack()),this._micPaused!==this._micProducer.paused&&this._pauseResumeMic()}catch(e){v_.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})))()}))}_internalSetupMicScore(){return _f(this,void 0,void 0,(function*(){v_.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(()=>_f(this,void 0,void 0,(function*(){try{if(!this._micProducer||!this._colocation||this._micScoreProducer)return void(this._micScoreProducerPromise=null);const e=yield this._sendTransport.produceData({ordered:!1,maxPacketLifeTime:3e3,label:"micscore",appData:{producerId:this._micProducer.id,clientId:this._selfId}});this._micScoreProducer=e,e.observer.once("close",(()=>{var t;v_.info('micScoreProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeDataProducers",{dataProducerIds:[e.id]})),this._micScoreProducer=null,this._micScoreProducerPromise=null}))}catch(e){v_.error("micScoreProducer failed:%o",e)}finally{this._micScoreProducerPromise=null,this._micProducer&&this._colocation||this._stopMicScoreProducer()}})))()}))}_stopMicScoreProducer(){this._stopProducer(this._micScoreProducer),this._micScoreProducer=null}_replaceMicTrack(){var e;return _f(this,void 0,void 0,(function*(){v_.info("_replaceMicTrack()"),this._micTrack&&this._micProducer&&!this._micProducer.closed&&this._micProducer.track!==this._micTrack&&(yield this._micProducer.replaceTrack({track:this._micTrack}),null===(e=this._micAnalyser)||void 0===e||e.setTrack(this._micTrack),yield this._replaceMicTrack())}))}_pauseResumeMic(){var e,t;v_.info("_pauseResumeMic()"),this._micProducer&&!this._micProducer.closed&&this._micPaused!==this._micProducer.paused&&(this._micPaused?(this._micProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._micProducer.id]})):(this._micProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._micProducer.id]})),this._pauseResumeMic())}_sendMic(e){return _f(this,void 0,void 0,(function*(){return v_.info("_sendMic() [track:%o]",e),this._micTrack=e,this._micProducer?yield this._replaceMicTrack():this._micProducerPromise?void 0:this._sendTransport?yield this._internalSendMic():void 0}))}_sendMicScore(e){if(!isNaN(e)&&isFinite(e))if(this._micScoreProducer){if(this._micScoreProducer.closed)return void this._stopMicScoreProducer();try{this._micScoreProducer.send(JSON.stringify({score:e}))}catch(e){v_.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}_internalSendWebcam(){var e;return _f(this,void 0,void 0,(function*(){v_.info("_internalSendWebcam()"),!this._sendTransport||this._webcamProducer||this._webcamProducerPromise||"live"!==(null===(e=this._webcamTrack)||void 0===e?void 0:e.readyState)||(this._webcamProducerPromise=(()=>_f(this,void 0,void 0,(function*(){var e,t;try{const t=this._webcamPaused,r=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1},og("video",!1,this._features)),{appData:{streamId:y_,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:t}}));t?r.pause():r.resume(),this._webcamProducer=r,this._qualityMonitor.addProducer(this._selfId,r.id),r.observer.once("close",(()=>{var e;v_.info('webcamProducer "close" event'),r.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[r.id]})),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,r.id)})),this._webcamTrack&&this._webcamTrack!==(null===(e=this._webcamProducer)||void 0===e?void 0:e.track)&&(this._webcamProducerPromise=null,this._replaceWebcamTrack()),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){v_.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(this._stopProducer(this._webcamProducer),this._webcamProducer=null),this._features.lowBandwidth&&this._screenVideoTrack&&(null===(t=this._webcamProducer)||void 0===t||t.setMaxSpatialLayer(0))}})))())}))}_replaceWebcamTrack(){return _f(this,void 0,void 0,(function*(){v_.info("_replaceWebcamTrack()"),this._sendTransport&&this._webcamTrack&&!this._webcamProducerPromise&&(this._webcamProducer||!this._webcamTrack.enabled?this._webcamProducer.track!==this._webcamTrack&&(yield this._webcamProducer.replaceTrack({track:this._webcamTrack}),yield this._replaceWebcamTrack()):yield this._internalSendWebcam())}))}_pauseResumeWebcam(){var e,t;v_.info("_pauseResumeWebcam()"),this._webcamProducer&&!this._webcamProducer.closed&&this._webcamPaused!==this._webcamProducer.paused&&(this._webcamPaused?(this._webcamProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._webcamProducer.id]})):(this._webcamProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._webcamProducer.id]})),this._pauseResumeWebcam())}_sendWebcam(e){return _f(this,void 0,void 0,(function*(){return v_.info("_sendWebcam() [track:%o]",e),this._webcamTrack=e,this._webcamProducer?yield this._replaceWebcamTrack():this._webcamProducerPromise?void 0:this._sendTransport?yield this._internalSendWebcam():void 0}))}_internalSendScreenVideo(){return _f(this,void 0,void 0,(function*(){v_.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(()=>_f(this,void 0,void 0,(function*(){var e,t;try{if(!this._screenVideoTrack||!this._sendTransport||this._screenVideoProducer)return void(this._screenVideoProducerPromise=null);const t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenVideoTrack,disableTrackOnPause:!1,stopTracks:!1},og("video",!0,this._features)),{appData:{streamId:S_,sourceClientId:this._selfId,screenShare:!0,source:"screenvideo",paused:!1}}));this._screenVideoProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;v_.info('screenVideoProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._screenVideoTrack!==this._screenVideoProducer.track&&(yield this._replaceScreenVideoTrack()),this._features.lowBandwidth&&(null===(e=this._webcamProducer)||void 0===e||e.setMaxSpatialLayer(0))}catch(e){v_.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(yield this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null,this._features.lowBandwidth&&(null===(t=this._webcamProducer)||void 0===t||t.setMaxSpatialLayer(Number.MAX_VALUE)))}})))()}))}_replaceScreenVideoTrack(){return _f(this,void 0,void 0,(function*(){v_.info("_replaceScreenVideoTrack()"),this._screenVideoTrack&&this._screenVideoProducer&&!this._screenVideoProducer.closed&&this._screenVideoProducer.track!==this._screenVideoTrack&&(yield this._screenVideoProducer.replaceTrack({track:this._screenVideoTrack}),yield this._replaceScreenVideoTrack())}))}_sendScreenVideo(e){return _f(this,void 0,void 0,(function*(){return v_.info("_sendScreenVideo() [track:%o]",e),this._screenVideoTrack=e,this._screenVideoProducer?yield this._replaceScreenVideoTrack():this._screenVideoProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenVideo():void 0}))}_internalSendScreenAudio(){return _f(this,void 0,void 0,(function*(){v_.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(()=>_f(this,void 0,void 0,(function*(){try{if(!this._screenAudioTrack||!this._sendTransport||this._screenAudioProducer)return void(this._screenAudioProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenAudioTrack,disableTrackOnPause:!1,stopTracks:!1},og("audio",!0,this._features)),{appData:{streamId:S_,sourceClientId:this._selfId,screenShare:!0,source:"screenaudio",paused:!1}}));this._screenAudioProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;v_.info('screenAudioProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenAudioTrack!==this._screenAudioProducer.track&&(yield this._replaceScreenAudioTrack())}catch(e){v_.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(yield this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})))()}))}_replaceScreenAudioTrack(){return _f(this,void 0,void 0,(function*(){v_.info("_replaceScreenAudioTrack()"),this._screenAudioTrack&&this._screenAudioProducer&&!this._screenAudioProducer.closed&&this._screenAudioProducer.track!==this._screenAudioTrack&&(yield this._screenAudioProducer.replaceTrack({track:this._screenAudioTrack}),yield this._replaceScreenAudioTrack())}))}_sendScreenAudio(e){return _f(this,void 0,void 0,(function*(){return v_.info("_sendScreenAudio() [track:%o]",e),this._screenAudioTrack=e,this._screenAudioProducer?yield this._replaceScreenAudioTrack():this._screenAudioProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenAudio():void 0}))}_stopProducer(e){v_.info("_stopProducer()"),e&&!e.closed&&(e.appData.localClosed=!0,e.close())}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._room.name===t&&Boolean(r)}setEventClaim(e){var t;this._eventClaim=e,null===(t=this._vegaConnection)||void 0===t||t.message("eventClaim",{eventClaim:e})}setColocation(e){var t;this._colocation=e,null===(t=this._vegaConnection)||void 0===t||t.message("setColocation",{colocation:e}),e||!this._micScoreProducer||this._micScoreProducerPromise||this._stopMicScoreProducer(),this._syncMicAnalyser(),Rf.sendEvent("colocation_changed",{colocation:e})}setAudioOnly(e){var t;null===(t=this._vegaConnection)||void 0===t||t.message(e?"enableAudioOnly":"disableAudioOnly")}setRemoteScreenshareVideoTrackIds(){}setRoomSessionId(e){this._roomSessionId=e}disconnect(e,t,r){var i;if(v_.info("disconnect() [clientIdOrStreamId:%s, eventClaim:%s]",e,r),this._clientStates.has(e)){const t=this._clientStates.get(e);t.hasAcceptedWebcamStream=!1,t.hasAcceptedScreenStream=!1,this._syncIncomingStreamsWithPWA(e)}r&&(this._eventClaim=r,null===(i=this._vegaConnection)||void 0===i||i.message("eventClaim",{eventClaim:r}))}replaceTrack(e,t){"audio"===t.kind&&(t.effectTrack||this._monitorAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(t.effectTrack||this._monitorVideoTrack(t),this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){var i;v_.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal(mg,{streamId:S_,requestedByClientId:r}),this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null,this._screenVideoTrack=null,this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null,this._screenAudioTrack=null,this._features.lowBandwidth&&(null===(i=this._webcamProducer)||void 0===i||i.setMaxSpatialLayer(Number.MAX_VALUE))}_onMicAnalyserScoreUpdated(e){var t,r;null===(r=null===(t=this._micAnalyserDebugger)||void 0===t?void 0:t.onScoreUpdated)||void 0===r||r.call(t,e),this._sendMicScore(this._micPaused?0:e.out)}addNewStream(e,t,r,i,s=[]){if("0"===e){this._micPaused=r,this._webcamPaused=i;const e=t.getVideoTracks()[0],n=t.getAudioTracks()[0];if(e){this._sendWebcam(e),e.effectTrack||this._monitorVideoTrack(e);const t=s.find((e=>"video"===e.kind));t&&this._monitorVideoTrack(t)}if(n){this._sendMic(n),this._syncMicAnalyser(),n.effectTrack||this._monitorAudioTrack(n);const e=s.find((e=>"audio"===e.kind));e&&this._monitorAudioTrack(e)}this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const a=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",a),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",a)}}else{const e=t.getVideoTracks()[0],r=t.getAudioTracks()[0];e&&this._sendScreenVideo(e),r&&this._sendScreenAudio(r),this._emitScreenshareStarted()}}_syncMicAnalyser(){if(!this._micTrack||!this._colocation||this._micAnalyser)return this._micAnalyser&&!this._colocation?(this._micAnalyser.close(),void(this._micAnalyser=null)):void 0;this._micAnalyser=function({micTrack:e,params:t,onScoreUpdated:r}){const i=new AudioContext;let s=null,n=null,a=null,o=!1;const c=e=>_f(this,void 0,void 0,(function*(){if(a&&o&&a.stop(),o=!1,e&&t.separateTrack)try{const r=yield navigator.mediaDevices.getUserMedia({audio:Object.assign({deviceId:null==a?void 0:a.getSettings().deviceId},t.separateTrack),video:!1});e=r.getAudioTracks()[0],o=!0}catch(e){p_.warn("unable to fetch new track for colocation speaker analysis, using current",e)}if(a=e,n&&(n.disconnect(),n=null),e){const t=new MediaStream([e]);n=i.createMediaStreamSource(t),n.connect(s)}}));let d;const l=e=>{if(clearInterval(d),t=Object.assign(Object.assign({},l_),e),!s||s.fftSize!==2*t.bins){let e=null;s&&(e=a,c(null)),s=i.createAnalyser(),s.fftSize=2*t.bins,e&&c(e)}const n=new Uint8Array(s.frequencyBinCount),o=[];s.minDecibels=t.minDecibels,s.maxDecibels=t.maxDecibels,s.smoothingTimeConstant=t.smoothingTimeConstant;const l=t.initScript&&new Function("f","setTrack","lastTrack",t.initScript.join("\n")),p=t.scoreScript&&new Function("bins","g","f",t.scoreScript.join("\n")),u=t.scoreFormula&&new Function("bands",`return ${t.scoreFormula}`),h=t.outFormula&&new Function("score","avg","max","scores",`return ${t.outFormula}`),m=t.binFormula&&new Function("bin","index",`return ${t.binFormula}`);let f=0;const g=l&&l(d_,c,a);d=setInterval((()=>{s.getByteFrequencyData(n);let e=0;if(u){const r=t.bands.map((e=>{const t=e.map((e=>m(n[e]/255,e)));return{avg:t.reduce(((e,t)=>e+t),0)/e.length,min:t.reduce(((e,t)=>Math.min(e,t/255)),Number.MAX_VALUE),max:t.reduce(((e,t)=>Math.max(e,t/255)),0)}}));e=u(r)||0}else p&&(e=p(n,g,d_),isNaN(e)&&(e=0));if(o.push(e),o.length>t.aggSize&&o.shift(),f++,f>=t.reportRate){f=0;const t=o.reduce(((e,t)=>Math.max(e,t)),0),i=o.reduce(((e,t)=>e+t),0)/o.length,s=h(e,i,t,o);r({bins:n,score:e,max:t,avg:i,out:s})}}),1e3/t.sampleRate)};return l(t),c(e),{setParams:l,setTrack:c,close(){c(null),clearInterval(d),i.close()}}}({micTrack:this._micTrack,onScoreUpdated:this._onMicAnalyserScoreUpdated.bind(this)})}stopOrResumeAudio(e,t){v_.info("stopOrResumeAudio() [enabled:%s]",t),this._micPaused=!t,this._pauseResumeMic()}_handleStopOrResumeVideo({enable:e,track:t}){e?this._sendWebcam(t):this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track===t&&(this._stopProducer(this._webcamProducer),this._webcamProducer=null,this._webcamTrack=null)}stopOrResumeVideo(e,t){var r;if(v_.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(__))if(t){if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const i=r.getVideoTracks()[0];e.addTrack(i),this._monitorVideoTrack(i),this._emitToPWA(Ev,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}else{clearTimeout(this._stopCameraTimeout);const i="ended"===(null===(r=e.getVideoTracks().find((e=>!e.enabled)))||void 0===r?void 0:r.readyState)?0:5e3;this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(Ov,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),i)}}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){v_.info("acceptNewStream()",{streamId:e,clientId:t});const r=this._getOrCreateClientState(t);e!==t?(r.hasAcceptedScreenStream=!0,r.hasEmittedScreenStream=!1):(r.hasAcceptedWebcamStream=!0,r.hasEmittedWebcamStream=!1),this._syncIncomingStreamsWithPWA(t)}updateStreamResolution(e,t,{width:r,height:i}){var s,n;v_.info("updateStreamResolution()",{streamId:e,width:r,height:i});const a=this._streamIdToVideoConsumerId.get(e),o=this._consumers.get(a);if(!o)return void this._streamIdToVideoResolution.set(e,{width:r,height:i});const c=function(e){let t=0;return e.forEach((e=>{var r,i;e._closed||e._paused||"webcam"!==(null===(r=e._appData)||void 0===r?void 0:r.source)&&"screenvideo"!==(null===(i=e._appData)||void 0===i?void 0:i.source)||t++})),t}(this._consumers),d=function(e){var t,r,i;return/T3/.test((null===(i=null===(r=null===(t=e._rtpParameters)||void 0===t?void 0:t.encodings)||void 0===r?void 0:r[0])||void 0===i?void 0:i.scalabilityMode)||"")?3:2}(o),{spatialLayer:l,temporalLayer:p}=function({width:e,height:t},{numberOfActiveVideos:r,numberOfTemporalLayers:i,uncappedSingleRemoteVideoOn:s}){const n=Math.max(e,t);let a=n>=480?n>=960?2:1:0,o=i-1;return n<100&&(o=Math.max(i-2,0)),r>8&&0===a&&(o=Math.max(i-2,0)),r<4&&n>300&&0===a&&(a=1),s&&1===r&&(a=2,o=i-1),{spatialLayer:a,temporalLayer:o}}({width:r,height:i},{numberOfActiveVideos:c,numberOfTemporalLayers:d,uncappedSingleRemoteVideoOn:null===(s=this._features)||void 0===s?void 0:s.uncappedSingleRemoteVideoOn});o.appData.spatialLayer===l&&o.appData.temporalLayer===p||(o.appData.spatialLayer=l,o.appData.temporalLayer=p,null===(n=this._vegaConnection)||void 0===n||n.message("setConsumersPreferredLayers",{consumerIds:[a],spatialLayer:l,temporalLayer:p}))}disconnectAll(){var e,t,r,i;this._reconnect=!1,this._reconnectTimeOut&&(clearTimeout(this._reconnectTimeOut),this._reconnectTimeOut=null),this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null),this._socketListenerDeregisterFunctions=[],null===(e=this._vegaConnection)||void 0===e||e.removeAllListeners(),null===(t=this._vegaConnection)||void 0===t||t.close(),null===(r=this._sendTransport)||void 0===r||r.close(),null===(i=this._receiveTransport)||void 0===i||i.close(),this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._streamIdToVideoConsumerId.clear(),this._mediasoupDevice=null}sendAudioMutedStats(e){Rf.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Rf.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Rf.sendEvent(e,t)}rtcStatsDisconnect(){Rf.server.close()}rtcStatsReconnect(){Rf.server.connected||Rf.server.connect()}_monitorAudioTrack(e){var t,r;(null===(t=this._audioTrackBeingMonitored)||void 0===t?void 0:t.id)!==e.id&&(null===(r=this._audioTrackBeingMonitored)||void 0===r||r.removeEventListener("ended",this._audioTrackOnEnded),e.addEventListener("ended",this._audioTrackOnEnded),this._audioTrackBeingMonitored=e)}_monitorVideoTrack(e){var t,r;(null===(t=this._videoTrackBeingMonitored)||void 0===t?void 0:t.id)!==e.id&&(null===(r=this._videoTrackBeingMonitored)||void 0===r||r.removeEventListener("ended",this._videoTrackOnEnded),e.addEventListener("ended",this._videoTrackOnEnded),this._videoTrackBeingMonitored=e)}_onMessage(e){return _f(this,void 0,void 0,(function*(){const{method:t,data:r}=e;return Promise.resolve().then((()=>{switch(t){case"consumerReady":return this._onConsumerReady(r);case"consumerClosed":return this._onConsumerClosed(r);case"consumerPaused":return this._onConsumerPaused(r);case"consumerResumed":return this._onConsumerResumed(r);case"dataConsumerReady":return this._onDataConsumerReady(r);case"dataConsumerClosed":return this._onDataConsumerClosed(r);case"dominantSpeaker":return this._onDominantSpeaker(r);case"consumerScore":return this._onConsumerScore(r);case"producerScore":return this._onProducerScore(r);default:return void v_.info(`unknown message method "${t}"`)}})).catch((e=>{v_.error('"message" failed [error:%o]',e)}))}))}_onConsumerReady(e){return _f(this,void 0,void 0,(function*(){v_.info("_onConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consume(e);if(t.pause(),t.appData.localPaused=!0,t.appData.spatialLayer=2,this._consumers.set(t.id,t),this._qualityMonitor.addConsumer(t.appData.sourceClientId,t.id),t.observer.once("close",(()=>{this._consumers.delete(t.id),this._qualityMonitor.removeConsumer(t.appData.sourceClientId,t.id),this._consumerClosedCleanup(t)})),this._features.increaseIncomingMediaBufferOn&&t.rtpReceiver)try{t.rtpReceiver.jitterBufferTarget=ev,t.rtpReceiver.playoutDelayHint=.4}catch(e){v_.error("Error during setting jitter buffer target:",e)}const{sourceClientId:r,screenShare:i,streamId:s}=t.appData,n=this._getOrCreateClientState(r);i?(n.hasEmittedScreenStream=!1,n.screenShareStreamId=s):(n.hasEmittedWebcamStream=!1,n.camStreamId=s);let a=i?n.screenStream:n.webcamStream;a&&a.inboundId===s||(a=new MediaStream,a.inboundId=s,i?n.screenStream=a:n.webcamStream=a),"video"===t.kind&&this._streamIdToVideoConsumerId.set(a.id,t.id),a.addTrack(t.track),this._syncIncomingStreamsWithPWA(r);const o=this._streamIdToVideoResolution.get(a.id);o&&(this.updateStreamResolution(a.id,null,o),this._streamIdToVideoResolution.delete(a.id))}))}_onConsumerClosed({consumerId:e,reason:t}){var r;return _f(this,void 0,void 0,(function*(){v_.info("_onConsumerClosed()",{consumerId:e,reason:t}),null===(r=this._consumers.get(e))||void 0===r||r.close()}))}_onConsumerPaused({consumerId:e}){v_.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){v_.info("_onConsumerResumed()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!1,t.appData.localPaused||t.resume())}_onConsumerScore({consumerId:e,kind:t,score:r}){v_.info("_onConsumerScore()",{consumerId:e,kind:t,score:r});const{appData:{sourceClientId:i}}=this._consumers.get(e)||{appData:{}};i&&this._qualityMonitor.addConsumerScore(i,e,t,r)}_onProducerScore({producerId:e,kind:t,score:r}){v_.info("_onProducerScore()",{producerId:e,kind:t,score:r}),[this._micProducer,this._webcamProducer,this._screenVideoProducer,this._screenAudioProducer].forEach((i=>{(null==i?void 0:i.id)===e&&this._qualityMonitor.addProducerScore(this._selfId,e,t,r)}))}_onDataConsumerReady(e){return _f(this,void 0,void 0,(function*(){v_.info("_onDataConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consumeData(e);this._dataConsumers.set(t.id,t),t.once("close",(()=>{this._dataConsumers.delete(t.id)}));const{clientId:r}=t.appData;t.on("message",(e=>{var r;if(!this._micAnalyserDebugger)return;if("string"!=typeof e)return;const{score:i}=JSON.parse(e);i&&(null===(r=this._micAnalyserDebugger)||void 0===r||r.onConsumerScore(t.appData.clientId,i))})),this._syncIncomingStreamsWithPWA(r)}))}_onDataConsumerClosed({dataConsumerId:e,reason:t}){return _f(this,void 0,void 0,(function*(){v_.info("_onDataConsumerClosed()",{dataConsumerId:e,reason:t});const r=this._dataConsumers.get(e);null==r||r.close()}))}_onDominantSpeaker({consumerId:e}){const t=this._consumers.get(e);if(!t)return;const{sourceClientId:r}=t.appData;this._emitToPWA(Yv,{clientId:r})}_consumerClosedCleanup(e){const{sourceClientId:t,screenShare:r}=e.appData,i=this._getOrCreateClientState(t),s=r?i.screenStream:i.webcamStream;s&&(s.removeTrack(e.track),0===s.getTracks().length&&(this._streamIdToVideoConsumerId.delete(s.id),this._streamIdToVideoResolution.delete(s.id),r?(i.screenStream=null,i.hasEmittedScreenStream=!1,i.screenShareStreamId=null):(i.hasEmittedWebcamStream=!1,i.camStreamId=null)))}_syncIncomingStreamsWithPWA(e){var t,r;const i=this._getOrCreateClientState(e),{webcamStream:s,screenStream:n,hasEmittedWebcamStream:a,hasEmittedScreenStream:o,hasAcceptedWebcamStream:c,hasAcceptedScreenStream:d,screenShareStreamId:l,camStreamId:p}=i,u=[],h=[];this._consumers.forEach((t=>{if(t.appData.sourceClientId!==e)return;const r=t.appData.screenShare?d:c;!t.appData.localPaused!==r&&(r?(t.appData.remotePaused||t.resume(),t.appData.localPaused=!1,h.push(t.id)):(t.pause(),t.appData.localPaused=!0,u.push(t.id)))})),u.length>0&&(null===(t=this._vegaConnection)||void 0===t||t.message("pauseConsumers",{consumerIds:u})),h.length>0&&(null===(r=this._vegaConnection)||void 0===r||r.message("resumeConsumers",{consumerIds:h})),s&&!a&&c&&(this._emitToPWA(Pv,{clientId:e,stream:s,streamId:p,streamType:"webcam"}),i.hasEmittedWebcamStream=!0),n&&!o&&d&&(this._emitToPWA(Pv,{clientId:e,stream:n,streamId:l,streamType:"screenshare"}),i.hasEmittedScreenStream=!0)}_getOrCreateClientState(e){let t=this._clientStates.get(e);return t||(t={hasAcceptedWebcamStream:!1,hasAcceptedScreenStream:!1,hasEmittedWebcamStream:!1,hasEmittedScreenStream:!1,webcamStream:null,screenStream:null,screenShareStreamId:null,camStreamId:null},this._clientStates.set(e,t)),t}_emitToPWA(e,t){this._emitter.emit(e,t)}_emitToSignal(e,t,r){this._serverSocket.emit(e,t,r)}shouldAcceptStreamsFromBothSides(){return!0}setMicAnalyserDebugger(e){this._micAnalyserDebugger=e}setMicAnalyserParams(e){var t;null===(t=this._micAnalyser)||void 0===t||t.setParams(e)}hasClient(e){return this._clientStates.has(e)}}class C_{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:i}){this.emitter=e,this.currentManager=null,t.on(Sg,(({room:s,selfId:n,error:a,eventClaim:o})=>{if(a)return;const c={selfId:n,room:s,emitter:e,serverSocket:t,webrtcProvider:r,features:i,eventClaim:o,deviceHandlerFactory:null==i?void 0:i.deviceHandlerFactory},d=!!s.sfuServer;if(this.currentManager){if(this.currentManager.isInitializedWith({selfId:n,roomName:s.name,isSfu:d}))return void(this.currentManager.setEventClaim&&o&&this.currentManager.setEventClaim(o));this.currentManager.disconnectAll(),e.emit(Iv)}let l=null;l=d?new w_(c):new c_(c),l.rtcStatsReconnect(),l.setupSocketListeners(),e.emit(Dv,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(Iv))}}var R_;function T_(e,t){return ai(e,t)}function k_(e){return t=>(r,i,s)=>"connected"!==i().roomConnection.status?(console.warn("Action cannot be performed outside of a connected room"),!1):e(t)(r,i,s)}function P_(e,t){return T_(e,((e,r)=>{const{getState:i}=r;return"connected"!==i().roomConnection.status?(console.warn("Action cannot be performed outside of a connected room"),Promise.reject("Action cannot be performed outside of a connected room")):t(e,r)}))}!function(e){e.rtc_manager_created="rtc_manager_created",e.stream_added="stream_added"}(R_||(R_={}));const D_=((e={})=>{const t=new Map,{extra:r,onError:i=zi}=e;wi(i,"onError");const s=e=>{let r=Qr(Array.from(t.values()),(t=>t.effect===e.effect));return r||(r=Ni(e)),(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&Bi(e)}))(r)};Object.assign(s,{withTypes:()=>s});const n=e=>{const{type:r,effect:i,predicate:s}=Ai(e),n=Qr(Array.from(t.values()),(e=>("string"==typeof r?e.type===r:e.predicate===s)&&e.effect===i));return n&&(n.unsubscribe(),e.cancelActive&&Bi(n)),!!n};Object.assign(n,{withTypes:()=>n});const a=async(e,n,a,o)=>{const c=new AbortController,d=ji(s,c.signal),l=[];try{e.pending.add(c),await Promise.resolve(e.effect(n,Oi({},a,{getOriginalState:o,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Ei(c.signal),pause:Ii(c.signal),extra:r,signal:c.signal,fork:Li(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(ki(e,bi),r.delete(e))}))},cancel:()=>{ki(c,bi),e.pending.delete(c)},throwIfCancelled:()=>{Pi(c.signal)}})))}catch(e){e instanceof Si||Fi(i,e,{raisedBy:"effect"})}finally{await Promise.all(l),ki(c,yi),e.pending.delete(c)}},o=(e=>()=>{e.forEach(Bi),e.clear()})(t);return{middleware:e=>r=>c=>{if(!zt(c))return r(c);if($i.match(c))return s(c.payload);if(Vi.match(c))return void o();if(Ui.match(c))return n(c.payload);let d=e.getState();const l=()=>{if(d===Mi)throw new Error(`${xi}: getOriginalState can only be called synchronously`);return d};let p;try{if(p=r(c),t.size>0){const r=e.getState(),s=Array.from(t.values());for(const t of s){let s=!1;try{s=t.predicate(c,r,d)}catch(e){s=!1,Fi(i,e,{raisedBy:"predicate"})}s&&a(t,c,e,l)}}}finally{d=Mi}return p},startListening:s,stopListening:n,clearListeners:o}})(),I_=D_.startListening,E_=(e,t)=>I_({predicate:(t,r,i)=>{const s=e.map((e=>e(i))),n=e.map((e=>e(r)));return s.some(((e,t)=>e!==n[t]))},effect:(r,{dispatch:i,getState:s,extra:n})=>{const a=e.map((e=>e(s())));t({dispatch:i,getState:s,extra:n},...a)}}),O_=ui({name:"app",initialState:{isNodeSdk:!1,isActive:!1,isDialIn:!1,roomName:null,roomUrl:null,displayName:null,userAgent:"core:0.29.3",externalId:null},reducers:{doAppStart:(e,t)=>{const r=new URL(t.payload.roomUrl);return Object.assign(Object.assign(Object.assign({},e),t.payload),{roomName:r.pathname,initialConfig:Object.assign({},t.payload),isActive:!0})},doAppStop:e=>Object.assign(Object.assign({},e),{isActive:!1})}}),{doAppStop:M_,doAppStart:x_}=O_.actions,L_=e=>e.app.isActive,j_=e=>e.app.displayName,A_=e=>e.app.externalId;function N_(e){return Jr(`signalConnection/event/${e}`)}const B_={audioEnabled:N_("audioEnabled"),audioEnableRequested:N_("audioEnableRequested"),breakoutGroupJoined:N_("breakoutGroupJoined"),chatMessage:N_("chatMessage"),clientLeft:N_("clientLeft"),clientKicked:N_("clientKicked"),clientMetadataReceived:N_("clientMetadataReceived"),clientUnableToJoin:N_("clientUnableToJoin"),cloudRecordingStarted:N_("cloudRecordingStarted"),cloudRecordingStopped:N_("cloudRecordingStopped"),disconnect:N_("disconnect"),knockerLeft:N_("knockerLeft"),knockHandled:N_("knockHandled"),newClient:N_("newClient"),roomJoined:N_("roomJoined"),roomKnocked:N_("roomKnocked"),roomLeft:N_("roomLeft"),roomLocked:N_("roomLocked"),roomSessionEnded:N_("roomSessionEnded"),screenshareStarted:N_("screenshareStarted"),screenshareStopped:N_("screenshareStopped"),spotlightAdded:N_("spotlightAdded"),spotlightRemoved:N_("spotlightRemoved"),streamingStopped:N_("streamingStopped"),videoEnabled:N_("videoEnabled"),videoEnableRequested:N_("videoEnableRequested"),liveTranscriptionStarted:N_("liveTranscriptionStarted"),liveTranscriptionStopped:N_("liveTranscriptionStopped")},F_={canLockRoom:["host"],canRequestAudioEnable:["host"],canRequestVideoEnable:["host"],canKickClient:["host"],canEndMeeting:["host"],canAskToSpeak:["host"],canSpotlight:["host"]},$_=ui({name:"authorization",initialState:{roomKey:null,roleName:"none"},reducers:{setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})},extraReducers:e=>{e.addCase(x_,((e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload.roomKey}))),e.addCase(B_.roomJoined,((e,t)=>{var r,i;const s=null===(i=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===i?void 0:i.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{roleName:(null==s?void 0:s.role.roleName)||"none"})}))}}),{setRoomKey:V_}=$_.actions,U_=e=>e.authorization.roleName;Wr(U_,(e=>F_.canLockRoom.includes(e))),Wr(U_,(e=>F_.canRequestAudioEnable.includes(e))),Wr(U_,(e=>F_.canRequestVideoEnable.includes(e))),Wr(U_,(e=>F_.canKickClient.includes(e))),Wr(U_,(e=>F_.canEndMeeting.includes(e)));const z_=Wr(U_,(e=>F_.canAskToSpeak.includes(e)));function q_(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(i=Object.getOwnPropertySymbols(e);s<i.length;s++)t.indexOf(i[s])<0&&Object.prototype.propertyIsEnumerable.call(e,i[s])&&(r[i[s]]=e[i[s]])}return r}function G_(e,t,r,i){return new(r||(r=Promise))((function(s,n){function a(e){try{c(i.next(e))}catch(e){n(e)}}function o(e){try{c(i.throw(e))}catch(e){n(e)}}function c(e){e.done?s(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(a,o)}c((i=i.apply(e,t||[])).next())}))}Wr(U_,(e=>F_.canSpotlight.includes(e))),"function"==typeof SuppressedError&&SuppressedError;const H_=ui({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(W_.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(W_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(W_.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),W_=T_("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>G_(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),K_=e=>e.deviceCredentials;E_([Wr(L_,K_,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(W_())}));const J_=ui({name:"signalConnection",initialState:{deviceIdentified:!1,isIdentifyingDevice:!1,status:"ready",socket:null},reducers:{socketConnecting:e=>Object.assign(Object.assign({},e),{status:"connecting"}),socketConnected:(e,t)=>Object.assign(Object.assign({},e),{socket:t.payload,status:"connected"}),socketDisconnected:e=>Object.assign(Object.assign({},e),{socket:null,deviceIdentified:!1,status:"disconnected"}),socketReconnecting:e=>Object.assign(Object.assign({},e),{status:"reconnecting"}),deviceIdentifying:e=>Object.assign(Object.assign({},e),{isIdentifyingDevice:!0}),deviceIdentified:e=>Object.assign(Object.assign({},e),{deviceIdentified:!0,isIdentifyingDevice:!1})},extraReducers:e=>{e.addCase(B_.disconnect,(e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"})))}}),{deviceIdentifying:Q_,deviceIdentified:Z_,socketConnected:Y_,socketConnecting:X_,socketDisconnected:eb,socketReconnecting:tb}=J_.actions,rb=()=>(e,t)=>{if(cb(t()))return;e(X_());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new Lg(e,{autoConnect:!1})}();r.on("connect",(()=>e(Y_(r)))),r.on("device_identified",(()=>e(Z_()))),r.getManager().on("reconnect",(()=>e(tb()))),function(e,t){e.on("room_joined",(e=>t(B_.roomJoined(e)))),e.on("new_client",(e=>t(B_.newClient(e)))),e.on("client_left",(e=>t(B_.clientLeft(e)))),e.on("client_kicked",(e=>t(B_.clientKicked(e)))),e.on("client_unable_to_join",(e=>t(B_.clientUnableToJoin(e)))),e.on("audio_enabled",(e=>t(B_.audioEnabled(e)))),e.on("video_enabled",(e=>t(B_.videoEnabled(e)))),e.on("audio_enable_requested",(e=>t(B_.audioEnableRequested(e)))),e.on("client_metadata_received",(e=>t(B_.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(B_.chatMessage(e)))),e.on("disconnect",(()=>t(B_.disconnect()))),e.on("room_knocked",(e=>t(B_.roomKnocked(e)))),e.on("room_left",(()=>t(B_.roomLeft()))),e.on("room_locked",(e=>t(B_.roomLocked(e)))),e.on("room_session_ended",(e=>t(B_.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(B_.knockerLeft(e)))),e.on("knock_handled",(e=>t(B_.knockHandled(e)))),e.on("screenshare_started",(e=>t(B_.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(B_.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(B_.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(B_.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(B_.streamingStopped()))),e.on("spotlight_added",(e=>t(B_.spotlightAdded(e)))),e.on("spotlight_removed",(e=>t(B_.spotlightRemoved(e)))),e.on("live_transcription_started",(e=>t(B_.liveTranscriptionStarted(e)))),e.on("live_transcription_stopped",(e=>t(B_.liveTranscriptionStopped(e)))),e.on("video_enable_requested",(e=>t(B_.videoEnableRequested(e)))),e.on("breakout_group_joined",(e=>t(B_.breakoutGroupJoined(e))))}(r,e),r.connect()},ib=({deviceCredentials:e})=>(t,r)=>{const i=r(),s=cb(i),n=ab(i);s&&(n||(s.emit("identify_device",{deviceCredentials:e}),t(Q_())))},sb=()=>(e,t)=>{const r=t();if("connected"===ob(r)){const t=nb(r).socket;null==t||t.disconnect(),e(eb())}},nb=e=>e.signalConnection,ab=e=>e.signalConnection.deviceIdentified,ob=e=>e.signalConnection.status,cb=e=>e.signalConnection.socket;E_([Wr(L_,ob,((e,t)=>!(!e||!["ready","reconnecting"].includes(t))))],(({dispatch:e},t)=>{t&&e(rb())}));const db=Wr(K_,ob,ab,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,i)=>!(!e.data||"connected"!==t||r||i)));E_([db,K_],(({dispatch:e},t,r)=>{t&&r.data&&e(ib({deviceCredentials:r.data}))})),I_({actionCreator:B_.roomLeft,effect:(e,{dispatch:t})=>{t(sb())}}),I_({actionCreator:B_.clientKicked,effect:(e,{dispatch:t})=>{t(sb())}});const lb=ui({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(B_.chatMessage,((e,t)=>{const r={senderId:t.payload.senderId,timestamp:t.payload.timestamp,text:t.payload.text};return Object.assign(Object.assign({},e),{chatMessages:[...e.chatMessages,r]})}))}}),pb=ui({name:"cloudRecording",initialState:{isRecording:!1,error:null,startedAt:void 0},reducers:{recordingRequestStarted:e=>Object.assign(Object.assign({},e),{status:"requested"})},extraReducers:e=>{e.addCase(B_.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(B_.cloudRecordingStarted,((e,t)=>{const{payload:r}=t;return r.error?Object.assign(Object.assign({},e),{isRecording:!1,status:"error",error:r.error}):e})),e.addCase(B_.newClient,((e,{payload:t})=>{var r;const{client:i}=t;return"recorder"===(null===(r=i.role)||void 0===r?void 0:r.roleName)?Object.assign(Object.assign({},e),{isRecording:!0,status:"recording",startedAt:i.startedCloudRecordingAt?new Date(i.startedCloudRecordingAt).getTime():(new Date).getTime()}):e}))}});pb.actions;const ub=ui({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase(hb.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(hb.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(hb.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),hb=T_("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>G_(void 0,void 0,void 0,(function*(){try{const e=(e=>e.app.roomUrl)(r()),i=yield t.services.fetchOrganizationFromRoomUrl(e||"");if(!i)throw new Error("Invalid room url");return i}catch(e){console.error(e)}})))),mb=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId},fb=Wr(L_,(e=>e.organization),K_,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)));E_([fb],(({dispatch:e},t)=>{t&&e(hb())}));const gb=ui({name:"localMedia",initialState:{busyDeviceIds:[],cameraEnabled:!1,currentSpeakerDeviceId:"default",devices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isSettingSpeakerDevice:!1,isTogglingCamera:!1,lowDataMode:!1,microphoneEnabled:!1,status:"inactive",stream:void 0,isSwitchingStream:!1},reducers:{deviceBusy:(e,t)=>e.busyDeviceIds.includes(t.payload.deviceId)?e:Object.assign(Object.assign({},e),{busyDeviceIds:[...e.busyDeviceIds,t.payload.deviceId]}),toggleCameraEnabled(e,t){var r;return Object.assign(Object.assign({},e),{cameraEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.cameraEnabled})},setCurrentCameraDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentCameraDeviceId:t.payload.deviceId}),toggleMicrophoneEnabled(e,t){var r;return Object.assign(Object.assign({},e),{microphoneEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.microphoneEnabled})},setCurrentMicrophoneDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentMicrophoneDeviceId:t.payload.deviceId}),setCurrentSpeakerDeviceId(e,t){var r;return Object.assign(Object.assign({},e),{currentSpeakerDeviceId:null!==(r=t.payload.deviceId)&&void 0!==r?r:"default"})},toggleLowDataModeEnabled(e,t){var r;return Object.assign(Object.assign({},e),{lowDataMode:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.lowDataMode})},setDevices:(e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}),setLocalMediaStream:(e,t)=>Object.assign(Object.assign({},e),{stream:t.payload.stream}),setLocalMediaOptions:(e,t)=>Object.assign(Object.assign({},e),{options:t.payload.options}),localMediaStopped:e=>Object.assign(Object.assign({},e),{status:"stopped",stream:void 0}),localStreamMetadataUpdated(e,t){const{audio:r,video:i}=t.payload;return Object.assign(Object.assign({},e),{currentCameraDeviceId:i.deviceId,currentMicrophoneDeviceId:r.deviceId,busyDeviceIds:e.busyDeviceIds.filter((e=>e!==r.deviceId&&e!==i.deviceId))})}},extraReducers:e=>{e.addCase(x_,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase(Ob.pending,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:i,isSettingMicrophoneDevice:r})})),e.addCase(Ob.fulfilled,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice})})),e.addCase(Ob.rejected,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!i&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice,cameraDeviceError:i?t.error:e.cameraDeviceError,microphoneDeviceError:r?t.error:e.microphoneDeviceError})})),e.addCase(Db.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase(Db.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(Mb.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(Lb.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(Lb.fulfilled,((e,{payload:{stream:t,onDeviceChange:r}})=>{let i,s,n=!1,a=!1;const o=t.getAudioTracks()[0],c=t.getVideoTracks()[0];return o&&(s=o.getSettings().deviceId,a=o.enabled),c&&(n=c.enabled,i=c.getSettings().deviceId),Object.assign(Object.assign({},e),{stream:t,status:"started",currentCameraDeviceId:i,currentMicrophoneDeviceId:s,cameraEnabled:n,microphoneEnabled:a,onDeviceChange:r})})),e.addCase(Lb.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase(xb.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase(xb.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase(xb.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:vb,setCurrentCameraDeviceId:_b,setCurrentMicrophoneDeviceId:bb,setCurrentSpeakerDeviceId:yb,toggleCameraEnabled:Sb,toggleMicrophoneEnabled:wb,toggleLowDataModeEnabled:Cb,setLocalMediaOptions:Rb,setLocalMediaStream:Tb,localMediaStopped:kb,localStreamMetadataUpdated:Pb}=gb.actions,Db=T_("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>G_(void 0,void 0,void 0,(function*(){const e=t(),i=Hb(e);if(!i)return;let s=i.getVideoTracks()[0];const n=Fb(e);try{if(n)if(s)s.enabled=!0;else{const t=Kb(e),r=Nb(e);yield pv(Object.assign(Object.assign({},t),{audioId:!1,videoId:r,type:"exact"}),{replaceStream:i}),s=i.getVideoTracks()[0]}else{if(!s)return;s.enabled=!1,s.stop(),i.removeTrack(s)}i.dispatchEvent(new CustomEvent("stopresumevideo",{detail:{track:s,enable:n}}))}catch(e){return r(e)}})))),Ib=T_("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const i=t(),s=Hb(i);if(!s)return;const n=$b(i),a=null===(r=s.getAudioTracks())||void 0===r?void 0:r[0];a&&(a.enabled=n)})),Eb=()=>(e,t)=>{const r=t();if(!Hb(r))return;const i=Nb(r),s=Bb(r);e(xb({audioId:s,videoId:i}))},Ob=T_("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:i})=>G_(void 0,void 0,void 0,(function*(){try{const i=r(),s=Hb(i);if(!s)throw new Error("No stream");const n=!!e&&Bb(i),a=!!t&&Nb(i),o=Kb(i),{replacedTracks:c}=yield pv(Object.assign(Object.assign({},o),{audioId:n,videoId:a,type:"exact"}),{replaceStream:s}),d=$b(i);s.getAudioTracks().forEach((e=>e.enabled=d));const l=Fb(i);return s.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return i(e)}})))),Mb=T_("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:i})=>G_(void 0,void 0,void 0,(function*(){var e,s,n,a;const o=t();let c=[],d=[];const l=Hb(o);try{c=yield navigator.mediaDevices.enumerateDevices(),d=Ub(o);if(!(l&&!Wb(o)&&c&&d&&d.find((e=>e.deviceId))))return{devices:c};const{changedDevices:t,addedDevices:i}=uv({oldDevices:d,newDevices:c});let p=null===(e=t.audioinput)||void 0===e?void 0:e.deviceId,u=null===(s=t.videoinput)||void 0===s?void 0:s.deviceId;return void 0===p&&(p=null===(n=i.audioinput)||void 0===n?void 0:n.deviceId),void 0===u&&(u=null===(a=i.videoinput)||void 0===a?void 0:a.deviceId),void 0===p&&void 0===u||r(xb({audioId:p,videoId:u})),{devices:c}}catch(e){return i(e)}})))),xb=T_("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:i,rejectWithValue:s})=>G_(void 0,void 0,void 0,(function*(){const n=i(),a=Hb(n),o=Kb(n),c=!(!t||e)||!(t||!e);if(a)try{const{replacedTracks:i}=yield pv(Object.assign(Object.assign({},o),{audioId:void 0!==e&&e,videoId:void 0!==t&&t,type:"exact"}),{replaceStream:a}),s=e||t;return c&&s&&r(vb({deviceId:s})),{replacedTracks:i}}catch(i){console.error(i);const n=e||t;return c&&n&&r(vb({deviceId:n})),s(i)}})))),Lb=T_("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:i})=>G_(void 0,void 0,void 0,(function*(){const s=function(e,{delay:t=500,edges:r}={}){let i,s=0;return(...n)=>{s+=1,r&&1===s&&e(...n),clearTimeout(i),i=setTimeout((()=>{(!r||s>1)&&e(...n),i=void 0,s=0}),t)}}((()=>{r(Mb())}),{delay:500});if(navigator.mediaDevices&&navigator.mediaDevices.addEventListener("devicechange",s),"getTracks"in e)return Promise.resolve({stream:e,onDeviceChange:s});if(!e.audio&&!e.video)return{stream:new MediaStream,onDeviceChange:s};r(Rb({options:e}));try{yield r(Mb());const i=t(),n=Kb(i),{stream:a}=yield pv(Object.assign(Object.assign({},n),{audioId:e.audio,videoId:e.video}));return{stream:a,onDeviceChange:s}}catch(e){return i(e)}})))),jb=()=>(e,t)=>{const r=Hb(t()),i=qb(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&i&&navigator.mediaDevices.removeEventListener("devicechange",i),e(kb())},Ab=e=>e.localMedia.busyDeviceIds,Nb=e=>e.localMedia.currentCameraDeviceId,Bb=e=>e.localMedia.currentMicrophoneDeviceId,Fb=e=>e.localMedia.cameraEnabled,$b=e=>e.localMedia.microphoneEnabled,Vb=e=>e.localMedia.lowDataMode,Ub=e=>e.localMedia.devices,zb=e=>e.localMedia.options;Wr(zb,(e=>!!e));const qb=e=>e.localMedia,Gb=e=>e.localMedia.status,Hb=e=>e.localMedia.stream,Wb=e=>e.localMedia.isSwitchingStream,Kb=Wr(Ub,Nb,Bb,Vb,((e,t,r,i)=>({devices:e,videoId:t,audioId:r,options:{disableAEC:!1,disableAGC:!1,hd:!0,lax:!1,lowDataMode:i,simulcast:!0,widescreen:!0}})));Wr(Gb,(e=>"starting"===e)),Wr(Ub,Ab,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),Wr(Ub,Ab,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),Wr(Ub,(e=>e.filter((e=>"audiooutput"===e.kind))));E_([Wr(L_,Gb,zb,((e,t,r)=>{if(e&&["inactive","stopped"].includes(t)&&r)return r}))],(({dispatch:e},t)=>{t&&e(Lb(t))}));E_([Wr(L_,Gb,zb,((e,t,r)=>!e&&"inactive"!==t&&!!r))],(({dispatch:e},t)=>{t&&e(jb())})),I_({predicate:(e,t,r)=>{const i=$b(r),s=$b(t);return"started"===Gb(r)&&i!==s},effect:(e,{dispatch:t})=>{t(Ib())}}),I_({predicate:(e,t,r)=>{const i=Vb(r),s=Vb(t);return"started"===Gb(r)&&i!==s},effect:(e,{dispatch:t})=>{t(Eb())}}),I_({predicate:(e,t,r)=>{const i=(e=>e.localMedia.isTogglingCamera)(t);if(i)return!1;const s=Fb(r),n=Fb(t);return"started"===Gb(r)&&s!==n},effect:(e,{dispatch:t})=>{t(Db())}}),I_({predicate:(e,t,r)=>{const i=Nb(r),s=Nb(t);return"started"===Gb(r)&&i!==s},effect:(e,{dispatch:t})=>{t(Ob({audio:!1,video:!0}))}}),I_({predicate:(e,t,r)=>{const i=Bb(r),s=Bb(t);return"started"===Gb(r)&&i!==s},effect:(e,{dispatch:t})=>{t(Ob({audio:!0,video:!1}))}}),I_({matcher:ti(Lb.fulfilled,Mb.fulfilled,xb.fulfilled,xb.rejected),effect:(e,{dispatch:t,getState:r})=>{const i=r(),s=Hb(i),n=Ub(i);if(!s)return;const a=function({audioTrack:e,videoTrack:t,devices:r,stoppedVideoTrack:i,lastAudioId:s,lastVideoId:n}){const a=e=>"live"===(null==e?void 0:e.readyState)?e:null;return t=a(t)||i,e=a(e),{video:dv("videoinput",t,r,n),audio:dv("audioinput",e,r,s)}}({audioTrack:s.getAudioTracks()[0],videoTrack:s.getVideoTracks()[0],devices:n});t(Pb(a))}}),I_({actionCreator:B_.audioEnableRequested,effect:({payload:e},{dispatch:t})=>{const{enable:r}=e;r||t(wb({enabled:!1}))}}),I_({actionCreator:B_.videoEnableRequested,effect:({payload:e},{dispatch:t})=>{const{enable:r}=e;r||t(Sb({enabled:!1}))}});const Jb=["recorder","streamer"],Qb=ui({name:"localParticipant",initialState:{displayName:"",id:"",breakoutGroup:null,isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"none",clientClaim:void 0,stickyReaction:void 0,isDialIn:!1},reducers:{setDisplayName:(e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName})},extraReducers:e=>{e.addCase(x_,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(Yb.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(Xb.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(ey.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{stickyReaction:t.payload}))),e.addCase(B_.roomJoined,((e,t)=>{var r,i;const s=null===(i=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===i?void 0:i.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{id:t.payload.selfId,roleName:(null==s?void 0:s.role.roleName)||"none",clientClaim:t.payload.clientClaim,breakoutGroup:(null==s?void 0:s.breakoutGroup)||null})})),e.addCase(B_.breakoutGroupJoined,((e,t)=>{var r,i;return(null===(r=t.payload)||void 0===r?void 0:r.clientId)!==e.id?e:Object.assign(Object.assign({},e),{breakoutGroup:null===(i=t.payload)||void 0===i?void 0:i.group})}))}}),{setDisplayName:Zb}=Qb.actions,Yb=P_("localParticipant/doEnableAudio",((e,{dispatch:t,getState:r})=>G_(void 0,void 0,void 0,(function*(){const i=r(),s=nb(i).socket;return null==s||s.emit("enable_audio",{enabled:e.enabled}),e.enabled&&t(ey({enabled:!1})),e.enabled})))),Xb=P_("localParticipant/doEnableVideo",((e,{getState:t})=>G_(void 0,void 0,void 0,(function*(){const r=t(),i=nb(r).socket;return null==i||i.emit("enable_video",{enabled:e.enabled}),e.enabled})))),ey=P_("localParticipant/doSetLocalStickyReaction",((e,{getState:t,rejectWithValue:r})=>G_(void 0,void 0,void 0,(function*(){var i;const s=t(),n=ny(s),a=Boolean(n),o=null!==(i=e.enabled)&&void 0!==i?i:!a;if(o===a)return r(n);return o?{reaction:"✋",timestamp:(new Date).toISOString()}:null})))),ty=k_((()=>(e,t)=>{const r=t(),i=nb(r).socket,s={displayName:sy(r),stickyReaction:ny(r)};null==i||i.emit("send_client_metadata",{type:"UserData",payload:s})})),ry=e=>e.localParticipant,iy=e=>e.localParticipant.id,sy=e=>e.localParticipant.displayName,ny=e=>e.localParticipant.stickyReaction,ay=Wr(ry,Hb,((e,t)=>{const r={id:e.id,clientId:e.id,displayName:e.displayName,stream:t,isLocalClient:!0,isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled};return Jb.includes(e.roleName)?null:r}));I_({actionCreator:Sb,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isVideoEnabled:s}=ry(r());t(Xb({enabled:i||!s}))}}),I_({actionCreator:wb,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isAudioEnabled:s}=ry(r());t(Yb({enabled:i||!s}))}}),E_([sy,ny],(({dispatch:e})=>{e(ty())}));const oy=ui({initialState:{session:null,status:"ready",error:null},name:"roomConnection",reducers:{connectionStatusChanged:(e,t)=>Object.assign(Object.assign({},e),{status:t.payload})},extraReducers:e=>{e.addCase(B_.roomJoined,((e,t)=>{var r,i;const{error:s,isLocked:n}=t.payload;return"room_locked"===s&&n?Object.assign(Object.assign({},e),{status:"room_locked"}):s?Object.assign(Object.assign({},e),{status:"disconnected",error:s}):Object.assign(Object.assign({},e),{status:"connected",session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(B_.disconnect,(e=>["kicked","left"].includes(e.status)?Object.assign({},e):Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(B_.newClient,((e,t)=>{var r,i;return Object.assign(Object.assign({},e),{session:null!==(i=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==i?i:null})})),e.addCase(B_.roomSessionEnded,((e,t)=>{var r;return(null===(r=e.session)||void 0===r?void 0:r.id)!==t.payload.roomSessionId?e:Object.assign(Object.assign({},e),{session:null})})),e.addCase(B_.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(B_.roomLeft,(e=>Object.assign(Object.assign({},e),{status:"left"}))),e.addCase(tb,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"})))}}),{connectionStatusChanged:cy}=oy.actions,dy=()=>(e,t)=>{const r=t(),i=nb(r).socket,s=(e=>e.app.roomName)(r),n=(e=>e.authorization.roomKey)(r),a=j_(r),o=(e=>e.app.userAgent)(r),c=A_(r),d=(e=>e.app.isDialIn)(r),l=mb(r),p=Fb(t()),u=$b(t()),h=(e=>e.localParticipant.clientClaim)(t());null==i||i.emit("join_room",Object.assign({avatarUrl:null,config:{isAudioEnabled:u,isVideoEnabled:p},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDialIn:d,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:l,roomKey:n,roomName:s,userAgent:o,externalId:c},h&&{clientClaim:h})),e(cy("connecting"))},ly=e=>e.roomConnection.status,py=Wr([L_,mb,ly,ab,Gb,e=>e.roomConnection.error],((e,t,r,i,s,n)=>!(!(e&&"started"===s&&i&&t&&["ready","reconnecting","disconnected"].includes(r))||n)));function uy(e){return Jr(`rtcConnection/event/${e}`)}E_([py],(({dispatch:e},t)=>{t&&e(dy())})),I_({actionCreator:B_.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:i,resolution:s}=e,n=r();i===iy(n)&&("accepted"===s?(t(V_(e.metadata.roomKey)),t(dy())):"rejected"===s&&t(cy("knock_rejected")))}}),I_({actionCreator:M_,effect:(e,{dispatch:t,getState:r})=>{const i=r();if("connected"===ly(i)){const e=nb(i).socket;null==e||e.emit("leave_room"),t(cy("leaving"))}else sb()}});const hy={rtcManagerCreated:uy("rtcManagerCreated"),rtcManagerDestroyed:uy("rtcManagerDestroyed"),streamAdded:uy("streamAdded")};function my(e,t=!1){const{streams:r,role:i,breakoutGroup:s}=e,n=q_(e,["streams","role","breakoutGroup"]);return Object.assign(Object.assign({},n),{stream:null,streams:r.map((e=>({id:e,state:t?"new_accept":"to_accept"}))),isLocalParticipant:!1,roleName:(null==i?void 0:i.roleName)||"none",presentationStream:null,breakoutGroup:s||null,newJoiner:t})}function fy(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function gy(e,t,r){const{participant:i,index:s}=fy(e,t);return i?Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants.slice(0,s),Object.assign(Object.assign({},i),r),...e.remoteParticipants.slice(s+1)]}):(console.error(`Did not find client for update ${t}`),e)}function vy(e,t,r,i){const{participant:s}=fy(e,t);if(!s)return console.error(`No client ${t} found to update stream ${r} ${i}`),e;const n=s.streams.findIndex((e=>e.id===r)),a=[...s.streams];return a[n]=Object.assign(Object.assign({},a[n]),{state:i}),gy(e,t,{streams:a})}function _y(e,t,r){const{participant:i}=fy(e,t);return!i||i.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):gy(e,t,{streams:[...i.streams,{id:r,state:"to_accept"}]})}const by=ui({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:i,state:s}of t.payload)r=vy(r,e,i,s);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:i}=t.payload;return gy(e,r,{stream:i})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:i}=t.payload;return _y(e,r,i)}},extraReducers:e=>{e.addCase(B_.roomJoined,((e,t)=>{var r;if(!(null===(r=t.payload)||void 0===r?void 0:r.room))return e;const i=t.payload.selfId,{clients:s}=t.payload.room;return Object.assign(Object.assign({},e),{remoteParticipants:s.filter((e=>e.id!==i)).map((e=>my(e)))})})),e.addCase(hy.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:i,streamType:s}=t;let{streamId:n}=t;const{participant:a}=fy(e,r);if(!a)return console.error(`Did not find client ${r} for adding stream`),e;const o=e.remoteParticipants;n||(n=i.id);const c=o.find((e=>e.id===r));if(!c)return e;const d=c.streams.find((e=>e.id===n));return c.stream&&(c.stream.id===n||c.stream.inboundId===n)||!c.stream&&"webcam"===s||!c.stream&&!s&&!d?gy(e,r,{stream:i}):gy(e,r,{presentationStream:i})}(e,t.payload))),e.addCase(B_.newClient,((e,t)=>{const{client:r}=t.payload;return function(e,t){const{participant:r}=fy(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,my(r,!0))})),e.addCase(B_.clientLeft,((e,t)=>{const{clientId:r}=t.payload;return function(e,t){return Object.assign(Object.assign({},e),{remoteParticipants:e.remoteParticipants.filter((e=>e.id!==t))})}(e,r)})),e.addCase(B_.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:i}=t.payload;return gy(e,r,{isAudioEnabled:i})})),e.addCase(B_.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:i}=t.payload;return gy(e,r,{isVideoEnabled:i})})),e.addCase(B_.clientMetadataReceived,((e,t)=>{const{error:r,payload:i}=t.payload;if(r||!i)return console.warn(r||"Client metadata error received"),e;const{clientId:s,displayName:n,stickyReaction:a}=i;return gy(e,s,{displayName:n,stickyReaction:a})})),e.addCase(B_.breakoutGroupJoined,((e,t)=>{const{clientId:r,group:i}=t.payload;return gy(e,r,{breakoutGroup:i||null})})),e.addCase(B_.screenshareStarted,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return _y(e,r,i)})),e.addCase(B_.screenshareStopped,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return function(e,t,r){var i,s;const{participant:n}=fy(e,t);if(!n)return console.error(`No participant ${t} found to remove stream ${r}`),e;const a=n.stream&&n.stream.id,o=(null===(i=n.presentationStream)||void 0===i?void 0:i.inboundId)||(null===(s=n.presentationStream)||void 0===s?void 0:s.id),c=n.streams.findIndex((e=>e.id===r));return gy(e,t,Object.assign(Object.assign({streams:n.streams.filter(((e,t)=>t!==c))},a===r&&{stream:null}),o===r&&{presentationStream:null}))}(e,r,i)}))}}),{participantStreamAdded:yy,participantStreamIdAdded:Sy,streamStatusUpdated:wy}=by.actions,Cy=e=>e.remoteParticipants.remoteParticipants,Ry=Wr(Cy,(e=>e.filter((e=>!Jb.includes(e.roleName)))));Wr(Cy,(e=>e.length+1)),Wr(Ry,ry,((e,t)=>Jb.includes(t.roleName)?e.length:e.length+1));const Ty=ui({name:"localScreenshare",initialState:{status:"inactive",stream:null,error:null},reducers:{stopScreenshare:(e,t)=>Object.assign(Object.assign({},e),{status:"inactive",stream:null})},extraReducers:e=>{e.addCase(Py.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(Py.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(Py.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"inactive",stream:null})))}}),{stopScreenshare:ky}=Ty.actions,Py=P_("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:i})=>G_(void 0,void 0,void 0,(function*(){var e;try{const i=r(),s=Iy(i);if(s)return{stream:s};const n=yield navigator.mediaDevices.getDisplayMedia(),a=()=>{t(Dy())};return"oninactive"in n?n.addEventListener("inactive",a):null===(e=n.getVideoTracks()[0])||void 0===e||e.addEventListener("ended",a),{stream:n}}catch(e){return i(e)}})))),Dy=k_((()=>(e,t)=>{const r=t(),i=Iy(r);i&&(i.getTracks().forEach((e=>e.stop())),e(ky({stream:i})))})),Iy=e=>e.localScreenshare.stream;I_({actionCreator:kb,effect:(e,{getState:t})=>{const r=t(),i=Iy(r);i&&(null==i||i.getTracks().forEach((e=>{e.stop()})))}});const Ey=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(zy(r)):"stream_added"===t?e(hy.streamAdded(r)):"rtc_manager_destroyed"===t&&e(Ny())}}),Oy={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"inactive",isAcceptingStreams:!1},My=ui({name:"rtcConnection",initialState:Oy,reducers:{isAcceptingStreams:(e,t)=>Object.assign(Object.assign({},e),{isAcceptingStreams:t.payload}),resolutionReported:(e,t)=>{const{streamId:r,width:i,height:s}=t.payload;return Object.assign(Object.assign({},e),{reportedStreamResolutions:Object.assign(Object.assign({},e.reportedStreamResolutions),{[r]:{width:i,height:s}})})},rtcDisconnected:()=>Object.assign({},Oy),rtcDispatcherCreated:(e,t)=>Object.assign(Object.assign({},e),{dispatcherCreated:!0,rtcManagerDispatcher:t.payload}),rtcManagerCreated:(e,t)=>Object.assign(Object.assign({},e),{rtcManager:t.payload,status:"ready"}),rtcManagerDestroyed:e=>Object.assign(Object.assign({},e),{rtcManager:null}),rtcManagerInitialized:e=>Object.assign(Object.assign({},e),{rtcManagerInitialized:!0})},extraReducers:e=>{e.addCase(tb,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"}))),e.addCase(B_.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"===e.status?"ready":e.status})))}}),{resolutionReported:xy,rtcDispatcherCreated:Ly,rtcDisconnected:jy,rtcManagerCreated:Ay,rtcManagerDestroyed:Ny,rtcManagerInitialized:By,isAcceptingStreams:Fy}=My.actions,$y=()=>(e,t)=>{const r=t(),i=nb(r).socket,s=Gy(r).rtcManagerDispatcher,n=Fb(r),a=$b(r),o=(e=>e.app.isNodeSdk)(r);if(s||!i)return;const c={getMediaConstraints:()=>({audio:a,video:n}),deferrable:e=>!e},d=new C_({emitter:Ey(e),serverSocket:i,webrtcProvider:c,features:{isNodeSdk:o,lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:o?Il.createFactory():void 0}});e(Ly(d))},Vy=()=>(e,t)=>{const{rtcManager:r}=Gy(t());r&&r.disconnectAll(),e(jy())},Uy=e=>(t,r)=>{var i;t(Fy(!0));const s=r(),n=Gy(s).rtcManager,a=Cy(s);if(!n)throw new Error("No rtc manager");const o=null===(i=n.shouldAcceptStreamsFromBothSides)||void 0===i?void 0:i.call(n),c=[];for(const{clientId:t,streamId:r,state:i}of e){if(a.find((e=>e.id===t))){if("to_accept"===i||"new_accept"===i&&o||"old_accept"===i&&!o)n.acceptNewStream({streamId:"0"===r?t:r,clientId:t,shouldAddLocalVideo:"0"===r,activeBreakout:false});else if("new_accept"===i||"old_accept"===i);else if("to_unaccept"===i)null==n||n.disconnect("0"===r?t:r,false);else if("done_accept"!==i)continue;c.push({clientId:t,streamId:r,state:i.replace(/to_|new_|old_/,"done_")})}}t(wy(c)),t(Fy(!1))},zy=e=>t=>{const{rtcManager:r}=e;t(Ay(r))},qy=()=>(e,t)=>{const r=Hb(t()),i=Gy(t()).rtcManager,s=Fb(t()),n=$b(t());r&&i&&i.addNewStream("0",r,!n,!s),e(By())},Gy=e=>e.rtcConnection,Hy=e=>e.rtcConnection.rtcManagerInitialized,Wy=e=>e.rtcConnection.rtcManager,Ky=e=>e.rtcConnection.status;I_({actionCreator:Ob.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:i}=Gy(t()),s=Hb(t());null==r||r.forEach((e=>{((e,t)=>{const r=null==s?void 0:s.getTracks().find((t=>t.kind===e));r&&(null==i||i.replaceTrack(t,r))})(e.kind,e)}))}}),I_({actionCreator:Py.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=Gy(t());null==i||i.addNewStream(r.id,r,!1,!0)}}),I_({actionCreator:M_,effect:(e,{getState:t})=>{const r=Wy(t());null==r||r.rtcStatsDisconnect()}}),I_({actionCreator:ky,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=Gy(t());null==i||i.removeStream(r.id,r,null)}}),I_({actionCreator:xb.fulfilled,effect:({payload:e},{getState:t})=>{var r;const i=Hb(t()),{rtcManager:s}=Gy(t());if(i&&s){const t=(e,t)=>{const r=i.getTracks().find((t=>t.kind===e));return r&&s.replaceTrack(t,r)};null===(r=null==e?void 0:e.replacedTracks)||void 0===r||r.forEach((e=>{t(e.kind,e)}))}}});const Jy=Wr(Ky,L_,(e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),cb,((e,t,r,i,s)=>!(!t||"inactive"!==e||r||i||!s)));E_([Jy],(({dispatch:e},t)=>{t&&e($y())}));const Qy=Wr(Wy,Hy,Gb,((e,t,r)=>!("started"!==r||!e||t)));E_([Qy],(({dispatch:e},t)=>{t&&e(qy())}));E_([Wr(Ky,L_,((e,t)=>!t&&!["inactive","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(Vy())}));const Zy=Wr(Ky,Cy,((e,t)=>{if("ready"!==e)return[];const r=[];for(const e of t){const{streams:t,id:i,newJoiner:s}=e;for(let e=0;e<t.length;e++){let n=t[e].id,a=t[e].state;(null==t?void 0:t.length)>1&&"0"===t[1].id&&(0===e?(n=t[1].id,a=t[1].state):1===e&&(n=t[0].id,a=t[0].state)),"done_accept"!==a&&r.push({clientId:i,streamId:n,state:(s&&"0"===n?"new":"to")+"_accept"})}}return r}));function Yy(e){return"recorder"===e.roleName}E_([Zy,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(Uy(t))}));const Xy=ui({name:"room",initialState:{isLocked:!1},reducers:{},extraReducers:e=>{e.addCase(B_.roomJoined,((e,t)=>{const{error:r,isLocked:i}=t.payload;return r?e:Object.assign(Object.assign({},e),{isLocked:Boolean(i)})})),e.addCase(B_.roomLocked,((e,t)=>{const{isLocked:r}=t.payload;return Object.assign(Object.assign({},e),{isLocked:Boolean(r)})}))}});Wr(Iy,ry,Ry,((e,t,r)=>{const i=[];e&&i.push({id:e.id||"local-screenshare",participantId:"local",hasAudioTrack:e.getTracks().some((e=>"audio"===e.kind)),breakoutGroup:t.breakoutGroup,stream:e,isLocal:!0});for(const e of r)e.presentationStream&&i.push({id:e.presentationStream.id||`pres-${e.id}`,participantId:e.id,hasAudioTrack:e.presentationStream.getTracks().some((e=>"audio"===e.kind)),breakoutGroup:e.breakoutGroup,stream:e.presentationStream,isLocal:!1});return i}));const eS=Wr(Iy,ry,Ry,((e,t,r)=>{const i=[];if(e){const r=!!e.getAudioTracks().length;i.push({clientId:t.id,displayName:"Your screenshare",id:"local-screenshare",isAudioEnabled:r,isLocalClient:!0,isPresentation:!0,isVideoEnabled:!0,stream:e})}for(const e of r){if("streamer"===e.roleName||Yy(e))continue;const{presentationStream:t}=e,r=q_(e,["presentationStream"]),s=e.displayName||"Guest",n=t&&t.active,a="pres-"+e.id,o=e.stream&&e.stream.active,c=e.isVideoEnabled;i.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,displayName:s,hasActivePresentation:!!n}),e.isVideoEnabled?{isVideoEnabled:c}:{})),n&&i.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,stream:e.presentationStream,displayName:`Screenshare (${s})`,id:a,isPresentation:!0,isVideoEnabled:!0}),o&&{isRecording:null}))}return i})),tS=Wr(ay,eS,((e,t)=>[...e?[e]:[],...t])),rS={running:!1},iS=ui({name:"connectionMonitor",initialState:rS,reducers:{connectionMonitorStarted:(e,t)=>Object.assign(Object.assign({},e),{running:!0,stopCallbackFunction:t.payload.stopIssueSubscription}),connectionMonitorStopped:()=>Object.assign({},rS)}}),{connectionMonitorStarted:sS,connectionMonitorStopped:nS}=iS.actions,aS=()=>(e,t)=>{var r;r=()=>{const e=t(),r=tS(e).map((e=>{var t,r;return{id:e.id,clientId:e.clientId,isLocalClient:e.isLocalClient,audio:{enabled:e.isAudioEnabled,track:null===(t=e.stream)||void 0===t?void 0:t.getAudioTracks()[0]},video:{enabled:e.isVideoEnabled,track:null===(r=e.stream)||void 0===r?void 0:r.getVideoTracks()[0]},isPresentation:e.isPresentation}}));return r},Bf.getClients=r;const i=Kg({onUpdatedIssues:e=>{var r;const i=t(),s=Wy(i);if(!s)return;let n=0,a=0,o=0,c=0;Object.entries(e.aggregated.metrics).forEach((([e,t])=>{/loc.*packetloss/.test(e)&&(n=Math.max(n,t.curMax)),/rem.*packetloss/.test(e)&&(a=Math.max(a,t.curMax)),/loc.*bitrate/.test(e)&&(o+=t.curSum),/rem.*bitrate/.test(e)&&(c+=t.curSum)})),s.sendStatsCustomEvent("insightsStats",{ls:Math.round(1e3*n)/1e3,lr:Math.round(1e3*a)/1e3,bs:Math.round(o),br:Math.round(c),cpu:null===(r=e.aggregated.metrics["global-cpu-pressure"])||void 0===r?void 0:r.curSum,_time:Date.now()})}});e(sS({stopIssueSubscription:i.stop}))},oS=()=>(e,t)=>{const r=t(),i=dS(r);i&&i(),e(nS())},cS=e=>e.connectionMonitor.running,dS=e=>e.connectionMonitor.stopCallbackFunction,lS=Wr(ly,cS,((e,t)=>!t&&"connected"===e)),pS=Wr(ly,cS,((e,t)=>!(!t||!["kicked","left"].includes(e))));E_([lS],(({dispatch:e},t)=>{t&&e(aS())})),E_([pS],(({dispatch:e},t)=>{t&&e(oS())}));function uS(e){return Object.assign(Object.assign({},e),{timestamp:Date.now()})}const hS=ui({name:"notifications",initialState:{emitter:new Eu,events:[]},reducers:{addNotification:(e,t)=>Object.assign(Object.assign({},e),{events:[...e.events,Object.assign({},t.payload)]}),doClearNotifications:e=>Object.assign(Object.assign({},e),{events:[]})}});hS.actions;const mS=e=>(t,r)=>{t(hS.actions.addNotification(e));const i=r(),s=fS(i);s.emit(e.type,e),s.emit("*",e)},fS=e=>e.notifications.emitter;I_({actionCreator:B_.chatMessage,effect:({payload:e},{dispatch:t,getState:r})=>{const i=r(),s=Ry(i).find((({id:t})=>t===e.senderId));s?t(mS(uS({type:"chatMessageReceived",message:`${s.displayName} says: ${e.text}`,props:{client:s,chatMessage:{senderId:e.senderId,timestamp:e.timestamp,text:e.text}}}))):console.warn("Could not find remote client that sent chat message")}}),I_({actionCreator:B_.audioEnableRequested,effect:({payload:e},{dispatch:t,getState:r})=>{const{enable:i,requestedByClientId:s}=e,n=r(),a=Ry(n).find((({id:e})=>e===s));a?t(mS(uS({type:i?"requestAudioEnable":"requestAudioDisable",message:i?`${a.displayName} has requested for you to speak`:`${a.displayName} has muted your microphone`,props:{client:a,enable:i}}))):console.warn("Could not find remote client that requested a local audio change")}}),I_({actionCreator:B_.videoEnableRequested,effect:({payload:e},{dispatch:t,getState:r})=>{const{enable:i,requestedByClientId:s}=e,n=r(),a=Ry(n).find((({id:e})=>e===s));a?t(mS(uS({type:i?"requestVideoEnable":"requestVideoDisable",message:i?`${a.displayName} has requested for you to start video`:`${a.displayName} has stopped your video`,props:{client:a,enable:i}}))):console.warn("Could not find remote client that requested a local video change")}}),I_({actionCreator:B_.clientMetadataReceived,effect:(e,{dispatch:t,getOriginalState:r,getState:i})=>{var s;const{error:n,payload:a}=e.payload;if(n||!a)return;const{clientId:o,stickyReaction:c}=a,d=i();if(!z_(d))return;const l=Ry(d).find((({id:e})=>e===o));if(!l)return void console.warn("Could not find remote client that provided updated metadata");const p=r(),u=Ry(p).find((({id:e})=>e===o));(c||(null==u?void 0:u.stickyReaction))&&(null==c?void 0:c.timestamp)!==(null===(s=null==u?void 0:u.stickyReaction)||void 0===s?void 0:s.timestamp)&&t(mS(uS({type:c?"remoteHandRaised":"remoteHandLowered",message:`${l.displayName} ${c?"raised":"lowered"} their hand`,props:{client:l,stickyReaction:c}})))}}),E_([ob],(({dispatch:e,getState:t},r)=>{const i=t(),s=ly(i);["left","kicked"].includes(s)||("disconnected"===r?e(mS(uS({type:"signalTrouble",message:"Network connection lost. Trying to reconnect you...",props:{}}))):"connected"===r&&e(mS(uS({type:"signalOk",message:"Network connection available",props:{}}))))})),I_({actionCreator:B_.clientUnableToJoin,effect:(e,{dispatch:t})=>{var r;"room_full"===(null===(r=e.payload)||void 0===r?void 0:r.error)&&t(mS(uS({type:"clientUnableToJoinFullRoom",message:"Someone tried to join but the room is full and at capacity.",props:{}})))}});const gS={audioEnabled:{actions:[Yb.fulfilled],rtcEventName:"audioEnabled",getValue:e=>$b(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[Xb.fulfilled],rtcEventName:"videoEnabled",getValue:e=>Fb(e),getOutput:e=>({enabled:e})},localStream:{actions:[Ob.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=Hb(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({stream:e})},localScreenshareStream:{actions:[Py.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=Iy(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({tracks:e})},localScreenshareStreamStopped:{actions:[ky],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[Zb],rtcEventName:"displayName",getValue:e=>j_(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>iy(e),getOutput:e=>({clientId:e})},deviceId:{actions:null,rtcEventName:"deviceId",getValue:e=>(e=>{var t,r;return null===(r=null===(t=e.deviceCredentials.data)||void 0===t?void 0:t.credentials)||void 0===r?void 0:r.uuid})(e),getOutput:e=>({deviceId:e})},externalId:{actions:null,rtcEventName:"externalId",getValue:e=>A_(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>mb(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>ob(e),getOutput:e=>({status:e})},roomSessionId:{actions:[B_.newClient,B_.roomJoined,B_.roomSessionEnded,B_.clientLeft],rtcEventName:"roomSessionId",getValue:e=>(e=>{var t;return null===(t=e.roomConnection.session)||void 0===t?void 0:t.id})(e),getOutput:e=>({roomSessionId:e})},rtcConnectionStatus:{actions:null,rtcEventName:"rtcConnectionStatus",getValue:e=>Ky(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>U_(e),getOutput:e=>({userRole:e})}},vS=Object.values(gS).flatMap((({actions:e})=>{var t;return null!==(t=null==e?void 0:e.map((e=>e)))&&void 0!==t?t:null})).filter((e=>null!==e)),_S=e=>"object"==typeof e?JSON.stringify(e):e,bS=ui({initialState:{reportedValues:{}},name:"rtcAnalytics",reducers:{updateReportedValues:(e,t)=>Object.assign(Object.assign({},e),{reportedValues:Object.assign(Object.assign({},e.reportedValues),{[t.payload.rtcEventName]:t.payload.value})})}}),yS=()=>(e,t)=>{const r=t(),i=Gy(r).rtcManager;i&&(i.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(gS).forEach((({rtcEventName:t,getValue:s,getOutput:n})=>{var a;const o=s(r),c=Object.assign(Object.assign({},n(o)),{_time:Date.now()}),d=_S(o);(null===(a=r.rtcAnalytics.reportedValues)||void 0===a?void 0:a[t])!==d&&(i.sendStatsCustomEvent(t,c),e(SS({rtcEventName:t,value:o})))})))},{updateReportedValues:SS}=bS.actions;function wS({isPresentation:e,stream:t}){var r,i;return e?null!==(i=null!==(r=null==t?void 0:t.outboundId)&&void 0!==r?r:null==t?void 0:t.inboundId)&&void 0!==i?i:null==t?void 0:t.id:"0"}function CS(e,t){return e.find((e=>e.clientId===t.clientId&&e.streamId===t.streamId))?e:e.concat(t)}I_({matcher:ti(...vS),effect:({type:e},{getState:t,dispatch:r})=>{var i;const s=t(),n=Gy(s).rtcManager;if(!n)return;const a=Object.values(gS).find((({actions:t})=>null==t?void 0:t.map((e=>e.type)).includes(e)));if(!a)return;const{getValue:o,getOutput:c,rtcEventName:d}=a,l=o(s),p=_S(l),u=Object.assign(Object.assign({},c(l)),{_time:Date.now()});(null===(i=s.rtcAnalytics.reportedValues)||void 0===i?void 0:i[d])!==p&&(n.sendStatsCustomEvent(d,u),r(SS({rtcEventName:d,value:l})))}}),E_([Hy],(({dispatch:e},t)=>{t&&e(yS())}));const RS=ui({name:"spotlights",initialState:{sorted:[]},reducers:{addSpotlight(e,t){const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:CS(e.sorted,{clientId:r,streamId:i})})},removeSpotlight(e,t){const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>!(e.clientId===r&&e.streamId===i)))})}},extraReducers:e=>{e.addCase(B_.roomJoined,((e,t)=>{if(!t.payload.room)return e;const{spotlights:r}=t.payload.room;return Object.assign(Object.assign({},e),{sorted:r})})),e.addCase(B_.spotlightAdded,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:CS(e.sorted,{clientId:r,streamId:i})})})),e.addCase(B_.spotlightRemoved,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>!(e.clientId===r&&e.streamId===i)))})})),e.addMatcher(ti(B_.clientKicked,B_.clientLeft),((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>e.clientId!==r))})}))}}),{addSpotlight:TS,removeSpotlight:kS}=RS.actions,PS=e=>e.spotlights.sorted;Wr(ry,PS,((e,t)=>function({spotlights:e,isPresentation:t,clientId:r,stream:i}){return!!e.find((e=>{const s=wS({isPresentation:t,stream:i});return e.clientId===r&&e.streamId===s}))}({clientId:e.id,stream:e.stream,spotlights:t}))),Wr(tS,PS,((e,t)=>function(e,t){return e.reduce(((e,r)=>{const i=t.find((e=>r.clientId===e.clientId&&r.streamId===wS(e)));return i&&!e.includes(i)&&e.push(i),e}),[])}(t,e))),I_({actionCreator:Py.fulfilled,effect:({payload:e},{getState:t,dispatch:r})=>{const{stream:i}=e,s=t(),n=ry(s);n&&r(TS({clientId:n.id,streamId:i.id}))}}),I_({actionCreator:ky,effect:({payload:e},{getState:t,dispatch:r})=>{const{stream:i}=e,s=t(),n=ry(s);n&&r(kS({clientId:n.id,streamId:i.id}))}});const DS=ui({name:"streaming",initialState:{isStreaming:!1,error:null,startedAt:void 0},reducers:{doHandleStreamingStarted:e=>Object.assign(Object.assign({},e),{isStreaming:!0,error:null,startedAt:(new Date).getTime()}),doHandleStreamingStopped:e=>Object.assign(Object.assign({},e),{isStreaming:!1})}});DS.actions;const IS=ui({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(B_.roomJoined,((e,{payload:t})=>{var r;return(null===(r=t.room)||void 0===r?void 0:r.knockers.length)?Object.assign(Object.assign({},e),{waitingParticipants:t.room.knockers.map((e=>({id:e.clientId,displayName:e.displayName})))}):e})),e.addCase(B_.roomKnocked,((e,t)=>{const{clientId:r,displayName:i}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:[...e.waitingParticipants,{id:r,displayName:i}]})})),e.addCase(B_.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}});let ES;!function(e){const t=Object.keys(e),r={};for(let i=0;i<t.length;i++){const s=t[i];void 0===e[s]&&Ut(`No reducer provided for key "${s}"`),"function"==typeof e[s]&&(r[s]=e[s])}const i=Object.keys(r);let s,n;s={};try{!function(e){Object.keys(e).forEach((t=>{const r=e[t];if(void 0===r(void 0,{type:$t.INIT}))throw new Error(`The slice reducer for key "${t}" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(void 0===r(void 0,{type:$t.PROBE_UNKNOWN_ACTION()}))throw new Error(`The slice reducer for key "${t}" returned undefined when probed with a random type. Don't try to handle '${$t.INIT}' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`)}))}(r)}catch(e){n=e}}({app:O_.reducer,authorization:$_.reducer,chat:lb.reducer,cloudRecording:pb.reducer,connectionMonitor:iS.reducer,deviceCredentials:H_.reducer,localMedia:gb.reducer,localParticipant:Qb.reducer,localScreenshare:Ty.reducer,notifications:hS.reducer,organization:ub.reducer,remoteParticipants:by.reducer,room:Xy.reducer,roomConnection:oy.reducer,rtcAnalytics:bS.reducer,rtcConnection:My.reducer,signalConnection:J_.reducer,spotlights:RS.reducer,streaming:DS.reducer,waitingParticipants:IS.reducer});try{ES=self.localStorage}catch(WS){ES={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}const OS=["aec","agc","audio","audioDenoiser","autoHideSelfView","autoSpotlight","background","bottomToolbar","breakout","callQualityMonitoring","cameraAccess","chat","embed","emptyRoomInvitation","floatSelf","help","leaveButton","locking","localization","logo","lowData","moreButton","participantCount","personality","pipButton","precallCeremony","precallCeremonyCanSkip","precallPermissionsHelpLink","precallReview","people","reactions","recording","roomIntegrations","screenshare","settingsButton","skipMediaPermissionPrompt","subgridLabels","timer","toolbarDarkText","topToolbar","video"];var MS,xS;MS="WherebyEmbed",xS={oninit(){this.iframe=((e,t)=>e?e[t]||(e[t]={current:null}):{current:null})()},onconnected(){window.addEventListener("message",this.onmessage.bind(this))},ondisconnected(){window.removeEventListener("message",this.onmessage.bind(this))},observedAttributes:["displayName","minimal","room","subdomain","lang","metadata","groups","virtualBackgroundUrl","avatarUrl","externalId","title","cameraEffect","emojiSkinTone",...OS].map((e=>e.toLowerCase())),onattributechanged({attributeName:e,oldValue:t}){["room","subdomain"].includes(e)&&null==t||this.render()},style:e=>`\n ${e} {\n display: block;\n }\n ${e} iframe {\n border: none;\n height: 100%;\n width: 100%;\n }\n `,_postCommand(e,t=[]){this.iframe.current&&this.iframe.current.contentWindow.postMessage({command:e,args:t},this.roomUrl.origin)},endMeeting(){this._postCommand("end_meeting")},knock(){this._postCommand("knock")},leaveRoom(){this._postCommand("leave_room")},openSettings(e="media"){this._postCommand("open_settings",[e])},startRecording(){this._postCommand("start_recording")},stopRecording(){this._postCommand("stop_recording")},startStreaming(){this._postCommand("start_streaming")},stopStreaming(){this._postCommand("stop_streaming")},startLiveTranscription(){this._postCommand("start_live_transcription")},stopLiveTranscription(){this._postCommand("stop_live_transcription")},toggleBreakout(e){this._postCommand("toggle_breakout",[e])},toggleCamera(e){this._postCommand("toggle_camera",[e])},toggleMicrophone(e){this._postCommand("toggle_microphone",[e])},togglePeople(e){this._postCommand("toggle_people",[e])},toggleScreenshare(e){this._postCommand("toggle_screenshare",[e])},toggleChat(e){this._postCommand("toggle_chat",[e])},onmessage({origin:e,data:t}){if(!this.roomUrl||e!==this.roomUrl.origin)return;const{type:r,payload:i}=t;this.dispatchEvent(new CustomEvent(r,{detail:i}))},render(){const{avatarurl:e,displayname:t,cameraeffect:r,emojiskintone:i,lang:s,metadata:n,externalid:a,minimal:o,room:c,groups:d,virtualbackgroundurl:l,title:p}=this;let u,h;try{({roomUrl:u,subdomain:h}=function(e,t){if(!e)throw new Error("Missing room attribute");const r=/https:\/\/([^.]+)(\.whereby\.com|-ip-\d+-\d+-\d+-\d+.hereby.dev:4443)\/.+/.exec(e),i=r&&r[1]||t;if(!i)throw new Error("Missing subdomain attribute");if(!r)throw new Error("Could not parse room URL");return{subdomain:i,roomUrl:new URL(e)}}(c,this.subdomain))}catch(e){return this.html`Whereby: ${e instanceof Error?e.message:"unknown error"}`}this.roomUrl=u,Object.entries(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({jsApi:!0,we:"1",iframeSource:h},t&&{displayName:t}),s&&{lang:s}),n&&{metadata:n}),i&&{emojiSkinTone:i}),a&&{externalId:a}),d&&{groups:d}),l&&{virtualBackgroundUrl:l}),e&&{avatarUrl:e}),r&&{cameraEffect:r}),null!=o&&{embed:o}),OS.reduce(((e,t)=>null!=this[t.toLowerCase()]?Object.assign(Object.assign({},e),{[t]:this[t.toLowerCase()]}):e),{}))).forEach((([e,t])=>{this.roomUrl.searchParams.has(e)||this.roomUrl.searchParams.set(e,t)})),this.html`
|
|
8
|
+
var R=function(e){var t="fragment",n="template",r="content"in s(n)?function(e){var t=s(n);return t.innerHTML=e,t.content}:function(e){var r=s(t),a=s(n),i=null;if(/^[^\S]*?<(col(?:group)?|t(?:head|body|foot|r|d|h))/i.test(e)){var c=RegExp.$1;a.innerHTML="<table>"+e+"</table>",i=a.querySelectorAll(c)}else a.innerHTML=e,i=a.childNodes;return o(r,i),r};return function(e,t){return("svg"===t?a:r)(e)};function o(e,t){for(var n=t.length;n--;)e.appendChild(t[0])}function s(n){return n===t?e.createDocumentFragment():e.createElementNS("http://www.w3.org/1999/xhtml",n)}function a(e){var n=s(t),r=s("div");return r.innerHTML='<svg xmlns="http://www.w3.org/2000/svg">'+e+"</svg>",o(n,r.firstChild.childNodes),n}}(document),P=(e,t,n,r,o)=>{const s=n.length;let a=t.length,i=s,c=0,l=0,u=null;for(;c<a||l<i;)if(a===c){const t=i<s?l?r(n[l-1],-0).nextSibling:r(n[i-l],0):o;for(;l<i;)e.insertBefore(r(n[l++],1),t)}else if(i===l)for(;c<a;)u&&u.has(t[c])||e.removeChild(r(t[c],-1)),c++;else if(t[c]===n[l])c++,l++;else if(t[a-1]===n[i-1])a--,i--;else if(t[c]===n[i-1]&&n[l]===t[a-1]){const o=r(t[--a],-1).nextSibling;e.insertBefore(r(n[l++],1),r(t[c++],-1).nextSibling),e.insertBefore(r(n[--i],1),o),t[a]=n[i]}else{if(!u){u=new Map;let e=l;for(;e<i;)u.set(n[e],e++)}if(u.has(t[c])){const o=u.get(t[c]);if(l<o&&o<i){let s=c,h=1;for(;++s<a&&s<i&&u.get(t[s])===o+h;)h++;if(h>o-l){const s=r(t[c],0);for(;l<o;)e.insertBefore(r(n[l++],1),s)}else e.replaceChild(r(n[l++],1),r(t[c++],-1))}else c++}else e.removeChild(r(t[c++],-1))}return n},U=function(e,t,n,r,o){var s=o in e,a=e.createDocumentFragment();return a[t](e[r]("g")),a[t](e[r]("")),(s?e[o](a,!0):a[n](!0)).childNodes.length<2?function e(r,o){for(var s=r[n](),a=r.childNodes||[],i=a.length,c=0;o&&c<i;c++)s[t](e(a[c],o));return s}:s?e[o]:function(e,t){return e[n](!!t)}}(document,"appendChild","cloneNode","createTextNode","importNode"),W="".trim||function(){return String(this).replace(/^\s+|\s+/g,"")},B=u?function(e,t){var n=t.join(" ");return t.slice.call(e,0).sort((function(e,t){return n.indexOf(e.name)<=n.indexOf(t.name)?-1:1}))}:function(e,t){return t.slice.call(e,0)};function Z(e,t){for(var n=t.length,r=0;r<n;)e=e.childNodes[t[r++]];return e}function z(e,t,n,r){for(var o=e.childNodes,s=o.length,a=0;a<s;){var i=o[a];switch(i.nodeType){case f:var c=r.concat(a);D(i,t,n,c),z(i,t,n,c);break;case p:var u=i.textContent;if(u===l)n.shift(),t.push(m.test(e.nodeName)?F(e,r):H(i,r.concat(a)));else switch(u.slice(0,2)){case"/*":if("*/"!==u.slice(-2))break;case"👻":e.removeChild(i),a--,s--}break;case d:m.test(e.nodeName)&&W.call(i.textContent)===h&&(n.shift(),t.push(F(e,r)))}a++}}function D(e,t,n,r){for(var o=e.attributes,s=[],a=[],i=B(o,n),c=i.length,p=0;p<c;){var f,d=i[p++],m=d.value===l;if(m||1<(f=d.value.split(h)).length){var g=d.name;if(s.indexOf(g)<0){s.push(g);var v=n.shift().replace(m?/^(?:|[\S\s]*?\s)(\S+?)\s*=\s*('|")?$/:new RegExp("^(?:|[\\S\\s]*?\\s)("+g+")\\s*=\\s*('|\")[\\S\\s]*","i"),"$1"),b=o[v]||o[v.toLowerCase()];if(m)t.push(V(b,r,v,null));else{for(var y=f.length-2;y--;)n.shift();t.push(V(b,r,v,f))}}a.push(d)}}p=0;for(var w=(0<(c=a.length)&&u&&!("ownerSVGElement"in e));p<c;){var C=a[p++];w&&(C.value=""),e.removeAttribute(C.name)}var E=e.nodeName;if(/^script$/i.test(E)){var k=document.createElement(E);for(c=o.length,p=0;p<c;)k.setAttributeNode(o[p++].cloneNode(!0));k.textContent=e.textContent,e.parentNode.replaceChild(k,e)}}function H(e,t){return{type:"any",node:e,path:t}}function V(e,t,n,r){return{type:"attr",node:e,path:t,name:n,sparse:r}}function F(e,t){return{type:"text",node:e,path:t}}var I=L(new t);function q(e,t){var n=(e.convert||v)(t),r=e.transform;r&&(n=r(n));var o=R(n,e.type);J(o);var s=[];return z(o,s,t.slice(0),[]),{content:o,updates:function(n){for(var r=[],o=s.length,a=0,i=0;a<o;){var c=s[a++],l=Z(n,c.path);switch(c.type){case"any":r.push({fn:e.any(l,[]),sparse:!1});break;case"attr":var u=c.sparse,h=e.attribute(l,c.name,c.node);null===u?r.push({fn:h,sparse:!1}):(i+=u.length-2,r.push({fn:h,sparse:!0,values:u}));break;case"text":r.push({fn:e.text(l),sparse:!1}),l.textContent=""}}return o+=i,function(){var e=arguments.length;if(o!==e-1)throw new Error(e-1+" values instead of "+o+"\n"+t.join("${value}"));for(var s=1,a=1;s<e;){var i=r[s-a];if(i.sparse){var c=i.values,l=c[0],u=1,h=c.length;for(a+=h-2;u<h;)l+=arguments[s++]+c[u++];i.fn(l)}else i.fn(arguments[s++])}return n}}}}var G=[];function Q(e){var t=G,n=J;return function(r){return t!==r&&(n=function(e,t){var n=I.get(t)||I.set(t,q(e,t));return n.updates(U.call(document,n.content,!0))}(e,t=r)),n.apply(null,arguments)}}function J(e){for(var t=e.childNodes,n=t.length;n--;){var r=t[n];1!==r.nodeType&&0===W.call(r.textContent).length&&e.removeChild(r)}}
|
|
9
|
+
/*! (c) Andrea Giammarchi - ISC */var K=function(){var e=/acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i,t=/([^A-Z])([A-Z]+)/g;return function(e,t){return"ownerSVGElement"in e?function(e,t){var n;t?n=t.cloneNode(!0):(e.setAttribute("style","--hyper:style;"),n=e.getAttributeNode("style"));return n.value="",e.setAttributeNode(n),r(n,!0)}(e,t):r(e.style,!1)};function n(e,t,n){return t+"-"+n.toLowerCase()}function r(r,o){var s,a;return function(i){var c,l,u,h;switch(typeof i){case"object":if(i){if("object"===s){if(!o&&a!==i)for(l in a)l in i||(r[l]="")}else o?r.value="":r.cssText="";for(l in c=o?{}:r,i)u="number"!=typeof(h=i[l])||e.test(l)?h:h+"px",!o&&/^--/.test(l)?c.setProperty(l,u):c[l]=u;s="object",o?r.value=function(e){var r,o=[];for(r in e)o.push(r.replace(t,n),":",e[r],";");return o.join("")}(a=c):a=i;break}default:a!=i&&(s="string",a=i,o?r.value=i||"":r.cssText=i||"")}}}}();const X=(e,t)=>{let n,r=!0;const o=document.createAttributeNS(null,t);return t=>{n!==t&&(n=t,null==n?r||(e.removeAttributeNode(o),r=!0):(o.value=t,r&&(e.setAttributeNodeNS(o),r=!1)))}},Y=({dataset:e})=>t=>{for(const n in t){const r=t[n];null==r?delete e[n]:e[n]=r}},ee=(e,t)=>"dataset"===t?Y(e):n=>{e[t]=n},te=/^(?:form|list)$/i,ne=(e,t)=>e.ownerDocument.createTextNode(t);function re(e){return this.type=e,Q(this)}function oe(e){return e(this)}re.prototype={attribute(e,t,n){const r="svg"===this.type;switch(t){case"class":if(r)return X(e,t);t="className";case"props":return ee(e,t);case"aria":return(e=>t=>{for(const n in t){const r="role"===n?n:`aria-${n}`,o=t[n];null==o?e.removeAttribute(r):e.setAttribute(r,o)}})(e);case"style":return K(e,n,r);case"ref":return(e=>t=>{"function"==typeof t?t(e):t.current=e})(e);case".dataset":return Y(e);default:return"."===t.slice(0,1)?ee(e,t.slice(1)):"?"===t.slice(0,1)?((e,t,n)=>r=>{n!==!!r&&((n=!!r)?e.setAttribute(t,""):e.removeAttribute(t))})(e,t.slice(1)):"on"===t.slice(0,2)?((e,t)=>{let n,r=t.slice(2);return!(t in e)&&t.toLowerCase()in e&&(r=r.toLowerCase()),t=>{const o=S(t)?t:[t,!1];n!==o[0]&&(n&&e.removeEventListener(r,n,o[1]),(n=o[0])&&e.addEventListener(r,n,o[1]))}})(e,t):!(t in e)||r||te.test(t)?X(e,t):((e,t)=>{let n;return r=>{n!==r&&(n=r,e[t]!==r&&(null==r?(e[t]="",e.removeAttribute(t)):e[t]=r))}})(e,t)}},any(e,t){const{type:n}=this;let r,o=!1;const s=a=>{switch(typeof a){case"string":case"number":case"boolean":o?r!==a&&(r=a,t[0].textContent=a):(o=!0,r=a,t=P(e.parentNode,t,[ne(e,a)],T,e));break;case"function":s(a(e));break;case"object":case"undefined":if(null==a){o=!1,t=P(e.parentNode,t,[],T,e);break}default:if(o=!1,r=a,S(a))if(0===a.length)t.length&&(t=P(e.parentNode,t,[],T,e));else switch(typeof a[0]){case"string":case"number":case"boolean":s(String(a));break;case"function":s(a.map(oe,e));break;case"object":S(a[0])&&(a=a.concat.apply([],a));default:t=P(e.parentNode,t,a,T,e)}else"ELEMENT_NODE"in a?t=P(e.parentNode,t,11===a.nodeType?O.call(a.childNodes):[a],T,e):"text"in a?s(String(a.text)):"any"in a?s(a.any):"html"in a?t=P(e.parentNode,t,O.call(R([].concat(a.html).join(""),n).childNodes),T,e):"length"in a&&s(O.call(a))}};return s},text(e){let t;const n=r=>{if(t!==r){t=r;const o=typeof r;"object"===o&&r?"text"in r?n(String(r.text)):"any"in r?n(r.any):"html"in r?n([].concat(r.html).join("")):"length"in r&&n(O.call(r).join("")):"function"===o?n(r(e)):e.textContent=null==r?"":r}};return n}};const{create:se,freeze:ae,keys:ie}=Object,ce=re.prototype,le=L(new t),ue=e=>({html:pe("html",e),svg:pe("svg",e),render(t,n){const r="function"==typeof n?n():n,o=le.get(t)||le.set(t,he()),s=r instanceof me?fe(e,o,r):r;return s!==o.wire&&(o.wire=s,t.textContent="",t.appendChild(s.valueOf())),t}}),he=()=>({stack:[],entry:null,wire:null}),pe=(e,n)=>{const r=L(new t);return o.for=(e,t)=>{const s=r.get(e)||r.set(e,se(null));return s[t]||(s[t]=(e=>function(){return fe(n,e,o.apply(null,arguments))})(he()))},o.node=function(){return fe(n,he(),o.apply(null,arguments)).valueOf()},o;function o(){return new me(e,ve.apply(null,arguments))}},fe=(e,t,{type:n,template:r,values:o})=>{const{length:s}=o;de(e,t,o,s);let{entry:a}=t;if(a&&a.template===r&&a.type===n)a.tag(r,...o);else{const s=new e(n);t.entry=a={type:n,template:r,tag:s,wire:M(s(r,...o))}}return a.wire},de=(e,{stack:t},n,r)=>{for(let o=0;o<r;o++){const r=n[o];r instanceof ge?n[o]=fe(e,t[o]||(t[o]=he()),r):S(r)?de(e,t[o]||(t[o]=he()),r,r.length):t[o]=null}r<t.length&&t.splice(r)};function me(e,t){this.type=e,this.template=t.shift(),this.values=t}ae(me);const ge=me;function ve(){let e=[],t=0,{length:n}=arguments;for(;t<n;)e.push(arguments[t++]);return e}ue(re);var be="function"==typeof cancelAnimationFrame,ye=be?cancelAnimationFrame:clearTimeout,we=be?requestAnimationFrame:setTimeout;function Ce(e){var t,n,r,o,s;return i(),function(e,i,l){return r=e,o=i,s=l,n||(n=we(a)),--t<0&&c(!0),c};function a(){i(),r.apply(o,s||[])}function i(){t=e||1/0,n=be?0:null}function c(e){var t=!!n;return t&&(ye(n),e&&a()),t}}
|
|
10
|
+
/*! (c) Andrea Giammarchi - ISC */let Ee=null;const ke=L(new WeakMap),xe=(e,t,n)=>{e.apply(t,n)},Ne={async:!1,always:!1},_e=(e,t)=>"function"==typeof t?t(e):t,Ae=(e,t,n,r)=>{const o=Ee.i++,{hook:s,args:a,stack:i,length:c}=Ee;o===c&&(Ee.length=i.push({}));const l=i[o];if(l.args=a,o===c){const o="function"==typeof n,{async:a,always:i}=(o?r:n)||r||Ne;l.$=o?n(t):_e(void 0,t),l._=a?ke.get(s)||ke.set(s,Ce()):xe,l.f=t=>{const n=e(l.$,t);(i||l.$!==n)&&(l.$=n,l._(s,null,l.args))}}return[l.$,l.f]},$e=new WeakMap;function Se({hook:e}){return e===this.hook}const je=new WeakMap,Oe=L(je),Le=()=>{},Te=e=>(t,n)=>{const r=Ee.i++,{hook:o,after:s,stack:a,length:i}=Ee;if(r<i){const o=a[r],{update:i,values:c,stop:l}=o;if(!n||n.some(We,c)){o.values=n,e&&l(e);const{clean:r}=o;r&&(o.clean=null,r());const a=()=>{o.clean=t()};e?i(a):s.push(a)}}else{const r=e?Ce():Le,i={clean:null,update:r,values:n,stop:Le};Ee.length=a.push(i),(Oe.get(o)||Oe.set(o,[])).push(i);const c=()=>{i.clean=t()};e?i.stop=r(c):s.push(c)}},Me=e=>{(je.get(e)||[]).forEach((e=>{const{clean:t,stop:n}=e;n(),t&&(e.clean=null,t())}))};je.has.bind(je);const Re=Te(!0),Pe=Te(!1),Ue=(e,t)=>{const n=Ee.i++,{stack:r,length:o}=Ee;return n===o?Ee.length=r.push({$:e(),_:t}):t&&!t.some(We,r[n]._)||(r[n]={$:e(),_:t}),r[n].$};function We(e,t){return e!==this[t]}let Be=null;try{Be=new{o(){}}.o}catch(Bt){}let Ze=e=>class extends e{};if(Be){const{getPrototypeOf:e,setPrototypeOf:t}=Object,{construct:n}="object"==typeof Reflect?Reflect:{construct(e,n,r){const o=[null];for(let e=0;e<n.length;e++)o.push(n[e]);const s=e.bind.apply(e,o);return t(new s,r.prototype)}};Ze=function(r,o){function s(){return n(o?e(r):r,arguments,s)}return t(s.prototype,r.prototype),t(s,r)}}const ze={map:{},re:null},De=e=>new RegExp(`<(/)?(${e.join("|")})([^A-Za-z0-9:._-])`,"g");let He=null;const Ve=(e,t)=>{const{map:n,re:r}=He||t;return e.replace(r,((e,t,r,o)=>{const{tagName:s,is:a,element:i}=n[r];return i?t?`</${a}>`:`<${a}${o}`:t?`</${s}>`:`<${s} is="${a}"${o}`}))},Fe=({tagName:e,is:t,element:n})=>n?t:`${e}[is="${t}"]`,Ie=()=>He,qe=e=>{He=e},Ge={useCallback:(e,t)=>Ue((()=>e),t),useContext:e=>{const{hook:t,args:n}=Ee,r=$e.get(e),o={hook:t,args:n};return r.some(Se,o)||r.push(o),e.value},useEffect:Re,useLayoutEffect:Pe,useMemo:Ue,useReducer:Ae,useRef:e=>{const t=Ee.i++,{stack:n,length:r}=Ee;return t===r&&(Ee.length=n.push({current:e})),n[t]},useState:(e,t)=>Ae(_e,e,void 0,t)},{render:Qe,html:Je,svg:Ke}=(e=>{const t=se(ce);return ie(e).forEach((n=>{t[n]=e[n](t[n]||("convert"===n?v:String))})),n.prototype=t,ue(n);function n(){return re.apply(this,arguments)}})({transform:()=>e=>Ve(e,ze)}),Xe="_🔥",{defineProperties:Ye}=Object,et=new t,tt=new t,nt=new t,rt=new c,ot=!0,st="attributeChangedCallback",at="connectedCallback",it=`dis${at}`,ct=(e,t,n)=>{if(n in e){const r=e[n];t[n]={configurable:ot,value(){return wt.call(this),r.apply(this,arguments)}}}else t[n]={configurable:ot,value:wt}},lt=e=>{const{prototype:n}=e,r=[],o={html:{configurable:ot,get:vt},svg:{configurable:ot,get:bt}};if(o[Xe]={value:{events:r,info:null}},"handleEvent"in n||(o.handleEvent={configurable:ot,value:yt}),"render"in n&&n.render.length){const{oninit:e}=n;Ye(n,{oninit:{configurable:ot,value(){const t=(e=>{const t=[];return function n(){const r=Ee,o=[];Ee={hook:n,args:arguments,stack:t,i:0,length:t.length,after:o};try{return e.apply(null,arguments)}finally{Ee=r;for(let e=0,{length:t}=o;e<t;e++)o[e]()}}})(this.render.bind(this,Ge));Ye(this,{render:{configurable:ot,value:t}}),this.addEventListener("disconnected",Me.bind(null,t),!1),e&&e.apply(this,arguments)}}})}"oninit"in n&&(r.push("init"),ct(n,o,"render")),ct(n,o,st),ct(n,o,at),ct(n,o,it),[[st,"onattributechanged",Ct],[at,"onconnected",Et],[it,"ondisconnected",xt],[at,"render",kt]].forEach((([e,t,s])=>{if(!(e in n)&&t in n)if("render"!==t&&r.push(t.slice(2)),e in o){const t=o[e].value;o[e]={configurable:ot,value(){return t.apply(this,arguments),s.apply(this,arguments)}}}else o[e]={configurable:ot,value:s}}));const s=e.booleanAttributes||[];s.forEach((e=>{e in n||(o[e]={configurable:ot,get(){return this.hasAttribute(e)},set(t){t&&"false"!==t?this.setAttribute(e,t):this.removeAttribute(e)}})}));const a=e.observedAttributes||[];a.forEach((e=>{e in n||(o[e]={configurable:ot,get(){return this.getAttribute(e)},set(t){null==t?this.removeAttribute(e):this.setAttribute(e,t)}})}));(e.mappedAttributes||[]).forEach((e=>{const s=new t,a="on"+e in n;a&&r.push(e),o[e]={configurable:ot,get(){return s.get(this)},set(t){if(s.set(this,t),a){const n=ut(e);if(n.detail=t,rt.has(this))this.dispatchEvent(n);else{const e=nt.get(this);e?e.push(n):nt.set(this,[n])}}}}})),Ye(n,o);const i=s.concat(a);return i.length?Ye(e,{observedAttributes:{configurable:ot,get:()=>i}}):e},ut=e=>new r(e),ht=(...e)=>new ge("html",e);ht.for=Je.for;const pt=(...e)=>new ge("svg",e);pt.for=Ke.for;const ft=(e,n,r)=>{const o=dt(e,n,new t);return r.set(e,o),o},dt=(e,t,n)=>(r,...o)=>{const s=n.get(r)||((e,t,{info:n})=>{const r=n?Ve(t.join(Xe),n).split(Xe):t;return e.set(t,r),r})(n,r,e[Xe]);return Qe(e,(()=>t(s,...o)))};function mt(e){this.addEventListener(e,this)}function gt(e){this.dispatchEvent(e)}function vt(){return et.get(this)||ft(this,ht,et)}function bt(){return tt.get(this)||ft(this,pt,tt)}function yt(e){this[`on${e.type}`](e)}function wt(){if(!rt.has(this)){rt.add(this),this[Xe].events.forEach(mt,this),this.dispatchEvent(ut("init"));const e=nt.get(this);e&&(nt.delete(this),e.forEach(gt,this))}}function Ct(e,t,n){const r=ut("attributechanged");r.attributeName=e,r.oldValue=t,r.newValue=n,this.dispatchEvent(r)}function Et(){this.dispatchEvent(ut("connected"))}function kt(){this.render()}function xt(){this.dispatchEvent(ut("disconnected"))}const{create:Nt,defineProperty:_t,defineProperties:At,getOwnPropertyNames:$t,getOwnPropertySymbols:St,getOwnPropertyDescriptor:jt,keys:Ot}=Object,Lt={element:HTMLElement},Tt=new t;new t;const Mt=new t;new t;const Rt=e=>{const t=Nt(null),n=Nt(null),r={prototype:n,statics:t};return $t(e).concat(St(e)).forEach((r=>{const o=jt(e,r);switch(o.enumerable=!1,r){case"extends":r="tagName";case"contains":case"includes":case"name":case"booleanAttributes":case"mappedAttributes":case"observedAttributes":case"style":case"tagName":t[r]=o;break;default:n[r]=o}})),r},Pt=(e,t,n)=>{if(!/^([A-Z][A-Za-z0-9_]*)(<([A-Za-z0-9:._-]+)>|:([A-Za-z0-9:._-]+))?$/.test(e))throw"Invalid name";const{$1:r,$3:o,$4:s}=RegExp;let a=o||s||t.tagName||t.extends||"element";const i="fragment"===a;if(i)a="element";else if(!/^[A-Za-z0-9:._-]+$/.test(a))throw"Invalid tag";let c="",l="";a.indexOf("-")<0?(c=r.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z])([A-Z]))/g,"$2$5-$3$6").toLowerCase()+n,c.indexOf("-")<0&&(l="-heresy")):(c=a+n,a="element");const u=c+l;if(customElements.get(u))throw`Duplicated ${u} definition`;const h=Ze("object"==typeof t?Mt.get(t)||((e,t)=>{const{statics:n,prototype:r}=Rt(e),o=Ze(Lt[t]||(Lt[t]=document.createElement(t).constructor),!1);return At(o.prototype,r),At(o,n),Mt.set(e,lt(o)),o})(t,a):Tt.get(t)||(e=>{const t=Ze(e,!1);return Tt.set(e,lt(t)),t})(t),!0),p="element"===a;if(_t(h,"new",{value:p?()=>document.createElement(u):()=>document.createElement(a,{is:u})}),_t(h.prototype,"is",{value:u}),""===n){const e=(e=>{const{length:t}=e;let n=0,r=0;for(;r<t;)n=(n<<5)-n+e.charCodeAt(r++),n&=n;return n.toString(36)})(c.toUpperCase());ze.map[r]=Ut(h,a,u,{id:e,i:0}),ze.re=De(Ot(ze.map))}if(i){const{render:e}=h.prototype;_t(h.prototype,"render",{configurable:!0,value(){if(e&&e.apply(this,arguments),this.parentNode){const{firstChild:e}=this;let t=null;if(e){const n=document.createRange();n.setStartBefore(e),n.setEndAfter(this.lastChild),t=n.extractContents(),this.parentNode.replaceChild(t,this)}}}})}const f=[u,h];return p||f.push({extends:a}),customElements.define(...f),{Class:h,is:u,name:r,tagName:a}},Ut=(e,t,n,r)=>{const{prototype:o}=e,s=((e,t)=>({tagName:e,is:t,element:"element"===e}))(t,n),a=[Fe(s)],i=e.includes||e.contains;if(i){const e={};Ot(i).forEach((t=>{const n=`-${r.id}-${r.i++}`,{Class:o,is:s,name:c,tagName:l}=Pt(t,i[t],n);a.push(Fe(e[c]=Ut(o,l,s,r)))}));const t=De(Ot(e)),{events:n}=o[Xe],s={events:n,info:{map:e,re:t}};if(_t(o,Xe,{value:s}),"render"in o){const{render:e}=o,{info:t}=s;_t(o,"render",{configurable:!0,value(){const n=Ie();qe(t);const r=e.apply(this,arguments);return qe(n),r}})}}return"style"in e&&(e=>{if((e||"").length){const t=document.createElement("style");t.type="text/css",t.styleSheet?t.styleSheet.cssText=e:t.appendChild(document.createTextNode(e));const n=document.head||document.querySelector("head");n.insertBefore(t,n.lastChild)}})(e.style(...a)),s};const Wt=["aec","agc","audio","audioDenoiser","autoHideSelfView","autoSpotlight","background","bottomToolbar","breakout","callQualityMonitoring","cameraAccess","chat","embed","emptyRoomInvitation","floatSelf","help","leaveButton","locking","localization","logo","lowData","moreButton","participantCount","personality","pipButton","precallCeremony","precallCeremonyCanSkip","precallPermissionsHelpLink","precallReview","people","reactions","recording","roomIntegrations","screenshare","settingsButton","skipMediaPermissionPrompt","subgridLabels","timer","toolbarDarkText","topToolbar","video"];var Bt,Zt;Bt="WherebyEmbed",Zt={oninit(){this.iframe=((e,t)=>e?e[t]||(e[t]={current:null}):{current:null})()},onconnected(){window.addEventListener("message",this.onmessage.bind(this))},ondisconnected(){window.removeEventListener("message",this.onmessage.bind(this))},observedAttributes:["displayName","minimal","room","subdomain","lang","metadata","groups","virtualBackgroundUrl","avatarUrl","externalId","title","cameraEffect","emojiSkinTone",...Wt].map((e=>e.toLowerCase())),onattributechanged({attributeName:e,oldValue:t}){["room","subdomain"].includes(e)&&null==t||this.render()},style:e=>`\n ${e} {\n display: block;\n }\n ${e} iframe {\n border: none;\n height: 100%;\n width: 100%;\n }\n `,_postCommand(e,t=[]){this.iframe.current&&this.iframe.current.contentWindow.postMessage({command:e,args:t},this.roomUrl.origin)},endMeeting(){this._postCommand("end_meeting")},knock(){this._postCommand("knock")},leaveRoom(){this._postCommand("leave_room")},openSettings(e="media"){this._postCommand("open_settings",[e])},startRecording(){this._postCommand("start_recording")},stopRecording(){this._postCommand("stop_recording")},startStreaming(){this._postCommand("start_streaming")},stopStreaming(){this._postCommand("stop_streaming")},startLiveTranscription(){this._postCommand("start_live_transcription")},stopLiveTranscription(){this._postCommand("stop_live_transcription")},toggleBreakout(e){this._postCommand("toggle_breakout",[e])},toggleCamera(e){this._postCommand("toggle_camera",[e])},toggleMicrophone(e){this._postCommand("toggle_microphone",[e])},togglePeople(e){this._postCommand("toggle_people",[e])},toggleScreenshare(e){this._postCommand("toggle_screenshare",[e])},toggleChat(e){this._postCommand("toggle_chat",[e])},onmessage({origin:e,data:t}){if(!this.roomUrl||e!==this.roomUrl.origin)return;const{type:n,payload:r}=t;this.dispatchEvent(new CustomEvent(n,{detail:r}))},render(){const{avatarurl:e,displayname:t,cameraeffect:n,emojiskintone:r,lang:o,metadata:s,externalid:a,minimal:i,room:c,groups:l,virtualbackgroundurl:u,title:h}=this;let p,f;try{({roomUrl:p,subdomain:f}=function(e,t){if(!e)throw new Error("Missing room attribute");const n=/https:\/\/([^.]+)(\.whereby\.com|-ip-\d+-\d+-\d+-\d+.hereby.dev:4443)\/.+/.exec(e),r=n&&n[1]||t;if(!r)throw new Error("Missing subdomain attribute");if(!n)throw new Error("Could not parse room URL");return{subdomain:r,roomUrl:new URL(e)}}(c,this.subdomain))}catch(e){return this.html`Whereby: ${e instanceof Error?e.message:"unknown error"}`}this.roomUrl=p,Object.entries(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({jsApi:!0,we:"1",iframeSource:f},t&&{displayName:t}),o&&{lang:o}),s&&{metadata:s}),r&&{emojiSkinTone:r}),a&&{externalId:a}),l&&{groups:l}),u&&{virtualBackgroundUrl:u}),e&&{avatarUrl:e}),n&&{cameraEffect:n}),null!=i&&{embed:i}),Wt.reduce(((e,t)=>null!=this[t.toLowerCase()]?Object.assign(Object.assign({},e),{[t]:this[t.toLowerCase()]}):e),{}))).forEach((([e,t])=>{this.roomUrl.searchParams.has(e)||this.roomUrl.searchParams.set(e,t)})),this.html`
|
|
13
11
|
<iframe
|
|
14
|
-
title=${
|
|
12
|
+
title=${h||"Video calling component"}
|
|
15
13
|
ref=${this.iframe}
|
|
16
14
|
src=${this.roomUrl}
|
|
17
15
|
allow="autoplay; camera; microphone; fullscreen; speaker; display-capture; media-capture" />
|
|
18
|
-
`}},("string"==typeof
|
|
16
|
+
`}},("string"==typeof Bt?Pt(Bt,Zt,""):Pt(Bt.name,Bt,"")).Class;return{sdkVersion:"1"}}();
|