@livedigital/client 2.12.0-add-onissue-callback.3 → 2.12.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.
- package/dist/constants/events.d.ts +2 -0
- package/dist/engine/DefaultEngineDependenciesFactory.d.ts +4 -3
- package/dist/engine/Logger.d.ts +3 -10
- package/dist/engine/Peer.d.ts +3 -4
- package/dist/engine/PeerConsumer.d.ts +2 -6
- package/dist/engine/index.d.ts +5 -10
- package/dist/engine/media/index.d.ts +0 -2
- package/dist/engine/media/tracks/BaseTrack.d.ts +2 -6
- package/dist/engine/media/tracks/PeerTrack.d.ts +4 -0
- package/dist/engine/network/Socket.d.ts +2 -5
- package/dist/engine/network/index.d.ts +0 -2
- package/dist/engine/system/index.d.ts +4 -2
- package/dist/engine/wid/types.d.ts +2 -2
- package/dist/helpers/retry.d.ts +0 -2
- package/dist/index.d.ts +1 -4
- package/dist/index.es.js +1 -1
- package/dist/index.js +2 -2
- package/dist/types/common.d.ts +4 -12
- package/dist/types/engine.d.ts +5 -15
- package/package.json +1 -1
- package/src/constants/events.ts +2 -0
- package/src/engine/DefaultEngineDependenciesFactory.ts +13 -18
- package/src/engine/Logger.ts +17 -43
- package/src/engine/Peer.ts +68 -38
- package/src/engine/PeerConsumer.ts +3 -12
- package/src/engine/handlers/ChannelEventHandler.ts +1 -4
- package/src/engine/handlers/MediaSoupEventHandler.ts +2 -37
- package/src/engine/index.ts +22 -55
- package/src/engine/media/index.ts +4 -17
- package/src/engine/media/tracks/BaseTrack.ts +3 -13
- package/src/engine/media/tracks/PeerTrack.ts +31 -12
- package/src/engine/network/Socket.ts +3 -10
- package/src/engine/network/index.ts +2 -6
- package/src/engine/system/index.ts +7 -7
- package/src/engine/wid/WebRTCIssueDetector.ts +2 -2
- package/src/engine/wid/detectors/NetworkIssueDetector.ts +16 -13
- package/src/engine/wid/types.ts +2 -2
- package/src/helpers/retry.ts +2 -4
- package/src/index.ts +1 -14
- package/src/types/common.ts +5 -15
- package/src/types/engine.ts +5 -18
- package/dist/constants/common.d.ts +0 -11
- package/src/constants/common.ts +0 -13
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var e=require("events");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n,
|
|
1
|
+
"use strict";var e=require("events");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,i,n,s=t(e);
|
|
2
2
|
/*! *****************************************************************************
|
|
3
3
|
Copyright (c) Microsoft Corporation.
|
|
4
4
|
|
|
@@ -12,4 +12,4 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
|
12
12
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
13
13
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
14
14
|
PERFORMANCE OF THIS SOFTWARE.
|
|
15
|
-
***************************************************************************** */function a(e,t,r,n){return new(r||(r=Promise))((function(i,s){function a(e){try{c(n.next(e))}catch(e){s(e)}}function o(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}c((n=n.apply(e,t||[])).next())}))}function o(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)}function c(e,t,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(e,r):i?i.value=r:t.set(e,r),r}class d extends e.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}safeEmit(e,...t){const r=this.listenerCount(e);try{return this.emit(e,...t)}catch(e){return Boolean(r)}}}!function(e){e.VIDEO="video",e.AUDIO="audio"}(r||(r={})),function(e){e[e.BAD=1]="BAD",e[e.MEDIUM=2]="MEDIUM",e[e.GOOD=3]="GOOD"}(n||(n={})),function(e){e.Camera="camera",e.Microphone="microphone",e.ScreenVideo="screen-video",e.ScreenAudio="screen-audio",e.Unknown="unknown"}(i||(i={}));const p="channel.event",l="channel.join",u="channel.getPeers",h="peer.disconnected",f="channel-event",m="peer-joined",g="peer-left",y="channel-rejoin-required",v="devices-list-updated",b="media-published",w="media-unpublished",_="connection-quality-changed",S="track-start",R="track-end";var k;!function(e){e.Connected="connected",e.Reconnecting="reconnecting",e.Reconnected="reconnected",e.Disconnected="disconnected",e.Reconnect="reconnect",e.Error="error"}(k||(k={}));const C="peer.newProducer",P="producer.close",T="producer.pause",E="producer.scoreChanged",D="producer.setMaxSpatialLayer",M="producer.requestMaxSpatialLayer",O="consumer.create",x="consumer.close",I="consumer.pause",L="consumer.resume",j="consumer.scoreChanged",A="consumer.changeConsumerPreferredLayers",F="consumer.setConsumerPriority",N="transport.create",B="transport.close",U="transport.connect",q="transport.produce",$="connectionstatechange",z="getIceParameters",V="connect",W="produce";var G="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function H(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})})),t}var K={exports:{}},Q=1e3,J=6e4,Y=60*J,X=24*Y,Z=function(e,t){t=t||{};var r=typeof e;if("string"===r&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*r;case"weeks":case"week":case"w":return 6048e5*r;case"days":case"day":case"d":return r*X;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Y;case"minutes":case"minute":case"mins":case"min":case"m":return r*J;case"seconds":case"second":case"secs":case"sec":case"s":return 1e3*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}(e);if("number"===r&&isFinite(e))return t.long?function(e){var t=Math.abs(e);if(t>=X)return ee(e,t,X,"day");if(t>=Y)return ee(e,t,Y,"hour");if(t>=J)return ee(e,t,J,"minute");if(t>=1e3)return ee(e,t,1e3,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=X)return Math.round(e/X)+"d";if(t>=Y)return Math.round(e/Y)+"h";if(t>=J)return Math.round(e/J)+"m";if(t>=Q)return Math.round(e/Q)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function ee(e,t,r,n){var i=t>=1.5*r;return Math.round(e/r)+" "+n+(i?"s":"")}var te=function(e){function t(e){let n,i,s,a=null;function o(...e){if(!o.enabled)return;const r=o,i=Number(new Date),s=i-(n||i);r.diff=s,r.prev=n,r.curr=i,n=i,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,((n,i)=>{if("%%"===n)return"%";a++;const s=t.formatters[i];if("function"==typeof s){const t=e[a];n=s.call(r,t),e.splice(a,1),a--}return n})),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:(i!==t.namespaces&&(i=t.namespaces,s=t.enabled(e)),s),set:e=>{a=e}}),"function"==typeof t.init&&t.init(o),o}function r(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function n(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(n),...t.skips.map(n).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 n=("string"==typeof e?e:"").split(/[\s,]+/),i=n.length;for(r=0;r<i;r++)n[r]&&("-"===(e=n[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.substr(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,n;for(r=0,n=t.skips.length;r<n;r++)if(t.skips[r].test(e))return!1;for(r=0,n=t.names.length;r<n;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=Z,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 n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(i=n))})),t.splice(i,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=te(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(K,K.exports);var re=K.exports;const ne=3,ie=4,se=6,ae=7;var oe,ce,de;class pe{constructor(e){oe.set(this,void 0),ce.set(this,void 0),de.set(this,void 0);const{logLevel:t,namespace:r,onLogMessage:n}=e;c(this,oe,r,"f"),c(this,ce,t,"f"),this._debug=re("LiveDigital").extend("debug").extend(o(this,oe,"f")),this._info=re("LiveDigital").extend("info").extend(o(this,oe,"f")),this._warn=re("LiveDigital").extend("warn").extend(o(this,oe,"f")),this._error=re("LiveDigital").extend("error").extend(o(this,oe,"f")),this._debug.log=console.info.bind(console),this._info.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console),c(this,de,((e,...t)=>{"function"==typeof n&&n(e,...t)}),"f")}debug(e,...t){this._debug(e,...t),o(this,ce,"f")>=ae&&o(this,de,"f").call(this,e,...t)}info(e,...t){this._debug(e,...t),o(this,ce,"f")>=se&&o(this,de,"f").call(this,e,...t)}warn(e,...t){this._warn(e,...t),o(this,ce,"f")>=ie&&o(this,de,"f").call(this,e,...t)}error(e,...t){this._error(e,...t),o(this,ce,"f")>=ne&&o(this,de,"f").call(this,e,...t)}}oe=new WeakMap,ce=new WeakMap,de=new WeakMap;class le{constructor(e){this.score=10;const{id:t,kind:r,peerId:n,label:i}=e;this.id=t,this.kind=r,this.peerId=n,this.label=i,this.encodings=e.encodings,this.trackTransformParams=e.trackTransformParams,this.maxSpatialLayer=e.maxSpatialLayer}}var ue={},he={exports:{}},fe=1e3,me=60*fe,ge=60*me,ye=24*ge,ve=7*ye,be=365.25*ye,we=function(e,t){t=t||{};var r=typeof e;if("string"===r&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return r*be;case"weeks":case"week":case"w":return r*ve;case"days":case"day":case"d":return r*ye;case"hours":case"hour":case"hrs":case"hr":case"h":return r*ge;case"minutes":case"minute":case"mins":case"min":case"m":return r*me;case"seconds":case"second":case"secs":case"sec":case"s":return r*fe;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}(e);if("number"===r&&isFinite(e))return t.long?function(e){var t=Math.abs(e);if(t>=ye)return _e(e,t,ye,"day");if(t>=ge)return _e(e,t,ge,"hour");if(t>=me)return _e(e,t,me,"minute");if(t>=fe)return _e(e,t,fe,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=ye)return Math.round(e/ye)+"d";if(t>=ge)return Math.round(e/ge)+"h";if(t>=me)return Math.round(e/me)+"m";if(t>=fe)return Math.round(e/fe)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function _e(e,t,r,n){var i=t>=1.5*r;return Math.round(e/r)+" "+n+(i?"s":"")}var Se=function(e){function t(e){let n,i,s,a=null;function o(...e){if(!o.enabled)return;const r=o,i=Number(new Date),s=i-(n||i);r.diff=s,r.prev=n,r.curr=i,n=i,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,((n,i)=>{if("%%"===n)return"%";a++;const s=t.formatters[i];if("function"==typeof s){const t=e[a];n=s.call(r,t),e.splice(a,1),a--}return n})),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:(i!==t.namespaces&&(i=t.namespaces,s=t.enabled(e)),s),set:e=>{a=e}}),"function"==typeof t.init&&t.init(o),o}function r(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function n(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(n),...t.skips.map(n).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 n=("string"==typeof e?e:"").split(/[\s,]+/),i=n.length;for(r=0;r<i;r++)n[r]&&("-"===(e=n[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.substr(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,n;for(r=0,n=t.skips.length;r<n;r++)if(t.skips[r].test(e))return!1;for(r=0,n=t.names.length;r<n;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=we,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 n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(i=n))})),t.splice(i,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=Se(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(he,he.exports);var Re={},ke={exports:{}};ke.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,c=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(c[0][a]>c[1][a])return 1;if(c[0][a]===c[1][a]){if(a===o)return 0;a-=1}else if(c[0][a]<c[1][a])return-1}},e.map=function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n},e.find=function(e,t){var r,n;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,n=e.length;r<n;r+=1){var i=e[r];if(t(i,r))return i}},e.assign=function(e){for(var t,r,n=e,i=arguments.length,s=new Array(i>1?i-1:0),a=1;a<i;a++)s[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(s));var o=function(){var e=s[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){n[t]=e[t]}))};for(t=0,r=s.length;t<r;t+=1)o();return e},e.getBrowserAlias=function(e){return n.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return n.BROWSER_MAP[e]||""},e}();t.default=i,e.exports=t.default},18:function(e,t,r){t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0,t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"},t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"},t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"},t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"},t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"}},90:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(91))&&n.__esModule?n:{default:n},s=r(18);function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var o=function(){function e(){}var t,r,n;return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw new Error("UserAgent should be a string");return new i.default(e,t)},e.parse=function(e){return new i.default(e).getResult()},t=e,n=[{key:"BROWSER_MAP",get:function(){return s.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return s.ENGINE_MAP}},{key:"OS_MAP",get:function(){return s.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return s.PLATFORMS_MAP}}],(r=null)&&a(t.prototype,r),n&&a(t,n),e}();t.default=o,e.exports=t.default},91:function(e,t,r){t.__esModule=!0,t.default=void 0;var n=c(r(92)),i=c(r(93)),s=c(r(94)),a=c(r(95)),o=c(r(17));function c(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(n.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(i.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(s.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},n=0,i={},s=0;if(Object.keys(e).forEach((function(t){var a=e[t];"string"==typeof a?(i[t]=a,s+=1):"object"==typeof a&&(r[t]=a,n+=1)})),n>0){var a=Object.keys(r),c=o.default.find(a,(function(e){return t.isOS(e)}));if(c){var d=this.satisfies(r[c]);if(void 0!==d)return d}var p=o.default.find(a,(function(e){return t.isPlatform(e)}));if(p){var l=this.satisfies(r[p]);if(void 0!==l)return l}}if(s>0){var u=Object.keys(i),h=o.default.find(u,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18),a=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18),a=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:s.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:s.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18),a=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default}});var Ce={},Pe=G&&G.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ce,"__esModule",{value:!0}),Ce.Logger=void 0;const Te=Pe(he.exports),Ee="mediasoup-client";Ce.Logger=class{constructor(e){e?(this._debug=(0,Te.default)(`${Ee}:${e}`),this._warn=(0,Te.default)(`${Ee}:WARN:${e}`),this._error=(0,Te.default)(`${Ee}:ERROR:${e}`)):(this._debug=(0,Te.default)(Ee),this._warn=(0,Te.default)(`${Ee}:WARN`),this._error=(0,Te.default)(`${Ee}: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 De={};Object.defineProperty(De,"__esModule",{value:!0}),De.EnhancedEventEmitter=void 0;const Me=s.default,Oe=new Ce.Logger("EnhancedEventEmitter");class xe extends Me.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}safeEmit(e,...t){const r=this.listenerCount(e);try{return this.emit(e,...t)}catch(t){return Oe.error("safeEmit() | event listener threw an error [event:%s]:%o",e,t),Boolean(r)}}async safeEmitAsPromise(e,...t){return new Promise(((r,n)=>{try{this.emit(e,...t,r,n)}catch(t){Oe.error("safeEmitAsPromise() | event listener threw an error [event:%s]:%o",e,t),n(t)}}))}}De.EnhancedEventEmitter=xe;var Ie={};Object.defineProperty(Ie,"__esModule",{value:!0}),Ie.InvalidStateError=Ie.UnsupportedError=void 0;class Le extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Le):this.stack=new Error(e).stack}}Ie.UnsupportedError=Le;class je extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,je):this.stack=new Error(e).stack}}Ie.InvalidStateError=je;var Ae={};Object.defineProperty(Ae,"__esModule",{value:!0}),Ae.generateRandomNumber=Ae.clone=void 0,Ae.clone=function(e,t){return void 0===e?t:JSON.parse(JSON.stringify(e))},Ae.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var Fe={},Ne={};!function(e){const t=K.exports("h264-profile-level-id");t.log=console.info.bind(console);e.ProfileConstrainedBaseline=1,e.ProfileBaseline=2,e.ProfileMain=3,e.ProfileConstrainedHigh=4,e.ProfileHigh=5;const r=10;e.Level1_b=0,e.Level1=10,e.Level1_1=11,e.Level1_2=12,e.Level1_3=13,e.Level2=20,e.Level2_1=21,e.Level2_2=22,e.Level3=30,e.Level3_1=31,e.Level3_2=32,e.Level4=40,e.Level4_1=41,e.Level4_2=42,e.Level5=50,e.Level5_1=51,e.Level5_2=52;class n{constructor(e,t){this.profile=e,this.level=t}}e.ProfileLevelId=n;const i=new n(1,31);class s{constructor(e){this._mask=~c("x",e),this._maskedValue=c("1",e)}isMatch(e){return this._maskedValue===(e&this._mask)}}class a{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const o=[new a(66,new s("x1xx0000"),1),new a(77,new s("1xxx0000"),1),new a(88,new s("11xx0000"),1),new a(66,new s("x0xx0000"),2),new a(88,new s("10xx0000"),2),new a(77,new s("0x0x0000"),3),new a(100,new s("00000000"),5),new a(100,new s("00001100"),4)];function c(e,t){return(t[0]===e)<<7|(t[1]===e)<<6|(t[2]===e)<<5|(t[3]===e)<<4|(t[4]===e)<<3|(t[5]===e)<<2|(t[6]===e)<<1|(t[7]===e)<<0}function d(e={}){const t=e["level-asymmetry-allowed"];return 1===t||"1"===t}e.parseProfileLevelId=function(e){if("string"!=typeof e||6!==e.length)return null;const r=parseInt(e,16);if(0===r)return null;const i=255&r,s=r>>8&255,a=r>>16&255;let c;switch(i){case 11:c=0!=(16&s)?0:11;break;case 10:case 12:case 13:case 20:case 21:case 22:case 30:case 31:case 32:case 40:case 41:case 42:case 50:case 51:case 52:c=i;break;default:return t("parseProfileLevelId() | unrecognized level_idc:%s",i),null}for(const e of o)if(a===e.profile_idc&&e.profile_iop.isMatch(s))return new n(e.profile,c);return t("parseProfileLevelId() | unrecognized profile_idc/profile_iop combination"),null},e.profileLevelIdToString=function(e){if(0==e.level)switch(e.profile){case 1:return"42f00b";case 2:return"42100b";case 3:return"4d100b";default:return t("profileLevelIdToString() | Level 1_b not is allowed for profile:%s",e.profile),null}let r;switch(e.profile){case 1:r="42e0";break;case 2:r="4200";break;case 3:r="4d00";break;case 4:r="640c";break;case 5:r="6400";break;default:return t("profileLevelIdToString() | unrecognized profile:%s",e.profile),null}let n=e.level.toString(16);return 1===n.length&&(n=`0${n}`),`${r}${n}`},e.parseSdpProfileLevelId=function(t={}){const r=t["profile-level-id"];return r?e.parseProfileLevelId(r):i},e.isSameProfile=function(t={},r={}){const n=e.parseSdpProfileLevelId(t),i=e.parseSdpProfileLevelId(r);return Boolean(n&&i&&n.profile===i.profile)},e.generateProfileLevelIdForAnswer=function(i={},s={}){if(!i["profile-level-id"]&&!s["profile-level-id"])return t("generateProfileLevelIdForAnswer() | no profile-level-id in local and remote params"),null;const a=e.parseSdpProfileLevelId(i),o=e.parseSdpProfileLevelId(s);if(!a)throw new TypeError("invalid local_profile_level_id");if(!o)throw new TypeError("invalid remote_profile_level_id");if(a.profile!==o.profile)throw new TypeError("H264 Profile mismatch");const c=d(i)&&d(s),p=a.level,l=o.level,u=function(e,t){return 0===e?t!==r&&0!==t:0===t?e!==r:e<t}(h=p,f=l)?h:f;var h,f;const m=c?p:u;return t("generateProfileLevelIdForAnswer() | result: [profile:%s, level:%s]",a.profile,m),e.profileLevelIdToString(new n(a.profile,m))}}(Ne);var Be=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Ue=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),qe=G&&G.__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)&&Be(t,e,r);return Ue(t,e),t};Object.defineProperty(Fe,"__esModule",{value:!0}),Fe.canReceive=Fe.canSend=Fe.generateProbatorRtpParameters=Fe.reduceCodecs=Fe.getSendingRemoteRtpParameters=Fe.getSendingRtpParameters=Fe.getRecvRtpCapabilities=Fe.getExtendedRtpCapabilities=Fe.validateSctpStreamParameters=Fe.validateSctpParameters=Fe.validateNumSctpStreams=Fe.validateSctpCapabilities=Fe.validateRtcpParameters=Fe.validateRtpEncodingParameters=Fe.validateRtpHeaderExtensionParameters=Fe.validateRtpCodecParameters=Fe.validateRtpParameters=Fe.validateRtpHeaderExtension=Fe.validateRtcpFeedback=Fe.validateRtpCodecCapability=Fe.validateRtpCapabilities=void 0;const $e=qe(Ne),ze=qe(Ae);function Ve(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)We(t)}function We(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 Ge(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 He(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)Ke(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)Qe(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)Je(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),Ye(e.rtcp)}function Ke(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)We(t)}function Qe(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 Je(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 Ye(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)}function Xe(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")}function Ze(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function et(e,t,{strict:r=!1,modify:n=!1}={}){const i=e.mimeType.toLowerCase();if(i!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(i){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!$e.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=$e.generateProfileLevelIdForAnswer(e.parameters,t.parameters)}catch(e){return!1}n&&(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 tt(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function rt(e,t){const r=[];for(const n of e.rtcpFeedback||[]){const e=(t.rtcpFeedback||[]).find((e=>e.type===n.type&&(e.parameter===n.parameter||!e.parameter&&!n.parameter)));e&&r.push(e)}return r}Fe.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)Ve(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)Ge(t)},Fe.validateRtpCodecCapability=Ve,Fe.validateRtcpFeedback=We,Fe.validateRtpHeaderExtension=Ge,Fe.validateRtpParameters=He,Fe.validateRtpCodecParameters=Ke,Fe.validateRtpHeaderExtensionParameters=Qe,Fe.validateRtpEncodingParameters=Je,Fe.validateRtcpParameters=Ye,Fe.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");Xe(e.numStreams)},Fe.validateNumSctpStreams=Xe,Fe.validateSctpParameters=function(e){if("object"!=typeof e)throw new TypeError("params is not an object");if("number"!=typeof e.port)throw new TypeError("missing params.port");if("number"!=typeof e.OS)throw new TypeError("missing params.OS");if("number"!=typeof e.MIS)throw new TypeError("missing params.MIS");if("number"!=typeof e.maxMessageSize)throw new TypeError("missing params.maxMessageSize")},Fe.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")},Fe.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const n of t.codecs||[]){if(Ze(n))continue;const t=(e.codecs||[]).find((e=>et(e,n,{strict:!0,modify:!0})));if(!t)continue;const i={mimeType:t.mimeType,kind:t.kind,clockRate:t.clockRate,channels:t.channels,localPayloadType:t.preferredPayloadType,localRtxPayloadType:void 0,remotePayloadType:n.preferredPayloadType,remoteRtxPayloadType:void 0,localParameters:t.parameters,remoteParameters:n.parameters,rtcpFeedback:rt(t,n)};r.codecs.push(i)}for(const n of r.codecs){const r=e.codecs.find((e=>Ze(e)&&e.parameters.apt===n.localPayloadType)),i=t.codecs.find((e=>Ze(e)&&e.parameters.apt===n.remotePayloadType));r&&i&&(n.localRtxPayloadType=r.preferredPayloadType,n.remoteRtxPayloadType=i.preferredPayloadType)}for(const n of t.headerExtensions){const t=e.headerExtensions.find((e=>tt(e,n)));if(!t)continue;const i={kind:n.kind,uri:n.uri,sendId:t.preferredId,recvId:n.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(n.direction){case"sendrecv":i.direction="sendrecv";break;case"recvonly":i.direction="sendonly";break;case"sendonly":i.direction="recvonly";break;case"inactive":i.direction="inactive"}r.headerExtensions.push(i)}return r},Fe.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 n={mimeType:`${r.kind}/rtx`,kind:r.kind,preferredPayloadType:r.remoteRtxPayloadType,clockRate:r.clockRate,parameters:{apt:r.remotePayloadType},rtcpFeedback:[]};t.codecs.push(n)}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},Fe.getSendingRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const n of t.codecs){if(n.kind!==e)continue;const t={mimeType:n.mimeType,payloadType:n.localPayloadType,clockRate:n.clockRate,channels:n.channels,parameters:n.localParameters,rtcpFeedback:n.rtcpFeedback};if(r.codecs.push(t),n.localRtxPayloadType){const e={mimeType:`${n.kind}/rtx`,payloadType:n.localRtxPayloadType,clockRate:n.clockRate,parameters:{apt:n.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const n of t.headerExtensions){if(n.kind&&n.kind!==e||"sendrecv"!==n.direction&&"sendonly"!==n.direction)continue;const t={uri:n.uri,id:n.sendId,encrypt:n.encrypt,parameters:{}};r.headerExtensions.push(t)}return r},Fe.getSendingRemoteRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const n of t.codecs){if(n.kind!==e)continue;const t={mimeType:n.mimeType,payloadType:n.localPayloadType,clockRate:n.clockRate,channels:n.channels,parameters:n.remoteParameters,rtcpFeedback:n.rtcpFeedback};if(r.codecs.push(t),n.localRtxPayloadType){const e={mimeType:`${n.kind}/rtx`,payloadType:n.localRtxPayloadType,clockRate:n.clockRate,parameters:{apt:n.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const n of t.headerExtensions){if(n.kind&&n.kind!==e||"sendrecv"!==n.direction&&"sendonly"!==n.direction)continue;const t={uri:n.uri,id:n.sendId,encrypt:n.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},Fe.reduceCodecs=function(e,t){const r=[];if(t){for(let n=0;n<e.length;++n)if(et(e[n],t)){r.push(e[n]),Ze(e[n+1])&&r.push(e[n+1]);break}if(0===r.length)throw new TypeError("no matching codec found")}else r.push(e[0]),Ze(e[1])&&r.push(e[1]);return r},Fe.generateProbatorRtpParameters=function(e){He(e=ze.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},Fe.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},Fe.canReceive=function(e,t){if(He(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var nt={},it={},st=G&&G.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(i,s){function a(e){try{c(n.next(e))}catch(e){s(e)}}function o(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}c((n=n.apply(e,t||[])).next())}))};Object.defineProperty(it,"__esModule",{value:!0});it.AwaitQueue=class{constructor({ClosedErrorClass:e=Error,StoppedErrorClass:t=Error}={ClosedErrorClass:Error,StoppedErrorClass:Error}){this.closed=!1,this.pendingTasks=[],this.ClosedErrorClass=Error,this.StoppedErrorClass=Error,this.ClosedErrorClass=e,this.StoppedErrorClass=t}get size(){return this.pendingTasks.length}close(){if(!this.closed){this.closed=!0;for(const e of this.pendingTasks)e.stopped=!0,e.reject(new this.ClosedErrorClass("AwaitQueue closed"));this.pendingTasks.length=0}}push(e,t){return st(this,void 0,void 0,(function*(){if(this.closed)throw new this.ClosedErrorClass("AwaitQueue closed");if("function"!=typeof e)throw new TypeError("given task is not a function");if(!e.name&&t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,n)=>{const i={task:e,name:t,resolve:r,reject:n,stopped:!1,enqueuedAt:new Date,executedAt:void 0};this.pendingTasks.push(i),1===this.pendingTasks.length&&this.next()}))}))}stop(){if(!this.closed){for(const e of this.pendingTasks)e.stopped=!0,e.reject(new this.StoppedErrorClass("AwaitQueue stopped"));this.pendingTasks.length=0}}dump(){const e=new Date;return this.pendingTasks.map((t=>({task:t.task,name:t.name,enqueuedTime:t.executedAt?t.executedAt.getTime()-t.enqueuedAt.getTime():e.getTime()-t.enqueuedAt.getTime(),executingTime:t.executedAt?e.getTime()-t.executedAt.getTime():0})))}next(){return st(this,void 0,void 0,(function*(){const e=this.pendingTasks[0];e&&(yield this.executeTask(e),this.pendingTasks.shift(),this.next())}))}executeTask(e){return st(this,void 0,void 0,(function*(){if(!e.stopped){e.executedAt=new Date;try{const t=yield e.task();if(e.stopped)return;e.resolve(t)}catch(t){if(e.stopped)return;e.reject(t)}}}))}};var at={};Object.defineProperty(at,"__esModule",{value:!0}),at.Producer=void 0;const ot=De,ct=Ie,dt=new Ce.Logger("Producer");class pt extends ot.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:n,rtpParameters:i,stopTracks:s,disableTrackOnPause:a,zeroRtpOnPause:o,appData:c}){super(),this._closed=!1,this._observer=new ot.EnhancedEventEmitter,dt.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=n,this._kind=n.kind,this._rtpParameters=i,this._paused=!!a&&!n.enabled,this._maxSpatialLayer=void 0,this._stopTracks=s,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){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(dt.debug("close()"),this._closed=!0,this._destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(dt.debug("transportClosed()"),this._closed=!0,this._destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new ct.InvalidStateError("closed");return this.safeEmitAsPromise("@getstats")}pause(){dt.debug("pause()"),this._closed?dt.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&this.safeEmitAsPromise("@replacetrack",null).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){dt.debug("resume()"),this._closed?dt.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&this.safeEmitAsPromise("@replacetrack",this._track).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(dt.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new ct.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new ct.InvalidStateError("track ended");e!==this._track?(this._zeroRtpOnPause&&this._paused||await this.safeEmitAsPromise("@replacetrack",e),this._destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this._handleTrack()):dt.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new ct.InvalidStateError("closed");if("video"!==this._kind)throw new ct.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await this.safeEmitAsPromise("@setmaxspatiallayer",e),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new ct.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await this.safeEmitAsPromise("@setrtpencodingparameters",e)}_onTrackEnded(){dt.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){}}}at.Producer=pt;var lt={};Object.defineProperty(lt,"__esModule",{value:!0}),lt.Consumer=void 0;const ut=De,ht=Ie,ft=new Ce.Logger("Consumer");class mt extends ut.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:n,track:i,rtpParameters:s,appData:a}){super(),this._closed=!1,this._observer=new ut.EnhancedEventEmitter,ft.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=n,this._track=i,this._rtpParameters=s,this._paused=!i.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){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(ft.debug("close()"),this._closed=!0,this._destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(ft.debug("transportClosed()"),this._closed=!0,this._destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new ht.InvalidStateError("closed");return this.safeEmitAsPromise("@getstats")}pause(){ft.debug("pause()"),this._closed?ft.error("pause() | Consumer closed"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){ft.debug("resume()"),this._closed?ft.error("resume() | Consumer closed"):(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume"))}_onTrackEnded(){ft.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){}}}lt.Consumer=mt;var gt={};Object.defineProperty(gt,"__esModule",{value:!0}),gt.DataProducer=void 0;const yt=De,vt=Ie,bt=new Ce.Logger("DataProducer");class wt extends yt.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:n}){super(),this._closed=!1,this._observer=new yt.EnhancedEventEmitter,bt.debug("constructor()"),this._id=e,this._dataChannel=t,this._sctpStreamParameters=r,this._appData=n,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){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(bt.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(bt.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(bt.debug("send()"),this._closed)throw new vt.InvalidStateError("closed");this._dataChannel.send(e)}_handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(bt.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?bt.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):bt.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(bt.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||bt.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}gt.DataProducer=wt;var _t={};Object.defineProperty(_t,"__esModule",{value:!0}),_t.DataConsumer=void 0;const St=De,Rt=new Ce.Logger("DataConsumer");class kt extends St.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:n,appData:i}){super(),this._closed=!1,this._observer=new St.EnhancedEventEmitter,Rt.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=n,this._appData=i,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){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(Rt.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Rt.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}_handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Rt.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?Rt.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Rt.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Rt.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}_t.DataConsumer=kt;var Ct=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Pt=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Tt=G&&G.__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)&&Ct(t,e,r);return Pt(t,e),t};Object.defineProperty(nt,"__esModule",{value:!0}),nt.Transport=void 0;const Et=it,Dt=Ce,Mt=De,Ot=Ie,xt=Tt(Ae),It=Tt(Fe),Lt=at,jt=lt,At=gt,Ft=_t;class Nt{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}const Bt=new Dt.Logger("Transport");class Ut extends Mt.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:n,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p,handlerFactory:l,extendedRtpCapabilities:u,canProduceByKind:h}){super(),this._closed=!1,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 Et.AwaitQueue({ClosedErrorClass:Ot.InvalidStateError}),this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._observer=new Mt.EnhancedEventEmitter,Bt.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=s?s.maxMessageSize:null,delete(c=xt.clone(c,{})).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=l(),this._handler.run({direction:e,iceParameters:r,iceCandidates:n,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,extendedRtpCapabilities:u}),this._appData=p,this._handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){if(!this._closed){Bt.debug("close()"),this._closed=!0,this._awaitQueue.close(),this._handler.close();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 Ot.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(Bt.debug("restartIce()"),this._closed)throw new Ot.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(Bt.debug("updateIceServers()"),this._closed)throw new Ot.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:n,stopTracks:i=!0,disableTrackOnPause:s=!0,zeroRtpOnPause:a=!1,appData:o={}}={}){if(Bt.debug("produce() [track:%o]",e),!e)throw new TypeError("missing track");if("send"!==this._direction)throw new Ot.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new Ot.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new Ot.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:p,rtpSender:l}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:n});try{It.validateRtpParameters(p);const{id:t}=await this.safeEmitAsPromise("produce",{kind:e.kind,rtpParameters:p,appData:o}),r=new Lt.Producer({id:t,localId:d,rtpSender:l,track:e,rtpParameters:p,stopTracks:i,disableTrackOnPause:s,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(i)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:n,appData:i={}}){if(Bt.debug("consume()"),n=xt.clone(n,void 0),this._closed)throw new Ot.InvalidStateError("closed");if("recv"!==this._direction)throw new Ot.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(i&&"object"!=typeof i)throw new TypeError("if given, appData must be an object");if(!It.canReceive(n,this._extendedRtpCapabilities))throw new Ot.UnsupportedError("cannot consume this Producer");const s=new Nt({id:e,producerId:t,kind:r,rtpParameters:n,appData:i});return this._pendingConsumerTasks.push(s),!1===this._consumerCreationInProgress&&this._createPendingConsumers(),s.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:n="",protocol:i="",appData:s={}}={}){if(Bt.debug("produceData()"),"send"!==this._direction)throw new Ot.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new Ot.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(s&&"object"!=typeof s)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:n,protocol:i});It.validateSctpStreamParameters(o);const{id:c}=await this.safeEmitAsPromise("producedata",{sctpStreamParameters:o,label:n,protocol:i,appData:s}),d=new At.DataProducer({id:c,dataChannel:a,sctpStreamParameters:o,appData:s});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:n="",protocol:i="",appData:s={}}){if(Bt.debug("consumeData()"),r=xt.clone(r,void 0),this._closed)throw new Ot.InvalidStateError("closed");if("recv"!==this._direction)throw new Ot.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new Ot.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(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return It.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:a}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:n,protocol:i}),o=new Ft.DataConsumer({id:e,dataProducerId:t,dataChannel:a,sctpStreamParameters:r,appData:s});return this._dataConsumers.set(o.id,o),this._handleDataConsumer(o),this._observer.safeEmit("newdataconsumer",o),o}),"transport.consumeData()")}async _createPendingConsumers(){this._awaitQueue.push((async()=>{this._consumerCreationInProgress=!0;const e=[...this._pendingConsumerTasks];let t;this._pendingConsumerTasks=[];const r=[];for(const t of e){const{id:e,kind:n,rtpParameters:i}=t.consumerOptions;r.push({trackId:e,kind:n,rtpParameters:i})}try{const n=await this._handler.receive(r);for(let r=0;r<n.length;r++){const i=e[r],s=n[r],{id:a,producerId:o,kind:c,rtpParameters:d,appData:p}=i.consumerOptions,{localId:l,rtpReceiver:u,track:h}=s,f=new jt.Consumer({id:a,localId:l,producerId:o,rtpReceiver:u,track:h,rtpParameters:d,appData:p});this._consumers.set(f.id,f),this._handleConsumer(f),this._probatorConsumerCreated||t||"video"!==c||(t=f),this._observer.safeEmit("newconsumer",f),i.resolve(f)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=It.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),Bt.debug("_createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){Bt.error("_createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}this._consumerCreationInProgress=!1}),"transport._createPendingConsumers()").then((()=>{this._pendingConsumerTasks.length>0&&this._createPendingConsumers()})).catch((()=>{}))}_handleHandler(){const e=this._handler;e.on("@connect",(({dtlsParameters:e},t,r)=>{this._closed?r(new Ot.InvalidStateError("closed")):this.safeEmit("connect",{dtlsParameters:e},t,r)})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(Bt.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()=>this._handler.stopSending(e.localId)),"producer @close event").catch((e=>Bt.warn("producer.close() failed:%o",e)))})),e.on("@replacetrack",((t,r,n)=>{this._awaitQueue.push((async()=>this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(n)})),e.on("@setmaxspatiallayer",((t,r,n)=>{this._awaitQueue.push((async()=>this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(n)})),e.on("@setrtpencodingparameters",((t,r,n)=>{this._awaitQueue.push((async()=>this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(n)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new Ot.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}_handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._closed||this._awaitQueue.push((async()=>this._handler.stopReceiving(e.localId)),"consumer @close event").catch((()=>{}))})),e.on("@pause",(()=>{this._awaitQueue.push((async()=>this._handler.pauseReceiving(e.localId)),"consumer @pause event").catch((()=>{}))})),e.on("@resume",(()=>{this._awaitQueue.push((async()=>this._handler.resumeReceiving(e.localId)),"consumer @resume event").catch((()=>{}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new Ot.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)}))}}nt.Transport=Ut;var qt={},$t={},zt={},Vt={exports:{}},Wt=Vt.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(Wt).forEach((function(e){Wt[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))})),function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,n){var i=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:i&&!r[e.name]&&(r[e.name]={});var s=e.push?{}:i?r[e.name]:r;!function(e,r,n,i){if(i&&!n)r[i]=t(e[1]);else for(var s=0;s<n.length;s+=1)null!=e[s+1]&&(r[n[s]]=t(e[s+1]))}(n.match(e.reg),s,e.names,e.name),e.push&&r[e.push].push(s)},n=Vt.exports,i=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],a=t;return e.split(/(\r\n|\r|\n)/).filter(i).forEach((function(e){var t=e[0],i=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),a=s[s.length-1]);for(var o=0;o<(n[t]||[]).length;o+=1){var c=n[t][o];if(c.reg.test(i))return r(c,a,i)}})),t.media=s,t};var s=function(e,r){var n=r.split(/=(.+)/,2);return 2===n.length?e[n[0]]=t(n[1]):1===n.length&&r.length>1&&(e[n[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(s,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var r=[],n=e.split(" ").map(t),i=0;i<n.length;i+=3)r.push({component:n[i],ip:n[i+1],port:n[i+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var r,n=!1;return"~"!==e[0]?r=t(e):(r=t(e.substring(1,e.length)),n=!0),{scid:r,paused:n}}))}))}}(zt);var Gt=Vt.exports,Ht=/%[sdv%]/g,Kt=function(e){var t=1,r=arguments,n=r.length;return e.replace(Ht,(function(e){if(t>=n)return e;var i=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(i);case"%d":return Number(i);case"%v":return""}}))},Qt=function(e,t,r){var n=[e+"="+(t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format)];if(t.names)for(var i=0;i<t.names.length;i+=1){var s=t.names[i];t.name?n.push(r[t.name][s]):n.push(r[t.names[i]])}else n.push(r[t.name]);return Kt.apply(null,n)},Jt=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Yt=["i","c","b","a"],Xt=zt,Zt=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||Jt,n=t.innerOrder||Yt,i=[];return r.forEach((function(t){Gt[t].forEach((function(r){r.name in e&&null!=e[r.name]?i.push(Qt(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){i.push(Qt(t,r,e))}))}))})),e.media.forEach((function(e){i.push(Qt("m",Gt.m[0],e)),n.forEach((function(t){Gt[t].forEach((function(r){r.name in e&&null!=e[r.name]?i.push(Qt(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){i.push(Qt(t,r,e))}))}))}))})),i.join("\r\n")+"\r\n"};$t.write=Zt,$t.parse=Xt.parse,$t.parseParams=Xt.parseParams,$t.parseFmtpConfig=Xt.parseFmtpConfig,$t.parsePayloads=Xt.parsePayloads,$t.parseRemoteCandidates=Xt.parseRemoteCandidates,$t.parseImageAttributes=Xt.parseImageAttributes,$t.parseSimulcastStreamList=Xt.parseSimulcastStreamList;var er={},tr=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),rr=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),nr=G&&G.__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)&&tr(t,e,r);return rr(t,e),t};Object.defineProperty(er,"__esModule",{value:!0}),er.applyCodecParameters=er.getCname=er.extractDtlsParameters=er.extractRtpCapabilities=void 0;const ir=nr($t);er.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let n=!1,i=!1;for(const s of e.media){const e=s.type;switch(e){case"audio":if(n)continue;n=!0;break;case"video":if(i)continue;i=!0;break;default:continue}for(const r of s.rtp){const n={kind:e,mimeType:`${e}/${r.codec}`,preferredPayloadType:r.payload,clockRate:r.rate,channels:r.encoding,parameters:{},rtcpFeedback:[]};t.set(n.preferredPayloadType,n)}for(const e of s.fmtp||[]){const r=ir.parseParams(e.config),n=t.get(e.payload);n&&(r&&r.hasOwnProperty("profile-level-id")&&(r["profile-level-id"]=String(r["profile-level-id"])),n.parameters=r)}for(const e of s.rtcpFb||[]){const r=t.get(e.payload);if(!r)continue;const n={type:e.type,parameter:e.subtype};n.parameter||delete n.parameter,r.rtcpFeedback.push(n)}for(const t of s.ext||[]){if(t["encrypt-uri"])continue;const n={kind:e,uri:t.uri,preferredId:t.value};r.push(n)}}return{codecs:Array.from(t.values()),headerExtensions:r}},er.extractDtlsParameters=function({sdpObject:e}){const t=(e.media||[]).find((e=>e.iceUfrag&&0!==e.port));if(!t)throw new Error("no active media section found");const r=t.fingerprint||e.fingerprint;let n;switch(t.setup){case"active":n="client";break;case"passive":n="server";break;case"actpass":n="auto"}return{role:n,fingerprints:[{algorithm:r.type,value:r.hash}]}},er.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},er.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 n=t.fmtp.find((e=>e.payload===r.payloadType));n||(n={payload:r.payloadType,config:""},t.fmtp.push(n));const i=ir.parseParams(n.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(i.stereo=e?1:0);break}}n.config="";for(const e of Object.keys(i))n.config&&(n.config+=";"),n.config+=`${e}=${i[e]}`}};var sr={};Object.defineProperty(sr,"__esModule",{value:!0}),sr.addLegacySimulcast=sr.getRtpEncodings=void 0,sr.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 n of e.ssrcGroups||[]){if("FID"!==n.semantics)continue;let[e,i]=n.ssrcs.split(/\s+/);e=Number(e),i=Number(i),t.has(e)&&(t.delete(e),t.delete(i),r.set(e,i))}for(const e of t)r.set(e,null);const n=[];for(const[e,t]of r){const r={ssrc:e};t&&(r.rtx={ssrc:t}),n.push(r)}return n},sr.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[n,i]=r.value.split(" "),s=r.id;let a;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===s&&(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=[],p=[];for(let e=0;e<t;++e)d.push(s+e),a&&p.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:`${n} ${i}`})}for(let t=0;t<p.length;++t){const r=d[t],s=p[t];e.ssrcs.push({id:s,attribute:"cname",value:c}),e.ssrcs.push({id:s,attribute:"msid",value:`${n} ${i}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${s}`})}};var ar={};Object.defineProperty(ar,"__esModule",{value:!0}),ar.HandlerInterface=void 0;const or=De;class cr extends or.EnhancedEventEmitter{constructor(){super()}}ar.HandlerInterface=cr;var dr={},pr={},lr=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),ur=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),hr=G&&G.__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)&&lr(t,e,r);return ur(t,e),t};Object.defineProperty(pr,"__esModule",{value:!0}),pr.OfferMediaSection=pr.AnswerMediaSection=pr.MediaSection=void 0;const fr=hr(Ae);class mr{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n=!1}){if(this._mediaObject={},this._planB=n,e&&this.setIceParameters(e),t){this._mediaObject.candidates=[];for(const e of t){const t={component:1};t.foundation=e.foundation,t.ip=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}disable(){this._mediaObject.direction="inactive",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}close(){this._mediaObject.direction="inactive",this._mediaObject.port=0,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}}pr.MediaSection=mr;pr.AnswerMediaSection=class extends mr{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:n,plainRtpParameters:i,planB:s=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(a.mid),this._mediaObject.type=a.type,this._mediaObject.protocol=a.protocol,i?(this._mediaObject.connection={ip:i.ip,version:i.ipVersion},this._mediaObject.port=i.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:gr(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=fr.clone(e.parameters,{});if(d){const{opusStereo:t,opusFec:n,opusDtx:i,opusMaxPlaybackRate:s,opusMaxAverageBitrate:a,opusPtime:c,videoGoogleStartBitrate:p,videoGoogleMaxBitrate:l,videoGoogleMinBitrate:u}=d,h=o.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":void 0!==t&&(h.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==n&&(h.parameters.useinbandfec=n?1:0,r.useinbandfec=n?1:0),void 0!==i&&(h.parameters.usedtx=i?1:0,r.usedtx=i?1:0),void 0!==s&&(r.maxplaybackrate=s),void 0!==a&&(r.maxaveragebitrate=a),void 0!==c&&(h.parameters.ptime=c,r.ptime=c);break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==p&&(r["x-google-start-bitrate"]=p),void 0!==l&&(r["x-google-max-bitrate"]=l),void 0!==u&&(r["x-google-min-bitrate"]=u)}}const n={payload:e.payloadType,config:""};for(const e of Object.keys(r))n.config&&(n.config+=";"),n.config+=`${e}=${r[e]}`;n.config&&this._mediaObject.fmtp.push(n);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){(a.ext||[]).some((t=>t.uri===e.uri))&&this._mediaObject.ext.push({uri:e.uri,value:e.id})}if(p&&"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=n.port,this._mediaObject.maxMessageSize=n.maxMessageSize):a.sctpmap&&(this._mediaObject.payloads=n.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:n.port,maxMessageSize:n.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"}}};function gr(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}pr.OfferMediaSection=class extends mr{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:n,plainRtpParameters:i,planB:s=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:p,oldDataChannelSpec:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(a),this._mediaObject.type=o,i?(this._mediaObject.connection={ip:i.ip,version:i.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=i.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.protocol=n?"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||"-"} ${p}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:gr(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||"-"} ${p}`}),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||"-"} ${p}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":l?(this._mediaObject.payloads=n.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:n.port,maxMessageSize:n.maxMessageSize}):(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=n.port,this._mediaObject.maxMessageSize=n.maxMessageSize)}}setDtlsRole(e){this._mediaObject.setup="actpass"}planBReceive({offerRtpParameters:e,streamId:t,trackId:r}){const n=e.encodings[0],i=n.ssrc,s=n.rtx&&n.rtx.ssrc?n.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:gr(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:i,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:i,attribute:"msid",value:`${t||"-"} ${r}`}),s&&(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}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${s}`}))}planBStopReceiving({offerRtpParameters:e}){const t=e.encodings[0],r=t.ssrc,n=t.rtx&&t.rtx.ssrc?t.rtx.ssrc:void 0;this._mediaObject.ssrcs=this._mediaObject.ssrcs.filter((e=>e.id!==r&&e.id!==n)),n&&(this._mediaObject.ssrcGroups=this._mediaObject.ssrcGroups.filter((e=>e.ssrcs!==`${r} ${n}`)))}};var yr=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),vr=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),br=G&&G.__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)&&yr(t,e,r);return vr(t,e),t};Object.defineProperty(dr,"__esModule",{value:!0}),dr.RemoteSdp=void 0;const wr=br($t),_r=pr,Sr=new Ce.Logger("RemoteSdp");dr.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:n,plainRtpParameters:i,planB:s=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=n,this._plainRtpParameters=i,this._planB=s,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:""}]}i&&(this._sdpObject.origin.address=i.ip,this._sdpObject.origin.ipVer=i.ipVersion)}updateIceParameters(e){Sr.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){Sr.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:n,codecOptions:i,extmapAllowMixed:s=!1}){const a=new _r.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:n,codecOptions:i,extmapAllowMixed:s});t?this._replaceMediaSection(a,t):this._midToIndex.has(a.mid)?this._replaceMediaSection(a):this._addMediaSection(a)}receive({mid:e,kind:t,offerRtpParameters:r,streamId:n,trackId:i}){const s=this._midToIndex.get(e);let a;if(void 0!==s&&(a=this._mediaSections[s]),a)a.planBReceive({offerRtpParameters:r,streamId:n,trackId:i}),this._replaceMediaSection(a);else{a=new _r.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,mid:e,kind:t,offerRtpParameters:r,streamId:n,trackId:i});const s=this._mediaSections.find((e=>e.closed));s?this._replaceMediaSection(a,s.mid):this._addMediaSection(a)}}disableMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);this._mediaSections[t].disable()}closeMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);const r=this._mediaSections[t];if(e===this._firstMid)return Sr.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),void this.disableMediaSection(e);r.close(),this._regenerateBundleMids()}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._midToIndex.get(e);if(void 0===r)throw new Error(`no media section found with mid '${e}'`);const n=this._mediaSections[r];n.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(n)}sendSctpAssociation({offerMediaObject:e}){const t=new _r.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 _r.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++,wr.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 n=this._mediaSections[r];this._mediaSections[r]=e,this._midToIndex.delete(n.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()}}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var Rr={};Object.defineProperty(Rr,"__esModule",{value:!0}),Rr.parse=void 0;const kr=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");Rr.parse=function(e){const t=kr.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var Cr=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Pr=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Tr=G&&G.__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)&&Cr(t,e,r);return Pr(t,e),t};Object.defineProperty(qt,"__esModule",{value:!0}),qt.Chrome74=void 0;const Er=Tr($t),Dr=Ce,Mr=Tr(Ae),Or=Tr(Fe),xr=Tr(er),Ir=Tr(sr),Lr=ar,jr=dr,Ar=Rr,Fr=new Dr.Logger("Chrome74"),Nr={OS:1024,MIS:1024};class Br extends Lr.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Br}get name(){return"Chrome74"}close(){if(Fr.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Fr.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=Er.parse(t.sdp);return xr.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Fr.debug("getNativeSctpCapabilities()"),{numStreams:Nr}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Fr.debug("run()"),this._direction=e,this._remoteSdp=new jr.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:Or.getSendingRtpParameters("audio",d),video:Or.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Or.getSendingRemoteRtpParameters("audio",d),video:Or.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),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){Fr.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Fr.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Fr.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Fr.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Fr.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Fr.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:n}){var i;this._assertSendDirection(),Fr.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=Mr.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Or.reduceCodecs(s.codecs,n);const a=Mr.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=Or.reduceCodecs(a.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let d,p=await this._pc.createOffer(),l=Er.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:l});let u=!1;const h=(0,Ar.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Fr.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=Er.parse(p.sdp),d=l.media[o.idx],Ir.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),p={type:"offer",sdp:Er.write(l)}),Fr.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p);const f=c.mid;if(s.mid=f,l=Er.parse(this._pc.localDescription.sdp),d=l.media[o.idx],s.rtcp.cname=xr.getCname({offerMediaObject:d}),t)if(1===t.length){let e=Ir.getRtpEncodings({offerMediaObject:d});Object.assign(e[0],t[0]),u&&(e=[e[0]]),s.encodings=e}else s.encodings=t;else s.encodings=Ir.getRtpEncodings({offerMediaObject:d});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="S1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:s,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Fr.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(f,c),{localId:f,rtpParameters:s,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),Fr.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),this._remoteSdp.closeMediaSection(t.mid);const r=await this._pc.createOffer();Fr.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Fr.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?Fr.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Fr.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(),Fr.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),Fr.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(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:n,protocol:i}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};Fr.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(n,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Nr.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Er.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),Fr.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Fr.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[],n=new Map;for(const t of e){const{trackId:e,kind:r,rtpParameters:i}=t;Fr.debug("receive() [trackId:%s, kind:%s]",e,r);const s=i.mid||String(this._mapMidTransceiver.size);n.set(e,s),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:i.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Fr.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const a=Er.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,i=n.get(e),s=a.media.find((e=>String(e.mid)===i));xr.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:Er.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),Fr.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{trackId:e}=t,i=n.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),r.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),Fr.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};Fr.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const n=await this._pc.createAnswer();Fr.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),Fr.debug("pauseReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Fr.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const n=await this._pc.createAnswer();Fr.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}async resumeReceiving(e){this._assertRecvDirection(),Fr.debug("resumeReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="recvonly";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Fr.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const n=await this._pc.createAnswer();Fr.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}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}){var n;this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};Fr.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Fr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Er.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:e})}Fr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Er.parse(this._pc.localDescription.sdp));const r=xr.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}qt.Chrome74=Br;var Ur={},qr=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),$r=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),zr=G&&G.__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)&&qr(t,e,r);return $r(t,e),t};Object.defineProperty(Ur,"__esModule",{value:!0}),Ur.Chrome70=void 0;const Vr=zr($t),Wr=Ce,Gr=zr(Ae),Hr=zr(Fe),Kr=zr(er),Qr=zr(sr),Jr=ar,Yr=dr,Xr=Rr,Zr=new Wr.Logger("Chrome70"),en={OS:1024,MIS:1024};class tn extends Jr.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new tn}get name(){return"Chrome70"}close(){if(Zr.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Zr.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=Vr.parse(t.sdp);return Kr.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Zr.debug("getNativeSctpCapabilities()"),{numStreams:en}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Zr.debug("run()"),this._direction=e,this._remoteSdp=new Yr.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:Hr.getSendingRtpParameters("audio",d),video:Hr.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Hr.getSendingRemoteRtpParameters("audio",d),video:Hr.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),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){Zr.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Zr.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Zr.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Zr.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Zr.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Zr.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:n}){var i;this._assertSendDirection(),Zr.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=Gr.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Hr.reduceCodecs(s.codecs,n);const a=Gr.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=Hr.reduceCodecs(a.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let d,p=await this._pc.createOffer(),l=Vr.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:l}),t&&t.length>1&&(Zr.debug("send() | enabling legacy simulcast"),l=Vr.parse(p.sdp),d=l.media[o.idx],Qr.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),p={type:"offer",sdp:Vr.write(l)});let u=!1;const h=(0,Xr.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Zr.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=Vr.parse(p.sdp),d=l.media[o.idx],Qr.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),p={type:"offer",sdp:Vr.write(l)}),Zr.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p),t){Zr.debug("send() | applying given encodings");const e=c.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const n=e.encodings[r],i=t[r];if(!i)break;e.encodings[r]=Object.assign(n,i)}await c.sender.setParameters(e)}const f=c.mid;if(s.mid=f,l=Vr.parse(this._pc.localDescription.sdp),d=l.media[o.idx],s.rtcp.cname=Kr.getCname({offerMediaObject:d}),s.encodings=Qr.getRtpEncodings({offerMediaObject:d}),t)for(let e=0;e<s.encodings.length;++e)t[e]&&Object.assign(s.encodings[e],t[e]);if(u&&(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="S1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:s,answerRtpParameters:a,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Zr.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(f,c),{localId:f,rtpParameters:s,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),Zr.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),this._remoteSdp.closeMediaSection(t.mid);const r=await this._pc.createOffer();Zr.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Zr.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?Zr.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Zr.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(),Zr.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),Zr.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(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:n,protocol:i}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:i};Zr.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(n,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%en.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Vr.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),Zr.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Zr.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[],n=new Map;for(const t of e){const{trackId:e,kind:r,rtpParameters:i}=t;Zr.debug("receive() [trackId:%s, kind:%s]",e,r);const s=i.mid||String(this._mapMidTransceiver.size);n.set(e,s),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:i.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Zr.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const a=Vr.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,i=n.get(e),s=a.media.find((e=>String(e.mid)===i));Kr.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:Vr.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),Zr.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{trackId:e}=t,i=n.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),r.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),Zr.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};Zr.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const n=await this._pc.createAnswer();Zr.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n),this._mapMidTransceiver.delete(e)}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}){var n;this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};Zr.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Zr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Vr.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:e})}Zr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Vr.parse(this._pc.localDescription.sdp));const r=Kr.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}Ur.Chrome70=tn;var rn={},nn={};Object.defineProperty(nn,"__esModule",{value:!0}),nn.addLegacySimulcast=nn.getRtpEncodings=void 0,nn.getRtpEncodings=function({offerMediaObject:e,track:t}){const r=new Set;for(const n of e.ssrcs||[]){if("msid"!==n.attribute)continue;if(n.value.split(" ")[1]===t.id){const e=n.id;r.add(e)}}if(0===r.size)throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);const n=new Map;for(const t of e.ssrcGroups||[]){if("FID"!==t.semantics)continue;let[e,i]=t.ssrcs.split(/\s+/);e=Number(e),i=Number(i),r.has(e)&&(r.delete(e),r.delete(i),n.set(e,i))}for(const e of r)n.set(e,null);const i=[];for(const[e,t]of n){const r={ssrc:e};t&&(r.rtx={ssrc:t}),i.push(r)}return i},nn.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let n,i,s;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(n=e.id,s=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])===n&&(i=Number(t[1]),!0)}));const a=e.ssrcs.find((e=>"cname"===e.attribute&&e.id===n));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(n+e),i&&d.push(i+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 n=c[r];e.ssrcs.push({id:n,attribute:"cname",value:o}),e.ssrcs.push({id:n,attribute:"msid",value:`${s} ${t.id}`})}for(let r=0;r<d.length;++r){const n=c[r],i=d[r];e.ssrcs.push({id:i,attribute:"cname",value:o}),e.ssrcs.push({id:i,attribute:"msid",value:`${s} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${n} ${i}`})}};var sn=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),an=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),on=G&&G.__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)&&sn(t,e,r);return an(t,e),t};Object.defineProperty(rn,"__esModule",{value:!0}),rn.Chrome67=void 0;const cn=on($t),dn=Ce,pn=on(Ae),ln=on(Fe),un=on(er),hn=on(nn),fn=ar,mn=dr,gn=new dn.Logger("Chrome67"),yn={OS:1024,MIS:1024};class vn extends fn.HandlerInterface{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}static createFactory(){return()=>new vn}get name(){return"Chrome67"}close(){if(gn.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){gn.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=cn.parse(t.sdp);return un.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return gn.debug("getNativeSctpCapabilities()"),{numStreams:yn}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){gn.debug("run()"),this._direction=e,this._remoteSdp=new mn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,planB:!0}),this._sendingRtpParametersByKind={audio:ln.getSendingRtpParameters("audio",d),video:ln.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ln.getSendingRemoteRtpParameters("audio",d),video:ln.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),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){gn.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(gn.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});gn.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};gn.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};gn.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();gn.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:n}){var i;this._assertSendDirection(),gn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),n&&gn.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,a=await this._pc.createOffer(),o=cn.parse(a.sdp);const c=pn.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=ln.reduceCodecs(c.codecs);const d=pn.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=ln.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(gn.debug("send() | enabling simulcast"),o=cn.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),hn.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:cn.write(o)}),gn.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=cn.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=un.getCname({offerMediaObject:s}),c.encodings=hn.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<c.encodings.length;++e)t[e]&&Object.assign(c.encodings[e],t[e]);if(c.encodings.length>1&&"video/vp8"===c.codecs[0].mimeType.toLowerCase())for(const e of c.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};gn.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const u=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,u),{localId:l,rtpParameters:c,rtpSender:u}}async stopSending(e){this._assertSendDirection(),gn.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();gn.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void gn.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const n={type:"answer",sdp:this._remoteSdp.getSdp()};gn.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){this._assertSendDirection(),t?gn.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):gn.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.track;await r.replaceTrack(t),n&&this._sendStream.removeTrack(n),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),gn.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(n)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),gn.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.setParameters(n)}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:n,protocol:i}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:i};gn.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(n,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%yn.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=cn.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),gn.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};gn.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:n}=t;gn.debug("receive() [trackId:%s, kind:%s]",e,r);const i=r;this._remoteSdp.receive({mid:i,kind:r,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};gn.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=cn.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,n=e,i=s.media.find((e=>String(e.mid)===n));un.applyCodecParameters({offerRtpParameters:r,answerMediaObject:i})}i={type:"answer",sdp:cn.write(s)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:s}),gn.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const t of e){const{kind:e,trackId:n,rtpParameters:i}=t,s=n,a=e,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===s));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(s,{mid:a,rtpParameters:i,rtpReceiver:o}),r.push({localId:s,track:o.track,rtpReceiver:o})}return r}async stopReceiving(e){this._assertRecvDirection(),gn.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const n={type:"offer",sdp:this._remoteSdp.getSdp()};gn.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);const i=await this._pc.createAnswer();gn.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}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}){var n;this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};gn.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};gn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=cn.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:e})}gn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=cn.parse(this._pc.localDescription.sdp));const r=un.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}rn.Chrome67=vn;var bn={},wn=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),_n=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Sn=G&&G.__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)&&wn(t,e,r);return _n(t,e),t};Object.defineProperty(bn,"__esModule",{value:!0}),bn.Chrome55=void 0;const Rn=Sn($t),kn=Ce,Cn=Ie,Pn=Sn(Ae),Tn=Sn(Fe),En=Sn(er),Dn=Sn(nn),Mn=ar,On=dr,xn=new kn.Logger("Chrome55"),In={OS:1024,MIS:1024};class Ln extends Mn.HandlerInterface{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}static createFactory(){return()=>new Ln}get name(){return"Chrome55"}close(){if(xn.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){xn.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=Rn.parse(t.sdp);return En.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return xn.debug("getNativeSctpCapabilities()"),{numStreams:In}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){xn.debug("run()"),this._direction=e,this._remoteSdp=new On.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,planB:!0}),this._sendingRtpParametersByKind={audio:Tn.getSendingRtpParameters("audio",d),video:Tn.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Tn.getSendingRemoteRtpParameters("audio",d),video:Tn.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),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){xn.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(xn.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});xn.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};xn.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};xn.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();xn.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:n}){var i;this._assertSendDirection(),xn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),n&&xn.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,a=await this._pc.createOffer(),o=Rn.parse(a.sdp);const c=Pn.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=Tn.reduceCodecs(c.codecs);const d=Pn.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=Tn.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(xn.debug("send() | enabling simulcast"),o=Rn.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),Dn.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:Rn.write(o)}),xn.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=Rn.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=En.getCname({offerMediaObject:s}),c.encodings=Dn.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<c.encodings.length;++e)t[e]&&Object.assign(c.encodings[e],t[e]);if(c.encodings.length>1&&"video/vp8"===c.codecs[0].mimeType.toLowerCase())for(const e of c.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};xn.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:c}}async stopSending(e){this._assertSendDirection(),xn.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();xn.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void xn.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const n={type:"answer",sdp:this._remoteSdp.getSdp()};xn.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){throw new Cn.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Cn.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new Cn.UnsupportedError("not supported")}async getSenderStats(e){throw new Cn.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:i};xn.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(n,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%In.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Rn.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),xn.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};xn.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:n}=t;xn.debug("receive() [trackId:%s, kind:%s]",e,r);const i=r,s=n.rtcp.cname;this._remoteSdp.receive({mid:i,kind:r,offerRtpParameters:n,streamId:s,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};xn.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=Rn.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,n=e,i=s.media.find((e=>String(e.mid)===n));En.applyCodecParameters({offerRtpParameters:r,answerMediaObject:i})}i={type:"answer",sdp:Rn.write(s)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:s}),xn.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const t of e){const{kind:e,trackId:n,rtpParameters:i}=t,s=e,a=n,o=i.rtcp.cname,c=this._pc.getRemoteStreams().find((e=>e.id===o)),d=c.getTrackById(a);if(!d)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:s,rtpParameters:i}),r.push({localId:a,track:d})}return r}async stopReceiving(e){this._assertRecvDirection(),xn.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const n={type:"offer",sdp:this._remoteSdp.getSdp()};xn.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);const i=await this._pc.createAnswer();xn.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Cn.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var n;this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};xn.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};xn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Rn.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:e})}xn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Rn.parse(this._pc.localDescription.sdp));const r=En.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}bn.Chrome55=Ln;var jn={},An=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Fn=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Nn=G&&G.__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)&&An(t,e,r);return Fn(t,e),t};Object.defineProperty(jn,"__esModule",{value:!0}),jn.Firefox60=void 0;const Bn=Nn($t),Un=Ce,qn=Ie,$n=Nn(Ae),zn=Nn(Fe),Vn=Nn(er),Wn=Nn(sr),Gn=ar,Hn=dr,Kn=new Un.Logger("Firefox60"),Qn={OS:16,MIS:2048};class Jn extends Gn.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Jn}get name(){return"Firefox60"}close(){if(Kn.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Kn.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 n=e.addTransceiver(r,{direction:"sendrecv"}),i=n.sender.getParameters(),s=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];i.encodings=s,await n.sender.setParameters(i);const a=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const o=Bn.parse(a.sdp);return Vn.extractRtpCapabilities({sdpObject:o})}catch(n){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw n}}async getNativeSctpCapabilities(){return Kn.debug("getNativeSctpCapabilities()"),{numStreams:Qn}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Kn.debug("run()"),this._direction=e,this._remoteSdp=new Hn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:zn.getSendingRtpParameters("audio",d),video:zn.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:zn.getSendingRemoteRtpParameters("audio",d),video:zn.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),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){throw new qn.UnsupportedError("not supported")}async restartIce(e){if(Kn.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Kn.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Kn.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Kn.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Kn.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:n}){this._assertSendDirection(),Kn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=$n.clone(t,[])).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const i=$n.clone(this._sendingRtpParametersByKind[e.kind],{});i.codecs=zn.reduceCodecs(i.codecs,n);const s=$n.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=zn.reduceCodecs(s.codecs,n);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=Bn.parse(o.sdp);this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:c}),Kn.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const d=a.mid;i.mid=d,c=Bn.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(i.rtcp.cname=Vn.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Wn.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),i.encodings=e}else i.encodings=t.reverse();else i.encodings=Wn.getRtpEncodings({offerMediaObject:p});if(i.encodings.length>1&&("video/vp8"===i.codecs[0].mimeType.toLowerCase()||"video/h264"===i.codecs[0].mimeType.toLowerCase()))for(const e of i.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const l={type:"answer",sdp:this._remoteSdp.getSdp()};return Kn.debug("send() | calling pc.setRemoteDescription() [answer:%o]",l),await this._pc.setRemoteDescription(l),this._mapMidTransceiver.set(d,a),{localId:d,rtpParameters:i,rtpSender:a.sender}}async stopSending(e){Kn.debug("stopSending() [localId:%s]",e);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();Kn.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Kn.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?Kn.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Kn.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(),Kn.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated transceiver not found");const n=r.sender.getParameters();t=n.encodings.length-1-t,n.encodings.forEach(((e,r)=>{e.active=r>=t})),await r.sender.setParameters(n)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),Kn.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(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:n,protocol:i}){this._assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};Kn.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Qn.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Bn.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:t}),Kn.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Kn.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this._assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i}=t;Kn.debug("receive() [trackId:%s, kind:%s]",e,n);const s=i.mid||String(this._mapMidTransceiver.size);r.set(e,s),this._remoteSdp.receive({mid:s,kind:n,offerRtpParameters:i,streamId:i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Kn.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=Bn.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,a=r.get(e),o=s.media.find((e=>String(e.mid)===a));Vn.applyCodecParameters({offerRtpParameters:n,answerMediaObject:o}),i={type:"answer",sdp:Bn.write(s)}}this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:s}),Kn.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){this._assertRecvDirection(),Kn.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};Kn.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const n=await this._pc.createAnswer();Kn.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),Kn.debug("pauseReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Kn.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const n=await this._pc.createAnswer();Kn.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}async resumeReceiving(e){this._assertRecvDirection(),Kn.debug("resumeReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="recvonly";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Kn.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const n=await this._pc.createAnswer();Kn.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}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:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};Kn.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()};Kn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Bn.parse(t.sdp);await this._setupTransport({localDtlsRole:"client",localSdpObject:e})}Kn.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=Bn.parse(this._pc.localDescription.sdp));const r=Vn.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}jn.Firefox60=Jn;var Yn={},Xn=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Zn=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ei=G&&G.__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)&&Xn(t,e,r);return Zn(t,e),t};Object.defineProperty(Yn,"__esModule",{value:!0}),Yn.Safari12=void 0;const ti=ei($t),ri=Ce,ni=ei(Ae),ii=ei(Fe),si=ei(er),ai=ei(sr),oi=ar,ci=dr,di=new ri.Logger("Safari12"),pi={OS:1024,MIS:1024};class li extends oi.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new li}get name(){return"Safari12"}close(){if(di.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){di.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=ti.parse(t.sdp);return si.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return di.debug("getNativeSctpCapabilities()"),{numStreams:pi}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){di.debug("run()"),this._direction=e,this._remoteSdp=new ci.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:ii.getSendingRtpParameters("audio",d),video:ii.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ii.getSendingRemoteRtpParameters("audio",d),video:ii.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),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){di.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(di.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});di.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};di.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};di.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();di.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:n}){var i;this._assertSendDirection(),di.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=ni.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=ii.reduceCodecs(s.codecs,n);const a=ni.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=ii.reduceCodecs(a.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let d,p=await this._pc.createOffer(),l=ti.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:l}),t&&t.length>1&&(di.debug("send() | enabling legacy simulcast"),l=ti.parse(p.sdp),d=l.media[o.idx],ai.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),p={type:"offer",sdp:ti.write(l)}),di.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p);const u=c.mid;if(s.mid=u,l=ti.parse(this._pc.localDescription.sdp),d=l.media[o.idx],s.rtcp.cname=si.getCname({offerMediaObject:d}),s.encodings=ai.getRtpEncodings({offerMediaObject:d}),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="S1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:s,answerRtpParameters:a,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return di.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,c),{localId:u,rtpParameters:s,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),di.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),this._remoteSdp.closeMediaSection(t.mid);const r=await this._pc.createOffer();di.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};di.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?di.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):di.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(),di.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),di.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(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:n,protocol:i}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};di.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(n,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%pi.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ti.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),di.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};di.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[],n=new Map;for(const t of e){const{trackId:e,kind:r,rtpParameters:i}=t;di.debug("receive() [trackId:%s, kind:%s]",e,r);const s=i.mid||String(this._mapMidTransceiver.size);n.set(e,s),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:i.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};di.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const a=ti.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,i=n.get(e),s=a.media.find((e=>String(e.mid)===i));si.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:ti.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),di.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{trackId:e}=t,i=n.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),r.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),di.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};di.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const n=await this._pc.createAnswer();di.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),di.debug("pauseReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive";const r={type:"offer",sdp:this._remoteSdp.getSdp()};di.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const n=await this._pc.createAnswer();di.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}async resumeReceiving(e){this._assertRecvDirection(),di.debug("resumeReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="recvonly";const r={type:"offer",sdp:this._remoteSdp.getSdp()};di.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const n=await this._pc.createAnswer();di.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}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}){var n;this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};di.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};di.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ti.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:e})}di.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ti.parse(this._pc.localDescription.sdp));const r=si.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}Yn.Safari12=li;var ui={},hi=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),fi=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),mi=G&&G.__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)&&hi(t,e,r);return fi(t,e),t};Object.defineProperty(ui,"__esModule",{value:!0}),ui.Safari11=void 0;const gi=mi($t),yi=Ce,vi=mi(Ae),bi=mi(Fe),wi=mi(er),_i=mi(nn),Si=ar,Ri=dr,ki=new yi.Logger("Safari11"),Ci={OS:1024,MIS:1024};class Pi extends Si.HandlerInterface{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}static createFactory(){return()=>new Pi}get name(){return"Safari11"}close(){if(ki.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){ki.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=gi.parse(t.sdp);return wi.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ki.debug("getNativeSctpCapabilities()"),{numStreams:Ci}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ki.debug("run()"),this._direction=e,this._remoteSdp=new Ri.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,planB:!0}),this._sendingRtpParametersByKind={audio:bi.getSendingRtpParameters("audio",d),video:bi.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:bi.getSendingRemoteRtpParameters("audio",d),video:bi.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),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){ki.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(ki.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});ki.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};ki.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};ki.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();ki.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:n}){var i;this._assertSendDirection(),ki.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),n&&ki.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,a=await this._pc.createOffer(),o=gi.parse(a.sdp);const c=vi.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=bi.reduceCodecs(c.codecs);const d=vi.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=bi.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(ki.debug("send() | enabling simulcast"),o=gi.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),_i.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:gi.write(o)}),ki.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=gi.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=wi.getCname({offerMediaObject:s}),c.encodings=_i.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<c.encodings.length;++e)t[e]&&Object.assign(c.encodings[e],t[e]);if(c.encodings.length>1&&"video/vp8"===c.codecs[0].mimeType.toLowerCase())for(const e of c.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};ki.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const u=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,u),{localId:l,rtpParameters:c,rtpSender:u}}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();ki.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void ki.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const n={type:"answer",sdp:this._remoteSdp.getSdp()};ki.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){this._assertSendDirection(),t?ki.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):ki.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.track;await r.replaceTrack(t),n&&this._sendStream.removeTrack(n),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this._assertSendDirection(),ki.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(n)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),ki.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.setParameters(n)}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:n,protocol:i}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};ki.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(n,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ci.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=gi.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),ki.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};ki.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:n}=t;ki.debug("receive() [trackId:%s, kind:%s]",e,r);const i=r;this._remoteSdp.receive({mid:i,kind:r,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};ki.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=gi.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,n=e,i=s.media.find((e=>String(e.mid)===n));wi.applyCodecParameters({offerRtpParameters:r,answerMediaObject:i})}i={type:"answer",sdp:gi.write(s)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:s}),ki.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const t of e){const{kind:e,trackId:n,rtpParameters:i}=t,s=e,a=n,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:s,rtpParameters:i,rtpReceiver:o}),r.push({localId:a,track:o.track,rtpReceiver:o})}return r}async stopReceiving(e){this._assertRecvDirection(),ki.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const n={type:"offer",sdp:this._remoteSdp.getSdp()};ki.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);const i=await this._pc.createAnswer();ki.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}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}){var n;this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};ki.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};ki.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=gi.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:e})}ki.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=gi.parse(this._pc.localDescription.sdp));const r=wi.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}ui.Safari11=Pi;var Ti={},Ei={},Di=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Mi=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Oi=G&&G.__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)&&Di(t,e,r);return Mi(t,e),t};Object.defineProperty(Ei,"__esModule",{value:!0}),Ei.mangleRtpParameters=Ei.getCapabilities=void 0;const xi=Oi(Ae);Ei.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=xi.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},Ei.mangleRtpParameters=function(e){const t=xi.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 Ii=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Li=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ji=G&&G.__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)&&Ii(t,e,r);return Li(t,e),t};Object.defineProperty(Ti,"__esModule",{value:!0}),Ti.Edge11=void 0;const Ai=Ce,Fi=Ie,Ni=ji(Ae),Bi=ji(Fe),Ui=ji(Ei),qi=ar,$i=new Ai.Logger("Edge11");class zi extends qi.HandlerInterface{constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}static createFactory(){return()=>new zi}get name(){return"Edge11"}close(){$i.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){}}async getNativeRtpCapabilities(){return $i.debug("getNativeRtpCapabilities()"),Ui.getCapabilities()}async getNativeSctpCapabilities(){return $i.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){$i.debug("run()"),this._sendingRtpParametersByKind={audio:Bi.getSendingRtpParameters("audio",d),video:Bi.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=n,this._cname=`CNAME-${Ni.generateRandomNumber()}`,this._setIceGatherer({iceServers:s,iceTransportPolicy:a}),this._setIceTransport(),this._setDtlsTransport()}async updateIceServers(e){throw new Fi.UnsupportedError("not supported")}async restartIce(e){if($i.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){$i.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:n}){$i.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this._setupTransport({localDtlsRole:"server"}),$i.debug("send() | calling new RTCRtpSender()");const i=new RTCRtpSender(e,this._dtlsTransport),s=Ni.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Bi.reduceCodecs(s.codecs,n);const a=s.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=Ni.generateRandomNumber(),a&&(e.rtx={ssrc:Ni.generateRandomNumber()});s.encodings=t,s.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=Ui.mangleRtpParameters(s);$i.debug("send() | calling rtpSender.send() [params:%o]",o),await i.send(o);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,i),{localId:c,rtpParameters:s,rtpSender:i}}async stopSending(e){$i.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{$i.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw $i.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async replaceTrack(e,t){t?$i.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):$i.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){$i.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(n)}async setRtpEncodingParameters(e,t){$i.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.setParameters(n)}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 Fi.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;$i.debug("receive() [trackId:%s, kind:%s]",e,r)}this._transportReady||await this._setupTransport({localDtlsRole:"server"});for(const r of e){const{trackId:e,kind:n,rtpParameters:i}=r;$i.debug("receive() | calling new RTCRtpReceiver()");const s=new RTCRtpReceiver(this._dtlsTransport,n);s.addEventListener("error",(e=>{$i.error('rtpReceiver "error" event [event:%o]',e)}));const a=Ui.mangleRtpParameters(i);$i.debug("receive() | calling rtpReceiver.receive() [params:%o]",a),await s.receive(a);const o=e;this._rtpReceivers.set(o,s),t.push({localId:o,track:s.track,rtpReceiver:s})}return t}async stopReceiving(e){$i.debug("stopReceiving() [localId:%s]",e);const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(e);try{$i.debug("stopReceiving() | calling rtpReceiver.stop()"),t.stop()}catch(e){$i.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 Fi.UnsupportedError("not implemented")}_setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{$i.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){$i.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=>{$i.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}_setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{$i.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{$i.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{$i.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async _setupTransport({localDtlsRole:e}){$i.debug("_setupTransport()");const t=this._dtlsTransport.getLocalParameters();t.role=e,await this.safeEmitAsPromise("@connect",{dtlsParameters:t}),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}}Ti.Edge11=zi;var Vi={},Wi=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Gi=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Hi=G&&G.__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)&&Wi(t,e,r);return Gi(t,e),t};Object.defineProperty(Vi,"__esModule",{value:!0}),Vi.ReactNative=void 0;const Ki=Hi($t),Qi=Ce,Ji=Ie,Yi=Hi(Ae),Xi=Hi(Fe),Zi=Hi(er),es=Hi(nn),ts=ar,rs=dr,ns=new Qi.Logger("ReactNative"),is={OS:1024,MIS:1024};class ss extends ts.HandlerInterface{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}static createFactory(){return()=>new ss}get name(){return"ReactNative"}close(){if(ns.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){ns.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=Ki.parse(t.sdp);return Zi.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return ns.debug("getNativeSctpCapabilities()"),{numStreams:is}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){ns.debug("run()"),this._direction=e,this._remoteSdp=new rs.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,planB:!0}),this._sendingRtpParametersByKind={audio:Xi.getSendingRtpParameters("audio",d),video:Xi.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Xi.getSendingRemoteRtpParameters("audio",d),video:Xi.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),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){ns.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(ns.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});ns.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};ns.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};ns.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();ns.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:n}){var i;this._assertSendDirection(),ns.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),n&&ns.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,a=await this._pc.createOffer(),o=Ki.parse(a.sdp);const c=Yi.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=Xi.reduceCodecs(c.codecs);const d=Yi.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=Xi.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(ns.debug("send() | enabling simulcast"),o=Ki.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),es.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:Ki.write(o)}),ns.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=Ki.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=Zi.getCname({offerMediaObject:s}),c.encodings=es.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<c.encodings.length;++e)t[e]&&Object.assign(c.encodings[e],t[e]);if(c.encodings.length>1&&("video/vp8"===c.codecs[0].mimeType.toLowerCase()||"video/h264"===c.codecs[0].mimeType.toLowerCase()))for(const e of c.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};ns.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:c}}async stopSending(e){this._assertSendDirection(),ns.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();ns.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void ns.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const n={type:"answer",sdp:this._remoteSdp.getSdp()};ns.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){throw new Ji.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Ji.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Ji.UnsupportedError("not implemented")}async getSenderStats(e){throw new Ji.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:i};ns.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(n,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%is.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ki.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),ns.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};ns.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[],n=new Map;for(const t of e){const{trackId:e,kind:r,rtpParameters:i}=t;ns.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;let a=i.rtcp.cname;ns.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${Yi.generateRandomNumber()}`,n.set(e,a),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:i,streamId:a,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};ns.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let s=await this._pc.createAnswer();const a=Ki.parse(s.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,n=e,i=a.media.find((e=>String(e.mid)===n));Zi.applyCodecParameters({offerRtpParameters:r,answerMediaObject:i})}s={type:"answer",sdp:Ki.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),ns.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{kind:e,trackId:i,rtpParameters:s}=t,a=i,o=e,c=n.get(i),d=this._pc.getRemoteStreams().find((e=>e.id===c)),p=d.getTrackById(a);if(!p)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:o,rtpParameters:s}),r.push({localId:a,track:p})}return r}async stopReceiving(e){this._assertRecvDirection(),ns.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const n={type:"offer",sdp:this._remoteSdp.getSdp()};ns.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);const i=await this._pc.createAnswer();ns.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Ji.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var n;this._assertRecvDirection();const{streamId:i,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:i,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};ns.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};ns.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ki.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:e})}ns.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ki.parse(this._pc.localDescription.sdp));const r=Zi.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}Vi.ReactNative=ss;var as=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),os=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),cs=G&&G.__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)&&as(t,e,r);return os(t,e),t},ds=G&&G.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Re,"__esModule",{value:!0}),Re.Device=Re.detectDevice=void 0;const ps=ds(ke.exports),ls=Ce,us=De,hs=Ie,fs=cs(Ae),ms=cs(Fe),gs=nt,ys=qt,vs=Ur,bs=rn,ws=bn,_s=jn,Ss=Yn,Rs=ui,ks=Ti,Cs=Vi,Ps=new ls.Logger("Device");function Ts(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return"undefined"==typeof RTCPeerConnection?void Ps.warn("this._detectDevice() | unsupported ReactNative without RTCPeerConnection"):(Ps.debug("this._detectDevice() | ReactNative handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)Ps.warn("this._detectDevice() | unknown device");else{const e=navigator.userAgent,t=ps.default.getParser(e),r=t.getEngine();if(t.satisfies({chrome:">=74",chromium:">=74","microsoft edge":">=88"}))return"Chrome74";if(t.satisfies({chrome:">=70",chromium:">=70"}))return"Chrome70";if(t.satisfies({chrome:">=67",chromium:">=67"}))return"Chrome67";if(t.satisfies({chrome:">=55",chromium:">=55"}))return"Chrome55";if(t.satisfies({firefox:">=60"}))return"Firefox60";if(t.satisfies({ios:{OS:">=14.3",firefox:">=30.0"}}))return"Safari12";if(t.satisfies({safari:">=12.0"})&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(t.satisfies({safari:">=11"}))return"Safari11";if(t.satisfies({"microsoft edge":">=11"})&&t.satisfies({"microsoft edge":"<=18"}))return"Edge11";if(r.name&&"blink"===r.name.toLowerCase()){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome74"}Ps.warn("this._detectDevice() | browser not supported [name:%s, version:%s]",t.getBrowserName(),t.getBrowserVersion())}}Re.detectDevice=Ts;Re.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new us.EnhancedEventEmitter,Ps.debug("constructor()"),r){if(Ps.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)Ps.debug("constructor() | handler given: %s",e);else{if(!(e=Ts()))throw new hs.UnsupportedError("device not supported");Ps.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome74":this._handlerFactory=ys.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=vs.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=bs.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=ws.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=_s.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=Ss.Safari12.createFactory();break;case"Safari11":this._handlerFactory=Rs.Safari11.createFactory();break;case"Edge11":this._handlerFactory=ks.Edge11.createFactory();break;case"ReactNative":this._handlerFactory=Cs.ReactNative.createFactory();break;default:throw new TypeError(`unknown handlerName "${e}"`)}}const n=this._handlerFactory();this._handlerName=n.name,n.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 hs.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new hs.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;Ps.debug("load() [routerRtpCapabilities:%o]",e),e=fs.clone(e,void 0);try{if(this._loaded)throw new hs.InvalidStateError("already loaded");ms.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();Ps.debug("load() | got native RTP capabilities:%o",r),ms.validateRtpCapabilities(r),this._extendedRtpCapabilities=ms.getExtendedRtpCapabilities(r,e),Ps.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=ms.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=ms.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=ms.getRecvRtpCapabilities(this._extendedRtpCapabilities),ms.validateRtpCapabilities(this._recvRtpCapabilities),Ps.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),Ps.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),ms.validateSctpCapabilities(this._sctpCapabilities),Ps.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new hs.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:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d={}}){return Ps.debug("createSendTransport()"),this._createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d={}}){return Ps.debug("createRecvTransport()"),this._createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}_createTransport({direction:e,id:t,iceParameters:r,iceCandidates:n,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p={}}){if(!this._loaded)throw new hs.InvalidStateError("not loaded");if("string"!=typeof t)throw new TypeError("missing id");if("object"!=typeof r)throw new TypeError("missing iceParameters");if(!Array.isArray(n))throw new TypeError("missing iceCandidates");if("object"!=typeof i)throw new TypeError("missing dtlsParameters");if(s&&"object"!=typeof s)throw new TypeError("wrong sctpParameters");if(p&&"object"!=typeof p)throw new TypeError("if given, appData must be an object");const l=new gs.Transport({direction:e,id:t,iceParameters:r,iceCandidates:n,dtlsParameters:i,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",l),l}};var Es={},Ds={};Object.defineProperty(Ds,"__esModule",{value:!0});var Ms,Os,xs,Is={};Object.defineProperty(Is,"__esModule",{value:!0}),function(e){var t=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),r=G&&G.__exportStar||function(e,r){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(r,n)||t(r,e,n)};Object.defineProperty(e,"__esModule",{value:!0}),r(Re,e),r(nt,e),r(at,e),r(lt,e),r(gt,e),r(_t,e),r(Ds,e),r(Is,e),r(ar,e),r(Ie,e)}(Es),function(e){var t=G&&G.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),r=G&&G.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=G&&G.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&t(n,e,i);return r(n,e),n},i=G&&G.__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 s=i(he.exports);e.debug=s.default;const a=Re;Object.defineProperty(e,"Device",{enumerable:!0,get:function(){return a.Device}}),Object.defineProperty(e,"detectDevice",{enumerable:!0,get:function(){return a.detectDevice}});const o=n(Es);e.types=o,e.version="3.6.50";var c=Rr;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(ue);class Ls{constructor(e){this.score=10,this.producerScore=10,this.spatialLayers=0,this.temporalLayers=0,this.currentSpatialLayer=0,this.currentTemporalLayer=0,this.availableSpatialLayers=[];const{logLevel:t,consumer:r}=e;this.id=r.id,this.kind=r.kind,this.producerId=r.producerId,this.appData=r.appData,this.consumer=r,this.logger=new pe({logLevel:t,namespace:"PeerConsumer"}),this.currentMaxSpatialLayer=this.appData.producerData.maxSpatialLayer,this.parseScalabilityMode(),this.setSpatialLayersParams(),this.setCurrentSpatialLayerParams()}get paused(){return this.consumer.paused}pause(){return this.consumer.pause()}resume(){return this.consumer.resume()}close(){return this.consumer.close()}get isVideo(){return"video"===this.kind}get isAudio(){return"audio"===this.kind}parseScalabilityMode(){if(this.consumer.rtpParameters.encodings){const{scalabilityMode:e}=this.consumer.rtpParameters.encodings[0],{spatialLayers:t,temporalLayers:r}=ue.parseScalabilityMode(e);this.spatialLayers=t,this.temporalLayers=r,this.logger.debug("parseScalabilityMode()",{scalabilityMode:e,spatialLayers:t,temporalLayers:r})}}setSpatialLayersParams(){const{encodings:e}=this.appData.producerData;e&&(this.availableSpatialLayers=e.map((e=>this.parseSpatialLayerParams(e))))}setCurrentSpatialLayerParams(){const{encodings:e}=this.appData.producerData;e&&(this.currentSpatialLayerParams=this.parseSpatialLayerParams(e[this.currentSpatialLayer]),this.logger.debug("setCurrentSpatialLayerParams()",{currentSpatialLayerParams:this.currentSpatialLayerParams}))}parseSpatialLayerParams(e){const{trackTransformParams:t}=this.appData.producerData;if(!t)return e;const{width:r,height:n}=t,i=e.scaleResolutionDownBy||1;return r&&n?Object.assign({width:r/i,height:n/i},e):e}setCurrentSpatialLayer(e){if(!this.isVideo)throw new Error("setCurrentSpatialLayer applies to video consumers only");this.currentSpatialLayer=e,this.logger.debug("setCurrentSpatialLayer()",{currentSpatialLayer:e}),this.setCurrentSpatialLayerParams()}setCurrentTemporalLayer(e){if(!this.isVideo)throw new Error("setCurrentTemporalLayer applies to video consumers only");this.currentTemporalLayer=e,this.logger.debug("setCurrentTemporalLayer()",{currentTemporalLayer:e})}setRequestedSpatialLayer(e){this.requestedSpatialLayer=e}setCurrentMaxSpatialLayer(e){this.currentMaxSpatialLayer=e}}class js{constructor(e){this.label=i.Unknown,Ms.set(this,void 0),Os.set(this,void 0),this.mediaStreamTrack=e.mediaStreamTrack,this.label=e.label,this.consumer=e.consumer,c(this,Ms,e.engine,"f"),c(this,Os,new pe({logLevel:e.engine.logLevel,namespace:"PeerTrack"}),"f")}get consumerId(){var e;return null===(e=this.consumer)||void 0===e?void 0:e.id}get currentSpatialLayer(){var e;return(null===(e=this.consumer)||void 0===e?void 0:e.currentSpatialLayer)||0}close(){var e;null===(e=this.consumer)||void 0===e||e.close()}pause(){return a(this,void 0,void 0,(function*(){if(this.consumer)if(this.consumer.paused)o(this,Os,"f").warn("pause()",{message:"Already paused",peer:this,consumer:this.consumer});else try{yield this.pauseRemoteConsumer(this.consumer.id),this.consumer.pause(),o(this,Os,"f").debug("pause()",{peer:this,consumer:this.consumer})}catch(e){o(this,Os,"f").error("pause()",e)}}))}resume(){return a(this,void 0,void 0,(function*(){if(this.consumer)if(this.consumer.paused)try{yield this.resumeRemoteConsumer(this.consumer.id),this.consumer.resume(),o(this,Os,"f").debug("resume()",{peer:this})}catch(e){o(this,Os,"f").error("resume()",e)}else o(this,Os,"f").warn("resume()",{message:"Already playing",peer:this,consumer:this.consumer})}))}setPriority(e){return a(this,void 0,void 0,(function*(){this.consumer&&(yield this.setConsumerPriority({consumerId:this.consumer.id,priority:e}))}))}setConsumerPriority(e){return a(this,void 0,void 0,(function*(){try{yield o(this,Ms,"f").network.socket.request(F,e),o(this,Os,"f").debug("setConsumerPriority()",{peer:this,params:e})}catch(t){throw o(this,Os,"f").error("setConsumerPriority()",{peer:this,params:e}),new Error("Can`t change stream priority")}}))}pauseRemoteConsumer(e){return a(this,void 0,void 0,(function*(){return o(this,Ms,"f").network.socket.request(I,{consumerId:e})}))}resumeRemoteConsumer(e){return a(this,void 0,void 0,(function*(){return o(this,Ms,"f").network.socket.request(L,{consumerId:e})}))}requestVideoPreferredLayers({spatialLayer:e,temporalLayer:t}){return a(this,void 0,void 0,(function*(){if(this.consumer)try{if(this.consumer.isAudio)return void o(this,Os,"f").warn("requestVideoPreferredLayers()",{message:"Only video consumers support"});if(e===this.consumer.currentSpatialLayer)return;if(e>this.consumer.spatialLayers)return void o(this,Os,"f").warn("requestVideoPreferredLayers()",{message:"Invalid spatial layer"});if(e>this.consumer.currentMaxSpatialLayer)return void(yield this.requestMaxSpatialLayer(this.consumer.id,e));yield o(this,Ms,"f").network.socket.request(A,{consumerId:this.consumer.id,spatialLayer:e,temporalLayer:t}),o(this,Os,"f").debug("requestVideoPreferredLayers()",{peer:this,consumer:this.consumer,spatialLayer:e,temporalLayer:t})}catch(e){throw o(this,Os,"f").error("requestVideoPreferredLayers()",{peer:this,consumerId:this.consumer.id,error:e}),new Error("Error request preferred layers")}}))}getVideoAvailableLayers(){if(this.consumer){if(!this.consumer.isAudio)return this.consumer.availableSpatialLayers;o(this,Os,"f").warn("getVideoAvailableLayers()",{message:"Only video consumers support"})}}requestMaxSpatialLayer(e,t){return a(this,void 0,void 0,(function*(){try{if(!this.consumer)return;if(this.consumer.isAudio||0===this.consumer.spatialLayers||this.consumer.currentMaxSpatialLayer===t||t<this.consumer.currentMaxSpatialLayer)return void o(this,Os,"f").warn("requestMaxSpatialLayer()",{message:"Can`t request this spatial layer",consumerId:e,spatialLayer:t});this.consumer.setRequestedSpatialLayer(t),yield o(this,Ms,"f").network.socket.request(M,{producerId:this.consumer.producerId,spatialLayer:t}),o(this,Os,"f").debug("requestMaxSpatialLayer()",{consumerId:e,spatialLayer:t})}catch(r){o(this,Os,"f").warn("requestMaxSpatialLayer()",{message:"Error request spatial layer",consumerId:e,spatialLayer:t,error:r})}}))}}Ms=new WeakMap,Os=new WeakMap,function(e){e[e.BAD=4]="BAD",e[e.MEDIUM=6]="MEDIUM",e[e.GOOD=10]="GOOD"}(xs||(xs={}));class As{constructor({id:e,channelIds:t,appId:r,loginDate:i=new Date,producers:s=[],engine:a,appData:o,uid:c,role:p}){this.producers=new Map,this.tracks=new Map,this._observer=new d,this.incomingConnectionQuality=n.GOOD,this.outgoingConnectionQuality=n.GOOD,this.overallConnectionQuality=n.GOOD,this.id=e,this.channelIds=t,this.appId=r,this.loginDate=i,this.appData=o||{},this.uid=c,this.role=p,this.engine=a,this.logger=new pe({logLevel:a.logLevel,namespace:"Peer"}),s.forEach(this.handleNewProducer.bind(this)),this.handlePeerEvents()}get observer(){return this._observer}get isMe(){return this.id===this.engine.mySocketId}get publishedMedia(){return Array.from(this.producers.values()).map((e=>({producerId:e.id,kind:e.kind,label:e.label})))}subscribe(e){return a(this,void 0,void 0,(function*(){const t=this.producers.get(e);if(!t)return void this.logger.warn("subscribe()",{message:"Peer does not have a producer",peer:this,producerId:e});this.getAllConsumers().find((t=>t.producerId===e))?this.logger.warn("subscribe()",{message:"Already subscribed to producer",peer:this,producerId:e}):yield this.createConsumer(t)}))}createConsumer(e){return a(this,void 0,void 0,(function*(){const t=this.engine.network.receiveTransport;if(!t)throw this.logger.error("createConsumer()","missing receiveTransport"),new Error("Client not initialized");try{const r=yield this.engine.network.socket.request(O,{producerId:e.id,transportId:t.id,rtpCapabilities:this.engine.media.mediasoupDevice.rtpCapabilities,appData:{peerId:this.engine.mySocketId,appId:this.engine.appId,channelId:this.engine.channelId},producerPeerId:this.id}),n=yield t.consume(r);yield this.engine.network.socket.request(L,{consumerId:n.id}),this.logger.debug(`Subscribed for ${e.kind}`,{peer:this});const i=new js({mediaStreamTrack:n.track,label:e.label,consumer:new Ls({consumer:n,logLevel:this.engine.logLevel}),engine:this.engine});this.tracks.set(i.label,i),this.observer.safeEmit(S,i)}catch(t){throw this.logger.error("createConsumer()",e,t),new Error("Error subscribe media")}}))}handleNewProducer(e){if(this.producers.get(e.id))return;const t=new le(e);this.producers.set(t.id,t),this.logger.debug("Peer published media:",{peer:this,producer:t}),this.observer.safeEmit(b,{producerId:t.id,kind:t.kind,label:t.label})}handlePeerEvents(){this.observer.on(C,this.handleNewProducer.bind(this)),this.observer.on(P,(e=>{this.producers.delete(e.id),this.logger.debug("Peer unpublished media:",{peer:this,producer:e}),this.observer.safeEmit(w,{producerId:e.id,kind:e.kind,label:e.label})})),this.observer.on(x,(e=>{const t=this.getConsumerById(e);t&&(t.close(),this.tracks.delete(t.appData.producerData.label),this.observer.safeEmit(R,{producerId:t.producerId,kind:t.kind,label:t.appData.producerData.label}),this.logger.debug("Peer video track was ended:",{peer:this}))})),this.observer.on(I,(e=>{const t=this.getConsumerById(e);t&&(t.pause(),this.logger.debug("Peer video track was paused:",{peer:this}))})),this.observer.on(L,(e=>{const t=this.getConsumerById(e);t&&(t.resume(),this.logger.debug("Peer video track was paused:",{peer:this}))})),this.observer.on(j,(e=>{if(this.isMe)return;const t=this.getConsumerById(e.consumerId);if(!t)return;const{score:r,producerScore:n}=e;t.score=r,t.producerScore=n;const i=this.getAllConsumers().map((e=>e.producerScore)),s=Math.min(...i);this.outgoingConnectionQuality=As.getConnectionQualityByScore(s),this.emitConnectionQuality()})),this.observer.on(j,(()=>{if(!this.isMe)return;const e=[];if(this.engine.peers.forEach((t=>{t.getAllConsumers().forEach((t=>{t.score<t.producerScore&&e.push(t.score)}))}),[]),0===e.length)this.incomingConnectionQuality=n.GOOD;else{const t=e.map((e=>e)).reduce(((e,t)=>e+t),0),r=Math.floor(t/e.length);this.incomingConnectionQuality=As.getConnectionQualityByScore(r)}this.emitConnectionQuality()})),this.observer.on(E,(e=>{var t;if(!this.isMe)return;const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e.producerId}));if(!r)return;const n=null===(t=r.getProducer())||void 0===t?void 0:t.maxSpatialLayer,{scores:i}=e;if(0===i.length)return;let{score:s}=i[0];if(i.length>1&&0!==n){n&&i.splice(n+1);const e=i.map((({score:e})=>e)).reduce(((e,t)=>e+t),0);s=Math.floor(e/i.length)}this.outgoingConnectionQuality=As.getConnectionQualityByScore(s),this.emitConnectionQuality()})),this.observer.on(A,(e=>{const t=this.getConsumerById(e.consumerId);(null==t?void 0:t.isVideo)&&(t.setCurrentTemporalLayer(e.temporalLayer),t.setCurrentSpatialLayer(e.spatialLayer),e.spatialLayer===t.requestedSpatialLayer&&t.setRequestedSpatialLayer(void 0),this.logger.debug("consumerChangePreferredLayers()",Object.assign({consumer:t},e)))}))}emitConnectionQuality(){setTimeout((()=>{const e=Math.min(this.outgoingConnectionQuality,this.incomingConnectionQuality);e!==this.overallConnectionQuality&&(this.observer.safeEmit(_,{connectionQuality:e}),this.overallConnectionQuality=e,this.logger.debug("emitConnectionQuality()",{peer:this,connectionQuality:e}))}),1e3)}static getConnectionQualityByScore(e){return e<xs.BAD?n.BAD:e<xs.MEDIUM?n.MEDIUM:n.GOOD}getAllConsumers(){return Array.from(this.tracks.values()).map((e=>e.consumer)).filter((e=>!!e))}getAllProducers(){return Array.from(this.producers.values())}getConsumerByProducerId(e){return this.getAllConsumers().find((t=>t.producerId===e))}getConsumerById(e){return this.getAllConsumers().find((t=>t.id===e))}}const Fs=[{scaleResolutionDownBy:4,maxBitrate:15e4,maxFramerate:12},{scaleResolutionDownBy:2,maxBitrate:35e4,maxFramerate:18},{scaleResolutionDownBy:1,maxBitrate:9e5,maxFramerate:24}],Ns=[{maxBitrate:1e6,dtx:!0}];var Bs;class Us{constructor(e){Bs.set(this,void 0),this.encoderConfig={},this.label=i.Unknown;const{mediaStreamTrack:t,logLevel:r}=e;c(this,Bs,t,"f"),this.logger=new pe({namespace:"Track",logLevel:r})}get mediaStreamTrack(){return o(this,Bs,"f")}get id(){return this.mediaStreamTrack.id}get kind(){return this.mediaStreamTrack.kind}get producerId(){var e;return null===(e=this.producer)||void 0===e?void 0:e.id}get isPublished(){return!!this.producer&&!this.producer.closed}getLabel(){return this.label}setLabel(e){this.label=e}setEncoderConfig(e){this.encoderConfig=e}getEncoderConfig(){return this.encoderConfig}setProducer(e){this.producer=e}getProducer(){return this.producer}closeProducer(){var e;null===(e=this.producer)||void 0===e||e.close(),this.producer=void 0}setPriority(e){return a(this,void 0,void 0,(function*(){this.producer?(yield this.producer.setRtpEncodingParameters({priority:e}),this.logger.debug("setPriority()",{label:this.getLabel(),priority:e})):this.logger.warn("setPriority()","Not published yet")}))}}Bs=new WeakMap;class qs extends Us{constructor(){super(...arguments),this.transformParams={}}getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){return this.getEncoderConfig().preferredCodec||"h264"}getEncodings(){return this.getEncoderConfig().encodings||Fs}setTransformParams(e){this.transformParams=e}setMaxSpatialLayer(e){return a(this,void 0,void 0,(function*(){const t=this.getProducer();t?(yield t.setMaxSpatialLayer(e),this.logger.debug("setMaxSpatialLayer()",{label:this.getLabel(),spatialLayer:e})):this.logger.warn("setMaxSpatialLayer()",{message:"Not produced yet"})}))}getMaxSpatialLayer(){const e=this.getProducer();if(e)return e.maxSpatialLayer;this.logger.warn("getMaxSpatialLayer()",{message:"Not produced yet"})}}class $s extends Us{getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{opusFec:this.getEncoderConfig().enableFec||!0}}}const zs={width:1280,height:720},Vs={width:1920,height:1080};var Ws,Gs;class Hs{constructor(e){this.isDeviceLoaded=!1,this.tracks=new Map,Ws.set(this,void 0),Gs.set(this,void 0),c(this,Gs,e.logLevel,"f"),c(this,Ws,new pe({namespace:"Media",logLevel:e.logLevel}),"f")}get mediasoupDevice(){return this.device||(this.device=new ue.Device),this.device}loadDevice(e){return a(this,void 0,void 0,(function*(){this.isDeviceLoaded||(yield this.mediasoupDevice.load({routerRtpCapabilities:e}),this.isDeviceLoaded=!0)}))}getTrackCodec(e){var t;if(e instanceof qs&&(null===(t=this.mediasoupDevice.rtpCapabilities)||void 0===t?void 0:t.codecs))return this.mediasoupDevice.rtpCapabilities.codecs.find((t=>t.mimeType.toLowerCase()===`video/${e.getPreferredCodec()}`))}createTracks(e){return e.getTracks().map((t=>{const r="audio"===t.kind?new $s({mediaStreamTrack:t,logLevel:o(this,Gs,"f")}):new qs({mediaStreamTrack:t,logLevel:o(this,Gs,"f")});return this.tracks.set(r.id,r),o(this,Ws,"f").debug("createTrack() track created",{streamId:e.id,trackId:r.id,kind:r.kind}),r}))}createUserMediaTracks(e){return a(this,void 0,void 0,(function*(){const t=yield navigator.mediaDevices.getUserMedia(e);return o(this,Ws,"f").debug("createUserMediaTrack() stream created",{streamId:t.id}),this.createTracks(t)}))}createDisplayMediaTracks(e){return a(this,void 0,void 0,(function*(){const t=yield navigator.mediaDevices.getDisplayMedia(e);return this.createTracks(t)}))}deleteTrack(e){e.closeProducer(),e.mediaStreamTrack.stop(),this.tracks.delete(e.id),o(this,Ws,"f").debug("deleteTrack() tack deleted",{trackId:e.id,kind:e.kind})}getAllTracks(){return Array.from(this.tracks.values())}static getScreenVideoTrackParams(e){return{videoTrackOptions:{frameRate:{ideal:(null==e?void 0:e.frameRate)||30},width:{ideal:(null==e?void 0:e.width)||Vs.width},height:{ideal:(null==e?void 0:e.height)||Vs.height}},transformParams:{width:(null==e?void 0:e.width)||zs.width,height:(null==e?void 0:e.height)||zs.height},encoderConfig:(null==e?void 0:e.encoderConfig)||{encodings:Ns}}}static getCameraVideoTrackParams(e){return{videoTrackOptions:{deviceId:null==e?void 0:e.deviceId,frameRate:{ideal:(null==e?void 0:e.frameRate)||30},width:{ideal:(null==e?void 0:e.width)||zs.width},height:{ideal:(null==e?void 0:e.height)||zs.height}},transformParams:{width:(null==e?void 0:e.width)||zs.width,height:(null==e?void 0:e.height)||zs.height},encoderConfig:(null==e?void 0:e.encoderConfig)||{encodings:Fs}}}}Ws=new WeakMap,Gs=new WeakMap;const Ks=new class{sleepMs(e){return a(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}now(){return new Date(Date.now())}},Qs=(e,t={})=>a(void 0,void 0,void 0,(function*(){var r;const n=t.maxRetries||2,i=t.minBackoffDelayMs||50;let s,a=0;for(;a<n;){a+=1;try{return yield e()}catch(e){if(s=e,t.logger&&t.logger.info("Action retry failed",a,t.actionName,e),a<n){const e=Math.pow(2,a-1)*i;yield Ks.sleepMs(Math.min(e,null!==(r=t.maxBackoffDelayMs)&&void 0!==r?r:e))}}}throw s}));class Js{constructor(e){this.initialized=!1,this.isJoined=!1,this.isRoomJoining=!1;const{clientEventEmitter:t,network:r,dependenciesFactory:n,logLevel:i}=e;this.logLevel=i||ne,this.system=n.createSystem({logLevel:this.logLevel,clientEventEmitter:t}),this.media=n.createMedia({logLevel:this.logLevel}),this.network=n.createNetwork({logLevel:this.logLevel,loadbalancer:r.loadbalancer}),this.peersRepository=new Map,this.clientEventEmitter=t,this.channelEventsHandler=n.createChannelEventHandler(this),this.mediaSoupEventsHandler=n.createMediaSoupEventHandler(this),this.logger=new pe({logLevel:this.logLevel,namespace:"Engine",onLogMessage:e.onLogMessage}),this.webRtcIssueDetector=n.createIssueDetector({onIssues:e.onIssues}),this.watchSocketState()}initialize(){return a(this,void 0,void 0,(function*(){try{const{rtpCapabilities:e}=yield this.network.socket.request("router.getRtpCapabilities");yield this.media.loadDevice(e),this.webRtcIssueDetector.watchNewPeerConnections(),yield this.network.createSendTransport(this.media.mediasoupDevice),yield this.network.createRecvTransport(this.media.mediasoupDevice),this.initialized=!0,this.logger.debug("initialize()")}catch(e){throw this.logger.error("initialize()",e),new Error("Error initialize engine")}}))}release(){return a(this,void 0,void 0,(function*(){try{this.initialized=!1,this.isJoined=!1,this.app=void 0,this.channel=void 0,this.webRtcIssueDetector.stopWatchingNewPeerConnections(),this.webRtcIssueDetector.resetWatchedPeerConnectionsList(),this.network.socket.disconnect(),this.peersRepository.clear(),yield this.unpublish(),yield this.network.closeSendTransport(),yield this.network.closeReceiveTransport(),this.logger.debug("release()")}catch(e){throw this.logger.error("release()",e),new Error("Error release engine")}}))}pauseRemoteProducer(e){return a(this,void 0,void 0,(function*(){return this.network.socket.request(T,{producerId:e})}))}resumeRemoteProducer(e){return a(this,void 0,void 0,(function*(){return this.network.socket.request(T,{producerId:e})}))}watchSocketState(){this.network.socket.observer.on("state",(e=>{const{state:t,code:r}=e;this.clientEventEmitter.emit(t,{code:r}),t===k.Reconnecting&&(this.network.socket.disconnect(),this.clientEventEmitter.emit(y))}))}get peers(){return Array.from(this.peersRepository.values())}get hostPeers(){return this.peers.filter((e=>"host"===e.role))}get audiencePeers(){return this.peers.filter((e=>"audience"===e.role))}get mySocketId(){return this.network.socket.id}join(e){return a(this,void 0,void 0,(function*(){try{this.logger.debug("join()",{params:e}),this.isRoomJoining=!0,yield this.connectToSocketServerWithRetry(e),yield this.performJoin(e)}catch(e){throw this.logger.error("join()",{error:e}),e}finally{this.isRoomJoining=!1}}))}loadPeers(e){return a(this,void 0,void 0,(function*(){const{peers:t}=yield this.network.socket.request(u,{role:e});t.filter((e=>!this.peersRepository.has(e.id))).forEach((e=>this.setPeer(e)))}))}setPeer(e){const t=new As(Object.assign(Object.assign({},e),{engine:this,loginDate:new Date}));return this.peersRepository.set(t.id,t),t}removePeer(e){this.peersRepository.delete(e)}pause(e){return a(this,void 0,void 0,(function*(){const t=e.getProducer();if(t)try{yield this.pauseRemoteProducer(t.id),t.pause(),this.logger.debug("pause()",{kind:e.kind})}catch(t){throw this.logger.error("pause()",{error:t,kind:e.kind}),new Error("Can`t pause track")}else this.logger.warn("pause()",{message:"Track is not published",kind:e.kind})}))}resume(e){return a(this,void 0,void 0,(function*(){const t=e.getProducer();if(t)try{yield this.resumeRemoteProducer(t.id),t.resume(),this.logger.debug("resume()",{kind:e.kind})}catch(t){throw this.logger.error("resume()",{error:t,kind:e.kind}),new Error("Can`t resume track")}else this.logger.warn("resume()",{message:"Track is not published"})}))}createCameraVideoTrack(e){return a(this,void 0,void 0,(function*(){const t=Hs.getCameraVideoTrackParams(e);try{const[e]=yield this.media.createUserMediaTracks({audio:!1,video:t.videoTrackOptions});return e instanceof qs&&(e.setLabel(i.Camera),e.setEncoderConfig(t.encoderConfig),e.setTransformParams(t.transformParams)),this.logger.debug("createCameraVideoTrack()",{trackParams:t,track:e}),e}catch(e){throw this.logger.error("createCameraVideoTrack()",{error:e,trackParams:t}),new Error(`Can not create camera track: ${e.message}`)}}))}createMicrophoneAudioTrack(e){return a(this,void 0,void 0,(function*(){try{const[t]=yield this.media.createUserMediaTracks({video:!1,audio:{deviceId:null==e?void 0:e.deviceId}});return t.setLabel(i.Microphone),(null==e?void 0:e.encoderConfig)&&t.setEncoderConfig(e.encoderConfig),this.logger.debug("createMicrophoneAudioTrack()",{options:e,track:t}),t}catch(t){throw this.logger.error("createMicrophoneAudioTrack()",{error:t,options:e}),new Error(`Can not create microphone track: ${t.message}`)}}))}createScreenMediaTracks(e){return a(this,void 0,void 0,(function*(){const t=Hs.getScreenVideoTrackParams(null==e?void 0:e.video);try{const r=yield this.media.createDisplayMediaTracks({audio:null==e?void 0:e.audio,video:t.videoTrackOptions});return r.forEach((r=>{if(r.mediaStreamTrack.addEventListener("ended",(()=>{this.unpublish(r)})),r instanceof qs)return r.setLabel(i.ScreenVideo),r.setEncoderConfig(t.encoderConfig),r.setTransformParams(t.transformParams),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,track:r});r.setLabel(i.ScreenAudio),(null==e?void 0:e.audio)&&r.setEncoderConfig(e.audio),this.logger.debug("createScreenMediaTrack()",{trackParams:null==e?void 0:e.audio,track:r})})),r}catch(e){throw this.logger.error("createScreenMediaTrack()",{error:e,trackParams:t}),new Error(`Can not create screen media tracks: ${e.message}`)}}))}publish(e){return a(this,void 0,void 0,(function*(){if(!this.cahPublish)throw this.logger.error("publish()",{message:"Not enough access to publish"}),new Error("Not enough access to publish");const t=(Array.isArray(e)?e:[e]).map((e=>a(this,void 0,void 0,(function*(){var t,r;const n="getEncodings"in e?e.getEncodings():void 0,i="getCodecOptions"in e?e.getCodecOptions():void 0,s=n&&n.length>=1?1:0,a={peerId:this.mySocketId,label:e.getLabel(),trackTransformParams:{},maxSpatialLayer:0};e instanceof qs&&(a.maxSpatialLayer=s,a.trackTransformParams=e.transformParams);const o=yield null===(t=this.network.sendTransport)||void 0===t?void 0:t.produce({track:e.mediaStreamTrack,encodings:n,codecOptions:i,codec:this.media.getTrackCodec(e),stopTracks:!0,disableTrackOnPause:!0,zeroRtpOnPause:!0,appData:a});if(!o)return;e.setProducer(o),e instanceof qs&&(yield e.setMaxSpatialLayer(s),yield this.network.socket.request(D,{producerId:null===(r=e.getProducer())||void 0===r?void 0:r.id,maxSpatialLayer:s})),e instanceof $s&&(yield e.setPriority("high"));const c=this.peersRepository.get(this.mySocketId);if(!c)return;const d=new js({mediaStreamTrack:e.mediaStreamTrack,label:e.getLabel(),engine:this});c.tracks.set(d.label,d),c.observer.safeEmit(S,d),this.logger.debug("publish()",{track:e,encodings:n,codecOptions:i})}))));try{yield Promise.all(t)}catch(e){this.logger.error("publish()",{error:e})}}))}unpublish(e){return a(this,void 0,void 0,(function*(){let t;t=e?Array.isArray(e)?e:[e]:this.media.getAllTracks();const r=t.map((e=>a(this,void 0,void 0,(function*(){var t,r,n;const i=e.getProducer();i&&(null===(t=this.network.socket.connection)||void 0===t?void 0:t.connected)&&(yield this.network.closeRemoteProducer(i.id));const s=this.peersRepository.get(this.mySocketId);s&&s.observer.safeEmit(R,{producerId:null===(r=e.getProducer())||void 0===r?void 0:r.id,kind:null===(n=e.getProducer())||void 0===n?void 0:n.kind,label:e.getLabel()}),yield this.media.deleteTrack(e),this.logger.debug("unpublish()",{track:e})}))));try{yield Promise.all(r)}catch(e){this.logger.error("unpublish()",{error:e})}}))}deleteTrack(e){return this.media.deleteTrack(e)}get channelId(){return this.channel}get appId(){return this.app}connectToSocketServerWithRetry(e){return a(this,void 0,void 0,(function*(){return Qs((()=>a(this,void 0,void 0,(function*(){return this.connectToSocketServer(e)}))),{maxRetries:15,minBackoffDelayMs:150,maxBackoffDelayMs:5e3,actionName:"connectToSocketServer",logger:new pe({namespace:"RetrySocketConnect",logLevel:this.logLevel})})}))}connectToSocketServer(e){return a(this,void 0,void 0,(function*(){const{webSocketUrl:t}=yield this.getAvailableNode({channelId:e.channelId,role:e.role});this.network.socket.connect(t);try{yield this.waitForSocketConnection()}catch(t){throw this.logger.error("Failed to connect to socket server",{error:t,role:e.role,channelId:e.channelId}),this.network.socket.disconnect(),t}}))}getAvailableNode(e){return a(this,void 0,void 0,(function*(){try{return{webSocketUrl:(yield this.network.loadBalancerClient.getNode(e)).webSocketUrl}}catch(e){throw this.logger.error("getAvailableNode()",{error:"No available nodes"}),e}}))}waitForSocketConnection(){return new Promise(((e,t)=>{const r=n=>a(this,void 0,void 0,(function*(){const{error:i,state:s}=n,a=()=>this.network.socket.observer.removeListener("state",r),o=[k.Disconnected,k.Reconnecting].includes(s);if(i||this.isRoomJoining&&o)return a(),void t(i||"Not expected socket state for new connection");this.isRoomJoining&&[k.Connected,k.Reconnected].includes(s)&&(a(),e())}));this.network.socket.observer.on("state",r)}))}performJoin(e){return a(this,void 0,void 0,(function*(){try{yield this.sendJoinChannelRequestWithRetry(e),this.app=e.appId,this.channel=e.channelId,yield this.initialize(),this.channelEventsHandler.subscribeToEvents(),this.mediaSoupEventsHandler.subscribeToEvents(),this.isJoined=!0,this.logger.debug(`Successfully joined to ${e.channelId}. Peers in channel:`,this.peersRepository)}catch(e){throw this.logger.error("performJoin()",{error:e}),e}}))}sendJoinChannelRequestWithRetry(e){return a(this,void 0,void 0,(function*(){return Qs((()=>a(this,void 0,void 0,(function*(){return this.sendJoinChannelRequest(e)}))),{maxRetries:3,minBackoffDelayMs:300,actionName:"sendJoinChannelRequest",logger:new pe({namespace:"RetryJoin",logLevel:this.logLevel})})}))}sendJoinChannelRequest(e){return a(this,void 0,void 0,(function*(){return this.network.socket.request(l,e)}))}get cahPublish(){var e;return"host"===(null===(e=this.peers.find((e=>e.isMe)))||void 0===e?void 0:e.role)}}class Ys{constructor(e){const{socketClient:t,loadBalancerApiClient:r}=e;this.socket=t,this.loadBalancerClient=r,this.logger=new pe({namespace:"Network",logLevel:e.logLevel})}closeRemoteProducer(e){return a(this,void 0,void 0,(function*(){yield this.socket.request(P,{peerId:this.socket.id,producerId:e})}))}closeSendTransport(){var e;return a(this,void 0,void 0,(function*(){this.sendTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.sendTransport)),this.sendTransport=void 0):this.logger.warn("closeSendTransport()",{message:"No available send transport"})}))}closeReceiveTransport(){var e;return a(this,void 0,void 0,(function*(){this.receiveTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.receiveTransport)),this.receiveTransport=void 0):this.logger.warn("closeReceiveTransport()",{message:"No available receive transport"})}))}closeTransport(e){return a(this,void 0,void 0,(function*(){try{const{success:t}=yield this.socket.request(B,{transportId:e.id});return this.logger.debug("closeTransport()",{transport:e}),Boolean(t)}catch(e){return this.logger.error("closeTransport()",{error:e}),!1}finally{e.close()}}))}createSendTransport(e){return a(this,void 0,void 0,(function*(){if(this.sendTransport)return void this.logger.warn("createSendTransport()",{message:"Send transport already exists"});const t=yield this.socket.request(N,{sctpCapabilities:e.sctpCapabilities,localDirection:"out"});this.sendTransport=e.createSendTransport(t),this.logger.debug("createSendTransport()",{transport:this.sendTransport}),this.sendTransport.on(V,(({dtlsParameters:e},r,n)=>a(this,void 0,void 0,(function*(){var i;try{yield this.socket.request(U,{transportId:null===(i=this.sendTransport)||void 0===i?void 0:i.id,dtlsParameters:e}),r(),this.logger.debug("sendTransport.connect()")}catch(r){this.logger.error("sendTransport.on(`connect`)",{dtlsParameters:e,sendTransportOptions:t,error:r}),n(r)}})))),this.sendTransport.on(W,((e,t,r)=>a(this,void 0,void 0,(function*(){var n;try{const{id:r}=yield this.socket.request(q,{transportId:null===(n=this.sendTransport)||void 0===n?void 0:n.id,kind:e.kind,rtpParameters:e.rtpParameters,appData:e.appData});t({id:r}),this.logger.debug("sendTransport.produce()")}catch(e){this.logger.error("sendTransport.produce()",{error:e}),r(e)}})))),this.sendTransport.on($,(e=>{this.logger.debug("sendTransport.state",{state:e}),"failed"===e&&this.sendTransport&&(this.restartIce(this.sendTransport),this.logger.warn("sendTransport.restartIce()"))}))}))}createRecvTransport(e){return a(this,void 0,void 0,(function*(){if(this.receiveTransport)return void this.logger.warn("createRecvTransport()",{message:"Receive transport already exists"});const t=yield this.socket.request(N,{sctpCapabilities:e.sctpCapabilities,localDirection:"in"});this.receiveTransport=e.createRecvTransport(t),this.logger.debug("createRecvTransport()",{transport:this.receiveTransport}),this.receiveTransport.on(V,(({dtlsParameters:e},t,r)=>a(this,void 0,void 0,(function*(){var n;try{yield this.socket.request(U,{transportId:null===(n=this.receiveTransport)||void 0===n?void 0:n.id,dtlsParameters:e}),t(),this.logger.debug("receiveTransport.connect()")}catch(e){this.logger.error("receiveTransport.on(`connect`)",{error:e}),r(e)}})))),this.receiveTransport.on($,(e=>{this.logger.debug("receiveTransport.state",{state:e}),"failed"===e&&this.receiveTransport&&(this.restartIce(this.receiveTransport),this.logger.debug("receiveTransport.restartIce()"))}))}))}getIceParameters(e){return a(this,void 0,void 0,(function*(){const t=yield this.socket.request(z,{transportId:e.id}),{error:r}=t;if(r)throw new Error(r);return this.logger.debug("getIceParameters()",{iceParameters:t}),t}))}restartIce(e){return a(this,void 0,void 0,(function*(){try{const t=yield this.getIceParameters(e);yield e.restartIce({iceParameters:t})}catch(e){this.logger.error("restartIce()",{error:e})}}))}}class Xs{constructor(e){this.isEnableVideoDevicesLock=!1,this.isEnableAudioDevicesLock=!1,this.isDevicesDetected=!1,this.availableVideoDevices=[],this.availableAudioDevices=[],this.isMediaDevicesAccessGranted=!1;const{clientEventEmitter:t,logLevel:r}=e;this.clientEventEmitter=t,this.logger=new pe({namespace:"System",logLevel:r}),this.listenDevices()}setIsEnableVideoDevicesLock(e){this.isEnableVideoDevicesLock=e}setIsEnableAudioDevicesLock(e){this.isEnableAudioDevicesLock=e}setAvailableVideoDevices(e){this.availableVideoDevices=e}setAvailableAudioDevices(e){this.availableAudioDevices=e}requestMediaDevicesAccess(){return a(this,void 0,void 0,(function*(){try{(yield navigator.mediaDevices.getUserMedia({video:!0,audio:!0})).getTracks().forEach((e=>e.stop())),this.isMediaDevicesAccessGranted=!0}catch(e){if(this.logger.error("getUserMedia()",{error:e}),"NotReadableError"===e.name)throw new Error("DeviceIsBusy")}}))}refreshAvailableMediaDevicesList(){return a(this,void 0,void 0,(function*(){const e=yield navigator.mediaDevices.enumerateDevices(),t=[],r=[];e.forEach((e=>{""!==e.deviceId&&"default"!==e.deviceId&&("videoinput"===e.kind&&t.push(e),"audioinput"===e.kind&&r.push(e))})),this.setAvailableVideoDevices(t),this.setAvailableAudioDevices(r),this.logger.debug("Devices list updated")}))}detectDevices(){return a(this,void 0,void 0,(function*(){this.isDevicesDetected||(this.isMediaDevicesAccessGranted||(yield this.requestMediaDevicesAccess()),navigator.mediaDevices.addEventListener("devicechange",(()=>{this.refreshAvailableMediaDevicesList()})),yield this.refreshAvailableMediaDevicesList(),this.isDevicesDetected=!0)}))}listenDevices(){navigator.mediaDevices.ondevicechange=()=>a(this,void 0,void 0,(function*(){this.isDevicesDetected&&(yield this.refreshAvailableMediaDevicesList(),this.clientEventEmitter.safeEmit(v,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}}class Zs{constructor(e){this.engine=e,this.logger=new pe({logLevel:e.logLevel,namespace:"ChannelEvents"})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(p,(e=>{this.engine.clientEventEmitter.safeEmit(f,e),this.logger.debug("New channel event",{event:e})})),e.on(l,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(m,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(h,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(g,e),this.logger.debug("Peer left the channel",{peerId:e})}))}}class ea{constructor(e){this.engine=e,this.logger=new pe({logLevel:e.logLevel,namespace:"MediasoupEvents"})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(P,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&!t.isMe&&t.observer.safeEmit(P,e)})),e.on(C,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&!t.isMe&&t.observer.safeEmit(C,e)})),e.on(x,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(x,e)})),e.on(L,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(L,e)})),e.on(I,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(I,e)})),e.on(A,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:n})=>{const i=this.engine.peers.find((t=>t.id===e));i&&!i.isMe&&i.observer.safeEmit(A,{consumerId:n,spatialLayer:t,temporalLayer:r})})),e.on(j,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(j,e);const n=this.engine.peers.find((e=>e.isMe));n&&n.observer.safeEmit(j,e)})),e.on(E,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(E,e)})),e.on(M,(({producerId:e,spatialLayer:t})=>a(this,void 0,void 0,(function*(){const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e}));if(!r)return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Producer not found"});if(!(r instanceof qs))return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Wrong producer kind"});const n=r.getMaxSpatialLayer();n!==t?(yield r.setMaxSpatialLayer(t),yield this.engine.network.socket.request(D,{producerId:e,maxSpatialLayer:t})):this.logger.debug("producerRequestMaxSpatialLayer()",{message:"Skip set max spatial layer",requestedSpatialLayer:t,currentMaxSpatialLayer:n})})))),e.on(D,(({peerId:e,producerId:t,spatialLayer:r})=>a(this,void 0,void 0,(function*(){const n=this.engine.peers.find((t=>t.id===e));if(!n||n.isMe)return;const i=n.getConsumerByProducerId(t);i?(i.setCurrentMaxSpatialLayer(r),this.logger.debug("producerSetMaxSpatialLayer()",{producerId:t,consumerId:i.id,spatialLayer:r}),i.requestedSpatialLayer===r?(yield this.engine.network.socket.request(A,{consumerId:i.id,spatialLayer:r}),this.logger.debug("requestVideoPreferredLayers()",{producerId:t,consumerId:i.id,spatialLayer:r})):this.logger.debug("producerSetMaxSpatialLayer()",{message:"No need to request new preferred layer",currentMaxSpatialLayer:r,requestedMaxSpatialLayer:i.requestedSpatialLayer})):this.logger.warn("producerSetMaxSpatialLayer()",{message:"Consumer not found"})}))))}}var ta={};function ra(){}function na(){na.init.call(this)}function ia(e){return void 0===e._maxListeners?na.defaultMaxListeners:e._maxListeners}function sa(e,t,r){if(t)e.call(r);else for(var n=e.length,i=ha(e,n),s=0;s<n;++s)i[s].call(r)}function aa(e,t,r,n){if(t)e.call(r,n);else for(var i=e.length,s=ha(e,i),a=0;a<i;++a)s[a].call(r,n)}function oa(e,t,r,n,i){if(t)e.call(r,n,i);else for(var s=e.length,a=ha(e,s),o=0;o<s;++o)a[o].call(r,n,i)}function ca(e,t,r,n,i,s){if(t)e.call(r,n,i,s);else for(var a=e.length,o=ha(e,a),c=0;c<a;++c)o[c].call(r,n,i,s)}function da(e,t,r,n){if(t)e.apply(r,n);else for(var i=e.length,s=ha(e,i),a=0;a<i;++a)s[a].apply(r,n)}function pa(e,t,r,n){var i,s,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((s=e._events)?(s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),a=s[t]):(s=e._events=new ra,e._eventsCount=0),a){if("function"==typeof a?a=s[t]=n?[r,a]:[a,r]:n?a.unshift(r):a.push(r),!a.warned&&((i=ia(e))&&0<i&&a.length>i)){a.warned=!0;var o=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");o.name="MaxListenersExceededWarning",o.emitter=e,o.type=t,o.count=a.length,function(e){"function"==typeof console.warn?console.warn(e):console.log(e)}(o)}}else a=s[t]=r,++e._eventsCount;return e}function la(e,t,r){function n(){e.removeListener(t,n),i||(i=!0,r.apply(e,arguments))}var i=!1;return n.listener=r,n}function ua(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 ha(e,t){for(var r=Array(t);t--;)r[t]=e[t];return r}Object.defineProperty(ta,"__esModule",{value:!0}),ra.prototype=Object.create(null),na.EventEmitter=na,na.usingDomains=!1,na.prototype.domain=void 0,na.prototype._events=void 0,na.prototype._maxListeners=void 0,na.defaultMaxListeners=10,na.init=function(){this.domain=null,na.usingDomains&&undefined.active&&!(this instanceof undefined.Domain)&&(this.domain=undefined.active),this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new ra,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},na.prototype.setMaxListeners=function(e){if("number"!=typeof e||0>e||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},na.prototype.getMaxListeners=function(){return ia(this)},na.prototype.emit=function(e){var t,r,n,i,s,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 p="function"==typeof r;switch(n=arguments.length){case 1:sa(r,p,this);break;case 2:aa(r,p,this,arguments[1]);break;case 3:oa(r,p,this,arguments[1],arguments[2]);break;case 4:ca(r,p,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=Array(n-1),s=1;s<n;s++)i[s-1]=arguments[s];da(r,p,this,i)}return!0},na.prototype.addListener=function(e,t){return pa(this,e,t,!1)},na.prototype.on=na.prototype.addListener,na.prototype.prependListener=function(e,t){return pa(this,e,t,!0)},na.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,la(this,e,t)),this},na.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,la(this,e,t)),this},na.prototype.removeListener=function(e,t){var r,n,i,s,a;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(n=this._events))return this;if(!(r=n[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new ra:(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(i=-1,s=r.length;0<s--;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=r[s].listener,i=s;break}if(0>i)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new ra,this;delete n[e]}else!function(e,t){for(var r=t,n=r+1,i=e.length;n<i;r+=1,n+=1)e[r]=e[n];e.pop()}(r,i);n.removeListener&&this.emit("removeListener",e,a||t)}return this},na.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new ra,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new ra:delete r[e]),this;if(0===arguments.length){for(var n,i=Object.keys(r),s=0;s<i.length;++s)"removeListener"!==(n=i[s])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=new ra,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},na.prototype.listeners=function(e){var t,r,n=this._events;return n?r=(t=n[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[]:r=[],r},na.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):ua.call(e,t)},na.prototype.listenerCount=ua,na.prototype.eventNames=function(){return 0<this._eventsCount?Reflect.ownKeys(this._events):[]};var fa,ma=new Uint8Array(16);function ga(){if(!fa&&!(fa="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return fa(ma)}var ya=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function va(e){return"string"==typeof e&&ya.test(e)}for(var ba=[],wa=0;256>wa;++wa)ba.push((wa+256).toString(16).substr(1));function _a(e,t,r){var n=(e=e||{}).random||(e.rng||ga)();if(n[6]=64|15&n[6],n[8]=128|63&n[8],t){r=r||0;for(var i=0;16>i;++i)t[r+i]=n[i];return t}return function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,r=(ba[e[t+0]]+ba[e[t+1]]+ba[e[t+2]]+ba[e[t+3]]+"-"+ba[e[t+4]]+ba[e[t+5]]+"-"+ba[e[t+6]]+ba[e[t+7]]+"-"+ba[e[t+8]]+ba[e[t+9]]+"-"+ba[e[t+10]]+ba[e[t+11]]+ba[e[t+12]]+ba[e[t+13]]+ba[e[t+14]]+ba[e[t+15]]).toLowerCase();if(!va(r))throw TypeError("Stringified UUID is invalid");return r}(n)}function Sa(e,t){if(!e||!t)return{};const r={...e};if(r.localCandidateId){const e=t.get(r.localCandidateId);r.local={...e}}if(r.remoteCandidateId){const e=t.get(r.remoteCandidateId);r.remote={...e}}return r}function Ra(e,t,r){return 8*function(e,t,r){const n=e[r],i=t?t[r]:null;return null===n||null===i?null:(n-i)/(e.timestamp-t.timestamp)*1e3}(e,t,r)}function ka(e){if(!e.entries)return e;const t={};return e.forEach((function(e,r){t[r]=e})),t}function Ca(e,t,r={}){if(!e)return null;let n={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]},connection:{inbound:[],outbound:[]}};r.remote&&(n.remote={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]}});for(const t of e.values())switch(t.type){case"outbound-rtp":{const r=t.mediaType||t.kind,i={};let s={};if(!["audio","video"].includes(r))continue;if(t.codecId){const r=e.get(t.codecId);r&&(i.clockRate=r.clockRate,i.mimeType=r.mimeType,i.payloadType=r.payloadType)}s=e.get(t.mediaSourceId)||e.get(t.trackId)||{},n[r].outbound.push({...t,...i,track:{...s}});break}case"inbound-rtp":{let r=t.mediaType||t.kind,i={};const s={};if(!["audio","video"].includes(r))if(t.id.includes("Video"))r="video";else{if(!t.id.includes("Audio"))continue;r="audio"}if(t.codecId){const r=e.get(t.codecId);r&&(s.clockRate=r.clockRate,s.mimeType=r.mimeType,s.payloadType=r.payloadType)}if(!n.connection.id&&t.transportId){const r=e.get(t.transportId);if(r&&r.selectedCandidatePairId){const t=e.get(r.selectedCandidatePairId);n.connection=Sa(t,e)}}i=e.get(t.mediaSourceId)||e.get(t.trackId)||{},n[r].inbound.push({...t,...s,track:{...i}});break}case"peer-connection":n.connection.dataChannelsClosed=t.dataChannelsClosed,n.connection.dataChannelsOpened=t.dataChannelsOpened;break;case"remote-inbound-rtp":{if(!r.remote)break;let i=t.mediaType||t.kind;const s={};if(!["audio","video"].includes(i))if(t.id.includes("Video"))i="video";else{if(!t.id.includes("Audio"))continue;i="audio"}if(t.codecId){const r=e.get(t.codecId);r&&(s.clockRate=r.clockRate,s.mimeType=r.mimeType,s.payloadType=r.payloadType)}if(!n.connection.id&&t.transportId){const r=e.get(t.transportId);if(r&&r.selectedCandidatePairId){const t=e.get(r.selectedCandidatePairId);n.connection=Sa(t,e)}}n.remote[i].inbound.push({...t,...s});break}case"remote-outbound-rtp":{if(!r.remote)break;const i=t.mediaType||t.kind,s={};if(!["audio","video"].includes(i))continue;if(t.codecId){const r=e.get(t.codecId);r&&(s.clockRate=r.clockRate,s.mimeType=r.mimeType,s.payloadType=r.payloadType)}n.remote[i].outbound.push({...t,...s});break}}if(!n.connection.id)for(const t of e.values())"candidate-pair"===t.type&&t.nominated&&"succeeded"===t.state&&(n.connection=Sa(t,e));return n=function(e,t){return t?(e.audio.inbound.map((e=>{let r=t.audio.inbound.find((t=>t.id===e.id));e.bitrate=Ra(e,r,"bytesReceived"),e.packetRate=Ra(e,r,"packetsReceived")})),e.audio.outbound.map((e=>{let r=t.audio.outbound.find((t=>t.id===e.id));e.bitrate=Ra(e,r,"bytesSent"),e.packetRate=Ra(e,r,"packetsSent")})),e.video.inbound.map((e=>{let r=t.video.inbound.find((t=>t.id===e.id));e.bitrate=Ra(e,r,"bytesReceived"),e.packetRate=Ra(e,r,"packetsReceived")})),e.video.outbound.map((e=>{let r=t.video.outbound.find((t=>t.id===e.id));e.bitrate=Ra(e,r,"bytesSent"),e.packetRate=Ra(e,r,"packetsSent")})),e):e}(n,t),n}let Pa={};var Ta,Ea,Da,Ma,Oa,xa,Ia,La,ja,Aa,Fa,Na,Ba=ta.WebRTCStats=class extends na{constructor(e){if(super(),this.monitoringSetInterval=0,this.connectionMonitoringSetInterval=0,this.connectionMonitoringInterval=1e3,this.remote=!0,this.peersToMonitor={},this.timeline=[],this.statsToMonitor=["inbound-rtp","outbound-rtp","remote-inbound-rtp","remote-outbound-rtp","peer-connection","data-channel","stream","track","sender","receiver","transport","candidate-pair","local-candidate","remote-candidate"],"undefined"==typeof window)throw new Error("WebRTCStats only works in browser");const t={...e};this.isEdge=!!window.RTCIceGatherer,this.getStatsInterval=t.getStatsInterval||1e3,this.rawStats=!!t.rawStats,this.statsObject=!!t.statsObject,this.filteredStats=!!t.filteredStats,this.shouldWrapGetUserMedia=!!t.wrapGetUserMedia,"boolean"==typeof t.remote&&(this.remote=t.remote),this.debug=!!t.debug,this.logLevel=t.logLevel||"none",this.shouldWrapGetUserMedia&&this.wrapGetUserMedia()}async addPeer(e,t){return console.warn("The addPeer() method has been deprecated, please use addConnection()"),this.addConnection({peerId:e,pc:t})}async addConnection(e){const{pc:t,peerId:r}=e;let{connectionId:n,remote:i}=e;if(i="boolean"==typeof i?i:this.remote,!(t&&t instanceof RTCPeerConnection))throw new Error("Missing argument 'pc' or is not of instance RTCPeerConnection");if(!r)throw new Error("Missing argument peerId");if(this.isEdge)throw new Error("Can't monitor peers in Edge at this time.");if(this.peersToMonitor[r]){if(n&&n in this.peersToMonitor[r])throw new Error(`We are already monitoring connection with id ${n}.`);for(let e in this.peersToMonitor[r]){const n=this.peersToMonitor[r][e];if(n.pc===t)throw new Error(`We are already monitoring peer with id ${r}.`);"closed"===n.pc.connectionState&&this.removeConnection({peerId:r,pc:n.pc})}}const s=t.getConfiguration();return s.iceServers&&s.iceServers.forEach((function(e){delete e.credential})),n||(n=_a()),this.emitEvent({event:"addConnection",tag:"peer",peerId:r,connectionId:n,data:{options:e,peerConfiguration:s}}),this.monitorPeer({peerId:r,connectionId:n,pc:t,remote:i}),{connectionId:n}}getTimeline(e){return this.timeline=this.timeline.sort(((e,t)=>e.timestamp.getTime()-t.timestamp.getTime())),e?this.timeline.filter((t=>t.tag===e)):this.timeline}monitorPeer(e){let{peerId:t,connectionId:r,pc:n,remote:i}=e;if(!n)return void this.logger.warn("Did not receive pc argument when calling monitorPeer()");const s={pc:n,connectionId:r,stream:null,stats:{parsed:null,raw:null},options:{remote:i}};if(this.peersToMonitor[t]){if(r in this.peersToMonitor[t])return void this.logger.warn(`Already watching connection with ID ${r}`);this.peersToMonitor[t][r]=s}else this.peersToMonitor[t]={[r]:s};this.addPeerConnectionEventListeners(t,r,n),1===this.numberOfMonitoredPeers&&(this.startStatsMonitoring(),this.startConnectionStateMonitoring())}startStatsMonitoring(){this.monitoringSetInterval||(this.monitoringSetInterval=window.setInterval((()=>{this.numberOfMonitoredPeers||this.stopStatsMonitoring(),this.getStats().then((e=>{e.forEach((e=>{this.emitEvent(e)}))}))}),this._getStatsInterval))}stopStatsMonitoring(){this.monitoringSetInterval&&(window.clearInterval(this.monitoringSetInterval),this.monitoringSetInterval=0)}async getStats(e=null){this.logger.info(e?`Getting stats from peer ${e}`:"Getting stats from all peers");let t={};if(e){if(!this.peersToMonitor[e])throw new Error(`Cannot get stats. Peer with id ${e} does not exist`);t[e]=this.peersToMonitor[e]}else t=this.peersToMonitor;let r=[];for(const e in t)for(const n in t[e]){const i=t[e][n],s=i.pc;if(s&&!this.checkIfConnectionIsClosed(e,n,s))try{const t=this.getTimestamp(),a=s.getStats(null);if(a){const s=await a,o=this.getTimestamp(),c=ka(s),d={remote:i.options.remote},p=Ca(s,i.stats.parsed,d),l={event:"stats",tag:"stats",peerId:e,connectionId:n,timeTaken:o-t,data:p};!0===this.rawStats&&(l.rawStats=s),!0===this.statsObject&&(l.statsObject=c),!0===this.filteredStats&&(l.filteredStats=this.filteroutStats(c)),r.push(l),i.stats.parsed=p}else this.logger.error(`PeerConnection from peer ${e} did not return any stats data`)}catch(e){this.logger.error(e)}}return r}startConnectionStateMonitoring(){this.connectionMonitoringSetInterval=window.setInterval((()=>{this.numberOfMonitoredPeers||this.stopConnectionStateMonitoring();for(const e in this.peersToMonitor)for(const t in this.peersToMonitor[e]){const r=this.peersToMonitor[e][t].pc;this.checkIfConnectionIsClosed(e,t,r)}}),this.connectionMonitoringInterval)}checkIfConnectionIsClosed(e,t,r){const n=this.isConnectionClosed(r);if(n){this.removeConnection({peerId:e,pc:r});let n="closed"===r.connectionState?"onconnectionstatechange":"oniceconnectionstatechange";this.emitEvent({event:n,peerId:e,connectionId:t,tag:"connection",data:"closed"})}return n}isConnectionClosed(e){return"closed"===e.connectionState||"closed"===e.iceConnectionState}stopConnectionStateMonitoring(){this.connectionMonitoringSetInterval&&(window.clearInterval(this.connectionMonitoringSetInterval),this.connectionMonitoringSetInterval=0)}wrapGetUserMedia(){if(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)return void this.logger.warn("'navigator.mediaDevices.getUserMedia' is not available in browser. Will not wrap getUserMedia.");this.logger.info("Wrapping getUsermedia functions.");const e=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices),t=this.parseGetUserMedia.bind(this);navigator.mediaDevices.getUserMedia=function(){return t({constraints:arguments[0]}),e.apply(navigator.mediaDevices,arguments).then((e=>(t({stream:e}),e)),(e=>(t({error:e}),Promise.reject(e))))}.bind(navigator.mediaDevices)}filteroutStats(e={}){const t={...e};for(const e in t){var r=t[e];this.statsToMonitor.includes(r.type)||delete t[e]}return t}get peerConnectionListeners(){return{icecandidate:(e,t,r,n)=>{this.logger.debug("[pc-event] icecandidate | peerId: ${peerId}",n),this.emitEvent({event:"onicecandidate",tag:"connection",peerId:e,connectionId:t,data:n.candidate})},track:(e,t,r,n)=>{this.logger.debug(`[pc-event] track | peerId: ${e}`,n);const i=n.track,s=n.streams[0];e in this.peersToMonitor&&t in this.peersToMonitor[e]&&(this.peersToMonitor[e][t].stream=s),this.addTrackEventListeners(i),this.emitEvent({event:"ontrack",tag:"track",peerId:e,connectionId:t,data:{stream:s?this.getStreamDetails(s):null,track:i?this.getMediaTrackDetails(i):null,title:n.track.kind+":"+n.track.id+" "+n.streams.map((function(e){return"stream:"+e.id}))}})},signalingstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] signalingstatechange | peerId: ${e}`),this.emitEvent({event:"onsignalingstatechange",tag:"connection",peerId:e,connectionId:t,data:{signalingState:r.signalingState,localDescription:r.localDescription,remoteDescription:r.remoteDescription}})},iceconnectionstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] iceconnectionstatechange | peerId: ${e}`),this.emitEvent({event:"oniceconnectionstatechange",tag:"connection",peerId:e,connectionId:t,data:r.iceConnectionState})},icegatheringstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] icegatheringstatechange | peerId: ${e}`),this.emitEvent({event:"onicegatheringstatechange",tag:"connection",peerId:e,connectionId:t,data:r.iceGatheringState})},icecandidateerror:(e,t,r,n)=>{this.logger.debug(`[pc-event] icecandidateerror | peerId: ${e}`),this.emitEvent({event:"onicecandidateerror",tag:"connection",peerId:e,connectionId:t,error:{errorCode:n.errorCode}})},connectionstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] connectionstatechange | peerId: ${e}`),this.emitEvent({event:"onconnectionstatechange",tag:"connection",peerId:e,connectionId:t,data:r.connectionState})},negotiationneeded:(e,t,r)=>{this.logger.debug(`[pc-event] negotiationneeded | peerId: ${e}`),this.emitEvent({event:"onnegotiationneeded",tag:"connection",peerId:e,connectionId:t})},datachannel:(e,t,r,n)=>{this.logger.debug(`[pc-event] datachannel | peerId: ${e}`,n),this.emitEvent({event:"ondatachannel",tag:"datachannel",peerId:e,connectionId:t,data:n.channel})}}}addPeerConnectionEventListeners(e,t,r){this.logger.debug(`Adding event listeners for peer ${e} and connection ${t}.`),Pa[t]={},Object.keys(this.peerConnectionListeners).forEach((n=>{Pa[t][n]=this.peerConnectionListeners[n].bind(this,e,t,r),r.addEventListener(n,Pa[t][n],!1)}))}parseGetUserMedia(e){const t={event:"getUserMedia",tag:"getUserMedia",data:{...e}};e.stream&&(t.data.details=this.parseStream(e.stream)),this.emitEvent(t)}parseStream(e){const t={audio:[],video:[]};return e.getTracks().forEach((e=>{t[e.kind].push(this.getMediaTrackDetails(e))})),t}getMediaTrackDetails(e){return{enabled:e.enabled,id:e.id,contentHint:e.contentHint,kind:e.kind,label:e.label,muted:e.muted,readyState:e.readyState,constructorName:e.constructor.name,capabilities:e.getCapabilities?e.getCapabilities():{},constraints:e.getConstraints?e.getConstraints():{},settings:e.getSettings?e.getSettings():{},_track:e}}getStreamDetails(e){return{active:e.active,id:e.id,_stream:e}}get getTrackEventObject(){return{mute:e=>{this.emitEvent({event:"mute",tag:"track",data:{event:e}})},unmute:e=>{this.emitEvent({event:"unmute",tag:"track",data:{event:e}})},overconstrained:e=>{this.emitEvent({event:"overconstrained",tag:"track",data:{event:e}})},ended:e=>{this.emitEvent({event:"ended",tag:"track",data:{event:e}}),this.removeTrackEventListeners(e.target)}}}addTrackEventListeners(e){Pa[e.id]={},Object.keys(this.getTrackEventObject).forEach((t=>{Pa[e.id][t]=this.getTrackEventObject[t].bind(this),e.addEventListener(t,Pa[e.id][t])})),Pa[e.id].readyState=setInterval((()=>{if("ended"===e.readyState){let t=new CustomEvent("ended",{detail:{check:"readyState"}});e.dispatchEvent(t)}}),1e3)}removeTrackEventListeners(e){e.id in Pa&&(Object.keys(this.getTrackEventObject).forEach((t=>{e.removeEventListener(t,Pa[e.id][t])})),clearInterval(Pa[e.id].readyState),delete Pa[e.id])}addToTimeline(e){this.timeline.push(e),this.emit("timeline",e)}emitEvent(e){const t={...e,timestamp:new Date};this.addToTimeline(t),t.tag&&this.emit(t.tag,t)}set getStatsInterval(e){if(!Number.isInteger(e))throw new Error(`getStatsInterval should be an integer, got: ${e}`);this._getStatsInterval=e,this.monitoringSetInterval&&(this.stopStatsMonitoring(),this.startStatsMonitoring())}get logger(){const e=e=>{const t=["none","error","warn","info","debug"];return t.slice(0,t.indexOf(this.logLevel)+1).indexOf(e)>-1};return{error(...t){this.debug&&e("error")&&console.error("[webrtc-stats][error] ",...t)},warn(...t){this.debug&&e("warn")&&console.warn("[webrtc-stats][warn] ",...t)},info(...t){this.debug&&e("info")&&console.log("[webrtc-stats][info] ",...t)},debug(...t){this.debug&&e("debug")&&console.debug("[webrtc-stats][debug] ",...t)}}}removeConnection(e){let{peerId:t,connectionId:r,pc:n}=e;if(!t&&!n&&!r)throw new Error("Missing arguments. You need to either send a peerId and pc, or a connectionId.");if(t&&!n||n&&!t)throw new Error("By not sending a connectionId, you need to send a peerId and a pc (RTCPeerConnection instance)");if(r)for(let e in this.peersToMonitor)r in this.peersToMonitor[e]&&(t=e,this.removePeerConnectionEventListeners(t,r,n),delete this.peersToMonitor[e][r]);else if(t&&n&&t in this.peersToMonitor)for(let e in this.peersToMonitor[t])this.peersToMonitor[t][e].pc===n&&(this.removePeerConnectionEventListeners(t,e,n),delete this.peersToMonitor[t][e],r=e);return 0===Object.values(this.peersToMonitor[t]).length&&delete this.peersToMonitor[t],{connectionId:r}}removePeer(e){if(this.logger.info(`Removing PeerConnection with id ${e}.`),this.peersToMonitor[e]){for(let t in this.peersToMonitor[e]){let r=this.peersToMonitor[e][t].pc;this.removePeerConnectionEventListeners(e,t,r)}delete this.peersToMonitor[e]}}get numberOfMonitoredPeers(){return Object.keys(this.peersToMonitor).length}removePeerConnectionEventListeners(e,t,r){t in Pa&&(Object.keys(this.peerConnectionListeners).forEach((e=>{r.removeEventListener(e,Pa[t][e],!1)})),delete Pa[t]),r.getSenders().forEach((e=>{e.track&&this.removeTrackEventListeners(e.track)})),r.getReceivers().forEach((e=>{e.track&&this.removeTrackEventListeners(e.track)}))}getTimestamp(){return Date.now()}wrapGetDisplayMedia(){const e=this;if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){const t=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices),r=function(){return e.debug("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),t.apply(navigator.mediaDevices,arguments).then((function(e){return e}),(function(t){return e.debug("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))};navigator.mediaDevices.getDisplayMedia=r.bind(navigator.mediaDevices)}}};class Ua extends e.EventEmitter{}!function(e){e.Issue="issue"}(Ta||(Ta={})),function(e){e.Network="network",e.CPU="cpu",e.Server="server"}(Ea||(Ea={})),function(e){e.NetworkQuality="network-quality",e.NetworkMediaLatency="network-media-latency",e.NetworkMediaSyncFailure="network-media-sync-failure",e.OutboundNetworkThroughput="outbound-network-throughput",e.InboundNetworkThroughput="inbound-network-throughput",e.EncoderCPUThrottling="encoder-cpu-throttling",e.DecoderCPUThrottling="decoder-cpu-throttling",e.ServerIssue="server-issue",e.MOS="mean-opinion-score"}(Da||(Da={}));class qa{constructor(){Ma.set(this,{})}detect(e){const t=this.processData(e);return o(this,Ma,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.video.outbound.filter((e=>"none"!==e.qualityLimitationReason)),n=[],i=null===(t=o(this,Ma,"f")[e.connection.id])||void 0===t?void 0:t.video.outbound;return i?(r.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));t&&(e.framesSent>t.framesSent||("cpu"===e.qualityLimitationReason&&n.push({type:Ea.CPU,reason:Da.EncoderCPUThrottling,ssrc:e.ssrc,debug:"qualityLimitationReason: cpu"}),"bandwidth"===e.qualityLimitationReason&&n.push({type:Ea.Network,reason:Da.OutboundNetworkThroughput,ssrc:e.ssrc,debug:"qualityLimitationReason: bandwidth"})))})),n):n}}Ma=new WeakMap;class $a{constructor(){Oa.set(this,{}),xa.set(this,.5)}detect(e){const t=this.processData(e);return o(this,Oa,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.video.inbound.filter((e=>e.framesDropped>0)),n=[],i=null===(t=o(this,Oa,"f")[e.connection.id])||void 0===t?void 0:t.video.inbound;return i?(r.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesDropped===t.framesDropped)return;const r=e.framesReceived-t.framesReceived,s=e.framesDecoded-t.framesDecoded,a=e.framesDropped-t.framesDropped;if(0===r&&0===s)return;const c=a/r;c>=o(this,xa,"f")&&n.push({type:Ea.CPU,reason:Da.DecoderCPUThrottling,ssrc:e.ssrc,debug:`framesDropped: ${Math.round(100*c)} , deltaFramesDropped: ${a}, deltaFramesReceived: ${r}`})})),n):n}}Oa=new WeakMap,xa=new WeakMap;class za{constructor(){Ia.set(this,{}),La.set(this,.15)}detect(e){const t=this.processData(e);return o(this,Ia,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.video.outbound.filter((e=>e.framesEncoded>0)),n=[],i=null===(t=o(this,Ia,"f")[e.connection.id])||void 0===t?void 0:t.video.outbound;return i?(r.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesEncoded===t.framesEncoded)return;const r=e.framesEncoded-t.framesEncoded,s=e.framesSent-t.framesSent;if(0===r)return;if(r===s)return;const a=s/r;a>=o(this,La,"f")&&n.push({type:Ea.Network,reason:Da.OutboundNetworkThroughput,ssrc:e.ssrc,debug:`missedFrames: ${Math.round(100*a)}%`})})),n):n}}Ia=new WeakMap,La=new WeakMap;class Va{constructor(){ja.set(this,{})}detect(e){const t=this.processData(e);return o(this,ja,"f")[e.connection.id]=e,t}processData(e){var t,r,n,i;const s=[],a=[...null===(t=e.audio)||void 0===t?void 0:t.inbound,...null===(r=e.video)||void 0===r?void 0:r.inbound];if(!a.length)return s;const c=o(this,ja,"f")[e.connection.id];if(!c)return s;const d=[...null===(n=c.video)||void 0===n?void 0:n.inbound,...null===(i=c.audio)||void 0===i?void 0:i.inbound],{packetsReceived:p}=e.connection,l=c.connection.packetsReceived,u=a.reduce(((e,t)=>{const r=d.find((e=>e.ssrc===t.ssrc)),n=(null==r?void 0:r.jitterBufferDelay)||0,i=(null==r?void 0:r.jitterBufferEmittedCount)||0,s=t.jitterBufferDelay-n,a=t.jitterBufferEmittedCount-i,o=s&&a?1e3*s/a:0;return{sumJitter:e.sumJitter+t.jitter,sumJitterBufferDelayMs:e.sumJitterBufferDelayMs+o,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+((null==r?void 0:r.packetsLost)||0)}}),{sumJitter:0,sumJitterBufferDelayMs:0,packetsLost:0,lastPacketsLost:0}),h=1e3*e.connection.currentRoundTripTime||0,{sumJitter:f,sumJitterBufferDelayMs:m}=u,g=f/a.length,y=m/a.length,v=p-l,b=u.packetsLost-u.lastPacketsLost,w=v&&b?Math.round(100*b/(v+b)):0,_=w>5,S=g>=200,R=!_&&S||S||_,k=h>=250&&!S&&!_,C=_&&S,P=S&&y>500,T=h+2*g+10;let E=T<160?93.2-T/40:93.2-T/120-10;E-=2.5*w;const D=`packetLoss: ${w}%, jitter: ${g}, rtt: ${h}, jitterBuffer: ${y}ms, MOS: ${1+.035*E+7e-6*E*(E-60)*(100-E)}`;return s.push({type:Ea.Network,reason:Da.MOS,iceCandidate:e.connection.local.id,debug:D}),R&&s.push({type:Ea.Network,reason:Da.NetworkQuality,iceCandidate:e.connection.local.id,debug:D}),k&&s.push({type:Ea.Server,reason:Da.ServerIssue,iceCandidate:e.connection.remote.id,debug:D}),C&&s.push({type:Ea.Network,reason:Da.NetworkMediaLatency,iceCandidate:e.connection.local.id,debug:D}),P&&s.push({type:Ea.Network,reason:Da.NetworkMediaSyncFailure,iceCandidate:e.connection.local.id,debug:D}),s}}ja=new WeakMap;class Wa{constructor(){Aa.set(this,{})}detect(e){const t=this.processData(e);return o(this,Aa,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.audio.inbound,n=[],i=null===(t=o(this,Aa,"f")[e.connection.id])||void 0===t?void 0:t.audio.inbound;return i?(r.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const r=e.track.insertedSamplesForDeceleration+e.track.removedSamplesForAcceleration,s=t.track.insertedSamplesForDeceleration+t.track.removedSamplesForAcceleration;if(r===s)return;const a=e.track.totalSamplesReceived-t.track.totalSamplesReceived,o=r-s,c=Math.round(100*o/a);c>5&&n.push({type:Ea.Network,reason:Da.NetworkMediaSyncFailure,ssrc:e.ssrc,debug:`correctedSamplesPercentage: ${c}%`})})),n):n}}Aa=new WeakMap;class Ga{constructor(){Fa.set(this,3e5)}detect(e){const t=[],{availableOutgoingBitrate:r}=e.connection;if(void 0===r)return t;const n=e.audio.outbound.reduce(((e,t)=>e+t.targetBitrate),0),i=e.video.outbound.reduce(((e,t)=>e+t.bitrate),0);return n||i?n>r?(t.push({type:Ea.Network,reason:Da.OutboundNetworkThroughput,debug:`availableOutgoingBitrate: ${r}, audioStreamsTotalTargetBitrate: ${n}`}),t):i>0&&r<o(this,Fa,"f")?(t.push({type:Ea.Network,reason:Da.OutboundNetworkThroughput,debug:`availableOutgoingBitrate: ${r}, videoStreamsTotalBitrate: ${i}`}),t):t:t}}Fa=new WeakMap;class Ha{constructor(e){this.webrtcStatsPeerId="peerId",this.getStatsInterval=5e3,this.detectors=[],this.eventEmitter=new Ua,Na.set(this,!1),e.onIssues&&this.eventEmitter.on(Ta.Issue,e.onIssues),this.webrtcStats=new Ba({getStatsInterval:this.getStatsInterval}),window.wid=this,this.wrapRTCPeerConnection(),this.detectors=[new qa,new $a,new za,new Va,new Wa,new Ga],this.webrtcStats.on("stats",(e=>{this.detectIssues(e.data)}))}watchNewPeerConnections(){if(o(this,Na,"f"))throw new Error("WebRTCIssueDetector is already started");c(this,Na,!0,"f")}stopWatchingNewPeerConnections(){if(!o(this,Na,"f"))throw new Error("WebRTCIssueDetector is already stopped");c(this,Na,!1,"f")}resetWatchedPeerConnectionsList(){this.webrtcStats.removePeer(this.webrtcStatsPeerId)}handleNewPeerConnection(e){o(this,Na,"f")&&this.webrtcStats.addConnection({pc:e,peerId:this.webrtcStatsPeerId})}emitIssues(e){this.eventEmitter.emit(Ta.Issue,e)}detectIssues(e){const t=this.detectors.reduce(((t,r)=>[...t,...r.detect(e)]),[]);t.length>0&&this.emitIssues(t)}wrapRTCPeerConnection(){if(!window.RTCPeerConnection)return;const e=window.RTCPeerConnection,t=e=>this.handleNewPeerConnection(e);function r(r){const n=new e(r);return t(n),n}r.prototype=e.prototype,window.RTCPeerConnection=r}}Na=new WeakMap;var Ka=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Qa=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],Ja=function(e){var t=e,r=e.indexOf("["),n=e.indexOf("]");-1!=r&&-1!=n&&(e=e.substring(0,r)+e.substring(r,n).replace(/:/g,";")+e.substring(n,e.length));for(var i,s,a=Ka.exec(e||""),o={},c=14;c--;)o[Qa[c]]=a[c]||"";return-1!=r&&-1!=n&&(o.source=t,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=function(e,t){var r=/\/{2,9}/g,n=t.replace(r,"/").split("/");"/"!=t.substr(0,1)&&0!==t.length||n.splice(0,1);"/"==t.substr(t.length-1,1)&&n.splice(n.length-1,1);return n}(0,o.path),o.queryKey=(i=o.query,s={},i.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(s[t]=r)})),s),o};var Ya={exports:{}};try{Ya.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){Ya.exports=!1}var Xa=Ya.exports,Za="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function eo(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Xa))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Za[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function to(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const ro=setTimeout,no=clearTimeout;function io(e,t){t.useNativeTimers?(e.setTimeoutFn=ro.bind(Za),e.clearTimeoutFn=no.bind(Za)):(e.setTimeoutFn=setTimeout.bind(Za),e.clearTimeoutFn=clearTimeout.bind(Za))}var so=ao;function ao(e){if(e)return function(e){for(var t in ao.prototype)e[t]=ao.prototype[t];return e}(e)}ao.prototype.on=ao.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},ao.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},ao.prototype.off=ao.prototype.removeListener=ao.prototype.removeAllListeners=ao.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var i=0;i<n.length;i++)if((r=n[i])===t||r.fn===t){n.splice(i,1);break}return 0===n.length&&delete this._callbacks["$"+e],this},ao.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(r){n=0;for(var i=(r=r.slice(0)).length;n<i;++n)r[n].apply(this,t)}return this},ao.prototype.emitReserved=ao.prototype.emit,ao.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},ao.prototype.hasListeners=function(e){return!!this.listeners(e).length};const oo=Object.create(null);oo.open="0",oo.close="1",oo.ping="2",oo.pong="3",oo.message="4",oo.upgrade="5",oo.noop="6";const co=Object.create(null);Object.keys(oo).forEach((e=>{co[oo[e]]=e}));const po={type:"error",data:"parser error"},lo="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),uo="function"==typeof ArrayBuffer,ho=({type:e,data:t},r,n)=>{return lo&&t instanceof Blob?r?n(t):fo(t,n):uo&&(t instanceof ArrayBuffer||(i=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(i):i&&i.buffer instanceof ArrayBuffer))?r?n(t):fo(new Blob([t]),n):n(oo[e]+(t||""));var i},fo=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+e)},r.readAsDataURL(e)};for(var mo="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",go="undefined"==typeof Uint8Array?[]:new Uint8Array(256),yo=0;yo<mo.length;yo++)go[mo.charCodeAt(yo)]=yo;const vo="function"==typeof ArrayBuffer,bo=(e,t)=>{if("string"!=typeof e)return{type:"message",data:_o(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:wo(e.substring(1),t)};return co[r]?e.length>1?{type:co[r],data:e.substring(1)}:{type:co[r]}:po},wo=(e,t)=>{if(vo){const r=function(e){var t,r,n,i,s,a=.75*e.length,o=e.length,c=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);var d=new ArrayBuffer(a),p=new Uint8Array(d);for(t=0;t<o;t+=4)r=go[e.charCodeAt(t)],n=go[e.charCodeAt(t+1)],i=go[e.charCodeAt(t+2)],s=go[e.charCodeAt(t+3)],p[c++]=r<<2|n>>4,p[c++]=(15&n)<<4|i>>2,p[c++]=(3&i)<<6|63&s;return d}(e);return _o(r,t)}return{base64:!0,data:e}},_o=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e,So=String.fromCharCode(30);class Ro extends so{constructor(e){super(),this.writable=!1,io(this,e),this.opts=e,this.query=e.query,this.readyState="",this.socket=e.socket}onError(e,t){const r=new Error(e);return r.type="TransportError",r.description=t,super.emit("error",r),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(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.emit("open")}onData(e){const t=bo(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emit("packet",e)}onClose(){this.readyState="closed",super.emit("close")}}var ko,Co="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),Po={},To=0,Eo=0;function Do(e){var t="";do{t=Co[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function Mo(){var e=Do(+new Date);return e!==ko?(To=0,ko=e):e+"."+Do(To++)}for(;Eo<64;Eo++)Po[Co[Eo]]=Eo;Mo.encode=Do,Mo.decode=function(e){var t=0;for(Eo=0;Eo<e.length;Eo++)t=64*t+Po[e.charAt(Eo)];return t};var Oo=Mo,xo={encode:function(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t},decode:function(e){for(var t={},r=e.split("&"),n=0,i=r.length;n<i;n++){var s=r[n].split("=");t[decodeURIComponent(s[0])]=decodeURIComponent(s[1])}return t}};class Io extends Ro{constructor(){super(...arguments),this.polling=!1}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.emit("poll")}onData(e){((e,t)=>{const r=e.split(So),n=[];for(let e=0;e<r.length;e++){const i=bo(r[e],t);if(n.push(i),"error"===i.type)break}return n})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose(),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("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,n=new Array(r);let i=0;e.forEach(((e,s)=>{ho(e,!1,(e=>{n[s]=e,++i===r&&t(n.join(So))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let r="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=Oo()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port);const n=xo.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(n.length?"?"+n:"")}}function Lo(){}const jo=null!=new eo({xdomain:!1}).responseType;class Ao extends so{constructor(e,t){super(),io(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=to(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new eo(e);try{t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=Ao.requestsCount++,Ao.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(e){this.emit("data",e),this.onSuccess()}onError(e){this.emit("error",e),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=Lo,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Ao.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&this.onData(e)}abort(){this.cleanup()}}if(Ao.requestsCount=0,Ao.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",Fo);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Za?"pagehide":"unload",Fo,!1)}function Fo(){for(let e in Ao.requests)Ao.requests.hasOwnProperty(e)&&Ao.requests[e].abort()}const No="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Bo=Za.WebSocket||Za.MozWebSocket,Uo="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class qo extends Ro{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=Uo?{}:to(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=Uo?new Bo(e,t,r):t?new Bo(e,t):new Bo(e)}catch(e){return this.emit("error",e)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),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],n=t===e.length-1;ho(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}n&&No((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let r="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=Oo()),this.supportsBinary||(e.b64=1);const n=xo.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(n.length?"?"+n:"")}check(){return!(!Bo||"__initialize"in Bo&&this.name===qo.prototype.name)}}const $o={websocket:qo,polling:class extends Io{constructor(e){if(super(e),"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,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=jo&&!t}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new Ao(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",(e=>{this.onError("xhr post error",e)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e=>{this.onError("xhr poll error",e)})),this.pollXhr=e}}};class zo extends so{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=Ja(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=Ja(t.host).host),io(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"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=xo.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=function(e){const t={};for(let r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}(this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new $o[e](r)}open(){let e;if(this.opts.rememberUpgrade&&zo.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}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",(()=>{this.onClose("transport close")}))}probe(e){let t=this.createTransport(e),r=!1;zo.priorWebsocketSuccess=!1;const n=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!r)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;zo.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{r||"closed"!==this.readyState&&(d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function i(){r||(r=!0,d(),t.close(),t=null)}const s=e=>{const r=new Error("probe error: "+e);r.transport=t.name,i(),this.emitReserved("upgradeError",r)};function a(){s("transport closed")}function o(){s("socket closed")}function c(e){t&&e.name!==t.name&&i()}const d=()=>{t.removeListener("open",n),t.removeListener("error",s),t.removeListener("close",a),this.off("close",o),this.off("upgrading",c)};t.once("open",n),t.once("error",s),t.once("close",a),this.once("close",o),this.once("upgrading",c),t.open()}onOpen(){if(this.readyState="open",zo.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){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"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.resetPingTimeout(),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.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(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emitReserved("flush"))}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,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof r&&(n=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const i={type:e,data:t,options:r};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),n&&this.once("flush",n),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(e){zo.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}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("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 n=e.length;for(;r<n;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}zo.protocol=4,zo.protocol;const Vo="function"==typeof ArrayBuffer,Wo=Object.prototype.toString,Go="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Wo.call(Blob),Ho="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Wo.call(File);function Ko(e){return Vo&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||Go&&e instanceof Blob||Ho&&e instanceof File}function Qo(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Qo(e[t]))return!0;return!1}if(Ko(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Qo(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Qo(e[t]))return!0;return!1}function Jo(e){const t=[],r=e.data,n=e;return n.data=Yo(r,t),n.attachments=t.length,{packet:n,buffers:t}}function Yo(e,t){if(!e)return e;if(Ko(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 n=0;n<e.length;n++)r[n]=Yo(e[n],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const n in e)e.hasOwnProperty(n)&&(r[n]=Yo(e[n],t));return r}return e}function Xo(e,t){return e.data=Zo(e.data,t),e.attachments=void 0,e}function Zo(e,t){if(!e)return e;if(e&&e._placeholder)return t[e.num];if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Zo(e[r],t);else if("object"==typeof e)for(const r in e)e.hasOwnProperty(r)&&(e[r]=Zo(e[r],t));return e}var ec;!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"}(ec||(ec={}));class tc extends so{constructor(){super()}add(e){let t;if("string"==typeof e)t=this.decodeString(e),t.type===ec.BINARY_EVENT||t.type===ec.BINARY_ACK?(this.reconstructor=new rc(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t);else{if(!Ko(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===ec[r.type])throw new Error("unknown packet type "+r.type);if(r.type===ec.BINARY_EVENT||r.type===ec.BINARY_ACK){const n=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const i=e.substring(n,t);if(i!=Number(i)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(i)}if("/"===e.charAt(t+1)){const n=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(n,t)}else r.nsp="/";const n=e.charAt(t+1);if(""!==n&&Number(n)==n){const n=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(n,t+1))}if(e.charAt(++t)){const n=function(e){try{return JSON.parse(e)}catch(e){return!1}}(e.substr(t));if(!tc.isPayloadValid(r.type,n))throw new Error("invalid payload");r.data=n}return r}static isPayloadValid(e,t){switch(e){case ec.CONNECT:return"object"==typeof t;case ec.DISCONNECT:return void 0===t;case ec.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case ec.EVENT:case ec.BINARY_EVENT:return Array.isArray(t)&&t.length>0;case ec.ACK:case ec.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class rc{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=Xo(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var nc=Object.freeze({__proto__:null,protocol:5,get PacketType(){return ec},Encoder:class{encode(e){return e.type!==ec.EVENT&&e.type!==ec.ACK||!Qo(e)?[this.encodeAsString(e)]:(e.type=e.type===ec.EVENT?ec.BINARY_EVENT:ec.BINARY_ACK,this.encodeAsBinary(e))}encodeAsString(e){let t=""+e.type;return e.type!==ec.BINARY_EVENT&&e.type!==ec.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)),t}encodeAsBinary(e){const t=Jo(e),r=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(r),n}},Decoder:tc});function ic(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const sc=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class ac extends so{constructor(e,t,r){super(),this.connected=!1,this.disconnected=!0,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this.io._autoConnect&&this.open()}subEvents(){if(this.subs)return;const e=this.io;this.subs=[ic(e,"open",this.onopen.bind(this)),ic(e,"packet",this.onpacket.bind(this)),ic(e,"error",this.onerror.bind(this)),ic(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(sc.hasOwnProperty(e))throw new Error('"'+e+'" is a reserved event name');t.unshift(e);const r={type:ec.EVENT,data:t,options:{}};r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]&&(this.acks[this.ids]=t.pop(),r.id=this.ids++);const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!n||!this.connected)||(this.connected?this.packet(r):this.sendBuffer.push(r)),this.flags={},this}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this.packet({type:ec.CONNECT,data:e})})):this.packet({type:ec.CONNECT,data:this.auth})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e){this.connected=!1,this.disconnected=!0,delete this.id,this.emitReserved("disconnect",e)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case ec.CONNECT:if(e.data&&e.data.sid){const t=e.data.sid;this.onconnect(t)}else 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 ec.EVENT:case ec.BINARY_EVENT:this.onevent(e);break;case ec.ACK:case ec.BINARY_ACK:this.onack(e);break;case ec.DISCONNECT:this.ondisconnect();break;case ec.CONNECT_ERROR: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)}ack(e){const t=this;let r=!1;return function(...n){r||(r=!0,t.packet({type:ec.ACK,id:e,data:n}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e){this.id=e,this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((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:ec.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}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||[]}}var oc=cc;function cc(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}cc.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)},cc.prototype.reset=function(){this.attempts=0},cc.prototype.setMin=function(e){this.ms=e},cc.prototype.setMax=function(e){this.max=e},cc.prototype.setJitter=function(e){this.jitter=e};class dc extends so{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,io(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 oc({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const n=t.parser||nc;this.encoder=new n.Encoder,this.decoder=new n.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 zo(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const n=ic(t,"open",(function(){r.onopen(),e&&e()})),i=ic(t,"error",(t=>{r.cleanup(),r._readyState="closed",this.emitReserved("error",t),e?e(t):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;0===e&&n();const r=this.setTimeoutFn((()=>{n(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}return this.subs.push(n),this.subs.push(i),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(ic(e,"ping",this.onping.bind(this)),ic(e,"data",this.ondata.bind(this)),ic(e,"error",this.onerror.bind(this)),ic(e,"close",this.onclose.bind(this)),ic(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){this.decoder.add(e)}ondecoded(e){this.emitReserved("packet",e)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r||(r=new ac(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,"opening"===this._readyState&&this.cleanup(),this.backoff.reset(),this._readyState="closed",this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e),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((function(){clearTimeout(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const pc={};function lc(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let n=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),n=Ja(e)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";const i=-1!==n.host.indexOf(":")?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+i+":"+n.port+t,n.href=n.protocol+"://"+i+(r&&r.port===n.port?"":":"+n.port),n}(e,(t=t||{}).path||"/socket.io"),n=r.source,i=r.id,s=r.path,a=pc[i]&&s in pc[i].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new dc(n,t):(pc[i]||(pc[i]=new dc(n,t)),o=pc[i]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}class uc{constructor(e){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new d,this.knownDisconnectReasonsCodes={"io server disconnect":"server.disconnect","io client disconnect":"client.disconnect","ping timeout":"ping.timeout","transport close":"transport.close","transport error":"transport.error"},this.logger=new pe({namespace:"Socket",logLevel:e.logLevel})}get observer(){return this._observer}get id(){var e;return null===(e=this.connection)||void 0===e?void 0:e.id}connect(e){const t=lc(e);this.connection=t,this.serverUrl=e,t.on("connect",(()=>{const e=this.reconnectingAttempt?k.Reconnected:k.Connected;this.isConnected=!0,this.setReconnectingAttempt(0),this.logger.debug("connection.on(`connect`)"),this.observer.safeEmit("state",{state:e})})),t.on("connect_error",(e=>{this.connectionError=e,this.logger.error("connection.on(`connect_error`)",e),this.observer.safeEmit("state",{state:k.Error,error:e})})),t.on("disconnect",(e=>{this.isConnected=!1,this.setReconnectingAttempt(0),this.disconnectReason=e,this.logger.warn("connection.on(`disconnect`)",e),this.observer.safeEmit("state",{state:k.Disconnected,code:this.getDisconnectReasonCode(e)})})),t.io.on("reconnect_attempt",(e=>{this.setReconnectingAttempt(e),this.logger.warn("connection.on(`reconnect_attempt`)",e),this.observer.safeEmit("state",{state:k.Reconnecting})})),t.io.on("reconnect",(()=>{this.logger.debug("connection.on(`reconnect`)"),this.observer.safeEmit("state",{state:k.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect(),this.setReconnectingAttempt(0))}request(e,t={}){return new Promise(((r,n)=>{if(!this.connection)return this.logger.error("request()",{type:e,data:t}),void n(new Error("Socket request: Socket connection is not initialized"));this.connection.emit(e,t,(e=>{e.error?(this.logger.error("request()",{response:e}),n(e.error)):r(e)}))}))}getDisconnectReasonCode(e){const t=String(e).toLowerCase();return this.knownDisconnectReasonsCodes[t]||t}setReconnectingAttempt(e){this.reconnectingAttempt=e}}var hc={exports:{}},fc=function(e,t){return function(){for(var r=new Array(arguments.length),n=0;n<r.length;n++)r[n]=arguments[n];return e.apply(t,r)}},mc=fc,gc=Object.prototype.toString;function yc(e){return"[object Array]"===gc.call(e)}function vc(e){return void 0===e}function bc(e){return null!==e&&"object"==typeof e}function wc(e){if("[object Object]"!==gc.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function _c(e){return"[object Function]"===gc.call(e)}function Sc(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),yc(e))for(var r=0,n=e.length;r<n;r++)t.call(null,e[r],r,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}var Rc={isArray:yc,isArrayBuffer:function(e){return"[object ArrayBuffer]"===gc.call(e)},isBuffer:function(e){return null!==e&&!vc(e)&&null!==e.constructor&&!vc(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:bc,isPlainObject:wc,isUndefined:vc,isDate:function(e){return"[object Date]"===gc.call(e)},isFile:function(e){return"[object File]"===gc.call(e)},isBlob:function(e){return"[object Blob]"===gc.call(e)},isFunction:_c,isStream:function(e){return bc(e)&&_c(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:Sc,merge:function e(){var t={};function r(r,n){wc(t[n])&&wc(r)?t[n]=e(t[n],r):wc(r)?t[n]=e({},r):yc(r)?t[n]=r.slice():t[n]=r}for(var n=0,i=arguments.length;n<i;n++)Sc(arguments[n],r);return t},extend:function(e,t,r){return Sc(t,(function(t,n){e[n]=r&&"function"==typeof t?mc(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},kc=Rc;function Cc(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var Pc=function(e,t,r){if(!t)return e;var n;if(r)n=r(t);else if(kc.isURLSearchParams(t))n=t.toString();else{var i=[];kc.forEach(t,(function(e,t){null!=e&&(kc.isArray(e)?t+="[]":e=[e],kc.forEach(e,(function(e){kc.isDate(e)?e=e.toISOString():kc.isObject(e)&&(e=JSON.stringify(e)),i.push(Cc(t)+"="+Cc(e))})))})),n=i.join("&")}if(n){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e},Tc=Rc;function Ec(){this.handlers=[]}Ec.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},Ec.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},Ec.prototype.forEach=function(e){Tc.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var Dc=Ec,Mc=Rc,Oc=function(e,t,r,n,i){return e.config=t,r&&(e.code=r),e.request=n,e.response=i,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e},xc=Oc,Ic=function(e,t,r,n,i){var s=new Error(e);return xc(s,t,r,n,i)},Lc=Ic,jc=Rc,Ac=jc.isStandardBrowserEnv()?{write:function(e,t,r,n,i,s){var a=[];a.push(e+"="+encodeURIComponent(t)),jc.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),jc.isString(n)&&a.push("path="+n),jc.isString(i)&&a.push("domain="+i),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},Fc=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},Nc=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},Bc=Rc,Uc=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],qc=Rc,$c=qc.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function n(e){var n=e;return t&&(r.setAttribute("href",n),n=r.href),r.setAttribute("href",n),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=n(window.location.href),function(t){var r=qc.isString(t)?n(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},zc=Rc,Vc=function(e,t,r){var n=r.config.validateStatus;r.status&&n&&!n(r.status)?t(Lc("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},Wc=Ac,Gc=Pc,Hc=function(e,t){return e&&!Fc(t)?Nc(e,t):t},Kc=function(e){var t,r,n,i={};return e?(Bc.forEach(e.split("\n"),(function(e){if(n=e.indexOf(":"),t=Bc.trim(e.substr(0,n)).toLowerCase(),r=Bc.trim(e.substr(n+1)),t){if(i[t]&&Uc.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([r]):i[t]?i[t]+", "+r:r}})),i):i},Qc=$c,Jc=Ic,Yc=function(e){return new Promise((function(t,r){var n=e.data,i=e.headers,s=e.responseType;zc.isFormData(n)&&delete i["Content-Type"];var a=new XMLHttpRequest;if(e.auth){var o=e.auth.username||"",c=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";i.Authorization="Basic "+btoa(o+":"+c)}var d=Hc(e.baseURL,e.url);function p(){if(a){var n="getAllResponseHeaders"in a?Kc(a.getAllResponseHeaders()):null,i={data:s&&"text"!==s&&"json"!==s?a.response:a.responseText,status:a.status,statusText:a.statusText,headers:n,config:e,request:a};Vc(t,r,i),a=null}}if(a.open(e.method.toUpperCase(),Gc(d,e.params,e.paramsSerializer),!0),a.timeout=e.timeout,"onloadend"in a?a.onloadend=p:a.onreadystatechange=function(){a&&4===a.readyState&&(0!==a.status||a.responseURL&&0===a.responseURL.indexOf("file:"))&&setTimeout(p)},a.onabort=function(){a&&(r(Jc("Request aborted",e,"ECONNABORTED",a)),a=null)},a.onerror=function(){r(Jc("Network Error",e,null,a)),a=null},a.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(Jc(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",a)),a=null},zc.isStandardBrowserEnv()){var l=(e.withCredentials||Qc(d))&&e.xsrfCookieName?Wc.read(e.xsrfCookieName):void 0;l&&(i[e.xsrfHeaderName]=l)}"setRequestHeader"in a&&zc.forEach(i,(function(e,t){void 0===n&&"content-type"===t.toLowerCase()?delete i[t]:a.setRequestHeader(t,e)})),zc.isUndefined(e.withCredentials)||(a.withCredentials=!!e.withCredentials),s&&"json"!==s&&(a.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&a.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&a.upload&&a.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){a&&(a.abort(),r(e),a=null)})),n||(n=null),a.send(n)}))},Xc=Rc,Zc=function(e,t){Mc.forEach(e,(function(r,n){n!==t&&n.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[n])}))},ed=Oc,td={"Content-Type":"application/x-www-form-urlencoded"};function rd(e,t){!Xc.isUndefined(e)&&Xc.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var nd,id={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(nd=Yc),nd),transformRequest:[function(e,t){return Zc(t,"Accept"),Zc(t,"Content-Type"),Xc.isFormData(e)||Xc.isArrayBuffer(e)||Xc.isBuffer(e)||Xc.isStream(e)||Xc.isFile(e)||Xc.isBlob(e)?e:Xc.isArrayBufferView(e)?e.buffer:Xc.isURLSearchParams(e)?(rd(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):Xc.isObject(e)||t&&"application/json"===t["Content-Type"]?(rd(t,"application/json"),function(e,t,r){if(Xc.isString(e))try{return(t||JSON.parse)(e),Xc.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,n=t&&t.forcedJSONParsing,i=!r&&"json"===this.responseType;if(i||n&&Xc.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(i){if("SyntaxError"===e.name)throw ed(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};id.headers={common:{Accept:"application/json, text/plain, */*"}},Xc.forEach(["delete","get","head"],(function(e){id.headers[e]={}})),Xc.forEach(["post","put","patch"],(function(e){id.headers[e]=Xc.merge(td)}));var sd=id,ad=Rc,od=sd,cd=function(e){return!(!e||!e.__CANCEL__)},dd=Rc,pd=function(e,t,r){var n=this||od;return ad.forEach(r,(function(r){e=r.call(n,e,t)})),e},ld=cd,ud=sd;function hd(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var fd=Rc,md=function(e,t){t=t||{};var r={},n=["url","method","data"],i=["headers","auth","proxy","params"],s=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],a=["validateStatus"];function o(e,t){return fd.isPlainObject(e)&&fd.isPlainObject(t)?fd.merge(e,t):fd.isPlainObject(t)?fd.merge({},t):fd.isArray(t)?t.slice():t}function c(n){fd.isUndefined(t[n])?fd.isUndefined(e[n])||(r[n]=o(void 0,e[n])):r[n]=o(e[n],t[n])}fd.forEach(n,(function(e){fd.isUndefined(t[e])||(r[e]=o(void 0,t[e]))})),fd.forEach(i,c),fd.forEach(s,(function(n){fd.isUndefined(t[n])?fd.isUndefined(e[n])||(r[n]=o(void 0,e[n])):r[n]=o(void 0,t[n])})),fd.forEach(a,(function(n){n in t?r[n]=o(e[n],t[n]):n in e&&(r[n]=o(void 0,e[n]))}));var d=n.concat(i).concat(s).concat(a),p=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return fd.forEach(p,c),r},gd={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},yd={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){yd[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var vd={},bd=gd.version.split(".");function wd(e,t){for(var r=t?t.split("."):bd,n=e.split("."),i=0;i<3;i++){if(r[i]>n[i])return!0;if(r[i]<n[i])return!1}return!1}yd.transitional=function(e,t,r){var n=t&&wd(t);function i(e,t){return"[Axios v"+gd.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,s,a){if(!1===e)throw new Error(i(s," has been removed in "+t));return n&&!vd[s]&&(vd[s]=!0,console.warn(i(s," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,s,a)}};var _d={isOlderVersion:wd,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var n=Object.keys(e),i=n.length;i-- >0;){var s=n[i],a=t[s];if(a){var o=e[s],c=void 0===o||a(o,s,e);if(!0!==c)throw new TypeError("option "+s+" must be "+c)}else if(!0!==r)throw Error("Unknown option "+s)}},validators:yd},Sd=Rc,Rd=Pc,kd=Dc,Cd=function(e){return hd(e),e.headers=e.headers||{},e.data=pd.call(e,e.data,e.headers,e.transformRequest),e.headers=dd.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),dd.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||ud.adapter)(e).then((function(t){return hd(e),t.data=pd.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return ld(t)||(hd(e),t&&t.response&&(t.response.data=pd.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},Pd=md,Td=_d,Ed=Td.validators;function Dd(e){this.defaults=e,this.interceptors={request:new kd,response:new kd}}Dd.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=Pd(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&Td.assertOptions(t,{silentJSONParsing:Ed.transitional(Ed.boolean,"1.0.0"),forcedJSONParsing:Ed.transitional(Ed.boolean,"1.0.0"),clarifyTimeoutError:Ed.transitional(Ed.boolean,"1.0.0")},!1);var r=[],n=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(n=n&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var i,s=[];if(this.interceptors.response.forEach((function(e){s.push(e.fulfilled,e.rejected)})),!n){var a=[Cd,void 0];for(Array.prototype.unshift.apply(a,r),a=a.concat(s),i=Promise.resolve(e);a.length;)i=i.then(a.shift(),a.shift());return i}for(var o=e;r.length;){var c=r.shift(),d=r.shift();try{o=c(o)}catch(e){d(e);break}}try{i=Cd(o)}catch(e){return Promise.reject(e)}for(;s.length;)i=i.then(s.shift(),s.shift());return i},Dd.prototype.getUri=function(e){return e=Pd(this.defaults,e),Rd(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},Sd.forEach(["delete","get","head","options"],(function(e){Dd.prototype[e]=function(t,r){return this.request(Pd(r||{},{method:e,url:t,data:(r||{}).data}))}})),Sd.forEach(["post","put","patch"],(function(e){Dd.prototype[e]=function(t,r,n){return this.request(Pd(n||{},{method:e,url:t,data:r}))}}));var Md=Dd;function Od(e){this.message=e}Od.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},Od.prototype.__CANCEL__=!0;var xd=Od,Id=xd;function Ld(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new Id(e),t(r.reason))}))}Ld.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},Ld.source=function(){var e;return{token:new Ld((function(t){e=t})),cancel:e}};var jd=Ld,Ad=Rc,Fd=fc,Nd=Md,Bd=md;function Ud(e){var t=new Nd(e),r=Fd(Nd.prototype.request,t);return Ad.extend(r,Nd.prototype,t),Ad.extend(r,t),r}var qd=Ud(sd);qd.Axios=Nd,qd.create=function(e){return Ud(Bd(qd.defaults,e))},qd.Cancel=xd,qd.CancelToken=jd,qd.isCancel=cd,qd.all=function(e){return Promise.all(e)},qd.spread=function(e){return function(t){return e.apply(null,t)}},qd.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},hc.exports=qd,hc.exports.default=qd;var $d=hc.exports,zd="undefined"!=typeof Symbol&&Symbol,Vd=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var n=Object.getOwnPropertySymbols(e);if(1!==n.length||n[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(e,t);if(42!==i.value||!0!==i.enumerable)return!1}return!0},Wd="Function.prototype.bind called on incompatible ",Gd=Array.prototype.slice,Hd=Object.prototype.toString,Kd=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==Hd.call(t))throw new TypeError(Wd+t);for(var r,n=Gd.call(arguments,1),i=function(){if(this instanceof r){var i=t.apply(this,n.concat(Gd.call(arguments)));return Object(i)===i?i:this}return t.apply(e,n.concat(Gd.call(arguments)))},s=Math.max(0,t.length-n.length),a=[],o=0;o<s;o++)a.push("$"+o);if(r=Function("binder","return function ("+a.join(",")+"){ return binder.apply(this,arguments); }")(i),t.prototype){var c=function(){};c.prototype=t.prototype,r.prototype=new c,c.prototype=null}return r},Qd=Function.prototype.bind||Kd,Jd=Qd.call(Function.call,Object.prototype.hasOwnProperty),Yd=SyntaxError,Xd=Function,Zd=TypeError,ep=function(e){try{return Xd('"use strict"; return ('+e+").constructor;")()}catch(e){}},tp=Object.getOwnPropertyDescriptor;if(tp)try{tp({},"")}catch(e){tp=null}var rp=function(){throw new Zd},np=tp?function(){try{return rp}catch(e){try{return tp(arguments,"callee").get}catch(e){return rp}}}():rp,ip="function"==typeof zd&&"function"==typeof Symbol&&"symbol"==typeof zd("foo")&&"symbol"==typeof Symbol("bar")&&Vd(),sp=Object.getPrototypeOf||function(e){return e.__proto__},ap={},op="undefined"==typeof Uint8Array?undefined:sp(Uint8Array),cp={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":ip?sp([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":ap,"%AsyncGenerator%":ap,"%AsyncGeneratorFunction%":ap,"%AsyncIteratorPrototype%":ap,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":Xd,"%GeneratorFunction%":ap,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":ip?sp(sp([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&ip?sp((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&ip?sp((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":ip?sp(""[Symbol.iterator]()):undefined,"%Symbol%":ip?Symbol:undefined,"%SyntaxError%":Yd,"%ThrowTypeError%":np,"%TypedArray%":op,"%TypeError%":Zd,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet},dp=function e(t){var r;if("%AsyncFunction%"===t)r=ep("async function () {}");else if("%GeneratorFunction%"===t)r=ep("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=ep("async function* () {}");else if("%AsyncGenerator%"===t){var n=e("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if("%AsyncIteratorPrototype%"===t){var i=e("%AsyncGenerator%");i&&(r=sp(i.prototype))}return cp[t]=r,r},pp={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},lp=Qd,up=Jd,hp=lp.call(Function.call,Array.prototype.concat),fp=lp.call(Function.apply,Array.prototype.splice),mp=lp.call(Function.call,String.prototype.replace),gp=lp.call(Function.call,String.prototype.slice),yp=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,vp=/\\(\\)?/g,bp=function(e){var t=gp(e,0,1),r=gp(e,-1);if("%"===t&&"%"!==r)throw new Yd("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new Yd("invalid intrinsic syntax, expected opening `%`");var n=[];return mp(e,yp,(function(e,t,r,i){n[n.length]=r?mp(i,vp,"$1"):t||e})),n},wp=function(e,t){var r,n=e;if(up(pp,n)&&(n="%"+(r=pp[n])[0]+"%"),up(cp,n)){var i=cp[n];if(i===ap&&(i=dp(n)),void 0===i&&!t)throw new Zd("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:n,value:i}}throw new Yd("intrinsic "+e+" does not exist!")},_p=function(e,t){if("string"!=typeof e||0===e.length)throw new Zd("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new Zd('"allowMissing" argument must be a boolean');var r=bp(e),n=r.length>0?r[0]:"",i=wp("%"+n+"%",t),s=i.name,a=i.value,o=!1,c=i.alias;c&&(n=c[0],fp(r,hp([0,1],c)));for(var d=1,p=!0;d<r.length;d+=1){var l=r[d],u=gp(l,0,1),h=gp(l,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new Yd("property names with quotes must have matching quotes");if("constructor"!==l&&p||(o=!0),up(cp,s="%"+(n+="."+l)+"%"))a=cp[s];else if(null!=a){if(!(l in a)){if(!t)throw new Zd("base intrinsic for "+e+" exists, but the property is not available.");return}if(tp&&d+1>=r.length){var f=tp(a,l);a=(p=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:a[l]}else p=up(a,l),a=a[l];p&&!o&&(cp[s]=a)}}return a},Sp={exports:{}};!function(e){var t=Qd,r=_p,n=r("%Function.prototype.apply%"),i=r("%Function.prototype.call%"),s=r("%Reflect.apply%",!0)||t.call(i,n),a=r("%Object.getOwnPropertyDescriptor%",!0),o=r("%Object.defineProperty%",!0),c=r("%Math.max%");if(o)try{o({},"a",{value:1})}catch(e){o=null}e.exports=function(e){var r=s(t,i,arguments);if(a&&o){var n=a(r,"length");n.configurable&&o(r,"length",{value:1+c(0,e.length-(arguments.length-1))})}return r};var d=function(){return s(t,n,arguments)};o?o(e.exports,"apply",{value:d}):e.exports.apply=d}(Sp);var Rp=_p,kp=Sp.exports,Cp=kp(Rp("String.prototype.indexOf")),Pp=H(Object.freeze({__proto__:null,default:{}})),Tp="function"==typeof Map&&Map.prototype,Ep=Object.getOwnPropertyDescriptor&&Tp?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Dp=Tp&&Ep&&"function"==typeof Ep.get?Ep.get:null,Mp=Tp&&Map.prototype.forEach,Op="function"==typeof Set&&Set.prototype,xp=Object.getOwnPropertyDescriptor&&Op?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,Ip=Op&&xp&&"function"==typeof xp.get?xp.get:null,Lp=Op&&Set.prototype.forEach,jp="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,Ap="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,Fp="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,Np=Boolean.prototype.valueOf,Bp=Object.prototype.toString,Up=Function.prototype.toString,qp=String.prototype.match,$p="function"==typeof BigInt?BigInt.prototype.valueOf:null,zp=Object.getOwnPropertySymbols,Vp="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Wp="function"==typeof Symbol&&"object"==typeof Symbol.iterator,Gp=Object.prototype.propertyIsEnumerable,Hp=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),Kp=Pp.custom,Qp=Kp&&el(Kp)?Kp:null,Jp="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function Yp(e,t,r){var n="double"===(r.quoteStyle||t)?'"':"'";return n+e+n}function Xp(e){return String(e).replace(/"/g,""")}function Zp(e){return!("[object Array]"!==nl(e)||Jp&&"object"==typeof e&&Jp in e)}function el(e){if(Wp)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!Vp)return!1;try{return Vp.call(e),!0}catch(e){}return!1}var tl=Object.prototype.hasOwnProperty||function(e){return e in this};function rl(e,t){return tl.call(e,t)}function nl(e){return Bp.call(e)}function il(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}function sl(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return sl(e.slice(0,t.maxStringLength),t)+n}return Yp(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,al),"single",t)}function al(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+t.toString(16).toUpperCase()}function ol(e){return"Object("+e+")"}function cl(e){return e+" { ? }"}function dl(e,t,r,n){return e+" ("+t+") {"+(n?pl(r,n):r.join(", "))+"}"}function pl(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function ll(e,t){var r=Zp(e),n=[];if(r){n.length=e.length;for(var i=0;i<e.length;i++)n[i]=rl(e,i)?t(e[i],e):""}var s,a="function"==typeof zp?zp(e):[];if(Wp){s={};for(var o=0;o<a.length;o++)s["$"+a[o]]=a[o]}for(var c in e)rl(e,c)&&(r&&String(Number(c))===c&&c<e.length||Wp&&s["$"+c]instanceof Symbol||(/[^\w$]/.test(c)?n.push(t(c,e)+": "+t(e[c],e)):n.push(c+": "+t(e[c],e))));if("function"==typeof zp)for(var d=0;d<a.length;d++)Gp.call(e,a[d])&&n.push("["+t(a[d])+"]: "+t(e[a[d]],e));return n}var ul=_p,hl=function(e,t){var r=Rp(e,!!t);return"function"==typeof r&&Cp(e,".prototype.")>-1?kp(r):r},fl=function e(t,r,n,i){var s=r||{};if(rl(s,"quoteStyle")&&"single"!==s.quoteStyle&&"double"!==s.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(rl(s,"maxStringLength")&&("number"==typeof s.maxStringLength?s.maxStringLength<0&&s.maxStringLength!==1/0:null!==s.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var a=!rl(s,"customInspect")||s.customInspect;if("boolean"!=typeof a&&"symbol"!==a)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(rl(s,"indent")&&null!==s.indent&&"\t"!==s.indent&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return sl(t,s);if("number"==typeof t)return 0===t?1/0/t>0?"0":"-0":String(t);if("bigint"==typeof t)return String(t)+"n";var o=void 0===s.depth?5:s.depth;if(void 0===n&&(n=0),n>=o&&o>0&&"object"==typeof t)return Zp(t)?"[Array]":"[Object]";var c=function(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;r=Array(e.indent+1).join(" ")}return{base:r,prev:Array(t+1).join(r)}}(s,n);if(void 0===i)i=[];else if(il(i,t)>=0)return"[Circular]";function d(t,r,a){if(r&&(i=i.slice()).push(r),a){var o={depth:s.depth};return rl(s,"quoteStyle")&&(o.quoteStyle=s.quoteStyle),e(t,o,n+1,i)}return e(t,s,n+1,i)}if("function"==typeof t){var p=function(e){if(e.name)return e.name;var t=qp.call(Up.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),l=ll(t,d);return"[Function"+(p?": "+p:" (anonymous)")+"]"+(l.length>0?" { "+l.join(", ")+" }":"")}if(el(t)){var u=Wp?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):Vp.call(t);return"object"!=typeof t||Wp?u:ol(u)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(t)){for(var h="<"+String(t.nodeName).toLowerCase(),f=t.attributes||[],m=0;m<f.length;m++)h+=" "+f[m].name+"="+Yp(Xp(f[m].value),"double",s);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(Zp(t)){if(0===t.length)return"[]";var g=ll(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(il(e[t],"\n")>=0)return!1;return!0}(g)?"["+pl(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==nl(e)||Jp&&"object"==typeof e&&Jp in e)}(t)){var y=ll(t,d);return 0===y.length?"["+String(t)+"]":"{ ["+String(t)+"] "+y.join(", ")+" }"}if("object"==typeof t&&a){if(Qp&&"function"==typeof t[Qp])return t[Qp]();if("symbol"!==a&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!Dp||!e||"object"!=typeof e)return!1;try{Dp.call(e);try{Ip.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var v=[];return Mp.call(t,(function(e,r){v.push(d(r,t,!0)+" => "+d(e,t))})),dl("Map",Dp.call(t),v,c)}if(function(e){if(!Ip||!e||"object"!=typeof e)return!1;try{Ip.call(e);try{Dp.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return Lp.call(t,(function(e){b.push(d(e,t))})),dl("Set",Ip.call(t),b,c)}if(function(e){if(!jp||!e||"object"!=typeof e)return!1;try{jp.call(e,jp);try{Ap.call(e,Ap)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return cl("WeakMap");if(function(e){if(!Ap||!e||"object"!=typeof e)return!1;try{Ap.call(e,Ap);try{jp.call(e,jp)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return cl("WeakSet");if(function(e){if(!Fp||!e||"object"!=typeof e)return!1;try{return Fp.call(e),!0}catch(e){}return!1}(t))return cl("WeakRef");if(function(e){return!("[object Number]"!==nl(e)||Jp&&"object"==typeof e&&Jp in e)}(t))return ol(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!$p)return!1;try{return $p.call(e),!0}catch(e){}return!1}(t))return ol(d($p.call(t)));if(function(e){return!("[object Boolean]"!==nl(e)||Jp&&"object"==typeof e&&Jp in e)}(t))return ol(Np.call(t));if(function(e){return!("[object String]"!==nl(e)||Jp&&"object"==typeof e&&Jp in e)}(t))return ol(d(String(t)));if(!function(e){return!("[object Date]"!==nl(e)||Jp&&"object"==typeof e&&Jp in e)}(t)&&!function(e){return!("[object RegExp]"!==nl(e)||Jp&&"object"==typeof e&&Jp in e)}(t)){var w=ll(t,d),_=Hp?Hp(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",R=!_&&Jp&&Object(t)===t&&Jp in t?nl(t).slice(8,-1):S?"Object":"",k=(_||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(R||S?"["+[].concat(R||[],S||[]).join(": ")+"] ":"");return 0===w.length?k+"{}":c?k+"{"+pl(w,c)+"}":k+"{ "+w.join(", ")+" }"}return String(t)},ml=ul("%TypeError%"),gl=ul("%WeakMap%",!0),yl=ul("%Map%",!0),vl=hl("WeakMap.prototype.get",!0),bl=hl("WeakMap.prototype.set",!0),wl=hl("WeakMap.prototype.has",!0),_l=hl("Map.prototype.get",!0),Sl=hl("Map.prototype.set",!0),Rl=hl("Map.prototype.has",!0),kl=function(e,t){for(var r,n=e;null!==(r=n.next);n=r)if(r.key===t)return n.next=r.next,r.next=e.next,e.next=r,r},Cl=String.prototype.replace,Pl=/%20/g,Tl="RFC3986",El={default:Tl,formatters:{RFC1738:function(e){return Cl.call(e,Pl,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:Tl},Dl=El,Ml=Object.prototype.hasOwnProperty,Ol=Array.isArray,xl=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),Il=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},n=0;n<e.length;++n)void 0!==e[n]&&(r[n]=e[n]);return r},Ll={arrayToObject:Il,assign:function(e,t){return Object.keys(t).reduce((function(e,r){return e[r]=t[r],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],n=0;n<t.length;++n)for(var i=t[n],s=i.obj[i.prop],a=Object.keys(s),o=0;o<a.length;++o){var c=a[o],d=s[c];"object"==typeof d&&null!==d&&-1===r.indexOf(d)&&(t.push({obj:s,prop:c}),r.push(d))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(Ol(r)){for(var n=[],i=0;i<r.length;++i)void 0!==r[i]&&n.push(r[i]);t.obj[t.prop]=n}}}(t),e},decode:function(e,t,r){var n=e.replace(/\+/g," ");if("iso-8859-1"===r)return n.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(n)}catch(e){return n}},encode:function(e,t,r,n,i){if(0===e.length)return e;var s=e;if("symbol"==typeof e?s=Symbol.prototype.toString.call(e):"string"!=typeof e&&(s=String(e)),"iso-8859-1"===r)return escape(s).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var a="",o=0;o<s.length;++o){var c=s.charCodeAt(o);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||i===Dl.RFC1738&&(40===c||41===c)?a+=s.charAt(o):c<128?a+=xl[c]:c<2048?a+=xl[192|c>>6]+xl[128|63&c]:c<55296||c>=57344?a+=xl[224|c>>12]+xl[128|c>>6&63]+xl[128|63&c]:(o+=1,c=65536+((1023&c)<<10|1023&s.charCodeAt(o)),a+=xl[240|c>>18]+xl[128|c>>12&63]+xl[128|c>>6&63]+xl[128|63&c])}return a},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(Ol(e)){for(var r=[],n=0;n<e.length;n+=1)r.push(t(e[n]));return r}return t(e)},merge:function e(t,r,n){if(!r)return t;if("object"!=typeof r){if(Ol(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(n&&(n.plainObjects||n.allowPrototypes)||!Ml.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var i=t;return Ol(t)&&!Ol(r)&&(i=Il(t,n)),Ol(t)&&Ol(r)?(r.forEach((function(r,i){if(Ml.call(t,i)){var s=t[i];s&&"object"==typeof s&&r&&"object"==typeof r?t[i]=e(s,r,n):t.push(r)}else t[i]=r})),t):Object.keys(r).reduce((function(t,i){var s=r[i];return Ml.call(t,i)?t[i]=e(t[i],s,n):t[i]=s,t}),i)}},jl=function(){var e,t,r,n={assert:function(e){if(!n.has(e))throw new ml("Side channel does not contain "+fl(e))},get:function(n){if(gl&&n&&("object"==typeof n||"function"==typeof n)){if(e)return vl(e,n)}else if(yl){if(t)return _l(t,n)}else if(r)return function(e,t){var r=kl(e,t);return r&&r.value}(r,n)},has:function(n){if(gl&&n&&("object"==typeof n||"function"==typeof n)){if(e)return wl(e,n)}else if(yl){if(t)return Rl(t,n)}else if(r)return function(e,t){return!!kl(e,t)}(r,n);return!1},set:function(n,i){gl&&n&&("object"==typeof n||"function"==typeof n)?(e||(e=new gl),bl(e,n,i)):yl?(t||(t=new yl),Sl(t,n,i)):(r||(r={key:{},next:null}),function(e,t,r){var n=kl(e,t);n?n.value=r:e.next={key:t,next:e.next,value:r}}(r,n,i))}};return n},Al=Ll,Fl=El,Nl=Object.prototype.hasOwnProperty,Bl={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},Ul=Array.isArray,ql=Array.prototype.push,$l=function(e,t){ql.apply(e,Ul(t)?t:[t])},zl=Date.prototype.toISOString,Vl=Fl.default,Wl={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:Al.encode,encodeValuesOnly:!1,format:Vl,formatter:Fl.formatters[Vl],indices:!1,serializeDate:function(e){return zl.call(e)},skipNulls:!1,strictNullHandling:!1},Gl=function e(t,r,n,i,s,a,o,c,d,p,l,u,h,f,m){var g,y=t;if(m.has(t))throw new RangeError("Cyclic object value");if("function"==typeof o?y=o(r,y):y instanceof Date?y=p(y):"comma"===n&&Ul(y)&&(y=Al.maybeMap(y,(function(e){return e instanceof Date?p(e):e}))),null===y){if(i)return a&&!h?a(r,Wl.encoder,f,"key",l):r;y=""}if("string"==typeof(g=y)||"number"==typeof g||"boolean"==typeof g||"symbol"==typeof g||"bigint"==typeof g||Al.isBuffer(y))return a?[u(h?r:a(r,Wl.encoder,f,"key",l))+"="+u(a(y,Wl.encoder,f,"value",l))]:[u(r)+"="+u(String(y))];var v,b=[];if(void 0===y)return b;if("comma"===n&&Ul(y))v=[{value:y.length>0?y.join(",")||null:void 0}];else if(Ul(o))v=o;else{var w=Object.keys(y);v=c?w.sort(c):w}for(var _=0;_<v.length;++_){var S=v[_],R="object"==typeof S&&void 0!==S.value?S.value:y[S];if(!s||null!==R){var k=Ul(y)?"function"==typeof n?n(r,S):r:r+(d?"."+S:"["+S+"]");m.set(t,!0);var C=jl();$l(b,e(R,k,n,i,s,a,o,c,d,p,l,u,h,f,C))}}return b},Hl=Ll,Kl=Object.prototype.hasOwnProperty,Ql=Array.isArray,Jl={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:Hl.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},Yl=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},Xl=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},Zl=function(e,t,r,n){if(e){var i=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,s=/(\[[^[\]]*])/g,a=r.depth>0&&/(\[[^[\]]*])/.exec(i),o=a?i.slice(0,a.index):i,c=[];if(o){if(!r.plainObjects&&Kl.call(Object.prototype,o)&&!r.allowPrototypes)return;c.push(o)}for(var d=0;r.depth>0&&null!==(a=s.exec(i))&&d<r.depth;){if(d+=1,!r.plainObjects&&Kl.call(Object.prototype,a[1].slice(1,-1))&&!r.allowPrototypes)return;c.push(a[1])}return a&&c.push("["+i.slice(a.index)+"]"),function(e,t,r,n){for(var i=n?t:Xl(t,r),s=e.length-1;s>=0;--s){var a,o=e[s];if("[]"===o&&r.parseArrays)a=[].concat(i);else{a=r.plainObjects?Object.create(null):{};var c="["===o.charAt(0)&&"]"===o.charAt(o.length-1)?o.slice(1,-1):o,d=parseInt(c,10);r.parseArrays||""!==c?!isNaN(d)&&o!==c&&String(d)===c&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(a=[])[d]=i:a[c]=i:a={0:i}}i=a}return i}(c,t,r,n)}},eu=function(e,t){var r,n=e,i=function(e){if(!e)return Wl;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||Wl.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var r=Fl.default;if(void 0!==e.format){if(!Nl.call(Fl.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var n=Fl.formatters[r],i=Wl.filter;return("function"==typeof e.filter||Ul(e.filter))&&(i=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:Wl.addQueryPrefix,allowDots:void 0===e.allowDots?Wl.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Wl.charsetSentinel,delimiter:void 0===e.delimiter?Wl.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:Wl.encode,encoder:"function"==typeof e.encoder?e.encoder:Wl.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:Wl.encodeValuesOnly,filter:i,format:r,formatter:n,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:Wl.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:Wl.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Wl.strictNullHandling}}(t);"function"==typeof i.filter?n=(0,i.filter)("",n):Ul(i.filter)&&(r=i.filter);var s,a=[];if("object"!=typeof n||null===n)return"";s=t&&t.arrayFormat in Bl?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var o=Bl[s];r||(r=Object.keys(n)),i.sort&&r.sort(i.sort);for(var c=jl(),d=0;d<r.length;++d){var p=r[d];i.skipNulls&&null===n[p]||$l(a,Gl(n[p],p,o,i.strictNullHandling,i.skipNulls,i.encode?i.encoder:null,i.filter,i.sort,i.allowDots,i.serializeDate,i.format,i.formatter,i.encodeValuesOnly,i.charset,c))}var l=a.join(i.delimiter),u=!0===i.addQueryPrefix?"?":"";return i.charsetSentinel&&("iso-8859-1"===i.charset?u+="utf8=%26%2310003%3B&":u+="utf8=%E2%9C%93&"),l.length>0?u+l:""},tu=function(e,t){var r=function(e){if(!e)return Jl;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?Jl.charset:e.charset;return{allowDots:void 0===e.allowDots?Jl.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:Jl.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:Jl.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:Jl.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Jl.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:Jl.comma,decoder:"function"==typeof e.decoder?e.decoder:Jl.decoder,delimiter:"string"==typeof e.delimiter||Hl.isRegExp(e.delimiter)?e.delimiter:Jl.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:Jl.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:Jl.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:Jl.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:Jl.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Jl.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var n="string"==typeof e?function(e,t){var r,n={},i=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,s=t.parameterLimit===1/0?void 0:t.parameterLimit,a=i.split(t.delimiter,s),o=-1,c=t.charset;if(t.charsetSentinel)for(r=0;r<a.length;++r)0===a[r].indexOf("utf8=")&&("utf8=%E2%9C%93"===a[r]?c="utf-8":"utf8=%26%2310003%3B"===a[r]&&(c="iso-8859-1"),o=r,r=a.length);for(r=0;r<a.length;++r)if(r!==o){var d,p,l=a[r],u=l.indexOf("]="),h=-1===u?l.indexOf("="):u+1;-1===h?(d=t.decoder(l,Jl.decoder,c,"key"),p=t.strictNullHandling?null:""):(d=t.decoder(l.slice(0,h),Jl.decoder,c,"key"),p=Hl.maybeMap(Xl(l.slice(h+1),t),(function(e){return t.decoder(e,Jl.decoder,c,"value")}))),p&&t.interpretNumericEntities&&"iso-8859-1"===c&&(p=Yl(p)),l.indexOf("[]=")>-1&&(p=Ql(p)?[p]:p),Kl.call(n,d)?n[d]=Hl.combine(n[d],p):n[d]=p}return n}(e,r):e,i=r.plainObjects?Object.create(null):{},s=Object.keys(n),a=0;a<s.length;++a){var o=s[a],c=Zl(o,n[o],r,"string"==typeof e);i=Hl.merge(i,c,r)}return!0===r.allowSparse?i:Hl.compact(i)},ru={formats:El,parse:tu,stringify:eu};class nu{constructor(e){const{baseURL:t,timeout:r,customNode:n}=e;this.api=$d.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>ru.stringify(e)}),this.customNode=n}getNode(e){return a(this,void 0,void 0,(function*(){if(this.customNode)return this.customNode;const{data:t}=yield this.api.get("/nodes/best",{params:e});return t}))}}class iu{createSystem(e){return new Xs(e)}createMedia(e){return new Hs(e)}createNetwork(e){const{loadbalancer:t,logLevel:r}=e,n=new uc({logLevel:r}),i=new nu(t);return new Ys({logLevel:r,socketClient:n,loadBalancerApiClient:i})}createChannelEventHandler(e){return new Zs(e)}createMediaSoupEventHandler(e){return new ea(e)}createIssueDetector(e){return new Ha({onIssues:e.onIssues})}}module.exports=class{constructor(e){var t,r;const{observer:n,network:i,onLogMessage:s,onIssues:a,logLevel:o}=e;this._observer=null!=n?n:new d;const c=new iu;this.engine=new Js({dependenciesFactory:c,clientEventEmitter:this.observer,network:{loadbalancer:{baseURL:null===(t=null==i?void 0:i.loadbalancer)||void 0===t?void 0:t.baseURL,customNode:null===(r=null==i?void 0:i.loadbalancer)||void 0===r?void 0:r.customNode}},logLevel:o,onLogMessage:s,onIssues:a})}get observer(){return this._observer}get id(){return this.engine.mySocketId}get peers(){return this.engine.peers}get availableVideoDevices(){return this.engine.system.availableVideoDevices}get availableAudioDevices(){return this.engine.system.availableAudioDevices}detectDevices(){return a(this,void 0,void 0,(function*(){return yield this.engine.system.detectDevices(),{video:this.engine.system.availableVideoDevices,audio:this.engine.system.availableAudioDevices}}))}join(e){return this.engine.join(e)}leave(){return this.engine.release()}publish(e){return this.engine.publish(e)}unpublish(e){return this.engine.unpublish(e)}pause(e){return this.engine.pause(e)}resume(e){return this.engine.resume(e)}createCameraVideoTrack(e){return this.engine.createCameraVideoTrack(e)}createMicrophoneAudioTrack(e){return this.engine.createMicrophoneAudioTrack(e)}createScreenMediaTracks(e){return this.engine.createScreenMediaTracks(e)}deleteTrack(e){return this.engine.deleteTrack(e)}loadPeers(e){return this.engine.loadPeers(e)}};
|
|
15
|
+
***************************************************************************** */function a(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{c(i.next(e))}catch(e){s(e)}}function o(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}c((i=i.apply(e,t||[])).next())}))}function o(e,t,r,i){if("a"===r&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?i:"a"===r?i.call(e):i?i.value:t.get(e)}function c(e,t,r,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(e,r):n?n.value=r:t.set(e,r),r}class d extends e.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}safeEmit(e,...t){const r=this.listenerCount(e);try{return this.emit(e,...t)}catch(e){return Boolean(r)}}}!function(e){e.VIDEO="video",e.AUDIO="audio"}(r||(r={})),function(e){e[e.BAD=1]="BAD",e[e.MEDIUM=2]="MEDIUM",e[e.GOOD=3]="GOOD"}(i||(i={})),function(e){e.Camera="camera",e.Microphone="microphone",e.ScreenVideo="screen-video",e.ScreenAudio="screen-audio",e.Unknown="unknown"}(n||(n={}));const p="channel.event",l="channel.join",u="channel.getPeers",h="peer.disconnected",f="channel-event",m="peer-joined",g="peer-left",y="channel-rejoin-required",v="devices-list-updated",b="media-published",w="media-unpublished",_="connection-quality-changed",S="track-start",R="track-end",k="track-paused",P="track-resumed";var C;!function(e){e.Connected="connected",e.Reconnecting="reconnecting",e.Reconnected="reconnected",e.Disconnected="disconnected",e.Reconnect="reconnect",e.Error="error"}(C||(C={}));const T="peer.newProducer",E="producer.close",D="producer.pause",M="producer.resume",O="producer.scoreChanged",x="producer.setMaxSpatialLayer",I="producer.requestMaxSpatialLayer",L="consumer.create",j="consumer.close",A="consumer.pause",F="consumer.resume",N="consumer.scoreChanged",B="consumer.changeConsumerPreferredLayers",U="consumer.setConsumerPriority",q="transport.create",$="transport.close",z="transport.connect",V="transport.produce",W="connectionstatechange",G="getIceParameters",H="connect",K="produce";var Q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function J(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(r){var i=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,i.get?i:{enumerable:!0,get:function(){return e[r]}})})),t}var Y={exports:{}},X=1e3,Z=6e4,ee=60*Z,te=24*ee,re=function(e,t){t=t||{};var r=typeof e;if("string"===r&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*r;case"weeks":case"week":case"w":return 6048e5*r;case"days":case"day":case"d":return r*te;case"hours":case"hour":case"hrs":case"hr":case"h":return r*ee;case"minutes":case"minute":case"mins":case"min":case"m":return r*Z;case"seconds":case"second":case"secs":case"sec":case"s":return 1e3*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}(e);if("number"===r&&isFinite(e))return t.long?function(e){var t=Math.abs(e);if(t>=te)return ie(e,t,te,"day");if(t>=ee)return ie(e,t,ee,"hour");if(t>=Z)return ie(e,t,Z,"minute");if(t>=1e3)return ie(e,t,1e3,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=te)return Math.round(e/te)+"d";if(t>=ee)return Math.round(e/ee)+"h";if(t>=Z)return Math.round(e/Z)+"m";if(t>=X)return Math.round(e/X)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function ie(e,t,r,i){var n=t>=1.5*r;return Math.round(e/r)+" "+i+(n?"s":"")}var ne=function(e){function t(e){let i,n,s,a=null;function o(...e){if(!o.enabled)return;const r=o,n=Number(new Date),s=n-(i||n);r.diff=s,r.prev=i,r.curr=n,i=n,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,n)=>{if("%%"===i)return"%";a++;const s=t.formatters[n];if("function"==typeof s){const t=e[a];i=s.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:(n!==t.namespaces&&(n=t.namespaces,s=t.enabled(e)),s),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,]+/),n=i.length;for(r=0;r<n;r++)i[r]&&("-"===(e=i[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.substr(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=re,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,n=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(n=i))})),t.splice(n,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=ne(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Y,Y.exports);var se=Y.exports;class ae{constructor(e,t){e?(this._debug=se(`LiveDigital:${e}`),this._warn=se(`LiveDigital:WARN:${e}`),this._error=se(`LiveDigital:ERROR:${e}`)):(this._debug=se("LiveDigital"),this._warn=se("LiveDigital:WARN"),this._error=se("LiveDigital:ERROR")),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console),this.onLogMessage=(e,...r)=>{"function"==typeof t&&t(e,...r)}}debug(e,...t){this._debug(e,...t),this.onLogMessage(e,...t)}warn(e,...t){this._warn(e,...t),this.onLogMessage(e,...t)}error(e,...t){this._error(e,...t),this.onLogMessage(e,...t)}}class oe{constructor(e){this.score=10;const{id:t,kind:r,peerId:i,label:n}=e;this.id=t,this.kind=r,this.peerId=i,this.label=n,this.encodings=e.encodings,this.trackTransformParams=e.trackTransformParams,this.maxSpatialLayer=e.maxSpatialLayer}}var ce={},de={exports:{}},pe=1e3,le=60*pe,ue=60*le,he=24*ue,fe=7*he,me=365.25*he,ge=function(e,t){t=t||{};var r=typeof e;if("string"===r&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return r*me;case"weeks":case"week":case"w":return r*fe;case"days":case"day":case"d":return r*he;case"hours":case"hour":case"hrs":case"hr":case"h":return r*ue;case"minutes":case"minute":case"mins":case"min":case"m":return r*le;case"seconds":case"second":case"secs":case"sec":case"s":return r*pe;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}(e);if("number"===r&&isFinite(e))return t.long?function(e){var t=Math.abs(e);if(t>=he)return ye(e,t,he,"day");if(t>=ue)return ye(e,t,ue,"hour");if(t>=le)return ye(e,t,le,"minute");if(t>=pe)return ye(e,t,pe,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=he)return Math.round(e/he)+"d";if(t>=ue)return Math.round(e/ue)+"h";if(t>=le)return Math.round(e/le)+"m";if(t>=pe)return Math.round(e/pe)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function ye(e,t,r,i){var n=t>=1.5*r;return Math.round(e/r)+" "+i+(n?"s":"")}var ve=function(e){function t(e){let i,n,s,a=null;function o(...e){if(!o.enabled)return;const r=o,n=Number(new Date),s=n-(i||n);r.diff=s,r.prev=i,r.curr=n,i=n,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,n)=>{if("%%"===i)return"%";a++;const s=t.formatters[n];if("function"==typeof s){const t=e[a];i=s.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:(n!==t.namespaces&&(n=t.namespaces,s=t.enabled(e)),s),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,]+/),n=i.length;for(r=0;r<n;r++)i[r]&&("-"===(e=i[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.substr(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=ge,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,n=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(n=i))})),t.splice(n,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=ve(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(de,de.exports);var be={},we={exports:{}};we.exports=function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){t.__esModule=!0,t.default=void 0;var i=r(18),n=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,i){void 0===i&&(i=!1);var n=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(n,s),o=0,c=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),i=t+new Array(r+1).join(".0");return e.map(i.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(i&&(o=a-Math.min(n,s)),a-=1;a>=o;){if(c[0][a]>c[1][a])return 1;if(c[0][a]===c[1][a]){if(a===o)return 0;a-=1}else if(c[0][a]<c[1][a])return-1}},e.map=function(e,t){var r,i=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)i.push(t(e[r]));return i},e.find=function(e,t){var r,i;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,i=e.length;r<i;r+=1){var n=e[r];if(t(n,r))return n}},e.assign=function(e){for(var t,r,i=e,n=arguments.length,s=new Array(n>1?n-1:0),a=1;a<n;a++)s[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(s));var o=function(){var e=s[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){i[t]=e[t]}))};for(t=0,r=s.length;t<r;t+=1)o();return e},e.getBrowserAlias=function(e){return i.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return i.BROWSER_MAP[e]||""},e}();t.default=n,e.exports=t.default},18:function(e,t,r){t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0,t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"},t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"},t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"},t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"},t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"}},90:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,n=(i=r(91))&&i.__esModule?i:{default:i},s=r(18);function a(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var o=function(){function e(){}var t,r,i;return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw new Error("UserAgent should be a string");return new n.default(e,t)},e.parse=function(e){return new n.default(e).getResult()},t=e,i=[{key:"BROWSER_MAP",get:function(){return s.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return s.ENGINE_MAP}},{key:"OS_MAP",get:function(){return s.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return s.PLATFORMS_MAP}}],(r=null)&&a(t.prototype,r),i&&a(t,i),e}();t.default=o,e.exports=t.default},91:function(e,t,r){t.__esModule=!0,t.default=void 0;var i=c(r(92)),n=c(r(93)),s=c(r(94)),a=c(r(95)),o=c(r(17));function c(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(i.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(n.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(s.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},i=0,n={},s=0;if(Object.keys(e).forEach((function(t){var a=e[t];"string"==typeof a?(n[t]=a,s+=1):"object"==typeof a&&(r[t]=a,i+=1)})),i>0){var a=Object.keys(r),c=o.default.find(a,(function(e){return t.isOS(e)}));if(c){var d=this.satisfies(r[c]);if(void 0!==d)return d}var p=o.default.find(a,(function(e){return t.isPlatform(e)}));if(p){var l=this.satisfies(r[p]);if(void 0!==l)return l}}if(s>0){var u=Object.keys(n),h=o.default.find(u,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(n[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),i=e.toLowerCase(),n=o.default.getBrowserTypeByAlias(i);return t&&n&&(i=n.toLowerCase()),i===r},t.compareVersion=function(e){var t=[0],r=e,i=!1,n=this.getBrowserVersion();if("string"==typeof n)return">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(i=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(i=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(n,r,i))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},s=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=n.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=n.default.getFirstMatch(s,e)||n.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=n.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=n.default.getFirstMatch(s,e)||n.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=n.default.getFirstMatch(s,e)||n.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=n.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=n.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=n.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=n.default.getFirstMatch(s,e)||n.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=n.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=n.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=n.default.getFirstMatch(s,e)||n.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=n.default.getFirstMatch(s,e)||n.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=n.default.getFirstMatch(s,e)||n.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=n.default.getFirstMatch(s,e)||n.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=n.default.getFirstMatch(s,e)||n.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=n.default.getFirstMatch(s,e)||n.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=n.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=n.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=n.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=n.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=n.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=n.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=n.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=n.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=n.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=n.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=n.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=n.default.getFirstMatch(s,e)||n.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=n.default.getFirstMatch(s,e)||n.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=n.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=n.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=n.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=n.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=n.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=n.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=n.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=n.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=n.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=n.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:n.default.getFirstMatch(t,e),version:n.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},s=r(18),a=[{test:[/Roku\/DVP/],describe:function(e){var t=n.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=n.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=n.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=n.default.getWindowsVersionName(t);return{name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=n.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=n.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=n.default.getMacOSVersionName(t),i={name:s.OS_MAP.MacOS,version:t};return r&&(i.versionName=r),i}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=n.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=n.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=n.default.getAndroidVersionName(t),i={name:s.OS_MAP.Android,version:t};return r&&(i.versionName=r),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=n.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=n.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||n.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||n.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=n.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=n.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=n.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},s=r(18),a=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=n.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:s.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=n.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:s.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var i,n=(i=r(17))&&i.__esModule?i:{default:i},s=r(18),a=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:s.ENGINE_MAP.Blink};var t=n.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=n.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},r=n.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},r=n.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=n.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default}});var _e={},Se=Q&&Q.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_e,"__esModule",{value:!0}),_e.Logger=void 0;const Re=Se(de.exports),ke="mediasoup-client";_e.Logger=class{constructor(e){e?(this._debug=(0,Re.default)(`${ke}:${e}`),this._warn=(0,Re.default)(`${ke}:WARN:${e}`),this._error=(0,Re.default)(`${ke}:ERROR:${e}`)):(this._debug=(0,Re.default)(ke),this._warn=(0,Re.default)(`${ke}:WARN`),this._error=(0,Re.default)(`${ke}: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 Pe={};Object.defineProperty(Pe,"__esModule",{value:!0}),Pe.EnhancedEventEmitter=void 0;const Ce=s.default,Te=new _e.Logger("EnhancedEventEmitter");class Ee extends Ce.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}safeEmit(e,...t){const r=this.listenerCount(e);try{return this.emit(e,...t)}catch(t){return Te.error("safeEmit() | event listener threw an error [event:%s]:%o",e,t),Boolean(r)}}async safeEmitAsPromise(e,...t){return new Promise(((r,i)=>{try{this.emit(e,...t,r,i)}catch(t){Te.error("safeEmitAsPromise() | event listener threw an error [event:%s]:%o",e,t),i(t)}}))}}Pe.EnhancedEventEmitter=Ee;var De={};Object.defineProperty(De,"__esModule",{value:!0}),De.InvalidStateError=De.UnsupportedError=void 0;class Me extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Me):this.stack=new Error(e).stack}}De.UnsupportedError=Me;class Oe extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Oe):this.stack=new Error(e).stack}}De.InvalidStateError=Oe;var xe={};Object.defineProperty(xe,"__esModule",{value:!0}),xe.generateRandomNumber=xe.clone=void 0,xe.clone=function(e,t){return void 0===e?t:JSON.parse(JSON.stringify(e))},xe.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var Ie={},Le={};!function(e){const t=Y.exports("h264-profile-level-id");t.log=console.info.bind(console);e.ProfileConstrainedBaseline=1,e.ProfileBaseline=2,e.ProfileMain=3,e.ProfileConstrainedHigh=4,e.ProfileHigh=5;const r=10;e.Level1_b=0,e.Level1=10,e.Level1_1=11,e.Level1_2=12,e.Level1_3=13,e.Level2=20,e.Level2_1=21,e.Level2_2=22,e.Level3=30,e.Level3_1=31,e.Level3_2=32,e.Level4=40,e.Level4_1=41,e.Level4_2=42,e.Level5=50,e.Level5_1=51,e.Level5_2=52;class i{constructor(e,t){this.profile=e,this.level=t}}e.ProfileLevelId=i;const n=new i(1,31);class s{constructor(e){this._mask=~c("x",e),this._maskedValue=c("1",e)}isMatch(e){return this._maskedValue===(e&this._mask)}}class a{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const o=[new a(66,new s("x1xx0000"),1),new a(77,new s("1xxx0000"),1),new a(88,new s("11xx0000"),1),new a(66,new s("x0xx0000"),2),new a(88,new s("10xx0000"),2),new a(77,new s("0x0x0000"),3),new a(100,new s("00000000"),5),new a(100,new s("00001100"),4)];function c(e,t){return(t[0]===e)<<7|(t[1]===e)<<6|(t[2]===e)<<5|(t[3]===e)<<4|(t[4]===e)<<3|(t[5]===e)<<2|(t[6]===e)<<1|(t[7]===e)<<0}function d(e={}){const t=e["level-asymmetry-allowed"];return 1===t||"1"===t}e.parseProfileLevelId=function(e){if("string"!=typeof e||6!==e.length)return null;const r=parseInt(e,16);if(0===r)return null;const n=255&r,s=r>>8&255,a=r>>16&255;let c;switch(n){case 11:c=0!=(16&s)?0:11;break;case 10:case 12:case 13:case 20:case 21:case 22:case 30:case 31:case 32:case 40:case 41:case 42:case 50:case 51:case 52:c=n;break;default:return t("parseProfileLevelId() | unrecognized level_idc:%s",n),null}for(const e of o)if(a===e.profile_idc&&e.profile_iop.isMatch(s))return new i(e.profile,c);return t("parseProfileLevelId() | unrecognized profile_idc/profile_iop combination"),null},e.profileLevelIdToString=function(e){if(0==e.level)switch(e.profile){case 1:return"42f00b";case 2:return"42100b";case 3:return"4d100b";default:return t("profileLevelIdToString() | Level 1_b not is allowed for profile:%s",e.profile),null}let r;switch(e.profile){case 1:r="42e0";break;case 2:r="4200";break;case 3:r="4d00";break;case 4:r="640c";break;case 5:r="6400";break;default:return t("profileLevelIdToString() | unrecognized profile:%s",e.profile),null}let i=e.level.toString(16);return 1===i.length&&(i=`0${i}`),`${r}${i}`},e.parseSdpProfileLevelId=function(t={}){const r=t["profile-level-id"];return r?e.parseProfileLevelId(r):n},e.isSameProfile=function(t={},r={}){const i=e.parseSdpProfileLevelId(t),n=e.parseSdpProfileLevelId(r);return Boolean(i&&n&&i.profile===n.profile)},e.generateProfileLevelIdForAnswer=function(n={},s={}){if(!n["profile-level-id"]&&!s["profile-level-id"])return t("generateProfileLevelIdForAnswer() | no profile-level-id in local and remote params"),null;const a=e.parseSdpProfileLevelId(n),o=e.parseSdpProfileLevelId(s);if(!a)throw new TypeError("invalid local_profile_level_id");if(!o)throw new TypeError("invalid remote_profile_level_id");if(a.profile!==o.profile)throw new TypeError("H264 Profile mismatch");const c=d(n)&&d(s),p=a.level,l=o.level,u=function(e,t){return 0===e?t!==r&&0!==t:0===t?e!==r:e<t}(h=p,f=l)?h:f;var h,f;const m=c?p:u;return t("generateProfileLevelIdForAnswer() | result: [profile:%s, level:%s]",a.profile,m),e.profileLevelIdToString(new i(a.profile,m))}}(Le);var je=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ae=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Fe=Q&&Q.__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)&&je(t,e,r);return Ae(t,e),t};Object.defineProperty(Ie,"__esModule",{value:!0}),Ie.canReceive=Ie.canSend=Ie.generateProbatorRtpParameters=Ie.reduceCodecs=Ie.getSendingRemoteRtpParameters=Ie.getSendingRtpParameters=Ie.getRecvRtpCapabilities=Ie.getExtendedRtpCapabilities=Ie.validateSctpStreamParameters=Ie.validateSctpParameters=Ie.validateNumSctpStreams=Ie.validateSctpCapabilities=Ie.validateRtcpParameters=Ie.validateRtpEncodingParameters=Ie.validateRtpHeaderExtensionParameters=Ie.validateRtpCodecParameters=Ie.validateRtpParameters=Ie.validateRtpHeaderExtension=Ie.validateRtcpFeedback=Ie.validateRtpCodecCapability=Ie.validateRtpCapabilities=void 0;const Ne=Fe(Le),Be=Fe(xe);function Ue(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)qe(t)}function qe(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 $e(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 ze(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)Ve(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)We(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)Ge(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),He(e.rtcp)}function Ve(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)qe(t)}function We(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 Ge(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 He(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)}function Ke(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")}function Qe(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function Je(e,t,{strict:r=!1,modify:i=!1}={}){const n=e.mimeType.toLowerCase();if(n!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(n){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!Ne.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=Ne.generateProfileLevelIdForAnswer(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 Ye(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Xe(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}Ie.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)Ue(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)$e(t)},Ie.validateRtpCodecCapability=Ue,Ie.validateRtcpFeedback=qe,Ie.validateRtpHeaderExtension=$e,Ie.validateRtpParameters=ze,Ie.validateRtpCodecParameters=Ve,Ie.validateRtpHeaderExtensionParameters=We,Ie.validateRtpEncodingParameters=Ge,Ie.validateRtcpParameters=He,Ie.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");Ke(e.numStreams)},Ie.validateNumSctpStreams=Ke,Ie.validateSctpParameters=function(e){if("object"!=typeof e)throw new TypeError("params is not an object");if("number"!=typeof e.port)throw new TypeError("missing params.port");if("number"!=typeof e.OS)throw new TypeError("missing params.OS");if("number"!=typeof e.MIS)throw new TypeError("missing params.MIS");if("number"!=typeof e.maxMessageSize)throw new TypeError("missing params.maxMessageSize")},Ie.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")},Ie.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const i of t.codecs||[]){if(Qe(i))continue;const t=(e.codecs||[]).find((e=>Je(e,i,{strict:!0,modify:!0})));if(!t)continue;const n={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:Xe(t,i)};r.codecs.push(n)}for(const i of r.codecs){const r=e.codecs.find((e=>Qe(e)&&e.parameters.apt===i.localPayloadType)),n=t.codecs.find((e=>Qe(e)&&e.parameters.apt===i.remotePayloadType));r&&n&&(i.localRtxPayloadType=r.preferredPayloadType,i.remoteRtxPayloadType=n.preferredPayloadType)}for(const i of t.headerExtensions){const t=e.headerExtensions.find((e=>Ye(e,i)));if(!t)continue;const n={kind:i.kind,uri:i.uri,sendId:t.preferredId,recvId:i.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(i.direction){case"sendrecv":n.direction="sendrecv";break;case"recvonly":n.direction="sendonly";break;case"sendonly":n.direction="recvonly";break;case"inactive":n.direction="inactive"}r.headerExtensions.push(n)}return r},Ie.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},Ie.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},Ie.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},Ie.reduceCodecs=function(e,t){const r=[];if(t){for(let i=0;i<e.length;++i)if(Je(e[i],t)){r.push(e[i]),Qe(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]),Qe(e[1])&&r.push(e[1]);return r},Ie.generateProbatorRtpParameters=function(e){ze(e=Be.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},Ie.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},Ie.canReceive=function(e,t){if(ze(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var Ze={},et={},tt=Q&&Q.__awaiter||function(e,t,r,i){return new(r||(r=Promise))((function(n,s){function a(e){try{c(i.next(e))}catch(e){s(e)}}function o(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,o)}c((i=i.apply(e,t||[])).next())}))};Object.defineProperty(et,"__esModule",{value:!0});et.AwaitQueue=class{constructor({ClosedErrorClass:e=Error,StoppedErrorClass:t=Error}={ClosedErrorClass:Error,StoppedErrorClass:Error}){this.closed=!1,this.pendingTasks=[],this.ClosedErrorClass=Error,this.StoppedErrorClass=Error,this.ClosedErrorClass=e,this.StoppedErrorClass=t}get size(){return this.pendingTasks.length}close(){if(!this.closed){this.closed=!0;for(const e of this.pendingTasks)e.stopped=!0,e.reject(new this.ClosedErrorClass("AwaitQueue closed"));this.pendingTasks.length=0}}push(e,t){return tt(this,void 0,void 0,(function*(){if(this.closed)throw new this.ClosedErrorClass("AwaitQueue closed");if("function"!=typeof e)throw new TypeError("given task is not a function");if(!e.name&&t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,i)=>{const n={task:e,name:t,resolve:r,reject:i,stopped:!1,enqueuedAt:new Date,executedAt:void 0};this.pendingTasks.push(n),1===this.pendingTasks.length&&this.next()}))}))}stop(){if(!this.closed){for(const e of this.pendingTasks)e.stopped=!0,e.reject(new this.StoppedErrorClass("AwaitQueue stopped"));this.pendingTasks.length=0}}dump(){const e=new Date;return this.pendingTasks.map((t=>({task:t.task,name:t.name,enqueuedTime:t.executedAt?t.executedAt.getTime()-t.enqueuedAt.getTime():e.getTime()-t.enqueuedAt.getTime(),executingTime:t.executedAt?e.getTime()-t.executedAt.getTime():0})))}next(){return tt(this,void 0,void 0,(function*(){const e=this.pendingTasks[0];e&&(yield this.executeTask(e),this.pendingTasks.shift(),this.next())}))}executeTask(e){return tt(this,void 0,void 0,(function*(){if(!e.stopped){e.executedAt=new Date;try{const t=yield e.task();if(e.stopped)return;e.resolve(t)}catch(t){if(e.stopped)return;e.reject(t)}}}))}};var rt={};Object.defineProperty(rt,"__esModule",{value:!0}),rt.Producer=void 0;const it=Pe,nt=De,st=new _e.Logger("Producer");class at extends it.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:i,rtpParameters:n,stopTracks:s,disableTrackOnPause:a,zeroRtpOnPause:o,appData:c}){super(),this._closed=!1,this._observer=new it.EnhancedEventEmitter,st.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=i,this._kind=i.kind,this._rtpParameters=n,this._paused=!!a&&!i.enabled,this._maxSpatialLayer=void 0,this._stopTracks=s,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){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(st.debug("close()"),this._closed=!0,this._destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(st.debug("transportClosed()"),this._closed=!0,this._destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new nt.InvalidStateError("closed");return this.safeEmitAsPromise("@getstats")}pause(){st.debug("pause()"),this._closed?st.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&this.safeEmitAsPromise("@replacetrack",null).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){st.debug("resume()"),this._closed?st.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&this.safeEmitAsPromise("@replacetrack",this._track).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(st.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new nt.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new nt.InvalidStateError("track ended");e!==this._track?(this._zeroRtpOnPause&&this._paused||await this.safeEmitAsPromise("@replacetrack",e),this._destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this._handleTrack()):st.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new nt.InvalidStateError("closed");if("video"!==this._kind)throw new nt.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await this.safeEmitAsPromise("@setmaxspatiallayer",e),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new nt.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await this.safeEmitAsPromise("@setrtpencodingparameters",e)}_onTrackEnded(){st.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){}}}rt.Producer=at;var ot={};Object.defineProperty(ot,"__esModule",{value:!0}),ot.Consumer=void 0;const ct=Pe,dt=De,pt=new _e.Logger("Consumer");class lt extends ct.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:i,track:n,rtpParameters:s,appData:a}){super(),this._closed=!1,this._observer=new ct.EnhancedEventEmitter,pt.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=i,this._track=n,this._rtpParameters=s,this._paused=!n.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){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(pt.debug("close()"),this._closed=!0,this._destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(pt.debug("transportClosed()"),this._closed=!0,this._destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new dt.InvalidStateError("closed");return this.safeEmitAsPromise("@getstats")}pause(){pt.debug("pause()"),this._closed?pt.error("pause() | Consumer closed"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){pt.debug("resume()"),this._closed?pt.error("resume() | Consumer closed"):(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume"))}_onTrackEnded(){pt.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){}}}ot.Consumer=lt;var ut={};Object.defineProperty(ut,"__esModule",{value:!0}),ut.DataProducer=void 0;const ht=Pe,ft=De,mt=new _e.Logger("DataProducer");class gt extends ht.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:i}){super(),this._closed=!1,this._observer=new ht.EnhancedEventEmitter,mt.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){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(mt.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(mt.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(mt.debug("send()"),this._closed)throw new ft.InvalidStateError("closed");this._dataChannel.send(e)}_handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(mt.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?mt.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):mt.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(mt.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||mt.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}ut.DataProducer=gt;var yt={};Object.defineProperty(yt,"__esModule",{value:!0}),yt.DataConsumer=void 0;const vt=Pe,bt=new _e.Logger("DataConsumer");class wt extends vt.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:i,appData:n}){super(),this._closed=!1,this._observer=new vt.EnhancedEventEmitter,bt.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=i,this._appData=n,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){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){this._closed||(bt.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(bt.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}_handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(bt.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?bt.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):bt.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(bt.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}yt.DataConsumer=wt;var _t=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),St=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Rt=Q&&Q.__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)&&_t(t,e,r);return St(t,e),t};Object.defineProperty(Ze,"__esModule",{value:!0}),Ze.Transport=void 0;const kt=et,Pt=_e,Ct=Pe,Tt=De,Et=Rt(xe),Dt=Rt(Ie),Mt=rt,Ot=ot,xt=ut,It=yt;class Lt{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}const jt=new Pt.Logger("Transport");class At extends Ct.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p,handlerFactory:l,extendedRtpCapabilities:u,canProduceByKind:h}){super(),this._closed=!1,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 kt.AwaitQueue({ClosedErrorClass:Tt.InvalidStateError}),this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._observer=new Ct.EnhancedEventEmitter,jt.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=u,this._canProduceByKind=h,this._maxSctpMessageSize=s?s.maxMessageSize:null,delete(c=Et.clone(c,{})).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=l(),this._handler.run({direction:e,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,extendedRtpCapabilities:u}),this._appData=p,this._handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){throw new Error("cannot override appData object")}get observer(){return this._observer}close(){if(!this._closed){jt.debug("close()"),this._closed=!0,this._awaitQueue.close(),this._handler.close();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 Tt.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(jt.debug("restartIce()"),this._closed)throw new Tt.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(jt.debug("updateIceServers()"),this._closed)throw new Tt.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:n=!0,disableTrackOnPause:s=!0,zeroRtpOnPause:a=!1,appData:o={}}={}){if(jt.debug("produce() [track:%o]",e),!e)throw new TypeError("missing track");if("send"!==this._direction)throw new Tt.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new Tt.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new Tt.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:p,rtpSender:l}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:i});try{Dt.validateRtpParameters(p);const{id:t}=await this.safeEmitAsPromise("produce",{kind:e.kind,rtpParameters:p,appData:o}),r=new Mt.Producer({id:t,localId:d,rtpSender:l,track:e,rtpParameters:p,stopTracks:n,disableTrackOnPause:s,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(n)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:i,appData:n={}}){if(jt.debug("consume()"),i=Et.clone(i,void 0),this._closed)throw new Tt.InvalidStateError("closed");if("recv"!==this._direction)throw new Tt.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(!Dt.canReceive(i,this._extendedRtpCapabilities))throw new Tt.UnsupportedError("cannot consume this Producer");const s=new Lt({id:e,producerId:t,kind:r,rtpParameters:i,appData:n});return this._pendingConsumerTasks.push(s),!1===this._consumerCreationInProgress&&this._createPendingConsumers(),s.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:i="",protocol:n="",appData:s={}}={}){if(jt.debug("produceData()"),"send"!==this._direction)throw new Tt.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new Tt.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(s&&"object"!=typeof s)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:n});Dt.validateSctpStreamParameters(o);const{id:c}=await this.safeEmitAsPromise("producedata",{sctpStreamParameters:o,label:i,protocol:n,appData:s}),d=new xt.DataProducer({id:c,dataChannel:a,sctpStreamParameters:o,appData:s});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:n="",appData:s={}}){if(jt.debug("consumeData()"),r=Et.clone(r,void 0),this._closed)throw new Tt.InvalidStateError("closed");if("recv"!==this._direction)throw new Tt.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new Tt.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(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return Dt.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:a}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:i,protocol:n}),o=new It.DataConsumer({id:e,dataProducerId:t,dataChannel:a,sctpStreamParameters:r,appData:s});return this._dataConsumers.set(o.id,o),this._handleDataConsumer(o),this._observer.safeEmit("newdataconsumer",o),o}),"transport.consumeData()")}async _createPendingConsumers(){this._awaitQueue.push((async()=>{this._consumerCreationInProgress=!0;const e=[...this._pendingConsumerTasks];let t;this._pendingConsumerTasks=[];const r=[];for(const t of e){const{id:e,kind:i,rtpParameters:n}=t.consumerOptions;r.push({trackId:e,kind:i,rtpParameters:n})}try{const i=await this._handler.receive(r);for(let r=0;r<i.length;r++){const n=e[r],s=i[r],{id:a,producerId:o,kind:c,rtpParameters:d,appData:p}=n.consumerOptions,{localId:l,rtpReceiver:u,track:h}=s,f=new Ot.Consumer({id:a,localId:l,producerId:o,rtpReceiver:u,track:h,rtpParameters:d,appData:p});this._consumers.set(f.id,f),this._handleConsumer(f),this._probatorConsumerCreated||t||"video"!==c||(t=f),this._observer.safeEmit("newconsumer",f),n.resolve(f)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=Dt.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),jt.debug("_createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){jt.error("_createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}this._consumerCreationInProgress=!1}),"transport._createPendingConsumers()").then((()=>{this._pendingConsumerTasks.length>0&&this._createPendingConsumers()})).catch((()=>{}))}_handleHandler(){const e=this._handler;e.on("@connect",(({dtlsParameters:e},t,r)=>{this._closed?r(new Tt.InvalidStateError("closed")):this.safeEmit("connect",{dtlsParameters:e},t,r)})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(jt.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()=>this._handler.stopSending(e.localId)),"producer @close event").catch((e=>jt.warn("producer.close() failed:%o",e)))})),e.on("@replacetrack",((t,r,i)=>{this._awaitQueue.push((async()=>this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(i)})),e.on("@setmaxspatiallayer",((t,r,i)=>{this._awaitQueue.push((async()=>this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(i)})),e.on("@setrtpencodingparameters",((t,r,i)=>{this._awaitQueue.push((async()=>this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(i)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new Tt.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}_handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._closed||this._awaitQueue.push((async()=>this._handler.stopReceiving(e.localId)),"consumer @close event").catch((()=>{}))})),e.on("@pause",(()=>{this._awaitQueue.push((async()=>this._handler.pauseReceiving(e.localId)),"consumer @pause event").catch((()=>{}))})),e.on("@resume",(()=>{this._awaitQueue.push((async()=>this._handler.resumeReceiving(e.localId)),"consumer @resume event").catch((()=>{}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new Tt.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)}))}}Ze.Transport=At;var Ft={},Nt={},Bt={},Ut={exports:{}},qt=Ut.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(qt).forEach((function(e){qt[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))})),function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,i){var n=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:n&&!r[e.name]&&(r[e.name]={});var s=e.push?{}:n?r[e.name]:r;!function(e,r,i,n){if(n&&!i)r[n]=t(e[1]);else for(var s=0;s<i.length;s+=1)null!=e[s+1]&&(r[i[s]]=t(e[s+1]))}(i.match(e.reg),s,e.names,e.name),e.push&&r[e.push].push(s)},i=Ut.exports,n=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],a=t;return e.split(/(\r\n|\r|\n)/).filter(n).forEach((function(e){var t=e[0],n=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),a=s[s.length-1]);for(var o=0;o<(i[t]||[]).length;o+=1){var c=i[t][o];if(c.reg.test(n))return r(c,a,n)}})),t.media=s,t};var s=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(s,{})},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),n=0;n<i.length;n+=3)r.push({component:i[n],ip:i[n+1],port:i[n+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var r,i=!1;return"~"!==e[0]?r=t(e):(r=t(e.substring(1,e.length)),i=!0),{scid:r,paused:i}}))}))}}(Bt);var $t=Ut.exports,zt=/%[sdv%]/g,Vt=function(e){var t=1,r=arguments,i=r.length;return e.replace(zt,(function(e){if(t>=i)return e;var n=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(n);case"%d":return Number(n);case"%v":return""}}))},Wt=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 n=0;n<t.names.length;n+=1){var s=t.names[n];t.name?i.push(r[t.name][s]):i.push(r[t.names[n]])}else i.push(r[t.name]);return Vt.apply(null,i)},Gt=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Ht=["i","c","b","a"],Kt=Bt,Qt=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||Gt,i=t.innerOrder||Ht,n=[];return r.forEach((function(t){$t[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Wt(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Wt(t,r,e))}))}))})),e.media.forEach((function(e){n.push(Wt("m",$t.m[0],e)),i.forEach((function(t){$t[t].forEach((function(r){r.name in e&&null!=e[r.name]?n.push(Wt(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){n.push(Wt(t,r,e))}))}))}))})),n.join("\r\n")+"\r\n"};Nt.write=Qt,Nt.parse=Kt.parse,Nt.parseParams=Kt.parseParams,Nt.parseFmtpConfig=Kt.parseFmtpConfig,Nt.parsePayloads=Kt.parsePayloads,Nt.parseRemoteCandidates=Kt.parseRemoteCandidates,Nt.parseImageAttributes=Kt.parseImageAttributes,Nt.parseSimulcastStreamList=Kt.parseSimulcastStreamList;var Jt={},Yt=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Xt=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Zt=Q&&Q.__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)&&Yt(t,e,r);return Xt(t,e),t};Object.defineProperty(Jt,"__esModule",{value:!0}),Jt.applyCodecParameters=Jt.getCname=Jt.extractDtlsParameters=Jt.extractRtpCapabilities=void 0;const er=Zt(Nt);Jt.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let i=!1,n=!1;for(const s of e.media){const e=s.type;switch(e){case"audio":if(i)continue;i=!0;break;case"video":if(n)continue;n=!0;break;default:continue}for(const r of s.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 s.fmtp||[]){const r=er.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 e of s.rtcpFb||[]){const r=t.get(e.payload);if(!r)continue;const i={type:e.type,parameter:e.subtype};i.parameter||delete i.parameter,r.rtcpFeedback.push(i)}for(const t of s.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}},Jt.extractDtlsParameters=function({sdpObject:e}){const t=(e.media||[]).find((e=>e.iceUfrag&&0!==e.port));if(!t)throw new Error("no active media section found");const r=t.fingerprint||e.fingerprint;let i;switch(t.setup){case"active":i="client";break;case"passive":i="server";break;case"actpass":i="auto"}return{role:i,fingerprints:[{algorithm:r.type,value:r.hash}]}},Jt.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},Jt.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 n=er.parseParams(i.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(n.stereo=e?1:0);break}}i.config="";for(const e of Object.keys(n))i.config&&(i.config+=";"),i.config+=`${e}=${n[e]}`}};var tr={};Object.defineProperty(tr,"__esModule",{value:!0}),tr.addLegacySimulcast=tr.getRtpEncodings=void 0,tr.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,n]=i.ssrcs.split(/\s+/);e=Number(e),n=Number(n),t.has(e)&&(t.delete(e),t.delete(n),r.set(e,n))}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},tr.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,n]=r.value.split(" "),s=r.id;let a;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===s&&(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=[],p=[];for(let e=0;e<t;++e)d.push(s+e),a&&p.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} ${n}`})}for(let t=0;t<p.length;++t){const r=d[t],s=p[t];e.ssrcs.push({id:s,attribute:"cname",value:c}),e.ssrcs.push({id:s,attribute:"msid",value:`${i} ${n}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${s}`})}};var rr={};Object.defineProperty(rr,"__esModule",{value:!0}),rr.HandlerInterface=void 0;const ir=Pe;class nr extends ir.EnhancedEventEmitter{constructor(){super()}}rr.HandlerInterface=nr;var sr={},ar={},or=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),cr=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),dr=Q&&Q.__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)&&or(t,e,r);return cr(t,e),t};Object.defineProperty(ar,"__esModule",{value:!0}),ar.OfferMediaSection=ar.AnswerMediaSection=ar.MediaSection=void 0;const pr=dr(xe);class lr{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.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}disable(){this._mediaObject.direction="inactive",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}close(){this._mediaObject.direction="inactive",this._mediaObject.port=0,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}}ar.MediaSection=lr;ar.AnswerMediaSection=class extends lr{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,offerMediaObject:a,offerRtpParameters:o,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:p=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(a.mid),this._mediaObject.type=a.type,this._mediaObject.protocol=a.protocol,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.port=n.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:ur(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=pr.clone(e.parameters,{});if(d){const{opusStereo:t,opusFec:i,opusDtx:n,opusMaxPlaybackRate:s,opusMaxAverageBitrate:a,opusPtime:c,videoGoogleStartBitrate:p,videoGoogleMaxBitrate:l,videoGoogleMinBitrate:u}=d,h=o.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":void 0!==t&&(h.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==i&&(h.parameters.useinbandfec=i?1:0,r.useinbandfec=i?1:0),void 0!==n&&(h.parameters.usedtx=n?1:0,r.usedtx=n?1:0),void 0!==s&&(r.maxplaybackrate=s),void 0!==a&&(r.maxaveragebitrate=a),void 0!==c&&(h.parameters.ptime=c,r.ptime=c);break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==p&&(r["x-google-start-bitrate"]=p),void 0!==l&&(r["x-google-max-bitrate"]=l),void 0!==u&&(r["x-google-min-bitrate"]=u)}}const i={payload:e.payloadType,config:""};for(const e of Object.keys(r))i.config&&(i.config+=";"),i.config+=`${e}=${r[e]}`;i.config&&this._mediaObject.fmtp.push(i);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){(a.ext||[]).some((t=>t.uri===e.uri))&&this._mediaObject.ext.push({uri:e.uri,value:e.id})}if(p&&"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"}}};function ur(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}ar.OfferMediaSection=class extends lr{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1,mid:a,kind:o,offerRtpParameters:c,streamId:d,trackId:p,oldDataChannelSpec:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(a),this._mediaObject.type=o,n?(this._mediaObject.connection={ip:n.ip,version:n.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=n.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||"-"} ${p}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:ur(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||"-"} ${p}`}),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||"-"} ${p}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":l?(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"}planBReceive({offerRtpParameters:e,streamId:t,trackId:r}){const i=e.encodings[0],n=i.ssrc,s=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:ur(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:n,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:n,attribute:"msid",value:`${t||"-"} ${r}`}),s&&(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}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${n} ${s}`}))}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 hr=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),fr=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),mr=Q&&Q.__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)&&hr(t,e,r);return fr(t,e),t};Object.defineProperty(sr,"__esModule",{value:!0}),sr.RemoteSdp=void 0;const gr=mr(Nt),yr=ar,vr=new _e.Logger("RemoteSdp");sr.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:i,plainRtpParameters:n,planB:s=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=i,this._plainRtpParameters=n,this._planB=s,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:""}]}n&&(this._sdpObject.origin.address=n.ip,this._sdpObject.origin.ipVer=n.ipVersion)}updateIceParameters(e){vr.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){vr.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:n,extmapAllowMixed:s=!1}){const a=new yr.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:i,codecOptions:n,extmapAllowMixed:s});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:n}){const s=this._midToIndex.get(e);let a;if(void 0!==s&&(a=this._mediaSections[s]),a)a.planBReceive({offerRtpParameters:r,streamId:i,trackId:n}),this._replaceMediaSection(a);else{a=new yr.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:n});const s=this._mediaSections.find((e=>e.closed));s?this._replaceMediaSection(a,s.mid):this._addMediaSection(a)}}disableMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);this._mediaSections[t].disable()}closeMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);const r=this._mediaSections[t];if(e===this._firstMid)return vr.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),void this.disableMediaSection(e);r.close(),this._regenerateBundleMids()}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._midToIndex.get(e);if(void 0===r)throw new Error(`no media section found with mid '${e}'`);const i=this._mediaSections[r];i.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(i)}sendSctpAssociation({offerMediaObject:e}){const t=new yr.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 yr.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++,gr.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()}}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var br={};Object.defineProperty(br,"__esModule",{value:!0}),br.parse=void 0;const wr=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");br.parse=function(e){const t=wr.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var _r=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Sr=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Rr=Q&&Q.__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)&&_r(t,e,r);return Sr(t,e),t};Object.defineProperty(Ft,"__esModule",{value:!0}),Ft.Chrome74=void 0;const kr=Rr(Nt),Pr=_e,Cr=Rr(xe),Tr=Rr(Ie),Er=Rr(Jt),Dr=Rr(tr),Mr=rr,Or=sr,xr=br,Ir=new Pr.Logger("Chrome74"),Lr={OS:1024,MIS:1024};class jr extends Mr.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new jr}get name(){return"Chrome74"}close(){if(Ir.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Ir.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=kr.parse(t.sdp);return Er.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ir.debug("getNativeSctpCapabilities()"),{numStreams:Lr}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ir.debug("run()"),this._direction=e,this._remoteSdp=new Or.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Tr.getSendingRtpParameters("audio",d),video:Tr.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Tr.getSendingRemoteRtpParameters("audio",d),video:Tr.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),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){Ir.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Ir.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ir.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ir.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ir.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ir.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}){var n;this._assertSendDirection(),Ir.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=Cr.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Tr.reduceCodecs(s.codecs,i);const a=Cr.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=Tr.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let d,p=await this._pc.createOffer(),l=kr.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:l});let u=!1;const h=(0,xr.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Ir.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=kr.parse(p.sdp),d=l.media[o.idx],Dr.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),p={type:"offer",sdp:kr.write(l)}),Ir.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p);const f=c.mid;if(s.mid=f,l=kr.parse(this._pc.localDescription.sdp),d=l.media[o.idx],s.rtcp.cname=Er.getCname({offerMediaObject:d}),t)if(1===t.length){let e=Dr.getRtpEncodings({offerMediaObject:d});Object.assign(e[0],t[0]),u&&(e=[e[0]]),s.encodings=e}else s.encodings=t;else s.encodings=Dr.getRtpEncodings({offerMediaObject:d});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="S1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:s,answerRtpParameters:a,codecOptions:r,extmapAllowMixed:!0});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Ir.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(f,c),{localId:f,rtpParameters:s,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),Ir.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),this._remoteSdp.closeMediaSection(t.mid);const r=await this._pc.createOffer();Ir.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Ir.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?Ir.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Ir.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(),Ir.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)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),Ir.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)}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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};Ir.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Lr.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=kr.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),Ir.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()};Ir.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[],i=new Map;for(const t of e){const{trackId:e,kind:r,rtpParameters:n}=t;Ir.debug("receive() [trackId:%s, kind:%s]",e,r);const s=n.mid||String(this._mapMidTransceiver.size);i.set(e,s),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Ir.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let s=await this._pc.createAnswer();const a=kr.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,n=i.get(e),s=a.media.find((e=>String(e.mid)===n));Er.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:kr.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),Ir.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{trackId:e}=t,n=i.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),r.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),Ir.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};Ir.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Ir.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),Ir.debug("pauseReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Ir.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Ir.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),Ir.debug("resumeReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="recvonly";const r={type:"offer",sdp:this._remoteSdp.getSdp()};Ir.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Ir.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}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}){var i;this._assertRecvDirection();const{streamId:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};Ir.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ir.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=kr.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Ir.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=kr.parse(this._pc.localDescription.sdp));const r=Er.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}Ft.Chrome74=jr;var Ar={},Fr=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Nr=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Br=Q&&Q.__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)&&Fr(t,e,r);return Nr(t,e),t};Object.defineProperty(Ar,"__esModule",{value:!0}),Ar.Chrome70=void 0;const Ur=Br(Nt),qr=_e,$r=Br(xe),zr=Br(Ie),Vr=Br(Jt),Wr=Br(tr),Gr=rr,Hr=sr,Kr=br,Qr=new qr.Logger("Chrome70"),Jr={OS:1024,MIS:1024};class Yr extends Gr.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Yr}get name(){return"Chrome70"}close(){if(Qr.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Qr.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=Ur.parse(t.sdp);return Vr.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Qr.debug("getNativeSctpCapabilities()"),{numStreams:Jr}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Qr.debug("run()"),this._direction=e,this._remoteSdp=new Hr.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:zr.getSendingRtpParameters("audio",d),video:zr.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:zr.getSendingRemoteRtpParameters("audio",d),video:zr.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...o},c),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){Qr.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Qr.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Qr.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Qr.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Qr.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Qr.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}){var n;this._assertSendDirection(),Qr.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=$r.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=zr.reduceCodecs(s.codecs,i);const a=$r.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=zr.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let d,p=await this._pc.createOffer(),l=Ur.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:l}),t&&t.length>1&&(Qr.debug("send() | enabling legacy simulcast"),l=Ur.parse(p.sdp),d=l.media[o.idx],Wr.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),p={type:"offer",sdp:Ur.write(l)});let u=!1;const h=(0,Kr.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&h.spatialLayers>1&&"video/vp9"===s.codecs[0].mimeType.toLowerCase()&&(Qr.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=Ur.parse(p.sdp),d=l.media[o.idx],Wr.addLegacySimulcast({offerMediaObject:d,numStreams:h.spatialLayers}),p={type:"offer",sdp:Ur.write(l)}),Qr.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p),t){Qr.debug("send() | applying given encodings");const e=c.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const i=e.encodings[r],n=t[r];if(!n)break;e.encodings[r]=Object.assign(i,n)}await c.sender.setParameters(e)}const f=c.mid;if(s.mid=f,l=Ur.parse(this._pc.localDescription.sdp),d=l.media[o.idx],s.rtcp.cname=Vr.getCname({offerMediaObject:d}),s.encodings=Wr.getRtpEncodings({offerMediaObject:d}),t)for(let e=0;e<s.encodings.length;++e)t[e]&&Object.assign(s.encodings[e],t[e]);if(u&&(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="S1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:s,answerRtpParameters:a,codecOptions:r});const m={type:"answer",sdp:this._remoteSdp.getSdp()};return Qr.debug("send() | calling pc.setRemoteDescription() [answer:%o]",m),await this._pc.setRemoteDescription(m),this._mapMidTransceiver.set(f,c),{localId:f,rtpParameters:s,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),Qr.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),this._remoteSdp.closeMediaSection(t.mid);const r=await this._pc.createOffer();Qr.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};Qr.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?Qr.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Qr.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(),Qr.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)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),Qr.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)}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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Qr.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Jr.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ur.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),Qr.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()};Qr.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[],i=new Map;for(const t of e){const{trackId:e,kind:r,rtpParameters:n}=t;Qr.debug("receive() [trackId:%s, kind:%s]",e,r);const s=n.mid||String(this._mapMidTransceiver.size);i.set(e,s),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Qr.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let s=await this._pc.createAnswer();const a=Ur.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,n=i.get(e),s=a.media.find((e=>String(e.mid)===n));Vr.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:Ur.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),Qr.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{trackId:e}=t,n=i.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),r.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),Qr.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};Qr.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();Qr.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}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}){var i;this._assertRecvDirection();const{streamId:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};Qr.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Qr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ur.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Qr.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ur.parse(this._pc.localDescription.sdp));const r=Vr.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}Ar.Chrome70=Yr;var Xr={},Zr={};Object.defineProperty(Zr,"__esModule",{value:!0}),Zr.addLegacySimulcast=Zr.getRtpEncodings=void 0,Zr.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,n]=t.ssrcs.split(/\s+/);e=Number(e),n=Number(n),r.has(e)&&(r.delete(e),r.delete(n),i.set(e,n))}for(const e of r)i.set(e,null);const n=[];for(const[e,t]of i){const r={ssrc:e};t&&(r.rtx={ssrc:t}),n.push(r)}return n},Zr.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let i,n,s;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(i=e.id,s=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&&(n=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),n&&d.push(n+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:`${s} ${t.id}`})}for(let r=0;r<d.length;++r){const i=c[r],n=d[r];e.ssrcs.push({id:n,attribute:"cname",value:o}),e.ssrcs.push({id:n,attribute:"msid",value:`${s} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${n}`})}};var ei=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),ti=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ri=Q&&Q.__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)&&ei(t,e,r);return ti(t,e),t};Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.Chrome67=void 0;const ii=ri(Nt),ni=_e,si=ri(xe),ai=ri(Ie),oi=ri(Jt),ci=ri(Zr),di=rr,pi=sr,li=new ni.Logger("Chrome67"),ui={OS:1024,MIS:1024};class hi extends di.HandlerInterface{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}static createFactory(){return()=>new hi}get name(){return"Chrome67"}close(){if(li.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){li.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=ii.parse(t.sdp);return oi.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return li.debug("getNativeSctpCapabilities()"),{numStreams:ui}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){li.debug("run()"),this._direction=e,this._remoteSdp=new pi.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:ai.getSendingRtpParameters("audio",d),video:ai.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ai.getSendingRemoteRtpParameters("audio",d),video:ai.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),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){li.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(li.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});li.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};li.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};li.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();li.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}){var n;this._assertSendDirection(),li.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&li.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,a=await this._pc.createOffer(),o=ii.parse(a.sdp);const c=si.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=ai.reduceCodecs(c.codecs);const d=si.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=ai.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(li.debug("send() | enabling simulcast"),o=ii.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),ci.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:ii.write(o)}),li.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=ii.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=oi.getCname({offerMediaObject:s}),c.encodings=ci.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<c.encodings.length;++e)t[e]&&Object.assign(c.encodings[e],t[e]);if(c.encodings.length>1&&"video/vp8"===c.codecs[0].mimeType.toLowerCase())for(const e of c.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};li.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const u=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,u),{localId:l,rtpParameters:c,rtpSender:u}}async stopSending(e){this._assertSendDirection(),li.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();li.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void li.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()};li.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?li.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):li.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(),li.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(),li.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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};li.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ui.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ii.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),li.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()};li.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i}=t;li.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:i.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};li.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=ii.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));oi.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:ii.write(s)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:s}),li.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{kind:e,trackId:i,rtpParameters:n}=t,s=i,a=e,o=this._pc.getReceivers().find((e=>e.track&&e.track.id===s));if(!o)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(s,{mid:a,rtpParameters:n,rtpReceiver:o}),r.push({localId:s,track:o.track,rtpReceiver:o})}return r}async stopReceiving(e){this._assertRecvDirection(),li.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const i={type:"offer",sdp:this._remoteSdp.getSdp()};li.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const n=await this._pc.createAnswer();li.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}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}){var i;this._assertRecvDirection();const{streamId:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};li.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};li.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ii.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}li.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ii.parse(this._pc.localDescription.sdp));const r=oi.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}Xr.Chrome67=hi;var fi={},mi=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),gi=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),yi=Q&&Q.__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)&&mi(t,e,r);return gi(t,e),t};Object.defineProperty(fi,"__esModule",{value:!0}),fi.Chrome55=void 0;const vi=yi(Nt),bi=_e,wi=De,_i=yi(xe),Si=yi(Ie),Ri=yi(Jt),ki=yi(Zr),Pi=rr,Ci=sr,Ti=new bi.Logger("Chrome55"),Ei={OS:1024,MIS:1024};class Di extends Pi.HandlerInterface{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}static createFactory(){return()=>new Di}get name(){return"Chrome55"}close(){if(Ti.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Ti.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=vi.parse(t.sdp);return Ri.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ti.debug("getNativeSctpCapabilities()"),{numStreams:Ei}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ti.debug("run()"),this._direction=e,this._remoteSdp=new Ci.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Si.getSendingRtpParameters("audio",d),video:Si.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Si.getSendingRemoteRtpParameters("audio",d),video:Si.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),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){Ti.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Ti.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ti.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ti.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ti.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ti.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}){var n;this._assertSendDirection(),Ti.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Ti.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,a=await this._pc.createOffer(),o=vi.parse(a.sdp);const c=_i.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=Si.reduceCodecs(c.codecs);const d=_i.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=Si.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Ti.debug("send() | enabling simulcast"),o=vi.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),ki.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:vi.write(o)}),Ti.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=vi.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=Ri.getCname({offerMediaObject:s}),c.encodings=ki.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<c.encodings.length;++e)t[e]&&Object.assign(c.encodings[e],t[e]);if(c.encodings.length>1&&"video/vp8"===c.codecs[0].mimeType.toLowerCase())for(const e of c.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};Ti.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:c}}async stopSending(e){this._assertSendDirection(),Ti.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();Ti.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Ti.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()};Ti.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){throw new wi.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new wi.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new wi.UnsupportedError("not supported")}async getSenderStats(e){throw new wi.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Ti.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ei.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=vi.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),Ti.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()};Ti.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i}=t;Ti.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r,s=i.rtcp.cname;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:s,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};Ti.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=vi.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));Ri.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:vi.write(s)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:s}),Ti.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{kind:e,trackId:i,rtpParameters:n}=t,s=e,a=i,o=n.rtcp.cname,c=this._pc.getRemoteStreams().find((e=>e.id===o)),d=c.getTrackById(a);if(!d)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:s,rtpParameters:n}),r.push({localId:a,track:d})}return r}async stopReceiving(e){this._assertRecvDirection(),Ti.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const i={type:"offer",sdp:this._remoteSdp.getSdp()};Ti.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const n=await this._pc.createAnswer();Ti.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new wi.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};Ti.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ti.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=vi.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Ti.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=vi.parse(this._pc.localDescription.sdp));const r=Ri.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}fi.Chrome55=Di;var Mi={},Oi=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),xi=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ii=Q&&Q.__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)&&Oi(t,e,r);return xi(t,e),t};Object.defineProperty(Mi,"__esModule",{value:!0}),Mi.Firefox60=void 0;const Li=Ii(Nt),ji=_e,Ai=De,Fi=Ii(xe),Ni=Ii(Ie),Bi=Ii(Jt),Ui=Ii(tr),qi=rr,$i=sr,zi=new ji.Logger("Firefox60"),Vi={OS:16,MIS:2048};class Wi extends qi.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new Wi}get name(){return"Firefox60"}close(){if(zi.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){zi.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"}),n=i.sender.getParameters(),s=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];n.encodings=s,await i.sender.setParameters(n);const a=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const o=Li.parse(a.sdp);return Bi.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 zi.debug("getNativeSctpCapabilities()"),{numStreams:Vi}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){zi.debug("run()"),this._direction=e,this._remoteSdp=new $i.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Ni.getSendingRtpParameters("audio",d),video:Ni.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ni.getSendingRemoteRtpParameters("audio",d),video:Ni.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),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){throw new Ai.UnsupportedError("not supported")}async restartIce(e){if(zi.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});zi.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};zi.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};zi.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();zi.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(),zi.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=Fi.clone(t,[])).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const n=Fi.clone(this._sendingRtpParametersByKind[e.kind],{});n.codecs=Ni.reduceCodecs(n.codecs,i);const s=Fi.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});s.codecs=Ni.reduceCodecs(s.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=Li.parse(o.sdp);this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:c}),zi.debug("send() | calling pc.setLocalDescription() [offer:%o]",o),await this._pc.setLocalDescription(o);const d=a.mid;n.mid=d,c=Li.parse(this._pc.localDescription.sdp);const p=c.media[c.media.length-1];if(n.rtcp.cname=Bi.getCname({offerMediaObject:p}),t)if(1===t.length){const e=Ui.getRtpEncodings({offerMediaObject:p});Object.assign(e[0],t[0]),n.encodings=e}else n.encodings=t.reverse();else n.encodings=Ui.getRtpEncodings({offerMediaObject:p});if(n.encodings.length>1&&("video/vp8"===n.codecs[0].mimeType.toLowerCase()||"video/h264"===n.codecs[0].mimeType.toLowerCase()))for(const e of n.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:p,offerRtpParameters:n,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const l={type:"answer",sdp:this._remoteSdp.getSdp()};return zi.debug("send() | calling pc.setRemoteDescription() [answer:%o]",l),await this._pc.setRemoteDescription(l),this._mapMidTransceiver.set(d,a),{localId:d,rtpParameters:n,rtpSender:a.sender}}async stopSending(e){zi.debug("stopSending() [localId:%s]",e);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();zi.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};zi.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?zi.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):zi.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(),zi.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)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),zi.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)}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:n}){this._assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};zi.debug("sendDataChannel() [options:%o]",s);const a=this._pc.createDataChannel(i,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Vi.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Li.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:t}),zi.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()};zi.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:a,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this._assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:i,rtpParameters:n}=t;zi.debug("receive() [trackId:%s, kind:%s]",e,i);const s=n.mid||String(this._mapMidTransceiver.size);r.set(e,s),this._remoteSdp.receive({mid:s,kind:i,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};zi.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=Li.parse(n.sdp);for(const t of e){const{trackId:e,rtpParameters:i}=t,a=r.get(e),o=s.media.find((e=>String(e.mid)===a));Bi.applyCodecParameters({offerRtpParameters:i,answerMediaObject:o}),n={type:"answer",sdp:Li.write(s)}}this._transportReady||await this._setupTransport({localDtlsRole:"client",localSdpObject:s}),zi.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const i of e){const{trackId:e}=i,n=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),t.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){this._assertRecvDirection(),zi.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};zi.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();zi.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),zi.debug("pauseReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive";const r={type:"offer",sdp:this._remoteSdp.getSdp()};zi.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();zi.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),zi.debug("resumeReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="recvonly";const r={type:"offer",sdp:this._remoteSdp.getSdp()};zi.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();zi.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}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:n,maxPacketLifeTime:s,maxRetransmits:a}=e,o={negotiated:!0,id:i,ordered:n,maxPacketLifeTime:s,maxRetransmits:a,protocol:r};zi.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()};zi.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Li.parse(t.sdp);await this._setupTransport({localDtlsRole:"client",localSdpObject:e})}zi.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=Li.parse(this._pc.localDescription.sdp));const r=Bi.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}Mi.Firefox60=Wi;var Gi={},Hi=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Ki=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Qi=Q&&Q.__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)&&Hi(t,e,r);return Ki(t,e),t};Object.defineProperty(Gi,"__esModule",{value:!0}),Gi.Safari12=void 0;const Ji=Qi(Nt),Yi=_e,Xi=Qi(xe),Zi=Qi(Ie),en=Qi(Jt),tn=Qi(tr),rn=rr,nn=sr,sn=new Yi.Logger("Safari12"),an={OS:1024,MIS:1024};class on extends rn.HandlerInterface{constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}static createFactory(){return()=>new on}get name(){return"Safari12"}close(){if(sn.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){sn.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=Ji.parse(t.sdp);return en.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return sn.debug("getNativeSctpCapabilities()"),{numStreams:an}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){sn.debug("run()"),this._direction=e,this._remoteSdp=new nn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n}),this._sendingRtpParametersByKind={audio:Zi.getSendingRtpParameters("audio",d),video:Zi.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Zi.getSendingRemoteRtpParameters("audio",d),video:Zi.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),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){sn.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(sn.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});sn.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};sn.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};sn.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();sn.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}){var n;this._assertSendDirection(),sn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const s=Xi.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=Zi.reduceCodecs(s.codecs,i);const a=Xi.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});a.codecs=Zi.reduceCodecs(a.codecs,i);const o=this._remoteSdp.getNextMediaSectionIdx(),c=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let d,p=await this._pc.createOffer(),l=Ji.parse(p.sdp);this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:l}),t&&t.length>1&&(sn.debug("send() | enabling legacy simulcast"),l=Ji.parse(p.sdp),d=l.media[o.idx],tn.addLegacySimulcast({offerMediaObject:d,numStreams:t.length}),p={type:"offer",sdp:Ji.write(l)}),sn.debug("send() | calling pc.setLocalDescription() [offer:%o]",p),await this._pc.setLocalDescription(p);const u=c.mid;if(s.mid=u,l=Ji.parse(this._pc.localDescription.sdp),d=l.media[o.idx],s.rtcp.cname=en.getCname({offerMediaObject:d}),s.encodings=tn.getRtpEncodings({offerMediaObject:d}),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="S1T3";this._remoteSdp.send({offerMediaObject:d,reuseMid:o.reuseMid,offerRtpParameters:s,answerRtpParameters:a,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return sn.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(u,c),{localId:u,rtpParameters:s,rtpSender:c.sender}}async stopSending(e){this._assertSendDirection(),sn.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),this._remoteSdp.closeMediaSection(t.mid);const r=await this._pc.createOffer();sn.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const i={type:"answer",sdp:this._remoteSdp.getSdp()};sn.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._mapMidTransceiver.delete(e)}async replaceTrack(e,t){this._assertSendDirection(),t?sn.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):sn.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(),sn.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)}async setRtpEncodingParameters(e,t){this._assertSendDirection(),sn.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)}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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};sn.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%an.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ji.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),sn.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()};sn.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[],i=new Map;for(const t of e){const{trackId:e,kind:r,rtpParameters:n}=t;sn.debug("receive() [trackId:%s, kind:%s]",e,r);const s=n.mid||String(this._mapMidTransceiver.size);i.set(e,s),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:n.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};sn.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let s=await this._pc.createAnswer();const a=Ji.parse(s.sdp);for(const t of e){const{trackId:e,rtpParameters:r}=t,n=i.get(e),s=a.media.find((e=>String(e.mid)===n));en.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}s={type:"answer",sdp:Ji.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),sn.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{trackId:e}=t,n=i.get(e),s=this._pc.getTransceivers().find((e=>e.mid===n));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(n,s),r.push({localId:n,track:s.receiver.track,rtpReceiver:s.receiver})}return r}async stopReceiving(e){this._assertRecvDirection(),sn.debug("stopReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(t.mid);const r={type:"offer",sdp:this._remoteSdp.getSdp()};sn.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();sn.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i),this._mapMidTransceiver.delete(e)}async pauseReceiving(e){this._assertRecvDirection(),sn.debug("pauseReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive";const r={type:"offer",sdp:this._remoteSdp.getSdp()};sn.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();sn.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}async resumeReceiving(e){this._assertRecvDirection(),sn.debug("resumeReceiving() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="recvonly";const r={type:"offer",sdp:this._remoteSdp.getSdp()};sn.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);const i=await this._pc.createAnswer();sn.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i)}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}){var i;this._assertRecvDirection();const{streamId:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};sn.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};sn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ji.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}sn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ji.parse(this._pc.localDescription.sdp));const r=en.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}Gi.Safari12=on;var cn={},dn=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),pn=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ln=Q&&Q.__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)&&dn(t,e,r);return pn(t,e),t};Object.defineProperty(cn,"__esModule",{value:!0}),cn.Safari11=void 0;const un=ln(Nt),hn=_e,fn=ln(xe),mn=ln(Ie),gn=ln(Jt),yn=ln(Zr),vn=rr,bn=sr,wn=new hn.Logger("Safari11"),_n={OS:1024,MIS:1024};class Sn extends vn.HandlerInterface{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}static createFactory(){return()=>new Sn}get name(){return"Safari11"}close(){if(wn.debug("close()"),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){wn.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=un.parse(t.sdp);return gn.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return wn.debug("getNativeSctpCapabilities()"),{numStreams:_n}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){wn.debug("run()"),this._direction=e,this._remoteSdp=new bn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:mn.getSendingRtpParameters("audio",d),video:mn.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:mn.getSendingRemoteRtpParameters("audio",d),video:mn.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...o},c),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){wn.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(wn.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});wn.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};wn.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};wn.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();wn.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}){var n;this._assertSendDirection(),wn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&wn.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let s,a=await this._pc.createOffer(),o=un.parse(a.sdp);const c=fn.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=mn.reduceCodecs(c.codecs);const d=fn.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=mn.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(wn.debug("send() | enabling simulcast"),o=un.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),yn.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:un.write(o)}),wn.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=un.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=gn.getCname({offerMediaObject:s}),c.encodings=yn.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<c.encodings.length;++e)t[e]&&Object.assign(c.encodings[e],t[e]);if(c.encodings.length>1&&"video/vp8"===c.codecs[0].mimeType.toLowerCase())for(const e of c.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};wn.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const u=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,u),{localId:l,rtpParameters:c,rtpSender:u}}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();wn.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void wn.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()};wn.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){this._assertSendDirection(),t?wn.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):wn.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(),wn.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(),wn.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:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:n};wn.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%_n.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=un.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),wn.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()};wn.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:i}=t;wn.debug("receive() [trackId:%s, kind:%s]",e,r);const n=r;this._remoteSdp.receive({mid:n,kind:r,offerRtpParameters:i,streamId:i.rtcp.cname,trackId:e})}const i={type:"offer",sdp:this._remoteSdp.getSdp()};wn.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);let n=await this._pc.createAnswer();const s=un.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=s.media.find((e=>String(e.mid)===i));gn.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}n={type:"answer",sdp:un.write(s)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:s}),wn.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const t of e){const{kind:e,trackId:i,rtpParameters:n}=t,s=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:s,rtpParameters:n,rtpReceiver:o}),r.push({localId:a,track:o.track,rtpReceiver:o})}return r}async stopReceiving(e){this._assertRecvDirection(),wn.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const i={type:"offer",sdp:this._remoteSdp.getSdp()};wn.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const n=await this._pc.createAnswer();wn.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}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}){var i;this._assertRecvDirection();const{streamId:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o,protocol:r};wn.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};wn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=un.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}wn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=un.parse(this._pc.localDescription.sdp));const r=gn.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}cn.Safari11=Sn;var Rn={},kn={},Pn=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Cn=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Tn=Q&&Q.__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)&&Pn(t,e,r);return Cn(t,e),t};Object.defineProperty(kn,"__esModule",{value:!0}),kn.mangleRtpParameters=kn.getCapabilities=void 0;const En=Tn(xe);kn.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=En.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},kn.mangleRtpParameters=function(e){const t=En.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 Dn=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),Mn=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),On=Q&&Q.__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)&&Dn(t,e,r);return Mn(t,e),t};Object.defineProperty(Rn,"__esModule",{value:!0}),Rn.Edge11=void 0;const xn=_e,In=De,Ln=On(xe),jn=On(Ie),An=On(kn),Fn=rr,Nn=new xn.Logger("Edge11");class Bn extends Fn.HandlerInterface{constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}static createFactory(){return()=>new Bn}get name(){return"Edge11"}close(){Nn.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){}}async getNativeRtpCapabilities(){return Nn.debug("getNativeRtpCapabilities()"),An.getCapabilities()}async getNativeSctpCapabilities(){return Nn.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Nn.debug("run()"),this._sendingRtpParametersByKind={audio:jn.getSendingRtpParameters("audio",d),video:jn.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=i,this._cname=`CNAME-${Ln.generateRandomNumber()}`,this._setIceGatherer({iceServers:s,iceTransportPolicy:a}),this._setIceTransport(),this._setDtlsTransport()}async updateIceServers(e){throw new In.UnsupportedError("not supported")}async restartIce(e){if(Nn.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){Nn.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}){Nn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this._setupTransport({localDtlsRole:"server"}),Nn.debug("send() | calling new RTCRtpSender()");const n=new RTCRtpSender(e,this._dtlsTransport),s=Ln.clone(this._sendingRtpParametersByKind[e.kind],{});s.codecs=jn.reduceCodecs(s.codecs,i);const a=s.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=Ln.generateRandomNumber(),a&&(e.rtx={ssrc:Ln.generateRandomNumber()});s.encodings=t,s.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const o=An.mangleRtpParameters(s);Nn.debug("send() | calling rtpSender.send() [params:%o]",o),await n.send(o);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,n),{localId:c,rtpParameters:s,rtpSender:n}}async stopSending(e){Nn.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{Nn.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw Nn.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async replaceTrack(e,t){t?Nn.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Nn.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){Nn.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){Nn.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 In.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;Nn.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:n}=r;Nn.debug("receive() | calling new RTCRtpReceiver()");const s=new RTCRtpReceiver(this._dtlsTransport,i);s.addEventListener("error",(e=>{Nn.error('rtpReceiver "error" event [event:%o]',e)}));const a=An.mangleRtpParameters(n);Nn.debug("receive() | calling rtpReceiver.receive() [params:%o]",a),await s.receive(a);const o=e;this._rtpReceivers.set(o,s),t.push({localId:o,track:s.track,rtpReceiver:s})}return t}async stopReceiving(e){Nn.debug("stopReceiving() [localId:%s]",e);const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(e);try{Nn.debug("stopReceiving() | calling rtpReceiver.stop()"),t.stop()}catch(e){Nn.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 In.UnsupportedError("not implemented")}_setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{Nn.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){Nn.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=>{Nn.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}_setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{Nn.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{Nn.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{Nn.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async _setupTransport({localDtlsRole:e}){Nn.debug("_setupTransport()");const t=this._dtlsTransport.getLocalParameters();t.role=e,await this.safeEmitAsPromise("@connect",{dtlsParameters:t}),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}}Rn.Edge11=Bn;var Un={},qn=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),$n=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),zn=Q&&Q.__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)&&qn(t,e,r);return $n(t,e),t};Object.defineProperty(Un,"__esModule",{value:!0}),Un.ReactNative=void 0;const Vn=zn(Nt),Wn=_e,Gn=De,Hn=zn(xe),Kn=zn(Ie),Qn=zn(Jt),Jn=zn(Zr),Yn=rr,Xn=sr,Zn=new Wn.Logger("ReactNative"),es={OS:1024,MIS:1024};class ts extends Yn.HandlerInterface{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}static createFactory(){return()=>new ts}get name(){return"ReactNative"}close(){if(Zn.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}}async getNativeRtpCapabilities(){Zn.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=Vn.parse(t.sdp);return Qn.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Zn.debug("getNativeSctpCapabilities()"),{numStreams:es}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,extendedRtpCapabilities:d}){Zn.debug("run()"),this._direction=e,this._remoteSdp=new Xn.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,planB:!0}),this._sendingRtpParametersByKind={audio:Kn.getSendingRtpParameters("audio",d),video:Kn.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Kn.getSendingRemoteRtpParameters("audio",d),video:Kn.getSendingRemoteRtpParameters("video",d)},i.role&&"auto"!==i.role&&(this._forcedLocalDtlsRole="server"===i.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:a||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...o},c),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){Zn.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Zn.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Zn.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Zn.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Zn.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Zn.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}){var n;this._assertSendDirection(),Zn.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),i&&Zn.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let s,a=await this._pc.createOffer(),o=Vn.parse(a.sdp);const c=Hn.clone(this._sendingRtpParametersByKind[e.kind],{});c.codecs=Kn.reduceCodecs(c.codecs);const d=Hn.clone(this._sendingRemoteRtpParametersByKind[e.kind],{});if(d.codecs=Kn.reduceCodecs(d.codecs),this._transportReady||await this._setupTransport({localDtlsRole:null!==(n=this._forcedLocalDtlsRole)&&void 0!==n?n:"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Zn.debug("send() | enabling simulcast"),o=Vn.parse(a.sdp),s=o.media.find((e=>"video"===e.type)),Jn.addLegacySimulcast({offerMediaObject:s,track:e,numStreams:t.length}),a={type:"offer",sdp:Vn.write(o)}),Zn.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a),o=Vn.parse(this._pc.localDescription.sdp),s=o.media.find((t=>t.type===e.kind)),c.rtcp.cname=Qn.getCname({offerMediaObject:s}),c.encodings=Jn.getRtpEncodings({offerMediaObject:s,track:e}),t)for(let e=0;e<c.encodings.length;++e)t[e]&&Object.assign(c.encodings[e],t[e]);if(c.encodings.length>1&&("video/vp8"===c.codecs[0].mimeType.toLowerCase()||"video/h264"===c.codecs[0].mimeType.toLowerCase()))for(const e of c.encodings)e.scalabilityMode="S1T3";this._remoteSdp.send({offerMediaObject:s,offerRtpParameters:c,answerRtpParameters:d,codecOptions:r});const p={type:"answer",sdp:this._remoteSdp.getSdp()};Zn.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:c}}async stopSending(e){this._assertSendDirection(),Zn.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();Zn.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Zn.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()};Zn.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i)}async replaceTrack(e,t){throw new Gn.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Gn.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Gn.UnsupportedError("not implemented")}async getSenderStats(e){throw new Gn.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:i,protocol:n}){var s;this._assertSendDirection();const a={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:n};Zn.debug("sendDataChannel() [options:%o]",a);const o=this._pc.createDataChannel(i,a);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%es.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Vn.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this._setupTransport({localDtlsRole:null!==(s=this._forcedLocalDtlsRole)&&void 0!==s?s:"client",localSdpObject:t}),Zn.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()};Zn.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",i),await this._pc.setRemoteDescription(i),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:a.id,ordered:a.ordered,maxPacketLifeTime:a.maxPacketLifeTime,maxRetransmits:a.maxRetransmits}}}async receive(e){var t;this._assertRecvDirection();const r=[],i=new Map;for(const t of e){const{trackId:e,kind:r,rtpParameters:n}=t;Zn.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;let a=n.rtcp.cname;Zn.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),a+=`-hack-${Hn.generateRandomNumber()}`,i.set(e,a),this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:a,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Zn.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let s=await this._pc.createAnswer();const a=Vn.parse(s.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,i=e,n=a.media.find((e=>String(e.mid)===i));Qn.applyCodecParameters({offerRtpParameters:r,answerMediaObject:n})}s={type:"answer",sdp:Vn.write(a)},this._transportReady||await this._setupTransport({localDtlsRole:null!==(t=this._forcedLocalDtlsRole)&&void 0!==t?t:"client",localSdpObject:a}),Zn.debug("receive() | calling pc.setLocalDescription() [answer:%o]",s),await this._pc.setLocalDescription(s);for(const t of e){const{kind:e,trackId:n,rtpParameters:s}=t,a=n,o=e,c=i.get(n),d=this._pc.getRemoteStreams().find((e=>e.id===c)),p=d.getTrackById(a);if(!p)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(a,{mid:o,rtpParameters:s}),r.push({localId:a,track:p})}return r}async stopReceiving(e){this._assertRecvDirection(),Zn.debug("stopReceiving() [localId:%s]",e);const{mid:t,rtpParameters:r}=this._mapRecvLocalIdInfo.get(e)||{};this._mapRecvLocalIdInfo.delete(e),this._remoteSdp.planBStopReceiving({mid:t,offerRtpParameters:r});const i={type:"offer",sdp:this._remoteSdp.getSdp()};Zn.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",i),await this._pc.setRemoteDescription(i);const n=await this._pc.createAnswer();Zn.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Gn.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){var i;this._assertRecvDirection();const{streamId:n,ordered:s,maxPacketLifeTime:a,maxRetransmits:o}=e,c={negotiated:!0,id:n,ordered:s,maxPacketLifeTime:a,maxRetransmitTime:a,maxRetransmits:o,protocol:r};Zn.debug("receiveDataChannel() [options:%o]",c);const d=this._pc.createDataChannel(t,c);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Zn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Vn.parse(t.sdp);await this._setupTransport({localDtlsRole:null!==(i=this._forcedLocalDtlsRole)&&void 0!==i?i:"client",localSdpObject:e})}Zn.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:d}}async _setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Vn.parse(this._pc.localDescription.sdp));const r=Qn.extractDtlsParameters({sdpObject:t});r.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await this.safeEmitAsPromise("@connect",{dtlsParameters:r}),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')}}Un.ReactNative=ts;var rs=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),is=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ns=Q&&Q.__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)&&rs(t,e,r);return is(t,e),t},ss=Q&&Q.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(be,"__esModule",{value:!0}),be.Device=be.detectDevice=void 0;const as=ss(we.exports),os=_e,cs=Pe,ds=De,ps=ns(xe),ls=ns(Ie),us=Ze,hs=Ft,fs=Ar,ms=Xr,gs=fi,ys=Mi,vs=Gi,bs=cn,ws=Rn,_s=Un,Ss=new os.Logger("Device");function Rs(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return"undefined"==typeof RTCPeerConnection?void Ss.warn("this._detectDevice() | unsupported ReactNative without RTCPeerConnection"):(Ss.debug("this._detectDevice() | ReactNative handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)Ss.warn("this._detectDevice() | unknown device");else{const e=navigator.userAgent,t=as.default.getParser(e),r=t.getEngine();if(t.satisfies({chrome:">=74",chromium:">=74","microsoft edge":">=88"}))return"Chrome74";if(t.satisfies({chrome:">=70",chromium:">=70"}))return"Chrome70";if(t.satisfies({chrome:">=67",chromium:">=67"}))return"Chrome67";if(t.satisfies({chrome:">=55",chromium:">=55"}))return"Chrome55";if(t.satisfies({firefox:">=60"}))return"Firefox60";if(t.satisfies({ios:{OS:">=14.3",firefox:">=30.0"}}))return"Safari12";if(t.satisfies({safari:">=12.0"})&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(t.satisfies({safari:">=11"}))return"Safari11";if(t.satisfies({"microsoft edge":">=11"})&&t.satisfies({"microsoft edge":"<=18"}))return"Edge11";if(r.name&&"blink"===r.name.toLowerCase()){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome74"}Ss.warn("this._detectDevice() | browser not supported [name:%s, version:%s]",t.getBrowserName(),t.getBrowserVersion())}}be.detectDevice=Rs;be.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new cs.EnhancedEventEmitter,Ss.debug("constructor()"),r){if(Ss.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)Ss.debug("constructor() | handler given: %s",e);else{if(!(e=Rs()))throw new ds.UnsupportedError("device not supported");Ss.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome74":this._handlerFactory=hs.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=fs.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=ms.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=gs.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=ys.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=vs.Safari12.createFactory();break;case"Safari11":this._handlerFactory=bs.Safari11.createFactory();break;case"Edge11":this._handlerFactory=ws.Edge11.createFactory();break;case"ReactNative":this._handlerFactory=_s.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 ds.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new ds.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;Ss.debug("load() [routerRtpCapabilities:%o]",e),e=ps.clone(e,void 0);try{if(this._loaded)throw new ds.InvalidStateError("already loaded");ls.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();Ss.debug("load() | got native RTP capabilities:%o",r),ls.validateRtpCapabilities(r),this._extendedRtpCapabilities=ls.getExtendedRtpCapabilities(r,e),Ss.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=ls.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=ls.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=ls.getRecvRtpCapabilities(this._extendedRtpCapabilities),ls.validateRtpCapabilities(this._recvRtpCapabilities),Ss.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),Ss.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),ls.validateSctpCapabilities(this._sctpCapabilities),Ss.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new ds.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:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d={}}){return Ss.debug("createSendTransport()"),this._createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d={}}){return Ss.debug("createRecvTransport()"),this._createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:i,sctpParameters:n,iceServers:s,iceTransportPolicy:a,additionalSettings:o,proprietaryConstraints:c,appData:d})}_createTransport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p={}}){if(!this._loaded)throw new ds.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 n)throw new TypeError("missing dtlsParameters");if(s&&"object"!=typeof s)throw new TypeError("wrong sctpParameters");if(p&&"object"!=typeof p)throw new TypeError("if given, appData must be an object");const l=new us.Transport({direction:e,id:t,iceParameters:r,iceCandidates:i,dtlsParameters:n,sctpParameters:s,iceServers:a,iceTransportPolicy:o,additionalSettings:c,proprietaryConstraints:d,appData:p,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",l),l}};var ks={},Ps={};Object.defineProperty(Ps,"__esModule",{value:!0});var Cs,Ts,Es,Ds,Ms,Os={};Object.defineProperty(Os,"__esModule",{value:!0}),function(e){var t=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Q&&Q.__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(be,e),r(Ze,e),r(rt,e),r(ot,e),r(ut,e),r(yt,e),r(Ps,e),r(Os,e),r(rr,e),r(De,e)}(ks),function(e){var t=Q&&Q.__createBinding||(Object.create?function(e,t,r,i){void 0===i&&(i=r),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,i){void 0===i&&(i=r),e[i]=t[r]}),r=Q&&Q.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=Q&&Q.__importStar||function(e){if(e&&e.__esModule)return e;var i={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&t(i,e,n);return r(i,e),i},n=Q&&Q.__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 s=n(de.exports);e.debug=s.default;const a=be;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(ks);e.types=o,e.version="3.6.50";var c=br;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return c.parse}})}(ce);class xs{constructor(e){this.score=10,this.producerScore=10,this.spatialLayers=0,this.temporalLayers=0,this.currentSpatialLayer=0,this.currentTemporalLayer=0,this.availableSpatialLayers=[],this.id=e.id,this.kind=e.kind,this.producerId=e.producerId,this.appData=e.appData,this.consumer=e,this.logger=new ae("PeerConsumer"),this.currentMaxSpatialLayer=this.appData.producerData.maxSpatialLayer,this.parseScalabilityMode(),this.setSpatialLayersParams(),this.setCurrentSpatialLayerParams()}get paused(){return this.consumer.paused}pause(){return this.consumer.pause()}resume(){return this.consumer.resume()}close(){return this.consumer.close()}get isVideo(){return"video"===this.kind}get isAudio(){return"audio"===this.kind}parseScalabilityMode(){if(this.consumer.rtpParameters.encodings){const{scalabilityMode:e}=this.consumer.rtpParameters.encodings[0],{spatialLayers:t,temporalLayers:r}=ce.parseScalabilityMode(e);this.spatialLayers=t,this.temporalLayers=r,this.logger.debug("parseScalabilityMode()",{scalabilityMode:e,spatialLayers:t,temporalLayers:r})}}setSpatialLayersParams(){const{encodings:e}=this.appData.producerData;e&&(this.availableSpatialLayers=e.map((e=>this.parseSpatialLayerParams(e))))}setCurrentSpatialLayerParams(){const{encodings:e}=this.appData.producerData;e&&(this.currentSpatialLayerParams=this.parseSpatialLayerParams(e[this.currentSpatialLayer]),this.logger.debug("setCurrentSpatialLayerParams()",{currentSpatialLayerParams:this.currentSpatialLayerParams}))}parseSpatialLayerParams(e){const{trackTransformParams:t}=this.appData.producerData;if(!t)return e;const{width:r,height:i}=t,n=e.scaleResolutionDownBy||1;return r&&i?Object.assign({width:r/n,height:i/n},e):e}setCurrentSpatialLayer(e){if(!this.isVideo)throw new Error("setCurrentSpatialLayer applies to video consumers only");this.currentSpatialLayer=e,this.logger.debug("setCurrentSpatialLayer()",{currentSpatialLayer:e}),this.setCurrentSpatialLayerParams()}setCurrentTemporalLayer(e){if(!this.isVideo)throw new Error("setCurrentTemporalLayer applies to video consumers only");this.currentTemporalLayer=e,this.logger.debug("setCurrentTemporalLayer()",{currentTemporalLayer:e})}setRequestedSpatialLayer(e){this.requestedSpatialLayer=e}setCurrentMaxSpatialLayer(e){this.currentMaxSpatialLayer=e}}class Is{constructor(e){this.label=n.Unknown,Cs.set(this,void 0),Ts.set(this,new ae("PeerTrack")),Es.set(this,void 0),Ds.set(this,void 0),this.mediaStreamTrack=e.mediaStreamTrack,this.label=e.label,this.consumer=e.consumer,c(this,Cs,e.engine,"f"),c(this,Es,e.peerEventEmitter,"f"),c(this,Ds,e.isPaused,"f"),o(this,Es,"f").safeEmit(S,this)}get isPaused(){return o(this,Ds,"f")}get consumerId(){var e;return null===(e=this.consumer)||void 0===e?void 0:e.id}get currentSpatialLayer(){var e;return(null===(e=this.consumer)||void 0===e?void 0:e.currentSpatialLayer)||0}close(){var e;null===(e=this.consumer)||void 0===e||e.close(),o(this,Es,"f").safeEmit(R,this)}pause(){return a(this,void 0,void 0,(function*(){if(!this.consumer)return c(this,Ds,!0,"f"),void o(this,Es,"f").safeEmit(k,this);if(o(this,Ds,"f"))o(this,Ts,"f").debug("pause()",{message:"Already paused",peer:this,consumer:this.consumer});else try{yield this.pauseRemoteConsumer(this.consumer.id),this.consumer.pause(),c(this,Ds,!0,"f"),o(this,Es,"f").safeEmit(k,this),o(this,Ts,"f").debug("pause()",{peer:this,consumer:this.consumer})}catch(e){o(this,Ts,"f").warn("pause()",e)}}))}resume(){return a(this,void 0,void 0,(function*(){if(!this.consumer)return c(this,Ds,!1,"f"),void o(this,Es,"f").safeEmit(P,this);if(o(this,Ds,"f"))try{yield this.resumeRemoteConsumer(this.consumer.id),this.consumer.resume(),c(this,Ds,!1,"f"),o(this,Es,"f").safeEmit(P,this),o(this,Ts,"f").debug("resume()",{peer:this})}catch(e){o(this,Ts,"f").warn("resume()",e)}else o(this,Ts,"f").debug("resume()",{message:"Already playing",peer:this,consumer:this.consumer})}))}setPriority(e){return a(this,void 0,void 0,(function*(){this.consumer&&(yield this.setConsumerPriority({consumerId:this.consumer.id,priority:e}))}))}setConsumerPriority(e){return a(this,void 0,void 0,(function*(){try{yield o(this,Cs,"f").network.socket.request(U,e),o(this,Ts,"f").debug("setConsumerPriority()",{peer:this,params:e})}catch(t){throw o(this,Ts,"f").error("setConsumerPriority()",{peer:this,params:e}),new Error("Can`t change stream priority")}}))}pauseRemoteConsumer(e){return a(this,void 0,void 0,(function*(){return o(this,Cs,"f").network.socket.request(A,{consumerId:e})}))}resumeRemoteConsumer(e){return a(this,void 0,void 0,(function*(){return o(this,Cs,"f").network.socket.request(F,{consumerId:e})}))}requestVideoPreferredLayers({spatialLayer:e,temporalLayer:t}){return a(this,void 0,void 0,(function*(){if(this.consumer)try{if(this.consumer.isAudio)return void o(this,Ts,"f").warn("requestVideoPreferredLayers()",{message:"Only video consumers support"});if(e===this.consumer.currentSpatialLayer)return;if(e>this.consumer.spatialLayers)return void o(this,Ts,"f").warn("requestVideoPreferredLayers()",{message:"Invalid spatial layer"});if(e>this.consumer.currentMaxSpatialLayer)return void(yield this.requestMaxSpatialLayer(this.consumer.id,e));yield o(this,Cs,"f").network.socket.request(B,{consumerId:this.consumer.id,spatialLayer:e,temporalLayer:t}),o(this,Ts,"f").debug("requestVideoPreferredLayers()",{peer:this,consumer:this.consumer,spatialLayer:e,temporalLayer:t})}catch(e){throw o(this,Ts,"f").error("requestVideoPreferredLayers()",{peer:this,consumerId:this.consumer.id,error:e}),new Error("Error request preferred layers")}}))}getVideoAvailableLayers(){if(this.consumer){if(!this.consumer.isAudio)return this.consumer.availableSpatialLayers;o(this,Ts,"f").warn("getVideoAvailableLayers()",{message:"Only video consumers support"})}}requestMaxSpatialLayer(e,t){return a(this,void 0,void 0,(function*(){try{if(!this.consumer)return;if(this.consumer.isAudio||0===this.consumer.spatialLayers||this.consumer.currentMaxSpatialLayer===t||t<this.consumer.currentMaxSpatialLayer)return void o(this,Ts,"f").warn("requestMaxSpatialLayer()",{message:"Can`t request this spatial layer",consumerId:e,spatialLayer:t});this.consumer.setRequestedSpatialLayer(t),yield o(this,Cs,"f").network.socket.request(I,{producerId:this.consumer.producerId,spatialLayer:t}),o(this,Ts,"f").debug("requestMaxSpatialLayer()",{consumerId:e,spatialLayer:t})}catch(r){o(this,Ts,"f").warn("requestMaxSpatialLayer()",{message:"Error request spatial layer",consumerId:e,spatialLayer:t,error:r})}}))}}Cs=new WeakMap,Ts=new WeakMap,Es=new WeakMap,Ds=new WeakMap,function(e){e[e.BAD=4]="BAD",e[e.MEDIUM=6]="MEDIUM",e[e.GOOD=10]="GOOD"}(Ms||(Ms={}));class Ls{constructor({id:e,channelIds:t,appId:r,loginDate:n=new Date,producers:s=[],engine:a,appData:o,uid:c,role:p}){this.producers=new Map,this.tracks=new Map,this._observer=new d,this.incomingConnectionQuality=i.GOOD,this.outgoingConnectionQuality=i.GOOD,this.overallConnectionQuality=i.GOOD,this.id=e,this.channelIds=t,this.appId=r,this.loginDate=n,this.appData=o||{},this.uid=c,this.role=p,this.engine=a,this.logger=new ae("Peer"),s.forEach(this.handleNewProducer.bind(this)),this.handlePeerEvents()}get observer(){return this._observer}get isMe(){return this.id===this.engine.mySocketId}get publishedMedia(){return Array.from(this.producers.values()).map((e=>({producerId:e.id,kind:e.kind,label:e.label})))}subscribe(e){return a(this,void 0,void 0,(function*(){const t=this.producers.get(e);if(!t)return void this.logger.warn("subscribe()",{message:"Peer does not have a producer",peer:this,producerId:e});this.getAllConsumers().find((t=>t.producerId===e))?this.logger.warn("subscribe()",{message:"Already subscribed to producer",peer:this,producerId:e}):yield this.createConsumer(t)}))}createConsumer(e){return a(this,void 0,void 0,(function*(){const t=this.engine.network.receiveTransport;if(!t)throw this.logger.error("createConsumer()","missing receiveTransport"),new Error("Client not initialized");try{const r=yield this.engine.network.socket.request(L,{producerId:e.id,transportId:t.id,rtpCapabilities:this.engine.media.mediasoupDevice.rtpCapabilities,appData:{peerId:this.engine.mySocketId,appId:this.engine.appId,channelId:this.engine.channelId},producerPeerId:this.id}),i=yield t.consume(r);r.producerPaused||(yield this.engine.network.socket.request(F,{consumerId:i.id})),this.logger.debug(`Subscribed for ${e.kind}`,{peer:this});const n=new Is({mediaStreamTrack:i.track,label:e.label,consumer:new xs(i),engine:this.engine,isPaused:r.producerPaused,peerEventEmitter:this.observer});this.tracks.set(n.label,n)}catch(t){throw this.logger.error("createConsumer()",e,t),new Error("Error subscribe media")}}))}handleNewProducer(e){if(this.producers.get(e.id))return;const t=new oe(e);this.producers.set(t.id,t),this.logger.debug("Peer published media:",{peer:this,producer:t}),this.observer.safeEmit(b,{producerId:t.id,kind:t.kind,label:t.label})}handlePeerEvents(){this.observer.on(T,this.handleNewProducer.bind(this)),this.observer.on(E,(e=>{this.producers.delete(e.id),this.logger.debug("Peer unpublished media:",{peer:this,producer:e}),this.observer.safeEmit(w,{producerId:e.id,kind:e.kind,label:e.label})})),this.observer.on(j,(e=>{const t=this.getTrackByConsumerId(e);t&&(t.close(),this.tracks.delete(t.label),this.logger.debug("Peer video track was ended:",{peer:this}))})),this.observer.on(A,(e=>a(this,void 0,void 0,(function*(){const t=this.getTrackByConsumerId(e);t&&(yield t.pause())})))),this.observer.on(F,(e=>a(this,void 0,void 0,(function*(){const t=this.getTrackByConsumerId(e);t&&(yield t.resume())})))),this.observer.on(N,(e=>{if(this.isMe)return;const t=this.getConsumerById(e.consumerId);if(!t)return;const{score:r,producerScore:i}=e;t.score=r,t.producerScore=i;const n=this.getAllConsumers().map((e=>e.producerScore)),s=Math.min(...n);this.outgoingConnectionQuality=Ls.getConnectionQualityByScore(s),this.emitConnectionQuality()})),this.observer.on(N,(()=>{if(!this.isMe)return;const e=[];if(this.engine.peers.forEach((t=>{t.getAllConsumers().forEach((t=>{t.score<t.producerScore&&e.push(t.score)}))}),[]),0===e.length)this.incomingConnectionQuality=i.GOOD;else{const t=e.map((e=>e)).reduce(((e,t)=>e+t),0),r=Math.floor(t/e.length);this.incomingConnectionQuality=Ls.getConnectionQualityByScore(r)}this.emitConnectionQuality()})),this.observer.on(O,(e=>{var t;if(!this.isMe)return;const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e.producerId}));if(!r)return;const i=null===(t=r.getProducer())||void 0===t?void 0:t.maxSpatialLayer,{scores:n}=e;if(0===n.length)return;let{score:s}=n[0];if(n.length>1&&0!==i){i&&n.splice(i+1);const e=n.map((({score:e})=>e)).reduce(((e,t)=>e+t),0);s=Math.floor(e/n.length)}this.outgoingConnectionQuality=Ls.getConnectionQualityByScore(s),this.emitConnectionQuality()})),this.observer.on(B,(e=>{const t=this.getConsumerById(e.consumerId);(null==t?void 0:t.isVideo)&&(t.setCurrentTemporalLayer(e.temporalLayer),t.setCurrentSpatialLayer(e.spatialLayer),e.spatialLayer===t.requestedSpatialLayer&&t.setRequestedSpatialLayer(void 0),this.logger.debug("consumerChangePreferredLayers()",Object.assign({consumer:t},e)))})),this.observer.on(x,(e=>a(this,void 0,void 0,(function*(){const{producerId:t,spatialLayer:r}=e,i=this.getConsumerByProducerId(t);i?(i.setCurrentMaxSpatialLayer(r),this.logger.debug("producerSetMaxSpatialLayer()",{producerId:t,consumerId:i.id,spatialLayer:r}),i.requestedSpatialLayer===r?(yield this.engine.network.socket.request(B,{consumerId:i.id,spatialLayer:r}),this.logger.debug("requestVideoPreferredLayers()",{producerId:t,consumerId:i.id,spatialLayer:r})):this.logger.debug("producerSetMaxSpatialLayer()",{message:"No need to request new preferred layer",currentMaxSpatialLayer:r,requestedMaxSpatialLayer:i.requestedSpatialLayer})):this.logger.debug("producerSetMaxSpatialLayer()",{message:"Consumer for producer not created, ignore MaxSpatialLayer change"})}))))}emitConnectionQuality(){setTimeout((()=>{const e=Math.min(this.outgoingConnectionQuality,this.incomingConnectionQuality);e!==this.overallConnectionQuality&&(this.observer.safeEmit(_,{connectionQuality:e}),this.overallConnectionQuality=e,this.logger.debug("emitConnectionQuality()",{peer:this,connectionQuality:e}))}),1e3)}static getConnectionQualityByScore(e){return e<Ms.BAD?i.BAD:e<Ms.MEDIUM?i.MEDIUM:i.GOOD}getAllConsumers(){return Array.from(this.tracks.values()).map((e=>e.consumer)).filter((e=>!!e))}getConsumerByProducerId(e){return this.getAllConsumers().find((t=>t.producerId===e))}getConsumerById(e){return this.getAllConsumers().find((t=>t.id===e))}getTrackByConsumerId(e){return Array.from(this.tracks.values()).find((t=>t.consumerId===e))}}const js=[{scaleResolutionDownBy:4,maxBitrate:15e4,maxFramerate:12},{scaleResolutionDownBy:2,maxBitrate:35e4,maxFramerate:18},{scaleResolutionDownBy:1,maxBitrate:9e5,maxFramerate:24}],As=[{maxBitrate:1e6,dtx:!0}];var Fs;class Ns{constructor(e){Fs.set(this,void 0),this.encoderConfig={},this.label=n.Unknown,this.logger=new ae("Track"),c(this,Fs,e,"f")}get mediaStreamTrack(){return o(this,Fs,"f")}get id(){return this.mediaStreamTrack.id}get kind(){return this.mediaStreamTrack.kind}get producerId(){var e;return null===(e=this.producer)||void 0===e?void 0:e.id}get isPublished(){return!!this.producer&&!this.producer.closed}getLabel(){return this.label}setLabel(e){this.label=e}setEncoderConfig(e){this.encoderConfig=e}getEncoderConfig(){return this.encoderConfig}setProducer(e){this.producer=e}getProducer(){return this.producer}closeProducer(){var e;null===(e=this.producer)||void 0===e||e.close(),this.producer=void 0}setPriority(e){return a(this,void 0,void 0,(function*(){this.producer?(yield this.producer.setRtpEncodingParameters({priority:e}),this.logger.debug("setPriority()",{label:this.getLabel(),priority:e})):this.logger.warn("setPriority()","Not published yet")}))}}Fs=new WeakMap;class Bs extends Ns{constructor(){super(...arguments),this.transformParams={}}getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){return this.getEncoderConfig().preferredCodec||"h264"}getEncodings(){return this.getEncoderConfig().encodings||js}setTransformParams(e){this.transformParams=e}setMaxSpatialLayer(e){return a(this,void 0,void 0,(function*(){const t=this.getProducer();t?(yield t.setMaxSpatialLayer(e),this.logger.debug("setMaxSpatialLayer()",{label:this.getLabel(),spatialLayer:e})):this.logger.warn("setMaxSpatialLayer()",{message:"Not produced yet"})}))}getMaxSpatialLayer(){const e=this.getProducer();if(e)return e.maxSpatialLayer;this.logger.warn("getMaxSpatialLayer()",{message:"Not produced yet"})}}class Us extends Ns{getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{opusFec:this.getEncoderConfig().enableFec||!0}}}const qs={width:1280,height:720},$s={width:1920,height:1080};var zs;class Vs{constructor(){this.isDeviceLoaded=!1,this.tracks=new Map,zs.set(this,new ae("Media"))}get mediasoupDevice(){return this.device||(this.device=new ce.Device),this.device}loadDevice(e){return a(this,void 0,void 0,(function*(){this.isDeviceLoaded||(yield this.mediasoupDevice.load({routerRtpCapabilities:e}),this.isDeviceLoaded=!0)}))}getTrackCodec(e){var t;if(e instanceof Bs&&(null===(t=this.mediasoupDevice.rtpCapabilities)||void 0===t?void 0:t.codecs))return this.mediasoupDevice.rtpCapabilities.codecs.find((t=>t.mimeType.toLowerCase()===`video/${e.getPreferredCodec()}`))}createTracks(e){return e.getTracks().map((t=>{const r="audio"===t.kind?new Us(t):new Bs(t);return this.tracks.set(r.id,r),o(this,zs,"f").debug("createTrack() track created",{streamId:e.id,trackId:r.id,kind:r.kind}),r}))}createUserMediaTracks(e){return a(this,void 0,void 0,(function*(){const t=yield navigator.mediaDevices.getUserMedia(e);return o(this,zs,"f").debug("createUserMediaTrack() stream created",{streamId:t.id}),this.createTracks(t)}))}createDisplayMediaTracks(e){return a(this,void 0,void 0,(function*(){const t=yield navigator.mediaDevices.getDisplayMedia(e);return this.createTracks(t)}))}deleteTrack(e){e.closeProducer(),e.mediaStreamTrack.stop(),this.tracks.delete(e.id),o(this,zs,"f").debug("deleteTrack() tack deleted",{trackId:e.id,kind:e.kind})}getAllTracks(){return Array.from(this.tracks.values())}static getScreenVideoTrackParams(e){return{videoTrackOptions:{frameRate:{ideal:(null==e?void 0:e.frameRate)||30},width:{ideal:(null==e?void 0:e.width)||$s.width},height:{ideal:(null==e?void 0:e.height)||$s.height}},transformParams:{width:(null==e?void 0:e.width)||qs.width,height:(null==e?void 0:e.height)||qs.height},encoderConfig:(null==e?void 0:e.encoderConfig)||{encodings:As}}}static getCameraVideoTrackParams(e){return{videoTrackOptions:{deviceId:null==e?void 0:e.deviceId,frameRate:{ideal:(null==e?void 0:e.frameRate)||30},width:{ideal:(null==e?void 0:e.width)||qs.width},height:{ideal:(null==e?void 0:e.height)||qs.height}},transformParams:{width:(null==e?void 0:e.width)||qs.width,height:(null==e?void 0:e.height)||qs.height},encoderConfig:(null==e?void 0:e.encoderConfig)||{encodings:js}}}}zs=new WeakMap;const Ws=new ae("Retry"),Gs=new class{sleepMs(e){return a(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}now(){return new Date(Date.now())}},Hs=(e,t={})=>a(void 0,void 0,void 0,(function*(){var r;const i=t.maxRetries||2,n=t.minBackoffDelayMs||50;let s,a=0;for(;a<i;){a+=1;try{return yield e()}catch(e){if(s=e,Ws.warn("Action retry failed",a,t.actionName,e),a<i){const e=Math.pow(2,a-1)*n;yield Gs.sleepMs(Math.min(e,null!==(r=t.maxBackoffDelayMs)&&void 0!==r?r:e))}}}throw s}));class Ks{constructor(e){this.initialized=!1,this.isJoined=!1,this.isRoomJoining=!1;const{clientEventEmitter:t,network:r,dependenciesFactory:i}=e;this.system=i.createSystem(t),this.media=i.createMedia(),this.network=i.createNetwork(r),this.peersRepository=new Map,this.clientEventEmitter=t,this.channelEventsHandler=i.createChannelEventHandler(this),this.mediaSoupEventsHandler=i.createMediaSoupEventHandler(this),this.logger=new ae("Engine",e.onLogMessage),this.webRtcIssueDetector=i.createIssueDetector({logger:this.logger}),this.watchSocketState()}initialize(){return a(this,void 0,void 0,(function*(){try{const{rtpCapabilities:e}=yield this.network.socket.request("router.getRtpCapabilities");yield this.media.loadDevice(e),this.webRtcIssueDetector.watchNewPeerConnections(),yield this.network.createSendTransport(this.media.mediasoupDevice),yield this.network.createRecvTransport(this.media.mediasoupDevice),this.initialized=!0,this.logger.debug("initialize()")}catch(e){throw this.logger.error("initialize()",e),new Error("Error initialize engine")}}))}release(){return a(this,void 0,void 0,(function*(){try{this.initialized=!1,this.isJoined=!1,this.app=void 0,this.channel=void 0,this.webRtcIssueDetector.stopWatchingNewPeerConnections(),this.webRtcIssueDetector.resetWatchedPeerConnectionsList(),this.network.socket.disconnect(),this.peersRepository.clear(),yield this.unpublish(),yield this.network.closeSendTransport(),yield this.network.closeReceiveTransport(),this.logger.debug("release()")}catch(e){throw this.logger.error("release()",e),new Error("Error release engine")}}))}pauseRemoteProducer(e){return a(this,void 0,void 0,(function*(){return this.network.socket.request(D,{producerId:e})}))}resumeRemoteProducer(e){return a(this,void 0,void 0,(function*(){return this.network.socket.request(M,{producerId:e})}))}watchSocketState(){this.network.socket.observer.on("state",(e=>{const{state:t,code:r}=e;this.clientEventEmitter.emit(t,{code:r}),t===C.Reconnecting&&(this.network.socket.disconnect(),this.clientEventEmitter.emit(y))}))}get peers(){return Array.from(this.peersRepository.values())}get hostPeers(){return this.peers.filter((e=>"host"===e.role))}get audiencePeers(){return this.peers.filter((e=>"audience"===e.role))}get mySocketId(){return this.network.socket.id}join(e){return a(this,void 0,void 0,(function*(){try{this.logger.debug("join()",{params:e}),this.isRoomJoining=!0,yield this.connectToSocketServerWithRetry(e),yield this.performJoin(e)}catch(e){throw this.logger.error("join()",{error:e}),e}finally{this.isRoomJoining=!1}}))}loadPeers(e){return a(this,void 0,void 0,(function*(){const{peers:t}=yield this.network.socket.request(u,{role:e});t.filter((e=>!this.peersRepository.has(e.id))).forEach((e=>this.setPeer(e)))}))}setPeer(e){const t=new Ls(Object.assign(Object.assign({},e),{engine:this,loginDate:new Date}));return this.peersRepository.set(t.id,t),t}removePeer(e){this.peersRepository.delete(e)}pause(e){var t;return a(this,void 0,void 0,(function*(){const r=e.getProducer();if(r)try{yield this.pauseRemoteProducer(r.id),r.pause();const i=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==i||i.pause(),this.logger.debug("pause()",{kind:e.kind})}catch(t){throw this.logger.error("pause()",{error:t,kind:e.kind}),new Error("Can`t pause track")}else this.logger.warn("pause()",{message:"Track is not published",kind:e.kind})}))}resume(e){var t;return a(this,void 0,void 0,(function*(){const r=e.getProducer();if(r)try{yield this.resumeRemoteProducer(r.id),r.resume(),this.logger.debug("resume()",{kind:e.kind});const i=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==i||i.resume()}catch(t){throw this.logger.error("resume()",{error:t,kind:e.kind}),new Error("Can`t resume track")}else this.logger.warn("resume()",{message:"Track is not published"})}))}createCameraVideoTrack(e){return a(this,void 0,void 0,(function*(){const t=Vs.getCameraVideoTrackParams(e);try{const[e]=yield this.media.createUserMediaTracks({audio:!1,video:t.videoTrackOptions});return e instanceof Bs&&(e.setLabel(n.Camera),e.setEncoderConfig(t.encoderConfig),e.setTransformParams(t.transformParams)),this.logger.debug("createCameraVideoTrack()",{trackParams:t,track:e}),e}catch(e){throw this.logger.error("createCameraVideoTrack()",{error:e,trackParams:t}),new Error(`Can not create camera track: ${e.message}`)}}))}createMicrophoneAudioTrack(e){return a(this,void 0,void 0,(function*(){try{const[t]=yield this.media.createUserMediaTracks({video:!1,audio:{deviceId:null==e?void 0:e.deviceId}});return t.setLabel(n.Microphone),(null==e?void 0:e.encoderConfig)&&t.setEncoderConfig(e.encoderConfig),this.logger.debug("createMicrophoneAudioTrack()",{options:e,track:t}),t}catch(t){throw this.logger.error("createMicrophoneAudioTrack()",{error:t,options:e}),new Error(`Can not create microphone track: ${t.message}`)}}))}createScreenMediaTracks(e){return a(this,void 0,void 0,(function*(){const t=Vs.getScreenVideoTrackParams(null==e?void 0:e.video);try{const r=yield this.media.createDisplayMediaTracks({audio:null==e?void 0:e.audio,video:t.videoTrackOptions});return r.forEach((r=>{if(r.mediaStreamTrack.addEventListener("ended",(()=>{this.unpublish(r)})),r instanceof Bs)return r.setLabel(n.ScreenVideo),r.setEncoderConfig(t.encoderConfig),r.setTransformParams(t.transformParams),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,track:r});r.setLabel(n.ScreenAudio),(null==e?void 0:e.audio)&&r.setEncoderConfig(e.audio),this.logger.debug("createScreenMediaTrack()",{trackParams:null==e?void 0:e.audio,track:r})})),r}catch(e){throw this.logger.error("createScreenMediaTrack()",{error:e,trackParams:t}),new Error(`Can not create screen media tracks: ${e.message}`)}}))}publish(e){return a(this,void 0,void 0,(function*(){if(!this.cahPublish)throw this.logger.error("publish()",{message:"Not enough access to publish"}),new Error("Not enough access to publish");const t=(Array.isArray(e)?e:[e]).map((e=>a(this,void 0,void 0,(function*(){var t,r;const i="getEncodings"in e?e.getEncodings():void 0,n="getCodecOptions"in e?e.getCodecOptions():void 0,s=i&&i.length>=1?1:0,a={peerId:this.mySocketId,label:e.getLabel(),trackTransformParams:{},maxSpatialLayer:0};e instanceof Bs&&(a.maxSpatialLayer=s,a.trackTransformParams=e.transformParams);const o=yield null===(t=this.network.sendTransport)||void 0===t?void 0:t.produce({track:e.mediaStreamTrack,encodings:i,codecOptions:n,codec:this.media.getTrackCodec(e),stopTracks:!0,disableTrackOnPause:!0,zeroRtpOnPause:!0,appData:a});if(!o)return;e.setProducer(o),e instanceof Bs&&(yield e.setMaxSpatialLayer(s),yield this.network.socket.request(x,{producerId:null===(r=e.getProducer())||void 0===r?void 0:r.id,maxSpatialLayer:s})),e instanceof Us&&(yield e.setPriority("high"));const c=this.peersRepository.get(this.mySocketId);if(!c)return;const d=new Is({mediaStreamTrack:e.mediaStreamTrack,label:e.getLabel(),engine:this,isPaused:o.paused,peerEventEmitter:c.observer});c.tracks.set(d.label,d),this.logger.debug("publish()",{track:e,encodings:i,codecOptions:n})}))));try{yield Promise.all(t)}catch(e){this.logger.error("publish()",{error:e})}}))}unpublish(e){return a(this,void 0,void 0,(function*(){let t;t=e?Array.isArray(e)?e:[e]:this.media.getAllTracks();const r=t.map((e=>a(this,void 0,void 0,(function*(){var t,r;const i=e.getProducer();i&&(null===(t=this.network.socket.connection)||void 0===t?void 0:t.connected)&&(yield this.network.closeRemoteProducer(i.id));const n=null===(r=this.myPeer)||void 0===r?void 0:r.tracks.get(e.getLabel());null==n||n.close(),yield this.media.deleteTrack(e),this.logger.debug("unpublish()",{track:e})}))));try{yield Promise.all(r)}catch(e){this.logger.error("unpublish()",{error:e})}}))}deleteTrack(e){return this.media.deleteTrack(e)}get channelId(){return this.channel}get appId(){return this.app}connectToSocketServerWithRetry(e){return a(this,void 0,void 0,(function*(){return Hs((()=>a(this,void 0,void 0,(function*(){return this.connectToSocketServer(e)}))),{maxRetries:15,minBackoffDelayMs:150,maxBackoffDelayMs:5e3,actionName:"connectToSocketServer"})}))}connectToSocketServer(e){return a(this,void 0,void 0,(function*(){const{webSocketUrl:t}=yield this.getAvailableNode({channelId:e.channelId,role:e.role});this.network.socket.connect(t);try{yield this.waitForSocketConnection()}catch(t){throw this.logger.error("Failed to connect to socket server",{error:t,role:e.role,channelId:e.channelId}),this.network.socket.disconnect(),t}}))}getAvailableNode(e){return a(this,void 0,void 0,(function*(){try{return{webSocketUrl:(yield this.network.loadBalancerClient.getNode(e)).webSocketUrl}}catch(e){throw this.logger.error("getAvailableNode()",{error:"No available nodes"}),e}}))}waitForSocketConnection(){return new Promise(((e,t)=>{const r=i=>a(this,void 0,void 0,(function*(){const{error:n,state:s}=i,a=()=>this.network.socket.observer.removeListener("state",r),o=[C.Disconnected,C.Reconnecting].includes(s);if(n||this.isRoomJoining&&o)return a(),void t(n||"Not expected socket state for new connection");this.isRoomJoining&&[C.Connected,C.Reconnected].includes(s)&&(a(),e())}));this.network.socket.observer.on("state",r)}))}performJoin(e){return a(this,void 0,void 0,(function*(){try{yield this.sendJoinChannelRequestWithRetry(e),this.app=e.appId,this.channel=e.channelId,yield this.initialize(),this.channelEventsHandler.subscribeToEvents(),this.mediaSoupEventsHandler.subscribeToEvents(),this.isJoined=!0,this.logger.debug(`Successfully joined to ${e.channelId}. Peers in channel:`,this.peersRepository)}catch(e){throw this.logger.error("performJoin()",{error:e}),e}}))}sendJoinChannelRequestWithRetry(e){return a(this,void 0,void 0,(function*(){return Hs((()=>a(this,void 0,void 0,(function*(){return this.sendJoinChannelRequest(e)}))),{maxRetries:3,minBackoffDelayMs:300,actionName:"sendJoinChannelRequest"})}))}sendJoinChannelRequest(e){return a(this,void 0,void 0,(function*(){return this.network.socket.request(l,e)}))}get cahPublish(){var e;return"host"===(null===(e=this.peers.find((e=>e.isMe)))||void 0===e?void 0:e.role)}get myPeer(){return this.peers.find((e=>e.isMe))}}class Qs{constructor(e){const{socketClient:t,loadBalancerApiClient:r}=e;this.socket=t,this.loadBalancerClient=r,this.logger=new ae("Network")}closeRemoteProducer(e){return a(this,void 0,void 0,(function*(){yield this.socket.request(E,{peerId:this.socket.id,producerId:e})}))}closeSendTransport(){var e;return a(this,void 0,void 0,(function*(){this.sendTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.sendTransport)),this.sendTransport=void 0):this.logger.warn("closeSendTransport()",{message:"No available send transport"})}))}closeReceiveTransport(){var e;return a(this,void 0,void 0,(function*(){this.receiveTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.receiveTransport)),this.receiveTransport=void 0):this.logger.warn("closeReceiveTransport()",{message:"No available receive transport"})}))}closeTransport(e){return a(this,void 0,void 0,(function*(){try{const{success:t}=yield this.socket.request($,{transportId:e.id});return this.logger.debug("closeTransport()",{transport:e}),Boolean(t)}catch(e){return this.logger.error("closeTransport()",{error:e}),!1}finally{e.close()}}))}createSendTransport(e){return a(this,void 0,void 0,(function*(){if(this.sendTransport)return void this.logger.warn("createSendTransport()",{message:"Send transport already exists"});const t=yield this.socket.request(q,{sctpCapabilities:e.sctpCapabilities,localDirection:"out"});this.sendTransport=e.createSendTransport(t),this.logger.debug("createSendTransport()",{transport:this.sendTransport}),this.sendTransport.on(H,(({dtlsParameters:e},r,i)=>a(this,void 0,void 0,(function*(){var n;try{yield this.socket.request(z,{transportId:null===(n=this.sendTransport)||void 0===n?void 0:n.id,dtlsParameters:e}),r(),this.logger.debug("sendTransport.connect()")}catch(r){this.logger.error("sendTransport.on(`connect`)",{dtlsParameters:e,sendTransportOptions:t,error:r}),i(r)}})))),this.sendTransport.on(K,((e,t,r)=>a(this,void 0,void 0,(function*(){var i;try{const{id:r}=yield this.socket.request(V,{transportId:null===(i=this.sendTransport)||void 0===i?void 0:i.id,kind:e.kind,rtpParameters:e.rtpParameters,appData:e.appData});t({id:r}),this.logger.debug("sendTransport.produce()")}catch(e){this.logger.error("sendTransport.produce()",{error:e}),r(e)}})))),this.sendTransport.on(W,(e=>{this.logger.debug("sendTransport.state",{state:e}),"failed"===e&&this.sendTransport&&(this.restartIce(this.sendTransport),this.logger.warn("sendTransport.restartIce()"))}))}))}createRecvTransport(e){return a(this,void 0,void 0,(function*(){if(this.receiveTransport)return void this.logger.warn("createRecvTransport()",{message:"Receive transport already exists"});const t=yield this.socket.request(q,{sctpCapabilities:e.sctpCapabilities,localDirection:"in"});this.receiveTransport=e.createRecvTransport(t),this.logger.debug("createRecvTransport()",{transport:this.receiveTransport}),this.receiveTransport.on(H,(({dtlsParameters:e},t,r)=>a(this,void 0,void 0,(function*(){var i;try{yield this.socket.request(z,{transportId:null===(i=this.receiveTransport)||void 0===i?void 0:i.id,dtlsParameters:e}),t(),this.logger.debug("receiveTransport.connect()")}catch(e){this.logger.error("receiveTransport.on(`connect`)",{error:e}),r(e)}})))),this.receiveTransport.on(W,(e=>{this.logger.debug("receiveTransport.state",{state:e}),"failed"===e&&this.receiveTransport&&(this.restartIce(this.receiveTransport),this.logger.debug("receiveTransport.restartIce()"))}))}))}getIceParameters(e){return a(this,void 0,void 0,(function*(){const t=yield this.socket.request(G,{transportId:e.id}),{error:r}=t;if(r)throw new Error(r);return this.logger.debug("getIceParameters()",{iceParameters:t}),t}))}restartIce(e){return a(this,void 0,void 0,(function*(){try{const t=yield this.getIceParameters(e);yield e.restartIce({iceParameters:t})}catch(e){this.logger.error("restartIce()",{error:e})}}))}}class Js{constructor(e){this.isEnableVideoDevicesLock=!1,this.isEnableAudioDevicesLock=!1,this.isDevicesDetected=!1,this.availableVideoDevices=[],this.availableAudioDevices=[],this.isMediaDevicesAccessGranted=!1;const{clientEventEmitter:t}=e;this.clientEventEmitter=t,this.logger=new ae("System"),this.listenDevices()}setIsEnableVideoDevicesLock(e){this.isEnableVideoDevicesLock=e}setIsEnableAudioDevicesLock(e){this.isEnableAudioDevicesLock=e}setAvailableVideoDevices(e){this.availableVideoDevices=e}setAvailableAudioDevices(e){this.availableAudioDevices=e}requestMediaDevicesAccess(){return a(this,void 0,void 0,(function*(){try{(yield navigator.mediaDevices.getUserMedia({video:!0,audio:!0})).getTracks().forEach((e=>e.stop())),this.isMediaDevicesAccessGranted=!0}catch(e){if(this.logger.error("getUserMedia()",{error:e}),"NotReadableError"===e.name)throw new Error("DeviceIsBusy")}}))}refreshAvailableMediaDevicesList(){return a(this,void 0,void 0,(function*(){const e=yield navigator.mediaDevices.enumerateDevices(),t=[],r=[];e.forEach((e=>{""!==e.deviceId&&"default"!==e.deviceId&&("videoinput"===e.kind&&t.push(e),"audioinput"===e.kind&&r.push(e))})),this.setAvailableVideoDevices(t),this.setAvailableAudioDevices(r),this.logger.debug("Devices list updated")}))}detectDevices(){return a(this,void 0,void 0,(function*(){this.isDevicesDetected||(this.isMediaDevicesAccessGranted||(yield this.requestMediaDevicesAccess()),navigator.mediaDevices.addEventListener("devicechange",(()=>{this.refreshAvailableMediaDevicesList()})),yield this.refreshAvailableMediaDevicesList(),this.isDevicesDetected=!0)}))}listenDevices(){navigator.mediaDevices.ondevicechange=()=>a(this,void 0,void 0,(function*(){this.isDevicesDetected&&(yield this.refreshAvailableMediaDevicesList(),this.clientEventEmitter.safeEmit(v,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}}class Ys{constructor(e){this.engine=e,this.logger=new ae("ChannelEvents")}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(p,(e=>{this.engine.clientEventEmitter.safeEmit(f,e),this.logger.debug("New channel event",{event:e})})),e.on(l,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(m,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(h,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(g,e),this.logger.debug("Peer left the channel",{peerId:e})}))}}class Xs{constructor(e){this.engine=e,this.logger=new ae("MediasoupEvents")}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(E,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&!t.isMe&&t.observer.safeEmit(E,e)})),e.on(T,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&!t.isMe&&t.observer.safeEmit(T,e)})),e.on(j,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(j,e)})),e.on(F,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(F,e)})),e.on(A,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(A,e)})),e.on(B,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const n=this.engine.peers.find((t=>t.id===e));n&&!n.isMe&&n.observer.safeEmit(B,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(N,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(N,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(N,e)})),e.on(O,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(O,e)})),e.on(I,(({producerId:e,spatialLayer:t})=>a(this,void 0,void 0,(function*(){const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e}));if(!r)return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Producer not found"});if(!(r instanceof Bs))return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Wrong producer kind"});const i=r.getMaxSpatialLayer();i!==t?(yield r.setMaxSpatialLayer(t),yield this.engine.network.socket.request(x,{producerId:e,maxSpatialLayer:t})):this.logger.debug("producerRequestMaxSpatialLayer()",{message:"Skip set max spatial layer",requestedSpatialLayer:t,currentMaxSpatialLayer:i})})))),e.on(x,(({peerId:e,producerId:t,spatialLayer:r})=>a(this,void 0,void 0,(function*(){const i=this.engine.peers.find((t=>t.id===e));i&&!i.isMe&&i.observer.safeEmit(x,{peerId:e,producerId:t,spatialLayer:r})}))))}}var Zs={};function ea(){}function ta(){ta.init.call(this)}function ra(e){return void 0===e._maxListeners?ta.defaultMaxListeners:e._maxListeners}function ia(e,t,r){if(t)e.call(r);else for(var i=e.length,n=la(e,i),s=0;s<i;++s)n[s].call(r)}function na(e,t,r,i){if(t)e.call(r,i);else for(var n=e.length,s=la(e,n),a=0;a<n;++a)s[a].call(r,i)}function sa(e,t,r,i,n){if(t)e.call(r,i,n);else for(var s=e.length,a=la(e,s),o=0;o<s;++o)a[o].call(r,i,n)}function aa(e,t,r,i,n,s){if(t)e.call(r,i,n,s);else for(var a=e.length,o=la(e,a),c=0;c<a;++c)o[c].call(r,i,n,s)}function oa(e,t,r,i){if(t)e.apply(r,i);else for(var n=e.length,s=la(e,n),a=0;a<n;++a)s[a].apply(r,i)}function ca(e,t,r,i){var n,s,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((s=e._events)?(s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),a=s[t]):(s=e._events=new ea,e._eventsCount=0),a){if("function"==typeof a?a=s[t]=i?[r,a]:[a,r]:i?a.unshift(r):a.push(r),!a.warned&&((n=ra(e))&&0<n&&a.length>n)){a.warned=!0;var o=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");o.name="MaxListenersExceededWarning",o.emitter=e,o.type=t,o.count=a.length,function(e){"function"==typeof console.warn?console.warn(e):console.log(e)}(o)}}else a=s[t]=r,++e._eventsCount;return e}function da(e,t,r){function i(){e.removeListener(t,i),n||(n=!0,r.apply(e,arguments))}var n=!1;return i.listener=r,i}function pa(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 la(e,t){for(var r=Array(t);t--;)r[t]=e[t];return r}Object.defineProperty(Zs,"__esModule",{value:!0}),ea.prototype=Object.create(null),ta.EventEmitter=ta,ta.usingDomains=!1,ta.prototype.domain=void 0,ta.prototype._events=void 0,ta.prototype._maxListeners=void 0,ta.defaultMaxListeners=10,ta.init=function(){this.domain=null,ta.usingDomains&&undefined.active&&!(this instanceof undefined.Domain)&&(this.domain=undefined.active),this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new ea,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},ta.prototype.setMaxListeners=function(e){if("number"!=typeof e||0>e||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},ta.prototype.getMaxListeners=function(){return ra(this)},ta.prototype.emit=function(e){var t,r,i,n,s,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 p="function"==typeof r;switch(i=arguments.length){case 1:ia(r,p,this);break;case 2:na(r,p,this,arguments[1]);break;case 3:sa(r,p,this,arguments[1],arguments[2]);break;case 4:aa(r,p,this,arguments[1],arguments[2],arguments[3]);break;default:for(n=Array(i-1),s=1;s<i;s++)n[s-1]=arguments[s];oa(r,p,this,n)}return!0},ta.prototype.addListener=function(e,t){return ca(this,e,t,!1)},ta.prototype.on=ta.prototype.addListener,ta.prototype.prependListener=function(e,t){return ca(this,e,t,!0)},ta.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,da(this,e,t)),this},ta.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,da(this,e,t)),this},ta.prototype.removeListener=function(e,t){var r,i,n,s,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 ea:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(n=-1,s=r.length;0<s--;)if(r[s]===t||r[s].listener&&r[s].listener===t){a=r[s].listener,n=s;break}if(0>n)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new ea,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,n=e.length;i<n;r+=1,i+=1)e[r]=e[i];e.pop()}(r,n);i.removeListener&&this.emit("removeListener",e,a||t)}return this},ta.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new ea,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new ea:delete r[e]),this;if(0===arguments.length){for(var i,n=Object.keys(r),s=0;s<n.length;++s)"removeListener"!==(i=n[s])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new ea,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},ta.prototype.listeners=function(e){var t,r,i=this._events;return i?r=(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[]:r=[],r},ta.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):pa.call(e,t)},ta.prototype.listenerCount=pa,ta.prototype.eventNames=function(){return 0<this._eventsCount?Reflect.ownKeys(this._events):[]};var ua,ha=new Uint8Array(16);function fa(){if(!ua&&!(ua="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ua(ha)}var ma=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function ga(e){return"string"==typeof e&&ma.test(e)}for(var ya=[],va=0;256>va;++va)ya.push((va+256).toString(16).substr(1));function ba(e,t,r){var i=(e=e||{}).random||(e.rng||fa)();if(i[6]=64|15&i[6],i[8]=128|63&i[8],t){r=r||0;for(var n=0;16>n;++n)t[r+n]=i[n];return t}return function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,r=(ya[e[t+0]]+ya[e[t+1]]+ya[e[t+2]]+ya[e[t+3]]+"-"+ya[e[t+4]]+ya[e[t+5]]+"-"+ya[e[t+6]]+ya[e[t+7]]+"-"+ya[e[t+8]]+ya[e[t+9]]+"-"+ya[e[t+10]]+ya[e[t+11]]+ya[e[t+12]]+ya[e[t+13]]+ya[e[t+14]]+ya[e[t+15]]).toLowerCase();if(!ga(r))throw TypeError("Stringified UUID is invalid");return r}(i)}function wa(e,t){if(!e||!t)return{};const r={...e};if(r.localCandidateId){const e=t.get(r.localCandidateId);r.local={...e}}if(r.remoteCandidateId){const e=t.get(r.remoteCandidateId);r.remote={...e}}return r}function _a(e,t,r){return 8*function(e,t,r){const i=e[r],n=t?t[r]:null;return null===i||null===n?null:(i-n)/(e.timestamp-t.timestamp)*1e3}(e,t,r)}function Sa(e){if(!e.entries)return e;const t={};return e.forEach((function(e,r){t[r]=e})),t}function Ra(e,t,r={}){if(!e)return null;let i={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]},connection:{inbound:[],outbound:[]}};r.remote&&(i.remote={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]}});for(const t of e.values())switch(t.type){case"outbound-rtp":{const r=t.mediaType||t.kind,n={};let s={};if(!["audio","video"].includes(r))continue;if(t.codecId){const r=e.get(t.codecId);r&&(n.clockRate=r.clockRate,n.mimeType=r.mimeType,n.payloadType=r.payloadType)}s=e.get(t.mediaSourceId)||e.get(t.trackId)||{},i[r].outbound.push({...t,...n,track:{...s}});break}case"inbound-rtp":{let r=t.mediaType||t.kind,n={};const s={};if(!["audio","video"].includes(r))if(t.id.includes("Video"))r="video";else{if(!t.id.includes("Audio"))continue;r="audio"}if(t.codecId){const r=e.get(t.codecId);r&&(s.clockRate=r.clockRate,s.mimeType=r.mimeType,s.payloadType=r.payloadType)}if(!i.connection.id&&t.transportId){const r=e.get(t.transportId);if(r&&r.selectedCandidatePairId){const t=e.get(r.selectedCandidatePairId);i.connection=wa(t,e)}}n=e.get(t.mediaSourceId)||e.get(t.trackId)||{},i[r].inbound.push({...t,...s,track:{...n}});break}case"peer-connection":i.connection.dataChannelsClosed=t.dataChannelsClosed,i.connection.dataChannelsOpened=t.dataChannelsOpened;break;case"remote-inbound-rtp":{if(!r.remote)break;let n=t.mediaType||t.kind;const s={};if(!["audio","video"].includes(n))if(t.id.includes("Video"))n="video";else{if(!t.id.includes("Audio"))continue;n="audio"}if(t.codecId){const r=e.get(t.codecId);r&&(s.clockRate=r.clockRate,s.mimeType=r.mimeType,s.payloadType=r.payloadType)}if(!i.connection.id&&t.transportId){const r=e.get(t.transportId);if(r&&r.selectedCandidatePairId){const t=e.get(r.selectedCandidatePairId);i.connection=wa(t,e)}}i.remote[n].inbound.push({...t,...s});break}case"remote-outbound-rtp":{if(!r.remote)break;const n=t.mediaType||t.kind,s={};if(!["audio","video"].includes(n))continue;if(t.codecId){const r=e.get(t.codecId);r&&(s.clockRate=r.clockRate,s.mimeType=r.mimeType,s.payloadType=r.payloadType)}i.remote[n].outbound.push({...t,...s});break}}if(!i.connection.id)for(const t of e.values())"candidate-pair"===t.type&&t.nominated&&"succeeded"===t.state&&(i.connection=wa(t,e));return i=function(e,t){return t?(e.audio.inbound.map((e=>{let r=t.audio.inbound.find((t=>t.id===e.id));e.bitrate=_a(e,r,"bytesReceived"),e.packetRate=_a(e,r,"packetsReceived")})),e.audio.outbound.map((e=>{let r=t.audio.outbound.find((t=>t.id===e.id));e.bitrate=_a(e,r,"bytesSent"),e.packetRate=_a(e,r,"packetsSent")})),e.video.inbound.map((e=>{let r=t.video.inbound.find((t=>t.id===e.id));e.bitrate=_a(e,r,"bytesReceived"),e.packetRate=_a(e,r,"packetsReceived")})),e.video.outbound.map((e=>{let r=t.video.outbound.find((t=>t.id===e.id));e.bitrate=_a(e,r,"bytesSent"),e.packetRate=_a(e,r,"packetsSent")})),e):e}(i,t),i}let ka={};var Pa,Ca,Ta,Ea,Da,Ma,Oa,xa,Ia,La,ja,Aa,Fa=Zs.WebRTCStats=class extends ta{constructor(e){if(super(),this.monitoringSetInterval=0,this.connectionMonitoringSetInterval=0,this.connectionMonitoringInterval=1e3,this.remote=!0,this.peersToMonitor={},this.timeline=[],this.statsToMonitor=["inbound-rtp","outbound-rtp","remote-inbound-rtp","remote-outbound-rtp","peer-connection","data-channel","stream","track","sender","receiver","transport","candidate-pair","local-candidate","remote-candidate"],"undefined"==typeof window)throw new Error("WebRTCStats only works in browser");const t={...e};this.isEdge=!!window.RTCIceGatherer,this.getStatsInterval=t.getStatsInterval||1e3,this.rawStats=!!t.rawStats,this.statsObject=!!t.statsObject,this.filteredStats=!!t.filteredStats,this.shouldWrapGetUserMedia=!!t.wrapGetUserMedia,"boolean"==typeof t.remote&&(this.remote=t.remote),this.debug=!!t.debug,this.logLevel=t.logLevel||"none",this.shouldWrapGetUserMedia&&this.wrapGetUserMedia()}async addPeer(e,t){return console.warn("The addPeer() method has been deprecated, please use addConnection()"),this.addConnection({peerId:e,pc:t})}async addConnection(e){const{pc:t,peerId:r}=e;let{connectionId:i,remote:n}=e;if(n="boolean"==typeof n?n:this.remote,!(t&&t instanceof RTCPeerConnection))throw new Error("Missing argument 'pc' or is not of instance RTCPeerConnection");if(!r)throw new Error("Missing argument peerId");if(this.isEdge)throw new Error("Can't monitor peers in Edge at this time.");if(this.peersToMonitor[r]){if(i&&i in this.peersToMonitor[r])throw new Error(`We are already monitoring connection with id ${i}.`);for(let e in this.peersToMonitor[r]){const i=this.peersToMonitor[r][e];if(i.pc===t)throw new Error(`We are already monitoring peer with id ${r}.`);"closed"===i.pc.connectionState&&this.removeConnection({peerId:r,pc:i.pc})}}const s=t.getConfiguration();return s.iceServers&&s.iceServers.forEach((function(e){delete e.credential})),i||(i=ba()),this.emitEvent({event:"addConnection",tag:"peer",peerId:r,connectionId:i,data:{options:e,peerConfiguration:s}}),this.monitorPeer({peerId:r,connectionId:i,pc:t,remote:n}),{connectionId:i}}getTimeline(e){return this.timeline=this.timeline.sort(((e,t)=>e.timestamp.getTime()-t.timestamp.getTime())),e?this.timeline.filter((t=>t.tag===e)):this.timeline}monitorPeer(e){let{peerId:t,connectionId:r,pc:i,remote:n}=e;if(!i)return void this.logger.warn("Did not receive pc argument when calling monitorPeer()");const s={pc:i,connectionId:r,stream:null,stats:{parsed:null,raw:null},options:{remote:n}};if(this.peersToMonitor[t]){if(r in this.peersToMonitor[t])return void this.logger.warn(`Already watching connection with ID ${r}`);this.peersToMonitor[t][r]=s}else this.peersToMonitor[t]={[r]:s};this.addPeerConnectionEventListeners(t,r,i),1===this.numberOfMonitoredPeers&&(this.startStatsMonitoring(),this.startConnectionStateMonitoring())}startStatsMonitoring(){this.monitoringSetInterval||(this.monitoringSetInterval=window.setInterval((()=>{this.numberOfMonitoredPeers||this.stopStatsMonitoring(),this.getStats().then((e=>{e.forEach((e=>{this.emitEvent(e)}))}))}),this._getStatsInterval))}stopStatsMonitoring(){this.monitoringSetInterval&&(window.clearInterval(this.monitoringSetInterval),this.monitoringSetInterval=0)}async getStats(e=null){this.logger.info(e?`Getting stats from peer ${e}`:"Getting stats from all peers");let t={};if(e){if(!this.peersToMonitor[e])throw new Error(`Cannot get stats. Peer with id ${e} does not exist`);t[e]=this.peersToMonitor[e]}else t=this.peersToMonitor;let r=[];for(const e in t)for(const i in t[e]){const n=t[e][i],s=n.pc;if(s&&!this.checkIfConnectionIsClosed(e,i,s))try{const t=this.getTimestamp(),a=s.getStats(null);if(a){const s=await a,o=this.getTimestamp(),c=Sa(s),d={remote:n.options.remote},p=Ra(s,n.stats.parsed,d),l={event:"stats",tag:"stats",peerId:e,connectionId:i,timeTaken:o-t,data:p};!0===this.rawStats&&(l.rawStats=s),!0===this.statsObject&&(l.statsObject=c),!0===this.filteredStats&&(l.filteredStats=this.filteroutStats(c)),r.push(l),n.stats.parsed=p}else this.logger.error(`PeerConnection from peer ${e} did not return any stats data`)}catch(e){this.logger.error(e)}}return r}startConnectionStateMonitoring(){this.connectionMonitoringSetInterval=window.setInterval((()=>{this.numberOfMonitoredPeers||this.stopConnectionStateMonitoring();for(const e in this.peersToMonitor)for(const t in this.peersToMonitor[e]){const r=this.peersToMonitor[e][t].pc;this.checkIfConnectionIsClosed(e,t,r)}}),this.connectionMonitoringInterval)}checkIfConnectionIsClosed(e,t,r){const i=this.isConnectionClosed(r);if(i){this.removeConnection({peerId:e,pc:r});let i="closed"===r.connectionState?"onconnectionstatechange":"oniceconnectionstatechange";this.emitEvent({event:i,peerId:e,connectionId:t,tag:"connection",data:"closed"})}return i}isConnectionClosed(e){return"closed"===e.connectionState||"closed"===e.iceConnectionState}stopConnectionStateMonitoring(){this.connectionMonitoringSetInterval&&(window.clearInterval(this.connectionMonitoringSetInterval),this.connectionMonitoringSetInterval=0)}wrapGetUserMedia(){if(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)return void this.logger.warn("'navigator.mediaDevices.getUserMedia' is not available in browser. Will not wrap getUserMedia.");this.logger.info("Wrapping getUsermedia functions.");const e=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices),t=this.parseGetUserMedia.bind(this);navigator.mediaDevices.getUserMedia=function(){return t({constraints:arguments[0]}),e.apply(navigator.mediaDevices,arguments).then((e=>(t({stream:e}),e)),(e=>(t({error:e}),Promise.reject(e))))}.bind(navigator.mediaDevices)}filteroutStats(e={}){const t={...e};for(const e in t){var r=t[e];this.statsToMonitor.includes(r.type)||delete t[e]}return t}get peerConnectionListeners(){return{icecandidate:(e,t,r,i)=>{this.logger.debug("[pc-event] icecandidate | peerId: ${peerId}",i),this.emitEvent({event:"onicecandidate",tag:"connection",peerId:e,connectionId:t,data:i.candidate})},track:(e,t,r,i)=>{this.logger.debug(`[pc-event] track | peerId: ${e}`,i);const n=i.track,s=i.streams[0];e in this.peersToMonitor&&t in this.peersToMonitor[e]&&(this.peersToMonitor[e][t].stream=s),this.addTrackEventListeners(n),this.emitEvent({event:"ontrack",tag:"track",peerId:e,connectionId:t,data:{stream:s?this.getStreamDetails(s):null,track:n?this.getMediaTrackDetails(n):null,title:i.track.kind+":"+i.track.id+" "+i.streams.map((function(e){return"stream:"+e.id}))}})},signalingstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] signalingstatechange | peerId: ${e}`),this.emitEvent({event:"onsignalingstatechange",tag:"connection",peerId:e,connectionId:t,data:{signalingState:r.signalingState,localDescription:r.localDescription,remoteDescription:r.remoteDescription}})},iceconnectionstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] iceconnectionstatechange | peerId: ${e}`),this.emitEvent({event:"oniceconnectionstatechange",tag:"connection",peerId:e,connectionId:t,data:r.iceConnectionState})},icegatheringstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] icegatheringstatechange | peerId: ${e}`),this.emitEvent({event:"onicegatheringstatechange",tag:"connection",peerId:e,connectionId:t,data:r.iceGatheringState})},icecandidateerror:(e,t,r,i)=>{this.logger.debug(`[pc-event] icecandidateerror | peerId: ${e}`),this.emitEvent({event:"onicecandidateerror",tag:"connection",peerId:e,connectionId:t,error:{errorCode:i.errorCode}})},connectionstatechange:(e,t,r)=>{this.logger.debug(`[pc-event] connectionstatechange | peerId: ${e}`),this.emitEvent({event:"onconnectionstatechange",tag:"connection",peerId:e,connectionId:t,data:r.connectionState})},negotiationneeded:(e,t,r)=>{this.logger.debug(`[pc-event] negotiationneeded | peerId: ${e}`),this.emitEvent({event:"onnegotiationneeded",tag:"connection",peerId:e,connectionId:t})},datachannel:(e,t,r,i)=>{this.logger.debug(`[pc-event] datachannel | peerId: ${e}`,i),this.emitEvent({event:"ondatachannel",tag:"datachannel",peerId:e,connectionId:t,data:i.channel})}}}addPeerConnectionEventListeners(e,t,r){this.logger.debug(`Adding event listeners for peer ${e} and connection ${t}.`),ka[t]={},Object.keys(this.peerConnectionListeners).forEach((i=>{ka[t][i]=this.peerConnectionListeners[i].bind(this,e,t,r),r.addEventListener(i,ka[t][i],!1)}))}parseGetUserMedia(e){const t={event:"getUserMedia",tag:"getUserMedia",data:{...e}};e.stream&&(t.data.details=this.parseStream(e.stream)),this.emitEvent(t)}parseStream(e){const t={audio:[],video:[]};return e.getTracks().forEach((e=>{t[e.kind].push(this.getMediaTrackDetails(e))})),t}getMediaTrackDetails(e){return{enabled:e.enabled,id:e.id,contentHint:e.contentHint,kind:e.kind,label:e.label,muted:e.muted,readyState:e.readyState,constructorName:e.constructor.name,capabilities:e.getCapabilities?e.getCapabilities():{},constraints:e.getConstraints?e.getConstraints():{},settings:e.getSettings?e.getSettings():{},_track:e}}getStreamDetails(e){return{active:e.active,id:e.id,_stream:e}}get getTrackEventObject(){return{mute:e=>{this.emitEvent({event:"mute",tag:"track",data:{event:e}})},unmute:e=>{this.emitEvent({event:"unmute",tag:"track",data:{event:e}})},overconstrained:e=>{this.emitEvent({event:"overconstrained",tag:"track",data:{event:e}})},ended:e=>{this.emitEvent({event:"ended",tag:"track",data:{event:e}}),this.removeTrackEventListeners(e.target)}}}addTrackEventListeners(e){ka[e.id]={},Object.keys(this.getTrackEventObject).forEach((t=>{ka[e.id][t]=this.getTrackEventObject[t].bind(this),e.addEventListener(t,ka[e.id][t])})),ka[e.id].readyState=setInterval((()=>{if("ended"===e.readyState){let t=new CustomEvent("ended",{detail:{check:"readyState"}});e.dispatchEvent(t)}}),1e3)}removeTrackEventListeners(e){e.id in ka&&(Object.keys(this.getTrackEventObject).forEach((t=>{e.removeEventListener(t,ka[e.id][t])})),clearInterval(ka[e.id].readyState),delete ka[e.id])}addToTimeline(e){this.timeline.push(e),this.emit("timeline",e)}emitEvent(e){const t={...e,timestamp:new Date};this.addToTimeline(t),t.tag&&this.emit(t.tag,t)}set getStatsInterval(e){if(!Number.isInteger(e))throw new Error(`getStatsInterval should be an integer, got: ${e}`);this._getStatsInterval=e,this.monitoringSetInterval&&(this.stopStatsMonitoring(),this.startStatsMonitoring())}get logger(){const e=e=>{const t=["none","error","warn","info","debug"];return t.slice(0,t.indexOf(this.logLevel)+1).indexOf(e)>-1};return{error(...t){this.debug&&e("error")&&console.error("[webrtc-stats][error] ",...t)},warn(...t){this.debug&&e("warn")&&console.warn("[webrtc-stats][warn] ",...t)},info(...t){this.debug&&e("info")&&console.log("[webrtc-stats][info] ",...t)},debug(...t){this.debug&&e("debug")&&console.debug("[webrtc-stats][debug] ",...t)}}}removeConnection(e){let{peerId:t,connectionId:r,pc:i}=e;if(!t&&!i&&!r)throw new Error("Missing arguments. You need to either send a peerId and pc, or a connectionId.");if(t&&!i||i&&!t)throw new Error("By not sending a connectionId, you need to send a peerId and a pc (RTCPeerConnection instance)");if(r)for(let e in this.peersToMonitor)r in this.peersToMonitor[e]&&(t=e,this.removePeerConnectionEventListeners(t,r,i),delete this.peersToMonitor[e][r]);else if(t&&i&&t in this.peersToMonitor)for(let e in this.peersToMonitor[t])this.peersToMonitor[t][e].pc===i&&(this.removePeerConnectionEventListeners(t,e,i),delete this.peersToMonitor[t][e],r=e);return 0===Object.values(this.peersToMonitor[t]).length&&delete this.peersToMonitor[t],{connectionId:r}}removePeer(e){if(this.logger.info(`Removing PeerConnection with id ${e}.`),this.peersToMonitor[e]){for(let t in this.peersToMonitor[e]){let r=this.peersToMonitor[e][t].pc;this.removePeerConnectionEventListeners(e,t,r)}delete this.peersToMonitor[e]}}get numberOfMonitoredPeers(){return Object.keys(this.peersToMonitor).length}removePeerConnectionEventListeners(e,t,r){t in ka&&(Object.keys(this.peerConnectionListeners).forEach((e=>{r.removeEventListener(e,ka[t][e],!1)})),delete ka[t]),r.getSenders().forEach((e=>{e.track&&this.removeTrackEventListeners(e.track)})),r.getReceivers().forEach((e=>{e.track&&this.removeTrackEventListeners(e.track)}))}getTimestamp(){return Date.now()}wrapGetDisplayMedia(){const e=this;if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){const t=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices),r=function(){return e.debug("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),t.apply(navigator.mediaDevices,arguments).then((function(e){return e}),(function(t){return e.debug("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))};navigator.mediaDevices.getDisplayMedia=r.bind(navigator.mediaDevices)}}};class Na extends e.EventEmitter{}!function(e){e.Issue="issue"}(Pa||(Pa={})),function(e){e.Network="network",e.CPU="cpu",e.Server="server"}(Ca||(Ca={})),function(e){e.NetworkQuality="network-quality",e.NetworkMediaLatency="network-media-latency",e.NetworkMediaSyncFailure="network-media-sync-failure",e.OutboundNetworkThroughput="outbound-network-throughput",e.InboundNetworkThroughput="inbound-network-throughput",e.EncoderCPUThrottling="encoder-cpu-throttling",e.DecoderCPUThrottling="decoder-cpu-throttling",e.ServerIssue="server-issue",e.LowMOS="low-mean-opinion-score"}(Ta||(Ta={}));class Ba{constructor(){Ea.set(this,{})}detect(e){const t=this.processData(e);return o(this,Ea,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.video.outbound.filter((e=>"none"!==e.qualityLimitationReason)),i=[],n=null===(t=o(this,Ea,"f")[e.connection.id])||void 0===t?void 0:t.video.outbound;return n?(r.forEach((e=>{const t=n.find((t=>t.ssrc===e.ssrc));t&&(e.framesSent>t.framesSent||("cpu"===e.qualityLimitationReason&&i.push({type:Ca.CPU,reason:Ta.EncoderCPUThrottling,ssrc:e.ssrc,debug:"qualityLimitationReason: cpu"}),"bandwidth"===e.qualityLimitationReason&&i.push({type:Ca.Network,reason:Ta.OutboundNetworkThroughput,ssrc:e.ssrc,debug:"qualityLimitationReason: bandwidth"})))})),i):i}}Ea=new WeakMap;class Ua{constructor(){Da.set(this,{}),Ma.set(this,.5)}detect(e){const t=this.processData(e);return o(this,Da,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.video.inbound.filter((e=>e.framesDropped>0)),i=[],n=null===(t=o(this,Da,"f")[e.connection.id])||void 0===t?void 0:t.video.inbound;return n?(r.forEach((e=>{const t=n.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesDropped===t.framesDropped)return;const r=e.framesReceived-t.framesReceived,s=e.framesDecoded-t.framesDecoded,a=e.framesDropped-t.framesDropped;if(0===r&&0===s)return;const c=a/r;c>=o(this,Ma,"f")&&i.push({type:Ca.CPU,reason:Ta.DecoderCPUThrottling,ssrc:e.ssrc,debug:`framesDropped: ${Math.round(100*c)} , deltaFramesDropped: ${a}, deltaFramesReceived: ${r}`})})),i):i}}Da=new WeakMap,Ma=new WeakMap;class qa{constructor(){Oa.set(this,{}),xa.set(this,.15)}detect(e){const t=this.processData(e);return o(this,Oa,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.video.outbound.filter((e=>e.framesEncoded>0)),i=[],n=null===(t=o(this,Oa,"f")[e.connection.id])||void 0===t?void 0:t.video.outbound;return n?(r.forEach((e=>{const t=n.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesEncoded===t.framesEncoded)return;const r=e.framesEncoded-t.framesEncoded,s=e.framesSent-t.framesSent;if(0===r)return;if(r===s)return;const a=s/r;a>=o(this,xa,"f")&&i.push({type:Ca.Network,reason:Ta.OutboundNetworkThroughput,ssrc:e.ssrc,debug:`missedFrames: ${Math.round(100*a)}%`})})),i):i}}Oa=new WeakMap,xa=new WeakMap;class $a{constructor(){Ia.set(this,{})}detect(e){const t=this.processData(e);return o(this,Ia,"f")[e.connection.id]=e,t}processData(e){var t,r,i,n;const s=[],a=[...null===(t=e.audio)||void 0===t?void 0:t.inbound,...null===(r=e.video)||void 0===r?void 0:r.inbound];if(!a.length)return s;const c=o(this,Ia,"f")[e.connection.id];if(!c)return s;const d=[...null===(i=c.video)||void 0===i?void 0:i.inbound,...null===(n=c.audio)||void 0===n?void 0:n.inbound],{packetsReceived:p}=e.connection,l=c.connection.packetsReceived,u=a.reduce(((e,t)=>{const r=d.find((e=>e.ssrc===t.ssrc)),i=(null==r?void 0:r.jitterBufferDelay)||0,n=(null==r?void 0:r.jitterBufferEmittedCount)||0,s=t.jitterBufferDelay-i,a=t.jitterBufferEmittedCount-n,o=s&&a?1e3*s/a:0;return{sumJitter:e.sumJitter+t.jitter,sumJitterBufferDelayMs:e.sumJitterBufferDelayMs+o,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+((null==r?void 0:r.packetsLost)||0)}}),{sumJitter:0,sumJitterBufferDelayMs:0,packetsLost:0,lastPacketsLost:0}),h=1e3*e.connection.currentRoundTripTime||0,{sumJitter:f,sumJitterBufferDelayMs:m}=u,g=f/a.length,y=m/a.length,v=p-l,b=u.packetsLost-u.lastPacketsLost,w=v&&b?Math.round(100*b/(v+b)):0,_=h+2*g+10;let S=_<160?93.2-_/40:93.2-_/120-10;S-=2.5*w;const R=1+.035*S+7e-6*S*(S-60)*(100-S),k=w>5,P=g>=200,C=!k&&P||P||k,T=h>=250&&!P&&!k,E=k&&P,D=P&&y>500,M=`packetLoss: ${w}%, jitter: ${g}, rtt: ${h}, jitterBuffer: ${y}ms, MOS: ${R}`;return R<3.1&&s.push({type:Ca.Network,reason:Ta.LowMOS,iceCandidate:e.connection.local.id,debug:M}),C&&s.push({type:Ca.Network,reason:Ta.NetworkQuality,iceCandidate:e.connection.local.id,debug:M}),T&&s.push({type:Ca.Server,reason:Ta.ServerIssue,iceCandidate:e.connection.remote.id,debug:M}),E&&s.push({type:Ca.Network,reason:Ta.NetworkMediaLatency,iceCandidate:e.connection.local.id,debug:M}),D&&s.push({type:Ca.Network,reason:Ta.NetworkMediaSyncFailure,iceCandidate:e.connection.local.id,debug:M}),s}}Ia=new WeakMap;class za{constructor(){La.set(this,{})}detect(e){const t=this.processData(e);return o(this,La,"f")[e.connection.id]=e,t}processData(e){var t;const r=e.audio.inbound,i=[],n=null===(t=o(this,La,"f")[e.connection.id])||void 0===t?void 0:t.audio.inbound;return n?(r.forEach((e=>{const t=n.find((t=>t.ssrc===e.ssrc));if(!t)return;const r=e.track.insertedSamplesForDeceleration+e.track.removedSamplesForAcceleration,s=t.track.insertedSamplesForDeceleration+t.track.removedSamplesForAcceleration;if(r===s)return;const a=e.track.totalSamplesReceived-t.track.totalSamplesReceived,o=r-s,c=Math.round(100*o/a);c>5&&i.push({type:Ca.Network,reason:Ta.NetworkMediaSyncFailure,ssrc:e.ssrc,debug:`correctedSamplesPercentage: ${c}%`})})),i):i}}La=new WeakMap;class Va{constructor(){ja.set(this,3e5)}detect(e){const t=[],{availableOutgoingBitrate:r}=e.connection;if(void 0===r)return t;const i=e.audio.outbound.reduce(((e,t)=>e+t.targetBitrate),0),n=e.video.outbound.reduce(((e,t)=>e+t.bitrate),0);return i||n?i>r?(t.push({type:Ca.Network,reason:Ta.OutboundNetworkThroughput,debug:`availableOutgoingBitrate: ${r}, audioStreamsTotalTargetBitrate: ${i}`}),t):n>0&&r<o(this,ja,"f")?(t.push({type:Ca.Network,reason:Ta.OutboundNetworkThroughput,debug:`availableOutgoingBitrate: ${r}, videoStreamsTotalBitrate: ${n}`}),t):t:t}}ja=new WeakMap;class Wa{constructor(e){this.webrtcStatsPeerId="peerId",this.getStatsInterval=5e3,this.detectors=[],this.eventEmitter=new Na,Aa.set(this,!1),e.onIssue&&this.eventEmitter.on(Pa.Issue,e.onIssue),this.webrtcStats=new Fa({getStatsInterval:this.getStatsInterval}),window.wid=this,this.wrapRTCPeerConnection(),this.detectors=[new Ba,new Ua,new qa,new $a,new za,new Va],this.webrtcStats.on("stats",(e=>{this.detectIssues(e.data)}))}watchNewPeerConnections(){if(o(this,Aa,"f"))throw new Error("WebRTCIssueDetector is already started");c(this,Aa,!0,"f")}stopWatchingNewPeerConnections(){if(!o(this,Aa,"f"))throw new Error("WebRTCIssueDetector is already stopped");c(this,Aa,!1,"f")}resetWatchedPeerConnectionsList(){this.webrtcStats.removePeer(this.webrtcStatsPeerId)}handleNewPeerConnection(e){o(this,Aa,"f")&&this.webrtcStats.addConnection({pc:e,peerId:this.webrtcStatsPeerId})}emitIssues(e){this.eventEmitter.emit(Pa.Issue,e)}detectIssues(e){const t=this.detectors.reduce(((t,r)=>[...t,...r.detect(e)]),[]);t.length>0&&this.emitIssues(t)}wrapRTCPeerConnection(){if(!window.RTCPeerConnection)return;const e=window.RTCPeerConnection,t=e=>this.handleNewPeerConnection(e);function r(r){const i=new e(r);return t(i),i}r.prototype=e.prototype,window.RTCPeerConnection=r}}Aa=new WeakMap;var Ga=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Ha=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],Ka=function(e){var 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));for(var n,s,a=Ga.exec(e||""),o={},c=14;c--;)o[Ha[c]]=a[c]||"";return-1!=r&&-1!=i&&(o.source=t,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=function(e,t){var r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.substr(0,1)&&0!==t.length||i.splice(0,1);"/"==t.substr(t.length-1,1)&&i.splice(i.length-1,1);return i}(0,o.path),o.queryKey=(n=o.query,s={},n.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(s[t]=r)})),s),o};var Qa={exports:{}};try{Qa.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){Qa.exports=!1}var Ja=Qa.exports,Ya="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Xa(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Ja))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Ya[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Za(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const eo=setTimeout,to=clearTimeout;function ro(e,t){t.useNativeTimers?(e.setTimeoutFn=eo.bind(Ya),e.clearTimeoutFn=to.bind(Ya)):(e.setTimeoutFn=setTimeout.bind(Ya),e.clearTimeoutFn=clearTimeout.bind(Ya))}var io=no;function no(e){if(e)return function(e){for(var t in no.prototype)e[t]=no.prototype[t];return e}(e)}no.prototype.on=no.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},no.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},no.prototype.off=no.prototype.removeListener=no.prototype.removeAllListeners=no.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 n=0;n<i.length;n++)if((r=i[n])===t||r.fn===t){i.splice(n,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},no.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 n=(r=r.slice(0)).length;i<n;++i)r[i].apply(this,t)}return this},no.prototype.emitReserved=no.prototype.emit,no.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},no.prototype.hasListeners=function(e){return!!this.listeners(e).length};const so=Object.create(null);so.open="0",so.close="1",so.ping="2",so.pong="3",so.message="4",so.upgrade="5",so.noop="6";const ao=Object.create(null);Object.keys(so).forEach((e=>{ao[so[e]]=e}));const oo={type:"error",data:"parser error"},co="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),po="function"==typeof ArrayBuffer,lo=({type:e,data:t},r,i)=>{return co&&t instanceof Blob?r?i(t):uo(t,i):po&&(t instanceof ArrayBuffer||(n=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(n):n&&n.buffer instanceof ArrayBuffer))?r?i(t):uo(new Blob([t]),i):i(so[e]+(t||""));var n},uo=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+e)},r.readAsDataURL(e)};for(var ho="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fo="undefined"==typeof Uint8Array?[]:new Uint8Array(256),mo=0;mo<ho.length;mo++)fo[ho.charCodeAt(mo)]=mo;const go="function"==typeof ArrayBuffer,yo=(e,t)=>{if("string"!=typeof e)return{type:"message",data:bo(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:vo(e.substring(1),t)};return ao[r]?e.length>1?{type:ao[r],data:e.substring(1)}:{type:ao[r]}:oo},vo=(e,t)=>{if(go){const r=function(e){var t,r,i,n,s,a=.75*e.length,o=e.length,c=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);var d=new ArrayBuffer(a),p=new Uint8Array(d);for(t=0;t<o;t+=4)r=fo[e.charCodeAt(t)],i=fo[e.charCodeAt(t+1)],n=fo[e.charCodeAt(t+2)],s=fo[e.charCodeAt(t+3)],p[c++]=r<<2|i>>4,p[c++]=(15&i)<<4|n>>2,p[c++]=(3&n)<<6|63&s;return d}(e);return bo(r,t)}return{base64:!0,data:e}},bo=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e,wo=String.fromCharCode(30);class _o extends io{constructor(e){super(),this.writable=!1,ro(this,e),this.opts=e,this.query=e.query,this.readyState="",this.socket=e.socket}onError(e,t){const r=new Error(e);return r.type="TransportError",r.description=t,super.emit("error",r),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(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.emit("open")}onData(e){const t=yo(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emit("packet",e)}onClose(){this.readyState="closed",super.emit("close")}}var So,Ro="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),ko={},Po=0,Co=0;function To(e){var t="";do{t=Ro[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function Eo(){var e=To(+new Date);return e!==So?(Po=0,So=e):e+"."+To(Po++)}for(;Co<64;Co++)ko[Ro[Co]]=Co;Eo.encode=To,Eo.decode=function(e){var t=0;for(Co=0;Co<e.length;Co++)t=64*t+ko[e.charAt(Co)];return t};var Do=Eo,Mo={encode:function(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t},decode:function(e){for(var t={},r=e.split("&"),i=0,n=r.length;i<n;i++){var s=r[i].split("=");t[decodeURIComponent(s[0])]=decodeURIComponent(s[1])}return t}};class Oo extends _o{constructor(){super(...arguments),this.polling=!1}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.emit("poll")}onData(e){((e,t)=>{const r=e.split(wo),i=[];for(let e=0;e<r.length;e++){const n=yo(r[e],t);if(i.push(n),"error"===n.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(),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("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 n=0;e.forEach(((e,s)=>{lo(e,!1,(e=>{i[s]=e,++n===r&&t(i.join(wo))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let r="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=Do()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port);const i=Mo.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}}function xo(){}const Io=null!=new Xa({xdomain:!1}).responseType;class Lo extends io{constructor(e,t){super(),ro(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=Za(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new Xa(e);try{t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=Lo.requestsCount++,Lo.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(e){this.emit("data",e),this.onSuccess()}onError(e){this.emit("error",e),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=xo,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete Lo.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&this.onData(e)}abort(){this.cleanup()}}if(Lo.requestsCount=0,Lo.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",jo);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Ya?"pagehide":"unload",jo,!1)}function jo(){for(let e in Lo.requests)Lo.requests.hasOwnProperty(e)&&Lo.requests[e].abort()}const Ao="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Fo=Ya.WebSocket||Ya.MozWebSocket,No="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class Bo extends _o{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=No?{}:Za(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=No?new Fo(e,t,r):t?new Fo(e,t):new Fo(e)}catch(e){return this.emit("error",e)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),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;lo(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&Ao((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let r="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=Do()),this.supportsBinary||(e.b64=1);const i=Mo.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!(!Fo||"__initialize"in Fo&&this.name===Bo.prototype.name)}}const Uo={websocket:Bo,polling:class extends Oo{constructor(e){if(super(e),"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,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=Io&&!t}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new Lo(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",(e=>{this.onError("xhr post error",e)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e=>{this.onError("xhr poll error",e)})),this.pollXhr=e}}};class qo extends io{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=Ka(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=Ka(t.host).host),ro(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"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=Mo.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=function(e){const t={};for(let r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}(this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new Uo[e](r)}open(){let e;if(this.opts.rememberUpgrade&&qo.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}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",(()=>{this.onClose("transport close")}))}probe(e){let t=this.createTransport(e),r=!1;qo.priorWebsocketSuccess=!1;const i=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!r)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;qo.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{r||"closed"!==this.readyState&&(d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function n(){r||(r=!0,d(),t.close(),t=null)}const s=e=>{const r=new Error("probe error: "+e);r.transport=t.name,n(),this.emitReserved("upgradeError",r)};function a(){s("transport closed")}function o(){s("socket closed")}function c(e){t&&e.name!==t.name&&n()}const d=()=>{t.removeListener("open",i),t.removeListener("error",s),t.removeListener("close",a),this.off("close",o),this.off("upgrading",c)};t.once("open",i),t.once("error",s),t.once("close",a),this.once("close",o),this.once("upgrading",c),t.open()}onOpen(){if(this.readyState="open",qo.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){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"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.resetPingTimeout(),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.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(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emitReserved("flush"))}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 n={type:e,data:t,options:r};this.emitReserved("packetCreate",n),this.writeBuffer.push(n),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(e){qo.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}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("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}}qo.protocol=4,qo.protocol;const $o="function"==typeof ArrayBuffer,zo=Object.prototype.toString,Vo="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===zo.call(Blob),Wo="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===zo.call(File);function Go(e){return $o&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||Vo&&e instanceof Blob||Wo&&e instanceof File}function Ho(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Ho(e[t]))return!0;return!1}if(Go(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Ho(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Ho(e[t]))return!0;return!1}function Ko(e){const t=[],r=e.data,i=e;return i.data=Qo(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Qo(e,t){if(!e)return e;if(Go(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]=Qo(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)e.hasOwnProperty(i)&&(r[i]=Qo(e[i],t));return r}return e}function Jo(e,t){return e.data=Yo(e.data,t),e.attachments=void 0,e}function Yo(e,t){if(!e)return e;if(e&&e._placeholder)return t[e.num];if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Yo(e[r],t);else if("object"==typeof e)for(const r in e)e.hasOwnProperty(r)&&(e[r]=Yo(e[r],t));return e}var Xo;!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"}(Xo||(Xo={}));class Zo extends io{constructor(){super()}add(e){let t;if("string"==typeof e)t=this.decodeString(e),t.type===Xo.BINARY_EVENT||t.type===Xo.BINARY_ACK?(this.reconstructor=new ec(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t);else{if(!Go(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===Xo[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Xo.BINARY_EVENT||r.type===Xo.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const n=e.substring(i,t);if(n!=Number(n)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(n)}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=function(e){try{return JSON.parse(e)}catch(e){return!1}}(e.substr(t));if(!Zo.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}static isPayloadValid(e,t){switch(e){case Xo.CONNECT:return"object"==typeof t;case Xo.DISCONNECT:return void 0===t;case Xo.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case Xo.EVENT:case Xo.BINARY_EVENT:return Array.isArray(t)&&t.length>0;case Xo.ACK:case Xo.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class ec{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=Jo(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var tc=Object.freeze({__proto__:null,protocol:5,get PacketType(){return Xo},Encoder:class{encode(e){return e.type!==Xo.EVENT&&e.type!==Xo.ACK||!Ho(e)?[this.encodeAsString(e)]:(e.type=e.type===Xo.EVENT?Xo.BINARY_EVENT:Xo.BINARY_ACK,this.encodeAsBinary(e))}encodeAsString(e){let t=""+e.type;return e.type!==Xo.BINARY_EVENT&&e.type!==Xo.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)),t}encodeAsBinary(e){const t=Ko(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:Zo});function rc(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const ic=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class nc extends io{constructor(e,t,r){super(),this.connected=!1,this.disconnected=!0,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this.io._autoConnect&&this.open()}subEvents(){if(this.subs)return;const e=this.io;this.subs=[rc(e,"open",this.onopen.bind(this)),rc(e,"packet",this.onpacket.bind(this)),rc(e,"error",this.onerror.bind(this)),rc(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(ic.hasOwnProperty(e))throw new Error('"'+e+'" is a reserved event name');t.unshift(e);const r={type:Xo.EVENT,data:t,options:{}};r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]&&(this.acks[this.ids]=t.pop(),r.id=this.ids++);const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?this.packet(r):this.sendBuffer.push(r)),this.flags={},this}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this.packet({type:Xo.CONNECT,data:e})})):this.packet({type:Xo.CONNECT,data:this.auth})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e){this.connected=!1,this.disconnected=!0,delete this.id,this.emitReserved("disconnect",e)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Xo.CONNECT:if(e.data&&e.data.sid){const t=e.data.sid;this.onconnect(t)}else 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 Xo.EVENT:case Xo.BINARY_EVENT:this.onevent(e);break;case Xo.ACK:case Xo.BINARY_ACK:this.onack(e);break;case Xo.DISCONNECT:this.ondisconnect();break;case Xo.CONNECT_ERROR: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)}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Xo.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){this.id=e,this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((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:Xo.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}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||[]}}var sc=ac;function ac(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}ac.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)},ac.prototype.reset=function(){this.attempts=0},ac.prototype.setMin=function(e){this.ms=e},ac.prototype.setMax=function(e){this.max=e},ac.prototype.setJitter=function(e){this.jitter=e};class oc extends io{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,ro(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 sc({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||tc;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 qo(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=rc(t,"open",(function(){r.onopen(),e&&e()})),n=rc(t,"error",(t=>{r.cleanup(),r._readyState="closed",this.emitReserved("error",t),e?e(t):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;0===e&&i();const r=this.setTimeoutFn((()=>{i(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(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(rc(e,"ping",this.onping.bind(this)),rc(e,"data",this.ondata.bind(this)),rc(e,"error",this.onerror.bind(this)),rc(e,"close",this.onclose.bind(this)),rc(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){this.decoder.add(e)}ondecoded(e){this.emitReserved("packet",e)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r||(r=new nc(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,"opening"===this._readyState&&this.cleanup(),this.backoff.reset(),this._readyState="closed",this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e),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((function(){clearTimeout(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const cc={};function dc(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=Ka(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 n=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+n+":"+i.port+t,i.href=i.protocol+"://"+n+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,n=r.id,s=r.path,a=cc[n]&&s in cc[n].nsps;let o;return t.forceNew||t["force new connection"]||!1===t.multiplex||a?o=new oc(i,t):(cc[n]||(cc[n]=new oc(i,t)),o=cc[n]),r.query&&!t.query&&(t.query=r.queryKey),o.socket(r.path,t)}class pc{constructor(){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new d,this.knownDisconnectReasonsCodes={"io server disconnect":"server.disconnect","io client disconnect":"client.disconnect","ping timeout":"ping.timeout","transport close":"transport.close","transport error":"transport.error"},this.logger=new ae("Socket")}get observer(){return this._observer}get id(){var e;return null===(e=this.connection)||void 0===e?void 0:e.id}connect(e){const t=dc(e);this.connection=t,this.serverUrl=e,t.on("connect",(()=>{const e=this.reconnectingAttempt?C.Reconnected:C.Connected;this.isConnected=!0,this.setReconnectingAttempt(0),this.logger.debug("connection.on(`connect`)"),this.observer.safeEmit("state",{state:e})})),t.on("connect_error",(e=>{this.connectionError=e,this.logger.error("connection.on(`connect_error`)",e),this.observer.safeEmit("state",{state:C.Error,error:e})})),t.on("disconnect",(e=>{this.isConnected=!1,this.setReconnectingAttempt(0),this.disconnectReason=e,this.logger.warn("connection.on(`disconnect`)",e),this.observer.safeEmit("state",{state:C.Disconnected,code:this.getDisconnectReasonCode(e)})})),t.io.on("reconnect_attempt",(e=>{this.setReconnectingAttempt(e),this.logger.warn("connection.on(`reconnect_attempt`)",e),this.observer.safeEmit("state",{state:C.Reconnecting})})),t.io.on("reconnect",(()=>{this.logger.debug("connection.on(`reconnect`)"),this.observer.safeEmit("state",{state:C.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect(),this.setReconnectingAttempt(0))}request(e,t={}){return new Promise(((r,i)=>{if(!this.connection)return this.logger.error("request()",{type:e,data:t}),void i(new Error("Socket request: Socket connection is not initialized"));this.connection.emit(e,t,(e=>{e.error?(this.logger.error("request()",{response:e}),i(e.error)):r(e)}))}))}getDisconnectReasonCode(e){const t=String(e).toLowerCase();return this.knownDisconnectReasonsCodes[t]||t}setReconnectingAttempt(e){this.reconnectingAttempt=e}}var lc={exports:{}},uc=function(e,t){return function(){for(var r=new Array(arguments.length),i=0;i<r.length;i++)r[i]=arguments[i];return e.apply(t,r)}},hc=uc,fc=Object.prototype.toString;function mc(e){return"[object Array]"===fc.call(e)}function gc(e){return void 0===e}function yc(e){return null!==e&&"object"==typeof e}function vc(e){if("[object Object]"!==fc.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function bc(e){return"[object Function]"===fc.call(e)}function wc(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),mc(e))for(var r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.call(null,e[n],n,e)}var _c={isArray:mc,isArrayBuffer:function(e){return"[object ArrayBuffer]"===fc.call(e)},isBuffer:function(e){return null!==e&&!gc(e)&&null!==e.constructor&&!gc(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:yc,isPlainObject:vc,isUndefined:gc,isDate:function(e){return"[object Date]"===fc.call(e)},isFile:function(e){return"[object File]"===fc.call(e)},isBlob:function(e){return"[object Blob]"===fc.call(e)},isFunction:bc,isStream:function(e){return yc(e)&&bc(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:wc,merge:function e(){var t={};function r(r,i){vc(t[i])&&vc(r)?t[i]=e(t[i],r):vc(r)?t[i]=e({},r):mc(r)?t[i]=r.slice():t[i]=r}for(var i=0,n=arguments.length;i<n;i++)wc(arguments[i],r);return t},extend:function(e,t,r){return wc(t,(function(t,i){e[i]=r&&"function"==typeof t?hc(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},Sc=_c;function Rc(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var kc=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(Sc.isURLSearchParams(t))i=t.toString();else{var n=[];Sc.forEach(t,(function(e,t){null!=e&&(Sc.isArray(e)?t+="[]":e=[e],Sc.forEach(e,(function(e){Sc.isDate(e)?e=e.toISOString():Sc.isObject(e)&&(e=JSON.stringify(e)),n.push(Rc(t)+"="+Rc(e))})))})),i=n.join("&")}if(i){var s=e.indexOf("#");-1!==s&&(e=e.slice(0,s)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},Pc=_c;function Cc(){this.handlers=[]}Cc.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},Cc.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},Cc.prototype.forEach=function(e){Pc.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var Tc=Cc,Ec=_c,Dc=function(e,t,r,i,n){return e.config=t,r&&(e.code=r),e.request=i,e.response=n,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e},Mc=Dc,Oc=function(e,t,r,i,n){var s=new Error(e);return Mc(s,t,r,i,n)},xc=Oc,Ic=_c,Lc=Ic.isStandardBrowserEnv()?{write:function(e,t,r,i,n,s){var a=[];a.push(e+"="+encodeURIComponent(t)),Ic.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),Ic.isString(i)&&a.push("path="+i),Ic.isString(n)&&a.push("domain="+n),!0===s&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},jc=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},Ac=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},Fc=_c,Nc=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],Bc=_c,Uc=Bc.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function i(e){var i=e;return t&&(r.setAttribute("href",i),i=r.href),r.setAttribute("href",i),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=i(window.location.href),function(t){var r=Bc.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},qc=_c,$c=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(xc("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},zc=Lc,Vc=kc,Wc=function(e,t){return e&&!jc(t)?Ac(e,t):t},Gc=function(e){var t,r,i,n={};return e?(Fc.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=Fc.trim(e.substr(0,i)).toLowerCase(),r=Fc.trim(e.substr(i+1)),t){if(n[t]&&Nc.indexOf(t)>=0)return;n[t]="set-cookie"===t?(n[t]?n[t]:[]).concat([r]):n[t]?n[t]+", "+r:r}})),n):n},Hc=Uc,Kc=Oc,Qc=function(e){return new Promise((function(t,r){var i=e.data,n=e.headers,s=e.responseType;qc.isFormData(i)&&delete n["Content-Type"];var a=new XMLHttpRequest;if(e.auth){var o=e.auth.username||"",c=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";n.Authorization="Basic "+btoa(o+":"+c)}var d=Wc(e.baseURL,e.url);function p(){if(a){var i="getAllResponseHeaders"in a?Gc(a.getAllResponseHeaders()):null,n={data:s&&"text"!==s&&"json"!==s?a.response:a.responseText,status:a.status,statusText:a.statusText,headers:i,config:e,request:a};$c(t,r,n),a=null}}if(a.open(e.method.toUpperCase(),Vc(d,e.params,e.paramsSerializer),!0),a.timeout=e.timeout,"onloadend"in a?a.onloadend=p:a.onreadystatechange=function(){a&&4===a.readyState&&(0!==a.status||a.responseURL&&0===a.responseURL.indexOf("file:"))&&setTimeout(p)},a.onabort=function(){a&&(r(Kc("Request aborted",e,"ECONNABORTED",a)),a=null)},a.onerror=function(){r(Kc("Network Error",e,null,a)),a=null},a.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(Kc(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",a)),a=null},qc.isStandardBrowserEnv()){var l=(e.withCredentials||Hc(d))&&e.xsrfCookieName?zc.read(e.xsrfCookieName):void 0;l&&(n[e.xsrfHeaderName]=l)}"setRequestHeader"in a&&qc.forEach(n,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete n[t]:a.setRequestHeader(t,e)})),qc.isUndefined(e.withCredentials)||(a.withCredentials=!!e.withCredentials),s&&"json"!==s&&(a.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&a.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&a.upload&&a.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){a&&(a.abort(),r(e),a=null)})),i||(i=null),a.send(i)}))},Jc=_c,Yc=function(e,t){Ec.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},Xc=Dc,Zc={"Content-Type":"application/x-www-form-urlencoded"};function ed(e,t){!Jc.isUndefined(e)&&Jc.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var td,rd={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(td=Qc),td),transformRequest:[function(e,t){return Yc(t,"Accept"),Yc(t,"Content-Type"),Jc.isFormData(e)||Jc.isArrayBuffer(e)||Jc.isBuffer(e)||Jc.isStream(e)||Jc.isFile(e)||Jc.isBlob(e)?e:Jc.isArrayBufferView(e)?e.buffer:Jc.isURLSearchParams(e)?(ed(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):Jc.isObject(e)||t&&"application/json"===t["Content-Type"]?(ed(t,"application/json"),function(e,t,r){if(Jc.isString(e))try{return(t||JSON.parse)(e),Jc.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,i=t&&t.forcedJSONParsing,n=!r&&"json"===this.responseType;if(n||i&&Jc.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw Xc(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};rd.headers={common:{Accept:"application/json, text/plain, */*"}},Jc.forEach(["delete","get","head"],(function(e){rd.headers[e]={}})),Jc.forEach(["post","put","patch"],(function(e){rd.headers[e]=Jc.merge(Zc)}));var id=rd,nd=_c,sd=id,ad=function(e){return!(!e||!e.__CANCEL__)},od=_c,cd=function(e,t,r){var i=this||sd;return nd.forEach(r,(function(r){e=r.call(i,e,t)})),e},dd=ad,pd=id;function ld(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var ud=_c,hd=function(e,t){t=t||{};var r={},i=["url","method","data"],n=["headers","auth","proxy","params"],s=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],a=["validateStatus"];function o(e,t){return ud.isPlainObject(e)&&ud.isPlainObject(t)?ud.merge(e,t):ud.isPlainObject(t)?ud.merge({},t):ud.isArray(t)?t.slice():t}function c(i){ud.isUndefined(t[i])?ud.isUndefined(e[i])||(r[i]=o(void 0,e[i])):r[i]=o(e[i],t[i])}ud.forEach(i,(function(e){ud.isUndefined(t[e])||(r[e]=o(void 0,t[e]))})),ud.forEach(n,c),ud.forEach(s,(function(i){ud.isUndefined(t[i])?ud.isUndefined(e[i])||(r[i]=o(void 0,e[i])):r[i]=o(void 0,t[i])})),ud.forEach(a,(function(i){i in t?r[i]=o(e[i],t[i]):i in e&&(r[i]=o(void 0,e[i]))}));var d=i.concat(n).concat(s).concat(a),p=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return ud.forEach(p,c),r},fd={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},md={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){md[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var gd={},yd=fd.version.split(".");function vd(e,t){for(var r=t?t.split("."):yd,i=e.split("."),n=0;n<3;n++){if(r[n]>i[n])return!0;if(r[n]<i[n])return!1}return!1}md.transitional=function(e,t,r){var i=t&&vd(t);function n(e,t){return"[Axios v"+fd.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,s,a){if(!1===e)throw new Error(n(s," has been removed in "+t));return i&&!gd[s]&&(gd[s]=!0,console.warn(n(s," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,s,a)}};var bd={isOlderVersion:vd,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var i=Object.keys(e),n=i.length;n-- >0;){var s=i[n],a=t[s];if(a){var o=e[s],c=void 0===o||a(o,s,e);if(!0!==c)throw new TypeError("option "+s+" must be "+c)}else if(!0!==r)throw Error("Unknown option "+s)}},validators:md},wd=_c,_d=kc,Sd=Tc,Rd=function(e){return ld(e),e.headers=e.headers||{},e.data=cd.call(e,e.data,e.headers,e.transformRequest),e.headers=od.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),od.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||pd.adapter)(e).then((function(t){return ld(e),t.data=cd.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return dd(t)||(ld(e),t&&t.response&&(t.response.data=cd.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},kd=hd,Pd=bd,Cd=Pd.validators;function Td(e){this.defaults=e,this.interceptors={request:new Sd,response:new Sd}}Td.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=kd(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&Pd.assertOptions(t,{silentJSONParsing:Cd.transitional(Cd.boolean,"1.0.0"),forcedJSONParsing:Cd.transitional(Cd.boolean,"1.0.0"),clarifyTimeoutError:Cd.transitional(Cd.boolean,"1.0.0")},!1);var r=[],i=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(i=i&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var n,s=[];if(this.interceptors.response.forEach((function(e){s.push(e.fulfilled,e.rejected)})),!i){var a=[Rd,void 0];for(Array.prototype.unshift.apply(a,r),a=a.concat(s),n=Promise.resolve(e);a.length;)n=n.then(a.shift(),a.shift());return n}for(var o=e;r.length;){var c=r.shift(),d=r.shift();try{o=c(o)}catch(e){d(e);break}}try{n=Rd(o)}catch(e){return Promise.reject(e)}for(;s.length;)n=n.then(s.shift(),s.shift());return n},Td.prototype.getUri=function(e){return e=kd(this.defaults,e),_d(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},wd.forEach(["delete","get","head","options"],(function(e){Td.prototype[e]=function(t,r){return this.request(kd(r||{},{method:e,url:t,data:(r||{}).data}))}})),wd.forEach(["post","put","patch"],(function(e){Td.prototype[e]=function(t,r,i){return this.request(kd(i||{},{method:e,url:t,data:r}))}}));var Ed=Td;function Dd(e){this.message=e}Dd.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},Dd.prototype.__CANCEL__=!0;var Md=Dd,Od=Md;function xd(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new Od(e),t(r.reason))}))}xd.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},xd.source=function(){var e;return{token:new xd((function(t){e=t})),cancel:e}};var Id=xd,Ld=_c,jd=uc,Ad=Ed,Fd=hd;function Nd(e){var t=new Ad(e),r=jd(Ad.prototype.request,t);return Ld.extend(r,Ad.prototype,t),Ld.extend(r,t),r}var Bd=Nd(id);Bd.Axios=Ad,Bd.create=function(e){return Nd(Fd(Bd.defaults,e))},Bd.Cancel=Md,Bd.CancelToken=Id,Bd.isCancel=ad,Bd.all=function(e){return Promise.all(e)},Bd.spread=function(e){return function(t){return e.apply(null,t)}},Bd.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},lc.exports=Bd,lc.exports.default=Bd;var Ud=lc.exports,qd="undefined"!=typeof Symbol&&Symbol,$d=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var i=Object.getOwnPropertySymbols(e);if(1!==i.length||i[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var n=Object.getOwnPropertyDescriptor(e,t);if(42!==n.value||!0!==n.enumerable)return!1}return!0},zd="Function.prototype.bind called on incompatible ",Vd=Array.prototype.slice,Wd=Object.prototype.toString,Gd=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==Wd.call(t))throw new TypeError(zd+t);for(var r,i=Vd.call(arguments,1),n=function(){if(this instanceof r){var n=t.apply(this,i.concat(Vd.call(arguments)));return Object(n)===n?n:this}return t.apply(e,i.concat(Vd.call(arguments)))},s=Math.max(0,t.length-i.length),a=[],o=0;o<s;o++)a.push("$"+o);if(r=Function("binder","return function ("+a.join(",")+"){ return binder.apply(this,arguments); }")(n),t.prototype){var c=function(){};c.prototype=t.prototype,r.prototype=new c,c.prototype=null}return r},Hd=Function.prototype.bind||Gd,Kd=Hd.call(Function.call,Object.prototype.hasOwnProperty),Qd=SyntaxError,Jd=Function,Yd=TypeError,Xd=function(e){try{return Jd('"use strict"; return ('+e+").constructor;")()}catch(e){}},Zd=Object.getOwnPropertyDescriptor;if(Zd)try{Zd({},"")}catch(e){Zd=null}var ep=function(){throw new Yd},tp=Zd?function(){try{return ep}catch(e){try{return Zd(arguments,"callee").get}catch(e){return ep}}}():ep,rp="function"==typeof qd&&"function"==typeof Symbol&&"symbol"==typeof qd("foo")&&"symbol"==typeof Symbol("bar")&&$d(),ip=Object.getPrototypeOf||function(e){return e.__proto__},np={},sp="undefined"==typeof Uint8Array?undefined:ip(Uint8Array),ap={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":rp?ip([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":np,"%AsyncGenerator%":np,"%AsyncGeneratorFunction%":np,"%AsyncIteratorPrototype%":np,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":Jd,"%GeneratorFunction%":np,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":rp?ip(ip([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&rp?ip((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&rp?ip((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":rp?ip(""[Symbol.iterator]()):undefined,"%Symbol%":rp?Symbol:undefined,"%SyntaxError%":Qd,"%ThrowTypeError%":tp,"%TypedArray%":sp,"%TypeError%":Yd,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet},op=function e(t){var r;if("%AsyncFunction%"===t)r=Xd("async function () {}");else if("%GeneratorFunction%"===t)r=Xd("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=Xd("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var n=e("%AsyncGenerator%");n&&(r=ip(n.prototype))}return ap[t]=r,r},cp={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},dp=Hd,pp=Kd,lp=dp.call(Function.call,Array.prototype.concat),up=dp.call(Function.apply,Array.prototype.splice),hp=dp.call(Function.call,String.prototype.replace),fp=dp.call(Function.call,String.prototype.slice),mp=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,gp=/\\(\\)?/g,yp=function(e){var t=fp(e,0,1),r=fp(e,-1);if("%"===t&&"%"!==r)throw new Qd("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new Qd("invalid intrinsic syntax, expected opening `%`");var i=[];return hp(e,mp,(function(e,t,r,n){i[i.length]=r?hp(n,gp,"$1"):t||e})),i},vp=function(e,t){var r,i=e;if(pp(cp,i)&&(i="%"+(r=cp[i])[0]+"%"),pp(ap,i)){var n=ap[i];if(n===np&&(n=op(i)),void 0===n&&!t)throw new Yd("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:n}}throw new Qd("intrinsic "+e+" does not exist!")},bp=function(e,t){if("string"!=typeof e||0===e.length)throw new Yd("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new Yd('"allowMissing" argument must be a boolean');var r=yp(e),i=r.length>0?r[0]:"",n=vp("%"+i+"%",t),s=n.name,a=n.value,o=!1,c=n.alias;c&&(i=c[0],up(r,lp([0,1],c)));for(var d=1,p=!0;d<r.length;d+=1){var l=r[d],u=fp(l,0,1),h=fp(l,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new Qd("property names with quotes must have matching quotes");if("constructor"!==l&&p||(o=!0),pp(ap,s="%"+(i+="."+l)+"%"))a=ap[s];else if(null!=a){if(!(l in a)){if(!t)throw new Yd("base intrinsic for "+e+" exists, but the property is not available.");return}if(Zd&&d+1>=r.length){var f=Zd(a,l);a=(p=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:a[l]}else p=pp(a,l),a=a[l];p&&!o&&(ap[s]=a)}}return a},wp={exports:{}};!function(e){var t=Hd,r=bp,i=r("%Function.prototype.apply%"),n=r("%Function.prototype.call%"),s=r("%Reflect.apply%",!0)||t.call(n,i),a=r("%Object.getOwnPropertyDescriptor%",!0),o=r("%Object.defineProperty%",!0),c=r("%Math.max%");if(o)try{o({},"a",{value:1})}catch(e){o=null}e.exports=function(e){var r=s(t,n,arguments);if(a&&o){var i=a(r,"length");i.configurable&&o(r,"length",{value:1+c(0,e.length-(arguments.length-1))})}return r};var d=function(){return s(t,i,arguments)};o?o(e.exports,"apply",{value:d}):e.exports.apply=d}(wp);var _p=bp,Sp=wp.exports,Rp=Sp(_p("String.prototype.indexOf")),kp=J(Object.freeze({__proto__:null,default:{}})),Pp="function"==typeof Map&&Map.prototype,Cp=Object.getOwnPropertyDescriptor&&Pp?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Tp=Pp&&Cp&&"function"==typeof Cp.get?Cp.get:null,Ep=Pp&&Map.prototype.forEach,Dp="function"==typeof Set&&Set.prototype,Mp=Object.getOwnPropertyDescriptor&&Dp?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,Op=Dp&&Mp&&"function"==typeof Mp.get?Mp.get:null,xp=Dp&&Set.prototype.forEach,Ip="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,Lp="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,jp="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,Ap=Boolean.prototype.valueOf,Fp=Object.prototype.toString,Np=Function.prototype.toString,Bp=String.prototype.match,Up="function"==typeof BigInt?BigInt.prototype.valueOf:null,qp=Object.getOwnPropertySymbols,$p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,zp="function"==typeof Symbol&&"object"==typeof Symbol.iterator,Vp=Object.prototype.propertyIsEnumerable,Wp=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),Gp=kp.custom,Hp=Gp&&Xp(Gp)?Gp:null,Kp="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function Qp(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function Jp(e){return String(e).replace(/"/g,""")}function Yp(e){return!("[object Array]"!==tl(e)||Kp&&"object"==typeof e&&Kp in e)}function Xp(e){if(zp)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!$p)return!1;try{return $p.call(e),!0}catch(e){}return!1}var Zp=Object.prototype.hasOwnProperty||function(e){return e in this};function el(e,t){return Zp.call(e,t)}function tl(e){return Fp.call(e)}function rl(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,i=e.length;r<i;r++)if(e[r]===t)return r;return-1}function il(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return il(e.slice(0,t.maxStringLength),t)+i}return Qp(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,nl),"single",t)}function nl(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+t.toString(16).toUpperCase()}function sl(e){return"Object("+e+")"}function al(e){return e+" { ? }"}function ol(e,t,r,i){return e+" ("+t+") {"+(i?cl(r,i):r.join(", "))+"}"}function cl(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function dl(e,t){var r=Yp(e),i=[];if(r){i.length=e.length;for(var n=0;n<e.length;n++)i[n]=el(e,n)?t(e[n],e):""}var s,a="function"==typeof qp?qp(e):[];if(zp){s={};for(var o=0;o<a.length;o++)s["$"+a[o]]=a[o]}for(var c in e)el(e,c)&&(r&&String(Number(c))===c&&c<e.length||zp&&s["$"+c]instanceof Symbol||(/[^\w$]/.test(c)?i.push(t(c,e)+": "+t(e[c],e)):i.push(c+": "+t(e[c],e))));if("function"==typeof qp)for(var d=0;d<a.length;d++)Vp.call(e,a[d])&&i.push("["+t(a[d])+"]: "+t(e[a[d]],e));return i}var pl=bp,ll=function(e,t){var r=_p(e,!!t);return"function"==typeof r&&Rp(e,".prototype.")>-1?Sp(r):r},ul=function e(t,r,i,n){var s=r||{};if(el(s,"quoteStyle")&&"single"!==s.quoteStyle&&"double"!==s.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(el(s,"maxStringLength")&&("number"==typeof s.maxStringLength?s.maxStringLength<0&&s.maxStringLength!==1/0:null!==s.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var a=!el(s,"customInspect")||s.customInspect;if("boolean"!=typeof a&&"symbol"!==a)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(el(s,"indent")&&null!==s.indent&&"\t"!==s.indent&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return il(t,s);if("number"==typeof t)return 0===t?1/0/t>0?"0":"-0":String(t);if("bigint"==typeof t)return String(t)+"n";var o=void 0===s.depth?5:s.depth;if(void 0===i&&(i=0),i>=o&&o>0&&"object"==typeof t)return Yp(t)?"[Array]":"[Object]";var c=function(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;r=Array(e.indent+1).join(" ")}return{base:r,prev:Array(t+1).join(r)}}(s,i);if(void 0===n)n=[];else if(rl(n,t)>=0)return"[Circular]";function d(t,r,a){if(r&&(n=n.slice()).push(r),a){var o={depth:s.depth};return el(s,"quoteStyle")&&(o.quoteStyle=s.quoteStyle),e(t,o,i+1,n)}return e(t,s,i+1,n)}if("function"==typeof t){var p=function(e){if(e.name)return e.name;var t=Bp.call(Np.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),l=dl(t,d);return"[Function"+(p?": "+p:" (anonymous)")+"]"+(l.length>0?" { "+l.join(", ")+" }":"")}if(Xp(t)){var u=zp?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):$p.call(t);return"object"!=typeof t||zp?u:sl(u)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(t)){for(var h="<"+String(t.nodeName).toLowerCase(),f=t.attributes||[],m=0;m<f.length;m++)h+=" "+f[m].name+"="+Qp(Jp(f[m].value),"double",s);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(Yp(t)){if(0===t.length)return"[]";var g=dl(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(rl(e[t],"\n")>=0)return!1;return!0}(g)?"["+cl(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==tl(e)||Kp&&"object"==typeof e&&Kp in e)}(t)){var y=dl(t,d);return 0===y.length?"["+String(t)+"]":"{ ["+String(t)+"] "+y.join(", ")+" }"}if("object"==typeof t&&a){if(Hp&&"function"==typeof t[Hp])return t[Hp]();if("symbol"!==a&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!Tp||!e||"object"!=typeof e)return!1;try{Tp.call(e);try{Op.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var v=[];return Ep.call(t,(function(e,r){v.push(d(r,t,!0)+" => "+d(e,t))})),ol("Map",Tp.call(t),v,c)}if(function(e){if(!Op||!e||"object"!=typeof e)return!1;try{Op.call(e);try{Tp.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return xp.call(t,(function(e){b.push(d(e,t))})),ol("Set",Op.call(t),b,c)}if(function(e){if(!Ip||!e||"object"!=typeof e)return!1;try{Ip.call(e,Ip);try{Lp.call(e,Lp)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return al("WeakMap");if(function(e){if(!Lp||!e||"object"!=typeof e)return!1;try{Lp.call(e,Lp);try{Ip.call(e,Ip)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return al("WeakSet");if(function(e){if(!jp||!e||"object"!=typeof e)return!1;try{return jp.call(e),!0}catch(e){}return!1}(t))return al("WeakRef");if(function(e){return!("[object Number]"!==tl(e)||Kp&&"object"==typeof e&&Kp in e)}(t))return sl(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!Up)return!1;try{return Up.call(e),!0}catch(e){}return!1}(t))return sl(d(Up.call(t)));if(function(e){return!("[object Boolean]"!==tl(e)||Kp&&"object"==typeof e&&Kp in e)}(t))return sl(Ap.call(t));if(function(e){return!("[object String]"!==tl(e)||Kp&&"object"==typeof e&&Kp in e)}(t))return sl(d(String(t)));if(!function(e){return!("[object Date]"!==tl(e)||Kp&&"object"==typeof e&&Kp in e)}(t)&&!function(e){return!("[object RegExp]"!==tl(e)||Kp&&"object"==typeof e&&Kp in e)}(t)){var w=dl(t,d),_=Wp?Wp(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",R=!_&&Kp&&Object(t)===t&&Kp in t?tl(t).slice(8,-1):S?"Object":"",k=(_||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(R||S?"["+[].concat(R||[],S||[]).join(": ")+"] ":"");return 0===w.length?k+"{}":c?k+"{"+cl(w,c)+"}":k+"{ "+w.join(", ")+" }"}return String(t)},hl=pl("%TypeError%"),fl=pl("%WeakMap%",!0),ml=pl("%Map%",!0),gl=ll("WeakMap.prototype.get",!0),yl=ll("WeakMap.prototype.set",!0),vl=ll("WeakMap.prototype.has",!0),bl=ll("Map.prototype.get",!0),wl=ll("Map.prototype.set",!0),_l=ll("Map.prototype.has",!0),Sl=function(e,t){for(var r,i=e;null!==(r=i.next);i=r)if(r.key===t)return i.next=r.next,r.next=e.next,e.next=r,r},Rl=String.prototype.replace,kl=/%20/g,Pl="RFC3986",Cl={default:Pl,formatters:{RFC1738:function(e){return Rl.call(e,kl,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:Pl},Tl=Cl,El=Object.prototype.hasOwnProperty,Dl=Array.isArray,Ml=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),Ol=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},i=0;i<e.length;++i)void 0!==e[i]&&(r[i]=e[i]);return r},xl={arrayToObject:Ol,assign:function(e,t){return Object.keys(t).reduce((function(e,r){return e[r]=t[r],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],i=0;i<t.length;++i)for(var n=t[i],s=n.obj[n.prop],a=Object.keys(s),o=0;o<a.length;++o){var c=a[o],d=s[c];"object"==typeof d&&null!==d&&-1===r.indexOf(d)&&(t.push({obj:s,prop:c}),r.push(d))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(Dl(r)){for(var i=[],n=0;n<r.length;++n)void 0!==r[n]&&i.push(r[n]);t.obj[t.prop]=i}}}(t),e},decode:function(e,t,r){var i=e.replace(/\+/g," ");if("iso-8859-1"===r)return i.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(i)}catch(e){return i}},encode:function(e,t,r,i,n){if(0===e.length)return e;var s=e;if("symbol"==typeof e?s=Symbol.prototype.toString.call(e):"string"!=typeof e&&(s=String(e)),"iso-8859-1"===r)return escape(s).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var a="",o=0;o<s.length;++o){var c=s.charCodeAt(o);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||n===Tl.RFC1738&&(40===c||41===c)?a+=s.charAt(o):c<128?a+=Ml[c]:c<2048?a+=Ml[192|c>>6]+Ml[128|63&c]:c<55296||c>=57344?a+=Ml[224|c>>12]+Ml[128|c>>6&63]+Ml[128|63&c]:(o+=1,c=65536+((1023&c)<<10|1023&s.charCodeAt(o)),a+=Ml[240|c>>18]+Ml[128|c>>12&63]+Ml[128|c>>6&63]+Ml[128|63&c])}return a},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(Dl(e)){for(var r=[],i=0;i<e.length;i+=1)r.push(t(e[i]));return r}return t(e)},merge:function e(t,r,i){if(!r)return t;if("object"!=typeof r){if(Dl(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!El.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var n=t;return Dl(t)&&!Dl(r)&&(n=Ol(t,i)),Dl(t)&&Dl(r)?(r.forEach((function(r,n){if(El.call(t,n)){var s=t[n];s&&"object"==typeof s&&r&&"object"==typeof r?t[n]=e(s,r,i):t.push(r)}else t[n]=r})),t):Object.keys(r).reduce((function(t,n){var s=r[n];return El.call(t,n)?t[n]=e(t[n],s,i):t[n]=s,t}),n)}},Il=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new hl("Side channel does not contain "+ul(e))},get:function(i){if(fl&&i&&("object"==typeof i||"function"==typeof i)){if(e)return gl(e,i)}else if(ml){if(t)return bl(t,i)}else if(r)return function(e,t){var r=Sl(e,t);return r&&r.value}(r,i)},has:function(i){if(fl&&i&&("object"==typeof i||"function"==typeof i)){if(e)return vl(e,i)}else if(ml){if(t)return _l(t,i)}else if(r)return function(e,t){return!!Sl(e,t)}(r,i);return!1},set:function(i,n){fl&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new fl),yl(e,i,n)):ml?(t||(t=new ml),wl(t,i,n)):(r||(r={key:{},next:null}),function(e,t,r){var i=Sl(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,n))}};return i},Ll=xl,jl=Cl,Al=Object.prototype.hasOwnProperty,Fl={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},Nl=Array.isArray,Bl=Array.prototype.push,Ul=function(e,t){Bl.apply(e,Nl(t)?t:[t])},ql=Date.prototype.toISOString,$l=jl.default,zl={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:Ll.encode,encodeValuesOnly:!1,format:$l,formatter:jl.formatters[$l],indices:!1,serializeDate:function(e){return ql.call(e)},skipNulls:!1,strictNullHandling:!1},Vl=function e(t,r,i,n,s,a,o,c,d,p,l,u,h,f,m){var g,y=t;if(m.has(t))throw new RangeError("Cyclic object value");if("function"==typeof o?y=o(r,y):y instanceof Date?y=p(y):"comma"===i&&Nl(y)&&(y=Ll.maybeMap(y,(function(e){return e instanceof Date?p(e):e}))),null===y){if(n)return a&&!h?a(r,zl.encoder,f,"key",l):r;y=""}if("string"==typeof(g=y)||"number"==typeof g||"boolean"==typeof g||"symbol"==typeof g||"bigint"==typeof g||Ll.isBuffer(y))return a?[u(h?r:a(r,zl.encoder,f,"key",l))+"="+u(a(y,zl.encoder,f,"value",l))]:[u(r)+"="+u(String(y))];var v,b=[];if(void 0===y)return b;if("comma"===i&&Nl(y))v=[{value:y.length>0?y.join(",")||null:void 0}];else if(Nl(o))v=o;else{var w=Object.keys(y);v=c?w.sort(c):w}for(var _=0;_<v.length;++_){var S=v[_],R="object"==typeof S&&void 0!==S.value?S.value:y[S];if(!s||null!==R){var k=Nl(y)?"function"==typeof i?i(r,S):r:r+(d?"."+S:"["+S+"]");m.set(t,!0);var P=Il();Ul(b,e(R,k,i,n,s,a,o,c,d,p,l,u,h,f,P))}}return b},Wl=xl,Gl=Object.prototype.hasOwnProperty,Hl=Array.isArray,Kl={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:Wl.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},Ql=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},Jl=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},Yl=function(e,t,r,i){if(e){var n=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,s=/(\[[^[\]]*])/g,a=r.depth>0&&/(\[[^[\]]*])/.exec(n),o=a?n.slice(0,a.index):n,c=[];if(o){if(!r.plainObjects&&Gl.call(Object.prototype,o)&&!r.allowPrototypes)return;c.push(o)}for(var d=0;r.depth>0&&null!==(a=s.exec(n))&&d<r.depth;){if(d+=1,!r.plainObjects&&Gl.call(Object.prototype,a[1].slice(1,-1))&&!r.allowPrototypes)return;c.push(a[1])}return a&&c.push("["+n.slice(a.index)+"]"),function(e,t,r,i){for(var n=i?t:Jl(t,r),s=e.length-1;s>=0;--s){var a,o=e[s];if("[]"===o&&r.parseArrays)a=[].concat(n);else{a=r.plainObjects?Object.create(null):{};var c="["===o.charAt(0)&&"]"===o.charAt(o.length-1)?o.slice(1,-1):o,d=parseInt(c,10);r.parseArrays||""!==c?!isNaN(d)&&o!==c&&String(d)===c&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(a=[])[d]=n:a[c]=n:a={0:n}}n=a}return n}(c,t,r,i)}},Xl=function(e,t){var r,i=e,n=function(e){if(!e)return zl;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||zl.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var r=jl.default;if(void 0!==e.format){if(!Al.call(jl.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=jl.formatters[r],n=zl.filter;return("function"==typeof e.filter||Nl(e.filter))&&(n=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:zl.addQueryPrefix,allowDots:void 0===e.allowDots?zl.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:zl.charsetSentinel,delimiter:void 0===e.delimiter?zl.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:zl.encode,encoder:"function"==typeof e.encoder?e.encoder:zl.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:zl.encodeValuesOnly,filter:n,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:zl.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:zl.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:zl.strictNullHandling}}(t);"function"==typeof n.filter?i=(0,n.filter)("",i):Nl(n.filter)&&(r=n.filter);var s,a=[];if("object"!=typeof i||null===i)return"";s=t&&t.arrayFormat in Fl?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var o=Fl[s];r||(r=Object.keys(i)),n.sort&&r.sort(n.sort);for(var c=Il(),d=0;d<r.length;++d){var p=r[d];n.skipNulls&&null===i[p]||Ul(a,Vl(i[p],p,o,n.strictNullHandling,n.skipNulls,n.encode?n.encoder:null,n.filter,n.sort,n.allowDots,n.serializeDate,n.format,n.formatter,n.encodeValuesOnly,n.charset,c))}var l=a.join(n.delimiter),u=!0===n.addQueryPrefix?"?":"";return n.charsetSentinel&&("iso-8859-1"===n.charset?u+="utf8=%26%2310003%3B&":u+="utf8=%E2%9C%93&"),l.length>0?u+l:""},Zl=function(e,t){var r=function(e){if(!e)return Kl;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?Kl.charset:e.charset;return{allowDots:void 0===e.allowDots?Kl.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:Kl.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:Kl.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:Kl.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Kl.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:Kl.comma,decoder:"function"==typeof e.decoder?e.decoder:Kl.decoder,delimiter:"string"==typeof e.delimiter||Wl.isRegExp(e.delimiter)?e.delimiter:Kl.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:Kl.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:Kl.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:Kl.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:Kl.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Kl.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){var r,i={},n=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,s=t.parameterLimit===1/0?void 0:t.parameterLimit,a=n.split(t.delimiter,s),o=-1,c=t.charset;if(t.charsetSentinel)for(r=0;r<a.length;++r)0===a[r].indexOf("utf8=")&&("utf8=%E2%9C%93"===a[r]?c="utf-8":"utf8=%26%2310003%3B"===a[r]&&(c="iso-8859-1"),o=r,r=a.length);for(r=0;r<a.length;++r)if(r!==o){var d,p,l=a[r],u=l.indexOf("]="),h=-1===u?l.indexOf("="):u+1;-1===h?(d=t.decoder(l,Kl.decoder,c,"key"),p=t.strictNullHandling?null:""):(d=t.decoder(l.slice(0,h),Kl.decoder,c,"key"),p=Wl.maybeMap(Jl(l.slice(h+1),t),(function(e){return t.decoder(e,Kl.decoder,c,"value")}))),p&&t.interpretNumericEntities&&"iso-8859-1"===c&&(p=Ql(p)),l.indexOf("[]=")>-1&&(p=Hl(p)?[p]:p),Gl.call(i,d)?i[d]=Wl.combine(i[d],p):i[d]=p}return i}(e,r):e,n=r.plainObjects?Object.create(null):{},s=Object.keys(i),a=0;a<s.length;++a){var o=s[a],c=Yl(o,i[o],r,"string"==typeof e);n=Wl.merge(n,c,r)}return!0===r.allowSparse?n:Wl.compact(n)},eu={formats:Cl,parse:Zl,stringify:Xl};class tu{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=Ud.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>eu.stringify(e)}),this.customNode=i}getNode(e){return a(this,void 0,void 0,(function*(){if(this.customNode)return this.customNode;const{data:t}=yield this.api.get("/nodes/best",{params:e});return t}))}}class ru{createSystem(e){return new Js({clientEventEmitter:e})}createMedia(){return new Vs}createNetwork(e){const{loadbalancer:t}=e,r=new pc,i=new tu(t);return new Qs({socketClient:r,loadBalancerApiClient:i})}createChannelEventHandler(e){return new Ys(e)}createMediaSoupEventHandler(e){return new Xs(e)}createIssueDetector(e){return new Wa({onIssue:t=>{t.forEach((t=>{e.logger.warn("webRtcIssueDetector",t)}))}})}}module.exports=class{constructor(e){var t,r;const{observer:i,network:n,onLogMessage:s}=e;this._observer=null!=i?i:new d;const a=new ru;this.engine=new Ks({dependenciesFactory:a,clientEventEmitter:this.observer,network:{loadbalancer:{baseURL:null===(t=null==n?void 0:n.loadbalancer)||void 0===t?void 0:t.baseURL,customNode:null===(r=null==n?void 0:n.loadbalancer)||void 0===r?void 0:r.customNode}},onLogMessage:s})}get observer(){return this._observer}get id(){return this.engine.mySocketId}get peers(){return this.engine.peers}get availableVideoDevices(){return this.engine.system.availableVideoDevices}get availableAudioDevices(){return this.engine.system.availableAudioDevices}detectDevices(){return a(this,void 0,void 0,(function*(){return yield this.engine.system.detectDevices(),{video:this.engine.system.availableVideoDevices,audio:this.engine.system.availableAudioDevices}}))}join(e){return this.engine.join(e)}leave(){return this.engine.release()}publish(e){return this.engine.publish(e)}unpublish(e){return this.engine.unpublish(e)}pause(e){return this.engine.pause(e)}resume(e){return this.engine.resume(e)}createCameraVideoTrack(e){return this.engine.createCameraVideoTrack(e)}createMicrophoneAudioTrack(e){return this.engine.createMicrophoneAudioTrack(e)}createScreenMediaTracks(e){return this.engine.createScreenMediaTracks(e)}deleteTrack(e){return this.engine.deleteTrack(e)}loadPeers(e){return this.engine.loadPeers(e)}};
|