@whereby.com/browser-sdk 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,18 @@
1
1
  var whereby=function(){"use strict";function e(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(r){if("default"!==r&&!(r in e)){var i=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,i.get?i:{enumerable:!0,get:function(){return t[r]}})}}))})),Object.freeze(e)}
2
- /*! (c) Andrea Giammarchi - ISC */var t={};try{t.WeakMap=WeakMap}catch(ny){t.WeakMap=function(e,t){var r=t.defineProperty,i=t.hasOwnProperty,s=n.prototype;return s.delete=function(e){return this.has(e)&&delete e[this._]},s.get=function(e){return this.has(e)?e[this._]:void 0},s.has=function(e){return i.call(e,this._)},s.set=function(e,t){return r(e,this._,{configurable:!0,value:t}),this},n;function n(t){r(this,"_",{value:"_@ungap/weakmap"+e++}),t&&t.forEach(a,this)}function a(e){this.set(e[0],e[1])}}(Math.random(),Object)}var r=t.WeakMap,i={};try{i.Event=new Event(".").constructor}catch(ay){try{i.Event=new CustomEvent(".").constructor}catch(oy){i.Event=function(e,t){t||(t={});var r=document.createEvent("Event"),i=!!t.bubbles,s=!!t.cancelable;r.initEvent(e,i,s);try{r.bubbles=i,r.cancelable=s}catch(r){}return r}}}var s=i.Event,n={};
3
- /*! (c) Andrea Giammarchi - ISC */try{n.WeakSet=WeakSet}catch(cy){!function(e){var t=new e,r=i.prototype;function i(r){t.set(this,new e),r&&r.forEach(this.add,this)}r.add=function(e){return t.get(this).set(e,1),this},r.delete=function(e){return t.get(this).delete(e)},r.has=function(e){return t.get(this).has(e)},n.WeakSet=i}(WeakMap)}var a,o,c,d=n.WeakSet,l="-"+Math.random().toFixed(6)+"%",p=!1;
4
- /*! (c) Andrea Giammarchi - ISC */try{a=document.createElement("template"),c="tabindex",(o="content")in a&&(a.innerHTML="<p "+c+'="'+l+'"></p>',a[o].childNodes[0].getAttribute(c)==l)||(l="_dt: "+l.slice(1,-1)+";",p=!0)}catch(dy){}var u="\x3c!--"+l+"--\x3e",h=8,m=1,f=3,g=/^(?:plaintext|script|style|textarea|title|xmp)$/i,v=/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
2
+ /*! (c) Andrea Giammarchi - ISC */var t={};try{t.WeakMap=WeakMap}catch(cy){t.WeakMap=function(e,t){var r=t.defineProperty,i=t.hasOwnProperty,s=n.prototype;return s.delete=function(e){return this.has(e)&&delete e[this._]},s.get=function(e){return this.has(e)?e[this._]:void 0},s.has=function(e){return i.call(e,this._)},s.set=function(e,t){return r(e,this._,{configurable:!0,value:t}),this},n;function n(t){r(this,"_",{value:"_@ungap/weakmap"+e++}),t&&t.forEach(a,this)}function a(e){this.set(e[0],e[1])}}(Math.random(),Object)}var r=t.WeakMap,i={};try{i.Event=new Event(".").constructor}catch(dy){try{i.Event=new CustomEvent(".").constructor}catch(ly){i.Event=function(e,t){t||(t={});var r=document.createEvent("Event"),i=!!t.bubbles,s=!!t.cancelable;r.initEvent(e,i,s);try{r.bubbles=i,r.cancelable=s}catch(r){}return r}}}var s=i.Event,n={};
3
+ /*! (c) Andrea Giammarchi - ISC */try{n.WeakSet=WeakSet}catch(py){!function(e){var t=new e,r=i.prototype;function i(r){t.set(this,new e),r&&r.forEach(this.add,this)}r.add=function(e){return t.get(this).set(e,1),this},r.delete=function(e){return t.get(this).delete(e)},r.has=function(e){return t.get(this).has(e)},n.WeakSet=i}(WeakMap)}var a,o,c,d=n.WeakSet,l="-"+Math.random().toFixed(6)+"%",p=!1;
4
+ /*! (c) Andrea Giammarchi - ISC */try{a=document.createElement("template"),c="tabindex",(o="content")in a&&(a.innerHTML="<p "+c+'="'+l+'"></p>',a[o].childNodes[0].getAttribute(c)==l)||(l="_dt: "+l.slice(1,-1)+";",p=!0)}catch(uy){}var u="\x3c!--"+l+"--\x3e",h=8,m=1,f=3,g=/^(?:plaintext|script|style|textarea|title|xmp)$/i,v=/^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
5
5
  /*! (c) Andrea Giammarchi - ISC */
6
6
  function _(e){return e.join(u).replace(T,I).replace(R,k)}var b=" \\f\\n\\r\\t",y="[^"+b+"\\/>\"'=]+",w="["+b+"]+"+y,S="<([A-Za-z]+[A-Za-z0-9:._-]*)((?:",C="(?:\\s*=\\s*(?:'[^']*?'|\"[^\"]*?\"|<[^>]*?>|"+y.replace("\\/","")+"))?)",R=new RegExp(S+w+C+"+)(["+b+"]*/?>)","g"),T=new RegExp(S+w+C+"*)(["+b+"]*/>)","g"),P=new RegExp("("+w+"\\s*=\\s*)(['\"]?)"+u+"\\2","gi");function k(e,t,r,i){return"<"+t+r.replace(P,D)+i}function D(e,t,r){return t+(r||'"')+l+(r||'"')}function I(e,t,r){return v.test(t)?e:"<"+t+r+"></"+t+">"}const{isArray:E}=Array,{indexOf:O,slice:x}=[];var M=e=>({get:t=>e.get(t),set:(t,r)=>(e.set(t,r),r)});const j=(e,t)=>111===e.nodeType?1/t<0?t?(({firstChild:e,lastChild:t})=>{const r=document.createRange();return r.setStartAfter(e),r.setEndAfter(t),r.deleteContents(),e})(e):e.lastChild:t?e.valueOf():e.firstChild:e,L=e=>{const{childNodes:t}=e,{length:r}=t;if(r<2)return r?t[0]:e;const i=x.call(t,0);return{ELEMENT_NODE:1,nodeType:111,firstChild:i[0],lastChild:i[r-1],valueOf(){if(t.length!==r){let t=0;for(;t<r;)e.appendChild(i[t++])}return e}}};
7
7
  /*! (c) Andrea Giammarchi - ISC */
8
8
  var A=function(e){var t="fragment",r="template",i="content"in n(r)?function(e){var t=n(r);return t.innerHTML=e,t.content}:function(e){var i=n(t),a=n(r),o=null;if(/^[^\S]*?<(col(?:group)?|t(?:head|body|foot|r|d|h))/i.test(e)){var c=RegExp.$1;a.innerHTML="<table>"+e+"</table>",o=a.querySelectorAll(c)}else a.innerHTML=e,o=a.childNodes;return s(i,o),i};return function(e,t){return("svg"===t?a:i)(e)};function s(e,t){for(var r=t.length;r--;)e.appendChild(t[0])}function n(r){return r===t?e.createDocumentFragment():e.createElementNS("http://www.w3.org/1999/xhtml",r)}function a(e){var r=n(t),i=n("div");return i.innerHTML='<svg xmlns="http://www.w3.org/2000/svg">'+e+"</svg>",s(r,i.firstChild.childNodes),r}}(document),N=(e,t,r,i,s)=>{const n=r.length;let a=t.length,o=n,c=0,d=0,l=null;for(;c<a||d<o;)if(a===c){const t=o<n?d?i(r[d-1],-0).nextSibling:i(r[o-d],0):s;for(;d<o;)e.insertBefore(i(r[d++],1),t)}else if(o===d)for(;c<a;)l&&l.has(t[c])||e.removeChild(i(t[c],-1)),c++;else if(t[c]===r[d])c++,d++;else if(t[a-1]===r[o-1])a--,o--;else if(t[c]===r[o-1]&&r[d]===t[a-1]){const s=i(t[--a],-1).nextSibling;e.insertBefore(i(r[d++],1),i(t[c++],-1).nextSibling),e.insertBefore(i(r[--o],1),s),t[a]=r[o]}else{if(!l){l=new Map;let e=d;for(;e<o;)l.set(r[e],e++)}if(l.has(t[c])){const s=l.get(t[c]);if(d<s&&s<o){let n=c,p=1;for(;++n<a&&n<o&&l.get(t[n])===s+p;)p++;if(p>s-d){const n=i(t[c],0);for(;d<s;)e.insertBefore(i(r[d++],1),n)}else e.replaceChild(i(r[d++],1),i(t[c++],-1))}else c++}else e.removeChild(i(t[c++],-1))}return r},B=function(e,t,r,i,s){var n=s in e,a=e.createDocumentFragment();return a[t](e[i]("g")),a[t](e[i]("")),(n?e[s](a,!0):a[r](!0)).childNodes.length<2?function e(i,s){for(var n=i[r](),a=i.childNodes||[],o=a.length,c=0;s&&c<o;c++)n[t](e(a[c],s));return n}:n?e[s]:function(e,t){return e[r](!!t)}}(document,"appendChild","cloneNode","createTextNode","importNode"),F="".trim||function(){return String(this).replace(/^\s+|\s+/g,"")},$=p?function(e,t){var r=t.join(" ");return t.slice.call(e,0).sort((function(e,t){return r.indexOf(e.name)<=r.indexOf(t.name)?-1:1}))}:function(e,t){return t.slice.call(e,0)};function V(e,t){for(var r=t.length,i=0;i<r;)e=e.childNodes[t[i++]];return e}function z(e,t,r,i){for(var s=e.childNodes,n=s.length,a=0;a<n;){var o=s[a];switch(o.nodeType){case m:var c=i.concat(a);U(o,t,r,c),z(o,t,r,c);break;case h:var d=o.textContent;if(d===l)r.shift(),t.push(g.test(e.nodeName)?W(e,i):q(o,i.concat(a)));else switch(d.slice(0,2)){case"/*":if("*/"!==d.slice(-2))break;case"👻":e.removeChild(o),a--,n--}break;case f:g.test(e.nodeName)&&F.call(o.textContent)===u&&(r.shift(),t.push(W(e,i)))}a++}}function U(e,t,r,i){for(var s=e.attributes,n=[],a=[],o=$(s,r),c=o.length,d=0;d<c;){var h,m=o[d++],f=m.value===l;if(f||1<(h=m.value.split(u)).length){var g=m.name;if(n.indexOf(g)<0){n.push(g);var v=r.shift().replace(f?/^(?:|[\S\s]*?\s)(\S+?)\s*=\s*('|")?$/:new RegExp("^(?:|[\\S\\s]*?\\s)("+g+")\\s*=\\s*('|\")[\\S\\s]*","i"),"$1"),_=s[v]||s[v.toLowerCase()];if(f)t.push(G(_,i,v,null));else{for(var b=h.length-2;b--;)r.shift();t.push(G(_,i,v,h))}}a.push(m)}}d=0;for(var y=(0<(c=a.length)&&p&&!("ownerSVGElement"in e));d<c;){var w=a[d++];y&&(w.value=""),e.removeAttribute(w.name)}var S=e.nodeName;if(/^script$/i.test(S)){var C=document.createElement(S);for(c=s.length,d=0;d<c;)C.setAttributeNode(s[d++].cloneNode(!0));C.textContent=e.textContent,e.parentNode.replaceChild(C,e)}}function q(e,t){return{type:"any",node:e,path:t}}function G(e,t,r,i){return{type:"attr",node:e,path:t,name:r,sparse:i}}function W(e,t){return{type:"text",node:e,path:t}}var H=M(new r);function K(e,t){var r=(e.convert||_)(t),i=e.transform;i&&(r=i(r));var s=A(r,e.type);Z(s);var n=[];return z(s,n,t.slice(0),[]),{content:s,updates:function(r){for(var i=[],s=n.length,a=0,o=0;a<s;){var c=n[a++],d=V(r,c.path);switch(c.type){case"any":i.push({fn:e.any(d,[]),sparse:!1});break;case"attr":var l=c.sparse,p=e.attribute(d,c.name,c.node);null===l?i.push({fn:p,sparse:!1}):(o+=l.length-2,i.push({fn:p,sparse:!0,values:l}));break;case"text":i.push({fn:e.text(d),sparse:!1}),d.textContent=""}}return s+=o,function(){var e=arguments.length;if(s!==e-1)throw new Error(e-1+" values instead of "+s+"\n"+t.join("${value}"));for(var n=1,a=1;n<e;){var o=i[n-a];if(o.sparse){var c=o.values,d=c[0],l=1,p=c.length;for(a+=p-2;l<p;)d+=arguments[n++]+c[l++];o.fn(d)}else o.fn(arguments[n++])}return r}}}}var J=[];function Q(e){var t=J,r=Z;return function(i){return t!==i&&(r=function(e,t){var r=H.get(t)||H.set(t,K(e,t));return r.updates(B.call(document,r.content,!0))}(e,t=i)),r.apply(null,arguments)}}function Z(e){for(var t=e.childNodes,r=t.length;r--;){var i=t[r];1!==i.nodeType&&0===F.call(i.textContent).length&&e.removeChild(i)}}
9
9
  /*! (c) Andrea Giammarchi - ISC */var Y=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 r;t?r=t.cloneNode(!0):(e.setAttribute("style","--hyper:style;"),r=e.getAttributeNode("style"));return r.value="",e.setAttributeNode(r),i(r,!0)}(e,t):i(e.style,!1)};function r(e,t,r){return t+"-"+r.toLowerCase()}function i(i,s){var n,a;return function(o){var c,d,l,p;switch(typeof o){case"object":if(o){if("object"===n){if(!s&&a!==o)for(d in a)d in o||(i[d]="")}else s?i.value="":i.cssText="";for(d in c=s?{}:i,o)l="number"!=typeof(p=o[d])||e.test(d)?p:p+"px",!s&&/^--/.test(d)?c.setProperty(d,l):c[d]=l;n="object",s?i.value=function(e){var i,s=[];for(i in e)s.push(i.replace(t,r),":",e[i],";");return s.join("")}(a=c):a=o;break}default:a!=o&&(n="string",a=o,s?i.value=o||"":i.cssText=o||"")}}}}();const X=(e,t)=>{let r,i=!0;const s=document.createAttributeNS(null,t);return t=>{r!==t&&(r=t,null==r?i||(e.removeAttributeNode(s),i=!0):(s.value=t,i&&(e.setAttributeNodeNS(s),i=!1)))}},ee=({dataset:e})=>t=>{for(const r in t){const i=t[r];null==i?delete e[r]:e[r]=i}},te=(e,t)=>"dataset"===t?ee(e):r=>{e[t]=r},re=/^(?:form|list)$/i,ie=(e,t)=>e.ownerDocument.createTextNode(t);function se(e){return this.type=e,Q(this)}function ne(e){return e(this)}se.prototype={attribute(e,t,r){const i="svg"===this.type;switch(t){case"class":if(i)return X(e,t);t="className";case"props":return te(e,t);case"aria":return(e=>t=>{for(const r in t){const i="role"===r?r:`aria-${r}`,s=t[r];null==s?e.removeAttribute(i):e.setAttribute(i,s)}})(e);case"style":return Y(e,r,i);case"ref":return(e=>t=>{"function"==typeof t?t(e):t.current=e})(e);case".dataset":return ee(e);default:return"."===t.slice(0,1)?te(e,t.slice(1)):"?"===t.slice(0,1)?((e,t,r)=>i=>{r!==!!i&&((r=!!i)?e.setAttribute(t,""):e.removeAttribute(t))})(e,t.slice(1)):"on"===t.slice(0,2)?((e,t)=>{let r,i=t.slice(2);return!(t in e)&&t.toLowerCase()in e&&(i=i.toLowerCase()),t=>{const s=E(t)?t:[t,!1];r!==s[0]&&(r&&e.removeEventListener(i,r,s[1]),(r=s[0])&&e.addEventListener(i,r,s[1]))}})(e,t):!(t in e)||i||re.test(t)?X(e,t):((e,t)=>{let r;return i=>{r!==i&&(r=i,e[t]!==i&&(null==i?(e[t]="",e.removeAttribute(t)):e[t]=i))}})(e,t)}},any(e,t){const{type:r}=this;let i,s=!1;const n=a=>{switch(typeof a){case"string":case"number":case"boolean":s?i!==a&&(i=a,t[0].textContent=a):(s=!0,i=a,t=N(e.parentNode,t,[ie(e,a)],j,e));break;case"function":n(a(e));break;case"object":case"undefined":if(null==a){s=!1,t=N(e.parentNode,t,[],j,e);break}default:if(s=!1,i=a,E(a))if(0===a.length)t.length&&(t=N(e.parentNode,t,[],j,e));else switch(typeof a[0]){case"string":case"number":case"boolean":n(String(a));break;case"function":n(a.map(ne,e));break;case"object":E(a[0])&&(a=a.concat.apply([],a));default:t=N(e.parentNode,t,a,j,e)}else"ELEMENT_NODE"in a?t=N(e.parentNode,t,11===a.nodeType?x.call(a.childNodes):[a],j,e):"text"in a?n(String(a.text)):"any"in a?n(a.any):"html"in a?t=N(e.parentNode,t,x.call(A([].concat(a.html).join(""),r).childNodes),j,e):"length"in a&&n(x.call(a))}};return n},text(e){let t;const r=i=>{if(t!==i){t=i;const s=typeof i;"object"===s&&i?"text"in i?r(String(i.text)):"any"in i?r(i.any):"html"in i?r([].concat(i.html).join("")):"length"in i&&r(x.call(i).join("")):"function"===s?r(i(e)):e.textContent=null==i?"":i}};return r}};const{create:ae,freeze:oe,keys:ce}=Object,de=se.prototype,le=M(new r),pe=e=>({html:he("html",e),svg:he("svg",e),render(t,r){const i="function"==typeof r?r():r,s=le.get(t)||le.set(t,ue()),n=i instanceof ge?me(e,s,i):i;return n!==s.wire&&(s.wire=n,t.textContent="",t.appendChild(n.valueOf())),t}}),ue=()=>({stack:[],entry:null,wire:null}),he=(e,t)=>{const i=M(new r);return s.for=(e,r)=>{const n=i.get(e)||i.set(e,ae(null));return n[r]||(n[r]=(e=>function(){return me(t,e,s.apply(null,arguments))})(ue()))},s.node=function(){return me(t,ue(),s.apply(null,arguments)).valueOf()},s;function s(){return new ge(e,_e.apply(null,arguments))}},me=(e,t,{type:r,template:i,values:s})=>{const{length:n}=s;fe(e,t,s,n);let{entry:a}=t;if(a&&a.template===i&&a.type===r)a.tag(i,...s);else{const n=new e(r);t.entry=a={type:r,template:i,tag:n,wire:L(n(i,...s))}}return a.wire},fe=(e,{stack:t},r,i)=>{for(let s=0;s<i;s++){const i=r[s];i instanceof ve?r[s]=me(e,t[s]||(t[s]=ue()),i):E(i)?fe(e,t[s]||(t[s]=ue()),i,i.length):t[s]=null}i<t.length&&t.splice(i)};function ge(e,t){this.type=e,this.template=t.shift(),this.values=t}oe(ge);const ve=ge;function _e(){let e=[],t=0,{length:r}=arguments;for(;t<r;)e.push(arguments[t++]);return e}pe(se);var be="function"==typeof cancelAnimationFrame,ye=be?cancelAnimationFrame:clearTimeout,we=be?requestAnimationFrame:setTimeout;function Se(e){var t,r,i,s,n;return o(),function(e,o,d){return i=e,s=o,n=d,r||(r=we(a)),--t<0&&c(!0),c};function a(){o(),i.apply(s,n||[])}function o(){t=e||1/0,r=be?0:null}function c(e){var t=!!r;return t&&(ye(r),e&&a()),t}}
