twilio-video 2.35.0 → 2.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- /*! twilio-video.js 2.35.0
1
+ /*! twilio-video.js 2.36.0
2
2
 
3
3
  The following license applies to all parts of this software except as
4
4
  documented below.
@@ -35,4 +35,4 @@ documented below.
35
35
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
36
 
37
37
  */
38
- !function(e){var t={exports:{}},n=(t.exports,function(){function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function t(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var n=function e(){var n=!1;try{n=this instanceof e}catch{}return n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}),n}var n={exports:{}},i={},r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},o.apply(this,arguments)};function a(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]])}return n}function c(e,t,n,i){var r,s=arguments.length,o=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,n,o):r(t,n))||o);return s>3&&o&&Object.defineProperty(t,n,o),o}function l(e,t){return function(n,i){t(n,i,e)}}function d(e,t,n,i,r,s){function o(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var a,c=i.kind,l="getter"===c?"get":"setter"===c?"set":"value",d=!t&&e?i.static?e:e.prototype:null,u=t||(d?Object.getOwnPropertyDescriptor(d,i.name):{}),h=!1,p=n.length-1;p>=0;p--){var f={};for(var m in i)f[m]="access"===m?{}:i[m];for(var m in i.access)f.access[m]=i.access[m];f.addInitializer=function(e){if(h)throw new TypeError("Cannot add initializers after decoration has completed");s.push(o(e||null))};var g=(0,n[p])("accessor"===c?{get:u.get,set:u.set}:u[l],f);if("accessor"===c){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(a=o(g.get))&&(u.get=a),(a=o(g.set))&&(u.set=a),(a=o(g.init))&&r.unshift(a)}else(a=o(g))&&("field"===c?r.unshift(a):u[l]=a)}d&&Object.defineProperty(d,i.name,u),h=!0}function u(e,t,n){for(var i=arguments.length>2,r=0;r<t.length;r++)n=i?t[r].call(e,n):t[r].call(e);return i?n:void 0}function h(e){return"symbol"==typeof e?e:"".concat(e)}function p(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function f(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function m(e,t,n,i){return new(n||(n=Promise))(function(r,s){function o(e){try{c(i.next(e))}catch(e){s(e)}}function a(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,a)}c((i=i.apply(e,t||[])).next())})}function g(e,t){var n,i,r,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(s=0)),s;)try{if(n=1,i&&(r=2&a[0]?i.return:a[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,a[1])).done)return r;switch(i=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,i=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]<r[3])){s.label=a[1];break}if(6===a[0]&&s.label<r[1]){s.label=r[1],r=a;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(a);break}r[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],i=0}finally{n=r=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}var _=Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]};function v(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||_(t,e,n)}function b(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],i=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function y(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,r,s=n.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(i=s.next()).done;)o.push(i.value)}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return o}function k(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(y(arguments[t]));return e}function w(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var i=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],o=0,a=s.length;o<a;o++,r++)i[r]=s[o];return i}function S(e,t,n){if(n||2===arguments.length)for(var i,r=0,s=t.length;r<s;r++)!i&&r in t||(i||(i=Array.prototype.slice.call(t,0,r)),i[r]=t[r]);return e.concat(i||Array.prototype.slice.call(t))}function T(e){return this instanceof T?(this.v=e,this):new T(e)}function C(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,r=n.apply(e,t||[]),s=[];return i=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),o("next"),o("throw"),o("return",function(e){return function(t){return Promise.resolve(t).then(e,l)}}),i[Symbol.asyncIterator]=function(){return this},i;function o(e,t){r[e]&&(i[e]=function(t){return new Promise(function(n,i){s.push([e,t,n,i])>1||a(e,t)})},t&&(i[e]=t(i[e])))}function a(e,t){try{(n=r[e](t)).value instanceof T?Promise.resolve(n.value.v).then(c,l):d(s[0][2],n)}catch(e){d(s[0][3],e)}var n}function c(e){a("next",e)}function l(e){a("throw",e)}function d(e,t){e(t),s.shift(),s.length&&a(s[0][0],s[0][1])}}function P(e){var t,n;return t={},i("next"),i("throw",function(e){throw e}),i("return"),t[Symbol.iterator]=function(){return this},t;function i(i,r){t[i]=e[i]?function(t){return(n=!n)?{value:T(e[i](t)),done:!1}:r?r(t):t}:r}}function E(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(n){t[n]=e[n]&&function(t){return new Promise(function(i,r){(function(e,t,n,i){Promise.resolve(i).then(function(t){e({value:t,done:n})},t)})(i,r,(t=e[n](t)).done,t.value)})}}}function O(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var L=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},R=function(e){return R=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},R(e)};function I(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=R(e),i=0;i<n.length;i++)"default"!==n[i]&&_(t,e,n[i]);return L(t,e),t}function M(e){return e&&e.__esModule?e:{default:e}}function D(e,t,n,i){if("a"===n&&!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"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)}function A(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n}function x(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function j(e,t,n){if(null!=t){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object expected.");var i,r;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");i=t[Symbol.asyncDispose]}if(void 0===i){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");i=t[Symbol.dispose],n&&(r=i)}if("function"!=typeof i)throw new TypeError("Object not disposable.");r&&(i=function(){try{r.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:i,async:n})}else n&&e.stack.push({async:!0});return t}var $="function"==typeof SuppressedError?SuppressedError:function(e,t,n){var i=new Error(n);return i.name="SuppressedError",i.error=e,i.suppressed=t,i};function N(e){function t(t){e.error=e.hasError?new $(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}var n,i=0;return function r(){for(;n=e.stack.pop();)try{if(!n.async&&1===i)return i=0,e.stack.push(n),Promise.resolve().then(r);if(n.dispose){var s=n.dispose.call(n.value);if(n.async)return i|=2,Promise.resolve(s).then(r,function(e){return t(e),r()})}else i|=1}catch(e){t(e)}if(1===i)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}()}function V(e,t){return"string"==typeof e&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,i,r,s){return n?t?".jsx":".js":!i||r&&s?i+r+"."+s.toLowerCase()+"js":e}):e}var F,B,U,H,W={__extends:s,__assign:o,__rest:a,__decorate:c,__param:l,__esDecorate:d,__runInitializers:u,__propKey:h,__setFunctionName:p,__metadata:f,__awaiter:m,__generator:g,__createBinding:_,__exportStar:v,__values:b,__read:y,__spread:k,__spreadArrays:w,__spreadArray:S,__await:T,__asyncGenerator:C,__asyncDelegator:P,__asyncValues:E,__makeTemplateObject:O,__importStar:I,__importDefault:M,__classPrivateFieldGet:D,__classPrivateFieldSet:A,__classPrivateFieldIn:x,__addDisposableResource:j,__disposeResources:N,__rewriteRelativeImportExtension:V},q=t(Object.freeze({__proto__:null,__addDisposableResource:j,get __assign(){return o},__asyncDelegator:P,__asyncGenerator:C,__asyncValues:E,__await:T,__awaiter:m,__classPrivateFieldGet:D,__classPrivateFieldIn:x,__classPrivateFieldSet:A,__createBinding:_,__decorate:c,__disposeResources:N,__esDecorate:d,__exportStar:v,__extends:s,__generator:g,__importDefault:M,__importStar:I,__makeTemplateObject:O,__metadata:f,__param:l,__propKey:h,__read:y,__rest:a,__rewriteRelativeImportExtension:V,__runInitializers:u,__setFunctionName:p,__spread:k,__spreadArray:S,__spreadArrays:w,__values:b,default:W})),Q={},z={};function G(){if(H)return U;H=1;var e=function(){},t="undefined",n=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),i=["trace","debug","info","warn","error"];function r(e,t){var n=e[t];if("function"==typeof n.bind)return n.bind(e);try{return Function.prototype.bind.call(n,e)}catch(t){return function(){return Function.prototype.apply.apply(n,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function o(t,n){for(var r=0;r<i.length;r++){var s=i[r];this[s]=r<t?e:this.methodFactory(s,t,n)}this.log=this.debug}function a(e,n,i){return function(){typeof console!==t&&(o.call(this,n,i),this[e].apply(this,arguments))}}function c(i,o,c){return function(i){return"debug"===i&&(i="log"),typeof console!==t&&("trace"===i&&n?s:void 0!==console[i]?r(console,i):void 0!==console.log?r(console,"log"):e)}(i)||a.apply(this,arguments)}function l(e,n,r){var s,a=this,l="loglevel";function d(){var e;if(typeof window!==t&&l){try{e=window.localStorage[l]}catch(e){}if(typeof e===t)try{var n=window.document.cookie,i=n.indexOf(encodeURIComponent(l)+"=");-1!==i&&(e=/^([^;]+)/.exec(n.slice(i))[1])}catch(e){}return void 0===a.levels[e]&&(e=void 0),e}}"string"==typeof e?l+=":"+e:"symbol"==typeof e&&(l=void 0),a.name=e,a.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},a.methodFactory=r||c,a.getLevel=function(){return s},a.setLevel=function(n,r){if("string"==typeof n&&void 0!==a.levels[n.toUpperCase()]&&(n=a.levels[n.toUpperCase()]),!("number"==typeof n&&n>=0&&n<=a.levels.SILENT))throw"log.setLevel() called with invalid level: "+n;if(s=n,!1!==r&&function(e){var n=(i[e]||"silent").toUpperCase();if(typeof window!==t&&l){try{return void(window.localStorage[l]=n)}catch(e){}try{window.document.cookie=encodeURIComponent(l)+"="+n+";"}catch(e){}}}(n),o.call(a,n,e),typeof console===t&&n<a.levels.SILENT)return"No console available for logging"},a.setDefaultLevel=function(e){d()||a.setLevel(e,!1)},a.enableAll=function(e){a.setLevel(a.levels.TRACE,e)},a.disableAll=function(e){a.setLevel(a.levels.SILENT,e)};var u=d();null==u&&(u=null==n?"WARN":n),a.setLevel(u,!1)}var d=new l,u={};d.getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=u[e];return t||(t=u[e]=new l(e,d.getLevel(),d.methodFactory)),t};var h=typeof window!==t?window.log:void 0;return d.noConflict=function(){return typeof window!==t&&window.log===d&&(window.log=h),d},d.getLoggers=function(){return u},d.default=d,U=d}var K,Y,J,X,Z,ee={exports:{}},te={name:"twilio-video",version:"2.35.0"};function ne(){return K||(K=1,function(e){const t=te;e.exports.SDK_NAME=`${t.name}.js`,e.exports.SDK_VERSION=t.version,e.exports.SDP_FORMAT="unified",e.exports.hardwareDevicePublisheriPad={hwDeviceManufacturer:"Apple",hwDeviceModel:"iPad",hwDeviceType:"tablet",platformName:"iOS"},e.exports.hardwareDevicePublisheriPhone={hwDeviceManufacturer:"Apple",hwDeviceModel:"iPhone",hwDeviceType:"mobile",platformName:"iOS"},e.exports.DEFAULT_ENVIRONMENT="prod",e.exports.DEFAULT_REALM="us1",e.exports.DEFAULT_REGION="gll",e.exports.DEFAULT_LOG_LEVEL="warn",e.exports.DEFAULT_LOGGER_NAME="twilio-video",e.exports.WS_SERVER=(e,t)=>(t="gll"===t?"global":encodeURIComponent(t),"prod"===e?`wss://${t}.vss.twilio.com/signaling`:`wss://${t}.vss.${e}.twilio.com/signaling`),e.exports.PUBLISH_MAX_ATTEMPTS=5,e.exports.PUBLISH_BACKOFF_JITTER=10,e.exports.PUBLISH_BACKOFF_MS=20,e.exports.typeErrors={ILLEGAL_INVOKE:(e,t)=>new TypeError(`Illegal call to ${e}: ${t}`),INVALID_TYPE(e,t){return new TypeError(`${e} must be ${n=t,["a","e","i","o","u"].includes(n.toLowerCase()[0])?"an":"a"} ${t}`);var n},INVALID_VALUE:(e,t)=>new RangeError(`${e} must be one of ${t.join(", ")}`),REQUIRED_ARGUMENT:e=>new TypeError(`${e} must be specified`)},e.exports.DEFAULT_FRAME_RATE=24,e.exports.DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS=1e4,e.exports.DEFAULT_ICE_GATHERING_TIMEOUT_MS=15e3,e.exports.DEFAULT_SESSION_TIMEOUT_SEC=30,e.exports.DEFAULT_NQ_LEVEL_LOCAL=1,e.exports.DEFAULT_NQ_LEVEL_REMOTE=0,e.exports.MAX_NQ_LEVEL=3,e.exports.ICE_ACTIVITY_CHECK_PERIOD_MS=1e3,e.exports.ICE_INACTIVITY_THRESHOLD_MS=3e3,e.exports.iceRestartBackoffConfig={factor:1.1,min:1,max:1e3*e.exports.DEFAULT_SESSION_TIMEOUT_SEC,jitter:1},e.exports.reconnectBackoffConfig={factor:1.5,min:80,jitter:1},e.exports.subscriptionMode={MODE_COLLABORATION:"collaboration",MODE_GRID:"grid",MODE_PRESENTATION:"presentation"},e.exports.trackSwitchOffMode={MODE_DISABLED:"disabled",MODE_DETECTED:"detected",MODE_PREDICTED:"predicted"},e.exports.trackPriority={PRIORITY_HIGH:"high",PRIORITY_LOW:"low",PRIORITY_STANDARD:"standard"},e.exports.clientTrackSwitchOffControl={MODE_AUTO:"auto",MODE_MANUAL:"manual"},e.exports.videoContentPreferencesMode={MODE_AUTO:"auto",MODE_MANUAL:"manual"}}(ee)),ee.exports}function ie(){if(J)return Y;J=1;const e=G().getLogger,t=ne(),{DEFAULT_LOG_LEVEL:n,DEFAULT_LOGGER_NAME:i}=t,r=ne().typeErrors;let s;class o{constructor(t,s,a,c,l){if("string"!=typeof t)throw r.INVALID_TYPE("moduleName","string");if(!s)throw r.REQUIRED_ARGUMENT("component");"object"!=typeof a&&(a={}),l=l||e,u(a),Object.defineProperties(this,{_component:{value:s},_logLevels:{value:a},_warnings:{value:new Set},_loggerName:{get:function(){let e=c&&"string"==typeof c?c:i;return this._logLevelsEqual||(e=`${e}-${t}`),e}},_logger:{get:function(){const e=l(this._loggerName);let i=this._logLevels[t]||n;return i="off"===i?"silent":i,e.setDefaultLevel(i),e}},_logLevelsEqual:{get:function(){return 1===new Set(Object.values(this._logLevels)).size}},logLevel:{get:function(){return o.getLevelByName(a[t]||n)}},name:{get:s.toString.bind(s)}})}static getLevelByName(e){return isNaN(e)?(d(e=e.toUpperCase()),o[e]):parseInt(e,10)}createLog(e,t){let n=this._loggerName;return this._logLevelsEqual||(n=n.substring(0,n.lastIndexOf("-"))),new o(e,t,this._logLevels,n)}setLevels(e){return u(e),Object.assign(this._logLevels,e),this}log(e,t){let n=o._levels[e];if(!n)throw r.INVALID_VALUE("logLevel",c);n=n.toLowerCase();const i=[(new Date).toISOString(),n,this.name];return(this._logger[n]||function(){})(...i.concat(t)),this}debug(){return this.log(o.DEBUG,[].slice.call(arguments))}deprecated(e){const t=function(e){if(s=s||new Map,s.has(e))return s.get(e);const t=new Set;return s.set(e,t),t}(this._component.constructor);return t.has(e)?this:(t.add(e),this.warn(e))}info(){return this.log(o.INFO,[].slice.call(arguments))}warn(){return this.log(o.WARN,[].slice.call(arguments))}warnOnce(e){return this._warnings.has(e)?this:(this._warnings.add(e),this.warn(e))}error(){return this.log(o.ERROR,[].slice.call(arguments))}throw(e,t){throw e.clone&&(e=e.clone(t)),this.log(o.ERROR,e),e}}Object.defineProperties(o,{DEBUG:{value:0},INFO:{value:1},WARN:{value:2},ERROR:{value:3},OFF:{value:4},_levels:{value:["DEBUG","INFO","WARN","ERROR","OFF"]}});const a={},c=[],l=o._levels.map((e,t)=>(a[e]=!0,c.push(t),e));function d(e){if(!(e in a))throw r.INVALID_VALUE("level",l)}function u(e){Object.keys(e).forEach(t=>{d(e[t].toUpperCase())})}return Y=o}function re(){if(X)return z;X=1,Object.defineProperty(z,"__esModule",{value:!0}),z.createNoiseCancellationAudioProcessor=function(s,o){return e.__awaiter(this,void 0,void 0,function*(){let e=r.get(s.vendor);if(!e){let a=n[s.vendor];if(!a)throw new Error(`Unsupported NoiseCancellationOptions.vendor: ${s.vendor}`);const{supportedVersion:c,pluginFile:l}=a,d=s.sdkAssetsPath,u=`${d}/${l}`;try{o.debug("loading noise cancellation sdk: ",u);const n=yield t(u);o.debug("Loaded noise cancellation sdk:",n);const a=n.default;i({supportedVersion:c,plugin:a,log:o}),a.isInitialized()||(o.debug("initializing noise cancellation sdk: ",d),yield a.init({rootDir:d}),o.debug("noise cancellation sdk initialized!")),e={vendor:s.vendor,isInitialized:()=>a.isInitialized(),isConnected:()=>a.isConnected(),isEnabled:()=>a.isEnabled(),disconnect:()=>a.disconnect(),enable:()=>a.enable(),disable:()=>a.disable(),destroy:()=>a.destroy(),setLogging:e=>a.setLogging(e),connect:e=>{o.debug("connect: ",e.id),a.isConnected()&&a.disconnect();const t=a.connect(new MediaStream([e]));if(!t)throw new Error("Error connecting with noise cancellation sdk");const n=t.getAudioTracks()[0];if(!n)throw new Error("Error getting clean track from noise cancellation sdk");return a.enable(),n}},r.set(s.vendor,e)}catch(e){throw o.error(`Error loading noise cancellation sdk:${u}`,e),e}}return e})};const e=q,t=(B||(B=1,F=function(e){const{location:t,URL:n}=e;return[t,n].some(e=>!e)?function(e){return Promise.reject(new Error(`Failed to import: ${e}: dynamicImport is not supported`))}:(e.__twilioVideoImportedModules={},function(i){return i in e.__twilioVideoImportedModules?Promise.resolve(e.__twilioVideoImportedModules[i]):new Function("scope",`return import('${new n(i,t)}').then(m => scope.__twilioVideoImportedModules['${i}'] = m);`)(e)})}(globalThis)),F);ie();const n={krisp:{supportedVersion:"1.0.0",pluginFile:"krispsdk.mjs"},rnnoise:{supportedVersion:"0.6.0",pluginFile:"rnnoise_sdk.mjs"}},i=({supportedVersion:e,plugin:t,log:n})=>{if(!t.getVersion||!t.isSupported)throw new Error("Plugin does not export getVersion/isSupported api. Are you using old version of the plugin ?");const i=t.getVersion();n.debug(`Plugin Version = ${i}`);const r=e.split(".").map(e=>Number(e)),s=i.split(".").map(e=>Number(e));if(3!==r.length||3!==s.length)throw new Error(`Unsupported Plugin version format: ${e}, ${i}`);if(r[0]!==s[0])throw new Error(`Major version mismatch: [Plugin version ${i}], [Supported Version ${e}]`);if(s[1]<r[1])throw new Error(`Minor version mismatch: [Plugin version ${i}] < [Supported Version ${e}]`);const o=new AudioContext,a=t.isSupported(o);if(o.close(),!a)throw new Error("Noise Cancellation plugin is not supported on your browser")};let r=new Map;return z}var se,oe={},ae={};function ce(){if(se)return ae;function e(e,t,n,i){if(i in t)return;if(i.match(/^on[a-z]+$/))return;let r,s=!1;try{const t=Object.getOwnPropertyDescriptor(e,i);s=t&&!!t.get}catch(e){}if(!s){try{r=typeof e[i]}catch(e){}"function"===r&&(t[i]=function(){return this[n][i].apply(this[n],arguments)})}}function t(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:null}function n(e){return void 0===e&&(e=t()),/Chrome|CriOS/.test(e)?"chrome":/Firefox|FxiOS/.test(e)?"firefox":/Safari|iPhone|iPad|iPod/.test(e)?"safari":null}se=1;const i=new Map;return ae.clearCachedSupportedCodecs=function(){i.clear()},ae.defer=function(){const e={};return e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n}),e},ae.delegateMethods=function(t,n,i){for(const r in t)e(t,n,i,r)},ae.difference=function(e,t){e=Array.isArray(e)?new Set(e):new Set(e.values()),t=Array.isArray(t)?new Set(t):new Set(t.values());const n=new Set;return e.forEach(e=>{t.has(e)||n.add(e)}),n},ae.flatMap=function(e,t){return(e instanceof Map||e instanceof Set?Array.from(e.values()):e).reduce((e,n)=>e.concat(t(n)),[])},ae.guessBrowser=n,ae.guessBrowserVersion=function(e){void 0===e&&(e=t());const i={chrome:"Chrome|CriOS",firefox:"Firefox|FxiOS",safari:"Version"}[n(e)];if(!i)return null;const r=new RegExp(`(${i})/([^\\s]+)`),[,,s]=e.match(r)||[];if(!s)return null;const o=s.split(".").map(Number);return{major:isNaN(o[0])?null:o[0],minor:isNaN(o[1])?null:o[1]}},ae.isCodecSupported=function(e,t){const n=i.get(t);return n?Promise.resolve(n.has(e.toLowerCase())):function(e){if("undefined"!=typeof RTCRtpSender&&"function"==typeof RTCRtpSender.getCapabilities)return Promise.resolve(new Set(RTCRtpSender.getCapabilities(e).codecs.map(({mimeType:e})=>e.split("/")[1].toLowerCase())));if("undefined"==typeof RTCPeerConnection||void 0===RTCPeerConnection.prototype||"function"!=typeof RTCPeerConnection.prototype.addTransceiver||"function"!=typeof RTCPeerConnection.prototype.close||"function"!=typeof RTCPeerConnection.prototype.createOffer)return Promise.resolve(new Set);const t=new RTCPeerConnection;return t.addTransceiver(e),t.createOffer().then(({sdp:e})=>(t.close(),new Set((e.match(/^a=rtpmap:.+$/gm)||[]).map(e=>e.match(/^a=rtpmap:.+ ([^/]+)/)[1].toLowerCase()))),()=>(t.close(),new Set))}(t).then(n=>(i.set(t,n),n.has(e.toLowerCase())))},ae.isIOSChrome=function(e){return void 0===e&&(e=t()),/Mobi/.test(e)&&"chrome"===n()&&/iPad|iPhone|iPod/.test(e)},ae.interceptEvent=function(e,t){let n=null;Object.defineProperty(e,"on"+t,{get:function(){return n},set:function(e){n&&this.removeEventListener(t,n),"function"==typeof e?(n=e,this.addEventListener(t,n)):n=null}})},ae.legacyPromise=function(e,t,n){return t?e.then(t,n):e},ae.makeUUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})},ae.proxyProperties=function(e,t,n){Object.getOwnPropertyNames(e).forEach(e=>{!function(e,t,n,i){if(i in t)return;if(i.match(/^on[a-z]+$/))return Object.defineProperty(t,i,{value:null,writable:!0}),void n.addEventListener(i.slice(2),(...e)=>t.dispatchEvent(...e));Object.defineProperty(t,i,{enumerable:!0,get:function(){return n[i]}})}(0,t,n,e)})},ae.support=function(){return"object"==typeof navigator&&"object"==typeof navigator.mediaDevices&&"function"==typeof navigator.mediaDevices.getUserMedia&&"function"==typeof RTCPeerConnection},ae}var le,de,ue,he,pe,fe,me,ge,_e={};function ve(){if(le)return _e;le=1;const e="1234567890abcdef";function t(t){let n="";for(let t=0;t<32;t++)n+=e.charAt(Math.floor(16*Math.random()));return`${t}${n}`}return _e.sessionSID=t("SS"),_e.createSID=t,_e}function be(){if(ue)return de;ue=1;return de={recordingMediaLost:"recording-media-lost"}}function ye(){if(he)return oe;he=1;const e=ne(),{typeErrors:t,trackPriority:n}=e,i=ce(),{sessionSID:r}=ve(),s=be();function o(){return"undefined"!=typeof navigator&&navigator.userAgent?navigator.userAgent:"Unknown"}function a(e,t,n,i){if(i in t)return;if(i.match(/^on[a-z]+$/))return;let r;try{r=typeof e[i]}catch(e){}"function"===r&&(t[i]=function(...e){return this[n][i](...e)})}function c(e){return"object"==typeof e&&!Array.isArray(e)}function l(e){Object.getOwnPropertyNames(e).forEach(t=>{t.startsWith("_")&&d(e,t)})}function d(e,t){const n=Object.getOwnPropertyDescriptor(e,t);n.enumerable=!1,Object.defineProperty(e,t,n)}function u(e){return e.map(h)}function h(e){return Array.isArray(e)?u(e):e instanceof Set?(n=e,u([...n])):e instanceof Map?[...e.entries()].reduce((e,[t,n])=>Object.assign({[t]:h(n)},e),{}):e&&"object"==typeof e?(t=e,Object.entries(t).reduce((e,[t,n])=>Object.assign({[t]:h(n)},e),{})):e;var t,n}function p(e){return e?"true":"false"}function f(e){return _(e,[{prop:"dominantSpeakerPriority",type:"string",payloadProp:"active_speaker_priority"},{prop:"maxSubscriptionBitrate",type:"number",payloadProp:"max_subscription_bandwidth"},{prop:"maxTracks",type:"number",payloadProp:"max_tracks"},{prop:"mode",type:"string"},{prop:"renderDimensions",type:"object",payloadProp:"render_dimensions",transform:g},{prop:"trackSwitchOffMode",type:"string",payloadProp:"track_switch_off"}])}function m(e){return _(e,[{prop:"height",type:"number"},{prop:"width",type:"number"}])}function g(e){const{PRIORITY_HIGH:t,PRIORITY_LOW:i,PRIORITY_STANDARD:r}=n;return _(e,[{prop:t,type:"object",transform:m},{prop:i,type:"object",transform:m},{prop:r,type:"object",transform:m}])}function _(e,t){return t.reduce((t,{prop:n,type:i,payloadProp:r=n,transform:s=e=>e})=>typeof e[n]===i?Object.assign({[r]:s(e[n])},t):t,{})}return oe.constants=e,oe.createBandwidthProfilePayload=function(e){return _(e,[{prop:"video",type:"object",transform:f}])},oe.createMediaSignalingPayload=function(e,t,n,i,r,s,o){const a={transports:[{type:"data-channel"}]};return Object.assign(e?{active_speaker:a}:{},t?{network_quality:a}:{},s?{render_hints:a}:{},r?{publisher_hints:a}:{},n?{track_priority:a}:{},i?{track_switch_off:a}:{},o?{extension_transcriptions:a}:{})},oe.createMediaWarningsPayload=function(e){const t={[s.recordingMediaLost]:"recordings"};return e.map(e=>t[e]).filter(e=>!!e)},oe.createRoomConnectingEventPayload=function(e){const t={sessionSID:r,iceServers:(e.iceServers||[]).length,audioTracks:(e.tracks||[]).filter(e=>"audio"===e.kind).length,videoTracks:(e.tracks||[]).filter(e=>"video"===e.kind).length,dataTracks:(e.tracks||[]).filter(e=>"data"===e.kind).length};if([["audio"],["automaticSubscription"],["enableDscp"],["eventListener"],["preflight"],["video"],["dominantSpeaker","enableDominantSpeaker"]].forEach(([n,i])=>{t[i=i||n]=p(!!e[n])}),[["maxVideoBitrate"],["maxAudioBitrate"]].forEach(([n,i])=>{i=i||n,"number"==typeof e[n]?t[i]=e[n]:isNaN(Number(e[n]))||(t[i]=Number(e[n]))}),[["iceTransportPolicy"],["region"],["name","roomName"]].forEach(([n,i])=>{i=i||n,"string"==typeof e[n]?t[i]=e[n]:"number"==typeof e[n]&&"name"===n&&(t[i]=e[n].toString())}),["preferredAudioCodecs","preferredVideoCodecs"].forEach(n=>{n in e&&(t[n]=JSON.stringify(e[n]))}),"networkQuality"in e&&(t.networkQualityConfiguration={},c(e.networkQuality)?["local","remote"].forEach(n=>{"number"==typeof e.networkQuality[n]&&(t.networkQualityConfiguration[n]=e.networkQuality[n])}):(t.networkQualityConfiguration.remote=0,t.networkQualityConfiguration.local=e.networkQuality?1:0)),e.bandwidthProfile&&e.bandwidthProfile.video){const n=e.bandwidthProfile.video||{};t.bandwidthProfileOptions={},["mode","maxTracks","trackSwitchOffMode","dominantSpeakerPriority","maxSubscriptionBitrate","renderDimensions","contentPreferencesMode","clientTrackSwitchOffControl"].forEach(e=>{"number"==typeof n[e]||"string"==typeof n[e]?t.bandwidthProfileOptions[e]=n[e]:"boolean"==typeof n[e]?t.bandwidthProfileOptions[e]=p(n[e]):"object"==typeof n[e]&&(t.bandwidthProfileOptions[e]=JSON.stringify(n[e]))})}return Object.entries({RTCPeerConnection:"customRTCPeerConnectionImpl",MediaStream:"customMediaStreamImpl",getUserMedia:"customGetUserMediaImpl",enumerateDevices:"customEnumerateDevicesImpl"}).forEach(([n,i])=>{t[i]=p(void 0!==e[n])}),{group:"room",name:"connecting",level:"info",payload:t}},oe.createRoomConnectedEventPayload=function(){return{group:"room",name:"connected",level:"info"}},oe.boolToString=p,oe.createSubscribePayload=function(e){return{rules:[{type:e?"include":"exclude",all:!0}],revision:1}},oe.asLocalTrack=function(e,n){if(e instanceof n.LocalAudioTrack||e instanceof n.LocalVideoTrack||e instanceof n.LocalDataTrack)return e;if(e instanceof n.MediaStreamTrack)return"audio"===e.kind?new n.LocalAudioTrack(e,n):new n.LocalVideoTrack(e,n);throw t.INVALID_TYPE("track","LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack")},oe.asLocalTrackPublication=function(e,t,n,i){return new(0,{audio:i.LocalAudioTrackPublication,video:i.LocalVideoTrackPublication,data:i.LocalDataTrackPublication}[e.kind])(t,e,n,i)},oe.capitalize=function(e){return e[0].toUpperCase()+e.slice(1)},oe.deprecateEvents=function(e,t,n,i){const r=new Set;t.on("newListener",function s(o){n.has(o)&&!r.has(o)&&(i.deprecated(`${e}#${o} has been deprecated and scheduled for removal in twilio-video.js@2.0.0.${n.get(o)?` Use ${e}#${n.get(o)} instead.`:""}`),r.add(o)),r.size>=n.size&&t.removeListener("newListener",s)})},oe.difference=function(e,t){e=Array.isArray(e)?new Set(e):new Set(e.values()),t=Array.isArray(t)?new Set(t):new Set(t.values());const n=new Set;return e.forEach(e=>{t.has(e)||n.add(e)}),n},oe.filterObject=function(e,t){return Object.keys(e).reduce((n,i)=>(e[i]!==t&&(n[i]=e[i]),n),{})},oe.flatMap=function(e,t){const n=e instanceof Map||e instanceof Set?Array.from(e.values()):e;return t=t||function(e){return e},n.reduce((e,n)=>{const i=t(n);return e.concat(i)},[])},oe.getPlatform=function(){const e=o(),[,t="unknown"]=e.match(/\(([^)]+)\)/)||[],[n]=t.split(";").map(e=>e.trim());return n.toLowerCase()},oe.getUserAgent=o,oe.hidePrivateProperties=l,oe.hidePrivateAndCertainPublicPropertiesInClass=function(e,t){return class extends e{constructor(...e){super(...e),l(this),function(e,t=[]){t.forEach(t=>{e.hasOwnProperty(t)&&d(e,t)})}(this,t)}}},oe.isDeepEqual=function e(t,n){if(t===n)return!0;if(typeof t!=typeof n)return!1;if(null===t)return null===n;if(null===n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((t,i)=>e(t,n[i]));if("object"==typeof t){const i=Object.keys(t).sort(),r=Object.keys(n).sort();return!Array.isArray(n)&&e(i,r)&&i.every(i=>e(t[i],n[i]))}return!1},oe.isNonArrayObject=c,oe.inRange=function(e,t,n){return t<=e&&e<=n},oe.makeUUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})},oe.oncePerTick=function(e){let t=null;function n(){t=null,e()}return function(){t&&clearTimeout(t),t=setTimeout(n)}},oe.promiseFromEvents=function(e,t,n,i){return new Promise((r,s)=>{function o(){const e=[].slice.call(arguments);i&&t.removeListener(i,a),r(...e)}function a(){const e=[].slice.call(arguments);t.removeListener(n,o),s(...e)}t.once(n,o),i&&t.once(i,a),e()})},oe.getOrNull=function(e,t){return t.split(".").reduce((e,t)=>e?e[t]:null,e)},oe.defer=function(){const e={};return e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n}),e},oe.delegateMethods=function(e,t,n){for(const i in e)a(e,t,n,i)},oe.proxyProperties=function(e,t,n){Object.getOwnPropertyNames(e).forEach(e=>{!function(e,t,n,i){if(i in t)return;if(i.match(/^on[a-z]+$/))return Object.defineProperty(t,i,{value:null,writable:!0}),void n.addEventListener(i.slice(2),function(...e){t.dispatchEvent(...e)});Object.defineProperty(t,i,{enumerable:!0,get:()=>n[i]})}(0,t,n,e)})},oe.legacyPromise=function(e,t,n){return t?e.then(e=>{t(e)},e=>{n(e)}):e},oe.buildLogLevels=function(e){return"string"==typeof e?{default:e,media:e,signaling:e,webrtc:e}:e},oe.trackClass=function(e,t){return`${(t=t?"Local":"")+(e.kind||"").replace(/\w{1}/,e=>e.toUpperCase())}Track`},oe.trackPublicationClass=function(e,t){return`${(t=t?"Local":"")+(e.kind||"").replace(/\w{1}/,e=>e.toUpperCase())}TrackPublication`},oe.valueToJSON=h,oe.withJitter=function(e,t){const n=Math.random();return e-t+Math.floor(2*t*n+.5)},oe.isChromeScreenShareTrack=function(e){return"chrome"===i.guessBrowser()&&"video"===e.kind&&"displaySurface"in e.getSettings()},oe.waitForSometime=function(e=10){return new Promise(t=>setTimeout(t,e))},oe.waitForEvent=function(e,t){return new Promise(n=>{e.addEventListener(t,function i(r){e.removeEventListener(t,i),n(r)})})},oe}function ke(){if(fe)return pe;fe=1;const{flatMap:e,guessBrowser:t,guessBrowserVersion:n}=ce(),i=t(),r=n(),s="chrome"===i,o="firefox"===i,a="safari"===i,c=s?r.major:null;function l(e,t){return"function"==typeof e.get?e.get(t):e.find(e=>e.id===t)}function d(e){const t=Array.from(e.values()).find(({nominated:e,type:t})=>"candidate-pair"===t&&e);if(!t)return null;const n=l(e,t.localCandidateId),i=l(e,t.remoteCandidateId),r=[{key:"candidateType",type:"string"},{key:"ip",type:"string"},{key:"port",type:"number"},{key:"priority",type:"number"},{key:"protocol",type:"string"},{key:"url",type:"string"}],s=r.concat([{key:"deleted",type:"boolean"},{key:"relayProtocol",type:"string"},{key:"networkType",type:"string"}]),o=n?s.reduce((e,{key:t,type:i})=>(e[t]=typeof n[t]===i?n[t]:"deleted"!==t&&null,e),{}):null,a=i?r.reduce((e,{key:t,type:n})=>(e[t]=typeof i[t]===n?i[t]:null,e),{}):null;return[{key:"availableIncomingBitrate",type:"number"},{key:"availableOutgoingBitrate",type:"number"},{key:"bytesReceived",type:"number"},{key:"bytesSent",type:"number"},{key:"consentRequestsSent",type:"number"},{key:"currentRoundTripTime",type:"number"},{key:"lastPacketReceivedTimestamp",type:"number"},{key:"lastPacketSentTimestamp",type:"number"},{key:"nominated",type:"boolean"},{key:"priority",type:"number"},{key:"readable",type:"boolean"},{key:"requestsReceived",type:"number"},{key:"requestsSent",type:"number"},{key:"responsesReceived",type:"number"},{key:"responsesSent",type:"number"},{key:"retransmissionsReceived",type:"number"},{key:"retransmissionsSent",type:"number"},{key:"state",type:"string",fixup:e=>"inprogress"===e?"in-progress":e},{key:"totalRoundTripTime",type:"number"},{key:"transportId",type:"string"},{key:"writable",type:"boolean"}].reduce((e,{key:n,type:i,fixup:r})=>(e[n]=typeof t[n]===i?r?r(t[n]):t[n]:null,e),{localCandidate:o,remoteCandidate:a})}function u(e){const t=Array.from(e.values()).find(({nominated:e,type:t})=>"candidate-pair"===t&&e);if(!t)return null;const n=l(e,t.localCandidateId),i=l(e,t.remoteCandidateId),r=[{key:"candidateType",type:"string"},{key:"ip",ffKeys:["address","ipAddress"],type:"string"},{key:"port",ffKeys:["portNumber"],type:"number"},{key:"priority",type:"number"},{key:"protocol",ffKeys:["transport"],type:"string"},{key:"url",type:"string"}],s=r.concat([{key:"deleted",type:"boolean"},{key:"relayProtocol",type:"string"}]),o={host:"host",peerreflexive:"prflx",relayed:"relay",serverreflexive:"srflx"},a=n?s.reduce((e,{ffKeys:t,key:i,type:r})=>{const s=t&&t.find(e=>e in n)||i;return e[i]=typeof n[s]===r?"candidateType"===s&&o[n[s]]||n[s]:"deleted"!==s&&null,e},{}):null,c=i?r.reduce((e,{ffKeys:t,key:n,type:r})=>{const s=t&&t.find(e=>e in i)||n;return e[n]=typeof i[s]===r?"candidateType"===s&&o[i[s]]||i[s]:null,e},{}):null;return[{key:"availableIncomingBitrate",type:"number"},{key:"availableOutgoingBitrate",type:"number"},{key:"bytesReceived",type:"number"},{key:"bytesSent",type:"number"},{key:"consentRequestsSent",type:"number"},{key:"currentRoundTripTime",type:"number"},{key:"lastPacketReceivedTimestamp",type:"number"},{key:"lastPacketSentTimestamp",type:"number"},{key:"nominated",type:"boolean"},{key:"priority",type:"number"},{key:"readable",type:"boolean"},{key:"requestsReceived",type:"number"},{key:"requestsSent",type:"number"},{key:"responsesReceived",type:"number"},{key:"responsesSent",type:"number"},{key:"retransmissionsReceived",type:"number"},{key:"retransmissionsSent",type:"number"},{key:"state",type:"string"},{key:"totalRoundTripTime",type:"number"},{key:"transportId",type:"string"},{key:"writable",type:"boolean"}].reduce((e,{key:n,type:i})=>(e[n]=typeof t[n]===i?t[n]:null,e),{localCandidate:a,remoteCandidate:c})}function h(e,t,n){return e["local"===n?"getSenders":"getReceivers"]().map(({track:e})=>e).filter(e=>e&&e.kind===t)}function p(e,t,n){const i=n.log;return c&&c<67?new Promise((n,i)=>{e.getStats(e=>{n([f(e,t)])},null,i)}):e.getStats(t).then(e=>(i.info("getStats by track successful"),m(e,n))).catch(()=>(i.warn("getStats by track failed. Getting default stats"),e.getStats().then(r=>{i.info("getStats by default successful");const s=function(e,t){if(!e||!t)return!1;if(e.getReceivers){const n=e.getReceivers();for(const e of n)if(e.track&&e.track.id===t.id)return!0}if(e.getRemoteStreams){const n=e.getRemoteStreams();for(const e of n){const n=e.getTracks();for(const e of n)if(e.id===t.id)return!0}}return!1}(e,t);i.info(`Starting filtering stats for ${s?"remote":"local"} track`);const o=function(e,t,n=!1){let i;if(Array.isArray(e))i=new Map(e.map(e=>[e.id||String(Math.random()),e]));else if(e instanceof Map)i=e;else{if("object"!=typeof e||null===e)return new Map;{const t=new Map;Object.keys(e).forEach(n=>{t.set(n,e[n])}),i=t}}if(!i||!t)return new Map;const r=new Map,s=t.id,o=t.kind;let a=null,c=null,l=null;for(const[e,t]of i){if(n&&"inbound-rtp"===t.type&&t.trackIdentifier===s){a=t,c=e,l=t.ssrc;break}if(!n&&"media-source"===t.type&&t.trackIdentifier===s){a=t,c=e;break}"track"===t.type&&t.trackIdentifier===s&&(a||(a=t,c=e))}if(!a)if(n){const e=[];for(const[t,n]of i)"inbound-rtp"!==n.type||n.kind!==o&&n.mediaType!==o||e.push({id:t,stat:n});(1===e.length||e.length>1)&&(a=e[0].stat,c=e[0].id,l=a.ssrc)}else for(const[e,t]of i)if("media-source"===t.type&&t.kind===o){a=t,c=e;break}if(!a)return r;r.set(c,a);const d=new Set;if(n){if(a.codecId&&d.add(a.codecId),a.transportId&&d.add(a.transportId),a.remoteId&&d.add(a.remoteId),l)for(const[e,t]of i)"remote-outbound-rtp"===t.type&&t.ssrc===l&&d.add(e);for(const e of d)i.has(e)&&r.set(e,i.get(e));for(const[e,t]of i)"track"===t.type&&t.trackIdentifier===s&&r.set(e,t)}else{for(const[e,t]of i)if("outbound-rtp"===t.type&&t.mediaSourceId===c){r.set(e,t),t.codecId&&d.add(t.codecId),t.transportId&&d.add(t.transportId);const n=e;for(const[e,t]of i)"remote-inbound-rtp"===t.type&&t.localId===n&&r.set(e,t)}for(const e of d)i.has(e)&&r.set(e,i.get(e))}let u=null;const h=new Set;for(const e of r.values())e.transportId&&h.add(e.transportId);for(const e of h)if(i.has(e)){const t=i.get(e);r.set(e,t),t.selectedCandidatePairId&&(u=t.selectedCandidatePairId),t.localCertificateId&&i.has(t.localCertificateId)&&r.set(t.localCertificateId,i.get(t.localCertificateId)),t.remoteCertificateId&&i.has(t.remoteCertificateId)&&r.set(t.remoteCertificateId,i.get(t.remoteCertificateId))}if(u&&i.has(u)){const e=i.get(u);r.set(u,e),e.localCandidateId&&i.has(e.localCandidateId)&&r.set(e.localCandidateId,i.get(e.localCandidateId)),e.remoteCandidateId&&i.has(e.remoteCandidateId)&&r.set(e.remoteCandidateId,i.get(e.remoteCandidateId))}return r}(r,t,s);return i.info(`Completed filtering stats for ${s?"remote":"local"} track`),m(o,n)})))}function f(e,t){const n=e.result().find(e=>"ssrc"===e.type&&e.stat("googTrackId")===t.id);let i={};return n&&(i.timestamp=Math.round(Number(n.timestamp)),i=n.names().reduce((e,t)=>{switch(t){case"googCodecName":e.codecName=n.stat(t);break;case"googRtt":e.roundTripTime=Number(n.stat(t));break;case"googJitterReceived":e.jitter=Number(n.stat(t));break;case"googFrameWidthInput":e.frameWidthInput=Number(n.stat(t));break;case"googFrameHeightInput":e.frameHeightInput=Number(n.stat(t));break;case"googFrameWidthSent":e.frameWidthSent=Number(n.stat(t));break;case"googFrameHeightSent":e.frameHeightSent=Number(n.stat(t));break;case"googFrameWidthReceived":e.frameWidthReceived=Number(n.stat(t));break;case"googFrameHeightReceived":e.frameHeightReceived=Number(n.stat(t));break;case"googFrameRateInput":e.frameRateInput=Number(n.stat(t));break;case"googFrameRateSent":e.frameRateSent=Number(n.stat(t));break;case"googFrameRateReceived":e.frameRateReceived=Number(n.stat(t));break;case"ssrc":e[t]=n.stat(t);break;case"bytesReceived":case"bytesSent":case"packetsLost":case"packetsReceived":case"packetsSent":case"audioInputLevel":case"audioOutputLevel":e[t]=Number(n.stat(t))}return e},i)),i}function m(e,{simulateExceptionWhileStandardizingStats:t=!1}){if(t)throw new Error("Error while gathering stats");let n=null;const i=[];let r=null,s=null,o=null,a=null,c=null;e.forEach(e=>{const{type:t}=e;switch(t){case"inbound-rtp":n=e;break;case"outbound-rtp":i.push(e);break;case"media-source":c=e;break;case"track":o=e;break;case"codec":a=e;break;case"remote-inbound-rtp":r=e;break;case"remote-outbound-rtp":s=e}});const l=o?o.remoteSource:!c,d=[],u=l?s:r;return(l?[n]:i).forEach(e=>{const t={},n=[e,c,o,a,u&&u.ssrc===e.ssrc?u:null];function i(e){const t=n.find(t=>t&&void 0!==t[e])||null;return t?t[e]:null}const r=i("ssrc");"number"==typeof r&&(t.ssrc=String(r));const s=i("timestamp");t.timestamp=Math.round(s);let h=i("mimeType");"string"==typeof h&&(h=h.split("/"),t.codecName=h[h.length-1]);const p=i("roundTripTime");"number"==typeof p&&(t.roundTripTime=Math.round(1e3*p));const f=i("jitter");"number"==typeof f&&(t.jitter=Math.round(1e3*f));const m=i("frameWidth");"number"==typeof m&&(l?t.frameWidthReceived=m:(t.frameWidthSent=m,t.frameWidthInput=o?o.frameWidth:c.width));const g=i("frameHeight");"number"==typeof g&&(l?t.frameHeightReceived=g:(t.frameHeightSent=g,t.frameHeightInput=o?o.frameHeight:c.height));const _=i("framesPerSecond");"number"!=typeof _&&null!==_||(t[l?"frameRateReceived":"frameRateSent"]=_);const v=i("qualityLimitationReason");"string"==typeof v&&(t.qualityLimitationReason=v);const b=i("bytesReceived");"number"==typeof b&&(t.bytesReceived=b);const y=i("bytesSent");"number"==typeof y&&(t.bytesSent=y);const k=i("packetsLost");"number"==typeof k&&(t.packetsLost=k);const w=i("packetsReceived");"number"==typeof w&&(t.packetsReceived=w);const S=i("packetsSent");"number"==typeof S&&(t.packetsSent=S);let T=i("audioLevel");"number"==typeof T&&(T=Math.round(32767*T),l?t.audioOutputLevel=T:t.audioInputLevel=T);const C=i("totalPacketSendDelay");"number"==typeof C&&(t.totalPacketSendDelay=C);const P=i("totalEncodeTime");"number"==typeof P&&(t.totalEncodeTime=P);const E=i("framesEncoded");"number"==typeof E&&(t.framesEncoded=E);const O=i("estimatedPlayoutTimestamp");"number"==typeof O&&(t.estimatedPlayoutTimestamp=O);const L=i("totalDecodeTime");"number"==typeof L&&(t.totalDecodeTime=L);const R=i("framesDecoded");"number"==typeof R&&(t.framesDecoded=R);const I=i("jitterBufferDelay");"number"==typeof I&&(t.jitterBufferDelay=I);const M=i("jitterBufferEmittedCount");"number"==typeof M&&(t.jitterBufferEmittedCount=M);const D=i("freezeCount");"number"==typeof D&&(t.freezeCount=D),d.push(t)}),d}function g(e=new Map,{isRemote:t,simulateExceptionWhileStandardizingStats:n=!1}){if(n)throw new Error("Error while gathering stats");let i=null,r=null;e.forEach(t=>{const{isRemote:n,remoteId:s,type:o}=t;if(!n)switch(o){case"inbound-rtp":i=t,r=l(e,s);break;case"outbound-rtp":r=t,i=l(e,s)}});const s=t?i:r,o=t?r:i;function a(e){return s&&void 0!==s[e]?s[e]:o&&void 0!==o[e]?o[e]:null}const c={},d=a("timestamp");c.timestamp=Math.round(d);const u=a("ssrc");"number"==typeof u&&(c.ssrc=String(u));const h=a("bytesSent");"number"==typeof h&&(c.bytesSent=h);const p=a("packetsLost");"number"==typeof p&&(c.packetsLost=p);const f=a("packetsSent");"number"==typeof f&&(c.packetsSent=f);const m=a("roundTripTime");"number"==typeof m&&(c.roundTripTime=Math.round(1e3*m));const g=a("jitter");"number"==typeof g&&(c.jitter=Math.round(1e3*g));const _=a("framesPerSecond");"number"!=typeof _&&null!==_||(c.frameRateSent=_);const v=a("bytesReceived");"number"==typeof v&&(c.bytesReceived=v);const b=a("packetsReceived");"number"==typeof b&&(c.packetsReceived=b);const y=a("framesPerSecond");"number"!=typeof y&&null!==y||(c.frameRateReceived=y);const k=a("totalPacketSendDelay");"number"==typeof k&&(c.totalPacketSendDelay=k);const w=a("totalEncodeTime");"number"==typeof w&&(c.totalEncodeTime=w);const S=a("framesEncoded");"number"==typeof S&&(c.framesEncoded=S);const T=a("estimatedPlayoutTimestamp");"number"==typeof T&&(c.estimatedPlayoutTimestamp=T);const C=a("totalDecodeTime");"number"==typeof C&&(c.totalDecodeTime=C);const P=a("framesDecoded");"number"==typeof P&&(c.framesDecoded=P);const E=a("jitterBufferDelay");"number"==typeof E&&(c.jitterBufferDelay=E);const O=a("jitterBufferEmittedCount");"number"==typeof O&&(c.jitterBufferEmittedCount=O);const L=a("freezeCount");return"number"==typeof L&&(c.freezeCount=L),c}return pe=function(t,n){return t&&"function"==typeof t.getStats?function(t,n){const i=h(t,"audio","local"),r=h(t,"video","local"),c=h(t,"audio"),l=h(t,"video"),f={activeIceCandidatePair:null,localAudioTrackStats:[],localVideoTrackStats:[],remoteAudioTrackStats:[],remoteVideoTrackStats:[]},m=e([[i,"localAudioTrackStats",!1],[r,"localVideoTrackStats",!1],[c,"remoteAudioTrackStats",!0],[l,"remoteVideoTrackStats",!0]],([e,i,r])=>e.map(e=>function(e,t,n={}){if(void 0!==n.testForChrome||s)return p(e,t,n);if(void 0!==n.testForFirefox||o)return function(e,t,n){return e.getStats(t).then(e=>[g(e,n)])}(e,t,n);if(void 0!==n.testForSafari||a)return p(e,t,n);return Promise.reject(new Error("RTCPeerConnection#getStats() not supported"))}(t,e,Object.assign({isRemote:r},n)).then(t=>{t.forEach(t=>{t.trackId=e.id,f[i].push(t)})})));return Promise.all(m).then(()=>function(e,t={}){if(void 0!==t.testForChrome||s||void 0!==t.testForSafari||a)return e.getStats().then(d);if(void 0!==t.testForFirefox||o)return e.getStats().then(u);return Promise.reject(new Error("RTCPeerConnection#getStats() not supported"))}(t,n)).then(e=>(f.activeIceCandidatePair=e,f))}(t,n):Promise.reject(new Error("Given PeerConnection does not support getStats"))},pe}function we(){if(ge)return me;return ge=1,me=function(e={audio:!0,video:!0}){return"object"==typeof navigator&&"object"==typeof navigator.mediaDevices&&"function"==typeof navigator.mediaDevices.getUserMedia?navigator.mediaDevices.getUserMedia(e):Promise.reject(new Error("getUserMedia is not supported"))}}var Se,Te,Ce,Pe,Ee,Oe={exports:{}},Le={exports:{}};function Re(){if(Se)return Le.exports;Se=1;var e,t="object"==typeof Reflect?Reflect:null,n=t&&"function"==typeof t.apply?t.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};e=t&&"function"==typeof t.ownKeys?t.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var i=Number.isNaN||function(e){return e!=e};function r(){r.init.call(this)}Le.exports=r,Le.exports.once=function(e,t){return new Promise(function(n,i){function r(n){e.removeListener(t,s),i(n)}function s(){"function"==typeof e.removeListener&&e.removeListener("error",r),n([].slice.call(arguments))}f(e,t,s,{once:!0}),"error"!==t&&function(e,t,n){"function"==typeof e.on&&f(e,"error",t,n)}(e,r,{once:!0})})},r.EventEmitter=r,r.prototype._events=void 0,r.prototype._eventsCount=0,r.prototype._maxListeners=void 0;var s=10;function o(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function a(e){return void 0===e._maxListeners?r.defaultMaxListeners:e._maxListeners}function c(e,t,n,i){var r,s,c,l;if(o(n),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),s=e._events),c=s[t]),void 0===c)c=s[t]=n,++e._eventsCount;else if("function"==typeof c?c=s[t]=i?[n,c]:[c,n]:i?c.unshift(n):c.push(n),(r=a(e))>0&&c.length>r&&!c.warned){c.warned=!0;var d=new Error("Possible EventEmitter memory leak detected. "+c.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");d.name="MaxListenersExceededWarning",d.emitter=e,d.type=t,d.count=c.length,l=d,console&&console.warn&&console.warn(l)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,n){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},r=l.bind(i);return r.listener=n,i.wrapFn=r,r}function u(e,t,n){var i=e._events;if(void 0===i)return[];var r=i[t];return void 0===r?[]:"function"==typeof r?n?[r.listener||r]:[r]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(r):p(r,r.length)}function h(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function p(e,t){for(var n=new Array(t),i=0;i<t;++i)n[i]=e[i];return n}function f(e,t,n,i){if("function"==typeof e.on)i.once?e.once(t,n):e.on(t,n);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,function r(s){i.once&&e.removeEventListener(t,r),n(s)})}}return Object.defineProperty(r,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e||e<0||i(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");s=e}}),r.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},r.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||i(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},r.prototype.getMaxListeners=function(){return a(this)},r.prototype.emit=function(e){for(var t=[],i=1;i<arguments.length;i++)t.push(arguments[i]);var r="error"===e,s=this._events;if(void 0!==s)r=r&&void 0===s.error;else if(!r)return!1;if(r){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var c=s[e];if(void 0===c)return!1;if("function"==typeof c)n(c,this,t);else{var l=c.length,d=p(c,l);for(i=0;i<l;++i)n(d[i],this,t)}return!0},r.prototype.addListener=function(e,t){return c(this,e,t,!1)},r.prototype.on=r.prototype.addListener,r.prototype.prependListener=function(e,t){return c(this,e,t,!0)},r.prototype.once=function(e,t){return o(t),this.on(e,d(this,e,t)),this},r.prototype.prependOnceListener=function(e,t){return o(t),this.prependListener(e,d(this,e,t)),this},r.prototype.removeListener=function(e,t){var n,i,r,s,a;if(o(t),void 0===(i=this._events))return this;if(void 0===(n=i[e]))return this;if(n===t||n.listener===t)0===--this._eventsCount?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(r=-1,s=n.length-1;s>=0;s--)if(n[s]===t||n[s].listener===t){a=n[s].listener,r=s;break}if(r<0)return this;0===r?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,r),1===n.length&&(i[e]=n[0]),void 0!==i.removeListener&&this.emit("removeListener",e,a||t)}return this},r.prototype.off=r.prototype.removeListener,r.prototype.removeAllListeners=function(e){var t,n,i;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0===--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var r,s=Object.keys(n);for(i=0;i<s.length;++i)"removeListener"!==(r=s[i])&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(i=t.length-1;i>=0;i--)this.removeListener(e,t[i]);return this},r.prototype.listeners=function(e){return u(this,e,!0)},r.prototype.rawListeners=function(e){return u(this,e,!1)},r.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):h.call(e,t)},r.prototype.listenerCount=h,r.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]},Le.exports}function Ie(){if(Ce)return Te;Ce=1;const{EventEmitter:e}=Re();return Te=class{constructor(){Object.defineProperties(this,{_eventEmitter:{value:new e}})}dispatchEvent(e){return this._eventEmitter.emit(e.type,e)}addEventListener(){return this._eventEmitter.addListener(...arguments)}removeEventListener(){return this._eventEmitter.removeListener(...arguments)}},Te}function Me(){if(Ee)return Pe;Ee=1;const{defer:e}=ce(),t={high:new Set(["low"]),low:new Set(["high"])};function n(e,t){return new Error(`Cannot transition from "${e}" to "${t}"`)}return Pe=class{constructor(e="low"){let t=e;Object.defineProperties(this,{_state:{set:function(e){if(t!==e){t=e;const n=this._whenDeferreds.get(t);n.forEach(e=>e.resolve(this)),n.clear()}},get:function(){return t}},_whenDeferreds:{value:new Map([["high",new Set],["low",new Set]])}})}get state(){return this._state}lower(){return this.transition("low")}raise(){return this.transition("high")}transition(e){if(!t[this.state].has(e))throw n(this.state,e);return this._state=e,this}when(i){if(this.state===i)return Promise.resolve(this);if(!t[this.state].has(i))return Promise.reject(n(this.state,i));const r=e();return this._whenDeferreds.get(i).add(r),r.promise}}}var De,Ae,xe,je,$e,Ne,Ve,Fe,Be,Ue,He,We,qe,Qe,ze,Ge,Ke,Ye,Je,Xe,Ze,et,tt,nt,it,rt,st,ot,at,ct,lt,dt,ut,ht,pt,ft,mt,gt,_t,vt,bt,yt,kt,wt,St,Tt,Ct,Pt,Et,Ot,Lt,Rt,It,Mt,Dt,At,xt,jt,$t,Nt,Vt,Ft,Bt,Ut,Ht,Wt,qt,Qt,zt,Gt,Kt,Yt,Jt,Xt,Zt,en,tn,nn,rn,sn,on,an,cn,ln,dn={};function un(){if(De)return dn;De=1;const{flatMap:e}=ce();function t(e,t){return(t.match(new RegExp(e,"gm"))||[]).reduce((t,n)=>{const i=n.match(new RegExp(e));return i?t.add(i[1]):t},new Set)}function n(e){return t("^a=msid:.+ +(.+) *$",e)}function i(e,t=".*",n=".*"){return e.split("\r\nm=").slice(1).map(e=>`m=${e}`).filter(e=>{const i=new RegExp(`m=${t}`,"gm"),r=new RegExp(`a=${n}`,"gm");return i.test(e)&&r.test(e)})}function r(e){return Array.from(t("^a=ssrc:([0-9]+) +.*$",e))}function s(t,n){const s=i(t),o=new RegExp(`^a=msid:[^ ]+ +${n} *$`,"gm"),a=s.filter(e=>e.match(o));return new Set(e(a,r))}return dn.getMediaSections=i,dn.getTrackIds=n,dn.getSSRCs=s,dn.updateTrackIdsToSSRCs=function(e,t){const i=function(e){return new Map(Array.from(n(e)).map(t=>[t,s(e,t)]))}(t),r=new Map;i.forEach((n,i)=>{if(!e.has(i))return void e.set(i,n);const s=Array.from(e.get(i)),o=Array.from(n);s.forEach((e,n)=>{const i=o[n];r.set(i,e);const s=`^a=ssrc:${i} (.*)$`,a=`a=ssrc:${e} $1`;t=t.replace(new RegExp(s,"gm"),a)})});const o="^(a=ssrc-group:[^ ]+ +)(.*)$";return(t.match(new RegExp(o,"gm"))||[]).forEach(e=>{const n=e.match(new RegExp(o));if(!n)return;const i=n[1],s=n[2].split(" ").map(e=>{const t=r.get(e);return t||e}).join(" ");t=t.replace(n[0],i+s)}),t},dn}function hn(){if(xe)return Ae;xe=1;const e=Ie(),t=Me(),{updateTrackIdsToSSRCs:n}=un(),{delegateMethods:i,interceptEvent:r,isIOSChrome:s,legacyPromise:o,proxyProperties:a}=ce();class c extends e{constructor(e={},n={}){super();const i=n.chromeSpecificConstraints,s=Object.assign(e.iceTransportPolicy?{iceTransports:e.iceTransportPolicy}:{},e);r(this,"datachannel"),r(this,"signalingstatechange");const o=new RTCPeerConnection(s,i);Object.defineProperties(this,{_appliedTracksToSSRCs:{value:new Map,writable:!0},_applyCodecPreferences:{value:n.applyCodecPreferences||(()=>{})},_audioTransceiver:{value:null,writable:!0},_peerConnection:{value:o},_pendingLocalOffer:{value:null,writable:!0},_pendingRemoteOffer:{value:null,writable:!0},_rolledBackTracksToSSRCs:{value:new Map,writable:!0},_signalingStateLatch:{value:new t},_tracksToSSRCs:{value:new Map,writable:!0},_videoTransceiver:{value:null,writable:!0}}),o.addEventListener("datachannel",e=>{p(e.channel),this.dispatchEvent(e)}),o.addEventListener("signalingstatechange",(...e)=>{"stable"===o.signalingState&&(this._appliedTracksToSSRCs=new Map(this._tracksToSSRCs)),this._pendingLocalOffer||this._pendingRemoteOffer||this.dispatchEvent(...e)}),a(RTCPeerConnection.prototype,this,o)}get localDescription(){return this._pendingLocalOffer?this._pendingLocalOffer:this._peerConnection.localDescription}get remoteDescription(){return this._pendingRemoteOffer?this._pendingRemoteOffer:this._peerConnection.remoteDescription}get signalingState(){return this._pendingLocalOffer?"have-local-offer":this._pendingRemoteOffer?"have-remote-offer":this._peerConnection.signalingState}addIceCandidate(e,...t){let n;return n="have-remote-offer"===this.signalingState?this._signalingStateLatch.when("low").then(()=>this._peerConnection.addIceCandidate(e)):this._peerConnection.addIceCandidate(e),t.length>0?o(n,...t):n}close(){"closed"!==this.signalingState&&(this._pendingLocalOffer=null,this._pendingRemoteOffer=null,this._peerConnection.close())}createAnswer(...e){let t;return t=this._pendingRemoteOffer?this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(()=>(this._signalingStateLatch.lower(),this._peerConnection.createAnswer())).then(e=>(this._pendingRemoteOffer=null,this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:"answer",sdp:n(this._tracksToSSRCs,e.sdp)})),e=>{throw this._pendingRemoteOffer=null,e}):this._peerConnection.createAnswer().then(e=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:"answer",sdp:n(this._tracksToSSRCs,e.sdp)}))),e.length>1?o(t,...e):t}createOffer(...e){const[t,i,r]=e,a=r||t||{};if(s()){if(a.offerToReceiveVideo&&!this._audioTransceiver&&!d(this,"audio")){delete a.offerToReceiveAudio;try{this._audioTransceiver=this.addTransceiver("audio",{direction:"recvonly"}),this._applyCodecPreferences(this._audioTransceiver)}catch(e){return Promise.reject(e)}}if(a.offerToReceiveVideo&&!this._videoTransceiver&&!d(this,"video")){delete a.offerToReceiveVideo;try{this._videoTransceiver=this.addTransceiver("video",{direction:"recvonly"}),this._applyCodecPreferences(this._videoTransceiver)}catch(e){return Promise.reject(e)}}}const c=this._peerConnection.createOffer(a).then(e=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:e.type,sdp:n(this._tracksToSSRCs,e.sdp)})));return e.length>1?o(c,t,i):c}createDataChannel(e,t){t=function(e){e=Object.assign({},e),h()&&"maxPacketLifeTime"in e&&(e.maxRetransmitTime=e.maxPacketLifeTime);return e}(t);const n=this._peerConnection.createDataChannel(e,t);return p(n),n}setLocalDescription(...e){const[t,n,i]=e;this._rolledBackTracksToSSRCs.size>0&&(this._tracksToSSRCs=new Map(this._rolledBackTracksToSSRCs),this._rolledBackTracksToSSRCs.clear());const r=l(this,!0,t);return e.length>1?o(r,n,i):r}setRemoteDescription(...e){const[t,n,i]=e;this._rolledBackTracksToSSRCs.clear();const r=l(this,!1,t);return e.length>1?o(r,n,i):r}}function l(e,t,n){const i=t?e._pendingLocalOffer:e._pendingRemoteOffer,r=t?e._pendingRemoteOffer:e._pendingLocalOffer,s=t?"have-local-offer":"have-remote-offer",o=t?"setLocalDescription":"setRemoteDescription";let a;if(!t&&r&&"answer"===n.type)a=function(e,t){const n=e._pendingLocalOffer;return e._peerConnection.setLocalDescription(n).then(()=>(e._pendingLocalOffer=null,e.setRemoteDescription(t))).then(()=>{e._signalingStateLatch.lower()})}(e,n);else if("offer"===n.type){if(e.signalingState!==s&&"stable"!==e.signalingState)return Promise.reject(new Error(`Cannot set ${t?"local":"remote"} offer in state ${e.signalingState}`));i||"low"!==e._signalingStateLatch.state||e._signalingStateLatch.raise();const r=e.signalingState;c=u(n),t?e._pendingLocalOffer=c:e._pendingRemoteOffer=c,a=Promise.resolve(),e.signalingState!==r&&a.then(()=>e.dispatchEvent(new Event("signalingstatechange")))}else"rollback"===n.type&&(e.signalingState!==s?a=Promise.reject(new Error(`Cannot rollback ${t?"local":"remote"} description in ${e.signalingState}`)):(t?e._pendingLocalOffer=null:e._pendingRemoteOffer=null,e._rolledBackTracksToSSRCs=new Map(e._tracksToSSRCs),e._tracksToSSRCs=new Map(e._appliedTracksToSSRCs),a=Promise.resolve(),a.then(()=>e.dispatchEvent(new Event("signalingstatechange")))));var c;return a||e._peerConnection[o](u(n))}function d(e,t){return!!e.getTransceivers().find(({receiver:e={}})=>{const{track:n={}}=e;return n.kind===t})}function u(e){return e instanceof RTCSessionDescription?e:new RTCSessionDescription(e)}function h(){return"maxRetransmitTime"in RTCDataChannel.prototype&&!("maxPacketLifeTime"in RTCDataChannel.prototype)}function p(e){return Object.defineProperty(e,"maxRetransmits",{value:65535===e.maxRetransmits?null:e.maxRetransmits}),h()&&Object.defineProperty(e,"maxPacketLifeTime",{value:65535===e.maxRetransmitTime?null:e.maxRetransmitTime}),e}return i(RTCPeerConnection.prototype,c.prototype,"_peerConnection"),Ae=c}function pn(){if(Fe)return Oe.exports;if(Fe=1,"function"==typeof RTCPeerConnection){const{guessBrowser:e}=ce();switch(e()){case"chrome":Oe.exports=hn();break;case"firefox":Oe.exports=function(){if($e)return je;$e=1;const e=Ie(),{updateTrackIdsToSSRCs:t}=un(),{delegateMethods:n,interceptEvent:i,legacyPromise:r,proxyProperties:s}=ce();class o extends e{constructor(e){super(),i(this,"signalingstatechange");const t=new RTCPeerConnection(e);let n;Object.defineProperties(this,{_initiallyNegotiatedDtlsRole:{value:null,writable:!0},_isClosed:{value:!1,writable:!0},_peerConnection:{value:t},_rollingBack:{value:!1,writable:!0},_tracksToSSRCs:{value:new Map},peerIdentity:{enumerable:!0,value:Promise.resolve({idp:"",name:""})}}),t.addEventListener("signalingstatechange",(...e)=>{this._rollingBack||this.signalingState===n||(n=this.signalingState,this._isClosed?setTimeout(()=>this.dispatchEvent(...e)):this.dispatchEvent(...e))}),s(RTCPeerConnection.prototype,this,t)}get iceGatheringState(){return this._isClosed?"complete":this._peerConnection.iceGatheringState}get localDescription(){return l(this._peerConnection.localDescription,this._initiallyNegotiatedDtlsRole)}get signalingState(){return this._isClosed?"closed":this._peerConnection.signalingState}createAnswer(...e){let t;return t=this._peerConnection.createAnswer().then(e=>(c(this,e),l(e,this._initiallyNegotiatedDtlsRole))),"function"==typeof e[0]?r(t,...e):t}createOffer(...e){const[n,i,s]=e,o=s||n||{};let c;return c="have-local-offer"===this.signalingState||"have-remote-offer"===this.signalingState?a(this,"have-local-offer"===this.signalingState,()=>this.createOffer(o)):this._peerConnection.createOffer(o),c=c.then(e=>new RTCSessionDescription({type:e.type,sdp:t(this._tracksToSSRCs,e.sdp)})),e.length>1?r(c,n,i):c}setLocalDescription(...e){const[t,...n]=e;let i;return t&&"answer"===t.type&&"have-local-offer"===this.signalingState&&(i=Promise.reject(new Error("Cannot set local answer in state have-local-offer"))),i?e.length>1?r(i,...n):i:this._peerConnection.setLocalDescription(...e)}setRemoteDescription(...e){const[t,...n]=e;let i;return t&&"have-remote-offer"===this.signalingState&&("answer"===t.type?i=Promise.reject(new Error("Cannot set remote answer in state have-remote-offer")):"offer"===t.type&&(i=a(this,!1,()=>this._peerConnection.setRemoteDescription(t)))),i||(i=this._peerConnection.setRemoteDescription(t)),i=i.then(()=>c(this,t,!0)),e.length>1?r(i,...n):i}close(){"closed"!==this.signalingState&&(this._isClosed=!0,this._peerConnection.close())}}function a(e,t,n){const i=t?"setLocalDescription":"setRemoteDescription";return e._rollingBack=!0,e._peerConnection[i](new RTCSessionDescription({type:"rollback"})).then(n).then(t=>(e._rollingBack=!1,t),t=>{throw e._rollingBack=!1,t})}function c(e,t,n){if(e._initiallyNegotiatedDtlsRole||"offer"===t.type)return;const i=t.sdp.match(/a=setup:([a-z]+)/);if(!i)return;const r=i[1];e._initiallyNegotiatedDtlsRole=n?{active:"passive",passive:"active"}[r]:r}function l(e,t){return e&&"answer"===e.type&&t?new RTCSessionDescription({type:e.type,sdp:e.sdp.replace(/a=setup:[a-z]+/g,"a=setup:"+t)}):e}return n(RTCPeerConnection.prototype,o.prototype,"_peerConnection"),je=o}();break;case"safari":Oe.exports=function(){if(Ve)return Ne;Ve=1;const e=Ie(),t=Me(),{updateTrackIdsToSSRCs:n}=un(),{delegateMethods:i,interceptEvent:r,proxyProperties:s}=ce();class o extends e{constructor(e,n={}){super(),r(this,"datachannel"),r(this,"iceconnectionstatechange"),r(this,"signalingstatechange"),r(this,"track");const i=new RTCPeerConnection(e);Object.defineProperties(this,{_appliedTracksToSSRCs:{value:new Map,writable:!0},_applyCodecPreferences:{value:n.applyCodecPreferences||(()=>{})},_audioTransceiver:{value:null,writable:!0},_isClosed:{value:!1,writable:!0},_peerConnection:{value:i},_pendingLocalOffer:{value:null,writable:!0},_pendingRemoteOffer:{value:null,writable:!0},_rolledBackTracksToSSRCs:{value:new Map,writable:!0},_signalingStateLatch:{value:new t},_tracksToSSRCs:{value:new Map,writable:!0},_videoTransceiver:{value:null,writable:!0}}),i.addEventListener("datachannel",e=>{l(e.channel),this.dispatchEvent(e)}),i.addEventListener("iceconnectionstatechange",(...e)=>{this._isClosed||this.dispatchEvent(...e)}),i.addEventListener("signalingstatechange",(...e)=>{this._isClosed||("stable"===i.signalingState&&(this._appliedTracksToSSRCs=new Map(this._tracksToSSRCs)),this._pendingLocalOffer||this._pendingRemoteOffer||this.dispatchEvent(...e))}),i.addEventListener("track",e=>{this._pendingRemoteOffer=null,this.dispatchEvent(e)}),s(RTCPeerConnection.prototype,this,i)}get localDescription(){return this._pendingLocalOffer||this._peerConnection.localDescription}get iceConnectionState(){return this._isClosed?"closed":this._peerConnection.iceConnectionState}get iceGatheringState(){return this._isClosed?"complete":this._peerConnection.iceGatheringState}get remoteDescription(){return this._pendingRemoteOffer||this._peerConnection.remoteDescription}get signalingState(){return this._isClosed?"closed":this._pendingLocalOffer?"have-local-offer":this._pendingRemoteOffer?"have-remote-offer":this._peerConnection.signalingState}addIceCandidate(e){return"have-remote-offer"===this.signalingState?this._signalingStateLatch.when("low").then(()=>this._peerConnection.addIceCandidate(e)):this._peerConnection.addIceCandidate(e)}createOffer(e){if((e=Object.assign({},e)).offerToReceiveVideo&&!this._audioTransceiver&&!c(this,"audio")){delete e.offerToReceiveAudio;try{this._audioTransceiver=this.addTransceiver("audio",{direction:"recvonly"}),this._applyCodecPreferences(this._audioTransceiver)}catch(e){return Promise.reject(e)}}if(e.offerToReceiveVideo&&!this._videoTransceiver&&!c(this,"video")){delete e.offerToReceiveVideo;try{this._videoTransceiver=this.addTransceiver("video",{direction:"recvonly"}),this._applyCodecPreferences(this._videoTransceiver)}catch(e){return Promise.reject(e)}}return this._peerConnection.createOffer(e).then(e=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:e.type,sdp:n(this._tracksToSSRCs,e.sdp)})))}createAnswer(e){return this._pendingRemoteOffer?this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(()=>(this._signalingStateLatch.lower(),this._peerConnection.createAnswer())).then(e=>(this._pendingRemoteOffer=null,this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:e.type,sdp:n(this._tracksToSSRCs,e.sdp)})),e=>{throw this._pendingRemoteOffer=null,e}):this._peerConnection.createAnswer(e).then(e=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:e.type,sdp:n(this._tracksToSSRCs,e.sdp)})))}createDataChannel(e,t){const n=this._peerConnection.createDataChannel(e,t);return l(n),n}removeTrack(e){e.replaceTrack(null),this._peerConnection.removeTrack(e)}setLocalDescription(e){return this._rolledBackTracksToSSRCs.size>0&&(this._tracksToSSRCs=new Map(this._rolledBackTracksToSSRCs),this._rolledBackTracksToSSRCs.clear()),a(this,!0,e)}setRemoteDescription(e){return this._rolledBackTracksToSSRCs.clear(),a(this,!1,e)}close(){this._isClosed||(this._isClosed=!0,this._peerConnection.close())}}function a(e,t,n){const i=t?e._pendingLocalOffer:e._pendingRemoteOffer,r=t?e._pendingRemoteOffer:e._pendingLocalOffer,s=t?"have-local-offer":"have-remote-offer",o=t?"setLocalDescription":"setRemoteDescription";if(!t&&r&&"answer"===n.type)return function(e,t){const n=e._pendingLocalOffer;return e._peerConnection.setLocalDescription(n).then(()=>(e._pendingLocalOffer=null,e.setRemoteDescription(t))).then(()=>e._signalingStateLatch.lower())}(e,n);if("offer"===n.type){if(e.signalingState!==s&&"stable"!==e.signalingState)return Promise.reject(new Error(`Cannot set ${t?"local":"remote"}\n offer in state ${e.signalingState}`));i||"low"!==e._signalingStateLatch.state||e._signalingStateLatch.raise();const r=e.signalingState;return a=n,t?e._pendingLocalOffer=a:e._pendingRemoteOffer=a,e.signalingState!==r?Promise.resolve().then(()=>e.dispatchEvent(new Event("signalingstatechange"))):Promise.resolve()}return"rollback"===n.type?e.signalingState!==s?Promise.reject(new Error(`Cannot rollback \n ${t?"local":"remote"} description in ${e.signalingState}`)):(t?e._pendingLocalOffer=null:e._pendingRemoteOffer=null,e._rolledBackTracksToSSRCs=new Map(e._tracksToSSRCs),e._tracksToSSRCs=new Map(e._appliedTracksToSSRCs),Promise.resolve().then(()=>e.dispatchEvent(new Event("signalingstatechange")))):e._peerConnection[o](n);var a}function c(e,t){return!!e.getTransceivers().find(({receiver:e={}})=>{const{track:n={}}=e;return n.kind===t})}function l(e){return Object.defineProperties(e,{maxPacketLifeTime:{value:65535===e.maxPacketLifeTime?null:e.maxPacketLifeTime},maxRetransmits:{value:65535===e.maxRetransmits?null:e.maxRetransmits}})}return i(RTCPeerConnection.prototype,o.prototype,"_peerConnection"),Ne=o}();break;default:Oe.exports=RTCPeerConnection}}else Oe.exports=function(){throw new Error("RTCPeerConnection is not supported")};return Oe.exports}function fn(){if(Ue)return Be;Ue=1;const e={};return Object.defineProperties(e,{getStats:{enumerable:!0,value:ke()},getUserMedia:{enumerable:!0,value:we()},RTCPeerConnection:{enumerable:!0,value:pn()}}),Be=e}function mn(){return We?He:(We=1,He=function(e,t){if(e&&t)if(e.super_=t,"function"==typeof Object.create)e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}});else{class n{constructor(){}}n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}})}function gn(){if(Qe)return qe;function e(){return!!(navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)}function t(){return e()&&window.screen.width>=744&&(/Macintosh/i.test(navigator.userAgent)||/iPad/.test(navigator.userAgent)||/iPad/.test(navigator.platform))}function n(){return e()&&window.screen.width<=476&&(/Macintosh/i.test(navigator.userAgent)||/iPhone/.test(navigator.userAgent)||/iPhone/.test(navigator.platform))}return Qe=1,qe={isAndroid:function(){return/Android/.test(navigator.userAgent)},isIOS:function(){return t()||n()},isIpad:t,isIphone:n,isMobile:function(){return/Mobi/.test(navigator.userAgent)},isNonChromiumEdge:function(e){return"chrome"===e&&/Edge/.test(navigator.userAgent)&&("undefined"==typeof chrome||void 0===chrome.runtime)},mobileWebKitBrowser:function(e){return"safari"!==e?null:"brave"in navigator?"brave":["edge","edg"].find(e=>navigator.userAgent.toLowerCase().includes(e))||null},rebrandedChromeBrowser:function(e){if("chrome"!==e)return null;if("brave"in navigator)return"brave";const t=function(e){const t=[],n=[];for(let i=0;i<e.length;i++)if("("===e[i])t.push(i);else if(")"===e[i]&&t.length>0){const r=t.pop();0===t.length&&n.push(e.substring(r,i+1))}return n}(navigator.userAgent).reduce((e,t)=>e.replace(t,""),navigator.userAgent).match(/[^\s]+/g)||[],[,,...n]=t.map(e=>e.split("/")[0].toLowerCase());return n.find(e=>!["chrome","mobile","safari"].includes(e))||null}},qe}function _n(){if(Ge)return ze;return Ge=1,ze=function(e,t,n){n="number"==typeof n?n:250;const i=e.createMediaStreamSource(t),r=e.createAnalyser();r.fftSize=2048,i.connect(r);const s=new Uint8Array(r.fftSize);let o=!1;return setTimeout(()=>{o=!0},n),function e(){return o?Promise.resolve(!0):(r.getByteTimeDomainData(s),s.some(e=>128!==e&&0!==e)?Promise.resolve(!1):function(e){return e="number"==typeof e?e:0,new Promise(t=>setTimeout(t,e))}().then(e))}().then(e=>(i.disconnect(),e),e=>{throw i.disconnect(),e})},ze}function vn(){if(Ye)return Ke;Ye=1;const e="undefined"!=typeof AudioContext?AudioContext:"undefined"!=typeof webkitAudioContext?webkitAudioContext:null;class t{constructor(n){n=Object.assign({AudioContext:e},n),Object.defineProperties(this,{_AudioContext:{value:n.AudioContext},_audioContext:{value:null,writable:!0},_holders:{value:new Set},AudioContextFactory:{enumerable:!0,value:t}})}getOrCreate(e){if(!this._holders.has(e)&&(this._holders.add(e),this._AudioContext&&!this._audioContext))try{this._audioContext=new this._AudioContext}catch(e){}return this._audioContext}release(e){this._holders.has(e)&&(this._holders.delete(e),!this._holders.size&&this._audioContext&&(this._audioContext.close(),this._audioContext=null))}}return Ke=new t}function bn(){if(Xe)return Je;Xe=1;const e=_n();return Je=function(t){const n=vn(),i={},r=n.getOrCreate(i);let s=3;return function n(){return s--,e(r,t.srcObject,250).then(e=>!!e&&(!(s>0)||n())).catch(()=>!0)}().finally(()=>{n.release(i)})}}function yn(){if(et)return Ze;et=1;const{defer:e}=ye();return Ze=new class{constructor(){Object.defineProperties(this,{_audio:{value:e(),writable:!0},_video:{value:e(),writable:!0}}),this._audio.resolve(),this._video.resolve()}resolveDeferred(e){"audio"===e?this._audio.resolve():this._video.resolve()}startDeferred(t){"audio"===t?this._audio=e():this._video=e()}whenResolved(e){return"audio"===e?this._audio.promise:this._video.promise}}}function kn(){if(nt)return tt;nt=1;const{EventEmitter:e}=Re(),{hidePrivateAndCertainPublicPropertiesInClass:t}=ye();return tt=t(e,["domain"])}function wn(){if(rt)return it;rt=1;const e=kn(),{buildLogLevels:t,valueToJSON:n}=ye(),i=ne().DEFAULT_LOG_LEVEL,r=ie();let s=0;return it=class extends e{constructor(e,n,o){o=Object.assign({name:e,log:null,logLevel:i},o),super();const a=String(o.name),c=t(o.logLevel),l=o.log?o.log.createLog("media",this):new r("media",this,c,o.loggerName);Object.defineProperties(this,{_instanceId:{value:++s},_log:{value:l},kind:{enumerable:!0,value:n},name:{enumerable:!0,value:a}})}toJSON(){return n(this)}},it}function Sn(){if(ot)return st;ot=1;const{isIOS:e}=gn(),{waitForEvent:t,waitForSometime:n}=ye(),i=yn(),r=wn();return st=class extends r{constructor(t,n){n=Object.assign({playPausedElementsIfNotBackgrounded:e()&&"object"==typeof document&&"function"==typeof document.addEventListener&&"string"==typeof document.visibilityState},n),super(t.id,t.kind,n);let i=!1;if("function"!=typeof(n=Object.assign({MediaStream:MediaStream},n)).MediaStream)throw new Error("MediaTrack received an invalid MediaStream constructor: "+n.MediaStream);Object.defineProperties(this,{_attachments:{value:new Set},_dummyEl:{value:null,writable:!0},_elShims:{value:new WeakMap},_isStarted:{get:()=>i,set(e){i=e}},_playPausedElementsIfNotBackgrounded:{value:n.playPausedElementsIfNotBackgrounded},_shouldShimAttachedElements:{value:n.workaroundWebKitBug212780||n.playPausedElementsIfNotBackgrounded},_unprocessedTrack:{value:null,writable:!0},_MediaStream:{value:n.MediaStream},_mapMediaElement:{value:n.mapMediaElement},_disposeMediaElement:{value:n.disposeMediaElement},isStarted:{enumerable:!0,get:()=>i},mediaStreamTrack:{enumerable:!0,get(){return this._unprocessedTrack||t.track}},processedTrack:{enumerable:!0,value:null,writable:!0}}),this._initialize()}_start(){this._log.debug("Started"),this._isStarted=!0,this._dummyEl&&(this._dummyEl.oncanplay=null),this.emit("started",this)}_initialize(){const e=this;this._log.debug("Initializing"),this._dummyEl=this._createElement(),this.mediaStreamTrack&&this.mediaStreamTrack.addEventListener?this.mediaStreamTrack.addEventListener("ended",function t(){e._end(),e.mediaStreamTrack.removeEventListener("ended",t)}):this.mediaStreamTrack&&(this.mediaStreamTrack.onended=function(){e._end(),e.mediaStreamTrack.onended=null}),this._dummyEl&&(this._dummyEl.muted=!0,this._dummyEl.oncanplay=this._start.bind(this,this._dummyEl),this._attach(this._dummyEl,this.mediaStreamTrack),this._attachments.delete(this._dummyEl))}_end(){this._log.debug("Ended"),this._dummyEl&&(this._dummyEl.remove(),this._disposeMediaElement?this._disposeMediaElement(this._dummyEl):this._dummyEl.srcObject=null,this._dummyEl.oncanplay=null,this._dummyEl=null)}attach(e){if("string"==typeof e?e=this._selectElement(e):e||(e=this._createElement()),this._log.debug("Attempting to attach to element:",e),e=this._attach(e),this._shouldShimAttachedElements&&!this._elShims.has(e)){const r=this._playPausedElementsIfNotBackgrounded?()=>function(e,r){const s=e.tagName.toLowerCase();r.warn("Unintentionally paused:",e),Promise.race([t(document,"visibilitychange"),n(1e3)]).then(()=>{"visible"===document.visibilityState&&i.whenResolved("audio").then(()=>(r.info(`Playing unintentionally paused <${s}> element`),r.debug("Element:",e),e.play())).then(()=>{r.info(`Successfully played unintentionally paused <${s}> element`),r.debug("Element:",e)}).catch(t=>{r.warn(`Error while playing unintentionally paused <${s}> element:`,{error:t,el:e})})})}(e,this._log):null;this._elShims.set(e,function(e,t=null){const n=e.pause,i=e.play;let r=!1;e.pause=()=>(r=!0,n.call(e)),e.play=()=>(r=!1,i.call(e));const s=t?()=>{r||t()}:null;s&&e.addEventListener("pause",s);return{pausedIntentionally:()=>r,unShim(){e.pause=n,e.play=i,s&&e.removeEventListener("pause",s)}}}(e,r))}return e}_attach(e,t=this.processedTrack||this.mediaStreamTrack){let n=e.srcObject;n instanceof this._MediaStream||(n=new this._MediaStream);const i="audio"===t.kind?"getAudioTracks":"getVideoTracks";return n[i]().forEach(e=>{n.removeTrack(e)}),n.addTrack(t),this._mapMediaElement&&(this._log.debug("Mapping element using mapMediaElement before attaching media to element"),this._mapMediaElement(e)),e.srcObject=n,e.autoplay=!0,e.playsInline=!0,this._attachments.has(e)||this._attachments.add(e),e}_selectElement(e){const t=document.querySelector(e);if(!t)throw new Error(`Selector matched no element: ${e}`);return t}_updateElementsMediaStreamTrack(){this._log.debug("Reattaching all elements to update mediaStreamTrack"),this._getAllAttachedElements().forEach(e=>this._attach(e))}_createElement(){return"undefined"!=typeof document?document.createElement(this.kind):null}detach(e){let t;return t="string"==typeof e?[this._selectElement(e)]:e?[e]:this._getAllAttachedElements(),this._log.debug("Attempting to detach from elements:",t),this._detachElements(t),e?t[0]:t}_detachElements(e){return e.map(this._detachElement.bind(this))}_detachElement(e){if(!this._attachments.has(e))return e;const t=e.srcObject;if(t instanceof this._MediaStream&&t.removeTrack(this.processedTrack||this.mediaStreamTrack),this._disposeMediaElement&&(this._log.debug("Disposing element using disposeMediaElement after removing media from element"),this._disposeMediaElement(e)),this._attachments.delete(e),this._shouldShimAttachedElements&&this._elShims.has(e)){this._elShims.get(e).unShim(),this._elShims.delete(e)}return e}_getAllAttachedElements(){const e=[];return this._attachments.forEach(t=>{e.push(t)}),e}},st}function Tn(){if(ct)return at;ct=1;const e=Sn();return at=class extends e{constructor(e,t){super(e,t)}attach(){return super.attach.apply(this,arguments)}detach(){return super.detach.apply(this,arguments)}},at}function Cn(){if(dt)return lt;dt=1;let e=null;return lt=function(t){return e=e||document.createElement("canvas"),new Promise(n=>{let i=3;setTimeout(function r(){return i--,function(t){try{const n=e.getContext("2d");n.drawImage(t,0,0,50,50);const i=n.getImageData(0,0,50,50).data.filter((e,t)=>(t+1)%4);return 0===Math.max.apply(Math,i)}catch(e){return console.log("Error checking silence: ",e),!1}}(t)?i>0?setTimeout(r,250):n(!0):n(!1)},250)})}}function Pn(){if(ht)return ut;ht=1;return ut=new class{constructor(e=1){Object.defineProperties(this,{_listeners:{value:[]},_onVisibilityChange:{value:()=>{this._emitVisible("visible"===document.visibilityState)}}});for(let t=0;t<e;t++)this._listeners.push([])}clear(){const e=this._listeners.length;for(let t=0;t<e;t++)this._listeners[t]=[]}_listenerCount(){return this._listeners.reduce((e,t)=>e+t.length,0)}_emitVisible(e){let t=Promise.resolve();for(let n=1;n<=this._listeners.length;n++)t=t.then(()=>this._emitVisiblePhase(n,e));return t}_emitVisiblePhase(e,t){const n=this._listeners[e-1];return Promise.all(n.map(e=>{const n=e(t);return n instanceof Promise?n:Promise.resolve(n)}))}_start(){document.addEventListener("visibilitychange",this._onVisibilityChange)}_stop(){document.removeEventListener("visibilitychange",this._onVisibilityChange)}onVisibilityChange(e,t){if("number"!=typeof e||e<=0||e>this._listeners.length)throw new Error("invalid phase: ",e);return this._listeners[e-1].push(t),1===this._listenerCount()&&this._start(),this}offVisibilityChange(e,t){if("number"!=typeof e||e<=0||e>this._listeners.length)throw new Error("invalid phase: ",e);const n=this._listeners[e-1],i=n.indexOf(t);return-1!==i&&(n.splice(i,1),0===this._listenerCount()&&this._stop()),this}}(2),ut}function En(){if(ft)return pt;ft=1;const e=_n();return pt=function(t,n,i,r,s){r="number"==typeof r?r:3;let o=0;const a=vn(),c={},l=a.getOrCreate(c);return function a(){return n(i).then(n=>(i.audio?e(l,n,s).catch(e=>(t.warn("Encountered an error while detecting silence",e),!0)):Promise.resolve(!1)).then(e=>e?r<=0?(t.warn("Got a silent audio MediaStreamTrack. Normally we would try \tto get a new one, but we've run out of retries; returning it anyway."),n):(t.warn(`Got a silent audio MediaStreamTrack. Stopping all MediaStreamTracks and calling getUserMedia again. This is retry #${++o}.`),n.getTracks().forEach(e=>e.stop()),r--,a()):(t.info("Got a non-silent audio MediaStreamTrack; returning it."),n)))}().then(e=>(a.release(c),e),e=>{throw a.release(c),e})},pt}function On(){if(gt)return mt;gt=1;const e=Re().EventEmitter;return mt=class extends e{constructor(){super(),Object.defineProperties(this,{_queuedEvents:{value:new Map}})}dequeue(e){let t=!0;if(!e)return this._queuedEvents.forEach(function(e,n){t=this.dequeue(n)&&t},this),t;const n=this._queuedEvents.get(e)||[];return this._queuedEvents.delete(e),n.reduce((t,n)=>this.emit(...[e].concat(n))&&t,t)}queue(){const e=[].slice.call(arguments);if(this.emit(...e))return!0;const t=e[0];return this._queuedEvents.has(t)||this._queuedEvents.set(t,[]),this._queuedEvents.get(t).push(e.slice(1)),!1}},mt}function Ln(){if(vt)return _t;vt=1;const e=On();return _t=class extends e{constructor(e,t){super(),Object.defineProperties(this,{id:{enumerable:!0,value:e},kind:{enumerable:!0,value:t}})}stop(){this.emit("stopped")}}}function Rn(){if(yt)return bt;yt=1;const e=Ln();return bt=class extends e{constructor(e,t){super(e,t.kind),Object.defineProperties(this,{_track:{value:t,writable:!0},enabled:{enumerable:!0,get(){return this._track.enabled}},readyState:{enumerable:!0,get(){return this._track.readyState}},track:{enumerable:!0,get(){return this._track}}})}stop(){this.track.stop(),super.stop()}}}function In(){if(wt)return kt;wt=1;const e=Rn();class t extends e{constructor(e){super(e.id,e),Object.defineProperties(this,{_clones:{value:new Set},_eventsToReemitters:{value:new Map([["mute",()=>this.queue("muted")],["unmute",()=>this.queue("unmuted")]])},_senders:{value:new Set},_senderToPublisherHintCallbacks:{value:new Map},isPublishing:{enumerable:!0,get(){return!!this._clones.size}},muted:{enumerable:!0,get(){return this._track.muted}}}),this._reemitMediaStreamTrackEvents()}_reemitMediaStreamTrackEvents(e=this._track){const{_eventsToReemitters:t,_track:n}=this;if(e.addEventListener?t.forEach((t,n)=>e.addEventListener(n,t)):t.forEach((t,n)=>{e[`on${n}`]=t}),n!==e&&(t.forEach((e,t)=>n.removeEventListener(t,e)),n.muted!==e.muted)){t.get(e.muted?"mute":"unmute")()}}clone(){const e=new t(this.track.clone());return this._clones.add(e),e}removeClone(e){this._clones.delete(e)}setMediaStreamTrack(e){const t=Array.from(this._clones),n=Array.from(this._senders);return Promise.all(t.map(t=>t.setMediaStreamTrack(e.clone())).concat(n.map(t=>this._replaceTrack(t,e)))).finally(()=>{this._reemitMediaStreamTrackEvents(e),this._track=e})}addSender(e,t){return this._senders.add(e),t&&this._senderToPublisherHintCallbacks.set(e,t),this}removeSender(e){return this._senders.delete(e),this._senderToPublisherHintCallbacks.delete(e),this}setPublisherHint(e){const[t]=Array.from(this._senderToPublisherHintCallbacks.values());return t?t(e):Promise.resolve("COULD_NOT_APPLY_HINT")}_replaceTrack(e,t){return e.replaceTrack(t).then(e=>(this.setPublisherHint(null).catch(()=>{}),this.emit("replaced"),e))}}return kt=t}function Mn(){if(Tt)return St;Tt=1;const{getUserMedia:e}=fn(),{isIOS:t}=gn(),{capitalize:n,defer:i,waitForSometime:r,waitForEvent:s}=ye(),{typeErrors:{ILLEGAL_INVOKE:o}}=ne(),a=bn(),c=Cn(),l=Pn(),d=yn(),u=En(),h=In();function p(e){const{_log:t,kind:n,_noiseCancellation:o}=e,u={audio:a,video:c}[n],h=()=>o?o.sourceTrack:e.mediaStreamTrack;let{_dummyEl:p}=e,f=h(),m=null;function g(){const{_workaroundWebKitBug1208516Cleanup:n,isStopped:i}=e,r=i&&!!n,{muted:s}=h();return Promise.resolve().then(()=>"visible"===document.visibilityState&&!m&&(s||r||p.play().then(()=>u(p)).then(e=>(e?t.warn("Silence detected"):t.info("Non-silence detected"),e)).catch(e=>{t.warn("Failed to detect silence:",e)}).finally(()=>{e.processedTrack||p.pause()})))}function _(){return Promise.race([s(f,"unmute"),r(50)]).then(()=>g()).then(r=>{r&&!m&&(m=i(),e._restart().finally(()=>{p=e._dummyEl,y(),f=h(),b(),m.resolve(),m=null}).catch(e=>{t.error("failed to restart track: ",e)}));return(m&&m.promise||Promise.resolve()).finally(()=>d.resolveDeferred(n))}).catch(e=>{t.error(`error in maybeRestart: ${e.message}`)})}function v(){const{_log:t,kind:n}=e;t.info("Muted"),t.debug("LocalMediaTrack:",e),d.startDeferred(n)}function b(){f.addEventListener?(f.addEventListener("ended",_),f.addEventListener("mute",v),f.addEventListener("unmute",_)):(f.onended=_,f.onmute=v,f.onunmute=_)}function y(){f.removeEventListener?(f.removeEventListener("ended",_),f.removeEventListener("mute",v),f.removeEventListener("unmute",_)):(f.onended=null,f.onmute=null,f.onunmute=null)}let k=e=>!!e&&_();return l.onVisibilityChange(1,k),b(),()=>{l.offVisibilityChange(1,k),y()}}return St=function(i){return class extends i{constructor(n,i){const r=t()&&"object"==typeof document&&"function"==typeof document.addEventListener&&"string"==typeof document.visibilityState;i=Object.assign({getUserMedia:e,isCreatedByCreateLocalTracks:!1,workaroundWebKitBug1208516:r,gUMSilentTrackWorkaround:u},i);const s=new h(n),{kind:o}=s;super(s,i),Object.defineProperties(this,{_constraints:{value:"object"==typeof i[o]?i[o]:{},writable:!0},_getUserMedia:{value:i.getUserMedia},_gUMSilentTrackWorkaround:{value:i.gUMSilentTrackWorkaround},_eventsToReemitters:{value:new Map([["muted",()=>this.emit("muted",this)],["unmuted",()=>this.emit("unmuted",this)]])},_workaroundWebKitBug1208516:{value:i.workaroundWebKitBug1208516},_workaroundWebKitBug1208516Cleanup:{value:null,writable:!0},_didCallEnd:{value:!1,writable:!0},_isCreatedByCreateLocalTracks:{value:i.isCreatedByCreateLocalTracks},_noiseCancellation:{value:i.noiseCancellation||null},_trackSender:{value:s},id:{enumerable:!0,value:s.id},isEnabled:{enumerable:!0,get:()=>s.enabled},isMuted:{enumerable:!0,get:()=>s.muted},isStopped:{enumerable:!0,get:()=>"ended"===s.readyState}}),this._workaroundWebKitBug1208516&&(this._workaroundWebKitBug1208516Cleanup=p(this)),this._reemitTrackSenderEvents()}_end(){this._didCallEnd||(super._end.call(this),this._didCallEnd=!0,this._eventsToReemitters.forEach((e,t)=>this._trackSender.removeListener(t,e)),this.emit("stopped",this))}_initialize(){this._didCallEnd&&(this._didCallEnd=!1),this._eventsToReemitters&&this._reemitTrackSenderEvents(),super._initialize.call(this)}_reacquireTrack(e){const{_getUserMedia:t,_gUMSilentTrackWorkaround:n,_log:i,mediaStreamTrack:{kind:r}}=this;i.info("Re-acquiring the MediaStreamTrack"),i.debug("Constraints:",e);const s=Object.assign({audio:!1,video:!1},{[r]:e});return(this._workaroundWebKitBug1208516Cleanup?n(i,t,s):t(s)).then(e=>e.getTracks()[0])}_reemitTrackSenderEvents(){this._eventsToReemitters.forEach((e,t)=>this._trackSender.on(t,e)),this._trackSender.dequeue("muted"),this._trackSender.dequeue("unmuted")}_restart(e){const{_log:t}=this;return e=e||this._constraints,this._stop(),this._reacquireTrack(e).catch(n=>{throw t.error("Failed to re-acquire the MediaStreamTrack:",{error:n,constraints:e}),n}).then(n=>(t.info("Re-acquired the MediaStreamTrack"),t.debug("MediaStreamTrack:",n),this._constraints=Object.assign({},e),this._setMediaStreamTrack(n)))}_setMediaStreamTrack(e){return e.enabled=this.mediaStreamTrack.enabled,this._stop(),(this._unprocessedTrack?Promise.resolve().then(()=>{this._unprocessedTrack=e}):this._trackSender.setMediaStreamTrack(e).catch(t=>{this._log.warn("setMediaStreamTrack failed:",{error:t,mediaStreamTrack:e})})).then(()=>{this._initialize(),this._getAllAttachedElements().forEach(e=>this._attach(e))})}_stop(){return this.mediaStreamTrack.stop(),this._end(),this}enable(e){return(e="boolean"!=typeof e||e)!==this.mediaStreamTrack.enabled&&(this._log.info((e?"En":"Dis")+"abling"),this.mediaStreamTrack.enabled=e,this.emit(e?"enabled":"disabled",this)),this}disable(){return this.enable(!1)}restart(e){const{kind:t}=this;if(!this._isCreatedByCreateLocalTracks)return Promise.reject(o("restart",`can only be called on a Local${n(t)}Track that is created using createLocalTracks or createLocal${n(t)}Track.`));this._workaroundWebKitBug1208516Cleanup&&(this._workaroundWebKitBug1208516Cleanup(),this._workaroundWebKitBug1208516Cleanup=null);let i=this._restart(e);return this._workaroundWebKitBug1208516&&(i=i.finally(()=>{this._workaroundWebKitBug1208516Cleanup=p(this)})),i}stop(){return this._log.info("Stopping"),this._workaroundWebKitBug1208516Cleanup&&(this._workaroundWebKitBug1208516Cleanup(),this._workaroundWebKitBug1208516Cleanup=null),this._stop()}}},St}function Dn(){if(Ot)return Et;Ot=1;const e=mn(),t=function(){if(Pt)return Ct;Pt=1;const{isIOS:e}=gn(),t=bn(),{isIOSChrome:n}=ce(),i=Tn(),r=Mn()(i);return Ct=class extends r{constructor(t,n){const i=(null==n?void 0:n.noiseCancellation)||null;super(t,n);const{_log:r}=this,{label:s=""}=t,{deviceId:o="",groupId:a=""}=t.getSettings();Object.defineProperties(this,{_currentDefaultDeviceInfo:{value:{deviceId:o,groupId:a,label:s},writable:!0},_enumerateDevices:{value:"function"==typeof(null==n?void 0:n.enumerateDevices)?n.enumerateDevices:navigator.mediaDevices.enumerateDevices},_defaultDeviceCaptureMode:{value:e()&&!i||!this._isCreatedByCreateLocalTracks||"object"!=typeof navigator||"object"!=typeof navigator.mediaDevices||"function"!=typeof navigator.mediaDevices.addEventListener||"function"!=typeof(null==n?void 0:n.enumerateDevices)&&"function"!=typeof navigator.mediaDevices.enumerateDevices?"manual":(null==n?void 0:n.defaultDeviceCaptureMode)||"auto"},_onDeviceChange:{value:()=>{this._enumerateDevices().then(e=>{const t=e.find(({deviceId:e,kind:t})=>"audioinput"===t&&"default"!==e);t&&["deviceId","groupId"].some(e=>t[e]!==this._currentDefaultDeviceInfo[e])&&(r.info("Default device changed, restarting the LocalAudioTrack"),r.debug(`Old default device: "${this._currentDefaultDeviceInfo.deviceId}" => "${this._currentDefaultDeviceInfo.label}"`),r.debug(`New default device: "${t.deviceId}" => "${t.label}"`),this._currentDefaultDeviceInfo=t,this._restartDefaultDevice().catch(e=>r.warn(`Failed to restart: ${e.message}`)))},e=>{r.warn(`Failed to run enumerateDevices(): ${e.message}`)})}},_restartOnDefaultDeviceChangeCleanup:{value:null,writable:!0},noiseCancellation:{enumerable:!0,value:i,writable:!1}}),r.debug("defaultDeviceCaptureMode:",this._defaultDeviceCaptureMode),this._maybeRestartOnDefaultDeviceChange()}toString(){return`[LocalAudioTrack #${this._instanceId}: ${this.id}]`}attach(e){return(e=super.attach.call(this,e)).muted=!0,e}_end(){return super._end.apply(this,arguments)}_maybeRestartOnDefaultDeviceChange(){const{_constraints:e,_defaultDeviceCaptureMode:t,_log:n}=this,i=this.noiseCancellation?this.noiseCancellation.sourceTrack:this.mediaStreamTrack,{deviceId:r}=i.getSettings(),s=e=>e!==r||"default"===e,o=function e(t={}){return"string"==typeof t?s(t):Array.isArray(t)?t.every(s):t.exact?e(t.exact):!t.ideal||e(t.ideal)}(e.deviceId);"auto"===t&&o?this._restartOnDefaultDeviceChangeCleanup||(n.info("LocalAudioTrack will be restarted if the default device changes"),navigator.mediaDevices.addEventListener("devicechange",this._onDeviceChange),this._restartOnDefaultDeviceChangeCleanup=()=>{n.info("Cleaning up the listener to restart the LocalAudioTrack if the default device changes"),navigator.mediaDevices.removeEventListener("devicechange",this._onDeviceChange),this._restartOnDefaultDeviceChangeCleanup=null}):(n.info("LocalAudioTrack will NOT be restarted if the default device changes"),this._restartOnDefaultDeviceChangeCleanup&&this._restartOnDefaultDeviceChangeCleanup())}_reacquireTrack(e){return this._log.debug("_reacquireTrack: ",e),this.noiseCancellation?this.noiseCancellation.reacquireTrack(()=>super._reacquireTrack.call(this,e)):super._reacquireTrack.call(this,e)}_restartDefaultDevice(){const e=Object.assign({},this._constraints),t=Object.assign({},e,{deviceId:this._currentDefaultDeviceInfo.deviceId});return this.restart(t).then(()=>{this._constraints=e,this._maybeRestartOnDefaultDeviceChange()})}_setMediaStreamTrack(e){const{_log:i,noiseCancellation:r}=this;let s=super._setMediaStreamTrack.call(this,e);return n()&&r&&(i.debug("iOS Chrome detected, checking if the restarted Krisp audio is silent"),s=s.then(()=>t(this._dummyEl)).then(e=>(i.debug("Krisp audio is "+(e?"silent, using source audio":"not silent")),e&&r.disablePermanently().then(()=>super._setMediaStreamTrack.call(this,r.sourceTrack))))),s}disable(){return super.disable.apply(this,arguments)}enable(){return super.enable.apply(this,arguments)}restart(){return super.restart.apply(this,arguments)}stop(){return this.noiseCancellation&&this.noiseCancellation.stop(),this._restartOnDefaultDeviceChangeCleanup&&this._restartOnDefaultDeviceChangeCleanup(),super.stop.apply(this,arguments)}},Ct}();function n(e,i){const r=new t(e,i);return Object.setPrototypeOf(r,n.prototype),r}return e(n,t),Et=n}function An(){if(At)return Dt;At=1;const e=Sn(),t=function(){if(Rt)return Lt;Rt=1;const{DEFAULT_FRAME_RATE:e}=ne();return Lt="function"==typeof MediaStreamTrackGenerator&&"function"==typeof MediaStreamTrackProcessor?function(e,t,n){const[i]=e.srcObject.getVideoTracks(),{readable:r}=new MediaStreamTrackProcessor({track:i}),s=new MediaStreamTrackGenerator({kind:"video"});let o=!1;const a=new TransformStream({transform:(e,i)=>("videoframe"===n?t(e):Promise.resolve(e.close()).then(t)).finally(()=>{o&&i.terminate()})});return r.pipeThrough(a).pipeTo(s.writable).then(()=>{}),()=>{o=!0}}:function(t,n){const[i]=t.srcObject.getVideoTracks(),{frameRate:r=e}=i.getSettings();let s;const o=new ReadableStream({start(e){s=setInterval(()=>e.enqueue(),1e3/r)}}),a=new TransformStream({transform:()=>n()});return o.pipeThrough(a).pipeTo(new WritableStream).then(()=>{}),()=>{clearInterval(s)}},Lt}(),n=function(){if(Mt)return It;Mt=1;const{EventEmitter:e}=Re(),{DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS:t}=ne();return It=class extends e{constructor(e){super(),Object.defineProperties(this,{_lastStatsSaveTime:{value:null,writable:!0},_lastStatsPublishTime:{value:null,writable:!0},_log:{value:e},_processorInfo:{value:null,writable:!0},_stats:{value:null,writable:!0}}),this.on("add",e=>{this._lastStatsSaveTime=Date.now(),this._lastStatsPublishTime=Date.now(),this._processorInfo=e,this._stats=[],this._reemitEvent("add",this._getEventData())}),this.on("remove",()=>{const e=this._getEventData();this._lastStatsSaveTime=null,this._lastStatsPublishTime=null,this._processorInfo=null,this._stats=null,this._reemitEvent("remove",e)}),this.on("start",()=>{this._reemitEvent("start",this._getEventData())}),this.on("stop",e=>{this._reemitEvent("stop",Object.assign({message:e},this._getEventData()))}),this.on("stats",()=>this._maybeEmitStats())}_getEventData(){if(!this._processorInfo)return{};const{processor:e,captureHeight:t,captureWidth:n,inputFrameRate:i,isRemoteVideoTrack:r,inputFrameBufferType:s,outputFrameBufferContextType:o}=this._processorInfo,a={captureHeight:t,captureWidth:n,inputFrameRate:i,isRemoteVideoTrack:r,inputFrameBufferType:s,outputFrameBufferContextType:o};return a.name=e._name||"VideoProcessor",["assetsPath","blurFilterRadius","debounce","fitType","isSimdEnabled","maskBlurRadius","pipeline","version"].forEach(t=>{const n=e[`_${t}`];void 0!==n&&(a[t]=n)}),Object.keys(a).forEach(e=>{const t=a[e];"boolean"==typeof t&&(a[e]=t?"true":"false")}),a}_maybeEmitStats(){if(!this._stats||!this._processorInfo)return;const e=this._processorInfo.processor._benchmark;if(!e)return;const n=Date.now();if(n-this._lastStatsSaveTime<1e3)return;const i={outputFrameRate:e.getRate("totalProcessingDelay")};if(["captureFrameDelay","imageCompositionDelay","inputImageResizeDelay","processFrameDelay","segmentationDelay"].forEach(t=>{i[t]=e.getAverageDelay(t)}),this._lastStatsSaveTime=n,this._stats.push(i),n-this._lastStatsPublishTime<t)return;this._lastStatsPublishTime=n;const r=this._stats.splice(0).reduce((e,t,n)=>(Object.keys(i).forEach(i=>{e[i]||(e[i]=0),e[i]=(e[i]*n+t[i])/(n+1)}),e),{});Object.keys(r).forEach(e=>{r[e]=parseFloat(r[e].toFixed(2))}),this._reemitEvent("stats",Object.assign({},r,this._getEventData()))}_reemitEvent(e,t){this._log.debug(`VideoProcessor:${e}`,t),this.emit("event",{name:e,data:t})}},It}(),{DEFAULT_FRAME_RATE:i}=ne();class r extends e{constructor(e,t){return super(e,t),Object.defineProperties(this,{_isCapturing:{value:!1,writable:!0},_inputFrame:{value:null,writable:!0},_outputFrame:{value:null,writable:!0},_processorEventObserver:{value:null,writable:!0},_processorOptions:{value:{},writable:!0},_stopCapture:{value:()=>{},writable:!0},_unmuteHandler:{value:null,writable:!0},dimensions:{enumerable:!0,value:{width:null,height:null}},processor:{enumerable:!0,value:null,writable:!0},_documentPipWindow:{value:null,writable:!0},_documentPipEnterListener:{value:null,writable:!0},_documentPipExitListener:{value:null,writable:!0}}),this._processorEventObserver=new(t.VideoProcessorEventObserver||n)(this._log),this}_checkIfCanCaptureFrames(e=!1){let t=!0,n="";const{enabled:i,readyState:r}=this.mediaStreamTrack;return i||(t=!1,n="MediaStreamTrack is disabled"),"ended"===r&&(t=!1,n="MediaStreamTrack is ended"),this.processor||(t=!1,n="VideoProcessor not detected."),this._attachments.size||e||(t=!1,n="VideoTrack is not publishing and there is no attached element."),n&&this._log.debug(n),{canCaptureFrames:t,message:n}}_captureFrames(){if(this._isCapturing)return void this._log.debug("Ignoring captureFrames call. Capture is already in progress");if(!this._checkIfCanCaptureFrames().canCaptureFrames)return this._isCapturing=!1,void this._log.debug("Cannot capture frames. Ignoring captureFrames call.");this._isCapturing=!0,this._processorEventObserver.emit("start"),this._log.debug("Start capturing frames");const{inputFrameBufferType:e}=this._processorOptions;this._dummyEl.play().then(()=>{this._stopCapture=t(this._dummyEl,t=>{const n=this._checkIfCanCaptureFrames();if(!n.canCaptureFrames)return t&&t.close(),this._isCapturing=!1,this._stopCapture(),this._processorEventObserver.emit("stop",n.message),this._log.debug("Cannot capture frames. Stopping capturing frames."),Promise.resolve();const{width:i=0,height:r=0}=this.mediaStreamTrack.getSettings();this._outputFrame&&this._outputFrame.width!==i&&(this._outputFrame.width=i,this._outputFrame.height=r),this._inputFrame&&(this._inputFrame.width!==i&&(this._inputFrame.width=i,this._inputFrame.height=r),this._inputFrame.getContext("2d").drawImage(this._dummyEl,0,0,i,r));const s=t||(["video","videoframe"].includes(e)?this._dummyEl:this._inputFrame);let o=null;try{o=this.processor.processFrame(s,this._outputFrame)}catch(e){this._log.debug("Exception detected after calling processFrame.",e)}return(o instanceof Promise?o:Promise.resolve(o)).then(()=>{this._outputFrame&&("function"==typeof this.processedTrack.requestFrame&&this.processedTrack.requestFrame(),this._processorEventObserver.emit("stats"))})},e)}).catch(e=>this._log.error("Video element cannot be played",{error:e,track:this}))}_initialize(){super._initialize(),this._dummyEl&&(this._dummyEl.onloadedmetadata=()=>{s(this,this._dummyEl)&&(this.dimensions.width=this._dummyEl.videoWidth,this.dimensions.height=this._dummyEl.videoHeight)},this._dummyEl.onresize=()=>{s(this,this._dummyEl)&&(this.dimensions.width=this._dummyEl.videoWidth,this.dimensions.height=this._dummyEl.videoHeight,this.isStarted&&(this._log.debug("Dimensions changed:",this.dimensions),this.emit(r.DIMENSIONS_CHANGED,this)))})}_restartProcessor(){const e=this.processor;if(e){const t=Object.assign({},this._processorOptions);this.removeProcessor(e),this.addProcessor(e,t)}}_start(e){return this.dimensions.width=e.videoWidth,this.dimensions.height=e.videoHeight,this._log.debug("Dimensions:",this.dimensions),this.emit(r.DIMENSIONS_CHANGED,this),super._start.call(this,e)}addProcessor(e,t){if(!e||"function"!=typeof e.processFrame)throw new Error("Received an invalid VideoProcessor from addProcessor.");if(this.processor)throw new Error("A VideoProcessor has already been added.");if(!this._dummyEl)throw new Error("VideoTrack has not been initialized.");this._log.debug("Adding VideoProcessor to the VideoTrack",e),this._unmuteHandler||(this._unmuteHandler=()=>{this._log.debug("mediaStreamTrack unmuted"),this.processedTrack.muted&&(this._log.debug("mediaStreamTrack is unmuted but processedTrack is muted. Restarting processor."),this._restartProcessor())},this.mediaStreamTrack.addEventListener?this.mediaStreamTrack.addEventListener("unmute",this._unmuteHandler):this.mediaStreamTrack.onunmute=this._unmuteHandler.bind(this)),this._processorOptions=t||{};let{inputFrameBufferType:n,outputFrameBufferContextType:r}=this._processorOptions;if("undefined"==typeof OffscreenCanvas&&"offscreencanvas"===n)throw new Error("OffscreenCanvas is not supported by this browser.");if(n&&"videoframe"!==n&&"video"!==n&&"canvas"!==n&&"offscreencanvas"!==n)throw new Error(`Invalid inputFrameBufferType of ${n}`);n||(n="undefined"==typeof OffscreenCanvas?"canvas":"offscreencanvas");const{width:s=0,height:o=0,frameRate:a=i}=this.mediaStreamTrack.getSettings();"offscreencanvas"===n&&(this._inputFrame=new OffscreenCanvas(s,o)),"canvas"===n&&(this._inputFrame=document.createElement("canvas")),this._inputFrame&&(this._inputFrame.width=s,this._inputFrame.height=o),this._outputFrame=document.createElement("canvas"),this._outputFrame.width=s,this._outputFrame.height=o,r=r||"2d";if(!this._outputFrame.getContext(r))throw new Error(`Cannot get outputFrameBufferContextType: ${r}.`);const c="undefined"!=typeof CanvasCaptureMediaStreamTrack&&CanvasCaptureMediaStreamTrack.prototype&&"function"==typeof CanvasCaptureMediaStreamTrack.prototype.requestFrame?0:void 0;return this.processedTrack=this._outputFrame.captureStream(c).getTracks()[0],this.processedTrack.enabled=this.mediaStreamTrack.enabled,this.processor=e,this._processorEventObserver.emit("add",{processor:e,captureHeight:o,captureWidth:s,inputFrameRate:a,isRemoteVideoTrack:this.toString().includes("RemoteVideoTrack"),inputFrameBufferType:n,outputFrameBufferContextType:r}),this._updateElementsMediaStreamTrack(),this._captureFrames(),this}attach(){const e=super.attach.apply(this,arguments);var t;return 1===this._attachments.size&&!(t=this)._documentPipEnterListener&&"documentPictureInPicture"in globalThis&&globalThis.documentPictureInPicture&&"function"==typeof globalThis.documentPictureInPicture.addEventListener&&(t._documentPipEnterListener=e=>{t._log.debug("document pip entered"),t._documentPipWindow=e.window,t._documentPipExitListener=()=>{t._log.debug("document pip exited"),t._documentPipWindow=null,"function"==typeof t._onDocumentPipExit&&t._onDocumentPipExit()},e.window&&"function"==typeof e.window.addEventListener&&e.window.addEventListener("pagehide",t._documentPipExitListener),o(t),"function"==typeof t._onDocumentPipEnter&&t._onDocumentPipEnter(e)},globalThis.documentPictureInPicture.addEventListener("enter",t._documentPipEnterListener)),this.processor&&this._captureFrames(),e}detach(){const e=super.detach.apply(this,arguments);var t;return 0===this._attachments.size&&(t=this)._documentPipEnterListener&&(globalThis.documentPictureInPicture&&"function"==typeof globalThis.documentPictureInPicture.removeEventListener&&globalThis.documentPictureInPicture.removeEventListener("enter",t._documentPipEnterListener),t._documentPipWindow&&t._documentPipExitListener&&"function"==typeof t._documentPipWindow.removeEventListener&&t._documentPipWindow.removeEventListener("pagehide",t._documentPipExitListener),t._documentPipEnterListener=null,t._documentPipExitListener=null,t._documentPipWindow=null),e}removeProcessor(e){if(!e)throw new Error("Received an invalid VideoProcessor from removeProcessor.");if(!this.processor)throw new Error("No existing VideoProcessor detected.");if(e!==this.processor)throw new Error("The provided VideoProcessor is different than the existing one.");return this._processorEventObserver.emit("remove"),this._log.debug("Removing VideoProcessor from the VideoTrack",e),this._stopCapture(),this._stopCapture=()=>{},this.mediaStreamTrack.removeEventListener("unmute",this._unmuteHandler),this._processorOptions={},this._unmuteHandler=null,this._isCapturing=!1,this.processor=null,this.processedTrack=null,this._inputFrame=null,this._outputFrame=null,this._updateElementsMediaStreamTrack(),this}}function s(e,t){return e.dimensions.width!==t.videoWidth||e.dimensions.height!==t.videoHeight}function o(e){if(e._documentPipWindow)try{const t=new WeakSet(e._documentPipWindow.document.querySelectorAll("video"));e._attachments.forEach(n=>{t.has(n)&&n.paused&&n.play().then(()=>{e._log.debug("Successfully played inadvertently paused video element in document PiP window")}).catch(t=>{e._log.debug("Failed to play inadvertently paused video element in document PiP window",t)})})}catch(t){e._log.debug("Error checking document PiP video playback:",t)}}return r.DIMENSIONS_CHANGED="dimensionsChanged",r._ensureDocumentPipVideosPlaying=o,Dt=r}function xn(){if(Nt)return $t;Nt=1;const e=mn(),t=function(){if(jt)return xt;jt=1;const{isIOS:e}=gn(),t=Cn(),n=Mn(),i=An(),r=n(i);function s(e,n){const{_log:i}=e;let{_dummyEl:r,mediaStreamTrack:s}=e;function o(){e.isEnabled&&(i.info("Unmuted, checking silence"),r.play().then(()=>t(r,n)).then(t=>{if(t)return i.warn("Silence detected, restarting"),e._stop(),e._restart();i.info("Non-silent frames detected, so no need to restart")}).catch(e=>{i.warn("Failed to detect silence and restart:",e)}).finally(()=>{r=e._dummyEl,!r||r.paused||e.processedTrack||r.pause(),s.removeEventListener("unmute",o),s=e.mediaStreamTrack,s.addEventListener?s.addEventListener("unmute",o):s.onunmute=o}))}return s.addEventListener?s.addEventListener("unmute",o):s.onunmute=o,()=>{s.removeEventListener?s.removeEventListener("unmute",o):s.onunmute=null}}return xt=class extends r{constructor(t,n){super(t,n=Object.assign({workaroundSilentLocalVideo:e()&&"undefined"!=typeof document&&"function"==typeof document.createElement},n)),Object.defineProperties(this,{_workaroundSilentLocalVideo:{value:n.workaroundSilentLocalVideo?s:null},_workaroundSilentLocalVideoCleanup:{value:null,writable:!0},_pipIntersectionObserver:{value:null,writable:!0}}),this._workaroundSilentLocalVideo&&(this._workaroundSilentLocalVideoCleanup=this._workaroundSilentLocalVideo(this,document))}toString(){return`[LocalVideoTrack #${this._instanceId}: ${this.id}]`}_onDocumentPipEnter(){this._log.debug("LocalVideoTrack: Setting up PiP intersection observer"),this._setupPipIntersectionObserver()}_onDocumentPipExit(){this._log.debug("LocalVideoTrack: Cleaning up PiP intersection observer"),this._cleanupPipIntersectionObserver()}_setupPipIntersectionObserver(){!this._pipIntersectionObserver&&this._documentPipWindow&&(this._log.debug("LocalVideoTrack: Creating PiP intersection observer"),this._pipIntersectionObserver=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(this._log.debug("LocalVideoTrack: Element visible in PiP, ensuring videos are playing"),i._ensureDocumentPipVideosPlaying(this))},{threshold:.25}),this._attachments.forEach(e=>{this._log.debug("LocalVideoTrack: Observing element for PiP visibility"),this._pipIntersectionObserver.observe(e)}))}_cleanupPipIntersectionObserver(){this._pipIntersectionObserver&&(this._log.debug("LocalVideoTrack: Disconnecting PiP intersection observer"),this._pipIntersectionObserver.disconnect(),this._pipIntersectionObserver=null)}attach(){const e=super.attach.apply(this,arguments);return this._pipIntersectionObserver&&(this._log.debug("LocalVideoTrack: Observing newly attached element for PiP visibility"),this._pipIntersectionObserver.observe(e)),e}detach(){const e=super.detach.apply(this,arguments),t=Array.isArray(e)?e:[e];return this._pipIntersectionObserver&&t.forEach(e=>{this._log.debug("LocalVideoTrack: Unobserving detached element from PiP visibility"),this._pipIntersectionObserver.unobserve(e)}),e}_checkIfCanCaptureFrames(){return super._checkIfCanCaptureFrames.call(this,this._trackSender.isPublishing)}_end(){return super._end.apply(this,arguments)}_setSenderMediaStreamTrack(e){const t=this.mediaStreamTrack,n=e?this.processedTrack:t;return this._trackSender.setMediaStreamTrack(n).catch(e=>this._log.warn("setMediaStreamTrack failed on LocalVideoTrack RTCRtpSender",{error:e,mediaStreamTrack:n})).then(()=>{this._unprocessedTrack=e?t:null})}addProcessor(){this._log.debug("Adding VideoProcessor to the LocalVideoTrack");const e=super.addProcessor.apply(this,arguments);return this.processedTrack?(this._log.debug("Updating LocalVideoTrack's MediaStreamTrack with the processed MediaStreamTrack",this.processedTrack),this._setSenderMediaStreamTrack(!0),e):this._log.warn("Unable to add a VideoProcessor to the LocalVideoTrack")}removeProcessor(){this._log.debug("Removing VideoProcessor from the LocalVideoTrack");const e=super.removeProcessor.apply(this,arguments);return this._log.debug("Updating LocalVideoTrack's MediaStreamTrack with the original MediaStreamTrack"),this._setSenderMediaStreamTrack().then(()=>this._updateElementsMediaStreamTrack()),e}disable(){const e=super.disable.apply(this,arguments);return this.processedTrack&&(this.processedTrack.enabled=!1),e}enable(e=!0){const t=super.enable.apply(this,arguments);return this.processedTrack&&(this.processedTrack.enabled=e,e&&(this._captureFrames(),this._log.debug("Updating LocalVideoTrack's MediaStreamTrack with the processed MediaStreamTrack",this.processedTrack),this._setSenderMediaStreamTrack(!0))),t}restart(){this._workaroundSilentLocalVideoCleanup&&(this._workaroundSilentLocalVideoCleanup(),this._workaroundSilentLocalVideoCleanup=null);let e=super.restart.apply(this,arguments);return this.processor&&(e=e.then(()=>this._restartProcessor())),this._workaroundSilentLocalVideo&&e.finally(()=>{this._workaroundSilentLocalVideoCleanup=this._workaroundSilentLocalVideo(this,document)}),e}_restartProcessor(){const e=this.processor,t=Object.assign({},this._processorOptions);return super.removeProcessor.apply(this,[e]),super.addProcessor.apply(this,[e,t]),this._setSenderMediaStreamTrack(!0)}stop(){return this._workaroundSilentLocalVideoCleanup&&(this._workaroundSilentLocalVideoCleanup(),this._workaroundSilentLocalVideoCleanup=null),this._cleanupPipIntersectionObserver(),super.stop.apply(this,arguments)}},xt}();function n(e,i){const r=new t(e,i);return Object.setPrototypeOf(r,n.prototype),r}return e(n,t),$t=n}function jn(){if(Ft)return Vt;Ft=1;const e=Ln();return Vt=class extends e{constructor(e,t,n,i){super(e,"data"),Object.defineProperties(this,{maxPacketLifeTime:{enumerable:!0,value:t},maxRetransmits:{enumerable:!0,value:n},ordered:{enumerable:!0,value:i}})}}}function $n(){if(Wt)return Ht;Wt=1;const e=wn(),t=function(){if(Ut)return Bt;Ut=1;const e=jn(),t=ye().makeUUID;class n extends e{constructor(e,n,i){super(t(),e,n,i),Object.defineProperties(this,{_clones:{value:new Set},_dataChannels:{value:new Set}})}_addClone(e){this._clones.add(e)}removeClone(e){this._clones.delete(e)}addDataChannel(e){return this._dataChannels.add(e),this}clone(){const e=new n(this.maxPacketLifeTime,this.maxRetransmits,this.ordered);return this._addClone(e),e.once("stopped",()=>this.removeClone(e)),e}removeDataChannel(e){return this._dataChannels.delete(e),this}send(e){return this._dataChannels.forEach(t=>{try{t.send(e)}catch(e){}}),this._clones.forEach(t=>{try{t.send(e)}catch(e){}}),this}stop(){this._dataChannels.forEach(e=>e.close()),this._clones.forEach(e=>e.stop()),super.stop()}}return Bt=n}();return Ht=class extends e{constructor(e){const n=new(0,(e=Object.assign({DataTrackSender:t,maxPacketLifeTime:null,maxRetransmits:null,ordered:!0},e)).DataTrackSender)(e.maxPacketLifeTime,e.maxRetransmits,e.ordered);super(n.id,"data",e),Object.defineProperties(this,{_trackSender:{value:n},id:{enumerable:!0,value:n.id},maxPacketLifeTime:{enumerable:!0,value:e.maxPacketLifeTime},maxRetransmits:{enumerable:!0,value:e.maxRetransmits},ordered:{enumerable:!0,value:e.ordered},reliable:{enumerable:!0,value:null===e.maxPacketLifeTime&&null===e.maxRetransmits}})}send(e){this._trackSender.send(e)}}}function Nn(){if(Qt)return qt;Qt=1;const e=mn(),t=$n();function n(e){const i=new t(e);return Object.setPrototypeOf(i,n.prototype),i}return e(n,t),qt=n}function Vn(){return Gt?zt:(Gt=1,zt={LocalAudioTrack:Dn(),LocalVideoTrack:xn(),LocalDataTrack:Nn()})}var Fn,Bn,Un,Hn,Wn,qn,Qn,zn,Gn={};function Kn(){if(Un)return Gn;Un=1;const e=function(){if(Bn)return Fn;Bn=1;class e extends Error{constructor(t){const n=[].slice.call(arguments,1);super(...n),Object.setPrototypeOf(this,e.prototype);const i=Error.apply(this,n);i.name="TwilioError",Object.defineProperty(this,"code",{value:t,enumerable:!0}),Object.getOwnPropertyNames(i).forEach(function(e){Object.defineProperty(this,e,{value:i[e],enumerable:!0})},this)}toString(){const e=this.message?`: ${this.message}`:"";return`${this.name} ${this.code}${e}`}}return Fn=e}(),t={};Gn.createTwilioError=function(n,i){return i="string"==typeof i&&i?i:"Unknown error",t[n="number"==typeof n?n:0]?new t[n]:new e(n,i)};class n extends e{constructor(){super(20101,"Invalid Access Token"),Object.setPrototypeOf(this,n.prototype)}}Gn.AccessTokenInvalidError=n,Object.defineProperty(t,20101,{value:n});class i extends e{constructor(){super(20102,"Invalid Access Token header"),Object.setPrototypeOf(this,i.prototype)}}Gn.AccessTokenHeaderInvalidError=i,Object.defineProperty(t,20102,{value:i});class r extends e{constructor(){super(20103,"Invalid Access Token issuer/subject"),Object.setPrototypeOf(this,r.prototype)}}Gn.AccessTokenIssuerInvalidError=r,Object.defineProperty(t,20103,{value:r});class s extends e{constructor(){super(20104,"Access Token expired or expiration date invalid"),Object.setPrototypeOf(this,s.prototype)}}Gn.AccessTokenExpiredError=s,Object.defineProperty(t,20104,{value:s});class o extends e{constructor(){super(20105,"Access Token not yet valid"),Object.setPrototypeOf(this,o.prototype)}}Gn.AccessTokenNotYetValidError=o,Object.defineProperty(t,20105,{value:o});class a extends e{constructor(){super(20106,"Invalid Access Token grants"),Object.setPrototypeOf(this,a.prototype)}}Gn.AccessTokenGrantsInvalidError=a,Object.defineProperty(t,20106,{value:a});class c extends e{constructor(){super(20107,"Invalid Access Token signature"),Object.setPrototypeOf(this,c.prototype)}}Gn.AccessTokenSignatureInvalidError=c,Object.defineProperty(t,20107,{value:c});class l extends e{constructor(){super(53e3,"Signaling connection error"),Object.setPrototypeOf(this,l.prototype)}}Gn.SignalingConnectionError=l,Object.defineProperty(t,53e3,{value:l});class d extends e{constructor(){super(53001,"Signaling connection disconnected"),Object.setPrototypeOf(this,d.prototype)}}Gn.SignalingConnectionDisconnectedError=d,Object.defineProperty(t,53001,{value:d});class u extends e{constructor(){super(53002,"Signaling connection timed out"),Object.setPrototypeOf(this,u.prototype)}}Gn.SignalingConnectionTimeoutError=u,Object.defineProperty(t,53002,{value:u});class h extends e{constructor(){super(53003,"Client received an invalid signaling message"),Object.setPrototypeOf(this,h.prototype)}}Gn.SignalingIncomingMessageInvalidError=h,Object.defineProperty(t,53003,{value:h});class p extends e{constructor(){super(53004,"Client sent an invalid signaling message"),Object.setPrototypeOf(this,p.prototype)}}Gn.SignalingOutgoingMessageInvalidError=p,Object.defineProperty(t,53004,{value:p});class f extends e{constructor(){super(53006,"Video server is busy"),Object.setPrototypeOf(this,f.prototype)}}Gn.SignalingServerBusyError=f,Object.defineProperty(t,53006,{value:f});class m extends e{constructor(){super(53100,"Room name is invalid"),Object.setPrototypeOf(this,m.prototype)}}Gn.RoomNameInvalidError=m,Object.defineProperty(t,53100,{value:m});class g extends e{constructor(){super(53101,"Room name is too long"),Object.setPrototypeOf(this,g.prototype)}}Gn.RoomNameTooLongError=g,Object.defineProperty(t,53101,{value:g});class _ extends e{constructor(){super(53102,"Room name contains invalid characters"),Object.setPrototypeOf(this,_.prototype)}}Gn.RoomNameCharsInvalidError=_,Object.defineProperty(t,53102,{value:_});class v extends e{constructor(){super(53103,"Unable to create Room"),Object.setPrototypeOf(this,v.prototype)}}Gn.RoomCreateFailedError=v,Object.defineProperty(t,53103,{value:v});class b extends e{constructor(){super(53104,"Unable to connect to Room"),Object.setPrototypeOf(this,b.prototype)}}Gn.RoomConnectFailedError=b,Object.defineProperty(t,53104,{value:b});class y extends e{constructor(){super(53105,"Room contains too many Participants"),Object.setPrototypeOf(this,y.prototype)}}Gn.RoomMaxParticipantsExceededError=y,Object.defineProperty(t,53105,{value:y});class k extends e{constructor(){super(53106,"Room not found"),Object.setPrototypeOf(this,k.prototype)}}Gn.RoomNotFoundError=k,Object.defineProperty(t,53106,{value:k});class w extends e{constructor(){super(53107,"MaxParticipants is out of range"),Object.setPrototypeOf(this,w.prototype)}}Gn.RoomMaxParticipantsOutOfRangeError=w,Object.defineProperty(t,53107,{value:w});class S extends e{constructor(){super(53108,"RoomType is not valid"),Object.setPrototypeOf(this,S.prototype)}}Gn.RoomTypeInvalidError=S,Object.defineProperty(t,53108,{value:S});class T extends e{constructor(){super(53109,"Timeout is out of range"),Object.setPrototypeOf(this,T.prototype)}}Gn.RoomTimeoutOutOfRangeError=T,Object.defineProperty(t,53109,{value:T});class C extends e{constructor(){super(53110,"StatusCallbackMethod is invalid"),Object.setPrototypeOf(this,C.prototype)}}Gn.RoomStatusCallbackMethodInvalidError=C,Object.defineProperty(t,53110,{value:C});class P extends e{constructor(){super(53111,"StatusCallback is invalid"),Object.setPrototypeOf(this,P.prototype)}}Gn.RoomStatusCallbackInvalidError=P,Object.defineProperty(t,53111,{value:P});class E extends e{constructor(){super(53112,"Status is invalid"),Object.setPrototypeOf(this,E.prototype)}}Gn.RoomStatusInvalidError=E,Object.defineProperty(t,53112,{value:E});class O extends e{constructor(){super(53113,"Room exists"),Object.setPrototypeOf(this,O.prototype)}}Gn.RoomRoomExistsError=O,Object.defineProperty(t,53113,{value:O});class L extends e{constructor(){super(53114,"Room creation parameter(s) incompatible with the Room type"),Object.setPrototypeOf(this,L.prototype)}}Gn.RoomInvalidParametersError=L,Object.defineProperty(t,53114,{value:L});class R extends e{constructor(){super(53115,"MediaRegion is invalid"),Object.setPrototypeOf(this,R.prototype)}}Gn.RoomMediaRegionInvalidError=R,Object.defineProperty(t,53115,{value:R});class I extends e{constructor(){super(53116,"There are no media servers available in the MediaRegion"),Object.setPrototypeOf(this,I.prototype)}}Gn.RoomMediaRegionUnavailableError=I,Object.defineProperty(t,53116,{value:I});class M extends e{constructor(){super(53117,"The subscription operation requested is not supported for the Room type"),Object.setPrototypeOf(this,M.prototype)}}Gn.RoomSubscriptionOperationNotSupportedError=M,Object.defineProperty(t,53117,{value:M});class D extends e{constructor(){super(53118,"Room completed"),Object.setPrototypeOf(this,D.prototype)}}Gn.RoomCompletedError=D,Object.defineProperty(t,53118,{value:D});class A extends e{constructor(){super(53124,"The AudioOnly flag is not supported for the Room type"),Object.setPrototypeOf(this,A.prototype)}}Gn.RoomAudioOnlyFlagNotSupportedError=A,Object.defineProperty(t,53124,{value:A});class x extends e{constructor(){super(53125,"The track kind is not supported by the Room"),Object.setPrototypeOf(this,x.prototype)}}Gn.RoomTrackKindNotSupportedError=x,Object.defineProperty(t,53125,{value:x});class j extends e{constructor(){super(53200,"Participant identity is invalid"),Object.setPrototypeOf(this,j.prototype)}}Gn.ParticipantIdentityInvalidError=j,Object.defineProperty(t,53200,{value:j});class $ extends e{constructor(){super(53201,"Participant identity is too long"),Object.setPrototypeOf(this,$.prototype)}}Gn.ParticipantIdentityTooLongError=$,Object.defineProperty(t,53201,{value:$});class N extends e{constructor(){super(53202,"Participant identity contains invalid characters"),Object.setPrototypeOf(this,N.prototype)}}Gn.ParticipantIdentityCharsInvalidError=N,Object.defineProperty(t,53202,{value:N});class V extends e{constructor(){super(53203,"The maximum number of published tracks allowed in the Room at the same time has been reached"),Object.setPrototypeOf(this,V.prototype)}}Gn.ParticipantMaxTracksExceededError=V,Object.defineProperty(t,53203,{value:V});class F extends e{constructor(){super(53204,"Participant not found"),Object.setPrototypeOf(this,F.prototype)}}Gn.ParticipantNotFoundError=F,Object.defineProperty(t,53204,{value:F});class B extends e{constructor(){super(53205,"Participant disconnected because of duplicate identity"),Object.setPrototypeOf(this,B.prototype)}}Gn.ParticipantDuplicateIdentityError=B,Object.defineProperty(t,53205,{value:B});class U extends e{constructor(){super(53300,"Track is invalid"),Object.setPrototypeOf(this,U.prototype)}}Gn.TrackInvalidError=U,Object.defineProperty(t,53300,{value:U});class H extends e{constructor(){super(53301,"Track name is invalid"),Object.setPrototypeOf(this,H.prototype)}}Gn.TrackNameInvalidError=H,Object.defineProperty(t,53301,{value:H});class W extends e{constructor(){super(53302,"Track name is too long"),Object.setPrototypeOf(this,W.prototype)}}Gn.TrackNameTooLongError=W,Object.defineProperty(t,53302,{value:W});class q extends e{constructor(){super(53303,"Track name contains invalid characters"),Object.setPrototypeOf(this,q.prototype)}}Gn.TrackNameCharsInvalidError=q,Object.defineProperty(t,53303,{value:q});class Q extends e{constructor(){super(53304,"Track name is duplicated"),Object.setPrototypeOf(this,Q.prototype)}}Gn.TrackNameIsDuplicatedError=Q,Object.defineProperty(t,53304,{value:Q});class z extends e{constructor(){super(53305,"The server has reached capacity and cannot fulfill this request"),Object.setPrototypeOf(this,z.prototype)}}Gn.TrackServerTrackCapacityReachedError=z,Object.defineProperty(t,53305,{value:z});class G extends e{constructor(){super(53400,"Client is unable to create or apply a local media description"),Object.setPrototypeOf(this,G.prototype)}}Gn.MediaClientLocalDescFailedError=G,Object.defineProperty(t,53400,{value:G});class K extends e{constructor(){super(53401,"Server is unable to create or apply a local media description"),Object.setPrototypeOf(this,K.prototype)}}Gn.MediaServerLocalDescFailedError=K,Object.defineProperty(t,53401,{value:K});class Y extends e{constructor(){super(53402,"Client is unable to apply a remote media description"),Object.setPrototypeOf(this,Y.prototype)}}Gn.MediaClientRemoteDescFailedError=Y,Object.defineProperty(t,53402,{value:Y});class J extends e{constructor(){super(53403,"Server is unable to apply a remote media description"),Object.setPrototypeOf(this,J.prototype)}}Gn.MediaServerRemoteDescFailedError=J,Object.defineProperty(t,53403,{value:J});class X extends e{constructor(){super(53404,"No supported codec"),Object.setPrototypeOf(this,X.prototype)}}Gn.MediaNoSupportedCodecError=X,Object.defineProperty(t,53404,{value:X});class Z extends e{constructor(){super(53405,"Media connection failed or Media activity ceased"),Object.setPrototypeOf(this,Z.prototype)}}Gn.MediaConnectionError=Z,Object.defineProperty(t,53405,{value:Z});class ee extends e{constructor(){super(53407,"Media connection failed due to DTLS handshake failure"),Object.setPrototypeOf(this,ee.prototype)}}Gn.MediaDTLSTransportFailedError=ee,Object.defineProperty(t,53407,{value:ee});class te extends e{constructor(){super(53500,"Unable to acquire configuration"),Object.setPrototypeOf(this,te.prototype)}}Gn.ConfigurationAcquireFailedError=te,Object.defineProperty(t,53500,{value:te});class ne extends e{constructor(){super(53501,"Unable to acquire TURN credentials"),Object.setPrototypeOf(this,ne.prototype)}}return Gn.ConfigurationAcquireTurnFailedError=ne,Object.defineProperty(t,53501,{value:ne}),Gn}function Yn(){if(Qn)return qn;Qn=1;const e=(Yt||(Yt=1,Kt=class{constructor(e){this._telemetry=e}typeChanged(e){this._telemetry.info({group:"network",name:"network-type-changed",payload:{networkType:e}})}informationChanged({downlink:e,downlinkMax:t,effectiveType:n,rtt:i,saveData:r,type:s}){this._telemetry.info({group:"network",name:"network-information-changed",payload:{downlink:e,downlinkMax:t,effectiveType:n,rtt:i,saveData:r,type:s}})}}),Kt),t=(Xt||(Xt=1,Jt=class{constructor(e){this._telemetry=e}succeeded(){this._telemetry.info({group:"get-user-media",name:"succeeded"})}denied(){this._telemetry.info({group:"get-user-media",name:"denied"})}failed(e){this._telemetry.info({group:"get-user-media",name:"failed",payload:{name:e.name,message:e.message}})}}),Jt),n=(en||(en=1,Zt=class{constructor(e){this._telemetry=e}limitationChanged(e,t){this._telemetry.info({group:"quality",name:"quality-limitation-state-changed",payload:{trackSid:e,qualityLimitationReason:t}})}statsReport(e){this._telemetry.info({group:"quality",name:"stats-report",payload:e})}iceCandidatePair(e){this._telemetry.info({group:"quality",name:"active-ice-candidate-pair",payload:e})}}),Zt),i=(nn||(nn=1,tn=class{constructor(e){this._telemetry=e}stalled(e,t,n,i="video"){this._telemetry.warning({group:"track-warning-raised",name:"track-stalled",payload:{trackSid:e,frameRate:t,threshold:n,trackType:i}})}resumed(e,t,n,i="video"){this._telemetry.info({group:"track-warning-cleared",name:"track-stalled",payload:{trackSid:e,frameRate:t,threshold:n,trackType:i}})}}),tn),r=(sn||(sn=1,rn=class{constructor(e){this._telemetry=e}resumed(){this._telemetry.info({group:"application",name:"resumed"})}backgrounded(){this._telemetry.info({group:"application",name:"backgrounded"})}terminated(){this._telemetry.info({group:"application",name:"terminated"})}}),rn),s=(an||(an=1,on=class{constructor(e){this._telemetry=e}cpuPressureChanged(e){this._telemetry.info({group:"system",name:"cpu-pressure-changed",payload:{resourceType:"cpu",pressure:e}})}}),on),o=function(){if(ln)return cn;ln=1;const{filterObject:e}=ye();return cn=class{constructor(e){this._telemetry=e}connectionState(e,t){this._telemetry.debug({group:"pc-connection-state",name:t,payload:{peerConnectionId:e}})}signalingState(e,t){this._telemetry.debug({group:"pc-signaling-state",name:t,payload:{peerConnectionId:e}})}iceGatheringState(e,t){this._telemetry.debug({group:"ice-gathering-state",name:t,payload:{peerConnectionId:e}})}iceConnectionState(e,t){const n="failed"===t?"error":"debug";this._telemetry[n]({group:"ice-connection-state",name:t,payload:{peerConnectionId:e}})}dtlsTransportState(e,t){const n="failed"===t?"error":"debug";this._telemetry[n]({group:"dtls-transport-state",name:t,payload:{peerConnectionId:e}})}iceCandidate(e,t,n=!1){this._telemetry.debug({group:"ice-candidate",name:"ice-candidate",payload:Object.assign({peerConnectionId:e,isRemote:n?"true":"false"},this._toIceCandidatePayload(t))})}selectedCandidatePair(t,n){this._telemetry.debug({group:"ice-candidate",name:"selected-ice-candidate-pair",payload:e({peerConnectionId:t,localCandidate:n.local?this._toIceCandidatePayload(n.local):null,remoteCandidate:n.remote?this._toIceCandidatePayload(n.remote):null},null)})}_toIceCandidatePayload(t){var n;const i=null===(n=t.candidate)||void 0===n?void 0:n.match(/network-cost\s+(\d+)/),r=i?parseInt(i[1],10):null;return e({candidateType:t.type,ip:t.address,port:t.port,priority:t.priority,protocol:t.protocol,relatedAddress:t.relatedAddress,relatedPort:t.relatedPort,tcpType:t.tcpType,transportId:t.sdpMid,networkCost:r},null)}},cn}(),a=function(){if(Wn)return Hn;Wn=1;const{MediaConnectionError:e}=Kn();return Hn=class{constructor(e){this._telemetry=e}reconnecting(t){const n=t instanceof e?"media":"signaling";this._telemetry.info({group:"room",name:"reconnecting",payload:{reason:n}})}reconnected(){this._telemetry.info({group:"room",name:"reconnected"})}disconnected(){this._telemetry.info({group:"room",name:"disconnected"})}},Hn}();return qn=new class{constructor(){this._publisher=null,this._connectTimestamp=null,this._log=null,this._isConfigured=!1,this.network=new e(this),this.getUserMedia=new t(this),this.quality=new n(this),this.track=new i(this),this.application=new r(this),this.system=new s(this),this.pc=new o(this),this.room=new a(this)}configure({publisher:e,log:t,connectTimestamp:n}){if(!e||!t||"number"!=typeof n)throw new Error("Telemetry.configure requires publisher, log, and connectTimestamp");return this._publisher=e,this._log=t,this._connectTimestamp=n,this._isConfigured=!0,this._publisher.on("connected",()=>{this._log.debug("Telemetry publisher connected.")}),this._publisher.on("reconnecting",()=>{this._log.warn("Telemetry publisher reconnecting...")}),this}_emit(e,t,n,i){if(!this._isConfigured)return;const r=Date.now(),s=r-this._connectTimestamp,o=Object.assign({elapsedTime:s,level:n},i||{});if(!this._publisher.publish(e,t,o))return void this._log.warn(`Telemetry event "${e}:${t}" dropped - publisher unavailable.`);const a=Object.assign({elapsedTime:s,group:e,level:n,name:t,timestamp:r},i?{payload:i}:{}),c={debug:"debug",error:"error",info:"info",warning:"warn"}[n];this._log[c]("telemetry",a)}info({group:e,name:t,payload:n}){return this._emit(e,t,"info",n)}warning({group:e,name:t,payload:n}){return this._emit(e,t,"warning",n)}error({group:e,name:t,payload:n}){return this._emit(e,t,"error",n)}debug({group:e,name:t,payload:n}){return this._emit(e,t,"debug",n)}},qn}function Jn(){if(zn)return i;zn=1,Object.defineProperty(i,"__esModule",{value:!0}),i.createLocalTracks=function(i){return e.__awaiter(this,void 0,void 0,function*(){const m=!(i&&("audio"in i||"video"in i)),g=Object.assign({audio:m,getUserMedia:r,loggerName:d,logLevel:l,LocalAudioTrack:s,LocalDataTrack:o,LocalVideoTrack:a,MediaStreamTrack:MediaStreamTrack,Log:c,video:m},i),_=`[createLocalTracks #${++f}]`,v=n(g.logLevel),b=new g.Log("default",_,v,g.loggerName),y=Object.assign({log:b},g);if(delete y.name,!1===g.audio&&!1===g.video)return b.info("Neither audio nor video requested, so returning empty LocalTracks"),[];if(g.tracks)return b.info("Adding user-provided LocalTracks"),b.debug("LocalTracks:",g.tracks),g.tracks;const k={audio:"object"==typeof g.audio&&g.audio.name?{name:g.audio.name}:{defaultDeviceCaptureMode:"auto"},video:"object"==typeof g.video&&g.video.name?{name:g.video.name}:{}};let w;if(k.audio.isCreatedByCreateLocalTracks=!0,k.video.isCreatedByCreateLocalTracks=!0,"object"==typeof g.audio)if("boolean"==typeof g.audio.workaroundWebKitBug1208516&&(k.audio.workaroundWebKitBug1208516=g.audio.workaroundWebKitBug1208516),"noiseCancellationOptions"in g.audio&&(w=g.audio.noiseCancellationOptions,delete g.audio.noiseCancellationOptions),"defaultDeviceCaptureMode"in g.audio){if(["auto","manual"].every(e=>e!==g.audio.defaultDeviceCaptureMode))throw u("CreateLocalAudioTrackOptions.defaultDeviceCaptureMode",["auto","manual"]);k.audio.defaultDeviceCaptureMode=g.audio.defaultDeviceCaptureMode}else k.audio.defaultDeviceCaptureMode="auto";"object"==typeof g.video&&"boolean"==typeof g.video.workaroundWebKitBug1208516&&(k.video.workaroundWebKitBug1208516=g.video.workaroundWebKitBug1208516),"object"==typeof g.audio&&delete g.audio.name,"object"==typeof g.video&&delete g.video.name;const S={audio:g.audio,video:g.video},T="object"==typeof g.audio&&g.audio.workaroundWebKitBug180748;try{const n=yield T?h(b,g.getUserMedia,S):g.getUserMedia(S);p.getUserMedia.succeeded();const i=[...n.getAudioTracks(),...n.getVideoTracks()];return b.info("Call to getUserMedia successful; got tracks:",i),yield Promise.all(i.map(n=>e.__awaiter(this,void 0,void 0,function*(){if("audio"===n.kind&&w){const{cleanTrack:e,noiseCancellation:i}=yield(0,t.applyNoiseCancellation)(n,w,b);return new y.LocalAudioTrack(e,Object.assign(Object.assign(Object.assign({},k.audio),y),{noiseCancellation:i}))}return"audio"===n.kind?new y.LocalAudioTrack(n,Object.assign(Object.assign({},k.audio),y)):new y.LocalVideoTrack(n,Object.assign(Object.assign({},k.video),y))})))}catch(e){throw"NotAllowedError"===e.name||"PermissionDeniedError"===e.name?p.getUserMedia.denied():p.getUserMedia.failed(e),b.warn("Call to getUserMedia failed:",e),e}})};const e=q,t=function(){if(Z)return Q;Z=1,Object.defineProperty(Q,"__esModule",{value:!0}),Q.NoiseCancellationImpl=void 0,Q.applyNoiseCancellation=function(i,r,s){return e.__awaiter(this,void 0,void 0,function*(){try{const e=yield(0,t.createNoiseCancellationAudioProcessor)(r,s);return{cleanTrack:e.connect(i),noiseCancellation:new n(e,i)}}catch(e){return s.warn(`Failed to create noise cancellation. Returning normal audio track: ${e}`),{cleanTrack:i}}})};const e=q,t=re();ie();class n{constructor(e,t){this._processor=e,this._sourceTrack=t,this._disabledPermanent=!1}get vendor(){return this._processor.vendor}get sourceTrack(){return this._sourceTrack}get isEnabled(){return this._processor.isEnabled()}enable(){if(this._disabledPermanent)throw new Error(`${this.vendor} noise cancellation is disabled permanently for this track`);return this._processor.enable(),Promise.resolve()}disable(){return this._processor.disable(),Promise.resolve()}reacquireTrack(t){return e.__awaiter(this,void 0,void 0,function*(){const e=this._processor.isEnabled();this._processor.disconnect();const n=yield t();this._sourceTrack=n;const i=yield this._processor.connect(n);return e?this._processor.enable():this._processor.disable(),i})}disablePermanently(){return this._disabledPermanent=!0,this.disable()}stop(){this._processor.disconnect(),this._sourceTrack.stop()}}return Q.NoiseCancellationImpl=n,Q}(),{buildLogLevels:n}=ye(),{getUserMedia:r}=fn(),{LocalAudioTrack:s,LocalDataTrack:o,LocalVideoTrack:a}=Vn(),c=ie(),{DEFAULT_LOG_LEVEL:l,DEFAULT_LOGGER_NAME:d,typeErrors:{INVALID_VALUE:u}}=ne(),h=En(),p=Yn();let f=0;return i}var Xn,Zn={},ei={};var ti,ni={};var ii,ri={};function si(){if(ii)return ri;ii=1,Object.defineProperty(ri,"__esModule",{value:!0}),ri.getCombinedConnectionStats=function(i){return e.__awaiter(this,arguments,void 0,function*({publisher:e,subscriber:i}){const[r,s]=yield Promise.all([e,i].map(e=>e.getStats())),o=t(s,"timestamp",["audio"],["inbound-rtp"]),a=o.length>0?o[0]:0,c=t(s,"jitter",["audio"],["inbound-rtp"]).reduce((e,t)=>Math.max(e,t),0),l=t(s,"packetsReceived",["audio","video"],["inbound-rtp"]).reduce((e,t)=>e+t,0),d=t(s,"packetsLost",["audio","video"],["inbound-rtp"]).reduce((e,t)=>e+t,0),u=t(r,"roundTripTime",["audio","video"],["remote-inbound-rtp"]).reduce((e,t)=>Math.max(e,t),0),h=1e3*(t(s,"currentRoundTripTime",[],["candidate-pair"]).reduce((e,t)=>Math.max(e,t),0)||u),p=t(r,"bytesSent",[],["candidate-pair"]).reduce((e,t)=>e+t,0),f=t(s,"bytesReceived",[],["candidate-pair"]).reduce((e,t)=>e+t,0),m=function(e){let t=null;const i=[];e.forEach(e=>{"transport"===e.type&&e.selectedCandidatePairId?t=e.selectedCandidatePairId:"candidate-pair"===e.type&&i.push(e)});const r=i.find(e=>e.selected||t&&e.id===t);if(!r)return null;const s=r,o=e.get(s.localCandidateId),a=e.get(s.remoteCandidateId);if(!o||!a)return null;return{localCandidate:n(o),remoteCandidate:n(a)}}(s),g=[];return s.forEach(e=>{"local-candidate"!==e.type&&"remote-candidate"!==e.type||g.push(n(e))}),{timestamp:a,jitter:c,packets:l,packetsLost:d,roundTripTime:h,bytesSent:p,bytesReceived:f,selectedIceCandidatePairStats:m,iceCandidateStats:g}})};const e=q;function t(e,t,n,i){let r=[];return e.forEach(e=>{0!==i.length&&!i.includes(e.type)||0!==n.length&&!n.includes(e.kind)||"number"!=typeof e[t]||r.push(e[t])}),r}function n(e){return[{key:"transportId",type:"string"},{key:"candidateType",type:"string"},{key:"port",altKeys:["portNumber"],type:"number"},{key:"address",altKeys:["ip","ipAddress"],type:"string"},{key:"priority",type:"number"},{key:"protocol",altKeys:["transport"],type:"string"},{key:"url",type:"string"},{key:"relayProtocol",type:"string"}].reduce(function(t,n){let i=[n.key];n.altKeys&&(i=i.concat(n.altKeys));var r=i.find(t=>t in e);return r&&typeof e[r]===n.type&&(t[n.key]=e[r]),t},{})}return ri}var oi,ai,ci,li,di,ui,hi,pi,fi,mi,gi,_i={};function vi(){if(ai)return oi;ai=1;const e=Re().EventEmitter,t=ye();function n(e,t,n){return e.get(t).has(n)}function i(e,t,n){return n=n||new Set,e.get(t).forEach(t=>{n.has(t)||(n.add(t),i(e,t,n).forEach(n.add,n))}),n}function r(e,t){return new Error(`"${t}" cannot be reached from "${e}"`)}return oi=class extends e{constructor(e,t){super();let n=null,r=e;var s;t=function(e){const t=new Map;for(const n in e)t.set(n,new Set(e[n]));return t}(t),Object.defineProperties(this,{_lock:{get:()=>n,set(e){n=e}},_reachableStates:{value:(s=t,Array.from(s.keys()).reduce((e,t)=>e.set(t,i(s,t)),new Map))},_state:{get:()=>r,set(e){r=e}},_states:{value:t},_whenDeferreds:{value:new Set},isLocked:{enumerable:!0,get:()=>null!==n},state:{enumerable:!0,get:()=>r}}),this.on("stateChanged",e=>{this._whenDeferreds.forEach(t=>{t.when(e,t.resolve,t.reject)})})}_whenPromise(e){if("function"!=typeof e)return Promise.reject(new Error("when() executor must be a function"));const n=t.defer();return n.when=e,this._whenDeferreds.add(n),n.promise.then(e=>(this._whenDeferreds.delete(n),e),e=>{throw this._whenDeferreds.delete(n),e})}bracket(e,t){let n;const i=this;function r(e){if(i.hasLock(n)&&i.releaseLockCompletely(n),e)throw e}return this.takeLock(e).then(function(e){return n=e,t(n)}).then(function(e){return r(),e},r)}hasLock(e){return this._lock===e}preempt(e,t,i){if(!n(this._states,this.state,e))throw new Error(`Cannot transition from "${this.state}" to "${e}"`);let r;this.isLocked&&(r=this._lock,this._lock=null);let s=null;t&&(s=this.takeLockSync(t));const o=s?null:this.takeLockSync("preemption");return this.transition(e,s||o,i),r&&r.resolve(),o&&this.releaseLock(o),s}releaseLock(e){if(!this.isLocked)throw new Error(`Could not release the lock for ${e.name} because the StateMachine is not locked`);if(!this.hasLock(e))throw new Error(`Could not release the lock for ${e.name} because ${this._lock.name} has the lock`);0===e.depth?(this._lock=null,e.resolve()):e.depth--}releaseLockCompletely(e){if(!this.isLocked)throw new Error(`Could not release the lock for ${e.name} because the StateMachine is not locked`);if(!this.hasLock(e))throw new Error(`Could not release the lock for ${e.name} because ${this._lock.name} has the lock`);e.depth=0,this._lock=null,e.resolve()}takeLock(e){if("object"==typeof e){const t=e;return new Promise(e=>{e(this.takeLockSync(t))})}const t=e;if(this.isLocked){var n=this.takeLock.bind(this,t);return this._lock.promise.then(n)}return Promise.resolve(this.takeLockSync(t))}takeLockSync(e){const n="string"==typeof e?null:e,i=n?n.name:e;if(n&&!this.hasLock(n)||!n&&this.isLocked)throw new Error(`Could not take the lock for ${i} because the lock for ${this._lock.name} was not released`);if(n)return n.depth++,n;const r=function(e){const n=t.defer();return n.name=e,n.depth=0,n}(i);return this._lock=r,r}transition(e,t,i){if(i=i||[],this.isLocked){if(!t)throw new Error("You must provide the key in order to transition");if(!this.hasLock(t))throw new Error(`Could not transition using the key for ${t.name} because ${this._lock.name} has the lock`)}else if(t)throw new Error(`Key provided for ${t.name}, but the StateMachine was not locked (possibly due to preemption)`);if(!n(this._states,this.state,e))throw new Error(`Cannot transition from "${this.state}" to "${e}"`);this._state=e,this.emit(...["stateChanged",e].concat(i))}tryTransition(e,t,n){try{this.transition(e,t,n)}catch(e){return!1}return!0}when(e){return this.state===e?Promise.resolve(this):n(this._reachableStates,this.state,e)?this._whenPromise((t,i,s)=>{t===e?i(this):n(this._reachableStates,t,e)||s(r(t,e))}):Promise.reject(r(this.state,e))}},oi}function bi(){if(ui)return di;ui=1;return di=class{constructor(e,t,n=!0){Object.defineProperties(this,{_delay:{value:t,writable:!0},_fn:{value:e},_timeout:{value:null,writable:!0}}),n&&this.start()}get delay(){return this._delay}get isSet(){return!!this._timeout}setDelay(e){this._delay=e}start(){this.isSet||(this._timeout=setTimeout(()=>{const e=this._fn;this.clear(),e()},this._delay))}clear(){clearTimeout(this._timeout),this._timeout=null}reset(){this.clear(),this.start()}}}function yi(){return pi?hi:(pi=1,hi=WebSocket)}function ki(){if(mi)return fi;mi=1;const e=vi(),{buildLogLevels:t,makeUUID:n}=ye(),i=ie(),r=li?ci:(li=1,ci=class{constructor(e,t){const n=(t=Object.assign({navigator:navigator,window:window},t)).navigator,i=n.connection||{type:null};let r=i.type;const{_events:s,_listener:o,_target:a}=i.type?{_events:{value:["change","typechange"]},_listener:{value:()=>{const t=r!==this.type&&this.isOnline;r=this.type,t&&e()}},_target:{value:i}}:{_events:{value:["online"]},_listener:{value:e},_target:{value:t.window}};Object.defineProperties(this,{isOnline:{enumerable:!0,get:()=>"boolean"!=typeof n.onLine||n.onLine},type:{enumerable:!0,get:()=>i.type||null},_listener:o,_events:s,_target:a})}start(){this._events.forEach(e=>{this._target.addEventListener(e,this._listener)})}stop(){this._events.forEach(e=>{this._target.removeEventListener(e,this._listener)})}}),s=bi();let o=0;const a={closed:[],connecting:["closed","open","waiting"],early:["closed","connecting"],open:["closed"],waiting:["closed","connecting","early","open"]},c={closed:"close",open:"open",waiting:"waiting"},l=3e3,d=3001,u=3002,h=3003,p=3005,f=3006,m=globalThis,g=m.WebSocket?m.WebSocket:yi(),_={BUSY:"busy",FAILED:"failed",LOCAL:"local",REMOTE:"remote",TIMEOUT:"timeout"},v=new Map([[l,_.TIMEOUT],[d,_.TIMEOUT],[u,_.FAILED],[h,_.FAILED],[3004,_.TIMEOUT],[f,_.BUSY],[3007,_.TIMEOUT]]);class b extends e{constructor(e,n){super("early",a),n=Object.assign({helloBody:null,maxConsecutiveFailedHellos:3,maxConsecutiveMissedHeartbeats:3,requestedHeartbeatTimeout:5e3,openTimeout:15e3,welcomeTimeout:5e3,Log:i,WebSocket:g},n);const s=t(n.logLevel),l=new n.Log("default",this,s,n.loggerName),d=n.networkMonitor?new r(()=>{const{type:e}=d,t="Network changed"+(e?` to ${e}`:"");l.debug(t),this._close({code:3004,reason:t})}):null;Object.defineProperties(this,{_busyWaitTimeout:{value:null,writable:!0},_consecutiveHeartbeatsMissed:{value:0,writable:!0},_cookie:{value:null,writable:!0},_eventObserver:{value:n.eventObserver},_heartbeatTimeout:{value:null,writable:!0},_hellosLeft:{value:n.maxConsecutiveFailedHellos,writable:!0},_instanceId:{value:++o},_log:{value:l},_messageQueue:{value:[]},_networkMonitor:{value:d},_options:{value:n},_openTimeout:{value:null,writable:!0},_sendHeartbeatTimeout:{value:null,writable:!0},_serverUrl:{value:e},_welcomeTimeout:{value:null,writable:!0},_ws:{value:null,writable:!0}});const u={connecting:"info",early:"info",open:"info",waiting:"warning",closed:"info"};this.on("stateChanged",(e,...t)=>{e in c&&this.emit(c[e],...t);const n={name:e,group:"signaling",level:u[this.state]};if("closed"===e){const[e]=t;n.payload={reason:e},n.level=e===_.LOCAL?"info":"error"}this._eventObserver.emit("event",n)}),this._eventObserver.emit("event",{name:this.state,group:"signaling",level:u[this.state]}),this._connect()}toString(){return`[TwilioConnection #${this._instanceId}: ${this._ws.url}]`}_close({code:e,reason:t}){if("closed"===this.state)return;this._openTimeout&&this._openTimeout.clear(),this._welcomeTimeout&&this._welcomeTimeout.clear(),this._heartbeatTimeout&&this._heartbeatTimeout.clear(),this._sendHeartbeatTimeout&&this._sendHeartbeatTimeout.clear(),this._networkMonitor&&this._networkMonitor.stop(),this._busyWaitTimeout&&e!==p&&this._busyWaitTimeout.clear(),this._messageQueue.splice(0);const n=this._log;1e3===e?(n.debug("Closed"),this.transition("closed",null,[_.LOCAL])):(n.warn(`Closed: ${e} - ${t}`),e!==p&&this.transition("closed",null,[v.get(e)||_.REMOTE]));const{readyState:i}=this._ws,{WebSocket:r}=this._options;i!==r.CLOSING&&i!==r.CLOSED&&this._ws.close(e,t)}_connect(){const e=this._log;if("waiting"===this.state)this.transition("early");else if("early"!==this.state)return void e.warn(`Unexpected state "${this.state}" for connecting to the TCMP server.`);this._ws=new this._options.WebSocket(this._serverUrl);const t=this._ws;e.debug("Created a new WebSocket:",t),t.addEventListener("close",e=>this._close(e));const{openTimeout:n}=this._options;this._openTimeout=new s(()=>{const e=`Failed to open in ${n} ms`;this._close({code:3007,reason:e})},n),t.addEventListener("open",()=>{e.debug("WebSocket opened:",t),this._openTimeout.clear(),this._startHandshake(),this._networkMonitor&&this._networkMonitor.start()}),t.addEventListener("message",t=>{e.debug(`Incoming: ${t.data}`);try{t=JSON.parse(t.data)}catch(e){return void this.emit("error",e)}switch(t.type){case"bad":this._handleBad(t);break;case"busy":this._handleBusy(t);break;case"bye":break;case"msg":this._handleMessage(t);case"heartbeat":this._handleHeartbeat();break;case"welcome":this._handleWelcome(t);break;default:this._log.debug(`Unknown message type: ${t.type}`),this.emit("error",new Error(`Unknown message type: ${t.type}`))}})}_handleBad({reason:e}){const t=this._log;if(["connecting","open"].includes(this.state)){if("connecting"===this.state)return t.warn(`Closing: 3002 - ${e}`),void this._close({code:u,reason:e});t.debug(`Error: ${e}`),this.emit("error",new Error(e))}else t.warn(`Unexpected state "${this.state}" for handling a "bad" message from the TCMP server.`)}_handleBusy({cookie:e,keepAlive:t,retryAfter:n}){const i=this._log;if(!["connecting","waiting"].includes(this.state))return void i.warn(`Unexpected state "${this.state}" for handling a "busy" message from the TCMP server.`);this._busyWaitTimeout&&this._busyWaitTimeout.clear(),this._welcomeTimeout&&this._welcomeTimeout.clear();const r=n<0?'Received terminal "busy" message':`Received "busy" message, retrying after ${n} ms`;if(n<0)return i.warn(`Closing: 3006 - ${r}`),void this._close({code:f,reason:r});const{maxConsecutiveFailedHellos:o}=this._options;this._hellosLeft=o,this._cookie=e||null,t?(i.warn(r),this._busyWaitTimeout=new s(()=>this._startHandshake(),n)):(i.warn(`Closing: 3005 - ${r}`),this._close({code:p,reason:r}),this._busyWaitTimeout=new s(()=>this._connect(),n)),this.transition("waiting",null,[t,n])}_handleHeartbeat(){"open"===this.state?this._heartbeatTimeout.reset():this._log.warn(`Unexpected state "${this.state}" for handling a "heartbeat" message from the TCMP server.`)}_handleHeartbeatTimeout(){if("open"!==this.state)return;const e=this._log,{maxConsecutiveMissedHeartbeats:t}=this._options;e.debug(`Consecutive heartbeats missed: ${t}`);const n=`Missed ${t} "heartbeat" messages`;e.warn(`Closing: 3001 - ${n}`),this._close({code:d,reason:n})}_handleMessage({body:e}){"open"===this.state?this.emit("message",e):this._log.warn(`Unexpected state "${this.state}" for handling a "msg" message from the TCMP server.`)}_handleWelcome({negotiatedTimeout:e}){const t=this._log;if(!["connecting","waiting"].includes(this.state))return void t.warn(`Unexpected state "${this.state}" for handling a "welcome" message from the TCMP server.`);"waiting"===this.state&&(t.debug('Received "welcome" message, no need to retry connection.'),this._busyWaitTimeout.clear());const{maxConsecutiveMissedHeartbeats:n}=this._options,i=e*n,r=e-200;this._welcomeTimeout.clear(),this._heartbeatTimeout=new s(()=>this._handleHeartbeatTimeout(),i),this._messageQueue.splice(0).forEach(e=>this._send(e)),this._sendHeartbeatTimeout=new s(()=>this._sendHeartbeat(),r),this.transition("open")}_handleWelcomeTimeout(){if("connecting"!==this.state)return;const e=this._log;if(this._hellosLeft<=0){const t="All handshake attempts failed";return e.warn(`Closing: 3000 - ${t}`),void this._close({code:l,reason:t})}const{maxConsecutiveFailedHellos:t}=this._options;e.warn(`Handshake attempt ${t-this._hellosLeft} failed`),this._startHandshake()}_send(e){const{readyState:t}=this._ws,{WebSocket:n}=this._options;if(t===n.OPEN){const t=JSON.stringify(e);this._log.debug(`Outgoing: ${t}`);try{this._ws.send(t),this._sendHeartbeatTimeout&&this._sendHeartbeatTimeout.reset()}catch(e){const t="Failed to send message";this._log.warn(`Closing: 3003 - ${t}`),this._close({code:h,reason:t})}}}_sendHeartbeat(){"closed"!==this.state&&this._send({type:"heartbeat"})}_sendHello(){const{helloBody:e,requestedHeartbeatTimeout:t}=this._options,i={id:n(),timeout:t,type:"hello",version:2};this._cookie&&(i.cookie=this._cookie),e&&(i.body=e),this._send(i)}_sendOrEnqueue(e){if("closed"===this.state)return;const t="open"===this.state?e=>this._send(e):e=>this._messageQueue.push(e);t(e)}_startHandshake(){if(["early","waiting"].includes(this.state)&&this.transition("connecting"),"connecting"!==this.state)return;this._hellosLeft--,this._sendHello();const{welcomeTimeout:e}=this._options;this._welcomeTimeout=new s(()=>this._handleWelcomeTimeout(),e)}close(){"closed"!==this.state&&(this._sendOrEnqueue({type:"bye"}),this._close({code:1e3,reason:"Normal"}))}sendMessage(e){this._sendOrEnqueue({body:e,type:"msg"})}}return b.CloseReason=_,fi=b}var wi,Si={};var Ti,Ci={};var Pi,Ei,Oi,Li,Ri,Ii,Mi,Di,Ai,xi,ji,$i,Ni,Vi,Fi={};function Bi(){if(Oi)return Ei;Oi=1;return Ei=class{constructor(){Object.defineProperties(this,{_samples:{value:[{denominator:0,numerator:0},{denominator:0,numerator:0}]}})}get(){const{_samples:e}=this,t=e[1].denominator-e[0].denominator||1/0;return(e[1].numerator-e[0].numerator)/t}putSample(e,t){const{_samples:n}=this;n.shift(),n.push({denominator:t,numerator:e})}}}function Ui(){if(Ri)return Li;Ri=1;const{EventEmitter:e}=Re(),t=["signaling","room","media","quality","video-processor","preflight"],n=["debug","error","info","warning"];return Li=class extends e{constructor(e,i,r,s=null){super(),this.on("event",({name:o,group:a,level:c,payload:l})=>{if("string"!=typeof o)throw r.error("Unexpected name: ",o),new Error("Unexpected name: ",o);if(!t.includes(a))throw r.error("Unexpected group: ",a),new Error("Unexpected group: ",a);if(!n.includes(c))throw r.error("Unexpected level: ",c),new Error("Unexpected level: ",c);const d=Date.now(),u=d-i,h=Object.assign({elapsedTime:u,level:c},l||{});e.publish(a,o,h);const p=Object.assign({elapsedTime:u,group:a,level:c,name:o,timestamp:d},l?{payload:l}:{});r[{debug:"debug",error:"error",info:"info",warning:"warn"}[c]]("event",p),s&&"signaling"===a&&s.emit("event",p)})}},Li}function Hi(){if(Mi)return Ii;Mi=1;const e=Re().EventEmitter,{getUserAgent:t}=ye(),n=globalThis,i=n.WebSocket?n.WebSocket:yi(),{hardwareDevicePublisheriPad:r,hardwareDevicePublisheriPhone:s}=ne(),o=ye(),a=gn();function c(e,t,n,i,o,c,l){e._connectTimestamp=Date.now(),e._reconnectAttemptsLeft--,e._ws=new l.WebSocket(l.gateway);const d=e._ws;d.addEventListener("close",t=>{1e3!==t.code?e.emit("disconnected",new Error(`WebSocket Error ${t.code}: ${t.reason}`)):e.emit("disconnected")}),d.addEventListener("message",t=>{!function(e,t,n){switch(t.type){case"connected":e._session=t.session,e._reconnectAttemptsLeft=n.maxReconnectAttempts,e._eventQueue.splice(0).forEach(e._publish,e),e.emit("connected");break;case"error":e._ws.close(),e.emit("disconnected",new Error(t.message))}}(e,JSON.parse(t.data),l)}),d.addEventListener("open",()=>{const e={type:"connect",token:t,version:1};e.publisher={name:n,sdkVersion:i,userAgent:l.userAgent,participantSid:c,roomSid:o},a.isIpad()?e.publisher=Object.assign(Object.assign({},e.publisher),r):a.isIphone()&&(e.publisher=Object.assign(Object.assign({},e.publisher),s)),d.send(JSON.stringify(e))})}function l(e,t){return"prod"===e?`wss://sdkgw.${t}.twilio.com`:`wss://sdkgw.${e}-${t}.twilio.com`}return Ii=class extends e{constructor(e,n,r,s,a,d){super(),d=Object.assign({gateway:`${l(s,a)}/v1/VideoEvents`,maxReconnectAttempts:5,reconnectIntervalMs:50,userAgent:t(),WebSocket:i},d),Object.defineProperties(this,{_connectTimestamp:{value:0,writable:!0},_eventQueue:{value:[]},_readyToConnect:{value:o.defer()},_reconnectAttemptsLeft:{value:d.maxReconnectAttempts,writable:!0},_ws:{value:null,writable:!0},_WebSocket:{value:d.WebSocket}}),this._readyToConnect.promise.then(({roomSid:t,participantSid:i})=>{const s=this;this.on("disconnected",function o(a){if(s._session=null,a&&s._reconnectAttemptsLeft>0)return s.emit("reconnecting"),void function(e,t,n,i,r,s,o){const a=Date.now()-e._connectTimestamp,l=o.reconnectIntervalMs-a;if(l>0)return void setTimeout(()=>{c(e,t,n,i,r,s,o)},l);c(e,t,n,i,r,s,o)}(s,e,n,r,t,i,d);s.removeListener("disconnected",o)}),c(this,e,n,r,t,i,d)}).catch(()=>{})}connect(e,t){this._readyToConnect.resolve({roomSid:e,participantSid:t})}_publish(e){e.session=this._session,this._ws.send(JSON.stringify(e))}disconnect(){if(null===this._ws||this._ws.readyState===this._WebSocket.CLOSING||this._ws.readyState===this._WebSocket.CLOSED)return!1;try{this._ws.close()}catch(e){}return this.emit("disconnected"),!0}publish(e,t,n){if(null!==this._ws&&(this._ws.readyState===this._WebSocket.CLOSING||this._ws.readyState===this._WebSocket.CLOSED))return!1;return("string"==typeof this._session?this._publish.bind(this):this._eventQueue.push.bind(this._eventQueue))({group:e,name:t,payload:n,timestamp:Date.now(),type:"event",version:1}),!0}}}function Wi(){if(Di)return Zn;Di=1,Object.defineProperty(Zn,"__esModule",{value:!0}),Zn.PreflightTest=void 0,Zn.runPreflight=function(e,t={}){return new R(e,t)};const e=q,t=ne(),n=(Xn||(Xn=1,Object.defineProperty(ei,"__esModule",{value:!0}),ei.Timer=void 0,ei.Timer=class{constructor(){this._end=void 0,this.start()}start(){return this._start=Date.now(),this}stop(){return this._end=Date.now(),this}getTimeMeasurement(){return{start:this._start,end:this._end,duration:void 0===this._end?void 0:this._end-this._start}}}),ei),i=function(){if(ti)return ni;ti=1,Object.defineProperty(ni,"__esModule",{value:!0}),ni.calculateMOS=function(t,n,i){const r=t+2*n+10;let s=0;switch(!0){case r<160:s=e-r/40;break;case r<1e3:s=e-(r-120)/10}s=1==i<=s/2.5?Math.max(s-2.5*i,6.52):0;return 1+.035*s+7e-6*s*(s-60)*(100-s)},ni.mosToScore=function(e){let t=0;return t=e?e>4.2?5:e>4?4:e>3.6?3:e>3?2:1:0,t};const e=94.768;return ni}(),r=si(),s=function(){if(gi)return _i;gi=1,Object.defineProperty(_i,"__esModule",{value:!0}),_i.getTurnCredentials=function(s,o){return new Promise((a,c)=>{const l=new r.EventEmitter,d=new e(o,{networkMonitor:null,eventObserver:l,helloBody:{edge:"roaming",preflight:!0,token:s,type:"ice",version:t}});let u=!1;d.once("close",()=>{u||(u=!0,c(new i))}),d.on("message",e=>{const{code:t,message:i,ice_servers:r,type:s}=e;"iced"!==s&&"error"!==s||u||(u=!0,"iced"===s?a(r):c(n(t,i)),d.close())})})};const e=ki(),{ICE_VERSION:t}=ne(),{createTwilioError:n,SignalingConnectionError:i}=Kn(),r=Re();return _i}(),o=(wi||(wi=1,Object.defineProperty(Si,"__esModule",{value:!0}),Si.makeStat=function(e){return e&&e.length?{min:Math.min(...e),max:Math.max(...e),average:e.reduce((e,t)=>e+t,0)/e.length}:null}),Si),a=(Ti||(Ti=1,Object.defineProperty(Ci,"__esModule",{value:!0}),Ci.syntheticAudio=function(){const e=vn(),t={},n=e.getOrCreate(t),i=n.createOscillator(),r=i.connect(n.createMediaStreamDestination());i.start();const s=r.stream.getAudioTracks()[0],o=s.stop;return s.stop=()=>{o.call(s),e.release(t)},s}),Ci),c=(Pi||(Pi=1,Object.defineProperty(Fi,"__esModule",{value:!0}),Fi.syntheticVideo=function({width:e=640,height:t=480}={}){const n=Object.assign(document.createElement("canvas"),{width:e,height:t});let i=n.getContext("2d");i.fillStyle="green",i.fillRect(0,0,n.width,n.height);let r=!1;requestAnimationFrame(function n(){if(!r){const r=Math.round(255*Math.random()),s=Math.round(255*Math.random()),o=Math.round(255*Math.random()),a=Math.round(255*Math.random());i.fillStyle=`rgba(${r}, ${s}, ${o}, ${a})`,i.fillRect(Math.random()*e,Math.random()*t,50,50),requestAnimationFrame(n)}});const s=n.captureStream(30).getTracks()[0],o=s.stop;return s.stop=()=>{r=!0,o.call(s)},s}),Fi),l=ye(),{WS_SERVER:d}=ne(),u=ie(),h=kn(),p=Bi(),f=Ui(),m=Hi(),{createSID:g,sessionSID:_}=ve(),{SignalingConnectionTimeoutError:v,MediaConnectionError:b}=Kn(),y=1e4,k="mediaAcquired",w="connected",S="mediaSubscribed",T="mediaStarted",C="dtlsConnected",P="peerConnectionConnected",E="iceConnected";function O(e){return null!=e}let L=0;class R extends h{constructor(e,i){super(),this._testTiming=new n.Timer,this._dtlsTiming=new n.Timer,this._iceTiming=new n.Timer,this._peerConnectionTiming=new n.Timer,this._mediaTiming=new n.Timer,this._connectTiming=new n.Timer,this._sentBytesMovingAverage=new p,this._packetLossMovingAverage=new p,this._progressEvents=[],this._receivedBytesMovingAverage=new p;const r=i,{environment:s="prod",region:o="gll",duration:a=y}=r,c=r.wsServer||d(s,o);this._log=new u("default",this,t.DEFAULT_LOG_LEVEL,t.DEFAULT_LOGGER_NAME),this._testDuration=a,this._instanceId=L++,this._testTiming.start(),this._runPreflightTest(e,s,c)}toString(){return`[Preflight #${this._instanceId}]`}stop(){this._stopped=!0}_generatePreflightReport(e){return this._testTiming.stop(),{testTiming:this._testTiming.getTimeMeasurement(),networkTiming:{dtls:this._dtlsTiming.getTimeMeasurement(),ice:this._iceTiming.getTimeMeasurement(),peerConnection:this._peerConnectionTiming.getTimeMeasurement(),connect:this._connectTiming.getTimeMeasurement(),media:this._mediaTiming.getTimeMeasurement()},stats:{jitter:(0,o.makeStat)(null==e?void 0:e.jitter),rtt:(0,o.makeStat)(null==e?void 0:e.rtt),packetLoss:(0,o.makeStat)(null==e?void 0:e.packetLoss)},selectedIceCandidatePairStats:e?e.selectedIceCandidatePairStats:null,iceCandidateStats:e?e.iceCandidateStats:[],progressEvents:this._progressEvents,mos:(0,o.makeStat)(null==e?void 0:e.mos)}}_executePreflightStep(t,n,i){return e.__awaiter(this,void 0,void 0,function*(){this._log.debug("Executing step: ",t);const e=this._testDuration+1e4;if(this._stopped)throw new Error("stopped");const r=Promise.resolve().then(n);let s=null;const o=new Promise((n,r)=>{s=setTimeout(()=>{r(i||new Error(`${t} timeout.`))},e)});try{return yield Promise.race([o,r])}finally{null!==s&&clearTimeout(s)}})}_collectNetworkTimings(e){return new Promise(t=>{let n;e.addEventListener("iceconnectionstatechange",()=>{"checking"===e.iceConnectionState&&this._iceTiming.start(),"connected"===e.iceConnectionState&&(this._iceTiming.stop(),this._updateProgress(E),(!n||n&&"connected"===n.state)&&t())}),e.addEventListener("connectionstatechange",()=>{"connecting"===e.connectionState&&this._peerConnectionTiming.start(),"connected"===e.connectionState&&(this._peerConnectionTiming.stop(),this._updateProgress(P))});let i=e.getSenders().map(e=>e.transport).find(O);void 0!==i&&(n=i,n.addEventListener("statechange",()=>{"connecting"===n.state&&this._dtlsTiming.start(),"connected"===n.state&&(this._dtlsTiming.stop(),this._updateProgress(C),"connected"===e.iceConnectionState&&t())}))})}_setupInsights({token:e,environment:n=t.DEFAULT_ENVIRONMENT,realm:i=t.DEFAULT_REALM}){const r=new m(e,t.SDK_NAME,t.SDK_VERSION,n,i,{});r.connect("PREFLIGHT_ROOM_SID","PREFLIGHT_PARTICIPANT");const s=new f(r,Date.now(),this._log),o=void 0;return{reportToInsights:({report:e})=>{var t,n;const i=e.stats.jitter||o,a=e.stats.rtt||o,c=e.stats.packetLoss||o,l=e.mos||o,d=new Map;e.iceCandidateStats.forEach(e=>{if(e.candidateType&&e.protocol){let t=d.get(e.candidateType)||[];t.indexOf(e.protocol)<0&&t.push(e.protocol),d.set(e.candidateType,t)}});const u=JSON.stringify(Object.fromEntries(d)),h={name:"report",group:"preflight",level:e.error?"error":"info",payload:{sessionSID:_,preflightSID:g("PF"),progressEvents:JSON.stringify(e.progressEvents),testTiming:e.testTiming,dtlsTiming:e.networkTiming.dtls,iceTiming:e.networkTiming.ice,peerConnectionTiming:e.networkTiming.peerConnection,connectTiming:e.networkTiming.connect,mediaTiming:e.networkTiming.media,selectedLocalCandidate:null===(t=e.selectedIceCandidatePairStats)||void 0===t?void 0:t.localCandidate,selectedRemoteCandidate:null===(n=e.selectedIceCandidatePairStats)||void 0===n?void 0:n.remoteCandidate,iceCandidateStats:u,jitterStats:i,rttStats:a,packetLossStats:c,mosStats:l,error:e.error}};s.emit("event",h),setTimeout(()=>r.disconnect(),2e3)}}}_runPreflightTest(t,n,i){return e.__awaiter(this,void 0,void 0,function*(){let r=[],o=[];const{reportToInsights:l}=this._setupInsights({token:t,environment:n});try{let n=[];r=yield this._executePreflightStep("Acquire media",()=>[(0,a.syntheticAudio)(),(0,c.syntheticVideo)({width:640,height:480})]),this._updateProgress(k),this.emit("debug",{localTracks:r}),this._connectTiming.start();let d=yield this._executePreflightStep("Get turn credentials",()=>(0,s.getTurnCredentials)(t,i),new v);this._connectTiming.stop(),this._updateProgress(w);const u=new RTCPeerConnection({iceServers:d,iceTransportPolicy:"relay",bundlePolicy:"max-bundle"}),h=new RTCPeerConnection({iceServers:d,bundlePolicy:"max-bundle"});o.push(u),o.push(h),this._mediaTiming.start();const p=yield this._executePreflightStep("Setup Peer Connections",()=>e.__awaiter(this,void 0,void 0,function*(){u.addEventListener("icecandidate",e=>e.candidate&&h.addIceCandidate(e.candidate)),h.addEventListener("icecandidate",e=>e.candidate&&u.addIceCandidate(e.candidate)),r.forEach(e=>u.addTrack(e));const e=new Promise(e=>{let t=[];h.addEventListener("track",n=>{t.push(n.track),t.length===r.length&&e(t)})}),t=yield u.createOffer();yield u.setLocalDescription(t),yield h.setRemoteDescription(t);const n=yield h.createAnswer();return yield h.setLocalDescription(n),yield u.setRemoteDescription(n),yield this._collectNetworkTimings(u),e}),new b);this.emit("debug",{remoteTracks:p}),p.forEach(e=>{e.addEventListener("ended",()=>this._log.warn(e.kind+":ended")),e.addEventListener("mute",()=>this._log.warn(e.kind+":muted")),e.addEventListener("unmute",()=>this._log.warn(e.kind+":unmuted"))}),this._updateProgress(S),yield this._executePreflightStep("Wait for tracks to start",()=>new Promise(e=>{const t=document.createElement("video");t.autoplay=!0,t.playsInline=!0,t.muted=!0,t.srcObject=new MediaStream(p),n.push(t),this.emit("debugElement",t),t.oncanplay=e}),new b),this._mediaTiming.stop(),this._updateProgress(T);const f=yield this._executePreflightStep("Collect stats for duration",()=>this._collectRTCStatsForDuration(this._testDuration,{mos:[],jitter:[],rtt:[],outgoingBitrate:[],incomingBitrate:[],packetLoss:[],selectedIceCandidatePairStats:null,iceCandidateStats:[]},u,h)),m=yield this._executePreflightStep("Generate report",()=>this._generatePreflightReport(f));l({report:m}),this.emit("completed",m)}catch(e){const t=this._generatePreflightReport();l({report:Object.assign(Object.assign({},t),{error:null==e?void 0:e.toString()})}),this.emit("failed",e,t)}finally{o.forEach(e=>e.close()),r.forEach(e=>e.stop())}})}_collectRTCStats(t,n,s){return e.__awaiter(this,void 0,void 0,function*(){const e=yield(0,r.getCombinedConnectionStats)({publisher:n,subscriber:s}),{timestamp:o,bytesSent:a,bytesReceived:c,packets:l,packetsLost:d,roundTripTime:u,jitter:h,selectedIceCandidatePairStats:p,iceCandidateStats:f}=e,m=t.jitter.length>0;if(t.jitter.push(h),t.rtt.push(u),this._sentBytesMovingAverage.putSample(a,o),this._receivedBytesMovingAverage.putSample(c,o),this._packetLossMovingAverage.putSample(d,l),m){t.outgoingBitrate.push(1e3*this._sentBytesMovingAverage.get()*8),t.incomingBitrate.push(1e3*this._receivedBytesMovingAverage.get()*8);const e=this._packetLossMovingAverage.get(),n=Math.min(100,100*e);t.packetLoss.push(n);const r=(0,i.calculateMOS)(u,h,e);t.mos.push(r)}t.selectedIceCandidatePairStats||(t.selectedIceCandidatePairStats=p),0===t.iceCandidateStats.length&&(t.iceCandidateStats=f)})}_collectRTCStatsForDuration(t,n,i,r){return e.__awaiter(this,void 0,void 0,function*(){const e=Date.now(),s=Math.min(1e3,t);yield(0,l.waitForSometime)(s),yield this._collectRTCStats(n,i,r);const o=t-(Date.now()-e);return o>0&&(n=yield this._collectRTCStatsForDuration(o,n,i,r)),n})}_updateProgress(e){const t=Date.now()-this._testTiming.getTimeMeasurement().start;this._progressEvents.push({duration:t,name:e}),this.emit("progress",e)}}return Zn.PreflightTest=R,Zn}function qi(){if(xi)return Ai;xi=1;class e{constructor(e,t){Object.defineProperties(this,{_isCancelable:{writable:!0,value:!0},_isCanceled:{writable:!0,value:!1},_onCancel:{value:t}}),Object.defineProperty(this,"_promise",{value:new Promise((t,n)=>{e(e=>{this._isCancelable=!1,t(e)},e=>{this._isCancelable=!1,n(e)},()=>this._isCanceled)})})}static reject(t){return new e(function(e,n){n(t)},function(){})}static resolve(t){return new e(function(e){e(t)},function(){})}cancel(){return this._isCancelable&&(this._isCanceled=!0,this._onCancel()),this}catch(){const t=[].slice.call(arguments),n=this._promise;return new e(function(e,i){n.catch(...t).then(e,i)},this._onCancel)}then(){const t=[].slice.call(arguments),n=this._promise;return new e(function(e,i){n.then(...t).then(e,i)},this._onCancel)}finally(){const t=[].slice.call(arguments),n=this._promise;return new e(function(e,i){n.finally(...t).then(e,i)},this._onCancel)}}return Ai=e}var Qi,zi,Gi,Ki,Yi,Ji,Xi,Zi,er,tr,nr,ir,rr,sr,or,ar,cr,lr,dr,ur,hr,pr,fr,mr,gr,_r,vr,br,yr,kr,wr,Sr,Tr,Cr,Pr,Er,Or,Lr,Rr,Ir,Mr,Dr,Ar,xr,jr,$r,Nr,Vr,Fr,Br,Ur,Hr,Wr,qr,Qr,zr,Gr,Kr,Yr,Jr,Xr,Zr,es,ts,ns,is,rs,ss,os,as={};function cs(){if(Qi)return as;Qi=1;const{isNonArrayObject:e}=ye(),{typeErrors:t,clientTrackSwitchOffControl:n,videoContentPreferencesMode:i,subscriptionMode:r,trackPriority:s,trackSwitchOffMode:o}=ne();function a(n,i,r=[]){return void 0===n?null:null!==n&&e(n)?r.reduce((e,{prop:r,type:s,values:o})=>{if(e||!(r in n))return e;const a=n[r];return s&&typeof a!==s||"number"===s&&isNaN(a)?t.INVALID_TYPE(`${i}.${r}`,s):Array.isArray(o)&&!o.includes(a)?t.INVALID_VALUE(`${i}.${r}`,o):e},null):t.INVALID_TYPE(i,"object")}return as.validateBandwidthProfile=function(e){let t=a(e,"options.bandwidthProfile");return!e||t?t:(t=a(e.video,"options.bandwidthProfile.video",[{prop:"contentPreferencesMode",values:Object.values(i)},{prop:"dominantSpeakerPriority",values:Object.values(s)},{prop:"maxSubscriptionBitrate",type:"number"},{prop:"maxTracks",type:"number"},{prop:"mode",values:Object.values(r)},{prop:"clientTrackSwitchOffControl",values:Object.values(n)},{prop:"trackSwitchOffMode",values:Object.values(o)}]),t||(e.video?"maxTracks"in e.video&&"clientTrackSwitchOffControl"in e.video?new TypeError("options.bandwidthProfile.video.maxTracks is deprecated. Use options.bandwidthProfile.video.clientTrackSwitchOffControl instead."):"renderDimensions"in e.video&&"contentPreferencesMode"in e.video?new TypeError("options.bandwidthProfile.video.renderDimensions is deprecated. Use options.bandwidthProfile.video.contentPreferencesMode instead."):function(e){const t="options.bandwidthProfile.video.renderDimensions";let n=a(e,t);return e?n||Object.values(s).reduce((n,i)=>n||a(e[i],`${t}.${i}`,[{prop:"height",type:"number"},{prop:"width",type:"number"}]),null):n}(e.video.renderDimensions):null))},as.validateLocalTrack=function(e,n){if(!(e instanceof n.LocalAudioTrack||e instanceof n.LocalDataTrack||e instanceof n.LocalVideoTrack||e instanceof n.MediaStreamTrack))throw t.INVALID_TYPE("track","LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack")},as.validateObject=a,as}function ls(){if(Gi)return zi;Gi=1;const e=kn(),{buildLogLevels:t,valueToJSON:n}=ye(),{DEFAULT_LOG_LEVEL:i}=ne(),r=ie();let s=0;return zi=class extends e{constructor(e,n,o){super(),o=Object.assign({logLevel:i},o);const a=t(o.logLevel);Object.defineProperties(this,{_instanceId:{value:s++},_log:{value:o.log?o.log.createLog("default",this):new r("default",this,a,o.loggerName)},trackName:{enumerable:!0,value:e},trackSid:{enumerable:!0,value:n}})}toJSON(){return n(this)}toString(){return`[TrackPublication #${this._instanceId}: ${this.trackSid}]`}}}function ds(){if(Yi)return Ki;Yi=1;const e=ls(),{typeErrors:t,trackPriority:n}=ne();return Ki=class extends e{constructor(e,t,n,i){super(t.name,e.sid,i),Object.defineProperties(this,{_reemitSignalingEvent:{value:(...e)=>this.emit(e&&e.length?"warning":"warningsCleared",...e)},_reemitTrackEvent:{value:()=>this.emit(this.isTrackEnabled?"trackEnabled":"trackDisabled")},_signaling:{value:e},_unpublish:{value:n},isTrackEnabled:{enumerable:!0,get(){return"data"===this.track.kind||this.track.isEnabled}},kind:{enumerable:!0,value:t.kind},priority:{enumerable:!0,get:()=>e.updatedPriority},track:{enumerable:!0,value:t}}),["disabled","enabled"].forEach(e=>t.on(e,this._reemitTrackEvent)),["warning","warningsCleared"].forEach(t=>e.on(t,this._reemitSignalingEvent))}toString(){return`[LocalTrackPublication #${this._instanceId}: ${this.trackSid}]`}setPriority(e){const i=Object.values(n);if(!i.includes(e))throw t.INVALID_VALUE("priority",i);return this._signaling.setPriority(e),this}unpublish(){return["disabled","enabled"].forEach(e=>this.track.removeListener(e,this._reemitTrackEvent)),["warning","warningsCleared"].forEach(e=>this._signaling.removeListener(e,this._reemitSignalingEvent)),this._unpublish(this),this}},Ki}function us(){if(rr)return ir;rr=1;const{typeErrors:e,trackPriority:t}=ne(),{isIOS:n}=gn(),i=Pn();return ir=function(r){return class extends r{constructor(e,t,i,r,s,o,a){super(t,a=Object.assign({workaroundWebKitBug212780:n()&&"object"==typeof document&&"function"==typeof document.addEventListener&&"string"==typeof document.visibilityState},a)),Object.defineProperties(this,{_isEnabled:{value:i,writable:!0},_isSwitchedOff:{value:r,writable:!0},_priority:{value:null,writable:!0},_setPriority:{value:s},_setRenderHint:{value:e=>{this._log.debug("updating render hint:",e),o(e)}},isEnabled:{enumerable:!0,get(){return this._isEnabled}},isSwitchedOff:{enumerable:!0,get(){return this._isSwitchedOff}},priority:{enumerable:!0,get(){return this._priority}},sid:{enumerable:!0,value:e},_workaroundWebKitBug212780:{value:a.workaroundWebKitBug212780},_workaroundWebKitBug212780Cleanup:{value:null,writable:!0}})}setPriority(n){const i=[null,...Object.values(t)];if(!i.includes(n))throw e.INVALID_VALUE("priority",i);return this._priority!==n&&(this._priority=n,this._setPriority(n)),this}_setEnabled(e){this._isEnabled!==e&&(this._isEnabled=e,this.emit(this._isEnabled?"enabled":"disabled",this))}_setSwitchedOff(e){this._isSwitchedOff!==e&&(this._isSwitchedOff=e,this.emit(e?"switchedOff":"switchedOn",this))}attach(e){const t=super.attach(e);return!0!==this.mediaStreamTrack.enabled&&(this.mediaStreamTrack.enabled=!0,this.processedTrack&&(this.processedTrack.enabled=!0),this.processor&&this._captureFrames()),this._workaroundWebKitBug212780&&(this._workaroundWebKitBug212780Cleanup=this._workaroundWebKitBug212780Cleanup||function(e){const{_log:t,kind:n}=e;function r(i){i&&e._attachments.forEach(i=>{const r=e._elShims.get(i);i.paused&&r&&!r.pausedIntentionally()&&(t.info(`Playing inadvertently paused <${n}> element`),t.debug("Element:",i),t.debug("RemoteMediaTrack:",e),i.play().then(()=>{t.info(`Successfully played inadvertently paused <${n}> element`),t.debug("Element:",i),t.debug("RemoteMediaTrack:",e)}).catch(r=>{t.warn(`Error while playing inadvertently paused <${n}> element:`,{err:r,el:i,remoteMediaTrack:e})}))})}return i.onVisibilityChange(2,r),()=>{i.offVisibilityChange(2,r)}}(this)),t}detach(e){const t=super.detach(e);return 0===this._attachments.size&&(this.mediaStreamTrack.enabled=!1,this.processedTrack&&(this.processedTrack.enabled=!1),this._workaroundWebKitBug212780Cleanup&&(this._workaroundWebKitBug212780Cleanup(),this._workaroundWebKitBug212780Cleanup=null)),t}}},ir}function hs(){if(cr)return ar;cr=1;const e=ls();return ar=class extends e{constructor(e,t){super(e.name,e.sid,t),Object.defineProperties(this,{_signaling:{value:e},_track:{value:null,writable:!0},isSubscribed:{enumerable:!0,get(){return!!this._track}},isTrackEnabled:{enumerable:!0,get:()=>e.isEnabled},kind:{enumerable:!0,value:e.kind},publishPriority:{enumerable:!0,get:()=>e.priority},track:{enumerable:!0,get(){return this._track}}});let{error:n,isEnabled:i,isSwitchedOff:r,priority:s}=e;e.on("updated",()=>{if(n!==e.error)return n=e.error,void this.emit("subscriptionFailed",e.error);i!==e.isEnabled&&(i=e.isEnabled,this.track&&this.track._setEnabled(e.isEnabled),this.emit(e.isEnabled?"trackEnabled":"trackDisabled")),r!==e.isSwitchedOff&&(this._log.debug(`${this.trackSid}: ${r?"OFF":"ON"} => ${e.isSwitchedOff?"OFF":"ON"}`),r=e.isSwitchedOff,this.track?(this.track._setSwitchedOff(e.isSwitchedOff),this.emit(r?"trackSwitchedOff":"trackSwitchedOn",this.track)):r&&this._log.warn("Track was not subscribed when switched Off.")),s!==e.priority&&(s=e.priority,this.emit("publishPriorityChanged",s))})}toString(){return`[RemoteTrackPublication #${this._instanceId}: ${this.trackSid}]`}_subscribed(e){!this._track&&e&&(this._track=e,this.emit("subscribed",e))}_unsubscribe(){if(this._track){const e=this._track;this._track=null,this.emit("unsubscribed",e)}}},ar}function ps(){if(vr)return _r;vr=1;const e=us(),t=An(),n=Pn(),{NullObserver:i}=function(){if(gr)return mr;gr=1;class e{constructor(e){Object.defineProperties(this,{_callback:{value:e}})}observe(){}unobserve(){}makeVisible(e){const t=this._makeFakeEntry(e,!0);this._callback([t])}makeInvisible(e){const t=this._makeFakeEntry(e,!1);this._callback([t])}_makeFakeEntry(e,t){return{target:e,isIntersecting:t}}}return mr={NullIntersectionObserver:class extends e{},NullResizeObserver:class extends e{resize(e){const t=this._makeFakeEntry(e,!0);this._callback([t])}},NullObserver:e}}(),r=bi(),s=e(t);function o(e){if("auto"!==e._clientTrackSwitchOffControl)return;const n=e._getAllAttachedElements().filter(t=>!e._invisibleElements.has(t));!0===(e._getAllAttachedElements().filter(t=>e._elToPipWindows.has(t)).length>0||function(e){if(!("documentPictureInPicture"in globalThis))return!1;const t=globalThis.documentPictureInPicture.window;if(!t)return!1;const n=new WeakSet(t.document.querySelectorAll("video"));return e._getAllAttachedElements().some(e=>n.has(e))}(e)||"visible"===document.visibilityState&&n.length>0)?(e._turnOffTimer.clear(),e._setRenderHint({enabled:!0}),t._ensureDocumentPipVideosPlaying(e)):e._turnOffTimer.isSet||e._turnOffTimer.start()}function a(e){if("auto"!==e._contentPreferencesMode)return;const t=e._getAllAttachedElements().filter(t=>!e._invisibleElements.has(t)),n=e._getAllAttachedElements().map(t=>{const n=e._elToPipWindows.get(t);return n?{clientHeight:n.height,clientWidth:n.width}:{clientHeight:0,clientWidth:0}}),i=t.concat(n);if(i.length>0){const[{clientHeight:t,clientWidth:n}]=i.sort((e,t)=>t.clientHeight+t.clientWidth-e.clientHeight-e.clientWidth-1),r={height:t,width:n};e._setRenderHint({renderDimensions:r})}}return _r=class extends s{constructor(e,t,n,s,c,l,d){d=Object.assign({clientTrackSwitchOffControl:"auto",contentPreferencesMode:"auto",enableDocumentVisibilityTurnOff:!0},d),super(e,t,n,s,c,l,d=Object.assign({IntersectionObserver:"undefined"==typeof IntersectionObserver||"auto"!==d.clientTrackSwitchOffControl?i:IntersectionObserver,ResizeObserver:"undefined"==typeof ResizeObserver||"auto"!==d.contentPreferencesMode?i:ResizeObserver},d)),Object.defineProperties(this,{_enableDocumentVisibilityTurnOff:{value:!0===d.enableDocumentVisibilityTurnOff&&"auto"===d.clientTrackSwitchOffControl},_documentVisibilityTurnOffCleanup:{value:null,writable:!0},_clientTrackSwitchOffControl:{value:d.clientTrackSwitchOffControl},_contentPreferencesMode:{value:d.contentPreferencesMode},_invisibleElements:{value:new WeakSet},_elToPipCallbacks:{value:new WeakMap},_elToPipWindows:{value:new WeakMap},_turnOffTimer:{value:new r(()=>{this._setRenderHint({enabled:!1})},50,!1)},_resizeObserver:{value:new d.ResizeObserver(e=>{e.find(e=>!this._invisibleElements.has(e.target))&&a(this)})},_intersectionObserver:{value:new d.IntersectionObserver(e=>{let t=!1;e.forEach(e=>{!this._invisibleElements.has(e.target)!==e.isIntersecting&&(e.isIntersecting?(this._log.debug("intersectionObserver detected: Off => On"),this._invisibleElements.delete(e.target)):(this._log.debug("intersectionObserver detected: On => Off"),this._invisibleElements.add(e.target)),t=!0)}),t&&(o(this),a(this))},{threshold:.25})}})}_start(e){const t=super._start.call(this,e);return o(this),t}switchOn(){if("manual"!==this._clientTrackSwitchOffControl)throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.clientTrackSwitchOffControl is set to "manual"');return this._setRenderHint({enabled:!0}),this}switchOff(){if("manual"!==this._clientTrackSwitchOffControl)throw new Error('Invalid state. You can call switchOff only when bandwidthProfile.video.clientTrackSwitchOffControl is set to "manual"');return this._setRenderHint({enabled:!1}),this}setContentPreferences(e){if("manual"!==this._contentPreferencesMode)throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.contentPreferencesMode is set to "manual"');return e.renderDimensions&&this._setRenderHint({renderDimensions:e.renderDimensions}),this}_unObservePip(e){const t=this._elToPipCallbacks.get(e);t&&(e.removeEventListener("enterpictureinpicture",t.onEnterPip),e.removeEventListener("leavepictureinpicture",t.onLeavePip),this._elToPipCallbacks.delete(e))}_observePip(e){if(!this._elToPipCallbacks.get(e)){const t=t=>this._onEnterPip(t,e),n=t=>this._onLeavePip(t,e),i=t=>this._onResizePip(t,e);e.addEventListener("enterpictureinpicture",t),e.addEventListener("leavepictureinpicture",n),this._elToPipCallbacks.set(e,{onEnterPip:t,onLeavePip:n,onResizePip:i})}}_onEnterPip(e,t){this._log.debug("onEnterPip");const n=e.pictureInPictureWindow;this._elToPipWindows.set(t,n);const{onResizePip:i}=this._elToPipCallbacks.get(t);n.addEventListener("resize",i),o(this)}_onLeavePip(e,t){this._log.debug("onLeavePip"),this._elToPipWindows.delete(t);const{onResizePip:n}=this._elToPipCallbacks.get(t);e.pictureInPictureWindow.removeEventListener("resize",n),o(this)}_onResizePip(){a(this)}attach(e){const t=super.attach(e);return"auto"===this._clientTrackSwitchOffControl&&this._invisibleElements.add(t),this._intersectionObserver.observe(t),this._resizeObserver.observe(t),this._enableDocumentVisibilityTurnOff&&(this._documentVisibilityTurnOffCleanup=this._documentVisibilityTurnOffCleanup||function(e){function t(){o(e)}return n.onVisibilityChange(1,t),()=>{n.offVisibilityChange(1,t)}}(this)),this._observePip(t),t}detach(e){const t=super.detach(e);return(Array.isArray(t)?t:[t]).forEach(e=>{this._intersectionObserver.unobserve(e),this._resizeObserver.unobserve(e),this._invisibleElements.delete(e),this._unObservePip(e)}),0===this._attachments.size&&this._documentVisibilityTurnOffCleanup&&(this._documentVisibilityTurnOffCleanup(),this._documentVisibilityTurnOffCleanup=null),o(this),a(this),t}addProcessor(){return super.addProcessor.apply(this,arguments)}removeProcessor(){return super.removeProcessor.apply(this,arguments)}toString(){return`[RemoteVideoTrack #${this._instanceId}: ${this.sid}]`}setPriority(e){return super.setPriority(e)}},_r}function fs(){if(wr)return kr;wr=1;const e=kn(),t=function(){if(or)return sr;or=1;const e=Tn(),t=us()(e);return sr=class extends t{constructor(e,t,n,i,r,s,o){super(e,t,n,i,r,s,o)}toString(){return`[RemoteAudioTrack #${this._instanceId}: ${this.sid}]`}_start(){super._start(),this._dummyEl&&(this._disposeMediaElement?this._disposeMediaElement(this._dummyEl):this._dummyEl.srcObject=null,this._dummyEl=null)}setPriority(e){return super.setPriority(e)}},sr}(),n=function(){if(dr)return lr;dr=1;const e=hs();return lr=class extends e{constructor(e,t){super(e,t)}toString(){return`[RemoteAudioTrackPublication #${this._instanceId}: ${this.trackSid}]`}},lr}(),i=function(){if(hr)return ur;hr=1;const e=wn(),{typeErrors:t,trackPriority:n}=ne();return ur=class extends e{constructor(e,t,n){super(t.id,"data",n),Object.defineProperties(this,{_isSwitchedOff:{value:!1,writable:!0},_priority:{value:null,writable:!0},isEnabled:{enumerable:!0,value:!0},isSwitchedOff:{enumerable:!0,get(){return this._isSwitchedOff}},maxPacketLifeTime:{enumerable:!0,value:t.maxPacketLifeTime},maxRetransmits:{enumerable:!0,value:t.maxRetransmits},ordered:{enumerable:!0,value:t.ordered},priority:{enumerable:!0,get(){return this._priority}},reliable:{enumerable:!0,value:null===t.maxPacketLifeTime&&null===t.maxRetransmits},sid:{enumerable:!0,value:e}}),t.on("message",e=>{this.emit("message",e,this)})}setPriority(e){const i=[null,...Object.values(n)];if(!i.includes(e))throw t.INVALID_VALUE("priority",i);return this._priority=e,this}_setEnabled(){}_setSwitchedOff(e){this._isSwitchedOff!==e&&(this._isSwitchedOff=e,this.emit(e?"switchedOff":"switchedOn",this))}},ur}(),r=function(){if(fr)return pr;fr=1;const e=hs();return pr=class extends e{constructor(e,t){super(e,t)}toString(){return`[RemoteDataTrackPublication #${this._instanceId}: ${this.trackSid}]`}},pr}(),s=ps(),o=function(){if(yr)return br;yr=1;const e=hs();return br=class extends e{constructor(e,t){super(e,t)}toString(){return`[RemoteVideoTrackPublication #${this._instanceId}: ${this.trackSid}]`}},br}(),a=ye();let c=0;function l(e,t,n){const i=new Map;"disconnected"!==e.state&&(e._getTrackEvents().forEach(n=>{const r=n[0],s=n[1];i.set(r,function(){const t=[s].concat([].slice.call(arguments));return e.emit(...t)}),t.on(r,i.get(r))}),e._trackEventReemitters.set(n,i))}return kr=class extends e{constructor(e,a){super();const d=function(e){const t=e.map(e=>[e.id,e]),n=t.filter(e=>"audio"===e[1].kind),i=t.filter(e=>"video"===e[1].kind),r=t.filter(e=>"data"===e[1].kind);return{audioTracks:n,dataTracks:r,tracks:t,videoTracks:i}}((a=Object.assign({RemoteAudioTrack:t,RemoteAudioTrackPublication:n,RemoteDataTrack:i,RemoteDataTrackPublication:r,RemoteVideoTrack:s,RemoteVideoTrackPublication:o,tracks:[]},a)).tracks),u=a.log.createLog("default",this),h=new Map(d.audioTracks),p=new Map(d.dataTracks),f=new Map(d.tracks),m=new Map(d.videoTracks);Object.defineProperties(this,{_RemoteAudioTrack:{value:a.RemoteAudioTrack},_RemoteAudioTrackPublication:{value:a.RemoteAudioTrackPublication},_RemoteDataTrack:{value:a.RemoteDataTrack},_RemoteDataTrackPublication:{value:a.RemoteDataTrackPublication},_RemoteVideoTrack:{value:a.RemoteVideoTrack},_RemoteVideoTrackPublication:{value:a.RemoteVideoTrackPublication},_audioTracks:{value:h},_dataTracks:{value:p},_instanceId:{value:++c},_clientTrackSwitchOffControl:{value:a.clientTrackSwitchOffControl},_contentPreferencesMode:{value:a.contentPreferencesMode},_log:{value:u},_signaling:{value:e},_tracks:{value:f},_trackEventReemitters:{value:new Map},_trackPublicationEventReemitters:{value:new Map},_trackSignalingUpdatedEventCallbacks:{value:new Map},_videoTracks:{value:m},audioTracks:{enumerable:!0,value:new Map},dataTracks:{enumerable:!0,value:new Map},identity:{enumerable:!0,get:()=>e.identity},networkQualityLevel:{enumerable:!0,get:()=>e.networkQualityLevel},networkQualityStats:{enumerable:!0,get:()=>e.networkQualityStats},sid:{enumerable:!0,get:()=>e.sid},state:{enumerable:!0,get:()=>e.state},tracks:{enumerable:!0,value:new Map},videoTracks:{enumerable:!0,value:new Map},_MediaStream:{value:a.MediaStream},_mapMediaElement:{value:a.mapMediaElement},_disposeMediaElement:{value:a.disposeMediaElement}}),this._tracks.forEach(l.bind(null,this)),e.on("networkQualityLevelChanged",()=>this.emit("networkQualityLevelChanged",this.networkQualityLevel,this.networkQualityStats&&(this.networkQualityStats.audio||this.networkQualityStats.video)?this.networkQualityStats:null)),function(e,t){const n=e._log;if("disconnected"===e.state)return;t.on("stateChanged",function i(r){n.debug("Transitioned to state:",r),e.emit(r,e),"disconnected"===r&&(n.debug("Removing Track event reemitters"),t.removeListener("stateChanged",i),e._tracks.forEach(t=>{const n=e._trackEventReemitters.get(t.id);t&&n&&n.forEach((e,n)=>{t.removeListener(n,e)})}),t.tracks.forEach(t=>{const n=e._tracks.get(t.id),i=e._trackEventReemitters.get(t.id);n&&i&&i.forEach((e,t)=>{n.removeListener(t,e)})}),e._trackEventReemitters.clear(),e.tracks.forEach(t=>{e._trackPublicationEventReemitters.get(t.trackSid).forEach((e,n)=>{t.removeListener(n,e)})}),e._trackPublicationEventReemitters.clear())})}(this,e),u.info("Created a new Participant"+(this.identity?`: ${this.identity}`:""))}_getTrackEvents(){return[["dimensionsChanged","trackDimensionsChanged"],["message","trackMessage"],["started","trackStarted"]]}_getTrackPublicationEvents(){return[]}toString(){return`[Participant #${this._instanceId}: ${this.sid}]`}_addTrack(e,t){const n=this._log;if(this._tracks.has(t))return null;this._tracks.set(t,e);return{audio:this._audioTracks,video:this._videoTracks,data:this._dataTracks}[e.kind].set(t,e),l(this,e,t),n.info(`Added a new ${a.trackClass(e)}:`,t),n.debug(`${a.trackClass(e)}:`,e),e}_addTrackPublication(e){const t=this._log;if(this.tracks.has(e.trackSid))return null;this.tracks.set(e.trackSid,e);return{audio:this.audioTracks,data:this.dataTracks,video:this.videoTracks}[e.kind].set(e.trackSid,e),function(e,t){const n=new Map;if("disconnected"===e.state)return;e._getTrackPublicationEvents().forEach(([i,r])=>{n.set(i,(...n)=>{e.emit(r,...n,t)}),t.on(i,n.get(i))}),e._trackPublicationEventReemitters.set(t.trackSid,n)}(this,e),t.info(`Added a new ${a.trackPublicationClass(e)}:`,e.trackSid),t.debug(`${a.trackPublicationClass(e)}:`,e),e}_handleTrackSignalingEvents(){const{_log:e,_clientTrackSwitchOffControl:t,_contentPreferencesMode:n,_MediaStream:i,_mapMediaElement:r,_disposeMediaElement:s}=this,o=this;if("disconnected"===this.state)return;const a=this._RemoteAudioTrack,c=this._RemoteAudioTrackPublication,l=this._RemoteVideoTrack,d=this._RemoteVideoTrackPublication,u=this._RemoteDataTrack,h=this._RemoteDataTrackPublication,p=this._signaling;function f(t){const n=new(0,{audio:c,data:h,video:d}[t.kind])(t,{log:e});o._addTrackPublication(n);let i=t.isSubscribed;i&&g(t),o._trackSignalingUpdatedEventCallbacks.set(t.sid,()=>{if(i!==t.isSubscribed){if(i=t.isSubscribed,i)return void g(t);!function(e){const[t,n]=Array.from(o._tracks.entries()).find(([,t])=>t.sid===e.sid),i=o.tracks.get(e.sid);n&&o._removeTrack(n,i,t)}(t)}}),t.on("updated",o._trackSignalingUpdatedEventCallbacks.get(t.sid))}function m(e){e.isSubscribed&&e.setTrackTransceiver(null);const t=o._trackSignalingUpdatedEventCallbacks.get(e.sid);t&&(e.removeListener("updated",t),o._trackSignalingUpdatedEventCallbacks.delete(e.sid));const n=o.tracks.get(e.sid);n&&o._removeTrackPublication(n)}function g(c){const{isEnabled:d,name:h,kind:f,sid:m,trackTransceiver:g,isSwitchedOff:_}=c,v={audio:a,video:l,data:u}[f],b=o.tracks.get(m);if(!v||f!==g.kind)return;const y={log:e,name:h,clientTrackSwitchOffControl:t,contentPreferencesMode:n,mapMediaElement:r,disposeMediaElement:s};i&&(y.MediaStream=i);const k="data"===f?new v(m,g,y):new v(m,g,d,_,e=>p.updateSubscriberTrackPriority(m,e),e=>{c.isSubscribed&&p.updateTrackRenderHint(m,e)},y);o._addTrack(k,b,g.id)}p.on("trackAdded",f),p.on("trackRemoved",m),p.tracks.forEach(f),p.on("stateChanged",function t(n){"disconnected"===n?(e.debug("Removing event listeners"),p.removeListener("stateChanged",t),p.removeListener("trackAdded",f),p.removeListener("trackRemoved",m)):"connected"===n&&(e.info("reconnected"),setTimeout(()=>o.emit("reconnected"),0))})}_removeTrack(e,t){if(!this._tracks.has(t))return null;this._tracks.delete(t);({audio:this._audioTracks,video:this._videoTracks,data:this._dataTracks})[e.kind].delete(t);(this._trackEventReemitters.get(t)||new Map).forEach((t,n)=>{e.removeListener(n,t)});const n=this._log;return n.info(`Removed a ${a.trackClass(e)}:`,t),n.debug(`${a.trackClass(e)}:`,e),e}_removeTrackPublication(e){if(!(e=this.tracks.get(e.trackSid)))return null;this.tracks.delete(e.trackSid);({audio:this.audioTracks,data:this.dataTracks,video:this.videoTracks})[e.kind].delete(e.trackSid);(this._trackPublicationEventReemitters.get(e.trackSid)||new Map).forEach((t,n)=>{e.removeListener(n,t)});const t=this._log;return t.info(`Removed a ${a.trackPublicationClass(e)}:`,e.trackSid),t.debug(`${a.trackPublicationClass(e)}:`,e),e}toJSON(){return a.valueToJSON(this)}},kr}function ms(){if(Tr)return Sr;Tr=1;const{asLocalTrack:e,asLocalTrackPublication:t,trackClass:n}=ye(),{typeErrors:i,trackPriority:r}=ne(),{validateLocalTrack:s}=cs(),{LocalAudioTrack:o,LocalDataTrack:a,LocalVideoTrack:c}=Vn(),l=function(){if(Xi)return Ji;Xi=1;const e=ds();return Ji=class extends e{constructor(e,t,n,i){super(e,t,n,i)}toString(){return`[LocalAudioTrackPublication #${this._instanceId}: ${this.trackSid}]`}},Ji}(),d=function(){if(er)return Zi;er=1;const e=ds();return Zi=class extends e{constructor(e,t,n,i){super(e,t,n,i)}toString(){return`[LocalDataTrackPublication #${this._instanceId}: ${this.trackSid}]`}},Zi}(),u=function(){if(nr)return tr;nr=1;const e=ds();return tr=class extends e{constructor(e,t,n,i){super(e,t,n,i)}toString(){return`[LocalVideoTrackPublication #${this._instanceId}: ${this.trackSid}]`}},tr}(),h=fs();function p(e,t){return Array.from(e.values()).find(e=>e.track===t||e.track.mediaStreamTrack===t)||null}return Sr=class extends h{constructor(e,t,n){const i=(n=Object.assign({LocalAudioTrack:o,LocalVideoTrack:c,LocalDataTrack:a,MediaStreamTrack:MediaStreamTrack,LocalAudioTrackPublication:l,LocalVideoTrackPublication:u,LocalDataTrackPublication:d,shouldStopLocalTracks:!1,tracks:t},n)).shouldStopLocalTracks?new Set(t.filter(e=>"data"!==e.kind)):new Set;super(e,n),Object.defineProperties(this,{_eventObserver:{value:n.eventObserver},_LocalAudioTrack:{value:n.LocalAudioTrack},_LocalDataTrack:{value:n.LocalDataTrack},_LocalVideoTrack:{value:n.LocalVideoTrack},_MediaStreamTrack:{value:n.MediaStreamTrack},_LocalAudioTrackPublication:{value:n.LocalAudioTrackPublication},_LocalDataTrackPublication:{value:n.LocalDataTrackPublication},_LocalVideoTrackPublication:{value:n.LocalVideoTrackPublication},_tracksToStop:{value:i},signalingRegion:{enumerable:!0,get:()=>e.signalingRegion}}),this._handleTrackSignalingEvents()}_addTrack(e,t,n){const i=super._addTrack(e,t);return i&&"disconnected"!==this.state&&this._addLocalTrack(e,n),i}_addLocalTrack(e,t){var i;const r=null===(i=e.noiseCancellation)||void 0===i?void 0:i.vendor;this._signaling.addTrack(e._trackSender,e.name,t,r),this._log.info(`Added a new ${n(e,!0)}:`,e.id),this._log.debug(`${n(e,!0)}:`,e)}_removeTrack(e,t){const i=super._removeTrack(e,t);return i&&"disconnected"!==this.state&&(this._signaling.removeTrack(e._trackSender),this._log.info(`Removed a ${n(e,!0)}:`,e.id),this._log.debug(`${n(e,!0)}:`,e)),i}_getTrackEvents(){return super._getTrackEvents.call(this).concat([["disabled","trackDisabled"],["enabled","trackEnabled"],["stopped","trackStopped"]])}toString(){return`[LocalParticipant #${this._instanceId}${this.sid?`: ${this.sid}`:""}]`}_handleTrackSignalingEvents(){const e=this._log;if("disconnected"===this.state)return;const t=t=>{const i=this._signaling.getPublication(t._trackSender);i&&(i.disable(),e.debug(`Disabled the ${n(t,!0)}:`,t.id))},i=t=>{const i=this._signaling.getPublication(t._trackSender);i&&(i.enable(),e.debug(`Enabled the ${n(t,!0)}:`,t.id))},s=e=>{const t=this._signaling.getPublication(e._trackSender);return t&&t.stop(),t},o=n=>{e.debug("Transitioned to state:",n),"disconnected"===n?(e.debug("Removing LocalTrack event listeners"),this._signaling.removeListener("stateChanged",o),this.removeListener("trackDisabled",t),this.removeListener("trackEnabled",i),this.removeListener("trackStopped",s),this._tracks.forEach(e=>{const t=s(e);t&&e._trackSender.removeClone(t._trackTransceiver)}),e.info(`LocalParticipant disconnected. Stopping ${this._tracksToStop.size} automatically-acquired LocalTracks`),this._tracksToStop.forEach(e=>{e.stop()})):"connected"===n&&(e.info("reconnected"),setTimeout(()=>this.emit("reconnected"),0))};this.on("trackDisabled",t),this.on("trackEnabled",i),this.on("trackStopped",s),this._signaling.on("stateChanged",o),this._tracks.forEach(t=>{this._addLocalTrack(t,r.PRIORITY_STANDARD),this._getOrCreateLocalTrackPublication(t).catch(n=>{e.warn(`Failed to get or create LocalTrackPublication for ${t}:`,n)})})}_getOrCreateLocalTrackPublication(e){let i=p(this.tracks,e);if(i)return Promise.resolve(i);const r=this._log,s=this,o=this._signaling.getPublication(e._trackSender);return o?new Promise((a,c)=>{o.on("updated",function l(){const d=o.error;if(d)return o.removeListener("updated",l),r.warn(`Failed to publish the ${n(e,!0)}: ${d.message}`),s._removeTrack(e,e.id),setTimeout(()=>{s.emit("trackPublicationFailed",d,e)}),void c(d);if(!s._tracks.has(e.id))return o.removeListener("updated",l),void c(new Error(`The ${e} was unpublished`));if(!o.sid)return;o.removeListener("updated",l);const u={log:r,LocalAudioTrackPublication:s._LocalAudioTrackPublication,LocalDataTrackPublication:s._LocalDataTrackPublication,LocalVideoTrackPublication:s._LocalVideoTrackPublication};i=p(s.tracks,e);const h=e=>s.emit("trackWarning",e,i),f=()=>s.emit("trackWarningsCleared",i),m=e=>{i.removeListener("trackWarning",h),i.removeListener("trackWarningsCleared",f),s.unpublishTrack(e.track)};i||(i=t(e,o,m,u),s._addTrackPublication(i)),i.on("warning",h),i.on("warningsCleared",f);const{state:g}=s._signaling;"connected"!==g&&"connecting"!==g||(e._processorEventObserver&&e._processorEventObserver.on("event",e=>{s._eventObserver.emit("event",{name:e.name,payload:e.data,group:"video-processor",level:"info"})}),e.processedTrack&&(e._captureFrames(),e._setSenderMediaStreamTrack(!0))),"connected"===g&&setTimeout(()=>{s.emit("trackPublished",i)}),a(i)})}):Promise.reject(new Error(`Unexpected error: The ${e} cannot be published`))}publishTrack(t,n){const s=p(this.tracks,t);if(s)return Promise.resolve(s);let o;n=Object.assign({log:this._log,priority:r.PRIORITY_STANDARD,LocalAudioTrack:this._LocalAudioTrack,LocalDataTrack:this._LocalDataTrack,LocalVideoTrack:this._LocalVideoTrack,MediaStreamTrack:this._MediaStreamTrack},n);try{o=e(t,n)}catch(e){return Promise.reject(e)}const a=o.noiseCancellation,c=this._signaling.audioProcessors;a&&!c.includes(a.vendor)&&(this._log.warn(`${a.vendor} is not supported in this room. disabling it permanently`),a.disablePermanently());const l=Object.values(r);if(!l.includes(n.priority))return Promise.reject(i.INVALID_VALUE("LocalTrackPublishOptions.priority",l));let d=this._addTrack(o,o.id,n.priority)||this._tracks.get(o.id);return this._getOrCreateLocalTrackPublication(d)}publishTracks(e){if(!Array.isArray(e))throw i.INVALID_TYPE("tracks","Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack");return Promise.all(e.map(this.publishTrack,this))}setBandwidthProfile(){this._log.warn("setBandwidthProfile is not implemented yet and may be available in future versions of twilio-video.js")}setNetworkQualityConfiguration(e){if("object"!=typeof e||null===e)throw i.INVALID_TYPE("networkQualityConfiguration","NetworkQualityConfiguration");return["local","remote"].forEach(t=>{if(t in e&&("number"!=typeof e[t]||isNaN(e[t])))throw i.INVALID_TYPE(`networkQualityConfiguration.${t}`,"number")}),this._signaling.setNetworkQualityConfiguration(e),this}setParameters(e){if(void 0!==e&&"object"!=typeof e)throw i.INVALID_TYPE("encodingParameters","EncodingParameters, null or undefined");if(e){if(this._signaling.getParameters().adaptiveSimulcast&&e.maxVideoBitrate)throw i.INVALID_TYPE("encodingParameters",'encodingParameters.maxVideoBitrate is not compatible with "preferredVideoCodecs=auto"');["maxAudioBitrate","maxVideoBitrate"].forEach(t=>{if(void 0!==e[t]&&"number"!=typeof e[t]&&null!==e[t])throw i.INVALID_TYPE(`encodingParameters.${t}`,"number, null or undefined")})}else null===e&&(e={maxAudioBitrate:null,maxVideoBitrate:null});return this._signaling.setParameters(e),this}unpublishTrack(e){s(e,{LocalAudioTrack:this._LocalAudioTrack,LocalDataTrack:this._LocalDataTrack,LocalVideoTrack:this._LocalVideoTrack,MediaStreamTrack:this._MediaStreamTrack});let t=this._tracks.get(e.id);if(!t)return null;if(this._signaling.getPublication(t._trackSender).publishFailed(new Error(`The ${t} was unpublished`)),t=this._removeTrack(t,t.id),!t)return null;const n=p(this.tracks,t);return n&&this._removeTrackPublication(n),n}unpublishTracks(e){if(!Array.isArray(e))throw i.INVALID_TYPE("tracks","Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack");return e.reduce((e,t)=>{const n=this.unpublishTrack(t);return n?e.concat(n):e},[])}},Sr}function gs(){if(Mr)return Ir;Mr=1;return Ir=class{constructor(e,t){if("string"!=typeof e)throw new Error("Track id must be a string");Object.defineProperties(this,{trackId:{value:e,enumerable:!0},trackSid:{value:t.trackSid,enumerable:!0},timestamp:{value:t.timestamp,enumerable:!0},ssrc:{value:t.ssrc,enumerable:!0},packetsLost:{value:"number"==typeof t.packetsLost?t.packetsLost:null,enumerable:!0},codec:{value:"string"==typeof t.codecName?t.codecName:null,enumerable:!0}})}}}function _s(){if(Ar)return Dr;Ar=1;const e=gs();return Dr=class extends e{constructor(e,t,n){super(e,t),Object.defineProperties(this,{bytesSent:{value:"number"==typeof t.bytesSent?t.bytesSent:n?0:null,enumerable:!0},packetsSent:{value:"number"==typeof t.packetsSent?t.packetsSent:n?0:null,enumerable:!0},roundTripTime:{value:"number"==typeof t.roundTripTime?t.roundTripTime:n?0:null,enumerable:!0}})}}}function vs(){if(Fr)return Vr;Fr=1;const e=gs();return Vr=class extends e{constructor(e,t){super(e,t),Object.defineProperties(this,{bytesReceived:{value:"number"==typeof t.bytesReceived?t.bytesReceived:null,enumerable:!0},packetsReceived:{value:"number"==typeof t.packetsReceived?t.packetsReceived:null,enumerable:!0},jitter:{value:"number"==typeof t.jitter?t.jitter:null,enumerable:!0}})}}}function bs(){if(Qr)return qr;Qr=1;const e=function(){if(jr)return xr;jr=1;const e=_s();return xr=class extends e{constructor(e,t,n){super(e,t,n),Object.defineProperties(this,{audioLevel:{value:"number"==typeof t.audioInputLevel?t.audioInputLevel:null,enumerable:!0},jitter:{value:"number"==typeof t.jitter?t.jitter:null,enumerable:!0}})}}}(),t=function(){if(Nr)return $r;Nr=1;const e=_s();return $r=class extends e{constructor(e,t,n){super(e,t,n);let i=null;"number"==typeof t.frameWidthInput&&"number"==typeof t.frameHeightInput&&(i={},Object.defineProperties(i,{width:{value:t.frameWidthInput,enumerable:!0},height:{value:t.frameHeightInput,enumerable:!0}}));let r=null;"number"==typeof t.frameWidthSent&&"number"==typeof t.frameHeightSent&&(r={},Object.defineProperties(r,{width:{value:t.frameWidthSent,enumerable:!0},height:{value:t.frameHeightSent,enumerable:!0}})),Object.defineProperties(this,{captureDimensions:{value:i,enumerable:!0},dimensions:{value:r,enumerable:!0},captureFrameRate:{value:"number"==typeof t.frameRateInput?t.frameRateInput:null,enumerable:!0},frameRate:{value:"number"==typeof t.frameRateSent?t.frameRateSent:null,enumerable:!0},qualityLimitationReason:{value:["none","bandwidth","cpu","other"].find(e=>e===t.qualityLimitationReason)||null,enumerable:!0}})}}}(),n=function(){if(Ur)return Br;Ur=1;const e=vs();return Br=class extends e{constructor(e,t){super(e,t),Object.defineProperties(this,{audioLevel:{value:"number"==typeof t.audioOutputLevel?t.audioOutputLevel:null,enumerable:!0}})}}}(),i=function(){if(Wr)return Hr;Wr=1;const e=vs();return Hr=class extends e{constructor(e,t){super(e,t);let n=null;"number"==typeof t.frameWidthReceived&&"number"==typeof t.frameHeightReceived&&(n={},Object.defineProperties(n,{width:{value:t.frameWidthReceived,enumerable:!0},height:{value:t.frameHeightReceived,enumerable:!0}})),Object.defineProperties(this,{dimensions:{value:n,enumerable:!0},frameRate:{value:"number"==typeof t.frameRateReceived?t.frameRateReceived:null,enumerable:!0},freezeCount:{value:"number"==typeof t.freezeCount?t.freezeCount:null,enumerable:!0}})}}}();return qr=class{constructor(r,s,o){if("string"!=typeof r)throw new Error("RTCPeerConnection id must be a string");Object.defineProperties(this,{peerConnectionId:{value:r,enumerable:!0},localAudioTrackStats:{value:s.localAudioTrackStats.map(t=>new e(t.trackId,t,o)),enumerable:!0},localVideoTrackStats:{value:s.localVideoTrackStats.map(e=>new t(e.trackId,e,o)),enumerable:!0},remoteAudioTrackStats:{value:s.remoteAudioTrackStats.map(e=>new n(e.trackId,e)),enumerable:!0},remoteVideoTrackStats:{value:s.remoteVideoTrackStats.map(e=>new i(e.trackId,e)),enumerable:!0}})}}}function ys(){if(es)return Zr;es=1;const e=function(){if(Xr)return Jr;Xr=1;const e=q;function t(){return"undefined"!=typeof globalThis&&"function"==typeof globalThis.PressureObserver?globalThis.PressureObserver:null}return Jr=new class{constructor(){this._lastCpuPressure=null,this._cpuPressureObserver=null,this._sampleInterval=2e3,this._cpuPressureChangeListeners=[]}watchCpuPressure(n){return e.__awaiter(this,void 0,void 0,function*(){if("function"!=typeof n)throw new Error("The CPU pressure change callback must be a function");const e=t();if(!e)throw new Error("PressureObserver is not supported in this environment");this._cpuPressureChangeListeners.push(n),this._cpuPressureObserver||(this._cpuPressureObserver=new e(e=>this._handleCpuPressureRecords(e)),yield this._cpuPressureObserver.observe("cpu",{sampleInterval:this._sampleInterval}))})}isSupported(){return!!t()}unwatchCpuPressure(e){this._cpuPressureChangeListeners=this._cpuPressureChangeListeners.filter(t=>t!==e),0===this._cpuPressureChangeListeners.length&&this.cleanup()}_handleCpuPressureRecords(e){if(!Array.isArray(e)||0===e.length)return;const t=e[e.length-1];t&&t.state!==this._lastCpuPressure&&(this._lastCpuPressure=t.state,this._cpuPressureChangeListeners.forEach(e=>e(t)))}cleanup(){this._cpuPressureObserver&&(this._cpuPressureObserver.disconnect(),this._cpuPressureObserver=null),this._cpuPressureChangeListeners=[],this._lastCpuPressure=null}}}(),t=Yn();return Zr=class{constructor(e){if(!e)throw new Error("ResourceMonitor requires a log instance");this._log=e,this._cpuPressureHandler=null,this._setupCPUMonitoring()}_setupCPUMonitoring(){e.isSupported()?(this._cpuPressureHandler=e=>{this._log.debug("CPU pressure changed:",e),t.system.cpuPressureChanged(e.state)},e.watchCpuPressure(this._cpuPressureHandler).then(()=>{this._log.debug("CPU pressure monitoring initialized")}).catch(e=>{this._log.error("Error initializing CPU pressure monitoring:",e)})):this._log.debug("CPU pressure monitoring not supported")}cleanup(){this._log.debug("Cleaning up resource monitors"),this._cpuPressureHandler&&(e.unwatchCpuPressure(this._cpuPressureHandler),this._cpuPressureHandler=null)}},Zr}function ks(){if(ns)return ts;ns=1;const e=function(){if(Gr)return zr;Gr=1;const e=Pn(),t=Yn();return zr=class{constructor(e){if(!e)throw new Error("ApplicationMonitor requires a log instance");this._log=e,this._visibilityChangeHandler=null,this._boundHandleBeforeUnload=this._handleBeforeUnload.bind(this),this._setupVisibilityMonitoring(),this._setupBeforeUnloadMonitoring()}_setupVisibilityMonitoring(){if("undefined"!=typeof window&&"undefined"!=typeof document){this._visibilityChangeHandler=e=>this._handleVisibilityChange(e);try{e.onVisibilityChange(1,this._visibilityChangeHandler),this._log.debug("ApplicationMonitor visibility monitoring initialized")}catch(e){this._log.error("Error initializing ApplicationMonitor visibility monitoring:",e)}}else this._log.debug("Not in browser environment, skipping setup of ApplicationMonitor")}_setupBeforeUnloadMonitoring(){try{window.addEventListener("beforeunload",this._boundHandleBeforeUnload),this._log.debug("ApplicationMonitor beforeunload monitoring initialized")}catch(e){this._log.error("Error initializing ApplicationMonitor beforeunload monitoring:",e)}}cleanup(){this._log.debug("Cleaning up application event monitors"),this._visibilityChangeHandler&&(e.offVisibilityChange(1,this._visibilityChangeHandler),this._visibilityChangeHandler=null),"undefined"!=typeof window&&this._boundHandleBeforeUnload&&window.removeEventListener("beforeunload",this._boundHandleBeforeUnload)}_handleVisibilityChange(e){e?t.application.resumed():t.application.backgrounded()}_handleBeforeUnload(){t.application.terminated()}},zr}(),t=function(){if(Yr)return Kr;Yr=1;const{boolToString:e}=ye(),t=Yn();return Kr=class{constructor(e){if(!e)throw new Error("NetworkMonitor requires a log instance");this._log=e,this._networkInformationHandler=null,this._setupNetworkInformationAPI()}_setupNetworkInformationAPI(){if(void 0===globalThis.navigator||!globalThis.navigator.connection)return void this._log.debug("Network Information API not supported");const n=()=>{const n=navigator.connection;t.network.informationChanged({downlink:n.downlink,downlinkMax:n.downlinkMax,effectiveType:n.effectiveType,rtt:n.rtt,saveData:"boolean"==typeof n.saveData?e(n.saveData):void 0,type:n.type})};try{const e=navigator.connection;["change","typechange"].forEach(t=>{e.addEventListener(t,n)}),this._networkInformationHandler={stop:()=>{["change","typechange"].forEach(t=>{e.removeEventListener(t,n)})}},this._log.debug("Network Information API monitoring initialized")}catch(e){this._log.error("Error initializing Network Information API monitoring:",e)}}cleanup(){this._log.debug("Cleaning up network monitoring"),this._networkInformationHandler&&(this._networkInformationHandler.stop(),this._networkInformationHandler=null)}},Kr}(),n=ys();return ts=class{constructor(i){if(!i)throw new Error("MonitorRegistry requires a log instance");this._log=i,this._monitors=[new e(i),new t(i),new n(i)]}cleanup(){this._monitors.forEach(e=>{try{e.cleanup()}catch(e){this._log.warn("Failed to cleanup monitor:",e)}})}},ts}function ws(){if(rs)return is;rs=1;const e=kn(),t=function(){if(Rr)return Lr;Rr=1;const e=fs();return Lr=class extends e{constructor(e,t){super(e,t),this._handleTrackSignalingEvents(),this.once("disconnected",this._unsubscribeTracks.bind(this))}toString(){return`[RemoteParticipant #${this._instanceId}${this.sid?`: ${this.sid}`:""}]`}_addTrack(e,t,n){return super._addTrack(e,n)?(t._subscribed(e),this.emit("trackSubscribed",e,t),e):null}_addTrackPublication(e){const t=super._addTrackPublication(e);return t?(this.emit("trackPublished",t),t):null}_getTrackPublicationEvents(){return[...super._getTrackPublicationEvents(),["subscriptionFailed","trackSubscriptionFailed"],["trackDisabled","trackDisabled"],["trackEnabled","trackEnabled"],["publishPriorityChanged","trackPublishPriorityChanged"],["trackSwitchedOff","trackSwitchedOff"],["trackSwitchedOn","trackSwitchedOn"]]}_unsubscribeTracks(){this.tracks.forEach(e=>{if(e.isSubscribed){const t=e.track;e._unsubscribe(),this.emit("trackUnsubscribed",t,e)}})}_removeTrack(e,t,n){const i=this._tracks.get(n);return i?(super._removeTrack(i,n),t._unsubscribe(),this.emit("trackUnsubscribed",i,t),i):null}_removeTrackPublication(e){this._signaling.clearTrackHint(e.trackSid);const t=super._removeTrackPublication(e);return t?(this.emit("trackUnpublished",t),t):null}},Lr}(),n=bs(),i=ks(),r=Yn(),{flatMap:s,valueToJSON:o}=ye();let a=0;function c(e,t){const n=e.localParticipant._signaling;return t.reduce((e,t)=>{const i=n.tracks.get(t.trackId),r=n.getSender(i);return r?[Object.assign({},t,{trackId:r.id})].concat(e):e},[])}function l(e,n){const{_log:i,_clientTrackSwitchOffControl:r,_contentPreferencesMode:s,_options:{MediaStream:o,mapMediaElement:a,disposeMediaElement:c}}=e,l=new t(n,{log:i,clientTrackSwitchOffControl:r,contentPreferencesMode:s,MediaStream:o,mapMediaElement:a,disposeMediaElement:c});i.info("A new RemoteParticipant connected:",l),e._participants.set(l.sid,l),e.emit("participantConnected",l);const d=[["reconnected","participantReconnected"],["reconnecting","participantReconnecting"],"trackDimensionsChanged","trackDisabled","trackEnabled","trackMessage","trackPublished","trackPublishPriorityChanged","trackStarted","trackSubscribed","trackSubscriptionFailed","trackSwitchedOff","trackSwitchedOn","trackUnpublished","trackUnsubscribed"].map(t=>{const[n,i]=Array.isArray(t)?t:[t,t];function r(){const t=[].slice.call(arguments);t.unshift(i),t.push(l),e.emit(...t)}return l.on(n,r),[n,r]});l.once("disconnected",function(){const t=e.dominantSpeaker;i.info("RemoteParticipant disconnected:",l),e._participants.delete(l.sid),d.forEach(e=>{l.removeListener(e[0],e[1])}),e.emit("participantDisconnected",l),l===t&&e.emit("dominantSpeakerChanged",e.dominantSpeaker)})}return is=class extends e{constructor(e,t,n){super();const s=n.log.createLog("default",this),o=new Map;Object.defineProperties(this,{_log:{value:s},_clientTrackSwitchOffControl:{value:n.clientTrackSwitchOffControl||"disabled"},_contentPreferencesMode:{value:n.contentPreferencesMode||"disabled"},_instanceId:{value:++a},_options:{value:n},_participants:{value:o},_signaling:{value:t},_insightsMonitors:{value:n.eventObserver&&n.insights?new i(s):null},dominantSpeaker:{enumerable:!0,get(){return this.participants.get(t.dominantSpeakerSid)||null}},isRecording:{enumerable:!0,get:()=>t.recording.isEnabled||!1},localParticipant:{enumerable:!0,value:e},name:{enumerable:!0,value:t.name},participants:{enumerable:!0,value:o},sid:{enumerable:!0,value:t.sid},state:{enumerable:!0,get:()=>t.state},mediaRegion:{enumerable:!0,value:t.mediaRegion}}),function(e,t){const n=["trackWarning","trackWarningsCleared"].map(n=>({eventName:n,handler:(...i)=>e.emit(n,...i,t)}));n.forEach(({eventName:e,handler:n})=>t.on(e,n)),e.once("disconnected",()=>n.forEach(({eventName:e,handler:n})=>t.removeListener(e,n)))}(this,e),function(e,t){t.on("updated",function(){const n=t.isEnabled;e._log.info("Recording "+(n?"started":"stopped")),e.emit("recording"+(n?"Started":"Stopped"))})}(this,t.recording),function(e,t){const n=e._log;n.debug("Creating a new RemoteParticipant for each ParticipantSignaling in the RoomSignaling"),t.participants.forEach(l.bind(null,e)),n.debug("Setting up RemoteParticipant creation for all subsequent ParticipantSignalings that connect to the RoomSignaling"),t.on("participantConnected",l.bind(null,e)),t.on("dominantSpeakerChanged",()=>e.emit("dominantSpeakerChanged",e.dominantSpeaker)),t.on("transcription",t=>e.emit("transcription",t)),t.on("stateChanged",function i(s,o){switch(n.info("Transitioned to state:",s),s){case"disconnected":r.room.disconnected(),e.participants.forEach(e=>{e._unsubscribeTracks()}),e.emit(s,e,o),e.localParticipant.tracks.forEach(e=>{e.unpublish()}),e._insightsMonitors&&e._insightsMonitors.cleanup(),t.removeListener("stateChanged",i);break;case"reconnecting":r.room.reconnecting(o),setTimeout(()=>e.emit("reconnecting",o),0);break;default:r.room.reconnected(),setTimeout(()=>e.emit("reconnected"),0)}})}(this,t),function(e){const t=e.localParticipant._signaling.audioProcessors;e.localParticipant.audioTracks.forEach(({track:n})=>{const i=n.noiseCancellation;i&&!t.includes(i.vendor)&&(e._log.warn(`${i.vendor} is not supported in this room. disabling it permanently`),i.disablePermanently())})}(this),s.info("Created a new Room:",this.name),s.debug("Initial RemoteParticipants:",Array.from(this._participants.values()))}toString(){return this._instanceId?`[Room #${this._instanceId}: ${this.sid}]`:"[Room (uninitialized)]"}disconnect(){return this._log.info("Disconnecting"),this._signaling.disconnect(),this}getStats(){return this._signaling.getStats().then(e=>Array.from(e).map(([e,t])=>new n(e,Object.assign({},t,{localAudioTrackStats:c(this,t.localAudioTrackStats),localVideoTrackStats:c(this,t.localVideoTrackStats)}))))}refreshInactiveMedia(){const{tracks:e}=this.localParticipant,t=Array.from(e.values()).filter(({track:{kind:e}})=>"data"!==e).map(({track:e})=>e),n=s(this.participants,e=>Array.from(e.tracks.values())).filter(({track:e})=>e&&"data"!==e.kind).map(({track:e})=>e),i=t.concat(n),r=new Event("unmute");t.forEach(({isMuted:e,mediaStreamTrack:t})=>{e&&t.dispatchEvent(r)});const o=new Event("pause");return i.forEach(({_attachments:e,_elShims:t})=>e.forEach(e=>{const n=t.get(e);e.paused&&n&&!n.pausedIntentionally()&&e.dispatchEvent(o)})),this}toJSON(){return o(this)}},is}function Ss(){if(os)return ss;os=1;return ss=class{constructor(e){Object.defineProperties(this,{_min:{value:e.min||100},_max:{value:e.max||1e4},_jitter:{value:e.jitter>0&&e.jitter<=1?e.jitter:0},_factor:{value:e.factor||2},_attempts:{value:0,writable:!0},_duration:{enumerable:!1,get(){let e=this._min*Math.pow(this._factor,this._attempts);if(this._jitter){const t=Math.random(),n=Math.floor(t*this._jitter*e);e=1&Math.floor(10*t)?e+n:e-n}return 0|Math.min(e,this._max)}},_timeoutID:{value:null,writable:!0}})}backoff(e){let t=this._duration;this._timeoutID&&(clearTimeout(this._timeoutID),this._timeoutID=null),this._timeoutID=setTimeout(()=>{this._attempts++,e()},t)}reset(){this._attempts=0,this._timeoutID&&(clearTimeout(this._timeoutID),this._timeoutID=null)}}}var Ts,Cs,Ps,Es,Os,Ls,Rs,Is,Ms,Ds,As,xs,js,$s,Ns,Vs,Fs,Bs,Us,Hs,Ws,qs,Qs,zs,Gs,Ks,Ys,Js,Xs,Zs,eo,to,no,io,ro,so,oo,ao,co,lo,uo,ho,po,fo,mo,go,_o,vo,bo,yo,ko,wo,So,To,Co,Po,Eo,Oo,Lo,Ro,Io,Mo,Do,Ao,xo,jo,$o,No,Vo,Fo,Bo,Uo,Ho,Wo,qo,Qo,zo,Go,Ko,Yo,Jo,Xo,Zo,ea,ta,na,ia,ra,sa,oa,aa,ca,la,da,ua,ha,pa,fa,ma,ga,_a,va,ba,ya,ka,wa,Sa,Ta,Ca,Pa,Ea,Oa,La,Ra,Ia,Ma,Da,Aa,xa,ja,$a,Na,Va,Fa,Ba,Ua,Ha,Wa,qa,Qa,za,Ga={};function Ka(){if(Cs)return Ts;Cs=1;const{difference:e,flatMap:t}=ye();function n(){return String(Math.floor(4294967295*Math.random()))}class i{constructor(e,t,n){Object.defineProperties(this,{cName:{enumerable:!0,value:n},isSimulcastEnabled:{enumerable:!0,value:!1,writable:!0},primarySSRCs:{enumerable:!0,value:new Set},rtxPairs:{enumerable:!0,value:new Map},streamId:{enumerable:!0,value:t},trackId:{enumerable:!0,value:e}})}addSimulcastSSRCs(){if(this.isSimulcastEnabled)return;const e=[n(),n()];e.forEach(function(e){this.primarySSRCs.add(e)},this),this.rtxPairs.size&&e.forEach(function(e){this.rtxPairs.set(n(),e)},this)}addSSRC(e,t,n){t?this.rtxPairs.set(e,t):this.primarySSRCs.add(e),this.isSimulcastEnabled=this.isSimulcastEnabled||n}toSdpLines(e){const n=e?[]:Array.from(this.rtxPairs.entries()).map(e=>e.reverse()),i=Array.from(this.primarySSRCs.values()),r=n.length?t(n):i,s=t(r,e=>[`a=ssrc:${e} cname:${this.cName}`,`a=ssrc:${e} msid:${this.streamId} ${this.trackId}`]),o=n.map(e=>`a=ssrc-group:FID ${e.join(" ")}`),a=[`a=ssrc-group:SIM ${i.join(" ")}`];return o.concat(s).concat(a)}}function r(e,t){return(e.match(new RegExp(t,"gm"))||[]).map(e=>(e.match(new RegExp(t))||[]).slice(1))}function s(e){const n=function(e){return new Set(t(r(e,"^a=ssrc-group:SIM ([0-9]+) ([0-9]+) ([0-9]+)$")))}(e),s=function(e){return new Map(r(e,"^a=ssrc-group:FID ([0-9]+) ([0-9]+)$").map(e=>e.reverse()))}(e),o=function(e){const[n,i]=t(r(e,"^a=msid:(.+) (.+)$"));return t(r(e,"^a=ssrc:(.+) cname:.+$")).map(e=>[e,n,i])}(e);return o.reduce((t,r)=>{const o=r[0],a=r[1],c=r[2],l=t.get(c)||new i(c,a,function(e,t,n){const i=`a=ssrc:${t} ${n}:(.+)`;return e.match(new RegExp(i))[1]}(e,o,"cname")),d=s.get(o)||null;return l.addSSRC(o,d,n.has(o)),t.set(c,l)},new Map)}return Ts=function(n,i){const r=s(n),o=Array.from(r.keys());let a=Array.from(i.keys());const c=e(o,a),l=e(a,o);t(c,e=>r.get(e)).forEach(e=>{e.addSimulcastSSRCs(),i.set(e.trackId,e)}),a=Array.from(i.keys());const d=e(a,l),u=t(d,e=>i.get(e)),h=!n.match(/a=rtpmap:[0-9]+ rtx/),p=t(u,e=>e.toSdpLines(h)),f=t(new Set(n.split("\r\n").concat(p))),m="a=x-google-flag:conference";return n.match(m)||f.push(m),f.join("\r\n")}}function Ya(){if(Ps)return Ga;Ps=1;const{difference:e,flatMap:t}=ye(),n=Ka(),i={0:"PCMU",8:"PCMA"};function r(e){return Array.from(o(e)).reduce((e,t)=>{const n=t[0],i=t[1],r=e.get(i)||[];return e.set(i,r.concat(n))},new Map)}function s(e){return c(e).reduce((e,t)=>{const n=a(t);return n?e.set(n,t):e},new Map)}function o(e){return l(e).reduce((t,n)=>{if(t.has(n))return t;const r=new RegExp(`a=rtpmap:${n} ([^/]+)`),s=e.match(r),o=s?s[1].toLowerCase():i[n]?i[n].toLowerCase():"";return t.set(n,o)},new Map)}function a(e){const t=e.match(/^a=mid:(.+)$/m);return t&&t[1]}function c(e,t,n){return e.replace(/\r\n\r\n$/,"\r\n").split("\r\nm=").slice(1).map(e=>`m=${e}`).filter(e=>{const i=new RegExp(`m=${t||".*"}`,"gm"),r=new RegExp(`a=${n||".*"}`,"gm");return i.test(e)&&r.test(e)})}function l(e){const t=e.split("\r\n")[0].match(/([0-9]+)/g);return t?t.slice(1).map(e=>parseInt(e,10)):[]}function d(e,t){const n=t.split("\r\n");let i=n[0];const r=n.slice(1);return i=i.replace(/([0-9]+\s?)+$/,e.join(" ")),[i].concat(r).join("\r\n")}function u(e,t){const n=c(e);return[e.split("\r\nm=")[0]].concat(n.map(e=>{if(!/^m=(audio|video)/.test(e))return e;const n=a(e);if(!n)return e;const i=t.get(n);if(!i)return e;const r=(e.match(/^a=msid:(.+)$/m)||[])[1];if(!r)return e;const[s,o]=r.split(" "),c=new RegExp(`msid:${s}${o?` ${o}`:""}$`,"gm");return e.replace(c,`msid:${s} ${i}`)})).join("\r\n")}function h(e,t){const n=Object.entries(t).map(([e,t])=>`${e}=${t}`).join(";");return`a=fmtp:${e} ${n}`}return Ga.addOrRewriteNewTrackIds=function(e,t,n){const i=Array.from(n).reduce((n,[i,r])=>(c(e,i,"send(only|recv)").map(a).filter(e=>!t.has(e)).forEach((e,t)=>n.set(e,r[t])),n),new Map);return u(e,i)},Ga.addOrRewriteTrackIds=u,Ga.createCodecMapForMediaSection=r,Ga.createPtToCodecName=o,Ga.disableRtx=function(e){const t=c(e);return[e.split("\r\nm=")[0]].concat(t.map(e=>{if(!/^m=video/.test(e))return e;const t=r(e).get("rtx");if(!t)return e;const n=new Set(l(e));t.forEach(e=>n.delete(e));const i=e.match(/a=ssrc-group:FID [0-9]+ ([0-9]+)/),s=i&&i[1],o=[/^a=fmtp:.+ apt=.+$/,/^a=rtpmap:.+ rtx\/.+$/,/^a=ssrc-group:.+$/].concat(s?[new RegExp(`^a=ssrc:${s} .+$`)]:[]);return e=e.split("\r\n").filter(e=>o.every(t=>!t.test(e))).join("\r\n"),d(Array.from(n),e)})).join("\r\n")},Ga.enableDtxForOpus=function(e,t){const n=c(e),i=e.split("\r\nm=")[0];return t=t||n.filter(e=>/^m=audio/.test(e)).map(a),[i].concat(n.map(e=>{if(!/^m=audio/.test(e))return e;const n=r(e).get("opus");if(!n)return e;const i=function(e,t){const n=new RegExp(`^a=fmtp:${e} (.+)$`,"m"),i=t.match(n);return i&&i[1].split(";").reduce((e,t)=>{const[n,i]=t.split("=");return e[n]=isNaN(i)?i:parseInt(i,10),e},{})}(n,e);if(!i)return e;const s=h(n,i),o=a(e);t.includes(o)?i.usedtx=1:delete i.usedtx;const c=h(n,i);return e.replace(s,c)})).join("\r\n")},Ga.getMediaSections=c,Ga.removeUnreferencedCodecAttributes=function(e){const t=c(e);return[e.split("\r\nm=")[0]].concat(t.map(e=>{if(!/^m=(audio|video)/.test(e))return e;const t=new Set(l(e));return e.split("\r\n").filter(e=>{const n=e.match(/^a=(fmtp|rtpmap|rtcp-fb):(\d+)/);if(!n)return!0;const i=parseInt(n[2],10);return t.has(i)}).join("\r\n")})).join("\r\n")},Ga.removeSSRCAttributes=function(e,t){return e.split("\r\n").filter(e=>!t.find(t=>new RegExp("a=ssrc:.*"+t+":","g").test(e))).join("\r\n")},Ga.revertSimulcast=function(e,t,n,i=!1){const r=s(n),a=s(t),d=c(e);return[e.split("\r\nm=")[0]].concat(d.map(e=>{if(e=e.replace(/\r\n$/,""),!/^m=video/.test(e))return e;const t=e.match(/^a=mid:(.+)$/m),n=t&&t[1];if(!n)return e;const s=r.get(n),c=o(s),d=l(s),u=d.length&&"vp8"===c.get(d[0]);return i||!u?a.get(n).replace(/\r\n$/,""):e})).concat("").join("\r\n")},Ga.setCodecPreferences=function(n,i,s){const o=c(n);return[n.split("\r\nm=")[0]].concat(o.map(n=>{if(!/^m=(audio|video)/.test(n))return n;const o=n.match(/^m=(audio|video)/)[1],a=r(n),c=function(n,i){i=i.map(({codec:e})=>e.toLowerCase());const r=t(i,e=>n.get(e)||[]),s=e(Array.from(n.keys()),i),o=t(s,e=>n.get(e));return r.concat(o)}(a,"audio"===o?i:s),l=d(c,n),u=a.get("pcma")||[],h=a.get("pcmu")||[];return("audio"===o?new Set(u.concat(h)):new Set).has(c[0])?l.replace(/\r\nb=(AS|TIAS):([0-9]+)/g,""):l})).join("\r\n")},Ga.setSimulcast=function(e,t){const i=c(e);return[e.split("\r\nm=")[0]].concat(i.map(e=>{if(e=e.replace(/\r\n$/,""),!/^m=video/.test(e))return e;const i=r(e),s=l(e),o=new Set(i.get("vp8")||[]);return s.some(e=>o.has(e))?n(e,t):e})).concat("").join("\r\n")},Ga}function Ja(){if(Rs)return Ls;Rs=1;const e=Os?Es:(Os=1,Es=class{constructor(e){e=Object.assign({getKey:function(e){return e},getValue:function(e){return e},isLessThanOrEqualTo:function(e,t){return e<=t}},e),Object.defineProperties(this,{_getKey:{value:e.getKey},_getValue:{value:e.getValue},_isLessThanOrEqualTo:{value:e.isLessThanOrEqualTo},_map:{value:new Map}})}toMap(){return new Map(this._map)}updateAndFilter(e){return e.filter(this.update,this)}update(e){const t=this._getKey(e),n=this._getValue(e);return!(this._map.has(t)&&this._isLessThanOrEqualTo(n,this._map.get(t))||(this._map.set(t,n),0))}});return Ls=class{constructor(){Object.defineProperties(this,{_filter:{value:new e({getKey:function(e){return e.ufrag},isLessThanOrEqualTo:function(e,t){return e.revision<=t.revision}})},_ufrag:{writable:!0,value:null},ufrag:{enumerable:!0,get(){return this._ufrag}}})}setUfrag(e){this._ufrag=e;const t=this._filter.toMap().get(e);return t?t.candidates:[]}update(e){e.candidates=e.candidates||[];const t=this._filter.toMap().get(e.ufrag),n=t?t.candidates:[];return this._filter.update(e)&&this._ufrag===e.ufrag?e.candidates.slice(n.length):[]}}}function Xa(){if(js)return xs;js=1;const e=jn(),t=function(){if(As)return Ds;As=1;const{EventEmitter:e}=Re();return Ds=class extends e{constructor(e){super(),Object.defineProperties(this,{_dataChannel:{value:e},_messageQueue:{value:[]}}),e.addEventListener("open",()=>{this._messageQueue.splice(0).forEach(e=>this._publish(e))}),e.addEventListener("message",({data:e})=>{try{const t=JSON.parse(e);this.emit("message",t)}catch(e){}}),this.publish({type:"ready"})}_publish(e){const t=JSON.stringify(e);try{this._dataChannel.send(t)}catch(e){}}publish(e){const t=this._dataChannel;return"closing"!==t.readyState&&"closed"!==t.readyState&&("connecting"===t.readyState?(this._messageQueue.push(e),!0):(this._publish(e),!0))}}}();return xs=class extends e{constructor(e){super(e.label,e.maxPacketLifeTime,e.maxRetransmits,e.ordered),Object.defineProperties(this,{_dataChannel:{value:e}}),e.binaryType="arraybuffer",e.addEventListener("message",e=>{this.emit("message",e.data)}),e.addEventListener("close",()=>{this.emit("close")})}stop(){this._dataChannel.close(),super.stop()}toDataTransport(){return new t(this._dataChannel)}}}function Za(){if(Us)return Bs;Us=1;const{createPtToCodecName:e,getMediaSections:t}=Ya();function n(t){const n=e(t);t=function(e,t){return Array.from(t.keys()).reduce((e,n)=>{const i=new RegExp(`^a=rtpmap:${n} rtx.+$`,"gm");return(e.match(i)||[]).slice("rtx"===t.get(n)?1:0).reduce((e,t)=>{const i=new RegExp(`\r\n${t}`),r=new RegExp(`\r\na=fmtp:${n} apt=[0-9]+`);return e.replace(i,"").replace(r,"")},e)},e)}(t,n),t=function(e){const t=e.split("\r\n"),n=new Map;let i=96;for(let e=0;e<t.length;e++){const r=t[e].match(/^a=rtpmap:(\d+) ([^/]+)/);if(r){const s=parseInt(r[1],10),o=r[2].toLowerCase();if(n.has(s)&&n.get(s)!==o){for(;n.has(i)||i===s;)i++;const r=i;n.set(r,o),t[e]=t[e].replace(`a=rtpmap:${s}`,`a=rtpmap:${r}`);for(let n=e+1;n<t.length;n++)t[n].match(new RegExp(`^a=(fmtp|rtcp-fb):${s}\\b`))&&(t[n]=t[n].replace(new RegExp(`^a=(fmtp|rtcp-fb):${s}\\b`),`a=$1:${r}`))}else n.set(s,o)}}return t.join("\r\n")}(t);const r=function(e){const t=new Map;return e.forEach((e,n)=>{const i=t.get(e)||new Set;return t.set(e,i.add(n))}),t}(n),s=r.get("rtx")||new Set,o=new Set,a=function(e,t,n,i){return Array.from(n).reduce((n,r)=>{const s=new RegExp(`a=fmtp:${r} apt=(\\d+)`),o=e.match(s);if(!o)return i.add(r),n;const a=Number.parseInt(o[1]);if(!t.has(a))return i.add(r),n;return"rtx"===t.get(a)?(i.add(r),n):n.set(r,a)},new Map)}(t,n,s,o),c=function(e,t){const n=Array.from(e).reduce((e,t)=>{const n=t[0],i=t[1],r=e.get(i)||new Set;return e.set(i,r.add(n))},new Map);return Array.from(n).reduce((e,n)=>{const i=n[0],r=Array.from(n[1]);return r.length>1?(r.forEach(e=>{t.add(e)}),e):e.set(i,r[0])},new Map)}(a,o),l=Array.from(o);return["h264","vp8","vp9"].reduce((e,t)=>{const n=r.get(t)||new Set;return Array.from(n).reduce((e,t)=>c.has(t)?e:e.add(t),e)},new Set).forEach(e=>{if(l.length){const n=l.shift();t=function(e,t,n){return e.endsWith("\r\n")?`${e}a=fmtp:${t} apt=${n}\r\n`:`${e}\r\na=fmtp:${t} apt=${n}`}(t=i(t,n),n,e)}}),l.forEach(e=>{t=function(e,t){const n=new RegExp(`a=rtpmap:${t}.*\r\n`,"gm");return e.replace(n,"")}(t=i(t,e),e)}),t}function i(e,t){const n=new RegExp(`a=fmtp:${t}.*\r\n`,"gm");return e.replace(n,"")}return Bs=function(e){const i={type:e.type};return"rollback"!==e.type&&(i.sdp=function(e){const i=t(e),r=e.split("\r\nm=")[0];return[r].concat(i.map(n)).join("\r\n")}(e.sdp)),new RTCSessionDescription(i)},Bs}function ec(){if(Ws)return Hs;Ws=1;const e=Ss(),{RTCPeerConnection:t,getStats:n}=fn(),i=ce(),{DEFAULT_ICE_GATHERING_TIMEOUT_MS:r,DEFAULT_LOG_LEVEL:s,DEFAULT_SESSION_TIMEOUT_SEC:o,iceRestartBackoffConfig:a}=ne(),{addOrRewriteNewTrackIds:c,addOrRewriteTrackIds:l,createCodecMapForMediaSection:d,disableRtx:u,enableDtxForOpus:h,getMediaSections:p,removeUnreferencedCodecAttributes:f,removeSSRCAttributes:m,revertSimulcast:g,setCodecPreferences:_,setSimulcast:v}=Ya(),b=bi(),{MediaClientLocalDescFailedError:y,MediaClientRemoteDescFailedError:k}=Kn(),{buildLogLevels:w,isChromeScreenShareTrack:S,oncePerTick:T,defer:C}=ye(),P=Ja(),E=function(){if(Ms)return Is;Ms=1;const{ICE_ACTIVITY_CHECK_PERIOD_MS:e,ICE_INACTIVITY_THRESHOLD_MS:t}=ne();return Is=class{constructor(n,i){i=Object.assign({activityCheckPeriodMs:e,inactivityThresholdMs:t},i),Object.defineProperties(this,{_activityCheckPeriodMs:{value:i.activityCheckPeriodMs},_inactivityThresholdMs:{value:i.inactivityThresholdMs},_lastActivity:{value:null,writable:!0},_peerConnection:{value:n},_timer:{value:null,writable:!0},_onIceConnectionStateChanged:{value:null,writable:!0}})}_getActivePairStat(e){return Array.from(e.values()).find(e=>"candidate-pair"===e.type&&e.nominated)||{bytesReceived:0,timestamp:Math.round((new Date).getTime())}}_getIceConnectionStats(){return this._peerConnection.getStats().then(e=>this._getActivePairStat(e)).catch(()=>null)}_scheduleInactivityCallback(e){e&&null===this._onIceConnectionStateChanged?(this._onIceConnectionStateChanged=()=>{"disconnected"===this._peerConnection.iceConnectionState&&e()},this._peerConnection.addEventListener?this._peerConnection.addEventListener("iceconnectionstatechange",this._onIceConnectionStateChanged):this._peerConnection.oniceconnectionstatechange=this._onIceConnectionStateChanged):!e&&this._onIceConnectionStateChanged&&(this._peerConnection.removeEventListener?this._peerConnection.removeEventListener("iceconnectionstatechange",this._onIceConnectionStateChanged):this._peerConnection.oniceconnectionstatechange=null,this._onIceConnectionStateChanged=null)}start(e){this.stop(),this._timer=setInterval(()=>{this._getIceConnectionStats().then(t=>{t&&(this._lastActivity&&this._lastActivity.bytesReceived===t.bytesReceived||(this._lastActivity=t,this._scheduleInactivityCallback(null)),t.timestamp-this._lastActivity.timestamp>=this._inactivityThresholdMs&&("disconnected"===this._peerConnection.iceConnectionState?e():null===this._onIceConnectionStateChanged&&this._scheduleInactivityCallback(e)))})},this._activityCheckPeriodMs)}stop(){this._scheduleInactivityCallback(null),null!==this._timer&&(clearInterval(this._timer),this._timer=null,this._lastActivity=null)}}}(),O=Xa(),L=function(){if(Ns)return $s;Ns=1;const e=Rn();return $s=class extends e{constructor(e,t){super(e,t)}}}(),R=vi(),I=ie(),M=function(){if(Fs)return Vs;Fs=1;const{getMediaSections:e}=Ya();return Vs=class{constructor(){Object.defineProperties(this,{_midsToTrackIds:{value:new Map,writable:!0}})}match(e){return this._midsToTrackIds.get(e.transceiver.mid)||null}update(t){const n=e(t,"(audio|video)");this._midsToTrackIds=n.reduce((e,t)=>{const n=t.match(/^a=mid:(.+)$/m)||[],i=t.match(/^a=msid:.+ (.+)$/m)||[],r=n[1],s=i[1];return r&&s?e.set(r,s):e},this._midsToTrackIds)}},Vs}(),D=Za(),A=Yn(),x=i.guessBrowser(),j="chrome"===x,$="firefox"===x,N="safari"===x;let V=0;const F={open:["closed","updating"],updating:["closed","open"],closed:[]};function B(e,t){const n=e._getMediaTrackSenderId(t.trackId);return Object.assign(t,{trackId:n})}function U(e,t){const n=[...e._mediaTrackReceivers].find(e=>e.track.id===t.trackId),i=n?n.id:null;return Object.assign(t,{trackId:i})}function H(e){if(e.sdp){const t=e.sdp.match(/^a=ice-ufrag:([a-zA-Z0-9+/]+)/m);if(t)return t[1]}return null}function W(e={}){return Object.assign({bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"},e)}function q(e,t){const n=t.track;return n&&n.kind===e&&"ended"!==n.readyState}function Q(e){!function(e){e._recycledTransceivers.audio=[],e._recycledTransceivers.video=[],e._peerConnection.getTransceivers().forEach(t=>{if(function(e,t){return!e.stopped&&!t._replaceTrackPromises.has(e)&&["inactive","recvonly"].includes(e.direction)}(t,e)){const n=t.receiver.track;e._recycledTransceivers[n.kind].push(t)}})}(e),function(e){const t=e._peerConnection.localDescription;t&&t.sdp&&p(t.sdp).forEach(t=>{d(t).forEach((t,n)=>e._localCodecs.add(n))})}(e),function(e){const t=e._peerConnection.remoteDescription;t&&t.sdp&&p(t.sdp).forEach(t=>{const n=t.match(/^a=mid:(.+)$/m);if(!n||!n[1])return;const i=n[1],r=d(t);e._remoteCodecMaps.set(i,r)})}(e),function(e){var t;const n=null===(t=e._peerConnection.getSenders().find(e=>e.transport))||void 0===t?void 0:t.transport;n&&!e._dtlsTransport&&(e._dtlsTransport=n,n.addEventListener("statechange",e._handleDtlsTransportStateChange.bind(e)),n.state&&e._handleDtlsTransportStateChange(),n.iceTransport&&"function"==typeof n.iceTransport.getSelectedCandidatePair)&&(n.iceTransport.addEventListener("selectedcandidatepairchange",e._handleSelectedCandidatePairChange.bind(e)),n.iceTransport.getSelectedCandidatePair()&&e._handleSelectedCandidatePairChange())}(e),z(e).then(()=>{e._handleQueuedPublisherHints()})}function z(e){const{maxAudioBitrate:t,maxVideoBitrate:n}=e._encodingParameters,i=new Map([["audio",t],["video",n]]),r=[];return e._peerConnection.getSenders().filter(e=>e.track).forEach(t=>{const n=i.get(t.track.kind),s=t.getParameters();null===n||0===n?function(e){Array.isArray(e.encodings)&&e.encodings.forEach(e=>delete e.maxBitrate)}(s):e._isChromeScreenShareTrack(t.track)?e._log.warn(`Not setting maxBitrate for ${t.track.kind} Track ${t.track.id} because it appears to be screen share track: ${t.track.label}`):function(e,t){$?e.encodings=[{maxBitrate:t}]:e.encodings.forEach(e=>{e.maxBitrate=t})}(s,n),!$&&s.encodings.length>0&&("audio"===t.track.kind?s.encodings[0].priority="high":e._isChromeScreenShareTrack(t.track)&&(s.encodings[0].priority="medium"),e._enableDscp&&(s.encodings[0].networkPriority="high"));const o=e._rtpNewSenders.has(t);e._maybeUpdateEncodings(t.track,s.encodings,o),e._rtpNewSenders.delete(t);const a=t.setParameters(s).catch(n=>{e._log.warn(`Error while setting encodings parameters for ${t.track.kind} Track ${t.track.id}: ${n.message||n.name}`)});r.push(a)}),Promise.all(r)}return Hs=class extends R{constructor(n,i,c,l){super("open",F),l=Object.assign({enableDscp:!1,dummyAudioMediaStreamTrack:null,isChromeScreenShareTrack:S,iceServers:[],logLevel:s,offerOptions:{},revertSimulcast:g,sessionTimeout:1e3*o,setCodecPreferences:_,setSimulcast:v,Backoff:e,IceConnectionMonitor:E,RTCIceCandidate:RTCIceCandidate,RTCPeerConnection:t,RTCSessionDescription:RTCSessionDescription,Timeout:b},l);const d=W(Object.assign({},l,l.rtcConfiguration)),u=w(l.logLevel),h=l.RTCPeerConnection;!0===l.enableDscp&&(l.chromeSpecificConstraints=l.chromeSpecificConstraints||{},l.chromeSpecificConstraints.optional=l.chromeSpecificConstraints.optional||[],l.chromeSpecificConstraints.optional.push({googDscp:!0}));const p=l.log?l.log.createLog("webrtc",this):new I("webrtc",this,u,l.loggerName),f=new h(d,{chromeSpecificConstraints:l.chromeSpecificConstraints,applyCodecPreferences:e=>this._applyCodecPreferencesToTransceiver(e)});l.dummyAudioMediaStreamTrack&&f.addTrack(l.dummyAudioMediaStreamTrack),Object.defineProperties(this,{_appliedTrackIdsToAttributes:{value:new Map,writable:!0},_dataChannels:{value:new Map},_dataTrackReceivers:{value:new Set},_descriptionRevision:{writable:!0,value:0},_didGenerateLocalCandidates:{writable:!0,value:!1},_dtlsTransport:{writable:!0,value:null},_enableDscp:{value:l.enableDscp},_encodingParameters:{value:i},_isChromeScreenShareTrack:{value:l.isChromeScreenShareTrack},_iceGatheringFailed:{value:!1,writable:!0},_iceGatheringTimeout:{value:new l.Timeout(()=>this._handleIceGatheringTimeout(),r,!1)},_iceRestartBackoff:{value:new l.Backoff(a)},_instanceId:{value:++V},_isIceConnectionInactive:{writable:!0,value:!1},_isIceLite:{writable:!0,value:!1},_isIceRestartBackoffInProgress:{writable:!0,value:!1},_isRestartingIce:{writable:!0,value:!1},_lastIceConnectionState:{writable:!0,value:null},_lastStableDescriptionRevision:{writable:!0,value:0},_localCandidates:{writable:!0,value:[]},_localCodecs:{value:new Set},_localCandidatesRevision:{writable:!0,value:1},_localDescriptionWithoutSimulcast:{writable:!0,value:null},_localDescription:{writable:!0,value:null},_localUfrag:{writable:!0,value:null},_log:{value:p},_eventObserver:{value:l.eventObserver},_remoteCodecMaps:{value:new Map},_rtpSenders:{value:new Map},_rtpNewSenders:{value:new Set},_iceConnectionMonitor:{value:new l.IceConnectionMonitor(f)},_mediaTrackReceivers:{value:new Set},_needsAnswer:{writable:!0,value:!1},_negotiationRole:{writable:!0,value:null},_offerOptions:{writable:!0,value:l.offerOptions},_onEncodingParametersChanged:{value:T(()=>{this._needsAnswer||z(this)})},_peerConnection:{value:f},_preferredAudioCodecs:{value:c.audio},_preferredVideoCodecs:{value:c.video},_shouldApplyDtx:{value:c.audio.every(({codec:e})=>"opus"!==e)||c.audio.some(({codec:e,dtx:t})=>"opus"===e&&t)},_queuedDescription:{writable:!0,value:null},_iceReconnectTimeout:{value:new l.Timeout(()=>{p.debug("ICE reconnect timed out"),this.close()},l.sessionTimeout,!1)},_recycledTransceivers:{value:{audio:[],video:[]}},_replaceTrackPromises:{value:new Map},_remoteCandidates:{writable:!0,value:new P},_setSimulcast:{value:l.setSimulcast},_revertSimulcast:{value:l.revertSimulcast},_setCodecPreferences:{value:l.setCodecPreferences},_RTCIceCandidate:{value:l.RTCIceCandidate},_RTCPeerConnection:{value:l.RTCPeerConnection},_RTCSessionDescription:{value:l.RTCSessionDescription},_shouldOffer:{writable:!0,value:!1},_shouldRestartIce:{writable:!0,value:!1},_trackIdsToAttributes:{value:new Map,writable:!0},_trackMatcher:{writable:!0,value:null},_mediaTrackSenderToPublisherHints:{value:new Map},id:{enumerable:!0,value:n}}),i.on("changed",this._onEncodingParametersChanged),A.pc.signalingState(this.id,f.signalingState),A.pc.iceGatheringState(this.id,f.iceGatheringState),A.pc.iceConnectionState(this.id,f.iceConnectionState),A.pc.connectionState(this.id,this.connectionState),f.addEventListener("connectionstatechange",this._handleConnectionStateChange.bind(this)),f.addEventListener("datachannel",this._handleDataChannelEvent.bind(this)),f.addEventListener("icecandidate",this._handleIceCandidateEvent.bind(this)),f.addEventListener("iceconnectionstatechange",this._handleIceConnectionStateChange.bind(this)),f.addEventListener("icegatheringstatechange",this._handleIceGatheringStateChange.bind(this)),f.addEventListener("signalingstatechange",this._handleSignalingStateChange.bind(this)),f.addEventListener("track",this._handleTrackEvent.bind(this));const m=this;this.on("stateChanged",function e(t){"closed"===t&&(m.removeListener("stateChanged",e),m._dataChannels.forEach((e,t)=>{m.removeDataTrackSender(t)}))})}toString(){return`[PeerConnectionV2 #${this._instanceId}: ${this.id}]`}setEffectiveAdaptiveSimulcast(e){this._log.debug("Setting setEffectiveAdaptiveSimulcast: ",e),this._preferredVideoCodecs.forEach(t=>{"adaptiveSimulcast"in t&&(t.adaptiveSimulcast=e)})}get _shouldApplySimulcast(){if(!j&&!N)return!1;return this._preferredVideoCodecs.some(e=>"vp8"===e.codec.toLowerCase()&&e.simulcast&&!1!==e.adaptiveSimulcast)}get connectionState(){return"failed"===this.iceConnectionState?"failed":this._peerConnection.connectionState||this.iceConnectionState}get iceConnectionState(){return this._isIceConnectionInactive&&"disconnected"===this._peerConnection.iceConnectionState||this._iceGatheringFailed?"failed":this._peerConnection.iceConnectionState}get isApplicationSectionNegotiated(){return"closed"===this._peerConnection.signalingState||!!this._peerConnection.localDescription&&p(this._peerConnection.localDescription.sdp,"application").length>0}get _isAdaptiveSimulcastEnabled(){const e=this._preferredVideoCodecs.find(e=>"adaptiveSimulcast"in e);return e&&!0===e.adaptiveSimulcast}_maybeUpdateEncodings(e,t,n=!1){if("video"!==e.kind||"ended"===e.readyState)return!1;const{height:r,width:s}=e.getSettings();if("number"!=typeof r||"number"!=typeof s)return!1;const o=i.guessBrowser();return!!("safari"===o||"chrome"===o&&this._isAdaptiveSimulcastEnabled)&&(this._updateEncodings(e,t,n),!0)}_updateEncodings(e,t,n){if(this._isChromeScreenShareTrack(e)){const e=[{scaleResolutionDownBy:1},{scaleResolutionDownBy:1}];t.forEach((t,i)=>{const r=e[i];r?(t.scaleResolutionDownBy=r.scaleResolutionDownBy,n&&delete t.active):(t.active=!1,delete t.scaleResolutionDownBy)})}else{const{width:i,height:r}=e.getSettings(),s=i*r,o=[{pixels:518400,maxActiveLayers:3},{pixels:129600,maxActiveLayers:2},{pixels:0,maxActiveLayers:1}].find(e=>s>=e.pixels),a=Math.min(t.length,o.maxActiveLayers);t.forEach((e,t)=>{t<a?(e.scaleResolutionDownBy=1<<a-t-1,n&&(e.active=!0)):(e.active=!1,delete e.scaleResolutionDownBy)})}this._log.debug("_updateEncodings:",t.map(({active:e,scaleResolutionDownBy:t},n)=>`[${n}: ${e}, ${t||0}]`).join(", "))}_addIceCandidate(e){return Promise.resolve().then(()=>(A.pc.iceCandidate(this.id,e,!0),e=new this._RTCIceCandidate(e),this._peerConnection.addIceCandidate(e))).catch(t=>{this._log.warn(`Failed to add RTCIceCandidate ${e?`"${e.candidate}"`:"null"}: `+t.message)})}_addIceCandidates(e){return Promise.all(e.map(this._addIceCandidate,this)).then(()=>{})}_applyCodecPreferencesToTransceiver(e){if(!e||!e.receiver||!e.receiver.track)return;const t=e.receiver.track.kind,n="audio"===t?this._preferredAudioCodecs:this._preferredVideoCodecs;if(n&&0!==n.length)try{const i=RTCRtpReceiver.getCapabilities(t).codecs,r=this._sortCodecsByPreference(i,n);e.setCodecPreferences(r)}catch(e){this._log.warn("Failed to apply codec preferences:",e)}}_sortCodecsByPreference(e,t){const n=[],i=[],r=t.map(e=>("string"==typeof e?e:e.codec).toLowerCase());return e.forEach(e=>{const t=e.mimeType.split("/")[1].toLowerCase(),s=r.indexOf(t);s>=0?(n[s]||(n[s]=[]),n[s].push(e)):i.push(e)}),n.flat().concat(i)}_addOrUpdateTransceiver(e){const t=function(e,t){const n={audio:e._preferredAudioCodecs.map(({codec:e})=>e.toLowerCase()),video:e._preferredVideoCodecs.map(({codec:e})=>e.toLowerCase())}[t],i=e._recycledTransceivers[t],r=n.find(t=>e._localCodecs.has(t));if(!r)return i.shift();const s=i.find(t=>{const n=e._remoteCodecMaps.get(t.mid);return n&&n.has(r)});s&&i.splice(i.indexOf(s),1);return s}(this,e.kind);if(t&&t.sender){const n=t.sender.track?t.sender.track.id:null;return n&&this._log.warn(`Reusing transceiver: ${t.mid}] ${n} => ${e.id}`),this._replaceTrackPromises.set(t,t.sender.replaceTrack(e).then(()=>{t.direction="sendrecv"},()=>{}).finally(()=>{this._replaceTrackPromises.delete(t)})),t}const n=this._peerConnection.addTransceiver(e,{});return this._applyCodecPreferencesToTransceiver(n),n}_checkIceBox(e){const t=H(e);if(!t)return Promise.resolve();const n=this._remoteCandidates.setUfrag(t);return this._addIceCandidates(n)}_answer(e){return Promise.resolve().then(()=>(this._negotiationRole||(this._negotiationRole="answerer"),this._setRemoteDescription(e))).catch(()=>{throw new k}).then(()=>this._peerConnection.createAnswer()).then(t=>{t=$?new this._RTCSessionDescription({sdp:u(t.sdp),type:t.type}):D(t);let n=m(t.sdp,["mslabel","label"]);if(this._shouldApplySimulcast){let t=n;n=this._setSimulcast(t,this._trackIdsToAttributes),n=this._revertSimulcast(n,t,e.sdp)}return n=n.replace(/42e015/g,"42e01f"),this._setLocalDescription({type:t.type,sdp:n})}).then(()=>this._checkIceBox(e)).then(()=>this._queuedDescription&&this._updateDescription(this._queuedDescription)).then(()=>(this._queuedDescription=null,this._maybeReoffer(this._peerConnection.localDescription))).catch(e=>{const t=e instanceof k?e:new y;throw this._publishMediaWarning({message:"Failed to _answer",code:t.code,error:e}),t})}_close(){return this._iceConnectionMonitor.stop(),"closed"!==this._peerConnection.signalingState&&(this._peerConnection.close(),this._dtlsTransport&&!j&&A.pc.dtlsTransportState(this.id,this._dtlsTransport.state),A.pc.signalingState(this.id,this._peerConnection.signalingState),A.pc.iceConnectionState(this.id,this._peerConnection.iceConnectionState),A.pc.connectionState(this.id,this._peerConnection.connectionState),this.preempt("closed"),this._encodingParameters.removeListener("changed",this._onEncodingParametersChanged),!0)}_handleConnectionStateChange(){A.pc.connectionState(this.id,this.connectionState),this.emit("connectionStateChanged")}_handleDataChannelEvent(e){const t=e.channel,n=new O(t);this._dataTrackReceivers.add(n),t.addEventListener("close",()=>{this._dataTrackReceivers.delete(n)}),this.emit("trackAdded",n)}_handleGlare(e){return this._log.debug("Glare detected; rolling back"),this._isRestartingIce&&(this._log.debug("An ICE restart was in progress; we'll need to restart ICE again after rolling back"),this._isRestartingIce=!1,this._shouldRestartIce=!0),Promise.resolve().then(()=>(this._trackIdsToAttributes=new Map(this._appliedTrackIdsToAttributes),this._setLocalDescription({type:"rollback"}))).then(()=>(this._needsAnswer=!1,this._answer(e))).then(e=>e?Promise.resolve():this._offer())}_publishMediaWarning({message:e,code:t,error:n,sdp:i}){this._eventObserver.emit("event",{level:"warning",name:"error",group:"media",payload:{message:e,code:t,context:JSON.stringify({error:n.message,sdp:i})}})}_handleIceCandidateEvent(e){e.candidate&&(this._log.debug("Clearing ICE gathering timeout"),this._didGenerateLocalCandidates=!0,this._iceGatheringTimeout.clear(),this._localCandidates.push(e.candidate),A.pc.iceCandidate(this.id,e.candidate));const t={ice:{candidates:this._isIceLite?[]:this._localCandidates.slice(),ufrag:this._localUfrag},id:this.id};e.candidate||(t.ice.complete=!0),this._isIceLite&&e.candidate||(t.ice.revision=this._localCandidatesRevision++,this.emit("candidates",t))}_handleIceConnectionStateChange(){const{iceConnectionState:e}=this._peerConnection,t=["connected","completed"].includes(e),n=this._log;n.debug(`ICE connection state is "${e}"`),A.pc.iceConnectionState(this.id,e),t&&(this._iceReconnectTimeout.clear(),this._iceRestartBackoff.reset()),"failed"===this._lastIceConnectionState||"failed"!==e||this._shouldRestartIce||this._isRestartingIce?["disconnected","failed"].includes(this._lastIceConnectionState)&&t&&n.debug("ICE reconnected"):(n.warn("ICE failed"),this._initiateIceRestartBackoff()),"connected"===e?(this._isIceConnectionInactive=!1,this._iceConnectionMonitor.start(()=>{this._iceConnectionMonitor.stop(),this._shouldRestartIce||this._isRestartingIce||(n.warn("ICE Connection Monitor detected inactivity"),this._isIceConnectionInactive=!0,this._initiateIceRestartBackoff(),this.emit("iceConnectionStateChanged"),this.emit("connectionStateChanged"))})):["disconnected","completed"].includes(e)||(this._iceConnectionMonitor.stop(),this._isIceConnectionInactive=!1),this._lastIceConnectionState=e,this.emit("iceConnectionStateChanged")}_handleIceGatheringTimeout(){this._log.warn("ICE failed to gather any local candidates"),this._iceGatheringFailed=!0,this._initiateIceRestartBackoff(),this.emit("iceConnectionStateChanged"),this.emit("connectionStateChanged")}_handleIceGatheringStateChange(){const{iceGatheringState:e}=this._peerConnection;A.pc.iceGatheringState(this.id,e);const t=this._log;t.debug(`ICE gathering state is "${e}"`);const{delay:n,isSet:i}=this._iceGatheringTimeout;"gathering"!==e||this._didGenerateLocalCandidates||i||(t.debug(`Starting ICE gathering timeout: ${n}`),this._iceGatheringFailed=!1,this._iceGatheringTimeout.start())}_handleSignalingStateChange(){A.pc.signalingState(this.id,this._peerConnection.signalingState),"stable"===this._peerConnection.signalingState&&(this._appliedTrackIdsToAttributes=new Map(this._trackIdsToAttributes))}_handleDtlsTransportStateChange(){const e=this._dtlsTransport;e&&(this._log.debug(`DTLS transport state is "${e.state}"`),A.pc.dtlsTransportState(this.id,e.state))}_handleSelectedCandidatePairChange(){var e;const t=null===(e=this._dtlsTransport)||void 0===e?void 0:e.iceTransport;if(t&&"function"==typeof t.getSelectedCandidatePair){const e=t.getSelectedCandidatePair();e&&A.pc.selectedCandidatePair(this.id,e)}}_handleTrackEvent(e){const t=this._peerConnection.remoteDescription?this._peerConnection.remoteDescription.sdp:null;this._trackMatcher=this._trackMatcher||new M,this._trackMatcher.update(t);const n=e.track,i=this._trackMatcher.match(e)||n.id,r=new L(i,n);this._mediaTrackReceivers.forEach(e=>{e.track.id===r.track.id&&this._mediaTrackReceivers.delete(e)}),this._mediaTrackReceivers.add(r),n.addEventListener?n.addEventListener("ended",()=>this._mediaTrackReceivers.delete(r)):n.onended=()=>this._mediaTrackReceivers.delete(r),this.emit("trackAdded",r)}_initiateIceRestart(){if("closed"===this._peerConnection.signalingState)return;const e=this._log;e.warn("Attempting to restart ICE"),this._didGenerateLocalCandidates=!1,this._isIceRestartBackoffInProgress=!1,this._shouldRestartIce=!0;const{delay:t,isSet:n}=this._iceReconnectTimeout;n||(e.debug(`Starting ICE reconnect timeout: ${t}`),this._iceReconnectTimeout.start()),this.offer().catch(t=>{e.error(`offer failed in _initiateIceRestart with: ${t.message}`)})}_initiateIceRestartBackoff(){"closed"===this._peerConnection.signalingState||this._isIceRestartBackoffInProgress||(this._log.warn("An ICE restart has been scheduled"),this._isIceRestartBackoffInProgress=!0,this._iceRestartBackoff.backoff(()=>this._initiateIceRestart()))}_maybeReoffer(e){let t=this._shouldOffer;if(e&&e.sdp){const n=this._peerConnection.getSenders().filter(e=>e.track);t=["audio","video"].reduce((t,i)=>{const r=p(e.sdp,i,"(sendrecv|sendonly)"),s=n.filter(q.bind(null,i));return t||r.length<s.length},t);const i=this._dataChannels.size>0,r=p(e.sdp,"application").length>0;t=t||i&&!r}return(t?this._offer():Promise.resolve()).then(()=>t)}_offer(){const e=Object.assign({},this._offerOptions);return this._needsAnswer=!0,this._shouldRestartIce&&(this._shouldRestartIce=!1,this._isRestartingIce=!0,e.iceRestart=!0),Promise.all(this._replaceTrackPromises.values()).then(()=>(this._peerConnection.getTransceivers().forEach(e=>this._applyCodecPreferencesToTransceiver(e)),this._peerConnection.createOffer(e))).catch(e=>{const t=new y;throw this._publishMediaWarning({message:"Failed to create offer",code:t.code,error:e}),t}).then(e=>{if($){let t=u(e.sdp);t=f(t),e=new this._RTCSessionDescription({sdp:t,type:e.type})}else e=D(e);let t=m(e.sdp,["mslabel","label"]);return this._shouldOffer=!1,this._negotiationRole||(this._negotiationRole="offerer"),this._shouldApplySimulcast&&(this._localDescriptionWithoutSimulcast={type:"offer",sdp:t},t=this._setSimulcast(t,this._trackIdsToAttributes)),this._setLocalDescription({type:"offer",sdp:t})})}_getMediaTrackSenderId(e){const t=Array.from(this._rtpSenders.keys()).find(({track:{id:t}})=>t===e);return t?t.id:e}_addOrRewriteLocalTrackIds(e){const t=this._peerConnection.getTransceivers().filter(({sender:e,stopped:t})=>!t&&e&&e.track),n=t.filter(({mid:e})=>e),i=new Map(n.map(({mid:e,sender:t})=>[e,this._getMediaTrackSenderId(t.track.id)])),r=l(e.sdp,i),s=t.filter(({mid:e})=>!e),o=new Map(["audio","video"].map(e=>[e,s.filter(({sender:t})=>t.track.kind===e).map(({sender:e})=>this._getMediaTrackSenderId(e.track.id))])),a=c(r,i,o);return new this._RTCSessionDescription({sdp:a,type:e.type})}_rollbackAndApplyOffer(e){return this._setLocalDescription({type:"rollback"}).then(()=>this._setLocalDescription(e))}_setLocalDescription(e){return"rollback"!==e.type&&this._shouldApplyDtx&&(e=new this._RTCSessionDescription({sdp:h(e.sdp),type:e.type})),this._peerConnection.setLocalDescription(e).catch(t=>{this._log.warn(`Calling setLocalDescription with an RTCSessionDescription of type "${e.type}" failed with the error "${t.message}".`,t);const n=new y,i={message:`Calling setLocalDescription with an RTCSessionDescription of type "${e.type}" failed`,code:n.code,error:t};throw e.sdp&&(this._log.warn(`The SDP was ${e.sdp}`),i.sdp=e.sdp),this._publishMediaWarning(i),n}).then(()=>{"rollback"!==e.type&&(this._localDescription=this._addOrRewriteLocalTrackIds(e),this._shouldApplyDtx&&(this._localDescription=new this._RTCSessionDescription({sdp:h(this._localDescription.sdp,[]),type:this._localDescription.type})),this._localCandidates=[],"offer"===e.type?this._descriptionRevision++:"answer"===e.type&&(this._lastStableDescriptionRevision=this._descriptionRevision,Q(this)),this._localUfrag=H(e),this.emit("description",this.getState()))})}_setRemoteDescription(e){return e.sdp&&(e.sdp=this._setCodecPreferences(e.sdp,this._preferredAudioCodecs,this._preferredVideoCodecs),this._shouldApplyDtx?e.sdp=h(e.sdp):e.sdp=h(e.sdp,[]),$&&(e.sdp=function(e){return e.replace(/a=msid:[^ ]+ /g,"a=msid:- ")}(e.sdp)),this._peerConnection.remoteDescription||(this._isIceLite=/a=ice-lite/.test(e.sdp))),e=new this._RTCSessionDescription(e),Promise.resolve().then(()=>{if("answer"===e.type&&this._localDescriptionWithoutSimulcast){const t=this._preferredVideoCodecs.find(e=>"adaptiveSimulcast"in e),n=!!t&&!1===t.adaptiveSimulcast,i=this._revertSimulcast(this._localDescription.sdp,this._localDescriptionWithoutSimulcast.sdp,e.sdp,n);if(this._localDescriptionWithoutSimulcast=null,i!==this._localDescription.sdp)return this._rollbackAndApplyOffer({type:this._localDescription.type,sdp:i})}}).then(()=>this._peerConnection.setRemoteDescription(e)).then(()=>{"answer"===e.type&&(this._isRestartingIce&&(this._log.debug("An ICE restart was in-progress and is now completed"),this._isRestartingIce=!1),Q(this))},t=>{throw this._log.warn(`Calling setRemoteDescription with an RTCSessionDescription of type "${e.type}" failed with the error "${t.message}".`,t),e.sdp&&this._log.warn(`The SDP was ${e.sdp}`),t})}_updateDescription(e){switch(e.type){case"answer":case"pranswer":if(e.revision!==this._descriptionRevision||"have-local-offer"!==this._peerConnection.signalingState)return Promise.resolve();this._descriptionRevision=e.revision;break;case"close":return this._close();case"create-offer":return e.revision<=this._lastStableDescriptionRevision?Promise.resolve():this._needsAnswer?(this._queuedDescription=e,Promise.resolve()):(this._descriptionRevision=e.revision,this._offer());case"offer":return e.revision<=this._lastStableDescriptionRevision||"closed"===this._peerConnection.signalingState?Promise.resolve():"have-local-offer"===this._peerConnection.signalingState?this._needsAnswer&&0===this._lastStableDescriptionRevision?(this._queuedDescription=e,Promise.resolve()):(this._descriptionRevision=e.revision,this._handleGlare(e)):(this._descriptionRevision=e.revision,this._answer(e).then(()=>{}))}const t=e.revision;return Promise.resolve().then(()=>this._setRemoteDescription(e)).catch(t=>{const n=new k;throw this._publishMediaWarning({message:`Calling setRemoteDescription with an RTCSessionDescription of type "${e.type}" failed`,code:n.code,error:t,sdp:e.sdp}),n}).then(()=>(this._lastStableDescriptionRevision=t,this._needsAnswer=!1,this._checkIceBox(e))).then(()=>this._queuedDescription&&this._updateDescription(this._queuedDescription)).then(()=>(this._queuedDescription=null,this._maybeReoffer(this._peerConnection.localDescription).then(()=>{})))}_updateIce(e){const t=this._remoteCandidates.update(e);return this._addIceCandidates(t)}addDataTrackSender(e){if(!this._dataChannels.has(e))try{const t={ordered:e.ordered};null!==e.maxPacketLifeTime&&(t.maxPacketLifeTime=e.maxPacketLifeTime),null!==e.maxRetransmits&&(t.maxRetransmits=e.maxRetransmits);const n=this._peerConnection.createDataChannel(e.id,t);e.addDataChannel(n),this._dataChannels.set(e,n)}catch(t){this._log.warn(`Error creating an RTCDataChannel for DataTrack "${e.id}": ${t.message}`)}}_handleQueuedPublisherHints(){"stable"===this._peerConnection.signalingState&&this._mediaTrackSenderToPublisherHints.forEach(({deferred:e,encodings:t},n)=>{this._mediaTrackSenderToPublisherHints.delete(n),this._setPublisherHint(n,t).then(t=>e.resolve(t)).catch(t=>e.reject(t))})}_setPublisherHint(e,t){if($)return Promise.resolve("COULD_NOT_APPLY_HINT");if(this._mediaTrackSenderToPublisherHints.has(e)){this._mediaTrackSenderToPublisherHints.get(e).deferred.resolve("REQUEST_SKIPPED"),this._mediaTrackSenderToPublisherHints.delete(e)}const n=this._rtpSenders.get(e);if(!n)return this._log.warn("Could not apply publisher hint because RTCRtpSender was not found"),Promise.resolve("UNKNOWN_TRACK");if("closed"===this._peerConnection.signalingState)return this._log.warn('Could not apply publisher hint because signalingState was "closed"'),Promise.resolve("COULD_NOT_APPLY_HINT");if("stable"!==this._peerConnection.signalingState){this._log.debug("Queuing up publisher hint because signalingState:",this._peerConnection.signalingState);const n=C();return this._mediaTrackSenderToPublisherHints.set(e,{deferred:n,encodings:t}),n.promise}const i=n.getParameters();return null!==t&&t.forEach(({enabled:e,layer_index:t})=>{i.encodings.length>t?(this._log.debug(`layer:${t}, active:${i.encodings[t].active} => ${e}`),i.encodings[t].active=e):this._log.warn(`invalid layer:${t}, active:${e}`)}),this._maybeUpdateEncodings(n.track,i.encodings,null===t),n.setParameters(i).then(()=>"OK").catch(e=>(this._log.error("Failed to apply publisher hints:",e),"COULD_NOT_APPLY_HINT"))}addMediaTrackSender(e){if("closed"===this._peerConnection.signalingState||this._rtpSenders.has(e))return;const t=this._addOrUpdateTransceiver(e.track),{sender:n}=t;e.addSender(n,t=>this._setPublisherHint(e,t)),this._rtpNewSenders.add(n),this._rtpSenders.set(e,n)}close(){this._close()&&(this._descriptionRevision++,this._localDescription={type:"close"},this.emit("description",this.getState()))}getTrackReceivers(){return Array.from(this._dataTrackReceivers).concat(Array.from(this._mediaTrackReceivers))}getState(){if(!this._localDescription)return null;const e="answer"===this._localDescription.type?this._lastStableDescriptionRevision:this._descriptionRevision,t={type:this._localDescription.type,revision:e};return this._localDescription.sdp&&(t.sdp=this._localDescription.sdp),{description:t,id:this.id}}offer(){return this._needsAnswer||this._isRestartingIce?(this._shouldOffer=!0,Promise.resolve()):this.bracket("offering",e=>{this.transition("updating",e);return(this._needsAnswer||this._isRestartingIce?Promise.resolve():this._offer()).then(()=>{this.tryTransition("open",e)},t=>{throw this.tryTransition("open",e),t})})}removeDataTrackSender(e){const t=this._dataChannels.get(e);t&&(e.removeDataChannel(t),this._dataChannels.delete(e),t.close())}removeMediaTrackSender(e){const t=this._rtpSenders.get(e);if(t){if("closed"!==this._peerConnection.signalingState&&this._peerConnection.removeTrack(t),e.removeSender(t),this._mediaTrackSenderToPublisherHints.has(e)){this._mediaTrackSenderToPublisherHints.get(e).deferred.resolve("UNKNOWN_TRACK"),this._mediaTrackSenderToPublisherHints.delete(e)}this._rtpNewSenders.delete(t),this._rtpSenders.delete(e)}}setConfiguration(e){"function"==typeof this._peerConnection.setConfiguration&&this._peerConnection.setConfiguration(W(e))}setIceReconnectTimeout(e){return this._iceReconnectTimeout.setDelay(e),this._log.debug("Updated ICE reconnection timeout period:",this._iceReconnectTimeout.delay),this}update(e){return this.bracket("updating",t=>{if("closed"===this.state)return Promise.resolve();this.transition("updating",t);const n=[];return e.ice&&n.push(this._updateIce(e.ice)),e.description&&n.push(this._updateDescription(e.description)),Promise.all(n).then(()=>{this.tryTransition("open",t)},e=>{throw this.tryTransition("open",t),e})})}getStats(){return n(this._peerConnection,{log:this._log}).then(e=>function(e,t){return Object.assign(t,{remoteAudioTrackStats:t.remoteAudioTrackStats.map(t=>U(e,t)),remoteVideoTrackStats:t.remoteVideoTrackStats.map(t=>U(e,t)),localAudioTrackStats:t.localAudioTrackStats.map(t=>B(e,t)),localVideoTrackStats:t.localVideoTrackStats.map(t=>B(e,t))})}(this,e))}},Hs}function tc(){if(Qs)return qs;Qs=1;const{guessBrowser:e}=ce(),t=ec(),n=In(),i=On(),r=ye(),{MediaConnectionError:s}=Kn(),o="firefox"===e();function a(e){return e.createMediaStreamDestination().stream.getAudioTracks()[0]}function c(e,t){return{add:r.difference(t,e._dataTrackSenders),remove:r.difference(e._dataTrackSenders,t)}}function l(e,t){return{add:r.difference(t,e._mediaTrackSenders),remove:r.difference(e._mediaTrackSenders,t)}}const d={new:0,checking:1,connecting:2,connected:3,completed:4,disconnected:-1,failed:-2,closed:-3};let u;function h(e){return e.length?(u=u||Object.keys(d).reduce((e,t)=>Object.assign(e,{[d[t]]:t}),{}),e.reduce((e,t)=>u[Math.max(d[e],d[t])])):"new"}function p(e){e._lastIceConnectionState=e.iceConnectionState,e._iceConnectionState=h([...e._peerConnections.values()].map(e=>e.iceConnectionState)),e.iceConnectionState!==e._lastIceConnectionState&&e.emit("iceConnectionStateChanged")}function f(e){e._lastConnectionState=e.connectionState,e._connectionState=h([...e._peerConnections.values()].map(e=>e.connectionState)),e.connectionState!==e._lastConnectionState&&e.emit("connectionStateChanged")}return qs=class extends i{constructor(e,i,s){super();const c=(s=Object.assign({audioContextFactory:o?vn():null,PeerConnectionV2:t},s)).audioContextFactory?s.audioContextFactory.getOrCreate(this):null,l=c?{offerToReceiveVideo:!0}:{offerToReceiveAudio:!0,offerToReceiveVideo:!0};Object.defineProperties(this,{_audioContextFactory:{value:s.audioContextFactory},_closedPeerConnectionIds:{value:new Set},_configuration:{writable:!0,value:null},_configurationDeferred:{writable:!0,value:r.defer()},_connectionState:{value:"new",writable:!0},_dummyAudioTrackSender:{value:c?new n(a(c)):null},_encodingParameters:{value:e},_iceConnectionState:{writable:!0,value:"new"},_dataTrackSenders:{writable:!0,value:new Set},_lastConnectionState:{value:"new",writable:!0},_lastIceConnectionState:{writable:!0,value:"new"},_mediaTrackSenders:{writable:!0,value:new Set},_offerOptions:{value:l},_peerConnections:{value:new Map},_preferredCodecs:{value:i},_sessionTimeout:{value:null,writable:!0},_PeerConnectionV2:{value:s.PeerConnectionV2}})}setEffectiveAdaptiveSimulcast(e){this._peerConnections.forEach(t=>t.setEffectiveAdaptiveSimulcast(e)),this._preferredCodecs.video.forEach(t=>{"adaptiveSimulcast"in t&&(t.adaptiveSimulcast=e)})}get connectionState(){return this._connectionState}get iceConnectionState(){return this._iceConnectionState}_closeAbsentPeerConnections(e){const t=new Set(e.map(e=>e.id));return this._peerConnections.forEach(e=>{t.has(e.id)||e._close()}),this}_getConfiguration(){return this._configurationDeferred.promise}_getOrCreate(e,t){const n=this;let i=this._peerConnections.get(e);if(!i){const r=this._PeerConnectionV2,o=Object.assign({dummyAudioMediaStreamTrack:this._dummyAudioTrackSender?this._dummyAudioTrackSender.track:null,offerOptions:this._offerOptions},this._sessionTimeout?{sessionTimeout:this._sessionTimeout}:{},t);try{i=new r(e,this._encodingParameters,this._preferredCodecs,o)}catch(e){throw new s}this._peerConnections.set(i.id,i),i.on("candidates",this.queue.bind(this,"candidates")),i.on("description",this.queue.bind(this,"description")),i.on("trackAdded",this.queue.bind(this,"trackAdded")),i.on("stateChanged",function e(t){"closed"===t&&(i.removeListener("stateChanged",e),n._dataTrackSenders.forEach(e=>i.removeDataTrackSender(e)),n._mediaTrackSenders.forEach(e=>i.removeMediaTrackSender(e)),n._peerConnections.delete(i.id),n._closedPeerConnectionIds.add(i.id),f(n),p(n))}),i.on("connectionStateChanged",()=>f(this)),i.on("iceConnectionStateChanged",()=>p(this)),this._dataTrackSenders.forEach(i.addDataTrackSender,i),this._mediaTrackSenders.forEach(i.addMediaTrackSender,i),p(this)}return i}close(){return this._peerConnections.forEach(e=>{e.close()}),this._dummyAudioTrackSender&&this._dummyAudioTrackSender.stop(),this._audioContextFactory&&this._audioContextFactory.release(this),p(this),this}createAndOffer(){return this._getConfiguration().then(e=>{let t;do{t=r.makeUUID()}while(this._peerConnections.has(t));return this._getOrCreate(t,e)}).then(e=>e.offer()).then(()=>this)}getTrackReceivers(){return r.flatMap(this._peerConnections,e=>e.getTrackReceivers())}getStates(){const e=[];return this._peerConnections.forEach(t=>{const n=t.getState();n&&e.push(n)}),e}setConfiguration(e){return this._configuration&&(this._configurationDeferred=r.defer(),this._peerConnections.forEach(t=>{t.setConfiguration(e)})),this._configuration=e,this._configurationDeferred.resolve(e),this}setIceReconnectTimeout(e){return null===this._sessionTimeout&&(this._peerConnections.forEach(t=>{t.setIceReconnectTimeout(e)}),this._sessionTimeout=e),this}setTrackSenders(e){const t=new Set(e.filter(e=>"data"===e.kind)),n=new Set(e.filter(e=>e&&("audio"===e.kind||"video"===e.kind))),i=function(e,t,n){return{data:c(e,t),media:l(e,n)}}(this,t,n);return this._dataTrackSenders=t,this._mediaTrackSenders=n,function(e,t){(t.data.add.size||t.data.remove.size||t.media.add.size||t.media.remove.size)&&e._peerConnections.forEach(e=>{t.data.remove.forEach(e.removeDataTrackSender,e),t.media.remove.forEach(e.removeMediaTrackSender,e),t.data.add.forEach(e.addDataTrackSender,e),t.media.add.forEach(e.addMediaTrackSender,e),(t.media.add.size||t.media.remove.size||t.data.add.size&&!e.isApplicationSectionNegotiated)&&e.offer()})}(this,i),this}update(e,t=!1){return t&&this._closeAbsentPeerConnections(e),this._getConfiguration().then(t=>Promise.all(e.map(e=>{if(this._closedPeerConnectionIds.has(e.id))return null;return this._getOrCreate(e.id,t).update(e)}))).then(()=>this)}getStats(){const e=Array.from(this._peerConnections.values());return Promise.all(e.map(e=>e.getStats().then(t=>[e.id,t]))).then(e=>new Map(e))}},qs}function nc(){if(Gs)return zs;Gs=1;const e=Re();let t=0;return zs=class extends e{constructor(e,n,i){super(),Object.defineProperties(this,{_instanceId:{value:t++},channel:{value:n},_log:{value:i.log.createLog("default",this)},_getReceiver:{value:e},_receiverPromise:{value:null,writable:!0},_transport:{value:null,writable:!0}})}get isSetup(){return!!this._receiverPromise}toString(){return`[MediaSignaling #${this._instanceId}:${this.channel}]`}setup(e){this._teardown(),this._log.info("setting up msp transport for id:",e);const t=this._getReceiver(e).then(e=>{if("data"!==e.kind&&this._log.error("Expected a DataTrackReceiver"),this._receiverPromise===t){try{this._transport=e.toDataTransport(),this.emit("ready",this._transport)}catch(e){this._log.error(`Failed to toDataTransport: ${e.message}`)}e.once("close",()=>this._teardown())}});this._receiverPromise=t}_teardown(){this._transport&&(this._log.info("Tearing down"),this._transport=null,this._receiverPromise=null,this.emit("teardown"))}},zs}function ic(){if(no)return to;no=1;const e=function(){if(eo)return Zs;eo=1;class e{constructor(e,t,n,i){Object.defineProperties(this,{availableSend:{enumerable:!0,value:n},recv:{enumerable:!0,value:t},rtt:{enumerable:!0,value:i},send:{enumerable:!0,value:e}})}static of(t,n){const i=(n.timestamp-t.timestamp)/1e3,r=n.bytesSent-t.bytesSent,s=n.bytesReceived-t.bytesReceived,o=i>0?r/i*8:0,a=i>0?s/i*8:0,{availableOutgoingBitrate:c,currentRoundTripTime:l}=n;return new e(o,a,c,l)}}return Zs=e}();return to=class{constructor(){Object.defineProperties(this,{lastReport:{enumerable:!0,value:new e(0,0),writable:!0},lastStats:{enumerable:!0,value:null,writable:!0}})}next(t){const n=this.lastStats;if(this.lastStats=t,n){const i=n.id===t.id?e.of(n,t):new e(0,0);this.lastReport=i}return this.lastReport}}}function rc(){if(ro)return io;return ro=1,io=function(e){return(e=e.filter(e=>"number"==typeof e)).length<1?void 0:e.reduce((e,t)=>t+e)/e.length}}function sc(){if(oo)return so;oo=1;return so=class{constructor(e,t,n){Object.defineProperties(this,{id:{enumerable:!0,value:e},trackId:{enumerable:!0,value:t},bitrate:{enumerable:!0,value:n}})}}}function oc(){if(co)return ao;return co=1,ao=function(e){return e.reduce((e,t)=>"number"==typeof t?t+e:e,0)}}function ac(){if(uo)return lo;uo=1;const e=rc(),t=sc(),n=oc();class i extends t{constructor(e,t,n,i,r,s,o){super(e,t,n);const a=r>0?i/r:0;Object.defineProperties(this,{deltaPacketsLost:{enumerable:!0,value:i},deltaPacketsReceived:{enumerable:!0,value:r},fractionLost:{enumerable:!0,value:s},jitter:{enumerable:!0,value:o},phonyFractionLost:{enumerable:!0,value:a}})}static of(e,t,n){if(t.id!==n.id)throw new Error("RTCStats IDs must match");const r=(n.timestamp-t.timestamp)/1e3,s=n.bytesReceived-t.bytesReceived,o=r>0?s/r*8:0,a=Math.max(n.packetsLost-t.packetsLost,0),c=n.packetsReceived-t.packetsReceived,{fractionLost:l,jitter:d}=n;return new i(t.id,e,o,a,c,l,d)}static summarize(t){const i=t.map(e=>e.summarize());return{bitrate:n(i.map(e=>e.bitrate)),fractionLost:e(i.map(e=>e.fractionLost)),jitter:e(i.map(e=>e.jitter))}}summarize(){return{bitrate:this.bitrate,fractionLost:"number"==typeof this.fractionLost?this.fractionLost:this.phonyFractionLost,jitter:this.jitter}}}return lo=i}function cc(){if(po)return ho;po=1;const e=rc(),t=sc(),n=oc();class i extends t{constructor(e,t,n,i){super(e,t,n),Object.defineProperties(this,{rtt:{enumerable:!0,value:i}})}static of(e,t,n,r){if(t.id!==n.id)throw new Error("RTCStats IDs must match");const s=(n.timestamp-t.timestamp)/1e3,o=n.bytesSent-t.bytesSent,a=s>0?o/s*8:0,c=r&&"number"==typeof r.roundTripTime?r.roundTripTime/1e3:void 0;return new i(t.id,e,a,c)}static summarize(t){return{bitrate:n(t.map(e=>e.bitrate)),rtt:e(t.map(e=>e.rtt))}}}return ho=i}function lc(){if(_o)return go;_o=1;return go=class{constructor(e,t,n){Object.defineProperties(this,{id:{enumerable:!0,value:e,writable:!0},trackId:{enumerable:!0,value:t,writable:!0},lastStats:{enumerable:!0,value:n,writable:!0}})}}}function dc(){if(So)return wo;So=1;const{guessBrowser:e}=ce(),t=ic(),n=function(){if(mo)return fo;mo=1;const e=ac(),t=cc();return fo=class{constructor(e,t,n){Object.defineProperties(this,{ice:{enumerable:!0,value:e},audio:{enumerable:!0,value:t},video:{enumerable:!0,value:n}})}summarize(){const n=this.audio.send.concat(this.video.send),i=t.summarize(n),r=this.audio.recv.concat(this.video.recv),s=e.summarize(r);return{ice:this.ice,send:i,recv:s,audio:{send:t.summarize(this.audio.send),recv:e.summarize(this.audio.recv)},video:{send:t.summarize(this.video.send),recv:e.summarize(this.video.recv)}}}}}(),i=function(){if(bo)return vo;bo=1;const e=ac(),t=lc();return vo=class extends t{constructor(e,t){super(t.id,e,t),Object.defineProperties(this,{lastReport:{enumerable:!0,value:null,writable:!0}})}next(t,n){const i=this.lastStats;this.lastStats=n,this.trackId=t;const r=e.of(t,i,n);return this.lastReport=r,r}}}(),r=function(){if(ko)return yo;ko=1;const e=lc(),t=cc();return yo=class extends e{constructor(e,t){super(t.id,e,t),Object.defineProperties(this,{lastReport:{enumerable:!0,value:null,writable:!0}})}next(e,n,i){const r=this.lastStats;this.lastStats=n,this.trackId=e;const s=t.of(e,r,n,i);return this.lastReport=s,s}}}();function s(e){return Promise.all(e.map(e=>{const t=e.track.id;return e.getStats().then(e=>{for(const n of e.values())"inbound-rtp"===n.type&&(n.id=`${t}-${n.id}`);return[t,e]})})).then(e=>new Map(e))}function o(e,t,n,i,r){const s=t[i.mediaType];if(!r){const e=n.get(i.trackId);e&&(r=e.trackIdentifier)}if(s&&r){if(s.has(i.id))return s.get(i.id);const t=new e(r,i);s.set(i.id,t)}return null}function a(e){return{audio:e.audio.send,video:e.video.send}}function c(e){return{audio:e.audio.recv,video:e.video.recv}}function l(e,t,n,i){return o(r,a(e),t,n,i)}function d(e,t,n,r){return o(i,c(e),t,n,r)}function u(e){return{audio:new Set(e.audio.send.keys()),video:new Set(e.video.send.keys())}}function h(e){return{audio:new Set(e.audio.recv.keys()),video:new Set(e.video.recv.keys())}}function p(t,n,i,r){for(const s of n.values())if("outbound-rtp"===s.type&&!s.isRemote){if("firefox"!==e()&&!s.trackId)continue;const o=i[s.mediaType];o&&o.delete(s.id);const a=l(t,n,s,r);if(a){const e=n.get(s.remoteId);a.next(r||a.trackId,s,e)}}}function f(e,t,n,i){for(const r of t.values())if("inbound-rtp"===r.type&&!r.isRemote){const s=n[r.mediaType];s&&s.delete(r.id);const o=d(e,t,r,i);o&&o.next(i||o.trackId,r)}}function m(e,t){for(const n in t){const i=e[n];t[n].forEach(e=>i.delete(e))}}function g(e,t){let n;for(const e of t.values())"transport"===e.type&&(n=t.get(e.selectedCandidatePairId));if(n)e.next(n);else for(const n of t.values())"candidate-pair"!==n.type||!n.nominated||"selected"in n&&!n.selected||e.next(n)}return wo=class{constructor(e){Object.defineProperties(this,{pc:{enumerable:!0,value:e},ice:{enumerable:!0,value:new t},audio:{enumerable:!0,value:{send:new Map,recv:new Map}},video:{enumerable:!0,value:{send:new Map,recv:new Map}},lastReport:{enumerable:!0,value:null,writable:!0}})}next(){const t="firefox"===e()?function(e){const t=e.pc.getTransceivers().filter(e=>e.currentDirection&&e.currentDirection.match(/send/)&&e.sender.track).map(e=>e.sender),n=e.pc.getTransceivers().filter(e=>e.currentDirection&&e.currentDirection.match(/recv/)).map(e=>e.receiver);return Promise.all([s(t),s(n),e.pc.getStats()]).then(([t,n,i])=>{const r=a(e),s=u(e);t.forEach((t,n)=>p(e,t,s,n)),m(r,s);const o=c(e),l=h(e);n.forEach((t,n)=>f(e,t,l,n)),m(o,l),g(e.ice,i)})}(this):(i=this).pc.getStats().then(e=>{const t=a(i),n=u(i);p(i,e,n),m(t,n);const r=c(i),s=h(i);f(i,e,s),m(r,s),g(i.ice,e)});var i;return t.then(()=>{const e=[...this.audio.send.values()],t=[...this.video.send.values()],i=[...this.audio.recv.values()],r=[...this.video.recv.values()],s=new n(this.ice.lastReport,{send:e.map(e=>e.lastReport).filter(e=>e),recv:i.map(e=>e.lastReport).filter(e=>e)},{send:t.map(e=>e.lastReport).filter(e=>e),recv:r.map(e=>e.lastReport).filter(e=>e)});return this.lastReport=s,s})}},wo}function uc(){if(Co)return To;Co=1;const e=Re(),t=dc();return To=class extends e{constructor(e,t){super(),Object.defineProperties(this,{_factories:{value:new WeakMap},_manager:{value:e},_signaling:{value:t}}),t.on("updated",()=>this.emit("updated"))}get level(){return this._signaling.level}get levels(){return this._signaling.levels}get remoteLevels(){return this._signaling.remoteLevels}start(){this.stop();const e=setTimeout(()=>{this._timeout===e&&function(e){const n=(e._manager._peerConnections?Array.from(e._manager._peerConnections.values()):[]).map(e=>e._peerConnection).filter(e=>"closed"!==e.signalingState),i=n.map(n=>{if(e._factories.has(n))return e._factories.get(n);const i=new t(n);return e._factories.set(n,i),i}).map(e=>e.next().catch(()=>null));return Promise.all(i).then(e=>e.filter(e=>e).map(e=>e.summarize()))}(this).then(t=>{if(this._timeout===e){if(t.length){const[e]=t;this._signaling.put(e)}this.start()}})},200);this._timeout=e}stop(){clearTimeout(this._timeout),this._timeout=null}},To}function hc(){if(Lo)return Oo;Lo=1;const e=nc(),t=function(){if(Eo)return Po;Eo=1;const{defer:e}=ye();return Po=class{constructor(){Object.defineProperties(this,{_deferreds:{value:[]},_hasValue:{value:!1,writable:!0},_value:{value:null,writable:!0}})}put(e){this._hasValue=!0,this._value=e;const t=this._deferreds.shift();return t&&t.resolve(e),this}take(){if(this._hasValue&&!this._deferreds.length)return this._hasValue=!1,Promise.resolve(this._value);const t=e();return this._deferreds.push(t),t.promise.then(e=>(this._hasValue=!1,e))}}}(),n=bi();return Oo=class extends e{constructor(e,i,r){super(e,"network_quality",r),Object.defineProperties(this,{_level:{value:null,writable:!0},_levels:{value:null,writable:!0},_remoteLevels:{value:new Map,writable:!0},_networkQualityInputs:{value:new t},_resendTimer:{value:new n(()=>{this._resendTimer.setDelay(1.5*this._resendTimer.delay),this._sendNetworkQualityInputs()},5e3,!1)},_networkQualityReportLevels:{get:()=>({reportLevel:i.local,remoteReportLevel:i.remote})}}),this.on("ready",e=>{e.on("message",e=>{if(this._log.debug("Incoming: ",e),"network_quality"===e.type)this._handleNetworkQualityMessage(e)})}),this._sendNetworkQualityInputs()}get level(){return this._level}get levels(){return this._levels}get remoteLevels(){return this._remoteLevels}_handleNetworkQualityMessage(e){let t=!1,n=null;const i=e?e.local:null;"number"==typeof i?(n=i,this._levels=null):"object"==typeof i&&i&&(this._levels=i,n="number"==typeof i.level?i.level:Math.min(i.audio.send,i.audio.recv,i.video.send,i.video.recv)),null!==n&&this.level!==n&&(this._level=n,t=!0),this._remoteLevels=e&&e.remotes?e.remotes.reduce((e,n)=>((this._remoteLevels.get(n.sid)||{}).level!==n.level&&(t=!0),e.set(n.sid,n)),new Map):this._remoteLevels,t&&this.emit("updated"),this._resendTimer.setDelay(5e3),this._resendTimer.isSet&&setTimeout(()=>this._sendNetworkQualityInputs(),1e3)}_sendNetworkQualityInputs(){return this._resendTimer.clear(),this._networkQualityInputs.take().then(e=>{this._transport&&this._transport.publish(function(e,t){return Object.assign({type:"network_quality"},e,t)}(e,this._networkQualityReportLevels))}).finally(()=>{this._resendTimer.start()})}put(e){this._networkQualityInputs.put(e)}},Oo}function pc(){if(Io)return Ro;Io=1;const e=Re().EventEmitter;return Ro=class extends e{constructor(){super(),Object.defineProperties(this,{_isEnabled:{value:null,writable:!0},isEnabled:{enumerable:!0,get(){return this._isEnabled}}})}disable(){return this.enable(!1)}enable(e){return e="boolean"!=typeof e||e,this.isEnabled!==e&&(this._isEnabled=e,this.emit("updated")),this}}}function fc(){if($o)return jo;$o=1;const e=pc(),t=vi(),n=bi(),{buildLogLevels:i}=ye(),{DEFAULT_LOG_LEVEL:r}=ne(),s=ie(),{MediaConnectionError:o,MediaDTLSTransportFailedError:a,SignalingConnectionDisconnectedError:c}=Kn();let l=0;const d={connected:["reconnecting","disconnected"],reconnecting:["connected","disconnected"],disconnected:[]};function u(e){if("disconnected"===e.state||"disconnected"===e.signalingConnectionState)return void e._sessionTimeout.clear();let t;"reconnecting"===e.signalingConnectionState?t=e.signalingConnectionState:"failed"===e.iceConnectionState?(e._mediaConnectionIsReconnecting=!0,t="reconnecting"):"new"===e.iceConnectionState||"checking"===e.iceConnectionState?t=e._mediaConnectionIsReconnecting?"reconnecting":"connected":(e._mediaConnectionIsReconnecting=!1,e._reconnectingError=null,e._sessionTimeout.clear(),t="connected"),t!==e.state&&("reconnecting"===t?(e._reconnectingError="reconnecting"===e.signalingConnectionState?new c:new o,e._sessionTimeout.start(),e.preempt(t,null,[e._reconnectingError])):e.preempt(t))}return jo=class extends t{constructor(t,o,c,h){h=Object.assign({logLevel:r,RecordingSignaling:e,Timeout:n},h);const p=i(h.logLevel);super("connected",d);const f=h.RecordingSignaling,m=new h.Timeout(()=>{this._disconnect(this._reconnectingError)},h.sessionTimeout,!1);Object.defineProperties(this,{_instanceId:{value:l++},_log:{value:h.log?h.log.createLog("default",this):new s("default",this,p,h.loggerName)},_mediaConnectionIsReconnecting:{writable:!0,value:!1},_options:{value:h},_reconnectingError:{value:null,writable:!0},_sessionTimeout:{value:m},dominantSpeakerSid:{enumerable:!0,value:null,writable:!0},localParticipant:{enumerable:!0,value:t},name:{enumerable:!0,value:c},participants:{enumerable:!0,value:new Map},recording:{enumerable:!0,value:new f},sid:{enumerable:!0,value:o}}),this.on("connectionStateChanged",()=>{"failed"!==this.connectionState||["disconnected","failed"].includes(this.iceConnectionState)||this._disconnect(new a)}),this.on("iceConnectionStateChanged",()=>u(this)),this.on("signalingConnectionStateChanged",()=>u(this)),setTimeout(()=>u(this))}_disconnect(e){return"disconnected"!==this.state&&(this.preempt("disconnected",null,[e]),!0)}toString(){return`[RoomSignaling #${this._instanceId}: ${this.localParticipant?this.localParticipant.sid:"null"}]`}connectParticipant(e){const t=this;return"disconnected"!==e.state&&(!this.participants.has(e.sid)&&(this.participants.set(e.sid,e),e.on("stateChanged",function n(i){"disconnected"===i&&(e.removeListener("stateChanged",n),t.participants.delete(e.sid),t.emit("participantDisconnected",e))}),this.emit("participantConnected",e),!0))}disconnect(){return this._disconnect()}setDominantSpeaker(e){this.dominantSpeakerSid=e,this.emit("dominantSpeakerChanged")}},jo}function mc(){if(qo)return Wo;qo=1;const e=Vo?No:(Vo=1,No=class{constructor({actual:e=null,available:t=null,level:n=null}){Object.defineProperties(this,{actual:{value:e,enumerable:!0},available:{value:t,enumerable:!0},level:{value:n,enumerable:!0}})}}),t=Bo?Fo:(Bo=1,Fo=class{constructor({fractionLost:e=null,level:t=null}){Object.defineProperties(this,{fractionLost:{value:e,enumerable:!0},level:{value:t,enumerable:!0}})}}),n=Ho?Uo:(Ho=1,Uo=class{constructor({jitter:e=null,rtt:t=null,level:n=null}){Object.defineProperties(this,{jitter:{value:e,enumerable:!0},rtt:{value:t,enumerable:!0},level:{value:n,enumerable:!0}})}});return Wo=class{constructor({bandwidth:i=null,fractionLost:r=null,latency:s=null}){Object.defineProperties(this,{bandwidth:{value:i?new e(i):null,enumerable:!0},fractionLost:{value:r?new t(r):null,enumerable:!0},latency:{value:s?new n(s):null,enumerable:!0}})}}}function gc(){if(Jo)return Yo;Jo=1;const e=function(){if(zo)return Qo;zo=1;const e=mc();return Qo=class extends e{constructor(e){super(e)}}}(),t=function(){if(Ko)return Go;Ko=1;const e=mc();return Go=class extends e{constructor(e){super(e)}}}();return Yo=class{constructor({send:n,recv:i,sendStats:r=null,recvStats:s=null}){Object.defineProperties(this,{send:{value:n,enumerable:!0},recv:{value:i,enumerable:!0},sendStats:{value:r?new e(r):null,enumerable:!0},recvStats:{value:s?new t(s):null,enumerable:!0}})}}}function _c(){if(ia)return na;ia=1;const e=function(){if(Zo)return Xo;Zo=1;const e=gc();return Xo=class extends e{constructor(e){super(e)}}}(),t=function(){if(ta)return ea;ta=1;const e=gc();return ea=class extends e{constructor(e){super(e)}}}();return na=class{constructor({level:n,audio:i,video:r}){Object.defineProperties(this,{level:{value:n,enumerable:!0},audio:{value:i?new e(i):null,enumerable:!0},video:{value:r?new t(r):null,enumerable:!0}})}}}function vc(){if(sa)return ra;sa=1;const e=vi(),t=_c(),n={connecting:["connected"],connected:["disconnected","reconnecting"],reconnecting:["connected","disconnected"],disconnected:[]};return ra=class extends e{constructor(){super("connecting",n),Object.defineProperties(this,{_identity:{writable:!0,value:null},_networkQualityLevel:{value:null,writable:!0},_networkQualityStats:{value:null,writable:!0},_sid:{writable:!0,value:null},identity:{enumerable:!0,get(){return this._identity}},sid:{enumerable:!0,get(){return this._sid}},tracks:{enumerable:!0,value:new Map}})}get networkQualityLevel(){return this._networkQualityLevel}get networkQualityStats(){return this._networkQualityStats}addTrack(e){return this.tracks.set(e.id||e.sid,e),this.emit("trackAdded",e),this}disconnect(){return"disconnected"!==this.state&&(this.preempt("disconnected"),!0)}removeTrack(e){const t=this.tracks.get(e.id||e.sid);return this.tracks.delete(e.id||e.sid),t&&this.emit("trackRemoved",e),t||null}setNetworkQualityLevel(e,n){this._networkQualityLevel!==e&&(this._networkQualityLevel=e,this._networkQualityStats=n&&(n.audio||n.video)?new t(n):null,this.emit("networkQualityLevelChanged"))}connect(e,t){return("connecting"===this.state||"reconnecting"===this.state)&&(this._sid||(this._sid=e),this._identity||(this._identity=t),this.preempt("connected"),!0)}reconnecting(){return("connecting"===this.state||"connected"===this.state)&&(this.preempt("reconnecting"),!0)}},ra}function bc(){if(la)return ca;la=1;const{EventEmitter:e}=Re();return ca=class extends e{constructor(e,t,n,i){super();let r=null;Object.defineProperties(this,{_error:{value:null,writable:!0},_isEnabled:{value:n,writable:!0},_priority:{value:i,writable:!0},_trackTransceiver:{value:null,writable:!0},_sid:{get:()=>r,set(e){null===r&&(r=e)}},kind:{enumerable:!0,value:t},name:{enumerable:!0,value:e}})}get error(){return this._error}get isEnabled(){return this._isEnabled}get priority(){return this._priority}get sid(){return this._sid}get trackTransceiver(){return this._trackTransceiver}disable(){return this.enable(!1)}enable(e){return e="boolean"!=typeof e||e,this.isEnabled!==e&&(this._isEnabled=e,this.emit("updated")),this}setTrackTransceiver(e){return e=e||null,this.trackTransceiver!==e&&(this._trackTransceiver=e,this.emit("updated")),this}setSid(e){return null===this.sid&&(this._sid=e,this.emit("updated")),this}},ca}function yc(){if(pa)return ha;pa=1;const e=function(){if(ua)return da;ua=1;const e=bc();return da=class extends e{constructor(e,t,n,i,r,s){super(t,n,i,r),Object.defineProperties(this,{_isSwitchedOff:{value:s,writable:!0}}),this.setSid(e)}get isSubscribed(){return!!this.trackTransceiver}get isSwitchedOff(){return this._isSwitchedOff}subscribeFailed(e){return this.error||(this._error=e,this.emit("updated")),this}setPriority(e){return this._priority!==e&&(this._priority=e,this.emit("updated")),this}setSwitchedOff(e){return this._isSwitchedOff!==e&&(this._isSwitchedOff=e,this.emit("updated")),this}},da}();return ha=class extends e{constructor(e,t){super(e.sid,e.name,e.kind,e.enabled,e.priority,t)}update(e){return this.enable(e.enabled),this.setPriority(e.priority),this}},ha}function kc(){if(ma)return fa;ma=1;const e=function(){if(aa)return oa;aa=1;const e=vc();return oa=class extends e{constructor(e,t){super(),this.connect(e,t)}},oa}(),t=yc();return fa=class extends e{constructor(e,n,i,r,s,o){return super(e.sid,e.identity),o=Object.assign({RemoteTrackPublicationV2:t},o),Object.defineProperties(this,{_revision:{writable:!0,value:null},_RemoteTrackPublicationV2:{value:o.RemoteTrackPublicationV2},_getInitialTrackSwitchOffState:{value:n},updateSubscriberTrackPriority:{value:(e,t)=>i(e,t)},updateTrackRenderHint:{value:(e,t)=>r(e,t)},clearTrackHint:{value:e=>s(e)},revision:{enumerable:!0,get(){return this._revision}}}),this.update(e)}_getOrCreateTrack(e){const t=this._RemoteTrackPublicationV2;let n=this.tracks.get(e.sid);if(!n){n=new t(e,this._getInitialTrackSwitchOffState(e.sid)),this.addTrack(n)}return n}update(e){if(null!==this.revision&&e.revision<=this.revision)return this;this._revision=e.revision;const t=new Set;switch(e.tracks.forEach(e=>{const n=this._getOrCreateTrack(e);n.update(e),t.add(n)}),this.tracks.forEach(e=>{t.has(e)||this.removeTrack(e)}),e.state){case"disconnected":this.disconnect();break;case"reconnecting":this.reconnecting();break;case"connected":this.connect(this.sid,this.identity)}return this}},fa}function wc(){if(Ca)return Ta;Ca=1;const e=function(){if(Ys)return Ks;Ys=1;const e=nc();return Ks=class extends e{constructor(e,t){super(e,"active_speaker",t),Object.defineProperties(this,{_loudestParticipantSid:{value:null,writable:!0}}),this.on("ready",e=>{e.on("message",e=>{"active_speaker"===e.type&&this._setLoudestParticipantSid(e.participant)})})}get loudestParticipantSid(){return this._loudestParticipantSid}_setLoudestParticipantSid(e){this.loudestParticipantSid!==e&&(this._loudestParticipantSid=e,this.emit("updated"))}},Ks}(),t=function(){if(Xs)return Js;Xs=1;const e=nc();return Js=class extends e{constructor(e,t){super(e,"extension_transcriptions",t),this.on("ready",e=>{e.on("message",e=>{"extension_transcriptions"===e.type&&this.emit("transcription",e)})})}},Js}(),n=uc(),i=hc(),r=function(){if(Do)return Mo;Do=1;const e=pc();return Mo=class extends e{constructor(){super(),Object.defineProperties(this,{_revision:{value:1,writable:!0}})}update(e){return e.revision<this._revision?this:(this._revision=e.revision,this.enable(e.is_recording))}}}(),s=function(){if(xo)return Ao;xo=1;const e=q,t=bs(),n=Bi(),{filterObject:i,flatMap:r,difference:s}=ye(),o=Yn();return Ao=class{constructor(e,t,n={}){if(!e||"function"!=typeof e.getStats)throw new Error("StatsMonitor requires a stats source with getStats() method");if(!t)throw new Error("StatsMonitor requires a log instance");this._statsSource=e,this._log=t,this._publishIntervalMs=n.publishIntervalMs||1e4,this._collectionIntervalMs=n.collectionIntervalMs||1e3,this._collectionsPerPublish=Math.floor(this._publishIntervalMs/this._collectionIntervalMs),this._stallThreshold=.5,this._resumeThreshold=5,this._initializeState(),this._startStatsCollection()}_initializeState(){this._movingAverageDeltas=new Map,this._interval=null,this._statsCollectionCount=0,this._iceCandidatePublishToggle=!1,this._hasSeenActivePair=!1,this._lastNetworkType=null,this._lastQualityLimitationReasonByTrackSid=new Map,this._stalledTrackSids=new Set}_startStatsCollection(){this._interval?this._log.warn("StatsMonitor already started"):(this._interval=setInterval(()=>e.__awaiter(this,void 0,void 0,function*(){yield this._collectAndAnalyzeStats()}),this._collectionIntervalMs),this._log.debug("StatsMonitor started"))}_stopStatsCollection(){this._interval&&(clearInterval(this._interval),this._interval=null),this._log.debug("StatsMonitor stopped")}_collectAndAnalyzeStats(){return e.__awaiter(this,void 0,void 0,function*(){try{const e=yield this._statsSource.getStats();this._statsCollectionCount++;const t=this._statsCollectionCount%this._collectionsPerPublish===0;t&&(this._iceCandidatePublishToggle=!this._iceCandidatePublishToggle);const n=t&&this._iceCandidatePublishToggle;this._analyzeStats(e,t,n)}catch(e){}})}_analyzeStats(e,t,n){!e||e instanceof Map&&0===e.size||Array.isArray(e)&&0===e.length||e.forEach((e,i)=>{this._checkNetworkTypeChanges(e),this._checkQualityLimitations(e.localVideoTrackStats),this._checkTrackStalls(e.remoteVideoTrackStats),t&&(this._publishStatsReport(i,e),n&&this._publishActiveIceCandidatePair(i,e))})}_checkNetworkTypeChanges(e){const{activeIceCandidatePair:t}=e;if(!t||!t.localCandidate)return;const n=t.localCandidate.networkType;return n?this._hasSeenActivePair?void(this._lastNetworkType!==n&&(this._log.debug(`Network type changed: ${this._lastNetworkType} -> ${n}`),this._lastNetworkType=n,o.network.typeChanged(n))):(this._hasSeenActivePair=!0,this._lastNetworkType=n,void o.network.typeChanged(n)):void 0}_checkQualityLimitations(e){Array.isArray(e)&&e.forEach(({trackSid:e,qualityLimitationReason:t})=>{if(!e||"string"!=typeof t)return;const n=this._lastQualityLimitationReasonByTrackSid.get(e);n!==t&&(this._log.debug(`Quality limitation reason changed for track ${e}: ${n||"none"} -> ${t}`),this._lastQualityLimitationReasonByTrackSid.set(e,t),o.quality.limitationChanged(e,t))})}_checkTrackStalls(e){Array.isArray(e)&&e.forEach(({trackSid:e,frameRateReceived:t})=>{if(void 0===t)return;const n="number"!=typeof t||isNaN(t)?0:t,i=this._stalledTrackSids.has(e);!i&&n<this._stallThreshold?(this._stalledTrackSids.add(e),this._log.debug(`Track ${e} stalled: frame rate ${n} below threshold ${this._stallThreshold}`),o.track.stalled(e,n,this._stallThreshold)):i&&n>=this._resumeThreshold&&(this._stalledTrackSids.delete(e),this._log.debug(`Track ${e} resumed: frame rate ${n} above threshold ${this._resumeThreshold}`),o.track.resumed(e,n,this._resumeThreshold))})}_addLocalTrackMetrics(e,t){const{framesEncoded:i,packetsSent:r,totalEncodeTime:s,totalPacketSendDelay:o}=t,a=Object.assign({},e),c=`${e.trackSid}+${e.ssrc}`,l=this._movingAverageDeltas.get(c)||new Map;if("number"==typeof s&&"number"==typeof i){const e=l.get("avgEncodeDelay")||new n;e.putSample(1e3*s,i),a.avgEncodeDelay=Math.round(e.get()),l.set("avgEncodeDelay",e)}if("number"==typeof o&&"number"==typeof r){const e=l.get("avgPacketSendDelay")||new n;e.putSample(1e3*o,r),a.avgPacketSendDelay=Math.round(e.get()),l.set("avgPacketSendDelay",e)}return this._movingAverageDeltas.set(c,l),a}_addRemoteTrackMetrics(e,t){const{estimatedPlayoutTimestamp:i,framesDecoded:r,jitterBufferDelay:s,jitterBufferEmittedCount:o,totalDecodeTime:a}=t,c=Object.assign({},e),l=`${e.trackSid}+${e.ssrc}`,d=this._movingAverageDeltas.get(l)||new Map;if("number"==typeof i&&(c.estimatedPlayoutTimestamp=i),"number"==typeof r&&"number"==typeof a){const e=d.get("avgDecodeDelay")||new n;e.putSample(1e3*a,r),c.avgDecodeDelay=Math.round(e.get()),d.set("avgDecodeDelay",e)}if("number"==typeof s&&"number"==typeof o){const e=d.get("avgJitterBufferDelay")||new n;e.putSample(1e3*s,o),c.avgJitterBufferDelay=Math.round(e.get()),d.set("avgJitterBufferDelay",e)}return this._movingAverageDeltas.set(l,d),c}_cleanupMovingAverageDeltas(e){const t=r(["localAudioTrackStats","localVideoTrackStats","remoteAudioTrackStats","remoteVideoTrackStats"],t=>e[t].map(({ssrc:e,trackSid:t})=>`${t}+${e}`));s(Array.from(this._movingAverageDeltas.keys()),t).forEach(e=>this._movingAverageDeltas.delete(e))}_publishStatsReport(e,n){const i=new t(e,n,!0);o.quality.statsReport({audioTrackStats:i.remoteAudioTrackStats.map((e,t)=>this._addRemoteTrackMetrics(e,n.remoteAudioTrackStats[t])),localAudioTrackStats:i.localAudioTrackStats.map((e,t)=>this._addLocalTrackMetrics(e,n.localAudioTrackStats[t])),localVideoTrackStats:i.localVideoTrackStats.map((e,t)=>this._addLocalTrackMetrics(e,n.localVideoTrackStats[t])),peerConnectionId:i.peerConnectionId,videoTrackStats:i.remoteVideoTrackStats.map((e,t)=>this._addRemoteTrackMetrics(e,n.remoteVideoTrackStats[t]))}),this._cleanupMovingAverageDeltas(i)}_publishActiveIceCandidatePair(e,t){const n=this._replaceNullsWithDefaults(t.activeIceCandidatePair,e);o.quality.iceCandidatePair(n)}_replaceNullsWithDefaults(e,t){return(e=Object.assign({availableIncomingBitrate:0,availableOutgoingBitrate:0,bytesReceived:0,bytesSent:0,consentRequestsSent:0,currentRoundTripTime:0,lastPacketReceivedTimestamp:0,lastPacketSentTimestamp:0,nominated:!1,peerConnectionId:t,priority:0,readable:!1,requestsReceived:0,requestsSent:0,responsesReceived:0,responsesSent:0,retransmissionsReceived:0,retransmissionsSent:0,state:"failed",totalRoundTripTime:0,transportId:"",writable:!1},i(e||{},null))).localCandidate=Object.assign({candidateType:"host",deleted:!1,ip:"",port:0,priority:0,protocol:"udp",url:""},i(e.localCandidate||{},null)),e.remoteCandidate=Object.assign({candidateType:"host",ip:"",port:0,priority:0,protocol:"udp",url:""},i(e.remoteCandidate||{},null)),e}cleanup(){this._stopStatsCollection(),this._movingAverageDeltas.clear(),this._lastQualityLimitationReasonByTrackSid.clear(),this._stalledTrackSids.clear()}},Ao}(),o=fc(),a=kc(),c=function(){if(_a)return ga;_a=1;const e=nc();return ga=class extends e{constructor(e,t){super(e,"track_priority",t),Object.defineProperties(this,{_enqueuedPriorityUpdates:{value:new Map}}),this.on("ready",e=>{Array.from(this._enqueuedPriorityUpdates.keys()).forEach(t=>{e.publish({type:"track_priority",track:t,subscribe:this._enqueuedPriorityUpdates.get(t)})})})}sendTrackPriorityUpdate(e,t,n){if("subscribe"!==t)throw new Error("only subscribe priorities are supported, found: "+t);this._enqueuedPriorityUpdates.set(e,n),this._transport&&this._transport.publish({type:"track_priority",track:e,subscribe:n})}},ga}(),l=function(){if(ba)return va;ba=1;const e=nc();return va=class extends e{constructor(e,t){super(e,"track_switch_off",t),this.on("ready",e=>{e.on("message",e=>{"track_switch_off"===e.type&&this._setTrackSwitchOffUpdates(e.off||[],e.on||[])})})}_setTrackSwitchOffUpdates(e,t){this.emit("updated",e,t)}},va}(),d=function(){if(ka)return ya;ka=1;const e=nc(),t=bi(),{isDeepEqual:n}=ye();let i=1;return ya=class extends e{constructor(e,n){super(e,"render_hints",n),Object.defineProperties(this,{_trackSidsToRenderHints:{value:new Map},_responseTimer:{value:new t(()=>{this._sendAllHints(),this._responseTimer.setDelay(2*this._responseTimer.delay)},2e3,!1)}}),this.on("ready",e=>{e.on("message",e=>{this._log.debug("Incoming: ",e),"render_hints"===e.type?this._processHintResults(e&&e.subscriber&&e.subscriber.hints||[]):this._log.warn("Unknown message type: ",e.type)}),this._sendAllHints()})}_sendAllHints(){Array.from(this._trackSidsToRenderHints.keys()).forEach(e=>{const t=this._trackSidsToRenderHints.get(e);t.renderDimensions&&(t.isDimensionDirty=!0),"enabled"in t&&(t.isEnabledDirty=!0)}),this._sendHints()}_processHintResults(e){this._responseTimer.clear(),this._responseTimer.setDelay(2e3),e.forEach(e=>{"OK"!==e.result&&this._log.debug("Server error processing hint:",e)}),this._sendHints()}_sendHints(){if(!this._transport||this._responseTimer.isSet)return;const e=[];if(Array.from(this._trackSidsToRenderHints.keys()).forEach(t=>{const n=this._trackSidsToRenderHints.get(t);if(n.isEnabledDirty||n.isDimensionDirty){const i={track:t};n.isEnabledDirty&&(i.enabled=n.enabled,n.isEnabledDirty=!1),n.isDimensionDirty&&(i.render_dimensions=n.renderDimensions,n.isDimensionDirty=!1),e.push(i)}}),e.length>0){const t={type:"render_hints",subscriber:{id:i++,hints:e}};this._log.debug("Outgoing: ",t),this._transport.publish(t),this._responseTimer.start()}}setTrackHint(e,t){const i=this._trackSidsToRenderHints.get(e)||{isEnabledDirty:!1,isDimensionDirty:!1};"enabled"in t&&i.enabled!==t.enabled&&(i.enabled=!!t.enabled,i.isEnabledDirty=!0),t.renderDimensions&&!n(t.renderDimensions,i.renderDimensions)&&(i.renderDimensions=t.renderDimensions,i.isDimensionDirty=!0),this._trackSidsToRenderHints.set(e,i),this._sendHints()}clearTrackHint(e){this._trackSidsToRenderHints.delete(e)}},ya}(),u=function(){if(Sa)return wa;Sa=1;const e=nc();let t=1;return wa=class extends e{constructor(e,t){super(e,"publisher_hints",t),this.on("ready",e=>{this._log.debug("publisher_hints transport ready:",e),e.on("message",e=>{this._log.debug("Incoming: ",e),"publisher_hints"===e.type?e.publisher&&e.publisher.hints&&e.publisher.id&&this._processPublisherHints(e.publisher.hints,e.publisher.id):this._log.warn("Unknown message type: ",e.type)})})}sendTrackReplaced({trackSid:e}){if(!this._transport)return;const n={type:"client_reset",track:e,id:t++};this._log.debug("Outgoing: ",n),this._transport.publish(n)}sendHintResponse({id:e,hints:t}){if(!this._transport)return;const n={type:"publisher_hints",id:e,hints:t};this._log.debug("Outgoing: ",n),this._transport.publish(n)}_processPublisherHints(e,t){try{this.emit("updated",e,t)}catch(e){this._log.error("error processing hints:",e)}}},wa}(),{constants:{DEFAULT_SESSION_TIMEOUT_SEC:h},createBandwidthProfilePayload:p,defer:f,flatMap:m,oncePerTick:g}=ye(),{createTwilioError:_}=Kn();function v(e,t){return t.reduce((t,n)=>{const i=e.get(n.trackId);return i?[Object.assign({},n,{trackSid:i})].concat(t):t},[])}function b(e,t){return v(e._published,t)}function y(e,t){const n=new Map(Array.from(e._subscribed.entries()).map(([e,t])=>[t,e]));return v(n,t)}return Ta=class extends o{constructor(o,p,f,_,v){p.options=Object.assign({session_timeout:h},p.options),v=Object.assign({DominantSpeakerSignaling:e,TranscriptionSignaling:t,NetworkQualityMonitor:n,NetworkQualitySignaling:i,RecordingSignaling:r,RemoteParticipantV2:a,TrackPrioritySignaling:c,TrackSwitchOffSignaling:l,bandwidthProfile:null,sessionTimeout:1e3*p.options.session_timeout,statsPublishIntervalMs:1e4,statsCollectionIntervalMs:1e3},v),o.setBandwidthProfile(v.bandwidthProfile);const{options:{signaling_region:b,audio_processors:y=[]}}=p;o.setSignalingRegion(b),y.includes("krisp")&&y.push("rnnoise"),o.setAudioProcessors(y),_.setIceReconnectTimeout(v.sessionTimeout),super(o,p.sid,p.name,v);const k=e=>this._getTrackReceiver(e),w=this._log;Object.defineProperties(this,{_disconnectedParticipantRevisions:{value:new Map},_NetworkQualityMonitor:{value:v.NetworkQualityMonitor},_lastBandwidthProfileRevision:{value:o.bandwidthProfileRevision,writable:!0},_mediaStatesWarningsRevision:{value:0,writable:!0},_networkQualityMonitor:{value:null,writable:!0},_networkQualityConfiguration:{value:o.networkQualityConfiguration},_peerConnectionManager:{value:_},_published:{value:new Map},_publishedRevision:{value:0,writable:!0},_RemoteParticipantV2:{value:v.RemoteParticipantV2},_subscribed:{value:new Map},_subscribedRevision:{value:0,writable:!0},_subscriptionFailures:{value:new Map},_dominantSpeakerSignaling:{value:new v.DominantSpeakerSignaling(k,{log:w})},_transcriptionSignaling:{value:new v.TranscriptionSignaling(k,{log:w})},_networkQualitySignaling:{value:new v.NetworkQualitySignaling(k,o.networkQualityConfiguration,{log:w})},_renderHintsSignaling:{value:new d(k,{log:w})},_publisherHintsSignaling:{value:new u(k,{log:w})},_trackPrioritySignaling:{value:new v.TrackPrioritySignaling(k,{log:w})},_trackSwitchOffSignaling:{value:new v.TrackSwitchOffSignaling(k,{log:w})},_pendingSwitchOffStates:{value:new Map},_statsMonitor:{value:v.eventObserver&&v.insights?new s(this,w,{publishIntervalMs:v.statsPublishIntervalMs,collectionIntervalMs:v.statsCollectionIntervalMs}):null},_transport:{value:f},_trackReceiverDeferreds:{value:new Map},mediaRegion:{enumerable:!0,value:p.options.media_region||null}}),this._initTrackSwitchOffSignaling(),this._initDominantSpeakerSignaling(),this._initTranscriptionSignaling(),this._initNetworkQualityMonitorSignaling(),this._initPublisherHintSignaling(),function(e,t){const n=g(()=>{e._publishNewLocalParticipantState()}),i=g(()=>{const n=m(t.tracks,e=>e.trackTransceiver);e._peerConnectionManager.setTrackSenders(n)});t.on("trackAdded",i),t.on("trackRemoved",i),t.on("updated",n),e.on("stateChanged",function r(s){"disconnected"===s&&(t.removeListener("trackAdded",i),t.removeListener("trackRemoved",i),t.removeListener("updated",n),e.removeListener("stateChanged",r),t.disconnect())}),e.on("signalingConnectionStateChanged",()=>{const{localParticipant:t,signalingConnectionState:n}=e,{identity:i,sid:r}=t;switch(n){case"connected":t.connect(r,i);break;case"reconnecting":t.reconnecting()}})}(this,o),function(e,t){t.on("description",function(t){e._publishPeerConnectionState(t)}),t.dequeue("description"),t.on("candidates",function(t){e._publishPeerConnectionState(t)}),t.dequeue("candidates"),t.on("trackAdded",e._addTrackReceiver.bind(e)),t.dequeue("trackAdded"),t.getTrackReceivers().forEach(e._addTrackReceiver,e),t.on("connectionStateChanged",()=>{e.emit("connectionStateChanged")}),t.on("iceConnectionStateChanged",()=>{e.emit("iceConnectionStateChanged"),"failed"===e.iceConnectionState&&(null!==e.localParticipant.networkQualityLevel&&e.localParticipant.setNetworkQualityLevel(0),e.participants.forEach(e=>{null!==e.networkQualityLevel&&e.setNetworkQualityLevel(0)}))})}(this,_),function(e,t){t.on("message",e._update.bind(e)),t.on("stateChanged",function n(i,r){"disconnected"===i&&("disconnected"!==e.state&&e._disconnect(r),t.removeListener("stateChanged",n)),e.emit("signalingConnectionStateChanged")})}(this,f),this._statsMonitor&&this.on("stateChanged",e=>{"disconnected"===e&&this._statsMonitor&&this._statsMonitor.cleanup()}),this._update(p),this._peerConnectionManager.setEffectiveAdaptiveSimulcast(this._publisherHintsSignaling.isSetup)}get connectionState(){return this._peerConnectionManager.connectionState}get signalingConnectionState(){return"syncing"===this._transport.state?"reconnecting":this._transport.state}get iceConnectionState(){return this._peerConnectionManager.iceConnectionState}_deleteTrackReceiverDeferred(e){return this._trackReceiverDeferreds.delete(e)}_getOrCreateTrackReceiverDeferred(e){const t=this._trackReceiverDeferreds.get(e)||f(),n=this._peerConnectionManager.getTrackReceivers().find(t=>t.id===e&&"ended"!==t.readyState);return n?t.resolve(n):this._trackReceiverDeferreds.set(e,t),t}_addTrackReceiver(e){return this._getOrCreateTrackReceiverDeferred(e.id).resolve(e),this}_disconnect(e){const t=super._disconnect.call(this,e);return t&&(this._teardownNetworkQualityMonitor(),this._transport.disconnect(),this._peerConnectionManager.close()),this.localParticipant.tracks.forEach(t=>{t.publishFailed(e||new Error("LocalParticipant disconnected"))}),t}_getTrackReceiver(e){return this._getOrCreateTrackReceiverDeferred(e).promise.then(t=>(this._deleteTrackReceiverDeferred(e),t))}_getInitialTrackSwitchOffState(e){const t=this._pendingSwitchOffStates.get(e)||!1;return this._pendingSwitchOffStates.delete(e),t&&this._log.warn(`[${e}] was initially switched off! `),t}_getTrackSidsToTrackSignalings(){const e=m(this.participants,e=>Array.from(e.tracks));return new Map(e)}_getOrCreateRemoteParticipant(e){const t=this._RemoteParticipantV2;let n=this.participants.get(e.sid);const i=this;return n||(n=new t(e,e=>this._getInitialTrackSwitchOffState(e),(e,t)=>this._trackPrioritySignaling.sendTrackPriorityUpdate(e,"subscribe",t),(e,t)=>this._renderHintsSignaling.setTrackHint(e,t),e=>this._renderHintsSignaling.clearTrackHint(e)),n.on("stateChanged",function e(t){"disconnected"===t&&(n.removeListener("stateChanged",e),i.participants.delete(n.sid),i._disconnectedParticipantRevisions.set(n.sid,n.revision))}),this.connectParticipant(n)),n}_getState(){return{participant:this.localParticipant.getState()}}_maybeAddBandwidthProfile(e){const{bandwidthProfile:t,bandwidthProfileRevision:n}=this.localParticipant;return t&&this._lastBandwidthProfileRevision<n?(this._lastBandwidthProfileRevision=n,Object.assign({bandwidth_profile:p(t)},e)):e}_publishNewLocalParticipantState(){this._transport.publish(this._maybeAddBandwidthProfile(this._getState()))}_publishPeerConnectionState(e){this._transport.publish(Object.assign({peer_connections:[e]},this._getState()))}_update(e){if(e.subscribed&&e.subscribed.revision>this._subscribedRevision){this._subscribedRevision=e.subscribed.revision,e.subscribed.tracks.forEach(e=>{e.id?(this._subscriptionFailures.delete(e.sid),this._subscribed.set(e.sid,e.id)):e.error&&!this._subscriptionFailures.has(e.sid)&&this._subscriptionFailures.set(e.sid,e.error)});const t=new Set(e.subscribed.tracks.filter(e=>!!e.id).map(e=>e.sid));this._subscribed.forEach((e,n)=>{t.has(n)||this._subscribed.delete(n)})}const t=new Set;return(e.participants||[]).forEach(e=>{if(e.sid===this.localParticipant.sid)return;const n=this._disconnectedParticipantRevisions.get(e.sid);if(n&&e.revision<=n)return;n&&this._disconnectedParticipantRevisions.delete(e.sid);const i=this._getOrCreateRemoteParticipant(e);i.update(e),t.add(i)}),"synced"===e.type&&this.participants.forEach(e=>{t.has(e)||e.disconnect()}),function(e){const t=e._getTrackSidsToTrackSignalings();e._subscriptionFailures.forEach((n,i)=>{const r=t.get(i);r&&(e._subscriptionFailures.delete(i),r.subscribeFailed(_(n.code,n.message)))}),t.forEach(t=>{const n=e._subscribed.get(t.sid);(!n||t.isSubscribed&&t.trackTransceiver.id!==n)&&t.setTrackTransceiver(null),n&&e._getTrackReceiver(n).then(e=>t.setTrackTransceiver(e))})}(this),e.peer_connections&&this._peerConnectionManager.update(e.peer_connections,"synced"===e.type),e.recording&&this.recording.update(e.recording),e.published&&e.published.revision>this._publishedRevision&&(this._publishedRevision=e.published.revision,e.published.tracks.forEach(e=>{e.sid&&this._published.set(e.id,e.sid)}),this.localParticipant.update(e.published)),e.participant&&this.localParticipant.connect(e.participant.sid,e.participant.identity),[this._dominantSpeakerSignaling,this._transcriptionSignaling,this._networkQualitySignaling,this._trackPrioritySignaling,this._trackSwitchOffSignaling,this._renderHintsSignaling,this._publisherHintsSignaling].forEach(t=>{const n=t.channel;!t.isSetup&&e.media_signaling&&e.media_signaling[n]&&e.media_signaling[n].transport&&"data-channel"===e.media_signaling[n].transport.type&&t.setup(e.media_signaling[n].transport.label)}),"warning"===e.type&&e.states&&e.states.revision>this._mediaStatesWarningsRevision&&(this._mediaStatesWarningsRevision=e.states.revision,this.localParticipant.updateMediaStates(e.states)),this}_initPublisherHintSignaling(){this._publisherHintsSignaling.on("updated",(e,t)=>{Promise.all(e.map(e=>this.localParticipant.setPublisherHint(e.track,e.encodings).then(t=>({track:e.track,result:t})))).then(e=>{this._publisherHintsSignaling.sendHintResponse({id:t,hints:e})})});const e=e=>{"video"===e.kind&&e.trackTransceiver.on("replaced",()=>{this._publisherHintsSignaling.sendTrackReplaced({trackSid:e.sid})})};Array.from(this.localParticipant.tracks.values()).forEach(t=>e(t)),this.localParticipant.on("trackAdded",t=>e(t))}_initTrackSwitchOffSignaling(){this._trackSwitchOffSignaling.on("updated",(e,t)=>{try{this._log.debug("received trackSwitch: ",{tracksOn:t,tracksOff:e});const n=new Map;t.forEach(e=>n.set(e,!0)),e.forEach(e=>{n.get(e)&&this._log.warn(`${e} is DUPLICATED in both tracksOff and tracksOn list`),n.set(e,!1)}),this.participants.forEach(e=>{e.tracks.forEach(e=>{const t=n.get(e.sid);void 0!==t&&(e.setSwitchedOff(!t),n.delete(e.sid))})}),n.forEach((e,t)=>this._pendingSwitchOffStates.set(t,!e))}catch(e){this._log.error("error processing track switch off:",e)}})}_initDominantSpeakerSignaling(){this._dominantSpeakerSignaling.on("updated",()=>this.setDominantSpeaker(this._dominantSpeakerSignaling.loudestParticipantSid))}_initTranscriptionSignaling(){this._transcriptionSignaling.on("transcription",e=>{this.emit("transcription",e)})}_initNetworkQualityMonitorSignaling(){this._networkQualitySignaling.on("ready",()=>{const e=new this._NetworkQualityMonitor(this._peerConnectionManager,this._networkQualitySignaling);this._networkQualityMonitor=e,e.on("updated",()=>{"failed"!==this.iceConnectionState&&(this.localParticipant.setNetworkQualityLevel(e.level,e.levels),this.participants.forEach(t=>{const n=e.remoteLevels.get(t.sid);n&&t.setNetworkQualityLevel(n.level,n)}))}),e.start()}),this._networkQualitySignaling.on("teardown",()=>this._teardownNetworkQualityMonitor())}_teardownNetworkQualityMonitor(){this._networkQualityMonitor&&(this._networkQualityMonitor.stop(),this._networkQualityMonitor=null)}getStats(){return this._peerConnectionManager.getStats().then(e=>new Map(Array.from(e).map(([e,t])=>[e,Object.assign({},t,{localAudioTrackStats:b(this,t.localAudioTrackStats),localVideoTrackStats:b(this,t.localVideoTrackStats),remoteAudioTrackStats:y(this,t.remoteAudioTrackStats),remoteVideoTrackStats:y(this,t.remoteVideoTrackStats)})])))}},Ta}function Sc(){if(Ea)return Pa;Ea=1;const e=vi(),t=ki(),n=Ss(),{reconnectBackoffConfig:i}=ne(),r=bi(),{SDK_NAME:s,SDK_VERSION:o,SDP_FORMAT:a}=ne(),{createBandwidthProfilePayload:c,createMediaSignalingPayload:l,createMediaWarningsPayload:d,createSubscribePayload:u,getUserAgent:h,isNonArrayObject:p}=ye(),{createTwilioError:f,RoomCompletedError:m,SignalingConnectionError:g,SignalingServerBusyError:_}=Kn(),v={connecting:["connected","disconnected"],connected:["disconnected","syncing"],syncing:["connected","disconnected"],disconnected:[]};function b(e){return Array.from(e.reduce((e,t)=>{const n=e.get(t.id)||t;return(!n.description&&t.description||n.description&&t.description&&t.description.revision>n.description.revision)&&(n.description=t.description),(!n.ice&&t.ice||n.ice&&t.ice&&t.ice.revision>n.ice.revision)&&(n.ice=t.ice),e.set(n.id,n),e},new Map).values())}return Pa=class extends e{constructor(e,r,s,o,a,c){c=Object.assign({Backoff:n,TwilioConnection:t,iceServers:null,trackPriority:!0,trackSwitchOff:!0,renderHints:!0,userAgent:h()},c),super("connecting",v),Object.defineProperties(this,{_accessToken:{value:r},_adaptiveSimulcast:{value:c.adaptiveSimulcast},_automaticSubscription:{value:c.automaticSubscription},_bandwidthProfile:{value:c.bandwidthProfile},_dominantSpeaker:{value:c.dominantSpeaker},_receiveTranscriptions:{value:c.receiveTranscriptions},_eventObserver:{value:c.eventObserver,writable:!1},_renderHints:{value:c.renderHints},_iceServersStatus:{value:Array.isArray(c.iceServers)?"overrode":"acquire"},_localParticipant:{value:s},_name:{value:e},_networkQuality:{value:p(c.networkQuality)||c.networkQuality},_notifyWarnings:{value:c.notifyWarnings},_options:{value:c},_peerConnectionManager:{value:o},_sessionTimer:{value:null,writable:!0},_sessionTimeoutMS:{value:0,writable:!0},_reconnectBackoff:{value:new c.Backoff(i)},_session:{value:null,writable:!0},_trackPriority:{value:c.trackPriority},_trackSwitchOff:{value:c.trackSwitchOff},_twilioConnection:{value:null,writable:!0},_updatesReceived:{value:[]},_updatesToSend:{value:[]},_userAgent:{value:c.userAgent},_wsServer:{value:a}}),function(e){function n(){if("disconnected"===e.state)return;e._twilioConnection&&e._twilioConnection.removeListener("message",r);const{_iceServersStatus:t,_options:n,_wsServer:s,state:o}=e,{TwilioConnection:a}=n,c=new a(s,Object.assign({helloBody:"connecting"===o&&"acquire"===t?e._createIceMessage():e._createConnectOrSyncOrDisconnectMessage()},n));c.once("close",e=>{e===a.CloseReason.LOCAL?i():i(new Error(e))}),c.on("message",r),e._twilioConnection=c}function i(i){if("disconnected"===e.state)return;if(!i)return void e.disconnect();const r=e._getReconnectTimer();if(!r){const n=i.message===t.CloseReason.BUSY?new _:new g;return void e.disconnect(n)}"connected"===e.state&&e.preempt("syncing"),r.then(n)}function r(t){if("disconnected"!==e.state)if("error"!==t.type)switch(e.state){case"connected":switch(t.type){case"connected":case"synced":case"update":case"warning":return void e.emit("message",t);case"disconnected":return void e.disconnect("completed"===t.status?new m:null);default:return}case"connecting":switch(t.type){case"iced":return void e._options.onIced(t.ice_servers).then(()=>{e._sendConnectOrSyncOrDisconnectMessage()});case"connected":return e._setSession(t.session,t.options.session_timeout),e.emit("connected",t),void e.preempt("connected");case"synced":case"update":return void e._updatesReceived.push(t);case"disconnected":return void e.disconnect("completed"===t.status?new m:null);default:return}case"syncing":switch(t.type){case"connected":case"update":return void e._updatesReceived.push(t);case"synced":return e._clearReconnectTimer(),e.emit("message",t),void e.preempt("connected");case"disconnected":return void e.disconnect("completed"===t.status?new m:null);default:return}default:return}else e.disconnect(f(t.code,t.message))}e.on("stateChanged",function t(n){switch(n){case"connected":{const t=e._updatesToSend.splice(0);return t.length&&e.publish(function(e){return e.reduce((e,t)=>((!e.participant&&t.participant||e.participant&&t.participant&&t.participant.revision>e.participant.revision)&&(e.participant=t.participant),!e.peer_connections&&t.peer_connections?e.peer_connections=b(t.peer_connections):e.peer_connections&&t.peer_connections&&(e.peer_connections=b(e.peer_connections.concat(t.peer_connections))),e),{})}(t)),void e._updatesReceived.splice(0).forEach(t=>e.emit("message",t))}case"disconnected":return e._twilioConnection.removeListener("message",r),void e.removeListener("stateChanged",t);default:return}});const{_options:s,_iceServersStatus:o}=e,{iceServers:a,onIced:c}=s;"overrode"===o?c(a).then(n):n()}(this)}_createConnectOrSyncOrDisconnectMessage(){if("connected"===this.state)return null;if("disconnected"===this.state)return{session:this._session,type:"disconnect",version:2};const e={connecting:"connect",syncing:"sync"}[this.state],t={name:this._name,participant:this._localParticipant.getState(),peer_connections:this._peerConnectionManager.getStates(),type:e,version:2};return"connect"===t.type?(t.ice_servers=this._iceServersStatus,t.publisher={name:s,sdk_version:o,user_agent:this._userAgent},this._bandwidthProfile&&(t.bandwidth_profile=c(this._bandwidthProfile)),this._notifyWarnings&&(t.participant.media_warnings=d(this._notifyWarnings)),t.media_signaling=l(this._dominantSpeaker,this._networkQuality,this._trackPriority,this._trackSwitchOff,this._adaptiveSimulcast,this._renderHints,this._receiveTranscriptions),t.subscribe=u(this._automaticSubscription),t.format=a,t.token=this._accessToken):"sync"===t.type?(t.session=this._session,t.token=this._accessToken):"update"===t.type&&(t.session=this._session),t}_createIceMessage(){return{edge:"roaming",token:this._accessToken,type:"ice",version:1}}_sendConnectOrSyncOrDisconnectMessage(){const e=this._createConnectOrSyncOrDisconnectMessage();e&&this._twilioConnection.sendMessage(e)}disconnect(e){return"disconnected"!==this.state&&(this.preempt("disconnected",null,[e]),this._sendConnectOrSyncOrDisconnectMessage(),this._twilioConnection.close(),!0)}publish(e){switch(this.state){case"connected":return this._twilioConnection.sendMessage(Object.assign({session:this._session,type:"update",version:2},e)),!0;case"connecting":case"syncing":return this._updatesToSend.push(e),!0;default:return!1}}publishEvent(e,t,n,i){this._eventObserver.emit("event",{group:e,name:t,level:n,payload:i})}sync(){return"connected"===this.state&&(this.preempt("syncing"),this._sendConnectOrSyncOrDisconnectMessage(),!0)}_setSession(e,t){this._session=e,this._sessionTimeoutMS=1e3*t}_getReconnectTimer(){return 0===this._sessionTimeoutMS?null:(this._sessionTimer||(this._sessionTimer=new r(()=>{this._sessionTimer&&(this._sessionTimeoutMS=0)},this._sessionTimeoutMS)),new Promise(e=>{this._reconnectBackoff.backoff(e)}))}_clearReconnectTimer(){this._reconnectBackoff.reset(),this._sessionTimer&&(this._sessionTimer.clear(),this._sessionTimer=null)}},Pa}function Tc(){if(xa)return Aa;xa=1;const e=function(){if(Da)return Ma;Da=1;const e=bc();return Ma=class extends e{constructor(e,t,n){const i=e.clone();"data"!==e.kind&&(i.track.enabled=e.track.enabled);const r="data"===(e=i).kind||e.track.enabled;super(t,e.kind,r,n),this.setTrackTransceiver(e),Object.defineProperties(this,{_updatedPriority:{value:n,writable:!0},id:{enumerable:!0,value:e.id}})}get updatedPriority(){return this._updatedPriority}enable(e){return e="boolean"!=typeof e||e,this.trackTransceiver.track.enabled=e,super.enable(e)}publishFailed(e){return function(e,t){return null===e._sid&&!e._error&&(e._error=t,!0)}(this,e)&&this.emit("updated"),this}setPriority(e){return this._updatedPriority!==e&&(this._updatedPriority=e,this.emit("updated")),this}setSid(e){return this._error?this:super.setSid.call(this,e)}stop(){this.trackTransceiver.stop()}},Ma}(),t=be(),n=Kn().createTwilioError;return Aa=class extends e{constructor(e,t,n,i,r){super(e,t,n),Object.defineProperties(this,{_log:{value:r.log.createLog("default",this)},_mediaStates:{value:{recordings:null},writable:!0},_noiseCancellationVendor:{value:i}})}getState(){const e={enabled:this.isEnabled,id:this.id,kind:this.kind,name:this.name,priority:this.updatedPriority};return this._noiseCancellationVendor&&(e.audio_processor=this._noiseCancellationVendor),e}toString(){return`[LocalTrackPublicationV2: ${this.sid}]`}update(e){switch(e.state){case"ready":this.setSid(e.sid);break;case"failed":{const t=e.error;this.publishFailed(n(t.code,t.message));break}}return this}updateMediaStates(e){if(!e||!e.recordings||this._mediaStates.recordings===e.recordings)return this;switch(this._mediaStates.recordings=e.recordings,this._mediaStates.recordings){case"OK":this._log.info("Warnings have cleared."),this.emit("warningsCleared");break;case"NO_MEDIA":this._log.warn("Recording media lost."),this.emit("warning",t.recordingMediaLost);break;default:this._log.warn(`Unknown media state detected: ${this._mediaStates.recordings}`)}return this}},Aa}function Cc(){if($a)return ja;$a=1;const e=function(){if(Ia)return Ra;Ia=1;const e=vc();return Ra=class extends e{constructor(){super(),Object.defineProperties(this,{_publicationsToTrackSenders:{value:new Map},_trackSendersToPublications:{value:new Map}})}addTrack(e,t,n,i=null){const r=this._createLocalTrackPublicationSignaling(e,t,n,i);return this._trackSendersToPublications.set(e,r),this._publicationsToTrackSenders.set(r,e),super.addTrack(r),this}getPublication(e){return this._trackSendersToPublications.get(e)||null}getSender(e){return this._publicationsToTrackSenders.get(e)||null}removeTrack(e){const t=this._trackSendersToPublications.get(e);return t?(this._trackSendersToPublications.delete(e),this._publicationsToTrackSenders.delete(t),super.removeTrack(t)&&t.stop(),t):null}},Ra}(),t=Tc(),{DEFAULT_LOG_LEVEL:n}=ne(),i=ie(),{buildLogLevels:r,isDeepEqual:s}=ye();return ja=class extends e{constructor(e,s,o){o=Object.assign({logLevel:n,LocalTrackPublicationV2:t},o),super();const a=r(o.logLevel);Object.defineProperties(this,{_bandwidthProfile:{value:null,writable:!0},_bandwidthProfileRevision:{value:0,writable:!0},_encodingParameters:{value:e},_removeListeners:{value:new Map},_LocalTrackPublicationV2:{value:o.LocalTrackPublicationV2},_log:{value:o.log?o.log.createLog("default",this):new i("default",this,a,o.loggerName)},_publishedRevision:{writable:!0,value:0},_revision:{writable:!0,value:1},_signalingRegion:{value:null,writable:!0},audioProcessors:{value:[],writable:!0},bandwidthProfile:{enumerable:!0,get(){return this._bandwidthProfile}},bandwidthProfileRevision:{enumerable:!0,get(){return this._bandwidthProfileRevision}},networkQualityConfiguration:{enumerable:!0,value:s},revision:{enumerable:!0,get(){return this._revision}},signalingRegion:{enumerable:!0,get(){return this._signalingRegion}}})}toString(){return`[LocalParticipantSignaling: ${this.sid}]`}setSignalingRegion(e){this._signalingRegion||(this._signalingRegion=e)}setBandwidthProfile(e){s(this._bandwidthProfile,e)||(this._bandwidthProfile=JSON.parse(JSON.stringify(e)),this._bandwidthProfileRevision++,this.didUpdate())}setAudioProcessors(e){this.audioProcessors=e}getParameters(){return this._encodingParameters}setParameters(e){return this._encodingParameters.update(e),this}update(e){return this._publishedRevision>=e.revision||(this._publishedRevision=e.revision,e.tracks.forEach(function(e){const t=this.tracks.get(e.id);t&&t.update(e)},this)),this}updateMediaStates(e){return e&&e.tracks?(Array.from(this.tracks.values()).forEach(t=>{const n=e.tracks[t.sid];n&&t.updateMediaStates(n)}),this):this}_createLocalTrackPublicationSignaling(e,t,n,i){return new this._LocalTrackPublicationV2(e,t,n,i,{log:this._log})}addTrack(e,t,n,i){super.addTrack(e,t,n,i);const r=this.getPublication(e);let{isEnabled:s,updatedPriority:o}=r;const a=()=>{s===r.isEnabled&&o===r.updatedPriority||(this.didUpdate(),s=r.isEnabled,o=r.updatedPriority)};return r.on("updated",a),this._removeListener(r),this._removeListeners.set(r,()=>r.removeListener("updated",a)),this.didUpdate(),this}_removeListener(e){const t=this._removeListeners.get(e);t&&t()}getState(){return{revision:this.revision,tracks:Array.from(this.tracks.values()).map(e=>e.getState())}}didUpdate(){this._revision++,this.emit("updated")}removeTrack(e){const t=super.removeTrack(e);return t&&(e.removeClone(t.trackTransceiver),this._removeListener(t),this.didUpdate()),t}setNetworkQualityConfiguration(e){this.networkQualityConfiguration.update(e)}setPublisherHint(e,t){const n=Array.from(this.tracks.values()).find(t=>t.sid===e);return n?n.trackTransceiver.setPublisherHint(t):(this._log.warn(`track:${e} not found`),Promise.resolve("UNKNOWN_TRACK"))}},ja}function Pc(){if(Ba)return Fa;Ba=1;const e=function(){if(La)return Oa;La=1;const e=qi(),t=tc(),n=wc(),i=Sc(),{SignalingConnectionDisconnectedError:r,SignalingIncomingMessageInvalidError:s}=Kn(),{flatMap:o,createRoomConnectingEventPayload:a}=ye();return Oa=function(c,l,d,u,h,p){p=Object.assign({PeerConnectionManager:t,RoomV2:n,Transport:i},p);const f=h.video[0]&&!0===h.video[0].adaptiveSimulcast,{PeerConnectionManager:m,RoomV2:g,Transport:_,iceServers:v,log:b}=p,y=new m(u,h,p),k=o(d.tracks,e=>[e.trackTransceiver]);y.setTrackSenders(k);const w=new Error("Canceled");let S;const T=new e((e,t,n)=>{const{automaticSubscription:i,bandwidthProfile:o,dominantSpeaker:u,receiveTranscriptions:h,environment:m,eventObserver:k,loggerName:T,logLevel:C,name:P,networkMonitor:E,networkQuality:O,notifyWarnings:L,realm:R,sdpSemantics:I}=p,M=!!o,D=!!o,A=!!o&&("disabled"!==p.clientTrackSwitchOffControl||"disabled"!==p.contentPreferencesMode),x=Object.assign({adaptiveSimulcast:f,automaticSubscription:i,dominantSpeaker:u,receiveTranscriptions:h,environment:m,eventObserver:k,loggerName:T,logLevel:C,networkMonitor:E,networkQuality:O,notifyWarnings:L,iceServers:v,onIced:e=>n()?(t(w),Promise.reject(w)):(b.debug("Got ICE servers:",e),p.iceServers=e,y.setConfiguration(p),y.createAndOffer().then(()=>{if(n())throw t(w),w;b.debug("createAndOffer() succeeded."),y.dequeue("description")}).catch(e=>{throw b.error("createAndOffer() failed:",e),t(e),e})),realm:R,renderHints:A,sdpSemantics:I,trackPriority:M,trackSwitchOff:D},o?{bandwidthProfile:o}:{});S=new _(P,c,d,y,l,x);const j=a(p);k.emit("event",j),S.once("connected",i=>{if(b.debug("Transport connected:",i),n())return void t(w);const{participant:r}=i;r?e(new g(d,i,S,y,p)):t(new s)}),S.once("stateChanged",(e,n)=>{"disconnected"===e?(S=null,t(n||new r)):b.debug("Transport state changed:",e)})},()=>{S&&(S.disconnect(),S=null)});return T.catch(()=>{S&&(S.disconnect(),S=null),y.close()}),T},Oa}(),t=Cc(),n=function(){if(Va)return Na;Va=1;const e=vc(),t=fc(),n=vi(),i={closed:["opening"],opening:["closed","open"],open:["closed","closing"],closing:["closed","open"]};return Na=class extends n{constructor(){super("closed",i)}_close(e){return this.transition("closing",e),this.transition("closed",e),Promise.resolve(this)}_connect(e,n,i,r,s){e.connect("PA00000000000000000000000000000000","test");const o=Promise.resolve(new t(e,"RM00000000000000000000000000000000",s));return o.cancel=function(){},o}_open(e){return this.transition("opening",e),this.transition("open",e),Promise.resolve(this)}close(){return this.bracket("close",e=>{switch(this.state){case"closed":return this;case"open":return this._close(e);default:throw new Error(`Unexpected Signaling state "${this.state}"`)}})}connect(e,t,n,i,r){const s=this;return this.bracket("connect",function o(a){switch(s.state){case"closed":return s._open(a).then(o.bind(null,a));case"open":return s.releaseLockCompletely(a),s._connect(e,t,n,i,r);default:throw new Error(`Unexpected Signaling state "${s.state}"`)}})}createLocalParticipantSignaling(){return new e}open(){return this.bracket("open",e=>{switch(this.state){case"closed":return this._open(e);case"open":return this;default:throw new Error(`Unexpected Signaling state "${this.state}"`)}})}}}();return Fa=class extends n{constructor(t,n){n=Object.assign({createCancelableRoomSignalingPromise:e},n),super(),Object.defineProperties(this,{_createCancelableRoomSignalingPromise:{value:n.createCancelableRoomSignalingPromise},_options:{value:n},_wsServer:{value:t}})}_connect(e,t,n,i,r){return r=Object.assign({},this._options,r),this._createCancelableRoomSignalingPromise.bind(null,t,this._wsServer,e,n,i,r)}createLocalParticipantSignaling(e,n){return new t(e,n)}}}function Ec(){if(Ha)return Ua;Ha=1;const{guessBrowser:e,guessBrowserVersion:t,isCodecSupported:n}=ce(),i=function(){if($i)return ji;$i=1;const e=qi();return ji=function(t,n,i,r){let s;const o=new Error("Canceled");return new e(function(a,c,l){let d;t(function(t){return l()?e.reject(o):(d=n(t),i(d).then(function(e){if(l())throw o;return s=e(),s}))}).then(function(e){if(l())throw e.disconnect(),o;a(r(d,e))}).catch(function(e){c(e)})},function(){s&&s.cancel()})}}(),r=function(){if(Vi)return Ni;Vi=1;const e=Re().EventEmitter;return Ni=class extends e{constructor(e,t){super(),e=Object.assign({maxAudioBitrate:null,maxVideoBitrate:null},e),Object.defineProperties(this,{maxAudioBitrate:{value:e.maxAudioBitrate,writable:!0},maxVideoBitrate:{value:e.maxVideoBitrate,writable:!0},adaptiveSimulcast:{value:t}})}toJSON(){return{maxAudioBitrate:this.maxAudioBitrate,maxVideoBitrate:this.maxVideoBitrate}}update(e){e=Object.assign({maxAudioBitrate:this.maxAudioBitrate,maxVideoBitrate:this.maxVideoBitrate},e),["maxAudioBitrate","maxVideoBitrate"].reduce((t,n)=>(this[n]!==e[n]&&(this[n]=e[n],t=!0),t),!1)&&this.emit("changed")}}}(),s=ms(),o=Hi(),a=Pr?Cr:(Pr=1,Cr=class{constructor(){Object.defineProperties(this,{_connected:{writable:!0,value:!0}})}connect(){}disconnect(){return!!this._connected&&(this._connected=!1,!0)}publish(){return this._connected}}),{LocalAudioTrack:c,LocalDataTrack:l,LocalVideoTrack:d}=Vn(),u=function(){if(Or)return Er;Or=1;const{EventEmitter:e}=Re(),{DEFAULT_NQ_LEVEL_LOCAL:t,DEFAULT_NQ_LEVEL_REMOTE:n,MAX_NQ_LEVEL:i}=ne(),{inRange:r}=ye();return Er=class extends e{constructor(e){super(),e=Object.assign({local:t,remote:n},e),Object.defineProperties(this,{local:{value:r(e.local,t,i)?e.local:t,writable:!0},remote:{value:r(e.remote,n,i)?e.remote:n,writable:!0}})}update(e){e=Object.assign({local:this.local,remote:this.remote},e),[["local",t,3],["remote",n,3]].forEach(([t,n,i])=>{this[t]="number"==typeof e[t]&&r(e[t],n,i)?e[t]:n})}}}(),h=ws(),p=Pc(),{asLocalTrack:f,buildLogLevels:m,createRoomConnectedEventPayload:g,filterObject:_,isNonArrayObject:v}=ye(),{DEFAULT_ENVIRONMENT:b,DEFAULT_LOG_LEVEL:y,DEFAULT_LOGGER_NAME:k,DEFAULT_REALM:w,DEFAULT_REGION:S,WS_SERVER:T,SDK_NAME:C,SDK_VERSION:P,typeErrors:E}=ne(),O=qi(),L=Ui(),R=ie(),{validateBandwidthProfile:I}=cs(),M=Yn(),D="safari"===e()&&t();let A=0,x=!1,j=!1;if(D){const{major:e,minor:t}=D;j=e<12||12===e&&t<1}const $=new Set([{didWarn:!1,shouldDelete:!0,name:"abortOnIceServersTimeout"},{didWarn:!1,shouldDelete:!0,name:"dscpTagging",newName:"enableDscp"},{didWarn:!1,shouldDelete:!0,name:"iceServersTimeout"},{didWarn:!1,shouldDelete:!1,name:"eventListener",newName:"Video.Logger"},{didWarn:!1,shouldDelete:!1,name:"logLevel",newName:"Video.Logger"}]),N=new Set([{didWarn:!1,shouldDelete:!1,name:"maxTracks",newName:"bandwidthProfile.video.clientTrackSwitchOffControl"},{didWarn:!1,shouldDelete:!1,name:"renderDimensions",newName:"bandwidthProfile.video.contentPreferencesMode"}]);function V(e,t,n){n.forEach(n=>{const{didWarn:i,name:r,newName:s,shouldDelete:o}=n;r in e&&void 0!==e[r]&&(s&&o&&(e[s]=e[r]),o&&delete e[r],i||["error","off"].includes(t.level)||(t.warn(`The ConnectOptions "${r}" is ${s?`deprecated and scheduled for removal. Please use "${s}" instead.`:"no longer applicable and will be ignored."}`),n.didWarn=!0))})}function F(e,t,n,i,r,s){const o=e.createLocalParticipantSignaling(n,i);return t.debug("Creating a new LocalParticipant:",o),new r.LocalParticipant(o,s,r)}function B(e,t,n){const i=new h(t,n,e),r=e.log;return r.debug("Creating a new Room:",i),n.on("stateChanged",function e(t){"disconnected"===t&&(r.info("Disconnected from Room:",i.toString()),n.removeListener("stateChanged",e))}),i}function U(e,t,n,i,r,s){return t.log.debug("Creating a new RoomSignaling"),n.connect(s._signaling,e,i,r,t)}function H(e,t){const n=e.log;return e.shouldStopLocalTracks=!e.tracks,e.shouldStopLocalTracks?n.info("LocalTracks were not provided, so they will be acquired automatically before connecting to the Room. LocalTracks will be released if connecting to the Room fails or if the Room is disconnected"):(n.info("Getting LocalTracks"),n.debug("Options:",e)),e.createLocalTracks(e).then(function(i){const r=t(i);return r.catch(function(){e.shouldStopLocalTracks&&(n.info("The automatically acquired LocalTracks will now be stopped"),i.forEach(e=>{e.stop()}))}),r})}function W(e){const t="string"==typeof e?{codec:e}:e;switch(t.codec.toLowerCase()){case"opus":return Object.assign({dtx:!0},t);case"vp8":return Object.assign({simulcast:!1},t);default:return t}}return Ua=function(e,t){if(void 0===t&&(t={}),!v(t))return O.reject(E.INVALID_TYPE("options","object"));const h=t.Log||R,D=t.loggerName||k,q=t.logLevel||y,Q=m(q),z=`[connect #${++A}]`;let G;try{G=new h("default",z,Q,D)}catch(ne){return O.reject(ne)}V(t,G,$);const K="auto"===t.preferredVideoCodecs;if(K&&(t.preferredVideoCodecs=[{codec:"VP8",simulcast:!0,adaptiveSimulcast:!0}]),t.maxVideoBitrate&&K)return G.error('ConnectOptions "maxVideoBitrate" is not compatible with "preferredVideoCodecs=auto"'),O.reject(E.ILLEGAL_INVOKE("connect",'ConnectOptions "maxVideoBitrate" is not compatible with "preferredVideoCodecs=auto"'));const Y={};"string"==typeof(t=Object.assign({automaticSubscription:!0,dominantSpeaker:!1,enableDscp:!1,receiveTranscriptions:!1,environment:b,eventListener:null,insights:!0,LocalAudioTrack:c,LocalDataTrack:l,LocalParticipant:s,LocalVideoTrack:d,Log:h,MediaStreamTrack:MediaStreamTrack,loggerName:D,logLevel:q,maxAudioBitrate:null,maxVideoBitrate:null,name:null,networkMonitor:!0,networkQuality:!1,preferredAudioCodecs:[],preferredVideoCodecs:[],realm:w,region:S,signaling:p},_(t))).wsServerInsights&&(Y.gateway=t.wsServerInsights);const J=new(t.insights?o:a)(e,C,P,t.environment,t.realm,Y),X=T(t.environment,t.region),Z=Date.now(),ee=new L(J,Z,G,t.eventListener);if((t=Object.assign({eventObserver:ee,wsServer:X},t)).log=G,j&&!x&&"error"!==G.logLevel&&"off"!==G.logLevel&&(x=!0,G.warn(["Support for Safari 12.0 and below is limited because it does not support VP8.","This means you may experience codec issues in Group Rooms. You may also","experience codec issues in Peer-to-Peer (P2P) Rooms containing Android- or","iOS-based Participants who do not support H.264. However, P2P Rooms","with browser-based Participants should work. For more information, please","refer to this guide: https://www.twilio.com/docs/video/javascript-v2-developing-safari-11"].join(" "))),"string"!=typeof e)return O.reject(E.INVALID_TYPE("token","string"));t.insights&&J&&M.configure({publisher:J,log:G,connectTimestamp:Z});const te=Object.assign({},t);if(delete te.name,"tracks"in t){if(!Array.isArray(t.tracks))return O.reject(E.INVALID_TYPE("options.tracks","Array of LocalAudioTrack, LocalVideoTrack or MediaStreamTrack"));try{t.tracks=t.tracks.map(e=>f(e,te))}catch(ne){return O.reject(ne)}}const ne=I(t.bandwidthProfile);if(ne)return O.reject(ne);t.clientTrackSwitchOffControl="disabled",t.contentPreferencesMode="disabled",t.bandwidthProfile&&(t.clientTrackSwitchOffControl="auto",t.contentPreferencesMode="auto",t.bandwidthProfile.video&&(V(t.bandwidthProfile.video,G,N),"maxTracks"in t.bandwidthProfile.video?t.clientTrackSwitchOffControl="disabled":"manual"===t.bandwidthProfile.video.clientTrackSwitchOffControl?t.clientTrackSwitchOffControl="manual":t.clientTrackSwitchOffControl="auto","renderDimensions"in t.bandwidthProfile.video?t.contentPreferencesMode="disabled":"manual"===t.bandwidthProfile.video.contentPreferencesMode?t.contentPreferencesMode="manual":t.contentPreferencesMode="auto"));const ie=new(0,t.signaling)(t.wsServer,t);G.info("Connecting to a Room"),G.debug("Options:",t);const re=new r({maxAudioBitrate:t.maxAudioBitrate,maxVideoBitrate:t.maxVideoBitrate},K),se={audio:t.preferredAudioCodecs.map(W),video:t.preferredVideoCodecs.map(W)},oe=new u(v(t.networkQuality)?t.networkQuality:{});["audio","video"].forEach(e=>se[e].forEach(({codec:t})=>n(t,e).then(n=>!n&&G.warn(`The preferred ${e} codec "${t}" will be ignored as it is not supported by the browser.`))));const ae=i(H.bind(null,t),F.bind(null,ie,G,re,oe,t),U.bind(null,e,t,ie,re,se),B.bind(null,t));return ae.then(e=>{J.connect(e.sid,e.localParticipant.sid);const n=g(t);return t.eventObserver.emit("event",n),G.info("Connected to Room:",e.toString()),G.info("Room name:",e.name),G.debug("Room:",e),e.once("disconnected",()=>{setTimeout(()=>J.disconnect(),50)}),e},e=>{setTimeout(()=>J.disconnect(),50),ae._isCanceled?G.info("Attempt to connect to a Room was canceled"):G.info("Error while connecting to a Room:",e)}),ae},Ua}function Oc(){if(qa)return Wa;qa=1;const{DEFAULT_LOG_LEVEL:e,DEFAULT_LOGGER_NAME:t}=ne();function n(n,i){i=Object.assign({loggerName:t,logLevel:e},i);const r={};r.loggerName=i.loggerName,r.logLevel=i.logLevel,delete i.loggerName,delete i.logLevel;["getUserMedia","enumerateDevices","MediaStream","mapMediaElement","disposeMediaElement"].forEach(e=>{e in i&&(r[e]=i[e],delete i[e])});const s=i.createLocalTracks;return delete i.createLocalTracks,r[n]=!(Object.keys(i).length>0)||i,s(r).then(e=>e[0])}return Wa={audio:function(e){return n("audio",e)},video:function(e){return n("video",e)}}}function Lc(){if(za)return Qa;za=1;const{guessBrowser:e,support:t}=ce(),{isAndroid:n,isMobile:i,isNonChromiumEdge:r,rebrandedChromeBrowser:s,mobileWebKitBrowser:o}=gn(),a=["crios","edg","edge","electron","headlesschrome","samsungbrowser"],c=["chrome","firefox"],l=["chrome","safari"],d=["edg"];return Qa=function(){const u=e();if(!u)return!1;const h=s(u),p=o(u),f=n()?c:l;return t()&&(!h||a.includes(h))&&!r(u)&&(!p||d.includes(p))&&(!i()||f.includes(u))}}var Rc,Ic=n.exports;var Mc=function(){if(Rc)return n.exports;Rc=1,Object.defineProperty(Ic,"__esModule",{value:!0});const e=Jn(),t=Wi(),i={connect:Ec(),createLocalAudioTrack:Oc().audio,createLocalVideoTrack:Oc().video,isSupported:Lc()(),version:te.version,Logger:G(),LocalAudioTrack:Vn().LocalAudioTrack,LocalDataTrack:Vn().LocalDataTrack,LocalVideoTrack:Vn().LocalVideoTrack},r=i.isSupported,s=i.version,o=i.Logger,a=i.LocalAudioTrack,c=i.LocalVideoTrack,l=i.LocalDataTrack;return n.exports={connect:function(t,n){const r=Object.assign({createLocalTracks:e.createLocalTracks},n);return i.connect(t,r)},createLocalAudioTrack:function(t){const n=Object.assign({createLocalTracks:e.createLocalTracks},t);return i.createLocalAudioTrack(n)},createLocalVideoTrack:function(t){const n=Object.assign({createLocalTracks:e.createLocalTracks},t);return i.createLocalVideoTrack(n)},createLocalTracks:e.createLocalTracks,runPreflight:t.runPreflight,isSupported:r,version:s,Logger:o,LocalAudioTrack:a,LocalVideoTrack:c,LocalDataTrack:l},n.exports}();return e(Mc)}());t.exports=n;var i=t.exports;if("function"==typeof define&&define.amd)define([],function(){return i});else{var r=e.Twilio=e.Twilio||{};r.Video=r.Video||i}}("undefined"!=typeof window?window:"undefined"!=typeof global?global:this);
38
+ !function(e){var t={exports:{}},n=(t.exports,function(){function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function t(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var n=function e(){var n=!1;try{n=this instanceof e}catch{}return n?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach(function(t){var i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,i.get?i:{enumerable:!0,get:function(){return e[t]}})}),n}var n={exports:{}},i={},r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},r(e,t)};function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},o.apply(this,arguments)};function a(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]])}return n}function c(e,t,n,i){var r,s=arguments.length,o=s<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(r=e[a])&&(o=(s<3?r(o):s>3?r(t,n,o):r(t,n))||o);return s>3&&o&&Object.defineProperty(t,n,o),o}function l(e,t){return function(n,i){t(n,i,e)}}function d(e,t,n,i,r,s){function o(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var a,c=i.kind,l="getter"===c?"get":"setter"===c?"set":"value",d=!t&&e?i.static?e:e.prototype:null,u=t||(d?Object.getOwnPropertyDescriptor(d,i.name):{}),h=!1,p=n.length-1;p>=0;p--){var f={};for(var m in i)f[m]="access"===m?{}:i[m];for(var m in i.access)f.access[m]=i.access[m];f.addInitializer=function(e){if(h)throw new TypeError("Cannot add initializers after decoration has completed");s.push(o(e||null))};var g=(0,n[p])("accessor"===c?{get:u.get,set:u.set}:u[l],f);if("accessor"===c){if(void 0===g)continue;if(null===g||"object"!=typeof g)throw new TypeError("Object expected");(a=o(g.get))&&(u.get=a),(a=o(g.set))&&(u.set=a),(a=o(g.init))&&r.unshift(a)}else(a=o(g))&&("field"===c?r.unshift(a):u[l]=a)}d&&Object.defineProperty(d,i.name,u),h=!0}function u(e,t,n){for(var i=arguments.length>2,r=0;r<t.length;r++)n=i?t[r].call(e,n):t[r].call(e);return i?n:void 0}function h(e){return"symbol"==typeof e?e:"".concat(e)}function p(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function f(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function m(e,t,n,i){return new(n||(n=Promise))(function(r,s){function o(e){try{c(i.next(e))}catch(e){s(e)}}function a(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,a)}c((i=i.apply(e,t||[])).next())})}function g(e,t){var n,i,r,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(s=0)),s;)try{if(n=1,i&&(r=2&a[0]?i.return:a[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,a[1])).done)return r;switch(i=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,i=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]<r[3])){s.label=a[1];break}if(6===a[0]&&s.label<r[1]){s.label=r[1],r=a;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(a);break}r[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],i=0}finally{n=r=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}var _=Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]};function v(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||_(t,e,n)}function b(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],i=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function y(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,r,s=n.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(i=s.next()).done;)o.push(i.value)}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return o}function k(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(y(arguments[t]));return e}function w(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var i=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],o=0,a=s.length;o<a;o++,r++)i[r]=s[o];return i}function S(e,t,n){if(n||2===arguments.length)for(var i,r=0,s=t.length;r<s;r++)!i&&r in t||(i||(i=Array.prototype.slice.call(t,0,r)),i[r]=t[r]);return e.concat(i||Array.prototype.slice.call(t))}function T(e){return this instanceof T?(this.v=e,this):new T(e)}function C(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,r=n.apply(e,t||[]),s=[];return i=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),o("next"),o("throw"),o("return",function(e){return function(t){return Promise.resolve(t).then(e,l)}}),i[Symbol.asyncIterator]=function(){return this},i;function o(e,t){r[e]&&(i[e]=function(t){return new Promise(function(n,i){s.push([e,t,n,i])>1||a(e,t)})},t&&(i[e]=t(i[e])))}function a(e,t){try{(n=r[e](t)).value instanceof T?Promise.resolve(n.value.v).then(c,l):d(s[0][2],n)}catch(e){d(s[0][3],e)}var n}function c(e){a("next",e)}function l(e){a("throw",e)}function d(e,t){e(t),s.shift(),s.length&&a(s[0][0],s[0][1])}}function P(e){var t,n;return t={},i("next"),i("throw",function(e){throw e}),i("return"),t[Symbol.iterator]=function(){return this},t;function i(i,r){t[i]=e[i]?function(t){return(n=!n)?{value:T(e[i](t)),done:!1}:r?r(t):t}:r}}function E(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=b(e),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(n){t[n]=e[n]&&function(t){return new Promise(function(i,r){(function(e,t,n,i){Promise.resolve(i).then(function(t){e({value:t,done:n})},t)})(i,r,(t=e[n](t)).done,t.value)})}}}function O(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var L=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},R=function(e){return R=Object.getOwnPropertyNames||function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[t.length]=n);return t},R(e)};function I(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n=R(e),i=0;i<n.length;i++)"default"!==n[i]&&_(t,e,n[i]);return L(t,e),t}function M(e){return e&&e.__esModule?e:{default:e}}function D(e,t,n,i){if("a"===n&&!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"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)}function A(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n}function x(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}function j(e,t,n){if(null!=t){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object expected.");var i,r;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");i=t[Symbol.asyncDispose]}if(void 0===i){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");i=t[Symbol.dispose],n&&(r=i)}if("function"!=typeof i)throw new TypeError("Object not disposable.");r&&(i=function(){try{r.call(this)}catch(e){return Promise.reject(e)}}),e.stack.push({value:t,dispose:i,async:n})}else n&&e.stack.push({async:!0});return t}var $="function"==typeof SuppressedError?SuppressedError:function(e,t,n){var i=new Error(n);return i.name="SuppressedError",i.error=e,i.suppressed=t,i};function N(e){function t(t){e.error=e.hasError?new $(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}var n,i=0;return function r(){for(;n=e.stack.pop();)try{if(!n.async&&1===i)return i=0,e.stack.push(n),Promise.resolve().then(r);if(n.dispose){var s=n.dispose.call(n.value);if(n.async)return i|=2,Promise.resolve(s).then(r,function(e){return t(e),r()})}else i|=1}catch(e){t(e)}if(1===i)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}()}function V(e,t){return"string"==typeof e&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,i,r,s){return n?t?".jsx":".js":!i||r&&s?i+r+"."+s.toLowerCase()+"js":e}):e}var F,B,U,H,W,q,Q,z={__extends:s,__assign:o,__rest:a,__decorate:c,__param:l,__esDecorate:d,__runInitializers:u,__propKey:h,__setFunctionName:p,__metadata:f,__awaiter:m,__generator:g,__createBinding:_,__exportStar:v,__values:b,__read:y,__spread:k,__spreadArrays:w,__spreadArray:S,__await:T,__asyncGenerator:C,__asyncDelegator:P,__asyncValues:E,__makeTemplateObject:O,__importStar:I,__importDefault:M,__classPrivateFieldGet:D,__classPrivateFieldSet:A,__classPrivateFieldIn:x,__addDisposableResource:j,__disposeResources:N,__rewriteRelativeImportExtension:V},G=t(Object.freeze({__proto__:null,__addDisposableResource:j,get __assign(){return o},__asyncDelegator:P,__asyncGenerator:C,__asyncValues:E,__await:T,__awaiter:m,__classPrivateFieldGet:D,__classPrivateFieldIn:x,__classPrivateFieldSet:A,__createBinding:_,__decorate:c,__disposeResources:N,__esDecorate:d,__exportStar:v,__extends:s,__generator:g,__importDefault:M,__importStar:I,__makeTemplateObject:O,__metadata:f,__param:l,__propKey:h,__read:y,__rest:a,__rewriteRelativeImportExtension:V,__runInitializers:u,__setFunctionName:p,__spread:k,__spreadArray:S,__spreadArrays:w,__values:b,default:z})),K={},Y={},J={};function X(){if(B)return F;B=1;const e="undefined"!=typeof AudioContext?AudioContext:"undefined"!=typeof webkitAudioContext?webkitAudioContext:null;class t{constructor(n){n=Object.assign({AudioContext:e},n),Object.defineProperties(this,{_AudioContext:{value:n.AudioContext},_audioContext:{value:null,writable:!0},_holders:{value:new Set},AudioContextFactory:{enumerable:!0,value:t}})}getOrCreate(e){if(!this._holders.has(e)&&(this._holders.add(e),this._AudioContext&&!this._audioContext))try{this._audioContext=new this._AudioContext}catch(e){}return this._audioContext}release(e){this._holders.has(e)&&(this._holders.delete(e),!this._holders.size&&this._audioContext&&(this._audioContext.close(),this._audioContext=null))}}return F=new t}function Z(){if(Q)return q;Q=1;var e=function(){},t="undefined",n=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),i=["trace","debug","info","warn","error"];function r(e,t){var n=e[t];if("function"==typeof n.bind)return n.bind(e);try{return Function.prototype.bind.call(n,e)}catch(t){return function(){return Function.prototype.apply.apply(n,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function o(t,n){for(var r=0;r<i.length;r++){var s=i[r];this[s]=r<t?e:this.methodFactory(s,t,n)}this.log=this.debug}function a(e,n,i){return function(){typeof console!==t&&(o.call(this,n,i),this[e].apply(this,arguments))}}function c(i,o,c){return function(i){return"debug"===i&&(i="log"),typeof console!==t&&("trace"===i&&n?s:void 0!==console[i]?r(console,i):void 0!==console.log?r(console,"log"):e)}(i)||a.apply(this,arguments)}function l(e,n,r){var s,a=this,l="loglevel";function d(){var e;if(typeof window!==t&&l){try{e=window.localStorage[l]}catch(e){}if(typeof e===t)try{var n=window.document.cookie,i=n.indexOf(encodeURIComponent(l)+"=");-1!==i&&(e=/^([^;]+)/.exec(n.slice(i))[1])}catch(e){}return void 0===a.levels[e]&&(e=void 0),e}}"string"==typeof e?l+=":"+e:"symbol"==typeof e&&(l=void 0),a.name=e,a.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},a.methodFactory=r||c,a.getLevel=function(){return s},a.setLevel=function(n,r){if("string"==typeof n&&void 0!==a.levels[n.toUpperCase()]&&(n=a.levels[n.toUpperCase()]),!("number"==typeof n&&n>=0&&n<=a.levels.SILENT))throw"log.setLevel() called with invalid level: "+n;if(s=n,!1!==r&&function(e){var n=(i[e]||"silent").toUpperCase();if(typeof window!==t&&l){try{return void(window.localStorage[l]=n)}catch(e){}try{window.document.cookie=encodeURIComponent(l)+"="+n+";"}catch(e){}}}(n),o.call(a,n,e),typeof console===t&&n<a.levels.SILENT)return"No console available for logging"},a.setDefaultLevel=function(e){d()||a.setLevel(e,!1)},a.enableAll=function(e){a.setLevel(a.levels.TRACE,e)},a.disableAll=function(e){a.setLevel(a.levels.SILENT,e)};var u=d();null==u&&(u=null==n?"WARN":n),a.setLevel(u,!1)}var d=new l,u={};d.getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=u[e];return t||(t=u[e]=new l(e,d.getLevel(),d.methodFactory)),t};var h=typeof window!==t?window.log:void 0;return d.noConflict=function(){return typeof window!==t&&window.log===d&&(window.log=h),d},d.getLoggers=function(){return u},d.default=d,q=d}var ee,te,ne,ie,re,se={exports:{}},oe={name:"twilio-video",version:"2.36.0"};function ae(){return ee||(ee=1,function(e){const t=oe;e.exports.SDK_NAME=`${t.name}.js`,e.exports.SDK_VERSION=t.version,e.exports.SDP_FORMAT="unified",e.exports.hardwareDevicePublisheriPad={hwDeviceManufacturer:"Apple",hwDeviceModel:"iPad",hwDeviceType:"tablet",platformName:"iOS"},e.exports.hardwareDevicePublisheriPhone={hwDeviceManufacturer:"Apple",hwDeviceModel:"iPhone",hwDeviceType:"mobile",platformName:"iOS"},e.exports.DEFAULT_ENVIRONMENT="prod",e.exports.DEFAULT_REALM="us1",e.exports.DEFAULT_REGION="gll",e.exports.DEFAULT_LOG_LEVEL="warn",e.exports.DEFAULT_LOGGER_NAME="twilio-video",e.exports.WS_SERVER=(e,t)=>(t="gll"===t?"global":encodeURIComponent(t),"prod"===e?`wss://${t}.vss.twilio.com/signaling`:`wss://${t}.vss.${e}.twilio.com/signaling`),e.exports.PUBLISH_MAX_ATTEMPTS=5,e.exports.PUBLISH_BACKOFF_JITTER=10,e.exports.PUBLISH_BACKOFF_MS=20,e.exports.typeErrors={ILLEGAL_INVOKE:(e,t)=>new TypeError(`Illegal call to ${e}: ${t}`),INVALID_TYPE(e,t){return new TypeError(`${e} must be ${n=t,["a","e","i","o","u"].includes(n.toLowerCase()[0])?"an":"a"} ${t}`);var n},INVALID_VALUE:(e,t)=>new RangeError(`${e} must be one of ${t.join(", ")}`),REQUIRED_ARGUMENT:e=>new TypeError(`${e} must be specified`)},e.exports.DEFAULT_FRAME_RATE=24,e.exports.DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS=1e4,e.exports.DEFAULT_ICE_GATHERING_TIMEOUT_MS=15e3,e.exports.DEFAULT_SESSION_TIMEOUT_SEC=30,e.exports.DEFAULT_NQ_LEVEL_LOCAL=1,e.exports.DEFAULT_NQ_LEVEL_REMOTE=0,e.exports.MAX_NQ_LEVEL=3,e.exports.ICE_ACTIVITY_CHECK_PERIOD_MS=1e3,e.exports.ICE_INACTIVITY_THRESHOLD_MS=3e3,e.exports.iceRestartBackoffConfig={factor:1.1,min:1,max:1e3*e.exports.DEFAULT_SESSION_TIMEOUT_SEC,jitter:1},e.exports.reconnectBackoffConfig={factor:1.5,min:80,jitter:1},e.exports.subscriptionMode={MODE_COLLABORATION:"collaboration",MODE_GRID:"grid",MODE_PRESENTATION:"presentation"},e.exports.trackSwitchOffMode={MODE_DISABLED:"disabled",MODE_DETECTED:"detected",MODE_PREDICTED:"predicted"},e.exports.trackPriority={PRIORITY_HIGH:"high",PRIORITY_LOW:"low",PRIORITY_STANDARD:"standard"},e.exports.clientTrackSwitchOffControl={MODE_AUTO:"auto",MODE_MANUAL:"manual"},e.exports.videoContentPreferencesMode={MODE_AUTO:"auto",MODE_MANUAL:"manual"}}(se)),se.exports}function ce(){if(ne)return te;ne=1;const e=Z().getLogger,t=ae(),{DEFAULT_LOG_LEVEL:n,DEFAULT_LOGGER_NAME:i}=t,r=ae().typeErrors;let s;class o{constructor(t,s,a,c,l){if("string"!=typeof t)throw r.INVALID_TYPE("moduleName","string");if(!s)throw r.REQUIRED_ARGUMENT("component");"object"!=typeof a&&(a={}),l=l||e,u(a),Object.defineProperties(this,{_component:{value:s},_logLevels:{value:a},_warnings:{value:new Set},_loggerName:{get:function(){let e=c&&"string"==typeof c?c:i;return this._logLevelsEqual||(e=`${e}-${t}`),e}},_logger:{get:function(){const e=l(this._loggerName);let i=this._logLevels[t]||n;return i="off"===i?"silent":i,e.setDefaultLevel(i),e}},_logLevelsEqual:{get:function(){return 1===new Set(Object.values(this._logLevels)).size}},logLevel:{get:function(){return o.getLevelByName(a[t]||n)}},name:{get:s.toString.bind(s)}})}static getLevelByName(e){return isNaN(e)?(d(e=e.toUpperCase()),o[e]):parseInt(e,10)}createLog(e,t){let n=this._loggerName;return this._logLevelsEqual||(n=n.substring(0,n.lastIndexOf("-"))),new o(e,t,this._logLevels,n)}setLevels(e){return u(e),Object.assign(this._logLevels,e),this}log(e,t){let n=o._levels[e];if(!n)throw r.INVALID_VALUE("logLevel",c);n=n.toLowerCase();const i=[(new Date).toISOString(),n,this.name];return(this._logger[n]||function(){})(...i.concat(t)),this}debug(){return this.log(o.DEBUG,[].slice.call(arguments))}deprecated(e){const t=function(e){if(s=s||new Map,s.has(e))return s.get(e);const t=new Set;return s.set(e,t),t}(this._component.constructor);return t.has(e)?this:(t.add(e),this.warn(e))}info(){return this.log(o.INFO,[].slice.call(arguments))}warn(){return this.log(o.WARN,[].slice.call(arguments))}warnOnce(e){return this._warnings.has(e)?this:(this._warnings.add(e),this.warn(e))}error(){return this.log(o.ERROR,[].slice.call(arguments))}throw(e,t){throw e.clone&&(e=e.clone(t)),this.log(o.ERROR,e),e}}Object.defineProperties(o,{DEBUG:{value:0},INFO:{value:1},WARN:{value:2},ERROR:{value:3},OFF:{value:4},_levels:{value:["DEBUG","INFO","WARN","ERROR","OFF"]}});const a={},c=[],l=o._levels.map((e,t)=>(a[e]=!0,c.push(t),e));function d(e){if(!(e in a))throw r.INVALID_VALUE("level",l)}function u(e){Object.keys(e).forEach(t=>{d(e[t].toUpperCase())})}return te=o}function le(){if(ie)return Y;ie=1,Object.defineProperty(Y,"__esModule",{value:!0}),Y.createNoiseCancellationAudioProcessor=function(t,c){return e.__awaiter(this,void 0,void 0,function*(){let e=a.get(t.vendor);if(!e){let l=i[t.vendor];if(!l)throw new Error(`Unsupported NoiseCancellationOptions.vendor: ${t.vendor}`);const{supportedVersions:d,pluginFile:u}=l,h=t.sdkAssetsPath,p=`${h}/${u}`;try{c.debug("loading noise cancellation sdk: ",p);const i=yield n(p);c.debug("Loaded noise cancellation sdk:",i);const l=i.default;if(!l||"function"!=typeof l.getVersion)throw new Error(`Invalid noise cancellation plugin module: ${p}`);const u=l.getVersion();c.debug("Plugin Version =",u),s({supportedVersions:d,pluginVersion:u});const f=r(u)[0],m=o(l,f);if(!m.isSupported())throw new Error("Noise Cancellation plugin is not supported on your browser");m.isInitialized()||(c.debug("initializing noise cancellation sdk: ",h),yield m.init({rootDir:h}),c.debug("noise cancellation sdk initialized!")),e={vendor:t.vendor,isInitialized:()=>m.isInitialized(),isConnected:()=>m.isConnected(),isEnabled:()=>m.isEnabled(),disconnect:()=>m.disconnect(),enable:()=>m.enable(),disable:()=>m.disable(),destroy:()=>m.destroy(),setLogging:e=>m.setLogging(e),connect:e=>{c.debug("connect: ",e.id),m.isConnected()&&m.disconnect();const t=m.connect(new MediaStream([e]));if(!t)throw new Error("Error connecting with noise cancellation sdk");const n=t.getAudioTracks()[0];if(!n)throw new Error("Error getting clean track from noise cancellation sdk");return m.enable(),n}},a.set(t.vendor,e)}catch(e){throw c.error(`Error loading noise cancellation sdk:${p}`,e),e}}return e})};const e=G,t=function(){if(U)return J;U=1,Object.defineProperty(J,"__esModule",{value:!0}),J.LegacyPluginAdapter=void 0;const e=X();return J.LegacyPluginAdapter=class{constructor(e){this.legacy=e}init(e){return this.legacy.init(e)}isInitialized(){return this.legacy.isInitialized()}isConnected(){return this.legacy.isConnected()}isEnabled(){return this.legacy.isEnabled()}connect(e){return this.legacy.connect(e)}disconnect(){this.legacy.disconnect()}enable(){this.legacy.enable()}disable(){this.legacy.disable()}setLogging(e){this.legacy.setLogging(e)}getVersion(){return this.legacy.getVersion()}isSupported(){const t={},n=e.getOrCreate(t);try{return!!n&&this.legacy.isSupported(n)}finally{e.release(t)}}destroy(){return Promise.resolve().then(()=>{this.legacy.destroy()})}},J}(),n=(W||(W=1,H=function(e){const{location:t,URL:n}=e;if([t,n].some(e=>!e))return function(e){return Promise.reject(new Error(`Failed to import: ${e}: dynamicImport is not supported`))};e.__twilioVideoImportedModules={};const i=new Function("url","return import(url);");return function(r){return r in e.__twilioVideoImportedModules?Promise.resolve(e.__twilioVideoImportedModules[r]):i(new n(r,t).toString()).then(t=>(e.__twilioVideoImportedModules[r]=t,t))}}(globalThis)),H);ce();const i={krisp:{supportedVersions:["1.0.0","2.0.0"],pluginFile:"krispsdk.mjs"},rnnoise:{supportedVersions:["0.6.0"],pluginFile:"rnnoise_sdk.mjs"}},r=e=>{const t=e.split("-")[0].split(".").map(e=>Number(e));if(3!==t.length||t.some(Number.isNaN))throw new Error(`Unsupported Plugin version format: ${e}`);return t},s=({supportedVersions:e,pluginVersion:t})=>{const n=r(t),i=e.map(r).find(e=>e[0]===n[0]);if(!i)throw new Error(`Major version mismatch: [Plugin version ${t}], [Supported Versions ${e.join(", ")}]`);if(n[1]<i[1])throw new Error(`Minor version mismatch: [Plugin version ${t}] < [Supported Version ${i.join(".")}]`)},o=(e,n)=>2===n?e:new t.LegacyPluginAdapter(e);let a=new Map;return Y}var de,ue={},he={};function pe(){if(de)return he;function e(e,t,n,i){if(i in t)return;if(i.match(/^on[a-z]+$/))return;let r,s=!1;try{const t=Object.getOwnPropertyDescriptor(e,i);s=t&&!!t.get}catch(e){}if(!s){try{r=typeof e[i]}catch(e){}"function"===r&&(t[i]=function(){return this[n][i].apply(this[n],arguments)})}}function t(){return"undefined"!=typeof navigator&&"string"==typeof navigator.userAgent?navigator.userAgent:null}function n(e){return void 0===e&&(e=t()),/Chrome|CriOS/.test(e)?"chrome":/Firefox|FxiOS/.test(e)?"firefox":/Safari|iPhone|iPad|iPod/.test(e)?"safari":null}de=1;const i=new Map;return he.clearCachedSupportedCodecs=function(){i.clear()},he.defer=function(){const e={};return e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n}),e},he.delegateMethods=function(t,n,i){for(const r in t)e(t,n,i,r)},he.difference=function(e,t){e=Array.isArray(e)?new Set(e):new Set(e.values()),t=Array.isArray(t)?new Set(t):new Set(t.values());const n=new Set;return e.forEach(e=>{t.has(e)||n.add(e)}),n},he.flatMap=function(e,t){return(e instanceof Map||e instanceof Set?Array.from(e.values()):e).reduce((e,n)=>e.concat(t(n)),[])},he.guessBrowser=n,he.guessBrowserVersion=function(e){void 0===e&&(e=t());const i={chrome:"Chrome|CriOS",firefox:"Firefox|FxiOS",safari:"Version"}[n(e)];if(!i)return null;const r=new RegExp(`(${i})/([^\\s]+)`),[,,s]=e.match(r)||[];if(!s)return null;const o=s.split(".").map(Number);return{major:isNaN(o[0])?null:o[0],minor:isNaN(o[1])?null:o[1]}},he.isCodecSupported=function(e,t){const n=i.get(t);return n?Promise.resolve(n.has(e.toLowerCase())):function(e){if("undefined"!=typeof RTCRtpSender&&"function"==typeof RTCRtpSender.getCapabilities)return Promise.resolve(new Set(RTCRtpSender.getCapabilities(e).codecs.map(({mimeType:e})=>e.split("/")[1].toLowerCase())));if("undefined"==typeof RTCPeerConnection||void 0===RTCPeerConnection.prototype||"function"!=typeof RTCPeerConnection.prototype.addTransceiver||"function"!=typeof RTCPeerConnection.prototype.close||"function"!=typeof RTCPeerConnection.prototype.createOffer)return Promise.resolve(new Set);const t=new RTCPeerConnection;return t.addTransceiver(e),t.createOffer().then(({sdp:e})=>(t.close(),new Set((e.match(/^a=rtpmap:.+$/gm)||[]).map(e=>e.match(/^a=rtpmap:.+ ([^/]+)/)[1].toLowerCase()))),()=>(t.close(),new Set))}(t).then(n=>(i.set(t,n),n.has(e.toLowerCase())))},he.isIOSChrome=function(e){return void 0===e&&(e=t()),/Mobi/.test(e)&&"chrome"===n()&&/iPad|iPhone|iPod/.test(e)},he.interceptEvent=function(e,t){let n=null;Object.defineProperty(e,"on"+t,{get:function(){return n},set:function(e){n&&this.removeEventListener(t,n),"function"==typeof e?(n=e,this.addEventListener(t,n)):n=null}})},he.legacyPromise=function(e,t,n){return t?e.then(t,n):e},he.makeUUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})},he.proxyProperties=function(e,t,n){Object.getOwnPropertyNames(e).forEach(e=>{!function(e,t,n,i){if(i in t)return;if(i.match(/^on[a-z]+$/))return Object.defineProperty(t,i,{value:null,writable:!0}),void n.addEventListener(i.slice(2),(...e)=>t.dispatchEvent(...e));Object.defineProperty(t,i,{enumerable:!0,get:function(){return n[i]}})}(0,t,n,e)})},he.support=function(){return"object"==typeof navigator&&"object"==typeof navigator.mediaDevices&&"function"==typeof navigator.mediaDevices.getUserMedia&&"function"==typeof RTCPeerConnection},he}var fe,me,ge,_e,ve,be,ye,ke,we={};function Se(){if(fe)return we;fe=1;const e="1234567890abcdef";function t(t){let n="";for(let t=0;t<32;t++)n+=e.charAt(Math.floor(16*Math.random()));return`${t}${n}`}return we.sessionSID=t("SS"),we.createSID=t,we}function Te(){if(ge)return me;ge=1;return me={recordingMediaLost:"recording-media-lost"}}function Ce(){if(_e)return ue;_e=1;const e=ae(),{typeErrors:t,trackPriority:n}=e,i=pe(),{sessionSID:r}=Se(),s=Te();function o(){return"undefined"!=typeof navigator&&navigator.userAgent?navigator.userAgent:"Unknown"}function a(e,t,n,i){if(i in t)return;if(i.match(/^on[a-z]+$/))return;let r;try{r=typeof e[i]}catch(e){}"function"===r&&(t[i]=function(...e){return this[n][i](...e)})}function c(e){return"object"==typeof e&&!Array.isArray(e)}function l(e){Object.getOwnPropertyNames(e).forEach(t=>{t.startsWith("_")&&d(e,t)})}function d(e,t){const n=Object.getOwnPropertyDescriptor(e,t);n.enumerable=!1,Object.defineProperty(e,t,n)}function u(e){return e.map(h)}function h(e){return Array.isArray(e)?u(e):e instanceof Set?(n=e,u([...n])):e instanceof Map?[...e.entries()].reduce((e,[t,n])=>Object.assign({[t]:h(n)},e),{}):e&&"object"==typeof e?(t=e,Object.entries(t).reduce((e,[t,n])=>Object.assign({[t]:h(n)},e),{})):e;var t,n}function p(e){return e?"true":"false"}function f(e){return _(e,[{prop:"dominantSpeakerPriority",type:"string",payloadProp:"active_speaker_priority"},{prop:"maxSubscriptionBitrate",type:"number",payloadProp:"max_subscription_bandwidth"},{prop:"maxTracks",type:"number",payloadProp:"max_tracks"},{prop:"mode",type:"string"},{prop:"renderDimensions",type:"object",payloadProp:"render_dimensions",transform:g},{prop:"trackSwitchOffMode",type:"string",payloadProp:"track_switch_off"}])}function m(e){return _(e,[{prop:"height",type:"number"},{prop:"width",type:"number"}])}function g(e){const{PRIORITY_HIGH:t,PRIORITY_LOW:i,PRIORITY_STANDARD:r}=n;return _(e,[{prop:t,type:"object",transform:m},{prop:i,type:"object",transform:m},{prop:r,type:"object",transform:m}])}function _(e,t){return t.reduce((t,{prop:n,type:i,payloadProp:r=n,transform:s=e=>e})=>typeof e[n]===i?Object.assign({[r]:s(e[n])},t):t,{})}return ue.constants=e,ue.createBandwidthProfilePayload=function(e){return _(e,[{prop:"video",type:"object",transform:f}])},ue.createMediaSignalingPayload=function(e,t,n,i,r,s,o){const a={transports:[{type:"data-channel"}]};return Object.assign(e?{active_speaker:a}:{},t?{network_quality:a}:{},s?{render_hints:a}:{},r?{publisher_hints:a}:{},n?{track_priority:a}:{},i?{track_switch_off:a}:{},o?{extension_transcriptions:a}:{})},ue.createMediaWarningsPayload=function(e){const t={[s.recordingMediaLost]:"recordings"};return e.map(e=>t[e]).filter(e=>!!e)},ue.createRoomConnectingEventPayload=function(e){const t={sessionSID:r,iceServers:(e.iceServers||[]).length,audioTracks:(e.tracks||[]).filter(e=>"audio"===e.kind).length,videoTracks:(e.tracks||[]).filter(e=>"video"===e.kind).length,dataTracks:(e.tracks||[]).filter(e=>"data"===e.kind).length};if([["audio"],["automaticSubscription"],["enableDscp"],["eventListener"],["preflight"],["video"],["dominantSpeaker","enableDominantSpeaker"]].forEach(([n,i])=>{t[i=i||n]=p(!!e[n])}),[["maxVideoBitrate"],["maxAudioBitrate"]].forEach(([n,i])=>{i=i||n,"number"==typeof e[n]?t[i]=e[n]:isNaN(Number(e[n]))||(t[i]=Number(e[n]))}),[["iceTransportPolicy"],["region"],["name","roomName"]].forEach(([n,i])=>{i=i||n,"string"==typeof e[n]?t[i]=e[n]:"number"==typeof e[n]&&"name"===n&&(t[i]=e[n].toString())}),["preferredAudioCodecs","preferredVideoCodecs"].forEach(n=>{n in e&&(t[n]=JSON.stringify(e[n]))}),"networkQuality"in e&&(t.networkQualityConfiguration={},c(e.networkQuality)?["local","remote"].forEach(n=>{"number"==typeof e.networkQuality[n]&&(t.networkQualityConfiguration[n]=e.networkQuality[n])}):(t.networkQualityConfiguration.remote=0,t.networkQualityConfiguration.local=e.networkQuality?1:0)),e.bandwidthProfile&&e.bandwidthProfile.video){const n=e.bandwidthProfile.video||{};t.bandwidthProfileOptions={},["mode","maxTracks","trackSwitchOffMode","dominantSpeakerPriority","maxSubscriptionBitrate","renderDimensions","contentPreferencesMode","clientTrackSwitchOffControl"].forEach(e=>{"number"==typeof n[e]||"string"==typeof n[e]?t.bandwidthProfileOptions[e]=n[e]:"boolean"==typeof n[e]?t.bandwidthProfileOptions[e]=p(n[e]):"object"==typeof n[e]&&(t.bandwidthProfileOptions[e]=JSON.stringify(n[e]))})}return Object.entries({RTCPeerConnection:"customRTCPeerConnectionImpl",MediaStream:"customMediaStreamImpl",getUserMedia:"customGetUserMediaImpl",enumerateDevices:"customEnumerateDevicesImpl"}).forEach(([n,i])=>{t[i]=p(void 0!==e[n])}),{group:"room",name:"connecting",level:"info",payload:t}},ue.createRoomConnectedEventPayload=function(){return{group:"room",name:"connected",level:"info"}},ue.boolToString=p,ue.createSubscribePayload=function(e){return{rules:[{type:e?"include":"exclude",all:!0}],revision:1}},ue.asLocalTrack=function(e,n){if(e instanceof n.LocalAudioTrack||e instanceof n.LocalVideoTrack||e instanceof n.LocalDataTrack)return e;if(e instanceof n.MediaStreamTrack)return"audio"===e.kind?new n.LocalAudioTrack(e,n):new n.LocalVideoTrack(e,n);throw t.INVALID_TYPE("track","LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack")},ue.asLocalTrackPublication=function(e,t,n,i){return new(0,{audio:i.LocalAudioTrackPublication,video:i.LocalVideoTrackPublication,data:i.LocalDataTrackPublication}[e.kind])(t,e,n,i)},ue.capitalize=function(e){return e[0].toUpperCase()+e.slice(1)},ue.deprecateEvents=function(e,t,n,i){const r=new Set;t.on("newListener",function s(o){n.has(o)&&!r.has(o)&&(i.deprecated(`${e}#${o} has been deprecated and scheduled for removal in twilio-video.js@2.0.0.${n.get(o)?` Use ${e}#${n.get(o)} instead.`:""}`),r.add(o)),r.size>=n.size&&t.removeListener("newListener",s)})},ue.difference=function(e,t){e=Array.isArray(e)?new Set(e):new Set(e.values()),t=Array.isArray(t)?new Set(t):new Set(t.values());const n=new Set;return e.forEach(e=>{t.has(e)||n.add(e)}),n},ue.filterObject=function(e,t){return Object.keys(e).reduce((n,i)=>(e[i]!==t&&(n[i]=e[i]),n),{})},ue.flatMap=function(e,t){const n=e instanceof Map||e instanceof Set?Array.from(e.values()):e;return t=t||function(e){return e},n.reduce((e,n)=>{const i=t(n);return e.concat(i)},[])},ue.getPlatform=function(){const e=o(),[,t="unknown"]=e.match(/\(([^)]+)\)/)||[],[n]=t.split(";").map(e=>e.trim());return n.toLowerCase()},ue.getUserAgent=o,ue.hidePrivateProperties=l,ue.hidePrivateAndCertainPublicPropertiesInClass=function(e,t){return class extends e{constructor(...e){super(...e),l(this),function(e,t=[]){t.forEach(t=>{e.hasOwnProperty(t)&&d(e,t)})}(this,t)}}},ue.isDeepEqual=function e(t,n){if(t===n)return!0;if(typeof t!=typeof n)return!1;if(null===t)return null===n;if(null===n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((t,i)=>e(t,n[i]));if("object"==typeof t){const i=Object.keys(t).sort(),r=Object.keys(n).sort();return!Array.isArray(n)&&e(i,r)&&i.every(i=>e(t[i],n[i]))}return!1},ue.isNonArrayObject=c,ue.inRange=function(e,t,n){return t<=e&&e<=n},ue.makeUUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})},ue.oncePerTick=function(e){let t=null;function n(){t=null,e()}return function(){t&&clearTimeout(t),t=setTimeout(n)}},ue.promiseFromEvents=function(e,t,n,i){return new Promise((r,s)=>{function o(){const e=[].slice.call(arguments);i&&t.removeListener(i,a),r(...e)}function a(){const e=[].slice.call(arguments);t.removeListener(n,o),s(...e)}t.once(n,o),i&&t.once(i,a),e()})},ue.getOrNull=function(e,t){return t.split(".").reduce((e,t)=>e?e[t]:null,e)},ue.defer=function(){const e={};return e.promise=new Promise((t,n)=>{e.resolve=t,e.reject=n}),e},ue.delegateMethods=function(e,t,n){for(const i in e)a(e,t,n,i)},ue.proxyProperties=function(e,t,n){Object.getOwnPropertyNames(e).forEach(e=>{!function(e,t,n,i){if(i in t)return;if(i.match(/^on[a-z]+$/))return Object.defineProperty(t,i,{value:null,writable:!0}),void n.addEventListener(i.slice(2),function(...e){t.dispatchEvent(...e)});Object.defineProperty(t,i,{enumerable:!0,get:()=>n[i]})}(0,t,n,e)})},ue.legacyPromise=function(e,t,n){return t?e.then(e=>{t(e)},e=>{n(e)}):e},ue.buildLogLevels=function(e){return"string"==typeof e?{default:e,media:e,signaling:e,webrtc:e}:e},ue.trackClass=function(e,t){return`${(t=t?"Local":"")+(e.kind||"").replace(/\w{1}/,e=>e.toUpperCase())}Track`},ue.trackPublicationClass=function(e,t){return`${(t=t?"Local":"")+(e.kind||"").replace(/\w{1}/,e=>e.toUpperCase())}TrackPublication`},ue.valueToJSON=h,ue.withJitter=function(e,t){const n=Math.random();return e-t+Math.floor(2*t*n+.5)},ue.isChromeScreenShareTrack=function(e){return"chrome"===i.guessBrowser()&&"video"===e.kind&&"displaySurface"in e.getSettings()},ue.waitForSometime=function(e=10){return new Promise(t=>setTimeout(t,e))},ue.waitForEvent=function(e,t){return new Promise(n=>{e.addEventListener(t,function i(r){e.removeEventListener(t,i),n(r)})})},ue}function Pe(){if(be)return ve;be=1;const{flatMap:e,guessBrowser:t,guessBrowserVersion:n}=pe(),i=t(),r=n(),s="chrome"===i,o="firefox"===i,a="safari"===i,c=s?r.major:null;function l(e,t){return"function"==typeof e.get?e.get(t):e.find(e=>e.id===t)}function d(e){const t=Array.from(e.values()).find(({nominated:e,type:t})=>"candidate-pair"===t&&e);if(!t)return null;const n=l(e,t.localCandidateId),i=l(e,t.remoteCandidateId),r=[{key:"candidateType",type:"string"},{key:"ip",type:"string"},{key:"port",type:"number"},{key:"priority",type:"number"},{key:"protocol",type:"string"},{key:"url",type:"string"}],s=r.concat([{key:"deleted",type:"boolean"},{key:"relayProtocol",type:"string"},{key:"networkType",type:"string"}]),o=n?s.reduce((e,{key:t,type:i})=>(e[t]=typeof n[t]===i?n[t]:"deleted"!==t&&null,e),{}):null,a=i?r.reduce((e,{key:t,type:n})=>(e[t]=typeof i[t]===n?i[t]:null,e),{}):null;return[{key:"availableIncomingBitrate",type:"number"},{key:"availableOutgoingBitrate",type:"number"},{key:"bytesReceived",type:"number"},{key:"bytesSent",type:"number"},{key:"consentRequestsSent",type:"number"},{key:"currentRoundTripTime",type:"number"},{key:"lastPacketReceivedTimestamp",type:"number"},{key:"lastPacketSentTimestamp",type:"number"},{key:"nominated",type:"boolean"},{key:"priority",type:"number"},{key:"readable",type:"boolean"},{key:"requestsReceived",type:"number"},{key:"requestsSent",type:"number"},{key:"responsesReceived",type:"number"},{key:"responsesSent",type:"number"},{key:"retransmissionsReceived",type:"number"},{key:"retransmissionsSent",type:"number"},{key:"state",type:"string",fixup:e=>"inprogress"===e?"in-progress":e},{key:"totalRoundTripTime",type:"number"},{key:"transportId",type:"string"},{key:"writable",type:"boolean"}].reduce((e,{key:n,type:i,fixup:r})=>(e[n]=typeof t[n]===i?r?r(t[n]):t[n]:null,e),{localCandidate:o,remoteCandidate:a})}function u(e){const t=Array.from(e.values()).find(({nominated:e,type:t})=>"candidate-pair"===t&&e);if(!t)return null;const n=l(e,t.localCandidateId),i=l(e,t.remoteCandidateId),r=[{key:"candidateType",type:"string"},{key:"ip",ffKeys:["address","ipAddress"],type:"string"},{key:"port",ffKeys:["portNumber"],type:"number"},{key:"priority",type:"number"},{key:"protocol",ffKeys:["transport"],type:"string"},{key:"url",type:"string"}],s=r.concat([{key:"deleted",type:"boolean"},{key:"relayProtocol",type:"string"}]),o={host:"host",peerreflexive:"prflx",relayed:"relay",serverreflexive:"srflx"},a=n?s.reduce((e,{ffKeys:t,key:i,type:r})=>{const s=t&&t.find(e=>e in n)||i;return e[i]=typeof n[s]===r?"candidateType"===s&&o[n[s]]||n[s]:"deleted"!==s&&null,e},{}):null,c=i?r.reduce((e,{ffKeys:t,key:n,type:r})=>{const s=t&&t.find(e=>e in i)||n;return e[n]=typeof i[s]===r?"candidateType"===s&&o[i[s]]||i[s]:null,e},{}):null;return[{key:"availableIncomingBitrate",type:"number"},{key:"availableOutgoingBitrate",type:"number"},{key:"bytesReceived",type:"number"},{key:"bytesSent",type:"number"},{key:"consentRequestsSent",type:"number"},{key:"currentRoundTripTime",type:"number"},{key:"lastPacketReceivedTimestamp",type:"number"},{key:"lastPacketSentTimestamp",type:"number"},{key:"nominated",type:"boolean"},{key:"priority",type:"number"},{key:"readable",type:"boolean"},{key:"requestsReceived",type:"number"},{key:"requestsSent",type:"number"},{key:"responsesReceived",type:"number"},{key:"responsesSent",type:"number"},{key:"retransmissionsReceived",type:"number"},{key:"retransmissionsSent",type:"number"},{key:"state",type:"string"},{key:"totalRoundTripTime",type:"number"},{key:"transportId",type:"string"},{key:"writable",type:"boolean"}].reduce((e,{key:n,type:i})=>(e[n]=typeof t[n]===i?t[n]:null,e),{localCandidate:a,remoteCandidate:c})}function h(e,t,n){return e["local"===n?"getSenders":"getReceivers"]().map(({track:e})=>e).filter(e=>e&&e.kind===t)}function p(e,t,n){const i=n.log;return c&&c<67?new Promise((n,i)=>{e.getStats(e=>{n([f(e,t)])},null,i)}):e.getStats(t).then(e=>(i.info("getStats by track successful"),m(e,n))).catch(()=>(i.warn("getStats by track failed. Getting default stats"),e.getStats().then(r=>{i.info("getStats by default successful");const s=function(e,t){if(!e||!t)return!1;if(e.getReceivers){const n=e.getReceivers();for(const e of n)if(e.track&&e.track.id===t.id)return!0}if(e.getRemoteStreams){const n=e.getRemoteStreams();for(const e of n){const n=e.getTracks();for(const e of n)if(e.id===t.id)return!0}}return!1}(e,t);i.info(`Starting filtering stats for ${s?"remote":"local"} track`);const o=function(e,t,n=!1){let i;if(Array.isArray(e))i=new Map(e.map(e=>[e.id||String(Math.random()),e]));else if(e instanceof Map)i=e;else{if("object"!=typeof e||null===e)return new Map;{const t=new Map;Object.keys(e).forEach(n=>{t.set(n,e[n])}),i=t}}if(!i||!t)return new Map;const r=new Map,s=t.id,o=t.kind;let a=null,c=null,l=null;for(const[e,t]of i){if(n&&"inbound-rtp"===t.type&&t.trackIdentifier===s){a=t,c=e,l=t.ssrc;break}if(!n&&"media-source"===t.type&&t.trackIdentifier===s){a=t,c=e;break}"track"===t.type&&t.trackIdentifier===s&&(a||(a=t,c=e))}if(!a)if(n){const e=[];for(const[t,n]of i)"inbound-rtp"!==n.type||n.kind!==o&&n.mediaType!==o||e.push({id:t,stat:n});(1===e.length||e.length>1)&&(a=e[0].stat,c=e[0].id,l=a.ssrc)}else for(const[e,t]of i)if("media-source"===t.type&&t.kind===o){a=t,c=e;break}if(!a)return r;r.set(c,a);const d=new Set;if(n){if(a.codecId&&d.add(a.codecId),a.transportId&&d.add(a.transportId),a.remoteId&&d.add(a.remoteId),l)for(const[e,t]of i)"remote-outbound-rtp"===t.type&&t.ssrc===l&&d.add(e);for(const e of d)i.has(e)&&r.set(e,i.get(e));for(const[e,t]of i)"track"===t.type&&t.trackIdentifier===s&&r.set(e,t)}else{for(const[e,t]of i)if("outbound-rtp"===t.type&&t.mediaSourceId===c){r.set(e,t),t.codecId&&d.add(t.codecId),t.transportId&&d.add(t.transportId);const n=e;for(const[e,t]of i)"remote-inbound-rtp"===t.type&&t.localId===n&&r.set(e,t)}for(const e of d)i.has(e)&&r.set(e,i.get(e))}let u=null;const h=new Set;for(const e of r.values())e.transportId&&h.add(e.transportId);for(const e of h)if(i.has(e)){const t=i.get(e);r.set(e,t),t.selectedCandidatePairId&&(u=t.selectedCandidatePairId),t.localCertificateId&&i.has(t.localCertificateId)&&r.set(t.localCertificateId,i.get(t.localCertificateId)),t.remoteCertificateId&&i.has(t.remoteCertificateId)&&r.set(t.remoteCertificateId,i.get(t.remoteCertificateId))}if(u&&i.has(u)){const e=i.get(u);r.set(u,e),e.localCandidateId&&i.has(e.localCandidateId)&&r.set(e.localCandidateId,i.get(e.localCandidateId)),e.remoteCandidateId&&i.has(e.remoteCandidateId)&&r.set(e.remoteCandidateId,i.get(e.remoteCandidateId))}return r}(r,t,s);return i.info(`Completed filtering stats for ${s?"remote":"local"} track`),m(o,n)})))}function f(e,t){const n=e.result().find(e=>"ssrc"===e.type&&e.stat("googTrackId")===t.id);let i={};return n&&(i.timestamp=Math.round(Number(n.timestamp)),i=n.names().reduce((e,t)=>{switch(t){case"googCodecName":e.codecName=n.stat(t);break;case"googRtt":e.roundTripTime=Number(n.stat(t));break;case"googJitterReceived":e.jitter=Number(n.stat(t));break;case"googFrameWidthInput":e.frameWidthInput=Number(n.stat(t));break;case"googFrameHeightInput":e.frameHeightInput=Number(n.stat(t));break;case"googFrameWidthSent":e.frameWidthSent=Number(n.stat(t));break;case"googFrameHeightSent":e.frameHeightSent=Number(n.stat(t));break;case"googFrameWidthReceived":e.frameWidthReceived=Number(n.stat(t));break;case"googFrameHeightReceived":e.frameHeightReceived=Number(n.stat(t));break;case"googFrameRateInput":e.frameRateInput=Number(n.stat(t));break;case"googFrameRateSent":e.frameRateSent=Number(n.stat(t));break;case"googFrameRateReceived":e.frameRateReceived=Number(n.stat(t));break;case"ssrc":e[t]=n.stat(t);break;case"bytesReceived":case"bytesSent":case"packetsLost":case"packetsReceived":case"packetsSent":case"audioInputLevel":case"audioOutputLevel":e[t]=Number(n.stat(t))}return e},i)),i}function m(e,{simulateExceptionWhileStandardizingStats:t=!1}){if(t)throw new Error("Error while gathering stats");let n=null;const i=[];let r=null,s=null,o=null,a=null,c=null;e.forEach(e=>{const{type:t}=e;switch(t){case"inbound-rtp":n=e;break;case"outbound-rtp":i.push(e);break;case"media-source":c=e;break;case"track":o=e;break;case"codec":a=e;break;case"remote-inbound-rtp":r=e;break;case"remote-outbound-rtp":s=e}});const l=o?o.remoteSource:!c,d=[],u=l?s:r;return(l?[n]:i).forEach(e=>{const t={},n=[e,c,o,a,u&&u.ssrc===e.ssrc?u:null];function i(e){const t=n.find(t=>t&&void 0!==t[e])||null;return t?t[e]:null}const r=i("ssrc");"number"==typeof r&&(t.ssrc=String(r));const s=i("timestamp");t.timestamp=Math.round(s);let h=i("mimeType");"string"==typeof h&&(h=h.split("/"),t.codecName=h[h.length-1]);const p=i("roundTripTime");"number"==typeof p&&(t.roundTripTime=Math.round(1e3*p));const f=i("jitter");"number"==typeof f&&(t.jitter=Math.round(1e3*f));const m=i("frameWidth");"number"==typeof m&&(l?t.frameWidthReceived=m:(t.frameWidthSent=m,t.frameWidthInput=o?o.frameWidth:c.width));const g=i("frameHeight");"number"==typeof g&&(l?t.frameHeightReceived=g:(t.frameHeightSent=g,t.frameHeightInput=o?o.frameHeight:c.height));const _=i("framesPerSecond");"number"!=typeof _&&null!==_||(t[l?"frameRateReceived":"frameRateSent"]=_);const v=i("qualityLimitationReason");"string"==typeof v&&(t.qualityLimitationReason=v);const b=i("bytesReceived");"number"==typeof b&&(t.bytesReceived=b);const y=i("bytesSent");"number"==typeof y&&(t.bytesSent=y);const k=i("packetsLost");"number"==typeof k&&(t.packetsLost=k);const w=i("packetsReceived");"number"==typeof w&&(t.packetsReceived=w);const S=i("packetsSent");"number"==typeof S&&(t.packetsSent=S);let T=i("audioLevel");"number"==typeof T&&(T=Math.round(32767*T),l?t.audioOutputLevel=T:t.audioInputLevel=T);const C=i("totalPacketSendDelay");"number"==typeof C&&(t.totalPacketSendDelay=C);const P=i("totalEncodeTime");"number"==typeof P&&(t.totalEncodeTime=P);const E=i("framesEncoded");"number"==typeof E&&(t.framesEncoded=E);const O=i("estimatedPlayoutTimestamp");"number"==typeof O&&(t.estimatedPlayoutTimestamp=O);const L=i("totalDecodeTime");"number"==typeof L&&(t.totalDecodeTime=L);const R=i("framesDecoded");"number"==typeof R&&(t.framesDecoded=R);const I=i("jitterBufferDelay");"number"==typeof I&&(t.jitterBufferDelay=I);const M=i("jitterBufferEmittedCount");"number"==typeof M&&(t.jitterBufferEmittedCount=M);const D=i("freezeCount");"number"==typeof D&&(t.freezeCount=D),d.push(t)}),d}function g(e=new Map,{isRemote:t,simulateExceptionWhileStandardizingStats:n=!1}){if(n)throw new Error("Error while gathering stats");let i=null,r=null;e.forEach(t=>{const{isRemote:n,remoteId:s,type:o}=t;if(!n)switch(o){case"inbound-rtp":i=t,r=l(e,s);break;case"outbound-rtp":r=t,i=l(e,s)}});const s=t?i:r,o=t?r:i;function a(e){return s&&void 0!==s[e]?s[e]:o&&void 0!==o[e]?o[e]:null}const c={},d=a("timestamp");c.timestamp=Math.round(d);const u=a("ssrc");"number"==typeof u&&(c.ssrc=String(u));const h=a("bytesSent");"number"==typeof h&&(c.bytesSent=h);const p=a("packetsLost");"number"==typeof p&&(c.packetsLost=p);const f=a("packetsSent");"number"==typeof f&&(c.packetsSent=f);const m=a("roundTripTime");"number"==typeof m&&(c.roundTripTime=Math.round(1e3*m));const g=a("jitter");"number"==typeof g&&(c.jitter=Math.round(1e3*g));const _=a("framesPerSecond");"number"!=typeof _&&null!==_||(c.frameRateSent=_);const v=a("bytesReceived");"number"==typeof v&&(c.bytesReceived=v);const b=a("packetsReceived");"number"==typeof b&&(c.packetsReceived=b);const y=a("framesPerSecond");"number"!=typeof y&&null!==y||(c.frameRateReceived=y);const k=a("totalPacketSendDelay");"number"==typeof k&&(c.totalPacketSendDelay=k);const w=a("totalEncodeTime");"number"==typeof w&&(c.totalEncodeTime=w);const S=a("framesEncoded");"number"==typeof S&&(c.framesEncoded=S);const T=a("estimatedPlayoutTimestamp");"number"==typeof T&&(c.estimatedPlayoutTimestamp=T);const C=a("totalDecodeTime");"number"==typeof C&&(c.totalDecodeTime=C);const P=a("framesDecoded");"number"==typeof P&&(c.framesDecoded=P);const E=a("jitterBufferDelay");"number"==typeof E&&(c.jitterBufferDelay=E);const O=a("jitterBufferEmittedCount");"number"==typeof O&&(c.jitterBufferEmittedCount=O);const L=a("freezeCount");return"number"==typeof L&&(c.freezeCount=L),c}return ve=function(t,n){return t&&"function"==typeof t.getStats?function(t,n){const i=h(t,"audio","local"),r=h(t,"video","local"),c=h(t,"audio"),l=h(t,"video"),f={activeIceCandidatePair:null,localAudioTrackStats:[],localVideoTrackStats:[],remoteAudioTrackStats:[],remoteVideoTrackStats:[]},m=e([[i,"localAudioTrackStats",!1],[r,"localVideoTrackStats",!1],[c,"remoteAudioTrackStats",!0],[l,"remoteVideoTrackStats",!0]],([e,i,r])=>e.map(e=>function(e,t,n={}){if(void 0!==n.testForChrome||s)return p(e,t,n);if(void 0!==n.testForFirefox||o)return function(e,t,n){return e.getStats(t).then(e=>[g(e,n)])}(e,t,n);if(void 0!==n.testForSafari||a)return p(e,t,n);return Promise.reject(new Error("RTCPeerConnection#getStats() not supported"))}(t,e,Object.assign({isRemote:r},n)).then(t=>{t.forEach(t=>{t.trackId=e.id,f[i].push(t)})})));return Promise.all(m).then(()=>function(e,t={}){if(void 0!==t.testForChrome||s||void 0!==t.testForSafari||a)return e.getStats().then(d);if(void 0!==t.testForFirefox||o)return e.getStats().then(u);return Promise.reject(new Error("RTCPeerConnection#getStats() not supported"))}(t,n)).then(e=>(f.activeIceCandidatePair=e,f))}(t,n):Promise.reject(new Error("Given PeerConnection does not support getStats"))},ve}function Ee(){if(ke)return ye;return ke=1,ye=function(e={audio:!0,video:!0}){return"object"==typeof navigator&&"object"==typeof navigator.mediaDevices&&"function"==typeof navigator.mediaDevices.getUserMedia?navigator.mediaDevices.getUserMedia(e):Promise.reject(new Error("getUserMedia is not supported"))}}var Oe,Le,Re,Ie,Me,De={exports:{}},Ae={exports:{}};function xe(){if(Oe)return Ae.exports;Oe=1;var e,t="object"==typeof Reflect?Reflect:null,n=t&&"function"==typeof t.apply?t.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};e=t&&"function"==typeof t.ownKeys?t.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var i=Number.isNaN||function(e){return e!=e};function r(){r.init.call(this)}Ae.exports=r,Ae.exports.once=function(e,t){return new Promise(function(n,i){function r(n){e.removeListener(t,s),i(n)}function s(){"function"==typeof e.removeListener&&e.removeListener("error",r),n([].slice.call(arguments))}f(e,t,s,{once:!0}),"error"!==t&&function(e,t,n){"function"==typeof e.on&&f(e,"error",t,n)}(e,r,{once:!0})})},r.EventEmitter=r,r.prototype._events=void 0,r.prototype._eventsCount=0,r.prototype._maxListeners=void 0;var s=10;function o(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function a(e){return void 0===e._maxListeners?r.defaultMaxListeners:e._maxListeners}function c(e,t,n,i){var r,s,c,l;if(o(n),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),s=e._events),c=s[t]),void 0===c)c=s[t]=n,++e._eventsCount;else if("function"==typeof c?c=s[t]=i?[n,c]:[c,n]:i?c.unshift(n):c.push(n),(r=a(e))>0&&c.length>r&&!c.warned){c.warned=!0;var d=new Error("Possible EventEmitter memory leak detected. "+c.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");d.name="MaxListenersExceededWarning",d.emitter=e,d.type=t,d.count=c.length,l=d,console&&console.warn&&console.warn(l)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,n){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},r=l.bind(i);return r.listener=n,i.wrapFn=r,r}function u(e,t,n){var i=e._events;if(void 0===i)return[];var r=i[t];return void 0===r?[]:"function"==typeof r?n?[r.listener||r]:[r]:n?function(e){for(var t=new Array(e.length),n=0;n<t.length;++n)t[n]=e[n].listener||e[n];return t}(r):p(r,r.length)}function h(e){var t=this._events;if(void 0!==t){var n=t[e];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function p(e,t){for(var n=new Array(t),i=0;i<t;++i)n[i]=e[i];return n}function f(e,t,n,i){if("function"==typeof e.on)i.once?e.once(t,n):e.on(t,n);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,function r(s){i.once&&e.removeEventListener(t,r),n(s)})}}return Object.defineProperty(r,"defaultMaxListeners",{enumerable:!0,get:function(){return s},set:function(e){if("number"!=typeof e||e<0||i(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");s=e}}),r.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},r.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||i(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},r.prototype.getMaxListeners=function(){return a(this)},r.prototype.emit=function(e){for(var t=[],i=1;i<arguments.length;i++)t.push(arguments[i]);var r="error"===e,s=this._events;if(void 0!==s)r=r&&void 0===s.error;else if(!r)return!1;if(r){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var c=s[e];if(void 0===c)return!1;if("function"==typeof c)n(c,this,t);else{var l=c.length,d=p(c,l);for(i=0;i<l;++i)n(d[i],this,t)}return!0},r.prototype.addListener=function(e,t){return c(this,e,t,!1)},r.prototype.on=r.prototype.addListener,r.prototype.prependListener=function(e,t){return c(this,e,t,!0)},r.prototype.once=function(e,t){return o(t),this.on(e,d(this,e,t)),this},r.prototype.prependOnceListener=function(e,t){return o(t),this.prependListener(e,d(this,e,t)),this},r.prototype.removeListener=function(e,t){var n,i,r,s,a;if(o(t),void 0===(i=this._events))return this;if(void 0===(n=i[e]))return this;if(n===t||n.listener===t)0===--this._eventsCount?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,n.listener||t));else if("function"!=typeof n){for(r=-1,s=n.length-1;s>=0;s--)if(n[s]===t||n[s].listener===t){a=n[s].listener,r=s;break}if(r<0)return this;0===r?n.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(n,r),1===n.length&&(i[e]=n[0]),void 0!==i.removeListener&&this.emit("removeListener",e,a||t)}return this},r.prototype.off=r.prototype.removeListener,r.prototype.removeAllListeners=function(e){var t,n,i;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[e]&&(0===--this._eventsCount?this._events=Object.create(null):delete n[e]),this;if(0===arguments.length){var r,s=Object.keys(n);for(i=0;i<s.length;++i)"removeListener"!==(r=s[i])&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=n[e]))this.removeListener(e,t);else if(void 0!==t)for(i=t.length-1;i>=0;i--)this.removeListener(e,t[i]);return this},r.prototype.listeners=function(e){return u(this,e,!0)},r.prototype.rawListeners=function(e){return u(this,e,!1)},r.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):h.call(e,t)},r.prototype.listenerCount=h,r.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]},Ae.exports}function je(){if(Re)return Le;Re=1;const{EventEmitter:e}=xe();return Le=class{constructor(){Object.defineProperties(this,{_eventEmitter:{value:new e}})}dispatchEvent(e){return this._eventEmitter.emit(e.type,e)}addEventListener(){return this._eventEmitter.addListener(...arguments)}removeEventListener(){return this._eventEmitter.removeListener(...arguments)}},Le}function $e(){if(Me)return Ie;Me=1;const{defer:e}=pe(),t={high:new Set(["low"]),low:new Set(["high"])};function n(e,t){return new Error(`Cannot transition from "${e}" to "${t}"`)}return Ie=class{constructor(e="low"){let t=e;Object.defineProperties(this,{_state:{set:function(e){if(t!==e){t=e;const n=this._whenDeferreds.get(t);n.forEach(e=>e.resolve(this)),n.clear()}},get:function(){return t}},_whenDeferreds:{value:new Map([["high",new Set],["low",new Set]])}})}get state(){return this._state}lower(){return this.transition("low")}raise(){return this.transition("high")}transition(e){if(!t[this.state].has(e))throw n(this.state,e);return this._state=e,this}when(i){if(this.state===i)return Promise.resolve(this);if(!t[this.state].has(i))return Promise.reject(n(this.state,i));const r=e();return this._whenDeferreds.get(i).add(r),r.promise}}}var Ne,Ve,Fe,Be,Ue,He,We,qe,Qe,ze,Ge,Ke,Ye,Je,Xe,Ze,et,tt,nt,it,rt,st,ot,at,ct,lt,dt,ut,ht,pt,ft,mt,gt,_t,vt,bt,yt,kt,wt,St,Tt,Ct,Pt,Et,Ot,Lt,Rt,It,Mt,Dt,At,xt,jt,$t,Nt,Vt,Ft,Bt,Ut,Ht,Wt,qt,Qt,zt,Gt,Kt,Yt,Jt,Xt,Zt,en,tn,nn,rn,sn,on,an,cn,ln,dn,un,hn,pn={};function fn(){if(Ne)return pn;Ne=1;const{flatMap:e}=pe();function t(e,t){return(t.match(new RegExp(e,"gm"))||[]).reduce((t,n)=>{const i=n.match(new RegExp(e));return i?t.add(i[1]):t},new Set)}function n(e){return t("^a=msid:.+ +(.+) *$",e)}function i(e,t=".*",n=".*"){return e.split("\r\nm=").slice(1).map(e=>`m=${e}`).filter(e=>{const i=new RegExp(`m=${t}`,"gm"),r=new RegExp(`a=${n}`,"gm");return i.test(e)&&r.test(e)})}function r(e){return Array.from(t("^a=ssrc:([0-9]+) +.*$",e))}function s(t,n){const s=i(t),o=new RegExp(`^a=msid:[^ ]+ +${n} *$`,"gm"),a=s.filter(e=>e.match(o));return new Set(e(a,r))}return pn.getMediaSections=i,pn.getTrackIds=n,pn.getSSRCs=s,pn.updateTrackIdsToSSRCs=function(e,t){const i=function(e){return new Map(Array.from(n(e)).map(t=>[t,s(e,t)]))}(t),r=new Map;i.forEach((n,i)=>{if(!e.has(i))return void e.set(i,n);const s=Array.from(e.get(i)),o=Array.from(n);s.forEach((e,n)=>{const i=o[n];r.set(i,e);const s=`^a=ssrc:${i} (.*)$`,a=`a=ssrc:${e} $1`;t=t.replace(new RegExp(s,"gm"),a)})});const o="^(a=ssrc-group:[^ ]+ +)(.*)$";return(t.match(new RegExp(o,"gm"))||[]).forEach(e=>{const n=e.match(new RegExp(o));if(!n)return;const i=n[1],s=n[2].split(" ").map(e=>{const t=r.get(e);return t||e}).join(" ");t=t.replace(n[0],i+s)}),t},pn}function mn(){if(Fe)return Ve;Fe=1;const e=je(),t=$e(),{updateTrackIdsToSSRCs:n}=fn(),{delegateMethods:i,interceptEvent:r,isIOSChrome:s,legacyPromise:o,proxyProperties:a}=pe();class c extends e{constructor(e={},n={}){super();const i=n.chromeSpecificConstraints,s=Object.assign(e.iceTransportPolicy?{iceTransports:e.iceTransportPolicy}:{},e);r(this,"datachannel"),r(this,"signalingstatechange");const o=new RTCPeerConnection(s,i);Object.defineProperties(this,{_appliedTracksToSSRCs:{value:new Map,writable:!0},_applyCodecPreferences:{value:n.applyCodecPreferences||(()=>{})},_audioTransceiver:{value:null,writable:!0},_peerConnection:{value:o},_pendingLocalOffer:{value:null,writable:!0},_pendingRemoteOffer:{value:null,writable:!0},_rolledBackTracksToSSRCs:{value:new Map,writable:!0},_signalingStateLatch:{value:new t},_tracksToSSRCs:{value:new Map,writable:!0},_videoTransceiver:{value:null,writable:!0}}),o.addEventListener("datachannel",e=>{p(e.channel),this.dispatchEvent(e)}),o.addEventListener("signalingstatechange",(...e)=>{"stable"===o.signalingState&&(this._appliedTracksToSSRCs=new Map(this._tracksToSSRCs)),this._pendingLocalOffer||this._pendingRemoteOffer||this.dispatchEvent(...e)}),a(RTCPeerConnection.prototype,this,o)}get localDescription(){return this._pendingLocalOffer?this._pendingLocalOffer:this._peerConnection.localDescription}get remoteDescription(){return this._pendingRemoteOffer?this._pendingRemoteOffer:this._peerConnection.remoteDescription}get signalingState(){return this._pendingLocalOffer?"have-local-offer":this._pendingRemoteOffer?"have-remote-offer":this._peerConnection.signalingState}addIceCandidate(e,...t){let n;return n="have-remote-offer"===this.signalingState?this._signalingStateLatch.when("low").then(()=>this._peerConnection.addIceCandidate(e)):this._peerConnection.addIceCandidate(e),t.length>0?o(n,...t):n}close(){"closed"!==this.signalingState&&(this._pendingLocalOffer=null,this._pendingRemoteOffer=null,this._peerConnection.close())}createAnswer(...e){let t;return t=this._pendingRemoteOffer?this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(()=>(this._signalingStateLatch.lower(),this._peerConnection.createAnswer())).then(e=>(this._pendingRemoteOffer=null,this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:"answer",sdp:n(this._tracksToSSRCs,e.sdp)})),e=>{throw this._pendingRemoteOffer=null,e}):this._peerConnection.createAnswer().then(e=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:"answer",sdp:n(this._tracksToSSRCs,e.sdp)}))),e.length>1?o(t,...e):t}createOffer(...e){const[t,i,r]=e,a=r||t||{};if(s()){if(a.offerToReceiveVideo&&!this._audioTransceiver&&!d(this,"audio")){delete a.offerToReceiveAudio;try{this._audioTransceiver=this.addTransceiver("audio",{direction:"recvonly"}),this._applyCodecPreferences(this._audioTransceiver)}catch(e){return Promise.reject(e)}}if(a.offerToReceiveVideo&&!this._videoTransceiver&&!d(this,"video")){delete a.offerToReceiveVideo;try{this._videoTransceiver=this.addTransceiver("video",{direction:"recvonly"}),this._applyCodecPreferences(this._videoTransceiver)}catch(e){return Promise.reject(e)}}}const c=this._peerConnection.createOffer(a).then(e=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:e.type,sdp:n(this._tracksToSSRCs,e.sdp)})));return e.length>1?o(c,t,i):c}createDataChannel(e,t){t=function(e){e=Object.assign({},e),h()&&"maxPacketLifeTime"in e&&(e.maxRetransmitTime=e.maxPacketLifeTime);return e}(t);const n=this._peerConnection.createDataChannel(e,t);return p(n),n}setLocalDescription(...e){const[t,n,i]=e;this._rolledBackTracksToSSRCs.size>0&&(this._tracksToSSRCs=new Map(this._rolledBackTracksToSSRCs),this._rolledBackTracksToSSRCs.clear());const r=l(this,!0,t);return e.length>1?o(r,n,i):r}setRemoteDescription(...e){const[t,n,i]=e;this._rolledBackTracksToSSRCs.clear();const r=l(this,!1,t);return e.length>1?o(r,n,i):r}}function l(e,t,n){const i=t?e._pendingLocalOffer:e._pendingRemoteOffer,r=t?e._pendingRemoteOffer:e._pendingLocalOffer,s=t?"have-local-offer":"have-remote-offer",o=t?"setLocalDescription":"setRemoteDescription";let a;if(!t&&r&&"answer"===n.type)a=function(e,t){const n=e._pendingLocalOffer;return e._peerConnection.setLocalDescription(n).then(()=>(e._pendingLocalOffer=null,e.setRemoteDescription(t))).then(()=>{e._signalingStateLatch.lower()})}(e,n);else if("offer"===n.type){if(e.signalingState!==s&&"stable"!==e.signalingState)return Promise.reject(new Error(`Cannot set ${t?"local":"remote"} offer in state ${e.signalingState}`));i||"low"!==e._signalingStateLatch.state||e._signalingStateLatch.raise();const r=e.signalingState;c=u(n),t?e._pendingLocalOffer=c:e._pendingRemoteOffer=c,a=Promise.resolve(),e.signalingState!==r&&a.then(()=>e.dispatchEvent(new Event("signalingstatechange")))}else"rollback"===n.type&&(e.signalingState!==s?a=Promise.reject(new Error(`Cannot rollback ${t?"local":"remote"} description in ${e.signalingState}`)):(t?e._pendingLocalOffer=null:e._pendingRemoteOffer=null,e._rolledBackTracksToSSRCs=new Map(e._tracksToSSRCs),e._tracksToSSRCs=new Map(e._appliedTracksToSSRCs),a=Promise.resolve(),a.then(()=>e.dispatchEvent(new Event("signalingstatechange")))));var c;return a||e._peerConnection[o](u(n))}function d(e,t){return!!e.getTransceivers().find(({receiver:e={}})=>{const{track:n={}}=e;return n.kind===t})}function u(e){return e instanceof RTCSessionDescription?e:new RTCSessionDescription(e)}function h(){return"maxRetransmitTime"in RTCDataChannel.prototype&&!("maxPacketLifeTime"in RTCDataChannel.prototype)}function p(e){return Object.defineProperty(e,"maxRetransmits",{value:65535===e.maxRetransmits?null:e.maxRetransmits}),h()&&Object.defineProperty(e,"maxPacketLifeTime",{value:65535===e.maxRetransmitTime?null:e.maxRetransmitTime}),e}return i(RTCPeerConnection.prototype,c.prototype,"_peerConnection"),Ve=c}function gn(){if(qe)return De.exports;if(qe=1,"function"==typeof RTCPeerConnection){const{guessBrowser:e}=pe();switch(e()){case"chrome":De.exports=mn();break;case"firefox":De.exports=function(){if(Ue)return Be;Ue=1;const e=je(),{updateTrackIdsToSSRCs:t}=fn(),{delegateMethods:n,interceptEvent:i,legacyPromise:r,proxyProperties:s}=pe();class o extends e{constructor(e){super(),i(this,"signalingstatechange");const t=new RTCPeerConnection(e);let n;Object.defineProperties(this,{_initiallyNegotiatedDtlsRole:{value:null,writable:!0},_isClosed:{value:!1,writable:!0},_peerConnection:{value:t},_rollingBack:{value:!1,writable:!0},_tracksToSSRCs:{value:new Map},peerIdentity:{enumerable:!0,value:Promise.resolve({idp:"",name:""})}}),t.addEventListener("signalingstatechange",(...e)=>{this._rollingBack||this.signalingState===n||(n=this.signalingState,this._isClosed?setTimeout(()=>this.dispatchEvent(...e)):this.dispatchEvent(...e))}),s(RTCPeerConnection.prototype,this,t)}get iceGatheringState(){return this._isClosed?"complete":this._peerConnection.iceGatheringState}get localDescription(){return l(this._peerConnection.localDescription,this._initiallyNegotiatedDtlsRole)}get signalingState(){return this._isClosed?"closed":this._peerConnection.signalingState}createAnswer(...e){let t;return t=this._peerConnection.createAnswer().then(e=>(c(this,e),l(e,this._initiallyNegotiatedDtlsRole))),"function"==typeof e[0]?r(t,...e):t}createOffer(...e){const[n,i,s]=e,o=s||n||{};let c;return c="have-local-offer"===this.signalingState||"have-remote-offer"===this.signalingState?a(this,"have-local-offer"===this.signalingState,()=>this.createOffer(o)):this._peerConnection.createOffer(o),c=c.then(e=>new RTCSessionDescription({type:e.type,sdp:t(this._tracksToSSRCs,e.sdp)})),e.length>1?r(c,n,i):c}setLocalDescription(...e){const[t,...n]=e;let i;return t&&"answer"===t.type&&"have-local-offer"===this.signalingState&&(i=Promise.reject(new Error("Cannot set local answer in state have-local-offer"))),i?e.length>1?r(i,...n):i:this._peerConnection.setLocalDescription(...e)}setRemoteDescription(...e){const[t,...n]=e;let i;return t&&"have-remote-offer"===this.signalingState&&("answer"===t.type?i=Promise.reject(new Error("Cannot set remote answer in state have-remote-offer")):"offer"===t.type&&(i=a(this,!1,()=>this._peerConnection.setRemoteDescription(t)))),i||(i=this._peerConnection.setRemoteDescription(t)),i=i.then(()=>c(this,t,!0)),e.length>1?r(i,...n):i}close(){"closed"!==this.signalingState&&(this._isClosed=!0,this._peerConnection.close())}}function a(e,t,n){const i=t?"setLocalDescription":"setRemoteDescription";return e._rollingBack=!0,e._peerConnection[i](new RTCSessionDescription({type:"rollback"})).then(n).then(t=>(e._rollingBack=!1,t),t=>{throw e._rollingBack=!1,t})}function c(e,t,n){if(e._initiallyNegotiatedDtlsRole||"offer"===t.type)return;const i=t.sdp.match(/a=setup:([a-z]+)/);if(!i)return;const r=i[1];e._initiallyNegotiatedDtlsRole=n?{active:"passive",passive:"active"}[r]:r}function l(e,t){return e&&"answer"===e.type&&t?new RTCSessionDescription({type:e.type,sdp:e.sdp.replace(/a=setup:[a-z]+/g,"a=setup:"+t)}):e}return n(RTCPeerConnection.prototype,o.prototype,"_peerConnection"),Be=o}();break;case"safari":De.exports=function(){if(We)return He;We=1;const e=je(),t=$e(),{updateTrackIdsToSSRCs:n}=fn(),{delegateMethods:i,interceptEvent:r,proxyProperties:s}=pe();class o extends e{constructor(e,n={}){super(),r(this,"datachannel"),r(this,"iceconnectionstatechange"),r(this,"signalingstatechange"),r(this,"track");const i=new RTCPeerConnection(e);Object.defineProperties(this,{_appliedTracksToSSRCs:{value:new Map,writable:!0},_applyCodecPreferences:{value:n.applyCodecPreferences||(()=>{})},_audioTransceiver:{value:null,writable:!0},_isClosed:{value:!1,writable:!0},_peerConnection:{value:i},_pendingLocalOffer:{value:null,writable:!0},_pendingRemoteOffer:{value:null,writable:!0},_rolledBackTracksToSSRCs:{value:new Map,writable:!0},_signalingStateLatch:{value:new t},_tracksToSSRCs:{value:new Map,writable:!0},_videoTransceiver:{value:null,writable:!0}}),i.addEventListener("datachannel",e=>{l(e.channel),this.dispatchEvent(e)}),i.addEventListener("iceconnectionstatechange",(...e)=>{this._isClosed||this.dispatchEvent(...e)}),i.addEventListener("signalingstatechange",(...e)=>{this._isClosed||("stable"===i.signalingState&&(this._appliedTracksToSSRCs=new Map(this._tracksToSSRCs)),this._pendingLocalOffer||this._pendingRemoteOffer||this.dispatchEvent(...e))}),i.addEventListener("track",e=>{this._pendingRemoteOffer=null,this.dispatchEvent(e)}),s(RTCPeerConnection.prototype,this,i)}get localDescription(){return this._pendingLocalOffer||this._peerConnection.localDescription}get iceConnectionState(){return this._isClosed?"closed":this._peerConnection.iceConnectionState}get iceGatheringState(){return this._isClosed?"complete":this._peerConnection.iceGatheringState}get remoteDescription(){return this._pendingRemoteOffer||this._peerConnection.remoteDescription}get signalingState(){return this._isClosed?"closed":this._pendingLocalOffer?"have-local-offer":this._pendingRemoteOffer?"have-remote-offer":this._peerConnection.signalingState}addIceCandidate(e){return"have-remote-offer"===this.signalingState?this._signalingStateLatch.when("low").then(()=>this._peerConnection.addIceCandidate(e)):this._peerConnection.addIceCandidate(e)}createOffer(e){if((e=Object.assign({},e)).offerToReceiveVideo&&!this._audioTransceiver&&!c(this,"audio")){delete e.offerToReceiveAudio;try{this._audioTransceiver=this.addTransceiver("audio",{direction:"recvonly"}),this._applyCodecPreferences(this._audioTransceiver)}catch(e){return Promise.reject(e)}}if(e.offerToReceiveVideo&&!this._videoTransceiver&&!c(this,"video")){delete e.offerToReceiveVideo;try{this._videoTransceiver=this.addTransceiver("video",{direction:"recvonly"}),this._applyCodecPreferences(this._videoTransceiver)}catch(e){return Promise.reject(e)}}return this._peerConnection.createOffer(e).then(e=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:e.type,sdp:n(this._tracksToSSRCs,e.sdp)})))}createAnswer(e){return this._pendingRemoteOffer?this._peerConnection.setRemoteDescription(this._pendingRemoteOffer).then(()=>(this._signalingStateLatch.lower(),this._peerConnection.createAnswer())).then(e=>(this._pendingRemoteOffer=null,this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:e.type,sdp:n(this._tracksToSSRCs,e.sdp)})),e=>{throw this._pendingRemoteOffer=null,e}):this._peerConnection.createAnswer(e).then(e=>(this._rolledBackTracksToSSRCs.clear(),new RTCSessionDescription({type:e.type,sdp:n(this._tracksToSSRCs,e.sdp)})))}createDataChannel(e,t){const n=this._peerConnection.createDataChannel(e,t);return l(n),n}removeTrack(e){e.replaceTrack(null),this._peerConnection.removeTrack(e)}setLocalDescription(e){return this._rolledBackTracksToSSRCs.size>0&&(this._tracksToSSRCs=new Map(this._rolledBackTracksToSSRCs),this._rolledBackTracksToSSRCs.clear()),a(this,!0,e)}setRemoteDescription(e){return this._rolledBackTracksToSSRCs.clear(),a(this,!1,e)}close(){this._isClosed||(this._isClosed=!0,this._peerConnection.close())}}function a(e,t,n){const i=t?e._pendingLocalOffer:e._pendingRemoteOffer,r=t?e._pendingRemoteOffer:e._pendingLocalOffer,s=t?"have-local-offer":"have-remote-offer",o=t?"setLocalDescription":"setRemoteDescription";if(!t&&r&&"answer"===n.type)return function(e,t){const n=e._pendingLocalOffer;return e._peerConnection.setLocalDescription(n).then(()=>(e._pendingLocalOffer=null,e.setRemoteDescription(t))).then(()=>e._signalingStateLatch.lower())}(e,n);if("offer"===n.type){if(e.signalingState!==s&&"stable"!==e.signalingState)return Promise.reject(new Error(`Cannot set ${t?"local":"remote"}\n offer in state ${e.signalingState}`));i||"low"!==e._signalingStateLatch.state||e._signalingStateLatch.raise();const r=e.signalingState;return a=n,t?e._pendingLocalOffer=a:e._pendingRemoteOffer=a,e.signalingState!==r?Promise.resolve().then(()=>e.dispatchEvent(new Event("signalingstatechange"))):Promise.resolve()}return"rollback"===n.type?e.signalingState!==s?Promise.reject(new Error(`Cannot rollback \n ${t?"local":"remote"} description in ${e.signalingState}`)):(t?e._pendingLocalOffer=null:e._pendingRemoteOffer=null,e._rolledBackTracksToSSRCs=new Map(e._tracksToSSRCs),e._tracksToSSRCs=new Map(e._appliedTracksToSSRCs),Promise.resolve().then(()=>e.dispatchEvent(new Event("signalingstatechange")))):e._peerConnection[o](n);var a}function c(e,t){return!!e.getTransceivers().find(({receiver:e={}})=>{const{track:n={}}=e;return n.kind===t})}function l(e){return Object.defineProperties(e,{maxPacketLifeTime:{value:65535===e.maxPacketLifeTime?null:e.maxPacketLifeTime},maxRetransmits:{value:65535===e.maxRetransmits?null:e.maxRetransmits}})}return i(RTCPeerConnection.prototype,o.prototype,"_peerConnection"),He=o}();break;default:De.exports=RTCPeerConnection}}else De.exports=function(){throw new Error("RTCPeerConnection is not supported")};return De.exports}function _n(){if(ze)return Qe;ze=1;const e={};return Object.defineProperties(e,{getStats:{enumerable:!0,value:Pe()},getUserMedia:{enumerable:!0,value:Ee()},RTCPeerConnection:{enumerable:!0,value:gn()}}),Qe=e}function vn(){return Ke?Ge:(Ke=1,Ge=function(e,t){if(e&&t)if(e.super_=t,"function"==typeof Object.create)e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}});else{class n{constructor(){}}n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}})}function bn(){if(Je)return Ye;function e(){return!!(navigator&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2)}function t(){return e()&&window.screen.width>=744&&(/Macintosh/i.test(navigator.userAgent)||/iPad/.test(navigator.userAgent)||/iPad/.test(navigator.platform))}function n(){return e()&&window.screen.width<=476&&(/Macintosh/i.test(navigator.userAgent)||/iPhone/.test(navigator.userAgent)||/iPhone/.test(navigator.platform))}return Je=1,Ye={isAndroid:function(){return/Android/.test(navigator.userAgent)},isIOS:function(){return t()||n()},isIpad:t,isIphone:n,isMobile:function(){return/Mobi/.test(navigator.userAgent)},isNonChromiumEdge:function(e){return"chrome"===e&&/Edge/.test(navigator.userAgent)&&("undefined"==typeof chrome||void 0===chrome.runtime)},mobileWebKitBrowser:function(e){return"safari"!==e?null:"brave"in navigator?"brave":["edge","edg"].find(e=>navigator.userAgent.toLowerCase().includes(e))||null},rebrandedChromeBrowser:function(e){if("chrome"!==e)return null;if("brave"in navigator)return"brave";const t=function(e){const t=[],n=[];for(let i=0;i<e.length;i++)if("("===e[i])t.push(i);else if(")"===e[i]&&t.length>0){const r=t.pop();0===t.length&&n.push(e.substring(r,i+1))}return n}(navigator.userAgent).reduce((e,t)=>e.replace(t,""),navigator.userAgent).match(/[^\s]+/g)||[],[,,...n]=t.map(e=>e.split("/")[0].toLowerCase());return n.find(e=>!["chrome","mobile","safari"].includes(e))||null}},Ye}function yn(){if(Ze)return Xe;return Ze=1,Xe=function(e,t,n){n="number"==typeof n?n:250;const i=e.createMediaStreamSource(t),r=e.createAnalyser();r.fftSize=2048,i.connect(r);const s=new Uint8Array(r.fftSize);let o=!1;return setTimeout(()=>{o=!0},n),function e(){return o?Promise.resolve(!0):(r.getByteTimeDomainData(s),s.some(e=>128!==e&&0!==e)?Promise.resolve(!1):function(e){return e="number"==typeof e?e:0,new Promise(t=>setTimeout(t,e))}().then(e))}().then(e=>(i.disconnect(),e),e=>{throw i.disconnect(),e})},Xe}function kn(){if(tt)return et;tt=1;const e=yn();return et=function(t){const n=X(),i={},r=n.getOrCreate(i);let s=3;return function n(){return s--,e(r,t.srcObject,250).then(e=>!!e&&(!(s>0)||n())).catch(()=>!0)}().finally(()=>{n.release(i)})}}function wn(){if(it)return nt;it=1;const{defer:e}=Ce();return nt=new class{constructor(){Object.defineProperties(this,{_audio:{value:e(),writable:!0},_video:{value:e(),writable:!0}}),this._audio.resolve(),this._video.resolve()}resolveDeferred(e){"audio"===e?this._audio.resolve():this._video.resolve()}startDeferred(t){"audio"===t?this._audio=e():this._video=e()}whenResolved(e){return"audio"===e?this._audio.promise:this._video.promise}}}function Sn(){if(st)return rt;st=1;const{EventEmitter:e}=xe(),{hidePrivateAndCertainPublicPropertiesInClass:t}=Ce();return rt=t(e,["domain"])}function Tn(){if(at)return ot;at=1;const e=Sn(),{buildLogLevels:t,valueToJSON:n}=Ce(),i=ae().DEFAULT_LOG_LEVEL,r=ce();let s=0;return ot=class extends e{constructor(e,n,o){o=Object.assign({name:e,log:null,logLevel:i},o),super();const a=String(o.name),c=t(o.logLevel),l=o.log?o.log.createLog("media",this):new r("media",this,c,o.loggerName);Object.defineProperties(this,{_instanceId:{value:++s},_log:{value:l},kind:{enumerable:!0,value:n},name:{enumerable:!0,value:a}})}toJSON(){return n(this)}},ot}function Cn(){if(lt)return ct;lt=1;const{isIOS:e}=bn(),{waitForEvent:t,waitForSometime:n}=Ce(),i=wn(),r=Tn();return ct=class extends r{constructor(t,n){n=Object.assign({playPausedElementsIfNotBackgrounded:e()&&"object"==typeof document&&"function"==typeof document.addEventListener&&"string"==typeof document.visibilityState},n),super(t.id,t.kind,n);let i=!1;if("function"!=typeof(n=Object.assign({MediaStream:MediaStream},n)).MediaStream)throw new Error("MediaTrack received an invalid MediaStream constructor: "+n.MediaStream);Object.defineProperties(this,{_attachments:{value:new Set},_dummyEl:{value:null,writable:!0},_elShims:{value:new WeakMap},_isStarted:{get:()=>i,set(e){i=e}},_playPausedElementsIfNotBackgrounded:{value:n.playPausedElementsIfNotBackgrounded},_shouldShimAttachedElements:{value:n.workaroundWebKitBug212780||n.playPausedElementsIfNotBackgrounded},_unprocessedTrack:{value:null,writable:!0},_MediaStream:{value:n.MediaStream},_mapMediaElement:{value:n.mapMediaElement},_disposeMediaElement:{value:n.disposeMediaElement},isStarted:{enumerable:!0,get:()=>i},mediaStreamTrack:{enumerable:!0,get(){return this._unprocessedTrack||t.track}},processedTrack:{enumerable:!0,value:null,writable:!0}}),this._initialize()}_start(){this._log.debug("Started"),this._isStarted=!0,this._dummyEl&&(this._dummyEl.oncanplay=null),this.emit("started",this)}_initialize(){const e=this;this._log.debug("Initializing"),this._dummyEl=this._createElement(),this.mediaStreamTrack&&this.mediaStreamTrack.addEventListener?this.mediaStreamTrack.addEventListener("ended",function t(){e._end(),e.mediaStreamTrack.removeEventListener("ended",t)}):this.mediaStreamTrack&&(this.mediaStreamTrack.onended=function(){e._end(),e.mediaStreamTrack.onended=null}),this._dummyEl&&(this._dummyEl.muted=!0,this._dummyEl.oncanplay=this._start.bind(this,this._dummyEl),this._attach(this._dummyEl,this.mediaStreamTrack),this._attachments.delete(this._dummyEl))}_end(){this._log.debug("Ended"),this._dummyEl&&(this._dummyEl.remove(),this._disposeMediaElement?this._disposeMediaElement(this._dummyEl):this._dummyEl.srcObject=null,this._dummyEl.oncanplay=null,this._dummyEl=null)}attach(e){if("string"==typeof e?e=this._selectElement(e):e||(e=this._createElement()),this._log.debug("Attempting to attach to element:",e),e=this._attach(e),this._shouldShimAttachedElements&&!this._elShims.has(e)){const r=this._playPausedElementsIfNotBackgrounded?()=>function(e,r){const s=e.tagName.toLowerCase();r.warn("Unintentionally paused:",e),Promise.race([t(document,"visibilitychange"),n(1e3)]).then(()=>{"visible"===document.visibilityState&&i.whenResolved("audio").then(()=>(r.info(`Playing unintentionally paused <${s}> element`),r.debug("Element:",e),e.play())).then(()=>{r.info(`Successfully played unintentionally paused <${s}> element`),r.debug("Element:",e)}).catch(t=>{r.warn(`Error while playing unintentionally paused <${s}> element:`,{error:t,el:e})})})}(e,this._log):null;this._elShims.set(e,function(e,t=null){const n=e.pause,i=e.play;let r=!1;e.pause=()=>(r=!0,n.call(e)),e.play=()=>(r=!1,i.call(e));const s=t?()=>{r||t()}:null;s&&e.addEventListener("pause",s);return{pausedIntentionally:()=>r,unShim(){e.pause=n,e.play=i,s&&e.removeEventListener("pause",s)}}}(e,r))}return e}_attach(e,t=this.processedTrack||this.mediaStreamTrack){let n=e.srcObject;n instanceof this._MediaStream||(n=new this._MediaStream);const i="audio"===t.kind?"getAudioTracks":"getVideoTracks";return n[i]().forEach(e=>{n.removeTrack(e)}),n.addTrack(t),this._mapMediaElement&&(this._log.debug("Mapping element using mapMediaElement before attaching media to element"),this._mapMediaElement(e)),e.srcObject=n,e.autoplay=!0,e.playsInline=!0,this._attachments.has(e)||this._attachments.add(e),e}_selectElement(e){const t=document.querySelector(e);if(!t)throw new Error(`Selector matched no element: ${e}`);return t}_updateElementsMediaStreamTrack(){this._log.debug("Reattaching all elements to update mediaStreamTrack"),this._getAllAttachedElements().forEach(e=>this._attach(e))}_createElement(){return"undefined"!=typeof document?document.createElement(this.kind):null}detach(e){let t;return t="string"==typeof e?[this._selectElement(e)]:e?[e]:this._getAllAttachedElements(),this._log.debug("Attempting to detach from elements:",t),this._detachElements(t),e?t[0]:t}_detachElements(e){return e.map(this._detachElement.bind(this))}_detachElement(e){if(!this._attachments.has(e))return e;const t=e.srcObject;if(t instanceof this._MediaStream&&t.removeTrack(this.processedTrack||this.mediaStreamTrack),this._disposeMediaElement&&(this._log.debug("Disposing element using disposeMediaElement after removing media from element"),this._disposeMediaElement(e)),this._attachments.delete(e),this._shouldShimAttachedElements&&this._elShims.has(e)){this._elShims.get(e).unShim(),this._elShims.delete(e)}return e}_getAllAttachedElements(){const e=[];return this._attachments.forEach(t=>{e.push(t)}),e}},ct}function Pn(){if(ut)return dt;ut=1;const e=Cn();return dt=class extends e{constructor(e,t){super(e,t)}attach(){return super.attach.apply(this,arguments)}detach(){return super.detach.apply(this,arguments)}},dt}function En(){if(pt)return ht;pt=1;let e=null;return ht=function(t){return e=e||document.createElement("canvas"),new Promise(n=>{let i=3;setTimeout(function r(){return i--,function(t){try{const n=e.getContext("2d");n.drawImage(t,0,0,50,50);const i=n.getImageData(0,0,50,50).data.filter((e,t)=>(t+1)%4);return 0===Math.max.apply(Math,i)}catch(e){return console.log("Error checking silence: ",e),!1}}(t)?i>0?setTimeout(r,250):n(!0):n(!1)},250)})}}function On(){if(mt)return ft;mt=1;return ft=new class{constructor(e=1){Object.defineProperties(this,{_listeners:{value:[]},_onVisibilityChange:{value:()=>{this._emitVisible("visible"===document.visibilityState)}}});for(let t=0;t<e;t++)this._listeners.push([])}clear(){const e=this._listeners.length;for(let t=0;t<e;t++)this._listeners[t]=[]}_listenerCount(){return this._listeners.reduce((e,t)=>e+t.length,0)}_emitVisible(e){let t=Promise.resolve();for(let n=1;n<=this._listeners.length;n++)t=t.then(()=>this._emitVisiblePhase(n,e));return t}_emitVisiblePhase(e,t){const n=this._listeners[e-1];return Promise.all(n.map(e=>{const n=e(t);return n instanceof Promise?n:Promise.resolve(n)}))}_start(){document.addEventListener("visibilitychange",this._onVisibilityChange)}_stop(){document.removeEventListener("visibilitychange",this._onVisibilityChange)}onVisibilityChange(e,t){if("number"!=typeof e||e<=0||e>this._listeners.length)throw new Error("invalid phase: ",e);return this._listeners[e-1].push(t),1===this._listenerCount()&&this._start(),this}offVisibilityChange(e,t){if("number"!=typeof e||e<=0||e>this._listeners.length)throw new Error("invalid phase: ",e);const n=this._listeners[e-1],i=n.indexOf(t);return-1!==i&&(n.splice(i,1),0===this._listenerCount()&&this._stop()),this}}(2),ft}function Ln(){if(_t)return gt;_t=1;const e=yn();return gt=function(t,n,i,r,s){r="number"==typeof r?r:3;let o=0;const a=X(),c={},l=a.getOrCreate(c);return function a(){return n(i).then(n=>(i.audio?e(l,n,s).catch(e=>(t.warn("Encountered an error while detecting silence",e),!0)):Promise.resolve(!1)).then(e=>e?r<=0?(t.warn("Got a silent audio MediaStreamTrack. Normally we would try \tto get a new one, but we've run out of retries; returning it anyway."),n):(t.warn(`Got a silent audio MediaStreamTrack. Stopping all MediaStreamTracks and calling getUserMedia again. This is retry #${++o}.`),n.getTracks().forEach(e=>e.stop()),r--,a()):(t.info("Got a non-silent audio MediaStreamTrack; returning it."),n)))}().then(e=>(a.release(c),e),e=>{throw a.release(c),e})},gt}function Rn(){if(bt)return vt;bt=1;const e=xe().EventEmitter;return vt=class extends e{constructor(){super(),Object.defineProperties(this,{_queuedEvents:{value:new Map}})}dequeue(e){let t=!0;if(!e)return this._queuedEvents.forEach(function(e,n){t=this.dequeue(n)&&t},this),t;const n=this._queuedEvents.get(e)||[];return this._queuedEvents.delete(e),n.reduce((t,n)=>this.emit(...[e].concat(n))&&t,t)}queue(){const e=[].slice.call(arguments);if(this.emit(...e))return!0;const t=e[0];return this._queuedEvents.has(t)||this._queuedEvents.set(t,[]),this._queuedEvents.get(t).push(e.slice(1)),!1}},vt}function In(){if(kt)return yt;kt=1;const e=Rn();return yt=class extends e{constructor(e,t){super(),Object.defineProperties(this,{id:{enumerable:!0,value:e},kind:{enumerable:!0,value:t}})}stop(){this.emit("stopped")}}}function Mn(){if(St)return wt;St=1;const e=In();return wt=class extends e{constructor(e,t){super(e,t.kind),Object.defineProperties(this,{_track:{value:t,writable:!0},enabled:{enumerable:!0,get(){return this._track.enabled}},readyState:{enumerable:!0,get(){return this._track.readyState}},track:{enumerable:!0,get(){return this._track}}})}stop(){this.track.stop(),super.stop()}}}function Dn(){if(Ct)return Tt;Ct=1;const e=Mn();class t extends e{constructor(e){super(e.id,e),Object.defineProperties(this,{_clones:{value:new Set},_eventsToReemitters:{value:new Map([["mute",()=>this.queue("muted")],["unmute",()=>this.queue("unmuted")]])},_senders:{value:new Set},_senderToPublisherHintCallbacks:{value:new Map},isPublishing:{enumerable:!0,get(){return!!this._clones.size}},muted:{enumerable:!0,get(){return this._track.muted}}}),this._reemitMediaStreamTrackEvents()}_reemitMediaStreamTrackEvents(e=this._track){const{_eventsToReemitters:t,_track:n}=this;if(e.addEventListener?t.forEach((t,n)=>e.addEventListener(n,t)):t.forEach((t,n)=>{e[`on${n}`]=t}),n!==e&&(t.forEach((e,t)=>n.removeEventListener(t,e)),n.muted!==e.muted)){t.get(e.muted?"mute":"unmute")()}}clone(){const e=new t(this.track.clone());return this._clones.add(e),e}removeClone(e){this._clones.delete(e)}setMediaStreamTrack(e){const t=Array.from(this._clones),n=Array.from(this._senders);return Promise.all(t.map(t=>t.setMediaStreamTrack(e.clone())).concat(n.map(t=>this._replaceTrack(t,e)))).finally(()=>{this._reemitMediaStreamTrackEvents(e),this._track=e})}addSender(e,t){return this._senders.add(e),t&&this._senderToPublisherHintCallbacks.set(e,t),this}removeSender(e){return this._senders.delete(e),this._senderToPublisherHintCallbacks.delete(e),this}setPublisherHint(e){const[t]=Array.from(this._senderToPublisherHintCallbacks.values());return t?t(e):Promise.resolve("COULD_NOT_APPLY_HINT")}_replaceTrack(e,t){return e.replaceTrack(t).then(e=>(this.setPublisherHint(null).catch(()=>{}),this.emit("replaced"),e))}}return Tt=t}function An(){if(Et)return Pt;Et=1;const{getUserMedia:e}=_n(),{isIOS:t}=bn(),{capitalize:n,defer:i,waitForSometime:r,waitForEvent:s}=Ce(),{typeErrors:{ILLEGAL_INVOKE:o}}=ae(),a=kn(),c=En(),l=On(),d=wn(),u=Ln(),h=Dn();function p(e){const{_log:t,kind:n,_noiseCancellation:o}=e,u={audio:a,video:c}[n],h=()=>o?o.sourceTrack:e.mediaStreamTrack;let{_dummyEl:p}=e,f=h(),m=null;function g(){const{_workaroundWebKitBug1208516Cleanup:n,isStopped:i}=e,r=i&&!!n,{muted:s}=h();return Promise.resolve().then(()=>"visible"===document.visibilityState&&!m&&(s||r||p.play().then(()=>u(p)).then(e=>(e?t.warn("Silence detected"):t.info("Non-silence detected"),e)).catch(e=>{t.warn("Failed to detect silence:",e)}).finally(()=>{e.processedTrack||p.pause()})))}function _(){return Promise.race([s(f,"unmute"),r(50)]).then(()=>g()).then(r=>{r&&!m&&(m=i(),e._restart().finally(()=>{p=e._dummyEl,y(),f=h(),b(),m.resolve(),m=null}).catch(e=>{t.error("failed to restart track: ",e)}));return(m&&m.promise||Promise.resolve()).finally(()=>d.resolveDeferred(n))}).catch(e=>{t.error(`error in maybeRestart: ${e.message}`)})}function v(){const{_log:t,kind:n}=e;t.info("Muted"),t.debug("LocalMediaTrack:",e),d.startDeferred(n)}function b(){f.addEventListener?(f.addEventListener("ended",_),f.addEventListener("mute",v),f.addEventListener("unmute",_)):(f.onended=_,f.onmute=v,f.onunmute=_)}function y(){f.removeEventListener?(f.removeEventListener("ended",_),f.removeEventListener("mute",v),f.removeEventListener("unmute",_)):(f.onended=null,f.onmute=null,f.onunmute=null)}let k=e=>!!e&&_();return l.onVisibilityChange(1,k),b(),()=>{l.offVisibilityChange(1,k),y()}}return Pt=function(i){return class extends i{constructor(n,i){const r=t()&&"object"==typeof document&&"function"==typeof document.addEventListener&&"string"==typeof document.visibilityState;i=Object.assign({getUserMedia:e,isCreatedByCreateLocalTracks:!1,workaroundWebKitBug1208516:r,gUMSilentTrackWorkaround:u},i);const s=new h(n),{kind:o}=s;super(s,i),Object.defineProperties(this,{_constraints:{value:"object"==typeof i[o]?i[o]:{},writable:!0},_getUserMedia:{value:i.getUserMedia},_gUMSilentTrackWorkaround:{value:i.gUMSilentTrackWorkaround},_eventsToReemitters:{value:new Map([["muted",()=>this.emit("muted",this)],["unmuted",()=>this.emit("unmuted",this)]])},_workaroundWebKitBug1208516:{value:i.workaroundWebKitBug1208516},_workaroundWebKitBug1208516Cleanup:{value:null,writable:!0},_didCallEnd:{value:!1,writable:!0},_isCreatedByCreateLocalTracks:{value:i.isCreatedByCreateLocalTracks},_noiseCancellation:{value:i.noiseCancellation||null},_trackSender:{value:s},id:{enumerable:!0,value:s.id},isEnabled:{enumerable:!0,get:()=>s.enabled},isMuted:{enumerable:!0,get:()=>s.muted},isStopped:{enumerable:!0,get:()=>"ended"===s.readyState}}),this._workaroundWebKitBug1208516&&(this._workaroundWebKitBug1208516Cleanup=p(this)),this._reemitTrackSenderEvents()}_end(){this._didCallEnd||(super._end.call(this),this._didCallEnd=!0,this._eventsToReemitters.forEach((e,t)=>this._trackSender.removeListener(t,e)),this.emit("stopped",this))}_initialize(){this._didCallEnd&&(this._didCallEnd=!1),this._eventsToReemitters&&this._reemitTrackSenderEvents(),super._initialize.call(this)}_reacquireTrack(e){const{_getUserMedia:t,_gUMSilentTrackWorkaround:n,_log:i,mediaStreamTrack:{kind:r}}=this;i.info("Re-acquiring the MediaStreamTrack"),i.debug("Constraints:",e);const s=Object.assign({audio:!1,video:!1},{[r]:e});return(this._workaroundWebKitBug1208516Cleanup?n(i,t,s):t(s)).then(e=>e.getTracks()[0])}_reemitTrackSenderEvents(){this._eventsToReemitters.forEach((e,t)=>this._trackSender.on(t,e)),this._trackSender.dequeue("muted"),this._trackSender.dequeue("unmuted")}_restart(e){const{_log:t}=this;return e=e||this._constraints,this._stop(),this._reacquireTrack(e).catch(n=>{throw t.error("Failed to re-acquire the MediaStreamTrack:",{error:n,constraints:e}),n}).then(n=>(t.info("Re-acquired the MediaStreamTrack"),t.debug("MediaStreamTrack:",n),this._constraints=Object.assign({},e),this._setMediaStreamTrack(n)))}_setMediaStreamTrack(e){return e.enabled=this.mediaStreamTrack.enabled,this._stop(),(this._unprocessedTrack?Promise.resolve().then(()=>{this._unprocessedTrack=e}):this._trackSender.setMediaStreamTrack(e).catch(t=>{this._log.warn("setMediaStreamTrack failed:",{error:t,mediaStreamTrack:e})})).then(()=>{this._initialize(),this._getAllAttachedElements().forEach(e=>this._attach(e))})}_stop(){return this.mediaStreamTrack.stop(),this._end(),this}enable(e){return(e="boolean"!=typeof e||e)!==this.mediaStreamTrack.enabled&&(this._log.info((e?"En":"Dis")+"abling"),this.mediaStreamTrack.enabled=e,this.emit(e?"enabled":"disabled",this)),this}disable(){return this.enable(!1)}restart(e){const{kind:t}=this;if(!this._isCreatedByCreateLocalTracks)return Promise.reject(o("restart",`can only be called on a Local${n(t)}Track that is created using createLocalTracks or createLocal${n(t)}Track.`));this._workaroundWebKitBug1208516Cleanup&&(this._workaroundWebKitBug1208516Cleanup(),this._workaroundWebKitBug1208516Cleanup=null);let i=this._restart(e);return this._workaroundWebKitBug1208516&&(i=i.finally(()=>{this._workaroundWebKitBug1208516Cleanup=p(this)})),i}stop(){return this._log.info("Stopping"),this._workaroundWebKitBug1208516Cleanup&&(this._workaroundWebKitBug1208516Cleanup(),this._workaroundWebKitBug1208516Cleanup=null),this._stop()}}},Pt}function xn(){if(It)return Rt;It=1;const e=vn(),t=function(){if(Lt)return Ot;Lt=1;const{isIOS:e}=bn(),t=kn(),{isIOSChrome:n}=pe(),i=Pn(),r=An()(i);return Ot=class extends r{constructor(t,n){const i=(null==n?void 0:n.noiseCancellation)||null;super(t,n);const{_log:r}=this,{label:s=""}=t,{deviceId:o="",groupId:a=""}=t.getSettings();Object.defineProperties(this,{_currentDefaultDeviceInfo:{value:{deviceId:o,groupId:a,label:s},writable:!0},_enumerateDevices:{value:"function"==typeof(null==n?void 0:n.enumerateDevices)?n.enumerateDevices:navigator.mediaDevices.enumerateDevices},_defaultDeviceCaptureMode:{value:e()&&!i||!this._isCreatedByCreateLocalTracks||"object"!=typeof navigator||"object"!=typeof navigator.mediaDevices||"function"!=typeof navigator.mediaDevices.addEventListener||"function"!=typeof(null==n?void 0:n.enumerateDevices)&&"function"!=typeof navigator.mediaDevices.enumerateDevices?"manual":(null==n?void 0:n.defaultDeviceCaptureMode)||"auto"},_onDeviceChange:{value:()=>{this._enumerateDevices().then(e=>{const t=e.find(({deviceId:e,kind:t})=>"audioinput"===t&&"default"!==e);t&&["deviceId","groupId"].some(e=>t[e]!==this._currentDefaultDeviceInfo[e])&&(r.info("Default device changed, restarting the LocalAudioTrack"),r.debug(`Old default device: "${this._currentDefaultDeviceInfo.deviceId}" => "${this._currentDefaultDeviceInfo.label}"`),r.debug(`New default device: "${t.deviceId}" => "${t.label}"`),this._currentDefaultDeviceInfo=t,this._restartDefaultDevice().catch(e=>r.warn(`Failed to restart: ${e.message}`)))},e=>{r.warn(`Failed to run enumerateDevices(): ${e.message}`)})}},_restartOnDefaultDeviceChangeCleanup:{value:null,writable:!0},noiseCancellation:{enumerable:!0,value:i,writable:!1}}),r.debug("defaultDeviceCaptureMode:",this._defaultDeviceCaptureMode),this._maybeRestartOnDefaultDeviceChange()}toString(){return`[LocalAudioTrack #${this._instanceId}: ${this.id}]`}attach(e){return(e=super.attach.call(this,e)).muted=!0,e}_end(){return super._end.apply(this,arguments)}_maybeRestartOnDefaultDeviceChange(){const{_constraints:e,_defaultDeviceCaptureMode:t,_log:n}=this,i=this.noiseCancellation?this.noiseCancellation.sourceTrack:this.mediaStreamTrack,{deviceId:r}=i.getSettings(),s=e=>e!==r||"default"===e,o=function e(t={}){return"string"==typeof t?s(t):Array.isArray(t)?t.every(s):t.exact?e(t.exact):!t.ideal||e(t.ideal)}(e.deviceId);"auto"===t&&o?this._restartOnDefaultDeviceChangeCleanup||(n.info("LocalAudioTrack will be restarted if the default device changes"),navigator.mediaDevices.addEventListener("devicechange",this._onDeviceChange),this._restartOnDefaultDeviceChangeCleanup=()=>{n.info("Cleaning up the listener to restart the LocalAudioTrack if the default device changes"),navigator.mediaDevices.removeEventListener("devicechange",this._onDeviceChange),this._restartOnDefaultDeviceChangeCleanup=null}):(n.info("LocalAudioTrack will NOT be restarted if the default device changes"),this._restartOnDefaultDeviceChangeCleanup&&this._restartOnDefaultDeviceChangeCleanup())}_reacquireTrack(e){return this._log.debug("_reacquireTrack: ",e),this.noiseCancellation?this.noiseCancellation.reacquireTrack(()=>super._reacquireTrack.call(this,e)):super._reacquireTrack.call(this,e)}_restartDefaultDevice(){const e=Object.assign({},this._constraints),t=Object.assign({},e,{deviceId:this._currentDefaultDeviceInfo.deviceId});return this.restart(t).then(()=>{this._constraints=e,this._maybeRestartOnDefaultDeviceChange()})}_setMediaStreamTrack(e){const{_log:i,noiseCancellation:r}=this;let s=super._setMediaStreamTrack.call(this,e);return n()&&r&&(i.debug("iOS Chrome detected, checking if the restarted Krisp audio is silent"),s=s.then(()=>t(this._dummyEl)).then(e=>(i.debug("Krisp audio is "+(e?"silent, using source audio":"not silent")),e&&r.disablePermanently().then(()=>super._setMediaStreamTrack.call(this,r.sourceTrack))))),s}disable(){return super.disable.apply(this,arguments)}enable(){return super.enable.apply(this,arguments)}restart(){return super.restart.apply(this,arguments)}stop(){return this.noiseCancellation&&this.noiseCancellation.stop(),this._restartOnDefaultDeviceChangeCleanup&&this._restartOnDefaultDeviceChangeCleanup(),super.stop.apply(this,arguments)}},Ot}();function n(e,i){const r=new t(e,i);return Object.setPrototypeOf(r,n.prototype),r}return e(n,t),Rt=n}function jn(){if($t)return jt;$t=1;const e=Cn(),t=function(){if(Dt)return Mt;Dt=1;const{DEFAULT_FRAME_RATE:e}=ae();return Mt="function"==typeof MediaStreamTrackGenerator&&"function"==typeof MediaStreamTrackProcessor?function(e,t,n){const[i]=e.srcObject.getVideoTracks(),{readable:r}=new MediaStreamTrackProcessor({track:i}),s=new MediaStreamTrackGenerator({kind:"video"});let o=!1;const a=new TransformStream({transform:(e,i)=>("videoframe"===n?t(e):Promise.resolve(e.close()).then(t)).finally(()=>{o&&i.terminate()})});return r.pipeThrough(a).pipeTo(s.writable).then(()=>{}),()=>{o=!0}}:function(t,n){const[i]=t.srcObject.getVideoTracks(),{frameRate:r=e}=i.getSettings();let s;const o=new ReadableStream({start(e){s=setInterval(()=>e.enqueue(),1e3/r)}}),a=new TransformStream({transform:()=>n()});return o.pipeThrough(a).pipeTo(new WritableStream).then(()=>{}),()=>{clearInterval(s)}},Mt}(),n=function(){if(xt)return At;xt=1;const{EventEmitter:e}=xe(),{DEFAULT_VIDEO_PROCESSOR_STATS_INTERVAL_MS:t}=ae();return At=class extends e{constructor(e){super(),Object.defineProperties(this,{_lastStatsSaveTime:{value:null,writable:!0},_lastStatsPublishTime:{value:null,writable:!0},_log:{value:e},_processorInfo:{value:null,writable:!0},_stats:{value:null,writable:!0}}),this.on("add",e=>{this._lastStatsSaveTime=Date.now(),this._lastStatsPublishTime=Date.now(),this._processorInfo=e,this._stats=[],this._reemitEvent("add",this._getEventData())}),this.on("remove",()=>{const e=this._getEventData();this._lastStatsSaveTime=null,this._lastStatsPublishTime=null,this._processorInfo=null,this._stats=null,this._reemitEvent("remove",e)}),this.on("start",()=>{this._reemitEvent("start",this._getEventData())}),this.on("stop",e=>{this._reemitEvent("stop",Object.assign({message:e},this._getEventData()))}),this.on("stats",()=>this._maybeEmitStats())}_getEventData(){if(!this._processorInfo)return{};const{processor:e,captureHeight:t,captureWidth:n,inputFrameRate:i,isRemoteVideoTrack:r,inputFrameBufferType:s,outputFrameBufferContextType:o}=this._processorInfo,a={captureHeight:t,captureWidth:n,inputFrameRate:i,isRemoteVideoTrack:r,inputFrameBufferType:s,outputFrameBufferContextType:o};return a.name=e._name||"VideoProcessor",["assetsPath","blurFilterRadius","debounce","fitType","isSimdEnabled","maskBlurRadius","pipeline","version"].forEach(t=>{const n=e[`_${t}`];void 0!==n&&(a[t]=n)}),Object.keys(a).forEach(e=>{const t=a[e];"boolean"==typeof t&&(a[e]=t?"true":"false")}),a}_maybeEmitStats(){if(!this._stats||!this._processorInfo)return;const e=this._processorInfo.processor._benchmark;if(!e)return;const n=Date.now();if(n-this._lastStatsSaveTime<1e3)return;const i={outputFrameRate:e.getRate("totalProcessingDelay")};if(["captureFrameDelay","imageCompositionDelay","inputImageResizeDelay","processFrameDelay","segmentationDelay"].forEach(t=>{i[t]=e.getAverageDelay(t)}),this._lastStatsSaveTime=n,this._stats.push(i),n-this._lastStatsPublishTime<t)return;this._lastStatsPublishTime=n;const r=this._stats.splice(0).reduce((e,t,n)=>(Object.keys(i).forEach(i=>{e[i]||(e[i]=0),e[i]=(e[i]*n+t[i])/(n+1)}),e),{});Object.keys(r).forEach(e=>{r[e]=parseFloat(r[e].toFixed(2))}),this._reemitEvent("stats",Object.assign({},r,this._getEventData()))}_reemitEvent(e,t){this._log.debug(`VideoProcessor:${e}`,t),this.emit("event",{name:e,data:t})}},At}(),{DEFAULT_FRAME_RATE:i}=ae();class r extends e{constructor(e,t){return super(e,t),Object.defineProperties(this,{_isCapturing:{value:!1,writable:!0},_inputFrame:{value:null,writable:!0},_outputFrame:{value:null,writable:!0},_processorEventObserver:{value:null,writable:!0},_processorOptions:{value:{},writable:!0},_stopCapture:{value:()=>{},writable:!0},_unmuteHandler:{value:null,writable:!0},dimensions:{enumerable:!0,value:{width:null,height:null}},processor:{enumerable:!0,value:null,writable:!0},_documentPipWindow:{value:null,writable:!0},_documentPipEnterListener:{value:null,writable:!0},_documentPipExitListener:{value:null,writable:!0}}),this._processorEventObserver=new(t.VideoProcessorEventObserver||n)(this._log),this}_checkIfCanCaptureFrames(e=!1){let t=!0,n="";const{enabled:i,readyState:r}=this.mediaStreamTrack;return i||(t=!1,n="MediaStreamTrack is disabled"),"ended"===r&&(t=!1,n="MediaStreamTrack is ended"),this.processor||(t=!1,n="VideoProcessor not detected."),this._attachments.size||e||(t=!1,n="VideoTrack is not publishing and there is no attached element."),n&&this._log.debug(n),{canCaptureFrames:t,message:n}}_captureFrames(){if(this._isCapturing)return void this._log.debug("Ignoring captureFrames call. Capture is already in progress");if(!this._checkIfCanCaptureFrames().canCaptureFrames)return this._isCapturing=!1,void this._log.debug("Cannot capture frames. Ignoring captureFrames call.");this._isCapturing=!0,this._processorEventObserver.emit("start"),this._log.debug("Start capturing frames");const{inputFrameBufferType:e}=this._processorOptions;this._dummyEl.play().then(()=>{this._stopCapture=t(this._dummyEl,t=>{const n=this._checkIfCanCaptureFrames();if(!n.canCaptureFrames)return t&&t.close(),this._isCapturing=!1,this._stopCapture(),this._processorEventObserver.emit("stop",n.message),this._log.debug("Cannot capture frames. Stopping capturing frames."),Promise.resolve();const{width:i=0,height:r=0}=this.mediaStreamTrack.getSettings();this._outputFrame&&this._outputFrame.width!==i&&(this._outputFrame.width=i,this._outputFrame.height=r),this._inputFrame&&(this._inputFrame.width!==i&&(this._inputFrame.width=i,this._inputFrame.height=r),this._inputFrame.getContext("2d").drawImage(this._dummyEl,0,0,i,r));const s=t||(["video","videoframe"].includes(e)?this._dummyEl:this._inputFrame);let o=null;try{o=this.processor.processFrame(s,this._outputFrame)}catch(e){this._log.debug("Exception detected after calling processFrame.",e)}return(o instanceof Promise?o:Promise.resolve(o)).then(()=>{this._outputFrame&&("function"==typeof this.processedTrack.requestFrame&&this.processedTrack.requestFrame(),this._processorEventObserver.emit("stats"))})},e)}).catch(e=>this._log.error("Video element cannot be played",{error:e,track:this}))}_initialize(){super._initialize(),this._dummyEl&&(this._dummyEl.onloadedmetadata=()=>{s(this,this._dummyEl)&&(this.dimensions.width=this._dummyEl.videoWidth,this.dimensions.height=this._dummyEl.videoHeight)},this._dummyEl.onresize=()=>{s(this,this._dummyEl)&&(this.dimensions.width=this._dummyEl.videoWidth,this.dimensions.height=this._dummyEl.videoHeight,this.isStarted&&(this._log.debug("Dimensions changed:",this.dimensions),this.emit(r.DIMENSIONS_CHANGED,this)))})}_restartProcessor(){const e=this.processor;if(e){const t=Object.assign({},this._processorOptions);this.removeProcessor(e),this.addProcessor(e,t)}}_start(e){return this.dimensions.width=e.videoWidth,this.dimensions.height=e.videoHeight,this._log.debug("Dimensions:",this.dimensions),this.emit(r.DIMENSIONS_CHANGED,this),super._start.call(this,e)}addProcessor(e,t){if(!e||"function"!=typeof e.processFrame)throw new Error("Received an invalid VideoProcessor from addProcessor.");if(this.processor)throw new Error("A VideoProcessor has already been added.");if(!this._dummyEl)throw new Error("VideoTrack has not been initialized.");this._log.debug("Adding VideoProcessor to the VideoTrack",e),this._unmuteHandler||(this._unmuteHandler=()=>{this._log.debug("mediaStreamTrack unmuted"),this.processedTrack.muted&&(this._log.debug("mediaStreamTrack is unmuted but processedTrack is muted. Restarting processor."),this._restartProcessor())},this.mediaStreamTrack.addEventListener?this.mediaStreamTrack.addEventListener("unmute",this._unmuteHandler):this.mediaStreamTrack.onunmute=this._unmuteHandler.bind(this)),this._processorOptions=t||{};let{inputFrameBufferType:n,outputFrameBufferContextType:r}=this._processorOptions;if("undefined"==typeof OffscreenCanvas&&"offscreencanvas"===n)throw new Error("OffscreenCanvas is not supported by this browser.");if(n&&"videoframe"!==n&&"video"!==n&&"canvas"!==n&&"offscreencanvas"!==n)throw new Error(`Invalid inputFrameBufferType of ${n}`);n||(n="undefined"==typeof OffscreenCanvas?"canvas":"offscreencanvas");const{width:s=0,height:o=0,frameRate:a=i}=this.mediaStreamTrack.getSettings();"offscreencanvas"===n&&(this._inputFrame=new OffscreenCanvas(s,o)),"canvas"===n&&(this._inputFrame=document.createElement("canvas")),this._inputFrame&&(this._inputFrame.width=s,this._inputFrame.height=o),this._outputFrame=document.createElement("canvas"),this._outputFrame.width=s,this._outputFrame.height=o,r=r||"2d";if(!this._outputFrame.getContext(r))throw new Error(`Cannot get outputFrameBufferContextType: ${r}.`);const c="undefined"!=typeof CanvasCaptureMediaStreamTrack&&CanvasCaptureMediaStreamTrack.prototype&&"function"==typeof CanvasCaptureMediaStreamTrack.prototype.requestFrame?0:void 0;return this.processedTrack=this._outputFrame.captureStream(c).getTracks()[0],this.processedTrack.enabled=this.mediaStreamTrack.enabled,this.processor=e,this._processorEventObserver.emit("add",{processor:e,captureHeight:o,captureWidth:s,inputFrameRate:a,isRemoteVideoTrack:this.toString().includes("RemoteVideoTrack"),inputFrameBufferType:n,outputFrameBufferContextType:r}),this._updateElementsMediaStreamTrack(),this._captureFrames(),this}attach(){const e=super.attach.apply(this,arguments);var t;return 1===this._attachments.size&&!(t=this)._documentPipEnterListener&&"documentPictureInPicture"in globalThis&&globalThis.documentPictureInPicture&&"function"==typeof globalThis.documentPictureInPicture.addEventListener&&(t._documentPipEnterListener=e=>{t._log.debug("document pip entered"),t._documentPipWindow=e.window,t._documentPipExitListener=()=>{t._log.debug("document pip exited"),t._documentPipWindow=null,"function"==typeof t._onDocumentPipExit&&t._onDocumentPipExit()},e.window&&"function"==typeof e.window.addEventListener&&e.window.addEventListener("pagehide",t._documentPipExitListener),o(t),"function"==typeof t._onDocumentPipEnter&&t._onDocumentPipEnter(e)},globalThis.documentPictureInPicture.addEventListener("enter",t._documentPipEnterListener)),this.processor&&this._captureFrames(),e}detach(){const e=super.detach.apply(this,arguments);var t;return 0===this._attachments.size&&(t=this)._documentPipEnterListener&&(globalThis.documentPictureInPicture&&"function"==typeof globalThis.documentPictureInPicture.removeEventListener&&globalThis.documentPictureInPicture.removeEventListener("enter",t._documentPipEnterListener),t._documentPipWindow&&t._documentPipExitListener&&"function"==typeof t._documentPipWindow.removeEventListener&&t._documentPipWindow.removeEventListener("pagehide",t._documentPipExitListener),t._documentPipEnterListener=null,t._documentPipExitListener=null,t._documentPipWindow=null),e}removeProcessor(e){if(!e)throw new Error("Received an invalid VideoProcessor from removeProcessor.");if(!this.processor)throw new Error("No existing VideoProcessor detected.");if(e!==this.processor)throw new Error("The provided VideoProcessor is different than the existing one.");return this._processorEventObserver.emit("remove"),this._log.debug("Removing VideoProcessor from the VideoTrack",e),this._stopCapture(),this._stopCapture=()=>{},this.mediaStreamTrack.removeEventListener("unmute",this._unmuteHandler),this._processorOptions={},this._unmuteHandler=null,this._isCapturing=!1,this.processor=null,this.processedTrack=null,this._inputFrame=null,this._outputFrame=null,this._updateElementsMediaStreamTrack(),this}}function s(e,t){return e.dimensions.width!==t.videoWidth||e.dimensions.height!==t.videoHeight}function o(e){if(e._documentPipWindow)try{const t=new WeakSet(e._documentPipWindow.document.querySelectorAll("video"));e._attachments.forEach(n=>{t.has(n)&&n.paused&&n.play().then(()=>{e._log.debug("Successfully played inadvertently paused video element in document PiP window")}).catch(t=>{e._log.debug("Failed to play inadvertently paused video element in document PiP window",t)})})}catch(t){e._log.debug("Error checking document PiP video playback:",t)}}return r.DIMENSIONS_CHANGED="dimensionsChanged",r._ensureDocumentPipVideosPlaying=o,jt=r}function $n(){if(Bt)return Ft;Bt=1;const e=vn(),t=function(){if(Vt)return Nt;Vt=1;const{isIOS:e}=bn(),t=En(),n=An(),i=jn(),r=n(i);function s(e,n){const{_log:i}=e;let{_dummyEl:r,mediaStreamTrack:s}=e;function o(){e.isEnabled&&(i.info("Unmuted, checking silence"),r.play().then(()=>t(r,n)).then(t=>{if(t)return i.warn("Silence detected, restarting"),e._stop(),e._restart();i.info("Non-silent frames detected, so no need to restart")}).catch(e=>{i.warn("Failed to detect silence and restart:",e)}).finally(()=>{r=e._dummyEl,!r||r.paused||e.processedTrack||r.pause(),s.removeEventListener("unmute",o),s=e.mediaStreamTrack,s.addEventListener?s.addEventListener("unmute",o):s.onunmute=o}))}return s.addEventListener?s.addEventListener("unmute",o):s.onunmute=o,()=>{s.removeEventListener?s.removeEventListener("unmute",o):s.onunmute=null}}return Nt=class extends r{constructor(t,n){super(t,n=Object.assign({workaroundSilentLocalVideo:e()&&"undefined"!=typeof document&&"function"==typeof document.createElement},n)),Object.defineProperties(this,{_workaroundSilentLocalVideo:{value:n.workaroundSilentLocalVideo?s:null},_workaroundSilentLocalVideoCleanup:{value:null,writable:!0},_pipIntersectionObserver:{value:null,writable:!0}}),this._workaroundSilentLocalVideo&&(this._workaroundSilentLocalVideoCleanup=this._workaroundSilentLocalVideo(this,document))}toString(){return`[LocalVideoTrack #${this._instanceId}: ${this.id}]`}_onDocumentPipEnter(){this._log.debug("LocalVideoTrack: Setting up PiP intersection observer"),this._setupPipIntersectionObserver()}_onDocumentPipExit(){this._log.debug("LocalVideoTrack: Cleaning up PiP intersection observer"),this._cleanupPipIntersectionObserver()}_setupPipIntersectionObserver(){!this._pipIntersectionObserver&&this._documentPipWindow&&(this._log.debug("LocalVideoTrack: Creating PiP intersection observer"),this._pipIntersectionObserver=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(this._log.debug("LocalVideoTrack: Element visible in PiP, ensuring videos are playing"),i._ensureDocumentPipVideosPlaying(this))},{threshold:.25}),this._attachments.forEach(e=>{this._log.debug("LocalVideoTrack: Observing element for PiP visibility"),this._pipIntersectionObserver.observe(e)}))}_cleanupPipIntersectionObserver(){this._pipIntersectionObserver&&(this._log.debug("LocalVideoTrack: Disconnecting PiP intersection observer"),this._pipIntersectionObserver.disconnect(),this._pipIntersectionObserver=null)}attach(){const e=super.attach.apply(this,arguments);return this._pipIntersectionObserver&&(this._log.debug("LocalVideoTrack: Observing newly attached element for PiP visibility"),this._pipIntersectionObserver.observe(e)),e}detach(){const e=super.detach.apply(this,arguments),t=Array.isArray(e)?e:[e];return this._pipIntersectionObserver&&t.forEach(e=>{this._log.debug("LocalVideoTrack: Unobserving detached element from PiP visibility"),this._pipIntersectionObserver.unobserve(e)}),e}_checkIfCanCaptureFrames(){return super._checkIfCanCaptureFrames.call(this,this._trackSender.isPublishing)}_end(){return super._end.apply(this,arguments)}_setSenderMediaStreamTrack(e){const t=this.mediaStreamTrack,n=e?this.processedTrack:t;return this._trackSender.setMediaStreamTrack(n).catch(e=>this._log.warn("setMediaStreamTrack failed on LocalVideoTrack RTCRtpSender",{error:e,mediaStreamTrack:n})).then(()=>{this._unprocessedTrack=e?t:null})}addProcessor(){this._log.debug("Adding VideoProcessor to the LocalVideoTrack");const e=super.addProcessor.apply(this,arguments);return this.processedTrack?(this._log.debug("Updating LocalVideoTrack's MediaStreamTrack with the processed MediaStreamTrack",this.processedTrack),this._setSenderMediaStreamTrack(!0),e):this._log.warn("Unable to add a VideoProcessor to the LocalVideoTrack")}removeProcessor(){this._log.debug("Removing VideoProcessor from the LocalVideoTrack");const e=super.removeProcessor.apply(this,arguments);return this._log.debug("Updating LocalVideoTrack's MediaStreamTrack with the original MediaStreamTrack"),this._setSenderMediaStreamTrack().then(()=>this._updateElementsMediaStreamTrack()),e}disable(){const e=super.disable.apply(this,arguments);return this.processedTrack&&(this.processedTrack.enabled=!1),e}enable(e=!0){const t=super.enable.apply(this,arguments);return this.processedTrack&&(this.processedTrack.enabled=e,e&&(this._captureFrames(),this._log.debug("Updating LocalVideoTrack's MediaStreamTrack with the processed MediaStreamTrack",this.processedTrack),this._setSenderMediaStreamTrack(!0))),t}restart(){this._workaroundSilentLocalVideoCleanup&&(this._workaroundSilentLocalVideoCleanup(),this._workaroundSilentLocalVideoCleanup=null);let e=super.restart.apply(this,arguments);return this.processor&&(e=e.then(()=>this._restartProcessor())),this._workaroundSilentLocalVideo&&e.finally(()=>{this._workaroundSilentLocalVideoCleanup=this._workaroundSilentLocalVideo(this,document)}),e}_restartProcessor(){const e=this.processor,t=Object.assign({},this._processorOptions);return super.removeProcessor.apply(this,[e]),super.addProcessor.apply(this,[e,t]),this._setSenderMediaStreamTrack(!0)}stop(){return this._workaroundSilentLocalVideoCleanup&&(this._workaroundSilentLocalVideoCleanup(),this._workaroundSilentLocalVideoCleanup=null),this._cleanupPipIntersectionObserver(),super.stop.apply(this,arguments)}},Nt}();function n(e,i){const r=new t(e,i);return Object.setPrototypeOf(r,n.prototype),r}return e(n,t),Ft=n}function Nn(){if(Ht)return Ut;Ht=1;const e=In();return Ut=class extends e{constructor(e,t,n,i){super(e,"data"),Object.defineProperties(this,{maxPacketLifeTime:{enumerable:!0,value:t},maxRetransmits:{enumerable:!0,value:n},ordered:{enumerable:!0,value:i}})}}}function Vn(){if(zt)return Qt;zt=1;const e=Tn(),t=function(){if(qt)return Wt;qt=1;const e=Nn(),t=Ce().makeUUID;class n extends e{constructor(e,n,i){super(t(),e,n,i),Object.defineProperties(this,{_clones:{value:new Set},_dataChannels:{value:new Set}})}_addClone(e){this._clones.add(e)}removeClone(e){this._clones.delete(e)}addDataChannel(e){return this._dataChannels.add(e),this}clone(){const e=new n(this.maxPacketLifeTime,this.maxRetransmits,this.ordered);return this._addClone(e),e.once("stopped",()=>this.removeClone(e)),e}removeDataChannel(e){return this._dataChannels.delete(e),this}send(e){return this._dataChannels.forEach(t=>{try{t.send(e)}catch(e){}}),this._clones.forEach(t=>{try{t.send(e)}catch(e){}}),this}stop(){this._dataChannels.forEach(e=>e.close()),this._clones.forEach(e=>e.stop()),super.stop()}}return Wt=n}();return Qt=class extends e{constructor(e){const n=new(0,(e=Object.assign({DataTrackSender:t,maxPacketLifeTime:null,maxRetransmits:null,ordered:!0},e)).DataTrackSender)(e.maxPacketLifeTime,e.maxRetransmits,e.ordered);super(n.id,"data",e),Object.defineProperties(this,{_trackSender:{value:n},id:{enumerable:!0,value:n.id},maxPacketLifeTime:{enumerable:!0,value:e.maxPacketLifeTime},maxRetransmits:{enumerable:!0,value:e.maxRetransmits},ordered:{enumerable:!0,value:e.ordered},reliable:{enumerable:!0,value:null===e.maxPacketLifeTime&&null===e.maxRetransmits}})}send(e){this._trackSender.send(e)}}}function Fn(){if(Kt)return Gt;Kt=1;const e=vn(),t=Vn();function n(e){const i=new t(e);return Object.setPrototypeOf(i,n.prototype),i}return e(n,t),Gt=n}function Bn(){return Jt?Yt:(Jt=1,Yt={LocalAudioTrack:xn(),LocalVideoTrack:$n(),LocalDataTrack:Fn()})}var Un,Hn,Wn,qn,Qn,zn,Gn,Kn,Yn={};function Jn(){if(Wn)return Yn;Wn=1;const e=function(){if(Hn)return Un;Hn=1;class e extends Error{constructor(t){const n=[].slice.call(arguments,1);super(...n),Object.setPrototypeOf(this,e.prototype);const i=Error.apply(this,n);i.name="TwilioError",Object.defineProperty(this,"code",{value:t,enumerable:!0}),Object.getOwnPropertyNames(i).forEach(function(e){Object.defineProperty(this,e,{value:i[e],enumerable:!0})},this)}toString(){const e=this.message?`: ${this.message}`:"";return`${this.name} ${this.code}${e}`}}return Un=e}(),t={};Yn.createTwilioError=function(n,i){return i="string"==typeof i&&i?i:"Unknown error",t[n="number"==typeof n?n:0]?new t[n]:new e(n,i)};class n extends e{constructor(){super(20101,"Invalid Access Token"),Object.setPrototypeOf(this,n.prototype)}}Yn.AccessTokenInvalidError=n,Object.defineProperty(t,20101,{value:n});class i extends e{constructor(){super(20102,"Invalid Access Token header"),Object.setPrototypeOf(this,i.prototype)}}Yn.AccessTokenHeaderInvalidError=i,Object.defineProperty(t,20102,{value:i});class r extends e{constructor(){super(20103,"Invalid Access Token issuer/subject"),Object.setPrototypeOf(this,r.prototype)}}Yn.AccessTokenIssuerInvalidError=r,Object.defineProperty(t,20103,{value:r});class s extends e{constructor(){super(20104,"Access Token expired or expiration date invalid"),Object.setPrototypeOf(this,s.prototype)}}Yn.AccessTokenExpiredError=s,Object.defineProperty(t,20104,{value:s});class o extends e{constructor(){super(20105,"Access Token not yet valid"),Object.setPrototypeOf(this,o.prototype)}}Yn.AccessTokenNotYetValidError=o,Object.defineProperty(t,20105,{value:o});class a extends e{constructor(){super(20106,"Invalid Access Token grants"),Object.setPrototypeOf(this,a.prototype)}}Yn.AccessTokenGrantsInvalidError=a,Object.defineProperty(t,20106,{value:a});class c extends e{constructor(){super(20107,"Invalid Access Token signature"),Object.setPrototypeOf(this,c.prototype)}}Yn.AccessTokenSignatureInvalidError=c,Object.defineProperty(t,20107,{value:c});class l extends e{constructor(){super(53e3,"Signaling connection error"),Object.setPrototypeOf(this,l.prototype)}}Yn.SignalingConnectionError=l,Object.defineProperty(t,53e3,{value:l});class d extends e{constructor(){super(53001,"Signaling connection disconnected"),Object.setPrototypeOf(this,d.prototype)}}Yn.SignalingConnectionDisconnectedError=d,Object.defineProperty(t,53001,{value:d});class u extends e{constructor(){super(53002,"Signaling connection timed out"),Object.setPrototypeOf(this,u.prototype)}}Yn.SignalingConnectionTimeoutError=u,Object.defineProperty(t,53002,{value:u});class h extends e{constructor(){super(53003,"Client received an invalid signaling message"),Object.setPrototypeOf(this,h.prototype)}}Yn.SignalingIncomingMessageInvalidError=h,Object.defineProperty(t,53003,{value:h});class p extends e{constructor(){super(53004,"Client sent an invalid signaling message"),Object.setPrototypeOf(this,p.prototype)}}Yn.SignalingOutgoingMessageInvalidError=p,Object.defineProperty(t,53004,{value:p});class f extends e{constructor(){super(53006,"Video server is busy"),Object.setPrototypeOf(this,f.prototype)}}Yn.SignalingServerBusyError=f,Object.defineProperty(t,53006,{value:f});class m extends e{constructor(){super(53100,"Room name is invalid"),Object.setPrototypeOf(this,m.prototype)}}Yn.RoomNameInvalidError=m,Object.defineProperty(t,53100,{value:m});class g extends e{constructor(){super(53101,"Room name is too long"),Object.setPrototypeOf(this,g.prototype)}}Yn.RoomNameTooLongError=g,Object.defineProperty(t,53101,{value:g});class _ extends e{constructor(){super(53102,"Room name contains invalid characters"),Object.setPrototypeOf(this,_.prototype)}}Yn.RoomNameCharsInvalidError=_,Object.defineProperty(t,53102,{value:_});class v extends e{constructor(){super(53103,"Unable to create Room"),Object.setPrototypeOf(this,v.prototype)}}Yn.RoomCreateFailedError=v,Object.defineProperty(t,53103,{value:v});class b extends e{constructor(){super(53104,"Unable to connect to Room"),Object.setPrototypeOf(this,b.prototype)}}Yn.RoomConnectFailedError=b,Object.defineProperty(t,53104,{value:b});class y extends e{constructor(){super(53105,"Room contains too many Participants"),Object.setPrototypeOf(this,y.prototype)}}Yn.RoomMaxParticipantsExceededError=y,Object.defineProperty(t,53105,{value:y});class k extends e{constructor(){super(53106,"Room not found"),Object.setPrototypeOf(this,k.prototype)}}Yn.RoomNotFoundError=k,Object.defineProperty(t,53106,{value:k});class w extends e{constructor(){super(53107,"MaxParticipants is out of range"),Object.setPrototypeOf(this,w.prototype)}}Yn.RoomMaxParticipantsOutOfRangeError=w,Object.defineProperty(t,53107,{value:w});class S extends e{constructor(){super(53108,"RoomType is not valid"),Object.setPrototypeOf(this,S.prototype)}}Yn.RoomTypeInvalidError=S,Object.defineProperty(t,53108,{value:S});class T extends e{constructor(){super(53109,"Timeout is out of range"),Object.setPrototypeOf(this,T.prototype)}}Yn.RoomTimeoutOutOfRangeError=T,Object.defineProperty(t,53109,{value:T});class C extends e{constructor(){super(53110,"StatusCallbackMethod is invalid"),Object.setPrototypeOf(this,C.prototype)}}Yn.RoomStatusCallbackMethodInvalidError=C,Object.defineProperty(t,53110,{value:C});class P extends e{constructor(){super(53111,"StatusCallback is invalid"),Object.setPrototypeOf(this,P.prototype)}}Yn.RoomStatusCallbackInvalidError=P,Object.defineProperty(t,53111,{value:P});class E extends e{constructor(){super(53112,"Status is invalid"),Object.setPrototypeOf(this,E.prototype)}}Yn.RoomStatusInvalidError=E,Object.defineProperty(t,53112,{value:E});class O extends e{constructor(){super(53113,"Room exists"),Object.setPrototypeOf(this,O.prototype)}}Yn.RoomRoomExistsError=O,Object.defineProperty(t,53113,{value:O});class L extends e{constructor(){super(53114,"Room creation parameter(s) incompatible with the Room type"),Object.setPrototypeOf(this,L.prototype)}}Yn.RoomInvalidParametersError=L,Object.defineProperty(t,53114,{value:L});class R extends e{constructor(){super(53115,"MediaRegion is invalid"),Object.setPrototypeOf(this,R.prototype)}}Yn.RoomMediaRegionInvalidError=R,Object.defineProperty(t,53115,{value:R});class I extends e{constructor(){super(53116,"There are no media servers available in the MediaRegion"),Object.setPrototypeOf(this,I.prototype)}}Yn.RoomMediaRegionUnavailableError=I,Object.defineProperty(t,53116,{value:I});class M extends e{constructor(){super(53117,"The subscription operation requested is not supported for the Room type"),Object.setPrototypeOf(this,M.prototype)}}Yn.RoomSubscriptionOperationNotSupportedError=M,Object.defineProperty(t,53117,{value:M});class D extends e{constructor(){super(53118,"Room completed"),Object.setPrototypeOf(this,D.prototype)}}Yn.RoomCompletedError=D,Object.defineProperty(t,53118,{value:D});class A extends e{constructor(){super(53124,"The AudioOnly flag is not supported for the Room type"),Object.setPrototypeOf(this,A.prototype)}}Yn.RoomAudioOnlyFlagNotSupportedError=A,Object.defineProperty(t,53124,{value:A});class x extends e{constructor(){super(53125,"The track kind is not supported by the Room"),Object.setPrototypeOf(this,x.prototype)}}Yn.RoomTrackKindNotSupportedError=x,Object.defineProperty(t,53125,{value:x});class j extends e{constructor(){super(53200,"Participant identity is invalid"),Object.setPrototypeOf(this,j.prototype)}}Yn.ParticipantIdentityInvalidError=j,Object.defineProperty(t,53200,{value:j});class $ extends e{constructor(){super(53201,"Participant identity is too long"),Object.setPrototypeOf(this,$.prototype)}}Yn.ParticipantIdentityTooLongError=$,Object.defineProperty(t,53201,{value:$});class N extends e{constructor(){super(53202,"Participant identity contains invalid characters"),Object.setPrototypeOf(this,N.prototype)}}Yn.ParticipantIdentityCharsInvalidError=N,Object.defineProperty(t,53202,{value:N});class V extends e{constructor(){super(53203,"The maximum number of published tracks allowed in the Room at the same time has been reached"),Object.setPrototypeOf(this,V.prototype)}}Yn.ParticipantMaxTracksExceededError=V,Object.defineProperty(t,53203,{value:V});class F extends e{constructor(){super(53204,"Participant not found"),Object.setPrototypeOf(this,F.prototype)}}Yn.ParticipantNotFoundError=F,Object.defineProperty(t,53204,{value:F});class B extends e{constructor(){super(53205,"Participant disconnected because of duplicate identity"),Object.setPrototypeOf(this,B.prototype)}}Yn.ParticipantDuplicateIdentityError=B,Object.defineProperty(t,53205,{value:B});class U extends e{constructor(){super(53300,"Track is invalid"),Object.setPrototypeOf(this,U.prototype)}}Yn.TrackInvalidError=U,Object.defineProperty(t,53300,{value:U});class H extends e{constructor(){super(53301,"Track name is invalid"),Object.setPrototypeOf(this,H.prototype)}}Yn.TrackNameInvalidError=H,Object.defineProperty(t,53301,{value:H});class W extends e{constructor(){super(53302,"Track name is too long"),Object.setPrototypeOf(this,W.prototype)}}Yn.TrackNameTooLongError=W,Object.defineProperty(t,53302,{value:W});class q extends e{constructor(){super(53303,"Track name contains invalid characters"),Object.setPrototypeOf(this,q.prototype)}}Yn.TrackNameCharsInvalidError=q,Object.defineProperty(t,53303,{value:q});class Q extends e{constructor(){super(53304,"Track name is duplicated"),Object.setPrototypeOf(this,Q.prototype)}}Yn.TrackNameIsDuplicatedError=Q,Object.defineProperty(t,53304,{value:Q});class z extends e{constructor(){super(53305,"The server has reached capacity and cannot fulfill this request"),Object.setPrototypeOf(this,z.prototype)}}Yn.TrackServerTrackCapacityReachedError=z,Object.defineProperty(t,53305,{value:z});class G extends e{constructor(){super(53400,"Client is unable to create or apply a local media description"),Object.setPrototypeOf(this,G.prototype)}}Yn.MediaClientLocalDescFailedError=G,Object.defineProperty(t,53400,{value:G});class K extends e{constructor(){super(53401,"Server is unable to create or apply a local media description"),Object.setPrototypeOf(this,K.prototype)}}Yn.MediaServerLocalDescFailedError=K,Object.defineProperty(t,53401,{value:K});class Y extends e{constructor(){super(53402,"Client is unable to apply a remote media description"),Object.setPrototypeOf(this,Y.prototype)}}Yn.MediaClientRemoteDescFailedError=Y,Object.defineProperty(t,53402,{value:Y});class J extends e{constructor(){super(53403,"Server is unable to apply a remote media description"),Object.setPrototypeOf(this,J.prototype)}}Yn.MediaServerRemoteDescFailedError=J,Object.defineProperty(t,53403,{value:J});class X extends e{constructor(){super(53404,"No supported codec"),Object.setPrototypeOf(this,X.prototype)}}Yn.MediaNoSupportedCodecError=X,Object.defineProperty(t,53404,{value:X});class Z extends e{constructor(){super(53405,"Media connection failed or Media activity ceased"),Object.setPrototypeOf(this,Z.prototype)}}Yn.MediaConnectionError=Z,Object.defineProperty(t,53405,{value:Z});class ee extends e{constructor(){super(53407,"Media connection failed due to DTLS handshake failure"),Object.setPrototypeOf(this,ee.prototype)}}Yn.MediaDTLSTransportFailedError=ee,Object.defineProperty(t,53407,{value:ee});class te extends e{constructor(){super(53500,"Unable to acquire configuration"),Object.setPrototypeOf(this,te.prototype)}}Yn.ConfigurationAcquireFailedError=te,Object.defineProperty(t,53500,{value:te});class ne extends e{constructor(){super(53501,"Unable to acquire TURN credentials"),Object.setPrototypeOf(this,ne.prototype)}}return Yn.ConfigurationAcquireTurnFailedError=ne,Object.defineProperty(t,53501,{value:ne}),Yn}function Xn(){if(Gn)return zn;Gn=1;const e=(Zt||(Zt=1,Xt=class{constructor(e){this._telemetry=e}typeChanged(e){this._telemetry.info({group:"network",name:"network-type-changed",payload:{networkType:e}})}informationChanged({downlink:e,downlinkMax:t,effectiveType:n,rtt:i,saveData:r,type:s}){this._telemetry.info({group:"network",name:"network-information-changed",payload:{downlink:e,downlinkMax:t,effectiveType:n,rtt:i,saveData:r,type:s}})}}),Xt),t=(tn||(tn=1,en=class{constructor(e){this._telemetry=e}succeeded(){this._telemetry.info({group:"get-user-media",name:"succeeded"})}denied(){this._telemetry.info({group:"get-user-media",name:"denied"})}failed(e){this._telemetry.info({group:"get-user-media",name:"failed",payload:{name:e.name,message:e.message}})}}),en),n=(rn||(rn=1,nn=class{constructor(e){this._telemetry=e}limitationChanged(e,t){this._telemetry.info({group:"quality",name:"quality-limitation-state-changed",payload:{trackSid:e,qualityLimitationReason:t}})}statsReport(e){this._telemetry.info({group:"quality",name:"stats-report",payload:e})}iceCandidatePair(e){this._telemetry.info({group:"quality",name:"active-ice-candidate-pair",payload:e})}}),nn),i=(on||(on=1,sn=class{constructor(e){this._telemetry=e}stalled(e,t,n,i="video"){this._telemetry.warning({group:"track-warning-raised",name:"track-stalled",payload:{trackSid:e,frameRate:t,threshold:n,trackType:i}})}resumed(e,t,n,i="video"){this._telemetry.info({group:"track-warning-cleared",name:"track-stalled",payload:{trackSid:e,frameRate:t,threshold:n,trackType:i}})}}),sn),r=(cn||(cn=1,an=class{constructor(e){this._telemetry=e}resumed(){this._telemetry.info({group:"application",name:"resumed"})}backgrounded(){this._telemetry.info({group:"application",name:"backgrounded"})}terminated(){this._telemetry.info({group:"application",name:"terminated"})}}),an),s=(dn||(dn=1,ln=class{constructor(e){this._telemetry=e}cpuPressureChanged(e){this._telemetry.info({group:"system",name:"cpu-pressure-changed",payload:{resourceType:"cpu",pressure:e}})}}),ln),o=function(){if(hn)return un;hn=1;const{filterObject:e}=Ce();return un=class{constructor(e){this._telemetry=e}connectionState(e,t){this._telemetry.debug({group:"pc-connection-state",name:t,payload:{peerConnectionId:e}})}signalingState(e,t){this._telemetry.debug({group:"pc-signaling-state",name:t,payload:{peerConnectionId:e}})}iceGatheringState(e,t){this._telemetry.debug({group:"ice-gathering-state",name:t,payload:{peerConnectionId:e}})}iceConnectionState(e,t){const n="failed"===t?"error":"debug";this._telemetry[n]({group:"ice-connection-state",name:t,payload:{peerConnectionId:e}})}dtlsTransportState(e,t){const n="failed"===t?"error":"debug";this._telemetry[n]({group:"dtls-transport-state",name:t,payload:{peerConnectionId:e}})}iceCandidate(e,t,n=!1){this._telemetry.debug({group:"ice-candidate",name:"ice-candidate",payload:Object.assign({peerConnectionId:e,isRemote:n?"true":"false"},this._toIceCandidatePayload(t))})}selectedCandidatePair(t,n){this._telemetry.debug({group:"ice-candidate",name:"selected-ice-candidate-pair",payload:e({peerConnectionId:t,localCandidate:n.local?this._toIceCandidatePayload(n.local):null,remoteCandidate:n.remote?this._toIceCandidatePayload(n.remote):null},null)})}_toIceCandidatePayload(t){var n;const i=null===(n=t.candidate)||void 0===n?void 0:n.match(/network-cost\s+(\d+)/),r=i?parseInt(i[1],10):null;return e({candidateType:t.type,ip:t.address,port:t.port,priority:t.priority,protocol:t.protocol,relatedAddress:t.relatedAddress,relatedPort:t.relatedPort,tcpType:t.tcpType,transportId:t.sdpMid,networkCost:r},null)}},un}(),a=function(){if(Qn)return qn;Qn=1;const{MediaConnectionError:e}=Jn();return qn=class{constructor(e){this._telemetry=e}reconnecting(t){const n=t instanceof e?"media":"signaling";this._telemetry.info({group:"room",name:"reconnecting",payload:{reason:n}})}reconnected(){this._telemetry.info({group:"room",name:"reconnected"})}disconnected(){this._telemetry.info({group:"room",name:"disconnected"})}},qn}();return zn=new class{constructor(){this._publisher=null,this._connectTimestamp=null,this._log=null,this._isConfigured=!1,this.network=new e(this),this.getUserMedia=new t(this),this.quality=new n(this),this.track=new i(this),this.application=new r(this),this.system=new s(this),this.pc=new o(this),this.room=new a(this)}configure({publisher:e,log:t,connectTimestamp:n}){if(!e||!t||"number"!=typeof n)throw new Error("Telemetry.configure requires publisher, log, and connectTimestamp");return this._publisher=e,this._log=t,this._connectTimestamp=n,this._isConfigured=!0,this._publisher.on("connected",()=>{this._log.debug("Telemetry publisher connected.")}),this._publisher.on("reconnecting",()=>{this._log.warn("Telemetry publisher reconnecting...")}),this}_emit(e,t,n,i){if(!this._isConfigured)return;const r=Date.now(),s=r-this._connectTimestamp,o=Object.assign({elapsedTime:s,level:n},i||{});if(!this._publisher.publish(e,t,o))return void this._log.warn(`Telemetry event "${e}:${t}" dropped - publisher unavailable.`);const a=Object.assign({elapsedTime:s,group:e,level:n,name:t,timestamp:r},i?{payload:i}:{}),c={debug:"debug",error:"error",info:"info",warning:"warn"}[n];this._log[c]("telemetry",a)}info({group:e,name:t,payload:n}){return this._emit(e,t,"info",n)}warning({group:e,name:t,payload:n}){return this._emit(e,t,"warning",n)}error({group:e,name:t,payload:n}){return this._emit(e,t,"error",n)}debug({group:e,name:t,payload:n}){return this._emit(e,t,"debug",n)}},zn}function Zn(){if(Kn)return i;Kn=1,Object.defineProperty(i,"__esModule",{value:!0}),i.createLocalTracks=function(i){return e.__awaiter(this,void 0,void 0,function*(){const m=!(i&&("audio"in i||"video"in i)),g=Object.assign({audio:m,getUserMedia:r,loggerName:d,logLevel:l,LocalAudioTrack:s,LocalDataTrack:o,LocalVideoTrack:a,MediaStreamTrack:MediaStreamTrack,Log:c,video:m},i),_=`[createLocalTracks #${++f}]`,v=n(g.logLevel),b=new g.Log("default",_,v,g.loggerName),y=Object.assign({log:b},g);if(delete y.name,!1===g.audio&&!1===g.video)return b.info("Neither audio nor video requested, so returning empty LocalTracks"),[];if(g.tracks)return b.info("Adding user-provided LocalTracks"),b.debug("LocalTracks:",g.tracks),g.tracks;const k={audio:"object"==typeof g.audio&&g.audio.name?{name:g.audio.name}:{defaultDeviceCaptureMode:"auto"},video:"object"==typeof g.video&&g.video.name?{name:g.video.name}:{}};let w;if(k.audio.isCreatedByCreateLocalTracks=!0,k.video.isCreatedByCreateLocalTracks=!0,"object"==typeof g.audio)if("boolean"==typeof g.audio.workaroundWebKitBug1208516&&(k.audio.workaroundWebKitBug1208516=g.audio.workaroundWebKitBug1208516),"noiseCancellationOptions"in g.audio&&(w=g.audio.noiseCancellationOptions,delete g.audio.noiseCancellationOptions),"defaultDeviceCaptureMode"in g.audio){if(["auto","manual"].every(e=>e!==g.audio.defaultDeviceCaptureMode))throw u("CreateLocalAudioTrackOptions.defaultDeviceCaptureMode",["auto","manual"]);k.audio.defaultDeviceCaptureMode=g.audio.defaultDeviceCaptureMode}else k.audio.defaultDeviceCaptureMode="auto";"object"==typeof g.video&&"boolean"==typeof g.video.workaroundWebKitBug1208516&&(k.video.workaroundWebKitBug1208516=g.video.workaroundWebKitBug1208516),"object"==typeof g.audio&&delete g.audio.name,"object"==typeof g.video&&delete g.video.name;const S={audio:g.audio,video:g.video},T="object"==typeof g.audio&&g.audio.workaroundWebKitBug180748;try{const n=yield T?h(b,g.getUserMedia,S):g.getUserMedia(S);p.getUserMedia.succeeded();const i=[...n.getAudioTracks(),...n.getVideoTracks()];return b.info("Call to getUserMedia successful; got tracks:",i),yield Promise.all(i.map(n=>e.__awaiter(this,void 0,void 0,function*(){if("audio"===n.kind&&w){const{cleanTrack:e,noiseCancellation:i}=yield(0,t.applyNoiseCancellation)(n,w,b);return new y.LocalAudioTrack(e,Object.assign(Object.assign(Object.assign({},k.audio),y),{noiseCancellation:i}))}return"audio"===n.kind?new y.LocalAudioTrack(n,Object.assign(Object.assign({},k.audio),y)):new y.LocalVideoTrack(n,Object.assign(Object.assign({},k.video),y))})))}catch(e){throw"NotAllowedError"===e.name||"PermissionDeniedError"===e.name?p.getUserMedia.denied():p.getUserMedia.failed(e),b.warn("Call to getUserMedia failed:",e),e}})};const e=G,t=function(){if(re)return K;re=1,Object.defineProperty(K,"__esModule",{value:!0}),K.NoiseCancellationImpl=void 0,K.applyNoiseCancellation=function(i,r,s){return e.__awaiter(this,void 0,void 0,function*(){try{const e=yield(0,t.createNoiseCancellationAudioProcessor)(r,s);return{cleanTrack:e.connect(i),noiseCancellation:new n(e,i)}}catch(e){return s.warn(`Failed to create noise cancellation. Returning normal audio track: ${e}`),{cleanTrack:i}}})};const e=G,t=le();ce();class n{constructor(e,t){this._processor=e,this._sourceTrack=t,this._disabledPermanent=!1}get vendor(){return this._processor.vendor}get sourceTrack(){return this._sourceTrack}get isEnabled(){return this._processor.isEnabled()}enable(){if(this._disabledPermanent)throw new Error(`${this.vendor} noise cancellation is disabled permanently for this track`);return this._processor.enable(),Promise.resolve()}disable(){return this._processor.disable(),Promise.resolve()}reacquireTrack(t){return e.__awaiter(this,void 0,void 0,function*(){const e=this._processor.isEnabled();this._processor.disconnect();const n=yield t();this._sourceTrack=n;const i=this._processor.connect(n);return e?this._processor.enable():this._processor.disable(),i})}disablePermanently(){return this._disabledPermanent=!0,this.disable()}stop(){this._processor.disconnect(),this._sourceTrack.stop()}}return K.NoiseCancellationImpl=n,K}(),{buildLogLevels:n}=Ce(),{getUserMedia:r}=_n(),{LocalAudioTrack:s,LocalDataTrack:o,LocalVideoTrack:a}=Bn(),c=ce(),{DEFAULT_LOG_LEVEL:l,DEFAULT_LOGGER_NAME:d,typeErrors:{INVALID_VALUE:u}}=ae(),h=Ln(),p=Xn();let f=0;return i}var ei,ti={},ni={};var ii,ri={};var si,oi={};function ai(){if(si)return oi;si=1,Object.defineProperty(oi,"__esModule",{value:!0}),oi.getCombinedConnectionStats=function(i){return e.__awaiter(this,arguments,void 0,function*({publisher:e,subscriber:i}){const[r,s]=yield Promise.all([e,i].map(e=>e.getStats())),o=t(s,"timestamp",["audio"],["inbound-rtp"]),a=o.length>0?o[0]:0,c=t(s,"jitter",["audio"],["inbound-rtp"]).reduce((e,t)=>Math.max(e,t),0),l=t(s,"packetsReceived",["audio","video"],["inbound-rtp"]).reduce((e,t)=>e+t,0),d=t(s,"packetsLost",["audio","video"],["inbound-rtp"]).reduce((e,t)=>e+t,0),u=t(r,"roundTripTime",["audio","video"],["remote-inbound-rtp"]).reduce((e,t)=>Math.max(e,t),0),h=1e3*(t(s,"currentRoundTripTime",[],["candidate-pair"]).reduce((e,t)=>Math.max(e,t),0)||u),p=t(r,"bytesSent",[],["candidate-pair"]).reduce((e,t)=>e+t,0),f=t(s,"bytesReceived",[],["candidate-pair"]).reduce((e,t)=>e+t,0),m=function(e){let t=null;const i=[];e.forEach(e=>{"transport"===e.type&&e.selectedCandidatePairId?t=e.selectedCandidatePairId:"candidate-pair"===e.type&&i.push(e)});const r=i.find(e=>e.selected||t&&e.id===t);if(!r)return null;const s=r,o=e.get(s.localCandidateId),a=e.get(s.remoteCandidateId);if(!o||!a)return null;return{localCandidate:n(o),remoteCandidate:n(a)}}(s),g=[];return s.forEach(e=>{"local-candidate"!==e.type&&"remote-candidate"!==e.type||g.push(n(e))}),{timestamp:a,jitter:c,packets:l,packetsLost:d,roundTripTime:h,bytesSent:p,bytesReceived:f,selectedIceCandidatePairStats:m,iceCandidateStats:g}})};const e=G;function t(e,t,n,i){let r=[];return e.forEach(e=>{0!==i.length&&!i.includes(e.type)||0!==n.length&&!n.includes(e.kind)||"number"!=typeof e[t]||r.push(e[t])}),r}function n(e){return[{key:"transportId",type:"string"},{key:"candidateType",type:"string"},{key:"port",altKeys:["portNumber"],type:"number"},{key:"address",altKeys:["ip","ipAddress"],type:"string"},{key:"priority",type:"number"},{key:"protocol",altKeys:["transport"],type:"string"},{key:"url",type:"string"},{key:"relayProtocol",type:"string"}].reduce(function(t,n){let i=[n.key];n.altKeys&&(i=i.concat(n.altKeys));var r=i.find(t=>t in e);return r&&typeof e[r]===n.type&&(t[n.key]=e[r]),t},{})}return oi}var ci,li,di,ui,hi,pi,fi,mi,gi,_i,vi,bi={};function yi(){if(li)return ci;li=1;const e=xe().EventEmitter,t=Ce();function n(e,t,n){return e.get(t).has(n)}function i(e,t,n){return n=n||new Set,e.get(t).forEach(t=>{n.has(t)||(n.add(t),i(e,t,n).forEach(n.add,n))}),n}function r(e,t){return new Error(`"${t}" cannot be reached from "${e}"`)}return ci=class extends e{constructor(e,t){super();let n=null,r=e;var s;t=function(e){const t=new Map;for(const n in e)t.set(n,new Set(e[n]));return t}(t),Object.defineProperties(this,{_lock:{get:()=>n,set(e){n=e}},_reachableStates:{value:(s=t,Array.from(s.keys()).reduce((e,t)=>e.set(t,i(s,t)),new Map))},_state:{get:()=>r,set(e){r=e}},_states:{value:t},_whenDeferreds:{value:new Set},isLocked:{enumerable:!0,get:()=>null!==n},state:{enumerable:!0,get:()=>r}}),this.on("stateChanged",e=>{this._whenDeferreds.forEach(t=>{t.when(e,t.resolve,t.reject)})})}_whenPromise(e){if("function"!=typeof e)return Promise.reject(new Error("when() executor must be a function"));const n=t.defer();return n.when=e,this._whenDeferreds.add(n),n.promise.then(e=>(this._whenDeferreds.delete(n),e),e=>{throw this._whenDeferreds.delete(n),e})}bracket(e,t){let n;const i=this;function r(e){if(i.hasLock(n)&&i.releaseLockCompletely(n),e)throw e}return this.takeLock(e).then(function(e){return n=e,t(n)}).then(function(e){return r(),e},r)}hasLock(e){return this._lock===e}preempt(e,t,i){if(!n(this._states,this.state,e))throw new Error(`Cannot transition from "${this.state}" to "${e}"`);let r;this.isLocked&&(r=this._lock,this._lock=null);let s=null;t&&(s=this.takeLockSync(t));const o=s?null:this.takeLockSync("preemption");return this.transition(e,s||o,i),r&&r.resolve(),o&&this.releaseLock(o),s}releaseLock(e){if(!this.isLocked)throw new Error(`Could not release the lock for ${e.name} because the StateMachine is not locked`);if(!this.hasLock(e))throw new Error(`Could not release the lock for ${e.name} because ${this._lock.name} has the lock`);0===e.depth?(this._lock=null,e.resolve()):e.depth--}releaseLockCompletely(e){if(!this.isLocked)throw new Error(`Could not release the lock for ${e.name} because the StateMachine is not locked`);if(!this.hasLock(e))throw new Error(`Could not release the lock for ${e.name} because ${this._lock.name} has the lock`);e.depth=0,this._lock=null,e.resolve()}takeLock(e){if("object"==typeof e){const t=e;return new Promise(e=>{e(this.takeLockSync(t))})}const t=e;if(this.isLocked){var n=this.takeLock.bind(this,t);return this._lock.promise.then(n)}return Promise.resolve(this.takeLockSync(t))}takeLockSync(e){const n="string"==typeof e?null:e,i=n?n.name:e;if(n&&!this.hasLock(n)||!n&&this.isLocked)throw new Error(`Could not take the lock for ${i} because the lock for ${this._lock.name} was not released`);if(n)return n.depth++,n;const r=function(e){const n=t.defer();return n.name=e,n.depth=0,n}(i);return this._lock=r,r}transition(e,t,i){if(i=i||[],this.isLocked){if(!t)throw new Error("You must provide the key in order to transition");if(!this.hasLock(t))throw new Error(`Could not transition using the key for ${t.name} because ${this._lock.name} has the lock`)}else if(t)throw new Error(`Key provided for ${t.name}, but the StateMachine was not locked (possibly due to preemption)`);if(!n(this._states,this.state,e))throw new Error(`Cannot transition from "${this.state}" to "${e}"`);this._state=e,this.emit(...["stateChanged",e].concat(i))}tryTransition(e,t,n){try{this.transition(e,t,n)}catch(e){return!1}return!0}when(e){return this.state===e?Promise.resolve(this):n(this._reachableStates,this.state,e)?this._whenPromise((t,i,s)=>{t===e?i(this):n(this._reachableStates,t,e)||s(r(t,e))}):Promise.reject(r(this.state,e))}},ci}function ki(){if(pi)return hi;pi=1;return hi=class{constructor(e,t,n=!0){Object.defineProperties(this,{_delay:{value:t,writable:!0},_fn:{value:e},_timeout:{value:null,writable:!0}}),n&&this.start()}get delay(){return this._delay}get isSet(){return!!this._timeout}setDelay(e){this._delay=e}start(){this.isSet||(this._timeout=setTimeout(()=>{const e=this._fn;this.clear(),e()},this._delay))}clear(){clearTimeout(this._timeout),this._timeout=null}reset(){this.clear(),this.start()}}}function wi(){return mi?fi:(mi=1,fi=WebSocket)}function Si(){if(_i)return gi;_i=1;const e=yi(),{buildLogLevels:t,makeUUID:n}=Ce(),i=ce(),r=ui?di:(ui=1,di=class{constructor(e,t){const n=(t=Object.assign({navigator:navigator,window:window},t)).navigator,i=n.connection||{type:null};let r=i.type;const{_events:s,_listener:o,_target:a}=i.type?{_events:{value:["change","typechange"]},_listener:{value:()=>{const t=r!==this.type&&this.isOnline;r=this.type,t&&e()}},_target:{value:i}}:{_events:{value:["online"]},_listener:{value:e},_target:{value:t.window}};Object.defineProperties(this,{isOnline:{enumerable:!0,get:()=>"boolean"!=typeof n.onLine||n.onLine},type:{enumerable:!0,get:()=>i.type||null},_listener:o,_events:s,_target:a})}start(){this._events.forEach(e=>{this._target.addEventListener(e,this._listener)})}stop(){this._events.forEach(e=>{this._target.removeEventListener(e,this._listener)})}}),s=ki();let o=0;const a={closed:[],connecting:["closed","open","waiting"],early:["closed","connecting"],open:["closed"],waiting:["closed","connecting","early","open"]},c={closed:"close",open:"open",waiting:"waiting"},l=3e3,d=3001,u=3002,h=3003,p=3005,f=3006,m=globalThis,g=m.WebSocket?m.WebSocket:wi(),_={BUSY:"busy",FAILED:"failed",LOCAL:"local",REMOTE:"remote",TIMEOUT:"timeout"},v=new Map([[l,_.TIMEOUT],[d,_.TIMEOUT],[u,_.FAILED],[h,_.FAILED],[3004,_.TIMEOUT],[f,_.BUSY],[3007,_.TIMEOUT]]);class b extends e{constructor(e,n){super("early",a),n=Object.assign({helloBody:null,maxConsecutiveFailedHellos:3,maxConsecutiveMissedHeartbeats:3,requestedHeartbeatTimeout:5e3,openTimeout:15e3,welcomeTimeout:5e3,Log:i,WebSocket:g},n);const s=t(n.logLevel),l=new n.Log("default",this,s,n.loggerName),d=n.networkMonitor?new r(()=>{const{type:e}=d,t="Network changed"+(e?` to ${e}`:"");l.debug(t),this._close({code:3004,reason:t})}):null;Object.defineProperties(this,{_busyWaitTimeout:{value:null,writable:!0},_consecutiveHeartbeatsMissed:{value:0,writable:!0},_cookie:{value:null,writable:!0},_eventObserver:{value:n.eventObserver},_heartbeatTimeout:{value:null,writable:!0},_hellosLeft:{value:n.maxConsecutiveFailedHellos,writable:!0},_instanceId:{value:++o},_log:{value:l},_messageQueue:{value:[]},_networkMonitor:{value:d},_options:{value:n},_openTimeout:{value:null,writable:!0},_sendHeartbeatTimeout:{value:null,writable:!0},_serverUrl:{value:e},_welcomeTimeout:{value:null,writable:!0},_ws:{value:null,writable:!0}});const u={connecting:"info",early:"info",open:"info",waiting:"warning",closed:"info"};this.on("stateChanged",(e,...t)=>{e in c&&this.emit(c[e],...t);const n={name:e,group:"signaling",level:u[this.state]};if("closed"===e){const[e]=t;n.payload={reason:e},n.level=e===_.LOCAL?"info":"error"}this._eventObserver.emit("event",n)}),this._eventObserver.emit("event",{name:this.state,group:"signaling",level:u[this.state]}),this._connect()}toString(){return`[TwilioConnection #${this._instanceId}: ${this._ws.url}]`}_close({code:e,reason:t}){if("closed"===this.state)return;this._openTimeout&&this._openTimeout.clear(),this._welcomeTimeout&&this._welcomeTimeout.clear(),this._heartbeatTimeout&&this._heartbeatTimeout.clear(),this._sendHeartbeatTimeout&&this._sendHeartbeatTimeout.clear(),this._networkMonitor&&this._networkMonitor.stop(),this._busyWaitTimeout&&e!==p&&this._busyWaitTimeout.clear(),this._messageQueue.splice(0);const n=this._log;1e3===e?(n.debug("Closed"),this.transition("closed",null,[_.LOCAL])):(n.warn(`Closed: ${e} - ${t}`),e!==p&&this.transition("closed",null,[v.get(e)||_.REMOTE]));const{readyState:i}=this._ws,{WebSocket:r}=this._options;i!==r.CLOSING&&i!==r.CLOSED&&this._ws.close(e,t)}_connect(){const e=this._log;if("waiting"===this.state)this.transition("early");else if("early"!==this.state)return void e.warn(`Unexpected state "${this.state}" for connecting to the TCMP server.`);this._ws=new this._options.WebSocket(this._serverUrl);const t=this._ws;e.debug("Created a new WebSocket:",t),t.addEventListener("close",e=>this._close(e));const{openTimeout:n}=this._options;this._openTimeout=new s(()=>{const e=`Failed to open in ${n} ms`;this._close({code:3007,reason:e})},n),t.addEventListener("open",()=>{e.debug("WebSocket opened:",t),this._openTimeout.clear(),this._startHandshake(),this._networkMonitor&&this._networkMonitor.start()}),t.addEventListener("message",t=>{e.debug(`Incoming: ${t.data}`);try{t=JSON.parse(t.data)}catch(e){return void this.emit("error",e)}switch(t.type){case"bad":this._handleBad(t);break;case"busy":this._handleBusy(t);break;case"bye":break;case"msg":this._handleMessage(t);case"heartbeat":this._handleHeartbeat();break;case"welcome":this._handleWelcome(t);break;default:this._log.debug(`Unknown message type: ${t.type}`),this.emit("error",new Error(`Unknown message type: ${t.type}`))}})}_handleBad({reason:e}){const t=this._log;if(["connecting","open"].includes(this.state)){if("connecting"===this.state)return t.warn(`Closing: 3002 - ${e}`),void this._close({code:u,reason:e});t.debug(`Error: ${e}`),this.emit("error",new Error(e))}else t.warn(`Unexpected state "${this.state}" for handling a "bad" message from the TCMP server.`)}_handleBusy({cookie:e,keepAlive:t,retryAfter:n}){const i=this._log;if(!["connecting","waiting"].includes(this.state))return void i.warn(`Unexpected state "${this.state}" for handling a "busy" message from the TCMP server.`);this._busyWaitTimeout&&this._busyWaitTimeout.clear(),this._welcomeTimeout&&this._welcomeTimeout.clear();const r=n<0?'Received terminal "busy" message':`Received "busy" message, retrying after ${n} ms`;if(n<0)return i.warn(`Closing: 3006 - ${r}`),void this._close({code:f,reason:r});const{maxConsecutiveFailedHellos:o}=this._options;this._hellosLeft=o,this._cookie=e||null,t?(i.warn(r),this._busyWaitTimeout=new s(()=>this._startHandshake(),n)):(i.warn(`Closing: 3005 - ${r}`),this._close({code:p,reason:r}),this._busyWaitTimeout=new s(()=>this._connect(),n)),this.transition("waiting",null,[t,n])}_handleHeartbeat(){"open"===this.state?this._heartbeatTimeout.reset():this._log.warn(`Unexpected state "${this.state}" for handling a "heartbeat" message from the TCMP server.`)}_handleHeartbeatTimeout(){if("open"!==this.state)return;const e=this._log,{maxConsecutiveMissedHeartbeats:t}=this._options;e.debug(`Consecutive heartbeats missed: ${t}`);const n=`Missed ${t} "heartbeat" messages`;e.warn(`Closing: 3001 - ${n}`),this._close({code:d,reason:n})}_handleMessage({body:e}){"open"===this.state?this.emit("message",e):this._log.warn(`Unexpected state "${this.state}" for handling a "msg" message from the TCMP server.`)}_handleWelcome({negotiatedTimeout:e}){const t=this._log;if(!["connecting","waiting"].includes(this.state))return void t.warn(`Unexpected state "${this.state}" for handling a "welcome" message from the TCMP server.`);"waiting"===this.state&&(t.debug('Received "welcome" message, no need to retry connection.'),this._busyWaitTimeout.clear());const{maxConsecutiveMissedHeartbeats:n}=this._options,i=e*n,r=e-200;this._welcomeTimeout.clear(),this._heartbeatTimeout=new s(()=>this._handleHeartbeatTimeout(),i),this._messageQueue.splice(0).forEach(e=>this._send(e)),this._sendHeartbeatTimeout=new s(()=>this._sendHeartbeat(),r),this.transition("open")}_handleWelcomeTimeout(){if("connecting"!==this.state)return;const e=this._log;if(this._hellosLeft<=0){const t="All handshake attempts failed";return e.warn(`Closing: 3000 - ${t}`),void this._close({code:l,reason:t})}const{maxConsecutiveFailedHellos:t}=this._options;e.warn(`Handshake attempt ${t-this._hellosLeft} failed`),this._startHandshake()}_send(e){const{readyState:t}=this._ws,{WebSocket:n}=this._options;if(t===n.OPEN){const t=JSON.stringify(e);this._log.debug(`Outgoing: ${t}`);try{this._ws.send(t),this._sendHeartbeatTimeout&&this._sendHeartbeatTimeout.reset()}catch(e){const t="Failed to send message";this._log.warn(`Closing: 3003 - ${t}`),this._close({code:h,reason:t})}}}_sendHeartbeat(){"closed"!==this.state&&this._send({type:"heartbeat"})}_sendHello(){const{helloBody:e,requestedHeartbeatTimeout:t}=this._options,i={id:n(),timeout:t,type:"hello",version:2};this._cookie&&(i.cookie=this._cookie),e&&(i.body=e),this._send(i)}_sendOrEnqueue(e){if("closed"===this.state)return;const t="open"===this.state?e=>this._send(e):e=>this._messageQueue.push(e);t(e)}_startHandshake(){if(["early","waiting"].includes(this.state)&&this.transition("connecting"),"connecting"!==this.state)return;this._hellosLeft--,this._sendHello();const{welcomeTimeout:e}=this._options;this._welcomeTimeout=new s(()=>this._handleWelcomeTimeout(),e)}close(){"closed"!==this.state&&(this._sendOrEnqueue({type:"bye"}),this._close({code:1e3,reason:"Normal"}))}sendMessage(e){this._sendOrEnqueue({body:e,type:"msg"})}}return b.CloseReason=_,gi=b}var Ti,Ci={};var Pi,Ei={};var Oi,Li,Ri,Ii,Mi,Di,Ai,xi,ji,$i,Ni,Vi,Fi,Bi,Ui={};function Hi(){if(Ri)return Li;Ri=1;return Li=class{constructor(){Object.defineProperties(this,{_samples:{value:[{denominator:0,numerator:0},{denominator:0,numerator:0}]}})}get(){const{_samples:e}=this,t=e[1].denominator-e[0].denominator||1/0;return(e[1].numerator-e[0].numerator)/t}putSample(e,t){const{_samples:n}=this;n.shift(),n.push({denominator:t,numerator:e})}}}function Wi(){if(Mi)return Ii;Mi=1;const{EventEmitter:e}=xe(),t=["signaling","room","media","quality","video-processor","preflight"],n=["debug","error","info","warning"];return Ii=class extends e{constructor(e,i,r,s=null){super(),this.on("event",({name:o,group:a,level:c,payload:l})=>{if("string"!=typeof o)throw r.error("Unexpected name: ",o),new Error("Unexpected name: ",o);if(!t.includes(a))throw r.error("Unexpected group: ",a),new Error("Unexpected group: ",a);if(!n.includes(c))throw r.error("Unexpected level: ",c),new Error("Unexpected level: ",c);const d=Date.now(),u=d-i,h=Object.assign({elapsedTime:u,level:c},l||{});e.publish(a,o,h);const p=Object.assign({elapsedTime:u,group:a,level:c,name:o,timestamp:d},l?{payload:l}:{});r[{debug:"debug",error:"error",info:"info",warning:"warn"}[c]]("event",p),s&&"signaling"===a&&s.emit("event",p)})}},Ii}function qi(){if(Ai)return Di;Ai=1;const e=xe().EventEmitter,{getUserAgent:t}=Ce(),n=globalThis,i=n.WebSocket?n.WebSocket:wi(),{hardwareDevicePublisheriPad:r,hardwareDevicePublisheriPhone:s}=ae(),o=Ce(),a=bn();function c(e,t,n,i,o,c,l){e._connectTimestamp=Date.now(),e._reconnectAttemptsLeft--,e._ws=new l.WebSocket(l.gateway);const d=e._ws;d.addEventListener("close",t=>{1e3!==t.code?e.emit("disconnected",new Error(`WebSocket Error ${t.code}: ${t.reason}`)):e.emit("disconnected")}),d.addEventListener("message",t=>{!function(e,t,n){switch(t.type){case"connected":e._session=t.session,e._reconnectAttemptsLeft=n.maxReconnectAttempts,e._eventQueue.splice(0).forEach(e._publish,e),e.emit("connected");break;case"error":e._ws.close(),e.emit("disconnected",new Error(t.message))}}(e,JSON.parse(t.data),l)}),d.addEventListener("open",()=>{const e={type:"connect",token:t,version:1};e.publisher={name:n,sdkVersion:i,userAgent:l.userAgent,participantSid:c,roomSid:o},a.isIpad()?e.publisher=Object.assign(Object.assign({},e.publisher),r):a.isIphone()&&(e.publisher=Object.assign(Object.assign({},e.publisher),s)),d.send(JSON.stringify(e))})}function l(e,t){return"prod"===e?`wss://sdkgw.${t}.twilio.com`:`wss://sdkgw.${e}-${t}.twilio.com`}return Di=class extends e{constructor(e,n,r,s,a,d){super(),d=Object.assign({gateway:`${l(s,a)}/v1/VideoEvents`,maxReconnectAttempts:5,reconnectIntervalMs:50,userAgent:t(),WebSocket:i},d),Object.defineProperties(this,{_connectTimestamp:{value:0,writable:!0},_eventQueue:{value:[]},_readyToConnect:{value:o.defer()},_reconnectAttemptsLeft:{value:d.maxReconnectAttempts,writable:!0},_ws:{value:null,writable:!0},_WebSocket:{value:d.WebSocket}}),this._readyToConnect.promise.then(({roomSid:t,participantSid:i})=>{const s=this;this.on("disconnected",function o(a){if(s._session=null,a&&s._reconnectAttemptsLeft>0)return s.emit("reconnecting"),void function(e,t,n,i,r,s,o){const a=Date.now()-e._connectTimestamp,l=o.reconnectIntervalMs-a;if(l>0)return void setTimeout(()=>{c(e,t,n,i,r,s,o)},l);c(e,t,n,i,r,s,o)}(s,e,n,r,t,i,d);s.removeListener("disconnected",o)}),c(this,e,n,r,t,i,d)}).catch(()=>{})}connect(e,t){this._readyToConnect.resolve({roomSid:e,participantSid:t})}_publish(e){e.session=this._session,this._ws.send(JSON.stringify(e))}disconnect(){if(null===this._ws||this._ws.readyState===this._WebSocket.CLOSING||this._ws.readyState===this._WebSocket.CLOSED)return!1;try{this._ws.close()}catch(e){}return this.emit("disconnected"),!0}publish(e,t,n){if(null!==this._ws&&(this._ws.readyState===this._WebSocket.CLOSING||this._ws.readyState===this._WebSocket.CLOSED))return!1;return("string"==typeof this._session?this._publish.bind(this):this._eventQueue.push.bind(this._eventQueue))({group:e,name:t,payload:n,timestamp:Date.now(),type:"event",version:1}),!0}}}function Qi(){if(xi)return ti;xi=1,Object.defineProperty(ti,"__esModule",{value:!0}),ti.PreflightTest=void 0,ti.runPreflight=function(e,t={}){return new R(e,t)};const e=G,t=ae(),n=(ei||(ei=1,Object.defineProperty(ni,"__esModule",{value:!0}),ni.Timer=void 0,ni.Timer=class{constructor(){this._end=void 0,this.start()}start(){return this._start=Date.now(),this}stop(){return this._end=Date.now(),this}getTimeMeasurement(){return{start:this._start,end:this._end,duration:void 0===this._end?void 0:this._end-this._start}}}),ni),i=function(){if(ii)return ri;ii=1,Object.defineProperty(ri,"__esModule",{value:!0}),ri.calculateMOS=function(t,n,i){const r=t+2*n+10;let s=0;switch(!0){case r<160:s=e-r/40;break;case r<1e3:s=e-(r-120)/10}s=1==i<=s/2.5?Math.max(s-2.5*i,6.52):0;return 1+.035*s+7e-6*s*(s-60)*(100-s)},ri.mosToScore=function(e){let t=0;return t=e?e>4.2?5:e>4?4:e>3.6?3:e>3?2:1:0,t};const e=94.768;return ri}(),r=ai(),s=function(){if(vi)return bi;vi=1,Object.defineProperty(bi,"__esModule",{value:!0}),bi.getTurnCredentials=function(s,o){return new Promise((a,c)=>{const l=new r.EventEmitter,d=new e(o,{networkMonitor:null,eventObserver:l,helloBody:{edge:"roaming",preflight:!0,token:s,type:"ice",version:t}});let u=!1;d.once("close",()=>{u||(u=!0,c(new i))}),d.on("message",e=>{const{code:t,message:i,ice_servers:r,type:s}=e;"iced"!==s&&"error"!==s||u||(u=!0,"iced"===s?a(r):c(n(t,i)),d.close())})})};const e=Si(),{ICE_VERSION:t}=ae(),{createTwilioError:n,SignalingConnectionError:i}=Jn(),r=xe();return bi}(),o=(Ti||(Ti=1,Object.defineProperty(Ci,"__esModule",{value:!0}),Ci.makeStat=function(e){return e&&e.length?{min:Math.min(...e),max:Math.max(...e),average:e.reduce((e,t)=>e+t,0)/e.length}:null}),Ci),a=(Pi||(Pi=1,Object.defineProperty(Ei,"__esModule",{value:!0}),Ei.syntheticAudio=function(){const e=X(),t={},n=e.getOrCreate(t),i=n.createOscillator(),r=i.connect(n.createMediaStreamDestination());i.start();const s=r.stream.getAudioTracks()[0],o=s.stop;return s.stop=()=>{o.call(s),e.release(t)},s}),Ei),c=(Oi||(Oi=1,Object.defineProperty(Ui,"__esModule",{value:!0}),Ui.syntheticVideo=function({width:e=640,height:t=480}={}){const n=Object.assign(document.createElement("canvas"),{width:e,height:t});let i=n.getContext("2d");i.fillStyle="green",i.fillRect(0,0,n.width,n.height);let r=!1;requestAnimationFrame(function n(){if(!r){const r=Math.round(255*Math.random()),s=Math.round(255*Math.random()),o=Math.round(255*Math.random()),a=Math.round(255*Math.random());i.fillStyle=`rgba(${r}, ${s}, ${o}, ${a})`,i.fillRect(Math.random()*e,Math.random()*t,50,50),requestAnimationFrame(n)}});const s=n.captureStream(30).getTracks()[0],o=s.stop;return s.stop=()=>{r=!0,o.call(s)},s}),Ui),l=Ce(),{WS_SERVER:d}=ae(),u=ce(),h=Sn(),p=Hi(),f=Wi(),m=qi(),{createSID:g,sessionSID:_}=Se(),{SignalingConnectionTimeoutError:v,MediaConnectionError:b}=Jn(),y=1e4,k="mediaAcquired",w="connected",S="mediaSubscribed",T="mediaStarted",C="dtlsConnected",P="peerConnectionConnected",E="iceConnected";function O(e){return null!=e}let L=0;class R extends h{constructor(e,i){super(),this._testTiming=new n.Timer,this._dtlsTiming=new n.Timer,this._iceTiming=new n.Timer,this._peerConnectionTiming=new n.Timer,this._mediaTiming=new n.Timer,this._connectTiming=new n.Timer,this._sentBytesMovingAverage=new p,this._packetLossMovingAverage=new p,this._progressEvents=[],this._receivedBytesMovingAverage=new p;const r=i,{environment:s="prod",region:o="gll",duration:a=y}=r,c=r.wsServer||d(s,o);this._log=new u("default",this,t.DEFAULT_LOG_LEVEL,t.DEFAULT_LOGGER_NAME),this._testDuration=a,this._instanceId=L++,this._testTiming.start(),this._runPreflightTest(e,s,c)}toString(){return`[Preflight #${this._instanceId}]`}stop(){this._stopped=!0}_generatePreflightReport(e){return this._testTiming.stop(),{testTiming:this._testTiming.getTimeMeasurement(),networkTiming:{dtls:this._dtlsTiming.getTimeMeasurement(),ice:this._iceTiming.getTimeMeasurement(),peerConnection:this._peerConnectionTiming.getTimeMeasurement(),connect:this._connectTiming.getTimeMeasurement(),media:this._mediaTiming.getTimeMeasurement()},stats:{jitter:(0,o.makeStat)(null==e?void 0:e.jitter),rtt:(0,o.makeStat)(null==e?void 0:e.rtt),packetLoss:(0,o.makeStat)(null==e?void 0:e.packetLoss)},selectedIceCandidatePairStats:e?e.selectedIceCandidatePairStats:null,iceCandidateStats:e?e.iceCandidateStats:[],progressEvents:this._progressEvents,mos:(0,o.makeStat)(null==e?void 0:e.mos)}}_executePreflightStep(t,n,i){return e.__awaiter(this,void 0,void 0,function*(){this._log.debug("Executing step: ",t);const e=this._testDuration+1e4;if(this._stopped)throw new Error("stopped");const r=Promise.resolve().then(n);let s=null;const o=new Promise((n,r)=>{s=setTimeout(()=>{r(i||new Error(`${t} timeout.`))},e)});try{return yield Promise.race([o,r])}finally{null!==s&&clearTimeout(s)}})}_collectNetworkTimings(e){return new Promise(t=>{let n;e.addEventListener("iceconnectionstatechange",()=>{"checking"===e.iceConnectionState&&this._iceTiming.start(),"connected"===e.iceConnectionState&&(this._iceTiming.stop(),this._updateProgress(E),(!n||n&&"connected"===n.state)&&t())}),e.addEventListener("connectionstatechange",()=>{"connecting"===e.connectionState&&this._peerConnectionTiming.start(),"connected"===e.connectionState&&(this._peerConnectionTiming.stop(),this._updateProgress(P))});let i=e.getSenders().map(e=>e.transport).find(O);void 0!==i&&(n=i,n.addEventListener("statechange",()=>{"connecting"===n.state&&this._dtlsTiming.start(),"connected"===n.state&&(this._dtlsTiming.stop(),this._updateProgress(C),"connected"===e.iceConnectionState&&t())}))})}_setupInsights({token:e,environment:n=t.DEFAULT_ENVIRONMENT,realm:i=t.DEFAULT_REALM}){const r=new m(e,t.SDK_NAME,t.SDK_VERSION,n,i,{});r.connect("PREFLIGHT_ROOM_SID","PREFLIGHT_PARTICIPANT");const s=new f(r,Date.now(),this._log),o=void 0;return{reportToInsights:({report:e})=>{var t,n;const i=e.stats.jitter||o,a=e.stats.rtt||o,c=e.stats.packetLoss||o,l=e.mos||o,d=new Map;e.iceCandidateStats.forEach(e=>{if(e.candidateType&&e.protocol){let t=d.get(e.candidateType)||[];t.indexOf(e.protocol)<0&&t.push(e.protocol),d.set(e.candidateType,t)}});const u=JSON.stringify(Object.fromEntries(d)),h={name:"report",group:"preflight",level:e.error?"error":"info",payload:{sessionSID:_,preflightSID:g("PF"),progressEvents:JSON.stringify(e.progressEvents),testTiming:e.testTiming,dtlsTiming:e.networkTiming.dtls,iceTiming:e.networkTiming.ice,peerConnectionTiming:e.networkTiming.peerConnection,connectTiming:e.networkTiming.connect,mediaTiming:e.networkTiming.media,selectedLocalCandidate:null===(t=e.selectedIceCandidatePairStats)||void 0===t?void 0:t.localCandidate,selectedRemoteCandidate:null===(n=e.selectedIceCandidatePairStats)||void 0===n?void 0:n.remoteCandidate,iceCandidateStats:u,jitterStats:i,rttStats:a,packetLossStats:c,mosStats:l,error:e.error}};s.emit("event",h),setTimeout(()=>r.disconnect(),2e3)}}}_runPreflightTest(t,n,i){return e.__awaiter(this,void 0,void 0,function*(){let r=[],o=[];const{reportToInsights:l}=this._setupInsights({token:t,environment:n});try{let n=[];r=yield this._executePreflightStep("Acquire media",()=>[(0,a.syntheticAudio)(),(0,c.syntheticVideo)({width:640,height:480})]),this._updateProgress(k),this.emit("debug",{localTracks:r}),this._connectTiming.start();let d=yield this._executePreflightStep("Get turn credentials",()=>(0,s.getTurnCredentials)(t,i),new v);this._connectTiming.stop(),this._updateProgress(w);const u=new RTCPeerConnection({iceServers:d,iceTransportPolicy:"relay",bundlePolicy:"max-bundle"}),h=new RTCPeerConnection({iceServers:d,bundlePolicy:"max-bundle"});o.push(u),o.push(h),this._mediaTiming.start();const p=yield this._executePreflightStep("Setup Peer Connections",()=>e.__awaiter(this,void 0,void 0,function*(){u.addEventListener("icecandidate",e=>e.candidate&&h.addIceCandidate(e.candidate)),h.addEventListener("icecandidate",e=>e.candidate&&u.addIceCandidate(e.candidate)),r.forEach(e=>u.addTrack(e));const e=new Promise(e=>{let t=[];h.addEventListener("track",n=>{t.push(n.track),t.length===r.length&&e(t)})}),t=yield u.createOffer();yield u.setLocalDescription(t),yield h.setRemoteDescription(t);const n=yield h.createAnswer();return yield h.setLocalDescription(n),yield u.setRemoteDescription(n),yield this._collectNetworkTimings(u),e}),new b);this.emit("debug",{remoteTracks:p}),p.forEach(e=>{e.addEventListener("ended",()=>this._log.warn(e.kind+":ended")),e.addEventListener("mute",()=>this._log.warn(e.kind+":muted")),e.addEventListener("unmute",()=>this._log.warn(e.kind+":unmuted"))}),this._updateProgress(S),yield this._executePreflightStep("Wait for tracks to start",()=>new Promise(e=>{const t=document.createElement("video");t.autoplay=!0,t.playsInline=!0,t.muted=!0,t.srcObject=new MediaStream(p),n.push(t),this.emit("debugElement",t),t.oncanplay=e}),new b),this._mediaTiming.stop(),this._updateProgress(T);const f=yield this._executePreflightStep("Collect stats for duration",()=>this._collectRTCStatsForDuration(this._testDuration,{mos:[],jitter:[],rtt:[],outgoingBitrate:[],incomingBitrate:[],packetLoss:[],selectedIceCandidatePairStats:null,iceCandidateStats:[]},u,h)),m=yield this._executePreflightStep("Generate report",()=>this._generatePreflightReport(f));l({report:m}),this.emit("completed",m)}catch(e){const t=this._generatePreflightReport();l({report:Object.assign(Object.assign({},t),{error:null==e?void 0:e.toString()})}),this.emit("failed",e,t)}finally{o.forEach(e=>e.close()),r.forEach(e=>e.stop())}})}_collectRTCStats(t,n,s){return e.__awaiter(this,void 0,void 0,function*(){const e=yield(0,r.getCombinedConnectionStats)({publisher:n,subscriber:s}),{timestamp:o,bytesSent:a,bytesReceived:c,packets:l,packetsLost:d,roundTripTime:u,jitter:h,selectedIceCandidatePairStats:p,iceCandidateStats:f}=e,m=t.jitter.length>0;if(t.jitter.push(h),t.rtt.push(u),this._sentBytesMovingAverage.putSample(a,o),this._receivedBytesMovingAverage.putSample(c,o),this._packetLossMovingAverage.putSample(d,l),m){t.outgoingBitrate.push(1e3*this._sentBytesMovingAverage.get()*8),t.incomingBitrate.push(1e3*this._receivedBytesMovingAverage.get()*8);const e=this._packetLossMovingAverage.get(),n=Math.min(100,100*e);t.packetLoss.push(n);const r=(0,i.calculateMOS)(u,h,e);t.mos.push(r)}t.selectedIceCandidatePairStats||(t.selectedIceCandidatePairStats=p),0===t.iceCandidateStats.length&&(t.iceCandidateStats=f)})}_collectRTCStatsForDuration(t,n,i,r){return e.__awaiter(this,void 0,void 0,function*(){const e=Date.now(),s=Math.min(1e3,t);yield(0,l.waitForSometime)(s),yield this._collectRTCStats(n,i,r);const o=t-(Date.now()-e);return o>0&&(n=yield this._collectRTCStatsForDuration(o,n,i,r)),n})}_updateProgress(e){const t=Date.now()-this._testTiming.getTimeMeasurement().start;this._progressEvents.push({duration:t,name:e}),this.emit("progress",e)}}return ti.PreflightTest=R,ti}function zi(){if($i)return ji;$i=1;class e{constructor(e,t){Object.defineProperties(this,{_isCancelable:{writable:!0,value:!0},_isCanceled:{writable:!0,value:!1},_onCancel:{value:t}}),Object.defineProperty(this,"_promise",{value:new Promise((t,n)=>{e(e=>{this._isCancelable=!1,t(e)},e=>{this._isCancelable=!1,n(e)},()=>this._isCanceled)})})}static reject(t){return new e(function(e,n){n(t)},function(){})}static resolve(t){return new e(function(e){e(t)},function(){})}cancel(){return this._isCancelable&&(this._isCanceled=!0,this._onCancel()),this}catch(){const t=[].slice.call(arguments),n=this._promise;return new e(function(e,i){n.catch(...t).then(e,i)},this._onCancel)}then(){const t=[].slice.call(arguments),n=this._promise;return new e(function(e,i){n.then(...t).then(e,i)},this._onCancel)}finally(){const t=[].slice.call(arguments),n=this._promise;return new e(function(e,i){n.finally(...t).then(e,i)},this._onCancel)}}return ji=e}var Gi,Ki,Yi,Ji,Xi,Zi,er,tr,nr,ir,rr,sr,or,ar,cr,lr,dr,ur,hr,pr,fr,mr,gr,_r,vr,br,yr,kr,wr,Sr,Tr,Cr,Pr,Er,Or,Lr,Rr,Ir,Mr,Dr,Ar,xr,jr,$r,Nr,Vr,Fr,Br,Ur,Hr,Wr,qr,Qr,zr,Gr,Kr,Yr,Jr,Xr,Zr,es,ts,ns,is,rs,ss,os,as,cs,ls={};function ds(){if(Gi)return ls;Gi=1;const{isNonArrayObject:e}=Ce(),{typeErrors:t,clientTrackSwitchOffControl:n,videoContentPreferencesMode:i,subscriptionMode:r,trackPriority:s,trackSwitchOffMode:o}=ae();function a(n,i,r=[]){return void 0===n?null:null!==n&&e(n)?r.reduce((e,{prop:r,type:s,values:o})=>{if(e||!(r in n))return e;const a=n[r];return s&&typeof a!==s||"number"===s&&isNaN(a)?t.INVALID_TYPE(`${i}.${r}`,s):Array.isArray(o)&&!o.includes(a)?t.INVALID_VALUE(`${i}.${r}`,o):e},null):t.INVALID_TYPE(i,"object")}return ls.validateBandwidthProfile=function(e){let t=a(e,"options.bandwidthProfile");return!e||t?t:(t=a(e.video,"options.bandwidthProfile.video",[{prop:"contentPreferencesMode",values:Object.values(i)},{prop:"dominantSpeakerPriority",values:Object.values(s)},{prop:"maxSubscriptionBitrate",type:"number"},{prop:"maxTracks",type:"number"},{prop:"mode",values:Object.values(r)},{prop:"clientTrackSwitchOffControl",values:Object.values(n)},{prop:"trackSwitchOffMode",values:Object.values(o)}]),t||(e.video?"maxTracks"in e.video&&"clientTrackSwitchOffControl"in e.video?new TypeError("options.bandwidthProfile.video.maxTracks is deprecated. Use options.bandwidthProfile.video.clientTrackSwitchOffControl instead."):"renderDimensions"in e.video&&"contentPreferencesMode"in e.video?new TypeError("options.bandwidthProfile.video.renderDimensions is deprecated. Use options.bandwidthProfile.video.contentPreferencesMode instead."):function(e){const t="options.bandwidthProfile.video.renderDimensions";let n=a(e,t);return e?n||Object.values(s).reduce((n,i)=>n||a(e[i],`${t}.${i}`,[{prop:"height",type:"number"},{prop:"width",type:"number"}]),null):n}(e.video.renderDimensions):null))},ls.validateLocalTrack=function(e,n){if(!(e instanceof n.LocalAudioTrack||e instanceof n.LocalDataTrack||e instanceof n.LocalVideoTrack||e instanceof n.MediaStreamTrack))throw t.INVALID_TYPE("track","LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack")},ls.validateObject=a,ls}function us(){if(Yi)return Ki;Yi=1;const e=Sn(),{buildLogLevels:t,valueToJSON:n}=Ce(),{DEFAULT_LOG_LEVEL:i}=ae(),r=ce();let s=0;return Ki=class extends e{constructor(e,n,o){super(),o=Object.assign({logLevel:i},o);const a=t(o.logLevel);Object.defineProperties(this,{_instanceId:{value:s++},_log:{value:o.log?o.log.createLog("default",this):new r("default",this,a,o.loggerName)},trackName:{enumerable:!0,value:e},trackSid:{enumerable:!0,value:n}})}toJSON(){return n(this)}toString(){return`[TrackPublication #${this._instanceId}: ${this.trackSid}]`}}}function hs(){if(Xi)return Ji;Xi=1;const e=us(),{typeErrors:t,trackPriority:n}=ae();return Ji=class extends e{constructor(e,t,n,i){super(t.name,e.sid,i),Object.defineProperties(this,{_reemitSignalingEvent:{value:(...e)=>this.emit(e&&e.length?"warning":"warningsCleared",...e)},_reemitTrackEvent:{value:()=>this.emit(this.isTrackEnabled?"trackEnabled":"trackDisabled")},_signaling:{value:e},_unpublish:{value:n},isTrackEnabled:{enumerable:!0,get(){return"data"===this.track.kind||this.track.isEnabled}},kind:{enumerable:!0,value:t.kind},priority:{enumerable:!0,get:()=>e.updatedPriority},track:{enumerable:!0,value:t}}),["disabled","enabled"].forEach(e=>t.on(e,this._reemitTrackEvent)),["warning","warningsCleared"].forEach(t=>e.on(t,this._reemitSignalingEvent))}toString(){return`[LocalTrackPublication #${this._instanceId}: ${this.trackSid}]`}setPriority(e){const i=Object.values(n);if(!i.includes(e))throw t.INVALID_VALUE("priority",i);return this._signaling.setPriority(e),this}unpublish(){return["disabled","enabled"].forEach(e=>this.track.removeListener(e,this._reemitTrackEvent)),["warning","warningsCleared"].forEach(e=>this._signaling.removeListener(e,this._reemitSignalingEvent)),this._unpublish(this),this}},Ji}function ps(){if(or)return sr;or=1;const{typeErrors:e,trackPriority:t}=ae(),{isIOS:n}=bn(),i=On();return sr=function(r){return class extends r{constructor(e,t,i,r,s,o,a){super(t,a=Object.assign({workaroundWebKitBug212780:n()&&"object"==typeof document&&"function"==typeof document.addEventListener&&"string"==typeof document.visibilityState},a)),Object.defineProperties(this,{_isEnabled:{value:i,writable:!0},_isSwitchedOff:{value:r,writable:!0},_priority:{value:null,writable:!0},_setPriority:{value:s},_setRenderHint:{value:e=>{this._log.debug("updating render hint:",e),o(e)}},isEnabled:{enumerable:!0,get(){return this._isEnabled}},isSwitchedOff:{enumerable:!0,get(){return this._isSwitchedOff}},priority:{enumerable:!0,get(){return this._priority}},sid:{enumerable:!0,value:e},_workaroundWebKitBug212780:{value:a.workaroundWebKitBug212780},_workaroundWebKitBug212780Cleanup:{value:null,writable:!0}})}setPriority(n){const i=[null,...Object.values(t)];if(!i.includes(n))throw e.INVALID_VALUE("priority",i);return this._priority!==n&&(this._priority=n,this._setPriority(n)),this}_setEnabled(e){this._isEnabled!==e&&(this._isEnabled=e,this.emit(this._isEnabled?"enabled":"disabled",this))}_setSwitchedOff(e){this._isSwitchedOff!==e&&(this._isSwitchedOff=e,this.emit(e?"switchedOff":"switchedOn",this))}attach(e){const t=super.attach(e);return!0!==this.mediaStreamTrack.enabled&&(this.mediaStreamTrack.enabled=!0,this.processedTrack&&(this.processedTrack.enabled=!0),this.processor&&this._captureFrames()),this._workaroundWebKitBug212780&&(this._workaroundWebKitBug212780Cleanup=this._workaroundWebKitBug212780Cleanup||function(e){const{_log:t,kind:n}=e;function r(i){i&&e._attachments.forEach(i=>{const r=e._elShims.get(i);i.paused&&r&&!r.pausedIntentionally()&&(t.info(`Playing inadvertently paused <${n}> element`),t.debug("Element:",i),t.debug("RemoteMediaTrack:",e),i.play().then(()=>{t.info(`Successfully played inadvertently paused <${n}> element`),t.debug("Element:",i),t.debug("RemoteMediaTrack:",e)}).catch(r=>{t.warn(`Error while playing inadvertently paused <${n}> element:`,{err:r,el:i,remoteMediaTrack:e})}))})}return i.onVisibilityChange(2,r),()=>{i.offVisibilityChange(2,r)}}(this)),t}detach(e){const t=super.detach(e);return 0===this._attachments.size&&(this.mediaStreamTrack.enabled=!1,this.processedTrack&&(this.processedTrack.enabled=!1),this._workaroundWebKitBug212780Cleanup&&(this._workaroundWebKitBug212780Cleanup(),this._workaroundWebKitBug212780Cleanup=null)),t}}},sr}function fs(){if(dr)return lr;dr=1;const e=us();return lr=class extends e{constructor(e,t){super(e.name,e.sid,t),Object.defineProperties(this,{_signaling:{value:e},_track:{value:null,writable:!0},isSubscribed:{enumerable:!0,get(){return!!this._track}},isTrackEnabled:{enumerable:!0,get:()=>e.isEnabled},kind:{enumerable:!0,value:e.kind},publishPriority:{enumerable:!0,get:()=>e.priority},track:{enumerable:!0,get(){return this._track}}});let{error:n,isEnabled:i,isSwitchedOff:r,priority:s}=e;e.on("updated",()=>{if(n!==e.error)return n=e.error,void this.emit("subscriptionFailed",e.error);i!==e.isEnabled&&(i=e.isEnabled,this.track&&this.track._setEnabled(e.isEnabled),this.emit(e.isEnabled?"trackEnabled":"trackDisabled")),r!==e.isSwitchedOff&&(this._log.debug(`${this.trackSid}: ${r?"OFF":"ON"} => ${e.isSwitchedOff?"OFF":"ON"}`),r=e.isSwitchedOff,this.track?(this.track._setSwitchedOff(e.isSwitchedOff),this.emit(r?"trackSwitchedOff":"trackSwitchedOn",this.track)):r&&this._log.warn("Track was not subscribed when switched Off.")),s!==e.priority&&(s=e.priority,this.emit("publishPriorityChanged",s))})}toString(){return`[RemoteTrackPublication #${this._instanceId}: ${this.trackSid}]`}_subscribed(e){!this._track&&e&&(this._track=e,this.emit("subscribed",e))}_unsubscribe(){if(this._track){const e=this._track;this._track=null,this.emit("unsubscribed",e)}}},lr}function ms(){if(yr)return br;yr=1;const e=ps(),t=jn(),n=On(),{NullObserver:i}=function(){if(vr)return _r;vr=1;class e{constructor(e){Object.defineProperties(this,{_callback:{value:e}})}observe(){}unobserve(){}makeVisible(e){const t=this._makeFakeEntry(e,!0);this._callback([t])}makeInvisible(e){const t=this._makeFakeEntry(e,!1);this._callback([t])}_makeFakeEntry(e,t){return{target:e,isIntersecting:t}}}return _r={NullIntersectionObserver:class extends e{},NullResizeObserver:class extends e{resize(e){const t=this._makeFakeEntry(e,!0);this._callback([t])}},NullObserver:e}}(),r=ki(),s=e(t);function o(e){if("auto"!==e._clientTrackSwitchOffControl)return;const n=e._getAllAttachedElements().filter(t=>!e._invisibleElements.has(t));!0===(e._getAllAttachedElements().filter(t=>e._elToPipWindows.has(t)).length>0||function(e){if(!("documentPictureInPicture"in globalThis))return!1;const t=globalThis.documentPictureInPicture.window;if(!t)return!1;const n=new WeakSet(t.document.querySelectorAll("video"));return e._getAllAttachedElements().some(e=>n.has(e))}(e)||"visible"===document.visibilityState&&n.length>0)?(e._turnOffTimer.clear(),e._setRenderHint({enabled:!0}),t._ensureDocumentPipVideosPlaying(e)):e._turnOffTimer.isSet||e._turnOffTimer.start()}function a(e){if("auto"!==e._contentPreferencesMode)return;const t=e._getAllAttachedElements().filter(t=>!e._invisibleElements.has(t)),n=e._getAllAttachedElements().map(t=>{const n=e._elToPipWindows.get(t);return n?{clientHeight:n.height,clientWidth:n.width}:{clientHeight:0,clientWidth:0}}),i=t.concat(n);if(i.length>0){const[{clientHeight:t,clientWidth:n}]=i.sort((e,t)=>t.clientHeight+t.clientWidth-e.clientHeight-e.clientWidth-1),r={height:t,width:n};e._setRenderHint({renderDimensions:r})}}return br=class extends s{constructor(e,t,n,s,c,l,d){d=Object.assign({clientTrackSwitchOffControl:"auto",contentPreferencesMode:"auto",enableDocumentVisibilityTurnOff:!0},d),super(e,t,n,s,c,l,d=Object.assign({IntersectionObserver:"undefined"==typeof IntersectionObserver||"auto"!==d.clientTrackSwitchOffControl?i:IntersectionObserver,ResizeObserver:"undefined"==typeof ResizeObserver||"auto"!==d.contentPreferencesMode?i:ResizeObserver},d)),Object.defineProperties(this,{_enableDocumentVisibilityTurnOff:{value:!0===d.enableDocumentVisibilityTurnOff&&"auto"===d.clientTrackSwitchOffControl},_documentVisibilityTurnOffCleanup:{value:null,writable:!0},_clientTrackSwitchOffControl:{value:d.clientTrackSwitchOffControl},_contentPreferencesMode:{value:d.contentPreferencesMode},_invisibleElements:{value:new WeakSet},_elToPipCallbacks:{value:new WeakMap},_elToPipWindows:{value:new WeakMap},_turnOffTimer:{value:new r(()=>{this._setRenderHint({enabled:!1})},50,!1)},_resizeObserver:{value:new d.ResizeObserver(e=>{e.find(e=>!this._invisibleElements.has(e.target))&&a(this)})},_intersectionObserver:{value:new d.IntersectionObserver(e=>{let t=!1;e.forEach(e=>{!this._invisibleElements.has(e.target)!==e.isIntersecting&&(e.isIntersecting?(this._log.debug("intersectionObserver detected: Off => On"),this._invisibleElements.delete(e.target)):(this._log.debug("intersectionObserver detected: On => Off"),this._invisibleElements.add(e.target)),t=!0)}),t&&(o(this),a(this))},{threshold:.25})}})}_start(e){const t=super._start.call(this,e);return o(this),t}switchOn(){if("manual"!==this._clientTrackSwitchOffControl)throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.clientTrackSwitchOffControl is set to "manual"');return this._setRenderHint({enabled:!0}),this}switchOff(){if("manual"!==this._clientTrackSwitchOffControl)throw new Error('Invalid state. You can call switchOff only when bandwidthProfile.video.clientTrackSwitchOffControl is set to "manual"');return this._setRenderHint({enabled:!1}),this}setContentPreferences(e){if("manual"!==this._contentPreferencesMode)throw new Error('Invalid state. You can call switchOn only when bandwidthProfile.video.contentPreferencesMode is set to "manual"');return e.renderDimensions&&this._setRenderHint({renderDimensions:e.renderDimensions}),this}_unObservePip(e){const t=this._elToPipCallbacks.get(e);t&&(e.removeEventListener("enterpictureinpicture",t.onEnterPip),e.removeEventListener("leavepictureinpicture",t.onLeavePip),this._elToPipCallbacks.delete(e))}_observePip(e){if(!this._elToPipCallbacks.get(e)){const t=t=>this._onEnterPip(t,e),n=t=>this._onLeavePip(t,e),i=t=>this._onResizePip(t,e);e.addEventListener("enterpictureinpicture",t),e.addEventListener("leavepictureinpicture",n),this._elToPipCallbacks.set(e,{onEnterPip:t,onLeavePip:n,onResizePip:i})}}_onEnterPip(e,t){this._log.debug("onEnterPip");const n=e.pictureInPictureWindow;this._elToPipWindows.set(t,n);const{onResizePip:i}=this._elToPipCallbacks.get(t);n.addEventListener("resize",i),o(this)}_onLeavePip(e,t){this._log.debug("onLeavePip"),this._elToPipWindows.delete(t);const{onResizePip:n}=this._elToPipCallbacks.get(t);e.pictureInPictureWindow.removeEventListener("resize",n),o(this)}_onResizePip(){a(this)}attach(e){const t=super.attach(e);return"auto"===this._clientTrackSwitchOffControl&&this._invisibleElements.add(t),this._intersectionObserver.observe(t),this._resizeObserver.observe(t),this._enableDocumentVisibilityTurnOff&&(this._documentVisibilityTurnOffCleanup=this._documentVisibilityTurnOffCleanup||function(e){function t(){o(e)}return n.onVisibilityChange(1,t),()=>{n.offVisibilityChange(1,t)}}(this)),this._observePip(t),t}detach(e){const t=super.detach(e);return(Array.isArray(t)?t:[t]).forEach(e=>{this._intersectionObserver.unobserve(e),this._resizeObserver.unobserve(e),this._invisibleElements.delete(e),this._unObservePip(e)}),0===this._attachments.size&&this._documentVisibilityTurnOffCleanup&&(this._documentVisibilityTurnOffCleanup(),this._documentVisibilityTurnOffCleanup=null),o(this),a(this),t}addProcessor(){return super.addProcessor.apply(this,arguments)}removeProcessor(){return super.removeProcessor.apply(this,arguments)}toString(){return`[RemoteVideoTrack #${this._instanceId}: ${this.sid}]`}setPriority(e){return super.setPriority(e)}},br}function gs(){if(Tr)return Sr;Tr=1;const e=Sn(),t=function(){if(cr)return ar;cr=1;const e=Pn(),t=ps()(e);return ar=class extends t{constructor(e,t,n,i,r,s,o){super(e,t,n,i,r,s,o)}toString(){return`[RemoteAudioTrack #${this._instanceId}: ${this.sid}]`}_start(){super._start(),this._dummyEl&&(this._disposeMediaElement?this._disposeMediaElement(this._dummyEl):this._dummyEl.srcObject=null,this._dummyEl=null)}setPriority(e){return super.setPriority(e)}},ar}(),n=function(){if(hr)return ur;hr=1;const e=fs();return ur=class extends e{constructor(e,t){super(e,t)}toString(){return`[RemoteAudioTrackPublication #${this._instanceId}: ${this.trackSid}]`}},ur}(),i=function(){if(fr)return pr;fr=1;const e=Tn(),{typeErrors:t,trackPriority:n}=ae();return pr=class extends e{constructor(e,t,n){super(t.id,"data",n),Object.defineProperties(this,{_isSwitchedOff:{value:!1,writable:!0},_priority:{value:null,writable:!0},isEnabled:{enumerable:!0,value:!0},isSwitchedOff:{enumerable:!0,get(){return this._isSwitchedOff}},maxPacketLifeTime:{enumerable:!0,value:t.maxPacketLifeTime},maxRetransmits:{enumerable:!0,value:t.maxRetransmits},ordered:{enumerable:!0,value:t.ordered},priority:{enumerable:!0,get(){return this._priority}},reliable:{enumerable:!0,value:null===t.maxPacketLifeTime&&null===t.maxRetransmits},sid:{enumerable:!0,value:e}}),t.on("message",e=>{this.emit("message",e,this)})}setPriority(e){const i=[null,...Object.values(n)];if(!i.includes(e))throw t.INVALID_VALUE("priority",i);return this._priority=e,this}_setEnabled(){}_setSwitchedOff(e){this._isSwitchedOff!==e&&(this._isSwitchedOff=e,this.emit(e?"switchedOff":"switchedOn",this))}},pr}(),r=function(){if(gr)return mr;gr=1;const e=fs();return mr=class extends e{constructor(e,t){super(e,t)}toString(){return`[RemoteDataTrackPublication #${this._instanceId}: ${this.trackSid}]`}},mr}(),s=ms(),o=function(){if(wr)return kr;wr=1;const e=fs();return kr=class extends e{constructor(e,t){super(e,t)}toString(){return`[RemoteVideoTrackPublication #${this._instanceId}: ${this.trackSid}]`}},kr}(),a=Ce();let c=0;function l(e,t,n){const i=new Map;"disconnected"!==e.state&&(e._getTrackEvents().forEach(n=>{const r=n[0],s=n[1];i.set(r,function(){const t=[s].concat([].slice.call(arguments));return e.emit(...t)}),t.on(r,i.get(r))}),e._trackEventReemitters.set(n,i))}return Sr=class extends e{constructor(e,a){super();const d=function(e){const t=e.map(e=>[e.id,e]),n=t.filter(e=>"audio"===e[1].kind),i=t.filter(e=>"video"===e[1].kind),r=t.filter(e=>"data"===e[1].kind);return{audioTracks:n,dataTracks:r,tracks:t,videoTracks:i}}((a=Object.assign({RemoteAudioTrack:t,RemoteAudioTrackPublication:n,RemoteDataTrack:i,RemoteDataTrackPublication:r,RemoteVideoTrack:s,RemoteVideoTrackPublication:o,tracks:[]},a)).tracks),u=a.log.createLog("default",this),h=new Map(d.audioTracks),p=new Map(d.dataTracks),f=new Map(d.tracks),m=new Map(d.videoTracks);Object.defineProperties(this,{_RemoteAudioTrack:{value:a.RemoteAudioTrack},_RemoteAudioTrackPublication:{value:a.RemoteAudioTrackPublication},_RemoteDataTrack:{value:a.RemoteDataTrack},_RemoteDataTrackPublication:{value:a.RemoteDataTrackPublication},_RemoteVideoTrack:{value:a.RemoteVideoTrack},_RemoteVideoTrackPublication:{value:a.RemoteVideoTrackPublication},_audioTracks:{value:h},_dataTracks:{value:p},_instanceId:{value:++c},_clientTrackSwitchOffControl:{value:a.clientTrackSwitchOffControl},_contentPreferencesMode:{value:a.contentPreferencesMode},_log:{value:u},_signaling:{value:e},_tracks:{value:f},_trackEventReemitters:{value:new Map},_trackPublicationEventReemitters:{value:new Map},_trackSignalingUpdatedEventCallbacks:{value:new Map},_videoTracks:{value:m},audioTracks:{enumerable:!0,value:new Map},dataTracks:{enumerable:!0,value:new Map},identity:{enumerable:!0,get:()=>e.identity},networkQualityLevel:{enumerable:!0,get:()=>e.networkQualityLevel},networkQualityStats:{enumerable:!0,get:()=>e.networkQualityStats},sid:{enumerable:!0,get:()=>e.sid},state:{enumerable:!0,get:()=>e.state},tracks:{enumerable:!0,value:new Map},videoTracks:{enumerable:!0,value:new Map},_MediaStream:{value:a.MediaStream},_mapMediaElement:{value:a.mapMediaElement},_disposeMediaElement:{value:a.disposeMediaElement}}),this._tracks.forEach(l.bind(null,this)),e.on("networkQualityLevelChanged",()=>this.emit("networkQualityLevelChanged",this.networkQualityLevel,this.networkQualityStats&&(this.networkQualityStats.audio||this.networkQualityStats.video)?this.networkQualityStats:null)),function(e,t){const n=e._log;if("disconnected"===e.state)return;t.on("stateChanged",function i(r){n.debug("Transitioned to state:",r),e.emit(r,e),"disconnected"===r&&(n.debug("Removing Track event reemitters"),t.removeListener("stateChanged",i),e._tracks.forEach(t=>{const n=e._trackEventReemitters.get(t.id);t&&n&&n.forEach((e,n)=>{t.removeListener(n,e)})}),t.tracks.forEach(t=>{const n=e._tracks.get(t.id),i=e._trackEventReemitters.get(t.id);n&&i&&i.forEach((e,t)=>{n.removeListener(t,e)})}),e._trackEventReemitters.clear(),e.tracks.forEach(t=>{e._trackPublicationEventReemitters.get(t.trackSid).forEach((e,n)=>{t.removeListener(n,e)})}),e._trackPublicationEventReemitters.clear())})}(this,e),u.info("Created a new Participant"+(this.identity?`: ${this.identity}`:""))}_getTrackEvents(){return[["dimensionsChanged","trackDimensionsChanged"],["message","trackMessage"],["started","trackStarted"]]}_getTrackPublicationEvents(){return[]}toString(){return`[Participant #${this._instanceId}: ${this.sid}]`}_addTrack(e,t){const n=this._log;if(this._tracks.has(t))return null;this._tracks.set(t,e);return{audio:this._audioTracks,video:this._videoTracks,data:this._dataTracks}[e.kind].set(t,e),l(this,e,t),n.info(`Added a new ${a.trackClass(e)}:`,t),n.debug(`${a.trackClass(e)}:`,e),e}_addTrackPublication(e){const t=this._log;if(this.tracks.has(e.trackSid))return null;this.tracks.set(e.trackSid,e);return{audio:this.audioTracks,data:this.dataTracks,video:this.videoTracks}[e.kind].set(e.trackSid,e),function(e,t){const n=new Map;if("disconnected"===e.state)return;e._getTrackPublicationEvents().forEach(([i,r])=>{n.set(i,(...n)=>{e.emit(r,...n,t)}),t.on(i,n.get(i))}),e._trackPublicationEventReemitters.set(t.trackSid,n)}(this,e),t.info(`Added a new ${a.trackPublicationClass(e)}:`,e.trackSid),t.debug(`${a.trackPublicationClass(e)}:`,e),e}_handleTrackSignalingEvents(){const{_log:e,_clientTrackSwitchOffControl:t,_contentPreferencesMode:n,_MediaStream:i,_mapMediaElement:r,_disposeMediaElement:s}=this,o=this;if("disconnected"===this.state)return;const a=this._RemoteAudioTrack,c=this._RemoteAudioTrackPublication,l=this._RemoteVideoTrack,d=this._RemoteVideoTrackPublication,u=this._RemoteDataTrack,h=this._RemoteDataTrackPublication,p=this._signaling;function f(t){const n=new(0,{audio:c,data:h,video:d}[t.kind])(t,{log:e});o._addTrackPublication(n);let i=t.isSubscribed;i&&g(t),o._trackSignalingUpdatedEventCallbacks.set(t.sid,()=>{if(i!==t.isSubscribed){if(i=t.isSubscribed,i)return void g(t);!function(e){const[t,n]=Array.from(o._tracks.entries()).find(([,t])=>t.sid===e.sid),i=o.tracks.get(e.sid);n&&o._removeTrack(n,i,t)}(t)}}),t.on("updated",o._trackSignalingUpdatedEventCallbacks.get(t.sid))}function m(e){e.isSubscribed&&e.setTrackTransceiver(null);const t=o._trackSignalingUpdatedEventCallbacks.get(e.sid);t&&(e.removeListener("updated",t),o._trackSignalingUpdatedEventCallbacks.delete(e.sid));const n=o.tracks.get(e.sid);n&&o._removeTrackPublication(n)}function g(c){const{isEnabled:d,name:h,kind:f,sid:m,trackTransceiver:g,isSwitchedOff:_}=c,v={audio:a,video:l,data:u}[f],b=o.tracks.get(m);if(!v||f!==g.kind)return;const y={log:e,name:h,clientTrackSwitchOffControl:t,contentPreferencesMode:n,mapMediaElement:r,disposeMediaElement:s};i&&(y.MediaStream=i);const k="data"===f?new v(m,g,y):new v(m,g,d,_,e=>p.updateSubscriberTrackPriority(m,e),e=>{c.isSubscribed&&p.updateTrackRenderHint(m,e)},y);o._addTrack(k,b,g.id)}p.on("trackAdded",f),p.on("trackRemoved",m),p.tracks.forEach(f),p.on("stateChanged",function t(n){"disconnected"===n?(e.debug("Removing event listeners"),p.removeListener("stateChanged",t),p.removeListener("trackAdded",f),p.removeListener("trackRemoved",m)):"connected"===n&&(e.info("reconnected"),setTimeout(()=>o.emit("reconnected"),0))})}_removeTrack(e,t){if(!this._tracks.has(t))return null;this._tracks.delete(t);({audio:this._audioTracks,video:this._videoTracks,data:this._dataTracks})[e.kind].delete(t);(this._trackEventReemitters.get(t)||new Map).forEach((t,n)=>{e.removeListener(n,t)});const n=this._log;return n.info(`Removed a ${a.trackClass(e)}:`,t),n.debug(`${a.trackClass(e)}:`,e),e}_removeTrackPublication(e){if(!(e=this.tracks.get(e.trackSid)))return null;this.tracks.delete(e.trackSid);({audio:this.audioTracks,data:this.dataTracks,video:this.videoTracks})[e.kind].delete(e.trackSid);(this._trackPublicationEventReemitters.get(e.trackSid)||new Map).forEach((t,n)=>{e.removeListener(n,t)});const t=this._log;return t.info(`Removed a ${a.trackPublicationClass(e)}:`,e.trackSid),t.debug(`${a.trackPublicationClass(e)}:`,e),e}toJSON(){return a.valueToJSON(this)}},Sr}function _s(){if(Pr)return Cr;Pr=1;const{asLocalTrack:e,asLocalTrackPublication:t,trackClass:n}=Ce(),{typeErrors:i,trackPriority:r}=ae(),{validateLocalTrack:s}=ds(),{LocalAudioTrack:o,LocalDataTrack:a,LocalVideoTrack:c}=Bn(),l=function(){if(er)return Zi;er=1;const e=hs();return Zi=class extends e{constructor(e,t,n,i){super(e,t,n,i)}toString(){return`[LocalAudioTrackPublication #${this._instanceId}: ${this.trackSid}]`}},Zi}(),d=function(){if(nr)return tr;nr=1;const e=hs();return tr=class extends e{constructor(e,t,n,i){super(e,t,n,i)}toString(){return`[LocalDataTrackPublication #${this._instanceId}: ${this.trackSid}]`}},tr}(),u=function(){if(rr)return ir;rr=1;const e=hs();return ir=class extends e{constructor(e,t,n,i){super(e,t,n,i)}toString(){return`[LocalVideoTrackPublication #${this._instanceId}: ${this.trackSid}]`}},ir}(),h=gs();function p(e,t){return Array.from(e.values()).find(e=>e.track===t||e.track.mediaStreamTrack===t)||null}return Cr=class extends h{constructor(e,t,n){const i=(n=Object.assign({LocalAudioTrack:o,LocalVideoTrack:c,LocalDataTrack:a,MediaStreamTrack:MediaStreamTrack,LocalAudioTrackPublication:l,LocalVideoTrackPublication:u,LocalDataTrackPublication:d,shouldStopLocalTracks:!1,tracks:t},n)).shouldStopLocalTracks?new Set(t.filter(e=>"data"!==e.kind)):new Set;super(e,n),Object.defineProperties(this,{_eventObserver:{value:n.eventObserver},_LocalAudioTrack:{value:n.LocalAudioTrack},_LocalDataTrack:{value:n.LocalDataTrack},_LocalVideoTrack:{value:n.LocalVideoTrack},_MediaStreamTrack:{value:n.MediaStreamTrack},_LocalAudioTrackPublication:{value:n.LocalAudioTrackPublication},_LocalDataTrackPublication:{value:n.LocalDataTrackPublication},_LocalVideoTrackPublication:{value:n.LocalVideoTrackPublication},_tracksToStop:{value:i},signalingRegion:{enumerable:!0,get:()=>e.signalingRegion}}),this._handleTrackSignalingEvents()}_addTrack(e,t,n){const i=super._addTrack(e,t);return i&&"disconnected"!==this.state&&this._addLocalTrack(e,n),i}_addLocalTrack(e,t){var i;const r=null===(i=e.noiseCancellation)||void 0===i?void 0:i.vendor;this._signaling.addTrack(e._trackSender,e.name,t,r),this._log.info(`Added a new ${n(e,!0)}:`,e.id),this._log.debug(`${n(e,!0)}:`,e)}_removeTrack(e,t){const i=super._removeTrack(e,t);return i&&"disconnected"!==this.state&&(this._signaling.removeTrack(e._trackSender),this._log.info(`Removed a ${n(e,!0)}:`,e.id),this._log.debug(`${n(e,!0)}:`,e)),i}_getTrackEvents(){return super._getTrackEvents.call(this).concat([["disabled","trackDisabled"],["enabled","trackEnabled"],["stopped","trackStopped"]])}toString(){return`[LocalParticipant #${this._instanceId}${this.sid?`: ${this.sid}`:""}]`}_handleTrackSignalingEvents(){const e=this._log;if("disconnected"===this.state)return;const t=t=>{const i=this._signaling.getPublication(t._trackSender);i&&(i.disable(),e.debug(`Disabled the ${n(t,!0)}:`,t.id))},i=t=>{const i=this._signaling.getPublication(t._trackSender);i&&(i.enable(),e.debug(`Enabled the ${n(t,!0)}:`,t.id))},s=e=>{const t=this._signaling.getPublication(e._trackSender);return t&&t.stop(),t},o=n=>{e.debug("Transitioned to state:",n),"disconnected"===n?(e.debug("Removing LocalTrack event listeners"),this._signaling.removeListener("stateChanged",o),this.removeListener("trackDisabled",t),this.removeListener("trackEnabled",i),this.removeListener("trackStopped",s),this._tracks.forEach(e=>{const t=s(e);t&&e._trackSender.removeClone(t._trackTransceiver)}),e.info(`LocalParticipant disconnected. Stopping ${this._tracksToStop.size} automatically-acquired LocalTracks`),this._tracksToStop.forEach(e=>{e.stop()})):"connected"===n&&(e.info("reconnected"),setTimeout(()=>this.emit("reconnected"),0))};this.on("trackDisabled",t),this.on("trackEnabled",i),this.on("trackStopped",s),this._signaling.on("stateChanged",o),this._tracks.forEach(t=>{this._addLocalTrack(t,r.PRIORITY_STANDARD),this._getOrCreateLocalTrackPublication(t).catch(n=>{e.warn(`Failed to get or create LocalTrackPublication for ${t}:`,n)})})}_getOrCreateLocalTrackPublication(e){let i=p(this.tracks,e);if(i)return Promise.resolve(i);const r=this._log,s=this,o=this._signaling.getPublication(e._trackSender);return o?new Promise((a,c)=>{o.on("updated",function l(){const d=o.error;if(d)return o.removeListener("updated",l),r.warn(`Failed to publish the ${n(e,!0)}: ${d.message}`),s._removeTrack(e,e.id),setTimeout(()=>{s.emit("trackPublicationFailed",d,e)}),void c(d);if(!s._tracks.has(e.id))return o.removeListener("updated",l),void c(new Error(`The ${e} was unpublished`));if(!o.sid)return;o.removeListener("updated",l);const u={log:r,LocalAudioTrackPublication:s._LocalAudioTrackPublication,LocalDataTrackPublication:s._LocalDataTrackPublication,LocalVideoTrackPublication:s._LocalVideoTrackPublication};i=p(s.tracks,e);const h=e=>s.emit("trackWarning",e,i),f=()=>s.emit("trackWarningsCleared",i),m=e=>{i.removeListener("trackWarning",h),i.removeListener("trackWarningsCleared",f),s.unpublishTrack(e.track)};i||(i=t(e,o,m,u),s._addTrackPublication(i)),i.on("warning",h),i.on("warningsCleared",f);const{state:g}=s._signaling;"connected"!==g&&"connecting"!==g||(e._processorEventObserver&&e._processorEventObserver.on("event",e=>{s._eventObserver.emit("event",{name:e.name,payload:e.data,group:"video-processor",level:"info"})}),e.processedTrack&&(e._captureFrames(),e._setSenderMediaStreamTrack(!0))),"connected"===g&&setTimeout(()=>{s.emit("trackPublished",i)}),a(i)})}):Promise.reject(new Error(`Unexpected error: The ${e} cannot be published`))}publishTrack(t,n){const s=p(this.tracks,t);if(s)return Promise.resolve(s);let o;n=Object.assign({log:this._log,priority:r.PRIORITY_STANDARD,LocalAudioTrack:this._LocalAudioTrack,LocalDataTrack:this._LocalDataTrack,LocalVideoTrack:this._LocalVideoTrack,MediaStreamTrack:this._MediaStreamTrack},n);try{o=e(t,n)}catch(e){return Promise.reject(e)}const a=o.noiseCancellation,c=this._signaling.audioProcessors;a&&!c.includes(a.vendor)&&(this._log.warn(`${a.vendor} is not supported in this room. disabling it permanently`),a.disablePermanently());const l=Object.values(r);if(!l.includes(n.priority))return Promise.reject(i.INVALID_VALUE("LocalTrackPublishOptions.priority",l));let d=this._addTrack(o,o.id,n.priority)||this._tracks.get(o.id);return this._getOrCreateLocalTrackPublication(d)}publishTracks(e){if(!Array.isArray(e))throw i.INVALID_TYPE("tracks","Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack");return Promise.all(e.map(this.publishTrack,this))}setBandwidthProfile(){this._log.warn("setBandwidthProfile is not implemented yet and may be available in future versions of twilio-video.js")}setNetworkQualityConfiguration(e){if("object"!=typeof e||null===e)throw i.INVALID_TYPE("networkQualityConfiguration","NetworkQualityConfiguration");return["local","remote"].forEach(t=>{if(t in e&&("number"!=typeof e[t]||isNaN(e[t])))throw i.INVALID_TYPE(`networkQualityConfiguration.${t}`,"number")}),this._signaling.setNetworkQualityConfiguration(e),this}setParameters(e){if(void 0!==e&&"object"!=typeof e)throw i.INVALID_TYPE("encodingParameters","EncodingParameters, null or undefined");if(e){if(this._signaling.getParameters().adaptiveSimulcast&&e.maxVideoBitrate)throw i.INVALID_TYPE("encodingParameters",'encodingParameters.maxVideoBitrate is not compatible with "preferredVideoCodecs=auto"');["maxAudioBitrate","maxVideoBitrate"].forEach(t=>{if(void 0!==e[t]&&"number"!=typeof e[t]&&null!==e[t])throw i.INVALID_TYPE(`encodingParameters.${t}`,"number, null or undefined")})}else null===e&&(e={maxAudioBitrate:null,maxVideoBitrate:null});return this._signaling.setParameters(e),this}unpublishTrack(e){s(e,{LocalAudioTrack:this._LocalAudioTrack,LocalDataTrack:this._LocalDataTrack,LocalVideoTrack:this._LocalVideoTrack,MediaStreamTrack:this._MediaStreamTrack});let t=this._tracks.get(e.id);if(!t)return null;if(this._signaling.getPublication(t._trackSender).publishFailed(new Error(`The ${t} was unpublished`)),t=this._removeTrack(t,t.id),!t)return null;const n=p(this.tracks,t);return n&&this._removeTrackPublication(n),n}unpublishTracks(e){if(!Array.isArray(e))throw i.INVALID_TYPE("tracks","Array of LocalAudioTrack, LocalVideoTrack, LocalDataTrack, or MediaStreamTrack");return e.reduce((e,t)=>{const n=this.unpublishTrack(t);return n?e.concat(n):e},[])}},Cr}function vs(){if(Ar)return Dr;Ar=1;return Dr=class{constructor(e,t){if("string"!=typeof e)throw new Error("Track id must be a string");Object.defineProperties(this,{trackId:{value:e,enumerable:!0},trackSid:{value:t.trackSid,enumerable:!0},timestamp:{value:t.timestamp,enumerable:!0},ssrc:{value:t.ssrc,enumerable:!0},packetsLost:{value:"number"==typeof t.packetsLost?t.packetsLost:null,enumerable:!0},codec:{value:"string"==typeof t.codecName?t.codecName:null,enumerable:!0}})}}}function bs(){if(jr)return xr;jr=1;const e=vs();return xr=class extends e{constructor(e,t,n){super(e,t),Object.defineProperties(this,{bytesSent:{value:"number"==typeof t.bytesSent?t.bytesSent:n?0:null,enumerable:!0},packetsSent:{value:"number"==typeof t.packetsSent?t.packetsSent:n?0:null,enumerable:!0},roundTripTime:{value:"number"==typeof t.roundTripTime?t.roundTripTime:n?0:null,enumerable:!0}})}}}function ys(){if(Ur)return Br;Ur=1;const e=vs();return Br=class extends e{constructor(e,t){super(e,t),Object.defineProperties(this,{bytesReceived:{value:"number"==typeof t.bytesReceived?t.bytesReceived:null,enumerable:!0},packetsReceived:{value:"number"==typeof t.packetsReceived?t.packetsReceived:null,enumerable:!0},jitter:{value:"number"==typeof t.jitter?t.jitter:null,enumerable:!0}})}}}function ks(){if(Gr)return zr;Gr=1;const e=function(){if(Nr)return $r;Nr=1;const e=bs();return $r=class extends e{constructor(e,t,n){super(e,t,n),Object.defineProperties(this,{audioLevel:{value:"number"==typeof t.audioInputLevel?t.audioInputLevel:null,enumerable:!0},jitter:{value:"number"==typeof t.jitter?t.jitter:null,enumerable:!0}})}}}(),t=function(){if(Fr)return Vr;Fr=1;const e=bs();return Vr=class extends e{constructor(e,t,n){super(e,t,n);let i=null;"number"==typeof t.frameWidthInput&&"number"==typeof t.frameHeightInput&&(i={},Object.defineProperties(i,{width:{value:t.frameWidthInput,enumerable:!0},height:{value:t.frameHeightInput,enumerable:!0}}));let r=null;"number"==typeof t.frameWidthSent&&"number"==typeof t.frameHeightSent&&(r={},Object.defineProperties(r,{width:{value:t.frameWidthSent,enumerable:!0},height:{value:t.frameHeightSent,enumerable:!0}})),Object.defineProperties(this,{captureDimensions:{value:i,enumerable:!0},dimensions:{value:r,enumerable:!0},captureFrameRate:{value:"number"==typeof t.frameRateInput?t.frameRateInput:null,enumerable:!0},frameRate:{value:"number"==typeof t.frameRateSent?t.frameRateSent:null,enumerable:!0},qualityLimitationReason:{value:["none","bandwidth","cpu","other"].find(e=>e===t.qualityLimitationReason)||null,enumerable:!0}})}}}(),n=function(){if(Wr)return Hr;Wr=1;const e=ys();return Hr=class extends e{constructor(e,t){super(e,t),Object.defineProperties(this,{audioLevel:{value:"number"==typeof t.audioOutputLevel?t.audioOutputLevel:null,enumerable:!0}})}}}(),i=function(){if(Qr)return qr;Qr=1;const e=ys();return qr=class extends e{constructor(e,t){super(e,t);let n=null;"number"==typeof t.frameWidthReceived&&"number"==typeof t.frameHeightReceived&&(n={},Object.defineProperties(n,{width:{value:t.frameWidthReceived,enumerable:!0},height:{value:t.frameHeightReceived,enumerable:!0}})),Object.defineProperties(this,{dimensions:{value:n,enumerable:!0},frameRate:{value:"number"==typeof t.frameRateReceived?t.frameRateReceived:null,enumerable:!0},freezeCount:{value:"number"==typeof t.freezeCount?t.freezeCount:null,enumerable:!0}})}}}();return zr=class{constructor(r,s,o){if("string"!=typeof r)throw new Error("RTCPeerConnection id must be a string");Object.defineProperties(this,{peerConnectionId:{value:r,enumerable:!0},localAudioTrackStats:{value:s.localAudioTrackStats.map(t=>new e(t.trackId,t,o)),enumerable:!0},localVideoTrackStats:{value:s.localVideoTrackStats.map(e=>new t(e.trackId,e,o)),enumerable:!0},remoteAudioTrackStats:{value:s.remoteAudioTrackStats.map(e=>new n(e.trackId,e)),enumerable:!0},remoteVideoTrackStats:{value:s.remoteVideoTrackStats.map(e=>new i(e.trackId,e)),enumerable:!0}})}}}function ws(){if(ns)return ts;ns=1;const e=function(){if(es)return Zr;es=1;const e=G;function t(){return"undefined"!=typeof globalThis&&"function"==typeof globalThis.PressureObserver?globalThis.PressureObserver:null}return Zr=new class{constructor(){this._lastCpuPressure=null,this._cpuPressureObserver=null,this._sampleInterval=2e3,this._cpuPressureChangeListeners=[]}watchCpuPressure(n){return e.__awaiter(this,void 0,void 0,function*(){if("function"!=typeof n)throw new Error("The CPU pressure change callback must be a function");const e=t();if(!e)throw new Error("PressureObserver is not supported in this environment");this._cpuPressureChangeListeners.push(n),this._cpuPressureObserver||(this._cpuPressureObserver=new e(e=>this._handleCpuPressureRecords(e)),yield this._cpuPressureObserver.observe("cpu",{sampleInterval:this._sampleInterval}))})}isSupported(){return!!t()}unwatchCpuPressure(e){this._cpuPressureChangeListeners=this._cpuPressureChangeListeners.filter(t=>t!==e),0===this._cpuPressureChangeListeners.length&&this.cleanup()}_handleCpuPressureRecords(e){if(!Array.isArray(e)||0===e.length)return;const t=e[e.length-1];t&&t.state!==this._lastCpuPressure&&(this._lastCpuPressure=t.state,this._cpuPressureChangeListeners.forEach(e=>e(t)))}cleanup(){this._cpuPressureObserver&&(this._cpuPressureObserver.disconnect(),this._cpuPressureObserver=null),this._cpuPressureChangeListeners=[],this._lastCpuPressure=null}}}(),t=Xn();return ts=class{constructor(e){if(!e)throw new Error("ResourceMonitor requires a log instance");this._log=e,this._cpuPressureHandler=null,this._setupCPUMonitoring()}_setupCPUMonitoring(){e.isSupported()?(this._cpuPressureHandler=e=>{this._log.debug("CPU pressure changed:",e),t.system.cpuPressureChanged(e.state)},e.watchCpuPressure(this._cpuPressureHandler).then(()=>{this._log.debug("CPU pressure monitoring initialized")}).catch(e=>{this._log.error("Error initializing CPU pressure monitoring:",e)})):this._log.debug("CPU pressure monitoring not supported")}cleanup(){this._log.debug("Cleaning up resource monitors"),this._cpuPressureHandler&&(e.unwatchCpuPressure(this._cpuPressureHandler),this._cpuPressureHandler=null)}},ts}function Ss(){if(rs)return is;rs=1;const e=function(){if(Yr)return Kr;Yr=1;const e=On(),t=Xn();return Kr=class{constructor(e){if(!e)throw new Error("ApplicationMonitor requires a log instance");this._log=e,this._visibilityChangeHandler=null,this._boundHandleBeforeUnload=this._handleBeforeUnload.bind(this),this._setupVisibilityMonitoring(),this._setupBeforeUnloadMonitoring()}_setupVisibilityMonitoring(){if("undefined"!=typeof window&&"undefined"!=typeof document){this._visibilityChangeHandler=e=>this._handleVisibilityChange(e);try{e.onVisibilityChange(1,this._visibilityChangeHandler),this._log.debug("ApplicationMonitor visibility monitoring initialized")}catch(e){this._log.error("Error initializing ApplicationMonitor visibility monitoring:",e)}}else this._log.debug("Not in browser environment, skipping setup of ApplicationMonitor")}_setupBeforeUnloadMonitoring(){try{window.addEventListener("beforeunload",this._boundHandleBeforeUnload),this._log.debug("ApplicationMonitor beforeunload monitoring initialized")}catch(e){this._log.error("Error initializing ApplicationMonitor beforeunload monitoring:",e)}}cleanup(){this._log.debug("Cleaning up application event monitors"),this._visibilityChangeHandler&&(e.offVisibilityChange(1,this._visibilityChangeHandler),this._visibilityChangeHandler=null),"undefined"!=typeof window&&this._boundHandleBeforeUnload&&window.removeEventListener("beforeunload",this._boundHandleBeforeUnload)}_handleVisibilityChange(e){e?t.application.resumed():t.application.backgrounded()}_handleBeforeUnload(){t.application.terminated()}},Kr}(),t=function(){if(Xr)return Jr;Xr=1;const{boolToString:e}=Ce(),t=Xn();return Jr=class{constructor(e){if(!e)throw new Error("NetworkMonitor requires a log instance");this._log=e,this._networkInformationHandler=null,this._setupNetworkInformationAPI()}_setupNetworkInformationAPI(){if(void 0===globalThis.navigator||!globalThis.navigator.connection)return void this._log.debug("Network Information API not supported");const n=()=>{const n=navigator.connection;t.network.informationChanged({downlink:n.downlink,downlinkMax:n.downlinkMax,effectiveType:n.effectiveType,rtt:n.rtt,saveData:"boolean"==typeof n.saveData?e(n.saveData):void 0,type:n.type})};try{const e=navigator.connection;["change","typechange"].forEach(t=>{e.addEventListener(t,n)}),this._networkInformationHandler={stop:()=>{["change","typechange"].forEach(t=>{e.removeEventListener(t,n)})}},this._log.debug("Network Information API monitoring initialized")}catch(e){this._log.error("Error initializing Network Information API monitoring:",e)}}cleanup(){this._log.debug("Cleaning up network monitoring"),this._networkInformationHandler&&(this._networkInformationHandler.stop(),this._networkInformationHandler=null)}},Jr}(),n=ws();return is=class{constructor(i){if(!i)throw new Error("MonitorRegistry requires a log instance");this._log=i,this._monitors=[new e(i),new t(i),new n(i)]}cleanup(){this._monitors.forEach(e=>{try{e.cleanup()}catch(e){this._log.warn("Failed to cleanup monitor:",e)}})}},is}function Ts(){if(os)return ss;os=1;const e=Sn(),t=function(){if(Mr)return Ir;Mr=1;const e=gs();return Ir=class extends e{constructor(e,t){super(e,t),this._handleTrackSignalingEvents(),this.once("disconnected",this._unsubscribeTracks.bind(this))}toString(){return`[RemoteParticipant #${this._instanceId}${this.sid?`: ${this.sid}`:""}]`}_addTrack(e,t,n){return super._addTrack(e,n)?(t._subscribed(e),this.emit("trackSubscribed",e,t),e):null}_addTrackPublication(e){const t=super._addTrackPublication(e);return t?(this.emit("trackPublished",t),t):null}_getTrackPublicationEvents(){return[...super._getTrackPublicationEvents(),["subscriptionFailed","trackSubscriptionFailed"],["trackDisabled","trackDisabled"],["trackEnabled","trackEnabled"],["publishPriorityChanged","trackPublishPriorityChanged"],["trackSwitchedOff","trackSwitchedOff"],["trackSwitchedOn","trackSwitchedOn"]]}_unsubscribeTracks(){this.tracks.forEach(e=>{if(e.isSubscribed){const t=e.track;e._unsubscribe(),this.emit("trackUnsubscribed",t,e)}})}_removeTrack(e,t,n){const i=this._tracks.get(n);return i?(super._removeTrack(i,n),t._unsubscribe(),this.emit("trackUnsubscribed",i,t),i):null}_removeTrackPublication(e){this._signaling.clearTrackHint(e.trackSid);const t=super._removeTrackPublication(e);return t?(this.emit("trackUnpublished",t),t):null}},Ir}(),n=ks(),i=Ss(),r=Xn(),{flatMap:s,valueToJSON:o}=Ce();let a=0;function c(e,t){const n=e.localParticipant._signaling;return t.reduce((e,t)=>{const i=n.tracks.get(t.trackId),r=n.getSender(i);return r?[Object.assign({},t,{trackId:r.id})].concat(e):e},[])}function l(e,n){const{_log:i,_clientTrackSwitchOffControl:r,_contentPreferencesMode:s,_options:{MediaStream:o,mapMediaElement:a,disposeMediaElement:c}}=e,l=new t(n,{log:i,clientTrackSwitchOffControl:r,contentPreferencesMode:s,MediaStream:o,mapMediaElement:a,disposeMediaElement:c});i.info("A new RemoteParticipant connected:",l),e._participants.set(l.sid,l),e.emit("participantConnected",l);const d=[["reconnected","participantReconnected"],["reconnecting","participantReconnecting"],"trackDimensionsChanged","trackDisabled","trackEnabled","trackMessage","trackPublished","trackPublishPriorityChanged","trackStarted","trackSubscribed","trackSubscriptionFailed","trackSwitchedOff","trackSwitchedOn","trackUnpublished","trackUnsubscribed"].map(t=>{const[n,i]=Array.isArray(t)?t:[t,t];function r(){const t=[].slice.call(arguments);t.unshift(i),t.push(l),e.emit(...t)}return l.on(n,r),[n,r]});l.once("disconnected",function(){const t=e.dominantSpeaker;i.info("RemoteParticipant disconnected:",l),e._participants.delete(l.sid),d.forEach(e=>{l.removeListener(e[0],e[1])}),e.emit("participantDisconnected",l),l===t&&e.emit("dominantSpeakerChanged",e.dominantSpeaker)})}return ss=class extends e{constructor(e,t,n){super();const s=n.log.createLog("default",this),o=new Map;Object.defineProperties(this,{_log:{value:s},_clientTrackSwitchOffControl:{value:n.clientTrackSwitchOffControl||"disabled"},_contentPreferencesMode:{value:n.contentPreferencesMode||"disabled"},_instanceId:{value:++a},_options:{value:n},_participants:{value:o},_signaling:{value:t},_insightsMonitors:{value:n.eventObserver&&n.insights?new i(s):null},dominantSpeaker:{enumerable:!0,get(){return this.participants.get(t.dominantSpeakerSid)||null}},isRecording:{enumerable:!0,get:()=>t.recording.isEnabled||!1},localParticipant:{enumerable:!0,value:e},name:{enumerable:!0,value:t.name},participants:{enumerable:!0,value:o},sid:{enumerable:!0,value:t.sid},state:{enumerable:!0,get:()=>t.state},mediaRegion:{enumerable:!0,value:t.mediaRegion}}),function(e,t){const n=["trackWarning","trackWarningsCleared"].map(n=>({eventName:n,handler:(...i)=>e.emit(n,...i,t)}));n.forEach(({eventName:e,handler:n})=>t.on(e,n)),e.once("disconnected",()=>n.forEach(({eventName:e,handler:n})=>t.removeListener(e,n)))}(this,e),function(e,t){t.on("updated",function(){const n=t.isEnabled;e._log.info("Recording "+(n?"started":"stopped")),e.emit("recording"+(n?"Started":"Stopped"))})}(this,t.recording),function(e,t){const n=e._log;n.debug("Creating a new RemoteParticipant for each ParticipantSignaling in the RoomSignaling"),t.participants.forEach(l.bind(null,e)),n.debug("Setting up RemoteParticipant creation for all subsequent ParticipantSignalings that connect to the RoomSignaling"),t.on("participantConnected",l.bind(null,e)),t.on("dominantSpeakerChanged",()=>e.emit("dominantSpeakerChanged",e.dominantSpeaker)),t.on("transcription",t=>e.emit("transcription",t)),t.on("stateChanged",function i(s,o){switch(n.info("Transitioned to state:",s),s){case"disconnected":r.room.disconnected(),e.participants.forEach(e=>{e._unsubscribeTracks()}),e.emit(s,e,o),e.localParticipant.tracks.forEach(e=>{e.unpublish()}),e._insightsMonitors&&e._insightsMonitors.cleanup(),t.removeListener("stateChanged",i);break;case"reconnecting":r.room.reconnecting(o),setTimeout(()=>e.emit("reconnecting",o),0);break;default:r.room.reconnected(),setTimeout(()=>e.emit("reconnected"),0)}})}(this,t),function(e){const t=e.localParticipant._signaling.audioProcessors;e.localParticipant.audioTracks.forEach(({track:n})=>{const i=n.noiseCancellation;i&&!t.includes(i.vendor)&&(e._log.warn(`${i.vendor} is not supported in this room. disabling it permanently`),i.disablePermanently())})}(this),s.info("Created a new Room:",this.name),s.debug("Initial RemoteParticipants:",Array.from(this._participants.values()))}toString(){return this._instanceId?`[Room #${this._instanceId}: ${this.sid}]`:"[Room (uninitialized)]"}disconnect(){return this._log.info("Disconnecting"),this._signaling.disconnect(),this}getStats(){return this._signaling.getStats().then(e=>Array.from(e).map(([e,t])=>new n(e,Object.assign({},t,{localAudioTrackStats:c(this,t.localAudioTrackStats),localVideoTrackStats:c(this,t.localVideoTrackStats)}))))}refreshInactiveMedia(){const{tracks:e}=this.localParticipant,t=Array.from(e.values()).filter(({track:{kind:e}})=>"data"!==e).map(({track:e})=>e),n=s(this.participants,e=>Array.from(e.tracks.values())).filter(({track:e})=>e&&"data"!==e.kind).map(({track:e})=>e),i=t.concat(n),r=new Event("unmute");t.forEach(({isMuted:e,mediaStreamTrack:t})=>{e&&t.dispatchEvent(r)});const o=new Event("pause");return i.forEach(({_attachments:e,_elShims:t})=>e.forEach(e=>{const n=t.get(e);e.paused&&n&&!n.pausedIntentionally()&&e.dispatchEvent(o)})),this}toJSON(){return o(this)}},ss}function Cs(){if(cs)return as;cs=1;return as=class{constructor(e){Object.defineProperties(this,{_min:{value:e.min||100},_max:{value:e.max||1e4},_jitter:{value:e.jitter>0&&e.jitter<=1?e.jitter:0},_factor:{value:e.factor||2},_attempts:{value:0,writable:!0},_duration:{enumerable:!1,get(){let e=this._min*Math.pow(this._factor,this._attempts);if(this._jitter){const t=Math.random(),n=Math.floor(t*this._jitter*e);e=1&Math.floor(10*t)?e+n:e-n}return 0|Math.min(e,this._max)}},_timeoutID:{value:null,writable:!0}})}backoff(e){let t=this._duration;this._timeoutID&&(clearTimeout(this._timeoutID),this._timeoutID=null),this._timeoutID=setTimeout(()=>{this._attempts++,e()},t)}reset(){this._attempts=0,this._timeoutID&&(clearTimeout(this._timeoutID),this._timeoutID=null)}}}var Ps,Es,Os,Ls,Rs,Is,Ms,Ds,As,xs,js,$s,Ns,Vs,Fs,Bs,Us,Hs,Ws,qs,Qs,zs,Gs,Ks,Ys,Js,Xs,Zs,eo,to,no,io,ro,so,oo,ao,co,lo,uo,ho,po,fo,mo,go,_o,vo,bo,yo,ko,wo,So,To,Co,Po,Eo,Oo,Lo,Ro,Io,Mo,Do,Ao,xo,jo,$o,No,Vo,Fo,Bo,Uo,Ho,Wo,qo,Qo,zo,Go,Ko,Yo,Jo,Xo,Zo,ea,ta,na,ia,ra,sa,oa,aa,ca,la,da,ua,ha,pa,fa,ma,ga,_a,va,ba,ya,ka,wa,Sa,Ta,Ca,Pa,Ea,Oa,La,Ra,Ia,Ma,Da,Aa,xa,ja,$a,Na,Va,Fa,Ba,Ua,Ha,Wa,qa,Qa,za,Ga,Ka,Ya={};function Ja(){if(Es)return Ps;Es=1;const{difference:e,flatMap:t}=Ce();function n(){return String(Math.floor(4294967295*Math.random()))}class i{constructor(e,t,n){Object.defineProperties(this,{cName:{enumerable:!0,value:n},isSimulcastEnabled:{enumerable:!0,value:!1,writable:!0},primarySSRCs:{enumerable:!0,value:new Set},rtxPairs:{enumerable:!0,value:new Map},streamId:{enumerable:!0,value:t},trackId:{enumerable:!0,value:e}})}addSimulcastSSRCs(){if(this.isSimulcastEnabled)return;const e=[n(),n()];e.forEach(function(e){this.primarySSRCs.add(e)},this),this.rtxPairs.size&&e.forEach(function(e){this.rtxPairs.set(n(),e)},this)}addSSRC(e,t,n){t?this.rtxPairs.set(e,t):this.primarySSRCs.add(e),this.isSimulcastEnabled=this.isSimulcastEnabled||n}toSdpLines(e){const n=e?[]:Array.from(this.rtxPairs.entries()).map(e=>e.reverse()),i=Array.from(this.primarySSRCs.values()),r=n.length?t(n):i,s=t(r,e=>[`a=ssrc:${e} cname:${this.cName}`,`a=ssrc:${e} msid:${this.streamId} ${this.trackId}`]),o=n.map(e=>`a=ssrc-group:FID ${e.join(" ")}`),a=[`a=ssrc-group:SIM ${i.join(" ")}`];return o.concat(s).concat(a)}}function r(e,t){return(e.match(new RegExp(t,"gm"))||[]).map(e=>(e.match(new RegExp(t))||[]).slice(1))}function s(e){const n=function(e){return new Set(t(r(e,"^a=ssrc-group:SIM ([0-9]+) ([0-9]+) ([0-9]+)$")))}(e),s=function(e){return new Map(r(e,"^a=ssrc-group:FID ([0-9]+) ([0-9]+)$").map(e=>e.reverse()))}(e),o=function(e){const[n,i]=t(r(e,"^a=msid:(.+) (.+)$"));return t(r(e,"^a=ssrc:(.+) cname:.+$")).map(e=>[e,n,i])}(e);return o.reduce((t,r)=>{const o=r[0],a=r[1],c=r[2],l=t.get(c)||new i(c,a,function(e,t,n){const i=`a=ssrc:${t} ${n}:(.+)`;return e.match(new RegExp(i))[1]}(e,o,"cname")),d=s.get(o)||null;return l.addSSRC(o,d,n.has(o)),t.set(c,l)},new Map)}return Ps=function(n,i){const r=s(n),o=Array.from(r.keys());let a=Array.from(i.keys());const c=e(o,a),l=e(a,o);t(c,e=>r.get(e)).forEach(e=>{e.addSimulcastSSRCs(),i.set(e.trackId,e)}),a=Array.from(i.keys());const d=e(a,l),u=t(d,e=>i.get(e)),h=!n.match(/a=rtpmap:[0-9]+ rtx/),p=t(u,e=>e.toSdpLines(h)),f=t(new Set(n.split("\r\n").concat(p))),m="a=x-google-flag:conference";return n.match(m)||f.push(m),f.join("\r\n")}}function Xa(){if(Os)return Ya;Os=1;const{difference:e,flatMap:t}=Ce(),n=Ja(),i={0:"PCMU",8:"PCMA"};function r(e){return Array.from(o(e)).reduce((e,t)=>{const n=t[0],i=t[1],r=e.get(i)||[];return e.set(i,r.concat(n))},new Map)}function s(e){return c(e).reduce((e,t)=>{const n=a(t);return n?e.set(n,t):e},new Map)}function o(e){return l(e).reduce((t,n)=>{if(t.has(n))return t;const r=new RegExp(`a=rtpmap:${n} ([^/]+)`),s=e.match(r),o=s?s[1].toLowerCase():i[n]?i[n].toLowerCase():"";return t.set(n,o)},new Map)}function a(e){const t=e.match(/^a=mid:(.+)$/m);return t&&t[1]}function c(e,t,n){return e.replace(/\r\n\r\n$/,"\r\n").split("\r\nm=").slice(1).map(e=>`m=${e}`).filter(e=>{const i=new RegExp(`m=${t||".*"}`,"gm"),r=new RegExp(`a=${n||".*"}`,"gm");return i.test(e)&&r.test(e)})}function l(e){const t=e.split("\r\n")[0].match(/([0-9]+)/g);return t?t.slice(1).map(e=>parseInt(e,10)):[]}function d(e,t){const n=t.split("\r\n");let i=n[0];const r=n.slice(1);return i=i.replace(/([0-9]+\s?)+$/,e.join(" ")),[i].concat(r).join("\r\n")}function u(e,t){const n=c(e);return[e.split("\r\nm=")[0]].concat(n.map(e=>{if(!/^m=(audio|video)/.test(e))return e;const n=a(e);if(!n)return e;const i=t.get(n);if(!i)return e;const r=(e.match(/^a=msid:(.+)$/m)||[])[1];if(!r)return e;const[s,o]=r.split(" "),c=new RegExp(`msid:${s}${o?` ${o}`:""}$`,"gm");return e.replace(c,`msid:${s} ${i}`)})).join("\r\n")}function h(e,t){const n=Object.entries(t).map(([e,t])=>`${e}=${t}`).join(";");return`a=fmtp:${e} ${n}`}return Ya.addOrRewriteNewTrackIds=function(e,t,n){const i=Array.from(n).reduce((n,[i,r])=>(c(e,i,"send(only|recv)").map(a).filter(e=>!t.has(e)).forEach((e,t)=>n.set(e,r[t])),n),new Map);return u(e,i)},Ya.addOrRewriteTrackIds=u,Ya.createCodecMapForMediaSection=r,Ya.createPtToCodecName=o,Ya.disableRtx=function(e){const t=c(e);return[e.split("\r\nm=")[0]].concat(t.map(e=>{if(!/^m=video/.test(e))return e;const t=r(e).get("rtx");if(!t)return e;const n=new Set(l(e));t.forEach(e=>n.delete(e));const i=e.match(/a=ssrc-group:FID [0-9]+ ([0-9]+)/),s=i&&i[1],o=[/^a=fmtp:.+ apt=.+$/,/^a=rtpmap:.+ rtx\/.+$/,/^a=ssrc-group:.+$/].concat(s?[new RegExp(`^a=ssrc:${s} .+$`)]:[]);return e=e.split("\r\n").filter(e=>o.every(t=>!t.test(e))).join("\r\n"),d(Array.from(n),e)})).join("\r\n")},Ya.enableDtxForOpus=function(e,t){const n=c(e),i=e.split("\r\nm=")[0];return t=t||n.filter(e=>/^m=audio/.test(e)).map(a),[i].concat(n.map(e=>{if(!/^m=audio/.test(e))return e;const n=r(e).get("opus");if(!n)return e;const i=function(e,t){const n=new RegExp(`^a=fmtp:${e} (.+)$`,"m"),i=t.match(n);return i&&i[1].split(";").reduce((e,t)=>{const[n,i]=t.split("=");return e[n]=isNaN(i)?i:parseInt(i,10),e},{})}(n,e);if(!i)return e;const s=h(n,i),o=a(e);t.includes(o)?i.usedtx=1:delete i.usedtx;const c=h(n,i);return e.replace(s,c)})).join("\r\n")},Ya.getMediaSections=c,Ya.removeUnreferencedCodecAttributes=function(e){const t=c(e);return[e.split("\r\nm=")[0]].concat(t.map(e=>{if(!/^m=(audio|video)/.test(e))return e;const t=new Set(l(e));return e.split("\r\n").filter(e=>{const n=e.match(/^a=(fmtp|rtpmap|rtcp-fb):(\d+)/);if(!n)return!0;const i=parseInt(n[2],10);return t.has(i)}).join("\r\n")})).join("\r\n")},Ya.removeSSRCAttributes=function(e,t){return e.split("\r\n").filter(e=>!t.find(t=>new RegExp("a=ssrc:.*"+t+":","g").test(e))).join("\r\n")},Ya.revertSimulcast=function(e,t,n,i=!1){const r=s(n),a=s(t),d=c(e);return[e.split("\r\nm=")[0]].concat(d.map(e=>{if(e=e.replace(/\r\n$/,""),!/^m=video/.test(e))return e;const t=e.match(/^a=mid:(.+)$/m),n=t&&t[1];if(!n)return e;const s=r.get(n),c=o(s),d=l(s),u=d.length&&"vp8"===c.get(d[0]);return i||!u?a.get(n).replace(/\r\n$/,""):e})).concat("").join("\r\n")},Ya.setCodecPreferences=function(n,i,s){const o=c(n);return[n.split("\r\nm=")[0]].concat(o.map(n=>{if(!/^m=(audio|video)/.test(n))return n;const o=n.match(/^m=(audio|video)/)[1],a=r(n),c=function(n,i){i=i.map(({codec:e})=>e.toLowerCase());const r=t(i,e=>n.get(e)||[]),s=e(Array.from(n.keys()),i),o=t(s,e=>n.get(e));return r.concat(o)}(a,"audio"===o?i:s),l=d(c,n),u=a.get("pcma")||[],h=a.get("pcmu")||[];return("audio"===o?new Set(u.concat(h)):new Set).has(c[0])?l.replace(/\r\nb=(AS|TIAS):([0-9]+)/g,""):l})).join("\r\n")},Ya.setSimulcast=function(e,t){const i=c(e);return[e.split("\r\nm=")[0]].concat(i.map(e=>{if(e=e.replace(/\r\n$/,""),!/^m=video/.test(e))return e;const i=r(e),s=l(e),o=new Set(i.get("vp8")||[]);return s.some(e=>o.has(e))?n(e,t):e})).concat("").join("\r\n")},Ya}function Za(){if(Ms)return Is;Ms=1;const e=Rs?Ls:(Rs=1,Ls=class{constructor(e){e=Object.assign({getKey:function(e){return e},getValue:function(e){return e},isLessThanOrEqualTo:function(e,t){return e<=t}},e),Object.defineProperties(this,{_getKey:{value:e.getKey},_getValue:{value:e.getValue},_isLessThanOrEqualTo:{value:e.isLessThanOrEqualTo},_map:{value:new Map}})}toMap(){return new Map(this._map)}updateAndFilter(e){return e.filter(this.update,this)}update(e){const t=this._getKey(e),n=this._getValue(e);return!(this._map.has(t)&&this._isLessThanOrEqualTo(n,this._map.get(t))||(this._map.set(t,n),0))}});return Is=class{constructor(){Object.defineProperties(this,{_filter:{value:new e({getKey:function(e){return e.ufrag},isLessThanOrEqualTo:function(e,t){return e.revision<=t.revision}})},_ufrag:{writable:!0,value:null},ufrag:{enumerable:!0,get(){return this._ufrag}}})}setUfrag(e){this._ufrag=e;const t=this._filter.toMap().get(e);return t?t.candidates:[]}update(e){e.candidates=e.candidates||[];const t=this._filter.toMap().get(e.ufrag),n=t?t.candidates:[];return this._filter.update(e)&&this._ufrag===e.ufrag?e.candidates.slice(n.length):[]}}}function ec(){if(Ns)return $s;Ns=1;const e=Nn(),t=function(){if(js)return xs;js=1;const{EventEmitter:e}=xe();return xs=class extends e{constructor(e){super(),Object.defineProperties(this,{_dataChannel:{value:e},_messageQueue:{value:[]}}),e.addEventListener("open",()=>{this._messageQueue.splice(0).forEach(e=>this._publish(e))}),e.addEventListener("message",({data:e})=>{try{const t=JSON.parse(e);this.emit("message",t)}catch(e){}}),this.publish({type:"ready"})}_publish(e){const t=JSON.stringify(e);try{this._dataChannel.send(t)}catch(e){}}publish(e){const t=this._dataChannel;return"closing"!==t.readyState&&"closed"!==t.readyState&&("connecting"===t.readyState?(this._messageQueue.push(e),!0):(this._publish(e),!0))}}}();return $s=class extends e{constructor(e){super(e.label,e.maxPacketLifeTime,e.maxRetransmits,e.ordered),Object.defineProperties(this,{_dataChannel:{value:e}}),e.binaryType="arraybuffer",e.addEventListener("message",e=>{this.emit("message",e.data)}),e.addEventListener("close",()=>{this.emit("close")})}stop(){this._dataChannel.close(),super.stop()}toDataTransport(){return new t(this._dataChannel)}}}function tc(){if(Ws)return Hs;Ws=1;const{createPtToCodecName:e,getMediaSections:t}=Xa();function n(t){const n=e(t);t=function(e,t){return Array.from(t.keys()).reduce((e,n)=>{const i=new RegExp(`^a=rtpmap:${n} rtx.+$`,"gm");return(e.match(i)||[]).slice("rtx"===t.get(n)?1:0).reduce((e,t)=>{const i=new RegExp(`\r\n${t}`),r=new RegExp(`\r\na=fmtp:${n} apt=[0-9]+`);return e.replace(i,"").replace(r,"")},e)},e)}(t,n),t=function(e){const t=e.split("\r\n"),n=new Map;let i=96;for(let e=0;e<t.length;e++){const r=t[e].match(/^a=rtpmap:(\d+) ([^/]+)/);if(r){const s=parseInt(r[1],10),o=r[2].toLowerCase();if(n.has(s)&&n.get(s)!==o){for(;n.has(i)||i===s;)i++;const r=i;n.set(r,o),t[e]=t[e].replace(`a=rtpmap:${s}`,`a=rtpmap:${r}`);for(let n=e+1;n<t.length;n++)t[n].match(new RegExp(`^a=(fmtp|rtcp-fb):${s}\\b`))&&(t[n]=t[n].replace(new RegExp(`^a=(fmtp|rtcp-fb):${s}\\b`),`a=$1:${r}`))}else n.set(s,o)}}return t.join("\r\n")}(t);const r=function(e){const t=new Map;return e.forEach((e,n)=>{const i=t.get(e)||new Set;return t.set(e,i.add(n))}),t}(n),s=r.get("rtx")||new Set,o=new Set,a=function(e,t,n,i){return Array.from(n).reduce((n,r)=>{const s=new RegExp(`a=fmtp:${r} apt=(\\d+)`),o=e.match(s);if(!o)return i.add(r),n;const a=Number.parseInt(o[1]);if(!t.has(a))return i.add(r),n;return"rtx"===t.get(a)?(i.add(r),n):n.set(r,a)},new Map)}(t,n,s,o),c=function(e,t){const n=Array.from(e).reduce((e,t)=>{const n=t[0],i=t[1],r=e.get(i)||new Set;return e.set(i,r.add(n))},new Map);return Array.from(n).reduce((e,n)=>{const i=n[0],r=Array.from(n[1]);return r.length>1?(r.forEach(e=>{t.add(e)}),e):e.set(i,r[0])},new Map)}(a,o),l=Array.from(o);return["h264","vp8","vp9"].reduce((e,t)=>{const n=r.get(t)||new Set;return Array.from(n).reduce((e,t)=>c.has(t)?e:e.add(t),e)},new Set).forEach(e=>{if(l.length){const n=l.shift();t=function(e,t,n){return e.endsWith("\r\n")?`${e}a=fmtp:${t} apt=${n}\r\n`:`${e}\r\na=fmtp:${t} apt=${n}`}(t=i(t,n),n,e)}}),l.forEach(e=>{t=function(e,t){const n=new RegExp(`a=rtpmap:${t}.*\r\n`,"gm");return e.replace(n,"")}(t=i(t,e),e)}),t}function i(e,t){const n=new RegExp(`a=fmtp:${t}.*\r\n`,"gm");return e.replace(n,"")}return Hs=function(e){const i={type:e.type};return"rollback"!==e.type&&(i.sdp=function(e){const i=t(e),r=e.split("\r\nm=")[0];return[r].concat(i.map(n)).join("\r\n")}(e.sdp)),new RTCSessionDescription(i)},Hs}function nc(){if(Qs)return qs;Qs=1;const e=Cs(),{RTCPeerConnection:t,getStats:n}=_n(),i=pe(),{DEFAULT_ICE_GATHERING_TIMEOUT_MS:r,DEFAULT_LOG_LEVEL:s,DEFAULT_SESSION_TIMEOUT_SEC:o,iceRestartBackoffConfig:a}=ae(),{addOrRewriteNewTrackIds:c,addOrRewriteTrackIds:l,createCodecMapForMediaSection:d,disableRtx:u,enableDtxForOpus:h,getMediaSections:p,removeUnreferencedCodecAttributes:f,removeSSRCAttributes:m,revertSimulcast:g,setCodecPreferences:_,setSimulcast:v}=Xa(),b=ki(),{MediaClientLocalDescFailedError:y,MediaClientRemoteDescFailedError:k}=Jn(),{buildLogLevels:w,isChromeScreenShareTrack:S,oncePerTick:T,defer:C}=Ce(),P=Za(),E=function(){if(As)return Ds;As=1;const{ICE_ACTIVITY_CHECK_PERIOD_MS:e,ICE_INACTIVITY_THRESHOLD_MS:t}=ae();return Ds=class{constructor(n,i){i=Object.assign({activityCheckPeriodMs:e,inactivityThresholdMs:t},i),Object.defineProperties(this,{_activityCheckPeriodMs:{value:i.activityCheckPeriodMs},_inactivityThresholdMs:{value:i.inactivityThresholdMs},_lastActivity:{value:null,writable:!0},_peerConnection:{value:n},_timer:{value:null,writable:!0},_onIceConnectionStateChanged:{value:null,writable:!0}})}_getActivePairStat(e){return Array.from(e.values()).find(e=>"candidate-pair"===e.type&&e.nominated)||{bytesReceived:0,timestamp:Math.round((new Date).getTime())}}_getIceConnectionStats(){return this._peerConnection.getStats().then(e=>this._getActivePairStat(e)).catch(()=>null)}_scheduleInactivityCallback(e){e&&null===this._onIceConnectionStateChanged?(this._onIceConnectionStateChanged=()=>{"disconnected"===this._peerConnection.iceConnectionState&&e()},this._peerConnection.addEventListener?this._peerConnection.addEventListener("iceconnectionstatechange",this._onIceConnectionStateChanged):this._peerConnection.oniceconnectionstatechange=this._onIceConnectionStateChanged):!e&&this._onIceConnectionStateChanged&&(this._peerConnection.removeEventListener?this._peerConnection.removeEventListener("iceconnectionstatechange",this._onIceConnectionStateChanged):this._peerConnection.oniceconnectionstatechange=null,this._onIceConnectionStateChanged=null)}start(e){this.stop(),this._timer=setInterval(()=>{this._getIceConnectionStats().then(t=>{t&&(this._lastActivity&&this._lastActivity.bytesReceived===t.bytesReceived||(this._lastActivity=t,this._scheduleInactivityCallback(null)),t.timestamp-this._lastActivity.timestamp>=this._inactivityThresholdMs&&("disconnected"===this._peerConnection.iceConnectionState?e():null===this._onIceConnectionStateChanged&&this._scheduleInactivityCallback(e)))})},this._activityCheckPeriodMs)}stop(){this._scheduleInactivityCallback(null),null!==this._timer&&(clearInterval(this._timer),this._timer=null,this._lastActivity=null)}}}(),O=ec(),L=function(){if(Fs)return Vs;Fs=1;const e=Mn();return Vs=class extends e{constructor(e,t){super(e,t)}}}(),R=yi(),I=ce(),M=function(){if(Us)return Bs;Us=1;const{getMediaSections:e}=Xa();return Bs=class{constructor(){Object.defineProperties(this,{_midsToTrackIds:{value:new Map,writable:!0}})}match(e){return this._midsToTrackIds.get(e.transceiver.mid)||null}update(t){const n=e(t,"(audio|video)");this._midsToTrackIds=n.reduce((e,t)=>{const n=t.match(/^a=mid:(.+)$/m)||[],i=t.match(/^a=msid:.+ (.+)$/m)||[],r=n[1],s=i[1];return r&&s?e.set(r,s):e},this._midsToTrackIds)}},Bs}(),D=tc(),A=Xn(),x=i.guessBrowser(),j="chrome"===x,$="firefox"===x,N="safari"===x;let V=0;const F={open:["closed","updating"],updating:["closed","open"],closed:[]};function B(e,t){const n=e._getMediaTrackSenderId(t.trackId);return Object.assign(t,{trackId:n})}function U(e,t){const n=[...e._mediaTrackReceivers].find(e=>e.track.id===t.trackId),i=n?n.id:null;return Object.assign(t,{trackId:i})}function H(e){if(e.sdp){const t=e.sdp.match(/^a=ice-ufrag:([a-zA-Z0-9+/]+)/m);if(t)return t[1]}return null}function W(e={}){return Object.assign({bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"},e)}function q(e,t){const n=t.track;return n&&n.kind===e&&"ended"!==n.readyState}function Q(e){!function(e){e._recycledTransceivers.audio=[],e._recycledTransceivers.video=[],e._peerConnection.getTransceivers().forEach(t=>{if(function(e,t){return!e.stopped&&!t._replaceTrackPromises.has(e)&&["inactive","recvonly"].includes(e.direction)}(t,e)){const n=t.receiver.track;e._recycledTransceivers[n.kind].push(t)}})}(e),function(e){const t=e._peerConnection.localDescription;t&&t.sdp&&p(t.sdp).forEach(t=>{d(t).forEach((t,n)=>e._localCodecs.add(n))})}(e),function(e){const t=e._peerConnection.remoteDescription;t&&t.sdp&&p(t.sdp).forEach(t=>{const n=t.match(/^a=mid:(.+)$/m);if(!n||!n[1])return;const i=n[1],r=d(t);e._remoteCodecMaps.set(i,r)})}(e),function(e){var t;const n=null===(t=e._peerConnection.getSenders().find(e=>e.transport))||void 0===t?void 0:t.transport;n&&!e._dtlsTransport&&(e._dtlsTransport=n,n.addEventListener("statechange",e._handleDtlsTransportStateChange.bind(e)),n.state&&e._handleDtlsTransportStateChange(),n.iceTransport&&"function"==typeof n.iceTransport.getSelectedCandidatePair)&&(n.iceTransport.addEventListener("selectedcandidatepairchange",e._handleSelectedCandidatePairChange.bind(e)),n.iceTransport.getSelectedCandidatePair()&&e._handleSelectedCandidatePairChange())}(e),z(e).then(()=>{e._handleQueuedPublisherHints()})}function z(e){const{maxAudioBitrate:t,maxVideoBitrate:n}=e._encodingParameters,i=new Map([["audio",t],["video",n]]),r=[];return e._peerConnection.getSenders().filter(e=>e.track).forEach(t=>{const n=i.get(t.track.kind),s=t.getParameters();null===n||0===n?function(e){Array.isArray(e.encodings)&&e.encodings.forEach(e=>delete e.maxBitrate)}(s):e._isChromeScreenShareTrack(t.track)?e._log.warn(`Not setting maxBitrate for ${t.track.kind} Track ${t.track.id} because it appears to be screen share track: ${t.track.label}`):function(e,t){$?e.encodings=[{maxBitrate:t}]:e.encodings.forEach(e=>{e.maxBitrate=t})}(s,n),!$&&s.encodings.length>0&&("audio"===t.track.kind?s.encodings[0].priority="high":e._isChromeScreenShareTrack(t.track)&&(s.encodings[0].priority="medium"),e._enableDscp&&(s.encodings[0].networkPriority="high"));const o=e._rtpNewSenders.has(t);e._maybeUpdateEncodings(t.track,s.encodings,o),e._rtpNewSenders.delete(t);const a=t.setParameters(s).catch(n=>{e._log.warn(`Error while setting encodings parameters for ${t.track.kind} Track ${t.track.id}: ${n.message||n.name}`)});r.push(a)}),Promise.all(r)}return qs=class extends R{constructor(n,i,c,l){super("open",F),l=Object.assign({enableDscp:!1,dummyAudioMediaStreamTrack:null,isChromeScreenShareTrack:S,iceServers:[],logLevel:s,offerOptions:{},revertSimulcast:g,sessionTimeout:1e3*o,setCodecPreferences:_,setSimulcast:v,Backoff:e,IceConnectionMonitor:E,RTCIceCandidate:RTCIceCandidate,RTCPeerConnection:t,RTCSessionDescription:RTCSessionDescription,Timeout:b},l);const d=W(Object.assign({},l,l.rtcConfiguration)),u=w(l.logLevel),h=l.RTCPeerConnection;!0===l.enableDscp&&(l.chromeSpecificConstraints=l.chromeSpecificConstraints||{},l.chromeSpecificConstraints.optional=l.chromeSpecificConstraints.optional||[],l.chromeSpecificConstraints.optional.push({googDscp:!0}));const p=l.log?l.log.createLog("webrtc",this):new I("webrtc",this,u,l.loggerName),f=new h(d,{chromeSpecificConstraints:l.chromeSpecificConstraints,applyCodecPreferences:e=>this._applyCodecPreferencesToTransceiver(e)});l.dummyAudioMediaStreamTrack&&f.addTrack(l.dummyAudioMediaStreamTrack),Object.defineProperties(this,{_appliedTrackIdsToAttributes:{value:new Map,writable:!0},_dataChannels:{value:new Map},_dataTrackReceivers:{value:new Set},_descriptionRevision:{writable:!0,value:0},_didGenerateLocalCandidates:{writable:!0,value:!1},_dtlsTransport:{writable:!0,value:null},_enableDscp:{value:l.enableDscp},_encodingParameters:{value:i},_isChromeScreenShareTrack:{value:l.isChromeScreenShareTrack},_iceGatheringFailed:{value:!1,writable:!0},_iceGatheringTimeout:{value:new l.Timeout(()=>this._handleIceGatheringTimeout(),r,!1)},_iceRestartBackoff:{value:new l.Backoff(a)},_instanceId:{value:++V},_isIceConnectionInactive:{writable:!0,value:!1},_isIceLite:{writable:!0,value:!1},_isIceRestartBackoffInProgress:{writable:!0,value:!1},_isRestartingIce:{writable:!0,value:!1},_lastIceConnectionState:{writable:!0,value:null},_lastStableDescriptionRevision:{writable:!0,value:0},_localCandidates:{writable:!0,value:[]},_localCodecs:{value:new Set},_localCandidatesRevision:{writable:!0,value:1},_localDescriptionWithoutSimulcast:{writable:!0,value:null},_localDescription:{writable:!0,value:null},_localUfrag:{writable:!0,value:null},_log:{value:p},_eventObserver:{value:l.eventObserver},_remoteCodecMaps:{value:new Map},_rtpSenders:{value:new Map},_rtpNewSenders:{value:new Set},_iceConnectionMonitor:{value:new l.IceConnectionMonitor(f)},_mediaTrackReceivers:{value:new Set},_needsAnswer:{writable:!0,value:!1},_negotiationRole:{writable:!0,value:null},_offerOptions:{writable:!0,value:l.offerOptions},_onEncodingParametersChanged:{value:T(()=>{this._needsAnswer||z(this)})},_peerConnection:{value:f},_preferredAudioCodecs:{value:c.audio},_preferredVideoCodecs:{value:c.video},_shouldApplyDtx:{value:c.audio.every(({codec:e})=>"opus"!==e)||c.audio.some(({codec:e,dtx:t})=>"opus"===e&&t)},_queuedDescription:{writable:!0,value:null},_iceReconnectTimeout:{value:new l.Timeout(()=>{p.debug("ICE reconnect timed out"),this.close()},l.sessionTimeout,!1)},_recycledTransceivers:{value:{audio:[],video:[]}},_replaceTrackPromises:{value:new Map},_remoteCandidates:{writable:!0,value:new P},_setSimulcast:{value:l.setSimulcast},_revertSimulcast:{value:l.revertSimulcast},_setCodecPreferences:{value:l.setCodecPreferences},_RTCIceCandidate:{value:l.RTCIceCandidate},_RTCPeerConnection:{value:l.RTCPeerConnection},_RTCSessionDescription:{value:l.RTCSessionDescription},_shouldOffer:{writable:!0,value:!1},_shouldRestartIce:{writable:!0,value:!1},_trackIdsToAttributes:{value:new Map,writable:!0},_trackMatcher:{writable:!0,value:null},_mediaTrackSenderToPublisherHints:{value:new Map},id:{enumerable:!0,value:n}}),i.on("changed",this._onEncodingParametersChanged),A.pc.signalingState(this.id,f.signalingState),A.pc.iceGatheringState(this.id,f.iceGatheringState),A.pc.iceConnectionState(this.id,f.iceConnectionState),A.pc.connectionState(this.id,this.connectionState),f.addEventListener("connectionstatechange",this._handleConnectionStateChange.bind(this)),f.addEventListener("datachannel",this._handleDataChannelEvent.bind(this)),f.addEventListener("icecandidate",this._handleIceCandidateEvent.bind(this)),f.addEventListener("iceconnectionstatechange",this._handleIceConnectionStateChange.bind(this)),f.addEventListener("icegatheringstatechange",this._handleIceGatheringStateChange.bind(this)),f.addEventListener("signalingstatechange",this._handleSignalingStateChange.bind(this)),f.addEventListener("track",this._handleTrackEvent.bind(this));const m=this;this.on("stateChanged",function e(t){"closed"===t&&(m.removeListener("stateChanged",e),m._dataChannels.forEach((e,t)=>{m.removeDataTrackSender(t)}))})}toString(){return`[PeerConnectionV2 #${this._instanceId}: ${this.id}]`}setEffectiveAdaptiveSimulcast(e){this._log.debug("Setting setEffectiveAdaptiveSimulcast: ",e),this._preferredVideoCodecs.forEach(t=>{"adaptiveSimulcast"in t&&(t.adaptiveSimulcast=e)})}get _shouldApplySimulcast(){if(!j&&!N)return!1;return this._preferredVideoCodecs.some(e=>"vp8"===e.codec.toLowerCase()&&e.simulcast&&!1!==e.adaptiveSimulcast)}get connectionState(){return"failed"===this.iceConnectionState?"failed":this._peerConnection.connectionState||this.iceConnectionState}get iceConnectionState(){return this._isIceConnectionInactive&&"disconnected"===this._peerConnection.iceConnectionState||this._iceGatheringFailed?"failed":this._peerConnection.iceConnectionState}get isApplicationSectionNegotiated(){return"closed"===this._peerConnection.signalingState||!!this._peerConnection.localDescription&&p(this._peerConnection.localDescription.sdp,"application").length>0}get _isAdaptiveSimulcastEnabled(){const e=this._preferredVideoCodecs.find(e=>"adaptiveSimulcast"in e);return e&&!0===e.adaptiveSimulcast}_maybeUpdateEncodings(e,t,n=!1){if("video"!==e.kind||"ended"===e.readyState)return!1;const{height:r,width:s}=e.getSettings();if("number"!=typeof r||"number"!=typeof s)return!1;const o=i.guessBrowser();return!!("safari"===o||"chrome"===o&&this._isAdaptiveSimulcastEnabled)&&(this._updateEncodings(e,t,n),!0)}_updateEncodings(e,t,n){if(this._isChromeScreenShareTrack(e)){const e=[{scaleResolutionDownBy:1},{scaleResolutionDownBy:1}];t.forEach((t,i)=>{const r=e[i];r?(t.scaleResolutionDownBy=r.scaleResolutionDownBy,n&&delete t.active):(t.active=!1,delete t.scaleResolutionDownBy)})}else{const{width:i,height:r}=e.getSettings(),s=i*r,o=[{pixels:518400,maxActiveLayers:3},{pixels:129600,maxActiveLayers:2},{pixels:0,maxActiveLayers:1}].find(e=>s>=e.pixels),a=Math.min(t.length,o.maxActiveLayers);t.forEach((e,t)=>{t<a?(e.scaleResolutionDownBy=1<<a-t-1,n&&(e.active=!0)):(e.active=!1,delete e.scaleResolutionDownBy)})}this._log.debug("_updateEncodings:",t.map(({active:e,scaleResolutionDownBy:t},n)=>`[${n}: ${e}, ${t||0}]`).join(", "))}_addIceCandidate(e){return Promise.resolve().then(()=>(A.pc.iceCandidate(this.id,e,!0),e=new this._RTCIceCandidate(e),this._peerConnection.addIceCandidate(e))).catch(t=>{this._log.warn(`Failed to add RTCIceCandidate ${e?`"${e.candidate}"`:"null"}: `+t.message)})}_addIceCandidates(e){return Promise.all(e.map(this._addIceCandidate,this)).then(()=>{})}_applyCodecPreferencesToTransceiver(e){if(!e||!e.receiver||!e.receiver.track)return;const t=e.receiver.track.kind,n="audio"===t?this._preferredAudioCodecs:this._preferredVideoCodecs;if(n&&0!==n.length)try{const i=RTCRtpReceiver.getCapabilities(t).codecs,r=this._sortCodecsByPreference(i,n);e.setCodecPreferences(r)}catch(e){this._log.warn("Failed to apply codec preferences:",e)}}_sortCodecsByPreference(e,t){const n=[],i=[],r=t.map(e=>("string"==typeof e?e:e.codec).toLowerCase());return e.forEach(e=>{const t=e.mimeType.split("/")[1].toLowerCase(),s=r.indexOf(t);s>=0?(n[s]||(n[s]=[]),n[s].push(e)):i.push(e)}),n.flat().concat(i)}_addOrUpdateTransceiver(e){const t=function(e,t){const n={audio:e._preferredAudioCodecs.map(({codec:e})=>e.toLowerCase()),video:e._preferredVideoCodecs.map(({codec:e})=>e.toLowerCase())}[t],i=e._recycledTransceivers[t],r=n.find(t=>e._localCodecs.has(t));if(!r)return i.shift();const s=i.find(t=>{const n=e._remoteCodecMaps.get(t.mid);return n&&n.has(r)});s&&i.splice(i.indexOf(s),1);return s}(this,e.kind);if(t&&t.sender){const n=t.sender.track?t.sender.track.id:null;return n&&this._log.warn(`Reusing transceiver: ${t.mid}] ${n} => ${e.id}`),this._replaceTrackPromises.set(t,t.sender.replaceTrack(e).then(()=>{t.direction="sendrecv"},()=>{}).finally(()=>{this._replaceTrackPromises.delete(t)})),t}const n=this._peerConnection.addTransceiver(e,{});return this._applyCodecPreferencesToTransceiver(n),n}_checkIceBox(e){const t=H(e);if(!t)return Promise.resolve();const n=this._remoteCandidates.setUfrag(t);return this._addIceCandidates(n)}_answer(e){return Promise.resolve().then(()=>(this._negotiationRole||(this._negotiationRole="answerer"),this._setRemoteDescription(e))).catch(()=>{throw new k}).then(()=>this._peerConnection.createAnswer()).then(t=>{t=$?new this._RTCSessionDescription({sdp:u(t.sdp),type:t.type}):D(t);let n=m(t.sdp,["mslabel","label"]);if(this._shouldApplySimulcast){let t=n;n=this._setSimulcast(t,this._trackIdsToAttributes),n=this._revertSimulcast(n,t,e.sdp)}return n=n.replace(/42e015/g,"42e01f"),this._setLocalDescription({type:t.type,sdp:n})}).then(()=>this._checkIceBox(e)).then(()=>this._queuedDescription&&this._updateDescription(this._queuedDescription)).then(()=>(this._queuedDescription=null,this._maybeReoffer(this._peerConnection.localDescription))).catch(e=>{const t=e instanceof k?e:new y;throw this._publishMediaWarning({message:"Failed to _answer",code:t.code,error:e}),t})}_close(){return this._iceConnectionMonitor.stop(),"closed"!==this._peerConnection.signalingState&&(this._peerConnection.close(),this._dtlsTransport&&!j&&A.pc.dtlsTransportState(this.id,this._dtlsTransport.state),A.pc.signalingState(this.id,this._peerConnection.signalingState),A.pc.iceConnectionState(this.id,this._peerConnection.iceConnectionState),A.pc.connectionState(this.id,this._peerConnection.connectionState),this.preempt("closed"),this._encodingParameters.removeListener("changed",this._onEncodingParametersChanged),!0)}_handleConnectionStateChange(){A.pc.connectionState(this.id,this.connectionState),this.emit("connectionStateChanged")}_handleDataChannelEvent(e){const t=e.channel,n=new O(t);this._dataTrackReceivers.add(n),t.addEventListener("close",()=>{this._dataTrackReceivers.delete(n)}),this.emit("trackAdded",n)}_handleGlare(e){return this._log.debug("Glare detected; rolling back"),this._isRestartingIce&&(this._log.debug("An ICE restart was in progress; we'll need to restart ICE again after rolling back"),this._isRestartingIce=!1,this._shouldRestartIce=!0),Promise.resolve().then(()=>(this._trackIdsToAttributes=new Map(this._appliedTrackIdsToAttributes),this._setLocalDescription({type:"rollback"}))).then(()=>(this._needsAnswer=!1,this._answer(e))).then(e=>e?Promise.resolve():this._offer())}_publishMediaWarning({message:e,code:t,error:n,sdp:i}){this._eventObserver.emit("event",{level:"warning",name:"error",group:"media",payload:{message:e,code:t,context:JSON.stringify({error:n.message,sdp:i})}})}_handleIceCandidateEvent(e){e.candidate&&(this._log.debug("Clearing ICE gathering timeout"),this._didGenerateLocalCandidates=!0,this._iceGatheringTimeout.clear(),this._localCandidates.push(e.candidate),A.pc.iceCandidate(this.id,e.candidate));const t={ice:{candidates:this._isIceLite?[]:this._localCandidates.slice(),ufrag:this._localUfrag},id:this.id};e.candidate||(t.ice.complete=!0),this._isIceLite&&e.candidate||(t.ice.revision=this._localCandidatesRevision++,this.emit("candidates",t))}_handleIceConnectionStateChange(){const{iceConnectionState:e}=this._peerConnection,t=["connected","completed"].includes(e),n=this._log;n.debug(`ICE connection state is "${e}"`),A.pc.iceConnectionState(this.id,e),t&&(this._iceReconnectTimeout.clear(),this._iceRestartBackoff.reset()),"failed"===this._lastIceConnectionState||"failed"!==e||this._shouldRestartIce||this._isRestartingIce?["disconnected","failed"].includes(this._lastIceConnectionState)&&t&&n.debug("ICE reconnected"):(n.warn("ICE failed"),this._initiateIceRestartBackoff()),"connected"===e?(this._isIceConnectionInactive=!1,this._iceConnectionMonitor.start(()=>{this._iceConnectionMonitor.stop(),this._shouldRestartIce||this._isRestartingIce||(n.warn("ICE Connection Monitor detected inactivity"),this._isIceConnectionInactive=!0,this._initiateIceRestartBackoff(),this.emit("iceConnectionStateChanged"),this.emit("connectionStateChanged"))})):["disconnected","completed"].includes(e)||(this._iceConnectionMonitor.stop(),this._isIceConnectionInactive=!1),this._lastIceConnectionState=e,this.emit("iceConnectionStateChanged")}_handleIceGatheringTimeout(){this._log.warn("ICE failed to gather any local candidates"),this._iceGatheringFailed=!0,this._initiateIceRestartBackoff(),this.emit("iceConnectionStateChanged"),this.emit("connectionStateChanged")}_handleIceGatheringStateChange(){const{iceGatheringState:e}=this._peerConnection;A.pc.iceGatheringState(this.id,e);const t=this._log;t.debug(`ICE gathering state is "${e}"`);const{delay:n,isSet:i}=this._iceGatheringTimeout;"gathering"!==e||this._didGenerateLocalCandidates||i||(t.debug(`Starting ICE gathering timeout: ${n}`),this._iceGatheringFailed=!1,this._iceGatheringTimeout.start())}_handleSignalingStateChange(){A.pc.signalingState(this.id,this._peerConnection.signalingState),"stable"===this._peerConnection.signalingState&&(this._appliedTrackIdsToAttributes=new Map(this._trackIdsToAttributes))}_handleDtlsTransportStateChange(){const e=this._dtlsTransport;e&&(this._log.debug(`DTLS transport state is "${e.state}"`),A.pc.dtlsTransportState(this.id,e.state))}_handleSelectedCandidatePairChange(){var e;const t=null===(e=this._dtlsTransport)||void 0===e?void 0:e.iceTransport;if(t&&"function"==typeof t.getSelectedCandidatePair){const e=t.getSelectedCandidatePair();e&&A.pc.selectedCandidatePair(this.id,e)}}_handleTrackEvent(e){const t=this._peerConnection.remoteDescription?this._peerConnection.remoteDescription.sdp:null;this._trackMatcher=this._trackMatcher||new M,this._trackMatcher.update(t);const n=e.track,i=this._trackMatcher.match(e)||n.id,r=new L(i,n);this._mediaTrackReceivers.forEach(e=>{e.track.id===r.track.id&&this._mediaTrackReceivers.delete(e)}),this._mediaTrackReceivers.add(r),n.addEventListener?n.addEventListener("ended",()=>this._mediaTrackReceivers.delete(r)):n.onended=()=>this._mediaTrackReceivers.delete(r),this.emit("trackAdded",r)}_initiateIceRestart(){if("closed"===this._peerConnection.signalingState)return;const e=this._log;e.warn("Attempting to restart ICE"),this._didGenerateLocalCandidates=!1,this._isIceRestartBackoffInProgress=!1,this._shouldRestartIce=!0;const{delay:t,isSet:n}=this._iceReconnectTimeout;n||(e.debug(`Starting ICE reconnect timeout: ${t}`),this._iceReconnectTimeout.start()),this.offer().catch(t=>{e.error(`offer failed in _initiateIceRestart with: ${t.message}`)})}_initiateIceRestartBackoff(){"closed"===this._peerConnection.signalingState||this._isIceRestartBackoffInProgress||(this._log.warn("An ICE restart has been scheduled"),this._isIceRestartBackoffInProgress=!0,this._iceRestartBackoff.backoff(()=>this._initiateIceRestart()))}_maybeReoffer(e){let t=this._shouldOffer;if(e&&e.sdp){const n=this._peerConnection.getSenders().filter(e=>e.track);t=["audio","video"].reduce((t,i)=>{const r=p(e.sdp,i,"(sendrecv|sendonly)"),s=n.filter(q.bind(null,i));return t||r.length<s.length},t);const i=this._dataChannels.size>0,r=p(e.sdp,"application").length>0;t=t||i&&!r}return(t?this._offer():Promise.resolve()).then(()=>t)}_offer(){const e=Object.assign({},this._offerOptions);return this._needsAnswer=!0,this._shouldRestartIce&&(this._shouldRestartIce=!1,this._isRestartingIce=!0,e.iceRestart=!0),Promise.all(this._replaceTrackPromises.values()).then(()=>(this._peerConnection.getTransceivers().forEach(e=>this._applyCodecPreferencesToTransceiver(e)),this._peerConnection.createOffer(e))).catch(e=>{const t=new y;throw this._publishMediaWarning({message:"Failed to create offer",code:t.code,error:e}),t}).then(e=>{if($){let t=u(e.sdp);t=f(t),e=new this._RTCSessionDescription({sdp:t,type:e.type})}else e=D(e);let t=m(e.sdp,["mslabel","label"]);return this._shouldOffer=!1,this._negotiationRole||(this._negotiationRole="offerer"),this._shouldApplySimulcast&&(this._localDescriptionWithoutSimulcast={type:"offer",sdp:t},t=this._setSimulcast(t,this._trackIdsToAttributes)),this._setLocalDescription({type:"offer",sdp:t})})}_getMediaTrackSenderId(e){const t=Array.from(this._rtpSenders.keys()).find(({track:{id:t}})=>t===e);return t?t.id:e}_addOrRewriteLocalTrackIds(e){const t=this._peerConnection.getTransceivers().filter(({sender:e,stopped:t})=>!t&&e&&e.track),n=t.filter(({mid:e})=>e),i=new Map(n.map(({mid:e,sender:t})=>[e,this._getMediaTrackSenderId(t.track.id)])),r=l(e.sdp,i),s=t.filter(({mid:e})=>!e),o=new Map(["audio","video"].map(e=>[e,s.filter(({sender:t})=>t.track.kind===e).map(({sender:e})=>this._getMediaTrackSenderId(e.track.id))])),a=c(r,i,o);return new this._RTCSessionDescription({sdp:a,type:e.type})}_rollbackAndApplyOffer(e){return this._setLocalDescription({type:"rollback"}).then(()=>this._setLocalDescription(e))}_setLocalDescription(e){return"rollback"!==e.type&&this._shouldApplyDtx&&(e=new this._RTCSessionDescription({sdp:h(e.sdp),type:e.type})),this._peerConnection.setLocalDescription(e).catch(t=>{this._log.warn(`Calling setLocalDescription with an RTCSessionDescription of type "${e.type}" failed with the error "${t.message}".`,t);const n=new y,i={message:`Calling setLocalDescription with an RTCSessionDescription of type "${e.type}" failed`,code:n.code,error:t};throw e.sdp&&(this._log.warn(`The SDP was ${e.sdp}`),i.sdp=e.sdp),this._publishMediaWarning(i),n}).then(()=>{"rollback"!==e.type&&(this._localDescription=this._addOrRewriteLocalTrackIds(e),this._shouldApplyDtx&&(this._localDescription=new this._RTCSessionDescription({sdp:h(this._localDescription.sdp,[]),type:this._localDescription.type})),this._localCandidates=[],"offer"===e.type?this._descriptionRevision++:"answer"===e.type&&(this._lastStableDescriptionRevision=this._descriptionRevision,Q(this)),this._localUfrag=H(e),this.emit("description",this.getState()))})}_setRemoteDescription(e){return e.sdp&&(e.sdp=this._setCodecPreferences(e.sdp,this._preferredAudioCodecs,this._preferredVideoCodecs),this._shouldApplyDtx?e.sdp=h(e.sdp):e.sdp=h(e.sdp,[]),$&&(e.sdp=function(e){return e.replace(/a=msid:[^ ]+ /g,"a=msid:- ")}(e.sdp)),this._peerConnection.remoteDescription||(this._isIceLite=/a=ice-lite/.test(e.sdp))),e=new this._RTCSessionDescription(e),Promise.resolve().then(()=>{if("answer"===e.type&&this._localDescriptionWithoutSimulcast){const t=this._preferredVideoCodecs.find(e=>"adaptiveSimulcast"in e),n=!!t&&!1===t.adaptiveSimulcast,i=this._revertSimulcast(this._localDescription.sdp,this._localDescriptionWithoutSimulcast.sdp,e.sdp,n);if(this._localDescriptionWithoutSimulcast=null,i!==this._localDescription.sdp)return this._rollbackAndApplyOffer({type:this._localDescription.type,sdp:i})}}).then(()=>this._peerConnection.setRemoteDescription(e)).then(()=>{"answer"===e.type&&(this._isRestartingIce&&(this._log.debug("An ICE restart was in-progress and is now completed"),this._isRestartingIce=!1),Q(this))},t=>{throw this._log.warn(`Calling setRemoteDescription with an RTCSessionDescription of type "${e.type}" failed with the error "${t.message}".`,t),e.sdp&&this._log.warn(`The SDP was ${e.sdp}`),t})}_updateDescription(e){switch(e.type){case"answer":case"pranswer":if(e.revision!==this._descriptionRevision||"have-local-offer"!==this._peerConnection.signalingState)return Promise.resolve();this._descriptionRevision=e.revision;break;case"close":return this._close();case"create-offer":return e.revision<=this._lastStableDescriptionRevision?Promise.resolve():this._needsAnswer?(this._queuedDescription=e,Promise.resolve()):(this._descriptionRevision=e.revision,this._offer());case"offer":return e.revision<=this._lastStableDescriptionRevision||"closed"===this._peerConnection.signalingState?Promise.resolve():"have-local-offer"===this._peerConnection.signalingState?this._needsAnswer&&0===this._lastStableDescriptionRevision?(this._queuedDescription=e,Promise.resolve()):(this._descriptionRevision=e.revision,this._handleGlare(e)):(this._descriptionRevision=e.revision,this._answer(e).then(()=>{}))}const t=e.revision;return Promise.resolve().then(()=>this._setRemoteDescription(e)).catch(t=>{const n=new k;throw this._publishMediaWarning({message:`Calling setRemoteDescription with an RTCSessionDescription of type "${e.type}" failed`,code:n.code,error:t,sdp:e.sdp}),n}).then(()=>(this._lastStableDescriptionRevision=t,this._needsAnswer=!1,this._checkIceBox(e))).then(()=>this._queuedDescription&&this._updateDescription(this._queuedDescription)).then(()=>(this._queuedDescription=null,this._maybeReoffer(this._peerConnection.localDescription).then(()=>{})))}_updateIce(e){const t=this._remoteCandidates.update(e);return this._addIceCandidates(t)}addDataTrackSender(e){if(!this._dataChannels.has(e))try{const t={ordered:e.ordered};null!==e.maxPacketLifeTime&&(t.maxPacketLifeTime=e.maxPacketLifeTime),null!==e.maxRetransmits&&(t.maxRetransmits=e.maxRetransmits);const n=this._peerConnection.createDataChannel(e.id,t);e.addDataChannel(n),this._dataChannels.set(e,n)}catch(t){this._log.warn(`Error creating an RTCDataChannel for DataTrack "${e.id}": ${t.message}`)}}_handleQueuedPublisherHints(){"stable"===this._peerConnection.signalingState&&this._mediaTrackSenderToPublisherHints.forEach(({deferred:e,encodings:t},n)=>{this._mediaTrackSenderToPublisherHints.delete(n),this._setPublisherHint(n,t).then(t=>e.resolve(t)).catch(t=>e.reject(t))})}_setPublisherHint(e,t){if($)return Promise.resolve("COULD_NOT_APPLY_HINT");if(this._mediaTrackSenderToPublisherHints.has(e)){this._mediaTrackSenderToPublisherHints.get(e).deferred.resolve("REQUEST_SKIPPED"),this._mediaTrackSenderToPublisherHints.delete(e)}const n=this._rtpSenders.get(e);if(!n)return this._log.warn("Could not apply publisher hint because RTCRtpSender was not found"),Promise.resolve("UNKNOWN_TRACK");if("closed"===this._peerConnection.signalingState)return this._log.warn('Could not apply publisher hint because signalingState was "closed"'),Promise.resolve("COULD_NOT_APPLY_HINT");if("stable"!==this._peerConnection.signalingState){this._log.debug("Queuing up publisher hint because signalingState:",this._peerConnection.signalingState);const n=C();return this._mediaTrackSenderToPublisherHints.set(e,{deferred:n,encodings:t}),n.promise}const i=n.getParameters();return null!==t&&t.forEach(({enabled:e,layer_index:t})=>{i.encodings.length>t?(this._log.debug(`layer:${t}, active:${i.encodings[t].active} => ${e}`),i.encodings[t].active=e):this._log.warn(`invalid layer:${t}, active:${e}`)}),this._maybeUpdateEncodings(n.track,i.encodings,null===t),n.setParameters(i).then(()=>"OK").catch(e=>(this._log.error("Failed to apply publisher hints:",e),"COULD_NOT_APPLY_HINT"))}addMediaTrackSender(e){if("closed"===this._peerConnection.signalingState||this._rtpSenders.has(e))return;const t=this._addOrUpdateTransceiver(e.track),{sender:n}=t;e.addSender(n,t=>this._setPublisherHint(e,t)),this._rtpNewSenders.add(n),this._rtpSenders.set(e,n)}close(){this._close()&&(this._descriptionRevision++,this._localDescription={type:"close"},this.emit("description",this.getState()))}getTrackReceivers(){return Array.from(this._dataTrackReceivers).concat(Array.from(this._mediaTrackReceivers))}getState(){if(!this._localDescription)return null;const e="answer"===this._localDescription.type?this._lastStableDescriptionRevision:this._descriptionRevision,t={type:this._localDescription.type,revision:e};return this._localDescription.sdp&&(t.sdp=this._localDescription.sdp),{description:t,id:this.id}}offer(){return this._needsAnswer||this._isRestartingIce?(this._shouldOffer=!0,Promise.resolve()):this.bracket("offering",e=>{this.transition("updating",e);return(this._needsAnswer||this._isRestartingIce?Promise.resolve():this._offer()).then(()=>{this.tryTransition("open",e)},t=>{throw this.tryTransition("open",e),t})})}removeDataTrackSender(e){const t=this._dataChannels.get(e);t&&(e.removeDataChannel(t),this._dataChannels.delete(e),t.close())}removeMediaTrackSender(e){const t=this._rtpSenders.get(e);if(t){if("closed"!==this._peerConnection.signalingState&&this._peerConnection.removeTrack(t),e.removeSender(t),this._mediaTrackSenderToPublisherHints.has(e)){this._mediaTrackSenderToPublisherHints.get(e).deferred.resolve("UNKNOWN_TRACK"),this._mediaTrackSenderToPublisherHints.delete(e)}this._rtpNewSenders.delete(t),this._rtpSenders.delete(e)}}setConfiguration(e){"function"==typeof this._peerConnection.setConfiguration&&this._peerConnection.setConfiguration(W(e))}setIceReconnectTimeout(e){return this._iceReconnectTimeout.setDelay(e),this._log.debug("Updated ICE reconnection timeout period:",this._iceReconnectTimeout.delay),this}update(e){return this.bracket("updating",t=>{if("closed"===this.state)return Promise.resolve();this.transition("updating",t);const n=[];return e.ice&&n.push(this._updateIce(e.ice)),e.description&&n.push(this._updateDescription(e.description)),Promise.all(n).then(()=>{this.tryTransition("open",t)},e=>{throw this.tryTransition("open",t),e})})}getStats(){return n(this._peerConnection,{log:this._log}).then(e=>function(e,t){return Object.assign(t,{remoteAudioTrackStats:t.remoteAudioTrackStats.map(t=>U(e,t)),remoteVideoTrackStats:t.remoteVideoTrackStats.map(t=>U(e,t)),localAudioTrackStats:t.localAudioTrackStats.map(t=>B(e,t)),localVideoTrackStats:t.localVideoTrackStats.map(t=>B(e,t))})}(this,e))}},qs}function ic(){if(Gs)return zs;Gs=1;const{guessBrowser:e}=pe(),t=nc(),n=Dn(),i=Rn(),r=Ce(),{MediaConnectionError:s}=Jn(),o="firefox"===e();function a(e){return e.createMediaStreamDestination().stream.getAudioTracks()[0]}function c(e,t){return{add:r.difference(t,e._dataTrackSenders),remove:r.difference(e._dataTrackSenders,t)}}function l(e,t){return{add:r.difference(t,e._mediaTrackSenders),remove:r.difference(e._mediaTrackSenders,t)}}const d={new:0,checking:1,connecting:2,connected:3,completed:4,disconnected:-1,failed:-2,closed:-3};let u;function h(e){return e.length?(u=u||Object.keys(d).reduce((e,t)=>Object.assign(e,{[d[t]]:t}),{}),e.reduce((e,t)=>u[Math.max(d[e],d[t])])):"new"}function p(e){e._lastIceConnectionState=e.iceConnectionState,e._iceConnectionState=h([...e._peerConnections.values()].map(e=>e.iceConnectionState)),e.iceConnectionState!==e._lastIceConnectionState&&e.emit("iceConnectionStateChanged")}function f(e){e._lastConnectionState=e.connectionState,e._connectionState=h([...e._peerConnections.values()].map(e=>e.connectionState)),e.connectionState!==e._lastConnectionState&&e.emit("connectionStateChanged")}return zs=class extends i{constructor(e,i,s){super();const c=(s=Object.assign({audioContextFactory:o?X():null,PeerConnectionV2:t},s)).audioContextFactory?s.audioContextFactory.getOrCreate(this):null,l=c?{offerToReceiveVideo:!0}:{offerToReceiveAudio:!0,offerToReceiveVideo:!0};Object.defineProperties(this,{_audioContextFactory:{value:s.audioContextFactory},_closedPeerConnectionIds:{value:new Set},_configuration:{writable:!0,value:null},_configurationDeferred:{writable:!0,value:r.defer()},_connectionState:{value:"new",writable:!0},_dummyAudioTrackSender:{value:c?new n(a(c)):null},_encodingParameters:{value:e},_iceConnectionState:{writable:!0,value:"new"},_dataTrackSenders:{writable:!0,value:new Set},_lastConnectionState:{value:"new",writable:!0},_lastIceConnectionState:{writable:!0,value:"new"},_mediaTrackSenders:{writable:!0,value:new Set},_offerOptions:{value:l},_peerConnections:{value:new Map},_preferredCodecs:{value:i},_sessionTimeout:{value:null,writable:!0},_PeerConnectionV2:{value:s.PeerConnectionV2}})}setEffectiveAdaptiveSimulcast(e){this._peerConnections.forEach(t=>t.setEffectiveAdaptiveSimulcast(e)),this._preferredCodecs.video.forEach(t=>{"adaptiveSimulcast"in t&&(t.adaptiveSimulcast=e)})}get connectionState(){return this._connectionState}get iceConnectionState(){return this._iceConnectionState}_closeAbsentPeerConnections(e){const t=new Set(e.map(e=>e.id));return this._peerConnections.forEach(e=>{t.has(e.id)||e._close()}),this}_getConfiguration(){return this._configurationDeferred.promise}_getOrCreate(e,t){const n=this;let i=this._peerConnections.get(e);if(!i){const r=this._PeerConnectionV2,o=Object.assign({dummyAudioMediaStreamTrack:this._dummyAudioTrackSender?this._dummyAudioTrackSender.track:null,offerOptions:this._offerOptions},this._sessionTimeout?{sessionTimeout:this._sessionTimeout}:{},t);try{i=new r(e,this._encodingParameters,this._preferredCodecs,o)}catch(e){throw new s}this._peerConnections.set(i.id,i),i.on("candidates",this.queue.bind(this,"candidates")),i.on("description",this.queue.bind(this,"description")),i.on("trackAdded",this.queue.bind(this,"trackAdded")),i.on("stateChanged",function e(t){"closed"===t&&(i.removeListener("stateChanged",e),n._dataTrackSenders.forEach(e=>i.removeDataTrackSender(e)),n._mediaTrackSenders.forEach(e=>i.removeMediaTrackSender(e)),n._peerConnections.delete(i.id),n._closedPeerConnectionIds.add(i.id),f(n),p(n))}),i.on("connectionStateChanged",()=>f(this)),i.on("iceConnectionStateChanged",()=>p(this)),this._dataTrackSenders.forEach(i.addDataTrackSender,i),this._mediaTrackSenders.forEach(i.addMediaTrackSender,i),p(this)}return i}close(){return this._peerConnections.forEach(e=>{e.close()}),this._dummyAudioTrackSender&&this._dummyAudioTrackSender.stop(),this._audioContextFactory&&this._audioContextFactory.release(this),p(this),this}createAndOffer(){return this._getConfiguration().then(e=>{let t;do{t=r.makeUUID()}while(this._peerConnections.has(t));return this._getOrCreate(t,e)}).then(e=>e.offer()).then(()=>this)}getTrackReceivers(){return r.flatMap(this._peerConnections,e=>e.getTrackReceivers())}getStates(){const e=[];return this._peerConnections.forEach(t=>{const n=t.getState();n&&e.push(n)}),e}setConfiguration(e){return this._configuration&&(this._configurationDeferred=r.defer(),this._peerConnections.forEach(t=>{t.setConfiguration(e)})),this._configuration=e,this._configurationDeferred.resolve(e),this}setIceReconnectTimeout(e){return null===this._sessionTimeout&&(this._peerConnections.forEach(t=>{t.setIceReconnectTimeout(e)}),this._sessionTimeout=e),this}setTrackSenders(e){const t=new Set(e.filter(e=>"data"===e.kind)),n=new Set(e.filter(e=>e&&("audio"===e.kind||"video"===e.kind))),i=function(e,t,n){return{data:c(e,t),media:l(e,n)}}(this,t,n);return this._dataTrackSenders=t,this._mediaTrackSenders=n,function(e,t){(t.data.add.size||t.data.remove.size||t.media.add.size||t.media.remove.size)&&e._peerConnections.forEach(e=>{t.data.remove.forEach(e.removeDataTrackSender,e),t.media.remove.forEach(e.removeMediaTrackSender,e),t.data.add.forEach(e.addDataTrackSender,e),t.media.add.forEach(e.addMediaTrackSender,e),(t.media.add.size||t.media.remove.size||t.data.add.size&&!e.isApplicationSectionNegotiated)&&e.offer()})}(this,i),this}update(e,t=!1){return t&&this._closeAbsentPeerConnections(e),this._getConfiguration().then(t=>Promise.all(e.map(e=>{if(this._closedPeerConnectionIds.has(e.id))return null;return this._getOrCreate(e.id,t).update(e)}))).then(()=>this)}getStats(){const e=Array.from(this._peerConnections.values());return Promise.all(e.map(e=>e.getStats().then(t=>[e.id,t]))).then(e=>new Map(e))}},zs}function rc(){if(Ys)return Ks;Ys=1;const e=xe();let t=0;return Ks=class extends e{constructor(e,n,i){super(),Object.defineProperties(this,{_instanceId:{value:t++},channel:{value:n},_log:{value:i.log.createLog("default",this)},_getReceiver:{value:e},_receiverPromise:{value:null,writable:!0},_transport:{value:null,writable:!0}})}get isSetup(){return!!this._receiverPromise}toString(){return`[MediaSignaling #${this._instanceId}:${this.channel}]`}setup(e){this._teardown(),this._log.info("setting up msp transport for id:",e);const t=this._getReceiver(e).then(e=>{if("data"!==e.kind&&this._log.error("Expected a DataTrackReceiver"),this._receiverPromise===t){try{this._transport=e.toDataTransport(),this.emit("ready",this._transport)}catch(e){this._log.error(`Failed to toDataTransport: ${e.message}`)}e.once("close",()=>this._teardown())}});this._receiverPromise=t}_teardown(){this._transport&&(this._log.info("Tearing down"),this._transport=null,this._receiverPromise=null,this.emit("teardown"))}},Ks}function sc(){if(ro)return io;ro=1;const e=function(){if(no)return to;no=1;class e{constructor(e,t,n,i){Object.defineProperties(this,{availableSend:{enumerable:!0,value:n},recv:{enumerable:!0,value:t},rtt:{enumerable:!0,value:i},send:{enumerable:!0,value:e}})}static of(t,n){const i=(n.timestamp-t.timestamp)/1e3,r=n.bytesSent-t.bytesSent,s=n.bytesReceived-t.bytesReceived,o=i>0?r/i*8:0,a=i>0?s/i*8:0,{availableOutgoingBitrate:c,currentRoundTripTime:l}=n;return new e(o,a,c,l)}}return to=e}();return io=class{constructor(){Object.defineProperties(this,{lastReport:{enumerable:!0,value:new e(0,0),writable:!0},lastStats:{enumerable:!0,value:null,writable:!0}})}next(t){const n=this.lastStats;if(this.lastStats=t,n){const i=n.id===t.id?e.of(n,t):new e(0,0);this.lastReport=i}return this.lastReport}}}function oc(){if(oo)return so;return oo=1,so=function(e){return(e=e.filter(e=>"number"==typeof e)).length<1?void 0:e.reduce((e,t)=>t+e)/e.length}}function ac(){if(co)return ao;co=1;return ao=class{constructor(e,t,n){Object.defineProperties(this,{id:{enumerable:!0,value:e},trackId:{enumerable:!0,value:t},bitrate:{enumerable:!0,value:n}})}}}function cc(){if(uo)return lo;return uo=1,lo=function(e){return e.reduce((e,t)=>"number"==typeof t?t+e:e,0)}}function lc(){if(po)return ho;po=1;const e=oc(),t=ac(),n=cc();class i extends t{constructor(e,t,n,i,r,s,o){super(e,t,n);const a=r>0?i/r:0;Object.defineProperties(this,{deltaPacketsLost:{enumerable:!0,value:i},deltaPacketsReceived:{enumerable:!0,value:r},fractionLost:{enumerable:!0,value:s},jitter:{enumerable:!0,value:o},phonyFractionLost:{enumerable:!0,value:a}})}static of(e,t,n){if(t.id!==n.id)throw new Error("RTCStats IDs must match");const r=(n.timestamp-t.timestamp)/1e3,s=n.bytesReceived-t.bytesReceived,o=r>0?s/r*8:0,a=Math.max(n.packetsLost-t.packetsLost,0),c=n.packetsReceived-t.packetsReceived,{fractionLost:l,jitter:d}=n;return new i(t.id,e,o,a,c,l,d)}static summarize(t){const i=t.map(e=>e.summarize());return{bitrate:n(i.map(e=>e.bitrate)),fractionLost:e(i.map(e=>e.fractionLost)),jitter:e(i.map(e=>e.jitter))}}summarize(){return{bitrate:this.bitrate,fractionLost:"number"==typeof this.fractionLost?this.fractionLost:this.phonyFractionLost,jitter:this.jitter}}}return ho=i}function dc(){if(mo)return fo;mo=1;const e=oc(),t=ac(),n=cc();class i extends t{constructor(e,t,n,i){super(e,t,n),Object.defineProperties(this,{rtt:{enumerable:!0,value:i}})}static of(e,t,n,r){if(t.id!==n.id)throw new Error("RTCStats IDs must match");const s=(n.timestamp-t.timestamp)/1e3,o=n.bytesSent-t.bytesSent,a=s>0?o/s*8:0,c=r&&"number"==typeof r.roundTripTime?r.roundTripTime/1e3:void 0;return new i(t.id,e,a,c)}static summarize(t){return{bitrate:n(t.map(e=>e.bitrate)),rtt:e(t.map(e=>e.rtt))}}}return fo=i}function uc(){if(bo)return vo;bo=1;return vo=class{constructor(e,t,n){Object.defineProperties(this,{id:{enumerable:!0,value:e,writable:!0},trackId:{enumerable:!0,value:t,writable:!0},lastStats:{enumerable:!0,value:n,writable:!0}})}}}function hc(){if(Co)return To;Co=1;const{guessBrowser:e}=pe(),t=sc(),n=function(){if(_o)return go;_o=1;const e=lc(),t=dc();return go=class{constructor(e,t,n){Object.defineProperties(this,{ice:{enumerable:!0,value:e},audio:{enumerable:!0,value:t},video:{enumerable:!0,value:n}})}summarize(){const n=this.audio.send.concat(this.video.send),i=t.summarize(n),r=this.audio.recv.concat(this.video.recv),s=e.summarize(r);return{ice:this.ice,send:i,recv:s,audio:{send:t.summarize(this.audio.send),recv:e.summarize(this.audio.recv)},video:{send:t.summarize(this.video.send),recv:e.summarize(this.video.recv)}}}}}(),i=function(){if(ko)return yo;ko=1;const e=lc(),t=uc();return yo=class extends t{constructor(e,t){super(t.id,e,t),Object.defineProperties(this,{lastReport:{enumerable:!0,value:null,writable:!0}})}next(t,n){const i=this.lastStats;this.lastStats=n,this.trackId=t;const r=e.of(t,i,n);return this.lastReport=r,r}}}(),r=function(){if(So)return wo;So=1;const e=uc(),t=dc();return wo=class extends e{constructor(e,t){super(t.id,e,t),Object.defineProperties(this,{lastReport:{enumerable:!0,value:null,writable:!0}})}next(e,n,i){const r=this.lastStats;this.lastStats=n,this.trackId=e;const s=t.of(e,r,n,i);return this.lastReport=s,s}}}();function s(e){return Promise.all(e.map(e=>{const t=e.track.id;return e.getStats().then(e=>{for(const n of e.values())"inbound-rtp"===n.type&&(n.id=`${t}-${n.id}`);return[t,e]})})).then(e=>new Map(e))}function o(e,t,n,i,r){const s=t[i.mediaType];if(!r){const e=n.get(i.trackId);e&&(r=e.trackIdentifier)}if(s&&r){if(s.has(i.id))return s.get(i.id);const t=new e(r,i);s.set(i.id,t)}return null}function a(e){return{audio:e.audio.send,video:e.video.send}}function c(e){return{audio:e.audio.recv,video:e.video.recv}}function l(e,t,n,i){return o(r,a(e),t,n,i)}function d(e,t,n,r){return o(i,c(e),t,n,r)}function u(e){return{audio:new Set(e.audio.send.keys()),video:new Set(e.video.send.keys())}}function h(e){return{audio:new Set(e.audio.recv.keys()),video:new Set(e.video.recv.keys())}}function p(t,n,i,r){for(const s of n.values())if("outbound-rtp"===s.type&&!s.isRemote){if("firefox"!==e()&&!s.trackId)continue;const o=i[s.mediaType];o&&o.delete(s.id);const a=l(t,n,s,r);if(a){const e=n.get(s.remoteId);a.next(r||a.trackId,s,e)}}}function f(e,t,n,i){for(const r of t.values())if("inbound-rtp"===r.type&&!r.isRemote){const s=n[r.mediaType];s&&s.delete(r.id);const o=d(e,t,r,i);o&&o.next(i||o.trackId,r)}}function m(e,t){for(const n in t){const i=e[n];t[n].forEach(e=>i.delete(e))}}function g(e,t){let n;for(const e of t.values())"transport"===e.type&&(n=t.get(e.selectedCandidatePairId));if(n)e.next(n);else for(const n of t.values())"candidate-pair"!==n.type||!n.nominated||"selected"in n&&!n.selected||e.next(n)}return To=class{constructor(e){Object.defineProperties(this,{pc:{enumerable:!0,value:e},ice:{enumerable:!0,value:new t},audio:{enumerable:!0,value:{send:new Map,recv:new Map}},video:{enumerable:!0,value:{send:new Map,recv:new Map}},lastReport:{enumerable:!0,value:null,writable:!0}})}next(){const t="firefox"===e()?function(e){const t=e.pc.getTransceivers().filter(e=>e.currentDirection&&e.currentDirection.match(/send/)&&e.sender.track).map(e=>e.sender),n=e.pc.getTransceivers().filter(e=>e.currentDirection&&e.currentDirection.match(/recv/)).map(e=>e.receiver);return Promise.all([s(t),s(n),e.pc.getStats()]).then(([t,n,i])=>{const r=a(e),s=u(e);t.forEach((t,n)=>p(e,t,s,n)),m(r,s);const o=c(e),l=h(e);n.forEach((t,n)=>f(e,t,l,n)),m(o,l),g(e.ice,i)})}(this):(i=this).pc.getStats().then(e=>{const t=a(i),n=u(i);p(i,e,n),m(t,n);const r=c(i),s=h(i);f(i,e,s),m(r,s),g(i.ice,e)});var i;return t.then(()=>{const e=[...this.audio.send.values()],t=[...this.video.send.values()],i=[...this.audio.recv.values()],r=[...this.video.recv.values()],s=new n(this.ice.lastReport,{send:e.map(e=>e.lastReport).filter(e=>e),recv:i.map(e=>e.lastReport).filter(e=>e)},{send:t.map(e=>e.lastReport).filter(e=>e),recv:r.map(e=>e.lastReport).filter(e=>e)});return this.lastReport=s,s})}},To}function pc(){if(Eo)return Po;Eo=1;const e=xe(),t=hc();return Po=class extends e{constructor(e,t){super(),Object.defineProperties(this,{_factories:{value:new WeakMap},_manager:{value:e},_signaling:{value:t}}),t.on("updated",()=>this.emit("updated"))}get level(){return this._signaling.level}get levels(){return this._signaling.levels}get remoteLevels(){return this._signaling.remoteLevels}start(){this.stop();const e=setTimeout(()=>{this._timeout===e&&function(e){const n=(e._manager._peerConnections?Array.from(e._manager._peerConnections.values()):[]).map(e=>e._peerConnection).filter(e=>"closed"!==e.signalingState),i=n.map(n=>{if(e._factories.has(n))return e._factories.get(n);const i=new t(n);return e._factories.set(n,i),i}).map(e=>e.next().catch(()=>null));return Promise.all(i).then(e=>e.filter(e=>e).map(e=>e.summarize()))}(this).then(t=>{if(this._timeout===e){if(t.length){const[e]=t;this._signaling.put(e)}this.start()}})},200);this._timeout=e}stop(){clearTimeout(this._timeout),this._timeout=null}},Po}function fc(){if(Io)return Ro;Io=1;const e=rc(),t=function(){if(Lo)return Oo;Lo=1;const{defer:e}=Ce();return Oo=class{constructor(){Object.defineProperties(this,{_deferreds:{value:[]},_hasValue:{value:!1,writable:!0},_value:{value:null,writable:!0}})}put(e){this._hasValue=!0,this._value=e;const t=this._deferreds.shift();return t&&t.resolve(e),this}take(){if(this._hasValue&&!this._deferreds.length)return this._hasValue=!1,Promise.resolve(this._value);const t=e();return this._deferreds.push(t),t.promise.then(e=>(this._hasValue=!1,e))}}}(),n=ki();return Ro=class extends e{constructor(e,i,r){super(e,"network_quality",r),Object.defineProperties(this,{_level:{value:null,writable:!0},_levels:{value:null,writable:!0},_remoteLevels:{value:new Map,writable:!0},_networkQualityInputs:{value:new t},_resendTimer:{value:new n(()=>{this._resendTimer.setDelay(1.5*this._resendTimer.delay),this._sendNetworkQualityInputs()},5e3,!1)},_networkQualityReportLevels:{get:()=>({reportLevel:i.local,remoteReportLevel:i.remote})}}),this.on("ready",e=>{e.on("message",e=>{if(this._log.debug("Incoming: ",e),"network_quality"===e.type)this._handleNetworkQualityMessage(e)})}),this._sendNetworkQualityInputs()}get level(){return this._level}get levels(){return this._levels}get remoteLevels(){return this._remoteLevels}_handleNetworkQualityMessage(e){let t=!1,n=null;const i=e?e.local:null;"number"==typeof i?(n=i,this._levels=null):"object"==typeof i&&i&&(this._levels=i,n="number"==typeof i.level?i.level:Math.min(i.audio.send,i.audio.recv,i.video.send,i.video.recv)),null!==n&&this.level!==n&&(this._level=n,t=!0),this._remoteLevels=e&&e.remotes?e.remotes.reduce((e,n)=>((this._remoteLevels.get(n.sid)||{}).level!==n.level&&(t=!0),e.set(n.sid,n)),new Map):this._remoteLevels,t&&this.emit("updated"),this._resendTimer.setDelay(5e3),this._resendTimer.isSet&&setTimeout(()=>this._sendNetworkQualityInputs(),1e3)}_sendNetworkQualityInputs(){return this._resendTimer.clear(),this._networkQualityInputs.take().then(e=>{this._transport&&this._transport.publish(function(e,t){return Object.assign({type:"network_quality"},e,t)}(e,this._networkQualityReportLevels))}).finally(()=>{this._resendTimer.start()})}put(e){this._networkQualityInputs.put(e)}},Ro}function mc(){if(Do)return Mo;Do=1;const e=xe().EventEmitter;return Mo=class extends e{constructor(){super(),Object.defineProperties(this,{_isEnabled:{value:null,writable:!0},isEnabled:{enumerable:!0,get(){return this._isEnabled}}})}disable(){return this.enable(!1)}enable(e){return e="boolean"!=typeof e||e,this.isEnabled!==e&&(this._isEnabled=e,this.emit("updated")),this}}}function gc(){if(Vo)return No;Vo=1;const e=mc(),t=yi(),n=ki(),{buildLogLevels:i}=Ce(),{DEFAULT_LOG_LEVEL:r}=ae(),s=ce(),{MediaConnectionError:o,MediaDTLSTransportFailedError:a,SignalingConnectionDisconnectedError:c}=Jn();let l=0;const d={connected:["reconnecting","disconnected"],reconnecting:["connected","disconnected"],disconnected:[]};function u(e){if("disconnected"===e.state||"disconnected"===e.signalingConnectionState)return void e._sessionTimeout.clear();let t;"reconnecting"===e.signalingConnectionState?t=e.signalingConnectionState:"failed"===e.iceConnectionState?(e._mediaConnectionIsReconnecting=!0,t="reconnecting"):"new"===e.iceConnectionState||"checking"===e.iceConnectionState?t=e._mediaConnectionIsReconnecting?"reconnecting":"connected":(e._mediaConnectionIsReconnecting=!1,e._reconnectingError=null,e._sessionTimeout.clear(),t="connected"),t!==e.state&&("reconnecting"===t?(e._reconnectingError="reconnecting"===e.signalingConnectionState?new c:new o,e._sessionTimeout.start(),e.preempt(t,null,[e._reconnectingError])):e.preempt(t))}return No=class extends t{constructor(t,o,c,h){h=Object.assign({logLevel:r,RecordingSignaling:e,Timeout:n},h);const p=i(h.logLevel);super("connected",d);const f=h.RecordingSignaling,m=new h.Timeout(()=>{this._disconnect(this._reconnectingError)},h.sessionTimeout,!1);Object.defineProperties(this,{_instanceId:{value:l++},_log:{value:h.log?h.log.createLog("default",this):new s("default",this,p,h.loggerName)},_mediaConnectionIsReconnecting:{writable:!0,value:!1},_options:{value:h},_reconnectingError:{value:null,writable:!0},_sessionTimeout:{value:m},dominantSpeakerSid:{enumerable:!0,value:null,writable:!0},localParticipant:{enumerable:!0,value:t},name:{enumerable:!0,value:c},participants:{enumerable:!0,value:new Map},recording:{enumerable:!0,value:new f},sid:{enumerable:!0,value:o}}),this.on("connectionStateChanged",()=>{"failed"!==this.connectionState||["disconnected","failed"].includes(this.iceConnectionState)||this._disconnect(new a)}),this.on("iceConnectionStateChanged",()=>u(this)),this.on("signalingConnectionStateChanged",()=>u(this)),setTimeout(()=>u(this))}_disconnect(e){return"disconnected"!==this.state&&(this.preempt("disconnected",null,[e]),!0)}toString(){return`[RoomSignaling #${this._instanceId}: ${this.localParticipant?this.localParticipant.sid:"null"}]`}connectParticipant(e){const t=this;return"disconnected"!==e.state&&(!this.participants.has(e.sid)&&(this.participants.set(e.sid,e),e.on("stateChanged",function n(i){"disconnected"===i&&(e.removeListener("stateChanged",n),t.participants.delete(e.sid),t.emit("participantDisconnected",e))}),this.emit("participantConnected",e),!0))}disconnect(){return this._disconnect()}setDominantSpeaker(e){this.dominantSpeakerSid=e,this.emit("dominantSpeakerChanged")}},No}function _c(){if(zo)return Qo;zo=1;const e=Bo?Fo:(Bo=1,Fo=class{constructor({actual:e=null,available:t=null,level:n=null}){Object.defineProperties(this,{actual:{value:e,enumerable:!0},available:{value:t,enumerable:!0},level:{value:n,enumerable:!0}})}}),t=Ho?Uo:(Ho=1,Uo=class{constructor({fractionLost:e=null,level:t=null}){Object.defineProperties(this,{fractionLost:{value:e,enumerable:!0},level:{value:t,enumerable:!0}})}}),n=qo?Wo:(qo=1,Wo=class{constructor({jitter:e=null,rtt:t=null,level:n=null}){Object.defineProperties(this,{jitter:{value:e,enumerable:!0},rtt:{value:t,enumerable:!0},level:{value:n,enumerable:!0}})}});return Qo=class{constructor({bandwidth:i=null,fractionLost:r=null,latency:s=null}){Object.defineProperties(this,{bandwidth:{value:i?new e(i):null,enumerable:!0},fractionLost:{value:r?new t(r):null,enumerable:!0},latency:{value:s?new n(s):null,enumerable:!0}})}}}function vc(){if(Zo)return Xo;Zo=1;const e=function(){if(Ko)return Go;Ko=1;const e=_c();return Go=class extends e{constructor(e){super(e)}}}(),t=function(){if(Jo)return Yo;Jo=1;const e=_c();return Yo=class extends e{constructor(e){super(e)}}}();return Xo=class{constructor({send:n,recv:i,sendStats:r=null,recvStats:s=null}){Object.defineProperties(this,{send:{value:n,enumerable:!0},recv:{value:i,enumerable:!0},sendStats:{value:r?new e(r):null,enumerable:!0},recvStats:{value:s?new t(s):null,enumerable:!0}})}}}function bc(){if(sa)return ra;sa=1;const e=function(){if(ta)return ea;ta=1;const e=vc();return ea=class extends e{constructor(e){super(e)}}}(),t=function(){if(ia)return na;ia=1;const e=vc();return na=class extends e{constructor(e){super(e)}}}();return ra=class{constructor({level:n,audio:i,video:r}){Object.defineProperties(this,{level:{value:n,enumerable:!0},audio:{value:i?new e(i):null,enumerable:!0},video:{value:r?new t(r):null,enumerable:!0}})}}}function yc(){if(aa)return oa;aa=1;const e=yi(),t=bc(),n={connecting:["connected"],connected:["disconnected","reconnecting"],reconnecting:["connected","disconnected"],disconnected:[]};return oa=class extends e{constructor(){super("connecting",n),Object.defineProperties(this,{_identity:{writable:!0,value:null},_networkQualityLevel:{value:null,writable:!0},_networkQualityStats:{value:null,writable:!0},_sid:{writable:!0,value:null},identity:{enumerable:!0,get(){return this._identity}},sid:{enumerable:!0,get(){return this._sid}},tracks:{enumerable:!0,value:new Map}})}get networkQualityLevel(){return this._networkQualityLevel}get networkQualityStats(){return this._networkQualityStats}addTrack(e){return this.tracks.set(e.id||e.sid,e),this.emit("trackAdded",e),this}disconnect(){return"disconnected"!==this.state&&(this.preempt("disconnected"),!0)}removeTrack(e){const t=this.tracks.get(e.id||e.sid);return this.tracks.delete(e.id||e.sid),t&&this.emit("trackRemoved",e),t||null}setNetworkQualityLevel(e,n){this._networkQualityLevel!==e&&(this._networkQualityLevel=e,this._networkQualityStats=n&&(n.audio||n.video)?new t(n):null,this.emit("networkQualityLevelChanged"))}connect(e,t){return("connecting"===this.state||"reconnecting"===this.state)&&(this._sid||(this._sid=e),this._identity||(this._identity=t),this.preempt("connected"),!0)}reconnecting(){return("connecting"===this.state||"connected"===this.state)&&(this.preempt("reconnecting"),!0)}},oa}function kc(){if(ua)return da;ua=1;const{EventEmitter:e}=xe();return da=class extends e{constructor(e,t,n,i){super();let r=null;Object.defineProperties(this,{_error:{value:null,writable:!0},_isEnabled:{value:n,writable:!0},_priority:{value:i,writable:!0},_trackTransceiver:{value:null,writable:!0},_sid:{get:()=>r,set(e){null===r&&(r=e)}},kind:{enumerable:!0,value:t},name:{enumerable:!0,value:e}})}get error(){return this._error}get isEnabled(){return this._isEnabled}get priority(){return this._priority}get sid(){return this._sid}get trackTransceiver(){return this._trackTransceiver}disable(){return this.enable(!1)}enable(e){return e="boolean"!=typeof e||e,this.isEnabled!==e&&(this._isEnabled=e,this.emit("updated")),this}setTrackTransceiver(e){return e=e||null,this.trackTransceiver!==e&&(this._trackTransceiver=e,this.emit("updated")),this}setSid(e){return null===this.sid&&(this._sid=e,this.emit("updated")),this}},da}function wc(){if(ma)return fa;ma=1;const e=function(){if(pa)return ha;pa=1;const e=kc();return ha=class extends e{constructor(e,t,n,i,r,s){super(t,n,i,r),Object.defineProperties(this,{_isSwitchedOff:{value:s,writable:!0}}),this.setSid(e)}get isSubscribed(){return!!this.trackTransceiver}get isSwitchedOff(){return this._isSwitchedOff}subscribeFailed(e){return this.error||(this._error=e,this.emit("updated")),this}setPriority(e){return this._priority!==e&&(this._priority=e,this.emit("updated")),this}setSwitchedOff(e){return this._isSwitchedOff!==e&&(this._isSwitchedOff=e,this.emit("updated")),this}},ha}();return fa=class extends e{constructor(e,t){super(e.sid,e.name,e.kind,e.enabled,e.priority,t)}update(e){return this.enable(e.enabled),this.setPriority(e.priority),this}},fa}function Sc(){if(_a)return ga;_a=1;const e=function(){if(la)return ca;la=1;const e=yc();return ca=class extends e{constructor(e,t){super(),this.connect(e,t)}},ca}(),t=wc();return ga=class extends e{constructor(e,n,i,r,s,o){return super(e.sid,e.identity),o=Object.assign({RemoteTrackPublicationV2:t},o),Object.defineProperties(this,{_revision:{writable:!0,value:null},_RemoteTrackPublicationV2:{value:o.RemoteTrackPublicationV2},_getInitialTrackSwitchOffState:{value:n},updateSubscriberTrackPriority:{value:(e,t)=>i(e,t)},updateTrackRenderHint:{value:(e,t)=>r(e,t)},clearTrackHint:{value:e=>s(e)},revision:{enumerable:!0,get(){return this._revision}}}),this.update(e)}_getOrCreateTrack(e){const t=this._RemoteTrackPublicationV2;let n=this.tracks.get(e.sid);if(!n){n=new t(e,this._getInitialTrackSwitchOffState(e.sid)),this.addTrack(n)}return n}update(e){if(null!==this.revision&&e.revision<=this.revision)return this;this._revision=e.revision;const t=new Set;switch(e.tracks.forEach(e=>{const n=this._getOrCreateTrack(e);n.update(e),t.add(n)}),this.tracks.forEach(e=>{t.has(e)||this.removeTrack(e)}),e.state){case"disconnected":this.disconnect();break;case"reconnecting":this.reconnecting();break;case"connected":this.connect(this.sid,this.identity)}return this}},ga}function Tc(){if(Ea)return Pa;Ea=1;const e=function(){if(Xs)return Js;Xs=1;const e=rc();return Js=class extends e{constructor(e,t){super(e,"active_speaker",t),Object.defineProperties(this,{_loudestParticipantSid:{value:null,writable:!0}}),this.on("ready",e=>{e.on("message",e=>{"active_speaker"===e.type&&this._setLoudestParticipantSid(e.participant)})})}get loudestParticipantSid(){return this._loudestParticipantSid}_setLoudestParticipantSid(e){this.loudestParticipantSid!==e&&(this._loudestParticipantSid=e,this.emit("updated"))}},Js}(),t=function(){if(eo)return Zs;eo=1;const e=rc();return Zs=class extends e{constructor(e,t){super(e,"extension_transcriptions",t),this.on("ready",e=>{e.on("message",e=>{"extension_transcriptions"===e.type&&this.emit("transcription",e)})})}},Zs}(),n=pc(),i=fc(),r=function(){if(xo)return Ao;xo=1;const e=mc();return Ao=class extends e{constructor(){super(),Object.defineProperties(this,{_revision:{value:1,writable:!0}})}update(e){return e.revision<this._revision?this:(this._revision=e.revision,this.enable(e.is_recording))}}}(),s=function(){if($o)return jo;$o=1;const e=G,t=ks(),n=Hi(),{filterObject:i,flatMap:r,difference:s}=Ce(),o=Xn();return jo=class{constructor(e,t,n={}){if(!e||"function"!=typeof e.getStats)throw new Error("StatsMonitor requires a stats source with getStats() method");if(!t)throw new Error("StatsMonitor requires a log instance");this._statsSource=e,this._log=t,this._publishIntervalMs=n.publishIntervalMs||1e4,this._collectionIntervalMs=n.collectionIntervalMs||1e3,this._collectionsPerPublish=Math.floor(this._publishIntervalMs/this._collectionIntervalMs),this._stallThreshold=.5,this._resumeThreshold=5,this._initializeState(),this._startStatsCollection()}_initializeState(){this._movingAverageDeltas=new Map,this._interval=null,this._statsCollectionCount=0,this._iceCandidatePublishToggle=!1,this._hasSeenActivePair=!1,this._lastNetworkType=null,this._lastQualityLimitationReasonByTrackSid=new Map,this._stalledTrackSids=new Set}_startStatsCollection(){this._interval?this._log.warn("StatsMonitor already started"):(this._interval=setInterval(()=>e.__awaiter(this,void 0,void 0,function*(){yield this._collectAndAnalyzeStats()}),this._collectionIntervalMs),this._log.debug("StatsMonitor started"))}_stopStatsCollection(){this._interval&&(clearInterval(this._interval),this._interval=null),this._log.debug("StatsMonitor stopped")}_collectAndAnalyzeStats(){return e.__awaiter(this,void 0,void 0,function*(){try{const e=yield this._statsSource.getStats();this._statsCollectionCount++;const t=this._statsCollectionCount%this._collectionsPerPublish===0;t&&(this._iceCandidatePublishToggle=!this._iceCandidatePublishToggle);const n=t&&this._iceCandidatePublishToggle;this._analyzeStats(e,t,n)}catch(e){}})}_analyzeStats(e,t,n){!e||e instanceof Map&&0===e.size||Array.isArray(e)&&0===e.length||e.forEach((e,i)=>{this._checkNetworkTypeChanges(e),this._checkQualityLimitations(e.localVideoTrackStats),this._checkTrackStalls(e.remoteVideoTrackStats),t&&(this._publishStatsReport(i,e),n&&this._publishActiveIceCandidatePair(i,e))})}_checkNetworkTypeChanges(e){const{activeIceCandidatePair:t}=e;if(!t||!t.localCandidate)return;const n=t.localCandidate.networkType;return n?this._hasSeenActivePair?void(this._lastNetworkType!==n&&(this._log.debug(`Network type changed: ${this._lastNetworkType} -> ${n}`),this._lastNetworkType=n,o.network.typeChanged(n))):(this._hasSeenActivePair=!0,this._lastNetworkType=n,void o.network.typeChanged(n)):void 0}_checkQualityLimitations(e){Array.isArray(e)&&e.forEach(({trackSid:e,qualityLimitationReason:t})=>{if(!e||"string"!=typeof t)return;const n=this._lastQualityLimitationReasonByTrackSid.get(e);n!==t&&(this._log.debug(`Quality limitation reason changed for track ${e}: ${n||"none"} -> ${t}`),this._lastQualityLimitationReasonByTrackSid.set(e,t),o.quality.limitationChanged(e,t))})}_checkTrackStalls(e){Array.isArray(e)&&e.forEach(({trackSid:e,frameRateReceived:t})=>{if(void 0===t)return;const n="number"!=typeof t||isNaN(t)?0:t,i=this._stalledTrackSids.has(e);!i&&n<this._stallThreshold?(this._stalledTrackSids.add(e),this._log.debug(`Track ${e} stalled: frame rate ${n} below threshold ${this._stallThreshold}`),o.track.stalled(e,n,this._stallThreshold)):i&&n>=this._resumeThreshold&&(this._stalledTrackSids.delete(e),this._log.debug(`Track ${e} resumed: frame rate ${n} above threshold ${this._resumeThreshold}`),o.track.resumed(e,n,this._resumeThreshold))})}_addLocalTrackMetrics(e,t){const{framesEncoded:i,packetsSent:r,totalEncodeTime:s,totalPacketSendDelay:o}=t,a=Object.assign({},e),c=`${e.trackSid}+${e.ssrc}`,l=this._movingAverageDeltas.get(c)||new Map;if("number"==typeof s&&"number"==typeof i){const e=l.get("avgEncodeDelay")||new n;e.putSample(1e3*s,i),a.avgEncodeDelay=Math.round(e.get()),l.set("avgEncodeDelay",e)}if("number"==typeof o&&"number"==typeof r){const e=l.get("avgPacketSendDelay")||new n;e.putSample(1e3*o,r),a.avgPacketSendDelay=Math.round(e.get()),l.set("avgPacketSendDelay",e)}return this._movingAverageDeltas.set(c,l),a}_addRemoteTrackMetrics(e,t){const{estimatedPlayoutTimestamp:i,framesDecoded:r,jitterBufferDelay:s,jitterBufferEmittedCount:o,totalDecodeTime:a}=t,c=Object.assign({},e),l=`${e.trackSid}+${e.ssrc}`,d=this._movingAverageDeltas.get(l)||new Map;if("number"==typeof i&&(c.estimatedPlayoutTimestamp=i),"number"==typeof r&&"number"==typeof a){const e=d.get("avgDecodeDelay")||new n;e.putSample(1e3*a,r),c.avgDecodeDelay=Math.round(e.get()),d.set("avgDecodeDelay",e)}if("number"==typeof s&&"number"==typeof o){const e=d.get("avgJitterBufferDelay")||new n;e.putSample(1e3*s,o),c.avgJitterBufferDelay=Math.round(e.get()),d.set("avgJitterBufferDelay",e)}return this._movingAverageDeltas.set(l,d),c}_cleanupMovingAverageDeltas(e){const t=r(["localAudioTrackStats","localVideoTrackStats","remoteAudioTrackStats","remoteVideoTrackStats"],t=>e[t].map(({ssrc:e,trackSid:t})=>`${t}+${e}`));s(Array.from(this._movingAverageDeltas.keys()),t).forEach(e=>this._movingAverageDeltas.delete(e))}_publishStatsReport(e,n){const i=new t(e,n,!0);o.quality.statsReport({audioTrackStats:i.remoteAudioTrackStats.map((e,t)=>this._addRemoteTrackMetrics(e,n.remoteAudioTrackStats[t])),localAudioTrackStats:i.localAudioTrackStats.map((e,t)=>this._addLocalTrackMetrics(e,n.localAudioTrackStats[t])),localVideoTrackStats:i.localVideoTrackStats.map((e,t)=>this._addLocalTrackMetrics(e,n.localVideoTrackStats[t])),peerConnectionId:i.peerConnectionId,videoTrackStats:i.remoteVideoTrackStats.map((e,t)=>this._addRemoteTrackMetrics(e,n.remoteVideoTrackStats[t]))}),this._cleanupMovingAverageDeltas(i)}_publishActiveIceCandidatePair(e,t){const n=this._replaceNullsWithDefaults(t.activeIceCandidatePair,e);o.quality.iceCandidatePair(n)}_replaceNullsWithDefaults(e,t){return(e=Object.assign({availableIncomingBitrate:0,availableOutgoingBitrate:0,bytesReceived:0,bytesSent:0,consentRequestsSent:0,currentRoundTripTime:0,lastPacketReceivedTimestamp:0,lastPacketSentTimestamp:0,nominated:!1,peerConnectionId:t,priority:0,readable:!1,requestsReceived:0,requestsSent:0,responsesReceived:0,responsesSent:0,retransmissionsReceived:0,retransmissionsSent:0,state:"failed",totalRoundTripTime:0,transportId:"",writable:!1},i(e||{},null))).localCandidate=Object.assign({candidateType:"host",deleted:!1,ip:"",port:0,priority:0,protocol:"udp",url:""},i(e.localCandidate||{},null)),e.remoteCandidate=Object.assign({candidateType:"host",ip:"",port:0,priority:0,protocol:"udp",url:""},i(e.remoteCandidate||{},null)),e}cleanup(){this._stopStatsCollection(),this._movingAverageDeltas.clear(),this._lastQualityLimitationReasonByTrackSid.clear(),this._stalledTrackSids.clear()}},jo}(),o=gc(),a=Sc(),c=function(){if(ba)return va;ba=1;const e=rc();return va=class extends e{constructor(e,t){super(e,"track_priority",t),Object.defineProperties(this,{_enqueuedPriorityUpdates:{value:new Map}}),this.on("ready",e=>{Array.from(this._enqueuedPriorityUpdates.keys()).forEach(t=>{e.publish({type:"track_priority",track:t,subscribe:this._enqueuedPriorityUpdates.get(t)})})})}sendTrackPriorityUpdate(e,t,n){if("subscribe"!==t)throw new Error("only subscribe priorities are supported, found: "+t);this._enqueuedPriorityUpdates.set(e,n),this._transport&&this._transport.publish({type:"track_priority",track:e,subscribe:n})}},va}(),l=function(){if(ka)return ya;ka=1;const e=rc();return ya=class extends e{constructor(e,t){super(e,"track_switch_off",t),this.on("ready",e=>{e.on("message",e=>{"track_switch_off"===e.type&&this._setTrackSwitchOffUpdates(e.off||[],e.on||[])})})}_setTrackSwitchOffUpdates(e,t){this.emit("updated",e,t)}},ya}(),d=function(){if(Sa)return wa;Sa=1;const e=rc(),t=ki(),{isDeepEqual:n}=Ce();let i=1;return wa=class extends e{constructor(e,n){super(e,"render_hints",n),Object.defineProperties(this,{_trackSidsToRenderHints:{value:new Map},_responseTimer:{value:new t(()=>{this._sendAllHints(),this._responseTimer.setDelay(2*this._responseTimer.delay)},2e3,!1)}}),this.on("ready",e=>{e.on("message",e=>{this._log.debug("Incoming: ",e),"render_hints"===e.type?this._processHintResults(e&&e.subscriber&&e.subscriber.hints||[]):this._log.warn("Unknown message type: ",e.type)}),this._sendAllHints()})}_sendAllHints(){Array.from(this._trackSidsToRenderHints.keys()).forEach(e=>{const t=this._trackSidsToRenderHints.get(e);t.renderDimensions&&(t.isDimensionDirty=!0),"enabled"in t&&(t.isEnabledDirty=!0)}),this._sendHints()}_processHintResults(e){this._responseTimer.clear(),this._responseTimer.setDelay(2e3),e.forEach(e=>{"OK"!==e.result&&this._log.debug("Server error processing hint:",e)}),this._sendHints()}_sendHints(){if(!this._transport||this._responseTimer.isSet)return;const e=[];if(Array.from(this._trackSidsToRenderHints.keys()).forEach(t=>{const n=this._trackSidsToRenderHints.get(t);if(n.isEnabledDirty||n.isDimensionDirty){const i={track:t};n.isEnabledDirty&&(i.enabled=n.enabled,n.isEnabledDirty=!1),n.isDimensionDirty&&(i.render_dimensions=n.renderDimensions,n.isDimensionDirty=!1),e.push(i)}}),e.length>0){const t={type:"render_hints",subscriber:{id:i++,hints:e}};this._log.debug("Outgoing: ",t),this._transport.publish(t),this._responseTimer.start()}}setTrackHint(e,t){const i=this._trackSidsToRenderHints.get(e)||{isEnabledDirty:!1,isDimensionDirty:!1};"enabled"in t&&i.enabled!==t.enabled&&(i.enabled=!!t.enabled,i.isEnabledDirty=!0),t.renderDimensions&&!n(t.renderDimensions,i.renderDimensions)&&(i.renderDimensions=t.renderDimensions,i.isDimensionDirty=!0),this._trackSidsToRenderHints.set(e,i),this._sendHints()}clearTrackHint(e){this._trackSidsToRenderHints.delete(e)}},wa}(),u=function(){if(Ca)return Ta;Ca=1;const e=rc();let t=1;return Ta=class extends e{constructor(e,t){super(e,"publisher_hints",t),this.on("ready",e=>{this._log.debug("publisher_hints transport ready:",e),e.on("message",e=>{this._log.debug("Incoming: ",e),"publisher_hints"===e.type?e.publisher&&e.publisher.hints&&e.publisher.id&&this._processPublisherHints(e.publisher.hints,e.publisher.id):this._log.warn("Unknown message type: ",e.type)})})}sendTrackReplaced({trackSid:e}){if(!this._transport)return;const n={type:"client_reset",track:e,id:t++};this._log.debug("Outgoing: ",n),this._transport.publish(n)}sendHintResponse({id:e,hints:t}){if(!this._transport)return;const n={type:"publisher_hints",id:e,hints:t};this._log.debug("Outgoing: ",n),this._transport.publish(n)}_processPublisherHints(e,t){try{this.emit("updated",e,t)}catch(e){this._log.error("error processing hints:",e)}}},Ta}(),{constants:{DEFAULT_SESSION_TIMEOUT_SEC:h},createBandwidthProfilePayload:p,defer:f,flatMap:m,oncePerTick:g}=Ce(),{createTwilioError:_}=Jn();function v(e,t){return t.reduce((t,n)=>{const i=e.get(n.trackId);return i?[Object.assign({},n,{trackSid:i})].concat(t):t},[])}function b(e,t){return v(e._published,t)}function y(e,t){const n=new Map(Array.from(e._subscribed.entries()).map(([e,t])=>[t,e]));return v(n,t)}return Pa=class extends o{constructor(o,p,f,_,v){p.options=Object.assign({session_timeout:h},p.options),v=Object.assign({DominantSpeakerSignaling:e,TranscriptionSignaling:t,NetworkQualityMonitor:n,NetworkQualitySignaling:i,RecordingSignaling:r,RemoteParticipantV2:a,TrackPrioritySignaling:c,TrackSwitchOffSignaling:l,bandwidthProfile:null,sessionTimeout:1e3*p.options.session_timeout,statsPublishIntervalMs:1e4,statsCollectionIntervalMs:1e3},v),o.setBandwidthProfile(v.bandwidthProfile);const{options:{signaling_region:b,audio_processors:y=[]}}=p;o.setSignalingRegion(b),y.includes("krisp")&&y.push("rnnoise"),o.setAudioProcessors(y),_.setIceReconnectTimeout(v.sessionTimeout),super(o,p.sid,p.name,v);const k=e=>this._getTrackReceiver(e),w=this._log;Object.defineProperties(this,{_disconnectedParticipantRevisions:{value:new Map},_NetworkQualityMonitor:{value:v.NetworkQualityMonitor},_lastBandwidthProfileRevision:{value:o.bandwidthProfileRevision,writable:!0},_mediaStatesWarningsRevision:{value:0,writable:!0},_networkQualityMonitor:{value:null,writable:!0},_networkQualityConfiguration:{value:o.networkQualityConfiguration},_peerConnectionManager:{value:_},_published:{value:new Map},_publishedRevision:{value:0,writable:!0},_RemoteParticipantV2:{value:v.RemoteParticipantV2},_subscribed:{value:new Map},_subscribedRevision:{value:0,writable:!0},_subscriptionFailures:{value:new Map},_dominantSpeakerSignaling:{value:new v.DominantSpeakerSignaling(k,{log:w})},_transcriptionSignaling:{value:new v.TranscriptionSignaling(k,{log:w})},_networkQualitySignaling:{value:new v.NetworkQualitySignaling(k,o.networkQualityConfiguration,{log:w})},_renderHintsSignaling:{value:new d(k,{log:w})},_publisherHintsSignaling:{value:new u(k,{log:w})},_trackPrioritySignaling:{value:new v.TrackPrioritySignaling(k,{log:w})},_trackSwitchOffSignaling:{value:new v.TrackSwitchOffSignaling(k,{log:w})},_pendingSwitchOffStates:{value:new Map},_statsMonitor:{value:v.eventObserver&&v.insights?new s(this,w,{publishIntervalMs:v.statsPublishIntervalMs,collectionIntervalMs:v.statsCollectionIntervalMs}):null},_transport:{value:f},_trackReceiverDeferreds:{value:new Map},mediaRegion:{enumerable:!0,value:p.options.media_region||null}}),this._initTrackSwitchOffSignaling(),this._initDominantSpeakerSignaling(),this._initTranscriptionSignaling(),this._initNetworkQualityMonitorSignaling(),this._initPublisherHintSignaling(),function(e,t){const n=g(()=>{e._publishNewLocalParticipantState()}),i=g(()=>{const n=m(t.tracks,e=>e.trackTransceiver);e._peerConnectionManager.setTrackSenders(n)});t.on("trackAdded",i),t.on("trackRemoved",i),t.on("updated",n),e.on("stateChanged",function r(s){"disconnected"===s&&(t.removeListener("trackAdded",i),t.removeListener("trackRemoved",i),t.removeListener("updated",n),e.removeListener("stateChanged",r),t.disconnect())}),e.on("signalingConnectionStateChanged",()=>{const{localParticipant:t,signalingConnectionState:n}=e,{identity:i,sid:r}=t;switch(n){case"connected":t.connect(r,i);break;case"reconnecting":t.reconnecting()}})}(this,o),function(e,t){t.on("description",function(t){e._publishPeerConnectionState(t)}),t.dequeue("description"),t.on("candidates",function(t){e._publishPeerConnectionState(t)}),t.dequeue("candidates"),t.on("trackAdded",e._addTrackReceiver.bind(e)),t.dequeue("trackAdded"),t.getTrackReceivers().forEach(e._addTrackReceiver,e),t.on("connectionStateChanged",()=>{e.emit("connectionStateChanged")}),t.on("iceConnectionStateChanged",()=>{e.emit("iceConnectionStateChanged"),"failed"===e.iceConnectionState&&(null!==e.localParticipant.networkQualityLevel&&e.localParticipant.setNetworkQualityLevel(0),e.participants.forEach(e=>{null!==e.networkQualityLevel&&e.setNetworkQualityLevel(0)}))})}(this,_),function(e,t){t.on("message",e._update.bind(e)),t.on("stateChanged",function n(i,r){"disconnected"===i&&("disconnected"!==e.state&&e._disconnect(r),t.removeListener("stateChanged",n)),e.emit("signalingConnectionStateChanged")})}(this,f),this._statsMonitor&&this.on("stateChanged",e=>{"disconnected"===e&&this._statsMonitor&&this._statsMonitor.cleanup()}),this._update(p),this._peerConnectionManager.setEffectiveAdaptiveSimulcast(this._publisherHintsSignaling.isSetup)}get connectionState(){return this._peerConnectionManager.connectionState}get signalingConnectionState(){return"syncing"===this._transport.state?"reconnecting":this._transport.state}get iceConnectionState(){return this._peerConnectionManager.iceConnectionState}_deleteTrackReceiverDeferred(e){return this._trackReceiverDeferreds.delete(e)}_getOrCreateTrackReceiverDeferred(e){const t=this._trackReceiverDeferreds.get(e)||f(),n=this._peerConnectionManager.getTrackReceivers().find(t=>t.id===e&&"ended"!==t.readyState);return n?t.resolve(n):this._trackReceiverDeferreds.set(e,t),t}_addTrackReceiver(e){return this._getOrCreateTrackReceiverDeferred(e.id).resolve(e),this}_disconnect(e){const t=super._disconnect.call(this,e);return t&&(this._teardownNetworkQualityMonitor(),this._transport.disconnect(),this._peerConnectionManager.close()),this.localParticipant.tracks.forEach(t=>{t.publishFailed(e||new Error("LocalParticipant disconnected"))}),t}_getTrackReceiver(e){return this._getOrCreateTrackReceiverDeferred(e).promise.then(t=>(this._deleteTrackReceiverDeferred(e),t))}_getInitialTrackSwitchOffState(e){const t=this._pendingSwitchOffStates.get(e)||!1;return this._pendingSwitchOffStates.delete(e),t&&this._log.warn(`[${e}] was initially switched off! `),t}_getTrackSidsToTrackSignalings(){const e=m(this.participants,e=>Array.from(e.tracks));return new Map(e)}_getOrCreateRemoteParticipant(e){const t=this._RemoteParticipantV2;let n=this.participants.get(e.sid);const i=this;return n||(n=new t(e,e=>this._getInitialTrackSwitchOffState(e),(e,t)=>this._trackPrioritySignaling.sendTrackPriorityUpdate(e,"subscribe",t),(e,t)=>this._renderHintsSignaling.setTrackHint(e,t),e=>this._renderHintsSignaling.clearTrackHint(e)),n.on("stateChanged",function e(t){"disconnected"===t&&(n.removeListener("stateChanged",e),i.participants.delete(n.sid),i._disconnectedParticipantRevisions.set(n.sid,n.revision))}),this.connectParticipant(n)),n}_getState(){return{participant:this.localParticipant.getState()}}_maybeAddBandwidthProfile(e){const{bandwidthProfile:t,bandwidthProfileRevision:n}=this.localParticipant;return t&&this._lastBandwidthProfileRevision<n?(this._lastBandwidthProfileRevision=n,Object.assign({bandwidth_profile:p(t)},e)):e}_publishNewLocalParticipantState(){this._transport.publish(this._maybeAddBandwidthProfile(this._getState()))}_publishPeerConnectionState(e){this._transport.publish(Object.assign({peer_connections:[e]},this._getState()))}_update(e){if(e.subscribed&&e.subscribed.revision>this._subscribedRevision){this._subscribedRevision=e.subscribed.revision,e.subscribed.tracks.forEach(e=>{e.id?(this._subscriptionFailures.delete(e.sid),this._subscribed.set(e.sid,e.id)):e.error&&!this._subscriptionFailures.has(e.sid)&&this._subscriptionFailures.set(e.sid,e.error)});const t=new Set(e.subscribed.tracks.filter(e=>!!e.id).map(e=>e.sid));this._subscribed.forEach((e,n)=>{t.has(n)||this._subscribed.delete(n)})}const t=new Set;return(e.participants||[]).forEach(e=>{if(e.sid===this.localParticipant.sid)return;const n=this._disconnectedParticipantRevisions.get(e.sid);if(n&&e.revision<=n)return;n&&this._disconnectedParticipantRevisions.delete(e.sid);const i=this._getOrCreateRemoteParticipant(e);i.update(e),t.add(i)}),"synced"===e.type&&this.participants.forEach(e=>{t.has(e)||e.disconnect()}),function(e){const t=e._getTrackSidsToTrackSignalings();e._subscriptionFailures.forEach((n,i)=>{const r=t.get(i);r&&(e._subscriptionFailures.delete(i),r.subscribeFailed(_(n.code,n.message)))}),t.forEach(t=>{const n=e._subscribed.get(t.sid);(!n||t.isSubscribed&&t.trackTransceiver.id!==n)&&t.setTrackTransceiver(null),n&&e._getTrackReceiver(n).then(e=>t.setTrackTransceiver(e))})}(this),e.peer_connections&&this._peerConnectionManager.update(e.peer_connections,"synced"===e.type),e.recording&&this.recording.update(e.recording),e.published&&e.published.revision>this._publishedRevision&&(this._publishedRevision=e.published.revision,e.published.tracks.forEach(e=>{e.sid&&this._published.set(e.id,e.sid)}),this.localParticipant.update(e.published)),e.participant&&this.localParticipant.connect(e.participant.sid,e.participant.identity),[this._dominantSpeakerSignaling,this._transcriptionSignaling,this._networkQualitySignaling,this._trackPrioritySignaling,this._trackSwitchOffSignaling,this._renderHintsSignaling,this._publisherHintsSignaling].forEach(t=>{const n=t.channel;!t.isSetup&&e.media_signaling&&e.media_signaling[n]&&e.media_signaling[n].transport&&"data-channel"===e.media_signaling[n].transport.type&&t.setup(e.media_signaling[n].transport.label)}),"warning"===e.type&&e.states&&e.states.revision>this._mediaStatesWarningsRevision&&(this._mediaStatesWarningsRevision=e.states.revision,this.localParticipant.updateMediaStates(e.states)),this}_initPublisherHintSignaling(){this._publisherHintsSignaling.on("updated",(e,t)=>{Promise.all(e.map(e=>this.localParticipant.setPublisherHint(e.track,e.encodings).then(t=>({track:e.track,result:t})))).then(e=>{this._publisherHintsSignaling.sendHintResponse({id:t,hints:e})})});const e=e=>{"video"===e.kind&&e.trackTransceiver.on("replaced",()=>{this._publisherHintsSignaling.sendTrackReplaced({trackSid:e.sid})})};Array.from(this.localParticipant.tracks.values()).forEach(t=>e(t)),this.localParticipant.on("trackAdded",t=>e(t))}_initTrackSwitchOffSignaling(){this._trackSwitchOffSignaling.on("updated",(e,t)=>{try{this._log.debug("received trackSwitch: ",{tracksOn:t,tracksOff:e});const n=new Map;t.forEach(e=>n.set(e,!0)),e.forEach(e=>{n.get(e)&&this._log.warn(`${e} is DUPLICATED in both tracksOff and tracksOn list`),n.set(e,!1)}),this.participants.forEach(e=>{e.tracks.forEach(e=>{const t=n.get(e.sid);void 0!==t&&(e.setSwitchedOff(!t),n.delete(e.sid))})}),n.forEach((e,t)=>this._pendingSwitchOffStates.set(t,!e))}catch(e){this._log.error("error processing track switch off:",e)}})}_initDominantSpeakerSignaling(){this._dominantSpeakerSignaling.on("updated",()=>this.setDominantSpeaker(this._dominantSpeakerSignaling.loudestParticipantSid))}_initTranscriptionSignaling(){this._transcriptionSignaling.on("transcription",e=>{this.emit("transcription",e)})}_initNetworkQualityMonitorSignaling(){this._networkQualitySignaling.on("ready",()=>{const e=new this._NetworkQualityMonitor(this._peerConnectionManager,this._networkQualitySignaling);this._networkQualityMonitor=e,e.on("updated",()=>{"failed"!==this.iceConnectionState&&(this.localParticipant.setNetworkQualityLevel(e.level,e.levels),this.participants.forEach(t=>{const n=e.remoteLevels.get(t.sid);n&&t.setNetworkQualityLevel(n.level,n)}))}),e.start()}),this._networkQualitySignaling.on("teardown",()=>this._teardownNetworkQualityMonitor())}_teardownNetworkQualityMonitor(){this._networkQualityMonitor&&(this._networkQualityMonitor.stop(),this._networkQualityMonitor=null)}getStats(){return this._peerConnectionManager.getStats().then(e=>new Map(Array.from(e).map(([e,t])=>[e,Object.assign({},t,{localAudioTrackStats:b(this,t.localAudioTrackStats),localVideoTrackStats:b(this,t.localVideoTrackStats),remoteAudioTrackStats:y(this,t.remoteAudioTrackStats),remoteVideoTrackStats:y(this,t.remoteVideoTrackStats)})])))}},Pa}function Cc(){if(La)return Oa;La=1;const e=yi(),t=Si(),n=Cs(),{reconnectBackoffConfig:i}=ae(),r=ki(),{SDK_NAME:s,SDK_VERSION:o,SDP_FORMAT:a}=ae(),{createBandwidthProfilePayload:c,createMediaSignalingPayload:l,createMediaWarningsPayload:d,createSubscribePayload:u,getUserAgent:h,isNonArrayObject:p}=Ce(),{createTwilioError:f,RoomCompletedError:m,SignalingConnectionError:g,SignalingServerBusyError:_}=Jn(),v={connecting:["connected","disconnected"],connected:["disconnected","syncing"],syncing:["connected","disconnected"],disconnected:[]};function b(e){return Array.from(e.reduce((e,t)=>{const n=e.get(t.id)||t;return(!n.description&&t.description||n.description&&t.description&&t.description.revision>n.description.revision)&&(n.description=t.description),(!n.ice&&t.ice||n.ice&&t.ice&&t.ice.revision>n.ice.revision)&&(n.ice=t.ice),e.set(n.id,n),e},new Map).values())}return Oa=class extends e{constructor(e,r,s,o,a,c){c=Object.assign({Backoff:n,TwilioConnection:t,iceServers:null,trackPriority:!0,trackSwitchOff:!0,renderHints:!0,userAgent:h()},c),super("connecting",v),Object.defineProperties(this,{_accessToken:{value:r},_adaptiveSimulcast:{value:c.adaptiveSimulcast},_automaticSubscription:{value:c.automaticSubscription},_bandwidthProfile:{value:c.bandwidthProfile},_dominantSpeaker:{value:c.dominantSpeaker},_receiveTranscriptions:{value:c.receiveTranscriptions},_eventObserver:{value:c.eventObserver,writable:!1},_renderHints:{value:c.renderHints},_iceServersStatus:{value:Array.isArray(c.iceServers)?"overrode":"acquire"},_localParticipant:{value:s},_name:{value:e},_networkQuality:{value:p(c.networkQuality)||c.networkQuality},_notifyWarnings:{value:c.notifyWarnings},_options:{value:c},_peerConnectionManager:{value:o},_sessionTimer:{value:null,writable:!0},_sessionTimeoutMS:{value:0,writable:!0},_reconnectBackoff:{value:new c.Backoff(i)},_session:{value:null,writable:!0},_trackPriority:{value:c.trackPriority},_trackSwitchOff:{value:c.trackSwitchOff},_twilioConnection:{value:null,writable:!0},_updatesReceived:{value:[]},_updatesToSend:{value:[]},_userAgent:{value:c.userAgent},_wsServer:{value:a}}),function(e){function n(){if("disconnected"===e.state)return;e._twilioConnection&&e._twilioConnection.removeListener("message",r);const{_iceServersStatus:t,_options:n,_wsServer:s,state:o}=e,{TwilioConnection:a}=n,c=new a(s,Object.assign({helloBody:"connecting"===o&&"acquire"===t?e._createIceMessage():e._createConnectOrSyncOrDisconnectMessage()},n));c.once("close",e=>{e===a.CloseReason.LOCAL?i():i(new Error(e))}),c.on("message",r),e._twilioConnection=c}function i(i){if("disconnected"===e.state)return;if(!i)return void e.disconnect();const r=e._getReconnectTimer();if(!r){const n=i.message===t.CloseReason.BUSY?new _:new g;return void e.disconnect(n)}"connected"===e.state&&e.preempt("syncing"),r.then(n)}function r(t){if("disconnected"!==e.state)if("error"!==t.type)switch(e.state){case"connected":switch(t.type){case"connected":case"synced":case"update":case"warning":return void e.emit("message",t);case"disconnected":return void e.disconnect("completed"===t.status?new m:null);default:return}case"connecting":switch(t.type){case"iced":return void e._options.onIced(t.ice_servers).then(()=>{e._sendConnectOrSyncOrDisconnectMessage()});case"connected":return e._setSession(t.session,t.options.session_timeout),e.emit("connected",t),void e.preempt("connected");case"synced":case"update":return void e._updatesReceived.push(t);case"disconnected":return void e.disconnect("completed"===t.status?new m:null);default:return}case"syncing":switch(t.type){case"connected":case"update":return void e._updatesReceived.push(t);case"synced":return e._clearReconnectTimer(),e.emit("message",t),void e.preempt("connected");case"disconnected":return void e.disconnect("completed"===t.status?new m:null);default:return}default:return}else e.disconnect(f(t.code,t.message))}e.on("stateChanged",function t(n){switch(n){case"connected":{const t=e._updatesToSend.splice(0);return t.length&&e.publish(function(e){return e.reduce((e,t)=>((!e.participant&&t.participant||e.participant&&t.participant&&t.participant.revision>e.participant.revision)&&(e.participant=t.participant),!e.peer_connections&&t.peer_connections?e.peer_connections=b(t.peer_connections):e.peer_connections&&t.peer_connections&&(e.peer_connections=b(e.peer_connections.concat(t.peer_connections))),e),{})}(t)),void e._updatesReceived.splice(0).forEach(t=>e.emit("message",t))}case"disconnected":return e._twilioConnection.removeListener("message",r),void e.removeListener("stateChanged",t);default:return}});const{_options:s,_iceServersStatus:o}=e,{iceServers:a,onIced:c}=s;"overrode"===o?c(a).then(n):n()}(this)}_createConnectOrSyncOrDisconnectMessage(){if("connected"===this.state)return null;if("disconnected"===this.state)return{session:this._session,type:"disconnect",version:2};const e={connecting:"connect",syncing:"sync"}[this.state],t={name:this._name,participant:this._localParticipant.getState(),peer_connections:this._peerConnectionManager.getStates(),type:e,version:2};return"connect"===t.type?(t.ice_servers=this._iceServersStatus,t.publisher={name:s,sdk_version:o,user_agent:this._userAgent},this._bandwidthProfile&&(t.bandwidth_profile=c(this._bandwidthProfile)),this._notifyWarnings&&(t.participant.media_warnings=d(this._notifyWarnings)),t.media_signaling=l(this._dominantSpeaker,this._networkQuality,this._trackPriority,this._trackSwitchOff,this._adaptiveSimulcast,this._renderHints,this._receiveTranscriptions),t.subscribe=u(this._automaticSubscription),t.format=a,t.token=this._accessToken):"sync"===t.type?(t.session=this._session,t.token=this._accessToken):"update"===t.type&&(t.session=this._session),t}_createIceMessage(){return{edge:"roaming",token:this._accessToken,type:"ice",version:1}}_sendConnectOrSyncOrDisconnectMessage(){const e=this._createConnectOrSyncOrDisconnectMessage();e&&this._twilioConnection.sendMessage(e)}disconnect(e){return"disconnected"!==this.state&&(this.preempt("disconnected",null,[e]),this._sendConnectOrSyncOrDisconnectMessage(),this._twilioConnection.close(),!0)}publish(e){switch(this.state){case"connected":return this._twilioConnection.sendMessage(Object.assign({session:this._session,type:"update",version:2},e)),!0;case"connecting":case"syncing":return this._updatesToSend.push(e),!0;default:return!1}}publishEvent(e,t,n,i){this._eventObserver.emit("event",{group:e,name:t,level:n,payload:i})}sync(){return"connected"===this.state&&(this.preempt("syncing"),this._sendConnectOrSyncOrDisconnectMessage(),!0)}_setSession(e,t){this._session=e,this._sessionTimeoutMS=1e3*t}_getReconnectTimer(){return 0===this._sessionTimeoutMS?null:(this._sessionTimer||(this._sessionTimer=new r(()=>{this._sessionTimer&&(this._sessionTimeoutMS=0)},this._sessionTimeoutMS)),new Promise(e=>{this._reconnectBackoff.backoff(e)}))}_clearReconnectTimer(){this._reconnectBackoff.reset(),this._sessionTimer&&(this._sessionTimer.clear(),this._sessionTimer=null)}},Oa}function Pc(){if($a)return ja;$a=1;const e=function(){if(xa)return Aa;xa=1;const e=kc();return Aa=class extends e{constructor(e,t,n){const i=e.clone();"data"!==e.kind&&(i.track.enabled=e.track.enabled);const r="data"===(e=i).kind||e.track.enabled;super(t,e.kind,r,n),this.setTrackTransceiver(e),Object.defineProperties(this,{_updatedPriority:{value:n,writable:!0},id:{enumerable:!0,value:e.id}})}get updatedPriority(){return this._updatedPriority}enable(e){return e="boolean"!=typeof e||e,this.trackTransceiver.track.enabled=e,super.enable(e)}publishFailed(e){return function(e,t){return null===e._sid&&!e._error&&(e._error=t,!0)}(this,e)&&this.emit("updated"),this}setPriority(e){return this._updatedPriority!==e&&(this._updatedPriority=e,this.emit("updated")),this}setSid(e){return this._error?this:super.setSid.call(this,e)}stop(){this.trackTransceiver.stop()}},Aa}(),t=Te(),n=Jn().createTwilioError;return ja=class extends e{constructor(e,t,n,i,r){super(e,t,n),Object.defineProperties(this,{_log:{value:r.log.createLog("default",this)},_mediaStates:{value:{recordings:null},writable:!0},_noiseCancellationVendor:{value:i}})}getState(){const e={enabled:this.isEnabled,id:this.id,kind:this.kind,name:this.name,priority:this.updatedPriority};return this._noiseCancellationVendor&&(e.audio_processor=this._noiseCancellationVendor),e}toString(){return`[LocalTrackPublicationV2: ${this.sid}]`}update(e){switch(e.state){case"ready":this.setSid(e.sid);break;case"failed":{const t=e.error;this.publishFailed(n(t.code,t.message));break}}return this}updateMediaStates(e){if(!e||!e.recordings||this._mediaStates.recordings===e.recordings)return this;switch(this._mediaStates.recordings=e.recordings,this._mediaStates.recordings){case"OK":this._log.info("Warnings have cleared."),this.emit("warningsCleared");break;case"NO_MEDIA":this._log.warn("Recording media lost."),this.emit("warning",t.recordingMediaLost);break;default:this._log.warn(`Unknown media state detected: ${this._mediaStates.recordings}`)}return this}},ja}function Ec(){if(Va)return Na;Va=1;const e=function(){if(Da)return Ma;Da=1;const e=yc();return Ma=class extends e{constructor(){super(),Object.defineProperties(this,{_publicationsToTrackSenders:{value:new Map},_trackSendersToPublications:{value:new Map}})}addTrack(e,t,n,i=null){const r=this._createLocalTrackPublicationSignaling(e,t,n,i);return this._trackSendersToPublications.set(e,r),this._publicationsToTrackSenders.set(r,e),super.addTrack(r),this}getPublication(e){return this._trackSendersToPublications.get(e)||null}getSender(e){return this._publicationsToTrackSenders.get(e)||null}removeTrack(e){const t=this._trackSendersToPublications.get(e);return t?(this._trackSendersToPublications.delete(e),this._publicationsToTrackSenders.delete(t),super.removeTrack(t)&&t.stop(),t):null}},Ma}(),t=Pc(),{DEFAULT_LOG_LEVEL:n}=ae(),i=ce(),{buildLogLevels:r,isDeepEqual:s}=Ce();return Na=class extends e{constructor(e,s,o){o=Object.assign({logLevel:n,LocalTrackPublicationV2:t},o),super();const a=r(o.logLevel);Object.defineProperties(this,{_bandwidthProfile:{value:null,writable:!0},_bandwidthProfileRevision:{value:0,writable:!0},_encodingParameters:{value:e},_removeListeners:{value:new Map},_LocalTrackPublicationV2:{value:o.LocalTrackPublicationV2},_log:{value:o.log?o.log.createLog("default",this):new i("default",this,a,o.loggerName)},_publishedRevision:{writable:!0,value:0},_revision:{writable:!0,value:1},_signalingRegion:{value:null,writable:!0},audioProcessors:{value:[],writable:!0},bandwidthProfile:{enumerable:!0,get(){return this._bandwidthProfile}},bandwidthProfileRevision:{enumerable:!0,get(){return this._bandwidthProfileRevision}},networkQualityConfiguration:{enumerable:!0,value:s},revision:{enumerable:!0,get(){return this._revision}},signalingRegion:{enumerable:!0,get(){return this._signalingRegion}}})}toString(){return`[LocalParticipantSignaling: ${this.sid}]`}setSignalingRegion(e){this._signalingRegion||(this._signalingRegion=e)}setBandwidthProfile(e){s(this._bandwidthProfile,e)||(this._bandwidthProfile=JSON.parse(JSON.stringify(e)),this._bandwidthProfileRevision++,this.didUpdate())}setAudioProcessors(e){this.audioProcessors=e}getParameters(){return this._encodingParameters}setParameters(e){return this._encodingParameters.update(e),this}update(e){return this._publishedRevision>=e.revision||(this._publishedRevision=e.revision,e.tracks.forEach(function(e){const t=this.tracks.get(e.id);t&&t.update(e)},this)),this}updateMediaStates(e){return e&&e.tracks?(Array.from(this.tracks.values()).forEach(t=>{const n=e.tracks[t.sid];n&&t.updateMediaStates(n)}),this):this}_createLocalTrackPublicationSignaling(e,t,n,i){return new this._LocalTrackPublicationV2(e,t,n,i,{log:this._log})}addTrack(e,t,n,i){super.addTrack(e,t,n,i);const r=this.getPublication(e);let{isEnabled:s,updatedPriority:o}=r;const a=()=>{s===r.isEnabled&&o===r.updatedPriority||(this.didUpdate(),s=r.isEnabled,o=r.updatedPriority)};return r.on("updated",a),this._removeListener(r),this._removeListeners.set(r,()=>r.removeListener("updated",a)),this.didUpdate(),this}_removeListener(e){const t=this._removeListeners.get(e);t&&t()}getState(){return{revision:this.revision,tracks:Array.from(this.tracks.values()).map(e=>e.getState())}}didUpdate(){this._revision++,this.emit("updated")}removeTrack(e){const t=super.removeTrack(e);return t&&(e.removeClone(t.trackTransceiver),this._removeListener(t),this.didUpdate()),t}setNetworkQualityConfiguration(e){this.networkQualityConfiguration.update(e)}setPublisherHint(e,t){const n=Array.from(this.tracks.values()).find(t=>t.sid===e);return n?n.trackTransceiver.setPublisherHint(t):(this._log.warn(`track:${e} not found`),Promise.resolve("UNKNOWN_TRACK"))}},Na}function Oc(){if(Ha)return Ua;Ha=1;const e=function(){if(Ia)return Ra;Ia=1;const e=zi(),t=ic(),n=Tc(),i=Cc(),{SignalingConnectionDisconnectedError:r,SignalingIncomingMessageInvalidError:s}=Jn(),{flatMap:o,createRoomConnectingEventPayload:a}=Ce();return Ra=function(c,l,d,u,h,p){p=Object.assign({PeerConnectionManager:t,RoomV2:n,Transport:i},p);const f=h.video[0]&&!0===h.video[0].adaptiveSimulcast,{PeerConnectionManager:m,RoomV2:g,Transport:_,iceServers:v,log:b}=p,y=new m(u,h,p),k=o(d.tracks,e=>[e.trackTransceiver]);y.setTrackSenders(k);const w=new Error("Canceled");let S;const T=new e((e,t,n)=>{const{automaticSubscription:i,bandwidthProfile:o,dominantSpeaker:u,receiveTranscriptions:h,environment:m,eventObserver:k,loggerName:T,logLevel:C,name:P,networkMonitor:E,networkQuality:O,notifyWarnings:L,realm:R,sdpSemantics:I}=p,M=!!o,D=!!o,A=!!o&&("disabled"!==p.clientTrackSwitchOffControl||"disabled"!==p.contentPreferencesMode),x=Object.assign({adaptiveSimulcast:f,automaticSubscription:i,dominantSpeaker:u,receiveTranscriptions:h,environment:m,eventObserver:k,loggerName:T,logLevel:C,networkMonitor:E,networkQuality:O,notifyWarnings:L,iceServers:v,onIced:e=>n()?(t(w),Promise.reject(w)):(b.debug("Got ICE servers:",e),p.iceServers=e,y.setConfiguration(p),y.createAndOffer().then(()=>{if(n())throw t(w),w;b.debug("createAndOffer() succeeded."),y.dequeue("description")}).catch(e=>{throw b.error("createAndOffer() failed:",e),t(e),e})),realm:R,renderHints:A,sdpSemantics:I,trackPriority:M,trackSwitchOff:D},o?{bandwidthProfile:o}:{});S=new _(P,c,d,y,l,x);const j=a(p);k.emit("event",j),S.once("connected",i=>{if(b.debug("Transport connected:",i),n())return void t(w);const{participant:r}=i;r?e(new g(d,i,S,y,p)):t(new s)}),S.once("stateChanged",(e,n)=>{"disconnected"===e?(S=null,t(n||new r)):b.debug("Transport state changed:",e)})},()=>{S&&(S.disconnect(),S=null)});return T.catch(()=>{S&&(S.disconnect(),S=null),y.close()}),T},Ra}(),t=Ec(),n=function(){if(Ba)return Fa;Ba=1;const e=yc(),t=gc(),n=yi(),i={closed:["opening"],opening:["closed","open"],open:["closed","closing"],closing:["closed","open"]};return Fa=class extends n{constructor(){super("closed",i)}_close(e){return this.transition("closing",e),this.transition("closed",e),Promise.resolve(this)}_connect(e,n,i,r,s){e.connect("PA00000000000000000000000000000000","test");const o=Promise.resolve(new t(e,"RM00000000000000000000000000000000",s));return o.cancel=function(){},o}_open(e){return this.transition("opening",e),this.transition("open",e),Promise.resolve(this)}close(){return this.bracket("close",e=>{switch(this.state){case"closed":return this;case"open":return this._close(e);default:throw new Error(`Unexpected Signaling state "${this.state}"`)}})}connect(e,t,n,i,r){const s=this;return this.bracket("connect",function o(a){switch(s.state){case"closed":return s._open(a).then(o.bind(null,a));case"open":return s.releaseLockCompletely(a),s._connect(e,t,n,i,r);default:throw new Error(`Unexpected Signaling state "${s.state}"`)}})}createLocalParticipantSignaling(){return new e}open(){return this.bracket("open",e=>{switch(this.state){case"closed":return this._open(e);case"open":return this;default:throw new Error(`Unexpected Signaling state "${this.state}"`)}})}}}();return Ua=class extends n{constructor(t,n){n=Object.assign({createCancelableRoomSignalingPromise:e},n),super(),Object.defineProperties(this,{_createCancelableRoomSignalingPromise:{value:n.createCancelableRoomSignalingPromise},_options:{value:n},_wsServer:{value:t}})}_connect(e,t,n,i,r){return r=Object.assign({},this._options,r),this._createCancelableRoomSignalingPromise.bind(null,t,this._wsServer,e,n,i,r)}createLocalParticipantSignaling(e,n){return new t(e,n)}}}function Lc(){if(qa)return Wa;qa=1;const{guessBrowser:e,guessBrowserVersion:t,isCodecSupported:n}=pe(),i=function(){if(Vi)return Ni;Vi=1;const e=zi();return Ni=function(t,n,i,r){let s;const o=new Error("Canceled");return new e(function(a,c,l){let d;t(function(t){return l()?e.reject(o):(d=n(t),i(d).then(function(e){if(l())throw o;return s=e(),s}))}).then(function(e){if(l())throw e.disconnect(),o;a(r(d,e))}).catch(function(e){c(e)})},function(){s&&s.cancel()})}}(),r=function(){if(Bi)return Fi;Bi=1;const e=xe().EventEmitter;return Fi=class extends e{constructor(e,t){super(),e=Object.assign({maxAudioBitrate:null,maxVideoBitrate:null},e),Object.defineProperties(this,{maxAudioBitrate:{value:e.maxAudioBitrate,writable:!0},maxVideoBitrate:{value:e.maxVideoBitrate,writable:!0},adaptiveSimulcast:{value:t}})}toJSON(){return{maxAudioBitrate:this.maxAudioBitrate,maxVideoBitrate:this.maxVideoBitrate}}update(e){e=Object.assign({maxAudioBitrate:this.maxAudioBitrate,maxVideoBitrate:this.maxVideoBitrate},e),["maxAudioBitrate","maxVideoBitrate"].reduce((t,n)=>(this[n]!==e[n]&&(this[n]=e[n],t=!0),t),!1)&&this.emit("changed")}}}(),s=_s(),o=qi(),a=Or?Er:(Or=1,Er=class{constructor(){Object.defineProperties(this,{_connected:{writable:!0,value:!0}})}connect(){}disconnect(){return!!this._connected&&(this._connected=!1,!0)}publish(){return this._connected}}),{LocalAudioTrack:c,LocalDataTrack:l,LocalVideoTrack:d}=Bn(),u=function(){if(Rr)return Lr;Rr=1;const{EventEmitter:e}=xe(),{DEFAULT_NQ_LEVEL_LOCAL:t,DEFAULT_NQ_LEVEL_REMOTE:n,MAX_NQ_LEVEL:i}=ae(),{inRange:r}=Ce();return Lr=class extends e{constructor(e){super(),e=Object.assign({local:t,remote:n},e),Object.defineProperties(this,{local:{value:r(e.local,t,i)?e.local:t,writable:!0},remote:{value:r(e.remote,n,i)?e.remote:n,writable:!0}})}update(e){e=Object.assign({local:this.local,remote:this.remote},e),[["local",t,3],["remote",n,3]].forEach(([t,n,i])=>{this[t]="number"==typeof e[t]&&r(e[t],n,i)?e[t]:n})}}}(),h=Ts(),p=Oc(),{asLocalTrack:f,buildLogLevels:m,createRoomConnectedEventPayload:g,filterObject:_,isNonArrayObject:v}=Ce(),{DEFAULT_ENVIRONMENT:b,DEFAULT_LOG_LEVEL:y,DEFAULT_LOGGER_NAME:k,DEFAULT_REALM:w,DEFAULT_REGION:S,WS_SERVER:T,SDK_NAME:C,SDK_VERSION:P,typeErrors:E}=ae(),O=zi(),L=Wi(),R=ce(),{validateBandwidthProfile:I}=ds(),M=Xn(),D="safari"===e()&&t();let A=0,x=!1,j=!1;if(D){const{major:e,minor:t}=D;j=e<12||12===e&&t<1}const $=new Set([{didWarn:!1,shouldDelete:!0,name:"abortOnIceServersTimeout"},{didWarn:!1,shouldDelete:!0,name:"dscpTagging",newName:"enableDscp"},{didWarn:!1,shouldDelete:!0,name:"iceServersTimeout"},{didWarn:!1,shouldDelete:!1,name:"eventListener",newName:"Video.Logger"},{didWarn:!1,shouldDelete:!1,name:"logLevel",newName:"Video.Logger"}]),N=new Set([{didWarn:!1,shouldDelete:!1,name:"maxTracks",newName:"bandwidthProfile.video.clientTrackSwitchOffControl"},{didWarn:!1,shouldDelete:!1,name:"renderDimensions",newName:"bandwidthProfile.video.contentPreferencesMode"}]);function V(e,t,n){n.forEach(n=>{const{didWarn:i,name:r,newName:s,shouldDelete:o}=n;r in e&&void 0!==e[r]&&(s&&o&&(e[s]=e[r]),o&&delete e[r],i||["error","off"].includes(t.level)||(t.warn(`The ConnectOptions "${r}" is ${s?`deprecated and scheduled for removal. Please use "${s}" instead.`:"no longer applicable and will be ignored."}`),n.didWarn=!0))})}function F(e,t,n,i,r,s){const o=e.createLocalParticipantSignaling(n,i);return t.debug("Creating a new LocalParticipant:",o),new r.LocalParticipant(o,s,r)}function B(e,t,n){const i=new h(t,n,e),r=e.log;return r.debug("Creating a new Room:",i),n.on("stateChanged",function e(t){"disconnected"===t&&(r.info("Disconnected from Room:",i.toString()),n.removeListener("stateChanged",e))}),i}function U(e,t,n,i,r,s){return t.log.debug("Creating a new RoomSignaling"),n.connect(s._signaling,e,i,r,t)}function H(e,t){const n=e.log;return e.shouldStopLocalTracks=!e.tracks,e.shouldStopLocalTracks?n.info("LocalTracks were not provided, so they will be acquired automatically before connecting to the Room. LocalTracks will be released if connecting to the Room fails or if the Room is disconnected"):(n.info("Getting LocalTracks"),n.debug("Options:",e)),e.createLocalTracks(e).then(function(i){const r=t(i);return r.catch(function(){e.shouldStopLocalTracks&&(n.info("The automatically acquired LocalTracks will now be stopped"),i.forEach(e=>{e.stop()}))}),r})}function W(e){const t="string"==typeof e?{codec:e}:e;switch(t.codec.toLowerCase()){case"opus":return Object.assign({dtx:!0},t);case"vp8":return Object.assign({simulcast:!1},t);default:return t}}return Wa=function(e,t){if(void 0===t&&(t={}),!v(t))return O.reject(E.INVALID_TYPE("options","object"));const h=t.Log||R,D=t.loggerName||k,q=t.logLevel||y,Q=m(q),z=`[connect #${++A}]`;let G;try{G=new h("default",z,Q,D)}catch(ne){return O.reject(ne)}V(t,G,$);const K="auto"===t.preferredVideoCodecs;if(K&&(t.preferredVideoCodecs=[{codec:"VP8",simulcast:!0,adaptiveSimulcast:!0}]),t.maxVideoBitrate&&K)return G.error('ConnectOptions "maxVideoBitrate" is not compatible with "preferredVideoCodecs=auto"'),O.reject(E.ILLEGAL_INVOKE("connect",'ConnectOptions "maxVideoBitrate" is not compatible with "preferredVideoCodecs=auto"'));const Y={};"string"==typeof(t=Object.assign({automaticSubscription:!0,dominantSpeaker:!1,enableDscp:!1,receiveTranscriptions:!1,environment:b,eventListener:null,insights:!0,LocalAudioTrack:c,LocalDataTrack:l,LocalParticipant:s,LocalVideoTrack:d,Log:h,MediaStreamTrack:MediaStreamTrack,loggerName:D,logLevel:q,maxAudioBitrate:null,maxVideoBitrate:null,name:null,networkMonitor:!0,networkQuality:!1,preferredAudioCodecs:[],preferredVideoCodecs:[],realm:w,region:S,signaling:p},_(t))).wsServerInsights&&(Y.gateway=t.wsServerInsights);const J=new(t.insights?o:a)(e,C,P,t.environment,t.realm,Y),X=T(t.environment,t.region),Z=Date.now(),ee=new L(J,Z,G,t.eventListener);if((t=Object.assign({eventObserver:ee,wsServer:X},t)).log=G,j&&!x&&"error"!==G.logLevel&&"off"!==G.logLevel&&(x=!0,G.warn(["Support for Safari 12.0 and below is limited because it does not support VP8.","This means you may experience codec issues in Group Rooms. You may also","experience codec issues in Peer-to-Peer (P2P) Rooms containing Android- or","iOS-based Participants who do not support H.264. However, P2P Rooms","with browser-based Participants should work. For more information, please","refer to this guide: https://www.twilio.com/docs/video/javascript-v2-developing-safari-11"].join(" "))),"string"!=typeof e)return O.reject(E.INVALID_TYPE("token","string"));t.insights&&J&&M.configure({publisher:J,log:G,connectTimestamp:Z});const te=Object.assign({},t);if(delete te.name,"tracks"in t){if(!Array.isArray(t.tracks))return O.reject(E.INVALID_TYPE("options.tracks","Array of LocalAudioTrack, LocalVideoTrack or MediaStreamTrack"));try{t.tracks=t.tracks.map(e=>f(e,te))}catch(ne){return O.reject(ne)}}const ne=I(t.bandwidthProfile);if(ne)return O.reject(ne);t.clientTrackSwitchOffControl="disabled",t.contentPreferencesMode="disabled",t.bandwidthProfile&&(t.clientTrackSwitchOffControl="auto",t.contentPreferencesMode="auto",t.bandwidthProfile.video&&(V(t.bandwidthProfile.video,G,N),"maxTracks"in t.bandwidthProfile.video?t.clientTrackSwitchOffControl="disabled":"manual"===t.bandwidthProfile.video.clientTrackSwitchOffControl?t.clientTrackSwitchOffControl="manual":t.clientTrackSwitchOffControl="auto","renderDimensions"in t.bandwidthProfile.video?t.contentPreferencesMode="disabled":"manual"===t.bandwidthProfile.video.contentPreferencesMode?t.contentPreferencesMode="manual":t.contentPreferencesMode="auto"));const ie=new(0,t.signaling)(t.wsServer,t);G.info("Connecting to a Room"),G.debug("Options:",t);const re=new r({maxAudioBitrate:t.maxAudioBitrate,maxVideoBitrate:t.maxVideoBitrate},K),se={audio:t.preferredAudioCodecs.map(W),video:t.preferredVideoCodecs.map(W)},oe=new u(v(t.networkQuality)?t.networkQuality:{});["audio","video"].forEach(e=>se[e].forEach(({codec:t})=>n(t,e).then(n=>!n&&G.warn(`The preferred ${e} codec "${t}" will be ignored as it is not supported by the browser.`))));const ae=i(H.bind(null,t),F.bind(null,ie,G,re,oe,t),U.bind(null,e,t,ie,re,se),B.bind(null,t));return ae.then(e=>{J.connect(e.sid,e.localParticipant.sid);const n=g(t);return t.eventObserver.emit("event",n),G.info("Connected to Room:",e.toString()),G.info("Room name:",e.name),G.debug("Room:",e),e.once("disconnected",()=>{setTimeout(()=>J.disconnect(),50)}),e},e=>{setTimeout(()=>J.disconnect(),50),ae._isCanceled?G.info("Attempt to connect to a Room was canceled"):G.info("Error while connecting to a Room:",e)}),ae},Wa}function Rc(){if(za)return Qa;za=1;const{DEFAULT_LOG_LEVEL:e,DEFAULT_LOGGER_NAME:t}=ae();function n(n,i){i=Object.assign({loggerName:t,logLevel:e},i);const r={};r.loggerName=i.loggerName,r.logLevel=i.logLevel,delete i.loggerName,delete i.logLevel;["getUserMedia","enumerateDevices","MediaStream","mapMediaElement","disposeMediaElement"].forEach(e=>{e in i&&(r[e]=i[e],delete i[e])});const s=i.createLocalTracks;return delete i.createLocalTracks,r[n]=!(Object.keys(i).length>0)||i,s(r).then(e=>e[0])}return Qa={audio:function(e){return n("audio",e)},video:function(e){return n("video",e)}}}function Ic(){if(Ka)return Ga;Ka=1;const{guessBrowser:e,support:t}=pe(),{isAndroid:n,isMobile:i,isNonChromiumEdge:r,rebrandedChromeBrowser:s,mobileWebKitBrowser:o}=bn(),a=["crios","edg","edge","electron","headlesschrome","samsungbrowser"],c=["chrome","firefox"],l=["chrome","safari"],d=["edg"];return Ga=function(){const u=e();if(!u)return!1;const h=s(u),p=o(u),f=n()?c:l;return t()&&(!h||a.includes(h))&&!r(u)&&(!p||d.includes(p))&&(!i()||f.includes(u))}}var Mc,Dc=n.exports;var Ac=function(){if(Mc)return n.exports;Mc=1,Object.defineProperty(Dc,"__esModule",{value:!0});const e=Zn(),t=Qi(),i={connect:Lc(),createLocalAudioTrack:Rc().audio,createLocalVideoTrack:Rc().video,isSupported:Ic()(),version:oe.version,Logger:Z(),LocalAudioTrack:Bn().LocalAudioTrack,LocalDataTrack:Bn().LocalDataTrack,LocalVideoTrack:Bn().LocalVideoTrack},r=i.isSupported,s=i.version,o=i.Logger,a=i.LocalAudioTrack,c=i.LocalVideoTrack,l=i.LocalDataTrack;return n.exports={connect:function(t,n){const r=Object.assign({createLocalTracks:e.createLocalTracks},n);return i.connect(t,r)},createLocalAudioTrack:function(t){const n=Object.assign({createLocalTracks:e.createLocalTracks},t);return i.createLocalAudioTrack(n)},createLocalVideoTrack:function(t){const n=Object.assign({createLocalTracks:e.createLocalTracks},t);return i.createLocalVideoTrack(n)},createLocalTracks:e.createLocalTracks,runPreflight:t.runPreflight,isSupported:r,version:s,Logger:o,LocalAudioTrack:a,LocalVideoTrack:c,LocalDataTrack:l},n.exports}();return e(Ac)}());t.exports=n;var i=t.exports;if("function"==typeof define&&define.amd)define([],function(){return i});else{var r=e.Twilio=e.Twilio||{};r.Video=r.Video||i}}("undefined"!=typeof window?window:"undefined"!=typeof global?global:this);