10
- /*! (c) Andrea Giammarchi - ISC */let Ce=null;const Re=M(new WeakMap),Te=(e,t,r)=>{e.apply(t,r)},Pe={async:!1,always:!1},ke=(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||Pe;d.$=s?r(t):ke(void 0,t),d._=a?Re.get(n)||Re.set(n,Se()):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,xe=M(Oe),Me=()=>{},je=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?Se():Me,o={clean:null,update:i,values:r,stop:Me};Ce.length=a.push(o),(xe.get(s)||xe.set(s,[])).push(o);const c=()=>{o.clean=t()};e?o.stop=i(c):n.push(c)}},Le=e=>{(Oe.get(e)||[]).forEach((e=>{const{clean:t,stop:r}=e;r(),t&&(e.clean=null,t())}))};Oe.has.bind(Oe);const Ae=je(!0),Ne=je(!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(iy){}let Ve=e=>class extends e{};if($e){const{getPrototypeOf:ly,setPrototypeOf:py}=Object,{construct:uy}="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 py(new s,r.prototype)}};Ve=function(e,t){function r(){return uy(t?ly(e):e,arguments,r)}return py(r.prototype,e.prototype),py(r,e)}}const ze={map:{},re:null},Ue=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}`}))},We=({tagName:e,is:t,element:r})=>r?t:`${e}[is="${t}"]`,He=()=>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(ke,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,ze)}),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 wt.call(this),i.apply(this,arguments)}}}else t[r]={configurable:nt,value:wt}},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",Le.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",St],[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 wt(){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 St(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:Pt,defineProperty:kt,defineProperties:Dt,getOwnPropertyNames:It,getOwnPropertySymbols:Et,getOwnPropertyDescriptor:Ot,keys:xt}=Object,Mt={element:HTMLElement},jt=new r;new r;const Lt=new r;new r;const At=e=>{const t=Pt(null),r=Pt(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?Lt.get(t)||((e,t)=>{const{statics:r,prototype:i}=At(e),s=Ve(Mt[t]||(Mt[t]=document.createElement(t).constructor),!1);return Dt(s.prototype,i),Dt(s,r),Lt.set(e,lt(s)),s})(t,a):jt.get(t)||(e=>{const t=Ve(e,!1);return jt.set(e,lt(t)),t})(t),!0),u="element"===a;if(kt(p,"new",{value:u?()=>document.createElement(l):()=>document.createElement(a,{is:l})}),kt(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());ze.map[i]=Bt(p,a,l,{id:e,i:0}),ze.re=Ue(xt(ze.map))}if(o){const{render:e}=p.prototype;kt(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=[We(n)],o=e.includes||e.contains;if(o){const e={};xt(o).forEach((t=>{const r=`-${i.id}-${i.i++}`,{Class:s,is:n,name:c,tagName:d}=Nt(t,o[t],r);a.push(We(e[c]=Bt(s,d,n,i)))}));const t=Ue(xt(e)),{events:r}=s[Xe],n={events:r,info:{map:e,re:t}};if(kt(s,Xe,{value:n}),"render"in s){const{render:e}=s,{info:t}=n;kt(s,"render",{configurable:!0,value(){const r=He();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 zt(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}function Ut(e){return Vt(e)&&"type"in e&&"string"==typeof e.type}var qt=Symbol.for("immer-nothing"),Gt=Symbol.for("immer-draftable"),Wt=Symbol.for("immer-state"),Ht=[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=Ht[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[Wt]}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[Wt];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[Wt];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[Wt];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[Wt].modified_&&(gr(t),Kt(4)),Zt(e)&&(e=wr(t,e),t.parent_||Cr(t,e)),t.patches_&&hr("Patches").generateReplacementPatches_(r[Wt].base_,e,t.patches_,t.inversePatches_)):e=wr(t,r,[]),gr(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==qt?e:void 0}function wr(e,t,r){if(lr(t))return t;const i=t[Wt];if(!i)return er(t,((s,n)=>Sr(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)=>Sr(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 Sr(e,t,r,i,s,n,a){if(s===r&&Kt(5),Qt(s)){const a=wr(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;wr(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===Wt)return e;const r=ar(e);if(!rr(r,t))return function(e,t,r){const i=kr(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===Pr(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=kr(ar(e),t);if(i?.set)return i.set.call(e.draft_,r),!0;if(!e.modified_){const i=Pr(ar(e),t),a=i?.[Wt];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!==Pr(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 Pr(e,t){const r=e[Wt];return(r?ar(r):e)[t]}function kr(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),xr(e)}function xr(e){if(!Zt(e)||lr(e))return e;const t=e[Wt];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,xr(t))})),t&&(t.finalized_=!1),r}var Mr=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[Wt].isManual_=!0,vr(t),r}finishDraft(e,t){const r=e&&e[Wt];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)))}},jr=Mr.produce;Mr.produceWithPatches.bind(Mr),Mr.setAutoFreeze.bind(Mr),Mr.setUseStrictShallowCopy.bind(Mr),Mr.applyPatches.bind(Mr),Mr.createDraft.bind(Mr),Mr.finishDraft.bind(Mr);var Lr=(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}},zr=0,Ur=1;function qr(){return{s:zr,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===Ur?c=t.v:(c=e.apply(null,arguments),n++),o.s=Ur,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 Wr(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:Lr},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 Hr=Wr(Gr),Kr=Object.assign(((e,t=Hr)=>{!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=Wr(...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=>Ut(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)?jr(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 jr(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}`,wi=class{constructor(e){this.code=e,this.message=`task ${gi} (reason: ${e})`}name="TaskAbortError";message},Si=(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)),Pi=(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))},ki=e=>{if(e.aborted){const{reason:t}=e;throw new wi(t)}};function Di(e,t){let r=Ci;return new Promise(((i,s)=>{const n=()=>s(new wi(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=>(ki(e),t)))),Ei=e=>{const t=Ii(e);return e=>t(new Promise((t=>setTimeout(t,e))))},{assign:Oi}=Object,xi={},Mi="listenerMiddleware",ji=(e,t)=>(r,i)=>{Si(r,"taskExecutor");const s=new AbortController;var n;n=s,Ti(e,(()=>Pi(n,e.reason)));const a=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof wi?"cancelled":"rejected",error:e}}finally{t?.()}})((async()=>{ki(e),ki(s.signal);const t=await r({pause:Ii(s.signal),delay:Ei(s.signal),signal:s.signal});return ki(s.signal),t}),(()=>Pi(s,_i)));return i?.autoJoin&&t.push(a.catch(Ci)),{result:Ii(e)(a),cancel(){Pi(s,vi)}}},Li=(e,t)=>(r,i)=>Ri((async(r,i)=>{ki(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 ki(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 Si(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=>{Pi(e,bi)}))},Fi=(e,t,r)=>{try{e(t,r)}catch(e){setTimeout((()=>{throw e}),0)}},$i=Object.assign(Jr(`${Mi}/add`),{withTypes:()=>$i}),Vi=Jr(`${Mi}/removeAll`),zi=Object.assign(Jr(`${Mi}/remove`),{withTypes:()=>zi}),Ui=(...e)=>{console.error(`${Mi}/error`,...e)};function qi(){}function Gi(){Gi.init.call(this)}function Wi(e){return void 0===e._maxListeners?Gi.defaultMaxListeners:e._maxListeners}function Hi(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 qi,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=Wi(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 Ki(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 Ji(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 Qi(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}qi.prototype=Object.create(null),Gi.EventEmitter=Gi,Gi.usingDomains=!1,Gi.prototype.domain=void 0,Gi.prototype._events=void 0,Gi.prototype._maxListeners=void 0,Gi.defaultMaxListeners=10,Gi.init=function(){this.domain=null,Gi.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new qi,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Gi.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},Gi.prototype.getMaxListeners=function(){return Wi(this)},Gi.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=Qi(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=Qi(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=Qi(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=Qi(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=Qi(e,s),a=0;a<s;++a)n[a].apply(r,i)}(r,l,this,s)}return!0},Gi.prototype.addListener=function(e,t){return Hi(this,e,t,!1)},Gi.prototype.on=Gi.prototype.addListener,Gi.prototype.prependListener=function(e,t){return Hi(this,e,t,!0)},Gi.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,Ki(this,e,t)),this},Gi.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,Ki(this,e,t)),this},Gi.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 qi:(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 qi,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},Gi.prototype.off=function(e,t){return this.removeListener(e,t)},Gi.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new qi,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new qi: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 qi,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},Gi.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},Gi.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Ji.call(e,t)},Gi.prototype.listenerCount=Ji,Gi.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var Zi=Object.freeze({__proto__:null,EventEmitter:Gi,default:Gi}),Yi="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Xi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function es(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})})),r}var ts,rs,is={},ss={exports:{}};function ns(){if(rs)return ts;rs=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 ts=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 as=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=ns(),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=as(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(ss,ss.exports);var os,cs,ds=ss.exports,ls={},ps={exports:{}};os=ps,cs=ps.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",w="ASUS",S="BlackBerry",C="Browser",R="Chrome",T="Firefox",P="Google",k="Huawei",D="LG",I="Microsoft",E="Motorola",O="Opera",x="Samsung",M="Sharp",j="Sony",L="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!==z(t).indexOf(z(e))},z=function(e){return e.toLowerCase()},U=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},W={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"},H={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"]],[/\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],[/(?:\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,x+" 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,/(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,z]],[/((?: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/,"",z]],[/(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,z]]],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,x],[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,x],[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,M],[d,m]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[o,[l,k],[d,f]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[o,[l,k],[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,L],[d,m]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[o,/_/g," "],[l,L],[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]],[/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,P],[d,f]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[o,[l,P],[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,j],[d,m]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[o,"Xperia Tablet"],[l,j],[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,S],[d,m]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[o,[l,w],[d,f]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[o,[l,w],[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,x],[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,P],[d,g]],[/droid.+aft(\w+)( bui|\))/i],[o,[l,b],[d,g]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[o,[l,M],[d,g]],[/(bravia[\w ]+)( bui|\))/i],[o,[l,j],[d,g]],[/(mitv-\w{5}) bui/i],[o,[l,L],[d,g]],[/Hbbtv.*(technisat) (.*);/i],[l,o,[d,g]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[l,U],[o,U],[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,j],[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,P],[d,v]],[/droid.+; (wt63?0{2,3})\)/i],[o,[l,A],[d,v]],[/(quest( 2| 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,W]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[p,G,W],[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,S]],[/(?: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}(H,g):H,w=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,w&&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),w&&!e[d]&&b&&b.mobile&&(e[d]=m),w&&"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),w&&!e[c]&&b&&"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?U(e,500):e,this},this.setUA(_),this};K.VERSION="1.0.37",K.BROWSER=$([c,p,a]),K.CPU=$([u]),K.DEVICE=$([o,l,d,h,m,g,f,v,_]),K.ENGINE=K.OS=$([c,p]),os.exports&&(cs=os.exports=K),cs.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:Yi);var us=ps.exports,hs={},ms=Yi&&Yi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(hs,"__esModule",{value:!0}),hs.Logger=void 0;const fs=ms(ds),gs="mediasoup-client";hs.Logger=class{constructor(e){e?(this._debug=(0,fs.default)(`${gs}:${e}`),this._warn=(0,fs.default)(`${gs}:WARN:${e}`),this._error=(0,fs.default)(`${gs}:ERROR:${e}`)):(this._debug=(0,fs.default)(gs),this._warn=(0,fs.default)(`${gs}:WARN`),this._error=(0,fs.default)(`${gs}: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 vs={},_s=es(Zi);Object.defineProperty(vs,"__esModule",{value:!0}),vs.EnhancedEventEmitter=void 0;const bs=_s,ys=new hs.Logger("EnhancedEventEmitter");class ws extends bs.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 ys.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)}}vs.EnhancedEventEmitter=ws;var Ss={};Object.defineProperty(Ss,"__esModule",{value:!0}),Ss.InvalidStateError=Ss.UnsupportedError=void 0;class Cs extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Cs):this.stack=new Error(e).stack}}Ss.UnsupportedError=Cs;class Rs extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Rs):this.stack=new Error(e).stack}}Ss.InvalidStateError=Rs;var Ts={};Object.defineProperty(Ts,"__esModule",{value:!0}),Ts.generateRandomNumber=Ts.clone=void 0,Ts.clone=function(e){return void 0===e?void 0:Number.isNaN(e)?NaN:"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))},Ts.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var Ps={},ks={},Ds={},Is=Yi&&Yi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ds,"__esModule",{value:!0}),Ds.Logger=void 0;const Es=Is(ds),Os="h264-profile-level-id";Ds.Logger=class{constructor(e){e?(this._debug=(0,Es.default)(`${Os}:${e}`),this._warn=(0,Es.default)(`${Os}:WARN:${e}`),this._error=(0,Es.default)(`${Os}:ERROR:${e}`)):(this._debug=(0,Es.default)(Os),this._warn=(0,Es.default)(`${Os}:WARN`),this._error=(0,Es.default)(`${Os}: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(ks,"__esModule",{value:!0}),ks.generateProfileLevelIdStringForAnswer=ks.isSameProfile=ks.parseSdpProfileLevelId=ks.levelToString=ks.profileToString=ks.profileLevelIdToString=ks.parseProfileLevelId=ks.ProfileLevelId=ks.Level=ks.Profile=void 0;const xs=new Ds.Logger;var Ms,js;!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"}(Ms||(ks.Profile=Ms={})),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"}(js||(ks.Level=js={}));class Ls{constructor(e,t){this.profile=e,this.level=t}}ks.ProfileLevelId=Ls;const As=new Ls(Ms.ConstrainedBaseline,js.L3_1);class Ns{constructor(e){this.mask=~Us("x",e),this.masked_value=Us("1",e)}isMatch(e){return this.masked_value===(e&this.mask)}}class Bs{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const Fs=[new Bs(66,new Ns("x1xx0000"),Ms.ConstrainedBaseline),new Bs(77,new Ns("1xxx0000"),Ms.ConstrainedBaseline),new Bs(88,new Ns("11xx0000"),Ms.ConstrainedBaseline),new Bs(66,new Ns("x0xx0000"),Ms.Baseline),new Bs(88,new Ns("10xx0000"),Ms.Baseline),new Bs(77,new Ns("0x0x0000"),Ms.Main),new Bs(100,new Ns("00000000"),Ms.High),new Bs(100,new Ns("00001100"),Ms.ConstrainedHigh),new Bs(244,new Ns("00000000"),Ms.PredictiveHigh444)];function $s(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 js.L1_1:n=0!=(16&i)?js.L1_b:js.L1_1;break;case js.L1:case js.L1_2:case js.L1_3:case js.L2:case js.L2_1:case js.L2_2:case js.L3:case js.L3_1:case js.L3_2:case js.L4:case js.L4_1:case js.L4_2:case js.L5:case js.L5_1:case js.L5_2:n=r;break;default:return void xs.warn(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${r}]`)}for(const e of Fs)if(s===e.profile_idc&&e.profile_iop.isMatch(i))return new Ls(e.profile,n);xs.warn(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${s}, profile_iop:${i}]`)}function Vs(e){if(e.level==js.L1_b)switch(e.profile){case Ms.ConstrainedBaseline:return"42f00b";case Ms.Baseline:return"42100b";case Ms.Main:return"4d100b";default:return void xs.warn(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`)}let t;switch(e.profile){case Ms.ConstrainedBaseline:t="42e0";break;case Ms.Baseline:t="4200";break;case Ms.Main:t="4d00";break;case Ms.ConstrainedHigh:t="640c";break;case Ms.High:t="6400";break;case Ms.PredictiveHigh444:t="f400";break;default:return void xs.warn(`profileLevelIdToString() | unrecognized profile ${e.profile}`)}let r=e.level.toString(16);return 1===r.length&&(r=`0${r}`),`${t}${r}`}function zs(e={}){const t=e["profile-level-id"];return t?$s(t):As}function Us(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 qs(e={}){const t=e["level-asymmetry-allowed"];return!0===t||1===t||"1"===t}ks.parseProfileLevelId=$s,ks.profileLevelIdToString=Vs,ks.profileToString=function(e){switch(e){case Ms.ConstrainedBaseline:return"ConstrainedBaseline";case Ms.Baseline:return"Baseline";case Ms.Main:return"Main";case Ms.ConstrainedHigh:return"ConstrainedHigh";case Ms.High:return"High";case Ms.PredictiveHigh444:return"PredictiveHigh444";default:return void xs.warn(`profileToString() | unrecognized profile ${e}`)}},ks.levelToString=function(e){switch(e){case js.L1_b:return"1b";case js.L1:return"1";case js.L1_1:return"1.1";case js.L1_2:return"1.2";case js.L1_3:return"1.3";case js.L2:return"2";case js.L2_1:return"2.1";case js.L2_2:return"2.2";case js.L3:return"3";case js.L3_1:return"3.1";case js.L3_2:return"3.2";case js.L4:return"4";case js.L4_1:return"4.1";case js.L4_2:return"4.2";case js.L5:return"5";case js.L5_1:return"5.1";case js.L5_2:return"5.2";default:return void xs.warn(`levelToString() | unrecognized level ${e}`)}},ks.parseSdpProfileLevelId=zs,ks.isSameProfile=function(e={},t={}){const r=zs(e),i=zs(t);return Boolean(r&&i&&r.profile===i.profile)},ks.generateProfileLevelIdStringForAnswer=function(e={},t={}){if(!e["profile-level-id"]&&!t["profile-level-id"])return void xs.warn("generateProfileLevelIdStringForAnswer() | profile-level-id missing in local and remote params");const r=zs(e),i=zs(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=qs(e)&&qs(t),n=r.level,a=i.level,o=function(e,t){return e===js.L1_b?t!==js.L1&&t!==js.L1_b:t===js.L1_b?e!==js.L1:e<t}(c=n,d=a)?c:d;var c,d;const l=s?n:o;return xs.debug(`generateProfileLevelIdStringForAnswer() | result [profile:${r.profile}, level:${l}]`),Vs(new Ls(r.profile,l))};var Gs=Yi&&Yi.__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]}),Ws=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Hs=Yi&&Yi.__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)&&Gs(t,e,r);return Ws(t,e),t};Object.defineProperty(Ps,"__esModule",{value:!0}),Ps.canReceive=Ps.canSend=Ps.generateProbatorRtpParameters=Ps.reduceCodecs=Ps.getSendingRemoteRtpParameters=Ps.getSendingRtpParameters=Ps.getRecvRtpCapabilities=Ps.getExtendedRtpCapabilities=Ps.validateSctpCapabilities=Ps.validateSctpStreamParameters=Ps.validateRtpParameters=Ps.validateRtpCapabilities=void 0;const Ks=Hs(ks),Js=Hs(Ts);function Qs(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)en(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)tn(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)rn(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 Zs(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)Ys(t)}function Ys(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 Xs(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 en(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)Ys(t)}function tn(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 rn(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 sn(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function nn(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(!Ks.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=Ks.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 an(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function on(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}Ps.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)Zs(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)Xs(t)},Ps.validateRtpParameters=Qs,Ps.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;if("boolean"==typeof e.ordered?t=!0:e.ordered=!0,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");if(t||!e.maxPacketLifeTime&&!e.maxRetransmits||(e.ordered=!1),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")},Ps.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)},Ps.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(sn(i))continue;const t=(e.codecs||[]).find((e=>nn(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:on(t,i)};r.codecs.push(s)}for(const i of r.codecs){const r=e.codecs.find((e=>sn(e)&&e.parameters.apt===i.localPayloadType)),s=t.codecs.find((e=>sn(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=>an(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},Ps.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},Ps.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},Ps.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},Ps.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(nn(e[i],t)){r.push(e[i]),sn(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]),sn(e[1])&&r.push(e[1]);return r},Ps.generateProbatorRtpParameters=function(e){Qs(e=Js.clone(e));const t={mid:"probator",codecs:[],headerExtensions:[],encodings:[{ssrc:1234}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=127,t.headerExtensions=e.headerExtensions,t},Ps.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},Ps.canReceive=function(e,t){if(Qs(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var cn={},dn={},ln={};Object.defineProperty(ln,"__esModule",{value:!0}),ln.Logger=void 0;const pn=ds,un="awaitqueue";ln.Logger=class{constructor(e){e?(this._debug=(0,pn.default)(`${un}:${e}`),this._warn=(0,pn.default)(`${un}:WARN:${e}`),this._error=(0,pn.default)(`${un}:ERROR:${e}`)):(this._debug=(0,pn.default)(un),this._warn=(0,pn.default)(`${un}:WARN`),this._error=(0,pn.default)(`${un}: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(dn,"__esModule",{value:!0}),dn.AwaitQueue=dn.AwaitQueueRemovedTaskError=dn.AwaitQueueStoppedError=void 0;const hn=new ln.Logger;class mn extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,mn)}}dn.AwaitQueueStoppedError=mn;class fn extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,fn)}}dn.AwaitQueueRemovedTaskError=fn;
10
+ /*! (c) Andrea Giammarchi - ISC */let Ce=null;const Re=M(new WeakMap),Te=(e,t,r)=>{e.apply(t,r)},Pe={async:!1,always:!1},ke=(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||Pe;d.$=s?r(t):ke(void 0,t),d._=a?Re.get(n)||Re.set(n,Se()):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,xe=M(Oe),Me=()=>{},je=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?Se():Me,o={clean:null,update:i,values:r,stop:Me};Ce.length=a.push(o),(xe.get(s)||xe.set(s,[])).push(o);const c=()=>{o.clean=t()};e?o.stop=i(c):n.push(c)}},Le=e=>{(Oe.get(e)||[]).forEach((e=>{const{clean:t,stop:r}=e;r(),t&&(e.clean=null,t())}))};Oe.has.bind(Oe);const Ae=je(!0),Ne=je(!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(ay){}let Ve=e=>class extends e{};if($e){const{getPrototypeOf:hy,setPrototypeOf:my}=Object,{construct:fy}="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 my(new s,r.prototype)}};Ve=function(e,t){function r(){return fy(t?hy(e):e,arguments,r)}return my(r.prototype,e.prototype),my(r,e)}}const ze={map:{},re:null},Ue=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}`}))},We=({tagName:e,is:t,element:r})=>r?t:`${e}[is="${t}"]`,He=()=>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(ke,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,ze)}),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 wt.call(this),i.apply(this,arguments)}}}else t[r]={configurable:nt,value:wt}},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",Le.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",St],[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 wt(){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 St(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:Pt,defineProperty:kt,defineProperties:Dt,getOwnPropertyNames:It,getOwnPropertySymbols:Et,getOwnPropertyDescriptor:Ot,keys:xt}=Object,Mt={element:HTMLElement},jt=new r;new r;const Lt=new r;new r;const At=e=>{const t=Pt(null),r=Pt(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?Lt.get(t)||((e,t)=>{const{statics:r,prototype:i}=At(e),s=Ve(Mt[t]||(Mt[t]=document.createElement(t).constructor),!1);return Dt(s.prototype,i),Dt(s,r),Lt.set(e,lt(s)),s})(t,a):jt.get(t)||(e=>{const t=Ve(e,!1);return jt.set(e,lt(t)),t})(t),!0),u="element"===a;if(kt(p,"new",{value:u?()=>document.createElement(l):()=>document.createElement(a,{is:l})}),kt(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());ze.map[i]=Bt(p,a,l,{id:e,i:0}),ze.re=Ue(xt(ze.map))}if(o){const{render:e}=p.prototype;kt(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=[We(n)],o=e.includes||e.contains;if(o){const e={};xt(o).forEach((t=>{const r=`-${i.id}-${i.i++}`,{Class:s,is:n,name:c,tagName:d}=Nt(t,o[t],r);a.push(We(e[c]=Bt(s,d,n,i)))}));const t=Ue(xt(e)),{events:r}=s[Xe],n={events:r,info:{map:e,re:t}};if(kt(s,Xe,{value:n}),"render"in s){const{render:e}=s,{info:t}=n;kt(s,"render",{configurable:!0,value(){const r=He();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 zt(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}function Ut(e){return Vt(e)&&"type"in e&&"string"==typeof e.type}var qt=Symbol.for("immer-nothing"),Gt=Symbol.for("immer-draftable"),Wt=Symbol.for("immer-state"),Ht=[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=Ht[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[Wt]}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[Wt];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[Wt];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[Wt];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[Wt].modified_&&(gr(t),Kt(4)),Zt(e)&&(e=wr(t,e),t.parent_||Cr(t,e)),t.patches_&&hr("Patches").generateReplacementPatches_(r[Wt].base_,e,t.patches_,t.inversePatches_)):e=wr(t,r,[]),gr(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==qt?e:void 0}function wr(e,t,r){if(lr(t))return t;const i=t[Wt];if(!i)return er(t,((s,n)=>Sr(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)=>Sr(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 Sr(e,t,r,i,s,n,a){if(s===r&&Kt(5),Qt(s)){const a=wr(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;wr(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===Wt)return e;const r=ar(e);if(!rr(r,t))return function(e,t,r){const i=kr(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===Pr(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=kr(ar(e),t);if(i?.set)return i.set.call(e.draft_,r),!0;if(!e.modified_){const i=Pr(ar(e),t),a=i?.[Wt];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!==Pr(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 Pr(e,t){const r=e[Wt];return(r?ar(r):e)[t]}function kr(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),xr(e)}function xr(e){if(!Zt(e)||lr(e))return e;const t=e[Wt];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,xr(t))})),t&&(t.finalized_=!1),r}var Mr=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[Wt].isManual_=!0,vr(t),r}finishDraft(e,t){const r=e&&e[Wt];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)))}},jr=Mr.produce;Mr.produceWithPatches.bind(Mr),Mr.setAutoFreeze.bind(Mr),Mr.setUseStrictShallowCopy.bind(Mr),Mr.applyPatches.bind(Mr),Mr.createDraft.bind(Mr),Mr.finishDraft.bind(Mr);var Lr=(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}},zr=0,Ur=1;function qr(){return{s:zr,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===Ur?c=t.v:(c=e.apply(null,arguments),n++),o.s=Ur,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 Wr(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:Lr},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 Hr=Wr(Gr),Kr=Object.assign(((e,t=Hr)=>{!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=Wr(...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=>Ut(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)?jr(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 jr(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}`,wi=class{constructor(e){this.code=e,this.message=`task ${gi} (reason: ${e})`}name="TaskAbortError";message},Si=(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)),Pi=(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))},ki=e=>{if(e.aborted){const{reason:t}=e;throw new wi(t)}};function Di(e,t){let r=Ci;return new Promise(((i,s)=>{const n=()=>s(new wi(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=>(ki(e),t)))),Ei=e=>{const t=Ii(e);return e=>t(new Promise((t=>setTimeout(t,e))))},{assign:Oi}=Object,xi={},Mi="listenerMiddleware",ji=(e,t)=>(r,i)=>{Si(r,"taskExecutor");const s=new AbortController;var n;n=s,Ti(e,(()=>Pi(n,e.reason)));const a=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof wi?"cancelled":"rejected",error:e}}finally{t?.()}})((async()=>{ki(e),ki(s.signal);const t=await r({pause:Ii(s.signal),delay:Ei(s.signal),signal:s.signal});return ki(s.signal),t}),(()=>Pi(s,_i)));return i?.autoJoin&&t.push(a.catch(Ci)),{result:Ii(e)(a),cancel(){Pi(s,vi)}}},Li=(e,t)=>(r,i)=>Ri((async(r,i)=>{ki(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 ki(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 Si(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=>{Pi(e,bi)}))},Fi=(e,t,r)=>{try{e(t,r)}catch(e){setTimeout((()=>{throw e}),0)}},$i=Object.assign(Jr(`${Mi}/add`),{withTypes:()=>$i}),Vi=Jr(`${Mi}/removeAll`),zi=Object.assign(Jr(`${Mi}/remove`),{withTypes:()=>zi}),Ui=(...e)=>{console.error(`${Mi}/error`,...e)};function qi(){}function Gi(){Gi.init.call(this)}function Wi(e){return void 0===e._maxListeners?Gi.defaultMaxListeners:e._maxListeners}function Hi(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 qi,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=Wi(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 Ki(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 Ji(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 Qi(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}qi.prototype=Object.create(null),Gi.EventEmitter=Gi,Gi.usingDomains=!1,Gi.prototype.domain=void 0,Gi.prototype._events=void 0,Gi.prototype._maxListeners=void 0,Gi.defaultMaxListeners=10,Gi.init=function(){this.domain=null,Gi.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new qi,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Gi.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},Gi.prototype.getMaxListeners=function(){return Wi(this)},Gi.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=Qi(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=Qi(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=Qi(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=Qi(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=Qi(e,s),a=0;a<s;++a)n[a].apply(r,i)}(r,l,this,s)}return!0},Gi.prototype.addListener=function(e,t){return Hi(this,e,t,!1)},Gi.prototype.on=Gi.prototype.addListener,Gi.prototype.prependListener=function(e,t){return Hi(this,e,t,!0)},Gi.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,Ki(this,e,t)),this},Gi.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,Ki(this,e,t)),this},Gi.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 qi:(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 qi,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},Gi.prototype.off=function(e,t){return this.removeListener(e,t)},Gi.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new qi,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new qi: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 qi,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},Gi.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},Gi.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Ji.call(e,t)},Gi.prototype.listenerCount=Ji,Gi.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var Zi=Object.freeze({__proto__:null,EventEmitter:Gi,default:Gi}),Yi="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Xi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function es(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})})),r}var ts,rs,is={},ss={exports:{}};function ns(){if(rs)return ts;rs=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 ts=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 as=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=ns(),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=as(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(ss,ss.exports);var os,cs,ds=ss.exports,ls={},ps={exports:{}};os=ps,cs=ps.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",w="ASUS",S="BlackBerry",C="Browser",R="Chrome",T="Firefox",P="Google",k="Huawei",D="LG",I="Microsoft",E="Motorola",O="Opera",x="Samsung",M="Sharp",j="Sony",L="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!==z(t).indexOf(z(e))},z=function(e){return e.toLowerCase()},U=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},W={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"},H={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"]],[/\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],[/(?:\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,x+" 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,/(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,z]],[/((?: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/,"",z]],[/(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,z]]],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,x],[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,x],[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,M],[d,m]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[o,[l,k],[d,f]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[o,[l,k],[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,L],[d,m]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[o,/_/g," "],[l,L],[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]],[/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,P],[d,f]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[o,[l,P],[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,j],[d,m]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[o,"Xperia Tablet"],[l,j],[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,S],[d,m]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[o,[l,w],[d,f]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[o,[l,w],[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,x],[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,P],[d,g]],[/droid.+aft(\w+)( bui|\))/i],[o,[l,b],[d,g]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[o,[l,M],[d,g]],[/(bravia[\w ]+)( bui|\))/i],[o,[l,j],[d,g]],[/(mitv-\w{5}) bui/i],[o,[l,L],[d,g]],[/Hbbtv.*(technisat) (.*);/i],[l,o,[d,g]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[l,U],[o,U],[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,j],[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,P],[d,v]],[/droid.+; (wt63?0{2,3})\)/i],[o,[l,A],[d,v]],[/(quest( 2| 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,W]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[p,G,W],[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,S]],[/(?: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}(H,g):H,w=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,w&&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),w&&!e[d]&&b&&b.mobile&&(e[d]=m),w&&"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),w&&!e[c]&&b&&"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?U(e,500):e,this},this.setUA(_),this};K.VERSION="1.0.37",K.BROWSER=$([c,p,a]),K.CPU=$([u]),K.DEVICE=$([o,l,d,h,m,g,f,v,_]),K.ENGINE=K.OS=$([c,p]),os.exports&&(cs=os.exports=K),cs.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:Yi);var us=ps.exports,hs={},ms=Yi&&Yi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(hs,"__esModule",{value:!0}),hs.Logger=void 0;const fs=ms(ds),gs="mediasoup-client";hs.Logger=class{constructor(e){e?(this._debug=(0,fs.default)(`${gs}:${e}`),this._warn=(0,fs.default)(`${gs}:WARN:${e}`),this._error=(0,fs.default)(`${gs}:ERROR:${e}`)):(this._debug=(0,fs.default)(gs),this._warn=(0,fs.default)(`${gs}:WARN`),this._error=(0,fs.default)(`${gs}: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 vs={},_s=es(Zi);Object.defineProperty(vs,"__esModule",{value:!0}),vs.EnhancedEventEmitter=void 0;const bs=_s,ys=new hs.Logger("EnhancedEventEmitter");class ws extends bs.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 ys.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)}}vs.EnhancedEventEmitter=ws;var Ss={};Object.defineProperty(Ss,"__esModule",{value:!0}),Ss.InvalidStateError=Ss.UnsupportedError=void 0;class Cs extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Cs):this.stack=new Error(e).stack}}Ss.UnsupportedError=Cs;class Rs extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Rs):this.stack=new Error(e).stack}}Ss.InvalidStateError=Rs;var Ts={};Object.defineProperty(Ts,"__esModule",{value:!0}),Ts.generateRandomNumber=Ts.clone=void 0,Ts.clone=function(e){return void 0===e?void 0:Number.isNaN(e)?NaN:"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))},Ts.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var Ps={},ks={},Ds={},Is=Yi&&Yi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ds,"__esModule",{value:!0}),Ds.Logger=void 0;const Es=Is(ds),Os="h264-profile-level-id";Ds.Logger=class{constructor(e){e?(this._debug=(0,Es.default)(`${Os}:${e}`),this._warn=(0,Es.default)(`${Os}:WARN:${e}`),this._error=(0,Es.default)(`${Os}:ERROR:${e}`)):(this._debug=(0,Es.default)(Os),this._warn=(0,Es.default)(`${Os}:WARN`),this._error=(0,Es.default)(`${Os}: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(ks,"__esModule",{value:!0}),ks.generateProfileLevelIdStringForAnswer=ks.isSameProfile=ks.parseSdpProfileLevelId=ks.levelToString=ks.profileToString=ks.profileLevelIdToString=ks.parseProfileLevelId=ks.ProfileLevelId=ks.Level=ks.Profile=void 0;const xs=new Ds.Logger;var Ms,js;!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"}(Ms||(ks.Profile=Ms={})),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"}(js||(ks.Level=js={}));class Ls{constructor(e,t){this.profile=e,this.level=t}}ks.ProfileLevelId=Ls;const As=new Ls(Ms.ConstrainedBaseline,js.L3_1);class Ns{constructor(e){this.mask=~Us("x",e),this.masked_value=Us("1",e)}isMatch(e){return this.masked_value===(e&this.mask)}}class Bs{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const Fs=[new Bs(66,new Ns("x1xx0000"),Ms.ConstrainedBaseline),new Bs(77,new Ns("1xxx0000"),Ms.ConstrainedBaseline),new Bs(88,new Ns("11xx0000"),Ms.ConstrainedBaseline),new Bs(66,new Ns("x0xx0000"),Ms.Baseline),new Bs(88,new Ns("10xx0000"),Ms.Baseline),new Bs(77,new Ns("0x0x0000"),Ms.Main),new Bs(100,new Ns("00000000"),Ms.High),new Bs(100,new Ns("00001100"),Ms.ConstrainedHigh),new Bs(244,new Ns("00000000"),Ms.PredictiveHigh444)];function $s(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 js.L1_1:n=0!=(16&i)?js.L1_b:js.L1_1;break;case js.L1:case js.L1_2:case js.L1_3:case js.L2:case js.L2_1:case js.L2_2:case js.L3:case js.L3_1:case js.L3_2:case js.L4:case js.L4_1:case js.L4_2:case js.L5:case js.L5_1:case js.L5_2:n=r;break;default:return void xs.warn(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${r}]`)}for(const e of Fs)if(s===e.profile_idc&&e.profile_iop.isMatch(i))return new Ls(e.profile,n);xs.warn(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${s}, profile_iop:${i}]`)}function Vs(e){if(e.level==js.L1_b)switch(e.profile){case Ms.ConstrainedBaseline:return"42f00b";case Ms.Baseline:return"42100b";case Ms.Main:return"4d100b";default:return void xs.warn(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`)}let t;switch(e.profile){case Ms.ConstrainedBaseline:t="42e0";break;case Ms.Baseline:t="4200";break;case Ms.Main:t="4d00";break;case Ms.ConstrainedHigh:t="640c";break;case Ms.High:t="6400";break;case Ms.PredictiveHigh444:t="f400";break;default:return void xs.warn(`profileLevelIdToString() | unrecognized profile ${e.profile}`)}let r=e.level.toString(16);return 1===r.length&&(r=`0${r}`),`${t}${r}`}function zs(e={}){const t=e["profile-level-id"];return t?$s(t):As}function Us(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 qs(e={}){const t=e["level-asymmetry-allowed"];return!0===t||1===t||"1"===t}ks.parseProfileLevelId=$s,ks.profileLevelIdToString=Vs,ks.profileToString=function(e){switch(e){case Ms.ConstrainedBaseline:return"ConstrainedBaseline";case Ms.Baseline:return"Baseline";case Ms.Main:return"Main";case Ms.ConstrainedHigh:return"ConstrainedHigh";case Ms.High:return"High";case Ms.PredictiveHigh444:return"PredictiveHigh444";default:return void xs.warn(`profileToString() | unrecognized profile ${e}`)}},ks.levelToString=function(e){switch(e){case js.L1_b:return"1b";case js.L1:return"1";case js.L1_1:return"1.1";case js.L1_2:return"1.2";case js.L1_3:return"1.3";case js.L2:return"2";case js.L2_1:return"2.1";case js.L2_2:return"2.2";case js.L3:return"3";case js.L3_1:return"3.1";case js.L3_2:return"3.2";case js.L4:return"4";case js.L4_1:return"4.1";case js.L4_2:return"4.2";case js.L5:return"5";case js.L5_1:return"5.1";case js.L5_2:return"5.2";default:return void xs.warn(`levelToString() | unrecognized level ${e}`)}},ks.parseSdpProfileLevelId=zs,ks.isSameProfile=function(e={},t={}){const r=zs(e),i=zs(t);return Boolean(r&&i&&r.profile===i.profile)},ks.generateProfileLevelIdStringForAnswer=function(e={},t={}){if(!e["profile-level-id"]&&!t["profile-level-id"])return void xs.warn("generateProfileLevelIdStringForAnswer() | profile-level-id missing in local and remote params");const r=zs(e),i=zs(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=qs(e)&&qs(t),n=r.level,a=i.level,o=function(e,t){return e===js.L1_b?t!==js.L1&&t!==js.L1_b:t===js.L1_b?e!==js.L1:e<t}(c=n,d=a)?c:d;var c,d;const l=s?n:o;return xs.debug(`generateProfileLevelIdStringForAnswer() | result [profile:${r.profile}, level:${l}]`),Vs(new Ls(r.profile,l))};var Gs=Yi&&Yi.__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]}),Ws=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Hs=Yi&&Yi.__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)&&Gs(t,e,r);return Ws(t,e),t};Object.defineProperty(Ps,"__esModule",{value:!0}),Ps.canReceive=Ps.canSend=Ps.generateProbatorRtpParameters=Ps.reduceCodecs=Ps.getSendingRemoteRtpParameters=Ps.getSendingRtpParameters=Ps.getRecvRtpCapabilities=Ps.getExtendedRtpCapabilities=Ps.validateSctpCapabilities=Ps.validateSctpStreamParameters=Ps.validateRtpParameters=Ps.validateRtpCapabilities=void 0;const Ks=Hs(ks),Js=Hs(Ts);function Qs(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)en(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)tn(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)rn(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 Zs(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)Ys(t)}function Ys(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 Xs(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 en(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)Ys(t)}function tn(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 rn(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 sn(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function nn(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(!Ks.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=Ks.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 an(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function on(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}Ps.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)Zs(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)Xs(t)},Ps.validateRtpParameters=Qs,Ps.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;if("boolean"==typeof e.ordered?t=!0:e.ordered=!0,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");if(t||!e.maxPacketLifeTime&&!e.maxRetransmits||(e.ordered=!1),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")},Ps.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)},Ps.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(sn(i))continue;const t=(e.codecs||[]).find((e=>nn(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:on(t,i)};r.codecs.push(s)}for(const i of r.codecs){const r=e.codecs.find((e=>sn(e)&&e.parameters.apt===i.localPayloadType)),s=t.codecs.find((e=>sn(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=>an(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},Ps.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},Ps.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},Ps.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},Ps.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(nn(e[i],t)){r.push(e[i]),sn(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]),sn(e[1])&&r.push(e[1]);return r},Ps.generateProbatorRtpParameters=function(e){Qs(e=Js.clone(e));const t={mid:"probator",codecs:[],headerExtensions:[],encodings:[{ssrc:1234}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=127,t.headerExtensions=e.headerExtensions,t},Ps.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},Ps.canReceive=function(e,t){if(Qs(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var cn={},dn={},ln={};Object.defineProperty(ln,"__esModule",{value:!0}),ln.Logger=void 0;const pn=ds,un="awaitqueue";ln.Logger=class{constructor(e){e?(this._debug=(0,pn.default)(`${un}:${e}`),this._warn=(0,pn.default)(`${un}:WARN:${e}`),this._error=(0,pn.default)(`${un}:ERROR:${e}`)):(this._debug=(0,pn.default)(un),this._warn=(0,pn.default)(`${un}:WARN`),this._error=(0,pn.default)(`${un}: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(dn,"__esModule",{value:!0}),dn.AwaitQueue=dn.AwaitQueueRemovedTaskError=dn.AwaitQueueStoppedError=void 0;const hn=new ln.Logger;class mn extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,mn)}}dn.AwaitQueueStoppedError=mn;class fn extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,fn)}}dn.AwaitQueueRemovedTaskError=fn;
11
11
  /*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
12
- let gn;dn.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,hn.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),hn.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),hn.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(){hn.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())hn.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new mn);this.stopping=!1}remove(e){hn.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new fn):hn.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(hn.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 vn="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:Yi):e=>(gn||(gn=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),_n={};Object.defineProperty(_n,"__esModule",{value:!0}),_n.Producer=void 0;const bn=vs,yn=Ss,wn=new hs.Logger("Producer");class Sn extends bn.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 bn.EnhancedEventEmitter,wn.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||(wn.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(wn.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new yn.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){wn.debug("pause()"),this._closed?wn.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(){wn.debug("resume()"),this._closed?wn.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(wn.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new yn.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new yn.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()):wn.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new yn.InvalidStateError("closed");if("video"!==this._kind)throw new yn.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 yn.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){wn.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){}}}_n.Producer=Sn;var Cn={};Object.defineProperty(Cn,"__esModule",{value:!0}),Cn.Consumer=void 0;const Rn=vs,Tn=Ss,Pn=new hs.Logger("Consumer");class kn extends Rn.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:s,rtpParameters:n,appData:a}){super(),this._closed=!1,this._observer=new Rn.EnhancedEventEmitter,Pn.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||(Pn.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Pn.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Tn.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Pn.debug("pause()"),this._closed?Pn.error("pause() | Consumer closed"):this._paused?Pn.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){Pn.debug("resume()"),this._closed?Pn.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):Pn.debug("resume() | Consumer is already resumed")}onTrackEnded(){Pn.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){}}}Cn.Consumer=kn;var Dn={};Object.defineProperty(Dn,"__esModule",{value:!0}),Dn.DataProducer=void 0;const In=vs,En=Ss,On=new hs.Logger("DataProducer");class xn extends In.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new In.EnhancedEventEmitter,On.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||(On.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(On.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(On.debug("send()"),this._closed)throw new En.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(On.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?On.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):On.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(On.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||On.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}Dn.DataProducer=xn;var Mn={};Object.defineProperty(Mn,"__esModule",{value:!0}),Mn.DataConsumer=void 0;const jn=vs,Ln=new hs.Logger("DataConsumer");class An extends jn.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:s}){super(),this._closed=!1,this._observer=new jn.EnhancedEventEmitter,Ln.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||(Ln.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Ln.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Ln.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?Ln.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Ln.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Ln.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)}))}}Mn.DataConsumer=An;var Nn=Yi&&Yi.__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]}),Bn=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Fn=Yi&&Yi.__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)&&Nn(t,e,r);return Bn(t,e),t},$n=Yi&&Yi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(cn,"__esModule",{value:!0}),cn.Transport=void 0;const Vn=dn,zn=$n(vn),Un=hs,qn=vs,Gn=Ss,Wn=Fn(Ts),Hn=Fn(Ps),Kn=_n,Jn=Cn,Qn=Dn,Zn=Mn,Yn=new Un.Logger("Transport");class Xn{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}let ea=class extends qn.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 Vn.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 qn.EnhancedEventEmitter,Yn.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,delete(c=Wn.clone(c)||{}).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=p(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,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){Yn.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 Gn.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(Yn.debug("restartIce()"),this._closed)throw new Gn.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(Yn.debug("updateIceServers()"),this._closed)throw new Gn.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,appData:o={}}={}){if(Yn.debug("produce() [track:%o]",e),this._closed)throw new Gn.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new Gn.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new Gn.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new Gn.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(o&&"object"!=typeof o)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let c;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?c=void 0:t&&(c=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:d,rtpParameters:l,rtpSender:p}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:i});try{Hn.validateRtpParameters(l);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:l,appData:o},t,r)})),r=new Kn.Producer({id:t,localId:d,rtpSender:p,track:e,rtpParameters:l,stopTracks:s,disableTrackOnPause:n,zeroRtpOnPause:a,appData:o});return this._producers.set(r.id,r),this.handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(d).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,appData:n={}}){if(Yn.debug("consume()"),i=Wn.clone(i),this._closed)throw new Gn.InvalidStateError("closed");if("recv"!==this._direction)throw new Gn.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(n&&"object"!=typeof n)throw new TypeError("if given, appData must be an object");if(!Hn.canReceive(i,this._extendedRtpCapabilities))throw new Gn.UnsupportedError("cannot consume this Producer");const a=new Xn({id:e,producerId:t,kind:r,rtpParameters:i,streamId:s,appData:n});return this._pendingConsumerTasks.push(a),(0,zn.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),a.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:s="",appData:n={}}={}){if(Yn.debug("produceData()"),this._closed)throw new Gn.InvalidStateError("closed");if("send"!==this._direction)throw new Gn.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new Gn.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});Hn.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 Qn.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(Yn.debug("consumeData()"),r=Wn.clone(r),this._closed)throw new Gn.InvalidStateError("closed");if("recv"!==this._direction)throw new Gn.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new Gn.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");return Hn.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:a}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:s}),o=new Zn.DataConsumer({id:e,dataProducerId:t,dataChannel:a,sctpStreamParameters:r,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 Yn.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}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:s,streamId:n})}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 Jn.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=Hn.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),Yn.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){Yn.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 Yn.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){Yn.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 Yn.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){Yn.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 Yn.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){Yn.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",(({iceParameters:e,dtlsParameters:t},r,i)=>{this._closed?i(new Gn.InvalidStateError("closed")):this.safeEmit("connect",{iceParameters:e,dtlsParameters:t},r,i)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(Yn.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(Yn.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=>Yn.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 Gn.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,zn.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,zn.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new Gn.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)}))}};cn.Transport=ea;var ta={},ra={},ia={},sa={exports:{}},na=sa.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(na).forEach((function(e){na[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var aa=sa.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=aa,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}}))}))}}(ia);var oa=aa,ca=/%[sdv%]/g,da=function(e){var t=1,r=arguments,i=r.length;return e.replace(ca,(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""}}))},la=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 da.apply(null,i)},pa=["v","o","s","i","u","e","p","c","b","t","r","z","a"],ua=["i","c","b","a"],ha=ia,ma=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||pa,i=t.innerOrder||ua,s=[];return r.forEach((function(t){oa[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(la(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(la(t,r,e))}))}))})),e.media.forEach((function(e){s.push(la("m",oa.m[0],e)),i.forEach((function(t){oa[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(la(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(la(t,r,e))}))}))}))})),s.join("\r\n")+"\r\n"},fa=ra.write=ma,ga=ra.parse=ha.parse;ra.parseParams=ha.parseParams,ra.parseFmtpConfig=ha.parseFmtpConfig,ra.parsePayloads=ha.parsePayloads,ra.parseRemoteCandidates=ha.parseRemoteCandidates,ra.parseImageAttributes=ha.parseImageAttributes,ra.parseSimulcastStreamList=ha.parseSimulcastStreamList;var va={},_a=Yi&&Yi.__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]}),ba=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ya=Yi&&Yi.__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)&&_a(t,e,r);return ba(t,e),t};Object.defineProperty(va,"__esModule",{value:!0}),va.applyCodecParameters=va.getCname=va.extractDtlsParameters=va.extractIceParameters=va.extractRtpCapabilities=void 0;const wa=ya(ra);va.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=wa.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}},va.extractIceParameters=function({sdpObject:e}){let t=e.iceUfrag,r=e.icePwd;if(!t||!r){const i=(e.media||[]).find((e=>0!==e.port));i&&(t??(t=i.iceUfrag),r??(r=i.icePwd))}if(!t)throw new Error("no a=iceUfrag found at SDP session or media level");if(!r)throw new Error("no a=icePwd found at SDP session or media level");return{usernameFragment:t,password:r}},va.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}]}},va.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},va.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=wa.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]}`}};var Sa={};Object.defineProperty(Sa,"__esModule",{value:!0}),Sa.addLegacySimulcast=Sa.getRtpEncodings=void 0,Sa.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},Sa.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 Ca={};Object.defineProperty(Ca,"__esModule",{value:!0}),Ca.addNackSuppportForOpus=void 0,Ca.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 Ra={};Object.defineProperty(Ra,"__esModule",{value:!0}),Ra.HandlerInterface=void 0;const Ta=vs;class Pa extends Ta.EnhancedEventEmitter{constructor(){super()}}Ra.HandlerInterface=Pa;var ka={},Da={},Ia=Yi&&Yi.__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]}),Ea=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Oa=Yi&&Yi.__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)&&Ia(t,e,r);return Ea(t,e),t};Object.defineProperty(Da,"__esModule",{value:!0}),Da.OfferMediaSection=Da.AnswerMediaSection=Da.MediaSection=void 0;const xa=Oa(ra),Ma=Oa(Ts);class ja{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}}Da.MediaSection=ja;Da.AnswerMediaSection=class extends ja{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:La(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=Ma.clone(e.parameters)??{};let i=Ma.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=xa.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 La(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}Da.OfferMediaSection=class extends ja{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:La(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:La(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 Aa=Yi&&Yi.__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]}),Na=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ba=Yi&&Yi.__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)&&Aa(t,e,r);return Na(t,e),t};Object.defineProperty(ka,"__esModule",{value:!0}),ka.RemoteSdp=void 0;const Fa=Ba(ra),$a=Da,Va=new hs.Logger("RemoteSdp");ka.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){Va.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){Va.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 $a.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 $a.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?(Va.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 $a.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 $a.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++,Fa.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 za={};Object.defineProperty(za,"__esModule",{value:!0}),za.parse=void 0;const Ua=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");za.parse=function(e){const t=Ua.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var qa=Yi&&Yi.__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]}),Ga=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Wa=Yi&&Yi.__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)&&qa(t,e,r);return Ga(t,e),t};Object.defineProperty(ta,"__esModule",{value:!0});var Ha=ta.Chrome111=void 0;const Ka=Wa(ra),Ja=hs,Qa=Wa(Ts),Za=Wa(Ps),Ya=Wa(va),Xa=Wa(Sa),eo=Wa(Ca),to=Ss,ro=Ra,io=ka,so=za,no=new Ja.Logger("Chrome111"),ao={OS:1024,MIS:1024};class oo extends ro.HandlerInterface{static createFactory(){return()=>new oo}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(no.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){no.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=Ka.parse(t.sdp),i=Ya.extractRtpCapabilities({sdpObject:r});return eo.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return no.debug("getNativeSctpCapabilities()"),{numStreams:ao}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),no.debug("run()"),this._direction=e,this._remoteSdp=new io.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Za.getSendingRtpParameters("audio",d),video:Za.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Za.getSendingRemoteRtpParameters("audio",d),video:Za.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)})):(no.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(),no.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),no.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});no.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();no.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}){if(this.assertNotClosed(),this.assertSendDirection(),no.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){t.forEach(((e,t)=>{e.rid=`r${t}`}));let e=1,r=1;for(const e of t){const t=e.scalabilityMode?(0,so.parse)(e.scalabilityMode).temporalLayers:3;t>r&&(r=t)}for(const i of t)i.rid="r"+e++,i.scalabilityMode=`L1T${r}`}const s=Qa.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Za.reduceCodecs(s.codecs,i);const n=Qa.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=Za.reduceCodecs(n.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),c=await this._pc.createOffer();let d=Ka.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:d}),no.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const l=o.mid;s.mid=l,d=Ka.parse(this._pc.localDescription.sdp);const p=d.media[a.idx];if(s.rtcp.cname=Ya.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Xa.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),s.encodings=e}else s.encodings=t;else s.encodings=Xa.getRtpEncodings({offerMediaObject:p});this._remoteSdp.send({offerMediaObject:p,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return no.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,o),{localId:l,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),no.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();no.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),no.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();no.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),no.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();no.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?no.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):no.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(),no.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();no.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),no.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();no.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};no.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};no.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ao.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ka.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),no.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()};no.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;no.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()};no.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Ka.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));Ya.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:Ka.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),no.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){no.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()};no.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();no.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){no.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()};no.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();no.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){no.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()};no.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();no.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};no.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()};no.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ka.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}no.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=Ka.parse(this._pc.localDescription.sdp));const r=Ya.extractIceParameters({sdpObject:t}),i=Ya.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new to.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')}}Ha=ta.Chrome111=oo;var co={},lo=Yi&&Yi.__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]}),po=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),uo=Yi&&Yi.__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)&&lo(t,e,r);return po(t,e),t};Object.defineProperty(co,"__esModule",{value:!0}),co.Chrome74=void 0;const ho=uo(ra),mo=hs,fo=uo(Ts),go=uo(Ps),vo=uo(va),_o=uo(Sa),bo=uo(Ca),yo=Ss,wo=Ra,So=ka,Co=za,Ro=new mo.Logger("Chrome74"),To={OS:1024,MIS:1024};class Po extends wo.HandlerInterface{static createFactory(){return()=>new Po}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(Ro.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Ro.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=ho.parse(t.sdp),i=vo.extractRtpCapabilities({sdpObject:r});return bo.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ro.debug("getNativeSctpCapabilities()"),{numStreams:To}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ro.debug("run()"),this._direction=e,this._remoteSdp=new So.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:go.getSendingRtpParameters("audio",d),video:go.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:go.getSendingRemoteRtpParameters("audio",d),video:go.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)})):(Ro.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(),Ro.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Ro.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ro.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ro.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ro.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ro.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(),Ro.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=fo.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=go.reduceCodecs(s.codecs,i);const n=fo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=go.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=ho.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,Co.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Ro.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=ho.parse(d.sdp),c=l.media[a.idx],_o.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:ho.write(l)}),Ro.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=o.mid;if(s.mid=h,l=ho.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=vo.getCname({offerMediaObject:c}),t)if(1===t.length){let e=_o.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),s.encodings=e}else s.encodings=t;else s.encodings=_o.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 Ro.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(),Ro.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();Ro.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ro.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Ro.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();Ro.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ro.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Ro.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();Ro.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ro.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Ro.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Ro.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(),Ro.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();Ro.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Ro.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Ro.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();Ro.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Ro.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};Ro.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%To.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ho.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Ro.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()};Ro.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;Ro.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()};Ro.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=ho.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));vo.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:ho.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Ro.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){Ro.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()};Ro.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ro.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){Ro.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()};Ro.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ro.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){Ro.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()};Ro.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ro.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};Ro.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()};Ro.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ho.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Ro.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=ho.parse(this._pc.localDescription.sdp));const r=vo.extractIceParameters({sdpObject:t}),i=vo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new yo.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')}}co.Chrome74=Po;var ko={},Do=Yi&&Yi.__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]}),Io=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Eo=Yi&&Yi.__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)&&Do(t,e,r);return Io(t,e),t};Object.defineProperty(ko,"__esModule",{value:!0}),ko.Chrome70=void 0;const Oo=Eo(ra),xo=hs,Mo=Eo(Ts),jo=Eo(Ps),Lo=Eo(va),Ao=Eo(Sa),No=Ra,Bo=ka,Fo=za,$o=new xo.Logger("Chrome70"),Vo={OS:1024,MIS:1024};class zo extends No.HandlerInterface{static createFactory(){return()=>new zo}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($o.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){$o.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=Oo.parse(t.sdp);return Lo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return $o.debug("getNativeSctpCapabilities()"),{numStreams:Vo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){$o.debug("run()"),this._direction=e,this._remoteSdp=new Bo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:jo.getSendingRtpParameters("audio",d),video:jo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:jo.getSendingRemoteRtpParameters("audio",d),video:jo.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($o.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){$o.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if($o.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});$o.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};$o.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};$o.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();$o.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(),$o.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=Mo.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=jo.reduceCodecs(s.codecs,i);const n=Mo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=jo.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=Oo.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&($o.debug("send() | enabling legacy simulcast"),l=Oo.parse(d.sdp),c=l.media[a.idx],Ao.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:Oo.write(l)});let p=!1;const u=(0,Fo.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&($o.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Oo.parse(d.sdp),c=l.media[a.idx],Ao.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Oo.write(l)}),$o.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){$o.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=Oo.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=Lo.getCname({offerMediaObject:c}),s.encodings=Ao.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 $o.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(),$o.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();$o.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};$o.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?$o.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):$o.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(),$o.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();$o.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};$o.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),$o.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();$o.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};$o.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};$o.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Vo.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Oo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),$o.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()};$o.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;$o.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()};$o.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Oo.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));Lo.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:Oo.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),$o.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){$o.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()};$o.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();$o.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};$o.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()};$o.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Oo.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}$o.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=Oo.parse(this._pc.localDescription.sdp));const r=Lo.extractIceParameters({sdpObject:t}),i=Lo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},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')}}ko.Chrome70=zo;var Uo={},qo={};Object.defineProperty(qo,"__esModule",{value:!0}),qo.addLegacySimulcast=qo.getRtpEncodings=void 0,qo.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},qo.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 Go=Yi&&Yi.__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]}),Wo=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ho=Yi&&Yi.__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)&&Go(t,e,r);return Wo(t,e),t};Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.Chrome67=void 0;const Ko=Ho(ra),Jo=hs,Qo=Ho(Ts),Zo=Ho(Ps),Yo=Ho(va),Xo=Ho(qo),ec=Ra,tc=ka,rc=new Jo.Logger("Chrome67"),ic={OS:1024,MIS:1024};class sc extends ec.HandlerInterface{static createFactory(){return()=>new sc}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(rc.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){rc.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=Ko.parse(t.sdp);return Yo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return rc.debug("getNativeSctpCapabilities()"),{numStreams:ic}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){rc.debug("run()"),this._direction=e,this._remoteSdp=new tc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:Zo.getSendingRtpParameters("audio",d),video:Zo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Zo.getSendingRemoteRtpParameters("audio",d),video:Zo.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(rc.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){rc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(rc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});rc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};rc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};rc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();rc.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(),rc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&rc.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=Ko.parse(n.sdp);const o=Qo.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=Zo.reduceCodecs(o.codecs);const c=Qo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Zo.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(rc.debug("send() | enabling simulcast"),a=Ko.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),Xo.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:Ko.write(a)}),rc.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=Ko.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Yo.getCname({offerMediaObject:s}),o.encodings=Xo.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()};rc.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(),rc.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();rc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void rc.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()};rc.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?rc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):rc.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(),rc.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(),rc.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};rc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ic.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ko.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),rc.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()};rc.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;rc.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()};rc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=Ko.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));Yo.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:Ko.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),rc.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){rc.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()};rc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();rc.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};rc.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()};rc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ko.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}rc.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=Ko.parse(this._pc.localDescription.sdp));const r=Yo.extractIceParameters({sdpObject:t}),i=Yo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},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')}}Uo.Chrome67=sc;var nc={},ac=Yi&&Yi.__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]}),oc=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cc=Yi&&Yi.__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)&&ac(t,e,r);return oc(t,e),t};Object.defineProperty(nc,"__esModule",{value:!0}),nc.Chrome55=void 0;const dc=cc(ra),lc=hs,pc=Ss,uc=cc(Ts),hc=cc(Ps),mc=cc(va),fc=cc(qo),gc=Ra,vc=ka,_c=new lc.Logger("Chrome55"),bc={OS:1024,MIS:1024};class yc extends gc.HandlerInterface{static createFactory(){return()=>new yc}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(_c.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){_c.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=dc.parse(t.sdp);return mc.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return _c.debug("getNativeSctpCapabilities()"),{numStreams:bc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){_c.debug("run()"),this._direction=e,this._remoteSdp=new vc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:hc.getSendingRtpParameters("audio",d),video:hc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:hc.getSendingRemoteRtpParameters("audio",d),video:hc.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(_c.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){_c.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(_c.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});_c.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};_c.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};_c.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();_c.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(),_c.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&_c.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=dc.parse(n.sdp);const o=uc.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=hc.reduceCodecs(o.codecs);const c=uc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=hc.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(_c.debug("send() | enabling simulcast"),a=dc.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),fc.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:dc.write(a)}),_c.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=dc.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=mc.getCname({offerMediaObject:s}),o.encodings=fc.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()};_c.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(),_c.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();_c.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void _c.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()};_c.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 pc.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new pc.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new pc.UnsupportedError("not supported")}async getSenderStats(e){throw new pc.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};_c.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%bc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=dc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),_c.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()};_c.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;_c.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()};_c.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=dc.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));mc.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:dc.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),_c.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){_c.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()};_c.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();_c.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new pc.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};_c.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()};_c.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=dc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}_c.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=dc.parse(this._pc.localDescription.sdp));const r=mc.extractIceParameters({sdpObject:t}),i=mc.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},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')}}nc.Chrome55=yc;var wc={},Sc=Yi&&Yi.__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]}),Cc=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Rc=Yi&&Yi.__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)&&Sc(t,e,r);return Cc(t,e),t};Object.defineProperty(wc,"__esModule",{value:!0}),wc.Firefox60=void 0;const Tc=Rc(ra),Pc=hs,kc=Ss,Dc=Rc(Ts),Ic=Rc(Ps),Ec=Rc(va),Oc=Rc(Sa),xc=Ra,Mc=ka,jc=za,Lc=new Pc.Logger("Firefox60"),Ac={OS:16,MIS:2048};class Nc extends xc.HandlerInterface{static createFactory(){return()=>new Nc}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(Lc.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Lc.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=Tc.parse(a.sdp);return Ec.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 Lc.debug("getNativeSctpCapabilities()"),{numStreams:Ac}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Lc.debug("run()"),this._direction=e,this._remoteSdp=new Mc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Ic.getSendingRtpParameters("audio",d),video:Ic.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ic.getSendingRemoteRtpParameters("audio",d),video:Ic.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(Lc.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 kc.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),Lc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Lc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Lc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Lc.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(),Lc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=Dc.clone(t)).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const s=Dc.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Ic.reduceCodecs(s.codecs,i);const n=Dc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=Ic.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=Tc.parse(o.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,jc.parse)((t||[{}])[0].scalabilityMode);Lc.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const l=a.mid;s.mid=l,c=Tc.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(s.rtcp.cname=Ec.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Oc.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),s.encodings=e}else s.encodings=t.reverse();else s.encodings=Oc.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 Lc.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(),Lc.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();Lc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Lc.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();Lc.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Lc.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();Lc.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Lc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Lc.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(),Lc.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();Lc.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Lc.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();Lc.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.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};Lc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ac.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Tc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),Lc.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()};Lc.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;Lc.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()};Lc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Tc.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));Ec.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),s={type:"answer",sdp:Tc.write(n)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:n}),Lc.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){Lc.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()};Lc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Lc.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){Lc.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()};Lc.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Lc.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){Lc.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()};Lc.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Lc.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};Lc.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()};Lc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Tc.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}Lc.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=Tc.parse(this._pc.localDescription.sdp));const r=Ec.extractIceParameters({sdpObject:t}),i=Ec.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},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')}}wc.Firefox60=Nc;var Bc={},Fc=Yi&&Yi.__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]}),$c=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Vc=Yi&&Yi.__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)&&Fc(t,e,r);return $c(t,e),t};Object.defineProperty(Bc,"__esModule",{value:!0}),Bc.Safari12=void 0;const zc=Vc(ra),Uc=hs,qc=Vc(Ts),Gc=Vc(Ps),Wc=Vc(va),Hc=Vc(Sa),Kc=Vc(Ca),Jc=Ss,Qc=Ra,Zc=ka,Yc=za,Xc=new Uc.Logger("Safari12"),ed={OS:1024,MIS:1024};class td extends Qc.HandlerInterface{static createFactory(){return()=>new td}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(Xc.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Xc.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=zc.parse(t.sdp),i=Wc.extractRtpCapabilities({sdpObject:r});return Kc.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Xc.debug("getNativeSctpCapabilities()"),{numStreams:ed}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Xc.debug("run()"),this._direction=e,this._remoteSdp=new Zc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Gc.getSendingRtpParameters("audio",d),video:Gc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Gc.getSendingRemoteRtpParameters("audio",d),video:Gc.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(Xc.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(),Xc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Xc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Xc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Xc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Xc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Xc.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(),Xc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=qc.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Gc.reduceCodecs(s.codecs,i);const n=qc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=Gc.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=zc.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});const p=(0,Yc.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(Xc.debug("send() | enabling legacy simulcast"),l=zc.parse(d.sdp),c=l.media[a.idx],Hc.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:zc.write(l)}),Xc.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const u=o.mid;if(s.mid=u,l=zc.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=Wc.getCname({offerMediaObject:c}),s.encodings=Hc.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<s.encodings.length;++e)t[e]&&Object.assign(s.encodings[e],t[e]);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${p.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return Xc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,o),{localId:u,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Xc.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();Xc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Xc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Xc.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();Xc.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Xc.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Xc.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();Xc.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Xc.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Xc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Xc.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(),Xc.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();Xc.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Xc.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Xc.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();Xc.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Xc.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};Xc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ed.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=zc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Xc.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()};Xc.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;Xc.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()};Xc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=zc.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));Wc.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:zc.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Xc.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){Xc.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()};Xc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xc.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){Xc.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()};Xc.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xc.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){Xc.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()};Xc.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xc.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};Xc.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()};Xc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=zc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Xc.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=zc.parse(this._pc.localDescription.sdp));const r=Wc.extractIceParameters({sdpObject:t}),i=Wc.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Jc.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')}}Bc.Safari12=td;var rd={},id=Yi&&Yi.__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]}),sd=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),nd=Yi&&Yi.__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)&&id(t,e,r);return sd(t,e),t};Object.defineProperty(rd,"__esModule",{value:!0}),rd.Safari11=void 0;const ad=nd(ra),od=hs,cd=nd(Ts),dd=nd(Ps),ld=nd(va),pd=nd(qo),ud=Ra,hd=ka,md=new od.Logger("Safari11"),fd={OS:1024,MIS:1024};class gd extends ud.HandlerInterface{static createFactory(){return()=>new gd}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(md.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){md.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=ad.parse(t.sdp);return ld.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return md.debug("getNativeSctpCapabilities()"),{numStreams:fd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){md.debug("run()"),this._direction=e,this._remoteSdp=new hd.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:dd.getSendingRtpParameters("audio",d),video:dd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:dd.getSendingRemoteRtpParameters("audio",d),video:dd.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(md.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){md.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(md.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});md.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};md.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};md.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();md.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(),md.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&md.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=ad.parse(n.sdp);const o=cd.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=dd.reduceCodecs(o.codecs);const c=cd.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=dd.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(md.debug("send() | enabling simulcast"),a=ad.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),pd.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:ad.write(a)}),md.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=ad.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=ld.getCname({offerMediaObject:s}),o.encodings=pd.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()};md.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();md.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void md.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()};md.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?md.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):md.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(),md.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(),md.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};md.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%fd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ad.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),md.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()};md.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;md.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()};md.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=ad.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));ld.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:ad.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),md.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){md.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()};md.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();md.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};md.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()};md.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ad.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}md.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=ad.parse(this._pc.localDescription.sdp));const r=ld.extractIceParameters({sdpObject:t}),i=ld.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},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')}}rd.Safari11=gd;var vd={},_d={},bd=Yi&&Yi.__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]}),yd=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),wd=Yi&&Yi.__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)&&bd(t,e,r);return yd(t,e),t};Object.defineProperty(_d,"__esModule",{value:!0}),_d.mangleRtpParameters=_d.getCapabilities=void 0;const Sd=wd(Ts);_d.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=Sd.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},_d.mangleRtpParameters=function(e){const t=Sd.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};var Cd=Yi&&Yi.__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]}),Rd=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Td=Yi&&Yi.__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)&&Cd(t,e,r);return Rd(t,e),t};Object.defineProperty(vd,"__esModule",{value:!0}),vd.Edge11=void 0;const Pd=hs,kd=Ss,Dd=Td(Ts),Id=Td(Ps),Ed=Td(_d),Od=Ra,xd=new Pd.Logger("Edge11");class Md extends Od.HandlerInterface{static createFactory(){return()=>new Md}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){xd.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 xd.debug("getNativeRtpCapabilities()"),Ed.getCapabilities()}async getNativeSctpCapabilities(){return xd.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}){xd.debug("run()"),this._sendingRtpParametersByKind={audio:Id.getSendingRtpParameters("audio",d),video:Id.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${Dd.generateRandomNumber()}`,this.setIceGatherer({iceServers:n,iceTransportPolicy:a}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new kd.UnsupportedError("not supported")}async restartIce(e){if(xd.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){xd.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}){xd.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),xd.debug("send() | calling new RTCRtpSender()");const s=new RTCRtpSender(e,this._dtlsTransport),n=Dd.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Id.reduceCodecs(n.codecs,i);const a=n.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=Dd.generateRandomNumber(),a&&(e.rtx={ssrc:Dd.generateRandomNumber()});n.encodings=t,n.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=Ed.mangleRtpParameters(n);xd.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){xd.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{xd.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw xd.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?xd.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):xd.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){xd.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){xd.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 kd.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;xd.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;xd.debug("receive() | calling new RTCRtpReceiver()");const n=new RTCRtpReceiver(this._dtlsTransport,i);n.addEventListener("error",(e=>{xd.error('rtpReceiver "error" event [event:%o]',e)}));const a=Ed.mangleRtpParameters(s);xd.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){xd.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{xd.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){xd.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 kd.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{xd.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){xd.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=>{xd.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{xd.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{xd.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{xd.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){xd.debug("setupTransport()");const t=this._iceGatherer.getLocalParameters(),r=this._dtlsTransport.getLocalParameters();r.role=e,await new Promise(((e,i)=>{this.safeEmit("@connect",{iceParameters:t,dtlsParameters:r},e,i)})),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}}vd.Edge11=Md;var jd={},Ld=Yi&&Yi.__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]}),Ad=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Nd=Yi&&Yi.__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)&&Ld(t,e,r);return Ad(t,e),t};Object.defineProperty(jd,"__esModule",{value:!0}),jd.ReactNativeUnifiedPlan=void 0;const Bd=Nd(ra),Fd=hs,$d=Nd(Ts),Vd=Nd(Ps),zd=Nd(va),Ud=Nd(Sa),qd=Nd(Ca),Gd=Ss,Wd=Ra,Hd=ka,Kd=za,Jd=new Fd.Logger("ReactNativeUnifiedPlan"),Qd={OS:1024,MIS:1024};class Zd extends Wd.HandlerInterface{static createFactory(){return()=>new Zd}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(Jd.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(){Jd.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=Bd.parse(t.sdp),i=zd.extractRtpCapabilities({sdpObject:r});return qd.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Jd.debug("getNativeSctpCapabilities()"),{numStreams:Qd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Jd.debug("run()"),this._direction=e,this._remoteSdp=new Hd.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Vd.getSendingRtpParameters("audio",d),video:Vd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Vd.getSendingRemoteRtpParameters("audio",d),video:Vd.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(Jd.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(),Jd.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Jd.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Jd.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Jd.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Jd.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Jd.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(),Jd.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=$d.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Vd.reduceCodecs(s.codecs,i);const n=$d.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=Vd.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=Bd.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,Kd.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Jd.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Bd.parse(d.sdp),c=l.media[a.idx],Ud.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Bd.write(l)}),Jd.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);let h=o.mid??void 0;if(h||Jd.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),s.mid=h,l=Bd.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=zd.getCname({offerMediaObject:c}),t)if(1===t.length){let e=Ud.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),s.encodings=e}else s.encodings=t;else s.encodings=Ud.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 Jd.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),h||(h=o.mid,s.mid=h),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Jd.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();Jd.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Jd.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Jd.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();Jd.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Jd.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Jd.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();Jd.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Jd.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Jd.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Jd.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(),Jd.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();Jd.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Jd.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Jd.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();Jd.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Jd.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};Jd.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Qd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Bd.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Jd.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()};Jd.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;Jd.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()};Jd.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Bd.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));zd.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:Bd.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Jd.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){Jd.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()};Jd.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Jd.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){Jd.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()};Jd.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Jd.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){Jd.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()};Jd.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Jd.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};Jd.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()};Jd.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Bd.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Jd.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=Bd.parse(this._pc.localDescription.sdp));const r=zd.extractIceParameters({sdpObject:t}),i=zd.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Gd.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')}}jd.ReactNativeUnifiedPlan=Zd;var Yd={},Xd=Yi&&Yi.__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]}),el=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),tl=Yi&&Yi.__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)&&Xd(t,e,r);return el(t,e),t};Object.defineProperty(Yd,"__esModule",{value:!0}),Yd.ReactNative=void 0;const rl=tl(ra),il=hs,sl=Ss,nl=tl(Ts),al=tl(Ps),ol=tl(va),cl=tl(qo),dl=Ra,ll=ka,pl=new il.Logger("ReactNative"),ul={OS:1024,MIS:1024};class hl extends dl.HandlerInterface{static createFactory(){return()=>new hl}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(pl.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){pl.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=rl.parse(t.sdp);return ol.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return pl.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}){pl.debug("run()"),this._direction=e,this._remoteSdp=new ll.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:al.getSendingRtpParameters("audio",d),video:al.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:al.getSendingRemoteRtpParameters("audio",d),video:al.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(pl.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){pl.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(pl.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});pl.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};pl.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};pl.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();pl.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(),pl.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&pl.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=rl.parse(n.sdp);const o=nl.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=al.reduceCodecs(o.codecs);const c=nl.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=al.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(pl.debug("send() | enabling simulcast"),a=rl.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),cl.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:rl.write(a)}),pl.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=rl.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=ol.getCname({offerMediaObject:s}),o.encodings=cl.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()};pl.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(),pl.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();pl.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void pl.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()};pl.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 sl.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new sl.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new sl.UnsupportedError("not implemented")}async getSenderStats(e){throw new sl.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};pl.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=rl.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),pl.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()};pl.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;pl.debug("receive() [trackId:%s, kind:%s]",e,i);const n=i;let a=t.streamId||s.rtcp.cname;pl.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${nl.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()};pl.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=rl.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));ol.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:rl.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),pl.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){pl.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()};pl.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();pl.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new sl.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};pl.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()};pl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=rl.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}pl.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=rl.parse(this._pc.localDescription.sdp));const r=ol.extractIceParameters({sdpObject:t}),i=ol.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},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')}}Yd.ReactNative=hl;var ml=Yi&&Yi.__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]}),fl=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),gl=Yi&&Yi.__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)&&ml(t,e,r);return fl(t,e),t};Object.defineProperty(ls,"__esModule",{value:!0}),ls.Device=ls.detectDevice=void 0;const vl=us,_l=hs,bl=vs,yl=Ss,wl=gl(Ts),Sl=gl(Ps),Cl=cn,Rl=ta,Tl=co,Pl=ko,kl=Uo,Dl=nc,Il=wc,El=Bc,Ol=rd,xl=vd,Ml=jd,jl=Yd,Ll=new _l.Logger("Device");function Al(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return Ll.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void Ll.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(Ll.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(Ll.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)Ll.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new vl.UAParser(e);Ll.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>=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"}Ll.warn("detectDevice() | browser not supported [name:%s, version:%s]",i,s)}}ls.detectDevice=Al;ls.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new bl.EnhancedEventEmitter,Ll.debug("constructor()"),r){if(Ll.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)Ll.debug("constructor() | handler given: %s",e);else{if(!(e=Al()))throw new yl.UnsupportedError("device not supported");Ll.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=Rl.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=Tl.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=Pl.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=kl.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=Dl.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=Il.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=El.Safari12.createFactory();break;case"Safari11":this._handlerFactory=Ol.Safari11.createFactory();break;case"Edge11":this._handlerFactory=xl.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=Ml.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=jl.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 yl.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new yl.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;Ll.debug("load() [routerRtpCapabilities:%o]",e),e=wl.clone(e);try{if(this._loaded)throw new yl.InvalidStateError("already loaded");Sl.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();Ll.debug("load() | got native RTP capabilities:%o",r),Sl.validateRtpCapabilities(r),this._extendedRtpCapabilities=Sl.getExtendedRtpCapabilities(r,e),Ll.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=Sl.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=Sl.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=Sl.getRecvRtpCapabilities(this._extendedRtpCapabilities),Sl.validateRtpCapabilities(this._recvRtpCapabilities),Ll.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),Ll.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),Sl.validateSctpCapabilities(this._sctpCapabilities),Ll.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new yl.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 Ll.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 Ll.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 yl.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 Cl.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 Nl={},Bl={};Object.defineProperty(Bl,"__esModule",{value:!0});var Fl={};Object.defineProperty(Fl,"__esModule",{value:!0}),function(e){var t=Yi&&Yi.__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=Yi&&Yi.__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(ls,e),r(cn,e),r(_n,e),r(Cn,e),r(Dn,e),r(Mn,e),r(Bl,e),r(Fl,e),r(Ra,e),r(Ss,e)}(Nl),function(e){var t=Yi&&Yi.__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=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Yi&&Yi.__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=Yi&&Yi.__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(ds);e.debug=n.default;const a=ls;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(Nl);e.types=o,e.version="3.7.3";var c=za;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(is);let $l=!0,Vl=!0;function zl(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function Ul(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 ql(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):($l=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function Gl(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(Vl=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function Wl(){if("object"==typeof window){if($l)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function Hl(e,t){Vl&&console.warn(e+" is deprecated, please use "+t+" instead.")}function Kl(e){return"[object Object]"===Object.prototype.toString.call(e)}function Jl(e){return Kl(e)?Object.keys(e).reduce((function(t,r){const i=Kl(e[r]),s=i?Jl(e[r]):e[r],n=i&&!Object.keys(s).length;return void 0===s||n?t:Object.assign(t,{[r]:s})}),{}):e}function Ql(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?Ql(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{Ql(e,e.get(t),r)}))})))}function Zl(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&&Ql(e,r,s)}))})),s}const Yl=Wl;function Xl(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),Yl("chrome: "+JSON.stringify(e)),s(e)}))}e.video=i(e.video)}return Yl("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 ep(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function tp(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 Ul(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function rp(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 ip(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 sp(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=>Zl(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}),Ul(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>Zl(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 np(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 ap(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return np(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 op(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 cp(e,t){Ul(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var dp=Object.freeze({__proto__:null,fixNegotiationNeeded:cp,shimAddTrackRemoveTrack:ap,shimAddTrackRemoveTrackWithNative:np,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:rp,shimGetStats:ip,shimGetUserMedia:Xl,shimMediaStream:ep,shimOnTrack:tp,shimPeerConnection:op,shimSenderReceiverGetStats:sp});function lp(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){Hl("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 pp(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 up(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 hp(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 mp(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}),Ul(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function fp(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){Hl("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function gp(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function vp(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 _p(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 bp(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 yp(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 wp=Object.freeze({__proto__:null,shimAddTransceiver:vp,shimCreateAnswer:yp,shimCreateOffer:bp,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:_p,shimGetUserMedia:lp,shimOnTrack:pp,shimPeerConnection:up,shimRTCDataChannel:gp,shimReceiverGetStats:mp,shimRemoveStream:fp,shimSenderGetStats:hp});function Sp(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 Cp(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 Rp(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 Tp(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(Pp(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function Pp(e){return e&&void 0!==e.video?Object.assign({},e,{video:Jl(e.video)}):e}function kp(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?(Hl("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 Dp(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 Ip(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 Ep(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var Op=Object.freeze({__proto__:null,shimAudioContext:Ep,shimCallbacksAPI:Rp,shimConstraints:Pp,shimCreateOfferLegacy:Ip,shimGetUserMedia:Tp,shimLocalStreamsAPI:Sp,shimRTCIceServerUrls:kp,shimRemoteStreamsAPI:Cp,shimTrackEventTransceiver:Dp}),xp={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}(xp);var Mp=xp.exports,jp=Xi(Mp),Lp=e({__proto__:null,default:jp},[Mp]);function Ap(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=jp.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,Ul(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function Np(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||Ul(e,"icecandidate",(e=>{if(e.candidate){const t=jp.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function Bp(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=jp.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=jp.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=jp.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 Fp(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},Ul(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function $p(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 Vp(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 zp(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 Up(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 qp=Object.freeze({__proto__:null,removeExtmapAllowMixed:Vp,shimAddIceCandidateNullOrEmpty:zp,shimConnectionState:$p,shimMaxMessageSize:Bp,shimParameterlessSetLocalDescription:Up,shimRTCIceCandidate:Ap,shimRTCIceCandidateRelayProtocol:Np,shimSendThrowTypeError:Fp});const Gp=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=Wl,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=zl(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=zl(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=zl(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),s={browserDetails:i,commonShim:qp,extractVersion:zl,disableLog:ql,disableWarnings:Gl,sdp:Lp};switch(i.browser){case"chrome":if(!dp||!op||!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=dp,zp(e,i),Up(e),Xl(e,i),ep(e),op(e,i),tp(e),ap(e,i),rp(e),ip(e),sp(e),cp(e,i),Ap(e),Np(e),$p(e),Bp(e,i),Fp(e),Vp(e,i);break;case"firefox":if(!wp||!up||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),s;r("adapter.js shimming firefox."),s.browserShim=wp,zp(e,i),Up(e),lp(e,i),up(e,i),pp(e),fp(e),hp(e),mp(e),gp(e),vp(e),_p(e),bp(e),yp(e),Ap(e),$p(e),Bp(e,i),Fp(e);break;case"safari":if(!Op||!t.shimSafari)return r("Safari shim is not included in this adapter release."),s;r("adapter.js shimming safari."),s.browserShim=Op,zp(e,i),Up(e),kp(e),Ip(e),Rp(e),Sp(e),Cp(e),Dp(e),Tp(e),Ep(e),Ap(e),Np(e),Bp(e,i),Fp(e),Vp(e,i);break;default:r("Unsupported browser!")}return s}({window:"undefined"==typeof window?void 0:window});function Wp(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 Hp=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,Wp(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,Wp(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,Wp(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){a={}}}},Kp=Xi(Hp);let Jp;const Qp=new Uint8Array(16);function Zp(){if(!Jp&&(Jp="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Jp))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Jp(Qp)}const Yp=[];for(let hy=0;hy<256;++hy)Yp.push((hy+256).toString(16).slice(1));var Xp={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function eu(e,t,r){if(Xp.randomUUID&&!t&&!e)return Xp.randomUUID();const i=(e=e||{}).random||(e.rng||Zp)();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 Yp[e[t+0]]+Yp[e[t+1]]+Yp[e[t+2]]+Yp[e[t+3]]+"-"+Yp[e[t+4]]+Yp[e[t+5]]+"-"+Yp[e[t+6]]+Yp[e[t+7]]+"-"+Yp[e[t+8]]+Yp[e[t+9]]+"-"+Yp[e[t+10]]+Yp[e[t+11]]+Yp[e[t+12]]+Yp[e[t+13]]+Yp[e[t+14]]+Yp[e[t+15]]}(i)}var tu={},ru={},iu={};Object.defineProperty(iu,"__esModule",{value:!0}),iu.isCorrect=iu.isInSubnet=void 0,iu.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},iu.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var su={};Object.defineProperty(su,"__esModule",{value:!0}),su.RE_SUBNET_STRING=su.RE_ADDRESS=su.GROUPS=su.BITS=void 0,su.BITS=32,su.GROUPS=4,su.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,su.RE_SUBNET_STRING=/\/\d{1,2}$/;var nu={};Object.defineProperty(nu,"__esModule",{value:!0}),nu.AddressError=void 0;class au extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}nu.AddressError=au;var ou={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 w(){}function S(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 w=s[--_]==h?this.DM:Math.floor(s[_]*f+(s[_-1]+v)*g);if((s[_]+=o.am(0,w,s,b,0,p))<w)for(o.dlShiftTo(b,y),s.subTo(y,s);s[_]<--w;)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),w.prototype.convert=S,w.prototype.revert=S,w.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},w.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,P,k=[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)/k[k.length-1];function I(){var e;e=(new Date).getTime(),T[P++]^=255&e,T[P++]^=e>>8&255,T[P++]^=e>>16&255,T[P++]^=e>>24&255,P>=A&&(P-=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)>k.length&&(e=k.length);for(var a=i(),o=0;o<e;++o){a.fromInt(k[Math.floor(Math.random()*k.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 w)},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]<=k[k.length-1]){for(t=0;t<k.length;++t)if(r[0]==k[t])return!0;return!1}if(r.isEven())return!1;for(t=1;t<k.length;){for(var i=k[t],s=t+1;s<k.length&&i<D;)i*=k[s++];for(i=r.modInt(i);t<s;)if(i%k[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,P=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[P++]=O[E]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var x=window.crypto.random(32);for(E=0;E<x.length;++E)T[P++]=255&x.charCodeAt(E)}for(;P<A;)E=Math.floor(65536*Math.random()),T[P++]=E>>>8,T[P++]=255&E;P=0,I()}function M(){if(null==R){for(I(),(R=new L).init(T),P=0;P<T.length;++P)T[P]=0;P=0}return R.next()}function j(){}function L(){this.i=0,this.j=0,this.S=new Array}j.prototype.nextBytes=function(e){var t;for(t=0;t<e.length;++t)e[t]=M()},L.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},L.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:j}}).call(Yi)}(ou);var cu=ou.exports,du={};!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)}()}(du);var lu=Yi&&Yi.__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]}),pu=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),uu=Yi&&Yi.__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)&&lu(t,e,r);return pu(t,e),t};Object.defineProperty(ru,"__esModule",{value:!0}),ru.Address4=void 0;const hu=uu(iu),mu=uu(su),fu=nu,gu=cu,vu=du;class _u{constructor(e){this.groups=mu.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=hu.isCorrect(mu.BITS),this.isInSubnet=hu.isInSubnet,this.address=e;const t=mu.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>mu.BITS)throw new fu.AddressError("Invalid subnet mask.");e=e.replace(mu.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new _u(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(mu.RE_ADDRESS))throw new fu.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 _u(r.join("."))}static fromInteger(e){return _u.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new _u(t)}toHex(){return this.parsedAddress.map((e=>(0,vu.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<mu.GROUPS;t+=2){const r=(0,vu.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,vu.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new gu.BigInteger(this.parsedAddress.map((e=>(0,vu.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new gu.BigInteger(this.mask()+"0".repeat(mu.BITS-this.subnetMask),2)}startAddress(){return _u.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new gu.BigInteger("1");return _u.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new gu.BigInteger(this.mask()+"1".repeat(mu.BITS-this.subnetMask),2)}endAddress(){return _u.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new gu.BigInteger("1");return _u.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return _u.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,vu.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new _u("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(mu.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(mu.RE_ADDRESS,(0,vu.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(".")))}}ru.Address4=_u;var bu={},yu={};Object.defineProperty(yu,"__esModule",{value:!0}),yu.RE_URL_WITH_PORT=yu.RE_URL=yu.RE_ZONE_STRING=yu.RE_SUBNET_STRING=yu.RE_BAD_ADDRESS=yu.RE_BAD_CHARACTERS=yu.TYPES=yu.SCOPES=yu.GROUPS=yu.BITS=void 0,yu.BITS=128,yu.GROUPS=8,yu.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},yu.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"},yu.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,yu.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,yu.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,yu.RE_ZONE_STRING=/%.*$/,yu.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),yu.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var wu={};Object.defineProperty(wu,"__esModule",{value:!0}),wu.simpleGroup=wu.spanLeadingZeroes=wu.spanAll=wu.spanAllZeroes=void 0;const Su=du;function Cu(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function Ru(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}wu.spanAllZeroes=Cu,wu.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,Su.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,Cu(e)))).join("")},wu.spanLeadingZeroes=function(e){return e.split(":").map((e=>Ru(e))).join(":")},wu.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,Su.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,Ru(e))))};var Tu={},Pu=Yi&&Yi.__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]}),ku=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Du=Yi&&Yi.__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)&&Pu(t,e,r);return ku(t,e),t};Object.defineProperty(Tu,"__esModule",{value:!0}),Tu.possibleElisions=Tu.simpleRegularExpression=Tu.ADDRESS_BOUNDARY=Tu.padGroup=Tu.groupPossibilities=void 0;const Iu=Du(yu),Eu=du;function Ou(e){return(0,Eu.sprintf)("(%s)",e.join("|"))}function xu(e){return e.length<4?(0,Eu.sprintf)("0{0,%d}%s",4-e.length,e):e}Tu.groupPossibilities=Ou,Tu.padGroup=xu,Tu.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",Tu.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===Iu.GROUPS-1?":":"";return Ou([xu(e),t])}return xu(e)})).join(":")));return r.push(e.map(xu).join(":")),Ou(r)},Tu.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,Eu.sprintf)("%s(:0{1,4}){1,%d}",i,e-1)),n.push((0,Eu.sprintf)("(0{1,4}:){1,%d}%s",e-1,s)),n.push((0,Eu.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,Eu.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return Ou(n)};var Mu=Yi&&Yi.__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]}),ju=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Lu=Yi&&Yi.__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)&&Mu(t,e,r);return ju(t,e),t};Object.defineProperty(bu,"__esModule",{value:!0}),bu.Address6=void 0;const Au=Lu(iu),Nu=Lu(su),Bu=Lu(yu),Fu=Lu(wu),$u=ru,Vu=Tu,zu=nu,Uu=cu,qu=du;function Gu(e){if(!e)throw new Error("Assertion failed.")}function Wu(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 Hu(e){return(0,qu.sprintf)("%04x",parseInt(e,16))}function Ku(e){return 255&e}class Ju{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=Au.isInSubnet,this.isCorrect=Au.isCorrect(Bu.BITS),this.groups=void 0===t?Bu.GROUPS:t,this.address=e;const r=Bu.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>Bu.BITS)throw new zu.AddressError("Invalid subnet mask.");e=e.replace(Bu.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new zu.AddressError("Invalid subnet mask.");const i=Bu.RE_ZONE_STRING.exec(e);i&&(this.zone=i[0],e=e.replace(Bu.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new Ju(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let i;for(i=0;i<Bu.GROUPS;i++)r.push(t.slice(4*i,4*(i+1)));return new Ju(r.join(":"))}static fromURL(e){let t,r,i=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=Bu.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=Bu.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 Ju(t),port:i}}static fromAddress4(e){const t=new $u.Address4(e),r=Bu.BITS-(Nu.BITS-t.subnetMask);return new Ju(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new zu.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 Ju(t)}microsoftTranscription(){return(0,qu.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=Bu.BITS-this.subnetMask-Math.abs(e-Bu.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 Uu.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new Uu.BigInteger(this.mask()+"0".repeat(Bu.BITS-this.subnetMask),2)}startAddress(){return Ju.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Uu.BigInteger("1");return Ju.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Uu.BigInteger(this.mask()+"1".repeat(Bu.BITS-this.subnetMask),2)}endAddress(){return Ju.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Uu.BigInteger("1");return Ju.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=Bu.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(Bu.TYPES))if(this.isInSubnet(new Ju(e)))return Bu.TYPES[e];return"Global unicast"}getBits(e,t){return new Uu.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,Bu.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,qu.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(Bu.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match(Nu.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new $u.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new zu.AddressError("IPv4 addresses can't have leading zeroes.",e.replace(Nu.RE_ADDRESS,this.address4.parsedAddress.map(Wu).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(Bu.RE_BAD_CHARACTERS);if(t)throw new zu.AddressError((0,qu.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(Bu.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(Bu.RE_BAD_ADDRESS);if(r)throw new zu.AddressError((0,qu.sprintf)("Address failed regex: %s",r.join("")),e.replace(Bu.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 zu.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 zu.AddressError("Too many :: groups found");i=e.split(":"),this.elidedGroups=0}if(i=i.map((e=>(0,qu.sprintf)("%x",parseInt(e,16)))),i.length!==this.groups)throw new zu.AddressError("Incorrect number of groups found");return i}canonicalForm(){return this.parsedAddress.map(Hu).join(":")}decimal(){return this.parsedAddress.map((e=>(0,qu.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new Uu.BigInteger(this.parsedAddress.map(Hu).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return $u.Address4.fromHex(new Uu.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new Ju(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 Uu.BigInteger("ffff",16)).toString(),r=$u.Address4.fromHex(this.getBitsBase16(32,64)),i=$u.Address4.fromHex(this.getBits(96,128).xor(new Uu.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 Uu.BigInteger(n.slice(2,6)+n.slice(8,16),2).toString(10);return{prefix:(0,qu.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=$u.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,qu.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 Ju(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map(Ku)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map(Ku))}static fromUnsignedByteArray(e){const t=new Uu.BigInteger("256",10);let r=new Uu.BigInteger("0",10),i=new Uu.BigInteger("1",10);for(let s=e.length-1;s>=0;s--)r=r.add(i.multiply(new Uu.BigInteger(e[s].toString(10),10))),i=i.multiply(t);return Ju.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 Ju("2001::/32"))}is6to4(){return this.isInSubnet(new Ju("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,qu.sprintf)(":%s",e),(0,qu.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,qu.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,qu.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return Fu.simpleGroup(this.address).join(":");Gu("number"==typeof this.elidedGroups),Gu("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...Fu.simpleGroup(t)):e.push("");const i=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)i.push((0,qu.sprintf)("group-%d",e));return e.push((0,qu.sprintf)('<span class="%s"></span>',i.join(" "))),r.length?e.push(...Fu.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(Gu(this.address4 instanceof $u.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new Ju(this.correctForm());if(0===r.elidedGroups)t.push((0,Vu.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===Bu.GROUPS)t.push((0,Vu.possibleElisions)(Bu.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,Vu.simpleRegularExpression)(e[0].split(":"))),Gu("number"==typeof r.elidedGroups),t.push((0,Vu.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,Vu.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",Vu.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",Vu.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}bu.Address6=Ju,function(e){var t=Yi&&Yi.__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=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Yi&&Yi.__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=ru;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return s.Address4}});const n=bu;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return n.Address6}});const a=nu;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return a.AddressError}});const o=i(wu);e.v6={helpers:o}}(tu);var Qu={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(Yi)}(Qu);var Zu=Qu.exports,Yu=function(e,t){if("string"==typeof t)return Xu(e,t);if("object"==typeof t){for(var r=!1,i=0;i<t.length;i++)if(Xu(e,t[i])){r=!0;break}return r}};function Xu(e,t){try{var r=Zu.process(e);if(-1===t.indexOf("/")){var i=Zu.process(t);return"ipv6"===r.kind()&&"ipv6"===i.kind()?r.toNormalizedString()===i.toNormalizedString():r.toString()==i.toString()}var s=Zu.parseCIDR(t);return r.match(s)}catch(e){return!1}}var eh=Yu,th=/^((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]?)$/,rh=["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"],ih=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var sh=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(th.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("."),eh(r.boiledIp,rh)&&(r.isBogon=!0),eh(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),eh(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),eh(r.boiledIp,ih)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},nh=Xi(sh),ah={exports:{}},oh=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ch=[],dh=0;dh<256;dh++)ch[dh]=(dh+256).toString(16).substr(1);ah.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,i=ch;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(),!oh.test(r))return!1;if(void 0===t)t=lh(r);else if(lh(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 lh=ah.exports.version=function(e){return 0|e.charAt(14)},ph=Xi(ah.exports);const uh=Object.create(null);uh.open="0",uh.close="1",uh.ping="2",uh.pong="3",uh.message="4",uh.upgrade="5",uh.noop="6";const hh=Object.create(null);Object.keys(uh).forEach((e=>{hh[uh[e]]=e}));const mh={type:"error",data:"parser error"},fh="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),gh="function"==typeof ArrayBuffer,vh=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,_h=({type:e,data:t},r,i)=>fh&&t instanceof Blob?r?i(t):bh(t,i):gh&&(t instanceof ArrayBuffer||vh(t))?r?i(t):bh(new Blob([t]),i):i(uh[e]+(t||"")),bh=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function yh(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let wh;const Sh="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ch="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let my=0;my<64;my++)Ch[Sh.charCodeAt(my)]=my;const Rh="function"==typeof ArrayBuffer,Th=(e,t)=>{if("string"!=typeof e)return{type:"message",data:kh(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:Ph(e.substring(1),t)};return hh[r]?e.length>1?{type:hh[r],data:e.substring(1)}:{type:hh[r]}:mh},Ph=(e,t)=>{if(Rh){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=Ch[e.charCodeAt(t)],i=Ch[e.charCodeAt(t+1)],s=Ch[e.charCodeAt(t+2)],n=Ch[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 kh(r,t)}return{base64:!0,data:e}},kh=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,Dh=String.fromCharCode(30);function Ih(){return new TransformStream({transform(e,t){!function(e,t){fh&&e.data instanceof Blob?e.data.arrayBuffer().then(yh).then(t):gh&&(e.data instanceof ArrayBuffer||vh(e.data))?t(yh(e.data)):_h(e,!1,(e=>{wh||(wh=new TextEncoder),t(wh.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 Oh(e){return e.reduce(((e,t)=>e+t.length),0)}function xh(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 Mh(e){if(e)return function(e){for(var t in Mh.prototype)e[t]=Mh.prototype[t];return e}(e)}Mh.prototype.on=Mh.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Mh.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Mh.prototype.off=Mh.prototype.removeListener=Mh.prototype.removeAllListeners=Mh.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},Mh.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},Mh.prototype.emitReserved=Mh.prototype.emit,Mh.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Mh.prototype.hasListeners=function(e){return!!this.listeners(e).length};const jh="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Lh(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Ah=jh.setTimeout,Nh=jh.clearTimeout;function Bh(e,t){t.useNativeTimers?(e.setTimeoutFn=Ah.bind(jh),e.clearTimeoutFn=Nh.bind(jh)):(e.setTimeoutFn=jh.setTimeout.bind(jh),e.clearTimeoutFn=jh.clearTimeout.bind(jh))}class Fh extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class $h extends Mh{constructor(e){super(),this.writable=!1,Bh(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new Fh(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=Th(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 Vh="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),zh=64,Uh={};let qh,Gh=0,Wh=0;function Hh(e){let t="";do{t=Vh[e%zh]+t,e=Math.floor(e/zh)}while(e>0);return t}function Kh(){const e=Hh(+new Date);return e!==qh?(Gh=0,qh=e):e+"."+Hh(Gh++)}for(;Wh<zh;Wh++)Uh[Vh[Wh]]=Wh;let Jh=!1;try{Jh="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(fy){}const Qh=Jh;function Zh(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Qh))return new XMLHttpRequest}catch(e){}if(!t)try{return new(jh[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Yh(){}const Xh=null!=new Zh({xdomain:!1}).responseType;class em extends Mh{constructor(e,t){super(),Bh(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=Lh(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new Zh(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=em.requestsCount++,em.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=Yh,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete em.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(em.requestsCount=0,em.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",tm);else if("function"==typeof addEventListener){addEventListener("onpagehide"in jh?"pagehide":"unload",tm,!1)}function tm(){for(let e in em.requests)em.requests.hasOwnProperty(e)&&em.requests[e].abort()}const rm="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),im=jh.WebSocket||jh.MozWebSocket,sm="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const nm={websocket:class extends $h{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=sm?{}:Lh(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=sm?new im(e,t,r):t?new im(e,t):new im(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;_h(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&rm((()=>{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]=Kh()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!im}},webtransport:class extends $h{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(Oh(r)<1)break;const e=xh(r,1);n=128==(128&e[0]),s=127&e[0],i=s<126?3:126===s?1:2}else if(1===i){if(Oh(r)<2)break;const e=xh(r,2);s=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(Oh(r)<8)break;const e=xh(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),n=t.getUint32(0);if(n>Math.pow(2,21)-1){o.enqueue(mh);break}s=n*Math.pow(2,32)+t.getUint32(4),i=3}else{if(Oh(r)<s)break;const e=xh(r,s);o.enqueue(Th(n?e:Eh.decode(e),t)),i=0}if(0===s||s>e){o.enqueue(mh);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=Ih();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&&rm((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends $h{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=Xh&&!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(Dh),i=[];for(let e=0;e<r.length;e++){const s=Th(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)=>{_h(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(Dh))}))}))})(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]=Kh()),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 em(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}}},am=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,om=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function cm(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=am.exec(e||""),n={},a=14;for(;a--;)n[om[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 dm=class e extends Mh{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=cm(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=cm(t.host).host),Bh(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 nm[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}};dm.protocol=4;const lm="function"==typeof ArrayBuffer,pm=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,um=Object.prototype.toString,hm="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===um.call(Blob),mm="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===um.call(File);function fm(e){return lm&&(e instanceof ArrayBuffer||pm(e))||hm&&e instanceof Blob||mm&&e instanceof File}function gm(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(gm(e[t]))return!0;return!1}if(fm(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return gm(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&gm(e[t]))return!0;return!1}function vm(e){const t=[],r=e.data,i=e;return i.data=_m(r,t),i.attachments=t.length,{packet:i,buffers:t}}function _m(e,t){if(!e)return e;if(fm(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]=_m(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]=_m(e[i],t));return r}return e}function bm(e,t){return e.data=ym(e.data,t),delete e.attachments,e}function ym(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]=ym(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=ym(e[r],t));return e}const wm=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var Sm;!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"}(Sm||(Sm={}));function Cm(e){return"[object Object]"===Object.prototype.toString.call(e)}class Rm extends Mh{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===Sm.BINARY_EVENT;r||t.type===Sm.BINARY_ACK?(t.type=r?Sm.EVENT:Sm.ACK,this.reconstructor=new Tm(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!fm(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===Sm[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Sm.BINARY_EVENT||r.type===Sm.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(!Rm.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 Sm.CONNECT:return Cm(t);case Sm.DISCONNECT:return void 0===t;case Sm.CONNECT_ERROR:return"string"==typeof t||Cm(t);case Sm.EVENT:case Sm.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===wm.indexOf(t[0]));case Sm.ACK:case Sm.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Tm{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=bm(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var Pm=Object.freeze({__proto__:null,Decoder:Rm,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==Sm.EVENT&&e.type!==Sm.ACK||!gm(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===Sm.EVENT?Sm.BINARY_EVENT:Sm.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==Sm.BINARY_EVENT&&e.type!==Sm.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=vm(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},get PacketType(){return Sm},protocol:5});function km(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Dm=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Im extends Mh{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=[km(e,"open",this.onopen.bind(this)),km(e,"packet",this.onpacket.bind(this)),km(e,"error",this.onerror.bind(this)),km(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(Dm.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:Sm.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:Sm.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 Sm.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 Sm.EVENT:case Sm.BINARY_EVENT:this.onevent(e);break;case Sm.ACK:case Sm.BINARY_ACK:this.onack(e);break;case Sm.DISCONNECT:this.ondisconnect();break;case Sm.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:Sm.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:Sm.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 Om extends Mh{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,Bh(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||Pm;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 dm(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=km(t,"open",(function(){r.onopen(),e&&e()})),s=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},n=km(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(km(e,"ping",this.onping.bind(this)),km(e,"data",this.ondata.bind(this)),km(e,"error",this.onerror.bind(this)),km(e,"close",this.onclose.bind(this)),km(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){rm((()=>{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 Im(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 xm={};function Mm(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=cm(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=xm[s]&&n in xm[s].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new Om(i,t):(xm[s]||(xm[s]=new Om(i,t)),o=xm[s]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}Object.assign(Mm,{Manager:Om,Socket:Im,io:Mm,connect:Mm});const jm=new URLSearchParams(window.location.search).has("debug");class Lm{constructor(){this._isEnabled=!1,this._debugger=null,this._isEnabled=jm}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=null){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 Am(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;let Nm=[],Bm=0;const Fm=new WeakMap;if(window.RTCPeerConnection){const gy=window.RTCPeerConnection;function vy(e){const t=new gy(e);Nm.push(t),Fm.set(t,{index:Bm++});const r=()=>{"closed"===t.connectionState&&((e=>{Nm=Nm.filter((t=>t!==e))})(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}vy.prototype=gy.prototype,window.RTCPeerConnection=vy}const $m=null,Vm=()=>{var e;return null===(e=$m)||void 0===e?void 0:e.getUpdatedStats()};class zm{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?zm._handleRequest(t):t.response?zm._handleResponse(t):t.message?zm._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 Um=new Lm;class qm extends Gi{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(){Um.info("Connected"),this.emit("open")}_onMessage(e){const t=zm.parse(e.data);Um.info("Received message",t),(null==t?void 0:t.response)?this._handleResponse(t):(null==t?void 0:t.message)&&this.emit("message",t)}_onClose(){Um.info("Disconnected"),this._tearDown()}_onError(e){Um.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=zm.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const i=zm.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)}))}}const Gm={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},Wm={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},Hm={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},Km={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},Jm={encodings:[{}]},Qm={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},Zm={encodings:[{dtx:!0}]},Ym=(e,t,r)=>{const{lowDataModeEnabled:i,simulcastScreenshareOn:s,vp9On:n}=r;return"audio"===e?Gm:t?n?Zm:s?Qm:Jm:n?Km:i?Hm:Wm},Xm=()=>{let e=is.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e};var ef;const tf=null!==(ef=Gp.default)&&void 0!==ef?ef:Gp;const rf=400;var sf;const nf="safari"===(null!==(sf=Gp.default)&&void 0!==sf?sf:Gp).browserDetails.browser,af=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function of({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||nf?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]=af(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 cf=new Lm,df=/mobi/i.test(navigator.userAgent);class lf extends Error{constructor(...e){super(...e),this.name="nodevices"}}function pf(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw cf.error(`getUserMedia ${r}`),t})):Promise.reject(new lf("No provided devices"))}function uf(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 hf(e,t){t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}function mf(e,{replaceStream:t,fallback:r=!0}={}){var i;return Am(this,void 0,void 0,(function*(){let s,n,a,o=null;const c=!1===e.audioId?"video":!1===e.videoId&&"audio",d=df||"video"!==c,l=of(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&&hf(t,c);try{o=yield pf(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 pf(of(Object.assign(Object.assign({},e),{audioId:!1})))}catch(e){if("NotFoundError"!==e.name)throw p(e,n)}try{o||(o=yield pf(of(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)hf(t,c),a=e;else if("NotAllowedError"!==n.name){try{o=yield pf(of(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{lax:!0})})))}catch(e){cf.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 pf(of(Object.assign(Object.assign({},e),{[r]:null})))}catch(e){cf.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 pf(of(Object.assign(Object.assign({},e),{[r]:!1})))}catch(e){cf.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(o)break}}}}if(a){const t=c?{audio:{videoId:!1},video:{audioId:!1}}[c]:{};n=of(Object.assign(Object.assign(Object.assign(Object.assign({},e),a),{options:Object.assign(Object.assign({},e.options),{lax:a.lax})}),t));try{o=yield pf(n)}catch(e){throw p(e,s)}}if(!o)throw p(s);let u;return t&&(d||hf(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 ff({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}}Gp.default;const gf={id:eu(),connectionNumber:0},vf=()=>{};let _f=vf;const bf=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;if(c=e,g&&r&&r!==t&&i)return void 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);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),i.readyState===WebSocket.CLOSED&&d&&setTimeout((()=>{i.readyState===WebSocket.CLOSED&&d&&_.connect()}),1e3*f)},close:()=>{d=!1,i&&i.close()},connect:()=>{d=!0,f+=1,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}`),_f()},i.onopen=()=>{for(gf.connectionNumber++,i.send(JSON.stringify(["clientInfo",null,gf])),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 _.connect(),_}("wss://rtcstats.srv.whereby.com"),yf=Kp(bf.trace,1e4,[""]);_f=(null==yf?void 0:yf.resetDelta)||vf;const wf={sendEvent:(e,t)=>{bf.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{wf.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{wf.sendEvent("video_muted",{muted:e})},server:bf};var Sf;const Cf=null!==(Sf=Gp.default)&&void 0!==Sf?Sf:Gp,Rf=new Lm,Tf=Cf.browserDetails.browser,Pf=Cf.browserDetails.version;function kf(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 Df(e){return"firefox"!==Tf?e:jp.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function If(e){return function(e,t,r=!1,i=!1){var s,n;try{const a=ga(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}]))})),fa(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 Ef(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 Of;const xf=null!==(Of=Gp.default)&&void 0!==Of?Of:Gp,Mf=new Lm;class jf{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 jp.splitSections(e).map((e=>{if("video"!==jp.getKind(e))return e;const t=jp.matchPrefix(e,"a=rtpmap:").map((e=>jp.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=jp.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"!==Tf&&("firefox"!==Tf||Pf&&Pf>=63||60===Pf)?e:jp.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==jp.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=Df(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((()=>Ef(this.pc,this.bandwidth))).then((()=>i))}handleAnswer(e){if(this.pendingOffer){const t=this.pendingOffer;return delete this.pendingOffer,this.pc.setLocalDescription(t).then((()=>this.handleAnswer(e)))}let t=e.sdp;t=Df(t);const r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>Ef(this.pc,this.bandwidth)),(e=>{Mf.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===xf.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{Mf.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){Mf.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();function s(r){const s=e=>e&&`id:${e.id},kind:${e.kind},state:${e.readyState}`;Mf.warn(`${r}. newTrack:${s(t)}, oldTrack:${s(e)}, sender tracks: ${JSON.stringify(i.map((e=>`s ${s(e.track)}`)))}, sender first codecs: ${JSON.stringify(i.map((e=>(e.getParameters().codecs||[])[0])))}`)}if(i.length||s("No senders!"),e||(e=(i.find((e=>e.track&&e.track.kind===t.kind))||{}).track)||s("No sender with same kind! Add new track then."),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<i.length;r++){const n=i[r],a=n.track;if(n||a||s("One of the tracks is null!"),a.id===t.id)return Promise.resolve(t);if(a.id===e.id)return i[r].replaceTrack(t)}return null};let n=r();if(n)return n;let a=null,o=null;n=new Promise(((e,t)=>{a=e,o=t}));let c=0,d=setInterval((()=>Am(this,void 0,void 0,(function*(){const e=r();if(!e)return void(3<++c&&(clearInterval(d),d=null,s("No sender track to replace"),o("No sender track to replace")));clearInterval(d),d=null;const t=yield e;a(t)}))),1e3);return n}const n=this.streams.find((e=>e.getTracks().find((e=>e.id===t.id))))||this.streams[0];return n?r.addTrack(t,n):(s("No stream?"),Promise.reject(new Error("replaceTrack: No stream?")))}if(!this.canModifyPeerConnection())return void this.pending.push((()=>{this.replaceTrack(e,t)}));this.isOperationPending=!0;const n=r.onnegotiationneeded;return r.onnegotiationneeded=null,this.removeTrack(e),this.addTrack(t),setTimeout((()=>{r.onnegotiationneeded=n}),0),"offer"===r.localDescription.type?r.createOffer().then((e=>(e.sdp=kf(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=kf(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&&Ef(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 Lf="fetch_mediaserver_config",Af="start_screenshare",Nf="stop_screenshare",Bf="audio_enabled",Ff="client_left",$f="mediaserver_config",Vf="new_client",zf="screenshare_started",Uf="screenshare_stopped",qf="room_joined",Gf="video_enabled",Wf="ice_candidate",Hf="ice_endofcandidates",Kf="ready_to_receive_offer",Jf="sdp_answer",Qf="sdp_offer",Zf="pending_client_left",Yf="media_quality_changed",Xf="client_connection_status_changed",eg="stream_added",tg="rtc_manager_created",rg="rtc_manager_destroyed",ig="local_stream_track_added",sg="local_stream_track_removed",ng="connecting",ag="connection_failed",og="connection_successful",cg="connection_disconnected",dg="camera",lg="screen_share";const pg=57600,ug=2.6041666666666665,hg=921600,mg=1.0850694444444444;const fg="[a-fA-F\\d:]",gg=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${fg})|(?<=${fg})(?=\\s|$))`:"",vg="(?: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}",_g="[a-fA-F\\d]{1,4}",bg=`\n(?:\n(?:${_g}:){7}(?:${_g}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${_g}:){6}(?:${vg}|:${_g}|:)| // 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(?:${_g}:){5}(?::${vg}|(?::${_g}){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(?:${_g}:){4}(?:(?::${_g}){0,1}:${vg}|(?::${_g}){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(?:${_g}:){3}(?:(?::${_g}){0,2}:${vg}|(?::${_g}){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(?:${_g}:){2}(?:(?::${_g}){0,3}:${vg}|(?::${_g}){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(?:${_g}:){1}(?:(?::${_g}){0,4}:${vg}|(?::${_g}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${_g}){0,5}:${vg}|(?::${_g}){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(),yg=new RegExp(`(?:^${vg}$)|(?:^${bg}$)`),wg=new RegExp(`^${vg}$`),Sg=new RegExp(`^${bg}$`),Cg=e=>e&&e.exact?yg:new RegExp(`(?:${gg(e)}${vg}${gg(e)})|(?:${gg(e)}${bg}${gg(e)})`,"g");Cg.v4=e=>e&&e.exact?wg:new RegExp(`${gg(e)}${vg}${gg(e)}`,"g"),Cg.v6=e=>e&&e.exact?Sg:new RegExp(`${gg(e)}${bg}${gg(e)}`,"g");var Rg,Tg,Pg="connection_blocked_by_network",kg="ice_ipv6_seen",Dg="ice_mdns_seen",Ig="ice_no_public_ip_gathered",Eg="ice_no_public_ip_gathered_3sec",Og="ice_restart",xg="microphone_not_working",Mg="microphone_stopped_working",jg="new_pc",Lg="sfu_connection_open",Ag="sfu_connection_closed",Ng="dominant_speaker";const Bg=null!==(Rg=Gp.default)&&void 0!==Rg?Rg:Gp,Fg=new Lm,$g=class{constructor(e,t){this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=ng,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?dg:lg}}.getCameraId(),Vg=Bg.browserDetails.browser,zg=Bg.browserDetails.version;"firefox"===Vg&&Bg.browserShim&&"shimGetDisplayMedia"in Bg.browserShim&&(null===(Tg=Bg.browserShim)||void 0===Tg||Tg.shimGetDisplayMedia(window,"screen"));let Ug=!1;"chrome"===Vg&&window.document.addEventListener("beforeunload",(()=>{Ug=!0}));class qg{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=()=>{wf.sendEvent("audio_ended",{unloading:Ug}),this._emit(Mg,{})},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){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===$g){this._addStreamToPeerConnections(t);const[e]=t.getAudioTracks();e&&this._startMonitoringAudioTrack(e),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const r=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",r),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",r)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),t&&"audio"===t.kind&&this._startMonitoringAudioTrack(t),this._replaceTrackToPeerConnections(e,t)}accept({clientId:e,shouldAddLocalVideo:t}){return this.acceptNewStream({streamId:e,clientId:e,shouldAddLocalVideo: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"!==Vg)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($f,(e=>{e.error?Fg.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Kf,(e=>{this._connect(e.clientId)})),this._serverSocket.on(Wf,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):Fg.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(Hf,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):Fg.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(Qf,(e=>{const t=this._getSession(e.clientId);if(!t)return void Fg.warn("No RTCPeerConnection on SDP_OFFER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleOffer(r).then((t=>{this._emitServerEvent(Jf,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))})),this._serverSocket.on(Jf,(e=>{const t=this._getSession(e.clientId);if(!t)return void Fg.warn("No RTCPeerConnection on SDP_ANSWER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleAnswer(r)})),this._serverSocket.on(qf,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==$g));if(!t)return;const r=this.localStreams[t];if(!r)return void Fg.warn("screenshare stream %s not found",t);const i=r.getAudioTracks().length>0;this._emitServerEvent(Af,{streamId:t,hasAudioTrack:i})}))]}sendAudioMutedStats(e){wf.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){wf.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){wf.sendEvent(e,t)}rtcStatsDisconnect(){wf.server.close()}rtcStatsReconnect(){wf.server.connected||wf.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===cg&&t===ng||(e.connectionStatus=t,setTimeout((()=>{this._emit(Xf,{streamIds:e.streamIds,clientId:r,status:t,previous:i})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=rf,e.playoutDelayHint=.4}))}catch(e){Fg.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"===Vg&&zg&&zg>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new jf({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:i}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[$g]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==$g))}_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"===Vg&&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.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"===Vg&&(o.sdpSemantics="unified-plan");const c=n.setAndGetPeerConnection({constraints:a,peerConnectionConfig:o,shouldAddLocalVideo:s,clientId:e});setTimeout((()=>this._emit(jg)),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(eg,{clientId:e,stream:r}),n.connectionStatus===og&&setTimeout((()=>{this._emit(Xf,{streamIds:n.streamIds,clientId:e,status:n.connectionStatus,previous:ng})}),0))},c.oniceconnectionstatechange=()=>{let t;const r=n.connectionStatus;switch(c.iceConnectionState){case"checking":t=ng;break;case"connected":case"completed":t=og,n.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!n.wasEverConnected&&(c.iceConnectionState.match(/connected|completed/)||"chrome"===Vg&&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=cg,setTimeout((()=>{"disconnected"===c.iceConnectionState&&this._maybeRestartIce(e,n)}),2e3);break;case"failed":t=ag,r!==t&&this._maybeRestartIce(e,n),null!==n.relayCandidateSeen||n.wasEverConnected||this._emit(Pg);break;default:return}this._setConnectionStatus(n,t,e)},c.onconnectionstate=()=>{switch(c.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==tf.browserDetails.browser||tf.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(xg,{failureDirection:t,clientId:e})}))}),3e3),n.registerConnected();break;case"failed":const t=ag;null!==n.relayCandidateSeen||n.wasEverConnected||this._emit(Pg),this._setConnectionStatus(n,t,e)}};const d=this.localStreams[$g];return s&&d&&n.addStream(d),s&&Object.keys(this.localStreams).forEach((e=>{if(e===$g)return;const t=this.localStreams[e];r?n.addStream(t):n.afterConnected.then((()=>{this._emitServerEvent(Af,{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]):Fg.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()){Fg.info("Session doesn't have a connected PeerConnection, adding pending action!");const s=this._pendingActionsForConnectedPeerConnections;if(!s)return void Fg.warn("No pending action is created to repalce 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 Fg.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):Fg.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(Lf)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_connect(e){this.rtcStatsReconnect();let t=this._getSession(e),r=t&&t.bandwidth||0;return t?(Fg.warn("Replacing peer session",e),this._cleanup(e)):r=this._changeBandwidthForAllClients(!0),t=this._createP2pSession(e,r,!0,!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(Og),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){Fg.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void Fg.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}=this._features;(s||n||a)&&this._setCodecPreferences(i,s,n,a),i.createOffer(r||this.offerOptions).then((r=>{o&&(r.sdp=If(r.sdp)),(s||a)&&"firefox"===Vg&&(r.sdp=function(e,t,r){var i,s;try{const n=ga(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 fa(n)}catch(e){Rf.error("setCodecPreferenceSDP error:",e)}}(r.sdp,s,a)),this._emitServerEvent(Qf,{receiverId:e,message:this._transformOutgoingSdp(r)}),"chrome"===Vg&&i.getSenders().filter((e=>e.track&&"video"===e.track.kind)).length>=2?t.pendingOffer=r:i.setLocalDescription(r).catch((t=>{Fg.warn("RTCPeerConnection.setLocalDescription() failed with local offer",t),this._features.reverseOfferOnFailure&&(this._lastReverseDirectionAttemptByClientId||(this._lastReverseDirectionAttemptByClientId={}),(!this._lastReverseDirectionAttemptByClientId[e]||this._lastReverseDirectionAttemptByClientId[e]<Date.now()-1e4)&&(this.acceptNewStream({clientId:e,streamId:e,shouldAddLocalVideo:!0}),this._lastReverseDirectionAttemptByClientId[e]=Date.now()))}))})).catch((e=>{Fg.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:0,2:this._features.highP2PBandwidth?768:384,3:this._features.highP2PBandwidth?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<pg&&(i=pg),i>hg&&(i=hg);let s=ug;i>hg?s=mg:i>pg&&(s+=-17582143775720163e-22*(i-pg));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&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession(e,t,r,i){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[$g];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||this._emit(Eg)}),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(Cg.v4({exact:!0}).test(e)){nh(e).isPublicIp&&(s.publicHostCandidateSeen=!0)}else if(Cg.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new tu.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&&ph(t,4)&&(s.mdnsHostCandidateSeen=!0)}}catch(e){Fg.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(Wf,{receiverId:e,message:t.candidate})}else this._emitServerEvent(Hf,{receiverId:e}),s.publicHostCandidateSeen||s.relayCandidateSeen||s.serverReflexiveCandidateSeen||this._emit(Ig),s.ipv6HostCandidateSeen&&this._emit(kg,{teredoSeen:s.ipv6HostCandidateTeredoSeen,sixtofourSeen:s.ipv6HostCandidate6to4Seen}),s.mdnsHostCandidateSeen&&this._emit(Dg)},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?(Fg.warn("Replacing peer session",t),this._cleanup(t)):s=this._changeBandwidthForAllClients(!0),i=this._createP2pSession(t,s,r),this._emitServerEvent(Kf,{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){if(["chrome","safari"].includes(Vg))if(!1===t)setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(sg,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3);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._emit(ig,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}_shareScreen(e,t){this._emitServerEvent(Af,{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(Nf,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}var Gg=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 Wg={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"},Hg=new Lm;const Kg=new Lm,Jg=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class Qg extends Gi{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:Jg.ok,trend:[]},video:{currentQuality:Jg.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(Yf,{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]={}):Kg.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]={}):Kg.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)))}:Kg.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)}:Kg.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?Jg.warning:e<=7&&e>0?Jg.critical:Jg.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 Kg.error(e),0}}}var Zg;const Yg=null!==(Zg=Gp.default)&&void 0!==Zg?Zg:Gp,Xg=new Lm,ev=Yg.browserDetails.browser;let tv=!1;const rv=eu(),iv=eu();"chrome"===ev&&window.document.addEventListener("beforeunload",(()=>tv=!0));class sv{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 is.Device({handlerFactory:o}):new is.Device({handlerName:Xm()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=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=()=>{wf.sendEvent("audio_ended",{unloading:tv}),this._emitToPWA(Mg,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:p}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._qualityMonitor=new Qg,this._qualityMonitor.on(Yf,(e=>{this._emitToPWA(Yf,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(Lf)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on($f,(e=>{e.error?Xg.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(qf,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(Af,{streamId:iv,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){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 qm(r),this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){var e,t;Xg.info("_onClose()"),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._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA(Ag)}_join(){return Am(this,void 0,void 0,(function*(){Xg.info("join()"),this._emitToPWA(Lg);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){Xg.error("_join() [error:%o]",e)}}))}_createTransport(e){return Am(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=>Am(this,void 0,void 0,(function*(){if(Xg.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)=>Am(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)=>Am(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 Am(this,void 0,void 0,(function*(){if(!e||!("closed"in e)||!("connectionState"in e))return void Xg.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void Xg.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void Xg.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 Xg.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void Xg.info("_restartIce: Connection is undefined");const{iceParameters:s}=yield this._vegaConnection.request("restartIce",{transportId:e.id});Xg.info("_restartIce: ICE restart iceParameters received from SFU: ",s);const n=yield e.restartIce({iceParameters:s}).then((()=>null)).catch((e=>e));if(n)switch(Xg.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 Am(this,void 0,void 0,(function*(){Xg.info("_internalSendMic()"),this._micProducerPromise=(()=>Am(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},Ym("audio",!1,this._features)),{appData:{streamId:rv,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;Xg.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){Xg.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})))()}))}_internalSetupMicScore(){return Am(this,void 0,void 0,(function*(){Xg.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(()=>Am(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;Xg.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){Xg.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 Am(this,void 0,void 0,(function*(){Xg.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;Xg.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 Am(this,void 0,void 0,(function*(){return Xg.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){Xg.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}_internalSendWebcam(){return Am(this,void 0,void 0,(function*(){Xg.info("_internalSendWebcam()"),this._webcamProducerPromise=(()=>Am(this,void 0,void 0,(function*(){try{if(!this._webcamTrack||!this._sendTransport||this._webcamProducer)return void(this._webcamProducerPromise=null);const e=this._webcamPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1},Ym("video",!1,this._features)),{appData:{streamId:rv,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:e}}));e?t.pause():t.resume(),this._webcamProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;Xg.info('webcamProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._webcamTrack!==this._webcamProducer.track&&(yield this._replaceWebcamTrack()),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){Xg.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(yield this._stopProducer(this._webcamProducer),this._webcamProducer=null)}})))()}))}_replaceWebcamTrack(){return Am(this,void 0,void 0,(function*(){Xg.info("_replaceWebcamTrack()"),this._webcamTrack&&this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track!==this._webcamTrack&&(yield this._webcamProducer.replaceTrack({track:this._webcamTrack}),yield this._replaceWebcamTrack())}))}_pauseResumeWebcam(){var e,t;Xg.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 Am(this,void 0,void 0,(function*(){return Xg.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 Am(this,void 0,void 0,(function*(){Xg.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(()=>Am(this,void 0,void 0,(function*(){try{if(!this._screenVideoTrack||!this._sendTransport||this._screenVideoProducer)return void(this._screenVideoProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenVideoTrack,disableTrackOnPause:!1,stopTracks:!1},Ym("video",!0,this._features)),{appData:{streamId:iv,sourceClientId:this._selfId,screenShare:!0,source:"screenvideo",paused:!1}}));this._screenVideoProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;Xg.info('screenVideoProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenVideoTrack!==this._screenVideoProducer.track&&(yield this._replaceScreenVideoTrack())}catch(e){Xg.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(yield this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null)}})))()}))}_replaceScreenVideoTrack(){return Am(this,void 0,void 0,(function*(){Xg.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 Am(this,void 0,void 0,(function*(){return Xg.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 Am(this,void 0,void 0,(function*(){Xg.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(()=>Am(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},Ym("audio",!0,this._features)),{appData:{streamId:iv,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;Xg.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){Xg.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(yield this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})))()}))}_replaceScreenAudioTrack(){return Am(this,void 0,void 0,(function*(){Xg.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 Am(this,void 0,void 0,(function*(){return Xg.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){Xg.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(),wf.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(Xg.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){e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),"audio"===t.kind&&(this._startMonitoringAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){Xg.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal(Nf,{streamId:iv,requestedByClientId:r}),this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null,this._screenVideoTrack=null,this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null,this._screenAudioTrack=null}_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){if("0"===e){this._micPaused=r,this._webcamPaused=i;const e=t.getVideoTracks()[0],s=t.getAudioTracks()[0];e&&this._sendWebcam(e),s&&(this._sendMic(s),this._syncMicAnalyser(),this._startMonitoringAudioTrack(s)),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const n=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",n),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",n)}}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=>Am(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){Hg.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({},Wg),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(Gg,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,Gg),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){Xg.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){if(Xg.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(ev))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._emitToPWA(ig,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}else clearTimeout(this._stopCameraTimeout),this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(sg,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3)}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){Xg.info("acceptNewStream()",{streamId:e,clientId:t}),this.rtcStatsReconnect();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,a,o,c;Xg.info("updateStreamResolution()",{streamId:e,width:r,height:i});const d=this._streamIdToVideoConsumerId.get(e),l=this._consumers.get(d);if(!l)return;let p=0;this._consumers.forEach((e=>{var t,r;e._closed||e._paused||"webcam"!==(null===(t=e._appData)||void 0===t?void 0:t.source)&&"screenvideo"!==(null===(r=e._appData)||void 0===r?void 0:r.source)||p++}));let u=2;/T3/.test((null===(a=null===(n=null===(s=l._rtpParameters)||void 0===s?void 0:s.encodings)||void 0===n?void 0:n[0])||void 0===a?void 0:a.scalabilityMode)||"")&&(u=3);const h=Math.max(r,i);let m=h>=480?h>=960?2:1:0,f=u-1;h<100&&(f=Math.max(u-2,0)),p>8&&0===m&&(f=Math.max(u-2,0)),p<4&&h>300&&0===m&&(m=1),(null===(o=this._features)||void 0===o?void 0:o.uncappedSingleRemoteVideoOn)&&1===p&&(m=2,f=u-1),l.appData.spatialLayer===m&&l.appData.temporalLayer===f||(l.appData.spatialLayer=m,l.appData.temporalLayer=f,null===(c=this._vegaConnection)||void 0===c||c.message("setConsumersPreferredLayers",{consumerIds:[d],spatialLayer:m,temporalLayer:f}))}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){wf.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){wf.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){wf.sendEvent(e,t)}rtcStatsDisconnect(){wf.server.close()}rtcStatsReconnect(){wf.server.connected||wf.server.connect()}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_onMessage(e){return Am(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 Xg.info(`unknown message method "${t}"`)}})).catch((e=>{Xg.error('"message" failed [error:%o]',e)}))}))}_onConsumerReady(e){return Am(this,void 0,void 0,(function*(){Xg.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=rf,t.rtpReceiver.playoutDelayHint=.4}catch(e){Xg.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)}))}_onConsumerClosed({consumerId:e,reason:t}){var r;return Am(this,void 0,void 0,(function*(){Xg.info("_onConsumerClosed()",{consumerId:e,reason:t}),null===(r=this._consumers.get(e))||void 0===r||r.close()}))}_onConsumerPaused({consumerId:e}){Xg.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){Xg.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}){Xg.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}){Xg.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 Am(this,void 0,void 0,(function*(){Xg.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 Am(this,void 0,void 0,(function*(){Xg.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(Ng,{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),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(eg,{clientId:e,stream:s,streamId:p,streamType:"webcam"}),i.hasEmittedWebcamStream=!0),n&&!o&&d&&(this._emitToPWA(eg,{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 nv{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:i}){this.emitter=e,this.currentManager=null,t.on(qf,(({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(rg)}let l=null;l=d?new sv(c):new qg(c),l.setupSocketListeners(),e.emit(tg,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(rg))}}var av;!function(e){e.rtc_manager_created="rtc_manager_created",e.stream_added="stream_added"}(av||(av={}));const ov=new Lm;class cv extends Gi{constructor(e){super(),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(qf,(e=>this._onRoomJoined(e))),e.on(Vf,(e=>this._onNewClient(e))),e.on(Ff,(e=>this._onClientLeft(e))),e.on(Zf,(e=>this._onPendingClientLeft(e))),e.on(Bf,(e=>this._onAudioEnabled(e))),e.on(Gf,(e=>this._onVideoEnabled(e))),e.on(zf,(e=>this._onScreenshareChanged(e,!0))),e.on(Uf,(e=>this._onScreenshareChanged(e,!1)))}_onRoomJoined(e){var t,r;return Am(this,void 0,void 0,(function*(){if(!(null===(t=e.room)||void 0===t?void 0:t.clients))return void this.emit(qf,e);if(!e.selfId)return void this.emit(qf,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(qf,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave))),void this.emit(qf,e);const s=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>s)return this._resetClientState(e),this.emit(qf,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave)));const n=yield Vm();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){ov.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(qf,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(Ff,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))):ov.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(Ff,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(Vf,e)}_abortIfNotActive(e){return Am(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(Ff,e)))}))}_checkIsActive(e){return Am(this,void 0,void 0,(function*(){const t=yield Vm();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 dv;const lv=null!==(dv=Gp.default)&&void 0!==dv?dv:Gp;class pv{constructor(e,t,r=!1){this._wasConnectedUsingWebsocket=!1,this._reconnectManager=null,this._socket=Mm(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"!==lv.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new cv(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.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=[qf,Ff,Vf];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}}const uv=[{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 hv(e,t){return ai(e,t)}!function({host:e="whereby.com",protocol:t="https:"}={}){let r="",i=e,s=".";for(const{separator:t,pattern:n}of uv){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 mv=((e={})=>{const t=new Map,{extra:r,onError:i=Ui}=e;Si(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=Li(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:ji(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(Pi(e,bi),r.delete(e))}))},cancel:()=>{Pi(c,bi),e.pending.delete(c)},throwIfCancelled:()=>{ki(c.signal)}})))}catch(e){e instanceof wi||Fi(i,e,{raisedBy:"effect"})}finally{await Promise.all(l),Pi(c,yi),e.pending.delete(c)}},o=(e=>()=>{e.forEach(Bi),e.clear()})(t);return{middleware:e=>r=>c=>{if(!Ut(c))return r(c);if($i.match(c))return s(c.payload);if(Vi.match(c))return void o();if(zi.match(c))return n(c.payload);let d=e.getState();const l=()=>{if(d===xi)throw new Error(`${Mi}: 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=xi}return p},startListening:s,stopListening:n,clearListeners:o}})(),fv=mv.startListening,gv=(e,t)=>fv({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)}}),vv=ui({name:"app",initialState:{isNodeSdk:!1,isActive:!1,roomName:null,roomUrl:null,displayName:null,userAgent:"core:0.16.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:_v,doAppStart:bv}=vv.actions,yv=e=>e.app.isActive,wv=e=>e.app.displayName,Sv=e=>e.app.externalId,Cv=e=>e.app.isNodeSdk;function Rv(e){return Jr(`signalConnection/event/${e}`)}const Tv={audioEnabled:Rv("audioEnabled"),audioEnableRequested:Rv("audioEnableRequested"),chatMessage:Rv("chatMessage"),clientLeft:Rv("clientLeft"),clientKicked:Rv("clientKicked"),clientMetadataReceived:Rv("clientMetadataReceived"),cloudRecordingStarted:Rv("cloudRecordingStarted"),cloudRecordingStopped:Rv("cloudRecordingStopped"),disconnect:Rv("disconnect"),knockerLeft:Rv("knockerLeft"),knockHandled:Rv("knockHandled"),newClient:Rv("newClient"),roomJoined:Rv("roomJoined"),roomKnocked:Rv("roomKnocked"),roomLeft:Rv("roomLeft"),roomLocked:Rv("roomLocked"),roomSessionEnded:Rv("roomSessionEnded"),screenshareStarted:Rv("screenshareStarted"),screenshareStopped:Rv("screenshareStopped"),spotlightAdded:Rv("spotlightAdded"),spotlightRemoved:Rv("spotlightRemoved"),streamingStopped:Rv("streamingStopped"),videoEnabled:Rv("videoEnabled")},Pv={canLockRoom:["host"],canRequestAudioEnable:["host"],canKickClient:["host"],canEndMeeting:["host"],canAskToSpeak:["host"],canSpotlight:["host"]},kv=ui({name:"authorization",initialState:{roomKey:null,roleName:"none"},reducers:{setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})},extraReducers:e=>{e.addCase(bv,((e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload.roomKey}))),e.addCase(Tv.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:Dv}=kv.actions,Iv=e=>e.authorization.roleName;Hr(Iv,(e=>Pv.canLockRoom.includes(e))),Hr(Iv,(e=>Pv.canRequestAudioEnable.includes(e))),Hr(Iv,(e=>Pv.canKickClient.includes(e))),Hr(Iv,(e=>Pv.canEndMeeting.includes(e)));const Ev=Hr(Iv,(e=>Pv.canAskToSpeak.includes(e)));function Ov(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 xv(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())}))}Hr(Iv,(e=>Pv.canSpotlight.includes(e))),"function"==typeof SuppressedError&&SuppressedError;const Mv=ui({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(jv.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(jv.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(jv.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),jv=hv("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>xv(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),Lv=e=>e.deviceCredentials;gv([Hr(yv,Lv,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(jv())}));const Av=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),{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(Tv.disconnect,(e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"})))}}),{deviceIdentifying:Nv,deviceIdentified:Bv,socketConnected:Fv,socketConnecting:$v,socketDisconnected:Vv,socketReconnecting:zv}=Av.actions,Uv=()=>(e,t)=>{if(Jv(t()))return;e($v());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new pv(e,{autoConnect:!1})}();r.on("connect",(()=>e(Fv(r)))),r.on("device_identified",(()=>e(Bv()))),r.getManager().on("reconnect",(()=>e(zv()))),function(e,t){e.on("room_joined",(e=>t(Tv.roomJoined(e)))),e.on("new_client",(e=>t(Tv.newClient(e)))),e.on("client_left",(e=>t(Tv.clientLeft(e)))),e.on("client_kicked",(e=>t(Tv.clientKicked(e)))),e.on("audio_enabled",(e=>t(Tv.audioEnabled(e)))),e.on("video_enabled",(e=>t(Tv.videoEnabled(e)))),e.on("audio_enable_requested",(e=>t(Tv.audioEnableRequested(e)))),e.on("client_metadata_received",(e=>t(Tv.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(Tv.chatMessage(e)))),e.on("disconnect",(()=>t(Tv.disconnect()))),e.on("room_knocked",(e=>t(Tv.roomKnocked(e)))),e.on("room_left",(()=>t(Tv.roomLeft()))),e.on("room_locked",(e=>t(Tv.roomLocked(e)))),e.on("room_session_ended",(e=>t(Tv.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(Tv.knockerLeft(e)))),e.on("knock_handled",(e=>t(Tv.knockHandled(e)))),e.on("screenshare_started",(e=>t(Tv.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(Tv.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(Tv.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(Tv.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(Tv.streamingStopped()))),e.on("spotlight_added",(e=>t(Tv.spotlightAdded(e)))),e.on("spotlight_removed",(e=>t(Tv.spotlightRemoved(e))))}(r,e),r.connect()},qv=({deviceCredentials:e})=>(t,r)=>{const i=r(),s=Jv(i),n=Hv(i);s&&(n||(s.emit("identify_device",{deviceCredentials:e}),t(Nv())))},Gv=()=>(e,t)=>{const r=t();if("connected"===Kv(r)){const t=Wv(r).socket;null==t||t.disconnect(),e(Vv())}},Wv=e=>e.signalConnection,Hv=e=>e.signalConnection.deviceIdentified,Kv=e=>e.signalConnection.status,Jv=e=>e.signalConnection.socket;gv([Hr(yv,Kv,((e,t)=>!(!e||!["ready","reconnecting"].includes(t))))],(({dispatch:e},t)=>{t&&e(Uv())}));const Qv=Hr(Lv,Kv,Hv,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,i)=>!(!e.data||"connected"!==t||r||i)));gv([Qv,Lv],(({dispatch:e},t,r)=>{t&&r.data&&e(qv({deviceCredentials:r.data}))})),fv({actionCreator:Tv.roomLeft,effect:(e,{dispatch:t})=>{t(Gv())}}),fv({actionCreator:Tv.clientKicked,effect:(e,{dispatch:t})=>{t(Gv())}});const Zv=ui({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(Tv.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]})}))}}),Yv=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(Tv.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(Tv.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(Tv.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}))}});Yv.actions;const Xv=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(bv,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase(m_.pending,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:i,isSettingMicrophoneDevice:r})})),e.addCase(m_.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(m_.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(p_.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase(p_.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(f_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(v_.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(v_.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(v_.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase(g_.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase(g_.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase(g_.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:e_,setCurrentCameraDeviceId:t_,setCurrentMicrophoneDeviceId:r_,setCurrentSpeakerDeviceId:i_,toggleCameraEnabled:s_,toggleMicrophoneEnabled:n_,toggleLowDataModeEnabled:a_,setLocalMediaOptions:o_,setLocalMediaStream:c_,localMediaStopped:d_,localStreamMetadataUpdated:l_}=Xv.actions,p_=hv("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>xv(void 0,void 0,void 0,(function*(){const e=t(),i=I_(e);if(!i)return;let s=i.getVideoTracks()[0];const n=S_(e);try{if(n)if(s)s.enabled=!0;else{const t=O_(e),r=y_(e);yield mf(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)}})))),u_=hv("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const i=t(),s=I_(i);if(!s)return;const n=C_(i),a=null===(r=s.getAudioTracks())||void 0===r?void 0:r[0];a&&(a.enabled=n)})),h_=()=>(e,t)=>{const r=t();if(!I_(r))return;const i=y_(r),s=w_(r);e(g_({audioId:s,videoId:i}))},m_=hv("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:i})=>xv(void 0,void 0,void 0,(function*(){try{const i=r(),s=I_(i);if(!s)throw new Error("No stream");const n=!!e&&w_(i),a=!!t&&y_(i),o=O_(i),{replacedTracks:c}=yield mf(Object.assign(Object.assign({},o),{audioId:n,videoId:a,type:"exact"}),{replaceStream:s}),d=C_(i);s.getAudioTracks().forEach((e=>e.enabled=d));const l=S_(i);return s.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return i(e)}})))),f_=hv("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:i})=>xv(void 0,void 0,void 0,(function*(){var e,s,n,a;const o=t();let c=[],d=[];const l=I_(o);try{c=yield navigator.mediaDevices.enumerateDevices(),d=T_(o);if(!(l&&!E_(o)&&c&&d&&d.find((e=>e.deviceId))))return{devices:c};const{changedDevices:t,addedDevices:i}=ff({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(g_({audioId:p,videoId:u})),{devices:c}}catch(e){return i(e)}})))),g_=hv("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:i,rejectWithValue:s})=>xv(void 0,void 0,void 0,(function*(){const n=i(),a=I_(n),o=O_(n),c=!(!t||e)||!(t||!e);if(a)try{const{replacedTracks:i}=yield mf(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(e_({deviceId:s})),{replacedTracks:i}}catch(i){console.error(i);const n=e||t;return c&&n&&r(e_({deviceId:n})),s(i)}})))),v_=hv("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:i})=>xv(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(f_())}),{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(o_({options:e}));try{yield r(f_());const i=t(),n=O_(i),{stream:a}=yield mf(Object.assign(Object.assign({},n),{audioId:e.audio,videoId:e.video}));return{stream:a,onDeviceChange:s}}catch(e){return i(e)}})))),__=()=>(e,t)=>{const r=I_(t()),i=k_(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&i&&navigator.mediaDevices.removeEventListener("devicechange",i),e(d_())},b_=e=>e.localMedia.busyDeviceIds,y_=e=>e.localMedia.currentCameraDeviceId,w_=e=>e.localMedia.currentMicrophoneDeviceId,S_=e=>e.localMedia.cameraEnabled,C_=e=>e.localMedia.microphoneEnabled,R_=e=>e.localMedia.lowDataMode,T_=e=>e.localMedia.devices,P_=e=>e.localMedia.options;Hr(P_,(e=>!!e));const k_=e=>e.localMedia,D_=e=>e.localMedia.status,I_=e=>e.localMedia.stream,E_=e=>e.localMedia.isSwitchingStream,O_=Hr(T_,y_,w_,R_,((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}})));Hr(D_,(e=>"starting"===e)),Hr(T_,b_,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),Hr(T_,b_,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),Hr(T_,(e=>e.filter((e=>"audiooutput"===e.kind))));gv([Hr(yv,D_,P_,Cv,((e,t,r,i)=>{if(e&&["inactive","stopped"].includes(t)&&!i&&r)return r}))],(({dispatch:e},t)=>{t&&e(v_(t))}));gv([Hr(yv,D_,P_,((e,t,r)=>!e&&"inactive"!==t&&!!r))],(({dispatch:e},t)=>{t&&e(__())})),fv({predicate:(e,t,r)=>{const i=C_(r),s=C_(t);return"started"===D_(r)&&i!==s},effect:(e,{dispatch:t})=>{t(u_())}}),fv({predicate:(e,t,r)=>{const i=R_(r),s=R_(t);return"started"===D_(r)&&i!==s},effect:(e,{dispatch:t})=>{t(h_())}}),fv({predicate:(e,t,r)=>{const i=(e=>e.localMedia.isTogglingCamera)(t);if(i)return!1;const s=S_(r),n=S_(t);return"started"===D_(r)&&s!==n},effect:(e,{dispatch:t})=>{t(p_())}}),fv({predicate:(e,t,r)=>{const i=y_(r),s=y_(t);return"started"===D_(r)&&i!==s},effect:(e,{dispatch:t})=>{t(m_({audio:!1,video:!0}))}}),fv({predicate:(e,t,r)=>{const i=w_(r),s=w_(t);return"started"===D_(r)&&i!==s},effect:(e,{dispatch:t})=>{t(m_({audio:!0,video:!1}))}}),fv({matcher:ti(v_.fulfilled,f_.fulfilled,g_.fulfilled,g_.rejected),effect:(e,{dispatch:t,getState:r})=>{const i=r(),s=I_(i),n=T_(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:uf("videoinput",t,r,n),audio:uf("audioinput",e,r,s)}}({audioTrack:s.getAudioTracks()[0],videoTrack:s.getVideoTracks()[0],devices:n});t(l_(a))}}),fv({actionCreator:Tv.audioEnableRequested,effect:({payload:e},{dispatch:t})=>{const{enable:r}=e;r||t(n_({enabled:!1}))}});const x_=ui({name:"localParticipant",initialState:{displayName:"",id:"",isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"none",clientClaim:void 0,stickyReaction:void 0},reducers:{doSetDisplayName:(e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName})},extraReducers:e=>{e.addCase(bv,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(j_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(L_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(A_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{stickyReaction:t.payload}))),e.addCase(Tv.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})}))}}),{doSetDisplayName:M_}=x_.actions,j_=hv("localParticipant/doEnableAudio",((e,{dispatch:t,getState:r})=>xv(void 0,void 0,void 0,(function*(){const i=r(),s=Wv(i).socket;return null==s||s.emit("enable_audio",{enabled:e.enabled}),e.enabled&&t(A_({enabled:!1})),e.enabled})))),L_=hv("localParticipant/doEnableVideo",((e,{getState:t})=>xv(void 0,void 0,void 0,(function*(){const r=t(),i=Wv(r).socket;return null==i||i.emit("enable_video",{enabled:e.enabled}),e.enabled})))),A_=hv("localParticipant/doSetLocalStickyReaction",((e,{getState:t,rejectWithValue:r})=>xv(void 0,void 0,void 0,(function*(){var i;const s=t(),n=V_(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})))),N_=()=>(e,t)=>{const r=t(),i=Wv(r).socket,s={displayName:$_(r),stickyReaction:V_(r)};null==i||i.emit("send_client_metadata",{type:"UserData",payload:s})},B_=e=>e.localParticipant,F_=e=>e.localParticipant.id,$_=e=>e.localParticipant.displayName,V_=e=>e.localParticipant.stickyReaction,z_=Hr(B_,I_,((e,t)=>({id:e.id,clientId:e.id,displayName:e.displayName,stream:t,isLocalClient:!0,isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled})));fv({actionCreator:s_,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isVideoEnabled:s}=B_(r());t(L_({enabled:i||!s}))}}),fv({actionCreator:n_,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isAudioEnabled:s}=B_(r());t(j_({enabled:i||!s}))}}),gv([$_,V_],(({dispatch:e})=>{e(N_())}));const U_=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(G_.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(G_.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(G_.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"inactive",stream:null})))}}),{stopScreenshare:q_}=U_.actions,G_=hv("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:i})=>xv(void 0,void 0,void 0,(function*(){var e;try{const i=r(),s=H_(i);if(s)return{stream:s};const n=yield navigator.mediaDevices.getDisplayMedia(),a=()=>{t(W_())};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)}})))),W_=()=>(e,t)=>{const r=t(),i=H_(r);i&&(i.getTracks().forEach((e=>e.stop())),e(q_({stream:i})))},H_=e=>e.localScreenshare.stream;function K_(e){return Jr(`rtcConnection/event/${e}`)}fv({actionCreator:d_,effect:(e,{getState:t})=>{const r=t(),i=H_(r);i&&(null==i||i.getTracks().forEach((e=>{e.stop()})))}});const J_={rtcManagerCreated:K_("rtcManagerCreated"),rtcManagerDestroyed:K_("rtcManagerDestroyed"),streamAdded:K_("streamAdded")},Q_=["recorder","streamer"];function Z_(e,t=!1){const{streams:r,role:i}=e,s=Ov(e,["streams","role"]);return Object.assign(Object.assign({},s),{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,newJoiner:t})}function Y_(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function X_(e,t,r){const{participant:i,index:s}=Y_(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 eb(e,t,r,i){const{participant:s}=Y_(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}),X_(e,t,{streams:a})}function tb(e,t,r){const{participant:i}=Y_(e,t);return!i||i.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):X_(e,t,{streams:[...i.streams,{id:r,state:"to_accept"}]})}const rb=ui({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:i,state:s}of t.payload)r=eb(r,e,i,s);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:i}=t.payload;return X_(e,r,{stream:i})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:i}=t.payload;return tb(e,r,i)}},extraReducers:e=>{e.addCase(Tv.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)).filter((e=>!Q_.includes(e.role.roleName))).map((e=>Z_(e)))})})),e.addCase(J_.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:i,streamType:s}=t;let{streamId:n}=t;const{participant:a}=Y_(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?X_(e,r,{stream:i}):X_(e,r,{presentationStream:i})}(e,t.payload))),e.addCase(Tv.newClient,((e,t)=>{const{client:r}=t.payload;return Q_.includes(r.role.roleName)?e:function(e,t){const{participant:r}=Y_(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,Z_(r,!0))})),e.addCase(Tv.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(Tv.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:i}=t.payload;return X_(e,r,{isAudioEnabled:i})})),e.addCase(Tv.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:i}=t.payload;return X_(e,r,{isVideoEnabled:i})})),e.addCase(Tv.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 X_(e,s,{displayName:n,stickyReaction:a})})),e.addCase(Tv.screenshareStarted,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return tb(e,r,i)})),e.addCase(Tv.screenshareStopped,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return function(e,t,r){var i,s;const{participant:n}=Y_(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 X_(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:ib,participantStreamIdAdded:sb,streamStatusUpdated:nb}=rb.actions,ab=e=>e.remoteParticipants.remoteParticipants;Hr(ab,(e=>e.filter((e=>!Q_.includes(e.roleName))).length+1));const ob=ui({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase(cb.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(cb.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(cb.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),cb=hv("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>xv(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)}})))),db=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId},lb=Hr(yv,(e=>e.organization),Lv,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)));gv([lb],(({dispatch:e},t)=>{t&&e(cb())}));const pb=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(Tv.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(Tv.disconnect,(e=>["kicked","left"].includes(e.status)?Object.assign({},e):Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(Tv.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(Tv.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(Tv.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(Tv.roomLeft,(e=>Object.assign(Object.assign({},e),{status:"left"}))),e.addCase(zv,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"})))}}),{connectionStatusChanged:ub}=pb.actions,hb=()=>(e,t)=>{const r=t(),i=Wv(r).socket,s=(e=>e.app.roomName)(r),n=(e=>e.authorization.roomKey)(r),a=wv(r),o=(e=>e.app.userAgent)(r),c=Sv(r),d=db(r),l=S_(t()),p=C_(t()),u=(e=>e.localParticipant.clientClaim)(t());null==i||i.emit("join_room",Object.assign({avatarUrl:null,config:{isAudioEnabled:p,isVideoEnabled:l},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:n,roomName:s,userAgent:o,externalId:c},u&&{clientClaim:u})),e(ub("connecting"))},mb=e=>e.roomConnection.status;gv([Hr([yv,db,mb,Hv,D_,Cv],((e,t,r,i,s,n)=>!!(e&&("started"===s||n)&&i&&t&&["ready","reconnecting","disconnected"].includes(r))))],(({dispatch:e},t)=>{t&&e(hb())})),fv({actionCreator:Tv.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:i,resolution:s}=e,n=r();i===F_(n)&&("accepted"===s?(t(Dv(e.metadata.roomKey)),t(hb())):"rejected"===s&&t(ub("knock_rejected")))}}),fv({actionCreator:_v,effect:(e,{dispatch:t,getState:r})=>{const i=r();if("connected"===mb(i)){const e=Wv(i).socket;null==e||e.emit("leave_room"),t(ub("leaving"))}else Gv()}});function fb(e){return Object.assign(Object.assign({},e),{timestamp:Date.now()})}const gb=ui({name:"notifications",initialState:{emitter:new Gi,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:[]})}});gb.actions;const vb=e=>(t,r)=>{t(gb.actions.addNotification(e));const i=r(),s=_b(i);s.emit(e.type,e),s.emit("*",e)},_b=e=>e.notifications.emitter;function bb(e){return"recorder"===e.roleName}fv({actionCreator:Tv.chatMessage,effect:({payload:e},{dispatch:t,getState:r})=>{const i=r(),s=ab(i).find((({id:t})=>t===e.senderId));s?t(vb(fb({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")}}),fv({actionCreator:Tv.audioEnableRequested,effect:({payload:e},{dispatch:t,getState:r})=>{const{enable:i,requestedByClientId:s}=e,n=r(),a=ab(n).find((({id:e})=>e===s));a?t(vb(fb({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")}}),fv({actionCreator:Tv.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(!Ev(d))return;const l=ab(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=ab(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(vb(fb({type:c?"remoteHandRaised":"remoteHandLowered",message:`${l.displayName} ${c?"raised":"lowered"} their hand`,props:{client:l,stickyReaction:c}})))}}),gv([Kv],(({dispatch:e,getState:t},r)=>{const i=t(),s=mb(i);["left","kicked"].includes(s)||("disconnected"===r?e(vb(fb({type:"signalTrouble",message:"Network connection lost. Trying to reconnect you...",props:{}}))):"connected"===r&&e(vb(fb({type:"signalOk",message:"Network connection available",props:{}}))))}));const yb=ui({name:"room",initialState:{isLocked:!1},reducers:{},extraReducers:e=>{e.addCase(Tv.roomJoined,((e,t)=>{const{error:r,isLocked:i}=t.payload;return r?e:Object.assign(Object.assign({},e),{isLocked:Boolean(i)})})),e.addCase(Tv.roomLocked,((e,t)=>{const{isLocked:r}=t.payload;return Object.assign(Object.assign({},e),{isLocked:Boolean(r)})}))}});Hr(H_,ab,((e,t)=>{const r=[];e&&r.push({id:e.id||"local-screenshare",participantId:"local",hasAudioTrack:e.getTracks().some((e=>"audio"===e.kind)),stream:e,isLocal:!0});for(const e of t)e.presentationStream&&r.push({id:e.presentationStream.id||`pres-${e.id}`,participantId:e.id,hasAudioTrack:e.presentationStream.getTracks().some((e=>"audio"===e.kind)),stream:e.presentationStream,isLocal:!1});return r}));const wb=Hr(H_,B_,ab,((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||bb(e))continue;const{presentationStream:t}=e,r=Ov(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})),Sb=Hr(z_,wb,((e,t)=>[e,...t])),Cb=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(Ab(r)):"stream_added"===t?e(J_.streamAdded(r)):"rtc_manager_destroyed"===t&&e(Eb())}}),Rb={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"inactive",isAcceptingStreams:!1},Tb=ui({name:"rtcConnection",initialState:Rb,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({},Rb),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(zv,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"}))),e.addCase(Tv.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"===e.status?"ready":e.status})))}}),{resolutionReported:Pb,rtcDispatcherCreated:kb,rtcDisconnected:Db,rtcManagerCreated:Ib,rtcManagerDestroyed:Eb,rtcManagerInitialized:Ob,isAcceptingStreams:xb}=Tb.actions,Mb=()=>(e,t)=>{const r=t(),i=Wv(r).socket,s=Bb(r).rtcManagerDispatcher,n=S_(r),a=C_(r),o=Cv(r);if(s||!i)return;const c={getMediaConstraints:()=>({audio:a,video:n}),deferrable:e=>!e},d=new nv({emitter:Cb(e),serverSocket:i,webrtcProvider:c,features:{lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:o?Ha.createFactory():void 0}});e(kb(d))},jb=()=>(e,t)=>{const{rtcManager:r}=Bb(t());r&&r.disconnectAll(),e(Db())},Lb=e=>(t,r)=>{var i;t(xb(!0));const s=r(),n=Bb(s).rtcManager,a=ab(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(nb(c)),t(xb(!1))},Ab=e=>t=>{const{rtcManager:r}=e;t(Ib(r))},Nb=()=>(e,t)=>{const r=I_(t()),i=Bb(t()).rtcManager,s=S_(t()),n=C_(t());r&&i&&i.addNewStream("0",r,!n,!s),e(Ob())},Bb=e=>e.rtcConnection,Fb=e=>e.rtcConnection.rtcManagerInitialized,$b=e=>e.rtcConnection.status;fv({actionCreator:m_.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:i}=Bb(t()),s=I_(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)}))}}),fv({actionCreator:G_.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=Bb(t());null==i||i.addNewStream(r.id,r,!1,!0)}}),fv({actionCreator:q_,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=Bb(t());null==i||i.removeStream(r.id,r,null)}}),fv({actionCreator:g_.fulfilled,effect:({payload:e},{getState:t})=>{var r;const i=I_(t()),{rtcManager:s}=Bb(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 Vb=Hr((e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),Jv,((e,t,r)=>!(e||t||!r)));gv([Vb],(({dispatch:e},t)=>{t&&e(Mb())}));const zb=Hr((e=>e.rtcConnection.rtcManager),Fb,D_,((e,t,r)=>!("started"!==r||!e||t)));gv([zb],(({dispatch:e},t)=>{t&&e(Nb())}));gv([Hr($b,yv,((e,t)=>!t&&!["inactive","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(jb())}));const Ub=Hr($b,ab,((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}));gv([Ub,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(Lb(t))}));const qb={audioEnabled:{actions:[j_.fulfilled],rtcEventName:"audioEnabled",getValue:e=>C_(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[L_.fulfilled],rtcEventName:"videoEnabled",getValue:e=>S_(e),getOutput:e=>({enabled:e})},localStream:{actions:[m_.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=I_(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:[G_.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=H_(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:[q_],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[M_],rtcEventName:"displayName",getValue:e=>wv(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>F_(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=>Sv(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>db(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>Kv(e),getOutput:e=>({status:e})},roomSessionId:{actions:[Tv.newClient,Tv.roomJoined,Tv.roomSessionEnded,Tv.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=>$b(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>Iv(e),getOutput:e=>({userRole:e})}},Gb=Object.values(qb).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)),Wb=e=>"object"==typeof e?JSON.stringify(e):e,Hb=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})})}}),Kb=()=>(e,t)=>{const r=t(),i=Bb(r).rtcManager;i&&(i.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(qb).forEach((({rtcEventName:t,getValue:s,getOutput:n})=>{var a;const o=s(r),c=Object.assign(Object.assign({},n(o)),{_time:Date.now()}),d=Wb(o);(null===(a=r.rtcAnalytics.reportedValues)||void 0===a?void 0:a[t])!==d&&(i.sendStatsCustomEvent(t,c),e(Jb({rtcEventName:t,value:o})))})))},{updateReportedValues:Jb}=Hb.actions;function Qb({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"}fv({matcher:ti(...Gb),effect:({type:e},{getState:t,dispatch:r})=>{var i;const s=t(),n=Bb(s).rtcManager;if(!n)return;const a=Object.values(qb).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=Wb(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(Jb({rtcEventName:d,value:l})))}}),gv([Fb],(({dispatch:e},t)=>{t&&e(Kb())}));const Zb=ui({name:"spotlights",initialState:{sorted:[]},reducers:{},extraReducers:e=>{e.addCase(Tv.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(Tv.spotlightAdded,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:(s=e.sorted,n={clientId:r,streamId:i},s.find((e=>e.clientId===n.clientId&&e.streamId===n.streamId))?s:s.concat(n))});var s,n})),e.addCase(Tv.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(Tv.clientKicked,Tv.clientLeft),((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>e.clientId!==r))})}))}}),Yb=e=>e.spotlights.sorted;Hr(B_,Yb,((e,t)=>function({spotlights:e,isPresentation:t,clientId:r,stream:i}){return!!e.find((e=>{const s=Qb({isPresentation:t,stream:i});return e.clientId===r&&e.streamId===s}))}({clientId:e.id,stream:e.stream,spotlights:t}))),Hr(Sb,Yb,((e,t)=>function(e,t){return e.reduce(((e,r)=>{const i=t.find((e=>r.clientId===e.clientId&&r.streamId===Qb(e)));return i&&!e.includes(i)&&e.push(i),e}),[])}(t,e)));const Xb=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})}});Xb.actions;const ey=ui({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(Tv.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(Tv.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(Tv.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}});let ty;!function(e){const t=Object.keys(e),r={};for(let i=0;i<t.length;i++){const s=t[i];void 0===e[s]&&zt(`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:vv.reducer,authorization:kv.reducer,chat:Zv.reducer,cloudRecording:Yv.reducer,deviceCredentials:Mv.reducer,localMedia:Xv.reducer,localParticipant:x_.reducer,localScreenshare:U_.reducer,notifications:gb.reducer,organization:ob.reducer,remoteParticipants:rb.reducer,room:yb.reducer,roomConnection:pb.reducer,rtcAnalytics:Hb.reducer,rtcConnection:Tb.reducer,signalConnection:Av.reducer,spotlights:Zb.reducer,streaming:Xb.reducer,waitingParticipants:ey.reducer});try{ty=self.localStorage}catch(_y){ty={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}const ry=["aec","agc","audio","audioDenoiser","autoHideSelfView","autoSpotlight","background","bottomToolbar","breakout","cameraAccess","chat","embed","emptyRoomInvitation","floatSelf","help","leaveButton","locking","localization","logo","lowData","moreButton","participantCount","personality","pipButton","precallCeremony","precallCeremonyCanSkip","precallPermissionsHelpLink","precallReview","people","recording","roomIntegrations","screenshare","settingsButton","skipMediaPermissionPrompt","subgridLabels","timer","toolbarDarkText","topToolbar","video"];var iy,sy;iy="WherebyEmbed",sy={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",...ry].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")},leaveRoom(){this._postCommand("leave_room")},startRecording(){this._postCommand("start_recording")},stopRecording(){this._postCommand("stop_recording")},startStreaming(){this._postCommand("start_streaming")},stopStreaming(){this._postCommand("stop_streaming")},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,lang:i,metadata:s,externalid:n,minimal:a,room:o,groups:c,virtualbackgroundurl:d,title:l}=this;let p,u;try{({roomUrl:p,subdomain:u}=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)}}(o,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({jsApi:!0,we:"1",iframeSource:u},t&&{displayName:t}),i&&{lang:i}),s&&{metadata:s}),n&&{externalId:n}),c&&{groups:c}),d&&{virtualBackgroundUrl:d}),e&&{avatarUrl:e}),r&&{cameraEffect:r}),null!=a&&{embed:a}),ry.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`
12
+ let gn;dn.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,hn.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),hn.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),hn.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(){hn.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())hn.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new mn);this.stopping=!1}remove(e){hn.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new fn):hn.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(hn.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 vn="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:Yi):e=>(gn||(gn=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),_n={};Object.defineProperty(_n,"__esModule",{value:!0}),_n.Producer=void 0;const bn=vs,yn=Ss,wn=new hs.Logger("Producer");class Sn extends bn.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 bn.EnhancedEventEmitter,wn.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||(wn.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(wn.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new yn.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){wn.debug("pause()"),this._closed?wn.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(){wn.debug("resume()"),this._closed?wn.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(wn.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new yn.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new yn.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()):wn.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new yn.InvalidStateError("closed");if("video"!==this._kind)throw new yn.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 yn.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){wn.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){}}}_n.Producer=Sn;var Cn={};Object.defineProperty(Cn,"__esModule",{value:!0}),Cn.Consumer=void 0;const Rn=vs,Tn=Ss,Pn=new hs.Logger("Consumer");class kn extends Rn.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:s,rtpParameters:n,appData:a}){super(),this._closed=!1,this._observer=new Rn.EnhancedEventEmitter,Pn.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||(Pn.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Pn.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Tn.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Pn.debug("pause()"),this._closed?Pn.error("pause() | Consumer closed"):this._paused?Pn.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){Pn.debug("resume()"),this._closed?Pn.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):Pn.debug("resume() | Consumer is already resumed")}onTrackEnded(){Pn.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){}}}Cn.Consumer=kn;var Dn={};Object.defineProperty(Dn,"__esModule",{value:!0}),Dn.DataProducer=void 0;const In=vs,En=Ss,On=new hs.Logger("DataProducer");class xn extends In.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new In.EnhancedEventEmitter,On.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||(On.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(On.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(On.debug("send()"),this._closed)throw new En.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(On.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?On.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):On.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(On.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||On.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}Dn.DataProducer=xn;var Mn={};Object.defineProperty(Mn,"__esModule",{value:!0}),Mn.DataConsumer=void 0;const jn=vs,Ln=new hs.Logger("DataConsumer");class An extends jn.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:s}){super(),this._closed=!1,this._observer=new jn.EnhancedEventEmitter,Ln.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||(Ln.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Ln.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Ln.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?Ln.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Ln.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Ln.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)}))}}Mn.DataConsumer=An;var Nn=Yi&&Yi.__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]}),Bn=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Fn=Yi&&Yi.__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)&&Nn(t,e,r);return Bn(t,e),t},$n=Yi&&Yi.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(cn,"__esModule",{value:!0}),cn.Transport=void 0;const Vn=dn,zn=$n(vn),Un=hs,qn=vs,Gn=Ss,Wn=Fn(Ts),Hn=Fn(Ps),Kn=_n,Jn=Cn,Qn=Dn,Zn=Mn,Yn=new Un.Logger("Transport");class Xn{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}let ea=class extends qn.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 Vn.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 qn.EnhancedEventEmitter,Yn.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,delete(c=Wn.clone(c)||{}).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=p(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:s,sctpParameters:n,iceServers:a,iceTransportPolicy:o,additionalSettings:c,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){Yn.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 Gn.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(Yn.debug("restartIce()"),this._closed)throw new Gn.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(Yn.debug("updateIceServers()"),this._closed)throw new Gn.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,appData:o={}}={}){if(Yn.debug("produce() [track:%o]",e),this._closed)throw new Gn.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new Gn.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new Gn.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new Gn.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(o&&"object"!=typeof o)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let c;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?c=void 0:t&&(c=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:d,rtpParameters:l,rtpSender:p}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:i});try{Hn.validateRtpParameters(l);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:l,appData:o},t,r)})),r=new Kn.Producer({id:t,localId:d,rtpSender:p,track:e,rtpParameters:l,stopTracks:s,disableTrackOnPause:n,zeroRtpOnPause:a,appData:o});return this._producers.set(r.id,r),this.handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(d).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,appData:n={}}){if(Yn.debug("consume()"),i=Wn.clone(i),this._closed)throw new Gn.InvalidStateError("closed");if("recv"!==this._direction)throw new Gn.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(n&&"object"!=typeof n)throw new TypeError("if given, appData must be an object");if(!Hn.canReceive(i,this._extendedRtpCapabilities))throw new Gn.UnsupportedError("cannot consume this Producer");const a=new Xn({id:e,producerId:t,kind:r,rtpParameters:i,streamId:s,appData:n});return this._pendingConsumerTasks.push(a),(0,zn.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),a.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:s="",appData:n={}}={}){if(Yn.debug("produceData()"),this._closed)throw new Gn.InvalidStateError("closed");if("send"!==this._direction)throw new Gn.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new Gn.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});Hn.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 Qn.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(Yn.debug("consumeData()"),r=Wn.clone(r),this._closed)throw new Gn.InvalidStateError("closed");if("recv"!==this._direction)throw new Gn.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new Gn.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");return Hn.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:a}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:s}),o=new Zn.DataConsumer({id:e,dataProducerId:t,dataChannel:a,sctpStreamParameters:r,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 Yn.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}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:s,streamId:n})}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 Jn.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=Hn.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),Yn.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){Yn.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 Yn.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){Yn.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 Yn.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){Yn.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 Yn.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){Yn.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",(({iceParameters:e,dtlsParameters:t},r,i)=>{this._closed?i(new Gn.InvalidStateError("closed")):this.safeEmit("connect",{iceParameters:e,dtlsParameters:t},r,i)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(Yn.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(Yn.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=>Yn.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 Gn.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,zn.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,zn.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new Gn.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)}))}};cn.Transport=ea;var ta={},ra={},ia={},sa={exports:{}},na=sa.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(na).forEach((function(e){na[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var aa=sa.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=aa,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}}))}))}}(ia);var oa=aa,ca=/%[sdv%]/g,da=function(e){var t=1,r=arguments,i=r.length;return e.replace(ca,(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""}}))},la=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 da.apply(null,i)},pa=["v","o","s","i","u","e","p","c","b","t","r","z","a"],ua=["i","c","b","a"],ha=ia,ma=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||pa,i=t.innerOrder||ua,s=[];return r.forEach((function(t){oa[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(la(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(la(t,r,e))}))}))})),e.media.forEach((function(e){s.push(la("m",oa.m[0],e)),i.forEach((function(t){oa[t].forEach((function(r){r.name in e&&null!=e[r.name]?s.push(la(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){s.push(la(t,r,e))}))}))}))})),s.join("\r\n")+"\r\n"},fa=ra.write=ma,ga=ra.parse=ha.parse;ra.parseParams=ha.parseParams,ra.parseFmtpConfig=ha.parseFmtpConfig,ra.parsePayloads=ha.parsePayloads,ra.parseRemoteCandidates=ha.parseRemoteCandidates,ra.parseImageAttributes=ha.parseImageAttributes,ra.parseSimulcastStreamList=ha.parseSimulcastStreamList;var va={},_a=Yi&&Yi.__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]}),ba=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ya=Yi&&Yi.__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)&&_a(t,e,r);return ba(t,e),t};Object.defineProperty(va,"__esModule",{value:!0}),va.applyCodecParameters=va.getCname=va.extractDtlsParameters=va.extractIceParameters=va.extractRtpCapabilities=void 0;const wa=ya(ra);va.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=wa.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}},va.extractIceParameters=function({sdpObject:e}){let t=e.iceUfrag,r=e.icePwd;if(!t||!r){const i=(e.media||[]).find((e=>0!==e.port));i&&(t??(t=i.iceUfrag),r??(r=i.icePwd))}if(!t)throw new Error("no a=iceUfrag found at SDP session or media level");if(!r)throw new Error("no a=icePwd found at SDP session or media level");return{usernameFragment:t,password:r}},va.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}]}},va.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},va.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=wa.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]}`}};var Sa={};Object.defineProperty(Sa,"__esModule",{value:!0}),Sa.addLegacySimulcast=Sa.getRtpEncodings=void 0,Sa.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},Sa.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 Ca={};Object.defineProperty(Ca,"__esModule",{value:!0}),Ca.addNackSuppportForOpus=void 0,Ca.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 Ra={};Object.defineProperty(Ra,"__esModule",{value:!0}),Ra.HandlerInterface=void 0;const Ta=vs;class Pa extends Ta.EnhancedEventEmitter{constructor(){super()}}Ra.HandlerInterface=Pa;var ka={},Da={},Ia=Yi&&Yi.__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]}),Ea=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Oa=Yi&&Yi.__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)&&Ia(t,e,r);return Ea(t,e),t};Object.defineProperty(Da,"__esModule",{value:!0}),Da.OfferMediaSection=Da.AnswerMediaSection=Da.MediaSection=void 0;const xa=Oa(ra),Ma=Oa(Ts);class ja{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}}Da.MediaSection=ja;Da.AnswerMediaSection=class extends ja{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:La(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=Ma.clone(e.parameters)??{};let i=Ma.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=xa.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 La(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}Da.OfferMediaSection=class extends ja{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:La(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:La(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 Aa=Yi&&Yi.__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]}),Na=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ba=Yi&&Yi.__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)&&Aa(t,e,r);return Na(t,e),t};Object.defineProperty(ka,"__esModule",{value:!0}),ka.RemoteSdp=void 0;const Fa=Ba(ra),$a=Da,Va=new hs.Logger("RemoteSdp");ka.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){Va.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){Va.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 $a.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 $a.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?(Va.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 $a.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 $a.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++,Fa.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 za={};Object.defineProperty(za,"__esModule",{value:!0}),za.parse=void 0;const Ua=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");za.parse=function(e){const t=Ua.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var qa=Yi&&Yi.__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]}),Ga=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Wa=Yi&&Yi.__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)&&qa(t,e,r);return Ga(t,e),t};Object.defineProperty(ta,"__esModule",{value:!0});var Ha=ta.Chrome111=void 0;const Ka=Wa(ra),Ja=hs,Qa=Wa(Ts),Za=Wa(Ps),Ya=Wa(va),Xa=Wa(Sa),eo=Wa(Ca),to=Ss,ro=Ra,io=ka,so=za,no=new Ja.Logger("Chrome111"),ao={OS:1024,MIS:1024};class oo extends ro.HandlerInterface{static createFactory(){return()=>new oo}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(no.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){no.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=Ka.parse(t.sdp),i=Ya.extractRtpCapabilities({sdpObject:r});return eo.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return no.debug("getNativeSctpCapabilities()"),{numStreams:ao}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),no.debug("run()"),this._direction=e,this._remoteSdp=new io.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Za.getSendingRtpParameters("audio",d),video:Za.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Za.getSendingRemoteRtpParameters("audio",d),video:Za.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)})):(no.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(),no.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),no.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});no.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();no.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}){if(this.assertNotClosed(),this.assertSendDirection(),no.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){t.forEach(((e,t)=>{e.rid=`r${t}`}));let e=1,r=1;for(const e of t){const t=e.scalabilityMode?(0,so.parse)(e.scalabilityMode).temporalLayers:3;t>r&&(r=t)}for(const i of t)i.rid="r"+e++,i.scalabilityMode=`L1T${r}`}const s=Qa.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Za.reduceCodecs(s.codecs,i);const n=Qa.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=Za.reduceCodecs(n.codecs,i);const a=this._remoteSdp.getNextMediaSectionIdx(),o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),c=await this._pc.createOffer();let d=Ka.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:d}),no.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const l=o.mid;s.mid=l,d=Ka.parse(this._pc.localDescription.sdp);const p=d.media[a.idx];if(s.rtcp.cname=Ya.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Xa.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),s.encodings=e}else s.encodings=t;else s.encodings=Xa.getRtpEncodings({offerMediaObject:p});this._remoteSdp.send({offerMediaObject:p,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r,extmapAllowMixed:!0});const u={type:"answer",sdp:this._remoteSdp.getSdp()};return no.debug("send() | calling pc.setRemoteDescription() [answer:%o]",u),await this._pc.setRemoteDescription(u),this._mapMidTransceiver.set(l,o),{localId:l,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),no.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();no.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),no.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();no.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),no.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();no.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?no.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):no.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(),no.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();no.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),no.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();no.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};no.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};no.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ao.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ka.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),no.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()};no.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;no.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()};no.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Ka.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));Ya.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:Ka.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),no.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){no.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()};no.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();no.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){no.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()};no.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();no.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){no.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()};no.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();no.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};no.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()};no.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ka.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}no.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=Ka.parse(this._pc.localDescription.sdp));const r=Ya.extractIceParameters({sdpObject:t}),i=Ya.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new to.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')}}Ha=ta.Chrome111=oo;var co={},lo=Yi&&Yi.__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]}),po=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),uo=Yi&&Yi.__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)&&lo(t,e,r);return po(t,e),t};Object.defineProperty(co,"__esModule",{value:!0}),co.Chrome74=void 0;const ho=uo(ra),mo=hs,fo=uo(Ts),go=uo(Ps),vo=uo(va),_o=uo(Sa),bo=uo(Ca),yo=Ss,wo=Ra,So=ka,Co=za,Ro=new mo.Logger("Chrome74"),To={OS:1024,MIS:1024};class Po extends wo.HandlerInterface{static createFactory(){return()=>new Po}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(Ro.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Ro.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=ho.parse(t.sdp),i=vo.extractRtpCapabilities({sdpObject:r});return bo.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ro.debug("getNativeSctpCapabilities()"),{numStreams:To}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ro.debug("run()"),this._direction=e,this._remoteSdp=new So.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:go.getSendingRtpParameters("audio",d),video:go.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:go.getSendingRemoteRtpParameters("audio",d),video:go.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)})):(Ro.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(),Ro.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Ro.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ro.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ro.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ro.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ro.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(),Ro.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=fo.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=go.reduceCodecs(s.codecs,i);const n=fo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=go.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=ho.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,Co.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Ro.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=ho.parse(d.sdp),c=l.media[a.idx],_o.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:ho.write(l)}),Ro.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=o.mid;if(s.mid=h,l=ho.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=vo.getCname({offerMediaObject:c}),t)if(1===t.length){let e=_o.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),s.encodings=e}else s.encodings=t;else s.encodings=_o.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 Ro.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(),Ro.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();Ro.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ro.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Ro.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();Ro.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ro.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Ro.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();Ro.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ro.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Ro.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Ro.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(),Ro.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();Ro.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Ro.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Ro.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();Ro.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Ro.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};Ro.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%To.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ho.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Ro.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()};Ro.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;Ro.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()};Ro.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=ho.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));vo.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:ho.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Ro.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){Ro.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()};Ro.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ro.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){Ro.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()};Ro.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ro.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){Ro.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()};Ro.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ro.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};Ro.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()};Ro.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ho.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Ro.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=ho.parse(this._pc.localDescription.sdp));const r=vo.extractIceParameters({sdpObject:t}),i=vo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new yo.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')}}co.Chrome74=Po;var ko={},Do=Yi&&Yi.__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]}),Io=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Eo=Yi&&Yi.__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)&&Do(t,e,r);return Io(t,e),t};Object.defineProperty(ko,"__esModule",{value:!0}),ko.Chrome70=void 0;const Oo=Eo(ra),xo=hs,Mo=Eo(Ts),jo=Eo(Ps),Lo=Eo(va),Ao=Eo(Sa),No=Ra,Bo=ka,Fo=za,$o=new xo.Logger("Chrome70"),Vo={OS:1024,MIS:1024};class zo extends No.HandlerInterface{static createFactory(){return()=>new zo}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($o.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){$o.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=Oo.parse(t.sdp);return Lo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return $o.debug("getNativeSctpCapabilities()"),{numStreams:Vo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){$o.debug("run()"),this._direction=e,this._remoteSdp=new Bo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:jo.getSendingRtpParameters("audio",d),video:jo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:jo.getSendingRemoteRtpParameters("audio",d),video:jo.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($o.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){$o.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if($o.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});$o.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};$o.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};$o.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();$o.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(),$o.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=Mo.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=jo.reduceCodecs(s.codecs,i);const n=Mo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=jo.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=Oo.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&($o.debug("send() | enabling legacy simulcast"),l=Oo.parse(d.sdp),c=l.media[a.idx],Ao.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:Oo.write(l)});let p=!1;const u=(0,Fo.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&($o.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Oo.parse(d.sdp),c=l.media[a.idx],Ao.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Oo.write(l)}),$o.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){$o.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=Oo.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=Lo.getCname({offerMediaObject:c}),s.encodings=Ao.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 $o.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(),$o.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();$o.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};$o.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?$o.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):$o.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(),$o.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();$o.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};$o.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),$o.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();$o.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};$o.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};$o.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Vo.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Oo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),$o.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()};$o.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;$o.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()};$o.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Oo.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));Lo.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:Oo.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),$o.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){$o.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()};$o.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();$o.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};$o.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()};$o.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Oo.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}$o.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=Oo.parse(this._pc.localDescription.sdp));const r=Lo.extractIceParameters({sdpObject:t}),i=Lo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},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')}}ko.Chrome70=zo;var Uo={},qo={};Object.defineProperty(qo,"__esModule",{value:!0}),qo.addLegacySimulcast=qo.getRtpEncodings=void 0,qo.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},qo.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 Go=Yi&&Yi.__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]}),Wo=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ho=Yi&&Yi.__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)&&Go(t,e,r);return Wo(t,e),t};Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.Chrome67=void 0;const Ko=Ho(ra),Jo=hs,Qo=Ho(Ts),Zo=Ho(Ps),Yo=Ho(va),Xo=Ho(qo),ec=Ra,tc=ka,rc=new Jo.Logger("Chrome67"),ic={OS:1024,MIS:1024};class sc extends ec.HandlerInterface{static createFactory(){return()=>new sc}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(rc.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){rc.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=Ko.parse(t.sdp);return Yo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return rc.debug("getNativeSctpCapabilities()"),{numStreams:ic}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){rc.debug("run()"),this._direction=e,this._remoteSdp=new tc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:Zo.getSendingRtpParameters("audio",d),video:Zo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Zo.getSendingRemoteRtpParameters("audio",d),video:Zo.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(rc.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){rc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(rc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});rc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};rc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};rc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();rc.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(),rc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&rc.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=Ko.parse(n.sdp);const o=Qo.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=Zo.reduceCodecs(o.codecs);const c=Qo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Zo.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(rc.debug("send() | enabling simulcast"),a=Ko.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),Xo.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:Ko.write(a)}),rc.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=Ko.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=Yo.getCname({offerMediaObject:s}),o.encodings=Xo.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()};rc.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(),rc.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();rc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void rc.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()};rc.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?rc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):rc.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(),rc.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(),rc.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};rc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ic.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ko.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),rc.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()};rc.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;rc.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()};rc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=Ko.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));Yo.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:Ko.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),rc.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){rc.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()};rc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();rc.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};rc.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()};rc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ko.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}rc.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=Ko.parse(this._pc.localDescription.sdp));const r=Yo.extractIceParameters({sdpObject:t}),i=Yo.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},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')}}Uo.Chrome67=sc;var nc={},ac=Yi&&Yi.__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]}),oc=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cc=Yi&&Yi.__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)&&ac(t,e,r);return oc(t,e),t};Object.defineProperty(nc,"__esModule",{value:!0}),nc.Chrome55=void 0;const dc=cc(ra),lc=hs,pc=Ss,uc=cc(Ts),hc=cc(Ps),mc=cc(va),fc=cc(qo),gc=Ra,vc=ka,_c=new lc.Logger("Chrome55"),bc={OS:1024,MIS:1024};class yc extends gc.HandlerInterface{static createFactory(){return()=>new yc}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(_c.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){_c.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=dc.parse(t.sdp);return mc.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return _c.debug("getNativeSctpCapabilities()"),{numStreams:bc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){_c.debug("run()"),this._direction=e,this._remoteSdp=new vc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:hc.getSendingRtpParameters("audio",d),video:hc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:hc.getSendingRemoteRtpParameters("audio",d),video:hc.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(_c.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){_c.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(_c.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});_c.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};_c.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};_c.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();_c.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(),_c.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&_c.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=dc.parse(n.sdp);const o=uc.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=hc.reduceCodecs(o.codecs);const c=uc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=hc.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(_c.debug("send() | enabling simulcast"),a=dc.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),fc.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:dc.write(a)}),_c.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=dc.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=mc.getCname({offerMediaObject:s}),o.encodings=fc.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()};_c.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(),_c.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();_c.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void _c.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()};_c.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 pc.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new pc.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new pc.UnsupportedError("not supported")}async getSenderStats(e){throw new pc.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};_c.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%bc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=dc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),_c.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()};_c.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;_c.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()};_c.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=dc.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));mc.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:dc.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),_c.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){_c.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()};_c.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();_c.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new pc.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};_c.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()};_c.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=dc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}_c.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=dc.parse(this._pc.localDescription.sdp));const r=mc.extractIceParameters({sdpObject:t}),i=mc.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},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')}}nc.Chrome55=yc;var wc={},Sc=Yi&&Yi.__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]}),Cc=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Rc=Yi&&Yi.__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)&&Sc(t,e,r);return Cc(t,e),t};Object.defineProperty(wc,"__esModule",{value:!0}),wc.Firefox60=void 0;const Tc=Rc(ra),Pc=hs,kc=Ss,Dc=Rc(Ts),Ic=Rc(Ps),Ec=Rc(va),Oc=Rc(Sa),xc=Ra,Mc=ka,jc=za,Lc=new Pc.Logger("Firefox60"),Ac={OS:16,MIS:2048};class Nc extends xc.HandlerInterface{static createFactory(){return()=>new Nc}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(Lc.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Lc.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=Tc.parse(a.sdp);return Ec.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 Lc.debug("getNativeSctpCapabilities()"),{numStreams:Ac}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Lc.debug("run()"),this._direction=e,this._remoteSdp=new Mc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Ic.getSendingRtpParameters("audio",d),video:Ic.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ic.getSendingRemoteRtpParameters("audio",d),video:Ic.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(Lc.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 kc.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),Lc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Lc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Lc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Lc.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(),Lc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=Dc.clone(t)).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const s=Dc.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Ic.reduceCodecs(s.codecs,i);const n=Dc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=Ic.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=Tc.parse(o.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,jc.parse)((t||[{}])[0].scalabilityMode);Lc.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const l=a.mid;s.mid=l,c=Tc.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(s.rtcp.cname=Ec.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Oc.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),s.encodings=e}else s.encodings=t.reverse();else s.encodings=Oc.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 Lc.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(),Lc.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();Lc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Lc.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();Lc.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Lc.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();Lc.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Lc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Lc.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(),Lc.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();Lc.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Lc.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();Lc.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Lc.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};Lc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ac.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Tc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),Lc.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()};Lc.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;Lc.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()};Lc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Tc.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));Ec.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),s={type:"answer",sdp:Tc.write(n)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:n}),Lc.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){Lc.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()};Lc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Lc.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){Lc.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()};Lc.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Lc.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){Lc.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()};Lc.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Lc.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};Lc.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()};Lc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Tc.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}Lc.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=Tc.parse(this._pc.localDescription.sdp));const r=Ec.extractIceParameters({sdpObject:t}),i=Ec.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},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')}}wc.Firefox60=Nc;var Bc={},Fc=Yi&&Yi.__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]}),$c=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Vc=Yi&&Yi.__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)&&Fc(t,e,r);return $c(t,e),t};Object.defineProperty(Bc,"__esModule",{value:!0}),Bc.Safari12=void 0;const zc=Vc(ra),Uc=hs,qc=Vc(Ts),Gc=Vc(Ps),Wc=Vc(va),Hc=Vc(Sa),Kc=Vc(Ca),Jc=Ss,Qc=Ra,Zc=ka,Yc=za,Xc=new Uc.Logger("Safari12"),ed={OS:1024,MIS:1024};class td extends Qc.HandlerInterface{static createFactory(){return()=>new td}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(Xc.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Xc.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=zc.parse(t.sdp),i=Wc.extractRtpCapabilities({sdpObject:r});return Kc.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Xc.debug("getNativeSctpCapabilities()"),{numStreams:ed}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Xc.debug("run()"),this._direction=e,this._remoteSdp=new Zc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Gc.getSendingRtpParameters("audio",d),video:Gc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Gc.getSendingRemoteRtpParameters("audio",d),video:Gc.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(Xc.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(),Xc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Xc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Xc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Xc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Xc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Xc.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(),Xc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=qc.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Gc.reduceCodecs(s.codecs,i);const n=qc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=Gc.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=zc.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});const p=(0,Yc.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(Xc.debug("send() | enabling legacy simulcast"),l=zc.parse(d.sdp),c=l.media[a.idx],Hc.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:zc.write(l)}),Xc.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const u=o.mid;if(s.mid=u,l=zc.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=Wc.getCname({offerMediaObject:c}),s.encodings=Hc.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<s.encodings.length;++e)t[e]&&Object.assign(s.encodings[e],t[e]);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${p.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:a.reuseMid,offerRtpParameters:s,answerRtpParameters:n,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return Xc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,o),{localId:u,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Xc.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();Xc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Xc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Xc.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();Xc.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Xc.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Xc.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();Xc.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Xc.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Xc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Xc.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(),Xc.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();Xc.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Xc.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Xc.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();Xc.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Xc.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};Xc.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ed.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=zc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Xc.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()};Xc.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;Xc.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()};Xc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=zc.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));Wc.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:zc.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Xc.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){Xc.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()};Xc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xc.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){Xc.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()};Xc.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xc.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){Xc.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()};Xc.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xc.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};Xc.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()};Xc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=zc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Xc.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=zc.parse(this._pc.localDescription.sdp));const r=Wc.extractIceParameters({sdpObject:t}),i=Wc.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Jc.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')}}Bc.Safari12=td;var rd={},id=Yi&&Yi.__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]}),sd=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),nd=Yi&&Yi.__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)&&id(t,e,r);return sd(t,e),t};Object.defineProperty(rd,"__esModule",{value:!0}),rd.Safari11=void 0;const ad=nd(ra),od=hs,cd=nd(Ts),dd=nd(Ps),ld=nd(va),pd=nd(qo),ud=Ra,hd=ka,md=new od.Logger("Safari11"),fd={OS:1024,MIS:1024};class gd extends ud.HandlerInterface{static createFactory(){return()=>new gd}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(md.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){md.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=ad.parse(t.sdp);return ld.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return md.debug("getNativeSctpCapabilities()"),{numStreams:fd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){md.debug("run()"),this._direction=e,this._remoteSdp=new hd.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:dd.getSendingRtpParameters("audio",d),video:dd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:dd.getSendingRemoteRtpParameters("audio",d),video:dd.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(md.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){md.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(md.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});md.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};md.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};md.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();md.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(),md.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&md.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=ad.parse(n.sdp);const o=cd.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=dd.reduceCodecs(o.codecs);const c=cd.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=dd.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(md.debug("send() | enabling simulcast"),a=ad.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),pd.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:ad.write(a)}),md.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=ad.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=ld.getCname({offerMediaObject:s}),o.encodings=pd.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()};md.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();md.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void md.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()};md.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?md.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):md.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(),md.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(),md.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};md.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%fd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ad.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),md.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()};md.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;md.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()};md.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let i=await this._pc.createAnswer();const s=ad.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));ld.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}i={type:"answer",sdp:ad.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),md.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){md.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()};md.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();md.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};md.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()};md.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ad.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}md.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=ad.parse(this._pc.localDescription.sdp));const r=ld.extractIceParameters({sdpObject:t}),i=ld.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},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')}}rd.Safari11=gd;var vd={},_d={},bd=Yi&&Yi.__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]}),yd=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),wd=Yi&&Yi.__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)&&bd(t,e,r);return yd(t,e),t};Object.defineProperty(_d,"__esModule",{value:!0}),_d.mangleRtpParameters=_d.getCapabilities=void 0;const Sd=wd(Ts);_d.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=Sd.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},_d.mangleRtpParameters=function(e){const t=Sd.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};var Cd=Yi&&Yi.__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]}),Rd=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Td=Yi&&Yi.__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)&&Cd(t,e,r);return Rd(t,e),t};Object.defineProperty(vd,"__esModule",{value:!0}),vd.Edge11=void 0;const Pd=hs,kd=Ss,Dd=Td(Ts),Id=Td(Ps),Ed=Td(_d),Od=Ra,xd=new Pd.Logger("Edge11");class Md extends Od.HandlerInterface{static createFactory(){return()=>new Md}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){xd.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 xd.debug("getNativeRtpCapabilities()"),Ed.getCapabilities()}async getNativeSctpCapabilities(){return xd.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}){xd.debug("run()"),this._sendingRtpParametersByKind={audio:Id.getSendingRtpParameters("audio",d),video:Id.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${Dd.generateRandomNumber()}`,this.setIceGatherer({iceServers:n,iceTransportPolicy:a}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new kd.UnsupportedError("not supported")}async restartIce(e){if(xd.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){xd.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}){xd.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),xd.debug("send() | calling new RTCRtpSender()");const s=new RTCRtpSender(e,this._dtlsTransport),n=Dd.clone(this._sendingRtpParametersByKind[e.kind]);n.codecs=Id.reduceCodecs(n.codecs,i);const a=n.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=Dd.generateRandomNumber(),a&&(e.rtx={ssrc:Dd.generateRandomNumber()});n.encodings=t,n.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=Ed.mangleRtpParameters(n);xd.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){xd.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{xd.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw xd.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?xd.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):xd.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){xd.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){xd.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 kd.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;xd.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;xd.debug("receive() | calling new RTCRtpReceiver()");const n=new RTCRtpReceiver(this._dtlsTransport,i);n.addEventListener("error",(e=>{xd.error('rtpReceiver "error" event [event:%o]',e)}));const a=Ed.mangleRtpParameters(s);xd.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){xd.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{xd.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){xd.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 kd.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{xd.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){xd.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=>{xd.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{xd.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{xd.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{xd.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){xd.debug("setupTransport()");const t=this._iceGatherer.getLocalParameters(),r=this._dtlsTransport.getLocalParameters();r.role=e,await new Promise(((e,i)=>{this.safeEmit("@connect",{iceParameters:t,dtlsParameters:r},e,i)})),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}}vd.Edge11=Md;var jd={},Ld=Yi&&Yi.__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]}),Ad=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Nd=Yi&&Yi.__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)&&Ld(t,e,r);return Ad(t,e),t};Object.defineProperty(jd,"__esModule",{value:!0}),jd.ReactNativeUnifiedPlan=void 0;const Bd=Nd(ra),Fd=hs,$d=Nd(Ts),Vd=Nd(Ps),zd=Nd(va),Ud=Nd(Sa),qd=Nd(Ca),Gd=Ss,Wd=Ra,Hd=ka,Kd=za,Jd=new Fd.Logger("ReactNativeUnifiedPlan"),Qd={OS:1024,MIS:1024};class Zd extends Wd.HandlerInterface{static createFactory(){return()=>new Zd}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(Jd.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(){Jd.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=Bd.parse(t.sdp),i=zd.extractRtpCapabilities({sdpObject:r});return qd.addNackSuppportForOpus(i),i}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Jd.debug("getNativeSctpCapabilities()"),{numStreams:Qd}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,iceServers:n,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Jd.debug("run()"),this._direction=e,this._remoteSdp=new Hd.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s}),this._sendingRtpParametersByKind={audio:Vd.getSendingRtpParameters("audio",d),video:Vd.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Vd.getSendingRemoteRtpParameters("audio",d),video:Vd.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(Jd.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(),Jd.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Jd.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Jd.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Jd.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Jd.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Jd.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(),Jd.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=$d.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Vd.reduceCodecs(s.codecs,i);const n=$d.clone(this._sendingRemoteRtpParametersByKind[e.kind]);n.codecs=Vd.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=Bd.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let p=!1;const u=(0,Kd.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&u.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Jd.debug("send() | enabling legacy simulcast for VP9 SVC"),p=!0,l=Bd.parse(d.sdp),c=l.media[a.idx],Ud.addLegacySimulcast({offerMediaObject:c,numStreams:u.spatialLayers}),d={type:"offer",sdp:Bd.write(l)}),Jd.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);let h=o.mid??void 0;if(h||Jd.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),s.mid=h,l=Bd.parse(this._pc.localDescription.sdp),c=l.media[a.idx],s.rtcp.cname=zd.getCname({offerMediaObject:c}),t)if(1===t.length){let e=Ud.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),p&&(e=[e[0]]),s.encodings=e}else s.encodings=t;else s.encodings=Ud.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 Jd.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),h||(h=o.mid,s.mid=h),this._mapMidTransceiver.set(h,o),{localId:h,rtpParameters:s,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;Jd.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();Jd.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Jd.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Jd.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();Jd.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Jd.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Jd.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();Jd.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Jd.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Jd.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Jd.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(),Jd.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();Jd.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Jd.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Jd.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();Jd.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Jd.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};Jd.debug("sendDataChannel() [options:%o]",n);const a=this._pc.createDataChannel(i,n);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Qd.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Bd.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Jd.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()};Jd.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;Jd.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()};Jd.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=Bd.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));zd.applyCodecParameters({offerRtpParameters:i,answerMediaObject:a})}s={type:"answer",sdp:Bd.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),Jd.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){Jd.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()};Jd.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Jd.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){Jd.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()};Jd.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Jd.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){Jd.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()};Jd.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Jd.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};Jd.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()};Jd.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Bd.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Jd.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=Bd.parse(this._pc.localDescription.sdp));const r=zd.extractIceParameters({sdpObject:t}),i=zd.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Gd.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')}}jd.ReactNativeUnifiedPlan=Zd;var Yd={},Xd=Yi&&Yi.__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]}),el=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),tl=Yi&&Yi.__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)&&Xd(t,e,r);return el(t,e),t};Object.defineProperty(Yd,"__esModule",{value:!0}),Yd.ReactNative=void 0;const rl=tl(ra),il=hs,sl=Ss,nl=tl(Ts),al=tl(Ps),ol=tl(va),cl=tl(qo),dl=Ra,ll=ka,pl=new il.Logger("ReactNative"),ul={OS:1024,MIS:1024};class hl extends dl.HandlerInterface{static createFactory(){return()=>new hl}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(pl.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){pl.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=rl.parse(t.sdp);return ol.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return pl.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}){pl.debug("run()"),this._direction=e,this._remoteSdp=new ll.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:s,planB:!0}),this._sendingRtpParametersByKind={audio:al.getSendingRtpParameters("audio",d),video:al.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:al.getSendingRemoteRtpParameters("audio",d),video:al.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(pl.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){pl.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(pl.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});pl.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};pl.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};pl.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();pl.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(),pl.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&pl.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=rl.parse(n.sdp);const o=nl.clone(this._sendingRtpParametersByKind[e.kind]);o.codecs=al.reduceCodecs(o.codecs);const c=nl.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=al.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:a}),"video"===e.kind&&t&&t.length>1&&(pl.debug("send() | enabling simulcast"),a=rl.parse(n.sdp),s=a.media.find((e=>"video"===e.type)),cl.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),n={type:"offer",sdp:rl.write(a)}),pl.debug("send() | calling pc.setLocalDescription() [offer:%o]",n),await this._pc.setLocalDescription(n),a=rl.parse(this._pc.localDescription.sdp),s=a.media.find((t=>t.type===e.kind)),o.rtcp.cname=ol.getCname({offerMediaObject:s}),o.encodings=cl.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()};pl.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(),pl.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();pl.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void pl.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()};pl.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 sl.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new sl.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new sl.UnsupportedError("not implemented")}async getSenderStats(e){throw new sl.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};pl.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=rl.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),pl.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()};pl.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;pl.debug("receive() [trackId:%s, kind:%s]",e,i);const n=i;let a=t.streamId||s.rtcp.cname;pl.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${nl.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()};pl.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const n=rl.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));ol.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:rl.write(n)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:n}),pl.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){pl.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()};pl.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();pl.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new sl.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};pl.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()};pl.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=rl.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}pl.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=rl.parse(this._pc.localDescription.sdp));const r=ol.extractIceParameters({sdpObject:t}),i=ol.extractDtlsParameters({sdpObject:t});i.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:i},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')}}Yd.ReactNative=hl;var ml=Yi&&Yi.__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]}),fl=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),gl=Yi&&Yi.__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)&&ml(t,e,r);return fl(t,e),t};Object.defineProperty(ls,"__esModule",{value:!0}),ls.Device=ls.detectDevice=void 0;const vl=us,_l=hs,bl=vs,yl=Ss,wl=gl(Ts),Sl=gl(Ps),Cl=cn,Rl=ta,Tl=co,Pl=ko,kl=Uo,Dl=nc,Il=wc,El=Bc,Ol=rd,xl=vd,Ml=jd,jl=Yd,Ll=new _l.Logger("Device");function Al(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return Ll.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void Ll.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(Ll.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(Ll.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)Ll.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new vl.UAParser(e);Ll.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>=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"}Ll.warn("detectDevice() | browser not supported [name:%s, version:%s]",i,s)}}ls.detectDevice=Al;ls.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new bl.EnhancedEventEmitter,Ll.debug("constructor()"),r){if(Ll.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)Ll.debug("constructor() | handler given: %s",e);else{if(!(e=Al()))throw new yl.UnsupportedError("device not supported");Ll.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=Rl.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=Tl.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=Pl.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=kl.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=Dl.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=Il.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=El.Safari12.createFactory();break;case"Safari11":this._handlerFactory=Ol.Safari11.createFactory();break;case"Edge11":this._handlerFactory=xl.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=Ml.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=jl.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 yl.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new yl.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;Ll.debug("load() [routerRtpCapabilities:%o]",e),e=wl.clone(e);try{if(this._loaded)throw new yl.InvalidStateError("already loaded");Sl.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();Ll.debug("load() | got native RTP capabilities:%o",r),Sl.validateRtpCapabilities(r),this._extendedRtpCapabilities=Sl.getExtendedRtpCapabilities(r,e),Ll.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=Sl.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=Sl.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=Sl.getRecvRtpCapabilities(this._extendedRtpCapabilities),Sl.validateRtpCapabilities(this._recvRtpCapabilities),Ll.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),Ll.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),Sl.validateSctpCapabilities(this._sctpCapabilities),Ll.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new yl.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 Ll.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 Ll.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 yl.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 Cl.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 Nl={},Bl={};Object.defineProperty(Bl,"__esModule",{value:!0});var Fl={};Object.defineProperty(Fl,"__esModule",{value:!0}),function(e){var t=Yi&&Yi.__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=Yi&&Yi.__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(ls,e),r(cn,e),r(_n,e),r(Cn,e),r(Dn,e),r(Mn,e),r(Bl,e),r(Fl,e),r(Ra,e),r(Ss,e)}(Nl),function(e){var t=Yi&&Yi.__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=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Yi&&Yi.__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=Yi&&Yi.__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(ds);e.debug=n.default;const a=ls;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(Nl);e.types=o,e.version="3.7.3";var c=za;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(is);let $l=!0,Vl=!0;function zl(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function Ul(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 ql(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):($l=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function Gl(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(Vl=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function Wl(){if("object"==typeof window){if($l)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function Hl(e,t){Vl&&console.warn(e+" is deprecated, please use "+t+" instead.")}function Kl(e){return"[object Object]"===Object.prototype.toString.call(e)}function Jl(e){return Kl(e)?Object.keys(e).reduce((function(t,r){const i=Kl(e[r]),s=i?Jl(e[r]):e[r],n=i&&!Object.keys(s).length;return void 0===s||n?t:Object.assign(t,{[r]:s})}),{}):e}function Ql(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?Ql(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{Ql(e,e.get(t),r)}))})))}function Zl(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&&Ql(e,r,s)}))})),s}const Yl=Wl;function Xl(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),Yl("chrome: "+JSON.stringify(e)),s(e)}))}e.video=i(e.video)}return Yl("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 ep(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function tp(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 Ul(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function rp(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 ip(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 sp(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=>Zl(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}),Ul(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>Zl(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 np(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 ap(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return np(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 op(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 cp(e,t){Ul(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var dp=Object.freeze({__proto__:null,fixNegotiationNeeded:cp,shimAddTrackRemoveTrack:ap,shimAddTrackRemoveTrackWithNative:np,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:rp,shimGetStats:ip,shimGetUserMedia:Xl,shimMediaStream:ep,shimOnTrack:tp,shimPeerConnection:op,shimSenderReceiverGetStats:sp});function lp(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){Hl("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 pp(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 up(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 hp(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 mp(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}),Ul(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function fp(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){Hl("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function gp(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function vp(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 _p(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 bp(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 yp(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 wp=Object.freeze({__proto__:null,shimAddTransceiver:vp,shimCreateAnswer:yp,shimCreateOffer:bp,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:_p,shimGetUserMedia:lp,shimOnTrack:pp,shimPeerConnection:up,shimRTCDataChannel:gp,shimReceiverGetStats:mp,shimRemoveStream:fp,shimSenderGetStats:hp});function Sp(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 Cp(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 Rp(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 Tp(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(Pp(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function Pp(e){return e&&void 0!==e.video?Object.assign({},e,{video:Jl(e.video)}):e}function kp(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?(Hl("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 Dp(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 Ip(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 Ep(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var Op=Object.freeze({__proto__:null,shimAudioContext:Ep,shimCallbacksAPI:Rp,shimConstraints:Pp,shimCreateOfferLegacy:Ip,shimGetUserMedia:Tp,shimLocalStreamsAPI:Sp,shimRTCIceServerUrls:kp,shimRemoteStreamsAPI:Cp,shimTrackEventTransceiver:Dp}),xp={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}(xp);var Mp=xp.exports,jp=Xi(Mp),Lp=e({__proto__:null,default:jp},[Mp]);function Ap(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=jp.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,Ul(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function Np(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||Ul(e,"icecandidate",(e=>{if(e.candidate){const t=jp.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function Bp(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=jp.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=jp.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=jp.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 Fp(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},Ul(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function $p(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 Vp(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 zp(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 Up(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 qp=Object.freeze({__proto__:null,removeExtmapAllowMixed:Vp,shimAddIceCandidateNullOrEmpty:zp,shimConnectionState:$p,shimMaxMessageSize:Bp,shimParameterlessSetLocalDescription:Up,shimRTCIceCandidate:Ap,shimRTCIceCandidateRelayProtocol:Np,shimSendThrowTypeError:Fp});const Gp=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=Wl,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=zl(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=zl(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=zl(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),s={browserDetails:i,commonShim:qp,extractVersion:zl,disableLog:ql,disableWarnings:Gl,sdp:Lp};switch(i.browser){case"chrome":if(!dp||!op||!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=dp,zp(e,i),Up(e),Xl(e,i),ep(e),op(e,i),tp(e),ap(e,i),rp(e),ip(e),sp(e),cp(e,i),Ap(e),Np(e),$p(e),Bp(e,i),Fp(e),Vp(e,i);break;case"firefox":if(!wp||!up||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),s;r("adapter.js shimming firefox."),s.browserShim=wp,zp(e,i),Up(e),lp(e,i),up(e,i),pp(e),fp(e),hp(e),mp(e),gp(e),vp(e),_p(e),bp(e),yp(e),Ap(e),$p(e),Bp(e,i),Fp(e);break;case"safari":if(!Op||!t.shimSafari)return r("Safari shim is not included in this adapter release."),s;r("adapter.js shimming safari."),s.browserShim=Op,zp(e,i),Up(e),kp(e),Ip(e),Rp(e),Sp(e),Cp(e),Dp(e),Tp(e),Ep(e),Ap(e),Np(e),Bp(e,i),Fp(e),Vp(e,i);break;default:r("Unsupported browser!")}return s}({window:"undefined"==typeof window?void 0:window});function Wp(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 Hp=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,Wp(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,Wp(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,Wp(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){a={}}}},Kp=Xi(Hp);let Jp;const Qp=new Uint8Array(16);function Zp(){if(!Jp&&(Jp="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Jp))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Jp(Qp)}const Yp=[];for(let gy=0;gy<256;++gy)Yp.push((gy+256).toString(16).slice(1));var Xp={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function eu(e,t,r){if(Xp.randomUUID&&!t&&!e)return Xp.randomUUID();const i=(e=e||{}).random||(e.rng||Zp)();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 Yp[e[t+0]]+Yp[e[t+1]]+Yp[e[t+2]]+Yp[e[t+3]]+"-"+Yp[e[t+4]]+Yp[e[t+5]]+"-"+Yp[e[t+6]]+Yp[e[t+7]]+"-"+Yp[e[t+8]]+Yp[e[t+9]]+"-"+Yp[e[t+10]]+Yp[e[t+11]]+Yp[e[t+12]]+Yp[e[t+13]]+Yp[e[t+14]]+Yp[e[t+15]]}(i)}var tu={},ru={},iu={};Object.defineProperty(iu,"__esModule",{value:!0}),iu.isCorrect=iu.isInSubnet=void 0,iu.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},iu.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var su={};Object.defineProperty(su,"__esModule",{value:!0}),su.RE_SUBNET_STRING=su.RE_ADDRESS=su.GROUPS=su.BITS=void 0,su.BITS=32,su.GROUPS=4,su.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,su.RE_SUBNET_STRING=/\/\d{1,2}$/;var nu={};Object.defineProperty(nu,"__esModule",{value:!0}),nu.AddressError=void 0;class au extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}nu.AddressError=au;var ou={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 w(){}function S(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 w=s[--_]==h?this.DM:Math.floor(s[_]*f+(s[_-1]+v)*g);if((s[_]+=o.am(0,w,s,b,0,p))<w)for(o.dlShiftTo(b,y),s.subTo(y,s);s[_]<--w;)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),w.prototype.convert=S,w.prototype.revert=S,w.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},w.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,P,k=[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)/k[k.length-1];function I(){var e;e=(new Date).getTime(),T[P++]^=255&e,T[P++]^=e>>8&255,T[P++]^=e>>16&255,T[P++]^=e>>24&255,P>=A&&(P-=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)>k.length&&(e=k.length);for(var a=i(),o=0;o<e;++o){a.fromInt(k[Math.floor(Math.random()*k.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 w)},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]<=k[k.length-1]){for(t=0;t<k.length;++t)if(r[0]==k[t])return!0;return!1}if(r.isEven())return!1;for(t=1;t<k.length;){for(var i=k[t],s=t+1;s<k.length&&i<D;)i*=k[s++];for(i=r.modInt(i);t<s;)if(i%k[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,P=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[P++]=O[E]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var x=window.crypto.random(32);for(E=0;E<x.length;++E)T[P++]=255&x.charCodeAt(E)}for(;P<A;)E=Math.floor(65536*Math.random()),T[P++]=E>>>8,T[P++]=255&E;P=0,I()}function M(){if(null==R){for(I(),(R=new L).init(T),P=0;P<T.length;++P)T[P]=0;P=0}return R.next()}function j(){}function L(){this.i=0,this.j=0,this.S=new Array}j.prototype.nextBytes=function(e){var t;for(t=0;t<e.length;++t)e[t]=M()},L.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},L.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:j}}).call(Yi)}(ou);var cu=ou.exports,du={};!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)}()}(du);var lu=Yi&&Yi.__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]}),pu=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),uu=Yi&&Yi.__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)&&lu(t,e,r);return pu(t,e),t};Object.defineProperty(ru,"__esModule",{value:!0}),ru.Address4=void 0;const hu=uu(iu),mu=uu(su),fu=nu,gu=cu,vu=du;class _u{constructor(e){this.groups=mu.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=hu.isCorrect(mu.BITS),this.isInSubnet=hu.isInSubnet,this.address=e;const t=mu.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>mu.BITS)throw new fu.AddressError("Invalid subnet mask.");e=e.replace(mu.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new _u(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(mu.RE_ADDRESS))throw new fu.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 _u(r.join("."))}static fromInteger(e){return _u.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new _u(t)}toHex(){return this.parsedAddress.map((e=>(0,vu.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<mu.GROUPS;t+=2){const r=(0,vu.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,vu.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new gu.BigInteger(this.parsedAddress.map((e=>(0,vu.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new gu.BigInteger(this.mask()+"0".repeat(mu.BITS-this.subnetMask),2)}startAddress(){return _u.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new gu.BigInteger("1");return _u.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new gu.BigInteger(this.mask()+"1".repeat(mu.BITS-this.subnetMask),2)}endAddress(){return _u.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new gu.BigInteger("1");return _u.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return _u.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,vu.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new _u("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(mu.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(mu.RE_ADDRESS,(0,vu.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(".")))}}ru.Address4=_u;var bu={},yu={};Object.defineProperty(yu,"__esModule",{value:!0}),yu.RE_URL_WITH_PORT=yu.RE_URL=yu.RE_ZONE_STRING=yu.RE_SUBNET_STRING=yu.RE_BAD_ADDRESS=yu.RE_BAD_CHARACTERS=yu.TYPES=yu.SCOPES=yu.GROUPS=yu.BITS=void 0,yu.BITS=128,yu.GROUPS=8,yu.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},yu.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"},yu.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,yu.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,yu.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,yu.RE_ZONE_STRING=/%.*$/,yu.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),yu.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var wu={};Object.defineProperty(wu,"__esModule",{value:!0}),wu.simpleGroup=wu.spanLeadingZeroes=wu.spanAll=wu.spanAllZeroes=void 0;const Su=du;function Cu(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function Ru(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}wu.spanAllZeroes=Cu,wu.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,Su.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,Cu(e)))).join("")},wu.spanLeadingZeroes=function(e){return e.split(":").map((e=>Ru(e))).join(":")},wu.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,Su.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,Ru(e))))};var Tu={},Pu=Yi&&Yi.__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]}),ku=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Du=Yi&&Yi.__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)&&Pu(t,e,r);return ku(t,e),t};Object.defineProperty(Tu,"__esModule",{value:!0}),Tu.possibleElisions=Tu.simpleRegularExpression=Tu.ADDRESS_BOUNDARY=Tu.padGroup=Tu.groupPossibilities=void 0;const Iu=Du(yu),Eu=du;function Ou(e){return(0,Eu.sprintf)("(%s)",e.join("|"))}function xu(e){return e.length<4?(0,Eu.sprintf)("0{0,%d}%s",4-e.length,e):e}Tu.groupPossibilities=Ou,Tu.padGroup=xu,Tu.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",Tu.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===Iu.GROUPS-1?":":"";return Ou([xu(e),t])}return xu(e)})).join(":")));return r.push(e.map(xu).join(":")),Ou(r)},Tu.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,Eu.sprintf)("%s(:0{1,4}){1,%d}",i,e-1)),n.push((0,Eu.sprintf)("(0{1,4}:){1,%d}%s",e-1,s)),n.push((0,Eu.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,Eu.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return Ou(n)};var Mu=Yi&&Yi.__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]}),ju=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Lu=Yi&&Yi.__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)&&Mu(t,e,r);return ju(t,e),t};Object.defineProperty(bu,"__esModule",{value:!0}),bu.Address6=void 0;const Au=Lu(iu),Nu=Lu(su),Bu=Lu(yu),Fu=Lu(wu),$u=ru,Vu=Tu,zu=nu,Uu=cu,qu=du;function Gu(e){if(!e)throw new Error("Assertion failed.")}function Wu(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 Hu(e){return(0,qu.sprintf)("%04x",parseInt(e,16))}function Ku(e){return 255&e}class Ju{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=Au.isInSubnet,this.isCorrect=Au.isCorrect(Bu.BITS),this.groups=void 0===t?Bu.GROUPS:t,this.address=e;const r=Bu.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>Bu.BITS)throw new zu.AddressError("Invalid subnet mask.");e=e.replace(Bu.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new zu.AddressError("Invalid subnet mask.");const i=Bu.RE_ZONE_STRING.exec(e);i&&(this.zone=i[0],e=e.replace(Bu.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new Ju(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let i;for(i=0;i<Bu.GROUPS;i++)r.push(t.slice(4*i,4*(i+1)));return new Ju(r.join(":"))}static fromURL(e){let t,r,i=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=Bu.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=Bu.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 Ju(t),port:i}}static fromAddress4(e){const t=new $u.Address4(e),r=Bu.BITS-(Nu.BITS-t.subnetMask);return new Ju(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new zu.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 Ju(t)}microsoftTranscription(){return(0,qu.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=Bu.BITS-this.subnetMask-Math.abs(e-Bu.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 Uu.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new Uu.BigInteger(this.mask()+"0".repeat(Bu.BITS-this.subnetMask),2)}startAddress(){return Ju.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Uu.BigInteger("1");return Ju.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Uu.BigInteger(this.mask()+"1".repeat(Bu.BITS-this.subnetMask),2)}endAddress(){return Ju.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Uu.BigInteger("1");return Ju.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=Bu.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(Bu.TYPES))if(this.isInSubnet(new Ju(e)))return Bu.TYPES[e];return"Global unicast"}getBits(e,t){return new Uu.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,Bu.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,qu.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(Bu.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match(Nu.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new $u.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new zu.AddressError("IPv4 addresses can't have leading zeroes.",e.replace(Nu.RE_ADDRESS,this.address4.parsedAddress.map(Wu).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(Bu.RE_BAD_CHARACTERS);if(t)throw new zu.AddressError((0,qu.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(Bu.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(Bu.RE_BAD_ADDRESS);if(r)throw new zu.AddressError((0,qu.sprintf)("Address failed regex: %s",r.join("")),e.replace(Bu.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 zu.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 zu.AddressError("Too many :: groups found");i=e.split(":"),this.elidedGroups=0}if(i=i.map((e=>(0,qu.sprintf)("%x",parseInt(e,16)))),i.length!==this.groups)throw new zu.AddressError("Incorrect number of groups found");return i}canonicalForm(){return this.parsedAddress.map(Hu).join(":")}decimal(){return this.parsedAddress.map((e=>(0,qu.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new Uu.BigInteger(this.parsedAddress.map(Hu).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return $u.Address4.fromHex(new Uu.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new Ju(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 Uu.BigInteger("ffff",16)).toString(),r=$u.Address4.fromHex(this.getBitsBase16(32,64)),i=$u.Address4.fromHex(this.getBits(96,128).xor(new Uu.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 Uu.BigInteger(n.slice(2,6)+n.slice(8,16),2).toString(10);return{prefix:(0,qu.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=$u.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,qu.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 Ju(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map(Ku)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map(Ku))}static fromUnsignedByteArray(e){const t=new Uu.BigInteger("256",10);let r=new Uu.BigInteger("0",10),i=new Uu.BigInteger("1",10);for(let s=e.length-1;s>=0;s--)r=r.add(i.multiply(new Uu.BigInteger(e[s].toString(10),10))),i=i.multiply(t);return Ju.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 Ju("2001::/32"))}is6to4(){return this.isInSubnet(new Ju("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,qu.sprintf)(":%s",e),(0,qu.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,qu.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,qu.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return Fu.simpleGroup(this.address).join(":");Gu("number"==typeof this.elidedGroups),Gu("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...Fu.simpleGroup(t)):e.push("");const i=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)i.push((0,qu.sprintf)("group-%d",e));return e.push((0,qu.sprintf)('<span class="%s"></span>',i.join(" "))),r.length?e.push(...Fu.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(Gu(this.address4 instanceof $u.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new Ju(this.correctForm());if(0===r.elidedGroups)t.push((0,Vu.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===Bu.GROUPS)t.push((0,Vu.possibleElisions)(Bu.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,Vu.simpleRegularExpression)(e[0].split(":"))),Gu("number"==typeof r.elidedGroups),t.push((0,Vu.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,Vu.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",Vu.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",Vu.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}bu.Address6=Ju,function(e){var t=Yi&&Yi.__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=Yi&&Yi.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Yi&&Yi.__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=ru;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return s.Address4}});const n=bu;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return n.Address6}});const a=nu;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return a.AddressError}});const o=i(wu);e.v6={helpers:o}}(tu);var Qu={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(Yi)}(Qu);var Zu=Qu.exports,Yu=function(e,t){if("string"==typeof t)return Xu(e,t);if("object"==typeof t){for(var r=!1,i=0;i<t.length;i++)if(Xu(e,t[i])){r=!0;break}return r}};function Xu(e,t){try{var r=Zu.process(e);if(-1===t.indexOf("/")){var i=Zu.process(t);return"ipv6"===r.kind()&&"ipv6"===i.kind()?r.toNormalizedString()===i.toNormalizedString():r.toString()==i.toString()}var s=Zu.parseCIDR(t);return r.match(s)}catch(e){return!1}}var eh=Yu,th=/^((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]?)$/,rh=["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"],ih=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var sh=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(th.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("."),eh(r.boiledIp,rh)&&(r.isBogon=!0),eh(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),eh(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),eh(r.boiledIp,ih)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},nh=Xi(sh),ah={exports:{}},oh=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ch=[],dh=0;dh<256;dh++)ch[dh]=(dh+256).toString(16).substr(1);ah.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,i=ch;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(),!oh.test(r))return!1;if(void 0===t)t=lh(r);else if(lh(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 lh=ah.exports.version=function(e){return 0|e.charAt(14)},ph=Xi(ah.exports);const uh=Object.create(null);uh.open="0",uh.close="1",uh.ping="2",uh.pong="3",uh.message="4",uh.upgrade="5",uh.noop="6";const hh=Object.create(null);Object.keys(uh).forEach((e=>{hh[uh[e]]=e}));const mh={type:"error",data:"parser error"},fh="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),gh="function"==typeof ArrayBuffer,vh=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,_h=({type:e,data:t},r,i)=>fh&&t instanceof Blob?r?i(t):bh(t,i):gh&&(t instanceof ArrayBuffer||vh(t))?r?i(t):bh(new Blob([t]),i):i(uh[e]+(t||"")),bh=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function yh(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let wh;const Sh="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ch="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let vy=0;vy<64;vy++)Ch[Sh.charCodeAt(vy)]=vy;const Rh="function"==typeof ArrayBuffer,Th=(e,t)=>{if("string"!=typeof e)return{type:"message",data:kh(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:Ph(e.substring(1),t)};return hh[r]?e.length>1?{type:hh[r],data:e.substring(1)}:{type:hh[r]}:mh},Ph=(e,t)=>{if(Rh){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=Ch[e.charCodeAt(t)],i=Ch[e.charCodeAt(t+1)],s=Ch[e.charCodeAt(t+2)],n=Ch[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 kh(r,t)}return{base64:!0,data:e}},kh=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,Dh=String.fromCharCode(30);function Ih(){return new TransformStream({transform(e,t){!function(e,t){fh&&e.data instanceof Blob?e.data.arrayBuffer().then(yh).then(t):gh&&(e.data instanceof ArrayBuffer||vh(e.data))?t(yh(e.data)):_h(e,!1,(e=>{wh||(wh=new TextEncoder),t(wh.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 Oh(e){return e.reduce(((e,t)=>e+t.length),0)}function xh(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 Mh(e){if(e)return function(e){for(var t in Mh.prototype)e[t]=Mh.prototype[t];return e}(e)}Mh.prototype.on=Mh.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Mh.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Mh.prototype.off=Mh.prototype.removeListener=Mh.prototype.removeAllListeners=Mh.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},Mh.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},Mh.prototype.emitReserved=Mh.prototype.emit,Mh.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Mh.prototype.hasListeners=function(e){return!!this.listeners(e).length};const jh="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Lh(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Ah=jh.setTimeout,Nh=jh.clearTimeout;function Bh(e,t){t.useNativeTimers?(e.setTimeoutFn=Ah.bind(jh),e.clearTimeoutFn=Nh.bind(jh)):(e.setTimeoutFn=jh.setTimeout.bind(jh),e.clearTimeoutFn=jh.clearTimeout.bind(jh))}class Fh extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class $h extends Mh{constructor(e){super(),this.writable=!1,Bh(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new Fh(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=Th(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 Vh="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),zh=64,Uh={};let qh,Gh=0,Wh=0;function Hh(e){let t="";do{t=Vh[e%zh]+t,e=Math.floor(e/zh)}while(e>0);return t}function Kh(){const e=Hh(+new Date);return e!==qh?(Gh=0,qh=e):e+"."+Hh(Gh++)}for(;Wh<zh;Wh++)Uh[Vh[Wh]]=Wh;let Jh=!1;try{Jh="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(_y){}const Qh=Jh;function Zh(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Qh))return new XMLHttpRequest}catch(e){}if(!t)try{return new(jh[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Yh(){}const Xh=null!=new Zh({xdomain:!1}).responseType;class em extends Mh{constructor(e,t){super(),Bh(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=Lh(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new Zh(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=em.requestsCount++,em.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=Yh,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete em.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(em.requestsCount=0,em.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",tm);else if("function"==typeof addEventListener){addEventListener("onpagehide"in jh?"pagehide":"unload",tm,!1)}function tm(){for(let e in em.requests)em.requests.hasOwnProperty(e)&&em.requests[e].abort()}const rm="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),im=jh.WebSocket||jh.MozWebSocket,sm="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const nm={websocket:class extends $h{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=sm?{}:Lh(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=sm?new im(e,t,r):t?new im(e,t):new im(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;_h(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&rm((()=>{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]=Kh()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!im}},webtransport:class extends $h{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(Oh(r)<1)break;const e=xh(r,1);n=128==(128&e[0]),s=127&e[0],i=s<126?3:126===s?1:2}else if(1===i){if(Oh(r)<2)break;const e=xh(r,2);s=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if(Oh(r)<8)break;const e=xh(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),n=t.getUint32(0);if(n>Math.pow(2,21)-1){o.enqueue(mh);break}s=n*Math.pow(2,32)+t.getUint32(4),i=3}else{if(Oh(r)<s)break;const e=xh(r,s);o.enqueue(Th(n?e:Eh.decode(e),t)),i=0}if(0===s||s>e){o.enqueue(mh);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=Ih();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&&rm((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends $h{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=Xh&&!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(Dh),i=[];for(let e=0;e<r.length;e++){const s=Th(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)=>{_h(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(Dh))}))}))})(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]=Kh()),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 em(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}}},am=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,om=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function cm(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=am.exec(e||""),n={},a=14;for(;a--;)n[om[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 dm=class e extends Mh{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=cm(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=cm(t.host).host),Bh(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 nm[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}};dm.protocol=4;const lm="function"==typeof ArrayBuffer,pm=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,um=Object.prototype.toString,hm="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===um.call(Blob),mm="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===um.call(File);function fm(e){return lm&&(e instanceof ArrayBuffer||pm(e))||hm&&e instanceof Blob||mm&&e instanceof File}function gm(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(gm(e[t]))return!0;return!1}if(fm(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return gm(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&gm(e[t]))return!0;return!1}function vm(e){const t=[],r=e.data,i=e;return i.data=_m(r,t),i.attachments=t.length,{packet:i,buffers:t}}function _m(e,t){if(!e)return e;if(fm(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]=_m(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]=_m(e[i],t));return r}return e}function bm(e,t){return e.data=ym(e.data,t),delete e.attachments,e}function ym(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]=ym(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=ym(e[r],t));return e}const wm=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var Sm;!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"}(Sm||(Sm={}));function Cm(e){return"[object Object]"===Object.prototype.toString.call(e)}class Rm extends Mh{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===Sm.BINARY_EVENT;r||t.type===Sm.BINARY_ACK?(t.type=r?Sm.EVENT:Sm.ACK,this.reconstructor=new Tm(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!fm(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===Sm[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Sm.BINARY_EVENT||r.type===Sm.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(!Rm.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 Sm.CONNECT:return Cm(t);case Sm.DISCONNECT:return void 0===t;case Sm.CONNECT_ERROR:return"string"==typeof t||Cm(t);case Sm.EVENT:case Sm.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===wm.indexOf(t[0]));case Sm.ACK:case Sm.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Tm{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=bm(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var Pm=Object.freeze({__proto__:null,Decoder:Rm,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==Sm.EVENT&&e.type!==Sm.ACK||!gm(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===Sm.EVENT?Sm.BINARY_EVENT:Sm.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==Sm.BINARY_EVENT&&e.type!==Sm.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=vm(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},get PacketType(){return Sm},protocol:5});function km(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Dm=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Im extends Mh{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=[km(e,"open",this.onopen.bind(this)),km(e,"packet",this.onpacket.bind(this)),km(e,"error",this.onerror.bind(this)),km(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(Dm.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:Sm.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:Sm.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 Sm.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 Sm.EVENT:case Sm.BINARY_EVENT:this.onevent(e);break;case Sm.ACK:case Sm.BINARY_ACK:this.onack(e);break;case Sm.DISCONNECT:this.ondisconnect();break;case Sm.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:Sm.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:Sm.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 Om extends Mh{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,Bh(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||Pm;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 dm(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=km(t,"open",(function(){r.onopen(),e&&e()})),s=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},n=km(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(km(e,"ping",this.onping.bind(this)),km(e,"data",this.ondata.bind(this)),km(e,"error",this.onerror.bind(this)),km(e,"close",this.onclose.bind(this)),km(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){rm((()=>{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 Im(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 xm={};function Mm(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=cm(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=xm[s]&&n in xm[s].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new Om(i,t):(xm[s]||(xm[s]=new Om(i,t)),o=xm[s]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}Object.assign(Mm,{Manager:Om,Socket:Im,io:Mm,connect:Mm});const jm=new URLSearchParams(window.location.search).has("debug");class Lm{constructor(){this._isEnabled=!1,this._debugger=null,this._isEnabled=jm}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=null){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 Am(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;let Nm=[],Bm=0;const Fm=new WeakMap;if(window.RTCPeerConnection){const by=window.RTCPeerConnection;function yy(e){const t=new by(e);Nm.push(t),Fm.set(t,{index:Bm++});const r=()=>{"closed"===t.connectionState&&((e=>{Nm=Nm.filter((t=>t!==e))})(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}yy.prototype=by.prototype,window.RTCPeerConnection=yy}const $m=null,Vm=()=>{var e;return null===(e=$m)||void 0===e?void 0:e.getUpdatedStats()};class zm{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?zm._handleRequest(t):t.response?zm._handleResponse(t):t.message?zm._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 Um=new Lm;class qm extends Gi{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(){Um.info("Connected"),this.emit("open")}_onMessage(e){const t=zm.parse(e.data);Um.info("Received message",t),(null==t?void 0:t.response)?this._handleResponse(t):(null==t?void 0:t.message)&&this.emit("message",t)}_onClose(){Um.info("Disconnected"),this._tearDown()}_onError(e){Um.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=zm.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const i=zm.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)}))}}const Gm={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},Wm={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},Hm={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},Km={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},Jm={encodings:[{}]},Qm={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},Zm={encodings:[{dtx:!0}]},Ym=(e,t,r)=>{const{lowDataModeEnabled:i,simulcastScreenshareOn:s,vp9On:n}=r;return"audio"===e?Gm:t?n?Zm:s?Qm:Jm:n?Km:i?Hm:Wm},Xm=()=>{let e=is.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e};var ef;const tf=null!==(ef=Gp.default)&&void 0!==ef?ef:Gp;const rf=400;var sf;const nf="safari"===(null!==(sf=Gp.default)&&void 0!==sf?sf:Gp).browserDetails.browser,af=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function of({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||nf?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]=af(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 cf=new Lm,df=/mobi/i.test(navigator.userAgent);class lf extends Error{constructor(...e){super(...e),this.name="nodevices"}}function pf(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw cf.error(`getUserMedia ${r}`),t})):Promise.reject(new lf("No provided devices"))}function uf(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 hf(e,t){t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}function mf(e,{replaceStream:t,fallback:r=!0}={}){var i;return Am(this,void 0,void 0,(function*(){let s,n,a,o=null;const c=!1===e.audioId?"video":!1===e.videoId&&"audio",d=df||"video"!==c,l=of(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&&hf(t,c);try{o=yield pf(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 pf(of(Object.assign(Object.assign({},e),{audioId:!1})))}catch(e){if("NotFoundError"!==e.name)throw p(e,n)}try{o||(o=yield pf(of(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)hf(t,c),a=e;else if("NotAllowedError"!==n.name){try{o=yield pf(of(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{lax:!0})})))}catch(e){cf.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 pf(of(Object.assign(Object.assign({},e),{[r]:null})))}catch(e){cf.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 pf(of(Object.assign(Object.assign({},e),{[r]:!1})))}catch(e){cf.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(o)break}}}}if(a){const t=c?{audio:{videoId:!1},video:{audioId:!1}}[c]:{};n=of(Object.assign(Object.assign(Object.assign(Object.assign({},e),a),{options:Object.assign(Object.assign({},e.options),{lax:a.lax})}),t));try{o=yield pf(n)}catch(e){throw p(e,s)}}if(!o)throw p(s);let u;return t&&(d||hf(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 ff({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}}Gp.default;const gf={id:eu(),connectionNumber:0},vf=()=>{};let _f=vf;const bf=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;if(c=e,g&&r&&r!==t&&i)return void 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);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),i.readyState===WebSocket.CLOSED&&d&&setTimeout((()=>{i.readyState===WebSocket.CLOSED&&d&&_.connect()}),1e3*f)},close:()=>{d=!1,i&&i.close()},connect:()=>{d=!0,f+=1,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}`),_f()},i.onopen=()=>{for(gf.connectionNumber++,i.send(JSON.stringify(["clientInfo",null,gf])),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 _.connect(),_}("wss://rtcstats.srv.whereby.com"),yf=Kp(bf.trace,1e4,[""]);_f=(null==yf?void 0:yf.resetDelta)||vf;const wf={sendEvent:(e,t)=>{bf.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{wf.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{wf.sendEvent("video_muted",{muted:e})},server:bf};var Sf;const Cf=null!==(Sf=Gp.default)&&void 0!==Sf?Sf:Gp,Rf=new Lm,Tf=Cf.browserDetails.browser,Pf=Cf.browserDetails.version;function kf(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 Df(e){return"firefox"!==Tf?e:jp.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function If(e){return function(e,t,r=!1,i=!1){var s,n;try{const a=ga(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}]))})),fa(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 Ef(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 Of;const xf=null!==(Of=Gp.default)&&void 0!==Of?Of:Gp,Mf=new Lm;class jf{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 jp.splitSections(e).map((e=>{if("video"!==jp.getKind(e))return e;const t=jp.matchPrefix(e,"a=rtpmap:").map((e=>jp.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=jp.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"!==Tf&&("firefox"!==Tf||Pf&&Pf>=63||60===Pf)?e:jp.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==jp.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=Df(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((()=>Ef(this.pc,this.bandwidth))).then((()=>i))}handleAnswer(e){if(this.pendingOffer){const t=this.pendingOffer;return delete this.pendingOffer,this.pc.setLocalDescription(t).then((()=>this.handleAnswer(e)))}let t=e.sdp;t=Df(t);const r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>Ef(this.pc,this.bandwidth)),(e=>{Mf.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===xf.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{Mf.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){Mf.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();function s(r){const s=e=>e&&`id:${e.id},kind:${e.kind},state:${e.readyState}`;Mf.warn(`${r}. newTrack:${s(t)}, oldTrack:${s(e)}, sender tracks: ${JSON.stringify(i.map((e=>`s ${s(e.track)}`)))}, sender first codecs: ${JSON.stringify(i.map((e=>(e.getParameters().codecs||[])[0])))}`)}if(i.length||s("No senders!"),e||(e=(i.find((e=>e.track&&e.track.kind===t.kind))||{}).track)||s("No sender with same kind! Add new track then."),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<i.length;r++){const n=i[r],a=n.track;if(n||a||s("One of the tracks is null!"),a.id===t.id)return Promise.resolve(t);if(a.id===e.id)return i[r].replaceTrack(t)}return null};let n=r();if(n)return n;let a=null,o=null;n=new Promise(((e,t)=>{a=e,o=t}));let c=0,d=setInterval((()=>Am(this,void 0,void 0,(function*(){const e=r();if(!e)return void(3<++c&&(clearInterval(d),d=null,s("No sender track to replace"),o("No sender track to replace")));clearInterval(d),d=null;const t=yield e;a(t)}))),1e3);return n}const n=this.streams.find((e=>e.getTracks().find((e=>e.id===t.id))))||this.streams[0];return n?r.addTrack(t,n):(s("No stream?"),Promise.reject(new Error("replaceTrack: No stream?")))}if(!this.canModifyPeerConnection())return void this.pending.push((()=>{this.replaceTrack(e,t)}));this.isOperationPending=!0;const n=r.onnegotiationneeded;return r.onnegotiationneeded=null,this.removeTrack(e),this.addTrack(t),setTimeout((()=>{r.onnegotiationneeded=n}),0),"offer"===r.localDescription.type?r.createOffer().then((e=>(e.sdp=kf(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=kf(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&&Ef(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 Lf="fetch_mediaserver_config",Af="start_screenshare",Nf="stop_screenshare",Bf="audio_enabled",Ff="client_left",$f="mediaserver_config",Vf="new_client",zf="screenshare_started",Uf="screenshare_stopped",qf="room_joined",Gf="video_enabled",Wf="ice_candidate",Hf="ice_endofcandidates",Kf="ready_to_receive_offer",Jf="sdp_answer",Qf="sdp_offer",Zf="pending_client_left",Yf="media_quality_changed",Xf="client_connection_status_changed",eg="stream_added",tg="rtc_manager_created",rg="rtc_manager_destroyed",ig="local_stream_track_added",sg="local_stream_track_removed",ng="connecting",ag="connection_failed",og="connection_successful",cg="connection_disconnected",dg="camera",lg="screen_share";const pg=57600,ug=2.6041666666666665,hg=921600,mg=1.0850694444444444;const fg="[a-fA-F\\d:]",gg=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${fg})|(?<=${fg})(?=\\s|$))`:"",vg="(?: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}",_g="[a-fA-F\\d]{1,4}",bg=`\n(?:\n(?:${_g}:){7}(?:${_g}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${_g}:){6}(?:${vg}|:${_g}|:)| // 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(?:${_g}:){5}(?::${vg}|(?::${_g}){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(?:${_g}:){4}(?:(?::${_g}){0,1}:${vg}|(?::${_g}){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(?:${_g}:){3}(?:(?::${_g}){0,2}:${vg}|(?::${_g}){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(?:${_g}:){2}(?:(?::${_g}){0,3}:${vg}|(?::${_g}){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(?:${_g}:){1}(?:(?::${_g}){0,4}:${vg}|(?::${_g}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${_g}){0,5}:${vg}|(?::${_g}){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(),yg=new RegExp(`(?:^${vg}$)|(?:^${bg}$)`),wg=new RegExp(`^${vg}$`),Sg=new RegExp(`^${bg}$`),Cg=e=>e&&e.exact?yg:new RegExp(`(?:${gg(e)}${vg}${gg(e)})|(?:${gg(e)}${bg}${gg(e)})`,"g");Cg.v4=e=>e&&e.exact?wg:new RegExp(`${gg(e)}${vg}${gg(e)}`,"g"),Cg.v6=e=>e&&e.exact?Sg:new RegExp(`${gg(e)}${bg}${gg(e)}`,"g");var Rg,Tg,Pg="connection_blocked_by_network",kg="ice_ipv6_seen",Dg="ice_mdns_seen",Ig="ice_no_public_ip_gathered",Eg="ice_no_public_ip_gathered_3sec",Og="ice_restart",xg="microphone_not_working",Mg="microphone_stopped_working",jg="new_pc",Lg="sfu_connection_open",Ag="sfu_connection_closed",Ng="dominant_speaker";const Bg=null!==(Rg=Gp.default)&&void 0!==Rg?Rg:Gp,Fg=new Lm,$g=class{constructor(e,t){this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=ng,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?dg:lg}}.getCameraId(),Vg=Bg.browserDetails.browser,zg=Bg.browserDetails.version;"firefox"===Vg&&Bg.browserShim&&"shimGetDisplayMedia"in Bg.browserShim&&(null===(Tg=Bg.browserShim)||void 0===Tg||Tg.shimGetDisplayMedia(window,"screen"));let Ug=!1;"chrome"===Vg&&window.document.addEventListener("beforeunload",(()=>{Ug=!0}));class qg{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=()=>{wf.sendEvent("audio_ended",{unloading:Ug}),this._emit(Mg,{})},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){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===$g){this._addStreamToPeerConnections(t);const[e]=t.getAudioTracks();e&&this._startMonitoringAudioTrack(e),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const r=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",r),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",r)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),t&&"audio"===t.kind&&this._startMonitoringAudioTrack(t),this._replaceTrackToPeerConnections(e,t)}accept({clientId:e,shouldAddLocalVideo:t}){return this.acceptNewStream({streamId:e,clientId:e,shouldAddLocalVideo: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"!==Vg)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($f,(e=>{e.error?Fg.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(Kf,(e=>{this._connect(e.clientId)})),this._serverSocket.on(Wf,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):Fg.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(Hf,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):Fg.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(Qf,(e=>{const t=this._getSession(e.clientId);if(!t)return void Fg.warn("No RTCPeerConnection on SDP_OFFER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleOffer(r).then((t=>{this._emitServerEvent(Jf,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))})),this._serverSocket.on(Jf,(e=>{const t=this._getSession(e.clientId);if(!t)return void Fg.warn("No RTCPeerConnection on SDP_ANSWER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleAnswer(r)})),this._serverSocket.on(qf,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==$g));if(!t)return;const r=this.localStreams[t];if(!r)return void Fg.warn("screenshare stream %s not found",t);const i=r.getAudioTracks().length>0;this._emitServerEvent(Af,{streamId:t,hasAudioTrack:i})}))]}sendAudioMutedStats(e){wf.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){wf.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){wf.sendEvent(e,t)}rtcStatsDisconnect(){wf.server.close()}rtcStatsReconnect(){wf.server.connected||wf.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===cg&&t===ng||(e.connectionStatus=t,setTimeout((()=>{this._emit(Xf,{streamIds:e.streamIds,clientId:r,status:t,previous:i})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=rf,e.playoutDelayHint=.4}))}catch(e){Fg.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"===Vg&&zg&&zg>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new jf({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:i}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[$g]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==$g))}_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"===Vg&&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.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"===Vg&&(o.sdpSemantics="unified-plan");const c=n.setAndGetPeerConnection({constraints:a,peerConnectionConfig:o,shouldAddLocalVideo:s,clientId:e});setTimeout((()=>this._emit(jg)),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(eg,{clientId:e,stream:r}),n.connectionStatus===og&&setTimeout((()=>{this._emit(Xf,{streamIds:n.streamIds,clientId:e,status:n.connectionStatus,previous:ng})}),0))},c.oniceconnectionstatechange=()=>{let t;const r=n.connectionStatus;switch(c.iceConnectionState){case"checking":t=ng;break;case"connected":case"completed":t=og,n.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!n.wasEverConnected&&(c.iceConnectionState.match(/connected|completed/)||"chrome"===Vg&&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=cg,setTimeout((()=>{"disconnected"===c.iceConnectionState&&this._maybeRestartIce(e,n)}),2e3);break;case"failed":t=ag,r!==t&&this._maybeRestartIce(e,n),null!==n.relayCandidateSeen||n.wasEverConnected||this._emit(Pg);break;default:return}this._setConnectionStatus(n,t,e)},c.onconnectionstate=()=>{switch(c.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==tf.browserDetails.browser||tf.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(xg,{failureDirection:t,clientId:e})}))}),3e3),n.registerConnected();break;case"failed":const t=ag;null!==n.relayCandidateSeen||n.wasEverConnected||this._emit(Pg),this._setConnectionStatus(n,t,e)}};const d=this.localStreams[$g];return s&&d&&n.addStream(d),s&&Object.keys(this.localStreams).forEach((e=>{if(e===$g)return;const t=this.localStreams[e];r?n.addStream(t):n.afterConnected.then((()=>{this._emitServerEvent(Af,{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]):Fg.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()){Fg.info("Session doesn't have a connected PeerConnection, adding pending action!");const s=this._pendingActionsForConnectedPeerConnections;if(!s)return void Fg.warn("No pending action is created to repalce 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 Fg.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):Fg.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(Lf)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_connect(e){this.rtcStatsReconnect();let t=this._getSession(e),r=t&&t.bandwidth||0;return t?(Fg.warn("Replacing peer session",e),this._cleanup(e)):r=this._changeBandwidthForAllClients(!0),t=this._createP2pSession(e,r,!0,!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(Og),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){Fg.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void Fg.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}=this._features;(s||n||a)&&this._setCodecPreferences(i,s,n,a),i.createOffer(r||this.offerOptions).then((r=>{o&&(r.sdp=If(r.sdp)),(s||a)&&"firefox"===Vg&&(r.sdp=function(e,t,r){var i,s;try{const n=ga(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 fa(n)}catch(e){Rf.error("setCodecPreferenceSDP error:",e)}}(r.sdp,s,a)),this._emitServerEvent(Qf,{receiverId:e,message:this._transformOutgoingSdp(r)}),"chrome"===Vg&&i.getSenders().filter((e=>e.track&&"video"===e.track.kind)).length>=2?t.pendingOffer=r:i.setLocalDescription(r).catch((t=>{Fg.warn("RTCPeerConnection.setLocalDescription() failed with local offer",t),this._features.reverseOfferOnFailure&&(this._lastReverseDirectionAttemptByClientId||(this._lastReverseDirectionAttemptByClientId={}),(!this._lastReverseDirectionAttemptByClientId[e]||this._lastReverseDirectionAttemptByClientId[e]<Date.now()-1e4)&&(this.acceptNewStream({clientId:e,streamId:e,shouldAddLocalVideo:!0}),this._lastReverseDirectionAttemptByClientId[e]=Date.now()))}))})).catch((e=>{Fg.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:0,2:this._features.highP2PBandwidth?768:384,3:this._features.highP2PBandwidth?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<pg&&(i=pg),i>hg&&(i=hg);let s=ug;i>hg?s=mg:i>pg&&(s+=-17582143775720163e-22*(i-pg));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&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession(e,t,r,i){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[$g];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||this._emit(Eg)}),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(Cg.v4({exact:!0}).test(e)){nh(e).isPublicIp&&(s.publicHostCandidateSeen=!0)}else if(Cg.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new tu.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&&ph(t,4)&&(s.mdnsHostCandidateSeen=!0)}}catch(e){Fg.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(Wf,{receiverId:e,message:t.candidate})}else this._emitServerEvent(Hf,{receiverId:e}),s.publicHostCandidateSeen||s.relayCandidateSeen||s.serverReflexiveCandidateSeen||this._emit(Ig),s.ipv6HostCandidateSeen&&this._emit(kg,{teredoSeen:s.ipv6HostCandidateTeredoSeen,sixtofourSeen:s.ipv6HostCandidate6to4Seen}),s.mdnsHostCandidateSeen&&this._emit(Dg)},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?(Fg.warn("Replacing peer session",t),this._cleanup(t)):s=this._changeBandwidthForAllClients(!0),i=this._createP2pSession(t,s,r),this._emitServerEvent(Kf,{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){if(["chrome","safari"].includes(Vg))if(!1===t)setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(sg,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3);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._emit(ig,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}_shareScreen(e,t){this._emitServerEvent(Af,{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(Nf,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}var Gg=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 Wg={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"},Hg=new Lm;const Kg=new Lm,Jg=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class Qg extends Gi{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:Jg.ok,trend:[]},video:{currentQuality:Jg.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(Yf,{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]={}):Kg.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]={}):Kg.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)))}:Kg.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)}:Kg.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?Jg.warning:e<=7&&e>0?Jg.critical:Jg.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 Kg.error(e),0}}}var Zg;const Yg=null!==(Zg=Gp.default)&&void 0!==Zg?Zg:Gp,Xg=new Lm,ev=Yg.browserDetails.browser;let tv=!1;const rv=eu(),iv=eu();"chrome"===ev&&window.document.addEventListener("beforeunload",(()=>tv=!0));class sv{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 is.Device({handlerFactory:o}):new is.Device({handlerName:Xm()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=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=()=>{wf.sendEvent("audio_ended",{unloading:tv}),this._emitToPWA(Mg,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:p}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._qualityMonitor=new Qg,this._qualityMonitor.on(Yf,(e=>{this._emitToPWA(Yf,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(Lf)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on($f,(e=>{e.error?Xg.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(qf,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(Af,{streamId:iv,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){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 qm(r),this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){var e,t;Xg.info("_onClose()"),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._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA(Ag)}_join(){return Am(this,void 0,void 0,(function*(){Xg.info("join()"),this._emitToPWA(Lg);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){Xg.error("_join() [error:%o]",e)}}))}_createTransport(e){return Am(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=>Am(this,void 0,void 0,(function*(){if(Xg.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)=>Am(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)=>Am(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 Am(this,void 0,void 0,(function*(){if(!e||!("closed"in e)||!("connectionState"in e))return void Xg.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void Xg.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void Xg.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 Xg.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void Xg.info("_restartIce: Connection is undefined");const{iceParameters:s}=yield this._vegaConnection.request("restartIce",{transportId:e.id});Xg.info("_restartIce: ICE restart iceParameters received from SFU: ",s);const n=yield e.restartIce({iceParameters:s}).then((()=>null)).catch((e=>e));if(n)switch(Xg.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 Am(this,void 0,void 0,(function*(){Xg.info("_internalSendMic()"),this._micProducerPromise=(()=>Am(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},Ym("audio",!1,this._features)),{appData:{streamId:rv,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;Xg.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){Xg.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})))()}))}_internalSetupMicScore(){return Am(this,void 0,void 0,(function*(){Xg.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(()=>Am(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;Xg.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){Xg.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 Am(this,void 0,void 0,(function*(){Xg.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;Xg.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 Am(this,void 0,void 0,(function*(){return Xg.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){Xg.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}_internalSendWebcam(){return Am(this,void 0,void 0,(function*(){Xg.info("_internalSendWebcam()"),this._webcamProducerPromise=(()=>Am(this,void 0,void 0,(function*(){try{if(!this._webcamTrack||!this._sendTransport||this._webcamProducer)return void(this._webcamProducerPromise=null);const e=this._webcamPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1},Ym("video",!1,this._features)),{appData:{streamId:rv,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:e}}));e?t.pause():t.resume(),this._webcamProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;Xg.info('webcamProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._webcamTrack!==this._webcamProducer.track&&(yield this._replaceWebcamTrack()),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){Xg.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(yield this._stopProducer(this._webcamProducer),this._webcamProducer=null)}})))()}))}_replaceWebcamTrack(){return Am(this,void 0,void 0,(function*(){Xg.info("_replaceWebcamTrack()"),this._webcamTrack&&this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track!==this._webcamTrack&&(yield this._webcamProducer.replaceTrack({track:this._webcamTrack}),yield this._replaceWebcamTrack())}))}_pauseResumeWebcam(){var e,t;Xg.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 Am(this,void 0,void 0,(function*(){return Xg.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 Am(this,void 0,void 0,(function*(){Xg.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(()=>Am(this,void 0,void 0,(function*(){try{if(!this._screenVideoTrack||!this._sendTransport||this._screenVideoProducer)return void(this._screenVideoProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenVideoTrack,disableTrackOnPause:!1,stopTracks:!1},Ym("video",!0,this._features)),{appData:{streamId:iv,sourceClientId:this._selfId,screenShare:!0,source:"screenvideo",paused:!1}}));this._screenVideoProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;Xg.info('screenVideoProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenVideoTrack!==this._screenVideoProducer.track&&(yield this._replaceScreenVideoTrack())}catch(e){Xg.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(yield this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null)}})))()}))}_replaceScreenVideoTrack(){return Am(this,void 0,void 0,(function*(){Xg.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 Am(this,void 0,void 0,(function*(){return Xg.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 Am(this,void 0,void 0,(function*(){Xg.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(()=>Am(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},Ym("audio",!0,this._features)),{appData:{streamId:iv,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;Xg.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){Xg.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(yield this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})))()}))}_replaceScreenAudioTrack(){return Am(this,void 0,void 0,(function*(){Xg.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 Am(this,void 0,void 0,(function*(){return Xg.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){Xg.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(),wf.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(Xg.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){e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),"audio"===t.kind&&(this._startMonitoringAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){Xg.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal(Nf,{streamId:iv,requestedByClientId:r}),this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null,this._screenVideoTrack=null,this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null,this._screenAudioTrack=null}_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){if("0"===e){this._micPaused=r,this._webcamPaused=i;const e=t.getVideoTracks()[0],s=t.getAudioTracks()[0];e&&this._sendWebcam(e),s&&(this._sendMic(s),this._syncMicAnalyser(),this._startMonitoringAudioTrack(s)),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const n=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",n),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",n)}}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=>Am(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){Hg.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({},Wg),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(Gg,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,Gg),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){Xg.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){if(Xg.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(ev))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._emitToPWA(ig,{streamId:e.id,tracks:[i],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:i})}))}}else clearTimeout(this._stopCameraTimeout),this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(sg,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3)}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){Xg.info("acceptNewStream()",{streamId:e,clientId:t}),this.rtcStatsReconnect();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,a,o,c;Xg.info("updateStreamResolution()",{streamId:e,width:r,height:i});const d=this._streamIdToVideoConsumerId.get(e),l=this._consumers.get(d);if(!l)return;let p=0;this._consumers.forEach((e=>{var t,r;e._closed||e._paused||"webcam"!==(null===(t=e._appData)||void 0===t?void 0:t.source)&&"screenvideo"!==(null===(r=e._appData)||void 0===r?void 0:r.source)||p++}));let u=2;/T3/.test((null===(a=null===(n=null===(s=l._rtpParameters)||void 0===s?void 0:s.encodings)||void 0===n?void 0:n[0])||void 0===a?void 0:a.scalabilityMode)||"")&&(u=3);const h=Math.max(r,i);let m=h>=480?h>=960?2:1:0,f=u-1;h<100&&(f=Math.max(u-2,0)),p>8&&0===m&&(f=Math.max(u-2,0)),p<4&&h>300&&0===m&&(m=1),(null===(o=this._features)||void 0===o?void 0:o.uncappedSingleRemoteVideoOn)&&1===p&&(m=2,f=u-1),l.appData.spatialLayer===m&&l.appData.temporalLayer===f||(l.appData.spatialLayer=m,l.appData.temporalLayer=f,null===(c=this._vegaConnection)||void 0===c||c.message("setConsumersPreferredLayers",{consumerIds:[d],spatialLayer:m,temporalLayer:f}))}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){wf.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){wf.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){wf.sendEvent(e,t)}rtcStatsDisconnect(){wf.server.close()}rtcStatsReconnect(){wf.server.connected||wf.server.connect()}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_onMessage(e){return Am(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 Xg.info(`unknown message method "${t}"`)}})).catch((e=>{Xg.error('"message" failed [error:%o]',e)}))}))}_onConsumerReady(e){return Am(this,void 0,void 0,(function*(){Xg.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=rf,t.rtpReceiver.playoutDelayHint=.4}catch(e){Xg.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)}))}_onConsumerClosed({consumerId:e,reason:t}){var r;return Am(this,void 0,void 0,(function*(){Xg.info("_onConsumerClosed()",{consumerId:e,reason:t}),null===(r=this._consumers.get(e))||void 0===r||r.close()}))}_onConsumerPaused({consumerId:e}){Xg.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){Xg.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}){Xg.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}){Xg.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 Am(this,void 0,void 0,(function*(){Xg.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 Am(this,void 0,void 0,(function*(){Xg.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(Ng,{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),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(eg,{clientId:e,stream:s,streamId:p,streamType:"webcam"}),i.hasEmittedWebcamStream=!0),n&&!o&&d&&(this._emitToPWA(eg,{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 nv{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:i}){this.emitter=e,this.currentManager=null,t.on(qf,(({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(rg)}let l=null;l=d?new sv(c):new qg(c),l.setupSocketListeners(),e.emit(tg,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(rg))}}var av;!function(e){e.rtc_manager_created="rtc_manager_created",e.stream_added="stream_added"}(av||(av={}));const ov=new Lm;class cv extends Gi{constructor(e){super(),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(qf,(e=>this._onRoomJoined(e))),e.on(Vf,(e=>this._onNewClient(e))),e.on(Ff,(e=>this._onClientLeft(e))),e.on(Zf,(e=>this._onPendingClientLeft(e))),e.on(Bf,(e=>this._onAudioEnabled(e))),e.on(Gf,(e=>this._onVideoEnabled(e))),e.on(zf,(e=>this._onScreenshareChanged(e,!0))),e.on(Uf,(e=>this._onScreenshareChanged(e,!1)))}_onRoomJoined(e){var t,r;return Am(this,void 0,void 0,(function*(){if(!(null===(t=e.room)||void 0===t?void 0:t.clients))return void this.emit(qf,e);if(!e.selfId)return void this.emit(qf,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(qf,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave))),void this.emit(qf,e);const s=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>s)return this._resetClientState(e),this.emit(qf,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===i&&e.isPendingToLeave)));const n=yield Vm();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){ov.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(qf,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(Ff,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))):ov.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(Ff,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(Vf,e)}_abortIfNotActive(e){return Am(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(Ff,e)))}))}_checkIsActive(e){return Am(this,void 0,void 0,(function*(){const t=yield Vm();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 dv;const lv=null!==(dv=Gp.default)&&void 0!==dv?dv:Gp;class pv{constructor(e,t,r=!1){this._wasConnectedUsingWebsocket=!1,this._reconnectManager=null,this._socket=Mm(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"!==lv.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new cv(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.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=[qf,Ff,Vf];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}}const uv=[{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 hv(e,t){return ai(e,t)}!function({host:e="whereby.com",protocol:t="https:"}={}){let r="",i=e,s=".";for(const{separator:t,pattern:n}of uv){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 mv=((e={})=>{const t=new Map,{extra:r,onError:i=Ui}=e;Si(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=Li(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:ji(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(Pi(e,bi),r.delete(e))}))},cancel:()=>{Pi(c,bi),e.pending.delete(c)},throwIfCancelled:()=>{ki(c.signal)}})))}catch(e){e instanceof wi||Fi(i,e,{raisedBy:"effect"})}finally{await Promise.all(l),Pi(c,yi),e.pending.delete(c)}},o=(e=>()=>{e.forEach(Bi),e.clear()})(t);return{middleware:e=>r=>c=>{if(!Ut(c))return r(c);if($i.match(c))return s(c.payload);if(Vi.match(c))return void o();if(zi.match(c))return n(c.payload);let d=e.getState();const l=()=>{if(d===xi)throw new Error(`${Mi}: 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=xi}return p},startListening:s,stopListening:n,clearListeners:o}})(),fv=mv.startListening,gv=(e,t)=>fv({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)}}),vv=ui({name:"app",initialState:{isNodeSdk:!1,isActive:!1,roomName:null,roomUrl:null,displayName:null,userAgent:"core:0.17.0",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:_v,doAppStart:bv}=vv.actions,yv=e=>e.app.isActive,wv=e=>e.app.displayName,Sv=e=>e.app.externalId,Cv=e=>e.app.isNodeSdk;function Rv(e){return Jr(`signalConnection/event/${e}`)}const Tv={audioEnabled:Rv("audioEnabled"),audioEnableRequested:Rv("audioEnableRequested"),chatMessage:Rv("chatMessage"),clientLeft:Rv("clientLeft"),clientKicked:Rv("clientKicked"),clientMetadataReceived:Rv("clientMetadataReceived"),cloudRecordingStarted:Rv("cloudRecordingStarted"),cloudRecordingStopped:Rv("cloudRecordingStopped"),disconnect:Rv("disconnect"),knockerLeft:Rv("knockerLeft"),knockHandled:Rv("knockHandled"),newClient:Rv("newClient"),roomJoined:Rv("roomJoined"),roomKnocked:Rv("roomKnocked"),roomLeft:Rv("roomLeft"),roomLocked:Rv("roomLocked"),roomSessionEnded:Rv("roomSessionEnded"),screenshareStarted:Rv("screenshareStarted"),screenshareStopped:Rv("screenshareStopped"),spotlightAdded:Rv("spotlightAdded"),spotlightRemoved:Rv("spotlightRemoved"),streamingStopped:Rv("streamingStopped"),videoEnabled:Rv("videoEnabled")},Pv={canLockRoom:["host"],canRequestAudioEnable:["host"],canKickClient:["host"],canEndMeeting:["host"],canAskToSpeak:["host"],canSpotlight:["host"]},kv=ui({name:"authorization",initialState:{roomKey:null,roleName:"none"},reducers:{setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})},extraReducers:e=>{e.addCase(bv,((e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload.roomKey}))),e.addCase(Tv.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:Dv}=kv.actions,Iv=e=>e.authorization.roleName;Hr(Iv,(e=>Pv.canLockRoom.includes(e))),Hr(Iv,(e=>Pv.canRequestAudioEnable.includes(e))),Hr(Iv,(e=>Pv.canKickClient.includes(e))),Hr(Iv,(e=>Pv.canEndMeeting.includes(e)));const Ev=Hr(Iv,(e=>Pv.canAskToSpeak.includes(e)));function Ov(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 xv(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())}))}Hr(Iv,(e=>Pv.canSpotlight.includes(e))),"function"==typeof SuppressedError&&SuppressedError;const Mv=ui({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(jv.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(jv.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(jv.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),jv=hv("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>xv(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),Lv=e=>e.deviceCredentials;gv([Hr(yv,Lv,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(jv())}));const Av=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),{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(Tv.disconnect,(e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"})))}}),{deviceIdentifying:Nv,deviceIdentified:Bv,socketConnected:Fv,socketConnecting:$v,socketDisconnected:Vv,socketReconnecting:zv}=Av.actions,Uv=()=>(e,t)=>{if(Jv(t()))return;e($v());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new pv(e,{autoConnect:!1})}();r.on("connect",(()=>e(Fv(r)))),r.on("device_identified",(()=>e(Bv()))),r.getManager().on("reconnect",(()=>e(zv()))),function(e,t){e.on("room_joined",(e=>t(Tv.roomJoined(e)))),e.on("new_client",(e=>t(Tv.newClient(e)))),e.on("client_left",(e=>t(Tv.clientLeft(e)))),e.on("client_kicked",(e=>t(Tv.clientKicked(e)))),e.on("audio_enabled",(e=>t(Tv.audioEnabled(e)))),e.on("video_enabled",(e=>t(Tv.videoEnabled(e)))),e.on("audio_enable_requested",(e=>t(Tv.audioEnableRequested(e)))),e.on("client_metadata_received",(e=>t(Tv.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(Tv.chatMessage(e)))),e.on("disconnect",(()=>t(Tv.disconnect()))),e.on("room_knocked",(e=>t(Tv.roomKnocked(e)))),e.on("room_left",(()=>t(Tv.roomLeft()))),e.on("room_locked",(e=>t(Tv.roomLocked(e)))),e.on("room_session_ended",(e=>t(Tv.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(Tv.knockerLeft(e)))),e.on("knock_handled",(e=>t(Tv.knockHandled(e)))),e.on("screenshare_started",(e=>t(Tv.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(Tv.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(Tv.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(Tv.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(Tv.streamingStopped()))),e.on("spotlight_added",(e=>t(Tv.spotlightAdded(e)))),e.on("spotlight_removed",(e=>t(Tv.spotlightRemoved(e))))}(r,e),r.connect()},qv=({deviceCredentials:e})=>(t,r)=>{const i=r(),s=Jv(i),n=Hv(i);s&&(n||(s.emit("identify_device",{deviceCredentials:e}),t(Nv())))},Gv=()=>(e,t)=>{const r=t();if("connected"===Kv(r)){const t=Wv(r).socket;null==t||t.disconnect(),e(Vv())}},Wv=e=>e.signalConnection,Hv=e=>e.signalConnection.deviceIdentified,Kv=e=>e.signalConnection.status,Jv=e=>e.signalConnection.socket;gv([Hr(yv,Kv,((e,t)=>!(!e||!["ready","reconnecting"].includes(t))))],(({dispatch:e},t)=>{t&&e(Uv())}));const Qv=Hr(Lv,Kv,Hv,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,i)=>!(!e.data||"connected"!==t||r||i)));gv([Qv,Lv],(({dispatch:e},t,r)=>{t&&r.data&&e(qv({deviceCredentials:r.data}))})),fv({actionCreator:Tv.roomLeft,effect:(e,{dispatch:t})=>{t(Gv())}}),fv({actionCreator:Tv.clientKicked,effect:(e,{dispatch:t})=>{t(Gv())}});const Zv=ui({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(Tv.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]})}))}}),Yv=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(Tv.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(Tv.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(Tv.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}))}});Yv.actions;const Xv=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(bv,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase(m_.pending,((e,t)=>{const{audio:r,video:i}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:i,isSettingMicrophoneDevice:r})})),e.addCase(m_.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(m_.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(p_.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase(p_.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(f_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(v_.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(v_.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(v_.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase(g_.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase(g_.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase(g_.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:e_,setCurrentCameraDeviceId:t_,setCurrentMicrophoneDeviceId:r_,setCurrentSpeakerDeviceId:i_,toggleCameraEnabled:s_,toggleMicrophoneEnabled:n_,toggleLowDataModeEnabled:a_,setLocalMediaOptions:o_,setLocalMediaStream:c_,localMediaStopped:d_,localStreamMetadataUpdated:l_}=Xv.actions,p_=hv("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>xv(void 0,void 0,void 0,(function*(){const e=t(),i=I_(e);if(!i)return;let s=i.getVideoTracks()[0];const n=S_(e);try{if(n)if(s)s.enabled=!0;else{const t=O_(e),r=y_(e);yield mf(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)}})))),u_=hv("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const i=t(),s=I_(i);if(!s)return;const n=C_(i),a=null===(r=s.getAudioTracks())||void 0===r?void 0:r[0];a&&(a.enabled=n)})),h_=()=>(e,t)=>{const r=t();if(!I_(r))return;const i=y_(r),s=w_(r);e(g_({audioId:s,videoId:i}))},m_=hv("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:i})=>xv(void 0,void 0,void 0,(function*(){try{const i=r(),s=I_(i);if(!s)throw new Error("No stream");const n=!!e&&w_(i),a=!!t&&y_(i),o=O_(i),{replacedTracks:c}=yield mf(Object.assign(Object.assign({},o),{audioId:n,videoId:a,type:"exact"}),{replaceStream:s}),d=C_(i);s.getAudioTracks().forEach((e=>e.enabled=d));const l=S_(i);return s.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return i(e)}})))),f_=hv("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:i})=>xv(void 0,void 0,void 0,(function*(){var e,s,n,a;const o=t();let c=[],d=[];const l=I_(o);try{c=yield navigator.mediaDevices.enumerateDevices(),d=T_(o);if(!(l&&!E_(o)&&c&&d&&d.find((e=>e.deviceId))))return{devices:c};const{changedDevices:t,addedDevices:i}=ff({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(g_({audioId:p,videoId:u})),{devices:c}}catch(e){return i(e)}})))),g_=hv("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:i,rejectWithValue:s})=>xv(void 0,void 0,void 0,(function*(){const n=i(),a=I_(n),o=O_(n),c=!(!t||e)||!(t||!e);if(a)try{const{replacedTracks:i}=yield mf(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(e_({deviceId:s})),{replacedTracks:i}}catch(i){console.error(i);const n=e||t;return c&&n&&r(e_({deviceId:n})),s(i)}})))),v_=hv("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:i})=>xv(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(f_())}),{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(o_({options:e}));try{yield r(f_());const i=t(),n=O_(i),{stream:a}=yield mf(Object.assign(Object.assign({},n),{audioId:e.audio,videoId:e.video}));return{stream:a,onDeviceChange:s}}catch(e){return i(e)}})))),__=()=>(e,t)=>{const r=I_(t()),i=k_(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&i&&navigator.mediaDevices.removeEventListener("devicechange",i),e(d_())},b_=e=>e.localMedia.busyDeviceIds,y_=e=>e.localMedia.currentCameraDeviceId,w_=e=>e.localMedia.currentMicrophoneDeviceId,S_=e=>e.localMedia.cameraEnabled,C_=e=>e.localMedia.microphoneEnabled,R_=e=>e.localMedia.lowDataMode,T_=e=>e.localMedia.devices,P_=e=>e.localMedia.options;Hr(P_,(e=>!!e));const k_=e=>e.localMedia,D_=e=>e.localMedia.status,I_=e=>e.localMedia.stream,E_=e=>e.localMedia.isSwitchingStream,O_=Hr(T_,y_,w_,R_,((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}})));Hr(D_,(e=>"starting"===e)),Hr(T_,b_,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),Hr(T_,b_,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),Hr(T_,(e=>e.filter((e=>"audiooutput"===e.kind))));gv([Hr(yv,D_,P_,Cv,((e,t,r,i)=>{if(e&&["inactive","stopped"].includes(t)&&!i&&r)return r}))],(({dispatch:e},t)=>{t&&e(v_(t))}));gv([Hr(yv,D_,P_,((e,t,r)=>!e&&"inactive"!==t&&!!r))],(({dispatch:e},t)=>{t&&e(__())})),fv({predicate:(e,t,r)=>{const i=C_(r),s=C_(t);return"started"===D_(r)&&i!==s},effect:(e,{dispatch:t})=>{t(u_())}}),fv({predicate:(e,t,r)=>{const i=R_(r),s=R_(t);return"started"===D_(r)&&i!==s},effect:(e,{dispatch:t})=>{t(h_())}}),fv({predicate:(e,t,r)=>{const i=(e=>e.localMedia.isTogglingCamera)(t);if(i)return!1;const s=S_(r),n=S_(t);return"started"===D_(r)&&s!==n},effect:(e,{dispatch:t})=>{t(p_())}}),fv({predicate:(e,t,r)=>{const i=y_(r),s=y_(t);return"started"===D_(r)&&i!==s},effect:(e,{dispatch:t})=>{t(m_({audio:!1,video:!0}))}}),fv({predicate:(e,t,r)=>{const i=w_(r),s=w_(t);return"started"===D_(r)&&i!==s},effect:(e,{dispatch:t})=>{t(m_({audio:!0,video:!1}))}}),fv({matcher:ti(v_.fulfilled,f_.fulfilled,g_.fulfilled,g_.rejected),effect:(e,{dispatch:t,getState:r})=>{const i=r(),s=I_(i),n=T_(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:uf("videoinput",t,r,n),audio:uf("audioinput",e,r,s)}}({audioTrack:s.getAudioTracks()[0],videoTrack:s.getVideoTracks()[0],devices:n});t(l_(a))}}),fv({actionCreator:Tv.audioEnableRequested,effect:({payload:e},{dispatch:t})=>{const{enable:r}=e;r||t(n_({enabled:!1}))}});const x_=ui({name:"localParticipant",initialState:{displayName:"",id:"",isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"none",clientClaim:void 0,stickyReaction:void 0},reducers:{doSetDisplayName:(e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName})},extraReducers:e=>{e.addCase(bv,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(j_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(L_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(A_.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{stickyReaction:t.payload}))),e.addCase(Tv.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})}))}}),{doSetDisplayName:M_}=x_.actions,j_=hv("localParticipant/doEnableAudio",((e,{dispatch:t,getState:r})=>xv(void 0,void 0,void 0,(function*(){const i=r(),s=Wv(i).socket;return null==s||s.emit("enable_audio",{enabled:e.enabled}),e.enabled&&t(A_({enabled:!1})),e.enabled})))),L_=hv("localParticipant/doEnableVideo",((e,{getState:t})=>xv(void 0,void 0,void 0,(function*(){const r=t(),i=Wv(r).socket;return null==i||i.emit("enable_video",{enabled:e.enabled}),e.enabled})))),A_=hv("localParticipant/doSetLocalStickyReaction",((e,{getState:t,rejectWithValue:r})=>xv(void 0,void 0,void 0,(function*(){var i;const s=t(),n=V_(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})))),N_=()=>(e,t)=>{const r=t(),i=Wv(r).socket,s={displayName:$_(r),stickyReaction:V_(r)};null==i||i.emit("send_client_metadata",{type:"UserData",payload:s})},B_=e=>e.localParticipant,F_=e=>e.localParticipant.id,$_=e=>e.localParticipant.displayName,V_=e=>e.localParticipant.stickyReaction,z_=Hr(B_,I_,((e,t)=>({id:e.id,clientId:e.id,displayName:e.displayName,stream:t,isLocalClient:!0,isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled})));fv({actionCreator:s_,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isVideoEnabled:s}=B_(r());t(L_({enabled:i||!s}))}}),fv({actionCreator:n_,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:i}=e,{isAudioEnabled:s}=B_(r());t(j_({enabled:i||!s}))}}),gv([$_,V_],(({dispatch:e})=>{e(N_())}));const U_=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(G_.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(G_.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(G_.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"inactive",stream:null})))}}),{stopScreenshare:q_}=U_.actions,G_=hv("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:i})=>xv(void 0,void 0,void 0,(function*(){var e;try{const i=r(),s=H_(i);if(s)return{stream:s};const n=yield navigator.mediaDevices.getDisplayMedia(),a=()=>{t(W_())};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)}})))),W_=()=>(e,t)=>{const r=t(),i=H_(r);i&&(i.getTracks().forEach((e=>e.stop())),e(q_({stream:i})))},H_=e=>e.localScreenshare.stream;function K_(e){return Jr(`rtcConnection/event/${e}`)}fv({actionCreator:d_,effect:(e,{getState:t})=>{const r=t(),i=H_(r);i&&(null==i||i.getTracks().forEach((e=>{e.stop()})))}});const J_={rtcManagerCreated:K_("rtcManagerCreated"),rtcManagerDestroyed:K_("rtcManagerDestroyed"),streamAdded:K_("streamAdded")},Q_=["recorder","streamer"];function Z_(e,t=!1){const{streams:r,role:i}=e,s=Ov(e,["streams","role"]);return Object.assign(Object.assign({},s),{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,newJoiner:t})}function Y_(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function X_(e,t,r){const{participant:i,index:s}=Y_(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 eb(e,t,r,i){const{participant:s}=Y_(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}),X_(e,t,{streams:a})}function tb(e,t,r){const{participant:i}=Y_(e,t);return!i||i.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):X_(e,t,{streams:[...i.streams,{id:r,state:"to_accept"}]})}const rb=ui({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:i,state:s}of t.payload)r=eb(r,e,i,s);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:i}=t.payload;return X_(e,r,{stream:i})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:i}=t.payload;return tb(e,r,i)}},extraReducers:e=>{e.addCase(Tv.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)).filter((e=>!Q_.includes(e.role.roleName))).map((e=>Z_(e)))})})),e.addCase(J_.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:i,streamType:s}=t;let{streamId:n}=t;const{participant:a}=Y_(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?X_(e,r,{stream:i}):X_(e,r,{presentationStream:i})}(e,t.payload))),e.addCase(Tv.newClient,((e,t)=>{const{client:r}=t.payload;return Q_.includes(r.role.roleName)?e:function(e,t){const{participant:r}=Y_(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,Z_(r,!0))})),e.addCase(Tv.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(Tv.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:i}=t.payload;return X_(e,r,{isAudioEnabled:i})})),e.addCase(Tv.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:i}=t.payload;return X_(e,r,{isVideoEnabled:i})})),e.addCase(Tv.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 X_(e,s,{displayName:n,stickyReaction:a})})),e.addCase(Tv.screenshareStarted,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return tb(e,r,i)})),e.addCase(Tv.screenshareStopped,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return function(e,t,r){var i,s;const{participant:n}=Y_(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 X_(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:ib,participantStreamIdAdded:sb,streamStatusUpdated:nb}=rb.actions,ab=e=>e.remoteParticipants.remoteParticipants;Hr(ab,(e=>e.filter((e=>!Q_.includes(e.roleName))).length+1));const ob=ui({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase(cb.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(cb.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(cb.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),cb=hv("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>xv(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)}})))),db=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId},lb=Hr(yv,(e=>e.organization),Lv,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)));gv([lb],(({dispatch:e},t)=>{t&&e(cb())}));const pb=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(Tv.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(Tv.disconnect,(e=>["kicked","left"].includes(e.status)?Object.assign({},e):Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(Tv.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(Tv.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(Tv.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(Tv.roomLeft,(e=>Object.assign(Object.assign({},e),{status:"left"}))),e.addCase(zv,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"})))}}),{connectionStatusChanged:ub}=pb.actions,hb=()=>(e,t)=>{const r=t(),i=Wv(r).socket,s=(e=>e.app.roomName)(r),n=(e=>e.authorization.roomKey)(r),a=wv(r),o=(e=>e.app.userAgent)(r),c=Sv(r),d=db(r),l=S_(t()),p=C_(t()),u=(e=>e.localParticipant.clientClaim)(t());null==i||i.emit("join_room",Object.assign({avatarUrl:null,config:{isAudioEnabled:p,isVideoEnabled:l},deviceCapabilities:{canScreenshare:!0},displayName:a,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:n,roomName:s,userAgent:o,externalId:c},u&&{clientClaim:u})),e(ub("connecting"))},mb=e=>e.roomConnection.status;gv([Hr([yv,db,mb,Hv,D_,Cv],((e,t,r,i,s,n)=>!!(e&&("started"===s||n)&&i&&t&&["ready","reconnecting","disconnected"].includes(r))))],(({dispatch:e},t)=>{t&&e(hb())})),fv({actionCreator:Tv.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:i,resolution:s}=e,n=r();i===F_(n)&&("accepted"===s?(t(Dv(e.metadata.roomKey)),t(hb())):"rejected"===s&&t(ub("knock_rejected")))}}),fv({actionCreator:_v,effect:(e,{dispatch:t,getState:r})=>{const i=r();if("connected"===mb(i)){const e=Wv(i).socket;null==e||e.emit("leave_room"),t(ub("leaving"))}else Gv()}});function fb(e){return Object.assign(Object.assign({},e),{timestamp:Date.now()})}const gb=ui({name:"notifications",initialState:{emitter:new Gi,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:[]})}});gb.actions;const vb=e=>(t,r)=>{t(gb.actions.addNotification(e));const i=r(),s=_b(i);s.emit(e.type,e),s.emit("*",e)},_b=e=>e.notifications.emitter;function bb(e){return"recorder"===e.roleName}fv({actionCreator:Tv.chatMessage,effect:({payload:e},{dispatch:t,getState:r})=>{const i=r(),s=ab(i).find((({id:t})=>t===e.senderId));s?t(vb(fb({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")}}),fv({actionCreator:Tv.audioEnableRequested,effect:({payload:e},{dispatch:t,getState:r})=>{const{enable:i,requestedByClientId:s}=e,n=r(),a=ab(n).find((({id:e})=>e===s));a?t(vb(fb({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")}}),fv({actionCreator:Tv.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(!Ev(d))return;const l=ab(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=ab(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(vb(fb({type:c?"remoteHandRaised":"remoteHandLowered",message:`${l.displayName} ${c?"raised":"lowered"} their hand`,props:{client:l,stickyReaction:c}})))}}),gv([Kv],(({dispatch:e,getState:t},r)=>{const i=t(),s=mb(i);["left","kicked"].includes(s)||("disconnected"===r?e(vb(fb({type:"signalTrouble",message:"Network connection lost. Trying to reconnect you...",props:{}}))):"connected"===r&&e(vb(fb({type:"signalOk",message:"Network connection available",props:{}}))))}));const yb=ui({name:"room",initialState:{isLocked:!1},reducers:{},extraReducers:e=>{e.addCase(Tv.roomJoined,((e,t)=>{const{error:r,isLocked:i}=t.payload;return r?e:Object.assign(Object.assign({},e),{isLocked:Boolean(i)})})),e.addCase(Tv.roomLocked,((e,t)=>{const{isLocked:r}=t.payload;return Object.assign(Object.assign({},e),{isLocked:Boolean(r)})}))}});Hr(H_,ab,((e,t)=>{const r=[];e&&r.push({id:e.id||"local-screenshare",participantId:"local",hasAudioTrack:e.getTracks().some((e=>"audio"===e.kind)),stream:e,isLocal:!0});for(const e of t)e.presentationStream&&r.push({id:e.presentationStream.id||`pres-${e.id}`,participantId:e.id,hasAudioTrack:e.presentationStream.getTracks().some((e=>"audio"===e.kind)),stream:e.presentationStream,isLocal:!1});return r}));const wb=Hr(H_,B_,ab,((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||bb(e))continue;const{presentationStream:t}=e,r=Ov(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})),Sb=Hr(z_,wb,((e,t)=>[e,...t])),Cb=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(Ab(r)):"stream_added"===t?e(J_.streamAdded(r)):"rtc_manager_destroyed"===t&&e(Eb())}}),Rb={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"inactive",isAcceptingStreams:!1},Tb=ui({name:"rtcConnection",initialState:Rb,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({},Rb),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(zv,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"}))),e.addCase(Tv.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"===e.status?"ready":e.status})))}}),{resolutionReported:Pb,rtcDispatcherCreated:kb,rtcDisconnected:Db,rtcManagerCreated:Ib,rtcManagerDestroyed:Eb,rtcManagerInitialized:Ob,isAcceptingStreams:xb}=Tb.actions,Mb=()=>(e,t)=>{const r=t(),i=Wv(r).socket,s=Bb(r).rtcManagerDispatcher,n=S_(r),a=C_(r),o=Cv(r);if(s||!i)return;const c={getMediaConstraints:()=>({audio:a,video:n}),deferrable:e=>!e},d=new nv({emitter:Cb(e),serverSocket:i,webrtcProvider:c,features:{lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:o?Ha.createFactory():void 0}});e(kb(d))},jb=()=>(e,t)=>{const{rtcManager:r}=Bb(t());r&&r.disconnectAll(),e(Db())},Lb=e=>(t,r)=>{var i;t(xb(!0));const s=r(),n=Bb(s).rtcManager,a=ab(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(nb(c)),t(xb(!1))},Ab=e=>t=>{const{rtcManager:r}=e;t(Ib(r))},Nb=()=>(e,t)=>{const r=I_(t()),i=Bb(t()).rtcManager,s=S_(t()),n=C_(t());r&&i&&i.addNewStream("0",r,!n,!s),e(Ob())},Bb=e=>e.rtcConnection,Fb=e=>e.rtcConnection.rtcManagerInitialized,$b=e=>e.rtcConnection.status;fv({actionCreator:m_.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:i}=Bb(t()),s=I_(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)}))}}),fv({actionCreator:G_.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=Bb(t());null==i||i.addNewStream(r.id,r,!1,!0)}}),fv({actionCreator:q_,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:i}=Bb(t());null==i||i.removeStream(r.id,r,null)}}),fv({actionCreator:g_.fulfilled,effect:({payload:e},{getState:t})=>{var r;const i=I_(t()),{rtcManager:s}=Bb(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 Vb=Hr((e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),Jv,((e,t,r)=>!(e||t||!r)));gv([Vb],(({dispatch:e},t)=>{t&&e(Mb())}));const zb=Hr((e=>e.rtcConnection.rtcManager),Fb,D_,((e,t,r)=>!("started"!==r||!e||t)));gv([zb],(({dispatch:e},t)=>{t&&e(Nb())}));gv([Hr($b,yv,((e,t)=>!t&&!["inactive","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(jb())}));const Ub=Hr($b,ab,((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}));gv([Ub,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(Lb(t))}));const qb={audioEnabled:{actions:[j_.fulfilled],rtcEventName:"audioEnabled",getValue:e=>C_(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[L_.fulfilled],rtcEventName:"videoEnabled",getValue:e=>S_(e),getOutput:e=>({enabled:e})},localStream:{actions:[m_.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=I_(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:[G_.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=H_(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:[q_],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[M_],rtcEventName:"displayName",getValue:e=>wv(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>F_(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=>Sv(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>db(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>Kv(e),getOutput:e=>({status:e})},roomSessionId:{actions:[Tv.newClient,Tv.roomJoined,Tv.roomSessionEnded,Tv.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=>$b(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>Iv(e),getOutput:e=>({userRole:e})}},Gb=Object.values(qb).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)),Wb=e=>"object"==typeof e?JSON.stringify(e):e,Hb=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})})}}),Kb=()=>(e,t)=>{const r=t(),i=Bb(r).rtcManager;i&&(i.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(qb).forEach((({rtcEventName:t,getValue:s,getOutput:n})=>{var a;const o=s(r),c=Object.assign(Object.assign({},n(o)),{_time:Date.now()}),d=Wb(o);(null===(a=r.rtcAnalytics.reportedValues)||void 0===a?void 0:a[t])!==d&&(i.sendStatsCustomEvent(t,c),e(Jb({rtcEventName:t,value:o})))})))},{updateReportedValues:Jb}=Hb.actions;function Qb({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 Zb(e,t){return e.find((e=>e.clientId===t.clientId&&e.streamId===t.streamId))?e:e.concat(t)}fv({matcher:ti(...Gb),effect:({type:e},{getState:t,dispatch:r})=>{var i;const s=t(),n=Bb(s).rtcManager;if(!n)return;const a=Object.values(qb).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=Wb(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(Jb({rtcEventName:d,value:l})))}}),gv([Fb],(({dispatch:e},t)=>{t&&e(Kb())}));const Yb=ui({name:"spotlights",initialState:{sorted:[]},reducers:{addSpotlight(e,t){const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:Zb(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(Tv.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(Tv.spotlightAdded,((e,t)=>{const{clientId:r,streamId:i}=t.payload;return Object.assign(Object.assign({},e),{sorted:Zb(e.sorted,{clientId:r,streamId:i})})})),e.addCase(Tv.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(Tv.clientKicked,Tv.clientLeft),((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>e.clientId!==r))})}))}}),{addSpotlight:Xb,removeSpotlight:ey}=Yb.actions,ty=e=>e.spotlights.sorted;Hr(B_,ty,((e,t)=>function({spotlights:e,isPresentation:t,clientId:r,stream:i}){return!!e.find((e=>{const s=Qb({isPresentation:t,stream:i});return e.clientId===r&&e.streamId===s}))}({clientId:e.id,stream:e.stream,spotlights:t}))),Hr(Sb,ty,((e,t)=>function(e,t){return e.reduce(((e,r)=>{const i=t.find((e=>r.clientId===e.clientId&&r.streamId===Qb(e)));return i&&!e.includes(i)&&e.push(i),e}),[])}(t,e))),fv({actionCreator:G_.fulfilled,effect:({payload:e},{getState:t,dispatch:r})=>{const{stream:i}=e,s=t(),n=B_(s);n&&r(Xb({clientId:n.id,streamId:i.id}))}}),fv({actionCreator:q_,effect:({payload:e},{getState:t,dispatch:r})=>{const{stream:i}=e,s=t(),n=B_(s);n&&r(ey({clientId:n.id,streamId:i.id}))}});const ry=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})}});ry.actions;const iy=ui({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(Tv.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(Tv.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(Tv.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}});let sy;!function(e){const t=Object.keys(e),r={};for(let i=0;i<t.length;i++){const s=t[i];void 0===e[s]&&zt(`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:vv.reducer,authorization:kv.reducer,chat:Zv.reducer,cloudRecording:Yv.reducer,deviceCredentials:Mv.reducer,localMedia:Xv.reducer,localParticipant:x_.reducer,localScreenshare:U_.reducer,notifications:gb.reducer,organization:ob.reducer,remoteParticipants:rb.reducer,room:yb.reducer,roomConnection:pb.reducer,rtcAnalytics:Hb.reducer,rtcConnection:Tb.reducer,signalConnection:Av.reducer,spotlights:Yb.reducer,streaming:ry.reducer,waitingParticipants:iy.reducer});try{sy=self.localStorage}catch(wy){sy={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}const ny=["aec","agc","audio","audioDenoiser","autoHideSelfView","autoSpotlight","background","bottomToolbar","breakout","cameraAccess","chat","embed","emptyRoomInvitation","floatSelf","help","leaveButton","locking","localization","logo","lowData","moreButton","participantCount","personality","pipButton","precallCeremony","precallCeremonyCanSkip","precallPermissionsHelpLink","precallReview","people","recording","roomIntegrations","screenshare","settingsButton","skipMediaPermissionPrompt","subgridLabels","timer","toolbarDarkText","topToolbar","video"];var ay,oy;ay="WherebyEmbed",oy={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",...ny].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")},leaveRoom(){this._postCommand("leave_room")},startRecording(){this._postCommand("start_recording")},stopRecording(){this._postCommand("stop_recording")},startStreaming(){this._postCommand("start_streaming")},stopStreaming(){this._postCommand("stop_streaming")},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,lang:i,metadata:s,externalid:n,minimal:a,room:o,groups:c,virtualbackgroundurl:d,title:l}=this;let p,u;try{({roomUrl:p,subdomain:u}=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)}}(o,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({jsApi:!0,we:"1",iframeSource:u},t&&{displayName:t}),i&&{lang:i}),s&&{metadata:s}),n&&{externalId:n}),c&&{groups:c}),d&&{virtualBackgroundUrl:d}),e&&{avatarUrl:e}),r&&{cameraEffect:r}),null!=a&&{embed:a}),ny.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
13
  <iframe
14
14
  title=${l||"Video calling component"}
15
15
  ref=${this.iframe}
16
16
  src=${this.roomUrl}
17
17
  allow="autoplay; camera; microphone; fullscreen; speaker; display-capture; media-capture" />
18
- `}},("string"==typeof iy?Nt(iy,sy,""):Nt(iy.name,iy,"")).Class;return{sdkVersion:"1"}}();
18
+ `}},("string"==typeof ay?Nt(ay,oy,""):Nt(ay.name,ay,"")).Class;return{sdkVersion:"1"}}();