@whereby.com/browser-sdk 3.2.2 → 3.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
- this.whereby=this.whereby||{},this.whereby.react=function(e,t,r){"use strict";function n(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}function i(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(r){if("default"!==r&&!(r in e)){var n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:function(){return t[r]}})}}))})),Object.freeze(e)}var s=n(t),o=n(r),a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function c(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function d(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})})),r}var l,u={exports:{}},p={};u.exports=(l||(l=1,function(){"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error);var e=t,r="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},n=e.useSyncExternalStore,i=e.useRef,s=e.useEffect,o=e.useMemo,a=e.useDebugValue;p.useSyncExternalStoreWithSelector=function(e,t,c,d,l){var u,p=i(null);null===p.current?(u={hasValue:!1,value:null},p.current=u):u=p.current;var h=o((function(){var e,n,i=!1,s=function(t){if(!i){i=!0,e=t;var s=d(t);if(void 0!==l&&u.hasValue){var o=u.value;if(l(o,s))return n=o,o}return n=s,s}var a=n;if(r(e,t))return a;var c=d(t);return void 0!==l&&l(a,c)?a:(e=t,n=c,c)},o=void 0===c?null:c;return[function(){return s(t())},null===o?void 0:function(){return s(o())}]}),[t,c,d,l]),f=h[0],m=h[1],g=n(e,f,m);return s((function(){u.hasValue=!0,u.value=g}),[g]),a(g),g},"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error)}()),p);var h=u.exports,f="default"in s?s.default:s,m=Symbol.for("react-redux-context"),g="undefined"!=typeof globalThis?globalThis:{};function v(){if(!f.createContext)return{};const e=g[m]??(g[m]=new Map);let t=e.get(f.createContext);return t||(t=f.createContext(null),t.displayName="ReactRedux",e.set(f.createContext,t)),t}var b=v();function y(e=b){return function(){const t=f.useContext(e);if(!t)throw new Error("could not find react-redux context value; please ensure the component is wrapped in a <Provider>");return t}}var _=y(),w=()=>{throw new Error("uSES not initialized!")},S=(e,t)=>e===t;function C(e=b){const t=e===b?_:y(e),r=(e,r={})=>{const{equalityFn:n=S,devModeChecks:i={}}="function"==typeof r?{equalityFn:r}:r;if(!e)throw new Error("You must pass a selector to useSelector");if("function"!=typeof e)throw new Error("You must pass a function as a selector to useSelector");if("function"!=typeof n)throw new Error("You must pass a function as an equality function to useSelector");const{store:s,subscription:o,getServerState:a,stabilityCheck:c,identityFunctionCheck:d}=t(),l=f.useRef(!0),u=f.useCallback({[e.name](t){const r=e(t);{const{identityFunctionCheck:s,stabilityCheck:o}={stabilityCheck:c,identityFunctionCheck:d,...i};if("always"===o||"once"===o&&l.current){const i=e(t);if(!n(r,i)){let n;try{throw new Error}catch(e){({stack:n}=e)}console.warn("Selector "+(e.name||"unknown")+" returned a different result when called with the same parameters. This can lead to unnecessary rerenders.\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization",{state:t,selected:r,selected2:i,stack:n})}}if(("always"===s||"once"===s&&l.current)&&r===t){let t;try{throw new Error}catch(e){({stack:t}=e)}console.warn("Selector "+(e.name||"unknown")+" returned the root state when called. This can lead to unnecessary rerenders.\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.",{stack:t})}l.current&&(l.current=!1)}return r}}[e.name],[e,c,i.stabilityCheck]),p=w(o.addNestedSub,s.getState,a||s.getState,u,n);return f.useDebugValue(p),p};return Object.assign(r,{withTypes:()=>r}),r}var R=C();var P={notify(){},get:()=>[]};var T=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),k="undefined"!=typeof navigator&&"ReactNative"===navigator.product,E=T||k?f.useLayoutEffect:f.useEffect;var O=function({store:e,context:t,children:r,serverState:n,stabilityCheck:i="once",identityFunctionCheck:s="once"}){const o=f.useMemo((()=>{const t=function(e,t){let r,n=P,i=0,s=!1;function o(){d.onStateChange&&d.onStateChange()}function a(){i++,r||(r=t?t.addNestedSub(o):e.subscribe(o),n=function(){let e=null,t=null;return{clear(){e=null,t=null},notify(){var t;t=()=>{let t=e;for(;t;)t.callback(),t=t.next},t()},get(){const t=[];let r=e;for(;r;)t.push(r),r=r.next;return t},subscribe(r){let n=!0;const i=t={callback:r,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){n&&null!==e&&(n=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}())}function c(){i--,r&&0===i&&(r(),r=void 0,n.clear(),n=P)}const d={addNestedSub:function(e){a();const t=n.subscribe(e);let r=!1;return()=>{r||(r=!0,t(),c())}},notifyNestedSubs:function(){n.notify()},handleChangeWrapper:o,isSubscribed:function(){return s},trySubscribe:function(){s||(s=!0,a())},tryUnsubscribe:function(){s&&(s=!1,c())},getListeners:()=>n};return d}(e);return{store:e,subscription:t,getServerState:n?()=>n:void 0,stabilityCheck:i,identityFunctionCheck:s}}),[e,n,i,s]),a=f.useMemo((()=>e.getState()),[e]);E((()=>{const{subscription:t}=o;return t.onStateChange=t.notifyNestedSubs,t.trySubscribe(),a!==e.getState()&&t.notifyNestedSubs(),()=>{t.tryUnsubscribe(),t.onStateChange=void 0}}),[o,a]);const c=t||b;return f.createElement(c.Provider,{value:o},r)};function D(e=b){const t=e===b?_:y(e),r=()=>{const{store:e}=t();return e};return Object.assign(r,{withTypes:()=>r}),r}var I=D();function x(e=b){const t=e===b?I:D(e),r=()=>t().dispatch;return Object.assign(r,{withTypes:()=>r}),r}var M,j=x();M=h.useSyncExternalStoreWithSelector,w=M;var L=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")(),A=()=>Math.random().toString(36).substring(7).split("").join("."),N={INIT:`@@redux/INIT${A()}`,REPLACE:`@@redux/REPLACE${A()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${A()}`};function B(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function F(e){if(void 0===e)return"undefined";if(null===e)return"null";const t=typeof e;switch(t){case"boolean":case"string":case"number":case"symbol":case"function":return t}if(Array.isArray(e))return"array";if(function(e){return e instanceof Date||"function"==typeof e.toDateString&&"function"==typeof e.getDate&&"function"==typeof e.setDate}(e))return"date";if(function(e){return e instanceof Error||"string"==typeof e.message&&e.constructor&&"number"==typeof e.constructor.stackTraceLimit}(e))return"error";const r=function(e){return"function"==typeof e.constructor?e.constructor.name:null}(e);switch(r){case"Symbol":case"Promise":case"WeakMap":case"WeakSet":case"Map":case"Set":return r}return Object.prototype.toString.call(e).slice(8,-1).toLowerCase().replace(/\s/g,"")}function z(e){let t=typeof e;return t=F(e),t}function U(e,t,r){if("function"!=typeof e)throw new Error(`Expected the root reducer to be a function. Instead, received: '${z(e)}'`);if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.");if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(`Expected the enhancer to be a function. Instead, received: '${z(r)}'`);return r(U)(e,t)}let n=e,i=t,s=new Map,o=s,a=0,c=!1;function d(){o===s&&(o=new Map,s.forEach(((e,t)=>{o.set(t,e)})))}function l(){if(c)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return i}function u(e){if("function"!=typeof e)throw new Error(`Expected the listener to be a function. Instead, received: '${z(e)}'`);if(c)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.");let t=!0;d();const r=a++;return o.set(r,e),function(){if(t){if(c)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.");t=!1,d(),o.delete(r),s=null}}}function p(e){if(!B(e))throw new Error(`Actions must be plain objects. Instead, the actual type was: '${z(e)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. You may have misspelled an action type string constant.');if("string"!=typeof e.type)throw new Error(`Action "type" property must be a string. Instead, the actual type was: '${z(e.type)}'. Value was: '${e.type}' (stringified)`);if(c)throw new Error("Reducers may not dispatch actions.");try{c=!0,i=n(i,e)}finally{c=!1}return(s=o).forEach((e=>{e()})),e}p({type:N.INIT});return{dispatch:p,subscribe:u,getState:l,replaceReducer:function(e){if("function"!=typeof e)throw new Error(`Expected the nextReducer to be a function. Instead, received: '${z(e)}`);n=e,p({type:N.REPLACE})},[L]:function(){const e=u;return{subscribe(t){if("object"!=typeof t||null===t)throw new Error(`Expected the observer to be an object. Instead, received: '${z(t)}'`);function r(){const e=t;e.next&&e.next(l())}r();return{unsubscribe:e(r)}},[L](){return this}}}}}function $(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}function V(e){const t=Object.keys(e),r={};for(let n=0;n<t.length;n++){const i=t[n];void 0===e[i]&&$(`No reducer provided for key "${i}"`),"function"==typeof e[i]&&(r[i]=e[i])}const n=Object.keys(r);let i,s;i={};try{!function(e){Object.keys(e).forEach((t=>{const r=e[t];if(void 0===r(void 0,{type:N.INIT}))throw new Error(`The slice reducer for key "${t}" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(void 0===r(void 0,{type:N.PROBE_UNKNOWN_ACTION()}))throw new Error(`The slice reducer for key "${t}" returned undefined when probed with a random type. Don't try to handle '${N.INIT}' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`)}))}(r)}catch(e){s=e}return function(e={},t){if(s)throw s;{const n=function(e,t,r,n){const i=Object.keys(t),s=r&&r.type===N.INIT?"preloadedState argument passed to createStore":"previous state received by the reducer";if(0===i.length)return"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.";if(!B(e))return`The ${s} has unexpected type of "${z(e)}". Expected argument to be an object with the following keys: "${i.join('", "')}"`;const o=Object.keys(e).filter((e=>!t.hasOwnProperty(e)&&!n[e]));return o.forEach((e=>{n[e]=!0})),r&&r.type===N.REPLACE?void 0:o.length>0?`Unexpected ${o.length>1?"keys":"key"} "${o.join('", "')}" found in ${s}. Expected to find one of the known reducer keys instead: "${i.join('", "')}". Unexpected keys will be ignored.`:void 0}(e,r,t,i);n&&$(n)}let o=!1;const a={};for(let i=0;i<n.length;i++){const s=n[i],c=r[s],d=e[s],l=c(d,t);if(void 0===l){const e=t&&t.type;throw new Error(`When called with an action of type ${e?`"${String(e)}"`:"(unknown type)"}, the slice reducer for key "${s}" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`)}a[s]=l,o=o||l!==d}return o=o||n.length!==Object.keys(e).length,o?a:e}}function G(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce(((e,t)=>(...r)=>e(t(...r))))}function q(e){return B(e)&&"type"in e&&"string"==typeof e.type}var H=Symbol.for("immer-nothing"),W=Symbol.for("immer-draftable"),K=Symbol.for("immer-state"),J=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}];function Q(e,...t){{const r=J[e],n="function"==typeof r?r.apply(null,t):r;throw new Error(`[Immer] ${n}`)}}var Y=Object.getPrototypeOf;function Z(e){return!!e&&!!e[K]}function X(e){return!!e&&(te(e)||Array.isArray(e)||!!e[W]||!!e.constructor?.[W]||oe(e)||ae(e))}var ee=Object.prototype.constructor.toString();function te(e){if(!e||"object"!=typeof e)return!1;const t=Y(e);if(null===t)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return r===Object||"function"==typeof r&&Function.toString.call(r)===ee}function re(e,t){0===ne(e)?Object.entries(e).forEach((([r,n])=>{t(r,n,e)})):e.forEach(((r,n)=>t(n,r,e)))}function ne(e){const t=e[K];return t?t.type_:Array.isArray(e)?1:oe(e)?2:ae(e)?3:0}function ie(e,t){return 2===ne(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function se(e,t,r){const n=ne(e);2===n?e.set(t,r):3===n?e.add(r):e[t]=r}function oe(e){return e instanceof Map}function ae(e){return e instanceof Set}function ce(e){return e.copy_||e.base_}function de(e,t){if(oe(e))return new Map(e);if(ae(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);if(!t&&te(e)){if(!Y(e)){const t=Object.create(null);return Object.assign(t,e)}return{...e}}const r=Object.getOwnPropertyDescriptors(e);delete r[K];let n=Reflect.ownKeys(r);for(let t=0;t<n.length;t++){const i=n[t],s=r[i];!1===s.writable&&(s.writable=!0,s.configurable=!0),(s.get||s.set)&&(r[i]={configurable:!0,writable:!0,enumerable:s.enumerable,value:e[i]})}return Object.create(Y(e),r)}function le(e,t=!1){return pe(e)||Z(e)||!X(e)||(ne(e)>1&&(e.set=e.add=e.clear=e.delete=ue),Object.freeze(e),t&&re(e,((e,t)=>le(t,!0)))),e}function ue(){Q(2)}function pe(e){return Object.isFrozen(e)}var he,fe={};function me(e){const t=fe[e];return t||Q(0,e),t}function ge(){return he}function ve(e,t){t&&(me("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function be(e){ye(e),e.drafts_.forEach(we),e.drafts_=null}function ye(e){e===he&&(he=e.parent_)}function _e(e){return he={drafts_:[],parent_:he,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function we(e){const t=e[K];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function Se(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return void 0!==e&&e!==r?(r[K].modified_&&(be(t),Q(4)),X(e)&&(e=Ce(t,e),t.parent_||Pe(t,e)),t.patches_&&me("Patches").generateReplacementPatches_(r[K].base_,e,t.patches_,t.inversePatches_)):e=Ce(t,r,[]),be(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==H?e:void 0}function Ce(e,t,r){if(pe(t))return t;const n=t[K];if(!n)return re(t,((i,s)=>Re(e,n,t,i,s,r))),t;if(n.scope_!==e)return t;if(!n.modified_)return Pe(e,n.base_,!0),n.base_;if(!n.finalized_){n.finalized_=!0,n.scope_.unfinalizedDrafts_--;const t=n.copy_;let i=t,s=!1;3===n.type_&&(i=new Set(t),t.clear(),s=!0),re(i,((i,o)=>Re(e,n,t,i,o,r,s))),Pe(e,t,!1),r&&e.patches_&&me("Patches").generatePatches_(n,r,e.patches_,e.inversePatches_)}return n.copy_}function Re(e,t,r,n,i,s,o){if(i===r&&Q(5),Z(i)){const o=Ce(e,i,s&&t&&3!==t.type_&&!ie(t.assigned_,n)?s.concat(n):void 0);if(se(r,n,o),!Z(o))return;e.canAutoFreeze_=!1}else o&&r.add(i);if(X(i)&&!pe(i)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;Ce(e,i),t&&t.scope_.parent_||Pe(e,i)}}function Pe(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&le(t,r)}var Te={get(e,t){if(t===K)return e;const r=ce(e);if(!ie(r,t))return function(e,t,r){const n=Oe(t,r);return n?"value"in n?n.value:n.get?.call(e.draft_):void 0}(e,r,t);const n=r[t];return e.finalized_||!X(n)?n:n===Ee(e.base_,t)?(Ie(e),e.copy_[t]=xe(n,e)):n},has:(e,t)=>t in ce(e),ownKeys:e=>Reflect.ownKeys(ce(e)),set(e,t,r){const n=Oe(ce(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const n=Ee(ce(e),t),o=n?.[K];if(o&&o.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((i=r)===(s=n)?0!==i||1/i==1/s:i!=i&&s!=s)&&(void 0!==r||ie(e.base_,t)))return!0;Ie(e),De(e)}var i,s;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==Ee(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,Ie(e),De(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=ce(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:n.enumerable,value:r[t]}:n},defineProperty(){Q(11)},getPrototypeOf:e=>Y(e.base_),setPrototypeOf(){Q(12)}},ke={};function Ee(e,t){const r=e[K];return(r?ce(r):e)[t]}function Oe(e,t){if(!(t in e))return;let r=Y(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=Y(r)}}function De(e){e.modified_||(e.modified_=!0,e.parent_&&De(e.parent_))}function Ie(e){e.copy_||(e.copy_=de(e.base_,e.scope_.immer_.useStrictShallowCopy_))}re(Te,((e,t)=>{ke[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),ke.deleteProperty=function(e,t){return isNaN(parseInt(t))&&Q(13),ke.set.call(this,e,t,void 0)},ke.set=function(e,t,r){return"length"!==t&&isNaN(parseInt(t))&&Q(14),Te.set.call(this,e[0],t,r,e[0])};function xe(e,t){const r=oe(e)?me("MapSet").proxyMap_(e,t):ae(e)?me("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),n={type_:r?1:0,scope_:t?t.scope_:ge(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let i=n,s=Te;r&&(i=[n],s=ke);const{revoke:o,proxy:a}=Proxy.revocable(i,s);return n.draft_=a,n.revoke_=o,a}(e,t);return(t?t.scope_:ge()).drafts_.push(r),r}function Me(e){return Z(e)||Q(10,e),je(e)}function je(e){if(!X(e)||pe(e))return e;const t=e[K];let r;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=de(e,t.scope_.immer_.useStrictShallowCopy_)}else r=de(e,!0);return re(r,((e,t)=>{se(r,e,je(t))})),t&&(t.finalized_=!1),r}var Le=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,r)=>{if("function"==typeof e&&"function"!=typeof t){const r=t;t=e;const n=this;return function(e=r,...i){return n.produce(e,(e=>t.call(this,e,...i)))}}let n;if("function"!=typeof t&&Q(6),void 0!==r&&"function"!=typeof r&&Q(7),X(e)){const i=_e(this),s=xe(e,void 0);let o=!0;try{n=t(s),o=!1}finally{o?be(i):ye(i)}return ve(i,r),Se(n,i)}if(!e||"object"!=typeof e){if(n=t(e),void 0===n&&(n=e),n===H&&(n=void 0),this.autoFreeze_&&le(n,!0),r){const t=[],i=[];me("Patches").generateReplacementPatches_(e,n,t,i),r(t,i)}return n}Q(1,e)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...r)=>this.produceWithPatches(t,(t=>e(t,...r)));let r,n;return[this.produce(e,t,((e,t)=>{r=e,n=t})),r,n]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){X(e)||Q(8),Z(e)&&(e=Me(e));const t=_e(this),r=xe(e,void 0);return r[K].isManual_=!0,ye(t),r}finishDraft(e,t){const r=e&&e[K];r&&r.isManual_||Q(9);const{scope_:n}=r;return ve(n,t),Se(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const n=t[r];if(0===n.path.length&&"replace"===n.op){e=n.value;break}}r>-1&&(t=t.slice(r+1));const n=me("Patches").applyPatches_;return Z(e)?n(e,t):this.produce(e,(e=>n(e,t)))}},Ae=Le.produce;Le.produceWithPatches.bind(Le),Le.setAutoFreeze.bind(Le),Le.setUseStrictShallowCopy.bind(Le),Le.applyPatches.bind(Le),Le.createDraft.bind(Le),Le.finishDraft.bind(Le);var Ne=(e,t,r)=>{if(1===t.length&&t[0]===r){let t=!1;try{const r={};e(r)===r&&(t=!0)}catch{}if(t){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("The result function returned its own inputs without modification. e.g\n`createSelector([state => state.todos], todos => todos)`\nThis could lead to inefficient memoization and unnecessary re-renders.\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.",{stack:e})}}},Be=(e,t,r)=>{const{memoize:n,memoizeOptions:i}=t,{inputSelectorResults:s,inputSelectorResultsCopy:o}=e,a=n((()=>({})),...i);if(!(a.apply(null,s)===a.apply(null,o))){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("An input selector returned a different result when passed same arguments.\nThis means your output selector will likely run more frequently than intended.\nAvoid returning a new reference inside your input selector, e.g.\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`",{arguments:r,firstInputs:s,secondInputs:o,stack:e})}},Fe={inputStabilityCheck:"once",identityFunctionCheck:"once"};var ze=e=>Array.isArray(e)?e:[e];function Ue(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every((e=>"function"==typeof e))){const r=e.map((e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e)).join(", ");throw new TypeError(`${t}[${r}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function $e(e,t){const r=[],{length:n}=e;for(let i=0;i<n;i++)r.push(e[i].apply(null,t));return r}var Ve="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},Ge=0,qe=1;function He(){return{s:Ge,v:void 0,o:null,p:null}}function We(e,t={}){let r=He();const{resultEqualityCheck:n}=t;let i,s=0;function o(){let t=r;const{length:o}=arguments;for(let e=0,r=o;e<r;e++){const r=arguments[e];if("function"==typeof r||"object"==typeof r&&null!==r){let e=t.o;null===e&&(t.o=e=new WeakMap);const n=e.get(r);void 0===n?(t=He(),e.set(r,t)):t=n}else{let e=t.p;null===e&&(t.p=e=new Map);const n=e.get(r);void 0===n?(t=He(),e.set(r,t)):t=n}}const a=t;let c;if(t.s===qe?c=t.v:(c=e.apply(null,arguments),s++),a.s=qe,n){const e=i?.deref?.()??i;null!=e&&n(e,c)&&(c=e,0!==s&&s--);i="object"==typeof c&&null!==c||"function"==typeof c?new Ve(c):c}return a.v=c,c}return o.clearCache=()=>{r=He(),o.resetResultsCount()},o.resultsCount=()=>s,o.resetResultsCount=()=>{s=0},o}function Ke(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,n=(...e)=>{let t,n=0,i=0,s={},o=e.pop();"object"==typeof o&&(s=o,o=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);const a={...r,...s},{memoize:c,memoizeOptions:d=[],argsMemoize:l=We,argsMemoizeOptions:u=[],devModeChecks:p={}}=a,h=ze(d),f=ze(u),m=Ue(e),g=c((function(){return n++,o.apply(null,arguments)}),...h);let v=!0;const b=l((function(){i++;const e=$e(m,arguments);t=g.apply(null,e);{const{identityFunctionCheck:r,inputStabilityCheck:n}=((e,t)=>{const{identityFunctionCheck:r,inputStabilityCheck:n}={...Fe,...t};return{identityFunctionCheck:{shouldRun:"always"===r||"once"===r&&e,run:Ne},inputStabilityCheck:{shouldRun:"always"===n||"once"===n&&e,run:Be}}})(v,p);if(r.shouldRun&&r.run(o,e,t),n.shouldRun){const t=$e(m,arguments);n.run({inputSelectorResults:e,inputSelectorResultsCopy:t},{memoize:c,memoizeOptions:h},arguments)}v&&(v=!1)}return t}),...f);return Object.assign(b,{resultFunc:o,memoizedResultFunc:g,dependencies:m,dependencyRecomputations:()=>i,resetDependencyRecomputations:()=>{i=0},lastResult:()=>t,recomputations:()=>n,resetRecomputations:()=>{n=0},memoize:c,argsMemoize:l})};return Object.assign(n,{withTypes:()=>n}),n}var Je=Ke(We),Qe=Object.assign(((e,t=Je)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const r=Object.keys(e),n=t(r.map((t=>e[t])),((...e)=>e.reduce(((e,t,n)=>(e[r[n]]=t,e)),{})));return n}),{withTypes:()=>Qe});function Ye(e){return({dispatch:t,getState:r})=>n=>i=>"function"==typeof i?i(t,r,e):n(i)}var Ze=Ye(),Xe=Ye;((...e)=>{const t=Ke(...e),r=Object.assign(((...e)=>{const r=t(...e),n=(e,...t)=>r(Z(e)?Me(e):e,...t);return Object.assign(n,r),n}),{withTypes:()=>r})})(We);var et="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?G:G.apply(null,arguments)},tt=e=>e&&"function"==typeof e.match;function rt(e,t){function r(...r){if(t){let n=t(...r);if(!n)throw new Error("prepareAction did not return an object");return{type:e,payload:n.payload,..."meta"in n&&{meta:n.meta},..."error"in n&&{error:n.error}}}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>q(t)&&t.type===e,r}function nt(e){return"function"==typeof e&&"type"in e&&tt(e)}function it(e,t){let r=0;return{measureTime(e){const t=Date.now();try{return e()}finally{const e=Date.now();r+=e-t}},warnIfExceeded(){r>e&&console.warn(`${t} took ${r}ms, which is more than the warning threshold of ${e}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`)}}}function st(e,t){for(const r of e)if(t(r))return r}var ot=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return 1===t.length&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function at(e){return X(e)?Ae(e,(()=>{})):e}function ct(e,t,r){if(e.has(t)){let n=e.get(t);return r.update&&(n=r.update(n,t,e),e.set(t,n)),n}if(!r.insert)throw new Error("No insert provided for key not already in map");const n=r.insert(t,e);return e.set(t,n),n}function dt(e){return"object"!=typeof e||null==e||Object.isFrozen(e)}function lt(e,t,r){const n=ut(e,t,r);return{detectMutations:()=>pt(e,t,n,r)}}function ut(e,t=[],r,n="",i=new Set){const s={value:r};if(!e(r)&&!i.has(r)){i.add(r),s.children={};for(const i in r){const o=n?n+"."+i:i;t.length&&-1!==t.indexOf(o)||(s.children[i]=ut(e,t,r[i],o))}}return s}function pt(e,t=[],r,n,i=!1,s=""){const o=r?r.value:void 0,a=o===n;if(i&&!a&&!Number.isNaN(n))return{wasMutated:!0,path:s};if(e(o)||e(n))return{wasMutated:!1};const c={};for(let e in r.children)c[e]=!0;for(let e in n)c[e]=!0;const d=t.length>0;for(let i in c){const o=s?s+"."+i:i;if(d){if(t.some((e=>e instanceof RegExp?e.test(o):o===e)))continue}const c=pt(e,t,r.children[i],n[i],a,o);if(c.wasMutated)return c}return{wasMutated:!1}}function ht(e){const t=typeof e;return null==e||"string"===t||"boolean"===t||"number"===t||Array.isArray(e)||B(e)}function ft(e,t="",r=ht,n,i=[],s){let o;if(!r(e))return{keyPath:t||"<root>",value:e};if("object"!=typeof e||null===e)return!1;if(s?.has(e))return!1;const a=null!=n?n(e):Object.entries(e),c=i.length>0;for(const[e,d]of a){const a=t?t+"."+e:e;if(c){if(i.some((e=>e instanceof RegExp?e.test(a):a===e)))continue}if(!r(d))return{keyPath:a,value:d};if("object"==typeof d&&(o=ft(d,a,r,n,i,s),o))return o}return s&&mt(e)&&s.add(e),!1}function mt(e){if(!Object.isFrozen(e))return!1;for(const t of Object.values(e))if("object"==typeof t&&null!==t&&!mt(t))return!1;return!0}function gt(e){return"boolean"==typeof e}var vt=()=>function(e){const{thunk:t=!0,immutableCheck:r=!0,serializableCheck:n=!0,actionCreatorCheck:i=!0}=e??{};let s=new ot;if(t&&(gt(t)?s.push(Ze):s.push(Xe(t.extraArgument))),r){let e={};gt(r)||(e=r),s.unshift(function(e={}){{let t=function(e,t,n,i){return JSON.stringify(e,r(t,i),n)},r=function(e,t){let r=[],n=[];return t||(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+n.slice(0,r.indexOf(t)).join(".")+"]"}),function(i,s){if(r.length>0){var o=r.indexOf(this);~o?r.splice(o+1):r.push(this),~o?n.splice(o,1/0,i):n.push(i),~r.indexOf(s)&&(s=t.call(this,i,s))}else r.push(s);return null==e?s:e.call(this,i,s)}},{isImmutable:n=dt,ignoredPaths:i,warnAfter:s=32}=e;const o=lt.bind(null,n,i);return({getState:e})=>{let r,n=e(),i=o(n);return a=>c=>{const d=it(s,"ImmutableStateInvariantMiddleware");d.measureTime((()=>{if(n=e(),r=i.detectMutations(),i=o(n),r.wasMutated)throw new Error(`A state mutation was detected between dispatches, in the path '${r.path||""}'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)}));const l=a(c);return d.measureTime((()=>{if(n=e(),r=i.detectMutations(),i=o(n),r.wasMutated)throw new Error(`A state mutation was detected inside a dispatch, in the path: ${r.path||""}. Take a look at the reducer(s) handling the action ${t(c)}. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)})),d.warnIfExceeded(),l}}}}(e))}if(n){let e={};gt(n)||(e=n),s.push(function(e={}){{const{isSerializable:t=ht,getEntries:r,ignoredActions:n=[],ignoredActionPaths:i=["meta.arg","meta.baseQueryMeta"],ignoredPaths:s=[],warnAfter:o=32,ignoreState:a=!1,ignoreActions:c=!1,disableCache:d=!1}=e,l=!d&&WeakSet?new WeakSet:void 0;return e=>d=>u=>{if(!q(u))return d(u);const p=d(u),h=it(o,"SerializableStateInvariantMiddleware");return c||n.length&&-1!==n.indexOf(u.type)||h.measureTime((()=>{const e=ft(u,"",t,r,i,l);if(e){const{keyPath:t,value:r}=e;console.error(`A non-serializable value was detected in an action, in the path: \`${t}\`. Value:`,r,"\nTake a look at the logic that dispatched this action: ",u,"\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)","\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)")}})),a||(h.measureTime((()=>{const n=ft(e.getState(),"",t,r,s,l);if(n){const{keyPath:e,value:t}=n;console.error(`A non-serializable value was detected in the state, in the path: \`${e}\`. Value:`,t,`\nTake a look at the reducer(s) handling this action type: ${u.type}.\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`)}})),h.warnIfExceeded()),p}}}(e))}if(i){let e={};gt(i)||(e=i),s.unshift(function(e={}){const{isActionCreator:t=nt}=e;return()=>e=>r=>(t(r)&&console.warn(function(e){const t=e?`${e}`.split("/"):[],r=t[t.length-1]||"actionCreator";return`Detected an action creator with type "${e||"unknown"}" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. \`dispatch(${r}())\` instead of \`dispatch(${r})\`. This is necessary even if the action has no payload.`}(r.type)),e(r))}(e))}return s},bt=e=>t=>{setTimeout(t,e)},yt="undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:bt(10),_t=e=>function(t){const{autoBatch:r=!0}=t??{};let n=new ot(e);return r&&n.push(((e={type:"raf"})=>t=>(...r)=>{const n=t(...r);let i=!0,s=!1,o=!1;const a=new Set,c="tick"===e.type?queueMicrotask:"raf"===e.type?yt:"callback"===e.type?e.queueNotification:bt(e.timeout),d=()=>{o=!1,s&&(s=!1,a.forEach((e=>e())))};return Object.assign({},n,{subscribe(e){const t=n.subscribe((()=>i&&e()));return a.add(e),()=>{t(),a.delete(e)}},dispatch(e){try{return i=!e?.meta?.RTK_autoBatch,s=!i,s&&(o||(o=!0,c(d))),n.dispatch(e)}finally{i=!0}}})})("object"==typeof r?r:void 0)),n};function wt(e){const t=vt(),{reducer:r,middleware:n,devTools:i=!0,preloadedState:s,enhancers:o}=e||{};let a,c;if("function"==typeof r)a=r;else{if(!B(r))throw new Error("`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers");a=V(r)}if(n&&"function"!=typeof n)throw new Error("`middleware` field must be a callback");if("function"==typeof n){if(c=n(t),!Array.isArray(c))throw new Error("when using a middleware builder function, an array of middleware must be returned")}else c=t();if(c.some((e=>"function"!=typeof e)))throw new Error("each middleware provided to configureStore must be a function");let d=G;i&&(d=et({trace:!0,..."object"==typeof i&&i}));const l=function(...e){return t=>(r,n)=>{const i=t(r,n);let s=()=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")};const o={getState:i.getState,dispatch:(e,...t)=>s(e,...t)},a=e.map((e=>e(o)));return s=G(...a)(i.dispatch),{...i,dispatch:s}}}(...c),u=_t(l);if(o&&"function"!=typeof o)throw new Error("`enhancers` field must be a callback");let p="function"==typeof o?o(u):u();if(!Array.isArray(p))throw new Error("`enhancers` callback must return an array");if(p.some((e=>"function"!=typeof e)))throw new Error("each enhancer provided to configureStore must be a function");c.length&&!p.includes(l)&&console.error("middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`");return U(a,s,d(...p))}function St(e){const t={},r=[];let n;const i={addCase(e,s){if(r.length>0)throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`");if(n)throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`");const o="string"==typeof e?e:e.type;if(!o)throw new Error("`builder.addCase` cannot be called with an empty action type");if(o in t)throw new Error(`\`builder.addCase\` cannot be called with two reducers for the same action type '${o}'`);return t[o]=s,i},addMatcher(e,t){if(n)throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`");return r.push({matcher:e,reducer:t}),i},addDefaultCase(e){if(n)throw new Error("`builder.addDefaultCase` can only be called once");return n=e,i}};return e(i),[t,r,n]}var Ct=(e=21)=>{let t="",r=e;for(;r--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t};function Rt(...e){return t=>e.some((e=>((e,t)=>tt(e)?e.match(t):e(t))(e,t)))}var Pt=["name","message","stack","code"],Tt=class{constructor(e,t){this.payload=e,this.meta=t}_type},kt=class{constructor(e,t){this.payload=e,this.meta=t}_type},Et=e=>{if("object"==typeof e&&null!==e){const t={};for(const r of Pt)"string"==typeof e[r]&&(t[r]=e[r]);return t}return{message:String(e)}},Ot=(()=>{function e(e,t,r){const n=rt(e+"/fulfilled",((e,t,r,n)=>({payload:e,meta:{...n||{},arg:r,requestId:t,requestStatus:"fulfilled"}}))),i=rt(e+"/pending",((e,t,r)=>({payload:void 0,meta:{...r||{},arg:t,requestId:e,requestStatus:"pending"}}))),s=rt(e+"/rejected",((e,t,n,i,s)=>({payload:i,error:(r&&r.serializeError||Et)(e||"Rejected"),meta:{...s||{},arg:n,requestId:t,rejectedWithValue:!!i,requestStatus:"rejected",aborted:"AbortError"===e?.name,condition:"ConditionError"===e?.name}})));return Object.assign((function(e){return(o,a,c)=>{const d=r?.idGenerator?r.idGenerator(e):Ct(),l=new AbortController;let u,p;function h(e){p=e,l.abort()}const f=async function(){let f;try{let s=r?.condition?.(e,{getState:a,extra:c});if(function(e){return null!==e&&"object"==typeof e&&"function"==typeof e.then}(s)&&(s=await s),!1===s||l.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const m=new Promise(((e,t)=>{u=()=>{t({name:"AbortError",message:p||"Aborted"})},l.signal.addEventListener("abort",u)}));o(i(d,e,r?.getPendingMeta?.({requestId:d,arg:e},{getState:a,extra:c}))),f=await Promise.race([m,Promise.resolve(t(e,{dispatch:o,getState:a,extra:c,requestId:d,signal:l.signal,abort:h,rejectWithValue:(e,t)=>new Tt(e,t),fulfillWithValue:(e,t)=>new kt(e,t)})).then((t=>{if(t instanceof Tt)throw t;return t instanceof kt?n(t.payload,d,e,t.meta):n(t,d,e)}))])}catch(t){f=t instanceof Tt?s(null,d,e,t.payload,t.meta):s(t,d,e)}finally{u&&l.signal.removeEventListener("abort",u)}return r&&!r.dispatchConditionRejection&&s.match(f)&&f.meta.condition||o(f),f}();return Object.assign(f,{abort:h,requestId:d,arg:e,unwrap:()=>f.then(Dt)})}}),{pending:i,rejected:s,fulfilled:n,settled:Rt(s,n),typePrefix:e})}return e.withTypes=()=>e,e})();function Dt(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var It=Symbol.for("rtk-slice-createasyncthunk");function xt(e,t){return`${e}/${t}`}function Mt({creators:e}={}){const t=e?.asyncThunk?.[It];return function(e){const{name:r,reducerPath:n=r}=e;if(!r)throw new Error("`name` is a required option for createSlice");const i=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},s=Object.keys(i),o={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},a={addCase(e,t){const r="string"==typeof e?e:e.type;if(!r)throw new Error("`context.addCase` cannot be called with an empty action type");if(r in o.sliceCaseReducersByType)throw new Error("`context.addCase` cannot be called with two reducers for the same action type: "+r);return o.sliceCaseReducersByType[r]=t,a},addMatcher:(e,t)=>(o.sliceMatchers.push({matcher:e,reducer:t}),a),exposeAction:(e,t)=>(o.actionCreators[e]=t,a),exposeCaseReducer:(e,t)=>(o.sliceCaseReducersByName[e]=t,a)};function c(){if("object"==typeof e.extraReducers)throw new Error("The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice");const[t={},r=[],n]="function"==typeof e.extraReducers?St(e.extraReducers):[e.extraReducers],i={...t,...o.sliceCaseReducersByType};return function(e,t){if("object"==typeof t)throw new Error("The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer");let r,[n,i,s]=St(t);if("function"==typeof e)r=()=>at(e());else{const t=at(e);r=()=>t}function o(e=r(),t){let o=[n[t.type],...i.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===o.filter((e=>!!e)).length&&(o=[s]),o.reduce(((e,r)=>{if(r){if(Z(e)){const n=r(e,t);return void 0===n?e:n}if(X(e))return Ae(e,(e=>r(e,t)));{const n=r(e,t);if(void 0===n){if(null===e)return e;throw new Error("A case reducer on a non-draftable value must not return undefined")}return n}}return e}),e)}return o.getInitialState=r,o}(e.initialState,(e=>{for(let t in i)e.addCase(t,i[t]);for(let t of o.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of r)e.addMatcher(t.matcher,t.reducer);n&&e.addDefaultCase(n)}))}s.forEach((n=>{const s=i[n],o={reducerName:n,type:xt(r,n),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(s)?function({type:e,reducerName:t,createNotation:r},n,i){let s,o;if("reducer"in n){if(r&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(n))throw new Error("Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.");s=n.reducer,o=n.prepare}else s=n;i.addCase(e,s).exposeCaseReducer(t,s).exposeAction(t,o?rt(e,o):rt(e))}(o,s,a):function({type:e,reducerName:t},r,n,i){if(!i)throw new Error("Cannot use `create.asyncThunk` in the built-in `createSlice`. Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.");const{payloadCreator:s,fulfilled:o,pending:a,rejected:c,settled:d,options:l}=r,u=i(e,s,l);n.exposeAction(t,u),o&&n.addCase(u.fulfilled,o);a&&n.addCase(u.pending,a);c&&n.addCase(u.rejected,c);d&&n.addMatcher(u.settled,d);n.exposeCaseReducer(t,{fulfilled:o||At,pending:a||At,rejected:c||At,settled:d||At})}(o,s,a,t)}));const d=e=>e,l=new Map;let u;function p(e,t){return u||(u=c()),u(e,t)}function h(){return u||(u=c()),u.getInitialState()}function f(t,r=!1){function n(e){let n=e[t];if(void 0===n){if(!r)throw new Error("selectSlice returned undefined for an uninjected slice reducer");n=h()}return n}function i(t=d){const n=ct(l,r,{insert:()=>new WeakMap});return ct(n,t,{insert:()=>{const n={};for(const[i,s]of Object.entries(e.selectors??{}))n[i]=jt(s,t,h,r);return n}})}return{reducerPath:t,getSelectors:i,get selectors(){return i(n)},selectSlice:n}}const m={name:r,reducer:p,actions:o.actionCreators,caseReducers:o.sliceCaseReducersByName,getInitialState:h,...f(n),injectInto(e,{reducerPath:t,...r}={}){const i=t??n;return e.inject({reducerPath:i,reducer:p},r),{...m,...f(i,!0)}}};return m}}function jt(e,t,r,n){function i(i,...s){let o=t(i);if(void 0===o){if(!n)throw new Error("selectState returned undefined for an uninjected slice reducer");o=r()}return e(o,...s)}return i.unwrapped=e,i}var Lt=Mt();function At(){}var Nt="listener",Bt="completed",Ft="cancelled",zt=`task-${Ft}`,Ut=`task-${Bt}`,$t=`${Nt}-${Ft}`,Vt=`${Nt}-${Bt}`,Gt=class{constructor(e){this.code=e,this.message=`task ${Ft} (reason: ${e})`}name="TaskAbortError";message},qt=(e,t)=>{if("function"!=typeof e)throw new Error(`${t} is not a function`)},Ht=()=>{},Wt=(e,t=Ht)=>(e.catch(t),e),Kt=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),Jt=(e,t)=>{const r=e.signal;r.aborted||("reason"in r||Object.defineProperty(r,"reason",{enumerable:!0,value:t,configurable:!0,writable:!0}),e.abort(t))},Qt=e=>{if(e.aborted){const{reason:t}=e;throw new Gt(t)}};function Yt(e,t){let r=Ht;return new Promise(((n,i)=>{const s=()=>i(new Gt(e.reason));e.aborted?s():(r=Kt(e,s),t.finally((()=>r())).then(n,i))})).finally((()=>{r=Ht}))}var Zt=e=>t=>Wt(Yt(e,t).then((t=>(Qt(e),t)))),Xt=e=>{const t=Zt(e);return e=>t(new Promise((t=>setTimeout(t,e))))},{assign:er}=Object,tr={},rr="listenerMiddleware",nr=(e,t)=>(r,n)=>{qt(r,"taskExecutor");const i=new AbortController;var s;s=i,Kt(e,(()=>Jt(s,e.reason)));const o=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof Gt?"cancelled":"rejected",error:e}}finally{t?.()}})((async()=>{Qt(e),Qt(i.signal);const t=await r({pause:Zt(i.signal),delay:Xt(i.signal),signal:i.signal});return Qt(i.signal),t}),(()=>Jt(i,Ut)));return n?.autoJoin&&t.push(o.catch(Ht)),{result:Zt(e)(o),cancel(){Jt(i,zt)}}},ir=(e,t)=>(r,n)=>Wt((async(r,n)=>{Qt(t);let i=()=>{};const s=[new Promise(((t,n)=>{let s=e({predicate:r,effect:(e,r)=>{r.unsubscribe(),t([e,r.getState(),r.getOriginalState()])}});i=()=>{s(),n()}}))];null!=n&&s.push(new Promise((e=>setTimeout(e,n,null))));try{const e=await Yt(t,Promise.race(s));return Qt(t),e}finally{i()}})(r,n)),sr=e=>{let{type:t,actionCreator:r,matcher:n,predicate:i,effect:s}=e;if(t)i=rt(t).match;else if(r)t=r.type,i=r.match;else if(n)i=n;else if(!i)throw new Error("Creating or removing a listener requires one of the known fields for matching an action");return qt(s,"options.listener"),{predicate:i,type:t,effect:s}},or=Object.assign((e=>{const{type:t,predicate:r,effect:n}=sr(e);return{id:Ct(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error("Unsubscribe not initialized")}}}),{withTypes:()=>or}),ar=e=>{e.pending.forEach((e=>{Jt(e,$t)}))},cr=(e,t,r)=>{try{e(t,r)}catch(e){setTimeout((()=>{throw e}),0)}},dr=Object.assign(rt(`${rr}/add`),{withTypes:()=>dr}),lr=rt(`${rr}/removeAll`),ur=Object.assign(rt(`${rr}/remove`),{withTypes:()=>ur}),pr=(...e)=>{console.error(`${rr}/error`,...e)};function hr(){}function fr(){fr.init.call(this)}function mr(e){return void 0===e._maxListeners?fr.defaultMaxListeners:e._maxListeners}function gr(e,t,r,n){var i,s,o,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((s=e._events)?(s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),o=s[t]):(s=e._events=new hr,e._eventsCount=0),o){if("function"==typeof o?o=s[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),!o.warned&&(i=mr(e))&&i>0&&o.length>i){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=s[t]=r,++e._eventsCount;return e}function vr(e,t,r){var n=!1;function i(){e.removeListener(t,i),n||(n=!0,r.apply(e,arguments))}return i.listener=r,i}function br(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function yr(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}hr.prototype=Object.create(null),fr.EventEmitter=fr,fr.usingDomains=!1,fr.prototype.domain=void 0,fr.prototype._events=void 0,fr.prototype._maxListeners=void 0,fr.defaultMaxListeners=10,fr.init=function(){this.domain=null,fr.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new hr,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},fr.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},fr.prototype.getMaxListeners=function(){return mr(this)},fr.prototype.emit=function(e){var t,r,n,i,s,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(r=o[e]))return!1;var l="function"==typeof r;switch(n=arguments.length){case 1:!function(e,t,r){if(t)e.call(r);else for(var n=e.length,i=yr(e,n),s=0;s<n;++s)i[s].call(r)}(r,l,this);break;case 2:!function(e,t,r,n){if(t)e.call(r,n);else for(var i=e.length,s=yr(e,i),o=0;o<i;++o)s[o].call(r,n)}(r,l,this,arguments[1]);break;case 3:!function(e,t,r,n,i){if(t)e.call(r,n,i);else for(var s=e.length,o=yr(e,s),a=0;a<s;++a)o[a].call(r,n,i)}(r,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,r,n,i,s){if(t)e.call(r,n,i,s);else for(var o=e.length,a=yr(e,o),c=0;c<o;++c)a[c].call(r,n,i,s)}(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),s=1;s<n;s++)i[s-1]=arguments[s];!function(e,t,r,n){if(t)e.apply(r,n);else for(var i=e.length,s=yr(e,i),o=0;o<i;++o)s[o].apply(r,n)}(r,l,this,i)}return!0},fr.prototype.addListener=function(e,t){return gr(this,e,t,!1)},fr.prototype.on=fr.prototype.addListener,fr.prototype.prependListener=function(e,t){return gr(this,e,t,!0)},fr.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,vr(this,e,t)),this},fr.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,vr(this,e,t)),this},fr.prototype.removeListener=function(e,t){var r,n,i,s,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(n=this._events))return this;if(!(r=n[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new hr:(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(i=-1,s=r.length;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){o=r[s].listener,i=s;break}if(i<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new hr,this;delete n[e]}else!function(e,t){for(var r=t,n=r+1,i=e.length;n<i;r+=1,n+=1)e[r]=e[n];e.pop()}(r,i);n.removeListener&&this.emit("removeListener",e,o||t)}return this},fr.prototype.off=function(e,t){return this.removeListener(e,t)},fr.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new hr,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new hr:delete r[e]),this;if(0===arguments.length){for(var n,i=Object.keys(r),s=0;s<i.length;++s)"removeListener"!==(n=i[s])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=new hr,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},fr.prototype.listeners=function(e){var t,r,n=this._events;return r=n&&(t=n[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[],r},fr.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):br.call(e,t)},fr.prototype.listenerCount=br,fr.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var _r,wr,Sr=Object.freeze({__proto__:null,EventEmitter:fr,default:fr}),Cr={},Rr={exports:{}};function Pr(){if(wr)return _r;wr=1;var e=1e3,t=60*e,r=60*t,n=24*r,i=7*n,s=365.25*n;function o(e,t,r,n){var i=t>=1.5*r;return Math.round(e/r)+" "+n+(i?"s":"")}return _r=function(a,c){c=c||{};var d=typeof a;if("string"===d&&a.length>0)return function(o){if((o=String(o)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(o);if(!a)return;var c=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*s;case"weeks":case"week":case"w":return c*i;case"days":case"day":case"d":return c*n;case"hours":case"hour":case"hrs":case"hr":case"h":return c*r;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(a);if("number"===d&&isFinite(a))return c.long?function(i){var s=Math.abs(i);if(s>=n)return o(i,s,n,"day");if(s>=r)return o(i,s,r,"hour");if(s>=t)return o(i,s,t,"minute");if(s>=e)return o(i,s,e,"second");return i+" ms"}(a):function(i){var s=Math.abs(i);if(s>=n)return Math.round(i/n)+"d";if(s>=r)return Math.round(i/r)+"h";if(s>=t)return Math.round(i/t)+"m";if(s>=e)return Math.round(i/e)+"s";return i+"ms"}(a);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))},_r}var Tr=function(e){function t(e){let n,i,s,o=null;function a(...e){if(!a.enabled)return;const r=a,i=Number(new Date),s=i-(n||i);r.diff=s,r.prev=n,r.curr=i,n=i,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let o=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((n,i)=>{if("%%"===n)return"%";o++;const s=t.formatters[i];if("function"==typeof s){const t=e[o];n=s.call(r,t),e.splice(o,1),o--}return n})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=r,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==o?o:(i!==t.namespaces&&(i=t.namespaces,s=t.enabled(e)),s),set:e=>{o=e}}),"function"==typeof t.init&&t.init(a),a}function r(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function n(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(n),...t.skips.map(n).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),i=n.length;for(r=0;r<i;r++)n[r]&&("-"===(e=n[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.slice(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,n;for(r=0,n=t.skips.length;r<n;r++)if(t.skips[r].test(e))return!1;for(r=0,n=t.names.length;r<n;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=Pr(),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t};!function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(i=n))})),t.splice(i,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Tr(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Rr,Rr.exports);var kr=Rr.exports,Er={},Or={exports:{}};!function(e,t){!function(r,n){var i="function",s="undefined",o="object",a="string",c="major",d="model",l="name",u="type",p="vendor",h="version",f="architecture",m="console",g="mobile",v="tablet",b="smarttv",y="wearable",_="embedded",w="Amazon",S="Apple",C="ASUS",R="BlackBerry",P="Browser",T="Chrome",k="Firefox",E="Google",O="Huawei",D="LG",I="Microsoft",x="Motorola",M="Opera",j="Samsung",L="Sharp",A="Sony",N="Xiaomi",B="Zebra",F="Facebook",z="Chromium OS",U="Mac OS",$=function(e){for(var t={},r=0;r<e.length;r++)t[e[r].toUpperCase()]=e[r];return t},V=function(e,t){return typeof e===a&&-1!==G(t).indexOf(G(e))},G=function(e){return e.toLowerCase()},q=function(e,t){if(typeof e===a)return e=e.replace(/^\s\s*/,""),typeof t===s?e:e.substring(0,500)},H=function(e,t){for(var r,s,a,c,d,l,u=0;u<t.length&&!d;){var p=t[u],h=t[u+1];for(r=s=0;r<p.length&&!d&&p[r];)if(d=p[r++].exec(e))for(a=0;a<h.length;a++)l=d[++s],typeof(c=h[a])===o&&c.length>0?2===c.length?typeof c[1]==i?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==i||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):n:this[c[0]]=l?c[1].call(this,l,c[2]):n:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):n):this[c]=l||n;u+=2}},W=function(e,t){for(var r in t)if(typeof t[r]===o&&t[r].length>0){for(var i=0;i<t[r].length;i++)if(V(t[r][i],e))return"?"===r?n:r}else if(V(t[r],e))return"?"===r?n:r;return e},K={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},J={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[h,[l,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[h,[l,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[l,h],[/opios[\/ ]+([\w\.]+)/i],[h,[l,M+" Mini"]],[/\bopr\/([\w\.]+)/i],[h,[l,M]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[h,[l,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[l,h],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[h,[l,"UC"+P]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[h,[l,"WeChat"]],[/konqueror\/([\w\.]+)/i],[h,[l,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[h,[l,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[h,[l,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[h,[l,"Smart Lenovo "+P]],[/(avast|avg)\/([\w\.]+)/i],[[l,/(.+)/,"$1 Secure "+P],h],[/\bfocus\/([\w\.]+)/i],[h,[l,k+" Focus"]],[/\bopt\/([\w\.]+)/i],[h,[l,M+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[h,[l,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[h,[l,"Dolphin"]],[/coast\/([\w\.]+)/i],[h,[l,M+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[h,[l,"MIUI "+P]],[/fxios\/([-\w\.]+)/i],[h,[l,k]],[/\bqihu|(qi?ho?o?|360)browser/i],[[l,"360 "+P]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[l,/(.+)/,"$1 "+P],h],[/samsungbrowser\/([\w\.]+)/i],[h,[l,j+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[l,/_/g," "],h],[/metasr[\/ ]?([\d\.]+)/i],[h,[l,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[l,"Sogou Mobile"],h],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[l,h],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[l],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[l,F],h],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[l,h],[/\bgsa\/([\w\.]+) .*safari\//i],[h,[l,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[h,[l,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[h,[l,T+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[l,T+" WebView"],h],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[h,[l,"Android "+P]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[l,h],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[h,[l,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[h,l],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[l,[h,W,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[l,h],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[l,"Netscape"],h],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[h,[l,k+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[l,h],[/(cobalt)\/([\w\.]+)/i],[l,[h,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[f,"amd64"]],[/(ia32(?=;))/i],[[f,G]],[/((?:i[346]|x)86)[;\)]/i],[[f,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[f,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[f,"armhf"]],[/windows (ce|mobile); ppc;/i],[[f,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[f,/ower/,"",G]],[/(sun4\w)[;\)]/i],[[f,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[f,G]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[d,[p,j],[u,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[d,[p,j],[u,g]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[d,[p,S],[u,g]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[d,[p,S],[u,v]],[/(macintosh);/i],[d,[p,S]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[d,[p,L],[u,g]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[d,[p,O],[u,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[d,[p,O],[u,g]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[d,/_/g," "],[p,N],[u,g]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[d,/_/g," "],[p,N],[u,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[d,[p,"OPPO"],[u,g]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[d,[p,"Vivo"],[u,g]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[d,[p,"Realme"],[u,g]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[d,[p,x],[u,g]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[d,[p,x],[u,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[d,[p,D],[u,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[d,[p,D],[u,g]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[d,[p,"Lenovo"],[u,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[d,/_/g," "],[p,"Nokia"],[u,g]],[/(pixel c)\b/i],[d,[p,E],[u,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[d,[p,E],[u,g]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[d,[p,A],[u,g]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[d,"Xperia Tablet"],[p,A],[u,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[d,[p,"OnePlus"],[u,g]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[d,[p,w],[u,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[d,/(.+)/g,"Fire Phone $1"],[p,w],[u,g]],[/(playbook);[-\w\),; ]+(rim)/i],[d,p,[u,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[d,[p,R],[u,g]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[d,[p,C],[u,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[d,[p,C],[u,g]],[/(nexus 9)/i],[d,[p,"HTC"],[u,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[p,[d,/_/g," "],[u,g]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[d,[p,"Acer"],[u,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[d,[p,"Meizu"],[u,g]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[d,[p,"Ulefone"],[u,g]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[p,d,[u,g]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[p,d,[u,v]],[/(surface duo)/i],[d,[p,I],[u,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[d,[p,"Fairphone"],[u,g]],[/(u304aa)/i],[d,[p,"AT&T"],[u,g]],[/\bsie-(\w*)/i],[d,[p,"Siemens"],[u,g]],[/\b(rct\w+) b/i],[d,[p,"RCA"],[u,v]],[/\b(venue[\d ]{2,7}) b/i],[d,[p,"Dell"],[u,v]],[/\b(q(?:mv|ta)\w+) b/i],[d,[p,"Verizon"],[u,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[d,[p,"Barnes & Noble"],[u,v]],[/\b(tm\d{3}\w+) b/i],[d,[p,"NuVision"],[u,v]],[/\b(k88) b/i],[d,[p,"ZTE"],[u,v]],[/\b(nx\d{3}j) b/i],[d,[p,"ZTE"],[u,g]],[/\b(gen\d{3}) b.+49h/i],[d,[p,"Swiss"],[u,g]],[/\b(zur\d{3}) b/i],[d,[p,"Swiss"],[u,v]],[/\b((zeki)?tb.*\b) b/i],[d,[p,"Zeki"],[u,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[p,"Dragon Touch"],d,[u,v]],[/\b(ns-?\w{0,9}) b/i],[d,[p,"Insignia"],[u,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[d,[p,"NextBook"],[u,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[p,"Voice"],d,[u,g]],[/\b(lvtel\-)?(v1[12]) b/i],[[p,"LvTel"],d,[u,g]],[/\b(ph-1) /i],[d,[p,"Essential"],[u,g]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[d,[p,"Envizen"],[u,v]],[/\b(trio[-\w\. ]+) b/i],[d,[p,"MachSpeed"],[u,v]],[/\btu_(1491) b/i],[d,[p,"Rotor"],[u,v]],[/(shield[\w ]+) b/i],[d,[p,"Nvidia"],[u,v]],[/(sprint) (\w+)/i],[p,d,[u,g]],[/(kin\.[onetw]{3})/i],[[d,/\./g," "],[p,I],[u,g]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[d,[p,B],[u,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[d,[p,B],[u,g]],[/smart-tv.+(samsung)/i],[p,[u,b]],[/hbbtv.+maple;(\d+)/i],[[d,/^/,"SmartTV"],[p,j],[u,b]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[p,D],[u,b]],[/(apple) ?tv/i],[p,[d,S+" TV"],[u,b]],[/crkey/i],[[d,T+"cast"],[p,E],[u,b]],[/droid.+aft(\w+)( bui|\))/i],[d,[p,w],[u,b]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[d,[p,L],[u,b]],[/(bravia[\w ]+)( bui|\))/i],[d,[p,A],[u,b]],[/(mitv-\w{5}) bui/i],[d,[p,N],[u,b]],[/Hbbtv.*(technisat) (.*);/i],[p,d,[u,b]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[p,q],[d,q],[u,b]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[u,b]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[p,d,[u,m]],[/droid.+; (shield) bui/i],[d,[p,"Nvidia"],[u,m]],[/(playstation [345portablevi]+)/i],[d,[p,A],[u,m]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[d,[p,I],[u,m]],[/((pebble))app/i],[p,d,[u,y]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[d,[p,S],[u,y]],[/droid.+; (glass) \d/i],[d,[p,E],[u,y]],[/droid.+; (wt63?0{2,3})\)/i],[d,[p,B],[u,y]],[/(quest( 2| pro)?)/i],[d,[p,F],[u,y]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[p,[u,_]],[/(aeobc)\b/i],[d,[p,w],[u,_]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[d,[u,g]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[d,[u,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[u,v]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[u,g]],[/(android[-\w\. ]{0,9});.+buil/i],[d,[p,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[h,[l,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[h,[l,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[l,h],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[h,l]],os:[[/microsoft (windows) (vista|xp)/i],[l,h],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[l,[h,W,K]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[h,W,K],[l,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[h,/_/g,"."],[l,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[l,U],[h,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[h,l],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[l,h],[/\(bb(10);/i],[h,[l,R]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[h,[l,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[h,[l,k+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[h,[l,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[h,[l,"watchOS"]],[/crkey\/([\d\.]+)/i],[h,[l,T+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[l,z],h],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[l,h],[/(sunos) ?([\w\.\d]*)/i],[[l,"Solaris"],h],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[l,h]]},Q=function(e,t){if(typeof e===o&&(t=e,e=n),!(this instanceof Q))return new Q(e,t).getResult();var m=typeof r!==s&&r.navigator?r.navigator:n,b=e||(m&&m.userAgent?m.userAgent:""),y=m&&m.userAgentData?m.userAgentData:n,_=t?function(e,t){var r={};for(var n in e)t[n]&&t[n].length%2==0?r[n]=t[n].concat(e[n]):r[n]=e[n];return r}(J,t):J,w=m&&m.userAgent==b;return this.getBrowser=function(){var e,t={};return t[l]=n,t[h]=n,H.call(t,b,_.browser),t[c]=typeof(e=t[h])===a?e.replace(/[^\d\.]/g,"").split(".")[0]:n,w&&m&&m.brave&&typeof m.brave.isBrave==i&&(t[l]="Brave"),t},this.getCPU=function(){var e={};return e[f]=n,H.call(e,b,_.cpu),e},this.getDevice=function(){var e={};return e[p]=n,e[d]=n,e[u]=n,H.call(e,b,_.device),w&&!e[u]&&y&&y.mobile&&(e[u]=g),w&&"Macintosh"==e[d]&&m&&typeof m.standalone!==s&&m.maxTouchPoints&&m.maxTouchPoints>2&&(e[d]="iPad",e[u]=v),e},this.getEngine=function(){var e={};return e[l]=n,e[h]=n,H.call(e,b,_.engine),e},this.getOS=function(){var e={};return e[l]=n,e[h]=n,H.call(e,b,_.os),w&&!e[l]&&y&&"Unknown"!=y.platform&&(e[l]=y.platform.replace(/chrome os/i,z).replace(/macos/i,U)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return b},this.setUA=function(e){return b=typeof e===a&&e.length>500?q(e,500):e,this},this.setUA(b),this};Q.VERSION="1.0.37",Q.BROWSER=$([l,h,c]),Q.CPU=$([f]),Q.DEVICE=$([d,p,u,m,g,b,v,y,_]),Q.ENGINE=Q.OS=$([l,h]),e.exports&&(t=e.exports=Q),t.UAParser=Q;var Y=typeof r!==s&&(r.jQuery||r.Zepto);if(Y&&!Y.ua){var Z=new Q;Y.ua=Z.getResult(),Y.ua.get=function(){return Z.getUA()},Y.ua.set=function(e){Z.setUA(e);var t=Z.getResult();for(var r in t)Y.ua[r]=t[r]}}}("object"==typeof window?window:a)}(Or,Or.exports);var Dr=Or.exports,Ir={},xr=a&&a.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ir,"__esModule",{value:!0}),Ir.Logger=void 0;const Mr=xr(kr),jr="mediasoup-client";Ir.Logger=class{constructor(e){e?(this._debug=(0,Mr.default)(`${jr}:${e}`),this._warn=(0,Mr.default)(`${jr}:WARN:${e}`),this._error=(0,Mr.default)(`${jr}:ERROR:${e}`)):(this._debug=(0,Mr.default)(jr),this._warn=(0,Mr.default)(`${jr}:WARN`),this._error=(0,Mr.default)(`${jr}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}};var Lr={},Ar=d(Sr);Object.defineProperty(Lr,"__esModule",{value:!0}),Lr.EnhancedEventEmitter=void 0;const Nr=Ar,Br=new Ir.Logger("EnhancedEventEmitter");class Fr extends Nr.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}emit(e,...t){return super.emit(e,...t)}safeEmit(e,...t){const r=super.listenerCount(e);try{return super.emit(e,...t)}catch(t){return Br.error("safeEmit() | event listener threw an error [eventName:%s]:%o",e,t),Boolean(r)}}on(e,t){return super.on(e,t),this}off(e,t){return super.off(e,t),this}addListener(e,t){return super.on(e,t),this}prependListener(e,t){return super.prependListener(e,t),this}once(e,t){return super.once(e,t),this}prependOnceListener(e,t){return super.prependOnceListener(e,t),this}removeListener(e,t){return super.off(e,t),this}removeAllListeners(e){return super.removeAllListeners(e),this}listenerCount(e){return super.listenerCount(e)}listeners(e){return super.listeners(e)}rawListeners(e){return super.rawListeners(e)}}Lr.EnhancedEventEmitter=Fr;var zr={};Object.defineProperty(zr,"__esModule",{value:!0}),zr.InvalidStateError=zr.UnsupportedError=void 0;class Ur extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Ur):this.stack=new Error(e).stack}}zr.UnsupportedError=Ur;class $r extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,$r):this.stack=new Error(e).stack}}zr.InvalidStateError=$r;var Vr={};Object.defineProperty(Vr,"__esModule",{value:!0}),Vr.generateRandomNumber=Vr.clone=void 0,Vr.clone=function(e){return void 0===e?void 0:Number.isNaN(e)?NaN:"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))},Vr.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var Gr={},qr={},Hr={},Wr=a&&a.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Hr,"__esModule",{value:!0}),Hr.Logger=void 0;const Kr=Wr(kr),Jr="h264-profile-level-id";Hr.Logger=class{constructor(e){e?(this._debug=(0,Kr.default)(`${Jr}:${e}`),this._warn=(0,Kr.default)(`${Jr}:WARN:${e}`),this._error=(0,Kr.default)(`${Jr}:ERROR:${e}`)):(this._debug=(0,Kr.default)(Jr),this._warn=(0,Kr.default)(`${Jr}:WARN`),this._error=(0,Kr.default)(`${Jr}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}},Object.defineProperty(qr,"__esModule",{value:!0}),qr.generateProfileLevelIdStringForAnswer=qr.isSameProfile=qr.parseSdpProfileLevelId=qr.levelToString=qr.profileToString=qr.profileLevelIdToString=qr.parseProfileLevelId=qr.ProfileLevelId=qr.Level=qr.Profile=void 0;const Qr=new Hr.Logger;var Yr,Zr;!function(e){e[e.ConstrainedBaseline=1]="ConstrainedBaseline",e[e.Baseline=2]="Baseline",e[e.Main=3]="Main",e[e.ConstrainedHigh=4]="ConstrainedHigh",e[e.High=5]="High",e[e.PredictiveHigh444=6]="PredictiveHigh444"}(Yr||(qr.Profile=Yr={})),function(e){e[e.L1_b=0]="L1_b",e[e.L1=10]="L1",e[e.L1_1=11]="L1_1",e[e.L1_2=12]="L1_2",e[e.L1_3=13]="L1_3",e[e.L2=20]="L2",e[e.L2_1=21]="L2_1",e[e.L2_2=22]="L2_2",e[e.L3=30]="L3",e[e.L3_1=31]="L3_1",e[e.L3_2=32]="L3_2",e[e.L4=40]="L4",e[e.L4_1=41]="L4_1",e[e.L4_2=42]="L4_2",e[e.L5=50]="L5",e[e.L5_1=51]="L5_1",e[e.L5_2=52]="L5_2"}(Zr||(qr.Level=Zr={}));class Xr{constructor(e,t){this.profile=e,this.level=t}}qr.ProfileLevelId=Xr;const en=new Xr(Yr.ConstrainedBaseline,Zr.L3_1);class tn{constructor(e){this.mask=~cn("x",e),this.masked_value=cn("1",e)}isMatch(e){return this.masked_value===(e&this.mask)}}class rn{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const nn=[new rn(66,new tn("x1xx0000"),Yr.ConstrainedBaseline),new rn(77,new tn("1xxx0000"),Yr.ConstrainedBaseline),new rn(88,new tn("11xx0000"),Yr.ConstrainedBaseline),new rn(66,new tn("x0xx0000"),Yr.Baseline),new rn(88,new tn("10xx0000"),Yr.Baseline),new rn(77,new tn("0x0x0000"),Yr.Main),new rn(100,new tn("00000000"),Yr.High),new rn(100,new tn("00001100"),Yr.ConstrainedHigh),new rn(244,new tn("00000000"),Yr.PredictiveHigh444)];function sn(e){if("string"!=typeof e||6!==e.length)return;const t=parseInt(e,16);if(0===t)return;const r=255&t,n=t>>8&255,i=t>>16&255;let s;switch(r){case Zr.L1_1:s=0!=(16&n)?Zr.L1_b:Zr.L1_1;break;case Zr.L1:case Zr.L1_2:case Zr.L1_3:case Zr.L2:case Zr.L2_1:case Zr.L2_2:case Zr.L3:case Zr.L3_1:case Zr.L3_2:case Zr.L4:case Zr.L4_1:case Zr.L4_2:case Zr.L5:case Zr.L5_1:case Zr.L5_2:s=r;break;default:return void Qr.warn(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${r}]`)}for(const e of nn)if(i===e.profile_idc&&e.profile_iop.isMatch(n))return new Xr(e.profile,s);Qr.warn(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${i}, profile_iop:${n}]`)}function on(e){if(e.level==Zr.L1_b)switch(e.profile){case Yr.ConstrainedBaseline:return"42f00b";case Yr.Baseline:return"42100b";case Yr.Main:return"4d100b";default:return void Qr.warn(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`)}let t;switch(e.profile){case Yr.ConstrainedBaseline:t="42e0";break;case Yr.Baseline:t="4200";break;case Yr.Main:t="4d00";break;case Yr.ConstrainedHigh:t="640c";break;case Yr.High:t="6400";break;case Yr.PredictiveHigh444:t="f400";break;default:return void Qr.warn(`profileLevelIdToString() | unrecognized profile ${e.profile}`)}let r=e.level.toString(16);return 1===r.length&&(r=`0${r}`),`${t}${r}`}function an(e={}){const t=e["profile-level-id"];return t?sn(t):en}function cn(e,t){return Number(t[0]===e)<<7|Number(t[1]===e)<<6|Number(t[2]===e)<<5|Number(t[3]===e)<<4|Number(t[4]===e)<<3|Number(t[5]===e)<<2|Number(t[6]===e)<<1|Number(t[7]===e)<<0}function dn(e={}){const t=e["level-asymmetry-allowed"];return!0===t||1===t||"1"===t}qr.parseProfileLevelId=sn,qr.profileLevelIdToString=on,qr.profileToString=function(e){switch(e){case Yr.ConstrainedBaseline:return"ConstrainedBaseline";case Yr.Baseline:return"Baseline";case Yr.Main:return"Main";case Yr.ConstrainedHigh:return"ConstrainedHigh";case Yr.High:return"High";case Yr.PredictiveHigh444:return"PredictiveHigh444";default:return void Qr.warn(`profileToString() | unrecognized profile ${e}`)}},qr.levelToString=function(e){switch(e){case Zr.L1_b:return"1b";case Zr.L1:return"1";case Zr.L1_1:return"1.1";case Zr.L1_2:return"1.2";case Zr.L1_3:return"1.3";case Zr.L2:return"2";case Zr.L2_1:return"2.1";case Zr.L2_2:return"2.2";case Zr.L3:return"3";case Zr.L3_1:return"3.1";case Zr.L3_2:return"3.2";case Zr.L4:return"4";case Zr.L4_1:return"4.1";case Zr.L4_2:return"4.2";case Zr.L5:return"5";case Zr.L5_1:return"5.1";case Zr.L5_2:return"5.2";default:return void Qr.warn(`levelToString() | unrecognized level ${e}`)}},qr.parseSdpProfileLevelId=an,qr.isSameProfile=function(e={},t={}){const r=an(e),n=an(t);return Boolean(r&&n&&r.profile===n.profile)},qr.generateProfileLevelIdStringForAnswer=function(e={},t={}){if(!e["profile-level-id"]&&!t["profile-level-id"])return void Qr.warn("generateProfileLevelIdStringForAnswer() | profile-level-id missing in local and remote params");const r=an(e),n=an(t);if(!r)throw new TypeError("invalid local_profile_level_id");if(!n)throw new TypeError("invalid remote_profile_level_id");if(r.profile!==n.profile)throw new TypeError("H264 Profile mismatch");const i=dn(e)&&dn(t),s=r.level,o=n.level,a=function(e,t){return e===Zr.L1_b?t!==Zr.L1&&t!==Zr.L1_b:t===Zr.L1_b?e!==Zr.L1:e<t}(c=s,d=o)?c:d;var c,d;const l=i?s:a;return Qr.debug(`generateProfileLevelIdStringForAnswer() | result [profile:${r.profile}, level:${l}]`),on(new Xr(r.profile,l))};var ln=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),un=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),pn=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ln(t,e,r);return un(t,e),t};Object.defineProperty(Gr,"__esModule",{value:!0}),Gr.canReceive=Gr.canSend=Gr.generateProbatorRtpParameters=Gr.reduceCodecs=Gr.getSendingRemoteRtpParameters=Gr.getSendingRtpParameters=Gr.getRecvRtpCapabilities=Gr.getExtendedRtpCapabilities=Gr.validateSctpCapabilities=Gr.validateSctpStreamParameters=Gr.validateRtpParameters=Gr.validateRtpCapabilities=void 0;const hn=pn(qr),fn=pn(Vr);function mn(e){if("object"!=typeof e)throw new TypeError("params is not an object");if(e.mid&&"string"!=typeof e.mid)throw new TypeError("params.mid is not a string");if(!Array.isArray(e.codecs))throw new TypeError("missing params.codecs");for(const t of e.codecs)yn(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("params.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)_n(t);if(e.encodings&&!Array.isArray(e.encodings))throw new TypeError("params.encodings is not an array");e.encodings||(e.encodings=[]);for(const t of e.encodings)wn(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),function(e){if("object"!=typeof e)throw new TypeError("rtcp is not an object");if(e.cname&&"string"!=typeof e.cname)throw new TypeError("invalid rtcp.cname");e.reducedSize&&"boolean"==typeof e.reducedSize||(e.reducedSize=!0)}(e.rtcp)}function gn(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if(e.kind=r[1].toLowerCase(),e.preferredPayloadType&&"number"!=typeof e.preferredPayloadType)throw new TypeError("invalid codec.preferredPayloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===e.kind?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)vn(t)}function vn(e){if("object"!=typeof e)throw new TypeError("fb is not an object");if(!e.type||"string"!=typeof e.type)throw new TypeError("missing fb.type");e.parameter&&"string"==typeof e.parameter||(e.parameter="")}function bn(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if("audio"!==e.kind&&"video"!==e.kind)throw new TypeError("invalid ext.kind");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.preferredId)throw new TypeError("missing ext.preferredId");if(e.preferredEncrypt&&"boolean"!=typeof e.preferredEncrypt)throw new TypeError("invalid ext.preferredEncrypt");if(e.preferredEncrypt||(e.preferredEncrypt=!1),e.direction&&"string"!=typeof e.direction)throw new TypeError("invalid ext.direction");e.direction||(e.direction="sendrecv")}function yn(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if("number"!=typeof e.payloadType)throw new TypeError("missing codec.payloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===r[1].toLowerCase()?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)vn(t)}function _n(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.id)throw new TypeError("missing ext.id");if(e.encrypt&&"boolean"!=typeof e.encrypt)throw new TypeError("invalid ext.encrypt");e.encrypt||(e.encrypt=!1),e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError("invalid header extension parameter")}}function wn(e){if("object"!=typeof e)throw new TypeError("encoding is not an object");if(e.ssrc&&"number"!=typeof e.ssrc)throw new TypeError("invalid encoding.ssrc");if(e.rid&&"string"!=typeof e.rid)throw new TypeError("invalid encoding.rid");if(e.rtx&&"object"!=typeof e.rtx)throw new TypeError("invalid encoding.rtx");if(e.rtx&&"number"!=typeof e.rtx.ssrc)throw new TypeError("missing encoding.rtx.ssrc");if(e.dtx&&"boolean"==typeof e.dtx||(e.dtx=!1),e.scalabilityMode&&"string"!=typeof e.scalabilityMode)throw new TypeError("invalid encoding.scalabilityMode")}function Sn(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function Cn(e,t,{strict:r=!1,modify:n=!1}={}){const i=e.mimeType.toLowerCase();if(i!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(i){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!hn.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=hn.generateProfileLevelIdStringForAnswer(e.parameters,t.parameters)}catch(e){return!1}n&&(r?(e.parameters["profile-level-id"]=r,t.parameters["profile-level-id"]=r):(delete e.parameters["profile-level-id"],delete t.parameters["profile-level-id"]))}break;case"video/vp9":if(r){if((e.parameters["profile-id"]||0)!==(t.parameters["profile-id"]||0))return!1}}return!0}function Rn(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Pn(e,t){const r=[];for(const n of e.rtcpFeedback||[]){const e=(t.rtcpFeedback||[]).find((e=>e.type===n.type&&(e.parameter===n.parameter||!e.parameter&&!n.parameter)));e&&r.push(e)}return r}Gr.validateRtpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(e.codecs&&!Array.isArray(e.codecs))throw new TypeError("caps.codecs is not an array");e.codecs||(e.codecs=[]);for(const t of e.codecs)gn(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("caps.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)bn(t)},Gr.validateRtpParameters=mn,Gr.validateSctpStreamParameters=function(e){if("object"!=typeof e)throw new TypeError("params is not an object");if("number"!=typeof e.streamId)throw new TypeError("missing params.streamId");let t=!1;if("boolean"==typeof e.ordered?t=!0:e.ordered=!0,e.maxPacketLifeTime&&"number"!=typeof e.maxPacketLifeTime)throw new TypeError("invalid params.maxPacketLifeTime");if(e.maxRetransmits&&"number"!=typeof e.maxRetransmits)throw new TypeError("invalid params.maxRetransmits");if(e.maxPacketLifeTime&&e.maxRetransmits)throw new TypeError("cannot provide both maxPacketLifeTime and maxRetransmits");if(t&&e.ordered&&(e.maxPacketLifeTime||e.maxRetransmits))throw new TypeError("cannot be ordered with maxPacketLifeTime or maxRetransmits");if(t||!e.maxPacketLifeTime&&!e.maxRetransmits||(e.ordered=!1),e.label&&"string"!=typeof e.label)throw new TypeError("invalid params.label");if(e.protocol&&"string"!=typeof e.protocol)throw new TypeError("invalid params.protocol")},Gr.validateSctpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(!e.numStreams||"object"!=typeof e.numStreams)throw new TypeError("missing caps.numStreams");!function(e){if("object"!=typeof e)throw new TypeError("numStreams is not an object");if("number"!=typeof e.OS)throw new TypeError("missing numStreams.OS");if("number"!=typeof e.MIS)throw new TypeError("missing numStreams.MIS")}(e.numStreams)},Gr.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const n of t.codecs||[]){if(Sn(n))continue;const t=(e.codecs||[]).find((e=>Cn(e,n,{strict:!0,modify:!0})));if(!t)continue;const i={mimeType:t.mimeType,kind:t.kind,clockRate:t.clockRate,channels:t.channels,localPayloadType:t.preferredPayloadType,localRtxPayloadType:void 0,remotePayloadType:n.preferredPayloadType,remoteRtxPayloadType:void 0,localParameters:t.parameters,remoteParameters:n.parameters,rtcpFeedback:Pn(t,n)};r.codecs.push(i)}for(const n of r.codecs){const r=e.codecs.find((e=>Sn(e)&&e.parameters.apt===n.localPayloadType)),i=t.codecs.find((e=>Sn(e)&&e.parameters.apt===n.remotePayloadType));r&&i&&(n.localRtxPayloadType=r.preferredPayloadType,n.remoteRtxPayloadType=i.preferredPayloadType)}for(const n of t.headerExtensions){const t=e.headerExtensions.find((e=>Rn(e,n)));if(!t)continue;const i={kind:n.kind,uri:n.uri,sendId:t.preferredId,recvId:n.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(n.direction){case"sendrecv":i.direction="sendrecv";break;case"recvonly":i.direction="sendonly";break;case"sendonly":i.direction="recvonly";break;case"inactive":i.direction="inactive"}r.headerExtensions.push(i)}return r},Gr.getRecvRtpCapabilities=function(e){const t={codecs:[],headerExtensions:[]};for(const r of e.codecs){const e={mimeType:r.mimeType,kind:r.kind,preferredPayloadType:r.remotePayloadType,clockRate:r.clockRate,channels:r.channels,parameters:r.localParameters,rtcpFeedback:r.rtcpFeedback};if(t.codecs.push(e),!r.remoteRtxPayloadType)continue;const n={mimeType:`${r.kind}/rtx`,kind:r.kind,preferredPayloadType:r.remoteRtxPayloadType,clockRate:r.clockRate,parameters:{apt:r.remotePayloadType},rtcpFeedback:[]};t.codecs.push(n)}for(const r of e.headerExtensions){if("sendrecv"!==r.direction&&"recvonly"!==r.direction)continue;const e={kind:r.kind,uri:r.uri,preferredId:r.recvId,preferredEncrypt:r.encrypt,direction:r.direction};t.headerExtensions.push(e)}return t},Gr.getSendingRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const n of t.codecs){if(n.kind!==e)continue;const t={mimeType:n.mimeType,payloadType:n.localPayloadType,clockRate:n.clockRate,channels:n.channels,parameters:n.localParameters,rtcpFeedback:n.rtcpFeedback};if(r.codecs.push(t),n.localRtxPayloadType){const e={mimeType:`${n.kind}/rtx`,payloadType:n.localRtxPayloadType,clockRate:n.clockRate,parameters:{apt:n.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const n of t.headerExtensions){if(n.kind&&n.kind!==e||"sendrecv"!==n.direction&&"sendonly"!==n.direction)continue;const t={uri:n.uri,id:n.sendId,encrypt:n.encrypt,parameters:{}};r.headerExtensions.push(t)}return r},Gr.getSendingRemoteRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const n of t.codecs){if(n.kind!==e)continue;const t={mimeType:n.mimeType,payloadType:n.localPayloadType,clockRate:n.clockRate,channels:n.channels,parameters:n.remoteParameters,rtcpFeedback:n.rtcpFeedback};if(r.codecs.push(t),n.localRtxPayloadType){const e={mimeType:`${n.kind}/rtx`,payloadType:n.localRtxPayloadType,clockRate:n.clockRate,parameters:{apt:n.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const n of t.headerExtensions){if(n.kind&&n.kind!==e||"sendrecv"!==n.direction&&"sendonly"!==n.direction)continue;const t={uri:n.uri,id:n.sendId,encrypt:n.encrypt,parameters:{}};r.headerExtensions.push(t)}if(r.headerExtensions.some((e=>"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"goog-remb"!==e.type));else if(r.headerExtensions.some((e=>"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type));else for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type&&"goog-remb"!==e.type));return r},Gr.reduceCodecs=function(e,t){const r=[];if(t){for(let n=0;n<e.length;++n)if(Cn(e[n],t)){r.push(e[n]),Sn(e[n+1])&&r.push(e[n+1]);break}if(0===r.length)throw new TypeError("no matching codec found")}else r.push(e[0]),Sn(e[1])&&r.push(e[1]);return r},Gr.generateProbatorRtpParameters=function(e){mn(e=fn.clone(e));const t={mid:"probator",codecs:[],headerExtensions:[],encodings:[{ssrc:1234}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=127,t.headerExtensions=e.headerExtensions,t},Gr.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},Gr.canReceive=function(e,t){if(mn(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var Tn={},kn={},En={};Object.defineProperty(En,"__esModule",{value:!0}),En.Logger=void 0;const On=kr,Dn="awaitqueue";En.Logger=class{constructor(e){e?(this._debug=(0,On.default)(`${Dn}:${e}`),this._warn=(0,On.default)(`${Dn}:WARN:${e}`),this._error=(0,On.default)(`${Dn}:ERROR:${e}`)):(this._debug=(0,On.default)(Dn),this._warn=(0,On.default)(`${Dn}:WARN`),this._error=(0,On.default)(`${Dn}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}},Object.defineProperty(kn,"__esModule",{value:!0}),kn.AwaitQueue=kn.AwaitQueueRemovedTaskError=kn.AwaitQueueStoppedError=void 0;const In=new En.Logger;class xn extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,xn)}}kn.AwaitQueueStoppedError=xn;class Mn extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,Mn)}}kn.AwaitQueueRemovedTaskError=Mn;
1
+ this.whereby=this.whereby||{},this.whereby.react=function(e,t,r){"use strict";function n(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}function i(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(r){if("default"!==r&&!(r in e)){var n=Object.getOwnPropertyDescriptor(t,r);Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:function(){return t[r]}})}}))})),Object.freeze(e)}var s=n(t),o=n(r),a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function c(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function d(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})})),r}var l,u={exports:{}},p={};u.exports=(l||(l=1,function(){"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error);var e=t,r="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},n=e.useSyncExternalStore,i=e.useRef,s=e.useEffect,o=e.useMemo,a=e.useDebugValue;p.useSyncExternalStoreWithSelector=function(e,t,c,d,l){var u,p=i(null);null===p.current?(u={hasValue:!1,value:null},p.current=u):u=p.current;var h=o((function(){var e,n,i=!1,s=function(t){if(!i){i=!0,e=t;var s=d(t);if(void 0!==l&&u.hasValue){var o=u.value;if(l(o,s))return n=o,o}return n=s,s}var a=n;if(r(e,t))return a;var c=d(t);return void 0!==l&&l(a,c)?a:(e=t,n=c,c)},o=void 0===c?null:c;return[function(){return s(t())},null===o?void 0:function(){return s(o())}]}),[t,c,d,l]),f=h[0],m=h[1],g=n(e,f,m);return s((function(){u.hasValue=!0,u.value=g}),[g]),a(g),g},"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error)}()),p);var h=u.exports,f="default"in s?s.default:s,m=Symbol.for("react-redux-context"),g="undefined"!=typeof globalThis?globalThis:{};function v(){if(!f.createContext)return{};const e=g[m]??(g[m]=new Map);let t=e.get(f.createContext);return t||(t=f.createContext(null),t.displayName="ReactRedux",e.set(f.createContext,t)),t}var b=v();function y(e=b){return function(){const t=f.useContext(e);if(!t)throw new Error("could not find react-redux context value; please ensure the component is wrapped in a <Provider>");return t}}var _=y(),w=()=>{throw new Error("uSES not initialized!")},S=(e,t)=>e===t;function C(e=b){const t=e===b?_:y(e),r=(e,r={})=>{const{equalityFn:n=S,devModeChecks:i={}}="function"==typeof r?{equalityFn:r}:r;if(!e)throw new Error("You must pass a selector to useSelector");if("function"!=typeof e)throw new Error("You must pass a function as a selector to useSelector");if("function"!=typeof n)throw new Error("You must pass a function as an equality function to useSelector");const{store:s,subscription:o,getServerState:a,stabilityCheck:c,identityFunctionCheck:d}=t(),l=f.useRef(!0),u=f.useCallback({[e.name](t){const r=e(t);{const{identityFunctionCheck:s,stabilityCheck:o}={stabilityCheck:c,identityFunctionCheck:d,...i};if("always"===o||"once"===o&&l.current){const i=e(t);if(!n(r,i)){let n;try{throw new Error}catch(e){({stack:n}=e)}console.warn("Selector "+(e.name||"unknown")+" returned a different result when called with the same parameters. This can lead to unnecessary rerenders.\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization",{state:t,selected:r,selected2:i,stack:n})}}if(("always"===s||"once"===s&&l.current)&&r===t){let t;try{throw new Error}catch(e){({stack:t}=e)}console.warn("Selector "+(e.name||"unknown")+" returned the root state when called. This can lead to unnecessary rerenders.\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.",{stack:t})}l.current&&(l.current=!1)}return r}}[e.name],[e,c,i.stabilityCheck]),p=w(o.addNestedSub,s.getState,a||s.getState,u,n);return f.useDebugValue(p),p};return Object.assign(r,{withTypes:()=>r}),r}var R=C();var P={notify(){},get:()=>[]};var T=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),k="undefined"!=typeof navigator&&"ReactNative"===navigator.product,E=T||k?f.useLayoutEffect:f.useEffect;var O=function({store:e,context:t,children:r,serverState:n,stabilityCheck:i="once",identityFunctionCheck:s="once"}){const o=f.useMemo((()=>{const t=function(e,t){let r,n=P,i=0,s=!1;function o(){d.onStateChange&&d.onStateChange()}function a(){i++,r||(r=t?t.addNestedSub(o):e.subscribe(o),n=function(){let e=null,t=null;return{clear(){e=null,t=null},notify(){var t;t=()=>{let t=e;for(;t;)t.callback(),t=t.next},t()},get(){const t=[];let r=e;for(;r;)t.push(r),r=r.next;return t},subscribe(r){let n=!0;const i=t={callback:r,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){n&&null!==e&&(n=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}())}function c(){i--,r&&0===i&&(r(),r=void 0,n.clear(),n=P)}const d={addNestedSub:function(e){a();const t=n.subscribe(e);let r=!1;return()=>{r||(r=!0,t(),c())}},notifyNestedSubs:function(){n.notify()},handleChangeWrapper:o,isSubscribed:function(){return s},trySubscribe:function(){s||(s=!0,a())},tryUnsubscribe:function(){s&&(s=!1,c())},getListeners:()=>n};return d}(e);return{store:e,subscription:t,getServerState:n?()=>n:void 0,stabilityCheck:i,identityFunctionCheck:s}}),[e,n,i,s]),a=f.useMemo((()=>e.getState()),[e]);E((()=>{const{subscription:t}=o;return t.onStateChange=t.notifyNestedSubs,t.trySubscribe(),a!==e.getState()&&t.notifyNestedSubs(),()=>{t.tryUnsubscribe(),t.onStateChange=void 0}}),[o,a]);const c=t||b;return f.createElement(c.Provider,{value:o},r)};function D(e=b){const t=e===b?_:y(e),r=()=>{const{store:e}=t();return e};return Object.assign(r,{withTypes:()=>r}),r}var I=D();function x(e=b){const t=e===b?I:D(e),r=()=>t().dispatch;return Object.assign(r,{withTypes:()=>r}),r}var M,j=x();M=h.useSyncExternalStoreWithSelector,w=M;var L=(()=>"function"==typeof Symbol&&Symbol.observable||"@@observable")(),A=()=>Math.random().toString(36).substring(7).split("").join("."),N={INIT:`@@redux/INIT${A()}`,REPLACE:`@@redux/REPLACE${A()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${A()}`};function B(e){if("object"!=typeof e||null===e)return!1;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||null===Object.getPrototypeOf(e)}function F(e){if(void 0===e)return"undefined";if(null===e)return"null";const t=typeof e;switch(t){case"boolean":case"string":case"number":case"symbol":case"function":return t}if(Array.isArray(e))return"array";if(function(e){return e instanceof Date||"function"==typeof e.toDateString&&"function"==typeof e.getDate&&"function"==typeof e.setDate}(e))return"date";if(function(e){return e instanceof Error||"string"==typeof e.message&&e.constructor&&"number"==typeof e.constructor.stackTraceLimit}(e))return"error";const r=function(e){return"function"==typeof e.constructor?e.constructor.name:null}(e);switch(r){case"Symbol":case"Promise":case"WeakMap":case"WeakSet":case"Map":case"Set":return r}return Object.prototype.toString.call(e).slice(8,-1).toLowerCase().replace(/\s/g,"")}function z(e){let t=typeof e;return t=F(e),t}function V(e,t,r){if("function"!=typeof e)throw new Error(`Expected the root reducer to be a function. Instead, received: '${z(e)}'`);if("function"==typeof t&&"function"==typeof r||"function"==typeof r&&"function"==typeof arguments[3])throw new Error("It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.");if("function"==typeof t&&void 0===r&&(r=t,t=void 0),void 0!==r){if("function"!=typeof r)throw new Error(`Expected the enhancer to be a function. Instead, received: '${z(r)}'`);return r(V)(e,t)}let n=e,i=t,s=new Map,o=s,a=0,c=!1;function d(){o===s&&(o=new Map,s.forEach(((e,t)=>{o.set(t,e)})))}function l(){if(c)throw new Error("You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.");return i}function u(e){if("function"!=typeof e)throw new Error(`Expected the listener to be a function. Instead, received: '${z(e)}'`);if(c)throw new Error("You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.");let t=!0;d();const r=a++;return o.set(r,e),function(){if(t){if(c)throw new Error("You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.");t=!1,d(),o.delete(r),s=null}}}function p(e){if(!B(e))throw new Error(`Actions must be plain objects. Instead, the actual type was: '${z(e)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. You may have misspelled an action type string constant.');if("string"!=typeof e.type)throw new Error(`Action "type" property must be a string. Instead, the actual type was: '${z(e.type)}'. Value was: '${e.type}' (stringified)`);if(c)throw new Error("Reducers may not dispatch actions.");try{c=!0,i=n(i,e)}finally{c=!1}return(s=o).forEach((e=>{e()})),e}p({type:N.INIT});return{dispatch:p,subscribe:u,getState:l,replaceReducer:function(e){if("function"!=typeof e)throw new Error(`Expected the nextReducer to be a function. Instead, received: '${z(e)}`);n=e,p({type:N.REPLACE})},[L]:function(){const e=u;return{subscribe(t){if("object"!=typeof t||null===t)throw new Error(`Expected the observer to be an object. Instead, received: '${z(t)}'`);function r(){const e=t;e.next&&e.next(l())}r();return{unsubscribe:e(r)}},[L](){return this}}}}}function U(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}function $(e){const t=Object.keys(e),r={};for(let n=0;n<t.length;n++){const i=t[n];void 0===e[i]&&U(`No reducer provided for key "${i}"`),"function"==typeof e[i]&&(r[i]=e[i])}const n=Object.keys(r);let i,s;i={};try{!function(e){Object.keys(e).forEach((t=>{const r=e[t];if(void 0===r(void 0,{type:N.INIT}))throw new Error(`The slice reducer for key "${t}" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(void 0===r(void 0,{type:N.PROBE_UNKNOWN_ACTION()}))throw new Error(`The slice reducer for key "${t}" returned undefined when probed with a random type. Don't try to handle '${N.INIT}' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`)}))}(r)}catch(e){s=e}return function(e={},t){if(s)throw s;{const n=function(e,t,r,n){const i=Object.keys(t),s=r&&r.type===N.INIT?"preloadedState argument passed to createStore":"previous state received by the reducer";if(0===i.length)return"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.";if(!B(e))return`The ${s} has unexpected type of "${z(e)}". Expected argument to be an object with the following keys: "${i.join('", "')}"`;const o=Object.keys(e).filter((e=>!t.hasOwnProperty(e)&&!n[e]));return o.forEach((e=>{n[e]=!0})),r&&r.type===N.REPLACE?void 0:o.length>0?`Unexpected ${o.length>1?"keys":"key"} "${o.join('", "')}" found in ${s}. Expected to find one of the known reducer keys instead: "${i.join('", "')}". Unexpected keys will be ignored.`:void 0}(e,r,t,i);n&&U(n)}let o=!1;const a={};for(let i=0;i<n.length;i++){const s=n[i],c=r[s],d=e[s],l=c(d,t);if(void 0===l){const e=t&&t.type;throw new Error(`When called with an action of type ${e?`"${String(e)}"`:"(unknown type)"}, the slice reducer for key "${s}" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`)}a[s]=l,o=o||l!==d}return o=o||n.length!==Object.keys(e).length,o?a:e}}function G(...e){return 0===e.length?e=>e:1===e.length?e[0]:e.reduce(((e,t)=>(...r)=>e(t(...r))))}function q(e){return B(e)&&"type"in e&&"string"==typeof e.type}var H=Symbol.for("immer-nothing"),W=Symbol.for("immer-draftable"),K=Symbol.for("immer-state"),J=[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}];function Q(e,...t){{const r=J[e],n="function"==typeof r?r.apply(null,t):r;throw new Error(`[Immer] ${n}`)}}var Y=Object.getPrototypeOf;function Z(e){return!!e&&!!e[K]}function X(e){return!!e&&(te(e)||Array.isArray(e)||!!e[W]||!!e.constructor?.[W]||oe(e)||ae(e))}var ee=Object.prototype.constructor.toString();function te(e){if(!e||"object"!=typeof e)return!1;const t=Y(e);if(null===t)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;return r===Object||"function"==typeof r&&Function.toString.call(r)===ee}function re(e,t){0===ne(e)?Object.entries(e).forEach((([r,n])=>{t(r,n,e)})):e.forEach(((r,n)=>t(n,r,e)))}function ne(e){const t=e[K];return t?t.type_:Array.isArray(e)?1:oe(e)?2:ae(e)?3:0}function ie(e,t){return 2===ne(e)?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function se(e,t,r){const n=ne(e);2===n?e.set(t,r):3===n?e.add(r):e[t]=r}function oe(e){return e instanceof Map}function ae(e){return e instanceof Set}function ce(e){return e.copy_||e.base_}function de(e,t){if(oe(e))return new Map(e);if(ae(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);if(!t&&te(e)){if(!Y(e)){const t=Object.create(null);return Object.assign(t,e)}return{...e}}const r=Object.getOwnPropertyDescriptors(e);delete r[K];let n=Reflect.ownKeys(r);for(let t=0;t<n.length;t++){const i=n[t],s=r[i];!1===s.writable&&(s.writable=!0,s.configurable=!0),(s.get||s.set)&&(r[i]={configurable:!0,writable:!0,enumerable:s.enumerable,value:e[i]})}return Object.create(Y(e),r)}function le(e,t=!1){return pe(e)||Z(e)||!X(e)||(ne(e)>1&&(e.set=e.add=e.clear=e.delete=ue),Object.freeze(e),t&&re(e,((e,t)=>le(t,!0)))),e}function ue(){Q(2)}function pe(e){return Object.isFrozen(e)}var he,fe={};function me(e){const t=fe[e];return t||Q(0,e),t}function ge(){return he}function ve(e,t){t&&(me("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function be(e){ye(e),e.drafts_.forEach(we),e.drafts_=null}function ye(e){e===he&&(he=e.parent_)}function _e(e){return he={drafts_:[],parent_:he,immer_:e,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function we(e){const t=e[K];0===t.type_||1===t.type_?t.revoke_():t.revoked_=!0}function Se(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return void 0!==e&&e!==r?(r[K].modified_&&(be(t),Q(4)),X(e)&&(e=Ce(t,e),t.parent_||Pe(t,e)),t.patches_&&me("Patches").generateReplacementPatches_(r[K].base_,e,t.patches_,t.inversePatches_)):e=Ce(t,r,[]),be(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==H?e:void 0}function Ce(e,t,r){if(pe(t))return t;const n=t[K];if(!n)return re(t,((i,s)=>Re(e,n,t,i,s,r))),t;if(n.scope_!==e)return t;if(!n.modified_)return Pe(e,n.base_,!0),n.base_;if(!n.finalized_){n.finalized_=!0,n.scope_.unfinalizedDrafts_--;const t=n.copy_;let i=t,s=!1;3===n.type_&&(i=new Set(t),t.clear(),s=!0),re(i,((i,o)=>Re(e,n,t,i,o,r,s))),Pe(e,t,!1),r&&e.patches_&&me("Patches").generatePatches_(n,r,e.patches_,e.inversePatches_)}return n.copy_}function Re(e,t,r,n,i,s,o){if(i===r&&Q(5),Z(i)){const o=Ce(e,i,s&&t&&3!==t.type_&&!ie(t.assigned_,n)?s.concat(n):void 0);if(se(r,n,o),!Z(o))return;e.canAutoFreeze_=!1}else o&&r.add(i);if(X(i)&&!pe(i)){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1)return;Ce(e,i),t&&t.scope_.parent_||Pe(e,i)}}function Pe(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&le(t,r)}var Te={get(e,t){if(t===K)return e;const r=ce(e);if(!ie(r,t))return function(e,t,r){const n=Oe(t,r);return n?"value"in n?n.value:n.get?.call(e.draft_):void 0}(e,r,t);const n=r[t];return e.finalized_||!X(n)?n:n===Ee(e.base_,t)?(Ie(e),e.copy_[t]=xe(n,e)):n},has:(e,t)=>t in ce(e),ownKeys:e=>Reflect.ownKeys(ce(e)),set(e,t,r){const n=Oe(ce(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const n=Ee(ce(e),t),o=n?.[K];if(o&&o.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(((i=r)===(s=n)?0!==i||1/i==1/s:i!=i&&s!=s)&&(void 0!==r||ie(e.base_,t)))return!0;Ie(e),De(e)}var i,s;return e.copy_[t]===r&&(void 0!==r||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty:(e,t)=>(void 0!==Ee(e.base_,t)||t in e.base_?(e.assigned_[t]=!1,Ie(e),De(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0),getOwnPropertyDescriptor(e,t){const r=ce(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n?{writable:!0,configurable:1!==e.type_||"length"!==t,enumerable:n.enumerable,value:r[t]}:n},defineProperty(){Q(11)},getPrototypeOf:e=>Y(e.base_),setPrototypeOf(){Q(12)}},ke={};function Ee(e,t){const r=e[K];return(r?ce(r):e)[t]}function Oe(e,t){if(!(t in e))return;let r=Y(e);for(;r;){const e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=Y(r)}}function De(e){e.modified_||(e.modified_=!0,e.parent_&&De(e.parent_))}function Ie(e){e.copy_||(e.copy_=de(e.base_,e.scope_.immer_.useStrictShallowCopy_))}re(Te,((e,t)=>{ke[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}})),ke.deleteProperty=function(e,t){return isNaN(parseInt(t))&&Q(13),ke.set.call(this,e,t,void 0)},ke.set=function(e,t,r){return"length"!==t&&isNaN(parseInt(t))&&Q(14),Te.set.call(this,e[0],t,r,e[0])};function xe(e,t){const r=oe(e)?me("MapSet").proxyMap_(e,t):ae(e)?me("MapSet").proxySet_(e,t):function(e,t){const r=Array.isArray(e),n={type_:r?1:0,scope_:t?t.scope_:ge(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let i=n,s=Te;r&&(i=[n],s=ke);const{revoke:o,proxy:a}=Proxy.revocable(i,s);return n.draft_=a,n.revoke_=o,a}(e,t);return(t?t.scope_:ge()).drafts_.push(r),r}function Me(e){return Z(e)||Q(10,e),je(e)}function je(e){if(!X(e)||pe(e))return e;const t=e[K];let r;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=de(e,t.scope_.immer_.useStrictShallowCopy_)}else r=de(e,!0);return re(r,((e,t)=>{se(r,e,je(t))})),t&&(t.finalized_=!1),r}var Le=new class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.produce=(e,t,r)=>{if("function"==typeof e&&"function"!=typeof t){const r=t;t=e;const n=this;return function(e=r,...i){return n.produce(e,(e=>t.call(this,e,...i)))}}let n;if("function"!=typeof t&&Q(6),void 0!==r&&"function"!=typeof r&&Q(7),X(e)){const i=_e(this),s=xe(e,void 0);let o=!0;try{n=t(s),o=!1}finally{o?be(i):ye(i)}return ve(i,r),Se(n,i)}if(!e||"object"!=typeof e){if(n=t(e),void 0===n&&(n=e),n===H&&(n=void 0),this.autoFreeze_&&le(n,!0),r){const t=[],i=[];me("Patches").generateReplacementPatches_(e,n,t,i),r(t,i)}return n}Q(1,e)},this.produceWithPatches=(e,t)=>{if("function"==typeof e)return(t,...r)=>this.produceWithPatches(t,(t=>e(t,...r)));let r,n;return[this.produce(e,t,((e,t)=>{r=e,n=t})),r,n]},"boolean"==typeof e?.autoFreeze&&this.setAutoFreeze(e.autoFreeze),"boolean"==typeof e?.useStrictShallowCopy&&this.setUseStrictShallowCopy(e.useStrictShallowCopy)}createDraft(e){X(e)||Q(8),Z(e)&&(e=Me(e));const t=_e(this),r=xe(e,void 0);return r[K].isManual_=!0,ye(t),r}finishDraft(e,t){const r=e&&e[K];r&&r.isManual_||Q(9);const{scope_:n}=r;return ve(n,t),Se(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const n=t[r];if(0===n.path.length&&"replace"===n.op){e=n.value;break}}r>-1&&(t=t.slice(r+1));const n=me("Patches").applyPatches_;return Z(e)?n(e,t):this.produce(e,(e=>n(e,t)))}},Ae=Le.produce;Le.produceWithPatches.bind(Le),Le.setAutoFreeze.bind(Le),Le.setUseStrictShallowCopy.bind(Le),Le.applyPatches.bind(Le),Le.createDraft.bind(Le),Le.finishDraft.bind(Le);var Ne=(e,t,r)=>{if(1===t.length&&t[0]===r){let t=!1;try{const r={};e(r)===r&&(t=!0)}catch{}if(t){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("The result function returned its own inputs without modification. e.g\n`createSelector([state => state.todos], todos => todos)`\nThis could lead to inefficient memoization and unnecessary re-renders.\nEnsure transformation logic is in the result function, and extraction logic is in the input selectors.",{stack:e})}}},Be=(e,t,r)=>{const{memoize:n,memoizeOptions:i}=t,{inputSelectorResults:s,inputSelectorResultsCopy:o}=e,a=n((()=>({})),...i);if(!(a.apply(null,s)===a.apply(null,o))){let e;try{throw new Error}catch(t){({stack:e}=t)}console.warn("An input selector returned a different result when passed same arguments.\nThis means your output selector will likely run more frequently than intended.\nAvoid returning a new reference inside your input selector, e.g.\n`createSelector([state => state.todos.map(todo => todo.id)], todoIds => todoIds.length)`",{arguments:r,firstInputs:s,secondInputs:o,stack:e})}},Fe={inputStabilityCheck:"once",identityFunctionCheck:"once"};var ze=e=>Array.isArray(e)?e:[e];function Ve(e){const t=Array.isArray(e[0])?e[0]:e;return function(e,t="expected all items to be functions, instead received the following types: "){if(!e.every((e=>"function"==typeof e))){const r=e.map((e=>"function"==typeof e?`function ${e.name||"unnamed"}()`:typeof e)).join(", ");throw new TypeError(`${t}[${r}]`)}}(t,"createSelector expects all input-selectors to be functions, but received the following types: "),t}function Ue(e,t){const r=[],{length:n}=e;for(let i=0;i<n;i++)r.push(e[i].apply(null,t));return r}var $e="undefined"!=typeof WeakRef?WeakRef:class{constructor(e){this.value=e}deref(){return this.value}},Ge=0,qe=1;function He(){return{s:Ge,v:void 0,o:null,p:null}}function We(e,t={}){let r=He();const{resultEqualityCheck:n}=t;let i,s=0;function o(){let t=r;const{length:o}=arguments;for(let e=0,r=o;e<r;e++){const r=arguments[e];if("function"==typeof r||"object"==typeof r&&null!==r){let e=t.o;null===e&&(t.o=e=new WeakMap);const n=e.get(r);void 0===n?(t=He(),e.set(r,t)):t=n}else{let e=t.p;null===e&&(t.p=e=new Map);const n=e.get(r);void 0===n?(t=He(),e.set(r,t)):t=n}}const a=t;let c;if(t.s===qe?c=t.v:(c=e.apply(null,arguments),s++),a.s=qe,n){const e=i?.deref?.()??i;null!=e&&n(e,c)&&(c=e,0!==s&&s--);i="object"==typeof c&&null!==c||"function"==typeof c?new $e(c):c}return a.v=c,c}return o.clearCache=()=>{r=He(),o.resetResultsCount()},o.resultsCount=()=>s,o.resetResultsCount=()=>{s=0},o}function Ke(e,...t){const r="function"==typeof e?{memoize:e,memoizeOptions:t}:e,n=(...e)=>{let t,n=0,i=0,s={},o=e.pop();"object"==typeof o&&(s=o,o=e.pop()),function(e,t="expected a function, instead received "+typeof e){if("function"!=typeof e)throw new TypeError(t)}(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);const a={...r,...s},{memoize:c,memoizeOptions:d=[],argsMemoize:l=We,argsMemoizeOptions:u=[],devModeChecks:p={}}=a,h=ze(d),f=ze(u),m=Ve(e),g=c((function(){return n++,o.apply(null,arguments)}),...h);let v=!0;const b=l((function(){i++;const e=Ue(m,arguments);t=g.apply(null,e);{const{identityFunctionCheck:r,inputStabilityCheck:n}=((e,t)=>{const{identityFunctionCheck:r,inputStabilityCheck:n}={...Fe,...t};return{identityFunctionCheck:{shouldRun:"always"===r||"once"===r&&e,run:Ne},inputStabilityCheck:{shouldRun:"always"===n||"once"===n&&e,run:Be}}})(v,p);if(r.shouldRun&&r.run(o,e,t),n.shouldRun){const t=Ue(m,arguments);n.run({inputSelectorResults:e,inputSelectorResultsCopy:t},{memoize:c,memoizeOptions:h},arguments)}v&&(v=!1)}return t}),...f);return Object.assign(b,{resultFunc:o,memoizedResultFunc:g,dependencies:m,dependencyRecomputations:()=>i,resetDependencyRecomputations:()=>{i=0},lastResult:()=>t,recomputations:()=>n,resetRecomputations:()=>{n=0},memoize:c,argsMemoize:l})};return Object.assign(n,{withTypes:()=>n}),n}var Je=Ke(We),Qe=Object.assign(((e,t=Je)=>{!function(e,t="expected an object, instead received "+typeof e){if("object"!=typeof e)throw new TypeError(t)}(e,"createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);const r=Object.keys(e),n=t(r.map((t=>e[t])),((...e)=>e.reduce(((e,t,n)=>(e[r[n]]=t,e)),{})));return n}),{withTypes:()=>Qe});function Ye(e){return({dispatch:t,getState:r})=>n=>i=>"function"==typeof i?i(t,r,e):n(i)}var Ze=Ye(),Xe=Ye;((...e)=>{const t=Ke(...e),r=Object.assign(((...e)=>{const r=t(...e),n=(e,...t)=>r(Z(e)?Me(e):e,...t);return Object.assign(n,r),n}),{withTypes:()=>r})})(We);var et="undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(0!==arguments.length)return"object"==typeof arguments[0]?G:G.apply(null,arguments)},tt=e=>e&&"function"==typeof e.match;function rt(e,t){function r(...r){if(t){let n=t(...r);if(!n)throw new Error("prepareAction did not return an object");return{type:e,payload:n.payload,..."meta"in n&&{meta:n.meta},..."error"in n&&{error:n.error}}}return{type:e,payload:r[0]}}return r.toString=()=>`${e}`,r.type=e,r.match=t=>q(t)&&t.type===e,r}function nt(e){return"function"==typeof e&&"type"in e&&tt(e)}function it(e,t){let r=0;return{measureTime(e){const t=Date.now();try{return e()}finally{const e=Date.now();r+=e-t}},warnIfExceeded(){r>e&&console.warn(`${t} took ${r}ms, which is more than the warning threshold of ${e}ms. \nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\nIt is disabled in production builds, so you don't need to worry about that.`)}}}function st(e,t){for(const r of e)if(t(r))return r}var ot=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return 1===t.length&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function at(e){return X(e)?Ae(e,(()=>{})):e}function ct(e,t,r){if(e.has(t)){let n=e.get(t);return r.update&&(n=r.update(n,t,e),e.set(t,n)),n}if(!r.insert)throw new Error("No insert provided for key not already in map");const n=r.insert(t,e);return e.set(t,n),n}function dt(e){return"object"!=typeof e||null==e||Object.isFrozen(e)}function lt(e,t,r){const n=ut(e,t,r);return{detectMutations:()=>pt(e,t,n,r)}}function ut(e,t=[],r,n="",i=new Set){const s={value:r};if(!e(r)&&!i.has(r)){i.add(r),s.children={};for(const i in r){const o=n?n+"."+i:i;t.length&&-1!==t.indexOf(o)||(s.children[i]=ut(e,t,r[i],o))}}return s}function pt(e,t=[],r,n,i=!1,s=""){const o=r?r.value:void 0,a=o===n;if(i&&!a&&!Number.isNaN(n))return{wasMutated:!0,path:s};if(e(o)||e(n))return{wasMutated:!1};const c={};for(let e in r.children)c[e]=!0;for(let e in n)c[e]=!0;const d=t.length>0;for(let i in c){const o=s?s+"."+i:i;if(d){if(t.some((e=>e instanceof RegExp?e.test(o):o===e)))continue}const c=pt(e,t,r.children[i],n[i],a,o);if(c.wasMutated)return c}return{wasMutated:!1}}function ht(e){const t=typeof e;return null==e||"string"===t||"boolean"===t||"number"===t||Array.isArray(e)||B(e)}function ft(e,t="",r=ht,n,i=[],s){let o;if(!r(e))return{keyPath:t||"<root>",value:e};if("object"!=typeof e||null===e)return!1;if(s?.has(e))return!1;const a=null!=n?n(e):Object.entries(e),c=i.length>0;for(const[e,d]of a){const a=t?t+"."+e:e;if(c){if(i.some((e=>e instanceof RegExp?e.test(a):a===e)))continue}if(!r(d))return{keyPath:a,value:d};if("object"==typeof d&&(o=ft(d,a,r,n,i,s),o))return o}return s&&mt(e)&&s.add(e),!1}function mt(e){if(!Object.isFrozen(e))return!1;for(const t of Object.values(e))if("object"==typeof t&&null!==t&&!mt(t))return!1;return!0}function gt(e){return"boolean"==typeof e}var vt=()=>function(e){const{thunk:t=!0,immutableCheck:r=!0,serializableCheck:n=!0,actionCreatorCheck:i=!0}=e??{};let s=new ot;if(t&&(gt(t)?s.push(Ze):s.push(Xe(t.extraArgument))),r){let e={};gt(r)||(e=r),s.unshift(function(e={}){{let t=function(e,t,n,i){return JSON.stringify(e,r(t,i),n)},r=function(e,t){let r=[],n=[];return t||(t=function(e,t){return r[0]===t?"[Circular ~]":"[Circular ~."+n.slice(0,r.indexOf(t)).join(".")+"]"}),function(i,s){if(r.length>0){var o=r.indexOf(this);~o?r.splice(o+1):r.push(this),~o?n.splice(o,1/0,i):n.push(i),~r.indexOf(s)&&(s=t.call(this,i,s))}else r.push(s);return null==e?s:e.call(this,i,s)}},{isImmutable:n=dt,ignoredPaths:i,warnAfter:s=32}=e;const o=lt.bind(null,n,i);return({getState:e})=>{let r,n=e(),i=o(n);return a=>c=>{const d=it(s,"ImmutableStateInvariantMiddleware");d.measureTime((()=>{if(n=e(),r=i.detectMutations(),i=o(n),r.wasMutated)throw new Error(`A state mutation was detected between dispatches, in the path '${r.path||""}'. This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)}));const l=a(c);return d.measureTime((()=>{if(n=e(),r=i.detectMutations(),i=o(n),r.wasMutated)throw new Error(`A state mutation was detected inside a dispatch, in the path: ${r.path||""}. Take a look at the reducer(s) handling the action ${t(c)}. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`)})),d.warnIfExceeded(),l}}}}(e))}if(n){let e={};gt(n)||(e=n),s.push(function(e={}){{const{isSerializable:t=ht,getEntries:r,ignoredActions:n=[],ignoredActionPaths:i=["meta.arg","meta.baseQueryMeta"],ignoredPaths:s=[],warnAfter:o=32,ignoreState:a=!1,ignoreActions:c=!1,disableCache:d=!1}=e,l=!d&&WeakSet?new WeakSet:void 0;return e=>d=>u=>{if(!q(u))return d(u);const p=d(u),h=it(o,"SerializableStateInvariantMiddleware");return c||n.length&&-1!==n.indexOf(u.type)||h.measureTime((()=>{const e=ft(u,"",t,r,i,l);if(e){const{keyPath:t,value:r}=e;console.error(`A non-serializable value was detected in an action, in the path: \`${t}\`. Value:`,r,"\nTake a look at the logic that dispatched this action: ",u,"\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)","\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)")}})),a||(h.measureTime((()=>{const n=ft(e.getState(),"",t,r,s,l);if(n){const{keyPath:e,value:t}=n;console.error(`A non-serializable value was detected in the state, in the path: \`${e}\`. Value:`,t,`\nTake a look at the reducer(s) handling this action type: ${u.type}.\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`)}})),h.warnIfExceeded()),p}}}(e))}if(i){let e={};gt(i)||(e=i),s.unshift(function(e={}){const{isActionCreator:t=nt}=e;return()=>e=>r=>(t(r)&&console.warn(function(e){const t=e?`${e}`.split("/"):[],r=t[t.length-1]||"actionCreator";return`Detected an action creator with type "${e||"unknown"}" being dispatched. \nMake sure you're calling the action creator before dispatching, i.e. \`dispatch(${r}())\` instead of \`dispatch(${r})\`. This is necessary even if the action has no payload.`}(r.type)),e(r))}(e))}return s},bt=e=>t=>{setTimeout(t,e)},yt="undefined"!=typeof window&&window.requestAnimationFrame?window.requestAnimationFrame:bt(10),_t=e=>function(t){const{autoBatch:r=!0}=t??{};let n=new ot(e);return r&&n.push(((e={type:"raf"})=>t=>(...r)=>{const n=t(...r);let i=!0,s=!1,o=!1;const a=new Set,c="tick"===e.type?queueMicrotask:"raf"===e.type?yt:"callback"===e.type?e.queueNotification:bt(e.timeout),d=()=>{o=!1,s&&(s=!1,a.forEach((e=>e())))};return Object.assign({},n,{subscribe(e){const t=n.subscribe((()=>i&&e()));return a.add(e),()=>{t(),a.delete(e)}},dispatch(e){try{return i=!e?.meta?.RTK_autoBatch,s=!i,s&&(o||(o=!0,c(d))),n.dispatch(e)}finally{i=!0}}})})("object"==typeof r?r:void 0)),n};function wt(e){const t=vt(),{reducer:r,middleware:n,devTools:i=!0,preloadedState:s,enhancers:o}=e||{};let a,c;if("function"==typeof r)a=r;else{if(!B(r))throw new Error("`reducer` is a required argument, and must be a function or an object of functions that can be passed to combineReducers");a=$(r)}if(n&&"function"!=typeof n)throw new Error("`middleware` field must be a callback");if("function"==typeof n){if(c=n(t),!Array.isArray(c))throw new Error("when using a middleware builder function, an array of middleware must be returned")}else c=t();if(c.some((e=>"function"!=typeof e)))throw new Error("each middleware provided to configureStore must be a function");let d=G;i&&(d=et({trace:!0,..."object"==typeof i&&i}));const l=function(...e){return t=>(r,n)=>{const i=t(r,n);let s=()=>{throw new Error("Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.")};const o={getState:i.getState,dispatch:(e,...t)=>s(e,...t)},a=e.map((e=>e(o)));return s=G(...a)(i.dispatch),{...i,dispatch:s}}}(...c),u=_t(l);if(o&&"function"!=typeof o)throw new Error("`enhancers` field must be a callback");let p="function"==typeof o?o(u):u();if(!Array.isArray(p))throw new Error("`enhancers` callback must return an array");if(p.some((e=>"function"!=typeof e)))throw new Error("each enhancer provided to configureStore must be a function");c.length&&!p.includes(l)&&console.error("middlewares were provided, but middleware enhancer was not included in final enhancers - make sure to call `getDefaultEnhancers`");return V(a,s,d(...p))}function St(e){const t={},r=[];let n;const i={addCase(e,s){if(r.length>0)throw new Error("`builder.addCase` should only be called before calling `builder.addMatcher`");if(n)throw new Error("`builder.addCase` should only be called before calling `builder.addDefaultCase`");const o="string"==typeof e?e:e.type;if(!o)throw new Error("`builder.addCase` cannot be called with an empty action type");if(o in t)throw new Error(`\`builder.addCase\` cannot be called with two reducers for the same action type '${o}'`);return t[o]=s,i},addMatcher(e,t){if(n)throw new Error("`builder.addMatcher` should only be called before calling `builder.addDefaultCase`");return r.push({matcher:e,reducer:t}),i},addDefaultCase(e){if(n)throw new Error("`builder.addDefaultCase` can only be called once");return n=e,i}};return e(i),[t,r,n]}var Ct=(e=21)=>{let t="",r=e;for(;r--;)t+="ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW"[64*Math.random()|0];return t};function Rt(...e){return t=>e.some((e=>((e,t)=>tt(e)?e.match(t):e(t))(e,t)))}var Pt=["name","message","stack","code"],Tt=class{constructor(e,t){this.payload=e,this.meta=t}_type},kt=class{constructor(e,t){this.payload=e,this.meta=t}_type},Et=e=>{if("object"==typeof e&&null!==e){const t={};for(const r of Pt)"string"==typeof e[r]&&(t[r]=e[r]);return t}return{message:String(e)}},Ot=(()=>{function e(e,t,r){const n=rt(e+"/fulfilled",((e,t,r,n)=>({payload:e,meta:{...n||{},arg:r,requestId:t,requestStatus:"fulfilled"}}))),i=rt(e+"/pending",((e,t,r)=>({payload:void 0,meta:{...r||{},arg:t,requestId:e,requestStatus:"pending"}}))),s=rt(e+"/rejected",((e,t,n,i,s)=>({payload:i,error:(r&&r.serializeError||Et)(e||"Rejected"),meta:{...s||{},arg:n,requestId:t,rejectedWithValue:!!i,requestStatus:"rejected",aborted:"AbortError"===e?.name,condition:"ConditionError"===e?.name}})));return Object.assign((function(e){return(o,a,c)=>{const d=r?.idGenerator?r.idGenerator(e):Ct(),l=new AbortController;let u,p;function h(e){p=e,l.abort()}const f=async function(){let f;try{let s=r?.condition?.(e,{getState:a,extra:c});if(function(e){return null!==e&&"object"==typeof e&&"function"==typeof e.then}(s)&&(s=await s),!1===s||l.signal.aborted)throw{name:"ConditionError",message:"Aborted due to condition callback returning false."};const m=new Promise(((e,t)=>{u=()=>{t({name:"AbortError",message:p||"Aborted"})},l.signal.addEventListener("abort",u)}));o(i(d,e,r?.getPendingMeta?.({requestId:d,arg:e},{getState:a,extra:c}))),f=await Promise.race([m,Promise.resolve(t(e,{dispatch:o,getState:a,extra:c,requestId:d,signal:l.signal,abort:h,rejectWithValue:(e,t)=>new Tt(e,t),fulfillWithValue:(e,t)=>new kt(e,t)})).then((t=>{if(t instanceof Tt)throw t;return t instanceof kt?n(t.payload,d,e,t.meta):n(t,d,e)}))])}catch(t){f=t instanceof Tt?s(null,d,e,t.payload,t.meta):s(t,d,e)}finally{u&&l.signal.removeEventListener("abort",u)}return r&&!r.dispatchConditionRejection&&s.match(f)&&f.meta.condition||o(f),f}();return Object.assign(f,{abort:h,requestId:d,arg:e,unwrap:()=>f.then(Dt)})}}),{pending:i,rejected:s,fulfilled:n,settled:Rt(s,n),typePrefix:e})}return e.withTypes=()=>e,e})();function Dt(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}var It=Symbol.for("rtk-slice-createasyncthunk");function xt(e,t){return`${e}/${t}`}function Mt({creators:e}={}){const t=e?.asyncThunk?.[It];return function(e){const{name:r,reducerPath:n=r}=e;if(!r)throw new Error("`name` is a required option for createSlice");const i=("function"==typeof e.reducers?e.reducers(function(){function e(e,t){return{_reducerDefinitionType:"asyncThunk",payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer:e=>Object.assign({[e.name]:(...t)=>e(...t)}[e.name],{_reducerDefinitionType:"reducer"}),preparedReducer:(e,t)=>({_reducerDefinitionType:"reducerWithPrepare",prepare:e,reducer:t}),asyncThunk:e}}()):e.reducers)||{},s=Object.keys(i),o={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},a={addCase(e,t){const r="string"==typeof e?e:e.type;if(!r)throw new Error("`context.addCase` cannot be called with an empty action type");if(r in o.sliceCaseReducersByType)throw new Error("`context.addCase` cannot be called with two reducers for the same action type: "+r);return o.sliceCaseReducersByType[r]=t,a},addMatcher:(e,t)=>(o.sliceMatchers.push({matcher:e,reducer:t}),a),exposeAction:(e,t)=>(o.actionCreators[e]=t,a),exposeCaseReducer:(e,t)=>(o.sliceCaseReducersByName[e]=t,a)};function c(){if("object"==typeof e.extraReducers)throw new Error("The object notation for `createSlice.extraReducers` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice");const[t={},r=[],n]="function"==typeof e.extraReducers?St(e.extraReducers):[e.extraReducers],i={...t,...o.sliceCaseReducersByType};return function(e,t){if("object"==typeof t)throw new Error("The object notation for `createReducer` has been removed. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer");let r,[n,i,s]=St(t);if("function"==typeof e)r=()=>at(e());else{const t=at(e);r=()=>t}function o(e=r(),t){let o=[n[t.type],...i.filter((({matcher:e})=>e(t))).map((({reducer:e})=>e))];return 0===o.filter((e=>!!e)).length&&(o=[s]),o.reduce(((e,r)=>{if(r){if(Z(e)){const n=r(e,t);return void 0===n?e:n}if(X(e))return Ae(e,(e=>r(e,t)));{const n=r(e,t);if(void 0===n){if(null===e)return e;throw new Error("A case reducer on a non-draftable value must not return undefined")}return n}}return e}),e)}return o.getInitialState=r,o}(e.initialState,(e=>{for(let t in i)e.addCase(t,i[t]);for(let t of o.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of r)e.addMatcher(t.matcher,t.reducer);n&&e.addDefaultCase(n)}))}s.forEach((n=>{const s=i[n],o={reducerName:n,type:xt(r,n),createNotation:"function"==typeof e.reducers};!function(e){return"asyncThunk"===e._reducerDefinitionType}(s)?function({type:e,reducerName:t,createNotation:r},n,i){let s,o;if("reducer"in n){if(r&&!function(e){return"reducerWithPrepare"===e._reducerDefinitionType}(n))throw new Error("Please use the `create.preparedReducer` notation for prepared action creators with the `create` notation.");s=n.reducer,o=n.prepare}else s=n;i.addCase(e,s).exposeCaseReducer(t,s).exposeAction(t,o?rt(e,o):rt(e))}(o,s,a):function({type:e,reducerName:t},r,n,i){if(!i)throw new Error("Cannot use `create.asyncThunk` in the built-in `createSlice`. Use `buildCreateSlice({ creators: { asyncThunk: asyncThunkCreator } })` to create a customised version of `createSlice`.");const{payloadCreator:s,fulfilled:o,pending:a,rejected:c,settled:d,options:l}=r,u=i(e,s,l);n.exposeAction(t,u),o&&n.addCase(u.fulfilled,o);a&&n.addCase(u.pending,a);c&&n.addCase(u.rejected,c);d&&n.addMatcher(u.settled,d);n.exposeCaseReducer(t,{fulfilled:o||At,pending:a||At,rejected:c||At,settled:d||At})}(o,s,a,t)}));const d=e=>e,l=new Map;let u;function p(e,t){return u||(u=c()),u(e,t)}function h(){return u||(u=c()),u.getInitialState()}function f(t,r=!1){function n(e){let n=e[t];if(void 0===n){if(!r)throw new Error("selectSlice returned undefined for an uninjected slice reducer");n=h()}return n}function i(t=d){const n=ct(l,r,{insert:()=>new WeakMap});return ct(n,t,{insert:()=>{const n={};for(const[i,s]of Object.entries(e.selectors??{}))n[i]=jt(s,t,h,r);return n}})}return{reducerPath:t,getSelectors:i,get selectors(){return i(n)},selectSlice:n}}const m={name:r,reducer:p,actions:o.actionCreators,caseReducers:o.sliceCaseReducersByName,getInitialState:h,...f(n),injectInto(e,{reducerPath:t,...r}={}){const i=t??n;return e.inject({reducerPath:i,reducer:p},r),{...m,...f(i,!0)}}};return m}}function jt(e,t,r,n){function i(i,...s){let o=t(i);if(void 0===o){if(!n)throw new Error("selectState returned undefined for an uninjected slice reducer");o=r()}return e(o,...s)}return i.unwrapped=e,i}var Lt=Mt();function At(){}var Nt="listener",Bt="completed",Ft="cancelled",zt=`task-${Ft}`,Vt=`task-${Bt}`,Ut=`${Nt}-${Ft}`,$t=`${Nt}-${Bt}`,Gt=class{constructor(e){this.code=e,this.message=`task ${Ft} (reason: ${e})`}name="TaskAbortError";message},qt=(e,t)=>{if("function"!=typeof e)throw new Error(`${t} is not a function`)},Ht=()=>{},Wt=(e,t=Ht)=>(e.catch(t),e),Kt=(e,t)=>(e.addEventListener("abort",t,{once:!0}),()=>e.removeEventListener("abort",t)),Jt=(e,t)=>{const r=e.signal;r.aborted||("reason"in r||Object.defineProperty(r,"reason",{enumerable:!0,value:t,configurable:!0,writable:!0}),e.abort(t))},Qt=e=>{if(e.aborted){const{reason:t}=e;throw new Gt(t)}};function Yt(e,t){let r=Ht;return new Promise(((n,i)=>{const s=()=>i(new Gt(e.reason));e.aborted?s():(r=Kt(e,s),t.finally((()=>r())).then(n,i))})).finally((()=>{r=Ht}))}var Zt=e=>t=>Wt(Yt(e,t).then((t=>(Qt(e),t)))),Xt=e=>{const t=Zt(e);return e=>t(new Promise((t=>setTimeout(t,e))))},{assign:er}=Object,tr={},rr="listenerMiddleware",nr=(e,t)=>(r,n)=>{qt(r,"taskExecutor");const i=new AbortController;var s;s=i,Kt(e,(()=>Jt(s,e.reason)));const o=(async(e,t)=>{try{return await Promise.resolve(),{status:"ok",value:await e()}}catch(e){return{status:e instanceof Gt?"cancelled":"rejected",error:e}}finally{t?.()}})((async()=>{Qt(e),Qt(i.signal);const t=await r({pause:Zt(i.signal),delay:Xt(i.signal),signal:i.signal});return Qt(i.signal),t}),(()=>Jt(i,Vt)));return n?.autoJoin&&t.push(o.catch(Ht)),{result:Zt(e)(o),cancel(){Jt(i,zt)}}},ir=(e,t)=>(r,n)=>Wt((async(r,n)=>{Qt(t);let i=()=>{};const s=[new Promise(((t,n)=>{let s=e({predicate:r,effect:(e,r)=>{r.unsubscribe(),t([e,r.getState(),r.getOriginalState()])}});i=()=>{s(),n()}}))];null!=n&&s.push(new Promise((e=>setTimeout(e,n,null))));try{const e=await Yt(t,Promise.race(s));return Qt(t),e}finally{i()}})(r,n)),sr=e=>{let{type:t,actionCreator:r,matcher:n,predicate:i,effect:s}=e;if(t)i=rt(t).match;else if(r)t=r.type,i=r.match;else if(n)i=n;else if(!i)throw new Error("Creating or removing a listener requires one of the known fields for matching an action");return qt(s,"options.listener"),{predicate:i,type:t,effect:s}},or=Object.assign((e=>{const{type:t,predicate:r,effect:n}=sr(e);return{id:Ct(),effect:n,type:t,predicate:r,pending:new Set,unsubscribe:()=>{throw new Error("Unsubscribe not initialized")}}}),{withTypes:()=>or}),ar=e=>{e.pending.forEach((e=>{Jt(e,Ut)}))},cr=(e,t,r)=>{try{e(t,r)}catch(e){setTimeout((()=>{throw e}),0)}},dr=Object.assign(rt(`${rr}/add`),{withTypes:()=>dr}),lr=rt(`${rr}/removeAll`),ur=Object.assign(rt(`${rr}/remove`),{withTypes:()=>ur}),pr=(...e)=>{console.error(`${rr}/error`,...e)};function hr(){}function fr(){fr.init.call(this)}function mr(e){return void 0===e._maxListeners?fr.defaultMaxListeners:e._maxListeners}function gr(e,t,r,n){var i,s,o,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((s=e._events)?(s.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),s=e._events),o=s[t]):(s=e._events=new hr,e._eventsCount=0),o){if("function"==typeof o?o=s[t]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),!o.warned&&(i=mr(e))&&i>0&&o.length>i){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=s[t]=r,++e._eventsCount;return e}function vr(e,t,r){var n=!1;function i(){e.removeListener(t,i),n||(n=!0,r.apply(e,arguments))}return i.listener=r,i}function br(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function yr(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}hr.prototype=Object.create(null),fr.EventEmitter=fr,fr.usingDomains=!1,fr.prototype.domain=void 0,fr.prototype._events=void 0,fr.prototype._maxListeners=void 0,fr.defaultMaxListeners=10,fr.init=function(){this.domain=null,fr.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new hr,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},fr.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},fr.prototype.getMaxListeners=function(){return mr(this)},fr.prototype.emit=function(e){var t,r,n,i,s,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(r=o[e]))return!1;var l="function"==typeof r;switch(n=arguments.length){case 1:!function(e,t,r){if(t)e.call(r);else for(var n=e.length,i=yr(e,n),s=0;s<n;++s)i[s].call(r)}(r,l,this);break;case 2:!function(e,t,r,n){if(t)e.call(r,n);else for(var i=e.length,s=yr(e,i),o=0;o<i;++o)s[o].call(r,n)}(r,l,this,arguments[1]);break;case 3:!function(e,t,r,n,i){if(t)e.call(r,n,i);else for(var s=e.length,o=yr(e,s),a=0;a<s;++a)o[a].call(r,n,i)}(r,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,r,n,i,s){if(t)e.call(r,n,i,s);else for(var o=e.length,a=yr(e,o),c=0;c<o;++c)a[c].call(r,n,i,s)}(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(i=new Array(n-1),s=1;s<n;s++)i[s-1]=arguments[s];!function(e,t,r,n){if(t)e.apply(r,n);else for(var i=e.length,s=yr(e,i),o=0;o<i;++o)s[o].apply(r,n)}(r,l,this,i)}return!0},fr.prototype.addListener=function(e,t){return gr(this,e,t,!1)},fr.prototype.on=fr.prototype.addListener,fr.prototype.prependListener=function(e,t){return gr(this,e,t,!0)},fr.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,vr(this,e,t)),this},fr.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,vr(this,e,t)),this},fr.prototype.removeListener=function(e,t){var r,n,i,s,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(n=this._events))return this;if(!(r=n[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new hr:(delete n[e],n.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(i=-1,s=r.length;s-- >0;)if(r[s]===t||r[s].listener&&r[s].listener===t){o=r[s].listener,i=s;break}if(i<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new hr,this;delete n[e]}else!function(e,t){for(var r=t,n=r+1,i=e.length;n<i;r+=1,n+=1)e[r]=e[n];e.pop()}(r,i);n.removeListener&&this.emit("removeListener",e,o||t)}return this},fr.prototype.off=function(e,t){return this.removeListener(e,t)},fr.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new hr,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new hr:delete r[e]),this;if(0===arguments.length){for(var n,i=Object.keys(r),s=0;s<i.length;++s)"removeListener"!==(n=i[s])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=new hr,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},fr.prototype.listeners=function(e){var t,r,n=this._events;return r=n&&(t=n[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[],r},fr.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):br.call(e,t)},fr.prototype.listenerCount=br,fr.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};var _r,wr,Sr=Object.freeze({__proto__:null,EventEmitter:fr,default:fr}),Cr={},Rr={exports:{}};function Pr(){if(wr)return _r;wr=1;var e=1e3,t=60*e,r=60*t,n=24*r,i=7*n,s=365.25*n;function o(e,t,r,n){var i=t>=1.5*r;return Math.round(e/r)+" "+n+(i?"s":"")}return _r=function(a,c){c=c||{};var d=typeof a;if("string"===d&&a.length>0)return function(o){if((o=String(o)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(o);if(!a)return;var c=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return c*s;case"weeks":case"week":case"w":return c*i;case"days":case"day":case"d":return c*n;case"hours":case"hour":case"hrs":case"hr":case"h":return c*r;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}(a);if("number"===d&&isFinite(a))return c.long?function(i){var s=Math.abs(i);if(s>=n)return o(i,s,n,"day");if(s>=r)return o(i,s,r,"hour");if(s>=t)return o(i,s,t,"minute");if(s>=e)return o(i,s,e,"second");return i+" ms"}(a):function(i){var s=Math.abs(i);if(s>=n)return Math.round(i/n)+"d";if(s>=r)return Math.round(i/r)+"h";if(s>=t)return Math.round(i/t)+"m";if(s>=e)return Math.round(i/e)+"s";return i+"ms"}(a);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))},_r}var Tr=function(e){function t(e){let n,i,s,o=null;function a(...e){if(!a.enabled)return;const r=a,i=Number(new Date),s=i-(n||i);r.diff=s,r.prev=n,r.curr=i,n=i,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let o=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((n,i)=>{if("%%"===n)return"%";o++;const s=t.formatters[i];if("function"==typeof s){const t=e[o];n=s.call(r,t),e.splice(o,1),o--}return n})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=r,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==o?o:(i!==t.namespaces&&(i=t.namespaces,s=t.enabled(e)),s),set:e=>{o=e}}),"function"==typeof t.init&&t.init(a),a}function r(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function n(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names.map(n),...t.skips.map(n).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),i=n.length;for(r=0;r<i;r++)n[r]&&("-"===(e=n[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.slice(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,n;for(r=0,n=t.skips.length;r<n;r++)if(t.skips[r].test(e))return!1;for(r=0,n=t.names.length;r<n;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=Pr(),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t};!function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(i=n))})),t.splice(i,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Tr(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Rr,Rr.exports);var kr=Rr.exports,Er={},Or={exports:{}};!function(e,t){!function(r,n){var i="function",s="undefined",o="object",a="string",c="major",d="model",l="name",u="type",p="vendor",h="version",f="architecture",m="console",g="mobile",v="tablet",b="smarttv",y="wearable",_="embedded",w="Amazon",S="Apple",C="ASUS",R="BlackBerry",P="Browser",T="Chrome",k="Firefox",E="Google",O="Huawei",D="LG",I="Microsoft",x="Motorola",M="Opera",j="Samsung",L="Sharp",A="Sony",N="Xiaomi",B="Zebra",F="Facebook",z="Chromium OS",V="Mac OS",U=function(e){for(var t={},r=0;r<e.length;r++)t[e[r].toUpperCase()]=e[r];return t},$=function(e,t){return typeof e===a&&-1!==G(t).indexOf(G(e))},G=function(e){return e.toLowerCase()},q=function(e,t){if(typeof e===a)return e=e.replace(/^\s\s*/,""),typeof t===s?e:e.substring(0,500)},H=function(e,t){for(var r,s,a,c,d,l,u=0;u<t.length&&!d;){var p=t[u],h=t[u+1];for(r=s=0;r<p.length&&!d&&p[r];)if(d=p[r++].exec(e))for(a=0;a<h.length;a++)l=d[++s],typeof(c=h[a])===o&&c.length>0?2===c.length?typeof c[1]==i?this[c[0]]=c[1].call(this,l):this[c[0]]=c[1]:3===c.length?typeof c[1]!==i||c[1].exec&&c[1].test?this[c[0]]=l?l.replace(c[1],c[2]):n:this[c[0]]=l?c[1].call(this,l,c[2]):n:4===c.length&&(this[c[0]]=l?c[3].call(this,l.replace(c[1],c[2])):n):this[c]=l||n;u+=2}},W=function(e,t){for(var r in t)if(typeof t[r]===o&&t[r].length>0){for(var i=0;i<t[r].length;i++)if($(t[r][i],e))return"?"===r?n:r}else if($(t[r],e))return"?"===r?n:r;return e},K={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},J={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[h,[l,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[h,[l,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[l,h],[/opios[\/ ]+([\w\.]+)/i],[h,[l,M+" Mini"]],[/\bopr\/([\w\.]+)/i],[h,[l,M]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[h,[l,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[l,h],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[h,[l,"UC"+P]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[h,[l,"WeChat"]],[/konqueror\/([\w\.]+)/i],[h,[l,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[h,[l,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[h,[l,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[h,[l,"Smart Lenovo "+P]],[/(avast|avg)\/([\w\.]+)/i],[[l,/(.+)/,"$1 Secure "+P],h],[/\bfocus\/([\w\.]+)/i],[h,[l,k+" Focus"]],[/\bopt\/([\w\.]+)/i],[h,[l,M+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[h,[l,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[h,[l,"Dolphin"]],[/coast\/([\w\.]+)/i],[h,[l,M+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[h,[l,"MIUI "+P]],[/fxios\/([-\w\.]+)/i],[h,[l,k]],[/\bqihu|(qi?ho?o?|360)browser/i],[[l,"360 "+P]],[/(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i],[[l,/(.+)/,"$1 "+P],h],[/samsungbrowser\/([\w\.]+)/i],[h,[l,j+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[l,/_/g," "],h],[/metasr[\/ ]?([\d\.]+)/i],[h,[l,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[l,"Sogou Mobile"],h],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[l,h],[/(lbbrowser)/i,/\[(linkedin)app\]/i],[l],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[l,F],h],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[l,h],[/\bgsa\/([\w\.]+) .*safari\//i],[h,[l,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[h,[l,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[h,[l,T+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[l,T+" WebView"],h],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[h,[l,"Android "+P]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[l,h],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[h,[l,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[h,l],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[l,[h,W,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[l,h],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[l,"Netscape"],h],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[h,[l,k+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[l,h],[/(cobalt)\/([\w\.]+)/i],[l,[h,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[f,"amd64"]],[/(ia32(?=;))/i],[[f,G]],[/((?:i[346]|x)86)[;\)]/i],[[f,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[f,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[f,"armhf"]],[/windows (ce|mobile); ppc;/i],[[f,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[f,/ower/,"",G]],[/(sun4\w)[;\)]/i],[[f,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[f,G]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[d,[p,j],[u,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[d,[p,j],[u,g]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[d,[p,S],[u,g]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[d,[p,S],[u,v]],[/(macintosh);/i],[d,[p,S]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[d,[p,L],[u,g]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[d,[p,O],[u,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[d,[p,O],[u,g]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[d,/_/g," "],[p,N],[u,g]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[d,/_/g," "],[p,N],[u,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[d,[p,"OPPO"],[u,g]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[d,[p,"Vivo"],[u,g]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[d,[p,"Realme"],[u,g]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[d,[p,x],[u,g]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[d,[p,x],[u,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[d,[p,D],[u,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[d,[p,D],[u,g]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[d,[p,"Lenovo"],[u,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[d,/_/g," "],[p,"Nokia"],[u,g]],[/(pixel c)\b/i],[d,[p,E],[u,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[d,[p,E],[u,g]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[d,[p,A],[u,g]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[d,"Xperia Tablet"],[p,A],[u,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[d,[p,"OnePlus"],[u,g]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[d,[p,w],[u,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[d,/(.+)/g,"Fire Phone $1"],[p,w],[u,g]],[/(playbook);[-\w\),; ]+(rim)/i],[d,p,[u,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[d,[p,R],[u,g]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[d,[p,C],[u,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[d,[p,C],[u,g]],[/(nexus 9)/i],[d,[p,"HTC"],[u,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[p,[d,/_/g," "],[u,g]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[d,[p,"Acer"],[u,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[d,[p,"Meizu"],[u,g]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[d,[p,"Ulefone"],[u,g]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[p,d,[u,g]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[p,d,[u,v]],[/(surface duo)/i],[d,[p,I],[u,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[d,[p,"Fairphone"],[u,g]],[/(u304aa)/i],[d,[p,"AT&T"],[u,g]],[/\bsie-(\w*)/i],[d,[p,"Siemens"],[u,g]],[/\b(rct\w+) b/i],[d,[p,"RCA"],[u,v]],[/\b(venue[\d ]{2,7}) b/i],[d,[p,"Dell"],[u,v]],[/\b(q(?:mv|ta)\w+) b/i],[d,[p,"Verizon"],[u,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[d,[p,"Barnes & Noble"],[u,v]],[/\b(tm\d{3}\w+) b/i],[d,[p,"NuVision"],[u,v]],[/\b(k88) b/i],[d,[p,"ZTE"],[u,v]],[/\b(nx\d{3}j) b/i],[d,[p,"ZTE"],[u,g]],[/\b(gen\d{3}) b.+49h/i],[d,[p,"Swiss"],[u,g]],[/\b(zur\d{3}) b/i],[d,[p,"Swiss"],[u,v]],[/\b((zeki)?tb.*\b) b/i],[d,[p,"Zeki"],[u,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[p,"Dragon Touch"],d,[u,v]],[/\b(ns-?\w{0,9}) b/i],[d,[p,"Insignia"],[u,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[d,[p,"NextBook"],[u,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[p,"Voice"],d,[u,g]],[/\b(lvtel\-)?(v1[12]) b/i],[[p,"LvTel"],d,[u,g]],[/\b(ph-1) /i],[d,[p,"Essential"],[u,g]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[d,[p,"Envizen"],[u,v]],[/\b(trio[-\w\. ]+) b/i],[d,[p,"MachSpeed"],[u,v]],[/\btu_(1491) b/i],[d,[p,"Rotor"],[u,v]],[/(shield[\w ]+) b/i],[d,[p,"Nvidia"],[u,v]],[/(sprint) (\w+)/i],[p,d,[u,g]],[/(kin\.[onetw]{3})/i],[[d,/\./g," "],[p,I],[u,g]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[d,[p,B],[u,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[d,[p,B],[u,g]],[/smart-tv.+(samsung)/i],[p,[u,b]],[/hbbtv.+maple;(\d+)/i],[[d,/^/,"SmartTV"],[p,j],[u,b]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[p,D],[u,b]],[/(apple) ?tv/i],[p,[d,S+" TV"],[u,b]],[/crkey/i],[[d,T+"cast"],[p,E],[u,b]],[/droid.+aft(\w+)( bui|\))/i],[d,[p,w],[u,b]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[d,[p,L],[u,b]],[/(bravia[\w ]+)( bui|\))/i],[d,[p,A],[u,b]],[/(mitv-\w{5}) bui/i],[d,[p,N],[u,b]],[/Hbbtv.*(technisat) (.*);/i],[p,d,[u,b]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[p,q],[d,q],[u,b]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[u,b]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[p,d,[u,m]],[/droid.+; (shield) bui/i],[d,[p,"Nvidia"],[u,m]],[/(playstation [345portablevi]+)/i],[d,[p,A],[u,m]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[d,[p,I],[u,m]],[/((pebble))app/i],[p,d,[u,y]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[d,[p,S],[u,y]],[/droid.+; (glass) \d/i],[d,[p,E],[u,y]],[/droid.+; (wt63?0{2,3})\)/i],[d,[p,B],[u,y]],[/(quest( 2| pro)?)/i],[d,[p,F],[u,y]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[p,[u,_]],[/(aeobc)\b/i],[d,[p,w],[u,_]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[d,[u,g]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[d,[u,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[u,v]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[u,g]],[/(android[-\w\. ]{0,9});.+buil/i],[d,[p,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[h,[l,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[h,[l,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[l,h],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[h,l]],os:[[/microsoft (windows) (vista|xp)/i],[l,h],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[l,[h,W,K]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[h,W,K],[l,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[h,/_/g,"."],[l,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[l,V],[h,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[h,l],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[l,h],[/\(bb(10);/i],[h,[l,R]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[h,[l,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[h,[l,k+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[h,[l,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[h,[l,"watchOS"]],[/crkey\/([\d\.]+)/i],[h,[l,T+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[l,z],h],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[l,h],[/(sunos) ?([\w\.\d]*)/i],[[l,"Solaris"],h],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[l,h]]},Q=function(e,t){if(typeof e===o&&(t=e,e=n),!(this instanceof Q))return new Q(e,t).getResult();var m=typeof r!==s&&r.navigator?r.navigator:n,b=e||(m&&m.userAgent?m.userAgent:""),y=m&&m.userAgentData?m.userAgentData:n,_=t?function(e,t){var r={};for(var n in e)t[n]&&t[n].length%2==0?r[n]=t[n].concat(e[n]):r[n]=e[n];return r}(J,t):J,w=m&&m.userAgent==b;return this.getBrowser=function(){var e,t={};return t[l]=n,t[h]=n,H.call(t,b,_.browser),t[c]=typeof(e=t[h])===a?e.replace(/[^\d\.]/g,"").split(".")[0]:n,w&&m&&m.brave&&typeof m.brave.isBrave==i&&(t[l]="Brave"),t},this.getCPU=function(){var e={};return e[f]=n,H.call(e,b,_.cpu),e},this.getDevice=function(){var e={};return e[p]=n,e[d]=n,e[u]=n,H.call(e,b,_.device),w&&!e[u]&&y&&y.mobile&&(e[u]=g),w&&"Macintosh"==e[d]&&m&&typeof m.standalone!==s&&m.maxTouchPoints&&m.maxTouchPoints>2&&(e[d]="iPad",e[u]=v),e},this.getEngine=function(){var e={};return e[l]=n,e[h]=n,H.call(e,b,_.engine),e},this.getOS=function(){var e={};return e[l]=n,e[h]=n,H.call(e,b,_.os),w&&!e[l]&&y&&"Unknown"!=y.platform&&(e[l]=y.platform.replace(/chrome os/i,z).replace(/macos/i,V)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return b},this.setUA=function(e){return b=typeof e===a&&e.length>500?q(e,500):e,this},this.setUA(b),this};Q.VERSION="1.0.37",Q.BROWSER=U([l,h,c]),Q.CPU=U([f]),Q.DEVICE=U([d,p,u,m,g,b,v,y,_]),Q.ENGINE=Q.OS=U([l,h]),e.exports&&(t=e.exports=Q),t.UAParser=Q;var Y=typeof r!==s&&(r.jQuery||r.Zepto);if(Y&&!Y.ua){var Z=new Q;Y.ua=Z.getResult(),Y.ua.get=function(){return Z.getUA()},Y.ua.set=function(e){Z.setUA(e);var t=Z.getResult();for(var r in t)Y.ua[r]=t[r]}}}("object"==typeof window?window:a)}(Or,Or.exports);var Dr=Or.exports,Ir={},xr=a&&a.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ir,"__esModule",{value:!0}),Ir.Logger=void 0;const Mr=xr(kr),jr="mediasoup-client";Ir.Logger=class{constructor(e){e?(this._debug=(0,Mr.default)(`${jr}:${e}`),this._warn=(0,Mr.default)(`${jr}:WARN:${e}`),this._error=(0,Mr.default)(`${jr}:ERROR:${e}`)):(this._debug=(0,Mr.default)(jr),this._warn=(0,Mr.default)(`${jr}:WARN`),this._error=(0,Mr.default)(`${jr}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}};var Lr={},Ar=d(Sr);Object.defineProperty(Lr,"__esModule",{value:!0}),Lr.EnhancedEventEmitter=void 0;const Nr=Ar,Br=new Ir.Logger("EnhancedEventEmitter");class Fr extends Nr.EventEmitter{constructor(){super(),this.setMaxListeners(1/0)}emit(e,...t){return super.emit(e,...t)}safeEmit(e,...t){const r=super.listenerCount(e);try{return super.emit(e,...t)}catch(t){return Br.error("safeEmit() | event listener threw an error [eventName:%s]:%o",e,t),Boolean(r)}}on(e,t){return super.on(e,t),this}off(e,t){return super.off(e,t),this}addListener(e,t){return super.on(e,t),this}prependListener(e,t){return super.prependListener(e,t),this}once(e,t){return super.once(e,t),this}prependOnceListener(e,t){return super.prependOnceListener(e,t),this}removeListener(e,t){return super.off(e,t),this}removeAllListeners(e){return super.removeAllListeners(e),this}listenerCount(e){return super.listenerCount(e)}listeners(e){return super.listeners(e)}rawListeners(e){return super.rawListeners(e)}}Lr.EnhancedEventEmitter=Fr;var zr={};Object.defineProperty(zr,"__esModule",{value:!0}),zr.InvalidStateError=zr.UnsupportedError=void 0;class Vr extends Error{constructor(e){super(e),this.name="UnsupportedError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Vr):this.stack=new Error(e).stack}}zr.UnsupportedError=Vr;class Ur extends Error{constructor(e){super(e),this.name="InvalidStateError",Error.hasOwnProperty("captureStackTrace")?Error.captureStackTrace(this,Ur):this.stack=new Error(e).stack}}zr.InvalidStateError=Ur;var $r={};Object.defineProperty($r,"__esModule",{value:!0}),$r.generateRandomNumber=$r.clone=void 0,$r.clone=function(e){return void 0===e?void 0:Number.isNaN(e)?NaN:"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))},$r.generateRandomNumber=function(){return Math.round(1e7*Math.random())};var Gr={},qr={},Hr={},Wr=a&&a.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Hr,"__esModule",{value:!0}),Hr.Logger=void 0;const Kr=Wr(kr),Jr="h264-profile-level-id";Hr.Logger=class{constructor(e){e?(this._debug=(0,Kr.default)(`${Jr}:${e}`),this._warn=(0,Kr.default)(`${Jr}:WARN:${e}`),this._error=(0,Kr.default)(`${Jr}:ERROR:${e}`)):(this._debug=(0,Kr.default)(Jr),this._warn=(0,Kr.default)(`${Jr}:WARN`),this._error=(0,Kr.default)(`${Jr}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}},Object.defineProperty(qr,"__esModule",{value:!0}),qr.generateProfileLevelIdStringForAnswer=qr.isSameProfile=qr.parseSdpProfileLevelId=qr.levelToString=qr.profileToString=qr.profileLevelIdToString=qr.parseProfileLevelId=qr.ProfileLevelId=qr.Level=qr.Profile=void 0;const Qr=new Hr.Logger;var Yr,Zr;!function(e){e[e.ConstrainedBaseline=1]="ConstrainedBaseline",e[e.Baseline=2]="Baseline",e[e.Main=3]="Main",e[e.ConstrainedHigh=4]="ConstrainedHigh",e[e.High=5]="High",e[e.PredictiveHigh444=6]="PredictiveHigh444"}(Yr||(qr.Profile=Yr={})),function(e){e[e.L1_b=0]="L1_b",e[e.L1=10]="L1",e[e.L1_1=11]="L1_1",e[e.L1_2=12]="L1_2",e[e.L1_3=13]="L1_3",e[e.L2=20]="L2",e[e.L2_1=21]="L2_1",e[e.L2_2=22]="L2_2",e[e.L3=30]="L3",e[e.L3_1=31]="L3_1",e[e.L3_2=32]="L3_2",e[e.L4=40]="L4",e[e.L4_1=41]="L4_1",e[e.L4_2=42]="L4_2",e[e.L5=50]="L5",e[e.L5_1=51]="L5_1",e[e.L5_2=52]="L5_2"}(Zr||(qr.Level=Zr={}));class Xr{constructor(e,t){this.profile=e,this.level=t}}qr.ProfileLevelId=Xr;const en=new Xr(Yr.ConstrainedBaseline,Zr.L3_1);class tn{constructor(e){this.mask=~cn("x",e),this.masked_value=cn("1",e)}isMatch(e){return this.masked_value===(e&this.mask)}}class rn{constructor(e,t,r){this.profile_idc=e,this.profile_iop=t,this.profile=r}}const nn=[new rn(66,new tn("x1xx0000"),Yr.ConstrainedBaseline),new rn(77,new tn("1xxx0000"),Yr.ConstrainedBaseline),new rn(88,new tn("11xx0000"),Yr.ConstrainedBaseline),new rn(66,new tn("x0xx0000"),Yr.Baseline),new rn(88,new tn("10xx0000"),Yr.Baseline),new rn(77,new tn("0x0x0000"),Yr.Main),new rn(100,new tn("00000000"),Yr.High),new rn(100,new tn("00001100"),Yr.ConstrainedHigh),new rn(244,new tn("00000000"),Yr.PredictiveHigh444)];function sn(e){if("string"!=typeof e||6!==e.length)return;const t=parseInt(e,16);if(0===t)return;const r=255&t,n=t>>8&255,i=t>>16&255;let s;switch(r){case Zr.L1_1:s=0!=(16&n)?Zr.L1_b:Zr.L1_1;break;case Zr.L1:case Zr.L1_2:case Zr.L1_3:case Zr.L2:case Zr.L2_1:case Zr.L2_2:case Zr.L3:case Zr.L3_1:case Zr.L3_2:case Zr.L4:case Zr.L4_1:case Zr.L4_2:case Zr.L5:case Zr.L5_1:case Zr.L5_2:s=r;break;default:return void Qr.warn(`parseProfileLevelId() | unrecognized level_idc [str:${e}, level_idc:${r}]`)}for(const e of nn)if(i===e.profile_idc&&e.profile_iop.isMatch(n))return new Xr(e.profile,s);Qr.warn(`parseProfileLevelId() | unrecognized profile_idc/profile_iop combination [str:${e}, profile_idc:${i}, profile_iop:${n}]`)}function on(e){if(e.level==Zr.L1_b)switch(e.profile){case Yr.ConstrainedBaseline:return"42f00b";case Yr.Baseline:return"42100b";case Yr.Main:return"4d100b";default:return void Qr.warn(`profileLevelIdToString() | Level 1_b not is allowed for profile ${e.profile}`)}let t;switch(e.profile){case Yr.ConstrainedBaseline:t="42e0";break;case Yr.Baseline:t="4200";break;case Yr.Main:t="4d00";break;case Yr.ConstrainedHigh:t="640c";break;case Yr.High:t="6400";break;case Yr.PredictiveHigh444:t="f400";break;default:return void Qr.warn(`profileLevelIdToString() | unrecognized profile ${e.profile}`)}let r=e.level.toString(16);return 1===r.length&&(r=`0${r}`),`${t}${r}`}function an(e={}){const t=e["profile-level-id"];return t?sn(t):en}function cn(e,t){return Number(t[0]===e)<<7|Number(t[1]===e)<<6|Number(t[2]===e)<<5|Number(t[3]===e)<<4|Number(t[4]===e)<<3|Number(t[5]===e)<<2|Number(t[6]===e)<<1|Number(t[7]===e)<<0}function dn(e={}){const t=e["level-asymmetry-allowed"];return!0===t||1===t||"1"===t}qr.parseProfileLevelId=sn,qr.profileLevelIdToString=on,qr.profileToString=function(e){switch(e){case Yr.ConstrainedBaseline:return"ConstrainedBaseline";case Yr.Baseline:return"Baseline";case Yr.Main:return"Main";case Yr.ConstrainedHigh:return"ConstrainedHigh";case Yr.High:return"High";case Yr.PredictiveHigh444:return"PredictiveHigh444";default:return void Qr.warn(`profileToString() | unrecognized profile ${e}`)}},qr.levelToString=function(e){switch(e){case Zr.L1_b:return"1b";case Zr.L1:return"1";case Zr.L1_1:return"1.1";case Zr.L1_2:return"1.2";case Zr.L1_3:return"1.3";case Zr.L2:return"2";case Zr.L2_1:return"2.1";case Zr.L2_2:return"2.2";case Zr.L3:return"3";case Zr.L3_1:return"3.1";case Zr.L3_2:return"3.2";case Zr.L4:return"4";case Zr.L4_1:return"4.1";case Zr.L4_2:return"4.2";case Zr.L5:return"5";case Zr.L5_1:return"5.1";case Zr.L5_2:return"5.2";default:return void Qr.warn(`levelToString() | unrecognized level ${e}`)}},qr.parseSdpProfileLevelId=an,qr.isSameProfile=function(e={},t={}){const r=an(e),n=an(t);return Boolean(r&&n&&r.profile===n.profile)},qr.generateProfileLevelIdStringForAnswer=function(e={},t={}){if(!e["profile-level-id"]&&!t["profile-level-id"])return void Qr.warn("generateProfileLevelIdStringForAnswer() | profile-level-id missing in local and remote params");const r=an(e),n=an(t);if(!r)throw new TypeError("invalid local_profile_level_id");if(!n)throw new TypeError("invalid remote_profile_level_id");if(r.profile!==n.profile)throw new TypeError("H264 Profile mismatch");const i=dn(e)&&dn(t),s=r.level,o=n.level,a=function(e,t){return e===Zr.L1_b?t!==Zr.L1&&t!==Zr.L1_b:t===Zr.L1_b?e!==Zr.L1:e<t}(c=s,d=o)?c:d;var c,d;const l=i?s:a;return Qr.debug(`generateProfileLevelIdStringForAnswer() | result [profile:${r.profile}, level:${l}]`),on(new Xr(r.profile,l))};var ln=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),un=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),pn=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ln(t,e,r);return un(t,e),t};Object.defineProperty(Gr,"__esModule",{value:!0}),Gr.canReceive=Gr.canSend=Gr.generateProbatorRtpParameters=Gr.reduceCodecs=Gr.getSendingRemoteRtpParameters=Gr.getSendingRtpParameters=Gr.getRecvRtpCapabilities=Gr.getExtendedRtpCapabilities=Gr.validateSctpCapabilities=Gr.validateSctpStreamParameters=Gr.validateRtpParameters=Gr.validateRtpCapabilities=void 0;const hn=pn(qr),fn=pn($r);function mn(e){if("object"!=typeof e)throw new TypeError("params is not an object");if(e.mid&&"string"!=typeof e.mid)throw new TypeError("params.mid is not a string");if(!Array.isArray(e.codecs))throw new TypeError("missing params.codecs");for(const t of e.codecs)yn(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("params.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)_n(t);if(e.encodings&&!Array.isArray(e.encodings))throw new TypeError("params.encodings is not an array");e.encodings||(e.encodings=[]);for(const t of e.encodings)wn(t);if(e.rtcp&&"object"!=typeof e.rtcp)throw new TypeError("params.rtcp is not an object");e.rtcp||(e.rtcp={}),function(e){if("object"!=typeof e)throw new TypeError("rtcp is not an object");if(e.cname&&"string"!=typeof e.cname)throw new TypeError("invalid rtcp.cname");e.reducedSize&&"boolean"==typeof e.reducedSize||(e.reducedSize=!0)}(e.rtcp)}function gn(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if(e.kind=r[1].toLowerCase(),e.preferredPayloadType&&"number"!=typeof e.preferredPayloadType)throw new TypeError("invalid codec.preferredPayloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===e.kind?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)vn(t)}function vn(e){if("object"!=typeof e)throw new TypeError("fb is not an object");if(!e.type||"string"!=typeof e.type)throw new TypeError("missing fb.type");e.parameter&&"string"==typeof e.parameter||(e.parameter="")}function bn(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if("audio"!==e.kind&&"video"!==e.kind)throw new TypeError("invalid ext.kind");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.preferredId)throw new TypeError("missing ext.preferredId");if(e.preferredEncrypt&&"boolean"!=typeof e.preferredEncrypt)throw new TypeError("invalid ext.preferredEncrypt");if(e.preferredEncrypt||(e.preferredEncrypt=!1),e.direction&&"string"!=typeof e.direction)throw new TypeError("invalid ext.direction");e.direction||(e.direction="sendrecv")}function yn(e){const t=new RegExp("^(audio|video)/(.+)","i");if("object"!=typeof e)throw new TypeError("codec is not an object");if(!e.mimeType||"string"!=typeof e.mimeType)throw new TypeError("missing codec.mimeType");const r=t.exec(e.mimeType);if(!r)throw new TypeError("invalid codec.mimeType");if("number"!=typeof e.payloadType)throw new TypeError("missing codec.payloadType");if("number"!=typeof e.clockRate)throw new TypeError("missing codec.clockRate");"audio"===r[1].toLowerCase()?"number"!=typeof e.channels&&(e.channels=1):delete e.channels,e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError(`invalid codec parameter [key:${t}s, value:${r}]`);if("apt"===t&&"number"!=typeof r)throw new TypeError("invalid codec apt parameter")}e.rtcpFeedback&&Array.isArray(e.rtcpFeedback)||(e.rtcpFeedback=[]);for(const t of e.rtcpFeedback)vn(t)}function _n(e){if("object"!=typeof e)throw new TypeError("ext is not an object");if(!e.uri||"string"!=typeof e.uri)throw new TypeError("missing ext.uri");if("number"!=typeof e.id)throw new TypeError("missing ext.id");if(e.encrypt&&"boolean"!=typeof e.encrypt)throw new TypeError("invalid ext.encrypt");e.encrypt||(e.encrypt=!1),e.parameters&&"object"==typeof e.parameters||(e.parameters={});for(const t of Object.keys(e.parameters)){let r=e.parameters[t];if(void 0===r&&(e.parameters[t]="",r=""),"string"!=typeof r&&"number"!=typeof r)throw new TypeError("invalid header extension parameter")}}function wn(e){if("object"!=typeof e)throw new TypeError("encoding is not an object");if(e.ssrc&&"number"!=typeof e.ssrc)throw new TypeError("invalid encoding.ssrc");if(e.rid&&"string"!=typeof e.rid)throw new TypeError("invalid encoding.rid");if(e.rtx&&"object"!=typeof e.rtx)throw new TypeError("invalid encoding.rtx");if(e.rtx&&"number"!=typeof e.rtx.ssrc)throw new TypeError("missing encoding.rtx.ssrc");if(e.dtx&&"boolean"==typeof e.dtx||(e.dtx=!1),e.scalabilityMode&&"string"!=typeof e.scalabilityMode)throw new TypeError("invalid encoding.scalabilityMode")}function Sn(e){return!!e&&/.+\/rtx$/i.test(e.mimeType)}function Cn(e,t,{strict:r=!1,modify:n=!1}={}){const i=e.mimeType.toLowerCase();if(i!==t.mimeType.toLowerCase())return!1;if(e.clockRate!==t.clockRate)return!1;if(e.channels!==t.channels)return!1;switch(i){case"video/h264":if(r){if((e.parameters["packetization-mode"]||0)!==(t.parameters["packetization-mode"]||0))return!1;if(!hn.isSameProfile(e.parameters,t.parameters))return!1;let r;try{r=hn.generateProfileLevelIdStringForAnswer(e.parameters,t.parameters)}catch(e){return!1}n&&(r?(e.parameters["profile-level-id"]=r,t.parameters["profile-level-id"]=r):(delete e.parameters["profile-level-id"],delete t.parameters["profile-level-id"]))}break;case"video/vp9":if(r){if((e.parameters["profile-id"]||0)!==(t.parameters["profile-id"]||0))return!1}}return!0}function Rn(e,t){return(!e.kind||!t.kind||e.kind===t.kind)&&e.uri===t.uri}function Pn(e,t){const r=[];for(const n of e.rtcpFeedback||[]){const e=(t.rtcpFeedback||[]).find((e=>e.type===n.type&&(e.parameter===n.parameter||!e.parameter&&!n.parameter)));e&&r.push(e)}return r}Gr.validateRtpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(e.codecs&&!Array.isArray(e.codecs))throw new TypeError("caps.codecs is not an array");e.codecs||(e.codecs=[]);for(const t of e.codecs)gn(t);if(e.headerExtensions&&!Array.isArray(e.headerExtensions))throw new TypeError("caps.headerExtensions is not an array");e.headerExtensions||(e.headerExtensions=[]);for(const t of e.headerExtensions)bn(t)},Gr.validateRtpParameters=mn,Gr.validateSctpStreamParameters=function(e){if("object"!=typeof e)throw new TypeError("params is not an object");if("number"!=typeof e.streamId)throw new TypeError("missing params.streamId");let t=!1;if("boolean"==typeof e.ordered?t=!0:e.ordered=!0,e.maxPacketLifeTime&&"number"!=typeof e.maxPacketLifeTime)throw new TypeError("invalid params.maxPacketLifeTime");if(e.maxRetransmits&&"number"!=typeof e.maxRetransmits)throw new TypeError("invalid params.maxRetransmits");if(e.maxPacketLifeTime&&e.maxRetransmits)throw new TypeError("cannot provide both maxPacketLifeTime and maxRetransmits");if(t&&e.ordered&&(e.maxPacketLifeTime||e.maxRetransmits))throw new TypeError("cannot be ordered with maxPacketLifeTime or maxRetransmits");if(t||!e.maxPacketLifeTime&&!e.maxRetransmits||(e.ordered=!1),e.label&&"string"!=typeof e.label)throw new TypeError("invalid params.label");if(e.protocol&&"string"!=typeof e.protocol)throw new TypeError("invalid params.protocol")},Gr.validateSctpCapabilities=function(e){if("object"!=typeof e)throw new TypeError("caps is not an object");if(!e.numStreams||"object"!=typeof e.numStreams)throw new TypeError("missing caps.numStreams");!function(e){if("object"!=typeof e)throw new TypeError("numStreams is not an object");if("number"!=typeof e.OS)throw new TypeError("missing numStreams.OS");if("number"!=typeof e.MIS)throw new TypeError("missing numStreams.MIS")}(e.numStreams)},Gr.getExtendedRtpCapabilities=function(e,t){const r={codecs:[],headerExtensions:[]};for(const n of t.codecs||[]){if(Sn(n))continue;const t=(e.codecs||[]).find((e=>Cn(e,n,{strict:!0,modify:!0})));if(!t)continue;const i={mimeType:t.mimeType,kind:t.kind,clockRate:t.clockRate,channels:t.channels,localPayloadType:t.preferredPayloadType,localRtxPayloadType:void 0,remotePayloadType:n.preferredPayloadType,remoteRtxPayloadType:void 0,localParameters:t.parameters,remoteParameters:n.parameters,rtcpFeedback:Pn(t,n)};r.codecs.push(i)}for(const n of r.codecs){const r=e.codecs.find((e=>Sn(e)&&e.parameters.apt===n.localPayloadType)),i=t.codecs.find((e=>Sn(e)&&e.parameters.apt===n.remotePayloadType));r&&i&&(n.localRtxPayloadType=r.preferredPayloadType,n.remoteRtxPayloadType=i.preferredPayloadType)}for(const n of t.headerExtensions){const t=e.headerExtensions.find((e=>Rn(e,n)));if(!t)continue;const i={kind:n.kind,uri:n.uri,sendId:t.preferredId,recvId:n.preferredId,encrypt:t.preferredEncrypt,direction:"sendrecv"};switch(n.direction){case"sendrecv":i.direction="sendrecv";break;case"recvonly":i.direction="sendonly";break;case"sendonly":i.direction="recvonly";break;case"inactive":i.direction="inactive"}r.headerExtensions.push(i)}return r},Gr.getRecvRtpCapabilities=function(e){const t={codecs:[],headerExtensions:[]};for(const r of e.codecs){const e={mimeType:r.mimeType,kind:r.kind,preferredPayloadType:r.remotePayloadType,clockRate:r.clockRate,channels:r.channels,parameters:r.localParameters,rtcpFeedback:r.rtcpFeedback};if(t.codecs.push(e),!r.remoteRtxPayloadType)continue;const n={mimeType:`${r.kind}/rtx`,kind:r.kind,preferredPayloadType:r.remoteRtxPayloadType,clockRate:r.clockRate,parameters:{apt:r.remotePayloadType},rtcpFeedback:[]};t.codecs.push(n)}for(const r of e.headerExtensions){if("sendrecv"!==r.direction&&"recvonly"!==r.direction)continue;const e={kind:r.kind,uri:r.uri,preferredId:r.recvId,preferredEncrypt:r.encrypt,direction:r.direction};t.headerExtensions.push(e)}return t},Gr.getSendingRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const n of t.codecs){if(n.kind!==e)continue;const t={mimeType:n.mimeType,payloadType:n.localPayloadType,clockRate:n.clockRate,channels:n.channels,parameters:n.localParameters,rtcpFeedback:n.rtcpFeedback};if(r.codecs.push(t),n.localRtxPayloadType){const e={mimeType:`${n.kind}/rtx`,payloadType:n.localRtxPayloadType,clockRate:n.clockRate,parameters:{apt:n.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const n of t.headerExtensions){if(n.kind&&n.kind!==e||"sendrecv"!==n.direction&&"sendonly"!==n.direction)continue;const t={uri:n.uri,id:n.sendId,encrypt:n.encrypt,parameters:{}};r.headerExtensions.push(t)}return r},Gr.getSendingRemoteRtpParameters=function(e,t){const r={mid:void 0,codecs:[],headerExtensions:[],encodings:[],rtcp:{}};for(const n of t.codecs){if(n.kind!==e)continue;const t={mimeType:n.mimeType,payloadType:n.localPayloadType,clockRate:n.clockRate,channels:n.channels,parameters:n.remoteParameters,rtcpFeedback:n.rtcpFeedback};if(r.codecs.push(t),n.localRtxPayloadType){const e={mimeType:`${n.kind}/rtx`,payloadType:n.localRtxPayloadType,clockRate:n.clockRate,parameters:{apt:n.localPayloadType},rtcpFeedback:[]};r.codecs.push(e)}}for(const n of t.headerExtensions){if(n.kind&&n.kind!==e||"sendrecv"!==n.direction&&"sendonly"!==n.direction)continue;const t={uri:n.uri,id:n.sendId,encrypt:n.encrypt,parameters:{}};r.headerExtensions.push(t)}if(r.headerExtensions.some((e=>"http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"goog-remb"!==e.type));else if(r.headerExtensions.some((e=>"http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time"===e.uri)))for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type));else for(const e of r.codecs)e.rtcpFeedback=(e.rtcpFeedback||[]).filter((e=>"transport-cc"!==e.type&&"goog-remb"!==e.type));return r},Gr.reduceCodecs=function(e,t){const r=[];if(t){for(let n=0;n<e.length;++n)if(Cn(e[n],t)){r.push(e[n]),Sn(e[n+1])&&r.push(e[n+1]);break}if(0===r.length)throw new TypeError("no matching codec found")}else r.push(e[0]),Sn(e[1])&&r.push(e[1]);return r},Gr.generateProbatorRtpParameters=function(e){mn(e=fn.clone(e));const t={mid:"probator",codecs:[],headerExtensions:[],encodings:[{ssrc:1234}],rtcp:{cname:"probator"}};return t.codecs.push(e.codecs[0]),t.codecs[0].payloadType=127,t.headerExtensions=e.headerExtensions,t},Gr.canSend=function(e,t){return t.codecs.some((t=>t.kind===e))},Gr.canReceive=function(e,t){if(mn(e),0===e.codecs.length)return!1;const r=e.codecs[0];return t.codecs.some((e=>e.remotePayloadType===r.payloadType))};var Tn={},kn={},En={};Object.defineProperty(En,"__esModule",{value:!0}),En.Logger=void 0;const On=kr,Dn="awaitqueue";En.Logger=class{constructor(e){e?(this._debug=(0,On.default)(`${Dn}:${e}`),this._warn=(0,On.default)(`${Dn}:WARN:${e}`),this._error=(0,On.default)(`${Dn}:ERROR:${e}`)):(this._debug=(0,On.default)(Dn),this._warn=(0,On.default)(`${Dn}:WARN`),this._error=(0,On.default)(`${Dn}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}},Object.defineProperty(kn,"__esModule",{value:!0}),kn.AwaitQueue=kn.AwaitQueueRemovedTaskError=kn.AwaitQueueStoppedError=void 0;const In=new En.Logger;class xn extends Error{constructor(e){super(e??"AwaitQueue stopped"),this.name="AwaitQueueStoppedError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,xn)}}kn.AwaitQueueStoppedError=xn;class Mn extends Error{constructor(e){super(e??"AwaitQueue task removed"),this.name="AwaitQueueRemovedTaskError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,Mn)}}kn.AwaitQueueRemovedTaskError=Mn;
2
2
  /*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */
3
- let jn;kn.AwaitQueue=class{constructor(){this.pendingTasks=new Map,this.nextTaskId=0,this.stopping=!1}get size(){return this.pendingTasks.size}async push(e,t){if(t=t??e.name,In.debug(`push() [name:${t}]`),"function"!=typeof e)throw new TypeError("given task is not a function");if(t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,n)=>{const i={id:this.nextTaskId++,task:e,name:t,enqueuedAt:Date.now(),executedAt:void 0,completed:!1,resolve:e=>{if(i.completed)return;i.completed=!0,this.pendingTasks.delete(i.id),In.debug(`resolving task [name:${i.name}]`),r(e);const[t]=this.pendingTasks.values();t&&!t.executedAt&&this.execute(t)},reject:e=>{if(!i.completed&&(i.completed=!0,this.pendingTasks.delete(i.id),In.debug(`rejecting task [name:${i.name}]: %s`,String(e)),n(e),!this.stopping)){const[e]=this.pendingTasks.values();e&&!e.executedAt&&this.execute(e)}}};this.pendingTasks.set(i.id,i),1===this.pendingTasks.size&&this.execute(i)}))}stop(){In.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())In.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new xn);this.stopping=!1}remove(e){In.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new Mn):In.debug(`stop() | no task with given idx [taskIdx:${e}]`)}dump(){const e=Date.now();let t=0;return Array.from(this.pendingTasks.values()).map((r=>({idx:t++,task:r.task,name:r.name,enqueuedTime:r.executedAt?r.executedAt-r.enqueuedAt:e-r.enqueuedAt,executionTime:r.executedAt?e-r.executedAt:0})))}async execute(e){if(In.debug(`execute() [name:${e.name}]`),e.executedAt)throw new Error("task already being executed");e.executedAt=Date.now();try{const t=await e.task();e.resolve(t)}catch(t){e.reject(t)}}};var Ln="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:a):e=>(jn||(jn=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),An={};Object.defineProperty(An,"__esModule",{value:!0}),An.Producer=void 0;const Nn=Lr,Bn=zr,Fn=new Ir.Logger("Producer");class zn extends Nn.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:n,rtpParameters:i,stopTracks:s,disableTrackOnPause:o,zeroRtpOnPause:a,appData:c}){super(),this._closed=!1,this._observer=new Nn.EnhancedEventEmitter,Fn.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=n,this._kind=n.kind,this._rtpParameters=i,this._paused=!!o&&!n.enabled,this._maxSpatialLayer=void 0,this._stopTracks=s,this._disableTrackOnPause=o,this._zeroRtpOnPause=a,this._appData=c||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get closed(){return this._closed}get kind(){return this._kind}get rtpSender(){return this._rtpSender}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get maxSpatialLayer(){return this._maxSpatialLayer}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Fn.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Fn.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Bn.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Fn.debug("pause()"),this._closed?Fn.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@pause",e,t)})).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){Fn.debug("resume()"),this._closed?Fn.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@resume",e,t)})).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(Fn.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new Bn.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new Bn.InvalidStateError("track ended");e!==this._track?(await new Promise(((t,r)=>{this.safeEmit("@replacetrack",e,t,r)})),this.destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this.handleTrack()):Fn.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new Bn.InvalidStateError("closed");if("video"!==this._kind)throw new Bn.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await new Promise(((t,r)=>{this.safeEmit("@setmaxspatiallayer",e,t,r)})).catch((()=>{})),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new Bn.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){Fn.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track&&this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){if(this._track)try{this._track.removeEventListener("ended",this.onTrackEnded),this._stopTracks&&this._track.stop()}catch(e){}}}An.Producer=zn;var Un={};Object.defineProperty(Un,"__esModule",{value:!0}),Un.Consumer=void 0;const $n=Lr,Vn=zr,Gn=new Ir.Logger("Consumer");class qn extends $n.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:n,track:i,rtpParameters:s,appData:o}){super(),this._closed=!1,this._observer=new $n.EnhancedEventEmitter,Gn.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=n,this._track=i,this._rtpParameters=s,this._paused=!i.enabled,this._appData=o||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get producerId(){return this._producerId}get closed(){return this._closed}get kind(){return this._track.kind}get rtpReceiver(){return this._rtpReceiver}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Gn.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Gn.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Vn.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Gn.debug("pause()"),this._closed?Gn.error("pause() | Consumer closed"):this._paused?Gn.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){Gn.debug("resume()"),this._closed?Gn.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):Gn.debug("resume() | Consumer is already resumed")}onTrackEnded(){Gn.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){try{this._track.removeEventListener("ended",this.onTrackEnded),this._track.stop()}catch(e){}}}Un.Consumer=qn;var Hn={};Object.defineProperty(Hn,"__esModule",{value:!0}),Hn.DataProducer=void 0;const Wn=Lr,Kn=zr,Jn=new Ir.Logger("DataProducer");class Qn extends Wn.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:n}){super(),this._closed=!1,this._observer=new Wn.EnhancedEventEmitter,Jn.debug("constructor()"),this._id=e,this._dataChannel=t,this._sctpStreamParameters=r,this._appData=n||{},this.handleDataChannel()}get id(){return this._id}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get bufferedAmount(){return this._dataChannel.bufferedAmount}get bufferedAmountLowThreshold(){return this._dataChannel.bufferedAmountLowThreshold}set bufferedAmountLowThreshold(e){this._dataChannel.bufferedAmountLowThreshold=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Jn.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Jn.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(Jn.debug("send()"),this._closed)throw new Kn.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Jn.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?Jn.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Jn.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Jn.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||Jn.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}Hn.DataProducer=Qn;var Yn={};Object.defineProperty(Yn,"__esModule",{value:!0}),Yn.DataConsumer=void 0;const Zn=Lr,Xn=new Ir.Logger("DataConsumer");class ei extends Zn.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:n,appData:i}){super(),this._closed=!1,this._observer=new Zn.EnhancedEventEmitter,Xn.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=n,this._appData=i||{},this.handleDataChannel()}get id(){return this._id}get dataProducerId(){return this._dataProducerId}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get binaryType(){return this._dataChannel.binaryType}set binaryType(e){this._dataChannel.binaryType=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Xn.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Xn.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Xn.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?Xn.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Xn.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Xn.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}Yn.DataConsumer=ei;var ti=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),ri=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ni=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ti(t,e,r);return ri(t,e),t},ii=a&&a.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Tn,"__esModule",{value:!0}),Tn.Transport=void 0;const si=kn,oi=ii(Ln),ai=Ir,ci=Lr,di=zr,li=ni(Vr),ui=ni(Gr),pi=An,hi=Un,fi=Hn,mi=Yn,gi=new ai.Logger("Transport");class vi{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}let bi=class extends ci.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:n,dtlsParameters:i,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:u,extendedRtpCapabilities:p,canProduceByKind:h}){super(),this._closed=!1,this._iceGatheringState="new",this._connectionState="new",this._producers=new Map,this._consumers=new Map,this._dataProducers=new Map,this._dataConsumers=new Map,this._probatorConsumerCreated=!1,this._awaitQueue=new si.AwaitQueue,this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._pendingPauseConsumers=new Map,this._consumerPauseInProgress=!1,this._pendingResumeConsumers=new Map,this._consumerResumeInProgress=!1,this._pendingCloseConsumers=new Map,this._consumerCloseInProgress=!1,this._observer=new ci.EnhancedEventEmitter,gi.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=p,this._canProduceByKind=h,this._maxSctpMessageSize=s?s.maxMessageSize:null,delete(c=li.clone(c)||{}).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=u(),this._handler.run({direction:e,iceParameters:r,iceCandidates:n,dtlsParameters:i,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,extendedRtpCapabilities:p}),this._appData=l||{},this.handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get iceGatheringState(){return this._iceGatheringState}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){if(!this._closed){gi.debug("close()"),this._closed=!0,this._awaitQueue.stop(),this._handler.close(),this._connectionState="closed";for(const e of this._producers.values())e.transportClosed();this._producers.clear();for(const e of this._consumers.values())e.transportClosed();this._consumers.clear();for(const e of this._dataProducers.values())e.transportClosed();this._dataProducers.clear();for(const e of this._dataConsumers.values())e.transportClosed();this._dataConsumers.clear(),this._observer.safeEmit("close")}}async getStats(){if(this._closed)throw new di.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(gi.debug("restartIce()"),this._closed)throw new di.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>await this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(gi.debug("updateIceServers()"),this._closed)throw new di.InvalidStateError("closed");if(!Array.isArray(e))throw new TypeError("missing iceServers");return this._awaitQueue.push((async()=>this._handler.updateIceServers(e)),"transport.updateIceServers()")}async produce({track:e,encodings:t,codecOptions:r,codec:n,stopTracks:i=!0,disableTrackOnPause:s=!0,zeroRtpOnPause:o=!1,appData:a={}}={}){if(gi.debug("produce() [track:%o]",e),this._closed)throw new di.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new di.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new di.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new di.InvalidStateError("track ended");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("produce"))throw new TypeError('no "produce" listener set into this transport');if(a&&"object"!=typeof a)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let c;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?c=void 0:t&&(c=t.map((e=>{const t={active:!0};return!1===e.active&&(t.active=!1),"boolean"==typeof e.dtx&&(t.dtx=e.dtx),"string"==typeof e.scalabilityMode&&(t.scalabilityMode=e.scalabilityMode),"number"==typeof e.scaleResolutionDownBy&&(t.scaleResolutionDownBy=e.scaleResolutionDownBy),"number"==typeof e.maxBitrate&&(t.maxBitrate=e.maxBitrate),"number"==typeof e.maxFramerate&&(t.maxFramerate=e.maxFramerate),"boolean"==typeof e.adaptivePtime&&(t.adaptivePtime=e.adaptivePtime),"string"==typeof e.priority&&(t.priority=e.priority),"string"==typeof e.networkPriority&&(t.networkPriority=e.networkPriority),t})));const{localId:d,rtpParameters:l,rtpSender:u}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:n});try{ui.validateRtpParameters(l);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:l,appData:a},t,r)})),r=new pi.Producer({id:t,localId:d,rtpSender:u,track:e,rtpParameters:l,stopTracks:i,disableTrackOnPause:s,zeroRtpOnPause:o,appData:a});return this._producers.set(r.id,r),this.handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(d).catch((()=>{})),e}}),"transport.produce()").catch((t=>{if(i)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:n,streamId:i,appData:s={}}){if(gi.debug("consume()"),n=li.clone(n),this._closed)throw new di.InvalidStateError("closed");if("recv"!==this._direction)throw new di.UnsupportedError("not a receiving Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing producerId");if("audio"!==r&&"video"!==r)throw new TypeError(`invalid kind '${r}'`);if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");if(!ui.canReceive(n,this._extendedRtpCapabilities))throw new di.UnsupportedError("cannot consume this Producer");const o=new vi({id:e,producerId:t,kind:r,rtpParameters:n,streamId:i,appData:s});return this._pendingConsumerTasks.push(o),(0,oi.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),o.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:n="",protocol:i="",appData:s={}}={}){if(gi.debug("produceData()"),this._closed)throw new di.InvalidStateError("closed");if("send"!==this._direction)throw new di.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new di.UnsupportedError("SCTP not enabled by remote Transport");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("producedata"))throw new TypeError('no "producedata" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return(t||r)&&(e=!1),this._awaitQueue.push((async()=>{const{dataChannel:o,sctpStreamParameters:a}=await this._handler.sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i});ui.validateSctpStreamParameters(a);const{id:c}=await new Promise(((e,t)=>{this.safeEmit("producedata",{sctpStreamParameters:a,label:n,protocol:i,appData:s},e,t)})),d=new fi.DataProducer({id:c,dataChannel:o,sctpStreamParameters:a,appData:s});return this._dataProducers.set(d.id,d),this.handleDataProducer(d),this._observer.safeEmit("newdataproducer",d),d}),"transport.produceData()")}async consumeData({id:e,dataProducerId:t,sctpStreamParameters:r,label:n="",protocol:i="",appData:s={}}){if(gi.debug("consumeData()"),r=li.clone(r),this._closed)throw new di.InvalidStateError("closed");if("recv"!==this._direction)throw new di.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new di.UnsupportedError("SCTP not enabled by remote Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing dataProducerId");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return ui.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:o}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:n,protocol:i}),a=new mi.DataConsumer({id:e,dataProducerId:t,dataChannel:o,sctpStreamParameters:r,appData:s});return this._dataConsumers.set(a.id,a),this.handleDataConsumer(a),this._observer.safeEmit("newdataconsumer",a),a}),"transport.consumeData()")}async createPendingConsumers(){this._consumerCreationInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingConsumerTasks.length)return void gi.debug("createPendingConsumers() | there is no Consumer to be created");const e=[...this._pendingConsumerTasks];let t;this._pendingConsumerTasks=[];const r=[];for(const t of e){const{id:e,kind:n,rtpParameters:i,streamId:s}=t.consumerOptions;r.push({trackId:e,kind:n,rtpParameters:i,streamId:s})}try{const n=await this._handler.receive(r);for(let r=0;r<n.length;++r){const i=e[r],s=n[r],{id:o,producerId:a,kind:c,rtpParameters:d,appData:l}=i.consumerOptions,{localId:u,rtpReceiver:p,track:h}=s,f=new hi.Consumer({id:o,localId:u,producerId:a,rtpReceiver:p,track:h,rtpParameters:d,appData:l});this._consumers.set(f.id,f),this.handleConsumer(f),this._probatorConsumerCreated||t||"video"!==c||(t=f),this._observer.safeEmit("newconsumer",f),i.resolve(f)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=ui.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),gi.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){gi.error("createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}}),"transport.createPendingConsumers()").then((()=>{this._consumerCreationInProgress=!1,this._pendingConsumerTasks.length>0&&this.createPendingConsumers()})).catch((()=>{}))}pausePendingConsumers(){this._consumerPauseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingPauseConsumers.size)return void gi.debug("pausePendingConsumers() | there is no Consumer to be paused");const e=Array.from(this._pendingPauseConsumers.values());this._pendingPauseConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.pauseReceiving(t)}catch(e){gi.error("pausePendingConsumers() | failed to pause Consumers:",e)}}),"transport.pausePendingConsumers").then((()=>{this._consumerPauseInProgress=!1,this._pendingPauseConsumers.size>0&&this.pausePendingConsumers()})).catch((()=>{}))}resumePendingConsumers(){this._consumerResumeInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingResumeConsumers.size)return void gi.debug("resumePendingConsumers() | there is no Consumer to be resumed");const e=Array.from(this._pendingResumeConsumers.values());this._pendingResumeConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.resumeReceiving(t)}catch(e){gi.error("resumePendingConsumers() | failed to resume Consumers:",e)}}),"transport.resumePendingConsumers").then((()=>{this._consumerResumeInProgress=!1,this._pendingResumeConsumers.size>0&&this.resumePendingConsumers()})).catch((()=>{}))}closePendingConsumers(){this._consumerCloseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingCloseConsumers.size)return void gi.debug("closePendingConsumers() | there is no Consumer to be closed");const e=Array.from(this._pendingCloseConsumers.values());this._pendingCloseConsumers.clear();try{await this._handler.stopReceiving(e.map((e=>e.localId)))}catch(e){gi.error("closePendingConsumers() | failed to close Consumers:",e)}}),"transport.closePendingConsumers").then((()=>{this._consumerCloseInProgress=!1,this._pendingCloseConsumers.size>0&&this.closePendingConsumers()})).catch((()=>{}))}handleHandler(){const e=this._handler;e.on("@connect",(({iceParameters:e,dtlsParameters:t},r,n)=>{this._closed?n(new di.InvalidStateError("closed")):this.safeEmit("connect",{iceParameters:e,dtlsParameters:t},r,n)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(gi.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(gi.debug("connection state changed to %s",e),this._connectionState=e,this._closed||this.safeEmit("connectionstatechange",e))}))}handleProducer(e){e.on("@close",(()=>{this._producers.delete(e.id),this._closed||this._awaitQueue.push((async()=>await this._handler.stopSending(e.localId)),"producer @close event").catch((e=>gi.warn("producer.close() failed:%o",e)))})),e.on("@pause",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.pauseSending(e.localId)),"producer @pause event").then(t).catch(r)})),e.on("@resume",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.resumeSending(e.localId)),"producer @resume event").then(t).catch(r)})),e.on("@replacetrack",((t,r,n)=>{this._awaitQueue.push((async()=>await this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(n)})),e.on("@setmaxspatiallayer",((t,r,n)=>{this._awaitQueue.push((async()=>await this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(n)})),e.on("@setrtpencodingparameters",((t,r,n)=>{this._awaitQueue.push((async()=>await this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(n)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new di.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.delete(e.id),this._closed||(this._pendingCloseConsumers.set(e.id,e),!1===this._consumerCloseInProgress&&this.closePendingConsumers())})),e.on("@pause",(()=>{this._pendingResumeConsumers.has(e.id)&&this._pendingResumeConsumers.delete(e.id),this._pendingPauseConsumers.set(e.id,e),(0,oi.default)((()=>{this._closed||!1===this._consumerPauseInProgress&&this.pausePendingConsumers()}))})),e.on("@resume",(()=>{this._pendingPauseConsumers.has(e.id)&&this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.set(e.id,e),(0,oi.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new di.InvalidStateError("closed"));this._handler.getReceiverStats(e.localId).then(t).catch(r)}))}handleDataProducer(e){e.on("@close",(()=>{this._dataProducers.delete(e.id)}))}handleDataConsumer(e){e.on("@close",(()=>{this._dataConsumers.delete(e.id)}))}};Tn.Transport=bi;var yi={},_i={},wi={},Si={exports:{}},Ci=Si.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Ci).forEach((function(e){Ci[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var Ri=Si.exports;!function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,n){var i=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:i&&!r[e.name]&&(r[e.name]={});var s=e.push?{}:i?r[e.name]:r;!function(e,r,n,i){if(i&&!n)r[i]=t(e[1]);else for(var s=0;s<n.length;s+=1)null!=e[s+1]&&(r[n[s]]=t(e[s+1]))}(n.match(e.reg),s,e.names,e.name),e.push&&r[e.push].push(s)},n=Ri,i=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],o=t;return e.split(/(\r\n|\r|\n)/).filter(i).forEach((function(e){var t=e[0],i=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),o=s[s.length-1]);for(var a=0;a<(n[t]||[]).length;a+=1){var c=n[t][a];if(c.reg.test(i))return r(c,o,i)}})),t.media=s,t};var s=function(e,r){var n=r.split(/=(.+)/,2);return 2===n.length?e[n[0]]=t(n[1]):1===n.length&&r.length>1&&(e[n[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(s,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var r=[],n=e.split(" ").map(t),i=0;i<n.length;i+=3)r.push({component:n[i],ip:n[i+1],port:n[i+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var r,n=!1;return"~"!==e[0]?r=t(e):(r=t(e.substring(1,e.length)),n=!0),{scid:r,paused:n}}))}))}}(wi);var Pi=Ri,Ti=/%[sdv%]/g,ki=function(e){var t=1,r=arguments,n=r.length;return e.replace(Ti,(function(e){if(t>=n)return e;var i=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(i);case"%d":return Number(i);case"%v":return""}}))},Ei=function(e,t,r){var n=[e+"="+(t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format)];if(t.names)for(var i=0;i<t.names.length;i+=1){var s=t.names[i];t.name?n.push(r[t.name][s]):n.push(r[t.names[i]])}else n.push(r[t.name]);return ki.apply(null,n)},Oi=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Di=["i","c","b","a"],Ii=wi,xi=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var r=t.outerOrder||Oi,n=t.innerOrder||Di,i=[];return r.forEach((function(t){Pi[t].forEach((function(r){r.name in e&&null!=e[r.name]?i.push(Ei(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){i.push(Ei(t,r,e))}))}))})),e.media.forEach((function(e){i.push(Ei("m",Pi.m[0],e)),n.forEach((function(t){Pi[t].forEach((function(r){r.name in e&&null!=e[r.name]?i.push(Ei(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){i.push(Ei(t,r,e))}))}))}))})),i.join("\r\n")+"\r\n"},Mi=_i.write=xi,ji=_i.parse=Ii.parse;_i.parseParams=Ii.parseParams,_i.parseFmtpConfig=Ii.parseFmtpConfig,_i.parsePayloads=Ii.parsePayloads,_i.parseRemoteCandidates=Ii.parseRemoteCandidates,_i.parseImageAttributes=Ii.parseImageAttributes,_i.parseSimulcastStreamList=Ii.parseSimulcastStreamList;var Li={},Ai=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Ni=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Bi=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ai(t,e,r);return Ni(t,e),t};Object.defineProperty(Li,"__esModule",{value:!0}),Li.applyCodecParameters=Li.getCname=Li.extractDtlsParameters=Li.extractIceParameters=Li.extractRtpCapabilities=void 0;const Fi=Bi(_i);Li.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let n=!1,i=!1;for(const s of e.media){const e=s.type;switch(e){case"audio":if(n)continue;n=!0;break;case"video":if(i)continue;i=!0;break;default:continue}for(const r of s.rtp){const n={kind:e,mimeType:`${e}/${r.codec}`,preferredPayloadType:r.payload,clockRate:r.rate,channels:r.encoding,parameters:{},rtcpFeedback:[]};t.set(n.preferredPayloadType,n)}for(const e of s.fmtp||[]){const r=Fi.parseParams(e.config),n=t.get(e.payload);n&&(r&&r.hasOwnProperty("profile-level-id")&&(r["profile-level-id"]=String(r["profile-level-id"])),n.parameters=r)}for(const r of s.rtcpFb||[]){const n={type:r.type,parameter:r.subtype};if(n.parameter||delete n.parameter,"*"!==r.payload){const e=t.get(r.payload);if(!e)continue;e.rtcpFeedback.push(n)}else for(const r of t.values())r.kind!==e||/.+\/rtx$/i.test(r.mimeType)||r.rtcpFeedback.push(n)}for(const t of s.ext||[]){if(t["encrypt-uri"])continue;const n={kind:e,uri:t.uri,preferredId:t.value};r.push(n)}}return{codecs:Array.from(t.values()),headerExtensions:r}},Li.extractIceParameters=function({sdpObject:e}){let t=e.iceUfrag,r=e.icePwd;if(!t||!r){const n=(e.media||[]).find((e=>0!==e.port));n&&(t??(t=n.iceUfrag),r??(r=n.icePwd))}if(!t)throw new Error("no a=iceUfrag found at SDP session or media level");if(!r)throw new Error("no a=icePwd found at SDP session or media level");return{usernameFragment:t,password:r}},Li.extractDtlsParameters=function({sdpObject:e}){let t,r=e.setup,n=e.fingerprint;if(!r||!n){const t=(e.media||[]).find((e=>0!==e.port));t&&(r??(r=t.setup),n??(n=t.fingerprint))}if(!r)throw new Error("no a=setup found at SDP session or media level");if(!n)throw new Error("no a=fingerprint found at SDP session or media level");switch(r){case"active":t="client";break;case"passive":t="server";break;case"actpass":t="auto"}return{role:t,fingerprints:[{algorithm:n.type,value:n.hash}]}},Li.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},Li.applyCodecParameters=function({offerRtpParameters:e,answerMediaObject:t}){for(const r of e.codecs){const e=r.mimeType.toLowerCase();if("audio/opus"!==e)continue;if(!(t.rtp||[]).find((e=>e.payload===r.payloadType)))continue;t.fmtp=t.fmtp||[];let n=t.fmtp.find((e=>e.payload===r.payloadType));n||(n={payload:r.payloadType,config:""},t.fmtp.push(n));const i=Fi.parseParams(n.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(i.stereo=e?1:0);break}}n.config="";for(const e of Object.keys(i))n.config&&(n.config+=";"),n.config+=`${e}=${i[e]}`}};var zi={};Object.defineProperty(zi,"__esModule",{value:!0}),zi.addLegacySimulcast=zi.getRtpEncodings=void 0,zi.getRtpEncodings=function({offerMediaObject:e}){const t=new Set;for(const r of e.ssrcs||[]){const e=r.id;t.add(e)}if(0===t.size)throw new Error("no a=ssrc lines found");const r=new Map;for(const n of e.ssrcGroups||[]){if("FID"!==n.semantics)continue;let[e,i]=n.ssrcs.split(/\s+/);e=Number(e),i=Number(i),t.has(e)&&(t.delete(e),t.delete(i),r.set(e,i))}for(const e of t)r.set(e,null);const n=[];for(const[e,t]of r){const r={ssrc:e};t&&(r.rtx={ssrc:t}),n.push(r)}return n},zi.addLegacySimulcast=function({offerMediaObject:e,numStreams:t}){if(t<=1)throw new TypeError("numStreams must be greater than 1");const r=(e.ssrcs||[]).find((e=>"msid"===e.attribute));if(!r)throw new Error("a=ssrc line with msid information not found");const[n,i]=r.value.split(" "),s=r.id;let o;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===s&&(o=Number(t[1]),!0)}));const a=e.ssrcs.find((e=>"cname"===e.attribute));if(!a)throw new Error("a=ssrc line with cname information not found");const c=a.value,d=[],l=[];for(let e=0;e<t;++e)d.push(s+e),o&&l.push(o+e);e.ssrcGroups=[],e.ssrcs=[],e.ssrcGroups.push({semantics:"SIM",ssrcs:d.join(" ")});for(let t=0;t<d.length;++t){const r=d[t];e.ssrcs.push({id:r,attribute:"cname",value:c}),e.ssrcs.push({id:r,attribute:"msid",value:`${n} ${i}`})}for(let t=0;t<l.length;++t){const r=d[t],s=l[t];e.ssrcs.push({id:s,attribute:"cname",value:c}),e.ssrcs.push({id:s,attribute:"msid",value:`${n} ${i}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${s}`})}};var Ui={};Object.defineProperty(Ui,"__esModule",{value:!0}),Ui.addNackSuppportForOpus=void 0,Ui.addNackSuppportForOpus=function(e){for(const t of e.codecs||[])"audio/opus"!==t.mimeType.toLowerCase()&&"audio/multiopus"!==t.mimeType.toLowerCase()||t.rtcpFeedback?.some((e=>"nack"===e.type&&!e.parameter))||(t.rtcpFeedback||(t.rtcpFeedback=[]),t.rtcpFeedback.push({type:"nack"}))};var $i={};Object.defineProperty($i,"__esModule",{value:!0}),$i.HandlerInterface=void 0;const Vi=Lr;class Gi extends Vi.EnhancedEventEmitter{constructor(){super()}}$i.HandlerInterface=Gi;var qi={},Hi={},Wi=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Ki=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ji=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Wi(t,e,r);return Ki(t,e),t};Object.defineProperty(Hi,"__esModule",{value:!0}),Hi.OfferMediaSection=Hi.AnswerMediaSection=Hi.MediaSection=void 0;const Qi=Ji(_i),Yi=Ji(Vr);class Zi{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n=!1}){if(this._mediaObject={},this._planB=n,e&&this.setIceParameters(e),t){this._mediaObject.candidates=[];for(const e of t){const t={component:1};t.foundation=e.foundation,t.ip=e.address??e.ip,t.port=e.port,t.priority=e.priority,t.transport=e.protocol,t.type=e.type,e.tcpType&&(t.tcptype=e.tcpType),this._mediaObject.candidates.push(t)}this._mediaObject.endOfCandidates="end-of-candidates",this._mediaObject.iceOptions="renomination"}r&&this.setDtlsRole(r.role)}get mid(){return String(this._mediaObject.mid)}get closed(){return 0===this._mediaObject.port}getObject(){return this._mediaObject}setIceParameters(e){this._mediaObject.iceUfrag=e.usernameFragment,this._mediaObject.icePwd=e.password}pause(){this._mediaObject.direction="inactive"}disable(){this.pause(),delete this._mediaObject.ext,delete this._mediaObject.ssrcs,delete this._mediaObject.ssrcGroups,delete this._mediaObject.simulcast,delete this._mediaObject.simulcast_03,delete this._mediaObject.rids,delete this._mediaObject.extmapAllowMixed}close(){this.disable(),this._mediaObject.port=0}}Hi.MediaSection=Zi;Hi.AnswerMediaSection=class extends Zi{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:n,plainRtpParameters:i,planB:s=!1,offerMediaObject:o,offerRtpParameters:a,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(o.mid),this._mediaObject.type=o.type,this._mediaObject.protocol=o.protocol,i?(this._mediaObject.connection={ip:i.ip,version:i.ipVersion},this._mediaObject.port=i.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.port=7),o.type){case"audio":case"video":this._mediaObject.direction="recvonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[];for(const e of c.codecs){const t={payload:e.payloadType,codec:Xi(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=Yi.clone(e.parameters)??{};let n=Yi.clone(e.rtcpFeedback)??[];if(d){const{opusStereo:t,opusFec:i,opusDtx:s,opusMaxPlaybackRate:o,opusMaxAverageBitrate:c,opusPtime:l,opusNack:u,videoGoogleStartBitrate:p,videoGoogleMaxBitrate:h,videoGoogleMinBitrate:f}=d,m=a.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":case"audio/multiopus":void 0!==t&&(m.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==i&&(m.parameters.useinbandfec=i?1:0,r.useinbandfec=i?1:0),void 0!==s&&(m.parameters.usedtx=s?1:0,r.usedtx=s?1:0),void 0!==o&&(r.maxplaybackrate=o),void 0!==c&&(r.maxaveragebitrate=c),void 0!==l&&(m.parameters.ptime=l,r.ptime=l),u||(m.rtcpFeedback=m.rtcpFeedback.filter((e=>"nack"!==e.type||e.parameter)),n=n.filter((e=>"nack"!==e.type||e.parameter)));break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==p&&(r["x-google-start-bitrate"]=p),void 0!==h&&(r["x-google-max-bitrate"]=h),void 0!==f&&(r["x-google-min-bitrate"]=f)}}const i={payload:e.payloadType,config:""};for(const e of Object.keys(r))i.config&&(i.config+=";"),i.config+=`${e}=${r[e]}`;i.config&&this._mediaObject.fmtp.push(i);for(const t of n)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions){(o.ext||[]).some((t=>t.uri===e.uri))&&this._mediaObject.ext.push({uri:e.uri,value:e.id})}if(l&&"extmap-allow-mixed"===o.extmapAllowMixed&&(this._mediaObject.extmapAllowMixed="extmap-allow-mixed"),o.simulcast){this._mediaObject.simulcast={dir1:"recv",list1:o.simulcast.list1},this._mediaObject.rids=[];for(const e of o.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}else if(o.simulcast_03){this._mediaObject.simulcast_03={value:o.simulcast_03.value.replace(/send/g,"recv")},this._mediaObject.rids=[];for(const e of o.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize",this._planB&&"video"===this._mediaObject.type&&(this._mediaObject.xGoogleFlag="conference");break;case"application":"number"==typeof o.sctpPort?(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=n.port,this._mediaObject.maxMessageSize=n.maxMessageSize):o.sctpmap&&(this._mediaObject.payloads=n.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:n.port,maxMessageSize:n.maxMessageSize})}}setDtlsRole(e){switch(e){case"client":this._mediaObject.setup="active";break;case"server":this._mediaObject.setup="passive";break;case"auto":this._mediaObject.setup="actpass"}}resume(){this._mediaObject.direction="recvonly"}muxSimulcastStreams(e){if(!this._mediaObject.simulcast||!this._mediaObject.simulcast.list1)return;const t={};for(const r of e)r.rid&&(t[r.rid]=r);const r=this._mediaObject.simulcast.list1,n=Qi.parseSimulcastStreamList(r);for(const e of n)for(const r of e)r.paused=!t[r.scid]?.active;this._mediaObject.simulcast.list1=n.map((e=>e.map((e=>`${e.paused?"~":""}${e.scid}`)).join(","))).join(";")}};function Xi(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}Hi.OfferMediaSection=class extends Zi{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:n,plainRtpParameters:i,planB:s=!1,mid:o,kind:a,offerRtpParameters:c,streamId:d,trackId:l,oldDataChannelSpec:u=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(o),this._mediaObject.type=a,i?(this._mediaObject.connection={ip:i.ip,version:i.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=i.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.protocol=n?"UDP/DTLS/SCTP":"UDP/TLS/RTP/SAVPF",this._mediaObject.port=7),a){case"audio":case"video":{this._mediaObject.direction="sendonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[],this._planB||(this._mediaObject.msid=`${d||"-"} ${l}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:Xi(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r={payload:e.payloadType,config:""};for(const t of Object.keys(e.parameters))r.config&&(r.config+=";"),r.config+=`${t}=${e.parameters[t]}`;r.config&&this._mediaObject.fmtp.push(r);for(const t of e.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions)this._mediaObject.ext.push({uri:e.uri,value:e.id});this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize";const e=c.encodings[0],t=e.ssrc,r=e.rtx&&e.rtx.ssrc?e.rtx.ssrc:void 0;this._mediaObject.ssrcs=[],this._mediaObject.ssrcGroups=[],c.rtcp.cname&&this._mediaObject.ssrcs.push({id:t,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:t,attribute:"msid",value:`${d||"-"} ${l}`}),r&&(c.rtcp.cname&&this._mediaObject.ssrcs.push({id:r,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:r,attribute:"msid",value:`${d||"-"} ${l}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":u?(this._mediaObject.payloads=n.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:n.port,maxMessageSize:n.maxMessageSize}):(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=n.port,this._mediaObject.maxMessageSize=n.maxMessageSize)}}setDtlsRole(e){this._mediaObject.setup="actpass"}resume(){this._mediaObject.direction="sendonly"}planBReceive({offerRtpParameters:e,streamId:t,trackId:r}){const n=e.encodings[0],i=n.ssrc,s=n.rtx&&n.rtx.ssrc?n.rtx.ssrc:void 0,o=this._mediaObject.payloads.split(" ");for(const t of e.codecs){if(o.includes(String(t.payloadType)))continue;const e={payload:t.payloadType,codec:Xi(t),rate:t.clockRate};t.channels>1&&(e.encoding=t.channels),this._mediaObject.rtp.push(e);const r={payload:t.payloadType,config:""};for(const e of Object.keys(t.parameters))r.config&&(r.config+=";"),r.config+=`${e}=${t.parameters[e]}`;r.config&&this._mediaObject.fmtp.push(r);for(const e of t.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:t.payloadType,type:e.type,subtype:e.parameter})}this._mediaObject.payloads+=` ${e.codecs.filter((e=>!this._mediaObject.payloads.includes(e.payloadType))).map((e=>e.payloadType)).join(" ")}`,this._mediaObject.payloads=this._mediaObject.payloads.trim(),e.rtcp.cname&&this._mediaObject.ssrcs.push({id:i,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:i,attribute:"msid",value:`${t||"-"} ${r}`}),s&&(e.rtcp.cname&&this._mediaObject.ssrcs.push({id:s,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:s,attribute:"msid",value:`${t||"-"} ${r}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${s}`}))}planBStopReceiving({offerRtpParameters:e}){const t=e.encodings[0],r=t.ssrc,n=t.rtx&&t.rtx.ssrc?t.rtx.ssrc:void 0;this._mediaObject.ssrcs=this._mediaObject.ssrcs.filter((e=>e.id!==r&&e.id!==n)),n&&(this._mediaObject.ssrcGroups=this._mediaObject.ssrcGroups.filter((e=>e.ssrcs!==`${r} ${n}`)))}};var es=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),ts=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),rs=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&es(t,e,r);return ts(t,e),t};Object.defineProperty(qi,"__esModule",{value:!0}),qi.RemoteSdp=void 0;const ns=rs(_i),is=Hi,ss=new Ir.Logger("RemoteSdp");qi.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:n,plainRtpParameters:i,planB:s=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=n,this._plainRtpParameters=i,this._planB=s,this._sdpObject={version:0,origin:{address:"0.0.0.0",ipVer:4,netType:"IN",sessionId:1e4,sessionVersion:0,username:"mediasoup-client"},name:"-",timing:{start:0,stop:0},media:[]},e&&e.iceLite&&(this._sdpObject.icelite="ice-lite"),r){this._sdpObject.msidSemantic={semantic:"WMS",token:"*"};const e=this._dtlsParameters.fingerprints.length;this._sdpObject.fingerprint={type:r.fingerprints[e-1].algorithm,hash:r.fingerprints[e-1].value},this._sdpObject.groups=[{type:"BUNDLE",mids:""}]}i&&(this._sdpObject.origin.address=i.ip,this._sdpObject.origin.ipVer=i.ipVersion)}updateIceParameters(e){ss.debug("updateIceParameters() [iceParameters:%o]",e),this._iceParameters=e,this._sdpObject.icelite=e.iceLite?"ice-lite":void 0;for(const t of this._mediaSections)t.setIceParameters(e)}updateDtlsRole(e){ss.debug("updateDtlsRole() [role:%s]",e),this._dtlsParameters.role=e;for(const t of this._mediaSections)t.setDtlsRole(e)}getNextMediaSectionIdx(){for(let e=0;e<this._mediaSections.length;++e){const t=this._mediaSections[e];if(t.closed)return{idx:e,reuseMid:t.mid}}return{idx:this._mediaSections.length}}send({offerMediaObject:e,reuseMid:t,offerRtpParameters:r,answerRtpParameters:n,codecOptions:i,extmapAllowMixed:s=!1}){const o=new is.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:n,codecOptions:i,extmapAllowMixed:s});t?this._replaceMediaSection(o,t):this._midToIndex.has(o.mid)?this._replaceMediaSection(o):this._addMediaSection(o)}receive({mid:e,kind:t,offerRtpParameters:r,streamId:n,trackId:i}){const s=this._midToIndex.get(e);let o;if(void 0!==s&&(o=this._mediaSections[s]),o)o.planBReceive({offerRtpParameters:r,streamId:n,trackId:i}),this._replaceMediaSection(o);else{o=new is.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,mid:e,kind:t,offerRtpParameters:r,streamId:n,trackId:i});const s=this._mediaSections.find((e=>e.closed));s?this._replaceMediaSection(o,s.mid):this._addMediaSection(o)}}pauseMediaSection(e){this._findMediaSection(e).pause()}resumeSendingMediaSection(e){this._findMediaSection(e).resume()}resumeReceivingMediaSection(e){this._findMediaSection(e).resume()}disableMediaSection(e){this._findMediaSection(e).disable()}closeMediaSection(e){const t=this._findMediaSection(e);return e===this._firstMid?(ss.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),this.disableMediaSection(e),!1):(t.close(),this._regenerateBundleMids(),!0)}muxMediaSectionSimulcast(e,t){const r=this._findMediaSection(e);r.muxSimulcastStreams(t),this._replaceMediaSection(r)}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._findMediaSection(e);r.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(r)}sendSctpAssociation({offerMediaObject:e}){const t=new is.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,offerMediaObject:e});this._addMediaSection(t)}receiveSctpAssociation({oldDataChannelSpec:e=!1}={}){const t=new is.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,mid:"datachannel",kind:"application",oldDataChannelSpec:e});this._addMediaSection(t)}getSdp(){return this._sdpObject.origin.sessionVersion++,ns.write(this._sdpObject)}_addMediaSection(e){this._firstMid||(this._firstMid=e.mid),this._mediaSections.push(e),this._midToIndex.set(e.mid,this._mediaSections.length-1),this._sdpObject.media.push(e.getObject()),this._regenerateBundleMids()}_replaceMediaSection(e,t){if("string"==typeof t){const r=this._midToIndex.get(t);if(void 0===r)throw new Error(`no media section found for reuseMid '${t}'`);const n=this._mediaSections[r];this._mediaSections[r]=e,this._midToIndex.delete(n.mid),this._midToIndex.set(e.mid,r),this._sdpObject.media[r]=e.getObject(),this._regenerateBundleMids()}else{const t=this._midToIndex.get(e.mid);if(void 0===t)throw new Error(`no media section found with mid '${e.mid}'`);this._mediaSections[t]=e,this._sdpObject.media[t]=e.getObject()}}_findMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);return this._mediaSections[t]}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var os={};Object.defineProperty(os,"__esModule",{value:!0}),os.parse=void 0;const as=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");os.parse=function(e){const t=as.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var cs=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),ds=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ls=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&cs(t,e,r);return ds(t,e),t};Object.defineProperty(yi,"__esModule",{value:!0});var us=yi.Chrome111=void 0;const ps=ls(_i),hs=Ir,fs=ls(Vr),ms=ls(Gr),gs=ls(Li),vs=ls(zi),bs=ls(Ui),ys=zr,_s=$i,ws=qi,Ss=os,Cs=new hs.Logger("Chrome111"),Rs={OS:1024,MIS:1024};class Ps extends _s.HandlerInterface{static createFactory(){return()=>new Ps}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome111"}close(){if(Cs.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Cs.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=ps.parse(t.sdp),n=gs.extractRtpCapabilities({sdpObject:r});return bs.addNackSuppportForOpus(n),n}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Cs.debug("getNativeSctpCapabilities()"),{numStreams:Rs}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Cs.debug("run()"),this._direction=e,this._remoteSdp=new ws.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:ms.getSendingRtpParameters("audio",d),video:ms.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ms.getSendingRemoteRtpParameters("audio",d),video:ms.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(Cs.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),Cs.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Cs.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Cs.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Cs.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Cs.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){if(this.assertNotClosed(),this.assertSendDirection(),Cs.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){t.forEach(((e,t)=>{e.rid=`r${t}`}));let e=1,r=1;for(const e of t){const t=e.scalabilityMode?(0,Ss.parse)(e.scalabilityMode).temporalLayers:3;t>r&&(r=t)}for(const n of t)n.rid="r"+e++,n.scalabilityMode=`L1T${r}`}const i=fs.clone(this._sendingRtpParametersByKind[e.kind]);i.codecs=ms.reduceCodecs(i.codecs,n);const s=fs.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=ms.reduceCodecs(s.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),c=await this._pc.createOffer();let d=ps.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:d}),Cs.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const l=a.mid;i.mid=l,d=ps.parse(this._pc.localDescription.sdp);const u=d.media[o.idx];if(i.rtcp.cname=gs.getCname({offerMediaObject:u}),t)if(1===t.length){const e=vs.getRtpEncodings({offerMediaObject:u});Object.assign(e[0],t[0]),i.encodings=e}else i.encodings=t;else i.encodings=vs.getRtpEncodings({offerMediaObject:u});this._remoteSdp.send({offerMediaObject:u,reuseMid:o.reuseMid,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const p={type:"answer",sdp:this._remoteSdp.getSdp()};return Cs.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p),this._mapMidTransceiver.set(l,a),{localId:l,rtpParameters:i,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),Cs.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Cs.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Cs.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Cs.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Cs.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Cs.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Cs.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Cs.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Cs.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();Cs.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Cs.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();Cs.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};Cs.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Rs.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ps.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Cs.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i,streamId:s}=t;Cs.debug("receive() [trackId:%s, kind:%s]",e,n);const o=i.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:n,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Cs.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=ps.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,i=r.get(e),o=s.media.find((e=>String(e.mid)===i));gs.applyCodecParameters({offerRtpParameters:n,answerMediaObject:o})}i={type:"answer",sdp:ps.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Cs.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Cs.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Cs.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Cs.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Cs.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Cs.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Cs.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Cs.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Cs.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Cs.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};Cs.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Cs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ps.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Cs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ps.parse(this._pc.localDescription.sdp));const r=gs.extractIceParameters({sdpObject:t}),n=gs.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new ys.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}us=yi.Chrome111=Ps;var Ts={},ks=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Es=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Os=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ks(t,e,r);return Es(t,e),t};Object.defineProperty(Ts,"__esModule",{value:!0}),Ts.Chrome74=void 0;const Ds=Os(_i),Is=Ir,xs=Os(Vr),Ms=Os(Gr),js=Os(Li),Ls=Os(zi),As=Os(Ui),Ns=zr,Bs=$i,Fs=qi,zs=os,Us=new Is.Logger("Chrome74"),$s={OS:1024,MIS:1024};class Vs extends Bs.HandlerInterface{static createFactory(){return()=>new Vs}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome74"}close(){if(Us.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Us.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Ds.parse(t.sdp),n=js.extractRtpCapabilities({sdpObject:r});return As.addNackSuppportForOpus(n),n}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Us.debug("getNativeSctpCapabilities()"),{numStreams:$s}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Us.debug("run()"),this._direction=e,this._remoteSdp=new Fs.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:Ms.getSendingRtpParameters("audio",d),video:Ms.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ms.getSendingRemoteRtpParameters("audio",d),video:Ms.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(Us.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),Us.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Us.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Us.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Us.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Us.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Us.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertNotClosed(),this.assertSendDirection(),Us.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const i=xs.clone(this._sendingRtpParametersByKind[e.kind]);i.codecs=Ms.reduceCodecs(i.codecs,n);const s=xs.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Ms.reduceCodecs(s.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=Ds.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let u=!1;const p=(0,zs.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&p.spatialLayers>1&&"video/vp9"===i.codecs[0].mimeType.toLowerCase()&&(Us.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=Ds.parse(d.sdp),c=l.media[o.idx],Ls.addLegacySimulcast({offerMediaObject:c,numStreams:p.spatialLayers}),d={type:"offer",sdp:Ds.write(l)}),Us.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=a.mid;if(i.mid=h,l=Ds.parse(this._pc.localDescription.sdp),c=l.media[o.idx],i.rtcp.cname=js.getCname({offerMediaObject:c}),t)if(1===t.length){let e=Ls.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),u&&(e=[e[0]]),i.encodings=e}else i.encodings=t;else i.encodings=Ls.getRtpEncodings({offerMediaObject:c});if(i.encodings.length>1&&("video/vp8"===i.codecs[0].mimeType.toLowerCase()||"video/h264"===i.codecs[0].mimeType.toLowerCase()))for(const e of i.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${p.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const f={type:"answer",sdp:this._remoteSdp.getSdp()};return Us.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f),this._mapMidTransceiver.set(h,a),{localId:h,rtpParameters:i,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),Us.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Us.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Us.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Us.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Us.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Us.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Us.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Us.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Us.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Us.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Us.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Us.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();Us.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Us.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Us.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();Us.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Us.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};Us.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%$s.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ds.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Us.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Us.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i,streamId:s}=t;Us.debug("receive() [trackId:%s, kind:%s]",e,n);const o=i.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:n,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Us.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=Ds.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,i=r.get(e),o=s.media.find((e=>String(e.mid)===i));js.applyCodecParameters({offerRtpParameters:n,answerMediaObject:o})}i={type:"answer",sdp:Ds.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Us.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Us.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Us.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Us.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Us.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Us.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Us.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Us.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Us.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Us.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};Us.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Us.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ds.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Us.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ds.parse(this._pc.localDescription.sdp));const r=js.extractIceParameters({sdpObject:t}),n=js.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Ns.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Ts.Chrome74=Vs;var Gs={},qs=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Hs=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ws=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&qs(t,e,r);return Hs(t,e),t};Object.defineProperty(Gs,"__esModule",{value:!0}),Gs.Chrome70=void 0;const Ks=Ws(_i),Js=Ir,Qs=Ws(Vr),Ys=Ws(Gr),Zs=Ws(Li),Xs=Ws(zi),eo=$i,to=qi,ro=os,no=new Js.Logger("Chrome70"),io={OS:1024,MIS:1024};class so extends eo.HandlerInterface{static createFactory(){return()=>new so}constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome70"}close(){if(no.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){no.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Ks.parse(t.sdp);return Zs.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return no.debug("getNativeSctpCapabilities()"),{numStreams:io}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){no.debug("run()"),this._direction=e,this._remoteSdp=new to.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:Ys.getSendingRtpParameters("audio",d),video:Ys.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ys.getSendingRemoteRtpParameters("audio",d),video:Ys.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(no.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){no.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(no.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});no.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();no.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertSendDirection(),no.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const i=Qs.clone(this._sendingRtpParametersByKind[e.kind]);i.codecs=Ys.reduceCodecs(i.codecs,n);const s=Qs.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Ys.reduceCodecs(s.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=Ks.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&(no.debug("send() | enabling legacy simulcast"),l=Ks.parse(d.sdp),c=l.media[o.idx],Xs.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:Ks.write(l)});let u=!1;const p=(0,ro.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&p.spatialLayers>1&&"video/vp9"===i.codecs[0].mimeType.toLowerCase()&&(no.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=Ks.parse(d.sdp),c=l.media[o.idx],Xs.addLegacySimulcast({offerMediaObject:c,numStreams:p.spatialLayers}),d={type:"offer",sdp:Ks.write(l)}),no.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){no.debug("send() | applying given encodings");const e=a.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const n=e.encodings[r],i=t[r];if(!i)break;e.encodings[r]=Object.assign(n,i)}await a.sender.setParameters(e)}const h=a.mid;if(i.mid=h,l=Ks.parse(this._pc.localDescription.sdp),c=l.media[o.idx],i.rtcp.cname=Zs.getCname({offerMediaObject:c}),i.encodings=Xs.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<i.encodings.length;++e)t[e]&&Object.assign(i.encodings[e],t[e]);if(u&&(i.encodings=[i.encodings[0]]),i.encodings.length>1&&("video/vp8"===i.codecs[0].mimeType.toLowerCase()||"video/h264"===i.codecs[0].mimeType.toLowerCase()))for(const e of i.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r});const f={type:"answer",sdp:this._remoteSdp.getSdp()};return no.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f),this._mapMidTransceiver.set(h,a),{localId:h,rtpParameters:i,rtpSender:a.sender}}async stopSending(e){this.assertSendDirection(),no.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();no.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?no.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):no.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),no.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();no.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),no.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();no.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:i};no.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%io.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ks.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),no.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i,streamId:s}=t;no.debug("receive() [trackId:%s, kind:%s]",e,n);const o=i.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:n,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=Ks.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,i=r.get(e),o=s.media.find((e=>String(e.mid)===i));Zs.applyCodecParameters({offerRtpParameters:n,answerMediaObject:o})}i={type:"answer",sdp:Ks.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),no.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){no.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();no.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};no.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ks.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}no.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ks.parse(this._pc.localDescription.sdp));const r=Zs.extractIceParameters({sdpObject:t}),n=Zs.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Gs.Chrome70=so;var oo={},ao={};Object.defineProperty(ao,"__esModule",{value:!0}),ao.addLegacySimulcast=ao.getRtpEncodings=void 0,ao.getRtpEncodings=function({offerMediaObject:e,track:t}){const r=new Set;for(const n of e.ssrcs||[]){if("msid"!==n.attribute)continue;if(n.value.split(" ")[1]===t.id){const e=n.id;r.add(e)}}if(0===r.size)throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);const n=new Map;for(const t of e.ssrcGroups||[]){if("FID"!==t.semantics)continue;let[e,i]=t.ssrcs.split(/\s+/);e=Number(e),i=Number(i),r.has(e)&&(r.delete(e),r.delete(i),n.set(e,i))}for(const e of r)n.set(e,null);const i=[];for(const[e,t]of n){const r={ssrc:e};t&&(r.rtx={ssrc:t}),i.push(r)}return i},ao.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let n,i,s;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(n=e.id,s=e.value.split(" ")[0],!0)})))throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===n&&(i=Number(t[1]),!0)}));const o=e.ssrcs.find((e=>"cname"===e.attribute&&e.id===n));if(!o)throw new Error(`a=ssrc line with cname information not found [track.id:${t.id}]`);const a=o.value,c=[],d=[];for(let e=0;e<r;++e)c.push(n+e),i&&d.push(i+e);e.ssrcGroups=e.ssrcGroups||[],e.ssrcs=e.ssrcs||[],e.ssrcGroups.push({semantics:"SIM",ssrcs:c.join(" ")});for(let r=0;r<c.length;++r){const n=c[r];e.ssrcs.push({id:n,attribute:"cname",value:a}),e.ssrcs.push({id:n,attribute:"msid",value:`${s} ${t.id}`})}for(let r=0;r<d.length;++r){const n=c[r],i=d[r];e.ssrcs.push({id:i,attribute:"cname",value:a}),e.ssrcs.push({id:i,attribute:"msid",value:`${s} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${n} ${i}`})}};var co=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),lo=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),uo=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&co(t,e,r);return lo(t,e),t};Object.defineProperty(oo,"__esModule",{value:!0}),oo.Chrome67=void 0;const po=uo(_i),ho=Ir,fo=uo(Vr),mo=uo(Gr),go=uo(Li),vo=uo(ao),bo=$i,yo=qi,_o=new ho.Logger("Chrome67"),wo={OS:1024,MIS:1024};class So extends bo.HandlerInterface{static createFactory(){return()=>new So}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome67"}close(){if(_o.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){_o.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=po.parse(t.sdp);return go.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return _o.debug("getNativeSctpCapabilities()"),{numStreams:wo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){_o.debug("run()"),this._direction=e,this._remoteSdp=new yo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,planB:!0}),this._sendingRtpParametersByKind={audio:mo.getSendingRtpParameters("audio",d),video:mo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:mo.getSendingRemoteRtpParameters("audio",d),video:mo.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(_o.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){_o.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(_o.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});_o.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};_o.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};_o.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();_o.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertSendDirection(),_o.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),n&&_o.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let i,s=await this._pc.createOffer(),o=po.parse(s.sdp);const a=fo.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=mo.reduceCodecs(a.codecs);const c=fo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=mo.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(_o.debug("send() | enabling simulcast"),o=po.parse(s.sdp),i=o.media.find((e=>"video"===e.type)),vo.addLegacySimulcast({offerMediaObject:i,track:e,numStreams:t.length}),s={type:"offer",sdp:po.write(o)}),_o.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=po.parse(this._pc.localDescription.sdp),i=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=go.getCname({offerMediaObject:i}),a.encodings=vo.getRtpEncodings({offerMediaObject:i,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&"video/vp8"===a.codecs[0].mimeType.toLowerCase())for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:i,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};_o.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const u=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,u),{localId:l,rtpParameters:a,rtpSender:u}}async stopSending(e){this.assertSendDirection(),_o.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");this._pc.removeTrack(t),t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();_o.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void _o.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const n={type:"answer",sdp:this._remoteSdp.getSdp()};_o.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?_o.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):_o.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.track;await r.replaceTrack(t),n&&this._sendStream.removeTrack(n),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),_o.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(n)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),_o.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.setParameters(n)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:i};_o.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%wo.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=po.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),_o.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};_o.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:n,streamId:i}=t;_o.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:i||n.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};_o.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let n=await this._pc.createAnswer();const i=po.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,n=e,s=i.media.find((e=>String(e.mid)===n));go.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}n={type:"answer",sdp:po.write(i)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:i}),_o.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const r of e){const{kind:e,trackId:n,rtpParameters:i}=r,s=n,o=e,a=this._pc.getReceivers().find((e=>e.track&&e.track.id===s));if(!a)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(s,{mid:o,rtpParameters:i,rtpReceiver:a}),t.push({localId:s,track:a.track,rtpReceiver:a})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){_o.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};_o.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();_o.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};_o.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};_o.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=po.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}_o.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=po.parse(this._pc.localDescription.sdp));const r=go.extractIceParameters({sdpObject:t}),n=go.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}oo.Chrome67=So;var Co={},Ro=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Po=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),To=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ro(t,e,r);return Po(t,e),t};Object.defineProperty(Co,"__esModule",{value:!0}),Co.Chrome55=void 0;const ko=To(_i),Eo=Ir,Oo=zr,Do=To(Vr),Io=To(Gr),xo=To(Li),Mo=To(ao),jo=$i,Lo=qi,Ao=new Eo.Logger("Chrome55"),No={OS:1024,MIS:1024};class Bo extends jo.HandlerInterface{static createFactory(){return()=>new Bo}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome55"}close(){if(Ao.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Ao.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=ko.parse(t.sdp);return xo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ao.debug("getNativeSctpCapabilities()"),{numStreams:No}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ao.debug("run()"),this._direction=e,this._remoteSdp=new Lo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,planB:!0}),this._sendingRtpParametersByKind={audio:Io.getSendingRtpParameters("audio",d),video:Io.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Io.getSendingRemoteRtpParameters("audio",d),video:Io.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Ao.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Ao.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Ao.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ao.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ao.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ao.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ao.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertSendDirection(),Ao.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),n&&Ao.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let i,s=await this._pc.createOffer(),o=ko.parse(s.sdp);const a=Do.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=Io.reduceCodecs(a.codecs);const c=Do.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Io.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Ao.debug("send() | enabling simulcast"),o=ko.parse(s.sdp),i=o.media.find((e=>"video"===e.type)),Mo.addLegacySimulcast({offerMediaObject:i,track:e,numStreams:t.length}),s={type:"offer",sdp:ko.write(o)}),Ao.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=ko.parse(this._pc.localDescription.sdp),i=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=xo.getCname({offerMediaObject:i}),a.encodings=Mo.getRtpEncodings({offerMediaObject:i,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&"video/vp8"===a.codecs[0].mimeType.toLowerCase())for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:i,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Ao.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:a}}async stopSending(e){this.assertSendDirection(),Ao.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();Ao.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Ao.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const n={type:"answer",sdp:this._remoteSdp.getSdp()};Ao.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new Oo.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Oo.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new Oo.UnsupportedError("not supported")}async getSenderStats(e){throw new Oo.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:i};Ao.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%No.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ko.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Ao.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Ao.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:n,streamId:i}=t;Ao.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:i||n.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Ao.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let n=await this._pc.createAnswer();const i=ko.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,n=e,s=i.media.find((e=>String(e.mid)===n));xo.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}n={type:"answer",sdp:ko.write(i)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:i}),Ao.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const r of e){const{kind:e,trackId:n,rtpParameters:i}=r,s=e,o=n,a=r.streamId||i.rtcp.cname,c=this._pc.getRemoteStreams().find((e=>e.id===a)).getTrackById(o);if(!c)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(o,{mid:s,rtpParameters:i}),t.push({localId:o,track:c})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Ao.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ao.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ao.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Oo.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};Ao.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ao.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ko.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Ao.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ko.parse(this._pc.localDescription.sdp));const r=xo.extractIceParameters({sdpObject:t}),n=xo.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Co.Chrome55=Bo;var Fo={},zo=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Uo=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),$o=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&zo(t,e,r);return Uo(t,e),t};Object.defineProperty(Fo,"__esModule",{value:!0}),Fo.Firefox60=void 0;const Vo=$o(_i),Go=Ir,qo=zr,Ho=$o(Vr),Wo=$o(Gr),Ko=$o(Li),Jo=$o(zi),Qo=$i,Yo=qi,Zo=os,Xo=new Go.Logger("Firefox60"),ea={OS:16,MIS:2048};class ta extends Qo.HandlerInterface{static createFactory(){return()=>new ta}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Firefox60"}close(){if(Xo.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Xo.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"}),t=document.createElement("canvas");t.getContext("2d");const r=t.captureStream().getVideoTracks()[0];try{e.addTransceiver("audio",{direction:"sendrecv"});const n=e.addTransceiver(r,{direction:"sendrecv"}),i=n.sender.getParameters(),s=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];i.encodings=s,await n.sender.setParameters(i);const o=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const a=Vo.parse(o.sdp);return Ko.extractRtpCapabilities({sdpObject:a})}catch(n){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw n}}async getNativeSctpCapabilities(){return Xo.debug("getNativeSctpCapabilities()"),{numStreams:ea}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Xo.debug("run()"),this._direction=e,this._remoteSdp=new Yo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:Wo.getSendingRtpParameters("audio",d),video:Wo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Wo.getSendingRemoteRtpParameters("audio",d),video:Wo.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Xo.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){throw this.assertNotClosed(),new qo.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),Xo.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Xo.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Xo.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Xo.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertNotClosed(),this.assertSendDirection(),Xo.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=Ho.clone(t)).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const i=Ho.clone(this._sendingRtpParametersByKind[e.kind]);i.codecs=Wo.reduceCodecs(i.codecs,n);const s=Ho.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Wo.reduceCodecs(s.codecs,n);const o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});if(t){const e=o.sender.getParameters();e.encodings=t,await o.sender.setParameters(e)}const a=await this._pc.createOffer();let c=Vo.parse(a.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,Zo.parse)((t||[{}])[0].scalabilityMode);Xo.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a);const l=o.mid;i.mid=l,c=Vo.parse(this._pc.localDescription.sdp);const u=c.media[c.media.length-1];if(i.rtcp.cname=Ko.getCname({offerMediaObject:u}),t)if(1===t.length){const e=Jo.getRtpEncodings({offerMediaObject:u});Object.assign(e[0],t[0]),i.encodings=e}else i.encodings=t.reverse();else i.encodings=Jo.getRtpEncodings({offerMediaObject:u});if(i.encodings.length>1&&("video/vp8"===i.codecs[0].mimeType.toLowerCase()||"video/h264"===i.codecs[0].mimeType.toLowerCase()))for(const e of i.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${d.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:u,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const p={type:"answer",sdp:this._remoteSdp.getSdp()};return Xo.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p),this._mapMidTransceiver.set(l,o),{localId:l,rtpParameters:i,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Xo.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated transceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.disableMediaSection(t.mid);const r=await this._pc.createOffer();Xo.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Xo.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Xo.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Xo.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();Xo.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Xo.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Xo.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Xo.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated transceiver not found");const n=r.sender.getParameters();t=n.encodings.length-1-t,n.encodings.forEach(((e,r)=>{e.active=r>=t})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();Xo.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Xo.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();Xo.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};Xo.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ea.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Vo.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),Xo.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i,streamId:s}=t;Xo.debug("receive() [trackId:%s, kind:%s]",e,n);const o=i.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:n,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Xo.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=Vo.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,o=r.get(e),a=s.media.find((e=>String(e.mid)===o));Ko.applyCodecParameters({offerRtpParameters:n,answerMediaObject:a}),i={type:"answer",sdp:Vo.write(s)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:s}),Xo.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Xo.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Xo.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xo.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Xo.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Xo.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xo.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Xo.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Xo.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xo.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};Xo.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Xo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Vo.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}Xo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Vo.parse(this._pc.localDescription.sdp));const r=Ko.extractIceParameters({sdpObject:t}),n=Ko.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new qo.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Fo.Firefox60=ta;var ra={},na=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),ia=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),sa=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&na(t,e,r);return ia(t,e),t};Object.defineProperty(ra,"__esModule",{value:!0}),ra.Safari12=void 0;const oa=sa(_i),aa=Ir,ca=sa(Vr),da=sa(Gr),la=sa(Li),ua=sa(zi),pa=sa(Ui),ha=zr,fa=$i,ma=qi,ga=os,va=new aa.Logger("Safari12"),ba={OS:1024,MIS:1024};class ya extends fa.HandlerInterface{static createFactory(){return()=>new ya}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari12"}close(){if(va.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){va.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=oa.parse(t.sdp),n=la.extractRtpCapabilities({sdpObject:r});return pa.addNackSuppportForOpus(n),n}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return va.debug("getNativeSctpCapabilities()"),{numStreams:ba}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),va.debug("run()"),this._direction=e,this._remoteSdp=new ma.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:da.getSendingRtpParameters("audio",d),video:da.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:da.getSendingRemoteRtpParameters("audio",d),video:da.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(va.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),va.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),va.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});va.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};va.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();va.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertNotClosed(),this.assertSendDirection(),va.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const i=ca.clone(this._sendingRtpParametersByKind[e.kind]);i.codecs=da.reduceCodecs(i.codecs,n);const s=ca.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=da.reduceCodecs(s.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=oa.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});const u=(0,ga.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(va.debug("send() | enabling legacy simulcast"),l=oa.parse(d.sdp),c=l.media[o.idx],ua.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:oa.write(l)}),va.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const p=a.mid;if(i.mid=p,l=oa.parse(this._pc.localDescription.sdp),c=l.media[o.idx],i.rtcp.cname=la.getCname({offerMediaObject:c}),i.encodings=ua.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<i.encodings.length;++e)t[e]&&Object.assign(i.encodings[e],t[e]);if(i.encodings.length>1&&("video/vp8"===i.codecs[0].mimeType.toLowerCase()||"video/h264"===i.codecs[0].mimeType.toLowerCase()))for(const e of i.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return va.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(p,a),{localId:p,rtpParameters:i,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;va.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();va.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),va.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();va.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),va.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();va.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?va.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):va.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),va.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();va.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),va.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();va.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};va.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ba.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=oa.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),va.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i,streamId:s}=t;va.debug("receive() [trackId:%s, kind:%s]",e,n);const o=i.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:n,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};va.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=oa.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,i=r.get(e),o=s.media.find((e=>String(e.mid)===i));la.applyCodecParameters({offerRtpParameters:n,answerMediaObject:o})}i={type:"answer",sdp:oa.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),va.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){va.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};va.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();va.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){va.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};va.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();va.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){va.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};va.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();va.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};va.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};va.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=oa.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}va.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=oa.parse(this._pc.localDescription.sdp));const r=la.extractIceParameters({sdpObject:t}),n=la.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new ha.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}ra.Safari12=ya;var _a={},wa=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Sa=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ca=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&wa(t,e,r);return Sa(t,e),t};Object.defineProperty(_a,"__esModule",{value:!0}),_a.Safari11=void 0;const Ra=Ca(_i),Pa=Ir,Ta=Ca(Vr),ka=Ca(Gr),Ea=Ca(Li),Oa=Ca(ao),Da=$i,Ia=qi,xa=new Pa.Logger("Safari11"),Ma={OS:1024,MIS:1024};class ja extends Da.HandlerInterface{static createFactory(){return()=>new ja}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari11"}close(){if(xa.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){xa.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Ra.parse(t.sdp);return Ea.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return xa.debug("getNativeSctpCapabilities()"),{numStreams:Ma}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){xa.debug("run()"),this._direction=e,this._remoteSdp=new Ia.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,planB:!0}),this._sendingRtpParametersByKind={audio:ka.getSendingRtpParameters("audio",d),video:ka.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ka.getSendingRemoteRtpParameters("audio",d),video:ka.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(xa.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){xa.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(xa.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});xa.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};xa.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};xa.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();xa.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertSendDirection(),xa.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),n&&xa.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let i,s=await this._pc.createOffer(),o=Ra.parse(s.sdp);const a=Ta.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=ka.reduceCodecs(a.codecs);const c=Ta.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=ka.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(xa.debug("send() | enabling simulcast"),o=Ra.parse(s.sdp),i=o.media.find((e=>"video"===e.type)),Oa.addLegacySimulcast({offerMediaObject:i,track:e,numStreams:t.length}),s={type:"offer",sdp:Ra.write(o)}),xa.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=Ra.parse(this._pc.localDescription.sdp),i=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=Ea.getCname({offerMediaObject:i}),a.encodings=Oa.getRtpEncodings({offerMediaObject:i,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&"video/vp8"===a.codecs[0].mimeType.toLowerCase())for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:i,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};xa.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const u=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,u),{localId:l,rtpParameters:a,rtpSender:u}}async stopSending(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();xa.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void xa.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const n={type:"answer",sdp:this._remoteSdp.getSdp()};xa.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?xa.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):xa.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.track;await r.replaceTrack(t),n&&this._sendStream.removeTrack(n),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),xa.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(n)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),xa.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.setParameters(n)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};xa.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ma.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ra.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),xa.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};xa.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:n,streamId:i}=t;xa.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:i||n.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};xa.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let n=await this._pc.createAnswer();const i=Ra.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,n=e,s=i.media.find((e=>String(e.mid)===n));Ea.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}n={type:"answer",sdp:Ra.write(i)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:i}),xa.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const r of e){const{kind:e,trackId:n,rtpParameters:i}=r,s=e,o=n,a=this._pc.getReceivers().find((e=>e.track&&e.track.id===o));if(!a)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(o,{mid:s,rtpParameters:i,rtpReceiver:a}),t.push({localId:o,track:a.track,rtpReceiver:a})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){xa.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};xa.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();xa.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async pauseReceiving(e){}async resumeReceiving(e){}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};xa.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};xa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ra.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}xa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ra.parse(this._pc.localDescription.sdp));const r=Ea.extractIceParameters({sdpObject:t}),n=Ea.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}_a.Safari11=ja;var La={},Aa={},Na=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Ba=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Fa=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Na(t,e,r);return Ba(t,e),t};Object.defineProperty(Aa,"__esModule",{value:!0}),Aa.mangleRtpParameters=Aa.getCapabilities=void 0;const za=Fa(Vr);Aa.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=za.clone(e);for(const e of t.codecs??[]){if(e.channels=e.numChannels,delete e.numChannels,e.mimeType=e.mimeType||`${e.kind}/${e.name}`,e.parameters){const t=e.parameters;t.apt&&(t.apt=Number(t.apt)),t["packetization-mode"]&&(t["packetization-mode"]=Number(t["packetization-mode"]))}for(const t of e.rtcpFeedback||[])t.parameter||(t.parameter="")}return t},Aa.mangleRtpParameters=function(e){const t=za.clone(e);t.mid&&(t.muxId=t.mid,delete t.mid);for(const e of t.codecs)e.channels&&(e.numChannels=e.channels,delete e.channels),e.mimeType&&!e.name&&(e.name=e.mimeType.split("/")[1]),delete e.mimeType;return t};var Ua=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),$a=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Va=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ua(t,e,r);return $a(t,e),t};Object.defineProperty(La,"__esModule",{value:!0}),La.Edge11=void 0;const Ga=Ir,qa=zr,Ha=Va(Vr),Wa=Va(Gr),Ka=Va(Aa),Ja=$i,Qa=new Ga.Logger("Edge11");class Ya extends Ja.HandlerInterface{static createFactory(){return()=>new Ya}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){Qa.debug("close()");try{this._iceGatherer.close()}catch(e){}try{this._iceTransport.stop()}catch(e){}try{this._dtlsTransport.stop()}catch(e){}for(const e of this._rtpSenders.values())try{e.stop()}catch(e){}for(const e of this._rtpReceivers.values())try{e.stop()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){return Qa.debug("getNativeRtpCapabilities()"),Ka.getCapabilities()}async getNativeSctpCapabilities(){return Qa.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Qa.debug("run()"),this._sendingRtpParametersByKind={audio:Wa.getSendingRtpParameters("audio",d),video:Wa.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=n,this._cname=`CNAME-${Ha.generateRandomNumber()}`,this.setIceGatherer({iceServers:s,iceTransportPolicy:o}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new qa.UnsupportedError("not supported")}async restartIce(e){if(Qa.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){Qa.debug("restartIce() | calling iceTransport.start()"),this._iceTransport.start(this._iceGatherer,e,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({})}}async getTransportStats(){return this._iceTransport.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){Qa.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),Qa.debug("send() | calling new RTCRtpSender()");const i=new RTCRtpSender(e,this._dtlsTransport),s=Ha.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Wa.reduceCodecs(s.codecs,n);const o=s.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=Ha.generateRandomNumber(),o&&(e.rtx={ssrc:Ha.generateRandomNumber()});s.encodings=t,s.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const a=Ka.mangleRtpParameters(s);Qa.debug("send() | calling rtpSender.send() [params:%o]",a),await i.send(a);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,i),{localId:c,rtpParameters:s,rtpSender:i}}async stopSending(e){Qa.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{Qa.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw Qa.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?Qa.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Qa.debug("replaceTrack() [localId:%s, no track]",e);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");r.setTrack(t)}async setMaxSpatialLayer(e,t){Qa.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(n)}async setRtpEncodingParameters(e,t){Qa.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.setParameters(n)}async getSenderStats(e){const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");return t.getStats()}async sendDataChannel(e){throw new qa.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;Qa.debug("receive() [trackId:%s, kind:%s]",e,r)}this._transportReady||await this.setupTransport({localDtlsRole:"server"});for(const r of e){const{trackId:e,kind:n,rtpParameters:i}=r;Qa.debug("receive() | calling new RTCRtpReceiver()");const s=new RTCRtpReceiver(this._dtlsTransport,n);s.addEventListener("error",(e=>{Qa.error('rtpReceiver "error" event [event:%o]',e)}));const o=Ka.mangleRtpParameters(i);Qa.debug("receive() | calling rtpReceiver.receive() [params:%o]",o),await s.receive(o);const a=e;this._rtpReceivers.set(a,s),t.push({localId:a,track:s.track,rtpReceiver:s})}return t}async stopReceiving(e){for(const t of e){Qa.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{Qa.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){Qa.warn("stopReceiving() | rtpReceiver.stop() failed:%o",e)}}}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel(e){throw new qa.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{Qa.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){Qa.debug("setIceGatherer() | iceGatherer.gather() failed: %s",e.toString())}this._iceGatherer=r}setIceTransport(){const e=new RTCIceTransport(this._iceGatherer);e.addEventListener("statechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("icestatechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("candidatepairchange",(e=>{Qa.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{Qa.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{Qa.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{Qa.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){Qa.debug("setupTransport()");const t=this._iceGatherer.getLocalParameters(),r=this._dtlsTransport.getLocalParameters();r.role=e,await new Promise(((e,n)=>{this.safeEmit("@connect",{iceParameters:t,dtlsParameters:r},e,n)})),this._iceTransport.start(this._iceGatherer,this._remoteIceParameters,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({}),this._remoteDtlsParameters.fingerprints=this._remoteDtlsParameters.fingerprints.filter((e=>"sha-256"===e.algorithm||"sha-384"===e.algorithm||"sha-512"===e.algorithm)),this._dtlsTransport.start(this._remoteDtlsParameters),this._transportReady=!0}}La.Edge11=Ya;var Za={},Xa=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),ec=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),tc=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Xa(t,e,r);return ec(t,e),t};Object.defineProperty(Za,"__esModule",{value:!0}),Za.ReactNativeUnifiedPlan=void 0;const rc=tc(_i),nc=Ir,ic=tc(Vr),sc=tc(Gr),oc=tc(Li),ac=tc(zi),cc=tc(Ui),dc=zr,lc=$i,uc=qi,pc=os,hc=new nc.Logger("ReactNativeUnifiedPlan"),fc={OS:1024,MIS:1024};class mc extends lc.HandlerInterface{static createFactory(){return()=>new mc}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNativeUnifiedPlan"}close(){if(hc.debug("close()"),!this._closed){if(this._closed=!0,this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){hc.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=rc.parse(t.sdp),n=oc.extractRtpCapabilities({sdpObject:r});return cc.addNackSuppportForOpus(n),n}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return hc.debug("getNativeSctpCapabilities()"),{numStreams:fc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),hc.debug("run()"),this._direction=e,this._remoteSdp=new uc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:sc.getSendingRtpParameters("audio",d),video:sc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:sc.getSendingRemoteRtpParameters("audio",d),video:sc.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(hc.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),hc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),hc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});hc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};hc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();hc.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertNotClosed(),this.assertSendDirection(),hc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const i=ic.clone(this._sendingRtpParametersByKind[e.kind]);i.codecs=sc.reduceCodecs(i.codecs,n);const s=ic.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=sc.reduceCodecs(s.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=rc.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let u=!1;const p=(0,pc.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&p.spatialLayers>1&&"video/vp9"===i.codecs[0].mimeType.toLowerCase()&&(hc.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=rc.parse(d.sdp),c=l.media[o.idx],ac.addLegacySimulcast({offerMediaObject:c,numStreams:p.spatialLayers}),d={type:"offer",sdp:rc.write(l)}),hc.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);let h=a.mid??void 0;if(h||hc.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),i.mid=h,l=rc.parse(this._pc.localDescription.sdp),c=l.media[o.idx],i.rtcp.cname=oc.getCname({offerMediaObject:c}),t)if(1===t.length){let e=ac.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),u&&(e=[e[0]]),i.encodings=e}else i.encodings=t;else i.encodings=ac.getRtpEncodings({offerMediaObject:c});if(i.encodings.length>1&&("video/vp8"===i.codecs[0].mimeType.toLowerCase()||"video/h264"===i.codecs[0].mimeType.toLowerCase()))for(const e of i.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${p.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const f={type:"answer",sdp:this._remoteSdp.getSdp()};return hc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f),h||(h=a.mid,i.mid=h),this._mapMidTransceiver.set(h,a),{localId:h,rtpParameters:i,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;hc.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();hc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),hc.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();hc.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),hc.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();hc.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?hc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):hc.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),hc.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();hc.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),hc.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();hc.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};hc.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%fc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=rc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),hc.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i,streamId:s}=t;hc.debug("receive() [trackId:%s, kind:%s]",e,n);const o=i.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:n,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};hc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=rc.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,i=r.get(e),o=s.media.find((e=>String(e.mid)===i));oc.applyCodecParameters({offerRtpParameters:n,answerMediaObject:o})}i={type:"answer",sdp:rc.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),hc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){hc.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};hc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();hc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){hc.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};hc.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();hc.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){hc.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};hc.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();hc.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};hc.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};hc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=rc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}hc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=rc.parse(this._pc.localDescription.sdp));const r=oc.extractIceParameters({sdpObject:t}),n=oc.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new dc.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Za.ReactNativeUnifiedPlan=mc;var gc={},vc=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),bc=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),yc=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&vc(t,e,r);return bc(t,e),t};Object.defineProperty(gc,"__esModule",{value:!0}),gc.ReactNative=void 0;const _c=yc(_i),wc=Ir,Sc=zr,Cc=yc(Vr),Rc=yc(Gr),Pc=yc(Li),Tc=yc(ao),kc=$i,Ec=qi,Oc=new wc.Logger("ReactNative"),Dc={OS:1024,MIS:1024};class Ic extends kc.HandlerInterface{static createFactory(){return()=>new Ic}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNative"}close(){if(Oc.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Oc.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=_c.parse(t.sdp);return Pc.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Oc.debug("getNativeSctpCapabilities()"),{numStreams:Dc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Oc.debug("run()"),this._direction=e,this._remoteSdp=new Ec.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,planB:!0}),this._sendingRtpParametersByKind={audio:Rc.getSendingRtpParameters("audio",d),video:Rc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Rc.getSendingRemoteRtpParameters("audio",d),video:Rc.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Oc.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Oc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Oc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Oc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Oc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Oc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Oc.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertSendDirection(),Oc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),n&&Oc.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let i,s=await this._pc.createOffer(),o=_c.parse(s.sdp);const a=Cc.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=Rc.reduceCodecs(a.codecs);const c=Cc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Rc.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Oc.debug("send() | enabling simulcast"),o=_c.parse(s.sdp),i=o.media.find((e=>"video"===e.type)),Tc.addLegacySimulcast({offerMediaObject:i,track:e,numStreams:t.length}),s={type:"offer",sdp:_c.write(o)}),Oc.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=_c.parse(this._pc.localDescription.sdp),i=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=Pc.getCname({offerMediaObject:i}),a.encodings=Tc.getRtpEncodings({offerMediaObject:i,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&("video/vp8"===a.codecs[0].mimeType.toLowerCase()||"video/h264"===a.codecs[0].mimeType.toLowerCase()))for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:i,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Oc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:a}}async stopSending(e){this.assertSendDirection(),Oc.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();Oc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Oc.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const n={type:"answer",sdp:this._remoteSdp.getSdp()};Oc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new Sc.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Sc.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Sc.UnsupportedError("not implemented")}async getSenderStats(e){throw new Sc.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:i};Oc.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Dc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=_c.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Oc.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Oc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i}=t;Oc.debug("receive() [trackId:%s, kind:%s]",e,n);const s=n;let o=t.streamId||i.rtcp.cname;Oc.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),o+=`-hack-${Cc.generateRandomNumber()}`,r.set(e,o),this._remoteSdp.receive({mid:s,kind:n,offerRtpParameters:i,streamId:o,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Oc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=_c.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,n=e,i=s.media.find((e=>String(e.mid)===n));Pc.applyCodecParameters({offerRtpParameters:r,answerMediaObject:i})}i={type:"answer",sdp:_c.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Oc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{kind:e,trackId:i,rtpParameters:s}=n,o=i,a=e,c=r.get(i),d=this._pc.getRemoteStreams().find((e=>e.id===c)).getTrackById(o);if(!d)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(o,{mid:a,rtpParameters:s}),t.push({localId:o,track:d})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Oc.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Oc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Oc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Sc.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};Oc.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Oc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=_c.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Oc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=_c.parse(this._pc.localDescription.sdp));const r=Pc.extractIceParameters({sdpObject:t}),n=Pc.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}gc.ReactNative=Ic;var xc=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Mc=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),jc=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&xc(t,e,r);return Mc(t,e),t};Object.defineProperty(Er,"__esModule",{value:!0}),Er.Device=Er.detectDevice=void 0;const Lc=Dr,Ac=Ir,Nc=Lr,Bc=zr,Fc=jc(Vr),zc=jc(Gr),Uc=Tn,$c=yi,Vc=Ts,Gc=Gs,qc=oo,Hc=Co,Wc=Fo,Kc=ra,Jc=_a,Qc=La,Yc=Za,Zc=gc,Xc=new Ac.Logger("Device");function ed(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return Xc.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void Xc.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(Xc.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(Xc.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)Xc.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new Lc.UAParser(e);Xc.debug("detectDevice() | browser detected [ua:%s, parsed:%o]",e,t.getResult());const r=t.getBrowser(),n=r.name?.toLowerCase(),i=parseInt(r.major??"0"),s=t.getEngine(),o=s.name?.toLowerCase(),a=t.getOS(),c=a.name?.toLowerCase(),d=parseFloat(a.version??"0"),l=t.getDevice(),u=l.model?.toLowerCase(),p="ios"===c||"ipad"===u,h=n&&["chrome","chromium","mobile chrome","chrome webview","chrome headless"].includes(n),f=n&&["firefox","mobile firefox","mobile focus"].includes(n),m=n&&["safari","mobile safari"].includes(n),g=n&&["edge"].includes(n);if((h||g)&&!p&&i>=111)return"Chrome111";if(h&&!p&&i>=74||g&&!p&&i>=88)return"Chrome74";if(h&&!p&&i>=70)return"Chrome70";if(h&&!p&&i>=67)return"Chrome67";if(h&&!p&&i>=55)return"Chrome55";if(f&&!p&&i>=60)return"Firefox60";if(f&&p&&d>=14.3)return"Safari12";if(m&&i>=12&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(m&&i>=11)return"Safari11";if(g&&!p&&i>=11&&i<=18)return"Edge11";if("webkit"===o&&p&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if("blink"===o){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=111?"Chrome111":e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome111"}Xc.warn("detectDevice() | browser not supported [name:%s, version:%s]",n,i)}}Er.detectDevice=ed;Er.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new Nc.EnhancedEventEmitter,Xc.debug("constructor()"),r){if(Xc.warn("constructor() | Handler option is DEPRECATED, use handlerName or handlerFactory instead"),"string"!=typeof r)throw new TypeError("non string Handler option no longer supported, use handlerFactory instead");e=r}if(e&&t)throw new TypeError("just one of handlerName or handlerInterface can be given");if(t)this._handlerFactory=t;else{if(e)Xc.debug("constructor() | handler given: %s",e);else{if(!(e=ed()))throw new Bc.UnsupportedError("device not supported");Xc.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=$c.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=Vc.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=Gc.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=qc.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=Hc.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=Wc.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=Kc.Safari12.createFactory();break;case"Safari11":this._handlerFactory=Jc.Safari11.createFactory();break;case"Edge11":this._handlerFactory=Qc.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=Yc.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=Zc.ReactNative.createFactory();break;default:throw new TypeError(`unknown handlerName "${e}"`)}}const n=this._handlerFactory();this._handlerName=n.name,n.close(),this._extendedRtpCapabilities=void 0,this._recvRtpCapabilities=void 0,this._canProduceByKind={audio:!1,video:!1},this._sctpCapabilities=void 0}get handlerName(){return this._handlerName}get loaded(){return this._loaded}get rtpCapabilities(){if(!this._loaded)throw new Bc.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new Bc.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;Xc.debug("load() [routerRtpCapabilities:%o]",e),e=Fc.clone(e);try{if(this._loaded)throw new Bc.InvalidStateError("already loaded");zc.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();Xc.debug("load() | got native RTP capabilities:%o",r),zc.validateRtpCapabilities(r),this._extendedRtpCapabilities=zc.getExtendedRtpCapabilities(r,e),Xc.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=zc.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=zc.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=zc.getRecvRtpCapabilities(this._extendedRtpCapabilities),zc.validateRtpCapabilities(this._recvRtpCapabilities),Xc.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),Xc.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),zc.validateSctpCapabilities(this._sctpCapabilities),Xc.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new Bc.InvalidStateError("not loaded");if("audio"!==e&&"video"!==e)throw new TypeError(`invalid kind "${e}"`);return this._canProduceByKind[e]}createSendTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d}){return Xc.debug("createSendTransport()"),this.createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d}){return Xc.debug("createRecvTransport()"),this.createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d})}createTransport({direction:e,id:t,iceParameters:r,iceCandidates:n,dtlsParameters:i,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,appData:l}){if(!this._loaded)throw new Bc.InvalidStateError("not loaded");if("string"!=typeof t)throw new TypeError("missing id");if("object"!=typeof r)throw new TypeError("missing iceParameters");if(!Array.isArray(n))throw new TypeError("missing iceCandidates");if("object"!=typeof i)throw new TypeError("missing dtlsParameters");if(s&&"object"!=typeof s)throw new TypeError("wrong sctpParameters");if(l&&"object"!=typeof l)throw new TypeError("if given, appData must be an object");const u=new Uc.Transport({direction:e,id:t,iceParameters:r,iceCandidates:n,dtlsParameters:i,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",u),u}};var td={},rd={};Object.defineProperty(rd,"__esModule",{value:!0});var nd={};Object.defineProperty(nd,"__esModule",{value:!0}),function(e){var t=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),r=a&&a.__exportStar||function(e,r){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(r,n)||t(r,e,n)};Object.defineProperty(e,"__esModule",{value:!0}),r(Er,e),r(Tn,e),r(An,e),r(Un,e),r(Hn,e),r(Yn,e),r(rd,e),r(nd,e),r($i,e),r(zr,e)}(td),function(e){var t=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),r=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&t(n,e,i);return r(n,e),n},i=a&&a.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.debug=e.parseScalabilityMode=e.detectDevice=e.Device=e.version=e.types=void 0;const s=i(kr);e.debug=s.default;const o=Er;Object.defineProperty(e,"Device",{enumerable:!0,get:function(){return o.Device}}),Object.defineProperty(e,"detectDevice",{enumerable:!0,get:function(){return o.detectDevice}});const c=n(td);e.types=c,e.version="3.7.3";var d=os;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return d.parse}})}(Cr);let id=!0,sd=!0;function od(e,t,r){const n=e.match(t);return n&&n.length>=r&&parseInt(n[r],10)}function ad(e,t,r){if(!e.RTCPeerConnection)return;const n=e.RTCPeerConnection.prototype,i=n.addEventListener;n.addEventListener=function(e,n){if(e!==t)return i.apply(this,arguments);const s=e=>{const t=r(e);t&&(n.handleEvent?n.handleEvent(t):n(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(n,s),i.apply(this,[e,s])};const s=n.removeEventListener;n.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(r))return s.apply(this,arguments);const n=this._eventMap[t].get(r);return this._eventMap[t].delete(r),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[e,n])},Object.defineProperty(n,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function cd(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(id=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function dd(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(sd=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function ld(){if("object"==typeof window){if(id)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function ud(e,t){sd&&console.warn(e+" is deprecated, please use "+t+" instead.")}function pd(e){return"[object Object]"===Object.prototype.toString.call(e)}function hd(e){return pd(e)?Object.keys(e).reduce((function(t,r){const n=pd(e[r]),i=n?hd(e[r]):e[r],s=n&&!Object.keys(i).length;return void 0===i||s?t:Object.assign(t,{[r]:i})}),{}):e}function fd(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((n=>{n.endsWith("Id")?fd(e,e.get(t[n]),r):n.endsWith("Ids")&&t[n].forEach((t=>{fd(e,e.get(t),r)}))})))}function md(e,t,r){const n=r?"outbound-rtp":"inbound-rtp",i=new Map;if(null===t)return i;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((r=>{r.type===n&&r.trackId===t.id&&fd(e,r,i)}))})),i}const gd=ld;function vd(e,t){const r=e&&e.navigator;if(!r.mediaDevices)return;const n=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((r=>{if("require"===r||"advanced"===r||"mediaSource"===r)return;const n="object"==typeof e[r]?e[r]:{ideal:e[r]};void 0!==n.exact&&"number"==typeof n.exact&&(n.min=n.max=n.exact);const i=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==n.ideal){t.optional=t.optional||[];let e={};"number"==typeof n.ideal?(e[i("min",r)]=n.ideal,t.optional.push(e),e={},e[i("max",r)]=n.ideal,t.optional.push(e)):(e[i("",r)]=n.ideal,t.optional.push(e))}void 0!==n.exact&&"number"!=typeof n.exact?(t.mandatory=t.mandatory||{},t.mandatory[i("",r)]=n.exact):["min","max"].forEach((e=>{void 0!==n[e]&&(t.mandatory=t.mandatory||{},t.mandatory[i(e,r)]=n[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},i=function(e,i){if(t.version>=61)return i(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=n(e.audio)}if(e&&"object"==typeof e.video){let s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const o=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||o)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let o=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!o&&r.length&&t.includes("back")&&(o=r[r.length-1]),o&&(e.video.deviceId=s.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=n(e.video),gd("chrome: "+JSON.stringify(e)),i(e)}))}e.video=n(e.video)}return gd("chrome: "+JSON.stringify(e)),i(e)},s=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(r.getUserMedia=function(e,t,n){i(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{n&&n(s(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return i(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(s(e))))))}}}function bd(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function yd(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(r=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.track.id)):{track:r.track};const i=new Event("track");i.track=r.track,i.receiver=n,i.transceiver={receiver:n},i.streams=[t.stream],this.dispatchEvent(i)})),t.stream.getTracks().forEach((r=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.id)):{track:r};const i=new Event("track");i.track=r,i.receiver=n,i.transceiver={receiver:n},i.streams=[t.stream],this.dispatchEvent(i)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else ad(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function _d(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){let i=r.apply(this,arguments);return i||(i=t(this,e),this._senders.push(i)),i};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){n.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function wd(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,n]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const i=function(e){const t={};return e.result().forEach((e=>{const r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{r[t]=e.stat(t)})),t[r.id]=r})),t},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const n=function(e){r(s(i(e)))};return t.apply(this,[n,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(s(i(t)))},r])})).then(r,n)}}function Sd(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>md(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),ad(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>md(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,r,n;return this.getSenders().forEach((r=>{r.track===e&&(t?n=!0:t=r)})),this.getReceivers().forEach((t=>(t.track===e&&(r?n=!0:r=t),t.track===e))),n||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function Cd(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const n=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(n)&&this._shimmedLocalStreams[r.id].push(n):this._shimmedLocalStreams[r.id]=[r,n],n};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();r.apply(this,arguments);const n=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(n)};const n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],n.apply(this,arguments)};const i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const r=this._shimmedLocalStreams[t].indexOf(e);-1!==r&&this._shimmedLocalStreams[t].splice(r,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),i.apply(this,arguments)}}function Rd(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return Cd(e);const r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}n.apply(this,[t])};const i=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const n=e._reverseStreams[t],i=e._streams[n.id];r=r.replace(new RegExp(i.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:r})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,r){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const n=[].slice.call(arguments,1);if(1!==n.length||!n[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find((e=>e.track===t)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const i=this._streams[r.id];if(i)i.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const n=new e.MediaStream([t]);this._streams[r.id]=n,this._reverseStreams[n.id]=r,this.addStream(n)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],n={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[t=>{const r=s(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=n[t]}));const o=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const n=e._reverseStreams[t],i=e._streams[n.id];r=r.replace(new RegExp(n.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:r})}(this,arguments[0]),o.apply(this,arguments)):o.apply(this,arguments)};const a=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=a.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((r=>{this._streams[r].getTracks().find((t=>e.track===t))&&(t=this._streams[r])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Pd(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]}))}function Td(e,t){ad(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var kd=Object.freeze({__proto__:null,fixNegotiationNeeded:Td,shimAddTrackRemoveTrack:Rd,shimAddTrackRemoveTrackWithNative:Cd,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then((t=>{const n=r.video&&r.video.width,i=r.video&&r.video.height,s=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||3}},n&&(r.video.mandatory.maxWidth=n),i&&(r.video.mandatory.maxHeight=i),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))},shimGetSendersWithDtmf:_d,shimGetStats:wd,shimGetUserMedia:vd,shimMediaStream:bd,shimOnTrack:yd,shimPeerConnection:Pd,shimSenderReceiverGetStats:Sd});function Ed(e,t){const r=e&&e.navigator,n=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,n){ud("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(e).then(t,n)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){const e=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])},t=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(r){return"object"==typeof r&&"object"==typeof r.audio&&(r=JSON.parse(JSON.stringify(r)),e(r.audio,"autoGainControl","mozAutoGainControl"),e(r.audio,"noiseSuppression","mozNoiseSuppression")),t(r)},n&&n.prototype.getSettings){const t=n.prototype.getSettings;n.prototype.getSettings=function(){const r=t.apply(this,arguments);return e(r,"mozAutoGainControl","autoGainControl"),e(r,"mozNoiseSuppression","noiseSuppression"),r}}if(n&&n.prototype.applyConstraints){const t=n.prototype.applyConstraints;n.prototype.applyConstraints=function(r){return"audio"===this.kind&&"object"==typeof r&&(r=JSON.parse(JSON.stringify(r)),e(r,"autoGainControl","mozAutoGainControl"),e(r,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[r])}}}}function Od(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Dd(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]}));const r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,i,s]=arguments;return n.apply(this,[e||null]).then((e=>{if(t.version<53&&!i)try{e.forEach((e=>{e.type=r[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,n)=>{e.set(n,Object.assign({},t,{type:r[t.type]||t.type}))}))}return e})).then(i,s)}}function Id(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function xd(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),ad(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Md(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){ud("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function jd(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function Ld(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]),e=[...e];const r=e.length>0;r&&e.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const n=t.apply(this,arguments);if(r){const{sender:t}=n,r=t.getParameters();(!("encodings"in r)||1===r.encodings.length&&0===Object.keys(r.encodings[0]).length)&&(r.encodings=e,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return n})}function Ad(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function Nd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function Bd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}var Fd=Object.freeze({__proto__:null,shimAddTransceiver:Ld,shimCreateAnswer:Bd,shimCreateOffer:Nd,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===r.video?r.video={mediaSource:t}:r.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(r)})},shimGetParameters:Ad,shimGetUserMedia:Ed,shimOnTrack:Od,shimPeerConnection:Dd,shimRTCDataChannel:jd,shimReceiverGetStats:xd,shimRemoveStream:Md,shimSenderGetStats:Id});function zd(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((r=>t.call(this,r,e))),e.getVideoTracks().forEach((r=>t.call(this,r,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...r){return r&&r.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const r=e.getTracks();this.getSenders().forEach((e=>{r.includes(e.track)&&this.removeTrack(e)}))})}}function Ud(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const r=new Event("addstream");r.stream=t,e.dispatchEvent(r)}))}),t.apply(e,arguments)}}}function $d(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,n=t.createAnswer,i=t.setLocalDescription,s=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){const n=arguments.length>=2?arguments[2]:arguments[0],i=r.apply(this,[n]);return t?(i.then(e,t),Promise.resolve()):i},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],i=n.apply(this,[r]);return t?(i.then(e,t),Promise.resolve()):i};let a=function(e,t,r){const n=i.apply(this,[e]);return r?(n.then(t,r),Promise.resolve()):n};t.setLocalDescription=a,a=function(e,t,r){const n=s.apply(this,[e]);return r?(n.then(t,r),Promise.resolve()):n},t.setRemoteDescription=a,a=function(e,t,r){const n=o.apply(this,[e]);return r?(n.then(t,r),Promise.resolve()):n},t.addIceCandidate=a}function Vd(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>r(Gd(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,n){t.mediaDevices.getUserMedia(e).then(r,n)}.bind(t))}function Gd(e){return e&&void 0!==e.video?Object.assign({},e,{video:hd(e.video)}):e}function qd(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){const t=[];for(let r=0;r<e.iceServers.length;r++){let n=e.iceServers[r];void 0===n.urls&&n.url?(ud("RTCIceServer.url","RTCIceServer.urls"),n=JSON.parse(JSON.stringify(n)),n.urls=n.url,delete n.url,t.push(n)):t.push(e.iceServers[r])}e.iceServers=t}return new t(e,r)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function Hd(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Wd(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const r=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&r?"sendrecv"===r.direction?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":"recvonly"===r.direction&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):!0!==e.offerToReceiveVideo||r||this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function Kd(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var Jd=Object.freeze({__proto__:null,shimAudioContext:Kd,shimCallbacksAPI:$d,shimConstraints:Gd,shimCreateOfferLegacy:Wd,shimGetUserMedia:Vd,shimLocalStreamsAPI:zd,shimRTCIceServerUrls:qd,shimRemoteStreamsAPI:Ud,shimTrackEventTransceiver:Hd}),Qd={exports:{}};!function(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},t.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},t.getDescription=function(e){const r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){const r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((e=>0===e.indexOf(r)))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const r={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":r.relatedAddress=t[e+1];break;case"rport":r.relatedPort=parseInt(t[e+1],10);break;case"tcptype":r.tcpType=t[e+1];break;case"ufrag":r.ufrag=t[e+1],r.usernameFragment=t[e+1];break;default:void 0===r[t[e]]&&(r[t[e]]=t[e+1])}return r},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const r=e.component;"rtp"===r?t.push(1):"rtcp"===r?t.push(2):t.push(r),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const n=e.type;return t.push("typ"),t.push(n),"host"!==n&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const r={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),r.name=t[0],r.clockRate=parseInt(t[1],10),r.channels=3===t.length?parseInt(t[2],10):1,r.numChannels=r.channels,r},t.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let r;const n=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<n.length;e++)r=n[e].trim().split("="),t[r[0].trim()]=r[1];return t},t.writeFmtp=function(e){let t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const n=[];Object.keys(e.parameters).forEach((t=>{void 0!==e.parameters[t]?n.push(t+"="+e.parameters[t]):n.push(t)})),t+="a=fmtp:"+r+" "+n.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),r={ssrc:parseInt(e.substring(7,t),10)},n=e.indexOf(":",t);return n>-1?(r.attribute=e.substring(t+1,n),r.value=e.substring(n+1)):r.attribute=e.substring(t+1),r},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},t.getMid=function(e){const r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){const t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,r){return t.matchPrefix(e+r,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,r){const n=t.matchPrefix(e+r,"a=ice-ufrag:")[0],i=t.matchPrefix(e+r,"a=ice-pwd:")[0];return n&&i?{usernameFragment:n.substring(12),password:i.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=t.splitLines(e)[0].split(" ");r.profile=n[2];for(let i=3;i<n.length;i++){const s=n[i],o=t.matchPrefix(e,"a=rtpmap:"+s+" ")[0];if(o){const n=t.parseRtpMap(o),i=t.matchPrefix(e,"a=fmtp:"+s+" ");switch(n.parameters=i.length?t.parseFmtp(i[0]):{},n.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),r.codecs.push(n),n.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(n.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach((e=>{r.headerExtensions.push(t.parseExtmap(e))}));const i=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return r.codecs.forEach((e=>{i.forEach((t=>{e.rtcpFeedback.find((e=>e.type===t.type&&e.parameter===t.parameter))||e.rtcpFeedback.push(t)}))})),r},t.writeRtpDescription=function(e,r){let n="";n+="m="+e+" ",n+=r.codecs.length>0?"9":"0",n+=" "+(r.profile||"UDP/TLS/RTP/SAVPF")+" ",n+=r.codecs.map((e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType)).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",r.codecs.forEach((e=>{n+=t.writeRtpMap(e),n+=t.writeFmtp(e),n+=t.writeRtcpFb(e)}));let i=0;return r.codecs.forEach((e=>{e.maxptime>i&&(i=e.maxptime)})),i>0&&(n+="a=maxptime:"+i+"\r\n"),r.headerExtensions&&r.headerExtensions.forEach((e=>{n+=t.writeExtmap(e)})),n},t.parseRtpEncodingParameters=function(e){const r=[],n=t.parseRtpParameters(e),i=-1!==n.fecMechanisms.indexOf("RED"),s=-1!==n.fecMechanisms.indexOf("ULPFEC"),o=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),a=o.length>0&&o[0].ssrc;let c;const d=t.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substring(17).split(" ").map((e=>parseInt(e,10)))));d.length>0&&d[0].length>1&&d[0][0]===a&&(c=d[0][1]),n.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:a,codecPayloadType:parseInt(e.parameters.apt,10)};a&&c&&(t.rtx={ssrc:c}),r.push(t),i&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:a,mechanism:s?"red+ulpfec":"red"},r.push(t))}})),0===r.length&&a&&r.push({ssrc:a});let l=t.matchPrefix(e,"b=");return l.length&&(l=0===l[0].indexOf("b=TIAS:")?parseInt(l[0].substring(7),10):0===l[0].indexOf("b=AS:")?1e3*parseInt(l[0].substring(5),10)*.95-16e3:void 0,r.forEach((e=>{e.maxBitrate=l}))),r},t.parseRtcpParameters=function(e){const r={},n=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];n&&(r.cname=n.value,r.ssrc=n.ssrc);const i=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=i.length>0,r.compound=0===i.length;const s=t.matchPrefix(e,"a=rtcp-mux");return r.mux=s.length>0,r},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let r;const n=t.matchPrefix(e,"a=msid:");if(1===n.length)return r=n[0].substring(7).split(" "),{stream:r[0],track:r[1]};const i=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return i.length>0?(r=i[0].value.split(" "),{stream:r[0],track:r[1]}):void 0},t.parseSctpDescription=function(e){const r=t.parseMLine(e),n=t.matchPrefix(e,"a=max-message-size:");let i;n.length>0&&(i=parseInt(n[0].substring(19),10)),isNaN(i)&&(i=65536);const s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substring(12),10),protocol:r.fmt,maxMessageSize:i};const o=t.matchPrefix(e,"a=sctpmap:");if(o.length>0){const e=o[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:i}}},t.writeSctpDescription=function(e,t){let r=[];return r="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,22)},t.writeSessionBoilerplate=function(e,r,n){let i;const s=void 0!==r?r:2;i=e||t.generateSessionId();return"v=0\r\no="+(n||"thisisadapterortc")+" "+i+" "+s+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,r){const n=t.splitLines(e);for(let e=0;e<n.length;e++)switch(n[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[e].substring(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const r=t.splitLines(e)[0].substring(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){const r=t.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const r=t.splitLines(e);for(let e=0;e<r.length;e++)if(r[e].length<2||"="!==r[e].charAt(1))return!1;return!0},e.exports=t}(Qd);var Yd=Qd.exports,Zd=c(Yd),Xd=i({__proto__:null,default:Zd},[Yd]);function el(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substring(2)),e.candidate&&e.candidate.length){const r=new t(e),n=Zd.parseCandidate(e.candidate);for(const e in n)e in r||Object.defineProperty(r,e,{value:n[e]});return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,ad(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function tl(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||ad(e,"icecandidate",(e=>{if(e.candidate){const t=Zd.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function rl(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(function(e){if(!e||!e.sdp)return!1;const t=Zd.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=Zd.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))}(arguments[0])){const e=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const r=parseInt(t[1],10);return r!=r?-1:r}(arguments[0]),r=function(e){let r=65536;return"firefox"===t.browser&&(r=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),r}(e),n=function(e,r){let n=65536;"firefox"===t.browser&&57===t.version&&(n=65535);const i=Zd.matchPrefix(e.sdp,"a=max-message-size:");return i.length>0?n=parseInt(i[0].substring(19),10):"firefox"===t.browser&&-1!==r&&(n=2147483637),n}(arguments[0],e);let i;i=0===r&&0===n?Number.POSITIVE_INFINITY:0===r||0===n?Math.max(r,n):Math.min(r,n);const s={};Object.defineProperty(s,"maxMessageSize",{get:()=>i}),this._sctp=s}return r.apply(this,arguments)}}function nl(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const r=e.send;e.send=function(){const n=arguments[0],i=n.length||n.size||n.byteLength;if("open"===e.readyState&&t.sctp&&i>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}const r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=r.apply(this,arguments);return t(e,this),e},ad(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function il(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}}))}function sl(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const r=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:r}):t.sdp=r}return r.apply(this,arguments)}}function ol(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.addIceCandidate;r&&0!==r.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function al(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.setLocalDescription;r&&0!==r.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return r.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}if(e.sdp||"offer"!==e.type&&"answer"!==e.type)return r.apply(this,[e]);return("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then((e=>r.apply(this,[e])))})}var cl=Object.freeze({__proto__:null,removeExtmapAllowMixed:sl,shimAddIceCandidateNullOrEmpty:ol,shimConnectionState:il,shimMaxMessageSize:rl,shimParameterlessSetLocalDescription:al,shimRTCIceCandidate:el,shimRTCIceCandidateRelayProtocol:tl,shimSendThrowTypeError:nl});const dl=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=ld,n=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=od(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=od(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=od(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),i={browserDetails:n,commonShim:cl,extractVersion:od,disableLog:cd,disableWarnings:dd,sdp:Xd};switch(n.browser){case"chrome":if(!kd||!Pd||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),i;if(null===n.version)return r("Chrome shim can not determine version, not shimming."),i;r("adapter.js shimming chrome."),i.browserShim=kd,ol(e,n),al(e),vd(e,n),bd(e),Pd(e,n),yd(e),Rd(e,n),_d(e),wd(e),Sd(e),Td(e,n),el(e),tl(e),il(e),rl(e,n),nl(e),sl(e,n);break;case"firefox":if(!Fd||!Dd||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),i;r("adapter.js shimming firefox."),i.browserShim=Fd,ol(e,n),al(e),Ed(e,n),Dd(e,n),Od(e),Md(e),Id(e),xd(e),jd(e),Ld(e),Ad(e),Nd(e),Bd(e),el(e),il(e),rl(e,n),nl(e);break;case"safari":if(!Jd||!t.shimSafari)return r("Safari shim is not included in this adapter release."),i;r("adapter.js shimming safari."),i.browserShim=Jd,ol(e,n),al(e),qd(e),Wd(e),$d(e),zd(e),Ud(e),Hd(e),Vd(e),Kd(e),el(e),tl(e),rl(e,n),nl(e),sl(e,n);break;default:r("Unsupported browser!")}return i}({window:"undefined"==typeof window?void 0:window});function ll(e){return{id:e.id,tracks:e.getTracks().map((function(e){return{id:e.id,kind:e.kind,label:e.label,enabled:e.enabled,muted:e.muted,readyState:e.readyState}}))}}var ul=function(e,t,r){var n=0,i=!!window.mozRTCPeerConnection,s=!!window.RTCIceGatherer,o={};if(r.forEach((function(r){if(window[r+"RTCPeerConnection"]&&("webkit"!==r||!s)){var a=window[r+"RTCPeerConnection"],c=function(r,c){var d=new a(r,c),l="PC_"+n++;d.__rtcStatsId=l,r||(r={nullConfig:!0}),((r=JSON.parse(JSON.stringify(r)))&&r.iceServers||[]).forEach((function(e){delete e.credential})),r.browserType=i?"moz":s?"edge":"webkit",e("create",l,r),c&&e("constraints",l,c),d.addEventListener("icecandidate",(function(t){e("onicecandidate",l,t.candidate)})),d.addEventListener("addstream",(function(t){e("onaddstream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("track",(function(t){e("ontrack",l,t.track.kind+":"+t.track.id+" "+t.streams.map((function(e){return"stream:"+e.id})))})),d.addEventListener("removestream",(function(t){e("onremovestream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("signalingstatechange",(function(){e("onsignalingstatechange",l,d.signalingState)})),d.addEventListener("iceconnectionstatechange",(function(){e("oniceconnectionstatechange",l,d.iceConnectionState)})),d.addEventListener("icegatheringstatechange",(function(){e("onicegatheringstatechange",l,d.iceGatheringState)})),d.addEventListener("connectionstatechange",(function(){e("onconnectionstatechange",l,d.connectionState)})),d.addEventListener("negotiationneeded",(function(){e("onnegotiationneeded",l,void 0)})),d.addEventListener("datachannel",(function(t){e("ondatachannel",l,[t.channel.id,t.channel.label])}));var u=function(){d.getStats(null).then((function(t){var r=function(e){if(!e.entries)return e;var t={};return e.forEach((function(e,r){t[r]=e})),t}(t),n=JSON.parse(JSON.stringify(r));e("getstats",l,function(e,t){t=JSON.parse(JSON.stringify(t)),Object.keys(t).forEach((function(r){var n=t[r];delete n.id,e[r]&&Object.keys(n).forEach((function(i){n[i]===e[r][i]&&delete t[r][i],(0===Object.keys(n).length||1===Object.keys(n).length&&n.timestamp)&&delete t[r]}))}));var r=-1/0;return Object.keys(t).forEach((function(e){var n=t[e];n.timestamp>r&&(r=n.timestamp)})),Object.keys(t).forEach((function(e){var n=t[e];n.timestamp===r&&(n.timestamp=0)})),t.timestamp=r,t}(o[l]||{},r)),o[l]=n}))};if(!s&&t)var p=window.setInterval((function(){"closed"!==d.signalingState?u():window.clearInterval(p)}),t);return s||d.addEventListener("connectionstatechange",(function(){"connected"!==d.connectionState&&"failed"!==d.connectionState||u()})),d};["createDataChannel","close"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){return e(t,this.__rtcStatsId,arguments),r.apply(this,arguments)})})),["addStream","removeStream"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var n=arguments[0],i=n.getTracks().map((function(e){return e.kind+":"+e.id})).join(",");return e(t,this.__rtcStatsId,n.id+" "+i),r.apply(this,arguments)})})),["addTrack"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var n=arguments[0],i=[].slice.call(arguments,1);return e(t,this.__rtcStatsId,n.kind+":"+n.id+" "+(i.map((function(e){return"stream:"+e.id})).join(";")||"-")),r.apply(this,arguments)})})),["removeTrack"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var n=arguments[0].track;return e(t,this.__rtcStatsId,n?n.kind+":"+n.id:"null"),r.apply(this,arguments)})})),["createOffer","createAnswer"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var n,i=this.__rtcStatsId,s=arguments;return 1===arguments.length&&"object"==typeof arguments[0]?n=arguments[0]:3===arguments.length&&"object"==typeof arguments[2]&&(n=arguments[2]),e(t,this.__rtcStatsId,n),r.apply(this,n?[n]:void 0).then((function(r){if(e(t+"OnSuccess",i,r),!(s.length>0&&"function"==typeof s[0]))return r;s[0].apply(null,[r])}),(function(r){if(e(t+"OnFailure",i,r.toString()),!(s.length>1&&"function"==typeof s[1]))throw r;s[1].apply(null,[r])}))})})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var n=this.__rtcStatsId,i=arguments;return e(t,this.__rtcStatsId,i[0]),r.apply(this,[i[0]]).then((function(){e(t+"OnSuccess",n,void 0),i.length>=2&&"function"==typeof i[1]&&i[1].apply(null,[])}),(function(r){if(e(t+"OnFailure",n,r.toString()),!(i.length>=3&&"function"==typeof i[2]))throw r;i[2].apply(null,[r])}))})})),a.generateCertificate&&Object.defineProperty(c,"generateCertificate",{get:function(){return arguments.length?a.generateCertificate.apply(null,arguments):a.generateCertificate}}),window[r+"RTCPeerConnection"]=c,window[r+"RTCPeerConnection"].prototype=a.prototype}})),r.forEach((function(t){var r=t+(t.length?"GetUserMedia":"getUserMedia");if(navigator[r]){var n=navigator[r].bind(navigator);navigator[r]=function(){e("getUserMedia",null,arguments[0]);var t=arguments[1],r=arguments[2];n(arguments[0],(function(r){e("getUserMediaOnSuccess",null,ll(r)),t&&t(r)}),(function(t){e("getUserMediaOnFailure",null,t.name),r&&r(t)}))}.bind(navigator)}})),navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){var a=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(){return e("navigator.mediaDevices.getUserMedia",null,arguments[0]),a.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getUserMediaOnSuccess",null,ll(t)),t}),(function(t){return e("navigator.mediaDevices.getUserMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){var c=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getDisplayMedia=function(){return e("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),c.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getDisplayMediaOnSuccess",null,ll(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){o={}}}},pl=c(ul);let hl;const fl=new Uint8Array(16);function ml(){if(!hl&&(hl="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!hl))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return hl(fl)}const gl=[];for(let rk=0;rk<256;++rk)gl.push((rk+256).toString(16).slice(1));var vl={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function bl(e,t,r){if(vl.randomUUID&&!t&&!e)return vl.randomUUID();const n=(e=e||{}).random||(e.rng||ml)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=n[e];return t}return function(e,t=0){return gl[e[t+0]]+gl[e[t+1]]+gl[e[t+2]]+gl[e[t+3]]+"-"+gl[e[t+4]]+gl[e[t+5]]+"-"+gl[e[t+6]]+gl[e[t+7]]+"-"+gl[e[t+8]]+gl[e[t+9]]+"-"+gl[e[t+10]]+gl[e[t+11]]+gl[e[t+12]]+gl[e[t+13]]+gl[e[t+14]]+gl[e[t+15]]}(n)}var yl={},_l={},wl={};Object.defineProperty(wl,"__esModule",{value:!0}),wl.isCorrect=wl.isInSubnet=void 0,wl.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},wl.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var Sl={};Object.defineProperty(Sl,"__esModule",{value:!0}),Sl.RE_SUBNET_STRING=Sl.RE_ADDRESS=Sl.GROUPS=Sl.BITS=void 0,Sl.BITS=32,Sl.GROUPS=4,Sl.RE_ADDRESS=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g,Sl.RE_SUBNET_STRING=/\/\d{1,2}$/;var Cl={};Object.defineProperty(Cl,"__esModule",{value:!0}),Cl.AddressError=void 0;class Rl extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}Cl.AddressError=Rl;var Pl,Tl={exports:{}};Pl=Tl,function(){var e;function t(e,t,r){null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function r(){return new t(null)}var n="undefined"!=typeof navigator;n&&"Microsoft Internet Explorer"==navigator.appName?(t.prototype.am=function(e,t,r,n,i,s){for(var o=32767&t,a=t>>15;--s>=0;){var c=32767&this[e],d=this[e++]>>15,l=a*c+d*o;i=((c=o*c+((32767&l)<<15)+r[n]+(1073741823&i))>>>30)+(l>>>15)+a*d+(i>>>30),r[n++]=1073741823&c}return i},e=30):n&&"Netscape"!=navigator.appName?(t.prototype.am=function(e,t,r,n,i,s){for(;--s>=0;){var o=t*this[e++]+r[n]+i;i=Math.floor(o/67108864),r[n++]=67108863&o}return i},e=26):(t.prototype.am=function(e,t,r,n,i,s){for(var o=16383&t,a=t>>14;--s>=0;){var c=16383&this[e],d=this[e++]>>14,l=a*c+d*o;i=((c=o*c+((16383&l)<<14)+r[n]+i)>>28)+(l>>14)+a*d,r[n++]=268435455&c}return i},e=28),t.prototype.DB=e,t.prototype.DM=(1<<e)-1,t.prototype.DV=1<<e,t.prototype.FV=Math.pow(2,52),t.prototype.F1=52-e,t.prototype.F2=2*e-52;var i,s,o="0123456789abcdefghijklmnopqrstuvwxyz",a=new Array;for(i="0".charCodeAt(0),s=0;s<=9;++s)a[i++]=s;for(i="a".charCodeAt(0),s=10;s<36;++s)a[i++]=s;for(i="A".charCodeAt(0),s=10;s<36;++s)a[i++]=s;function c(e){return o.charAt(e)}function d(e,t){var r=a[e.charCodeAt(t)];return null==r?-1:r}function l(e){var t=r();return t.fromInt(e),t}function u(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function p(e){this.m=e}function h(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}function f(e,t){return e&t}function m(e,t){return e|t}function g(e,t){return e^t}function v(e,t){return e&~t}function b(e){if(0==e)return-1;var t=0;return 0==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function y(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function _(){}function w(e){return e}function S(e){this.r2=r(),this.q3=r(),t.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}p.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},p.prototype.revert=function(e){return e},p.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},p.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},p.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},h.prototype.convert=function(e){var n=r();return e.abs().dlShiftTo(this.m.t,n),n.divRemTo(this.m,null,n),e.s<0&&n.compareTo(t.ZERO)>0&&this.m.subTo(n,n),n},h.prototype.revert=function(e){var t=r();return e.copyTo(t),this.reduce(t),t},h.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var r=32767&e[t],n=r*this.mpl+((r*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,n,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},h.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},h.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},t.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},t.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},t.prototype.fromString=function(e,r){var n;if(16==r)n=4;else if(8==r)n=3;else if(256==r)n=8;else if(2==r)n=1;else if(32==r)n=5;else{if(4!=r)return void this.fromRadix(e,r);n=2}this.t=0,this.s=0;for(var i=e.length,s=!1,o=0;--i>=0;){var a=8==n?255&e[i]:d(e,i);a<0?"-"==e.charAt(i)&&(s=!0):(s=!1,0==o?this[this.t++]=a:o+n>this.DB?(this[this.t-1]|=(a&(1<<this.DB-o)-1)<<o,this[this.t++]=a>>this.DB-o):this[this.t-1]|=a<<o,(o+=n)>=this.DB&&(o-=this.DB))}8==n&&0!=(128&e[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<<this.DB-o)-1<<o)),this.clamp(),s&&t.ZERO.subTo(this,this)},t.prototype.clamp=function(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t},t.prototype.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},t.prototype.drShiftTo=function(e,t){for(var r=e;r<this.t;++r)t[r-e]=this[r];t.t=Math.max(this.t-e,0),t.s=this.s},t.prototype.lShiftTo=function(e,t){var r,n=e%this.DB,i=this.DB-n,s=(1<<i)-1,o=Math.floor(e/this.DB),a=this.s<<n&this.DM;for(r=this.t-1;r>=0;--r)t[r+o+1]=this[r]>>i|a,a=(this[r]&s)<<n;for(r=o-1;r>=0;--r)t[r]=0;t[o]=a,t.t=this.t+o+1,t.s=this.s,t.clamp()},t.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var n=e%this.DB,i=this.DB-n,s=(1<<n)-1;t[0]=this[r]>>n;for(var o=r+1;o<this.t;++o)t[o-r-1]|=(this[o]&s)<<i,t[o-r]=this[o]>>n;n>0&&(t[this.t-r-1]|=(this.s&s)<<i),t.t=this.t-r,t.clamp()}},t.prototype.subTo=function(e,t){for(var r=0,n=0,i=Math.min(e.t,this.t);r<i;)n+=this[r]-e[r],t[r++]=n&this.DM,n>>=this.DB;if(e.t<this.t){for(n-=e.s;r<this.t;)n+=this[r],t[r++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;r<e.t;)n-=e[r],t[r++]=n&this.DM,n>>=this.DB;n-=e.s}t.s=n<0?-1:0,n<-1?t[r++]=this.DV+n:n>0&&(t[r++]=n),t.t=r,t.clamp()},t.prototype.multiplyTo=function(e,r){var n=this.abs(),i=e.abs(),s=n.t;for(r.t=s+i.t;--s>=0;)r[s]=0;for(s=0;s<i.t;++s)r[s+n.t]=n.am(0,i[s],r,s,0,n.t);r.s=0,r.clamp(),this.s!=e.s&&t.ZERO.subTo(r,r)},t.prototype.squareTo=function(e){for(var t=this.abs(),r=e.t=2*t.t;--r>=0;)e[r]=0;for(r=0;r<t.t-1;++r){var n=t.am(r,t[r],e,2*r,0,1);(e[r+t.t]+=t.am(r+1,2*t[r],e,2*r+1,n,t.t-r-1))>=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},t.prototype.divRemTo=function(e,n,i){var s=e.abs();if(!(s.t<=0)){var o=this.abs();if(o.t<s.t)return null!=n&&n.fromInt(0),void(null!=i&&this.copyTo(i));null==i&&(i=r());var a=r(),c=this.s,d=e.s,l=this.DB-u(s[s.t-1]);l>0?(s.lShiftTo(l,a),o.lShiftTo(l,i)):(s.copyTo(a),o.copyTo(i));var p=a.t,h=a[p-1];if(0!=h){var f=h*(1<<this.F1)+(p>1?a[p-2]>>this.F2:0),m=this.FV/f,g=(1<<this.F1)/f,v=1<<this.F2,b=i.t,y=b-p,_=null==n?r():n;for(a.dlShiftTo(y,_),i.compareTo(_)>=0&&(i[i.t++]=1,i.subTo(_,i)),t.ONE.dlShiftTo(p,_),_.subTo(a,a);a.t<p;)a[a.t++]=0;for(;--y>=0;){var w=i[--b]==h?this.DM:Math.floor(i[b]*m+(i[b-1]+v)*g);if((i[b]+=a.am(0,w,i,y,0,p))<w)for(a.dlShiftTo(y,_),i.subTo(_,i);i[b]<--w;)i.subTo(_,i)}null!=n&&(i.drShiftTo(p,n),c!=d&&t.ZERO.subTo(n,n)),i.t=p,i.clamp(),l>0&&i.rShiftTo(l,i),c<0&&t.ZERO.subTo(i,i)}}},t.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},t.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},t.prototype.exp=function(e,n){if(e>4294967295||e<1)return t.ONE;var i=r(),s=r(),o=n.convert(this),a=u(e)-1;for(o.copyTo(i);--a>=0;)if(n.sqrTo(i,s),(e&1<<a)>0)n.mulTo(s,o,i);else{var c=i;i=s,s=c}return n.revert(i)},t.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,n=(1<<t)-1,i=!1,s="",o=this.t,a=this.DB-o*this.DB%t;if(o-- >0)for(a<this.DB&&(r=this[o]>>a)>0&&(i=!0,s=c(r));o>=0;)a<t?(r=(this[o]&(1<<a)-1)<<t-a,r|=this[--o]>>(a+=this.DB-t)):(r=this[o]>>(a-=t)&n,a<=0&&(a+=this.DB,--o)),r>0&&(i=!0),i&&(s+=c(r));return i?s:"0"},t.prototype.negate=function(){var e=r();return t.ZERO.subTo(this,e),e},t.prototype.abs=function(){return this.s<0?this.negate():this},t.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},t.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+u(this[this.t-1]^this.s&this.DM)},t.prototype.mod=function(e){var n=r();return this.abs().divRemTo(e,null,n),this.s<0&&n.compareTo(t.ZERO)>0&&e.subTo(n,n),n},t.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new p(t):new h(t),this.exp(e,r)},t.ZERO=l(0),t.ONE=l(1),_.prototype.convert=w,_.prototype.revert=w,_.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},_.prototype.sqrTo=function(e,t){e.squareTo(t)},S.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=r();return e.copyTo(t),this.reduce(t),t},S.prototype.revert=function(e){return e},S.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},S.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},S.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var C,R,P,T=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],k=(1<<26)/T[T.length-1];function E(){var e;e=(new Date).getTime(),R[P++]^=255&e,R[P++]^=e>>8&255,R[P++]^=e>>16&255,R[P++]^=e>>24&255,P>=L&&(P-=L)}if(t.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},t.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),n=Math.pow(e,t),i=l(n),s=r(),o=r(),a="";for(this.divRemTo(i,s,o);s.signum()>0;)a=(n+o.intValue()).toString(e).substr(1)+a,s.divRemTo(i,s,o);return o.intValue().toString(e)+a},t.prototype.fromRadix=function(e,r){this.fromInt(0),null==r&&(r=10);for(var n=this.chunkSize(r),i=Math.pow(r,n),s=!1,o=0,a=0,c=0;c<e.length;++c){var l=d(e,c);l<0?"-"==e.charAt(c)&&0==this.signum()&&(s=!0):(a=r*a+l,++o>=n&&(this.dMultiply(i),this.dAddOffset(a,0),o=0,a=0))}o>0&&(this.dMultiply(Math.pow(r,o)),this.dAddOffset(a,0)),s&&t.ZERO.subTo(this,this)},t.prototype.fromNumber=function(e,r,n){if("number"==typeof r)if(e<2)this.fromInt(1);else for(this.fromNumber(e,n),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(r);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(t.ONE.shiftLeft(e-1),this);else{var i=new Array,s=7&e;i.length=1+(e>>3),r.nextBytes(i),s>0?i[0]&=(1<<s)-1:i[0]=0,this.fromString(i,256)}},t.prototype.bitwiseTo=function(e,t,r){var n,i,s=Math.min(e.t,this.t);for(n=0;n<s;++n)r[n]=t(this[n],e[n]);if(e.t<this.t){for(i=e.s&this.DM,n=s;n<this.t;++n)r[n]=t(this[n],i);r.t=this.t}else{for(i=this.s&this.DM,n=s;n<e.t;++n)r[n]=t(i,e[n]);r.t=e.t}r.s=t(this.s,e.s),r.clamp()},t.prototype.changeBit=function(e,r){var n=t.ONE.shiftLeft(e);return this.bitwiseTo(n,r,n),n},t.prototype.addTo=function(e,t){for(var r=0,n=0,i=Math.min(e.t,this.t);r<i;)n+=this[r]+e[r],t[r++]=n&this.DM,n>>=this.DB;if(e.t<this.t){for(n+=e.s;r<this.t;)n+=this[r],t[r++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;r<e.t;)n+=e[r],t[r++]=n&this.DM,n>>=this.DB;n+=e.s}t.s=n<0?-1:0,n>0?t[r++]=n:n<-1&&(t[r++]=this.DV+n),t.t=r,t.clamp()},t.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},t.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},t.prototype.multiplyLowerTo=function(e,t,r){var n,i=Math.min(this.t+e.t,t);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i<n;++i)r[i+this.t]=this.am(0,e[i],r,i,0,this.t);for(n=Math.min(e.t,t);i<n;++i)this.am(0,e[i],r,i,0,t-i);r.clamp()},t.prototype.multiplyUpperTo=function(e,t,r){--t;var n=r.t=this.t+e.t-t;for(r.s=0;--n>=0;)r[n]=0;for(n=Math.max(t-this.t,0);n<e.t;++n)r[this.t+n-t]=this.am(t-n,e[n],r,0,0,this.t+n-t);r.clamp(),r.drShiftTo(1,r)},t.prototype.modInt=function(e){if(e<=0)return 0;var t=this.DV%e,r=this.s<0?e-1:0;if(this.t>0)if(0==t)r=this[0]%e;else for(var n=this.t-1;n>=0;--n)r=(t*r+this[n])%e;return r},t.prototype.millerRabin=function(e){var n=this.subtract(t.ONE),i=n.getLowestSetBit();if(i<=0)return!1;var s=n.shiftRight(i);(e=e+1>>1)>T.length&&(e=T.length);for(var o=r(),a=0;a<e;++a){o.fromInt(T[Math.floor(Math.random()*T.length)]);var c=o.modPow(s,this);if(0!=c.compareTo(t.ONE)&&0!=c.compareTo(n)){for(var d=1;d++<i&&0!=c.compareTo(n);)if(0==(c=c.modPowInt(2,this)).compareTo(t.ONE))return!1;if(0!=c.compareTo(n))return!1}}return!0},t.prototype.clone=function(){var e=r();return this.copyTo(e),e},t.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},t.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},t.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},t.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},t.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,n=this.DB-e*this.DB%8,i=0;if(e-- >0)for(n<this.DB&&(r=this[e]>>n)!=(this.s&this.DM)>>n&&(t[i++]=r|this.s<<this.DB-n);e>=0;)n<8?(r=(this[e]&(1<<n)-1)<<8-n,r|=this[--e]>>(n+=this.DB-8)):(r=this[e]>>(n-=8)&255,n<=0&&(n+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==i&&(128&this.s)!=(128&r)&&++i,(i>0||r!=this.s)&&(t[i++]=r);return t},t.prototype.equals=function(e){return 0==this.compareTo(e)},t.prototype.min=function(e){return this.compareTo(e)<0?this:e},t.prototype.max=function(e){return this.compareTo(e)>0?this:e},t.prototype.and=function(e){var t=r();return this.bitwiseTo(e,f,t),t},t.prototype.or=function(e){var t=r();return this.bitwiseTo(e,m,t),t},t.prototype.xor=function(e){var t=r();return this.bitwiseTo(e,g,t),t},t.prototype.andNot=function(e){var t=r();return this.bitwiseTo(e,v,t),t},t.prototype.not=function(){for(var e=r(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e},t.prototype.shiftLeft=function(e){var t=r();return e<0?this.rShiftTo(-e,t):this.lShiftTo(e,t),t},t.prototype.shiftRight=function(e){var t=r();return e<0?this.lShiftTo(-e,t):this.rShiftTo(e,t),t},t.prototype.getLowestSetBit=function(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+b(this[e]);return this.s<0?this.t*this.DB:-1},t.prototype.bitCount=function(){for(var e=0,t=this.s&this.DM,r=0;r<this.t;++r)e+=y(this[r]^t);return e},t.prototype.testBit=function(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)},t.prototype.setBit=function(e){return this.changeBit(e,m)},t.prototype.clearBit=function(e){return this.changeBit(e,v)},t.prototype.flipBit=function(e){return this.changeBit(e,g)},t.prototype.add=function(e){var t=r();return this.addTo(e,t),t},t.prototype.subtract=function(e){var t=r();return this.subTo(e,t),t},t.prototype.multiply=function(e){var t=r();return this.multiplyTo(e,t),t},t.prototype.divide=function(e){var t=r();return this.divRemTo(e,t,null),t},t.prototype.remainder=function(e){var t=r();return this.divRemTo(e,null,t),t},t.prototype.divideAndRemainder=function(e){var t=r(),n=r();return this.divRemTo(e,t,n),new Array(t,n)},t.prototype.modPow=function(e,t){var n,i,s=e.bitLength(),o=l(1);if(s<=0)return o;n=s<18?1:s<48?3:s<144?4:s<768?5:6,i=s<8?new p(t):t.isEven()?new S(t):new h(t);var a=new Array,c=3,d=n-1,f=(1<<n)-1;if(a[1]=i.convert(this),n>1){var m=r();for(i.sqrTo(a[1],m);c<=f;)a[c]=r(),i.mulTo(m,a[c-2],a[c]),c+=2}var g,v,b=e.t-1,y=!0,_=r();for(s=u(e[b])-1;b>=0;){for(s>=d?g=e[b]>>s-d&f:(g=(e[b]&(1<<s+1)-1)<<d-s,b>0&&(g|=e[b-1]>>this.DB+s-d)),c=n;0==(1&g);)g>>=1,--c;if((s-=c)<0&&(s+=this.DB,--b),y)a[g].copyTo(o),y=!1;else{for(;c>1;)i.sqrTo(o,_),i.sqrTo(_,o),c-=2;c>0?i.sqrTo(o,_):(v=o,o=_,_=v),i.mulTo(_,a[g],o)}for(;b>=0&&0==(e[b]&1<<s);)i.sqrTo(o,_),v=o,o=_,_=v,--s<0&&(s=this.DB-1,--b)}return i.revert(o)},t.prototype.modInverse=function(e){var r=e.isEven();if(this.isEven()&&r||0==e.signum())return t.ZERO;for(var n=e.clone(),i=this.clone(),s=l(1),o=l(0),a=l(0),c=l(1);0!=n.signum();){for(;n.isEven();)n.rShiftTo(1,n),r?(s.isEven()&&o.isEven()||(s.addTo(this,s),o.subTo(e,o)),s.rShiftTo(1,s)):o.isEven()||o.subTo(e,o),o.rShiftTo(1,o);for(;i.isEven();)i.rShiftTo(1,i),r?(a.isEven()&&c.isEven()||(a.addTo(this,a),c.subTo(e,c)),a.rShiftTo(1,a)):c.isEven()||c.subTo(e,c),c.rShiftTo(1,c);n.compareTo(i)>=0?(n.subTo(i,n),r&&s.subTo(a,s),o.subTo(c,o)):(i.subTo(n,i),r&&a.subTo(s,a),c.subTo(o,c))}return 0!=i.compareTo(t.ONE)?t.ZERO:c.compareTo(e)>=0?c.subtract(e):c.signum()<0?(c.addTo(e,c),c.signum()<0?c.add(e):c):c},t.prototype.pow=function(e){return this.exp(e,new _)},t.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var n=t;t=r,r=n}var i=t.getLowestSetBit(),s=r.getLowestSetBit();if(s<0)return t;for(i<s&&(s=i),s>0&&(t.rShiftTo(s,t),r.rShiftTo(s,r));t.signum()>0;)(i=t.getLowestSetBit())>0&&t.rShiftTo(i,t),(i=r.getLowestSetBit())>0&&r.rShiftTo(i,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return s>0&&r.lShiftTo(s,r),r},t.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=T[T.length-1]){for(t=0;t<T.length;++t)if(r[0]==T[t])return!0;return!1}if(r.isEven())return!1;for(t=1;t<T.length;){for(var n=T[t],i=t+1;i<T.length&&n<k;)n*=T[i++];for(n=r.modInt(n);t<i;)if(n%T[t++]==0)return!1}return r.millerRabin(e)},t.prototype.square=function(){var e=r();return this.squareTo(e),e},t.prototype.Barrett=S,null==R){var O;if(R=new Array,P=0,"undefined"!=typeof window&&window.crypto)if(window.crypto.getRandomValues){var D=new Uint8Array(32);for(window.crypto.getRandomValues(D),O=0;O<32;++O)R[P++]=D[O]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var I=window.crypto.random(32);for(O=0;O<I.length;++O)R[P++]=255&I.charCodeAt(O)}for(;P<L;)O=Math.floor(65536*Math.random()),R[P++]=O>>>8,R[P++]=255&O;P=0,E()}function x(){if(null==C){for(E(),(C=new j).init(R),P=0;P<R.length;++P)R[P]=0;P=0}return C.next()}function M(){}function j(){this.i=0,this.j=0,this.S=new Array}M.prototype.nextBytes=function(e){var t;for(t=0;t<e.length;++t)e[t]=x()},j.prototype.init=function(e){var t,r,n;for(t=0;t<256;++t)this.S[t]=t;for(r=0,t=0;t<256;++t)r=r+this.S[t]+e[t%e.length]&255,n=this.S[t],this.S[t]=this.S[r],this.S[r]=n;this.i=0,this.j=0},j.prototype.next=function(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]};var L=256;Pl.exports={default:t,BigInteger:t,SecureRandom:M}}.call(a);var kl=Tl.exports,El={};!function(e){!function(){var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function r(e){return function(e,n){var i,s,o,a,c,d,l,u,p,h=1,f=e.length,m="";for(s=0;s<f;s++)if("string"==typeof e[s])m+=e[s];else if("object"==typeof e[s]){if((a=e[s]).keys)for(i=n[h],o=0;o<a.keys.length;o++){if(null==i)throw new Error(r('[sprintf] Cannot access property "%s" of undefined value "%s"',a.keys[o],a.keys[o-1]));i=i[a.keys[o]]}else i=a.param_no?n[a.param_no]:n[h++];if(t.not_type.test(a.type)&&t.not_primitive.test(a.type)&&i instanceof Function&&(i=i()),t.numeric_arg.test(a.type)&&"number"!=typeof i&&isNaN(i))throw new TypeError(r("[sprintf] expecting number but found %T",i));switch(t.number.test(a.type)&&(u=i>=0),a.type){case"b":i=parseInt(i,10).toString(2);break;case"c":i=String.fromCharCode(parseInt(i,10));break;case"d":case"i":i=parseInt(i,10);break;case"j":i=JSON.stringify(i,null,a.width?parseInt(a.width):0);break;case"e":i=a.precision?parseFloat(i).toExponential(a.precision):parseFloat(i).toExponential();break;case"f":i=a.precision?parseFloat(i).toFixed(a.precision):parseFloat(i);break;case"g":i=a.precision?String(Number(i.toPrecision(a.precision))):parseFloat(i);break;case"o":i=(parseInt(i,10)>>>0).toString(8);break;case"s":i=String(i),i=a.precision?i.substring(0,a.precision):i;break;case"t":i=String(!!i),i=a.precision?i.substring(0,a.precision):i;break;case"T":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=a.precision?i.substring(0,a.precision):i;break;case"u":i=parseInt(i,10)>>>0;break;case"v":i=i.valueOf(),i=a.precision?i.substring(0,a.precision):i;break;case"x":i=(parseInt(i,10)>>>0).toString(16);break;case"X":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}t.json.test(a.type)?m+=i:(!t.number.test(a.type)||u&&!a.sign?p="":(p=u?"+":"-",i=i.toString().replace(t.sign,"")),d=a.pad_char?"0"===a.pad_char?"0":a.pad_char.charAt(1):" ",l=a.width-(p+i).length,c=a.width&&l>0?d.repeat(l):"",m+=a.align?p+i+c:"0"===d?p+c+i:c+p+i)}return m}(function(e){if(i[e])return i[e];var r,n=e,s=[],o=0;for(;n;){if(null!==(r=t.text.exec(n)))s.push(r[0]);else if(null!==(r=t.modulo.exec(n)))s.push("%");else{if(null===(r=t.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(r[2]){o|=1;var a=[],c=r[2],d=[];if(null===(d=t.key.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(a.push(d[1]);""!==(c=c.substring(d[0].length));)if(null!==(d=t.key_access.exec(c)))a.push(d[1]);else{if(null===(d=t.index_access.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");a.push(d[1])}r[2]=a}else o|=2;if(3===o)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");s.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}n=n.substring(r[0].length)}return i[e]=s}(e),arguments)}function n(e,t){return r.apply(null,[e].concat(t||[]))}var i=Object.create(null);e.sprintf=r,e.vsprintf=n,"undefined"!=typeof window&&(window.sprintf=r,window.vsprintf=n)}()}(El);var Ol=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Dl=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Il=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ol(t,e,r);return Dl(t,e),t};Object.defineProperty(_l,"__esModule",{value:!0}),_l.Address4=void 0;const xl=Il(wl),Ml=Il(Sl),jl=Cl,Ll=kl,Al=El;class Nl{constructor(e){this.groups=Ml.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=xl.isCorrect(Ml.BITS),this.isInSubnet=xl.isInSubnet,this.address=e;const t=Ml.RE_SUBNET_STRING.exec(e);if(t){if(this.parsedSubnet=t[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,this.subnetMask<0||this.subnetMask>Ml.BITS)throw new jl.AddressError("Invalid subnet mask.");e=e.replace(Ml.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new Nl(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(Ml.RE_ADDRESS))throw new jl.AddressError("Invalid IPv4 address.");return t}correctForm(){return this.parsedAddress.map((e=>parseInt(e,10))).join(".")}static fromHex(e){const t=e.replace(/:/g,"").padStart(8,"0"),r=[];let n;for(n=0;n<8;n+=2){const e=t.slice(n,n+2);r.push(parseInt(e,16))}return new Nl(r.join("."))}static fromInteger(e){return Nl.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new Nl(t)}toHex(){return this.parsedAddress.map((e=>(0,Al.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<Ml.GROUPS;t+=2){const r=(0,Al.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,Al.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new Ll.BigInteger(this.parsedAddress.map((e=>(0,Al.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new Ll.BigInteger(this.mask()+"0".repeat(Ml.BITS-this.subnetMask),2)}startAddress(){return Nl.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Ll.BigInteger("1");return Nl.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Ll.BigInteger(this.mask()+"1".repeat(Ml.BITS-this.subnetMask),2)}endAddress(){return Nl.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Ll.BigInteger("1");return Nl.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return Nl.fromInteger(parseInt(e.toString(),10))}mask(e){return void 0===e&&(e=this.subnetMask),this.getBitsBase2(0,e)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}reverseForm(e){e||(e={});const t=this.correctForm().split(".").reverse().join(".");return e.omitSuffix?t:(0,Al.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new Nl("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(Ml.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(Ml.RE_ADDRESS,(0,Al.sprintf)('<span class="hover-group group-v4 group-6">%s</span>.<span class="hover-group group-v4 group-7">%s</span>',e.slice(0,2).join("."),e.slice(2,4).join(".")))}}_l.Address4=Nl;var Bl={},Fl={};Object.defineProperty(Fl,"__esModule",{value:!0}),Fl.RE_URL_WITH_PORT=Fl.RE_URL=Fl.RE_ZONE_STRING=Fl.RE_SUBNET_STRING=Fl.RE_BAD_ADDRESS=Fl.RE_BAD_CHARACTERS=Fl.TYPES=Fl.SCOPES=Fl.GROUPS=Fl.BITS=void 0,Fl.BITS=128,Fl.GROUPS=8,Fl.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},Fl.TYPES={"ff01::1/128":"Multicast (All nodes on this interface)","ff01::2/128":"Multicast (All routers on this interface)","ff02::1/128":"Multicast (All nodes on this link)","ff02::2/128":"Multicast (All routers on this link)","ff05::2/128":"Multicast (All routers in this site)","ff02::5/128":"Multicast (OSPFv3 AllSPF routers)","ff02::6/128":"Multicast (OSPFv3 AllDR routers)","ff02::9/128":"Multicast (RIP routers)","ff02::a/128":"Multicast (EIGRP routers)","ff02::d/128":"Multicast (PIM routers)","ff02::16/128":"Multicast (MLDv2 reports)","ff01::fb/128":"Multicast (mDNSv6)","ff02::fb/128":"Multicast (mDNSv6)","ff05::fb/128":"Multicast (mDNSv6)","ff02::1:2/128":"Multicast (All DHCP servers and relay agents on this link)","ff05::1:2/128":"Multicast (All DHCP servers and relay agents in this site)","ff02::1:3/128":"Multicast (All DHCP servers on this link)","ff05::1:3/128":"Multicast (All DHCP servers in this site)","::/128":"Unspecified","::1/128":"Loopback","ff00::/8":"Multicast","fe80::/10":"Link-local unicast"},Fl.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,Fl.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,Fl.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,Fl.RE_ZONE_STRING=/%.*$/,Fl.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),Fl.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var zl={};Object.defineProperty(zl,"__esModule",{value:!0}),zl.simpleGroup=zl.spanLeadingZeroes=zl.spanAll=zl.spanAllZeroes=void 0;const Ul=El;function $l(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function Vl(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}zl.spanAllZeroes=$l,zl.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,Ul.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,$l(e)))).join("")},zl.spanLeadingZeroes=function(e){return e.split(":").map((e=>Vl(e))).join(":")},zl.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,Ul.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,Vl(e))))};var Gl={},ql=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Hl=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Wl=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ql(t,e,r);return Hl(t,e),t};Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.possibleElisions=Gl.simpleRegularExpression=Gl.ADDRESS_BOUNDARY=Gl.padGroup=Gl.groupPossibilities=void 0;const Kl=Wl(Fl),Jl=El;function Ql(e){return(0,Jl.sprintf)("(%s)",e.join("|"))}function Yl(e){return e.length<4?(0,Jl.sprintf)("0{0,%d}%s",4-e.length,e):e}Gl.groupPossibilities=Ql,Gl.padGroup=Yl,Gl.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",Gl.simpleRegularExpression=function(e){const t=[];e.forEach(((e,r)=>{0===parseInt(e,16)&&t.push(r)}));const r=t.map((t=>e.map(((e,r)=>{if(r===t){const t=0===r||r===Kl.GROUPS-1?":":"";return Ql([Yl(e),t])}return Yl(e)})).join(":")));return r.push(e.map(Yl).join(":")),Ql(r)},Gl.possibleElisions=function(e,t,r){const n=t?"":":",i=r?"":":",s=[];t||r||s.push("::"),t&&r&&s.push(""),(r&&!t||!r&&t)&&s.push(":"),s.push((0,Jl.sprintf)("%s(:0{1,4}){1,%d}",n,e-1)),s.push((0,Jl.sprintf)("(0{1,4}:){1,%d}%s",e-1,i)),s.push((0,Jl.sprintf)("(0{1,4}:){%d}0{1,4}",e-1));for(let t=1;t<e-1;t++)for(let r=1;r<e-t;r++)s.push((0,Jl.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return Ql(s)};var Zl=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Xl=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),eu=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Zl(t,e,r);return Xl(t,e),t};Object.defineProperty(Bl,"__esModule",{value:!0}),Bl.Address6=void 0;const tu=eu(wl),ru=eu(Sl),nu=eu(Fl),iu=eu(zl),su=_l,ou=Gl,au=Cl,cu=kl,du=El;function lu(e){if(!e)throw new Error("Assertion failed.")}function uu(e){return e=(e=e.replace(/^(0{1,})([1-9]+)$/,'<span class="parse-error">$1</span>$2')).replace(/^(0{1,})(0)$/,'<span class="parse-error">$1</span>$2')}function pu(e){return(0,du.sprintf)("%04x",parseInt(e,16))}function hu(e){return 255&e}class fu{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=tu.isInSubnet,this.isCorrect=tu.isCorrect(nu.BITS),this.groups=void 0===t?nu.GROUPS:t,this.address=e;const r=nu.RE_SUBNET_STRING.exec(e);if(r){if(this.parsedSubnet=r[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,Number.isNaN(this.subnetMask)||this.subnetMask<0||this.subnetMask>nu.BITS)throw new au.AddressError("Invalid subnet mask.");e=e.replace(nu.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new au.AddressError("Invalid subnet mask.");const n=nu.RE_ZONE_STRING.exec(e);n&&(this.zone=n[0],e=e.replace(nu.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new fu(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let n;for(n=0;n<nu.GROUPS;n++)r.push(t.slice(4*n,4*(n+1)));return new fu(r.join(":"))}static fromURL(e){let t,r,n=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=nu.RE_URL_WITH_PORT.exec(e),null===r)return{error:"failed to parse address with port",address:null,port:null};t=r[1],n=r[2]}else if(-1!==e.indexOf("/")){if(e=e.replace(/^[a-z0-9]+:\/\//,""),r=nu.RE_URL.exec(e),null===r)return{error:"failed to parse address from URL",address:null,port:null};t=r[1]}else t=e;return n?(n=parseInt(n,10),(n<0||n>65536)&&(n=null)):n=null,{address:new fu(t),port:n}}static fromAddress4(e){const t=new su.Address4(e),r=nu.BITS-(ru.BITS-t.subnetMask);return new fu(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new au.AddressError("Invalid 'ip6.arpa' form.");const r=t.split(".").reverse();for(let e=7;e>0;e--){const t=4*e;r.splice(t,0,":")}return t=r.join(""),new fu(t)}microsoftTranscription(){return(0,du.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=nu.BITS-this.subnetMask-Math.abs(e-nu.BITS);return t<0?"0":function(e){const t=/(\d+)(\d{3})/;for(;t.test(e);)e=e.replace(t,"$1,$2");return e}(new cu.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new cu.BigInteger(this.mask()+"0".repeat(nu.BITS-this.subnetMask),2)}startAddress(){return fu.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new cu.BigInteger("1");return fu.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new cu.BigInteger(this.mask()+"1".repeat(nu.BITS-this.subnetMask),2)}endAddress(){return fu.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new cu.BigInteger("1");return fu.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=nu.SCOPES[this.getBits(12,16).intValue()];return"Global unicast"===this.getType()&&"Link local"!==e&&(e="Global"),e||"Unknown"}getType(){for(const e of Object.keys(nu.TYPES))if(this.isInSubnet(new fu(e)))return nu.TYPES[e];return"Global unicast"}getBits(e,t){return new cu.BigInteger(this.getBitsBase2(e,t),2)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}getBitsBase16(e,t){const r=t-e;if(r%4!=0)throw new Error("Length of bits to retrieve must be divisible by four");return this.getBits(e,t).toString(16).padStart(r/4,"0")}getBitsPastSubnet(){return this.getBitsBase2(this.subnetMask,nu.BITS)}reverseForm(e){e||(e={});const t=Math.floor(this.subnetMask/4),r=this.canonicalForm().replace(/:/g,"").split("").slice(0,t).reverse().join(".");return t>0?e.omitSuffix?r:(0,du.sprintf)("%s.ip6.arpa.",r):e.omitSuffix?"":"ip6.arpa."}correctForm(){let e,t=[],r=0;const n=[];for(e=0;e<this.parsedAddress.length;e++){const t=parseInt(this.parsedAddress[e],16);0===t&&r++,0!==t&&r>0&&(r>1&&n.push([e-r,e-1]),r=0)}r>1&&n.push([this.parsedAddress.length-r,this.parsedAddress.length-1]);const i=n.map((e=>e[1]-e[0]+1));if(n.length>0){const e=i.indexOf(Math.max(...i));t=function(e,t){const r=[],n=[];let i;for(i=0;i<e.length;i++)i<t[0]?r.push(e[i]):i>t[1]&&n.push(e[i]);return r.concat(["compact"]).concat(n)}(this.parsedAddress,n[e])}else t=this.parsedAddress;for(e=0;e<t.length;e++)"compact"!==t[e]&&(t[e]=parseInt(t[e],16).toString(16));let s=t.join(":");return s=s.replace(/^compact$/,"::"),s=s.replace(/^compact|compact$/,":"),s=s.replace(/compact/,""),s}binaryZeroPad(){return this.bigInteger().toString(2).padStart(nu.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match(ru.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new su.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new au.AddressError("IPv4 addresses can't have leading zeroes.",e.replace(ru.RE_ADDRESS,this.address4.parsedAddress.map(uu).join(".")));this.v4=!0,t[t.length-1]=this.address4.toGroup6(),e=t.join(":")}return e}parse(e){const t=(e=this.parse4in6(e)).match(nu.RE_BAD_CHARACTERS);if(t)throw new au.AddressError((0,du.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(nu.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(nu.RE_BAD_ADDRESS);if(r)throw new au.AddressError((0,du.sprintf)("Address failed regex: %s",r.join("")),e.replace(nu.RE_BAD_ADDRESS,'<span class="parse-error">$1</span>'));let n=[];const i=e.split("::");if(2===i.length){let e=i[0].split(":"),t=i[1].split(":");1===e.length&&""===e[0]&&(e=[]),1===t.length&&""===t[0]&&(t=[]);const r=this.groups-(e.length+t.length);if(!r)throw new au.AddressError("Error parsing groups");this.elidedGroups=r,this.elisionBegin=e.length,this.elisionEnd=e.length+this.elidedGroups,n=n.concat(e);for(let e=0;e<r;e++)n.push("0");n=n.concat(t)}else{if(1!==i.length)throw new au.AddressError("Too many :: groups found");n=e.split(":"),this.elidedGroups=0}if(n=n.map((e=>(0,du.sprintf)("%x",parseInt(e,16)))),n.length!==this.groups)throw new au.AddressError("Incorrect number of groups found");return n}canonicalForm(){return this.parsedAddress.map(pu).join(":")}decimal(){return this.parsedAddress.map((e=>(0,du.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new cu.BigInteger(this.parsedAddress.map(pu).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return su.Address4.fromHex(new cu.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new fu(this.parsedAddress.slice(0,6).join(":"),6).correctForm();let r="";return/:$/.test(t)||(r=":"),t+r+e.address}inspectTeredo(){const e=this.getBitsBase16(0,32),t=this.getBits(80,96).xor(new cu.BigInteger("ffff",16)).toString(),r=su.Address4.fromHex(this.getBitsBase16(32,64)),n=su.Address4.fromHex(this.getBits(96,128).xor(new cu.BigInteger("ffffffff",16)).toString(16)),i=this.getBits(64,80),s=this.getBitsBase2(64,80),o=i.testBit(15),a=i.testBit(14),c=i.testBit(8),d=i.testBit(9),l=new cu.BigInteger(s.slice(2,6)+s.slice(8,16),2).toString(10);return{prefix:(0,du.sprintf)("%s:%s",e.slice(0,4),e.slice(4,8)),server4:r.address,client4:n.address,flags:s,coneNat:o,microsoft:{reserved:a,universalLocal:d,groupIndividual:c,nonce:l},udpPort:t}}inspect6to4(){const e=this.getBitsBase16(0,16),t=su.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,du.sprintf)("%s",e.slice(0,4)),gateway:t.address}}to6to4(){if(!this.is4())return null;const e=["2002",this.getBitsBase16(96,112),this.getBitsBase16(112,128),"","/16"].join(":");return new fu(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map(hu)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map(hu))}static fromUnsignedByteArray(e){const t=new cu.BigInteger("256",10);let r=new cu.BigInteger("0",10),n=new cu.BigInteger("1",10);for(let i=e.length-1;i>=0;i--)r=r.add(n.multiply(new cu.BigInteger(e[i].toString(10),10))),n=n.multiply(t);return fu.fromBigInteger(r)}isCanonical(){return this.addressMinusSuffix===this.canonicalForm()}isLinkLocal(){return"1111111010000000000000000000000000000000000000000000000000000000"===this.getBitsBase2(0,64)}isMulticast(){return"Multicast"===this.getType()}is4(){return this.v4}isTeredo(){return this.isInSubnet(new fu("2001::/32"))}is6to4(){return this.isInSubnet(new fu("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,du.sprintf)(":%s",e),(0,du.sprintf)("http://[%s]%s/",this.correctForm(),e)}link(e){e||(e={}),void 0===e.className&&(e.className=""),void 0===e.prefix&&(e.prefix="/#address="),void 0===e.v4&&(e.v4=!1);let t=this.correctForm;return e.v4&&(t=this.to4in6),e.className?(0,du.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,du.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return iu.simpleGroup(this.address).join(":");lu("number"==typeof this.elidedGroups),lu("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...iu.simpleGroup(t)):e.push("");const n=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)n.push((0,du.sprintf)("group-%d",e));return e.push((0,du.sprintf)('<span class="%s"></span>',n.join(" "))),r.length?e.push(...iu.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(lu(this.address4 instanceof su.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new fu(this.correctForm());if(0===r.elidedGroups)t.push((0,ou.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===nu.GROUPS)t.push((0,ou.possibleElisions)(nu.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,ou.simpleRegularExpression)(e[0].split(":"))),lu("number"==typeof r.elidedGroups),t.push((0,ou.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,ou.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",ou.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",ou.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}Bl.Address6=fu,function(e){var t=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),r=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&t(n,e,i);return r(n,e),n};Object.defineProperty(e,"__esModule",{value:!0}),e.v6=e.AddressError=e.Address6=e.Address4=void 0;const i=_l;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return i.Address4}});const s=Bl;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return s.Address6}});const o=Cl;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return o.AddressError}});const c=n(zl);e.v6={helpers:c}}(yl);var mu={exports:{}};!function(e){(function(){var t,r,n,i,s,o,a,c;r={},null!==e&&e.exports?e.exports=r:this.ipaddr=r,a=function(e,t,r,n){var i,s;if(e.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(i=0;n>0;){if((s=r-n)<0&&(s=0),e[i]>>s!=t[i]>>s)return!1;n-=r,i+=1}return!0},r.subnetMatch=function(e,t,r){var n,i,s,o,a;for(s in null==r&&(r="unicast"),t)for(!(o=t[s])[0]||o[0]instanceof Array||(o=[o]),n=0,i=o.length;n<i;n++)if(a=o[n],e.kind()===a[0].kind()&&e.match.apply(e,a))return s;return r},r.IPv4=function(){function e(e){var t,r,n;if(4!==e.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(t=0,r=e.length;t<r;t++)if(!(0<=(n=e[t])&&n<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=e}return e.prototype.kind=function(){return"ipv4"},e.prototype.toString=function(){return this.octets.join(".")},e.prototype.toNormalizedString=function(){return this.toString()},e.prototype.toByteArray=function(){return this.octets.slice(0)},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv4"!==e.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return a(this.octets,e.octets,8,t)},e.prototype.SpecialRanges={unspecified:[[new e([0,0,0,0]),8]],broadcast:[[new e([255,255,255,255]),32]],multicast:[[new e([224,0,0,0]),4]],linkLocal:[[new e([169,254,0,0]),16]],loopback:[[new e([127,0,0,0]),8]],carrierGradeNat:[[new e([100,64,0,0]),10]],private:[[new e([10,0,0,0]),8],[new e([172,16,0,0]),12],[new e([192,168,0,0]),16]],reserved:[[new e([192,0,0,0]),24],[new e([192,0,2,0]),24],[new e([192,88,99,0]),24],[new e([198,51,100,0]),24],[new e([203,0,113,0]),24],[new e([240,0,0,0]),4]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.toIPv4MappedAddress=function(){return r.IPv6.parse("::ffff:"+this.toString())},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,n,i,s,o;for(o={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},e=0,i=!1,t=r=3;r>=0;t=r+=-1){if(!((n=this.octets[t])in o))return null;if(s=o[n],i&&0!==s)return null;8!==s&&(i=!0),e+=s}return 32-e},e}(),n="(0?\\d+|0x[a-f0-9]+)",i={fourOctet:new RegExp("^"+n+"\\."+n+"\\."+n+"\\."+n+"$","i"),longValue:new RegExp("^"+n+"$","i")},r.IPv4.parser=function(e){var t,r,n,s,o;if(r=function(e){return"0"===e[0]&&"x"!==e[1]?parseInt(e,8):parseInt(e)},t=e.match(i.fourOctet))return function(){var e,i,s,o;for(o=[],e=0,i=(s=t.slice(1,6)).length;e<i;e++)n=s[e],o.push(r(n));return o}();if(t=e.match(i.longValue)){if((o=r(t[1]))>4294967295||o<0)throw new Error("ipaddr: address outside defined range");return function(){var e,t;for(t=[],s=e=0;e<=24;s=e+=8)t.push(o>>s&255);return t}().reverse()}return null},r.IPv6=function(){function e(e,t){var r,n,i,s,o,a;if(16===e.length)for(this.parts=[],r=n=0;n<=14;r=n+=2)this.parts.push(e[r]<<8|e[r+1]);else{if(8!==e.length)throw new Error("ipaddr: ipv6 part count should be 8 or 16");this.parts=e}for(i=0,s=(a=this.parts).length;i<s;i++)if(!(0<=(o=a[i])&&o<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");t&&(this.zoneId=t)}return e.prototype.kind=function(){return"ipv6"},e.prototype.toString=function(){return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/,"::")},e.prototype.toRFC5952String=function(){var e,t,r,n,i;for(n=/((^|:)(0(:|$)){2,})/g,i=this.toNormalizedString(),e=0,t=-1;r=n.exec(i);)r[0].length>t&&(e=r.index,t=r[0].length);return t<0?i:i.substring(0,e)+"::"+i.substring(e+t)},e.prototype.toByteArray=function(){var e,t,r,n,i;for(e=[],t=0,r=(i=this.parts).length;t<r;t++)n=i[t],e.push(n>>8),e.push(255&n);return e},e.prototype.toNormalizedString=function(){var e,t,r;return e=function(){var e,r,n,i;for(i=[],e=0,r=(n=this.parts).length;e<r;e++)t=n[e],i.push(t.toString(16));return i}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.toFixedLengthString=function(){var e,t,r;return e=function(){var e,r,n,i;for(i=[],e=0,r=(n=this.parts).length;e<r;e++)t=n[e],i.push(t.toString(16).padStart(4,"0"));return i}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv6"!==e.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return a(this.parts,e.parts,16,t)},e.prototype.SpecialRanges={unspecified:[new e([0,0,0,0,0,0,0,0]),128],linkLocal:[new e([65152,0,0,0,0,0,0,0]),10],multicast:[new e([65280,0,0,0,0,0,0,0]),8],loopback:[new e([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new e([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new e([0,0,0,0,0,65535,0,0]),96],rfc6145:[new e([0,0,0,0,65535,0,0,0]),96],rfc6052:[new e([100,65435,0,0,0,0,0,0]),96],"6to4":[new e([8194,0,0,0,0,0,0,0]),16],teredo:[new e([8193,0,0,0,0,0,0,0]),32],reserved:[[new e([8193,3512,0,0,0,0,0,0]),32]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},e.prototype.toIPv4Address=function(){var e,t,n;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=(n=this.parts.slice(-2))[0],t=n[1],new r.IPv4([e>>8,255&e,t>>8,255&t])},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,n,i,s,o;for(o={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},e=0,i=!1,t=r=7;r>=0;t=r+=-1){if(!((n=this.parts[t])in o))return null;if(s=o[n],i&&0!==s)return null;16!==s&&(i=!0),e+=s}return 128-e},e}(),s="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",o={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+s+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+s+")|(?:::)(?:"+s+")?)"+n+"\\."+n+"\\."+n+"\\."+n+"("+c+")?$","i")},t=function(e,t){var r,n,i,s,a,c;if(e.indexOf("::")!==e.lastIndexOf("::"))return null;for((c=(e.match(o.zoneIndex)||[])[0])&&(c=c.substring(1),e=e.replace(/%.+$/,"")),r=0,n=-1;(n=e.indexOf(":",n+1))>=0;)r++;if("::"===e.substr(0,2)&&r--,"::"===e.substr(-2,2)&&r--,r>t)return null;for(a=t-r,s=":";a--;)s+="0:";return":"===(e=e.replace("::",s))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),{parts:t=function(){var t,r,n,s;for(s=[],t=0,r=(n=e.split(":")).length;t<r;t++)i=n[t],s.push(parseInt(i,16));return s}(),zoneId:c}},r.IPv6.parser=function(e){var r,n,i,s,a,c,d;if(o.native.test(e))return t(e,8);if((s=e.match(o.transitional))&&(d=s[6]||"",(r=t(s[1].slice(0,-1)+d,6)).parts)){for(n=0,i=(c=[parseInt(s[2]),parseInt(s[3]),parseInt(s[4]),parseInt(s[5])]).length;n<i;n++)if(!(0<=(a=c[n])&&a<=255))return null;return r.parts.push(c[0]<<8|c[1]),r.parts.push(c[2]<<8|c[3]),{parts:r.parts,zoneId:r.zoneId}}return null},r.IPv4.isIPv4=r.IPv6.isIPv6=function(e){return null!==this.parser(e)},r.IPv4.isValid=function(e){try{return new this(this.parser(e)),!0}catch(e){return!1}},r.IPv4.isValidFourPartDecimal=function(e){return!(!r.IPv4.isValid(e)||!e.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},r.IPv6.isValid=function(e){var t;if("string"==typeof e&&-1===e.indexOf(":"))return!1;try{return new this((t=this.parser(e)).parts,t.zoneId),!0}catch(e){return!1}},r.IPv4.parse=function(e){var t;if(null===(t=this.parser(e)))throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},r.IPv6.parse=function(e){var t;if(null===(t=this.parser(e)).parts)throw new Error("ipaddr: string is not formatted like ip address");return new this(t.parts,t.zoneId)},r.IPv4.parseCIDR=function(e){var t,r,n;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=32)return n=[this.parse(r[1]),t],Object.defineProperty(n,"toString",{value:function(){return this.join("/")}}),n;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},r.IPv4.subnetMaskFromPrefixLength=function(e){var t,r,n;if((e=parseInt(e))<0||e>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(n=[0,0,0,0],r=0,t=Math.floor(e/8);r<t;)n[r]=255,r++;return t<4&&(n[t]=Math.pow(2,e%8)-1<<8-e%8),new this(n)},r.IPv4.broadcastAddressFromCIDR=function(e){var t,r,n,i,s;try{for(n=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),i=[],r=0;r<4;)i.push(parseInt(n[r],10)|255^parseInt(s[r],10)),r++;return new this(i)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv4.networkAddressFromCIDR=function(e){var t,r,n,i,s;try{for(n=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),i=[],r=0;r<4;)i.push(parseInt(n[r],10)&parseInt(s[r],10)),r++;return new this(i)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv6.parseCIDR=function(e){var t,r,n;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=128)return n=[this.parse(r[1]),t],Object.defineProperty(n,"toString",{value:function(){return this.join("/")}}),n;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},r.isValid=function(e){return r.IPv6.isValid(e)||r.IPv4.isValid(e)},r.parse=function(e){if(r.IPv6.isValid(e))return r.IPv6.parse(e);if(r.IPv4.isValid(e))return r.IPv4.parse(e);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},r.parseCIDR=function(e){try{return r.IPv6.parseCIDR(e)}catch(t){try{return r.IPv4.parseCIDR(e)}catch(e){throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},r.fromByteArray=function(e){var t;if(4===(t=e.length))return new r.IPv4(e);if(16===t)return new r.IPv6(e);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},r.process=function(e){var t;return"ipv6"===(t=this.parse(e)).kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(a)}(mu);var gu=mu.exports,vu=function(e,t){if("string"==typeof t)return bu(e,t);if("object"==typeof t){for(var r=!1,n=0;n<t.length;n++)if(bu(e,t[n])){r=!0;break}return r}};function bu(e,t){try{var r=gu.process(e);if(-1===t.indexOf("/")){var n=gu.process(t);return"ipv6"===r.kind()&&"ipv6"===n.kind()?r.toNormalizedString()===n.toNormalizedString():r.toString()==n.toString()}var i=gu.parseCIDR(t);return r.match(i)}catch(e){return!1}}var yu=vu,_u=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,wu=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.2.0/24","192.168.0.0/16","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","224.0.0.0/3"],Su=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var Cu=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(_u.test(e)){r.isValid=!0;for(var n=e.split("."),i=0;i<4;i++)t.push(parseInt(n[i],10));r.boiledIp=t.join("."),yu(r.boiledIp,wu)&&(r.isBogon=!0),yu(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),yu(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),yu(r.boiledIp,Su)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},Ru=c(Cu),Pu={exports:{}},Tu=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ku=[],Eu=0;Eu<256;Eu++)ku[Eu]=(Eu+256).toString(16).substr(1);Pu.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,n=ku;return n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]}(e);else{if("[object String]"!==Object.prototype.toString.call(e))return!1;r=e}if(r=r.toLowerCase(),!Tu.test(r))return!1;if(void 0===t)t=Ou(r);else if(Ou(r)!==t)return!1;switch(t){case 1:case 2:return!0;case 3:case 4:case 5:return-1!==["8","9","a","b"].indexOf(r.charAt(19));default:throw new Error("Invalid version provided.")}};var Ou=Pu.exports.version=function(e){return 0|e.charAt(14)},Du=c(Pu.exports);const Iu=Object.create(null);Iu.open="0",Iu.close="1",Iu.ping="2",Iu.pong="3",Iu.message="4",Iu.upgrade="5",Iu.noop="6";const xu=Object.create(null);Object.keys(Iu).forEach((e=>{xu[Iu[e]]=e}));const Mu={type:"error",data:"parser error"},ju="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Lu="function"==typeof ArrayBuffer,Au=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Nu=({type:e,data:t},r,n)=>ju&&t instanceof Blob?r?n(t):Bu(t,n):Lu&&(t instanceof ArrayBuffer||Au(t))?r?n(t):Bu(new Blob([t]),n):n(Iu[e]+(t||"")),Bu=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function Fu(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let zu;const Uu="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",$u="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let nk=0;nk<64;nk++)$u[Uu.charCodeAt(nk)]=nk;const Vu="function"==typeof ArrayBuffer,Gu=(e,t)=>{if("string"!=typeof e)return{type:"message",data:Hu(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:qu(e.substring(1),t)};return xu[r]?e.length>1?{type:xu[r],data:e.substring(1)}:{type:xu[r]}:Mu},qu=(e,t)=>{if(Vu){const r=(e=>{let t,r,n,i,s,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);const d=new ArrayBuffer(o),l=new Uint8Array(d);for(t=0;t<a;t+=4)r=$u[e.charCodeAt(t)],n=$u[e.charCodeAt(t+1)],i=$u[e.charCodeAt(t+2)],s=$u[e.charCodeAt(t+3)],l[c++]=r<<2|n>>4,l[c++]=(15&n)<<4|i>>2,l[c++]=(3&i)<<6|63&s;return d})(e);return Hu(r,t)}return{base64:!0,data:e}},Hu=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,Wu=String.fromCharCode(30);function Ku(){return new TransformStream({transform(e,t){!function(e,t){ju&&e.data instanceof Blob?e.data.arrayBuffer().then(Fu).then(t):Lu&&(e.data instanceof ArrayBuffer||Au(e.data))?t(Fu(e.data)):Nu(e,!1,(e=>{zu||(zu=new TextEncoder),t(zu.encode(e))}))}(e,(r=>{const n=r.length;let i;if(n<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,n);else if(n<65536){i=new Uint8Array(3);const e=new DataView(i.buffer);e.setUint8(0,126),e.setUint16(1,n)}else{i=new Uint8Array(9);const e=new DataView(i.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(n))}e.data&&"string"!=typeof e.data&&(i[0]|=128),t.enqueue(i),t.enqueue(r)}))}})}let Ju;function Qu(e){return e.reduce(((e,t)=>e+t.length),0)}function Yu(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let n=0;for(let i=0;i<t;i++)r[i]=e[0][n++],n===e[0].length&&(e.shift(),n=0);return e.length&&n<e[0].length&&(e[0]=e[0].slice(n)),r}function Zu(e){if(e)return function(e){for(var t in Zu.prototype)e[t]=Zu.prototype[t];return e}(e)}Zu.prototype.on=Zu.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Zu.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Zu.prototype.off=Zu.prototype.removeListener=Zu.prototype.removeAllListeners=Zu.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var i=0;i<n.length;i++)if((r=n[i])===t||r.fn===t){n.splice(i,1);break}return 0===n.length&&delete this._callbacks["$"+e],this},Zu.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(r){n=0;for(var i=(r=r.slice(0)).length;n<i;++n)r[n].apply(this,t)}return this},Zu.prototype.emitReserved=Zu.prototype.emit,Zu.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Zu.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Xu="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function ep(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const tp=Xu.setTimeout,rp=Xu.clearTimeout;function np(e,t){t.useNativeTimers?(e.setTimeoutFn=tp.bind(Xu),e.clearTimeoutFn=rp.bind(Xu)):(e.setTimeoutFn=Xu.setTimeout.bind(Xu),e.clearTimeoutFn=Xu.clearTimeout.bind(Xu))}class ip extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class sp extends Zu{constructor(e){super(),this.writable=!1,np(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new ip(e,t,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=Gu(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}}const op="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),ap=64,cp={};let dp,lp=0,up=0;function pp(e){let t="";do{t=op[e%ap]+t,e=Math.floor(e/ap)}while(e>0);return t}function hp(){const e=pp(+new Date);return e!==dp?(lp=0,dp=e):e+"."+pp(lp++)}for(;up<ap;up++)cp[op[up]]=up;let fp=!1;try{fp="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(ik){}const mp=fp;function gp(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||mp))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Xu[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function vp(){}const bp=null!=new gp({xdomain:!1}).responseType;class yp extends Zu{constructor(e,t){super(),np(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=ep(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new gp(t);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(r)),4===r.readyState&&(200===r.status||1223===r.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=yp.requestsCount++,yp.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=vp,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete yp.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(yp.requestsCount=0,yp.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",_p);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Xu?"pagehide":"unload",_p,!1)}function _p(){for(let e in yp.requests)yp.requests.hasOwnProperty(e)&&yp.requests[e].abort()}const wp="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Sp=Xu.WebSocket||Xu.MozWebSocket,Cp="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const Rp={websocket:class extends sp{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=Cp?{}:ep(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=Cp?new Sp(e,t,r):t?new Sp(e,t):new Sp(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],n=t===e.length-1;Nu(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}n&&wp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=hp()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!Sp}},webtransport:class extends sp{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){Ju||(Ju=new TextDecoder);const r=[];let n=0,i=-1,s=!1;return new TransformStream({transform(o,a){for(r.push(o);;){if(0===n){if(Qu(r)<1)break;const e=Yu(r,1);s=128==(128&e[0]),i=127&e[0],n=i<126?3:126===i?1:2}else if(1===n){if(Qu(r)<2)break;const e=Yu(r,2);i=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),n=3}else if(2===n){if(Qu(r)<8)break;const e=Yu(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),s=t.getUint32(0);if(s>Math.pow(2,21)-1){a.enqueue(Mu);break}i=s*Math.pow(2,32)+t.getUint32(4),n=3}else{if(Qu(r)<i)break;const e=Yu(r,i);a.enqueue(Gu(s?e:Ju.decode(e),t)),n=0}if(0===i||i>e){a.enqueue(Mu);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),n=Ku();n.readable.pipeTo(e.writable),this.writer=n.writable.getWriter();const i=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),i())})).catch((e=>{}))};i();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],n=t===e.length-1;this.writer.write(r).then((()=>{n&&wp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends sp{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port}const t=e&&e.forceBase64;this.supportsBinary=bp&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(Wu),n=[];for(let e=0;e<r.length;e++){const i=Gu(r[e],t);if(n.push(i),"error"===i.type)break}return n})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,n=new Array(r);let i=0;e.forEach(((e,s)=>{Nu(e,!1,(e=>{n[s]=e,++i===r&&t(n.join(Wu))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=hp()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new yp(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},Pp=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Tp=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function kp(e){if(e.length>2e3)throw"URI too long";const t=e,r=e.indexOf("["),n=e.indexOf("]");-1!=r&&-1!=n&&(e=e.substring(0,r)+e.substring(r,n).replace(/:/g,";")+e.substring(n,e.length));let i=Pp.exec(e||""),s={},o=14;for(;o--;)s[Tp[o]]=i[o]||"";return-1!=r&&-1!=n&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const r=/\/{2,9}/g,n=t.replace(r,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||n.splice(0,1);"/"==t.slice(-1)&&n.splice(n.length-1,1);return n}(0,s.path),s.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,n){t&&(r[t]=n)})),r}(0,s.query),s}let Ep=class e extends Zu{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=kp(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=kp(t.host).host),np(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,n=r.length;e<n;e++){let n=r[e].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new Rp[e](r)}open(){let t;if(this.opts.rememberUpgrade&&e.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(e){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(t){let r=this.createTransport(t),n=!1;e.priorWebsocketSuccess=!1;const i=()=>{n||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(t=>{if(!n)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;e.priorWebsocketSuccess="websocket"===r.name,this.transport.pause((()=>{n||"closed"!==this.readyState&&(l(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=r.name,this.emitReserved("upgradeError",e)}})))};function s(){n||(n=!0,l(),r.close(),r=null)}const o=e=>{const t=new Error("probe error: "+e);t.transport=r.name,s(),this.emitReserved("upgradeError",t)};function a(){o("transport closed")}function c(){o("socket closed")}function d(e){r&&e.name!==r.name&&s()}const l=()=>{r.removeListener("open",i),r.removeListener("error",o),r.removeListener("close",a),this.off("close",c),this.off("upgrading",d)};r.once("open",i),r.once("error",o),r.once("close",a),this.once("close",c),this.once("upgrading",d),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{n||r.open()}),200):r.open()}onOpen(){if(this.readyState="open",e.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let r=0;r<this.writeBuffer.length;r++){const n=this.writeBuffer[r].data;if(n&&(e+="string"==typeof(t=n)?function(e){let t=0,r=0;for(let n=0,i=e.length;n<i;n++)t=e.charCodeAt(n),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(n++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}var t;return this.writeBuffer}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof r&&(n=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const i={type:e,data:t,options:r};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),n&&this.once("flush",n),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(t){e.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const n=e.length;for(;r<n;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}};Ep.protocol=4;const Op="function"==typeof ArrayBuffer,Dp=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,Ip=Object.prototype.toString,xp="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Ip.call(Blob),Mp="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Ip.call(File);function jp(e){return Op&&(e instanceof ArrayBuffer||Dp(e))||xp&&e instanceof Blob||Mp&&e instanceof File}function Lp(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Lp(e[t]))return!0;return!1}if(jp(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Lp(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Lp(e[t]))return!0;return!1}function Ap(e){const t=[],r=e.data,n=e;return n.data=Np(r,t),n.attachments=t.length,{packet:n,buffers:t}}function Np(e,t){if(!e)return e;if(jp(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=Np(e[n],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=Np(e[n],t));return r}return e}function Bp(e,t){return e.data=Fp(e.data,t),delete e.attachments,e}function Fp(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Fp(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=Fp(e[r],t));return e}const zp=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var Up;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Up||(Up={}));function $p(e){return"[object Object]"===Object.prototype.toString.call(e)}class Vp extends Zu{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===Up.BINARY_EVENT;r||t.type===Up.BINARY_ACK?(t.type=r?Up.EVENT:Up.ACK,this.reconstructor=new Gp(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!jp(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===Up[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Up.BINARY_EVENT||r.type===Up.BINARY_ACK){const n=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const i=e.substring(n,t);if(i!=Number(i)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(i)}if("/"===e.charAt(t+1)){const n=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(n,t)}else r.nsp="/";const n=e.charAt(t+1);if(""!==n&&Number(n)==n){const n=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(n,t+1))}if(e.charAt(++t)){const n=this.tryParse(e.substr(t));if(!Vp.isPayloadValid(r.type,n))throw new Error("invalid payload");r.data=n}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case Up.CONNECT:return $p(t);case Up.DISCONNECT:return void 0===t;case Up.CONNECT_ERROR:return"string"==typeof t||$p(t);case Up.EVENT:case Up.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===zp.indexOf(t[0]));case Up.ACK:case Up.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Gp{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=Bp(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var qp=Object.freeze({__proto__:null,Decoder:Vp,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==Up.EVENT&&e.type!==Up.ACK||!Lp(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===Up.EVENT?Up.BINARY_EVENT:Up.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==Up.BINARY_EVENT&&e.type!==Up.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=Ap(e),r=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(r),n}},get PacketType(){return Up},protocol:5});function Hp(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Wp=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Kp extends Zu{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Hp(e,"open",this.onopen.bind(this)),Hp(e,"packet",this.onpacket.bind(this)),Hp(e,"error",this.onerror.bind(this)),Hp(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(Wp.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const r={type:Up.EVENT,data:t,options:{}};if(r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,n=t.pop();this._registerAckCallback(e,n),r.id=e}const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!n||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(e,t){var r;const n=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===n)return void(this.acks[e]=t);const i=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),n);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(i),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((n,i)=>{t.push(((e,t)=>r?e?i(e):n(t):n(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...n)=>{if(r!==this._queue[0])return;return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...n)),r.pending=!1,this._drainQueue()})),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:Up.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Up.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Up.EVENT:case Up.BINARY_EVENT:this.onevent(e);break;case Up.ACK:case Up.BINARY_ACK:this.onack(e);break;case Up.DISCONNECT:this.ondisconnect();break;case Up.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...n){r||(r=!0,t.packet({type:Up.ACK,id:e,data:n}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Up.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function Jp(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Jp.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},Jp.prototype.reset=function(){this.attempts=0},Jp.prototype.setMin=function(e){this.ms=e},Jp.prototype.setMax=function(e){this.max=e},Jp.prototype.setJitter=function(e){this.jitter=e};class Qp extends Zu{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,np(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new Jp({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const n=t.parser||qp;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Ep(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const n=Hp(t,"open",(function(){r.onopen(),e&&e()})),i=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=Hp(t,"error",i);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{n(),i(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}return this.subs.push(n),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Hp(e,"ping",this.onping.bind(this)),Hp(e,"data",this.ondata.bind(this)),Hp(e,"error",this.onerror.bind(this)),Hp(e,"close",this.onclose.bind(this)),Hp(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){wp((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new Kp(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Yp={};function Zp(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let n=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),n=kp(e)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";const i=-1!==n.host.indexOf(":")?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+i+":"+n.port+t,n.href=n.protocol+"://"+i+(r&&r.port===n.port?"":":"+n.port),n}(e,(t=t||{}).path||"/socket.io"),n=r.source,i=r.id,s=r.path,o=Yp[i]&&s in Yp[i].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new Qp(n,t):(Yp[i]||(Yp[i]=new Qp(n,t)),a=Yp[i]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}Object.assign(Zp,{Manager:Qp,Socket:Kp,io:Zp,connect:Zp});const Xp=new URLSearchParams(window.location.search).has("debug");class eh{constructor(){this._isEnabled=!1,this._debugger=null,this._isEnabled=Xp}isEnabled(){return this._isEnabled}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}info(...e){if(this._isEnabled)return console.info(...e)}warn(...e){if(this._isEnabled)return console.warn(...e)}error(...e){if(this._isEnabled)return console.error(...e)}withDebugLogger(e=null){return this._debugger=e,this}debug(...e){if(!this._isEnabled||!this._debugger)return;const t=[];e.forEach((e=>{if("function"==typeof e){const r=e();t.push(r)}else t.push(e)})),this._debugger.print(...t)}}function th(e,t,r,n){return new(r||(r=Promise))((function(i,s){function o(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){e.done?i(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(o,a)}c((n=n.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;let rh=[],nh=0;const ih=new WeakMap;if(window.RTCPeerConnection){const sk=window.RTCPeerConnection;function ok(e){const t=new sk(e);rh.push(t),ih.set(t,{index:nh++});const r=()=>{"closed"===t.connectionState&&((e=>{rh=rh.filter((t=>t!==e))})(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}ok.prototype=sk.prototype,window.RTCPeerConnection=ok}const sh=null,oh=()=>{var e;return null===(e=sh)||void 0===e?void 0:e.getUpdatedStats()};class ah{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?ah._handleRequest(t):t.response?ah._handleResponse(t):t.message?ah._handleMessage(t):void 0}static _handleRequest(e){const t={request:!0};if("string"==typeof e.method&&"number"==typeof e.id)return t.id=e.id,t.method=e.method,t.data=e.data||{},t}static _handleResponse(e){const t={response:!0};if("number"==typeof e.id)return t.id=e.id,e.ok?(t.ok=!0,t.data=e.data||{}):(t.ok=!1,t.errorCode=e.errorCode,t.errorReason=e.errorReason),t}static _handleMessage(e){const t={message:!0};if("string"==typeof e.method)return t.method=e.method,t.data=e.data||{},t}static createRequest(e,t){return{request:!0,id:Math.round(1e7*Math.random()),method:e,data:t||{}}}static createSuccessResponse(e,t){return{response:!0,id:e.id,ok:!0,data:t||{}}}static createErrorResponse(e,t,r){return{response:!0,id:e.id,errorCode:t,errorReason:r}}static createMessage(e,t){return{message:!0,method:e,data:t||{}}}}const ch=new eh;class dh extends fr{constructor(e,t="whereby-sfu#v4"){super(),this.socket=null,this.wsUrl=e,this.protocol=t,this.sents=new Map,this._setupSocket()}_setupSocket(){this.socket=new WebSocket(this.wsUrl,this.protocol),this.socket.onopen=this._onOpen.bind(this),this.socket.onmessage=this._onMessage.bind(this),this.socket.onclose=this._onClose.bind(this),this.socket.onerror=this._onError.bind(this)}_tearDown(){null!==this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.sents.forEach((e=>e.close())),this.emit("close"))}close(){var e;null===(e=this.socket)||void 0===e||e.close()}_onOpen(){ch.info("Connected"),this.emit("open")}_onMessage(e){const t=ah.parse(e.data);ch.info("Received message",t),(null==t?void 0:t.response)?this._handleResponse(t):(null==t?void 0:t.message)&&this.emit("message",t)}_onClose(){ch.info("Disconnected"),this._tearDown()}_onError(e){ch.info("Error",e)}_handleResponse(e){const t=this.sents.get(e.id);if(e.ok)t.resolve(e.data);else{const r=new Error(e.errorReason);t.reject(r)}}send(e){try{this.socket&&this.socket.send(JSON.stringify(e))}catch(e){}}message(e,t={}){const r=ah.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const n=ah.createRequest(e,t);return this.send(n),new Promise(((e,t)=>{const i={id:n.id,method:n.method,resolve:t=>{this.sents.delete(n.id)&&(clearTimeout(i.timer),e(t))},reject:e=>{this.sents.delete(n.id)&&(clearTimeout(i.timer),t(e))},timer:setTimeout((()=>{this.sents.delete(n.id)&&t(new Error("request timeout"))}),r),close:()=>{clearTimeout(i.timer),t(new Error("transport closed"))}};this.sents.set(n.id,i)}))}}const lh={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},uh={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},ph={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},hh={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},fh={encodings:[{}]},mh={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},gh={encodings:[{dtx:!0}]},vh=(e,t,r)=>{const{lowDataModeEnabled:n,simulcastScreenshareOn:i,vp9On:s}=r;return"audio"===e?lh:t?s?gh:i?mh:fh:s?hh:n?ph:uh},bh=()=>{let e=Cr.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e};var yh;const _h=null!==(yh=dl.default)&&void 0!==yh?yh:dl;const wh=400;var Sh;const Ch="safari"===(null!==(Sh=dl.default)&&void 0!==Sh?Sh:dl).browserDetails.browser,Rh=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function Ph({devices:e,videoId:t,audioId:r,options:n,type:i="ideal"}){const s=e.filter((e=>"audioinput"===e.kind)),o=e.filter((e=>"videoinput"===e.kind)),a=!r||!s.some((e=>e.deviceId===r)),c=!t||!o.some((e=>e.deviceId===t)),d=function({disableAEC:e,disableAGC:t,hd:r,lax:n,lowDataMode:i,preferredDeviceIds:s,resolution:o,simulcast:a,widescreen:c}){var d,l;let u=480,p=240;r&&(u=n||Ch?720:{min:360,ideal:720}),a&&(!1===r?(u=360,p=270):p=360);const h={audio:Object.assign({},s.audioId&&{deviceId:s.audioId}),video:Object.assign(Object.assign({},s.videoId?{deviceId:s.videoId}:{facingMode:"user"}),{height:i?p:u,frameRate:i&&!a?15:24})};if(n)return(null===(d=h.audio)||void 0===d?void 0:d.deviceId)||(h.audio=!0),null===(l=h.video)||void 0===l||delete l.facingMode,h;if(o){const[e,t,r]=Rh(o);e&&(h.video.width={exact:e}),t&&(h.video.height={exact:t}),r&&(h.video.frameRate={exact:r}),delete h.video.facingMode}else h.video.aspectRatio=c?16/9:4/3;return t&&(h.audio.autoGainControl=!1),e&&(h.audio.echoCancellation=!1),h}(Object.assign({preferredDeviceIds:{audioId:a?null:{[i]:r},videoId:c?null:{[i]:t}}},n));return!1!==r&&s.length||delete d.audio,!1!==t&&o.length||delete d.video,d}const Th=new eh,kh=/mobi/i.test(navigator.userAgent);class Eh extends Error{constructor(...e){super(...e),this.name="nodevices"}}function Oh(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw Th.error(`getUserMedia ${r}`),t})):Promise.reject(new Eh("No provided devices"))}function Dh(e,t,r,n){var i,s,o;let a={deviceId:null};return t?(a.label=t.label,t.getSettings&&(a=Object.assign(Object.assign({},a),t.getSettings())),a.deviceId?a:(t.getCapabilities&&(a.deviceId=t.getCapabilities().deviceId),a.deviceId?a:(t.label&&r&&(a.deviceId=null===(s=r.find((r=>t.label===r.label&&r.kind===e)))||void 0===s?void 0:s.deviceId),a.deviceId||(a.deviceId=null===(o=t.getConstraints())||void 0===o?void 0:o.deviceId,a.broken=1),a))):(n&&r&&(a.deviceId=null===(i=r.find((t=>t.deviceId===n&&t.kind===e)))||void 0===i?void 0:i.deviceId),a)}function Ih(e,t){t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}function xh(e,{replaceStream:t,fallback:r=!0}={}){var n;return th(this,void 0,void 0,(function*(){let i,s,o,a=null;const c=!1===e.audioId?"video":!1===e.videoId&&"audio",d=kh||"video"!==c,l=Ph(e),u=(e,t)=>(e.details=Object.assign({constraints:l,constraint:e.constraint||(null==t?void 0:t.constraint),newConstraints:s,fallback:r,stopTracks:d},e!==i&&{error:String(i)}),e);d&&t&&Ih(t,c);try{a=yield Oh(l)}catch(s){if(i=s,!r)throw u(s);if("OverconstrainedError"===s.name){o={deviceId:{videoId:null,audioId:null},width:{lax:!0},height:{lax:!0},"":{audioId:null,videoId:null,lax:!0}}[s.constraint||""]}else if("NotFoundError"===s.name){if(l.audio&&l.video){try{a=yield Oh(Ph(Object.assign(Object.assign({},e),{audioId:!1})))}catch(e){if("NotFoundError"!==e.name)throw u(e,s)}try{a||(a=yield Oh(Ph(Object.assign(Object.assign({},e),{videoId:!1}))))}catch(e){throw u(e,s)}}}else if("NotAllowedError"===s.name||"NotReadableError"===s.name||"AbortError"===s.name)if(t&&!d)Ih(t,c),o=e;else if("NotAllowedError"!==s.name){try{a=yield Oh(Ph(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{lax:!0})})))}catch(e){Th.warn("Tried getting stream again with laxer constraints, but failed: "+(""+e))}const t=(""+s).toLowerCase(),r={audio:"audioId",video:"videoId"}[(null===(n=/(video|audio)/.exec(t))||void 0===n?void 0:n[0])||c||""];if(!a&&r)try{a=yield Oh(Ph(Object.assign(Object.assign({},e),{[r]:null})))}catch(e){Th.warn(`Re-tried ${r} with no constraints, but failed: ${""+e}`)}if(!a){const t=r?[r]:["videoId","audioId"];for(const r of t){try{a=yield Oh(Ph(Object.assign(Object.assign({},e),{[r]:!1})))}catch(e){Th.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(a)break}}}}if(o){const t=c?{audio:{videoId:!1},video:{audioId:!1}}[c]:{};s=Ph(Object.assign(Object.assign(Object.assign(Object.assign({},e),o),{options:Object.assign(Object.assign({},e.options),{lax:o.lax})}),t));try{a=yield Oh(s)}catch(e){throw u(e,i)}}if(!a)throw u(i);let p;return t&&(d||Ih(t,c),p=function(e,t,r){const n=[];return r&&"audio"!==r||(n.push(...e.getAudioTracks()),t.getAudioTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),r&&"video"!==r||(n.push(...e.getVideoTracks()),t.getVideoTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),n.forEach((t=>{t.replaced=!0,e.removeTrack(t)})),n}(t,a,c),a=t),{error:i&&u(i),stream:a,replacedTracks:p}}))}function Mh({oldDevices:e,newDevices:t,currentAudioId:r,currentVideoId:n,currentSpeakerId:i}){const s=function(e,t){const[r,n]=[e,t].map((e=>e.filter((e=>e.kind&&e.deviceId)).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.kind]:Object.assign(Object.assign({},e[t.kind]),{[t.deviceId]:t})})),{}))),i={};return e.forEach((e=>{e.kind&&e.deviceId&&(i[e.kind]||(i[e.kind]={added:{},removed:{},changed:{}}),n[e.kind]&&n[e.kind][e.deviceId]||(i[e.kind].removed[e.deviceId]=e))})),t.forEach((e=>{e.kind&&e.deviceId&&(i[e.kind]||(i[e.kind]={added:{},removed:{},changed:{}}),r[e.kind]&&r[e.kind][e.deviceId]?r[e.kind][e.deviceId].label&&r[e.kind][e.deviceId].label!==e.label&&(i[e.kind].changed[e.deviceId]=e):i[e.kind].added[e.deviceId]=e)})),i}(e,t),o={},a={};return[["audioinput",r],["videoinput",n],["audiooutput",i]].forEach((([e,r])=>{const n=s[e=e||""];if(n){if(r){if(n.removed[r]&&(o[e]={deviceId:null},"audiooutput"===e)){const r=t.find((e=>"audiooutput"===e.kind));o[e]={deviceId:null==r?void 0:r.deviceId}}n.changed[r]&&(o[e]={deviceId:r})}if(Object.keys(n.added).length){const[t]=Object.keys(n.added).slice(0,1),r=n.added[t];a[e]={deviceId:r.deviceId,label:r.label,kind:r.kind}}}})),{addedDevices:a,changedDevices:o}}dl.default;const jh={id:bl(),connectionNumber:0},Lh=()=>{};let Ah=Lh;const Nh=function(e,t=console){const r=[];let n,i,s,o,a,c,d,l,u,p,h,f,m=0,g=!1,v=0;const b={connected:!1,trace:(...e)=>{if(e.push(Date.now()),"customEvent"===e[0]&&"roomSessionId"===e[2].type){const t=c&&c[2].value.roomSessionId,r=e[2].value.roomSessionId;if(c=e,g&&r&&r!==t&&n)return void n.close();r&&(g=!0)}else"customEvent"===e[0]&&"clientId"===e[2].type?s=e:"customEvent"===e[0]&&"organizationId"===e[2].type?i=e:"customEvent"===e[0]&&"displayName"===e[2].type?o=e:"customEvent"===e[0]&&"userRole"===e[2].type?a=e:"customEvent"===e[0]&&"deviceId"===e[2].type?l=e:"customEvent"===e[0]&&"roomProduct"===e[2].type?u=e:"customEvent"===e[0]&&"roomMode"===e[2].type?p=e:"customEvent"===e[0]&&"sfuServer"===e[2].type?h=e:"customEvent"===e[0]&&"featureFlags"===e[2].type&&(f=e);n.readyState===WebSocket.OPEN?(m=0,n.send(JSON.stringify(e))):"getstats"===e[0]?v<20&&(v++,r.push(e)):"customEvent"===e[0]&&"insightsStats"===e[2].type||r.push(e),n.readyState===WebSocket.CLOSED&&d&&setTimeout((()=>{n.readyState===WebSocket.CLOSED&&d&&b.connect()}),1e3*m)},close:()=>{d=!1,n&&n.close()},connect:()=>{d=!0,m+=1,n&&n.close(),b.connected=!0,n=new WebSocket(e+window.location.pathname,"1.0"),n.onerror=e=>{b.connected=!1,t.warn("[RTCSTATS] WebSocket error",e)},n.onclose=e=>{b.connected=!1,t.info(`[RTCSTATS] Closed ${e.code}`),Ah()},n.onopen=()=>{for(jh.connectionNumber++,n.send(JSON.stringify(["clientInfo",null,jh])),i&&n.send(JSON.stringify(i)),s&&n.send(JSON.stringify(s)),c&&n.send(JSON.stringify(c)),o&&n.send(JSON.stringify(o)),a&&n.send(JSON.stringify(a)),l&&n.send(JSON.stringify(l)),p&&n.send(JSON.stringify(p)),u&&n.send(JSON.stringify(u)),h&&n.send(JSON.stringify(h)),f&&n.send(JSON.stringify(f));r.length;)n.send(JSON.stringify(r.shift()));v=0}}};return b.connect(),b}("wss://rtcstats.srv.whereby.com"),Bh=pl(Nh.trace,1e4,[""]);Ah=(null==Bh?void 0:Bh.resetDelta)||Lh;const Fh={sendEvent:(e,t)=>{Nh.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{Fh.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{Fh.sendEvent("video_muted",{muted:e})},server:Nh};var zh;const Uh=null!==(zh=dl.default)&&void 0!==zh?zh:dl,$h=new eh,Vh=Uh.browserDetails.browser,Gh=Uh.browserDetails.version;function qh(e,t){let r=e.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/),n=t.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/);r||(r=e.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/),n=t.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/));for(let e=1;e<r.length;e++)t=t.replace(new RegExp(n[e],"g"),r[e]);return t}function Hh(e){return"firefox"!==Vh?e:Zd.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function Wh(e){return function(e,t,r=!1,n=!1){var i,s;try{const o=ji(e);if((null===(i=null==o?void 0:o.ext)||void 0===i?void 0:i.length)&&o.ext.length>0)return e;if((null==o?void 0:o.media.length)<1)return e;const a=null==o?void 0:o.media.flatMap((e=>e.ext||[])),c=(null===(s=a.find((e=>e.uri===t)))||void 0===s?void 0:s.value)||[...new Set([0,15,...a.map((e=>e.value))])].sort(((e,t)=>e-t)).find(((e,t,r)=>e+1!==r[t+1]))+1;return o.media.forEach((e=>{var i;(r&&"audio"===e.type||n&&"video"===e.type)&&((null===(i=e.ext)||void 0===i?void 0:i.find((e=>e.uri===t)))||(Array.isArray(e.ext)?e.ext.push({value:c,uri:t}):e.ext=[{value:c,uri:t}]))})),Mi(o)}catch(e){console.error("Error during addAbsCaptureTimeExtMap: ",e)}return e}(e,"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time",!0,!0)}function Kh(e,t,r=console){const n=e.getSenders().find((e=>e.track&&"video"===e.track.kind));if(!n)return Promise.resolve();const i=n.getParameters();return i.encodings&&0===i.encodings.length?Promise.resolve():(i.encodings||(i.encodings=[{}]),0===t?delete i.encodings[0].maxBitrate:i.encodings[0].maxBitrate=1e3*t,n.setParameters(i).catch((e=>{r.error("setParameters err: ",e)})))}var Jh;const Qh=null!==(Jh=dl.default)&&void 0!==Jh?Jh:dl,Yh=new eh;class Zh{constructor({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:r,deprioritizeH264Encoding:n}){this.peerConnectionId=e,this.relayCandidateSeen=!1,this.serverReflexiveCandidateSeen=!1,this.publicHostCandidateSeen=!1,this.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this.pc=null,this.wasEverConnected=!1,this.connectionStatus=null,this.stats={totalSent:0,totalRecv:0},this.bandwidth=t||0,this.maximumTurnBandwidth=r,this.pending=[],this.isOperationPending=!1,this.streamIds=[],this.streams=[],this.earlyIceCandidates=[],this.afterConnected=new Promise((e=>{this.registerConnected=e})),this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._deprioritizeH264Encoding=n}setAndGetPeerConnection({clientId:e,constraints:t,peerConnectionConfig:r,shouldAddLocalVideo:n}){return this.peerConnectionConfig=r,this.shouldAddLocalVideo=n,this.clientId=e,this.pc=new RTCPeerConnection(r),this.signalingState=this.pc.signalingState,this.pc.addEventListener("signalingstatechange",(()=>{if(this.signalingState!==this.pc.signalingState&&(this.signalingState=this.pc.signalingState,"stable"===this.pc.signalingState)){this.isOperationPending=!1;const e=this.pending.shift();e&&e.apply()}})),this.pc}addStream(e){this.streamIds.push(e.id),this.streams.push(e),RTCPeerConnection.prototype.addTrack?(e.getAudioTracks().forEach((t=>{this.pc.addTrack(t,e)})),e.getVideoTracks().forEach((t=>{this.pc.addTrack(t,e)}))):this.pc.addStream(e)}addTrack(e,t){t||(t=this.streams[0]),null==t||t.addTrack(e),this.pc.addTrack(e,t)}removeTrack(e){this.streams[0].removeTrack(e);const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)}removeStream(e){for(let t=0;t<this.streamIds.length;t++)this.streamIds[t]===e.id&&(this.streamIds.splice(t,1),this.streams.splice(t,1));this.pc&&(this.pc.removeTrack?e.getTracks().forEach((e=>{const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)})):this.pc.removeStream&&this.pc.removeStream(e))}_setRemoteDescription(e){return this._deprioritizeH264Encoding&&(e.sdp=function(e){return Zd.splitSections(e).map((e=>{if("video"!==Zd.getKind(e))return e;const t=Zd.matchPrefix(e,"a=rtpmap:").map((e=>Zd.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=Zd.matchPrefix(e,"m=video")[0],n=/(\s\d+)+$/i.exec(r),i=n?n[0]:"",s=[...i.split(" ").filter((e=>e&&!t.includes(e))),...t].join(" "),o=r.replace(i," "+s);return e.replace(r,o)})).join("")}(e.sdp)),this.srdComplete=this.pc.setRemoteDescription(e),this.srdComplete.then((()=>{this.earlyIceCandidates.forEach((e=>this.pc.addIceCandidate(e))),this.earlyIceCandidates=[]}))}handleOffer(e){if(!this.canModifyPeerConnection())return new Promise((t=>{this.pending.push((()=>this.handleOffer(e).then(t)))}));this.isOperationPending=!0;let t=e.sdp;t=function(e){return"safari"!==Vh&&("firefox"!==Vh||Gh&&Gh>=63||60===Gh)?e:Zd.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==Zd.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=Hh(t);const r={type:e.type,sdp:t};let n;return this._setRemoteDescription(r).then((()=>this.pc.createAnswer())).then((e=>(n=e,this.pc.setLocalDescription(e)))).then((()=>Kh(this.pc,this.bandwidth))).then((()=>n))}handleAnswer(e){if(this.pendingOffer){const t=this.pendingOffer;return delete this.pendingOffer,this.pc.setLocalDescription(t).then((()=>this.handleAnswer(e)))}let t=e.sdp;t=Hh(t);const r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>Kh(this.pc,this.bandwidth)),(e=>{Yh.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===Qh.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{Yh.warn("Failed to add ICE candidate ('%s'): %s",e?e.candidate:null,t)})))})):this.earlyIceCandidates.push(e)}canModifyPeerConnection(){return"stable"===this.pc.signalingState&&!this.isOperationPending}close(){const e=this.pc;if(e){e.oniceconnectionstatechange=null,e.onicecandidate=null,e.ontrack=null;try{e.close()}catch(e){Yh.warn("failures during close of session",e)}}}hasConnectedPeerConnection(){return this.pc&&"connected"===this.pc.connectionState}replaceTrack(e,t){const r=this.pc;if(!r)return!1;const n=r.getSenders();function i(r){const i=e=>e&&`id:${e.id},kind:${e.kind},state:${e.readyState}`;Yh.warn(`${r}. newTrack:${i(t)}, oldTrack:${i(e)}, sender tracks: ${JSON.stringify(n.map((e=>`s ${i(e.track)}`)))}, sender first codecs: ${JSON.stringify(n.map((e=>(e.getParameters().codecs||[])[0])))}`)}if(n.length||i("No senders!"),e||(e=(n.find((e=>e.track&&e.track.kind===t.kind))||{}).track)||i("No sender with same kind! Add new track then."),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<n.length;r++){const s=n[r],o=s.track;if(s||o||i("One of the tracks is null!"),o.id===t.id)return Promise.resolve(t);if(o.id===e.id)return n[r].replaceTrack(t)}return null};let s=r();if(s)return s;let o=null,a=null;s=new Promise(((e,t)=>{o=e,a=t}));let c=0,d=setInterval((()=>th(this,void 0,void 0,(function*(){const e=r();if(!e)return void(3<++c&&(clearInterval(d),d=null,i("No sender track to replace"),a("No sender track to replace")));clearInterval(d),d=null;const t=yield e;o(t)}))),1e3);return s}const s=this.streams.find((e=>e.getTracks().find((e=>e.id===t.id))))||this.streams[0];return s?r.addTrack(t,s):(i("No stream?"),Promise.reject(new Error("replaceTrack: No stream?")))}if(!this.canModifyPeerConnection())return void this.pending.push((()=>{this.replaceTrack(e,t)}));this.isOperationPending=!0;const s=r.onnegotiationneeded;return r.onnegotiationneeded=null,this.removeTrack(e),this.addTrack(t),setTimeout((()=>{r.onnegotiationneeded=s}),0),"offer"===r.localDescription.type?r.createOffer().then((e=>(e.sdp=qh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=qh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e))))}maybeRestrictRelayBandwidth(){var e;-1!==this.maximumTurnBandwidth&&(this.pc.getStats&&(e=this.pc,e.getStats(null).then((e=>{let t,r;return e.forEach((n=>{if("transport"===n.type&&n.selectedCandidatePairId){const i=e.get(n.selectedCandidatePairId);if(!i)return;return t=e.get(i.localCandidateId).candidateType,void(r=e.get(i.remoteCandidateId).candidateType)}"candidate-pair"===n.type&&n.selected&&(t=e.get(n.localCandidateId).candidateType,r=e.get(n.remoteCandidateId).candidateType)})),"relay"===t||"relayed"===t||"relay"===r||"relayed"===r}))).then((e=>{e&&0===this.bandwidth&&this.changeBandwidth(this.maximumTurnBandwidth)})))}changeBandwidth(e){e!==this.bandwidth&&(this.canModifyPeerConnection()?(this.bandwidth=e,this.pc.localDescription&&""!==this.pc.localDescription.type&&Kh(this.pc,this.bandwidth)):this.pending.push((()=>this.changeBandwidth(e))))}setAudioOnly(e,t=[]){this.pc.getTransceivers().filter((e=>{var r,n,i,s,o,a;return"recvonly"!==(null==e?void 0:e.direction)&&"video"===(null===(n=null===(r=null==e?void 0:e.receiver)||void 0===r?void 0:r.track)||void 0===n?void 0:n.kind)&&!t.includes(null===(s=null===(i=null==e?void 0:e.receiver)||void 0===i?void 0:i.track)||void 0===s?void 0:s.id)&&!t.includes(null===(a=null===(o=null==e?void 0:e.sender)||void 0===o?void 0:o.track)||void 0===a?void 0:a.id)})).forEach((t=>{t.direction=e?"sendonly":"sendrecv"}))}}const Xh="fetch_mediaserver_config",ef="start_screenshare",tf="stop_screenshare",rf="audio_enabled",nf="client_left",sf="mediaserver_config",of="new_client",af="screenshare_started",cf="screenshare_stopped",df="room_joined",lf="video_enabled",uf="ice_candidate",pf="ice_endofcandidates",hf="ready_to_receive_offer",ff="sdp_answer",mf="sdp_offer",gf="pending_client_left",vf="media_quality_changed",bf="client_connection_status_changed",yf="stream_added",_f="rtc_manager_created",wf="rtc_manager_destroyed",Sf="local_stream_track_added",Cf="local_stream_track_removed",Rf="connecting",Pf="connection_failed",Tf="connection_successful",kf="connection_disconnected",Ef="camera",Of="screen_share";const Df=57600,If=2.6041666666666665,xf=921600,Mf=1.0850694444444444;const jf="[a-fA-F\\d:]",Lf=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${jf})|(?<=${jf})(?=\\s|$))`:"",Af="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",Nf="[a-fA-F\\d]{1,4}",Bf=`\n(?:\n(?:${Nf}:){7}(?:${Nf}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${Nf}:){6}(?:${Af}|:${Nf}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${Nf}:){5}(?::${Af}|(?::${Nf}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${Nf}:){4}(?:(?::${Nf}){0,1}:${Af}|(?::${Nf}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${Nf}:){3}(?:(?::${Nf}){0,2}:${Af}|(?::${Nf}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${Nf}:){2}(?:(?::${Nf}){0,3}:${Af}|(?::${Nf}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${Nf}:){1}(?:(?::${Nf}){0,4}:${Af}|(?::${Nf}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${Nf}){0,5}:${Af}|(?::${Nf}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),Ff=new RegExp(`(?:^${Af}$)|(?:^${Bf}$)`),zf=new RegExp(`^${Af}$`),Uf=new RegExp(`^${Bf}$`),$f=e=>e&&e.exact?Ff:new RegExp(`(?:${Lf(e)}${Af}${Lf(e)})|(?:${Lf(e)}${Bf}${Lf(e)})`,"g");$f.v4=e=>e&&e.exact?zf:new RegExp(`${Lf(e)}${Af}${Lf(e)}`,"g"),$f.v6=e=>e&&e.exact?Uf:new RegExp(`${Lf(e)}${Bf}${Lf(e)}`,"g");var Vf,Gf,qf="connection_blocked_by_network",Hf="ice_ipv6_seen",Wf="ice_mdns_seen",Kf="ice_no_public_ip_gathered",Jf="ice_no_public_ip_gathered_3sec",Qf="ice_restart",Yf="microphone_not_working",Zf="microphone_stopped_working",Xf="new_pc",em="sfu_connection_open",tm="sfu_connection_closed",rm="dominant_speaker";const nm=null!==(Vf=dl.default)&&void 0!==Vf?Vf:dl,im=new eh,sm=class{constructor(e,t){this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=Rf,this.stream=null,this.streamId=null}setup(e){return this.stream=e,this.streamId=e.id,this.setVideoEnabled(this.isVideoEnabled&&e.getVideoTracks().length>0),this.setAudioEnabled(this.isAudioEnabled&&e.getAudioTracks().length>0),this}setStatus(e){return this.status=e,this}setVideoEnabled(e){this.isVideoEnabled=e,this.stream&&this.stream.getVideoTracks().forEach((t=>{t.enabled=e}))}setAudioEnabled(e){this.isAudioEnabled=e,this.stream&&this.stream.getAudioTracks().forEach((t=>{t.enabled=e}))}static getCameraId(){return"0"}static getTypeFromId(e){return"0"===""+e?Ef:Of}}.getCameraId(),om=nm.browserDetails.browser,am=nm.browserDetails.version;"firefox"===om&&nm.browserShim&&"shimGetDisplayMedia"in nm.browserShim&&(null===(Gf=nm.browserShim)||void 0===Gf||Gf.shimGetDisplayMedia(window,"screen"));let cm=!1;"chrome"===om&&window.document.addEventListener("beforeunload",(()=>{cm=!0}));class dm{constructor({selfId:e,room:t,emitter:r,serverSocket:n,webrtcProvider:i,features:s}){const{name:o,session:a,iceServers:c,sfuServer:d,mediaserverConfigTtlSeconds:l}=t;this._selfId=e,this._roomName=o,this._roomSessionId=a&&a.id,this.peerConnections={},this.localStreams={},this.enabledLocalStreamIds=[],this._screenshareVideoTrackIds=[],this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction=null,this._emitter=r,this._serverSocket=n,this._webrtcProvider=i,this._features=s||{},this._isAudioOnlyMode=!1,this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._pendingActionsForConnectedPeerConnections=[],this._audioTrackOnEnded=()=>{Fh.sendEvent("audio_ended",{unloading:cm}),this._emit(Zf,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:d,iceServers:c.iceServers||[],mediaserverConfigTtlSeconds:l}),this.totalSessionsCreated=0}numberOfPeerconnections(){return Object.keys(this.peerConnections).length}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._roomName===t&&r===!!this._sfuServer}supportsScreenShareAudio(){return!0}maybeRestrictRelayBandwidth(e){e.maybeRestrictRelayBandwidth()}addNewStream(e,t){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===sm){this._addStreamToPeerConnections(t);const[e]=t.getAudioTracks();e&&this._startMonitoringAudioTrack(e),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const r=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",r),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",r)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),t&&"audio"===t.kind&&this._startMonitoringAudioTrack(t),this._replaceTrackToPeerConnections(e,t)}accept({clientId:e,shouldAddLocalVideo:t}){return this.acceptNewStream({streamId:e,clientId:e,shouldAddLocalVideo:t})}disconnectAll(){Object.keys(this.peerConnections).forEach((e=>{this.disconnect(e)})),this.peerConnections={},this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null)}fixChromeAudio(e){if("chrome"!==om)return;const t=this._getLocalCameraStream(),r=t.getAudioTracks()[0];return r&&"ended"===r.readyState?navigator.mediaDevices.getUserMedia({audio:e}).then((e=>{const n=e.getAudioTracks()[0];return n.enabled=r.enabled,t.removeTrack(r),t.addTrack(n),this.replaceTrack(r,n)})):void 0}setupSocketListeners(){this._socketListenerDeregisterFunctions=[()=>this._clearMediaServersRefresh(),this._serverSocket.on(sf,(e=>{e.error?im.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(hf,(e=>{this._connect(e.clientId)})),this._serverSocket.on(uf,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):im.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(pf,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):im.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(mf,(e=>{const t=this._getSession(e.clientId);if(!t)return void im.warn("No RTCPeerConnection on SDP_OFFER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleOffer(r).then((t=>{this._emitServerEvent(ff,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))})),this._serverSocket.on(ff,(e=>{const t=this._getSession(e.clientId);if(!t)return void im.warn("No RTCPeerConnection on SDP_ANSWER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleAnswer(r)})),this._serverSocket.on(df,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==sm));if(!t)return;const r=this.localStreams[t];if(!r)return void im.warn("screenshare stream %s not found",t);const n=r.getAudioTracks().length>0;this._emitServerEvent(ef,{streamId:t,hasAudioTrack:n})}))]}sendAudioMutedStats(e){Fh.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Fh.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Fh.sendEvent(e,t)}rtcStatsDisconnect(){Fh.server.close()}rtcStatsReconnect(){Fh.server.connected||Fh.server.connect()}setAudioOnly(e){this._isAudioOnlyMode=e,this._forEachPeerConnection((e=>{e.hasConnectedPeerConnection()&&this._withForcedRenegotiation(e,(()=>e.setAudioOnly(this._isAudioOnlyMode,this._screenshareVideoTrackIds)))}))}setRemoteScreenshareVideoTrackIds(e=[]){const t=this._getFirstLocalNonCameraStream();this._screenshareVideoTrackIds=[...(null==t?void 0:t.track)?[t.track.id]:[],...e]}setRoomSessionId(e){this._roomSessionId=e}_setConnectionStatus(e,t,r){const n=e.connectionStatus;n!==t&&e.peerConnectionId!==this._selfId&&(n===kf&&t===Rf||(e.connectionStatus=t,setTimeout((()=>{this._emit(bf,{streamIds:e.streamIds,clientId:r,status:t,previous:n})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=wh,e.playoutDelayHint=.4}))}catch(e){im.error("Error during setting jitter buffer target:",e)}}_emitServerEvent(e,t,r){this._serverSocket.emit(e,t,r)}_emit(e,t){this._emitter.emit(e,t)}_addEnabledLocalStreamId(e){this.enabledLocalStreamIds.push(e)}_deleteEnabledLocalStreamId(e){const t=this.enabledLocalStreamIds.indexOf(e);-1!==t&&this.enabledLocalStreamIds.splice(t,1)}_getSession(e){return e in this.peerConnections?this.peerConnections[e]:null}_getOrCreateSession(e,t){let r=this.peerConnections[e];if(void 0===r){const n="safari"===om&&am&&am>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new Zh({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:n}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[sm]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==sm))}_isScreensharingLocally(){return this._getNonLocalCameraStreamIds().length>0}_getFirstLocalNonCameraStream(){const e=this._getNonLocalCameraStreamIds();return 0===e.length?null:this.localStreams[e[0]]}_transformIncomingSdp(e,t){return{type:e.type,sdp:e.sdpU}}_transformOutgoingSdp(e){return{type:e.type,sdpU:e.sdp}}_createSession({clientId:e,initialBandwidth:t,isOfferer:r,peerConnectionId:n,shouldAddLocalVideo:i}){if(!n)throw new Error("peerConnectionId is missing");if(!e)throw new Error("clientId is missing");const s=this._getOrCreateSession(n,t),o={optional:[]};"chrome"===om&&o.optional.push({googCpuOveruseDetection:!0}),o.optional.push({rtcStatsRoomSessionId:this._roomSessionId}),o.optional.push({rtcStatsClientId:this._selfId}),o.optional.push({rtcStatsPeerId:n}),o.optional.push({rtcStatsConferenceId:this._roomName});const a={iceServers:this._iceServers};if(this._features.turnServerOverrideHost){const e=this._features.turnServerOverrideHost,t=e.indexOf(":")>0?"":":443",r=":"+e+t;a.iceServers=a.iceServers.map((e=>{const t=Object.assign({},e);return t.url&&(t.url=t.url.replace(/:[^?]*/,r)),t.urls&&(t.urls=t.urls.map((e=>e.replace(/:[^?]*/,r)))),t}))}if(this._features.useOnlyTURN){a.iceTransportPolicy="relay";const e={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[this._features.useOnlyTURN];e&&(a.iceServers=a.iceServers.filter((t=>t.url&&t.url.match(e))))}"chrome"===om&&(a.sdpSemantics="unified-plan");const c=s.setAndGetPeerConnection({constraints:o,peerConnectionConfig:a,shouldAddLocalVideo:i,clientId:e});setTimeout((()=>this._emit(Xf)),0),c.ontrack=t=>{const r=t.streams[0];"default"===r.id&&0===r.getAudioTracks().length||-1===s.streamIds.indexOf(r.id)&&(s.streamIds.push(r.id),this._emit(yf,{clientId:e,stream:r}),s.connectionStatus===Tf&&setTimeout((()=>{this._emit(bf,{streamIds:s.streamIds,clientId:e,status:s.connectionStatus,previous:Rf})}),0))},c.oniceconnectionstatechange=()=>{let t;const r=s.connectionStatus;switch(c.iceConnectionState){case"checking":t=Rf;break;case"connected":case"completed":t=Tf,s.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!s.wasEverConnected&&(c.iceConnectionState.match(/connected|completed/)||"chrome"===om&&c.localDescription&&"answer"===c.localDescription.type)&&(s.wasEverConnected=!0,"false"!==this._features.bandwidth&&this.maybeRestrictRelayBandwidth(s)),this._isAudioOnlyMode&&s.setAudioOnly(!0,this._screenshareVideoTrackIds),s.registerConnected();break;case"disconnected":t=kf,setTimeout((()=>{"disconnected"===c.iceConnectionState&&this._maybeRestartIce(e,s)}),2e3);break;case"failed":t=Pf,r!==t&&this._maybeRestartIce(e,s),null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(qf);break;default:return}this._setConnectionStatus(s,t,e)},c.onconnectionstate=()=>{switch(c.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==_h.browserDetails.browser||_h.browserDetails.browser<58||"closed"===e.signalingState)return Promise.resolve(!1);const t=e.getSenders().some((e=>e.track&&"audio"===e.track.kind)),r=e.getReceivers().some((e=>e.track&&"audio"===e.track.kind));return e.getStats(null).then((e=>{let n=!1;return e.forEach((e=>{"outbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!t?"inbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!r||0===e.bytesReceived&&(n="inbound"):0===e.bytesSent&&(n="outbound")})),n}))})(s.pc).then((t=>{!1!==t&&this._emit(Yf,{failureDirection:t,clientId:e})}))}),3e3),s.registerConnected();break;case"failed":const t=Pf;null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(qf),this._setConnectionStatus(s,t,e)}};const d=this.localStreams[sm];return i&&d&&s.addStream(d),i&&Object.keys(this.localStreams).forEach((e=>{if(e===sm)return;const t=this.localStreams[e];r?s.addStream(t):s.afterConnected.then((()=>{this._emitServerEvent(ef,{receiverId:s.clientId,streamId:t.id,hasAudioTrack:!!t.getAudioTracks().length}),this._withForcedRenegotiation(s,(()=>s.addStream(t)))}))})),s}_cleanup(e){const t=this._getSession(e);t?(t.close(),delete this.peerConnections[e]):im.warn("No RTCPeerConnection in RTCManager.disconnect()",e)}_forEachPeerConnection(e){Object.values(this.peerConnections).forEach((t=>{e(t)}))}_addStreamToPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.addStream(e)))}))}_addTrackToPeerConnections(e,t){this._forEachPeerConnection((r=>{this._withForcedRenegotiation(r,(()=>r.addTrack(e,t)))}))}_replaceTrackToPeerConnections(e,t){const r=[];return this._forEachPeerConnection((n=>{if(!n.hasConnectedPeerConnection()){im.info("Session doesn't have a connected PeerConnection, adding pending action!");const i=this._pendingActionsForConnectedPeerConnections;if(!i)return void im.warn("No pending action is created to repalce track, because the pending actions array is null");const s=new Promise(((r,s)=>{i.push((()=>{const i=n.replaceTrack(e,t);if(!i)return im.error("replaceTrack returned false!"),void s("ReplaceTrack returned false");i.then((e=>r(e))).catch((e=>s(e)))}))}));return void r.push(s)}const i=n.replaceTrack(e,t);i?r.push(i):im.error("replaceTrack returned false!")})),Promise.all(r)}_removeStreamFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeStream(e)))}))}_removeTrackFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeTrack(e)))}))}_addLocalStream(e,t){this._addEnabledLocalStreamId(e),this.localStreams[e]=t}_removeLocalStream(e){delete this.localStreams[e],this._deleteEnabledLocalStreamId(e)}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitServerEvent(Xh)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_connect(e){this.rtcStatsReconnect();let t=this._getSession(e),r=t&&t.bandwidth||0;return t?(im.warn("Replacing peer session",e),this._cleanup(e)):r=this._changeBandwidthForAllClients(!0),t=this._createP2pSession(e,r,!0,!0),this._negotiatePeerConnection(e,t),Promise.resolve(t)}_maybeRestartIce(e,t){const r=t.pc;"disconnected"!==r.iceConnectionState&&"failed"!==r.iceConnectionState||"offer"===r.localDescription.type&&(t.wasEverConnected=!1,t.relayCandidateSeen=!1,t.serverReflexiveCandidateSeen=!1,t.publicHostCandidateSeen=!1,t.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this._emit(Qf),this._negotiatePeerConnection(e,t,Object.assign({},this.offerOptions,{iceRestart:!0})))}_setCodecPreferences(e,t,r,n){try{const i=e.getTransceivers().filter((e=>{var t,r;return"audio"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));i.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const t=RTCRtpSender.getCapabilities("audio");for(let e=0;e<t.codecs.length;e++)if(n&&"audio/red"===t.codecs[e].mimeType.toLowerCase()){t.codecs.unshift(t.codecs.splice(e,1)[0]);break}void 0!==e.setCodecPreferences&&e.setCodecPreferences(t.codecs)}));const s=e.getTransceivers().filter((e=>{var t,r;return"video"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));s.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const n=RTCRtpSender.getCapabilities("video");for(let e=0;e<n.codecs.length;e++){if(t&&"video/vp9"===n.codecs[e].mimeType.toLowerCase()){n.codecs.unshift(n.codecs.splice(e,1)[0]);break}if(r&&"video/av1"===n.codecs[e].mimeType.toLowerCase()){n.codecs.unshift(n.codecs.splice(e,1)[0]);break}}void 0!==e.setCodecPreferences&&e.setCodecPreferences(n.codecs)}))}catch(e){im.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void im.warn("No RTCPeerConnection in negotiatePeerConnection()",e);const n=t.pc;if(!t.canModifyPeerConnection())return void t.pending.push((()=>{this._negotiatePeerConnection(e,t,r)}));t.isOperationPending=!0;const{vp9On:i,av1On:s,redOn:o,rtpAbsCaptureTimeOn:a}=this._features;(i||s||o)&&this._setCodecPreferences(n,i,s,o),n.createOffer(r||this.offerOptions).then((r=>{a&&(r.sdp=Wh(r.sdp)),(i||o)&&"firefox"===om&&(r.sdp=function(e,t,r){var n,i;try{const s=ji(e);if(Array.isArray(null==s?void 0:s.media)){const e=s.media.find((e=>"audio"===e.type));if(Array.isArray(null==e?void 0:e.rtp)){const t=e.rtp;for(let i=0;i<t.length;i++)if(r&&"red"===t[i].codec){const r=null===(n=e.payloads)||void 0===n?void 0:n.split(" "),s=null==r?void 0:r.indexOf(""+t[i].payload);s&&-1!==s&&s>=0&&(null==r||r.unshift(r.splice(s,1)[0]),e.payloads=null==r?void 0:r.join(" "))}}const o=s.media.find((e=>"video"===e.type));if(Array.isArray(null==o?void 0:o.rtp)){const e=o.rtp;for(let r=0;r<e.length;r++)if(t&&"VP9"===e[r].codec){const t=null===(i=o.payloads)||void 0===i?void 0:i.split(" "),n=null==t?void 0:t.indexOf(""+e[r].payload);n&&-1!==n&&n>=0&&(null==t||t.unshift(t.splice(n,1)[0]),o.payloads=null==t?void 0:t.join(" "))}}}return Mi(s)}catch(e){$h.error("setCodecPreferenceSDP error:",e)}}(r.sdp,i,o)),this._emitServerEvent(mf,{receiverId:e,message:this._transformOutgoingSdp(r)}),"chrome"===om&&n.getSenders().filter((e=>e.track&&"video"===e.track.kind)).length>=2?t.pendingOffer=r:n.setLocalDescription(r).catch((t=>{im.warn("RTCPeerConnection.setLocalDescription() failed with local offer",t),this._features.reverseOfferOnFailure&&(this._lastReverseDirectionAttemptByClientId||(this._lastReverseDirectionAttemptByClientId={}),(!this._lastReverseDirectionAttemptByClientId[e]||this._lastReverseDirectionAttemptByClientId[e]<Date.now()-1e4)&&(this.acceptNewStream({clientId:e,streamId:e,shouldAddLocalVideo:!0}),this._lastReverseDirectionAttemptByClientId[e]=Date.now()))}))})).catch((e=>{im.warn("RTCPeerConnection.createOffer() failed to create local offer",e)}))}_withForcedRenegotiation(e,t){const r=e.pc,n=r.onnegotationneeded;r.onnegotiationneeded=null,t(),this._negotiatePeerConnection(e.clientId,e),setTimeout((()=>r.onnegotiationneeded=n),0)}_changeBandwidthForAllClients(e){let t=this.numberOfPeerconnections();if(e&&(t+=1),0===t)return 0;t>7&&(t=7);let r=this._features.bandwidth?parseInt(this._features.bandwidth,10):{1:0,2:this._features.highP2PBandwidth?768:384,3:this._features.highP2PBandwidth?512:256,4:192,5:128,6:128,7:64}[t];if(void 0===r)return 0;if(this._features.adjustBitratesFromResolution){const e=this._getLocalCameraStream();if(e){const t=e&&e.getVideoTracks()[0];if(t){const{width:e,height:n,frameRate:i}=t.getSettings();if(e&&n&&i){const t=Math.round(function(e,t,r){let n=e*t;n<Df&&(n=Df),n>xf&&(n=xf);let i=If;n>xf?i=Mf:n>Df&&(i+=-17582143775720163e-22*(n-Df));let s=e*t*i;return r<=15?s*=.7:r<=24&&(s*=.9),s}(e,n,i)/1e3);r=Math.min(t,r||t)}}}}return this._features.higherP2PBitrates&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession(e,t,r,n){const i=this._createSession({peerConnectionId:e,clientId:e,initialBandwidth:t,shouldAddLocalVideo:r,isOfferer:n}),s=i.pc;this._features.increaseIncomingMediaBufferOn&&this._setJitterBufferTarget(s);const o=this.localStreams[sm];return r&&o&&!o.getVideoTracks().length&&this._stoppedVideoTrack&&s.addTrack(this._stoppedVideoTrack,o),s.onicegatheringstatechange=e=>{switch(e.target.iceGatheringState){case"gathering":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=setTimeout((()=>{i.publicHostCandidateSeen||i.relayCandidateSeen||i.serverReflexiveCandidateSeen||this._emit(Jf)}),3e3);break;case"complete":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=void 0}},s.onicecandidate=t=>{var r,n;if(t.candidate){switch(null===(r=t.candidate)||void 0===r?void 0:r.type){case"host":const e=null===(n=null==t?void 0:t.candidate)||void 0===n?void 0:n.address;try{if($f.v4({exact:!0}).test(e)){Ru(e).isPublicIp&&(i.publicHostCandidateSeen=!0)}else if($f.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new yl.Address6(e.replace(/^\[(.*)\]/,"$1"));i.ipv6HostCandidateSeen=!0,"Global"===t.getScope()&&(i.publicHostCandidateSeen=!0),t.isTeredo()&&(i.ipv6HostCandidateTeredoSeen=!0),t.is6to4()&&(i.ipv6HostCandidate6to4Seen=!0)}else{const t=e.replace(/.local/,"");t&&Du(t,4)&&(i.mdnsHostCandidateSeen=!0)}}catch(e){im.info("Error during parsing candidates! Error: ",{error:e})}break;case"srflx":i.serverReflexiveCandidateSeen||(i.serverReflexiveCandidateSeen=!0);break;case"relay":case"relayed":i.relayCandidateSeen||(i.relayCandidateSeen=!0)}this._emitServerEvent(uf,{receiverId:e,message:t.candidate})}else this._emitServerEvent(pf,{receiverId:e}),i.publicHostCandidateSeen||i.relayCandidateSeen||i.serverReflexiveCandidateSeen||this._emit(Kf),i.ipv6HostCandidateSeen&&this._emit(Hf,{teredoSeen:i.ipv6HostCandidateTeredoSeen,sixtofourSeen:i.ipv6HostCandidate6to4Seen}),i.mdnsHostCandidateSeen&&this._emit(Wf)},s.onnegotiationneeded=()=>{"new"!==s.iceConnectionState&&i.connectionStatus&&this._negotiatePeerConnection(e,i)},i}acceptNewStream({streamId:e,clientId:t,shouldAddLocalVideo:r}){let n=this._getSession(t);if(n&&e!==t)return n;let i=n&&n.bandwidth||0;return n?(im.warn("Replacing peer session",t),this._cleanup(t)):i=this._changeBandwidthForAllClients(!0),n=this._createP2pSession(t,i,r),this._emitServerEvent(hf,{receiverId:t}),n}disconnect(e){this._cleanup(e),this._changeBandwidthForAllClients(!1);0===this.numberOfPeerconnections()&&setTimeout((()=>{0===this.numberOfPeerconnections()&&this.rtcStatsDisconnect()}),6e4)}updateStreamResolution(){}stopOrResumeAudio(){}_handleStopOrResumeVideo({enable:e,track:t}){e?this._stoppedVideoTrack?(this._replaceTrackToPeerConnections(this._stoppedVideoTrack,t),delete this._stoppedVideoTrack):this._addTrackToPeerConnections(t):this._stoppedVideoTrack=t}stopOrResumeVideo(e,t){if(["chrome","safari"].includes(om))if(!1===t)setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(Cf,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3);else if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;if(!r)return;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const n=r.getVideoTracks()[0];e.addTrack(n),this._emit(Sf,{streamId:e.id,tracks:[n],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:n})}))}}_shareScreen(e,t){this._emitServerEvent(ef,{streamId:e,hasAudioTrack:!!t.getAudioTracks().length}),this._wasScreenSharing=!0,this._addStreamToPeerConnections(t)}removeStream(e,t,r){this._removeLocalStream(e),this._removeStreamFromPeerConnections(t),this._wasScreenSharing=!1,this._emitServerEvent(tf,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}var lm=Object.freeze({__proto__:null,KalmanFilter:class{constructor({R:e=.01,Q:t=2,A:r=1.1,B:n=1,C:i=1.2}={R:.01,Q:2,A:1.1,B:1,C:1.2}){this.R=e,this.Q=t,this.A=r,this.C=i,this.B=n,this.cov=NaN,this.x=NaN}filter(e,t=0){if(isNaN(this.x))this.x=1/this.C*e,this.cov=1/this.C*this.Q*(1/this.C);else{const r=this.predict(t),n=this.uncertainty(),i=n*this.C*(1/(this.C*n*this.C+this.Q));this.x=r+i*(e-this.C*r),this.cov=n-i*this.C*n}return this.x}predict(e=0){return this.A*this.x+this.B*e}uncertainty(){return this.A*this.cov*this.A+this.R}lastMeasurement(){return this.x}setMeasurementNoise(e){this.Q=e}setProcessNoise(e){this.R=e}},calculateStd:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,r)=>e.concat(Math.pow(r-t,2))),[]).reduce(((e,t)=>e+t),0)/e.length},createACFCalculator:()=>{let e=-1,t=0,r=0;return n=>{const i=n.reduce(((e,t)=>e+t),0)/n.length;if(e=e<0?i:.95*e+.05*i,++r<2)return t=i,0;const s=(i-e)*(t-e);return t=i,s}},standardDeviation:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return{mean:t,SD:Math.sqrt(e.reduce(((e,r)=>e+Math.pow(r-t,2)),0)/e.length)}},variance:(e,t=!1)=>{const r=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,t)=>e.concat(Math.pow(t-r,2))),[]).reduce(((e,t)=>e+t),0)/(e.length-(t?0:1))}});const um={minDecibels:-80,maxDecibels:-10,smoothingTimeConstant:.8,aggSize:1,sampleRate:10,reportRate:2,bins:32,bands:[[0,1,2,3],[4,5,6,7]],separateTrack:{autoGainControl:!1,noiseSupression:!1},binFormula:"bin",scoreFormula:"300 * bands[1].avg / Math.max(bands[1].avg + bands[0].avg, 0.01)",outFormula:"score"},pm=new eh;const hm=new eh,fm=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class mm extends fr{constructor(){super(),this._clients={},this._producers={},this._startMonitor()}close(){clearInterval(this._intervalHandle),delete this._intervalHandle,this._producers={},this._clients={}}_startMonitor(){this._intervalHandle=setInterval((()=>{Object.entries(this._producers).forEach((([e,t])=>{this._evaluateClient(e,t)}))}),600)}_evaluateClient(e,t){this._clients[e]||(this._clients[e]={audio:{currentQuality:fm.ok,trend:[]},video:{currentQuality:fm.ok,trend:[]}}),this._evaluateProducer(e,Object.values(t).filter((e=>"audio"===e.kind)),"audio"),this._evaluateProducer(e,Object.values(t).filter((e=>"video"===e.kind)),"video")}_evaluateProducer(e,t,r){if(0===t.length)return;const n=t.reduce(((e,t)=>e+t.score),0)/t.length,i=this._evaluateScore(n);this._updateTrend(i,this._clients[e][r])&&this.emit(vf,{clientId:e,kind:r,quality:i})}_updateTrend(e,t){return t.trend.push(e),t.trend.length>3&&t.trend.shift(),!(e===t.currentQuality||!t.trend.every((e=>e!==t.currentQuality)))&&(t.currentQuality=e,!0)}addProducer(e,t){e&&t&&"string"==typeof e&&"string"==typeof t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):hm.warn("Missing clientId or producerId")}removeProducer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addConsumer(e,t){e&&t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):hm.warn("Missing clientId or consumerId")}removeConsumer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addProducerScore(e,t,r,n){Array.isArray(n)&&0!==n.length&&!n.some((e=>!e||!e.hasOwnProperty("score")||"number"!=typeof e.score||isNaN(e.score)))?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(n.map((e=>e.score)))}:hm.warn("Unexpected producer score format")}addConsumerScore(e,t,r,n){n&&n.hasOwnProperty("producerScores")&&Array.isArray(n.producerScores)?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(n.producerScores)}:hm.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?fm.warning:e<=7&&e>0?fm.critical:fm.ok}_calcAvgProducerScore(e){try{if(!Array.isArray(e)||0===e.length)return 0;let t=0,r=0;return e.forEach((e=>{e>0&&(t+=e,r++)})),0===t||0===r?0:t/r}catch(e){return hm.error(e),0}}}var gm;const vm=null!==(gm=dl.default)&&void 0!==gm?gm:dl,bm=new eh,ym=vm.browserDetails.browser;let _m=!1;const wm=bl(),Sm=bl();"chrome"===ym&&window.document.addEventListener("beforeunload",(()=>_m=!0));class Cm{constructor({selfId:e,room:t,emitter:r,serverSocket:n,webrtcProvider:i,features:s,eventClaim:o,deviceHandlerFactory:a}){const{session:c,iceServers:d,sfuServer:l,mediaserverConfigTtlSeconds:u}=t;this._selfId=e,this._room=t,this._roomSessionId=null==c?void 0:c.id,this._emitter=r,this._serverSocket=n,this._webrtcProvider=i,this._features=s||{},this._eventClaim=o,this._vegaConnection=null,this._micAnalyser=null,this._micAnalyserDebugger=null,this._mediasoupDevice=a?new Cr.Device({handlerFactory:a}):new Cr.Device({handlerName:bh()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=new Map,this._consumers=new Map,this._dataConsumers=new Map,this._localStreamDeregisterFunction=null,this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._micProducer=null,this._micProducerPromise=null,this._micPaused=!1,this._micScoreProducer=null,this._micScoreProducerPromise=null,this._webcamProducer=null,this._webcamProducerPromise=null,this._webcamPaused=!1,this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._sndTransportIceRestartPromise=null,this._rcvTransportIceRestartPromise=null,this._colocation=null,this._stopCameraTimeout=null,this._audioTrackOnEnded=()=>{Fh.sendEvent("audio_ended",{unloading:_m}),this._emitToPWA(Zf,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:u}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._qualityMonitor=new mm,this._qualityMonitor.on(vf,(e=>{this._emitToPWA(vf,e)}))}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){var n,i;this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,null===(n=this._sendTransport)||void 0===n||n.updateIceServers({iceServers:this._iceServers}),null===(i=this._receiveTransport)||void 0===i||i.updateIceServers({iceServers:this._iceServers}),this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitToSignal(Xh)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on(sf,(e=>{e.error?bm.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(df,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(ef,{streamId:Sm,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){const e=this._features.sfuServerOverrideHost||[this._sfuServer.url],t=new URLSearchParams(Object.assign({clientId:this._selfId,organizationId:this._room.organizationId,roomName:this._room.name,eventClaim:this._room.isClaimed?this._eventClaim:null,lowBw:"true"},Object.keys(this._features||{}).filter((e=>this._features[e]&&/^sfu/.test(e))).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t]:this._features[t]})),{}))),r=`wss://${e}?${t.toString()}`;this._vegaConnection=new dh(r),this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){var e,t;bm.info("_onClose()"),null===(e=this._sendTransport)||void 0===e||e.close(),null===(t=this._receiveTransport)||void 0===t||t.close(),this._sendTransport=null,this._receiveTransport=null,this._streamIdToVideoConsumerId.clear(),this._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA(tm)}_join(){return th(this,void 0,void 0,(function*(){bm.info("join()"),this._emitToPWA(em);try{const{routerRtpCapabilities:e}=yield this._vegaConnection.request("getCapabilities");this._routerRtpCapabilities||(((e,t)=>{const{vp9On:r,h264On:n}=t;if(r){const{preferredPayloadType:t}=e.codecs.find((e=>"video/vp9"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}else if(n){const{preferredPayloadType:t}=e.codecs.find((e=>"video/h264"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}})(e,this._features),this._routerRtpCapabilities=e,yield this._mediasoupDevice.load({routerRtpCapabilities:e})),this._vegaConnection.message("setCapabilities",{rtpCapabilities:this._mediasoupDevice.rtpCapabilities}),this._colocation&&this._vegaConnection.message("setColocation",{colocation:this._colocation}),yield Promise.all([this._createTransport(!0),this._createTransport(!1)]);const t=[];!this._micTrack||this._micProducer||this._micProducerPromise||t.push(this._internalSendMic()),!this._webcamTrack||this._webcamProducer||this._webcamProducerPromise||t.push(this._internalSendWebcam()),!this._screenVideoTrack||this._screenVideoProducer||this._screenVideoProducerPromise||t.push(this._internalSendScreenVideo()),!this._screenAudioTrack||this._screenAudioProducer||this._screenAudioProducerPromise||t.push(this._internalSendScreenAudio()),yield Promise.all(t)}catch(e){bm.error("_join() [error:%o]",e)}}))}_createTransport(e){return th(this,void 0,void 0,(function*(){const t=e?"createSendTransport":"createRecvTransport",r=yield this._vegaConnection.request("createTransport",{producing:e,consuming:!e,enableTcp:!0,enableUdp:!0,preferUdp:!0,sctpParameters:{enableSctp:!0,numSctpStreams:{OS:1024,MIS:1024},maxSctpMessageSize:262144,sctpSendBufferSize:262144}});r.iceServers=this._iceServers,((e,t)=>{if(!t.useOnlyTURN)return;e.iceTransportPolicy="relay";const r={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[t.useOnlyTURN];r&&(e.iceServers=e.iceServers.filter((e=>e.url&&e.url.match(r))))})(r,this._features);const n=this._mediasoupDevice[t](r),i=t=>th(this,void 0,void 0,(function*(){if(bm.info(`Transport ConnectionStateChanged ${t}`),"disconnected"===t||"failed"===t)if(e){if(this._sndTransportIceRestartPromise)return;this._sndTransportIceRestartPromise=this._restartIce(n).finally((()=>{this._sndTransportIceRestartPromise=null}))}else{if(this._rcvTransportIceRestartPromise)return;this._rcvTransportIceRestartPromise=this._restartIce(n).finally((()=>{this._rcvTransportIceRestartPromise=null}))}}));n.on("connect",(({dtlsParameters:e},t)=>{var r;null===(r=this._vegaConnection)||void 0===r||r.message("connectTransport",{transportId:n.id,dtlsParameters:e}),t()})).on("connectionstatechange",i),n.observer.once("close",(()=>{n.removeListener(i)})),e?(n.on("produce",(({kind:e,rtpParameters:t,appData:r},i,s)=>th(this,void 0,void 0,(function*(){var o;try{const{paused:s}=r,{id:a}=yield null===(o=this._vegaConnection)||void 0===o?void 0:o.request("produce",{transportId:n.id,kind:e,rtpParameters:t,paused:s,appData:r});i({id:a})}catch(e){s(e)}})))),n.on("producedata",(({appData:e,sctpStreamParameters:t},r,i)=>th(this,void 0,void 0,(function*(){var s;try{const{id:i}=yield null===(s=this._vegaConnection)||void 0===s?void 0:s.request("produceData",{transportId:n.id,sctpStreamParameters:t,appData:e});r({id:i})}catch(e){i(e)}})))),this._sendTransport=n):this._receiveTransport=n}))}_restartIce(e,t=0){return th(this,void 0,void 0,(function*(){if(!e||!("closed"in e)||!("connectionState"in e))return void bm.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void bm.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void bm.info("_restartIce: Connection is healthy ICE restart no loneger needed!");const{iceRestartStarted:r}=e.appData,n=Date.now();if(Number.isFinite(r)&&n-r<3500)return;if(e.appData.iceRestartStarted=n,5<=t)return void bm.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void bm.info("_restartIce: Connection is undefined");const{iceParameters:i}=yield this._vegaConnection.request("restartIce",{transportId:e.id});bm.info("_restartIce: ICE restart iceParameters received from SFU: ",i);const s=yield e.restartIce({iceParameters:i}).then((()=>null)).catch((e=>e));if(s)switch(bm.error(`_restartIce: ICE restart failed: ${s}`),s.message){case"missing transportId":case"no such transport":break;default:yield new Promise((e=>{setTimeout((()=>{e(void 0)}),Math.min(3500*Math.pow(2,t),6e4))})),yield this._restartIce(e,t+1)}else yield new Promise((e=>{setTimeout((()=>{e(void 0)}),6e4*Math.min(8,t+1))})),"failed"!==e.connectionState&&"disconnected"!==e.connectionState||(yield this._restartIce(e,t+1))}))}_internalSendMic(){return th(this,void 0,void 0,(function*(){bm.info("_internalSendMic()"),this._micProducerPromise=(()=>th(this,void 0,void 0,(function*(){try{if(!this._micTrack||!this._sendTransport||this._micProducer)return void(this._micProducerPromise=null);const e=this._micPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._micTrack,disableTrackOnPause:!1,stopTracks:!1},vh("audio",!1,this._features)),{appData:{streamId:wm,sourceClientId:this._selfId,screenShare:!1,source:"mic",paused:e}}));e?t.pause():t.resume(),this._micProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;bm.info('micProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._micProducer=null,this._micProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._micTrack!==this._micProducer.track&&(yield this._replaceMicTrack()),this._micPaused!==this._micProducer.paused&&this._pauseResumeMic()}catch(e){bm.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})))()}))}_internalSetupMicScore(){return th(this,void 0,void 0,(function*(){bm.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(()=>th(this,void 0,void 0,(function*(){try{if(!this._micProducer||!this._colocation||this._micScoreProducer)return void(this._micScoreProducerPromise=null);const e=yield this._sendTransport.produceData({ordered:!1,maxPacketLifeTime:3e3,label:"micscore",appData:{producerId:this._micProducer.id,clientId:this._selfId}});this._micScoreProducer=e,e.observer.once("close",(()=>{var t;bm.info('micScoreProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeDataProducers",{dataProducerIds:[e.id]})),this._micScoreProducer=null,this._micScoreProducerPromise=null}))}catch(e){bm.error("micScoreProducer failed:%o",e)}finally{this._micScoreProducerPromise=null,this._micProducer&&this._colocation||this._stopMicScoreProducer()}})))()}))}_stopMicScoreProducer(){this._stopProducer(this._micScoreProducer),this._micScoreProducer=null}_replaceMicTrack(){var e;return th(this,void 0,void 0,(function*(){bm.info("_replaceMicTrack()"),this._micTrack&&this._micProducer&&!this._micProducer.closed&&this._micProducer.track!==this._micTrack&&(yield this._micProducer.replaceTrack({track:this._micTrack}),null===(e=this._micAnalyser)||void 0===e||e.setTrack(this._micTrack),yield this._replaceMicTrack())}))}_pauseResumeMic(){var e,t;bm.info("_pauseResumeMic()"),this._micProducer&&!this._micProducer.closed&&this._micPaused!==this._micProducer.paused&&(this._micPaused?(this._micProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._micProducer.id]})):(this._micProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._micProducer.id]})),this._pauseResumeMic())}_sendMic(e){return th(this,void 0,void 0,(function*(){return bm.info("_sendMic() [track:%o]",e),this._micTrack=e,this._micProducer?yield this._replaceMicTrack():this._micProducerPromise?void 0:this._sendTransport?yield this._internalSendMic():void 0}))}_sendMicScore(e){if(!isNaN(e)&&isFinite(e))if(this._micScoreProducer){if(this._micScoreProducer.closed)return void this._stopMicScoreProducer();try{this._micScoreProducer.send(JSON.stringify({score:e}))}catch(e){bm.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}_internalSendWebcam(){return th(this,void 0,void 0,(function*(){bm.info("_internalSendWebcam()"),this._webcamProducerPromise=(()=>th(this,void 0,void 0,(function*(){try{if(!this._webcamTrack||!this._sendTransport||this._webcamProducer)return void(this._webcamProducerPromise=null);const e=this._webcamPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1},vh("video",!1,this._features)),{appData:{streamId:wm,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:e}}));e?t.pause():t.resume(),this._webcamProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;bm.info('webcamProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._webcamTrack!==this._webcamProducer.track&&(yield this._replaceWebcamTrack()),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){bm.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(yield this._stopProducer(this._webcamProducer),this._webcamProducer=null)}})))()}))}_replaceWebcamTrack(){return th(this,void 0,void 0,(function*(){bm.info("_replaceWebcamTrack()"),this._webcamTrack&&this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track!==this._webcamTrack&&(yield this._webcamProducer.replaceTrack({track:this._webcamTrack}),yield this._replaceWebcamTrack())}))}_pauseResumeWebcam(){var e,t;bm.info("_pauseResumeWebcam()"),this._webcamProducer&&!this._webcamProducer.closed&&this._webcamPaused!==this._webcamProducer.paused&&(this._webcamPaused?(this._webcamProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._webcamProducer.id]})):(this._webcamProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._webcamProducer.id]})),this._pauseResumeWebcam())}_sendWebcam(e){return th(this,void 0,void 0,(function*(){return bm.info("_sendWebcam() [track:%o]",e),this._webcamTrack=e,this._webcamProducer?yield this._replaceWebcamTrack():this._webcamProducerPromise?void 0:this._sendTransport?yield this._internalSendWebcam():void 0}))}_internalSendScreenVideo(){return th(this,void 0,void 0,(function*(){bm.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(()=>th(this,void 0,void 0,(function*(){try{if(!this._screenVideoTrack||!this._sendTransport||this._screenVideoProducer)return void(this._screenVideoProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenVideoTrack,disableTrackOnPause:!1,stopTracks:!1},vh("video",!0,this._features)),{appData:{streamId:Sm,sourceClientId:this._selfId,screenShare:!0,source:"screenvideo",paused:!1}}));this._screenVideoProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;bm.info('screenVideoProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenVideoTrack!==this._screenVideoProducer.track&&(yield this._replaceScreenVideoTrack())}catch(e){bm.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(yield this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null)}})))()}))}_replaceScreenVideoTrack(){return th(this,void 0,void 0,(function*(){bm.info("_replaceScreenVideoTrack()"),this._screenVideoTrack&&this._screenVideoProducer&&!this._screenVideoProducer.closed&&this._screenVideoProducer.track!==this._screenVideoTrack&&(yield this._screenVideoProducer.replaceTrack({track:this._screenVideoTrack}),yield this._replaceScreenVideoTrack())}))}_sendScreenVideo(e){return th(this,void 0,void 0,(function*(){return bm.info("_sendScreenVideo() [track:%o]",e),this._screenVideoTrack=e,this._screenVideoProducer?yield this._replaceScreenVideoTrack():this._screenVideoProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenVideo():void 0}))}_internalSendScreenAudio(){return th(this,void 0,void 0,(function*(){bm.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(()=>th(this,void 0,void 0,(function*(){try{if(!this._screenAudioTrack||!this._sendTransport||this._screenAudioProducer)return void(this._screenAudioProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenAudioTrack,disableTrackOnPause:!1,stopTracks:!1},vh("audio",!0,this._features)),{appData:{streamId:Sm,sourceClientId:this._selfId,screenShare:!0,source:"screenaudio",paused:!1}}));this._screenAudioProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;bm.info('screenAudioProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenAudioTrack!==this._screenAudioProducer.track&&(yield this._replaceScreenAudioTrack())}catch(e){bm.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(yield this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})))()}))}_replaceScreenAudioTrack(){return th(this,void 0,void 0,(function*(){bm.info("_replaceScreenAudioTrack()"),this._screenAudioTrack&&this._screenAudioProducer&&!this._screenAudioProducer.closed&&this._screenAudioProducer.track!==this._screenAudioTrack&&(yield this._screenAudioProducer.replaceTrack({track:this._screenAudioTrack}),yield this._replaceScreenAudioTrack())}))}_sendScreenAudio(e){return th(this,void 0,void 0,(function*(){return bm.info("_sendScreenAudio() [track:%o]",e),this._screenAudioTrack=e,this._screenAudioProducer?yield this._replaceScreenAudioTrack():this._screenAudioProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenAudio():void 0}))}_stopProducer(e){bm.info("_stopProducer()"),e&&!e.closed&&(e.appData.localClosed=!0,e.close())}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._room.name===t&&Boolean(r)}setEventClaim(e){var t;this._eventClaim=e,null===(t=this._vegaConnection)||void 0===t||t.message("eventClaim",{eventClaim:e})}setColocation(e){var t;this._colocation=e,null===(t=this._vegaConnection)||void 0===t||t.message("setColocation",{colocation:e}),e||!this._micScoreProducer||this._micScoreProducerPromise||this._stopMicScoreProducer(),this._syncMicAnalyser(),Fh.sendEvent("colocation_changed",{colocation:e})}setAudioOnly(e){var t;null===(t=this._vegaConnection)||void 0===t||t.message(e?"enableAudioOnly":"disableAudioOnly")}setRemoteScreenshareVideoTrackIds(){}setRoomSessionId(e){this._roomSessionId=e}disconnect(e,t,r){var n;if(bm.info("disconnect() [clientIdOrStreamId:%s, eventClaim:%s]",e,r),this._clientStates.has(e)){const t=this._clientStates.get(e);t.hasAcceptedWebcamStream=!1,t.hasAcceptedScreenStream=!1,this._syncIncomingStreamsWithPWA(e)}r&&(this._eventClaim=r,null===(n=this._vegaConnection)||void 0===n||n.message("eventClaim",{eventClaim:r}))}replaceTrack(e,t){e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),"audio"===t.kind&&(this._startMonitoringAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){bm.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal(tf,{streamId:Sm,requestedByClientId:r}),this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null,this._screenVideoTrack=null,this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null,this._screenAudioTrack=null}_onMicAnalyserScoreUpdated(e){var t,r;null===(r=null===(t=this._micAnalyserDebugger)||void 0===t?void 0:t.onScoreUpdated)||void 0===r||r.call(t,e),this._sendMicScore(this._micPaused?0:e.out)}addNewStream(e,t,r,n){if("0"===e){this._micPaused=r,this._webcamPaused=n;const e=t.getVideoTracks()[0],i=t.getAudioTracks()[0];e&&this._sendWebcam(e),i&&(this._sendMic(i),this._syncMicAnalyser(),this._startMonitoringAudioTrack(i)),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const s=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",s),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",s)}}else{const e=t.getVideoTracks()[0],r=t.getAudioTracks()[0];e&&this._sendScreenVideo(e),r&&this._sendScreenAudio(r),this._emitScreenshareStarted()}}_syncMicAnalyser(){if(!this._micTrack||!this._colocation||this._micAnalyser)return this._micAnalyser&&!this._colocation?(this._micAnalyser.close(),void(this._micAnalyser=null)):void 0;this._micAnalyser=function({micTrack:e,params:t,onScoreUpdated:r}){const n=new AudioContext;let i=null,s=null,o=null,a=!1;const c=e=>th(this,void 0,void 0,(function*(){if(o&&a&&o.stop(),a=!1,e&&t.separateTrack)try{const r=yield navigator.mediaDevices.getUserMedia({audio:Object.assign({deviceId:null==o?void 0:o.getSettings().deviceId},t.separateTrack),video:!1});e=r.getAudioTracks()[0],a=!0}catch(e){pm.warn("unable to fetch new track for colocation speaker analysis, using current",e)}if(o=e,s&&(s.disconnect(),s=null),e){const t=new MediaStream([e]);s=n.createMediaStreamSource(t),s.connect(i)}}));let d;const l=e=>{if(clearInterval(d),t=Object.assign(Object.assign({},um),e),!i||i.fftSize!==2*t.bins){let e=null;i&&(e=o,c(null)),i=n.createAnalyser(),i.fftSize=2*t.bins,e&&c(e)}const s=new Uint8Array(i.frequencyBinCount),a=[];i.minDecibels=t.minDecibels,i.maxDecibels=t.maxDecibels,i.smoothingTimeConstant=t.smoothingTimeConstant;const l=t.initScript&&new Function("f","setTrack","lastTrack",t.initScript.join("\n")),u=t.scoreScript&&new Function("bins","g","f",t.scoreScript.join("\n")),p=t.scoreFormula&&new Function("bands",`return ${t.scoreFormula}`),h=t.outFormula&&new Function("score","avg","max","scores",`return ${t.outFormula}`),f=t.binFormula&&new Function("bin","index",`return ${t.binFormula}`);let m=0;const g=l&&l(lm,c,o);d=setInterval((()=>{i.getByteFrequencyData(s);let e=0;if(p){const r=t.bands.map((e=>{const t=e.map((e=>f(s[e]/255,e)));return{avg:t.reduce(((e,t)=>e+t),0)/e.length,min:t.reduce(((e,t)=>Math.min(e,t/255)),Number.MAX_VALUE),max:t.reduce(((e,t)=>Math.max(e,t/255)),0)}}));e=p(r)||0}else u&&(e=u(s,g,lm),isNaN(e)&&(e=0));if(a.push(e),a.length>t.aggSize&&a.shift(),m++,m>=t.reportRate){m=0;const t=a.reduce(((e,t)=>Math.max(e,t)),0),n=a.reduce(((e,t)=>e+t),0)/a.length,i=h(e,n,t,a);r({bins:s,score:e,max:t,avg:n,out:i})}}),1e3/t.sampleRate)};return l(t),c(e),{setParams:l,setTrack:c,close(){c(null),clearInterval(d),n.close()}}}({micTrack:this._micTrack,onScoreUpdated:this._onMicAnalyserScoreUpdated.bind(this)})}stopOrResumeAudio(e,t){bm.info("stopOrResumeAudio() [enabled:%s]",t),this._micPaused=!t,this._pauseResumeMic()}_handleStopOrResumeVideo({enable:e,track:t}){e?this._sendWebcam(t):this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track===t&&(this._stopProducer(this._webcamProducer),this._webcamProducer=null,this._webcamTrack=null)}stopOrResumeVideo(e,t){if(bm.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(ym))if(t){if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const n=r.getVideoTracks()[0];e.addTrack(n),this._emitToPWA(Sf,{streamId:e.id,tracks:[n],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:n})}))}}else clearTimeout(this._stopCameraTimeout),this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(Cf,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3)}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){bm.info("acceptNewStream()",{streamId:e,clientId:t}),this.rtcStatsReconnect();const r=this._getOrCreateClientState(t);e!==t?(r.hasAcceptedScreenStream=!0,r.hasEmittedScreenStream=!1):(r.hasAcceptedWebcamStream=!0,r.hasEmittedWebcamStream=!1),this._syncIncomingStreamsWithPWA(t)}updateStreamResolution(e,t,{width:r,height:n}){var i,s,o,a,c;bm.info("updateStreamResolution()",{streamId:e,width:r,height:n});const d=this._streamIdToVideoConsumerId.get(e),l=this._consumers.get(d);if(!l)return;let u=0;this._consumers.forEach((e=>{var t,r;e._closed||e._paused||"webcam"!==(null===(t=e._appData)||void 0===t?void 0:t.source)&&"screenvideo"!==(null===(r=e._appData)||void 0===r?void 0:r.source)||u++}));let p=2;/T3/.test((null===(o=null===(s=null===(i=l._rtpParameters)||void 0===i?void 0:i.encodings)||void 0===s?void 0:s[0])||void 0===o?void 0:o.scalabilityMode)||"")&&(p=3);const h=Math.max(r,n);let f=h>=480?h>=960?2:1:0,m=p-1;h<100&&(m=Math.max(p-2,0)),u>8&&0===f&&(m=Math.max(p-2,0)),u<4&&h>300&&0===f&&(f=1),(null===(a=this._features)||void 0===a?void 0:a.uncappedSingleRemoteVideoOn)&&1===u&&(f=2,m=p-1),l.appData.spatialLayer===f&&l.appData.temporalLayer===m||(l.appData.spatialLayer=f,l.appData.temporalLayer=m,null===(c=this._vegaConnection)||void 0===c||c.message("setConsumersPreferredLayers",{consumerIds:[d],spatialLayer:f,temporalLayer:m}))}disconnectAll(){var e,t,r,n;this._reconnect=!1,this._reconnectTimeOut&&(clearTimeout(this._reconnectTimeOut),this._reconnectTimeOut=null),this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null),this._socketListenerDeregisterFunctions=[],null===(e=this._vegaConnection)||void 0===e||e.removeAllListeners(),null===(t=this._vegaConnection)||void 0===t||t.close(),null===(r=this._sendTransport)||void 0===r||r.close(),null===(n=this._receiveTransport)||void 0===n||n.close(),this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._streamIdToVideoConsumerId.clear(),this._mediasoupDevice=null}sendAudioMutedStats(e){Fh.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Fh.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Fh.sendEvent(e,t)}rtcStatsDisconnect(){Fh.server.close()}rtcStatsReconnect(){Fh.server.connected||Fh.server.connect()}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_onMessage(e){return th(this,void 0,void 0,(function*(){const{method:t,data:r}=e;return Promise.resolve().then((()=>{switch(t){case"consumerReady":return this._onConsumerReady(r);case"consumerClosed":return this._onConsumerClosed(r);case"consumerPaused":return this._onConsumerPaused(r);case"consumerResumed":return this._onConsumerResumed(r);case"dataConsumerReady":return this._onDataConsumerReady(r);case"dataConsumerClosed":return this._onDataConsumerClosed(r);case"dominantSpeaker":return this._onDominantSpeaker(r);case"consumerScore":return this._onConsumerScore(r);case"producerScore":return this._onProducerScore(r);default:return void bm.info(`unknown message method "${t}"`)}})).catch((e=>{bm.error('"message" failed [error:%o]',e)}))}))}_onConsumerReady(e){return th(this,void 0,void 0,(function*(){bm.info("_onConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consume(e);if(t.pause(),t.appData.localPaused=!0,t.appData.spatialLayer=2,this._consumers.set(t.id,t),this._qualityMonitor.addConsumer(t.appData.sourceClientId,t.id),t.observer.once("close",(()=>{this._consumers.delete(t.id),this._qualityMonitor.removeConsumer(t.appData.sourceClientId,t.id),this._consumerClosedCleanup(t)})),this._features.increaseIncomingMediaBufferOn&&t.rtpReceiver)try{t.rtpReceiver.jitterBufferTarget=wh,t.rtpReceiver.playoutDelayHint=.4}catch(e){bm.error("Error during setting jitter buffer target:",e)}const{sourceClientId:r,screenShare:n,streamId:i}=t.appData,s=this._getOrCreateClientState(r);n?(s.hasEmittedScreenStream=!1,s.screenShareStreamId=i):(s.hasEmittedWebcamStream=!1,s.camStreamId=i);let o=n?s.screenStream:s.webcamStream;o&&o.inboundId===i||(o=new MediaStream,o.inboundId=i,n?s.screenStream=o:s.webcamStream=o),"video"===t.kind&&this._streamIdToVideoConsumerId.set(o.id,t.id),o.addTrack(t.track),this._syncIncomingStreamsWithPWA(r)}))}_onConsumerClosed({consumerId:e,reason:t}){var r;return th(this,void 0,void 0,(function*(){bm.info("_onConsumerClosed()",{consumerId:e,reason:t}),null===(r=this._consumers.get(e))||void 0===r||r.close()}))}_onConsumerPaused({consumerId:e}){bm.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){bm.info("_onConsumerResumed()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!1,t.appData.localPaused||t.resume())}_onConsumerScore({consumerId:e,kind:t,score:r}){bm.info("_onConsumerScore()",{consumerId:e,kind:t,score:r});const{appData:{sourceClientId:n}}=this._consumers.get(e)||{appData:{}};n&&this._qualityMonitor.addConsumerScore(n,e,t,r)}_onProducerScore({producerId:e,kind:t,score:r}){bm.info("_onProducerScore()",{producerId:e,kind:t,score:r}),[this._micProducer,this._webcamProducer,this._screenVideoProducer,this._screenAudioProducer].forEach((n=>{(null==n?void 0:n.id)===e&&this._qualityMonitor.addProducerScore(this._selfId,e,t,r)}))}_onDataConsumerReady(e){return th(this,void 0,void 0,(function*(){bm.info("_onDataConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consumeData(e);this._dataConsumers.set(t.id,t),t.once("close",(()=>{this._dataConsumers.delete(t.id)}));const{clientId:r}=t.appData;t.on("message",(e=>{var r;if(!this._micAnalyserDebugger)return;if("string"!=typeof e)return;const{score:n}=JSON.parse(e);n&&(null===(r=this._micAnalyserDebugger)||void 0===r||r.onConsumerScore(t.appData.clientId,n))})),this._syncIncomingStreamsWithPWA(r)}))}_onDataConsumerClosed({dataConsumerId:e,reason:t}){return th(this,void 0,void 0,(function*(){bm.info("_onDataConsumerClosed()",{dataConsumerId:e,reason:t});const r=this._dataConsumers.get(e);null==r||r.close()}))}_onDominantSpeaker({consumerId:e}){const t=this._consumers.get(e);if(!t)return;const{sourceClientId:r}=t.appData;this._emitToPWA(rm,{clientId:r})}_consumerClosedCleanup(e){const{sourceClientId:t,screenShare:r}=e.appData,n=this._getOrCreateClientState(t),i=r?n.screenStream:n.webcamStream;i&&(i.removeTrack(e.track),0===i.getTracks().length&&(this._streamIdToVideoConsumerId.delete(i.id),r?(n.screenStream=null,n.hasEmittedScreenStream=!1,n.screenShareStreamId=null):(n.hasEmittedWebcamStream=!1,n.camStreamId=null)))}_syncIncomingStreamsWithPWA(e){var t,r;const n=this._getOrCreateClientState(e),{webcamStream:i,screenStream:s,hasEmittedWebcamStream:o,hasEmittedScreenStream:a,hasAcceptedWebcamStream:c,hasAcceptedScreenStream:d,screenShareStreamId:l,camStreamId:u}=n,p=[],h=[];this._consumers.forEach((t=>{if(t.appData.sourceClientId!==e)return;const r=t.appData.screenShare?d:c;!t.appData.localPaused!==r&&(r?(t.appData.remotePaused||t.resume(),t.appData.localPaused=!1,h.push(t.id)):(t.pause(),t.appData.localPaused=!0,p.push(t.id)))})),p.length>0&&(null===(t=this._vegaConnection)||void 0===t||t.message("pauseConsumers",{consumerIds:p})),h.length>0&&(null===(r=this._vegaConnection)||void 0===r||r.message("resumeConsumers",{consumerIds:h})),i&&!o&&c&&(this._emitToPWA(yf,{clientId:e,stream:i,streamId:u,streamType:"webcam"}),n.hasEmittedWebcamStream=!0),s&&!a&&d&&(this._emitToPWA(yf,{clientId:e,stream:s,streamId:l,streamType:"screenshare"}),n.hasEmittedScreenStream=!0)}_getOrCreateClientState(e){let t=this._clientStates.get(e);return t||(t={hasAcceptedWebcamStream:!1,hasAcceptedScreenStream:!1,hasEmittedWebcamStream:!1,hasEmittedScreenStream:!1,webcamStream:null,screenStream:null,screenShareStreamId:null,camStreamId:null},this._clientStates.set(e,t)),t}_emitToPWA(e,t){this._emitter.emit(e,t)}_emitToSignal(e,t,r){this._serverSocket.emit(e,t,r)}shouldAcceptStreamsFromBothSides(){return!0}setMicAnalyserDebugger(e){this._micAnalyserDebugger=e}setMicAnalyserParams(e){var t;null===(t=this._micAnalyser)||void 0===t||t.setParams(e)}hasClient(e){return this._clientStates.has(e)}}class Rm{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:n}){this.emitter=e,this.currentManager=null,t.on(df,(({room:i,selfId:s,error:o,eventClaim:a})=>{if(o)return;const c={selfId:s,room:i,emitter:e,serverSocket:t,webrtcProvider:r,features:n,eventClaim:a,deviceHandlerFactory:null==n?void 0:n.deviceHandlerFactory},d=!!i.sfuServer;if(this.currentManager){if(this.currentManager.isInitializedWith({selfId:s,roomName:i.name,isSfu:d}))return void(this.currentManager.setEventClaim&&a&&this.currentManager.setEventClaim(a));this.currentManager.disconnectAll(),e.emit(wf)}let l=null;l=d?new Cm(c):new dm(c),l.setupSocketListeners(),e.emit(_f,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(wf))}}var Pm;!function(e){e.rtc_manager_created="rtc_manager_created",e.stream_added="stream_added"}(Pm||(Pm={}));class Tm extends Error{constructor(e){super(e.message),this.name="AssertionError",this.code="ERR_ASSERTION",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,Error.captureStackTrace&&Error.captureStackTrace(this,e.stackStartFn)}}function km(e){if(e.message instanceof Error)throw e.message;throw new Tm(e)}function Em(...e){!function(e,t,r,n){if(!r){let i=!1;if(0===t)i=!0,n="No value argument passed to `assert.ok()`";else if(n instanceof Error)throw n;const s=new Tm({actual:r,expected:!0,message:n,operator:"==",stackStartFn:e});throw s.generatedMessage=i,s}}(Em,e.length,...e)}const Om={fail:e=>{km({actual:"fail()",expected:"fail() should not be called",message:e,operator:"fail",stackStartFn:Om.fail})},ok:Em,notEqual:function e(t,r,n){if(arguments.length<2)throw new Error("'actual' and 'expected' arguments are required");t==r&&km({actual:t,expected:r,message:n,operator:"!=",stackStartFn:e})}};Om.ok=Em;const Dm=new eh;class Im extends fr{constructor(e){super(),this._socket=e,this._clients={},this._signalDisconnectTime=void 0,this.rtcManager=void 0,this.metrics={roomJoinedLate:0,pendingClientCanceled:0,evaluationFailed:0,roomJoined:0},e.on("disconnect",(()=>{this._signalDisconnectTime=Date.now()})),e.on(df,(e=>this._onRoomJoined(e))),e.on(of,(e=>this._onNewClient(e))),e.on(nf,(e=>this._onClientLeft(e))),e.on(gf,(e=>this._onPendingClientLeft(e))),e.on(rf,(e=>this._onAudioEnabled(e))),e.on(lf,(e=>this._onVideoEnabled(e))),e.on(af,(e=>this._onScreenshareChanged(e,!0))),e.on(cf,(e=>this._onScreenshareChanged(e,!1)))}_onRoomJoined(e){var t,r;return th(this,void 0,void 0,(function*(){if(!(null===(t=e.room)||void 0===t?void 0:t.clients))return void this.emit(df,e);if(!e.selfId)return void this.emit(df,e);const n=null===(r=e.room.clients.find((t=>e.selfId===t.id)))||void 0===r?void 0:r.deviceId;if(!n)return void this.emit(df,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===n&&e.isPendingToLeave))),void this.emit(df,e);const i=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>i)return this._resetClientState(e),this.emit(df,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===n&&e.isPendingToLeave)));const s=yield oh();e.room.clients.forEach((t=>{var r;try{if(t.id===e.selfId)return;if(!this._clients[t.id])return void this._addClientToState(t);if(!(null===(r=this.rtcManager)||void 0===r?void 0:r.hasClient(t.id)))return;if(this._hasClientStateChanged({clientId:t.id,webcam:t.isVideoEnabled,mic:t.isAudioEnabled,screenShare:t.streams.length>1}))return;if(this._wasClientSendingMedia(t.id)&&!this._isClientMediaActive(s,t.id))return;t.mergeWithOldClientState=!0}catch(e){Dm.error("Failed to evaluate if we should merge client state %o",e),this.metrics.evaluationFailed++}})),e.room.clients.forEach((e=>{e.isPendingToLeave&&this._onPendingClientLeft({clientId:e.id})})),this.metrics.roomJoined++,this.emit(df,e)}))}_onClientLeft(e){var t;const{clientId:r}=e,n=this._clients[r];n&&(clearTimeout(n.timeout),delete this._clients[r]),null===(t=this.rtcManager)||void 0===t||t.disconnect(r,null,e.eventClaim),this.emit(nf,e)}_onPendingClientLeft(e){const{clientId:t}=e,r=this._clients[t];r?r.isPendingToLeave||(r.isPendingToLeave=!0,this._wasClientSendingMedia(t)&&(r.checkActiveMediaAttempts=0,this._abortIfNotActive(e))):Dm.warn(`client ${t} not found`)}_onNewClient(e){const{client:{id:t,deviceId:r}}=e,n=this._clients[t];if(n&&n.isPendingToLeave)return clearTimeout(n.timeoutHandler),n.isPendingToLeave=!1,void this.metrics.pendingClientCanceled++;this._getPendingClientsByDeviceId(r).forEach((e=>{clearTimeout(e.timeoutHandler),e.isPendingToLeave=void 0,this.emit(nf,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(of,e)}_abortIfNotActive(e){return th(this,void 0,void 0,(function*(){const{clientId:t}=e;let r=this._clients[t];if(!(null==r?void 0:r.isPendingToLeave))return;if(r.checkActiveMediaAttempts++,r.checkActiveMediaAttempts>3)return;(yield this._checkIsActive(t))?r.timeoutHandler=setTimeout((()=>this._abortIfNotActive(e)),500):(r=this._clients[t],(null==r?void 0:r.isPendingToLeave)&&(clearTimeout(r.timeoutHandler),delete this._clients[t],this.emit(nf,e)))}))}_checkIsActive(e){return th(this,void 0,void 0,(function*(){const t=yield oh();return this._isClientMediaActive(t,e)}))}_isClientMediaActive(e,t){const r=null==e?void 0:e[t];let n=!1;return r&&Object.entries(r.tracks).forEach((([e,t])=>{"probator"!==e&&Object.values(t.ssrcs).forEach((e=>{(e.bitrate||0)>0&&(n=!0)}))})),n}_onAudioEnabled(e){const{clientId:t,isAudioEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isAudioEnabled:r})}_onVideoEnabled(e){const{clientId:t,isVideoEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isVideoEnabled:r})}_onScreenshareChanged(e,t){const{clientId:r}=e;this._clients[r]=Object.assign(Object.assign({},this._clients[r]||{}),{isScreenshareEnabled:t})}_hasClientStateChanged({clientId:e,webcam:t,mic:r,screenShare:n}){const i=this._clients[e];if(!i)throw new Error(`Client ${e} not found in ReconnectManager state`);return t!==i.isVideoEnabled||(r!==i.isAudioEnabled||n!==i.isScreenshareEnabled)}_addClientToState(e){this._clients[e.id]=Object.assign(Object.assign({},this._clients[e.id]||{}),{isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled,isScreenshareEnabled:e.streams.length>1,deviceId:e.deviceId,isPendingToLeave:e.isPendingToLeave,clientId:e.id})}_wasClientSendingMedia(e){const t=this._clients[e];if(!t)throw new Error(`Client ${e} not found in ReconnectManager state`);return t.isAudioEnabled||t.isVideoEnabled||t.isScreenshareEnabled}_getPendingClientsByDeviceId(e){return Object.values(this._clients).filter((t=>t.deviceId===e&&t.isPendingToLeave))}_resetClientState(e){this._clients={},e.room.clients.forEach((t=>{t.id!==e.selfId&&this._addClientToState(t)}))}}var xm;const Mm=null!==(xm=dl.default)&&void 0!==xm?xm:dl;class jm{constructor(e,t,r=!1){this._wasConnectedUsingWebsocket=!1,this._reconnectManager=null,this._socket=Zp(e,Object.assign({path:"/protocol/socket.io/v4",randomizationFactor:.5,reconnectionDelay:250,reconnectionDelayMax:5e3,timeout:5e3,transports:["websocket"],withCredentials:!0},t)),this._socket.io.on("reconnect",(()=>{this._socket.sendBuffer=[]})),this._socket.io.on("reconnect_attempt",(()=>{this._wasConnectedUsingWebsocket?(this._socket.io.opts.transports=["websocket"],"safari"!==Mm.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new Im(this._socket)),this._socket.on("connect",(()=>{"websocket"===this.getTransport()&&(this._wasConnectedUsingWebsocket=!0,this.noopKeepaliveInterval||(this.noopKeepaliveInterval=setInterval((()=>{try{this._socket.connected&&this._socket.io.engine.sendPacket("noop")}catch(e){}}),2e3)))})),this._socket.on("disconnect",(()=>{this.noopKeepaliveInterval&&(clearInterval(this.noopKeepaliveInterval),this.noopKeepaliveInterval=null)}))}setRtcManager(e){this._reconnectManager&&(this._reconnectManager.rtcManager=e)}connect(){this.isConnected()||this.isConnecting()||this._socket.open()}disconnect(){this._socket.disconnect()}disconnectOnConnect(){this._socket.once("connect",(()=>{this._socket.disconnect()}))}emit(e,...t){this._socket.emit.apply(this._socket,arguments)}emitIfConnected(e,t){this.isConnected()&&this.emit(e,t)}getTransport(){return this._socket&&this._socket.io&&this._socket.io.engine&&this._socket.io.engine.transport&&this._socket.io.engine.transport.name}getManager(){return this._socket.io}isConnecting(){return this._socket&&this._socket.connecting}isConnected(){return this._socket&&this._socket.connected}on(e,t){const r=[df,nf,of];return this._reconnectManager&&r.includes(e)?this._interceptEvent(e,t):(this._socket.on(e,t),()=>{this._socket.off(e,t)})}once(e,t){this._socket.once(e,t)}off(e,t){this._socket.off(e,t)}_interceptEvent(e,t){return this._reconnectManager&&this._reconnectManager.on(e,t),()=>{this._reconnectManager&&this._reconnectManager.removeListener(e,t)}}getGlitchFreeMetrics(){var e;return null===(e=this._reconnectManager)||void 0===e?void 0:e.metrics}}const Lm=[{pattern:/^(?:([^.]+)[.])?(server:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?(localhost:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?((\d+[.]){3}:?\d*)$/,separator:"."},{pattern:/^(?:([^.]+)-)?(ip-[^.]*[.](?:hereby[.]dev|rfc1918[.]disappear[.]at)(?::\d+|))$/,separator:"-"},{pattern:/^(?:([^.]+)[.])?((:?[^.]+[.]){1,}[^.]+)$/,separator:"."}];function Am({host:e="whereby.com",protocol:t="https:"}={}){let r="",n=e,i=".";for(const{separator:t,pattern:s}of Lm){const o=s.exec(e);if(o){r=o[1]||"",n=o[2],i=t;break}}const s=r?`${r}${i}${n}`:n;return{domain:n,domainWithSeparator:`${i}${n}`,organizationDomain:s,organization:`${t}//${s}`,service:`${t}//${n}`,subdomain:r}}Am(window&&window.location);var Nm={exports:{}};Nm.exports=function(e){return(e instanceof Buffer?e:Buffer.from(e.toString(),"binary")).toString("base64")};var Bm=c(Nm.exports);function Fm(e,t){return function(){return e.apply(t,arguments)}}const{toString:zm}=Object.prototype,{getPrototypeOf:Um}=Object,$m=(e=>t=>{const r=zm.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),Vm=e=>(e=e.toLowerCase(),t=>$m(t)===e),Gm=e=>t=>typeof t===e,{isArray:qm}=Array,Hm=Gm("undefined");const Wm=Vm("ArrayBuffer");const Km=Gm("string"),Jm=Gm("function"),Qm=Gm("number"),Ym=e=>null!==e&&"object"==typeof e,Zm=e=>{if("object"!==$m(e))return!1;const t=Um(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},Xm=Vm("Date"),eg=Vm("File"),tg=Vm("Blob"),rg=Vm("FileList"),ng=Vm("URLSearchParams");function ig(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let n,i;if("object"!=typeof e&&(e=[e]),qm(e))for(n=0,i=e.length;n<i;n++)t.call(null,e[n],n,e);else{const i=r?Object.getOwnPropertyNames(e):Object.keys(e),s=i.length;let o;for(n=0;n<s;n++)o=i[n],t.call(null,e[o],o,e)}}function sg(e,t){t=t.toLowerCase();const r=Object.keys(e);let n,i=r.length;for(;i-- >0;)if(n=r[i],t===n.toLowerCase())return n;return null}const og="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,ag=e=>!Hm(e)&&e!==og;const cg=(dg="undefined"!=typeof Uint8Array&&Um(Uint8Array),e=>dg&&e instanceof dg);var dg;const lg=Vm("HTMLFormElement"),ug=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),pg=Vm("RegExp"),hg=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),n={};ig(r,((r,i)=>{let s;!1!==(s=t(r,i,e))&&(n[i]=s||r)})),Object.defineProperties(e,n)},fg="abcdefghijklmnopqrstuvwxyz",mg="0123456789",gg={DIGIT:mg,ALPHA:fg,ALPHA_DIGIT:fg+fg.toUpperCase()+mg};const vg=Vm("AsyncFunction");var bg={isArray:qm,isArrayBuffer:Wm,isBuffer:function(e){return null!==e&&!Hm(e)&&null!==e.constructor&&!Hm(e.constructor)&&Jm(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||Jm(e.append)&&("formdata"===(t=$m(e))||"object"===t&&Jm(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&Wm(e.buffer),t},isString:Km,isNumber:Qm,isBoolean:e=>!0===e||!1===e,isObject:Ym,isPlainObject:Zm,isUndefined:Hm,isDate:Xm,isFile:eg,isBlob:tg,isRegExp:pg,isFunction:Jm,isStream:e=>Ym(e)&&Jm(e.pipe),isURLSearchParams:ng,isTypedArray:cg,isFileList:rg,forEach:ig,merge:function e(){const{caseless:t}=ag(this)&&this||{},r={},n=(n,i)=>{const s=t&&sg(r,i)||i;Zm(r[s])&&Zm(n)?r[s]=e(r[s],n):Zm(n)?r[s]=e({},n):qm(n)?r[s]=n.slice():r[s]=n};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&ig(arguments[e],n);return r},extend:(e,t,r,{allOwnKeys:n}={})=>(ig(t,((t,n)=>{r&&Jm(t)?e[n]=Fm(t,r):e[n]=t}),{allOwnKeys:n}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,n)=>{e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,n)=>{let i,s,o;const a={};if(t=t||{},null==e)return t;do{for(i=Object.getOwnPropertyNames(e),s=i.length;s-- >0;)o=i[s],n&&!n(o,e,t)||a[o]||(t[o]=e[o],a[o]=!0);e=!1!==r&&Um(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:$m,kindOfTest:Vm,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const n=e.indexOf(t,r);return-1!==n&&n===r},toArray:e=>{if(!e)return null;if(qm(e))return e;let t=e.length;if(!Qm(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let n;for(;(n=r.next())&&!n.done;){const r=n.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>{let r;const n=[];for(;null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:lg,hasOwnProperty:ug,hasOwnProp:ug,reduceDescriptors:hg,freezeMethods:e=>{hg(e,((t,r)=>{if(Jm(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;const n=e[r];Jm(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:(e,t)=>{const r={},n=e=>{e.forEach((e=>{r[e]=!0}))};return qm(e)?n(e):n(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:sg,global:og,isContextDefined:ag,ALPHABET:gg,generateString:(e=16,t=gg.ALPHA_DIGIT)=>{let r="";const{length:n}=t;for(;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&Jm(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),r=(e,n)=>{if(Ym(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[n]=e;const i=qm(e)?[]:{};return ig(e,((e,t)=>{const s=r(e,n+1);!Hm(s)&&(i[t]=s)})),t[n]=void 0,i}}return e};return r(e,0)},isAsyncFn:vg,isThenable:e=>e&&(Ym(e)||Jm(e))&&Jm(e.then)&&Jm(e.catch)};function yg(e,t,r,n,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),i&&(this.response=i)}bg.inherits(yg,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:bg.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const _g=yg.prototype,wg={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{wg[e]={value:e}})),Object.defineProperties(yg,wg),Object.defineProperty(_g,"isAxiosError",{value:!0}),yg.from=(e,t,r,n,i,s)=>{const o=Object.create(_g);return bg.toFlatObject(e,o,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),yg.call(o,e.message,t,r,n,i),o.cause=e,o.name=e.name,s&&Object.assign(o,s),o};function Sg(e){return bg.isPlainObject(e)||bg.isArray(e)}function Cg(e){return bg.endsWith(e,"[]")?e.slice(0,-2):e}function Rg(e,t,r){return e?e.concat(t).map((function(e,t){return e=Cg(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}const Pg=bg.toFlatObject(bg,{},null,(function(e){return/^is[A-Z]/.test(e)}));function Tg(e,t,r){if(!bg.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const n=(r=bg.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!bg.isUndefined(t[e])}))).metaTokens,i=r.visitor||d,s=r.dots,o=r.indexes,a=(r.Blob||"undefined"!=typeof Blob&&Blob)&&bg.isSpecCompliantForm(t);if(!bg.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(bg.isDate(e))return e.toISOString();if(!a&&bg.isBlob(e))throw new yg("Blob is not supported. Use a Buffer instead.");return bg.isArrayBuffer(e)||bg.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,r,i){let a=e;if(e&&!i&&"object"==typeof e)if(bg.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(bg.isArray(e)&&function(e){return bg.isArray(e)&&!e.some(Sg)}(e)||(bg.isFileList(e)||bg.endsWith(r,"[]"))&&(a=bg.toArray(e)))return r=Cg(r),a.forEach((function(e,n){!bg.isUndefined(e)&&null!==e&&t.append(!0===o?Rg([r],n,s):null===o?r:r+"[]",c(e))})),!1;return!!Sg(e)||(t.append(Rg(i,r,s),c(e)),!1)}const l=[],u=Object.assign(Pg,{defaultVisitor:d,convertValue:c,isVisitable:Sg});if(!bg.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!bg.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),bg.forEach(r,(function(r,s){!0===(!(bg.isUndefined(r)||null===r)&&i.call(t,r,bg.isString(s)?s.trim():s,n,u))&&e(r,n?n.concat(s):[s])})),l.pop()}}(e),t}function kg(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Eg(e,t){this._pairs=[],e&&Tg(e,this,t)}const Og=Eg.prototype;function Dg(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ig(e,t,r){if(!t)return e;const n=r&&r.encode||Dg,i=r&&r.serialize;let s;if(s=i?i(t,r):bg.isURLSearchParams(t)?t.toString():new Eg(t,r).toString(n),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}Og.append=function(e,t){this._pairs.push([e,t])},Og.toString=function(e){const t=e?function(t){return e.call(this,t,kg)}:kg;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};class xg{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){bg.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}var Mg={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},jg={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Eg,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const Lg="undefined"!=typeof window&&"undefined"!=typeof document,Ag=(Ng="undefined"!=typeof navigator&&navigator.product,Lg&&["ReactNative","NativeScript","NS"].indexOf(Ng)<0);var Ng;const Bg="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts;var Fg={...Object.freeze({__proto__:null,hasBrowserEnv:Lg,hasStandardBrowserEnv:Ag,hasStandardBrowserWebWorkerEnv:Bg}),...jg};function zg(e){function t(e,r,n,i){let s=e[i++];if("__proto__"===s)return!0;const o=Number.isFinite(+s),a=i>=e.length;if(s=!s&&bg.isArray(n)?n.length:s,a)return bg.hasOwnProp(n,s)?n[s]=[n[s],r]:n[s]=r,!o;n[s]&&bg.isObject(n[s])||(n[s]=[]);return t(e,r,n[s],i)&&bg.isArray(n[s])&&(n[s]=function(e){const t={},r=Object.keys(e);let n;const i=r.length;let s;for(n=0;n<i;n++)s=r[n],t[s]=e[s];return t}(n[s])),!o}if(bg.isFormData(e)&&bg.isFunction(e.entries)){const r={};return bg.forEachEntry(e,((e,n)=>{t(function(e){return bg.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),n,r,0)})),r}return null}const Ug={transitional:Mg,adapter:["xhr","http"],transformRequest:[function(e,t){const r=t.getContentType()||"",n=r.indexOf("application/json")>-1,i=bg.isObject(e);i&&bg.isHTMLForm(e)&&(e=new FormData(e));if(bg.isFormData(e))return n?JSON.stringify(zg(e)):e;if(bg.isArrayBuffer(e)||bg.isBuffer(e)||bg.isStream(e)||bg.isFile(e)||bg.isBlob(e))return e;if(bg.isArrayBufferView(e))return e.buffer;if(bg.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Tg(e,new Fg.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return Fg.isNode&&bg.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=bg.isFileList(e))||r.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Tg(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return i||n?(t.setContentType("application/json",!1),function(e,t,r){if(bg.isString(e))try{return(t||JSON.parse)(e),bg.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||Ug.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(e&&bg.isString(e)&&(r&&!this.responseType||n)){const r=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw yg.from(e,yg.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Fg.classes.FormData,Blob:Fg.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};bg.forEach(["delete","get","head","post","put","patch"],(e=>{Ug.headers[e]={}}));var $g=Ug;const Vg=bg.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const Gg=Symbol("internals");function qg(e){return e&&String(e).trim().toLowerCase()}function Hg(e){return!1===e||null==e?e:bg.isArray(e)?e.map(Hg):String(e)}function Wg(e,t,r,n,i){return bg.isFunction(n)?n.call(this,t,r):(i&&(t=r),bg.isString(t)?bg.isString(n)?-1!==t.indexOf(n):bg.isRegExp(n)?n.test(t):void 0:void 0)}class Kg{constructor(e){e&&this.set(e)}set(e,t,r){const n=this;function i(e,t,r){const i=qg(t);if(!i)throw new Error("header name must be a non-empty string");const s=bg.findKey(n,i);(!s||void 0===n[s]||!0===r||void 0===r&&!1!==n[s])&&(n[s||t]=Hg(e))}const s=(e,t)=>bg.forEach(e,((e,r)=>i(e,r,t)));return bg.isPlainObject(e)||e instanceof this.constructor?s(e,t):bg.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?s((e=>{const t={};let r,n,i;return e&&e.split("\n").forEach((function(e){i=e.indexOf(":"),r=e.substring(0,i).trim().toLowerCase(),n=e.substring(i+1).trim(),!r||t[r]&&Vg[r]||("set-cookie"===r?t[r]?t[r].push(n):t[r]=[n]:t[r]=t[r]?t[r]+", "+n:n)})),t})(e),t):null!=e&&i(t,e,r),this}get(e,t){if(e=qg(e)){const r=bg.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(e);)t[n[1]]=n[2];return t}(e);if(bg.isFunction(t))return t.call(this,e,r);if(bg.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=qg(e)){const r=bg.findKey(this,e);return!(!r||void 0===this[r]||t&&!Wg(0,this[r],r,t))}return!1}delete(e,t){const r=this;let n=!1;function i(e){if(e=qg(e)){const i=bg.findKey(r,e);!i||t&&!Wg(0,r[i],i,t)||(delete r[i],n=!0)}}return bg.isArray(e)?e.forEach(i):i(e),n}clear(e){const t=Object.keys(this);let r=t.length,n=!1;for(;r--;){const i=t[r];e&&!Wg(0,this[i],i,e,!0)||(delete this[i],n=!0)}return n}normalize(e){const t=this,r={};return bg.forEach(this,((n,i)=>{const s=bg.findKey(r,i);if(s)return t[s]=Hg(n),void delete t[i];const o=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,r)=>t.toUpperCase()+r))}(i):String(i).trim();o!==i&&delete t[i],t[o]=Hg(n),r[o]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return bg.forEach(this,((r,n)=>{null!=r&&!1!==r&&(t[n]=e&&bg.isArray(r)?r.join(", "):r)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach((e=>r.set(e))),r}static accessor(e){const t=(this[Gg]=this[Gg]={accessors:{}}).accessors,r=this.prototype;function n(e){const n=qg(e);t[n]||(!function(e,t){const r=bg.toCamelCase(" "+t);["get","set","has"].forEach((n=>{Object.defineProperty(e,n+r,{value:function(e,r,i){return this[n].call(this,t,e,r,i)},configurable:!0})}))}(r,e),t[n]=!0)}return bg.isArray(e)?e.forEach(n):n(e),this}}Kg.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),bg.reduceDescriptors(Kg.prototype,(({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}})),bg.freezeMethods(Kg);var Jg=Kg;function Qg(e,t){const r=this||$g,n=t||r,i=Jg.from(n.headers);let s=n.data;return bg.forEach(e,(function(e){s=e.call(r,s,i.normalize(),t?t.status:void 0)})),i.normalize(),s}function Yg(e){return!(!e||!e.__CANCEL__)}function Zg(e,t,r){yg.call(this,null==e?"canceled":e,yg.ERR_CANCELED,t,r),this.name="CanceledError"}bg.inherits(Zg,yg,{__CANCEL__:!0});var Xg=Fg.hasStandardBrowserEnv?{write(e,t,r,n,i,s){const o=[e+"="+encodeURIComponent(t)];bg.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),bg.isString(n)&&o.push("path="+n),bg.isString(i)&&o.push("domain="+i),!0===s&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function ev(e,t){return e&&!function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var tv=Fg.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let r;function n(r){let n=r;return e&&(t.setAttribute("href",n),n=t.href),t.setAttribute("href",n),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return r=n(window.location.href),function(e){const t=bg.isString(e)?n(e):e;return t.protocol===r.protocol&&t.host===r.host}}():function(){return!0};function rv(e,t){let r=0;const n=function(e,t){e=e||10;const r=new Array(e),n=new Array(e);let i,s=0,o=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),d=n[o];i||(i=c),r[s]=a,n[s]=c;let l=o,u=0;for(;l!==s;)u+=r[l++],l%=e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),c-i<t)return;const p=d&&c-d;return p?Math.round(1e3*u/p):void 0}}(50,250);return i=>{const s=i.loaded,o=i.lengthComputable?i.total:void 0,a=s-r,c=n(a);r=s;const d={loaded:s,total:o,progress:o?s/o:void 0,bytes:a,rate:c||void 0,estimated:c&&o&&s<=o?(o-s)/c:void 0,event:i};d[t?"download":"upload"]=!0,e(d)}}var nv="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){let n=e.data;const i=Jg.from(e.headers).normalize();let s,o,{responseType:a,withXSRFToken:c}=e;function d(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}if(bg.isFormData(n))if(Fg.hasStandardBrowserEnv||Fg.hasStandardBrowserWebWorkerEnv)i.setContentType(!1);else if(!1!==(o=i.getContentType())){const[e,...t]=o?o.split(";").map((e=>e.trim())).filter(Boolean):[];i.setContentType([e||"multipart/form-data",...t].join("; "))}let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",r=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";i.set("Authorization","Basic "+btoa(t+":"+r))}const u=ev(e.baseURL,e.url);function p(){if(!l)return;const n=Jg.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,r){const n=r.config.validateStatus;r.status&&n&&!n(r.status)?t(new yg("Request failed with status code "+r.status,[yg.ERR_BAD_REQUEST,yg.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}((function(e){t(e),d()}),(function(e){r(e),d()}),{data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:n,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),Ig(u,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=p:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(p)},l.onabort=function(){l&&(r(new yg("Request aborted",yg.ECONNABORTED,e,l)),l=null)},l.onerror=function(){r(new yg("Network Error",yg.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const n=e.transitional||Mg;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(new yg(t,n.clarifyTimeoutError?yg.ETIMEDOUT:yg.ECONNABORTED,e,l)),l=null},Fg.hasStandardBrowserEnv&&(c&&bg.isFunction(c)&&(c=c(e)),c||!1!==c&&tv(u))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&Xg.read(e.xsrfCookieName);t&&i.set(e.xsrfHeaderName,t)}void 0===n&&i.setContentType(null),"setRequestHeader"in l&&bg.forEach(i.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),bg.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),a&&"json"!==a&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",rv(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",rv(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{l&&(r(!t||t.type?new Zg(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const h=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(u);h&&-1===Fg.protocols.indexOf(h)?r(new yg("Unsupported protocol "+h+":",yg.ERR_BAD_REQUEST,e)):l.send(n||null)}))};const iv={http:null,xhr:nv};bg.forEach(iv,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const sv=e=>`- ${e}`,ov=e=>bg.isFunction(e)||null===e||!1===e;var av=e=>{e=bg.isArray(e)?e:[e];const{length:t}=e;let r,n;const i={};for(let s=0;s<t;s++){let t;if(r=e[s],n=r,!ov(r)&&(n=iv[(t=String(r)).toLowerCase()],void 0===n))throw new yg(`Unknown adapter '${t}'`);if(n)break;i[t||"#"+s]=n}if(!n){const e=Object.entries(i).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new yg("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(sv).join("\n"):" "+sv(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return n};function cv(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Zg(null,e)}function dv(e){cv(e),e.headers=Jg.from(e.headers),e.data=Qg.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return av(e.adapter||$g.adapter)(e).then((function(t){return cv(e),t.data=Qg.call(e,e.transformResponse,t),t.headers=Jg.from(t.headers),t}),(function(t){return Yg(t)||(cv(e),t&&t.response&&(t.response.data=Qg.call(e,e.transformResponse,t.response),t.response.headers=Jg.from(t.response.headers))),Promise.reject(t)}))}const lv=e=>e instanceof Jg?e.toJSON():e;function uv(e,t){t=t||{};const r={};function n(e,t,r){return bg.isPlainObject(e)&&bg.isPlainObject(t)?bg.merge.call({caseless:r},e,t):bg.isPlainObject(t)?bg.merge({},t):bg.isArray(t)?t.slice():t}function i(e,t,r){return bg.isUndefined(t)?bg.isUndefined(e)?void 0:n(void 0,e,r):n(e,t,r)}function s(e,t){if(!bg.isUndefined(t))return n(void 0,t)}function o(e,t){return bg.isUndefined(t)?bg.isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function a(r,i,s){return s in t?n(r,i):s in e?n(void 0,r):void 0}const c={url:s,method:s,data:s,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a,headers:(e,t)=>i(lv(e),lv(t),!0)};return bg.forEach(Object.keys(Object.assign({},e,t)),(function(n){const s=c[n]||i,o=s(e[n],t[n],n);bg.isUndefined(o)&&s!==a||(r[n]=o)})),r}const pv="1.6.7",hv={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{hv[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));const fv={};hv.transitional=function(e,t,r){function n(e,t){return"[Axios v1.6.7] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,i,s)=>{if(!1===e)throw new yg(n(i," has been removed"+(t?" in "+t:"")),yg.ERR_DEPRECATED);return t&&!fv[i]&&(fv[i]=!0,console.warn(n(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,i,s)}};var mv={assertOptions:function(e,t,r){if("object"!=typeof e)throw new yg("options must be an object",yg.ERR_BAD_OPTION_VALUE);const n=Object.keys(e);let i=n.length;for(;i-- >0;){const s=n[i],o=t[s];if(o){const t=e[s],r=void 0===t||o(t,s,e);if(!0!==r)throw new yg("option "+s+" must be "+r,yg.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new yg("Unknown option "+s,yg.ERR_BAD_OPTION)}},validators:hv};const gv=mv.validators;class vv{constructor(e){this.defaults=e,this.interceptors={request:new xg,response:new xg}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const r=t.stack?t.stack.replace(/^.+\n/,""):"";e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=uv(this.defaults,t);const{transitional:r,paramsSerializer:n,headers:i}=t;void 0!==r&&mv.assertOptions(r,{silentJSONParsing:gv.transitional(gv.boolean),forcedJSONParsing:gv.transitional(gv.boolean),clarifyTimeoutError:gv.transitional(gv.boolean)},!1),null!=n&&(bg.isFunction(n)?t.paramsSerializer={serialize:n}:mv.assertOptions(n,{encode:gv.function,serialize:gv.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=i&&bg.merge(i.common,i[t.method]);i&&bg.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete i[e]})),t.headers=Jg.concat(s,i);const o=[];let a=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,o.unshift(e.fulfilled,e.rejected))}));const c=[];let d;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,u=0;if(!a){const e=[dv.bind(this),void 0];for(e.unshift.apply(e,o),e.push.apply(e,c),l=e.length,d=Promise.resolve(t);u<l;)d=d.then(e[u++],e[u++]);return d}l=o.length;let p=t;for(u=0;u<l;){const e=o[u++],t=o[u++];try{p=e(p)}catch(e){t.call(this,e);break}}try{d=dv.call(this,p)}catch(e){return Promise.reject(e)}for(u=0,l=c.length;u<l;)d=d.then(c[u++],c[u++]);return d}getUri(e){return Ig(ev((e=uv(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}bg.forEach(["delete","get","head","options"],(function(e){vv.prototype[e]=function(t,r){return this.request(uv(r||{},{method:e,url:t,data:(r||{}).data}))}})),bg.forEach(["post","put","patch"],(function(e){function t(t){return function(r,n,i){return this.request(uv(i||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:n}))}}vv.prototype[e]=t(),vv.prototype[e+"Form"]=t(!0)}));var bv=vv;class yv{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const r=this;this.promise.then((e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null})),this.promise.then=e=>{let t;const n=new Promise((e=>{r.subscribe(e),t=e})).then(e);return n.cancel=function(){r.unsubscribe(t)},n},e((function(e,n,i){r.reason||(r.reason=new Zg(e,n,i),t(r.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new yv((function(t){e=t})),cancel:e}}}var _v=yv;const wv={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(wv).forEach((([e,t])=>{wv[t]=e}));var Sv=wv;const Cv=function e(t){const r=new bv(t),n=Fm(bv.prototype.request,r);return bg.extend(n,bv.prototype,r,{allOwnKeys:!0}),bg.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(uv(t,r))},n}($g);function Rv(e,t){return Ot(e,t)}function Pv(e,t){return r=>(n,i,s)=>e(i())?t(r)(n,i,s):(console.warn("Not authorized to perform this action"),!1)}Cv.Axios=bv,Cv.CanceledError=Zg,Cv.CancelToken=_v,Cv.isCancel=Yg,Cv.VERSION=pv,Cv.toFormData=Tg,Cv.AxiosError=yg,Cv.Cancel=Cv.CanceledError,Cv.all=function(e){return Promise.all(e)},Cv.spread=function(e){return function(t){return e.apply(null,t)}},Cv.isAxiosError=function(e){return bg.isObject(e)&&!0===e.isAxiosError},Cv.mergeConfig=uv,Cv.AxiosHeaders=Jg,Cv.formToJSON=e=>zg(bg.isHTMLForm(e)?new FormData(e):e),Cv.getAdapter=av,Cv.HttpStatusCode=Sv,Cv.default=Cv;const Tv=((e={})=>{const t=new Map,{extra:r,onError:n=pr}=e;qt(n,"onError");const i=e=>{let r=st(Array.from(t.values()),(t=>t.effect===e.effect));return r||(r=or(e)),(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&ar(e)}))(r)};Object.assign(i,{withTypes:()=>i});const s=e=>{const{type:r,effect:n,predicate:i}=sr(e),s=st(Array.from(t.values()),(e=>("string"==typeof r?e.type===r:e.predicate===i)&&e.effect===n));return s&&(s.unsubscribe(),e.cancelActive&&ar(s)),!!s};Object.assign(s,{withTypes:()=>s});const o=async(e,s,o,a)=>{const c=new AbortController,d=ir(i,c.signal),l=[];try{e.pending.add(c),await Promise.resolve(e.effect(s,er({},o,{getOriginalState:a,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Xt(c.signal),pause:Zt(c.signal),extra:r,signal:c.signal,fork:nr(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(Jt(e,$t),r.delete(e))}))},cancel:()=>{Jt(c,$t),e.pending.delete(c)},throwIfCancelled:()=>{Qt(c.signal)}})))}catch(e){e instanceof Gt||cr(n,e,{raisedBy:"effect"})}finally{await Promise.all(l),Jt(c,Vt),e.pending.delete(c)}},a=(e=>()=>{e.forEach(ar),e.clear()})(t);return{middleware:e=>r=>c=>{if(!q(c))return r(c);if(dr.match(c))return i(c.payload);if(lr.match(c))return void a();if(ur.match(c))return s(c.payload);let d=e.getState();const l=()=>{if(d===tr)throw new Error(`${rr}: getOriginalState can only be called synchronously`);return d};let u;try{if(u=r(c),t.size>0){const r=e.getState(),i=Array.from(t.values());for(const t of i){let i=!1;try{i=t.predicate(c,r,d)}catch(e){i=!1,cr(n,e,{raisedBy:"predicate"})}i&&o(t,c,e,l)}}}finally{d=tr}return u},startListening:i,stopListening:s,clearListeners:a}})(),kv=Tv.startListening,Ev=(e,t)=>kv({predicate:(t,r,n)=>{const i=e.map((e=>e(n))),s=e.map((e=>e(r)));return i.some(((e,t)=>e!==s[t]))},effect:(r,{dispatch:n,getState:i,extra:s})=>{const o=e.map((e=>e(i())));t({dispatch:n,getState:i,extra:s},...o)}}),Ov=Lt({name:"app",initialState:{isNodeSdk:!1,isActive:!1,roomName:null,roomUrl:null,displayName:null,userAgent:"core:0.18.0",externalId:null},reducers:{doAppStart:(e,t)=>{const r=new URL(t.payload.roomUrl);return Object.assign(Object.assign(Object.assign({},e),t.payload),{roomName:r.pathname,initialConfig:Object.assign({},t.payload),isActive:!0})},doAppStop:e=>Object.assign(Object.assign({},e),{isActive:!1})}}),{doAppStop:Dv,doAppStart:Iv}=Ov.actions,xv=e=>e.app.isActive,Mv=e=>e.app.roomName,jv=e=>e.app.displayName,Lv=e=>e.app.userAgent,Av=e=>e.app.externalId,Nv=e=>e.app.isNodeSdk;function Bv(e){return rt(`signalConnection/event/${e}`)}const Fv={audioEnabled:Bv("audioEnabled"),audioEnableRequested:Bv("audioEnableRequested"),chatMessage:Bv("chatMessage"),clientLeft:Bv("clientLeft"),clientKicked:Bv("clientKicked"),clientMetadataReceived:Bv("clientMetadataReceived"),cloudRecordingStarted:Bv("cloudRecordingStarted"),cloudRecordingStopped:Bv("cloudRecordingStopped"),disconnect:Bv("disconnect"),knockerLeft:Bv("knockerLeft"),knockHandled:Bv("knockHandled"),newClient:Bv("newClient"),roomJoined:Bv("roomJoined"),roomKnocked:Bv("roomKnocked"),roomLeft:Bv("roomLeft"),roomLocked:Bv("roomLocked"),roomSessionEnded:Bv("roomSessionEnded"),screenshareStarted:Bv("screenshareStarted"),screenshareStopped:Bv("screenshareStopped"),spotlightAdded:Bv("spotlightAdded"),spotlightRemoved:Bv("spotlightRemoved"),streamingStopped:Bv("streamingStopped"),videoEnabled:Bv("videoEnabled")},zv={canLockRoom:["host"],canRequestAudioEnable:["host"],canKickClient:["host"],canEndMeeting:["host"],canAskToSpeak:["host"],canSpotlight:["host"]},Uv=Lt({name:"authorization",initialState:{roomKey:null,roleName:"none"},reducers:{setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})},extraReducers:e=>{e.addCase(Iv,((e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload.roomKey}))),e.addCase(Fv.roomJoined,((e,t)=>{var r,n;const i=null===(n=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===n?void 0:n.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{roleName:(null==i?void 0:i.role.roleName)||"none"})}))}}),{setRoomKey:$v}=Uv.actions,Vv=e=>e.authorization.roomKey,Gv=e=>e.authorization.roleName,qv=Je(Gv,(e=>zv.canLockRoom.includes(e))),Hv=Je(Gv,(e=>zv.canRequestAudioEnable.includes(e))),Wv=Je(Gv,(e=>zv.canKickClient.includes(e))),Kv=Je(Gv,(e=>zv.canEndMeeting.includes(e))),Jv=Je(Gv,(e=>zv.canAskToSpeak.includes(e))),Qv=Je(Gv,(e=>zv.canSpotlight.includes(e)));function Yv(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r}function Zv(e,t,r,n){return new(r||(r=Promise))((function(i,s){function o(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){e.done?i(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(o,a)}c((n=n.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const Xv=Lt({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(eb.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(eb.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(eb.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),eb=Rv("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>Zv(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),tb=e=>e.deviceCredentials;Ev([Je(xv,tb,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(eb())}));const rb=Lt({name:"signalConnection",initialState:{deviceIdentified:!1,isIdentifyingDevice:!1,status:"ready",socket:null},reducers:{socketConnecting:e=>Object.assign(Object.assign({},e),{status:"connecting"}),socketConnected:(e,t)=>Object.assign(Object.assign({},e),{socket:t.payload,status:"connected"}),socketDisconnected:e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"}),socketReconnecting:e=>Object.assign(Object.assign({},e),{status:"reconnecting"}),deviceIdentifying:e=>Object.assign(Object.assign({},e),{isIdentifyingDevice:!0}),deviceIdentified:e=>Object.assign(Object.assign({},e),{deviceIdentified:!0,isIdentifyingDevice:!1})},extraReducers:e=>{e.addCase(Fv.disconnect,(e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"})))}}),{deviceIdentifying:nb,deviceIdentified:ib,socketConnected:sb,socketConnecting:ob,socketDisconnected:ab,socketReconnecting:cb}=rb.actions,db=()=>(e,t)=>{if(mb(t()))return;e(ob());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new jm(e,{autoConnect:!1})}();r.on("connect",(()=>e(sb(r)))),r.on("device_identified",(()=>e(ib()))),r.getManager().on("reconnect",(()=>e(cb()))),function(e,t){e.on("room_joined",(e=>t(Fv.roomJoined(e)))),e.on("new_client",(e=>t(Fv.newClient(e)))),e.on("client_left",(e=>t(Fv.clientLeft(e)))),e.on("client_kicked",(e=>t(Fv.clientKicked(e)))),e.on("audio_enabled",(e=>t(Fv.audioEnabled(e)))),e.on("video_enabled",(e=>t(Fv.videoEnabled(e)))),e.on("audio_enable_requested",(e=>t(Fv.audioEnableRequested(e)))),e.on("client_metadata_received",(e=>t(Fv.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(Fv.chatMessage(e)))),e.on("disconnect",(()=>t(Fv.disconnect()))),e.on("room_knocked",(e=>t(Fv.roomKnocked(e)))),e.on("room_left",(()=>t(Fv.roomLeft()))),e.on("room_locked",(e=>t(Fv.roomLocked(e)))),e.on("room_session_ended",(e=>t(Fv.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(Fv.knockerLeft(e)))),e.on("knock_handled",(e=>t(Fv.knockHandled(e)))),e.on("screenshare_started",(e=>t(Fv.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(Fv.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(Fv.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(Fv.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(Fv.streamingStopped()))),e.on("spotlight_added",(e=>t(Fv.spotlightAdded(e)))),e.on("spotlight_removed",(e=>t(Fv.spotlightRemoved(e))))}(r,e),r.connect()},lb=({deviceCredentials:e})=>(t,r)=>{const n=r(),i=mb(n),s=hb(n);i&&(s||(i.emit("identify_device",{deviceCredentials:e}),t(nb())))},ub=()=>(e,t)=>{const r=t();if("connected"===fb(r)){const t=pb(r).socket;null==t||t.disconnect(),e(ab())}},pb=e=>e.signalConnection,hb=e=>e.signalConnection.deviceIdentified,fb=e=>e.signalConnection.status,mb=e=>e.signalConnection.socket;Ev([Je(xv,fb,((e,t)=>!(!e||!["ready","reconnecting"].includes(t))))],(({dispatch:e},t)=>{t&&e(db())}));const gb=Je(tb,fb,hb,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,n)=>!(!e.data||"connected"!==t||r||n)));Ev([gb,tb],(({dispatch:e},t,r)=>{t&&r.data&&e(lb({deviceCredentials:r.data}))})),kv({actionCreator:Fv.roomLeft,effect:(e,{dispatch:t})=>{t(ub())}}),kv({actionCreator:Fv.clientKicked,effect:(e,{dispatch:t})=>{t(ub())}});const vb=Lt({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(Fv.chatMessage,((e,t)=>{const r={senderId:t.payload.senderId,timestamp:t.payload.timestamp,text:t.payload.text};return Object.assign(Object.assign({},e),{chatMessages:[...e.chatMessages,r]})}))}}),bb=e=>(t,r)=>{const n=r(),i=pb(n).socket;null==i||i.emit("chat_message",{text:e.text})},yb=Lt({name:"cloudRecording",initialState:{isRecording:!1,error:null,startedAt:void 0},reducers:{recordingRequestStarted:e=>Object.assign(Object.assign({},e),{status:"requested"})},extraReducers:e=>{e.addCase(Fv.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(Fv.cloudRecordingStarted,((e,t)=>{const{payload:r}=t;return r.error?Object.assign(Object.assign({},e),{isRecording:!1,status:"error",error:r.error}):e})),e.addCase(Fv.newClient,((e,{payload:t})=>{var r;const{client:n}=t;return"recorder"===(null===(r=n.role)||void 0===r?void 0:r.roleName)?Object.assign(Object.assign({},e),{isRecording:!0,status:"recording",startedAt:n.startedCloudRecordingAt?new Date(n.startedCloudRecordingAt).getTime():(new Date).getTime()}):e}))}}),{recordingRequestStarted:_b}=yb.actions,wb=()=>(e,t)=>{const r=t(),n=pb(r).socket,i=Cb(r);i&&["recording","requested"].includes(i)||(null==n||n.emit("start_recording",{recording:"cloud"}),e(_b()))},Sb=()=>(e,t)=>{const r=t(),n=pb(r).socket;null==n||n.emit("stop_recording")},Cb=e=>e.cloudRecording.status;function Rb(e,{delay:t=500,edges:r}={}){let n,i=0;return(...s)=>{i+=1,r&&1===i&&e(...s),clearTimeout(n),n=setTimeout((()=>{(!r||i>1)&&e(...s),n=void 0,i=0}),t)}}const Pb=Lt({name:"localMedia",initialState:{busyDeviceIds:[],cameraEnabled:!1,currentSpeakerDeviceId:"default",devices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isSettingSpeakerDevice:!1,isTogglingCamera:!1,lowDataMode:!1,microphoneEnabled:!1,status:"inactive",stream:void 0,isSwitchingStream:!1},reducers:{deviceBusy:(e,t)=>e.busyDeviceIds.includes(t.payload.deviceId)?e:Object.assign(Object.assign({},e),{busyDeviceIds:[...e.busyDeviceIds,t.payload.deviceId]}),toggleCameraEnabled(e,t){var r;return Object.assign(Object.assign({},e),{cameraEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.cameraEnabled})},setCurrentCameraDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentCameraDeviceId:t.payload.deviceId}),toggleMicrophoneEnabled(e,t){var r;return Object.assign(Object.assign({},e),{microphoneEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.microphoneEnabled})},setCurrentMicrophoneDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentMicrophoneDeviceId:t.payload.deviceId}),setCurrentSpeakerDeviceId(e,t){var r;return Object.assign(Object.assign({},e),{currentSpeakerDeviceId:null!==(r=t.payload.deviceId)&&void 0!==r?r:"default"})},toggleLowDataModeEnabled(e,t){var r;return Object.assign(Object.assign({},e),{lowDataMode:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.lowDataMode})},setDevices:(e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}),setLocalMediaStream:(e,t)=>Object.assign(Object.assign({},e),{stream:t.payload.stream}),setLocalMediaOptions:(e,t)=>Object.assign(Object.assign({},e),{options:t.payload.options}),localMediaStopped:e=>Object.assign(Object.assign({},e),{status:"stopped",stream:void 0}),localStreamMetadataUpdated(e,t){const{audio:r,video:n}=t.payload;return Object.assign(Object.assign({},e),{currentCameraDeviceId:n.deviceId,currentMicrophoneDeviceId:r.deviceId,busyDeviceIds:e.busyDeviceIds.filter((e=>e!==r.deviceId&&e!==n.deviceId))})}},extraReducers:e=>{e.addCase(Iv,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase(zb.pending,((e,t)=>{const{audio:r,video:n}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:n,isSettingMicrophoneDevice:r})})),e.addCase(zb.fulfilled,((e,t)=>{const{audio:r,video:n}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!n&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice})})),e.addCase(zb.rejected,((e,t)=>{const{audio:r,video:n}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!n&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice,cameraDeviceError:n?t.error:e.cameraDeviceError,microphoneDeviceError:r?t.error:e.microphoneDeviceError})})),e.addCase(Nb.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase(Nb.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(Ub.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(Vb.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(Vb.fulfilled,((e,{payload:{stream:t,onDeviceChange:r}})=>{let n,i,s=!1,o=!1;const a=t.getAudioTracks()[0],c=t.getVideoTracks()[0];return a&&(i=a.getSettings().deviceId,o=a.enabled),c&&(s=c.enabled,n=c.getSettings().deviceId),Object.assign(Object.assign({},e),{stream:t,status:"started",currentCameraDeviceId:n,currentMicrophoneDeviceId:i,cameraEnabled:s,microphoneEnabled:o,onDeviceChange:r})})),e.addCase(Vb.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase($b.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase($b.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase($b.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:Tb,setCurrentCameraDeviceId:kb,setCurrentMicrophoneDeviceId:Eb,setCurrentSpeakerDeviceId:Ob,toggleCameraEnabled:Db,toggleMicrophoneEnabled:Ib,toggleLowDataModeEnabled:xb,setLocalMediaOptions:Mb,setLocalMediaStream:jb,localMediaStopped:Lb,localStreamMetadataUpdated:Ab}=Pb.actions,Nb=Rv("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>Zv(void 0,void 0,void 0,(function*(){const e=t(),n=ry(e);if(!n)return;let i=n.getVideoTracks()[0];const s=Jb(e);try{if(s)if(i)i.enabled=!0;else{const t=iy(e),r=Hb(e);yield xh(Object.assign(Object.assign({},t),{audioId:!1,videoId:r,type:"exact"}),{replaceStream:n}),i=n.getVideoTracks()[0]}else{if(!i)return;i.enabled=!1,i.stop(),n.removeTrack(i)}n.dispatchEvent(new CustomEvent("stopresumevideo",{detail:{track:i,enable:s}}))}catch(e){return r(e)}})))),Bb=Rv("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const n=t(),i=ry(n);if(!i)return;const s=Qb(n),o=null===(r=i.getAudioTracks())||void 0===r?void 0:r[0];o&&(o.enabled=s)})),Fb=()=>(e,t)=>{const r=t();if(!ry(r))return;const n=Hb(r),i=Wb(r);e($b({audioId:i,videoId:n}))},zb=Rv("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:n})=>Zv(void 0,void 0,void 0,(function*(){try{const n=r(),i=ry(n);if(!i)throw new Error("No stream");const s=!!e&&Wb(n),o=!!t&&Hb(n),a=iy(n),{replacedTracks:c}=yield xh(Object.assign(Object.assign({},a),{audioId:s,videoId:o,type:"exact"}),{replaceStream:i}),d=Qb(n);i.getAudioTracks().forEach((e=>e.enabled=d));const l=Jb(n);return i.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return n(e)}})))),Ub=Rv("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:n})=>Zv(void 0,void 0,void 0,(function*(){var e,i,s,o;const a=t();let c=[],d=[];const l=ry(a);try{c=yield navigator.mediaDevices.enumerateDevices(),d=Zb(a);if(!(l&&!ny(a)&&c&&d&&d.find((e=>e.deviceId))))return{devices:c};const{changedDevices:t,addedDevices:n}=Mh({oldDevices:d,newDevices:c});let u=null===(e=t.audioinput)||void 0===e?void 0:e.deviceId,p=null===(i=t.videoinput)||void 0===i?void 0:i.deviceId;return void 0===u&&(u=null===(s=n.audioinput)||void 0===s?void 0:s.deviceId),void 0===p&&(p=null===(o=n.videoinput)||void 0===o?void 0:o.deviceId),void 0===u&&void 0===p||r($b({audioId:u,videoId:p})),{devices:c}}catch(e){return n(e)}})))),$b=Rv("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:n,rejectWithValue:i})=>Zv(void 0,void 0,void 0,(function*(){const s=n(),o=ry(s),a=iy(s),c=!(!t||e)||!(t||!e);if(o)try{const{replacedTracks:n}=yield xh(Object.assign(Object.assign({},a),{audioId:void 0!==e&&e,videoId:void 0!==t&&t,type:"exact"}),{replaceStream:o}),i=e||t;return c&&i&&r(Tb({deviceId:i})),{replacedTracks:n}}catch(n){console.error(n);const s=e||t;return c&&s&&r(Tb({deviceId:s})),i(n)}})))),Vb=Rv("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:n})=>Zv(void 0,void 0,void 0,(function*(){const i=Rb((()=>{r(Ub())}),{delay:500});if(navigator.mediaDevices&&navigator.mediaDevices.addEventListener("devicechange",i),"getTracks"in e)return Promise.resolve({stream:e,onDeviceChange:i});if(!e.audio&&!e.video)return{stream:new MediaStream,onDeviceChange:i};r(Mb({options:e}));try{yield r(Ub());const n=t(),s=iy(n),{stream:o}=yield xh(Object.assign(Object.assign({},s),{audioId:e.audio,videoId:e.video}));return{stream:o,onDeviceChange:i}}catch(e){return n(e)}})))),Gb=()=>(e,t)=>{const r=ry(t()),n=ey(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&n&&navigator.mediaDevices.removeEventListener("devicechange",n),e(Lb())},qb=e=>e.localMedia.busyDeviceIds,Hb=e=>e.localMedia.currentCameraDeviceId,Wb=e=>e.localMedia.currentMicrophoneDeviceId,Kb=e=>e.localMedia.currentSpeakerDeviceId,Jb=e=>e.localMedia.cameraEnabled,Qb=e=>e.localMedia.microphoneEnabled,Yb=e=>e.localMedia.lowDataMode,Zb=e=>e.localMedia.devices,Xb=e=>e.localMedia.options;Je(Xb,(e=>!!e));const ey=e=>e.localMedia,ty=e=>e.localMedia.status,ry=e=>e.localMedia.stream,ny=e=>e.localMedia.isSwitchingStream,iy=Je(Zb,Hb,Wb,Yb,((e,t,r,n)=>({devices:e,videoId:t,audioId:r,options:{disableAEC:!1,disableAGC:!1,hd:!0,lax:!1,lowDataMode:n,simulcast:!0,widescreen:!0}}))),sy=Je(ty,(e=>"starting"===e)),oy=Je(Zb,qb,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),ay=Je(Zb,qb,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),cy=Je(Zb,(e=>e.filter((e=>"audiooutput"===e.kind))));Ev([Je(xv,ty,Xb,Nv,((e,t,r,n)=>{if(e&&["inactive","stopped"].includes(t)&&!n&&r)return r}))],(({dispatch:e},t)=>{t&&e(Vb(t))}));Ev([Je(xv,ty,Xb,((e,t,r)=>!e&&"inactive"!==t&&!!r))],(({dispatch:e},t)=>{t&&e(Gb())})),kv({predicate:(e,t,r)=>{const n=Qb(r),i=Qb(t);return"started"===ty(r)&&n!==i},effect:(e,{dispatch:t})=>{t(Bb())}}),kv({predicate:(e,t,r)=>{const n=Yb(r),i=Yb(t);return"started"===ty(r)&&n!==i},effect:(e,{dispatch:t})=>{t(Fb())}}),kv({predicate:(e,t,r)=>{if(t.localMedia.isTogglingCamera)return!1;const n=Jb(r),i=Jb(t);return"started"===ty(r)&&n!==i},effect:(e,{dispatch:t})=>{t(Nb())}}),kv({predicate:(e,t,r)=>{const n=Hb(r),i=Hb(t);return"started"===ty(r)&&n!==i},effect:(e,{dispatch:t})=>{t(zb({audio:!1,video:!0}))}}),kv({predicate:(e,t,r)=>{const n=Wb(r),i=Wb(t);return"started"===ty(r)&&n!==i},effect:(e,{dispatch:t})=>{t(zb({audio:!0,video:!1}))}}),kv({matcher:Rt(Vb.fulfilled,Ub.fulfilled,$b.fulfilled,$b.rejected),effect:(e,{dispatch:t,getState:r})=>{const n=r(),i=ry(n),s=Zb(n);if(!i)return;const o=function({audioTrack:e,videoTrack:t,devices:r,stoppedVideoTrack:n,lastAudioId:i,lastVideoId:s}){const o=e=>"live"===(null==e?void 0:e.readyState)?e:null;return t=o(t)||n,e=o(e),{video:Dh("videoinput",t,r,s),audio:Dh("audioinput",e,r,i)}}({audioTrack:i.getAudioTracks()[0],videoTrack:i.getVideoTracks()[0],devices:s});t(Ab(o))}}),kv({actionCreator:Fv.audioEnableRequested,effect:({payload:e},{dispatch:t})=>{const{enable:r}=e;r||t(Ib({enabled:!1}))}});const dy=["recorder","streamer"],ly=Lt({name:"localParticipant",initialState:{displayName:"",id:"",isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"none",clientClaim:void 0,stickyReaction:void 0},reducers:{doSetDisplayName:(e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName})},extraReducers:e=>{e.addCase(Iv,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(py.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(hy.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(fy.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{stickyReaction:t.payload}))),e.addCase(Fv.roomJoined,((e,t)=>{var r,n;const i=null===(n=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===n?void 0:n.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{id:t.payload.selfId,roleName:(null==i?void 0:i.role.roleName)||"none",clientClaim:t.payload.clientClaim})}))}}),{doSetDisplayName:uy}=ly.actions,py=Rv("localParticipant/doEnableAudio",((e,{dispatch:t,getState:r})=>Zv(void 0,void 0,void 0,(function*(){const n=r(),i=pb(n).socket;return null==i||i.emit("enable_audio",{enabled:e.enabled}),e.enabled&&t(fy({enabled:!1})),e.enabled})))),hy=Rv("localParticipant/doEnableVideo",((e,{getState:t})=>Zv(void 0,void 0,void 0,(function*(){const r=t(),n=pb(r).socket;return null==n||n.emit("enable_video",{enabled:e.enabled}),e.enabled})))),fy=Rv("localParticipant/doSetLocalStickyReaction",((e,{getState:t,rejectWithValue:r})=>Zv(void 0,void 0,void 0,(function*(){var n;const i=t(),s=yy(i),o=Boolean(s),a=null!==(n=e.enabled)&&void 0!==n?n:!o;if(a===o)return r(s);return a?{reaction:"✋",timestamp:(new Date).toISOString()}:null})))),my=()=>(e,t)=>{const r=t(),n=pb(r).socket,i={displayName:by(r),stickyReaction:yy(r)};null==n||n.emit("send_client_metadata",{type:"UserData",payload:i})},gy=e=>e.localParticipant,vy=e=>e.localParticipant.id,by=e=>e.localParticipant.displayName,yy=e=>e.localParticipant.stickyReaction,_y=Je(gy,ry,((e,t)=>{const r={id:e.id,clientId:e.id,displayName:e.displayName,stream:t,isLocalClient:!0,isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled};return dy.includes(e.roleName)?null:r}));kv({actionCreator:Db,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:n}=e,{isVideoEnabled:i}=gy(r());t(hy({enabled:n||!i}))}}),kv({actionCreator:Ib,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:n}=e,{isAudioEnabled:i}=gy(r());t(py({enabled:n||!i}))}}),Ev([by,yy],(({dispatch:e})=>{e(my())}));const wy=Lt({name:"localScreenshare",initialState:{status:"inactive",stream:null,error:null},reducers:{stopScreenshare:(e,t)=>Object.assign(Object.assign({},e),{status:"inactive",stream:null})},extraReducers:e=>{e.addCase(Cy.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(Cy.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(Cy.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"inactive",stream:null})))}}),{stopScreenshare:Sy}=wy.actions,Cy=Rv("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:n})=>Zv(void 0,void 0,void 0,(function*(){var e;try{const n=r(),i=Py(n);if(i)return{stream:i};const s=yield navigator.mediaDevices.getDisplayMedia(),o=()=>{t(Ry())};return"oninactive"in s?s.addEventListener("inactive",o):null===(e=s.getVideoTracks()[0])||void 0===e||e.addEventListener("ended",o),{stream:s}}catch(e){return n(e)}})))),Ry=()=>(e,t)=>{const r=t(),n=Py(r);n&&(n.getTracks().forEach((e=>e.stop())),e(Sy({stream:n})))},Py=e=>e.localScreenshare.stream;function Ty(e){return rt(`rtcConnection/event/${e}`)}kv({actionCreator:Lb,effect:(e,{getState:t})=>{const r=t(),n=Py(r);n&&(null==n||n.getTracks().forEach((e=>{e.stop()})))}});const ky={rtcManagerCreated:Ty("rtcManagerCreated"),rtcManagerDestroyed:Ty("rtcManagerDestroyed"),streamAdded:Ty("streamAdded")};function Ey(e,t=!1){const{streams:r,role:n}=e,i=Yv(e,["streams","role"]);return Object.assign(Object.assign({},i),{stream:null,streams:r.map((e=>({id:e,state:t?"new_accept":"to_accept"}))),isLocalParticipant:!1,roleName:(null==n?void 0:n.roleName)||"none",presentationStream:null,newJoiner:t})}function Oy(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function Dy(e,t,r){const{participant:n,index:i}=Oy(e,t);return n?Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants.slice(0,i),Object.assign(Object.assign({},n),r),...e.remoteParticipants.slice(i+1)]}):(console.error(`Did not find client for update ${t}`),e)}function Iy(e,t,r,n){const{participant:i}=Oy(e,t);if(!i)return console.error(`No client ${t} found to update stream ${r} ${n}`),e;const s=i.streams.findIndex((e=>e.id===r)),o=[...i.streams];return o[s]=Object.assign(Object.assign({},o[s]),{state:n}),Dy(e,t,{streams:o})}function xy(e,t,r){const{participant:n}=Oy(e,t);return!n||n.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):Dy(e,t,{streams:[...n.streams,{id:r,state:"to_accept"}]})}const My=Lt({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:n,state:i}of t.payload)r=Iy(r,e,n,i);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:n}=t.payload;return Dy(e,r,{stream:n})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:n}=t.payload;return xy(e,r,n)}},extraReducers:e=>{e.addCase(Fv.roomJoined,((e,t)=>{var r;if(!(null===(r=t.payload)||void 0===r?void 0:r.room))return e;const n=t.payload.selfId,{clients:i}=t.payload.room;return Object.assign(Object.assign({},e),{remoteParticipants:i.filter((e=>e.id!==n)).filter((e=>!dy.includes(e.role.roleName))).map((e=>Ey(e)))})})),e.addCase(ky.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:n,streamType:i}=t;let{streamId:s}=t;const{participant:o}=Oy(e,r);if(!o)return console.error(`Did not find client ${r} for adding stream`),e;const a=e.remoteParticipants;s||(s=n.id);const c=a.find((e=>e.id===r));if(!c)return e;const d=c.streams.find((e=>e.id===s));return c.stream&&(c.stream.id===s||c.stream.inboundId===s)||!c.stream&&"webcam"===i||!c.stream&&!i&&!d?Dy(e,r,{stream:n}):Dy(e,r,{presentationStream:n})}(e,t.payload))),e.addCase(Fv.newClient,((e,t)=>{const{client:r}=t.payload;return dy.includes(r.role.roleName)?e:function(e,t){const{participant:r}=Oy(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,Ey(r,!0))})),e.addCase(Fv.clientLeft,((e,t)=>{const{clientId:r}=t.payload;return function(e,t){return Object.assign(Object.assign({},e),{remoteParticipants:e.remoteParticipants.filter((e=>e.id!==t))})}(e,r)})),e.addCase(Fv.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:n}=t.payload;return Dy(e,r,{isAudioEnabled:n})})),e.addCase(Fv.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:n}=t.payload;return Dy(e,r,{isVideoEnabled:n})})),e.addCase(Fv.clientMetadataReceived,((e,t)=>{const{error:r,payload:n}=t.payload;if(r||!n)return console.warn(r||"Client metadata error received"),e;const{clientId:i,displayName:s,stickyReaction:o}=n;return Dy(e,i,{displayName:s,stickyReaction:o})})),e.addCase(Fv.screenshareStarted,((e,t)=>{const{clientId:r,streamId:n}=t.payload;return xy(e,r,n)})),e.addCase(Fv.screenshareStopped,((e,t)=>{const{clientId:r,streamId:n}=t.payload;return function(e,t,r){var n,i;const{participant:s}=Oy(e,t);if(!s)return console.error(`No participant ${t} found to remove stream ${r}`),e;const o=s.stream&&s.stream.id,a=(null===(n=s.presentationStream)||void 0===n?void 0:n.inboundId)||(null===(i=s.presentationStream)||void 0===i?void 0:i.id),c=s.streams.findIndex((e=>e.id===r));return Dy(e,t,Object.assign(Object.assign({streams:s.streams.filter(((e,t)=>t!==c))},o===r&&{stream:null}),a===r&&{presentationStream:null}))}(e,r,n)}))}}),{participantStreamAdded:jy,participantStreamIdAdded:Ly,streamStatusUpdated:Ay}=My.actions,Ny=Pv((e=>Hv(e)),(e=>(t,r)=>{const n=r(),i=Jv(n);if(e.enable&&!i)return void console.warn("Not authorized to perform this action");const s=pb(n).socket;null==s||s.emit("request_audio_enable",e)})),By=e=>e.remoteParticipants.remoteParticipants,Fy=Je(By,(e=>e.filter((e=>!dy.includes(e.roleName)))));Je(By,(e=>e.length+1));const zy=Je(Fy,gy,((e,t)=>dy.includes(t.roleName)?e.length:e.length+1)),Uy=Lt({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase($y.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase($y.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase($y.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),$y=Rv("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>Zv(void 0,void 0,void 0,(function*(){try{const e=r().app.roomUrl,n=yield t.services.fetchOrganizationFromRoomUrl(e||"");if(!n)throw new Error("Invalid room url");return n}catch(e){console.error(e)}})))),Vy=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId};Ev([Je(xv,(e=>e.organization),tb,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)))],(({dispatch:e},t)=>{t&&e($y())}));const Gy=Lt({initialState:{session:null,status:"ready",error:null},name:"roomConnection",reducers:{connectionStatusChanged:(e,t)=>Object.assign(Object.assign({},e),{status:t.payload})},extraReducers:e=>{e.addCase(Fv.roomJoined,((e,t)=>{var r,n;const{error:i,isLocked:s}=t.payload;return"room_locked"===i&&s?Object.assign(Object.assign({},e),{status:"room_locked"}):i?Object.assign(Object.assign({},e),{status:"disconnected",error:i}):Object.assign(Object.assign({},e),{status:"connected",session:null!==(n=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==n?n:null})})),e.addCase(Fv.disconnect,(e=>["kicked","left"].includes(e.status)?Object.assign({},e):Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(Fv.newClient,((e,t)=>{var r,n;return Object.assign(Object.assign({},e),{session:null!==(n=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==n?n:null})})),e.addCase(Fv.roomSessionEnded,((e,t)=>{var r;return(null===(r=e.session)||void 0===r?void 0:r.id)!==t.payload.roomSessionId?e:Object.assign(Object.assign({},e),{session:null})})),e.addCase(Fv.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(Fv.roomLeft,(e=>Object.assign(Object.assign({},e),{status:"left"}))),e.addCase(cb,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"})))}}),{connectionStatusChanged:qy}=Gy.actions,Hy=()=>(e,t)=>{const r=t(),n=pb(r).socket,i=Mv(r),s=Vv(r),o=jv(r),a=Lv(r),c=Av(r),d=Vy(r);null==n||n.emit("knock_room",{avatarUrl:null,config:{isAudioEnabled:!0,isVideoEnabled:!0},deviceCapabilities:{canScreenshare:!0},displayName:o,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:i,userAgent:a,externalId:c}),e(qy("knocking"))},Wy=()=>(e,t)=>{const r=t(),n=pb(r).socket,i=Mv(r),s=Vv(r),o=jv(r),a=Lv(r),c=Av(r),d=Vy(r),l=Jb(t()),u=Qb(t()),p=(e=>e.localParticipant.clientClaim)(t());null==n||n.emit("join_room",Object.assign({avatarUrl:null,config:{isAudioEnabled:u,isVideoEnabled:l},deviceCapabilities:{canScreenshare:!0},displayName:o,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:i,userAgent:a,externalId:c},p&&{clientClaim:p})),e(qy("connecting"))},Ky=e=>e.roomConnection.status;Ev([Je([xv,Vy,Ky,hb,ty,Nv],((e,t,r,n,i,s)=>!!(e&&("started"===i||s)&&n&&t&&["ready","reconnecting","disconnected"].includes(r))))],(({dispatch:e},t)=>{t&&e(Wy())})),kv({actionCreator:Fv.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:n,resolution:i}=e,s=r();n===vy(s)&&("accepted"===i?(t($v(e.metadata.roomKey)),t(Wy())):"rejected"===i&&t(qy("knock_rejected")))}}),kv({actionCreator:Dv,effect:(e,{dispatch:t,getState:r})=>{const n=r();if("connected"===Ky(n)){const e=pb(n).socket;null==e||e.emit("leave_room"),t(qy("leaving"))}else ub()}});function Jy(e){return Object.assign(Object.assign({},e),{timestamp:Date.now()})}const Qy=Lt({name:"notifications",initialState:{emitter:new fr,events:[]},reducers:{addNotification:(e,t)=>Object.assign(Object.assign({},e),{events:[...e.events,Object.assign({},t.payload)]}),doClearNotifications:e=>Object.assign(Object.assign({},e),{events:[]})}});Qy.actions;const Yy=e=>(t,r)=>{t(Qy.actions.addNotification(e));const n=r(),i=Zy(n);i.emit(e.type,e),i.emit("*",e)},Zy=e=>e.notifications.emitter;function Xy(e){return"recorder"===e.roleName}kv({actionCreator:Fv.chatMessage,effect:({payload:e},{dispatch:t,getState:r})=>{const n=r(),i=Fy(n).find((({id:t})=>t===e.senderId));i?t(Yy(Jy({type:"chatMessageReceived",message:`${i.displayName} says: ${e.text}`,props:{client:i,chatMessage:{senderId:e.senderId,timestamp:e.timestamp,text:e.text}}}))):console.warn("Could not find remote client that sent chat message")}}),kv({actionCreator:Fv.audioEnableRequested,effect:({payload:e},{dispatch:t,getState:r})=>{const{enable:n,requestedByClientId:i}=e,s=r(),o=Fy(s).find((({id:e})=>e===i));o?t(Yy(Jy({type:n?"requestAudioEnable":"requestAudioDisable",message:n?`${o.displayName} has requested for you to speak`:`${o.displayName} has muted your microphone`,props:{client:o,enable:n}}))):console.warn("Could not find remote client that requested a local audio change")}}),kv({actionCreator:Fv.clientMetadataReceived,effect:(e,{dispatch:t,getOriginalState:r,getState:n})=>{var i;const{error:s,payload:o}=e.payload;if(s||!o)return;const{clientId:a,stickyReaction:c}=o,d=n();if(!Jv(d))return;const l=Fy(d).find((({id:e})=>e===a));if(!l)return void console.warn("Could not find remote client that provided updated metadata");const u=r(),p=Fy(u).find((({id:e})=>e===a));(c||(null==p?void 0:p.stickyReaction))&&(null==c?void 0:c.timestamp)!==(null===(i=null==p?void 0:p.stickyReaction)||void 0===i?void 0:i.timestamp)&&t(Yy(Jy({type:c?"remoteHandRaised":"remoteHandLowered",message:`${l.displayName} ${c?"raised":"lowered"} their hand`,props:{client:l,stickyReaction:c}})))}}),Ev([fb],(({dispatch:e,getState:t},r)=>{const n=t(),i=Ky(n);["left","kicked"].includes(i)||("disconnected"===r?e(Yy(Jy({type:"signalTrouble",message:"Network connection lost. Trying to reconnect you...",props:{}}))):"connected"===r&&e(Yy(Jy({type:"signalOk",message:"Network connection available",props:{}}))))}));const e_=Lt({name:"room",initialState:{isLocked:!1},reducers:{},extraReducers:e=>{e.addCase(Fv.roomJoined,((e,t)=>{const{error:r,isLocked:n}=t.payload;return r?e:Object.assign(Object.assign({},e),{isLocked:Boolean(n)})})),e.addCase(Fv.roomLocked,((e,t)=>{const{isLocked:r}=t.payload;return Object.assign(Object.assign({},e),{isLocked:Boolean(r)})}))}}),t_=Pv((e=>qv(e)),(e=>(t,r)=>{const n=r(),{socket:i}=pb(n);null==i||i.emit("set_lock",{locked:e.locked})})),r_=Pv((e=>Wv(e)),(e=>(t,r)=>{const n=r(),{socket:i}=pb(n);null==i||i.emit("kick_client",{clientId:e.clientId,reasonId:"kick"})})),n_=Pv((e=>Kv(e)),(e=>(t,r)=>{const n=r(),i=By(n).map((e=>e.id));if(i.length){const{socket:e}=pb(n);null==e||e.emit("kick_client",{clientIds:i,reasonId:"end-meeting"})}e.stayBehind||t(Dv())})),i_=Je(Py,Fy,((e,t)=>{const r=[];e&&r.push({id:e.id||"local-screenshare",participantId:"local",hasAudioTrack:e.getTracks().some((e=>"audio"===e.kind)),stream:e,isLocal:!0});for(const e of t)e.presentationStream&&r.push({id:e.presentationStream.id||`pres-${e.id}`,participantId:e.id,hasAudioTrack:e.presentationStream.getTracks().some((e=>"audio"===e.kind)),stream:e.presentationStream,isLocal:!1});return r})),s_=Je(Py,gy,Fy,((e,t,r)=>{const n=[];if(e){const r=!!e.getAudioTracks().length;n.push({clientId:t.id,displayName:"Your screenshare",id:"local-screenshare",isAudioEnabled:r,isLocalClient:!0,isPresentation:!0,isVideoEnabled:!0,stream:e})}for(const e of r){if("streamer"===e.roleName||Xy(e))continue;const{presentationStream:t}=e,r=Yv(e,["presentationStream"]),i=e.displayName||"Guest",s=t&&t.active,o="pres-"+e.id,a=e.stream&&e.stream.active,c=e.isVideoEnabled;n.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,displayName:i,hasActivePresentation:!!s}),e.isVideoEnabled?{isVideoEnabled:c}:{})),s&&n.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,stream:e.presentationStream,displayName:`Screenshare (${i})`,id:o,isPresentation:!0,isVideoEnabled:!0}),a&&{isRecording:null}))}return n})),o_=Je(_y,s_,((e,t)=>[...e?[e]:[],...t])),a_=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(w_(r)):"stream_added"===t?e(ky.streamAdded(r)):"rtc_manager_destroyed"===t&&e(f_())}}),c_={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"inactive",isAcceptingStreams:!1},d_=Lt({name:"rtcConnection",initialState:c_,reducers:{isAcceptingStreams:(e,t)=>Object.assign(Object.assign({},e),{isAcceptingStreams:t.payload}),resolutionReported:(e,t)=>{const{streamId:r,width:n,height:i}=t.payload;return Object.assign(Object.assign({},e),{reportedStreamResolutions:Object.assign(Object.assign({},e.reportedStreamResolutions),{[r]:{width:n,height:i}})})},rtcDisconnected:()=>Object.assign({},c_),rtcDispatcherCreated:(e,t)=>Object.assign(Object.assign({},e),{dispatcherCreated:!0,rtcManagerDispatcher:t.payload}),rtcManagerCreated:(e,t)=>Object.assign(Object.assign({},e),{rtcManager:t.payload,status:"ready"}),rtcManagerDestroyed:e=>Object.assign(Object.assign({},e),{rtcManager:null}),rtcManagerInitialized:e=>Object.assign(Object.assign({},e),{rtcManagerInitialized:!0})},extraReducers:e=>{e.addCase(cb,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"}))),e.addCase(Fv.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"===e.status?"ready":e.status})))}}),{resolutionReported:l_,rtcDispatcherCreated:u_,rtcDisconnected:p_,rtcManagerCreated:h_,rtcManagerDestroyed:f_,rtcManagerInitialized:m_,isAcceptingStreams:g_}=d_.actions,v_=()=>(e,t)=>{const r=t(),n=pb(r).socket,i=C_(r).rtcManagerDispatcher,s=Jb(r),o=Qb(r),a=Nv(r);if(i||!n)return;const c={getMediaConstraints:()=>({audio:o,video:s}),deferrable:e=>!e},d=new Rm({emitter:a_(e),serverSocket:n,webrtcProvider:c,features:{lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:a?us.createFactory():void 0}});e(u_(d))},b_=()=>(e,t)=>{const{rtcManager:r}=C_(t());r&&r.disconnectAll(),e(p_())},y_=e=>(t,r)=>{var n;t(g_(!0));const i=r(),s=C_(i).rtcManager,o=By(i);if(!s)throw new Error("No rtc manager");const a=null===(n=s.shouldAcceptStreamsFromBothSides)||void 0===n?void 0:n.call(s),c=[];for(const{clientId:t,streamId:r,state:n}of e){if(o.find((e=>e.id===t))){if("to_accept"===n||"new_accept"===n&&a||"old_accept"===n&&!a)s.acceptNewStream({streamId:"0"===r?t:r,clientId:t,shouldAddLocalVideo:"0"===r,activeBreakout:false});else if("new_accept"===n||"old_accept"===n);else if("to_unaccept"===n)null==s||s.disconnect("0"===r?t:r,false);else if("done_accept"!==n)continue;c.push({clientId:t,streamId:r,state:n.replace(/to_|new_|old_/,"done_")})}}t(Ay(c)),t(g_(!1))},__=({streamId:e,width:t,height:r})=>(n,i)=>{const{reportedStreamResolutions:s,rtcManager:o}=C_(i()),a=ry(i());if(!o||(null==a?void 0:a.id)===e)return;const c=s[e];c&&c.width===t&&c.height===r||o.updateStreamResolution(e,null,{width:t||1,height:r||1}),n(l_({streamId:e,width:t,height:r}))},w_=e=>t=>{const{rtcManager:r}=e;t(h_(r))},S_=()=>(e,t)=>{const r=ry(t()),n=C_(t()).rtcManager,i=Jb(t()),s=Qb(t());r&&n&&n.addNewStream("0",r,!s,!i),e(m_())},C_=e=>e.rtcConnection,R_=e=>e.rtcConnection.rtcManagerInitialized,P_=e=>e.rtcConnection.status;kv({actionCreator:zb.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:n}=C_(t()),i=ry(t());null==r||r.forEach((e=>{((e,t)=>{const r=null==i?void 0:i.getTracks().find((t=>t.kind===e));r&&(null==n||n.replaceTrack(t,r))})(e.kind,e)}))}}),kv({actionCreator:Cy.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:n}=C_(t());null==n||n.addNewStream(r.id,r,!1,!0)}}),kv({actionCreator:Sy,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:n}=C_(t());null==n||n.removeStream(r.id,r,null)}}),kv({actionCreator:$b.fulfilled,effect:({payload:e},{getState:t})=>{var r;const n=ry(t()),{rtcManager:i}=C_(t());if(n&&i){const t=(e,t)=>{const r=n.getTracks().find((t=>t.kind===e));return r&&i.replaceTrack(t,r)};null===(r=null==e?void 0:e.replacedTracks)||void 0===r||r.forEach((e=>{t(e.kind,e)}))}}});Ev([Je((e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),mb,((e,t,r)=>!(e||t||!r)))],(({dispatch:e},t)=>{t&&e(v_())}));const T_=Je((e=>e.rtcConnection.rtcManager),R_,ty,((e,t,r)=>!("started"!==r||!e||t)));Ev([T_],(({dispatch:e},t)=>{t&&e(S_())}));Ev([Je(P_,xv,((e,t)=>!t&&!["inactive","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(b_())}));const k_=Je(P_,By,((e,t)=>{if("ready"!==e)return[];const r=[];for(const e of t){const{streams:t,id:n,newJoiner:i}=e;for(let e=0;e<t.length;e++){let s=t[e].id,o=t[e].state;(null==t?void 0:t.length)>1&&"0"===t[1].id&&(0===e?(s=t[1].id,o=t[1].state):1===e&&(s=t[0].id,o=t[0].state)),"done_accept"!==o&&r.push({clientId:n,streamId:s,state:(i&&"0"===s?"new":"to")+"_accept"})}}return r}));Ev([k_,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(y_(t))}));const E_={audioEnabled:{actions:[py.fulfilled],rtcEventName:"audioEnabled",getValue:e=>Qb(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[hy.fulfilled],rtcEventName:"videoEnabled",getValue:e=>Jb(e),getOutput:e=>({enabled:e})},localStream:{actions:[zb.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=ry(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({stream:e})},localScreenshareStream:{actions:[Cy.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=Py(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({tracks:e})},localScreenshareStreamStopped:{actions:[Sy],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[uy],rtcEventName:"displayName",getValue:e=>jv(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>vy(e),getOutput:e=>({clientId:e})},deviceId:{actions:null,rtcEventName:"deviceId",getValue:e=>(e=>{var t,r;return null===(r=null===(t=e.deviceCredentials.data)||void 0===t?void 0:t.credentials)||void 0===r?void 0:r.uuid})(e),getOutput:e=>({deviceId:e})},externalId:{actions:null,rtcEventName:"externalId",getValue:e=>Av(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>Vy(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>fb(e),getOutput:e=>({status:e})},roomSessionId:{actions:[Fv.newClient,Fv.roomJoined,Fv.roomSessionEnded,Fv.clientLeft],rtcEventName:"roomSessionId",getValue:e=>(e=>{var t;return null===(t=e.roomConnection.session)||void 0===t?void 0:t.id})(e),getOutput:e=>({roomSessionId:e})},rtcConnectionStatus:{actions:null,rtcEventName:"rtcConnectionStatus",getValue:e=>P_(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>Gv(e),getOutput:e=>({userRole:e})}},O_=Object.values(E_).flatMap((({actions:e})=>{var t;return null!==(t=null==e?void 0:e.map((e=>e)))&&void 0!==t?t:null})).filter((e=>null!==e)),D_=e=>"object"==typeof e?JSON.stringify(e):e,I_=Lt({initialState:{reportedValues:{}},name:"rtcAnalytics",reducers:{updateReportedValues:(e,t)=>Object.assign(Object.assign({},e),{reportedValues:Object.assign(Object.assign({},e.reportedValues),{[t.payload.rtcEventName]:t.payload.value})})}}),x_=()=>(e,t)=>{const r=t(),n=C_(r).rtcManager;n&&(n.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(E_).forEach((({rtcEventName:t,getValue:i,getOutput:s})=>{var o;const a=i(r),c=Object.assign(Object.assign({},s(a)),{_time:Date.now()}),d=D_(a);(null===(o=r.rtcAnalytics.reportedValues)||void 0===o?void 0:o[t])!==d&&(n.sendStatsCustomEvent(t,c),e(M_({rtcEventName:t,value:a})))})))},{updateReportedValues:M_}=I_.actions;function j_({isPresentation:e,stream:t}){var r,n;return e?null!==(n=null!==(r=null==t?void 0:t.outboundId)&&void 0!==r?r:null==t?void 0:t.inboundId)&&void 0!==n?n:null==t?void 0:t.id:"0"}function L_(e,t){return e.find((e=>e.clientId===t.clientId&&e.streamId===t.streamId))?e:e.concat(t)}kv({matcher:Rt(...O_),effect:({type:e},{getState:t,dispatch:r})=>{var n;const i=t(),s=C_(i).rtcManager;if(!s)return;const o=Object.values(E_).find((({actions:t})=>null==t?void 0:t.map((e=>e.type)).includes(e)));if(!o)return;const{getValue:a,getOutput:c,rtcEventName:d}=o,l=a(i),u=D_(l),p=Object.assign(Object.assign({},c(l)),{_time:Date.now()});(null===(n=i.rtcAnalytics.reportedValues)||void 0===n?void 0:n[d])!==u&&(s.sendStatsCustomEvent(d,p),r(M_({rtcEventName:d,value:l})))}}),Ev([R_],(({dispatch:e},t)=>{t&&e(x_())}));const A_=Lt({name:"spotlights",initialState:{sorted:[]},reducers:{addSpotlight(e,t){const{clientId:r,streamId:n}=t.payload;return Object.assign(Object.assign({},e),{sorted:L_(e.sorted,{clientId:r,streamId:n})})},removeSpotlight(e,t){const{clientId:r,streamId:n}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>!(e.clientId===r&&e.streamId===n)))})}},extraReducers:e=>{e.addCase(Fv.roomJoined,((e,t)=>{if(!t.payload.room)return e;const{spotlights:r}=t.payload.room;return Object.assign(Object.assign({},e),{sorted:r})})),e.addCase(Fv.spotlightAdded,((e,t)=>{const{clientId:r,streamId:n}=t.payload;return Object.assign(Object.assign({},e),{sorted:L_(e.sorted,{clientId:r,streamId:n})})})),e.addCase(Fv.spotlightRemoved,((e,t)=>{const{clientId:r,streamId:n}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>!(e.clientId===r&&e.streamId===n)))})})),e.addMatcher(Rt(Fv.clientKicked,Fv.clientLeft),((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>e.clientId!==r))})}))}}),{addSpotlight:N_,removeSpotlight:B_}=A_.actions,F_=Pv((e=>Qv(e)),(({id:e})=>(t,r)=>{const n=r(),i=o_(n).find((t=>t.clientId===e));if(!i)return;const{socket:s}=pb(n),o=j_(i),a={clientId:i.id,streamId:null!=o?o:"0"};null==s||s.emit("add_spotlight",a)})),z_=Pv((e=>Qv(e)),(({id:e})=>(t,r)=>{const n=r(),i=o_(n).find((t=>t.clientId===e));if(!i)return;const{socket:s}=pb(n),o=j_(i),a={clientId:i.id,streamId:null!=o?o:"0"};null==s||s.emit("remove_spotlight",a)})),U_=e=>e.spotlights.sorted;Je(gy,U_,((e,t)=>function({spotlights:e,isPresentation:t,clientId:r,stream:n}){return!!e.find((e=>{const i=j_({isPresentation:t,stream:n});return e.clientId===r&&e.streamId===i}))}({clientId:e.id,stream:e.stream,spotlights:t})));const $_=Je(o_,U_,((e,t)=>function(e,t){return e.reduce(((e,r)=>{const n=t.find((e=>r.clientId===e.clientId&&r.streamId===j_(e)));return n&&!e.includes(n)&&e.push(n),e}),[])}(t,e)));kv({actionCreator:Cy.fulfilled,effect:({payload:e},{getState:t,dispatch:r})=>{const{stream:n}=e,i=t(),s=gy(i);s&&r(N_({clientId:s.id,streamId:n.id}))}}),kv({actionCreator:Sy,effect:({payload:e},{getState:t,dispatch:r})=>{const{stream:n}=e,i=t(),s=gy(i);s&&r(B_({clientId:s.id,streamId:n.id}))}});const V_=Lt({name:"streaming",initialState:{isStreaming:!1,error:null,startedAt:void 0},reducers:{doHandleStreamingStarted:e=>Object.assign(Object.assign({},e),{isStreaming:!0,error:null,startedAt:(new Date).getTime()}),doHandleStreamingStopped:e=>Object.assign(Object.assign({},e),{isStreaming:!1})}});V_.actions;const G_=Lt({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(Fv.roomJoined,((e,{payload:t})=>{var r;return(null===(r=t.room)||void 0===r?void 0:r.knockers.length)?Object.assign(Object.assign({},e),{waitingParticipants:t.room.knockers.map((e=>({id:e.clientId,displayName:e.displayName})))}):e})),e.addCase(Fv.roomKnocked,((e,t)=>{const{clientId:r,displayName:n}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:[...e.waitingParticipants,{id:r,displayName:n}]})})),e.addCase(Fv.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}}),q_=e=>(t,r)=>{const{participantId:n}=e,i=r(),s=mb(i);null==s||s.emit("handle_knock",{action:"accept",clientId:n,response:{}})},H_=e=>(t,r)=>{const{participantId:n}=e,i=r(),s=mb(i);null==s||s.emit("handle_knock",{action:"reject",clientId:n,response:{}})};const W_=null===!1&&!1,K_=V({app:Ov.reducer,authorization:Uv.reducer,chat:vb.reducer,cloudRecording:yb.reducer,deviceCredentials:Xv.reducer,localMedia:Pb.reducer,localParticipant:ly.reducer,localScreenshare:wy.reducer,notifications:Qy.reducer,organization:Uy.reducer,remoteParticipants:My.reducer,room:e_.reducer,roomConnection:Gy.reducer,rtcAnalytics:I_.reducer,rtcConnection:d_.reducer,signalConnection:rb.reducer,spotlights:A_.reducer,streaming:V_.reducer,waitingParticipants:G_.reducer}),J_=(e,t)=>{var r;if(Iv.match(t)){const n={app:Object.assign(Object.assign({},Ov.getInitialState()),{initialConfig:null===(r=null==e?void 0:e.app)||void 0===r?void 0:r.initialConfig}),localMedia:Object.assign(Object.assign({},Pb.getInitialState()),null==e?void 0:e.localMedia)};return K_(n,t)}return K_(e,t)};class Q_{constructor(e={}){this.data=void 0===e.data?{}:e.data,this.headers=e.headers||{},this.status=e.status||200,this.statusText=e.statusText||"OK",this.url=e.url||null}}function Y_(e,t){return Om.ok(e,`${t} is required`),e}function Z_(e,t){return Om.ok("boolean"==typeof e,`${t}<boolean> is required`),e}function X_(e,t){return Om.ok("number"==typeof e,`${t}<number> is required`),e}function ew(e,t){return Om.ok("string"==typeof e,`${t}<string> is required`),e}function tw(e,t,r){const n=r||t.name[0].toLowerCase()+t.name.substring(1);return Om.ok(e instanceof t,`${n}<${t.name}> is required`),e}function rw(e,t){return Om.ok(Array.isArray(e),`${t}<array> is required`),e}function nw(e,t){if(null==e||"object"!=typeof e||Array.isArray(e))throw new Error(`${t} must be a record. ${JSON.stringify(e)}`);return e}function iw(e,t,r){ew(t,"name"),function(e,t,r,n){ew(r,"name");const i=n||`${r} must be null or of type ${t}`;Om.ok(null===e||typeof e===t,i)}(e,"string",t,r)}function sw({baseUrl:e,url:t}){return e?e+t:t}class ow{constructor({baseUrl:e}){ew(e,"baseUrl"),this._baseUrl=e}_requestAxios(e,t){const r=Object.assign({},t,{url:e,baseURL:this._baseUrl});return Cv.request(r)}request(e,t){return ew(e,"url"),Om.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Om.ok(t,"options are required"),this._requestAxios(e,t).then((e=>{const{data:t,headers:r,status:n,statusText:i,config:s}=e,o=s&&s.url?sw({baseUrl:s.baseURL,url:s.url}):null;return new Q_({data:t,headers:r,status:n,statusText:i,url:o})})).catch((e=>{const t=e.response;if(!t)throw new Error("Could not make the request.");const{data:r,headers:n,status:i,statusText:s,config:o}=t,a=o&&o.url?sw({baseUrl:o.baseURL,url:o.url}):null;return Promise.reject(new Q_({data:r,headers:n,status:i,statusText:s,url:a}))}))}}class aw{constructor({httpClient:e}){Om.ok(e,"httpClient is required"),this._httpClient=e}static dataToFormData(e){Om.ok(e,"data is required");const t=new FormData;return Object.keys(e).forEach((r=>{const n=e[r];t.append(r,n)})),t}request(e,t={}){const r=Object.assign(t.headers||{},{"Content-Type":void 0});return this._httpClient.request(e,Object.assign(t,{headers:r,transformRequest:aw.dataToFormData}))}}let cw;cw="object"==typeof window?window.btoa||Bm:"object"==typeof global&&global.btoa||Bm;const dw=()=>Promise.resolve(null);class lw{constructor({httpClient:e,fetchDeviceCredentials:t}){this._httpClient=e,this._fetchDeviceCredentials=t}request(e,t){return this._fetchDeviceCredentials().then((r=>{const n=Object.assign({},t.headers,function(e){if(e&&e.credentials){const t=`${e.credentials.uuid}:${e.hmac}`;return{Authorization:`Basic ${cw(t)}`}}return{}}(r),{"X-Appearin-Device-Platform":"web"}),i=Object.assign({},t,{headers:n});return this._httpClient.request(e,i)}))}}class uw{constructor({baseUrl:e="https://api.appearin.net",fetchDeviceCredentials:t=dw}={}){this.authenticatedHttpClient=new lw({httpClient:new ow({baseUrl:e}),fetchDeviceCredentials:t}),this.authenticatedFormDataHttpClient=new aw({httpClient:this.authenticatedHttpClient})}request(e,t){return ew(e,"url"),Om.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Om.ok(t,"options are required"),this.authenticatedHttpClient.request(e,t)}requestMultipart(e,t){return ew(e,"url"),Om.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Om.ok(t,"options are required"),this.authenticatedFormDataHttpClient.request(e,t)}}function pw(e,t){return ew(nw(e,"data")[t],t)}const hw=(fw=pw,(e,t)=>{const r=nw(e,"data")[t];return null==r?null:fw(e,t)});var fw;function mw(e,t,r){return function(e,t){return rw(nw(e,"data")[t],t)}(e,t).map((e=>r(e)))}class gw{constructor(e,t,r=void 0){this.credentials={uuid:e},this.hmac=t,this.userId=r}toJson(){return Object.assign({credentials:this.credentials,hmac:this.hmac},this.userId&&{userId:this.userId})}static fromJson(e){return new gw(pw(function(e,t){const r=nw(e,"data")[t];return void 0===r?null:r}(e,"credentials"),"uuid"),pw(e,"hmac"),hw(e,"userId")||void 0)}}class vw{constructor({apiClient:e}){this._apiClient=e}getCredentials(){return this._apiClient.request("/devices",{method:"post"}).then((({data:e})=>gw.fromJson(e))).catch((e=>{if(e.response&&404===e.response.status)return null;throw e}))}}class bw{constructor(e,t){this._key=e,this._chromeStorage=t}loadOrDefault(e){return new Promise((t=>{this._chromeStorage.get(this._key,(r=>{t(r[this._key]||e)}))}))}save(e){return new Promise((t=>{this._chromeStorage.set({[this._key]:e},(()=>{t()}))}))}}class yw{constructor(e,t){Y_(t,"localStorage"),this._key=ew(e,"key"),this._localStorage=t}loadOrDefault(e){try{const t=this._localStorage.getItem(this._key);if(t)try{return Promise.resolve(JSON.parse(t))}catch(e){}return Promise.resolve(e)}catch(t){return console.warn("Error getting access to storage. Are cookies blocked?",t),Promise.resolve(e)}}save(e){try{return this._localStorage.setItem(this._key,JSON.stringify(e)),Promise.resolve()}catch(e){return console.warn("Error getting access to storage. Are cookies blocked?",e),Promise.reject(e)}}}let _w;try{_w=self.localStorage}catch(ak){_w={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}var ww=_w;const Sw="credentials_saved";class Cw extends fr{constructor({deviceService:e,credentialsStore:t}){super(),this._deviceService=e,this._credentialsStore=t}static create({baseUrl:e,storeName:t="CredentialsStorage",storeType:r="localStorage"}){const n=new vw({apiClient:new uw({baseUrl:e})});let i=null;if("localStorage"===r)i=new yw(t,ww);else{if("chromeStorage"!==r)throw new Error(`Unknown store type: ${r}`);i=new bw(t,window.chrome.storage.local)}return new Cw({deviceService:n,credentialsStore:i})}_fetchNewCredentialsFromApi(){const e=this._credentialsStore;return new Promise((t=>{const r=()=>{this._deviceService.getCredentials().then((r=>e.save(r?r.toJson():null).then((()=>t(r))))).catch((()=>{setTimeout(r,2e3)}))};r()}))}getCurrentCredentials(){return this._credentialsStore.loadOrDefault(null).then((e=>e?gw.fromJson(e):null))}getCredentials(){return this.credentialsPromise||(this.credentialsPromise=this.getCurrentCredentials().then((e=>e||this._fetchNewCredentialsFromApi()))),this.credentialsPromise}saveCredentials(e){return this.credentialsPromise=void 0,this._credentialsStore.save(e.toJson()).then((()=>(this.emit(Sw,e),e)))}setUserId(e){return this.getCurrentCredentials().then((t=>{t||console.error("Illegal state: no credentials to set user id for.");if(null===t||t.userId!==e)return this._credentialsStore.save(Object.assign({},null==t?void 0:t.toJson(),{userId:e}))})).then((()=>{}))}}class Rw{constructor({isExhausted:e,renewsAt:t,totalMinutesLimit:r,totalMinutesUsed:n}){this.isExhausted=e,this.renewsAt=t,this.totalMinutesLimit=r,this.totalMinutesUsed=n}static fromJson(e){return new Rw({isExhausted:Z_(e.isExhausted,"isExhausted"),renewsAt:new Date(ew(e.renewsAt,"renewsAt")),totalMinutesLimit:X_(e.totalMinutesLimit,"totalMinutesLimit"),totalMinutesUsed:X_(e.totalMinutesUsed,"totalMinutesUsed")})}}class Pw{constructor({basePlanId:e,embeddedFreeTierStatus:t,isDeactivated:r,isOnTrial:n,onTrialUntil:i,trialStatus:s}){this.basePlanId=e,this.isDeactivated=r,this.isOnTrial=n,this.onTrialUntil=i||null,this.trialStatus=s||null,this.embeddedFreeTierStatus=t||null}static fromJson(e){return new Pw({basePlanId:"string"==typeof e.basePlanId?e.basePlanId:null,isDeactivated:Z_(e.isDeactivated,"isDeactivated"),isOnTrial:Z_(e.isOnTrial,"isOnTrial"),onTrialUntil:"string"==typeof e.onTrialUntil?new Date(e.onTrialUntil):null,trialStatus:"string"==typeof e.trialStatus?e.trialStatus:null,embeddedFreeTierStatus:e.embeddedFreeTierStatus?Rw.fromJson(e.embeddedFreeTierStatus):null})}}function Tw(e){return null!=e}function kw(e={}){return{maxNumberOfInvitationsAndUsers:Tw(null==e?void 0:e.maxNumberOfInvitationsAndUsers)?Number(null==e?void 0:e.maxNumberOfInvitationsAndUsers):null,maxNumberOfClaimedRooms:Tw(null==e?void 0:e.maxNumberOfClaimedRooms)?Number(null==e?void 0:e.maxNumberOfClaimedRooms):null,maxRoomLimitPerOrganization:Tw(null==e?void 0:e.maxRoomLimitPerOrganization)?Number(null==e?void 0:e.maxRoomLimitPerOrganization):null,trialMinutesLimit:Tw(null==e?void 0:e.trialMinutesLimit)?Number(null==e?void 0:e.trialMinutesLimit):null,includedUnits:Tw(null==e?void 0:e.includedUnits)?Number(null==e?void 0:e.includedUnits):null}}class Ew{constructor(e){this.logoImageUrl=null,this.roomBackgroundImageUrl=null,this.roomBackgroundThumbnailUrl=null,this.roomKnockPageBackgroundImageUrl=null,this.roomKnockPageBackgroundThumbnailUrl=null,this.preferences=null,this.onboardingSurvey=null,this.type=null,tw(e,Object,"properties"),ew(e.organizationId,"organizationId"),ew(e.organizationName,"organizationName"),ew(e.subdomain,"subdomain"),tw(e.permissions,Object,"permissions"),tw(e.limits,Object,"limits"),this.organizationId=e.organizationId,this.organizationName=e.organizationName,this.subdomain=e.subdomain,this.permissions=e.permissions,this.limits=e.limits,this.account=e.account?new Pw(e.account):null,this.logoImageUrl=e.logoImageUrl,this.roomBackgroundImageUrl=e.roomBackgroundImageUrl,this.roomBackgroundThumbnailUrl=e.roomBackgroundThumbnailUrl,this.roomKnockPageBackgroundImageUrl=e.roomKnockPageBackgroundImageUrl,this.roomKnockPageBackgroundThumbnailUrl=e.roomKnockPageBackgroundThumbnailUrl,this.preferences=e.preferences,this.onboardingSurvey=e.onboardingSurvey,this.type=e.type}static fromJson(e){const t=tw(e,Object,"data"),r=(null==t?void 0:t.preferences)||{},n=(null==t?void 0:t.onboardingSurvey)||null,i=tw(t.permissions,Object,"permissions");return new Ew({organizationId:ew(t.organizationId,"organizationId"),organizationName:ew(t.organizationName,"organizationName"),subdomain:ew(t.subdomain,"subdomain"),permissions:i,limits:kw(tw(t.limits,Object,"limits")),account:t.account?Pw.fromJson(t.account):null,logoImageUrl:"string"==typeof t.logoImageUrl?t.logoImageUrl:null,roomBackgroundImageUrl:"string"==typeof t.roomBackgroundImageUrl?t.roomBackgroundImageUrl:null,roomBackgroundThumbnailUrl:"string"==typeof t.roomBackgroundThumbnailUrl?t.roomBackgroundThumbnailUrl:null,roomKnockPageBackgroundImageUrl:"string"==typeof t.roomKnockPageBackgroundImageUrl?t.roomKnockPageBackgroundImageUrl:null,roomKnockPageBackgroundThumbnailUrl:"string"==typeof t.roomKnockPageBackgroundThumbnailUrl?t.roomKnockPageBackgroundThumbnailUrl:null,preferences:r,onboardingSurvey:n,type:"string"==typeof t.type?t.type:null})}}Ew.GLOBAL_ORGANIZATION_ID="1";class Ow{constructor({apiClient:e}){this._apiClient=e}createOrganization({organizationName:e,subdomain:t,owner:r}){const{displayName:n,consents:i}=r||{},s="email"in r?{value:r.email,verificationCode:ew(r.verificationCode,"owner.verificationCode")}:null,o="idToken"in r?r.idToken:null;if(ew(t,"subdomain"),ew(e,"organizationName"),ew(n,"owner.displayName"),Om.ok(s||o,"owner.email or owner.idToken is required"),i){rw(i,"consents");for(const{consentRevisionId:e,action:t}of i)ew(e,"consentRevisionId"),iw(t,"action")}return this._apiClient.request("/organizations",{method:"POST",data:{organizationName:e,type:"private",subdomain:t,owner:Object.assign(Object.assign(Object.assign(Object.assign({},s&&{email:s}),o&&{idToken:o}),i&&{consents:i}),{displayName:n})}}).then((({data:e})=>pw(e,"organizationId")))}getOrganizationBySubdomain(e){return ew(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/?fields=permissions,account,onboardingSurvey`,{method:"GET"}).then((({data:e})=>Ew.fromJson(e))).catch((e=>{if(e instanceof Q_){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationByOrganizationId(e){return ew(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}?fields=permissions,account`,{method:"GET"}).then((({data:e})=>Ew.fromJson(e))).catch((e=>{if(e instanceof Q_){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationsByContactPoint(e){const{code:t}=e,r="email"in e?e.email:null,n="phoneNumber"in e?e.phoneNumber:null;Om.ok((r||n)&&!(r&&n),"either email or phoneNumber is required"),ew(t,"code");const i=r?{type:"email",value:r}:{type:"phoneNumber",value:n};return this._apiClient.request("/organization-queries",{method:"POST",data:{contactPoint:i,code:t}}).then((({data:e})=>mw(e,"organizations",(e=>Ew.fromJson(e)))))}getOrganizationsByIdToken({idToken:e}){return ew(e,"idToken"),this._apiClient.request("/organization-queries",{method:"POST",data:{idToken:e}}).then((({data:e})=>mw(e,"organizations",(e=>Ew.fromJson(Object.assign({permissions:{},limits:{}},nw(e,"organization")))))))}getOrganizationsByLoggedInUser(){return this._apiClient.request("/user/organizations",{method:"GET"}).then((({data:e})=>mw(e,"organizations",(e=>Ew.fromJson(Object.assign({permissions:{},limits:{}},nw(e,"organization")))))))}getSubdomainAvailability(e){return ew(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/availability`,{method:"GET"}).then((({data:e})=>(tw(e,Object,"data"),{status:pw(e,"status")})))}updatePreferences({organizationId:e,preferences:t}){return Y_(e,"organizationId"),Y_(t,"preferences"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}/preferences`,{method:"PATCH",data:t}).then((()=>{}))}deleteOrganization({organizationId:e}){return Y_(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}`,{method:"DELETE"}).then((()=>{}))}}class Dw{constructor({organizationService:e,subdomain:t}){this._organizationService=e,this._subdomain=t,this._organizationPromise=null}initOrganization(){return this.fetchOrganization().then((()=>{}))}fetchOrganization(){return this._organizationPromise||(this._organizationPromise=this._organizationService.getOrganizationBySubdomain(this._subdomain)),this._organizationPromise}}const Iw="https://api.whereby.dev";var xw=function(){return xw=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},xw.apply(this,arguments)};function Mw(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r}"function"==typeof SuppressedError&&SuppressedError;const jw=j.withTypes(),Lw=R.withTypes(),Aw=s.forwardRef(((e,t)=>{var{muted:r,mirror:n=!1,stream:i,onVideoResize:o}=e,a=Mw(e,["muted","mirror","stream","onVideoResize"]);const c=jw(),d=Lw(Kb),l=s.useRef(null),u=s.useRef(null);return s.useImperativeHandle(t,(()=>Object.assign(l.current,{captureAspectRatio:()=>{if(!l.current)return null;const e=l.current.videoHeight,t=l.current.videoWidth;return t&&e&&t+e>20?t/e:null}}))),s.useEffect((()=>{if(!l.current)return;const e=new ResizeObserver(Rb((()=>{if(l.current&&(null==i?void 0:i.id)){const e=l.current.clientWidth,t=l.current.clientHeight;c(__({streamId:i.id,width:e,height:t})),o&&o({width:e,height:t,stream:i})}}),{delay:1e3,edges:!0}));return e.observe(l.current),()=>{e.disconnect()}}),[i]),s.useEffect((()=>{l.current&&(l.current.srcObject!==i&&(l.current.srcObject=i),l.current.muted!==r&&(l.current.muted=Boolean(r)))}),[r,i,l]),s.useEffect((()=>{u.current&&!r&&i&&d&&(u.current.srcObject!==i&&(u.current.srcObject=i),u.current.setSinkId&&u.current.setSinkId(d))}),[i,u,d,r]),s.createElement(s.Fragment,null,s.createElement("video",Object.assign({ref:l,autoPlay:!0,playsInline:!0},a,{style:Object.assign({transform:n?"scaleX(-1)":"none",width:"100%",height:"100%"},a.style)})),s.createElement("audio",{ref:u,autoPlay:!0,playsInline:!0}))}));Aw.displayName="VideoView";const Nw=Je((e=>e.chat.chatMessages),(e=>e.cloudRecording),gy,ry,Fy,i_,Ky,(e=>e.streaming),(e=>e.waitingParticipants.waitingParticipants),Zy,$_,((e,t,r,n,i,s,o,a,c,d,l)=>({chatMessages:e,cloudRecording:t.isRecording?{status:"recording"}:void 0,connectionStatus:o,events:d,liveStream:a.isStreaming?{status:"streaming",startedAt:a.startedAt}:void 0,localScreenshareStatus:r.isScreenSharing?"active":void 0,localParticipant:Object.assign(Object.assign({},r),{stream:n}),remoteParticipants:i,screenshares:s,waitingParticipants:c,spotlightedParticipants:l}))),Bw={localMediaOptions:{audio:!0,video:!0}};const Fw=Je((e=>e.localMedia.cameraDeviceError),oy,Hb,Wb,Kb,(e=>e.localMedia.isSettingCameraDevice),(e=>e.localMedia.isSettingMicrophoneDevice),sy,ry,(e=>e.localMedia.microphoneDeviceError),ay,cy,(e=>e.localMedia.startError),((e,t,r,n,i,s,o,a,c,d,l,u,p)=>({cameraDeviceError:e,cameraDevices:t,currentCameraDeviceId:r,currentMicrophoneDeviceId:n,currentSpeakerDeviceId:i,isSettingCameraDevice:s,isSettingMicrophoneDevice:o,isStarting:a,localStream:c,microphoneDeviceError:d,microphoneDevices:l,speakerDevices:u,startError:p})));var zw={MIN_WINDOW_HEIGHT:320,MIN_WINDOW_WIDTH:320,DESKTOP_BREAKPOINT:1025,TABLET_BREAKPOINT:750,PHONE_BREAKPOINT:500,TOP_TOOLBAR_HEIGHT:56,BOTTOM_TOOLBAR_HEIGHT:82,SIDEBAR_WIDTH:375,VIDEO_CONTROLS_MIN_WIDTH:420,ROOM_FOOTER_MIN_WIDTH:600,FLOATING_VIDEO_CONTROLS_BOTTOM_MARGIN:20,WATERMARK_BAR_HEIGHT:32,BREAKOUT_STAGE_BACKDROP_HEADER_HEIGHT:28,BREAKOUT_STAGE_BACKDROP_FOOTER_HEIGHT:56,SUBGRID_EMPTY_STAGE_MAX_WIDTH:800,GROUPS_CELL_MARGIN:8,GROUPS_CELL_PADDING:12,GROUPS_CELL_NAV_HEIGHT:56,GROUPS_CELL_AVATAR_WRAPPER_BOTTOM_MARGIN:8,GROUPS_CELL_AVATAR_GRID_GAP:8,GROUPS_CELL_MIN_WIDTH:360,GROUPS_CELL_MAX_WIDTH:600,GROUPS_ROW_HEIGHT:72,GROUPS_ROW_GAP:1,FOLDABLE_SCREEN_STAGE_PADDING:8};function Uw({top:e=0,left:t=0}={}){return{top:e,left:t}}function $w({width:e=0,height:t=0}={}){return{width:Math.max(e,0),height:Math.max(t,0)}}function Vw({top:e=0,left:t=0,width:r=0,height:n=0}={}){return{bounds:$w({width:r,height:n}),origin:Uw({top:e,left:t})}}function Gw({top:e=0,left:t=0,bottom:r=0,right:n=0}={}){return{top:e,left:t,bottom:r,right:n}}function qw(e){return!!e&&!(e.width<=0||e.height<=0)}function Hw(e,t){const{width:r,height:n}=t,i=n,s=i*e,o=Math.min(r/s,n/i);return{width:s*o,height:i*o}}const Ww=({vertical:e,width:t,height:r,count:n,aspectRatio:i})=>{const s=[1,2,3].map((s=>(({width:e,height:t,rows:r,cols:n,aspectRatio:i})=>{const s=Hw(i,{width:e/n,height:t/r});return Math.round(s.width*s.height)})({width:t,height:r,rows:e?Math.ceil(n/s):s,cols:e?s:Math.ceil(n/s),aspectRatio:i}))),o=Math.max(...s);return{splits:s.indexOf(o)+1,weight:o}},Kw=({width:e,height:t,count:r,aspectRatio:n})=>{const i=Ww({vertical:!0,width:e,height:t,count:r,aspectRatio:n}),s=Ww({vertical:!1,width:e,height:t,count:r,aspectRatio:n});return i.weight>s.weight?{splits:i.splits,vertical:!0}:{splits:s.splits,vertical:!1}};function Jw(e){var{aspectRatio:t,children:r,className:n,height:i,style:o,width:a,withRoundedCorners:c=!1,withShadow:d=!0}=e,l=Mw(e,["aspectRatio","children","className","height","style","width","withRoundedCorners","withShadow"]);let u=a,p=i,h=0,f=0;t&&(({width:u,height:p}=Hw(t,{width:a,height:i})),h=(a-u)/2,f=(i-p)/2);const m=Object.assign({width:`${Math.round(u)}px`,height:`${Math.round(p)}px`},h||f?{transform:`translate3d(${Math.round(h)}px, ${Math.round(f)}px, 0)`}:{});return s.createElement("div",{className:n,style:Object.assign({position:"absolute",top:0,left:0},o)},s.createElement("div",Object.assign({style:m},l),s.cloneElement(r,{contentWidth:u,contentHeight:p,withRoundedCorners:c,withShadow:d})))}function Qw({origin:e,bounds:t}){return{top:Math.round(e.top),left:Math.round(e.left),height:Math.round(t.height),width:Math.round(t.width)}}function Yw({cell:e,child:t,clientId:r,style:n={},withRoundedCorners:i=!1,withShadow:o=!1}){const a=!qw(e.bounds);return s.createElement(Jw,{width:e.bounds.width,height:e.bounds.height,aspectRatio:e.aspectRatio,style:a?{width:0,height:0}:n,withRoundedCorners:i,withShadow:o,key:r},t)}function Zw({debug:e=!1,featureRoundedCornersOff:t=!1,gridContent:r=[],isConstrained:n=!1,layoutOverflowBackdropFrame:i=Vw(),layoutVideoStage:o,presentationGridContent:a=[],subgridContent:c=[]}){const d=!t&&!n,l=[];return r.length&&l.push(...function({content:e,isConstrained:t,stageLayout:r,withRoundedCorners:n,withShadow:i}){var o;const a=(null===(o=r.videoGrid)||void 0===o?void 0:o.cells)||[],c=e.map(((e,o)=>{var c,d;if(!r.videoGrid)return null;const l=a[o],u={top:r.videoGrid.origin.top+r.videoGrid.paddings.top+l.origin.top,left:r.videoGrid.origin.left+r.videoGrid.paddings.left+l.origin.left},p={width:Math.round(l.bounds.width),height:Math.round(l.bounds.height),transform:`translate3d(${Math.round(u.left)}px, ${Math.round(u.top)}px, 0)`},h=null===(d=null===(c=null==e?void 0:e.props)||void 0===c?void 0:c.participant)||void 0===d?void 0:d.id;return Yw({cell:l,child:s.cloneElement(e,{isSmallCell:l.isSmallCell,isZoomedByDefault:!!t&&!(null==e?void 0:e.props.participant.isPresentation),canZoom:!!t,key:h||`video-${o}`}),clientId:h||`video-${o}`,withRoundedCorners:n,style:p,withShadow:i})}));return c}({content:r,isConstrained:n,stageLayout:o,withRoundedCorners:d,withShadow:!n})),a.length&&l.push(...function({content:e,isConstrained:t,stageLayout:r,withRoundedCorners:n,withShadow:i}){var o;const a=(null===(o=r.presentationGrid)||void 0===o?void 0:o.cells)||[];return e.map(((e,o)=>{var c,d;if(!r.presentationGrid)return null;const l=a[o],u={top:r.presentationGrid.origin.top+r.presentationGrid.paddings.top+l.origin.top,left:r.presentationGrid.origin.left+r.presentationGrid.paddings.left+l.origin.left},p={width:Math.round(l.bounds.width),height:Math.round(l.bounds.height),transform:`translate3d(${Math.round(u.left)}px, ${Math.round(u.top)}px, 0)`},h=null===(d=null===(c=null==e?void 0:e.props)||void 0===c?void 0:c.participant)||void 0===d?void 0:d.id;return Yw({cell:l,child:s.cloneElement(e,{isSmallCell:l.isSmallCell,isZoomedByDefault:!!t&&!(null==e?void 0:e.props.participant.isPresentation),canZoom:!!t,key:h||`presentation-${o}`}),clientId:h||`presentation-${o}`,style:p,withRoundedCorners:n,withShadow:i})}))}({content:a,isConstrained:n,stageLayout:o,withRoundedCorners:d,withShadow:!n})),c.length&&l.push(...function({content:e,stageLayout:t,withRoundedCorners:r,withShadow:n}){const i=t.subgrid.cells;return e.map(((e,o)=>{var a,c,d,l;const u=i[o],p={height:Math.round(u.bounds.height),width:Math.round(u.bounds.width),transform:""},h={top:t.subgrid.origin.top+u.origin.top,left:t.subgrid.origin.left+u.origin.left};p.transform=`translate3d(${Math.round(h.left)}px, ${Math.round(h.top)}px, 0)`;const f=null===(c=null===(a=null==e?void 0:e.props)||void 0===a?void 0:a.participant)||void 0===c?void 0:c.id,m=(null===(d=u.paddings)||void 0===d?void 0:d.left)||0,g=(null===(l=u.paddings)||void 0===l?void 0:l.right)||0;return Yw({cell:u,child:s.cloneElement(e,{avatarSize:u.bounds.width-m-g,canZoom:!1,cellPaddings:u.paddings,isSmallCell:u.isSmallCell,isZoomedByDefault:!1,key:f||`subgrid-${o}`,style:p}),clientId:f||`subgrid-${o}`,style:p,withRoundedCorners:r,withShadow:n})}))}({content:c,stageLayout:o,withRoundedCorners:!t,withShadow:!0})),s.createElement("div",{key:"video-stage-layout",style:{width:"100%",height:"100%",position:"relative"}},qw(i.bounds)&&s.createElement("div",{style:Qw(i)}),l,e&&s.createElement(s.Fragment,null))}const Xw=16/9,eS=4/3,tS=({value:e,min:t,max:r})=>Math.min(Math.max(e,t),r);function rS({choices:e=[]}){const t=Math.min(...e),r=Math.max(...e);let n=null;if(t===r)n=t;else{const t=function(...e){return new Set(e).size!==e.length}(e)?(i=e).sort(((e,t)=>i.filter((t=>t===e)).length-i.filter((e=>e===t)).length)).pop():r;n=tS({value:t||r,min:eS,max:Xw})}var i;return{minAr:t,maxAr:r,chosenAr:n}}function nS({width:e,height:t,cellCount:r,gridGap:n,cellAspectRatios:i=[eS],paddings:s=Gw()}){if(!r)return{cellCount:r,cellHeight:0,cellWidth:0,cols:0,rows:0,extraHorizontalPadding:0,extraVerticalPadding:0,gridGap:n,paddings:s};const o=e-(s.left+s.right),a=t-(s.top+s.bottom),c=rS({choices:i});let d=c.chosenAr;const{rows:l,cols:u}=function({count:e,width:t,height:r,aspectRatio:n}){if(e<=1)return{rows:1,cols:1};const{splits:i,vertical:s}=Kw({width:t,height:r,count:e,aspectRatio:n});return s?{rows:Math.ceil(e/i),cols:i}:{rows:i,cols:Math.ceil(e/i)}}({count:r,width:o,height:a,aspectRatio:d});1===l?d=tS({value:o/u/a,min:Math.min(c.chosenAr,c.maxAr),max:Math.max(c.chosenAr,c.maxAr)}):1===u&&(d=tS({value:o/(a/l),min:Math.min(c.chosenAr,c.maxAr),max:Math.max(c.chosenAr,c.maxAr)}));const{cellWidth:p,cellHeight:h,extraHorizontalPadding:f,extraVerticalPadding:m}=function({width:e,height:t,rows:r,cols:n,gridGap:i,aspectRatio:s}){const o=(e-(n-1)*i)/n,a=(t-(r-1)*i)/r,c=o/a;let d=0,l=0;return s<c?d=o-a*s:s>c&&(l=a-o/s),{cellWidth:o-d,cellHeight:a-l,extraHorizontalPadding:d*n/2,extraVerticalPadding:l*r/2}}({width:o,height:a,rows:l,cols:u,gridGap:n,aspectRatio:d});return{cellCount:r,cellHeight:h,cellWidth:p,cols:u,rows:l,extraHorizontalPadding:f,extraVerticalPadding:m,gridGap:n,paddings:s}}function iS({containerBounds:e,isPortrait:t,cellCount:r,cellBounds:n,paddings:i=Gw()}){let s=0,o=0,a=0,c=0,d=0,l=0;const u=e.width-i.left-i.right,p=e.height-i.top-i.bottom;return r&&(t?(c=Math.floor(u/n.width),a=Math.ceil(r/c),s=u,o=a*n.height,d=(u-c*n.width)/2):(a=Math.floor(p/n.height),c=Math.ceil(r/a),s=c*n.width,o=p,l=(p-a*n.height)/2)),{isPortrait:t,width:s+i.left+i.right,height:o+i.top+i.bottom,cellBounds:n,cellCount:r,rows:a,cols:c,extraHorizontalPadding:d,extraVerticalPadding:l,paddings:i}}const{BOTTOM_TOOLBAR_HEIGHT:sS,VIDEO_CONTROLS_MIN_WIDTH:oS,TABLET_BREAKPOINT:aS,SUBGRID_EMPTY_STAGE_MAX_WIDTH:cS}=zw,dS=200,lS=300,uS=200,pS=20,hS=12,fS=Gw({top:4,bottom:28,left:8,right:8});function mS({hasOverflow:e,hasStage:t}){return e&&t?[80]:[80,60]}function gS({cellCount:e}){const t=e<=6;return $w({width:t?lS-50:lS,height:t?dS-50:dS})}function vS({containerBounds:e,isPortrait:t,cellCount:r,cellSizeOptions:n,cellPaddings:i,paddings:s}){const o=function({containerBounds:e,isPortrait:t,cellCount:r,cellSizeOptions:n,cellPaddings:i,paddings:s}){let o;for(let a=0;a<n.length;a++){const c=n[a];if(o=iS({containerBounds:e,isPortrait:t,cellCount:r,cellBounds:$w({width:c+i.left+i.right,height:c+i.top+i.bottom}),paddings:s}),o.width<=e.width&&o.height<=e.height)return o}return o}({containerBounds:e,isPortrait:t,cellCount:r,cellSizeOptions:n,cellPaddings:i,paddings:s}),a=o.cellBounds.width-i.left-i.right===n[n.length-1],c=$w({width:Math.min(o.width,e.width),height:Math.min(o.height,e.height)}),d=$w({width:o.width,height:o.height});return 0===r?{bounds:c,contentBounds:d,videoCells:[]}:{bounds:c,contentBounds:d,videoCells:[...Array(r)].map(((e,t)=>{const{top:r,left:n,width:s,height:c}=function({index:e,layout:t}){const{isPortrait:r,rows:n,cols:i,cellCount:s,cellBounds:o,extraHorizontalPadding:a,extraVerticalPadding:c,paddings:d}=t,l=r?Math.floor(e/i):Math.floor(e%n),u=r?Math.floor(e%i):Math.floor(e/n),p=function({index:e,isPortrait:t,rows:r,cols:n,cellBounds:i,cellCount:s}){const o=r*n,a=o-s;if(!a)return 0;const c=o-a-1;return e<c-((t?n:r)-a)+1||e>c?0:a*(t?i.width:i.height)/2}({index:e,isPortrait:r,rows:n,cols:i,cellBounds:o,cellCount:s});return{top:d.top+c+l*o.height+(r?0:p),left:d.left+a+u*o.width+(r?p:0),width:o.width,height:o.height}}({index:t,layout:o});return{origin:Uw({top:r,left:n}),bounds:$w({width:s,height:c}),paddings:i,isSmallCell:a}}))}}function bS({cellPaddings:e,cellSizeOptions:t,containerBounds:r,containerOrigin:n,gridGap:i,hasConstrainedOverflow:s,hasPresentationContent:o,hasVideoContent:a,isConstrained:c,isMaximizeMode:d,isPortrait:l,isSmallScreen:u,maxGridWidth:p,shouldOverflowSubgrid:h,subgridVideos:f}){const{width:m,height:g}=r,v=o||a,b=f.length>0;if(!b&&!v)return{isPortrait:l,videosContainer:Vw(),subgrid:Object.assign(Object.assign({},Vw()),{contentBounds:$w(),cells:[]}),hasOverflow:!1};if(!b)return{isPortrait:l,videosContainer:Vw(Object.assign(Object.assign({},r),n)),subgrid:Object.assign(Object.assign({},Vw()),{contentBounds:$w(),cells:[]}),hasOverflow:s};const y=h?pS:0;let _=null;if(v)if(h){const n=t[0];let i=d?sS:sS+e.top+(c||u?n/2:n)+e.bottom;r.height-i<dS&&(i=0),_=$w({width:r.width,height:i})}else _=$w(d?{width:r.width,height:t[0]+e.top+e.bottom}:l?{width:r.width,height:r.height/2}:{width:r.width/2,height:r.height});else _=$w({width:Math.min(cS,r.width),height:r.height});let w=0;_.width>p&&(w=(_.width-p)/2);const S=vS({containerBounds:_,isPortrait:l,cellCount:f.length,cellSizeOptions:t,cellPaddings:e,paddings:Gw({top:y,left:w,right:w})}),C=$w({width:S.contentBounds.width-_.width,height:S.contentBounds.height-_.height}),R=C.width>0||C.height>0;let P,T=null;T=!v||h||R?S.contentBounds:S.bounds;let k=T;v?(k=$w(h?{width:0,height:_.height+y+i}:l?{width:0,height:S.bounds.height+i}:{width:S.bounds.width+i,height:0}),P=function({bounds:e,fromBounds:t}){return{width:Math.max(t.width-e.width,0),height:Math.max(t.height-e.height,0)}}({bounds:k,fromBounds:r})):P=$w();const E=Object.assign({},n);let O;return O=Uw(v?{top:l?Math.max(n.top+g-k.height+i,0):n.top,left:l?n.left:Math.max(n.left+m-T.width,0)}:{top:n.top+Math.max(0,(g-T.height)/2),left:n.left+Math.max(0,(m-T.width)/2)}),{isPortrait:l,videosContainer:Vw(Object.assign(Object.assign({},P),E)),subgrid:Object.assign(Object.assign({},Vw(Object.assign(Object.assign({},T),O))),{cells:S.videoCells.map(((e,t)=>{var r,n;return Object.assign({aspectRatio:(null===(r=f[t])||void 0===r?void 0:r.aspectRatio)||1,type:"video",clientId:null===(n=f[t])||void 0===n?void 0:n.clientId},e)})),contentBounds:S.contentBounds}),hasOverflow:R||h||s,overflowNeedBounds:h?$w():C}}function yS({containerBounds:e,containerOrigin:t,gridGap:r,supersizedContentAspectRatio:n,hasPresentationContent:i,hasPresentationGrid:s,hasVideoContent:o,minGridBounds:a}){const{width:c,height:d}=e;let l=c<=d,u=$w(),p=Uw(),h=o?Object.assign({},e):$w(),f=o?Object.assign({},t):Uw();if(i){const i=function({bounds:e,aspectRatio:t,minGridContainerBounds:r,hasPresentationGrid:n}){const{width:i,height:s}=e;if(!(r.width>0))return{isPortrait:i<=s,supersizedContentBounds:e};const o=Math.round(i/2),a=Math.round(s/2),c=Math.max(i-r.width,0),d=Math.max(s-r.height,0);let l=c<=d,u=0,p=0;if(t){const e=Hw(t,{width:c,height:s}),r=Hw(t,{width:i,height:d});if(l=t<=1?r.height>e.height:r.width>e.width,l){const e=d-Math.max(r.height,a);p=Math.max(e,0)}else{const t=c-Math.max(e.width,o);u=Math.max(t,0)}}else n&&(l=c/d>=5);return{isPortrait:l,supersizedContentBounds:{width:l?i:c-u,height:l?d-p:s}}}({bounds:e,aspectRatio:n||1,minGridContainerBounds:$w({width:o?a.width+r:0,height:o?a.height+r:0}),hasPresentationGrid:s});l=i.isPortrait,u=i.supersizedContentBounds,p=Object.assign({},t),o&&(h=$w({width:l?e.width:e.width-u.width-r,height:l?e.height-u.height-r:e.height}),f=Uw({top:l?t.top+u.height+r:t.top,left:l?t.left:t.left+u.width+r}))}return{isPortrait:l,presentationGrid:Object.assign({},Vw(Object.assign(Object.assign({},u),p))),videoGrid:Vw(Object.assign(Object.assign({},h),f))}}function _S({containerBounds:e,paddings:t=Gw(),videos:r,isConstrained:n,maxGridWidth:i,gridGap:s}){const{width:o,height:a}=e,c=i?Math.min(o,i):o,d=r.length;let l=null;const u=r.map((e=>e.aspectRatio||1)),p=gS({cellCount:d}),h=nS({width:c,height:a,cellCount:d,gridGap:s,cellAspectRatios:u,paddings:t});return l=r.map(((e,t)=>{const r=function({index:e,layout:t}){const{cellWidth:r,cellHeight:n,rows:i,cols:s,cellCount:o,gridGap:a}=t,c=Math.floor(e/s),d=Math.floor(e%s),l=function({rows:e,cols:t,cellWidth:r,index:n,cellCount:i,gridGap:s}){const o=e*t,a=o-i;if(!a)return 0;const c=o-a-1;return n>=c-(t-a)+1&&n<=c?a*r/2+s:0}({rows:i,cols:s,cellWidth:r,index:e,cellCount:o,gridGap:a});return{top:c*n+c*a,left:d*r+d*a+l,width:r,height:n}}({index:t,layout:h}),i=h.cellWidth<p.width,s=n||i?h.cellWidth/h.cellHeight:e.aspectRatio||1;return{clientId:e.clientId,isDraggable:e.isDraggable,origin:Uw({top:r.top,left:r.left}),bounds:$w({width:r.width,height:r.height}),aspectRatio:s,isSmallCell:i,type:"video"}})),{videoCells:l,extraHorizontalPadding:o!==c?h.extraHorizontalPadding+(o-c)/2:h.extraHorizontalPadding,extraVerticalPadding:h.extraVerticalPadding,paddings:h.paddings,gridGap:s}}function wS({a:e,b:t,gridGap:r,isPortrait:n}){const i=n?e.vertical:e.horizontal,s=n?t.vertical:t.horizontal;if(i===s)return{a:0,b:0};const o=i<s?e:t,a=n?o.vertical:o.horizontal,c=(r+(i+s)+a)/2-a;return{a:o===e?c:0,b:o===t?c:0}}function SS({gridGap:e,isConstrained:t,presentationVideos:r,videos:n,videosContainerLayout:i,gridLayoutPaddings:s=Gw(),presentationGridLayoutPaddings:o=Gw(),maxGridWidth:a}){return{gridLayout:_S({containerBounds:i.videoGrid.bounds,gridGap:e,isConstrained:t,maxGridWidth:a,paddings:s,videos:n}),presentationGridLayout:_S({containerBounds:i.presentationGrid.bounds,gridGap:e,isConstrained:t,maxGridWidth:a,paddings:o,videos:r})}}function CS({floatingVideo:e,frame:t,gridGap:r,isConstrained:n,isMaximizeMode:i=!1,isXLMeetingSize:s=!1,paddings:o=Gw(),presentationVideos:a=[],rebalanceLayout:c=!1,roomBounds:d,roomLayoutHasOverlow:l=!1,subgridCellPaddings:u=fS,subgridVideos:p=[],videoControlsHeight:h=0,videos:f=[],videoGridGap:m}){let g=s&&(!screen||screen.width<=2048);const v=!!a.length,b=a.length>1,y=v&&!b?a[0].aspectRatio:null,_=!!f.length,w=t.bounds.width-o.left-o.right;let S=t.bounds.height-o.top-o.bottom;const C=Math.max(2200,.8*w),R=n&&f.length>hS,P=S/4,T=Math.ceil((f.length-hS)/3);S=R?S+P*T:S;const k=$w({width:w,height:S}),E=Uw({top:o.top,left:o.left}),O=gS({cellCount:f.length}),D=d.width<aS||d.height<aS,I=i||g||!(v||_)||k.width<=k.height,x={cellPaddings:u,containerBounds:k,containerOrigin:E,gridGap:r,hasPresentationContent:v,hasVideoContent:_,isConstrained:n,isMaximizeMode:i,isSmallScreen:D,subgridVideos:p,maxGridWidth:C};let M=bS(Object.assign(Object.assign({},x),{cellSizeOptions:mS({hasOverflow:g,hasStage:v||_}),isPortrait:I,shouldOverflowSubgrid:g,hasConstrainedOverflow:R})),j=!1;if(!g&&l&&!M.hasOverflow){bS(Object.assign(Object.assign({},x),{containerBounds:$w({width:k.width,height:k.height-sS}),cellSizeOptions:mS({hasOverflow:g,hasStage:v||_}),isPortrait:I,shouldOverflowSubgrid:g,hasConstrainedOverflow:R})).hasOverflow&&(j=!0)}(j||M.hasOverflow&&!g)&&(g=!0,M=bS(Object.assign(Object.assign({},x),{cellSizeOptions:mS({hasOverflow:!0,hasStage:v||_}),isPortrait:!0,shouldOverflowSubgrid:g,hasConstrainedOverflow:R})));const L=yS({containerBounds:M.videosContainer.bounds,containerOrigin:M.videosContainer.origin,gridGap:r,supersizedContentAspectRatio:y||1,hasPresentationContent:v,hasPresentationGrid:b,hasVideoContent:_,minGridBounds:O});let{gridLayout:A,presentationGridLayout:N}=SS({gridGap:m||r,isConstrained:n,presentationVideos:a,videos:f,videosContainerLayout:L,maxGridWidth:C});if(M.hasOverflow&&!g){const{vPaddings:e,hPaddings:t}=function({need:e,stageLayout:t,gridLayout:r,presentationGridLayout:n,videosContainerLayout:i}){let s={presentationGrid:0,grid:0},o={presentationGrid:0,grid:0};if(t.isPortrait){const t=Math.min(r.extraVerticalPadding,n.extraVerticalPadding);s={presentationGrid:Math.min(i.isPortrait?n.extraVerticalPadding:t,e.height),grid:Math.min(i.isPortrait?r.extraVerticalPadding:t,e.height)}}else{const t=Math.min(r.extraHorizontalPadding,n.extraHorizontalPadding);o={presentationGrid:Math.min(i.isPortrait?t:n.extraHorizontalPadding,e.width),grid:Math.min(i.isPortrait?t:r.extraHorizontalPadding,e.width)}}return{vPaddings:s,hPaddings:o}}({need:M.overflowNeedBounds||$w(),stageLayout:M,gridLayout:A,presentationGridLayout:N,videosContainerLayout:L});(e.presentationGrid||e.grid||t.presentationGrid||t.grid)&&(!function({vPaddings:e,hPaddings:t,stageLayout:r,videosContainerLayout:n}){if(r.isPortrait&&(e.presentationGrid||e.grid)){const t=n.isPortrait?2*e.presentationGrid+2*e.grid:e.presentationGrid+e.grid;r.videosContainer.bounds.height-=t,r.subgrid.origin.top-=t,r.subgrid.bounds.height+=t,n.presentationGrid.bounds.height-=2*e.presentationGrid,n.videoGrid.bounds.height-=2*e.grid,n.isPortrait&&(n.videoGrid.origin.top-=e.presentationGrid)}if(!r.isPortrait&&(t.presentationGrid||t.grid)){const e=n.isPortrait?t.presentationGrid+t.grid:2*t.presentationGrid+2*t.grid;r.videosContainer.bounds.width-=e,r.subgrid.origin.left-=e,r.subgrid.bounds.width+=e,n.presentationGrid.bounds.width-=2*t.presentationGrid,n.videoGrid.bounds.width-=2*t.grid,n.isPortrait||(n.videoGrid.origin.left-=t.grid)}}({vPaddings:e,hPaddings:t,stageLayout:M,videosContainerLayout:L}),({gridLayout:A,presentationGridLayout:N}=SS({gridGap:m||r,isConstrained:n,presentationVideos:a,videos:f,videosContainerLayout:L,maxGridWidth:C})))}const B=function({roomBounds:e,containerFrame:t,floatingVideo:r,videoControlsHeight:n,margin:i=8}){if(!r)return null;const s=Hw(r.aspectRatio||0,{width:uS,height:uS}),o=!(e.height-t.bounds.height-t.origin.top),a=t.bounds.width-2*(s.width+i)<oS;let c=0;o&&a?c=-1*n:o||a||(c=n);const d=Uw({top:t.origin.top+(t.bounds.height-s.height-i)+c,left:t.origin.left+(t.bounds.width-s.width-i)});return{clientId:r.clientId,isDraggable:r.isDraggable,origin:d,bounds:s,aspectRatio:r.aspectRatio,isSmallCell:!0}}({roomBounds:d,containerFrame:t,floatingVideo:e||null,videoControlsHeight:h});c&&function({videosContainerLayout:e,gridLayout:t,presentationGridLayout:r,stageLayout:n,gridGap:i,shouldOverflowSubgrid:s}){const o=e.presentationGrid.bounds.width>0,a=e.videoGrid.bounds.width>0,c=n.subgrid.bounds.width>0,d={vertical:0,horizontal:0};if(o&&a){const n=wS({a:{horizontal:r.extraHorizontalPadding,vertical:r.extraVerticalPadding},b:{horizontal:t.extraHorizontalPadding,vertical:t.extraVerticalPadding},gridGap:i,isPortrait:e.isPortrait});e.isPortrait?(e.presentationGrid.origin.top+=n.a,e.videoGrid.origin.top-=n.b,d.vertical=n.b):(e.presentationGrid.origin.left+=n.a,e.videoGrid.origin.left-=n.b,d.horizontal=n.b)}if(c&&(o||a)&&!s){const s={horizontal:r.extraHorizontalPadding,vertical:r.extraVerticalPadding},c={horizontal:t.extraHorizontalPadding+d.horizontal,vertical:t.extraVerticalPadding+d.vertical};let l;const u=o&&a;l=u&&e.isPortrait&&!n.isPortrait?s.horizontal<c.horizontal?s:c:u&&!e.isPortrait&&n.isPortrait?s.vertical<c.vertical?s:c:a?c:s;const p=wS({a:l,b:{horizontal:0,vertical:0},gridGap:i,isPortrait:n.isPortrait});n.isPortrait?n.subgrid.origin.top-=p.b:n.subgrid.origin.left-=p.b}}({videosContainerLayout:L,gridLayout:A,presentationGridLayout:N,stageLayout:M,gridGap:r,shouldOverflowSubgrid:g});let F=o.top+M.videosContainer.bounds.height+M.subgrid.bounds.height+o.bottom;return(v||_)&&(F+=r),{isPortrait:M.isPortrait,hasOverflow:M.hasOverflow,videosContainer:Object.assign(Object.assign({},L),{bounds:$w({width:M.videosContainer.bounds.width,height:M.videosContainer.bounds.height}),origin:Uw({top:M.videosContainer.origin.top,left:M.videosContainer.origin.left})}),bounds:$w({height:g?F:t.bounds.height,width:t.bounds.width}),gridGap:r,presentationGrid:Object.assign(Object.assign({},L.presentationGrid),{cells:N.videoCells,paddings:Gw({top:N.paddings.top+N.extraVerticalPadding,bottom:N.paddings.bottom+N.extraVerticalPadding,left:N.paddings.left+N.extraHorizontalPadding,right:N.paddings.right+N.extraHorizontalPadding})}),videoGrid:Object.assign(Object.assign({},L.videoGrid),{cells:A.videoCells,paddings:Gw({top:A.paddings.top+A.extraVerticalPadding,bottom:A.paddings.bottom+A.extraVerticalPadding,left:A.paddings.left+A.extraHorizontalPadding,right:A.paddings.right+A.extraHorizontalPadding})}),subgrid:M.subgrid,floatingContent:Object.assign(Object.assign({},B),e)}}function RS({aspectRatio:e,avatarSize:t,cellPaddings:r,client:n,isDraggable:i=!0,isPlaceholder:s=!1,isSubgrid:o=!1}){return{aspectRatio:e||16/9,avatarSize:t,cellPaddings:r,client:n,clientId:(null==n?void 0:n.id)||"",isDraggable:i,isPlaceholder:s,isSubgrid:o,type:"video"}}const PS=12,TS=12;function kS({activeVideosSubgridTrigger:e,forceSubgrid:t,stageParticipantLimit:r=PS,gridGap:n=8,videoGridGap:i=8,enableSubgrid:o=!0}={}){const[a,c]=s.useState({width:0,height:0}),[d,l]=s.useState({}),[u,p]=s.useState(null),{clientViewsInGrid:h,clientViewsInPresentationGrid:f,clientViewsInSubgrid:m}=function({activeVideosSubgridTrigger:e=TS,stageParticipantLimit:t=PS,forceSubgrid:r=!0,enableSubgrid:n=!0,maximizedParticipant:i}={}){const o=Lw(o_),a=Lw($_),c=Lw(zy),d=s.useMemo((()=>!!n&&(!!r||c>t)),[r,c,t,n]),l=s.useMemo((()=>function({clientViews:e,activeVideosSubgridTrigger:t,shouldShowSubgrid:r,spotlightedParticipants:n,maximizedParticipant:i}){if(!r)return[];const s=n.length>0,o=(i?e.filter((e=>e.id!==i.id)):e).filter((e=>!e.isPresentation&&!n.includes(e))),a=o.filter((e=>!e.isVideoEnabled)),c=o.filter((e=>e.isVideoEnabled)).length>t,d=o.filter((e=>!a.includes(e)&&e.isAudioEnabled)),l=o.filter((e=>!a.includes(e)&&!e.isAudioEnabled));if(a.length&&s)return[...l,...a];if(c&&l.length){const e=[...d,...l].slice(0,t);return e.length<=t?[...l.filter((t=>!e.includes(t))),...a]:[...l,...a]}return a}({clientViews:o,activeVideosSubgridTrigger:e,shouldShowSubgrid:d,spotlightedParticipants:a,maximizedParticipant:i})),[o,d,e,a]),u=s.useMemo((()=>o.filter((e=>!l.includes(e)))),[o,l]),p=s.useMemo((()=>i?[i]:a),[a,i]);return{clientViewsInGrid:s.useMemo((()=>u.filter((e=>!p.includes(e)))),[u,p]),clientViewsInPresentationGrid:p,clientViewsInSubgrid:l}}({activeVideosSubgridTrigger:e,forceSubgrid:t,stageParticipantLimit:r,enableSubgrid:o,maximizedParticipant:u}),g=s.useMemo((()=>h.map((e=>RS({client:e,aspectRatio:d[e.id],avatarSize:0,cellPaddings:{top:0,right:0}})))),[h,d]),v=s.useMemo((()=>f.map((e=>RS({client:e,aspectRatio:d[e.id],avatarSize:0,cellPaddings:{top:0,right:0}})))),[f,d]),b=s.useMemo((()=>m.map((e=>RS({client:e,aspectRatio:d[e.id],avatarSize:0,cellPaddings:{top:0,right:0},isSubgrid:!0})))),[m,d]),y=s.useMemo((()=>Vw(a)),[a]),_=s.useMemo((()=>CS({frame:y,gridGap:n,isConstrained:!1,roomBounds:y.bounds,videos:g,videoGridGap:i,presentationVideos:v,subgridVideos:b})),[y,g,v,b,n,i]);return{cellViewsVideoGrid:g,cellViewsInPresentationGrid:v,cellViewsInSubgrid:b,clientAspectRatios:d,videoStage:_,setContainerBounds:c,setClientAspectRatios:l,maximizedParticipant:u,setMaximizedParticipant:p}}var ES={exports:{}};const OS=55296,DS=56319,IS=56320,xS=127462,MS=127487,jS=127995,LS=127999,AS=65024,NS=65039,BS=8400,FS=8447,zS=8205,US=[776,2359,2359,2367,2367,2984,3007,3021,3633,3635,3648,3657,4352,4449,4520];function $S(e){if("string"!=typeof e)throw new Error("string cannot be undefined or null");const t=[];let r=0,n=0;for(;r<e.length;)n+=VS(r+n,e),WS(e[r+n])&&n++,qS(e[r+n])&&n++,HS(e[r+n])&&n++,KS(e[r+n])?n++:(t.push(e.substring(r,r+n)),r+=n,n=0);return t}function VS(e,t){const r=t[e];if(!function(e){return e&&QS(e[0].charCodeAt(0),OS,DS)}(r)||e===t.length-1)return 1;const n=r+t[e+1];let i=t.substring(e+2,e+5);return GS(n)&&GS(i)||function(e){return QS(JS(e),jS,LS)}(i)?4:2}function GS(e){return QS(JS(e),xS,MS)}function qS(e){return"string"==typeof e&&QS(e.charCodeAt(0),AS,NS)}function HS(e){return"string"==typeof e&&QS(e.charCodeAt(0),BS,FS)}function WS(e){return"string"==typeof e&&-1!==US.indexOf(e.charCodeAt(0))}function KS(e){return"string"==typeof e&&e.charCodeAt(0)===zS}function JS(e){return(e.charCodeAt(0)-OS<<10)+(e.charCodeAt(1)-IS)+65536}function QS(e,t,r){return e>=t&&e<=r}ES.exports=$S,ES.exports.substr=function(e,t,r){const n=$S(e);if(void 0===t)return e;if(t>=n.length)return"";const i=n.length-t;let s=t+(void 0===r?i:r);return s>t+i&&(s=void 0),n.slice(t,s).join("")};var YS=c(ES.exports);const ZS=({name:e})=>{const t=((e="")=>{if(e=e.trim())return e.split(/-| /).map((e=>YS(e)[0])).slice(0,3);return[]})(e),r=[0,56,48,40][t.length]||32,n=t.join("").toUpperCase();return s.createElement("svg",{viewBox:"-60 -60 120 120","aria-hidden":"true",style:{height:"100%",pointerEvents:"none",width:"100%"}},s.createElement("text",{x:0,y:0,textAnchor:"middle",dominantBaseline:"central",fontSize:r},n))};function XS(e){var{avatarUrl:t,className:r,size:n=40,name:i,variant:o="round"}=e,a=Mw(e,["avatarUrl","className","size","name","variant"]);return s.createElement("div",Object.assign({style:{height:`${n}px`,width:`${n}px`,userSelect:"none",overflow:"hidden",borderRadius:"round"===o?"50%":"4px",backgroundColor:"#f8e3c8"},className:r,title:i},a),!t&&i?s.createElement(ZS,{name:i}):s.createElement("img",{src:t||"",alt:"",style:{height:"100%",width:"100%",objectFit:"cover",maxWidth:"initial"}}))}function eC({avatarUrl:e,displayName:t,isSmallCell:r,withRoundedCorners:n}){return s.createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",position:"absolute",top:0,left:0,height:"100%",width:"100%",borderRadius:n?"8px":"0"}},s.createElement("div",{style:{height:r?60:80,width:r?60:80,pointerEvents:"none",position:"relative"}},s.createElement(XS,{variant:"square",avatarUrl:e,name:t,size:r?60:80})))}function tC(){return tC=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},tC.apply(this,arguments)}function rC(e,t,{checkForDefaultPrevented:r=!0}={}){return function(n){if(null==e||e(n),!1===r||!n.defaultPrevented)return null==t?void 0:t(n)}}function nC(...e){return t=>e.forEach((e=>function(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}(e,t)))}function iC(...e){return t.useCallback(nC(...e),e)}function sC(e,r=[]){let n=[];const i=()=>{const r=n.map((e=>t.createContext(e)));return function(n){const i=(null==n?void 0:n[e])||r;return t.useMemo((()=>({[`__scope${e}`]:{...n,[e]:i}})),[n,i])}};return i.scopeName=e,[function(r,i){const s=t.createContext(i),o=n.length;function a(r){const{scope:n,children:i,...a}=r,c=(null==n?void 0:n[e][o])||s,d=t.useMemo((()=>a),Object.values(a));return t.createElement(c.Provider,{value:d},i)}return n=[...n,i],a.displayName=r+"Provider",[a,function(n,a){const c=(null==a?void 0:a[e][o])||s,d=t.useContext(c);if(d)return d;if(void 0!==i)return i;throw new Error(`\`${n}\` must be used within \`${r}\``)}]},oC(i,...r)]}function oC(...e){const r=e[0];if(1===e.length)return r;const n=()=>{const n=e.map((e=>({useScope:e(),scopeName:e.scopeName})));return function(e){const i=n.reduce(((t,{useScope:r,scopeName:n})=>({...t,...r(e)[`__scope${n}`]})),{});return t.useMemo((()=>({[`__scope${r.scopeName}`]:i})),[i])}};return n.scopeName=r.scopeName,n}const aC=t.forwardRef(((e,r)=>{const{children:n,...i}=e,s=t.Children.toArray(n),o=s.find(lC);if(o){const e=o.props.children,n=s.map((r=>r===o?t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null:r));return t.createElement(cC,tC({},i,{ref:r}),t.isValidElement(e)?t.cloneElement(e,void 0,n):null)}return t.createElement(cC,tC({},i,{ref:r}),n)}));aC.displayName="Slot";const cC=t.forwardRef(((e,r)=>{const{children:n,...i}=e;return t.isValidElement(n)?t.cloneElement(n,{...uC(i,n.props),ref:r?nC(r,n.ref):n.ref}):t.Children.count(n)>1?t.Children.only(null):null}));cC.displayName="SlotClone";const dC=({children:e})=>t.createElement(t.Fragment,null,e);function lC(e){return t.isValidElement(e)&&e.type===dC}function uC(e,t){const r={...t};for(const n in t){const i=e[n],s=t[n];/^on[A-Z]/.test(n)?i&&s?r[n]=(...e)=>{s(...e),i(...e)}:i&&(r[n]=i):"style"===n?r[n]={...i,...s}:"className"===n&&(r[n]=[i,s].filter(Boolean).join(" "))}return{...e,...r}}const pC=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce(((e,r)=>{const n=t.forwardRef(((e,n)=>{const{asChild:i,...s}=e,o=i?aC:r;return t.useEffect((()=>{window[Symbol.for("radix-ui")]=!0}),[]),t.createElement(o,tC({},s,{ref:n}))}));return n.displayName=`Primitive.${r}`,{...e,[r]:n}}),{});function hC(e){const r=t.useRef(e);return t.useEffect((()=>{r.current=e})),t.useMemo((()=>(...e)=>{var t;return null===(t=r.current)||void 0===t?void 0:t.call(r,...e)}),[])}const fC="dismissableLayer.update",mC="dismissableLayer.pointerDownOutside",gC="dismissableLayer.focusOutside";let vC;const bC=t.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),yC=t.forwardRef(((e,r)=>{var n;const{disableOutsidePointerEvents:i=!1,onEscapeKeyDown:s,onPointerDownOutside:o,onFocusOutside:a,onInteractOutside:c,onDismiss:d,...l}=e,u=t.useContext(bC),[p,h]=t.useState(null),f=null!==(n=null==p?void 0:p.ownerDocument)&&void 0!==n?n:null===globalThis||void 0===globalThis?void 0:globalThis.document,[,m]=t.useState({}),g=iC(r,(e=>h(e))),v=Array.from(u.layers),[b]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),y=v.indexOf(b),_=p?v.indexOf(p):-1,w=u.layersWithOutsidePointerEventsDisabled.size>0,S=_>=y,C=function(e,r=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const n=hC(e),i=t.useRef(!1),s=t.useRef((()=>{}));return t.useEffect((()=>{const e=e=>{if(e.target&&!i.current){const t={originalEvent:e};function o(){wC(mC,n,t,{discrete:!0})}"touch"===e.pointerType?(r.removeEventListener("click",s.current),s.current=o,r.addEventListener("click",s.current,{once:!0})):o()}else r.removeEventListener("click",s.current);i.current=!1},t=window.setTimeout((()=>{r.addEventListener("pointerdown",e)}),0);return()=>{window.clearTimeout(t),r.removeEventListener("pointerdown",e),r.removeEventListener("click",s.current)}}),[r,n]),{onPointerDownCapture:()=>i.current=!0}}((e=>{const t=e.target,r=[...u.branches].some((e=>e.contains(t)));S&&!r&&(null==o||o(e),null==c||c(e),e.defaultPrevented||null==d||d())}),f),R=function(e,r=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const n=hC(e),i=t.useRef(!1);return t.useEffect((()=>{const e=e=>{if(e.target&&!i.current){wC(gC,n,{originalEvent:e},{discrete:!1})}};return r.addEventListener("focusin",e),()=>r.removeEventListener("focusin",e)}),[r,n]),{onFocusCapture:()=>i.current=!0,onBlurCapture:()=>i.current=!1}}((e=>{const t=e.target;[...u.branches].some((e=>e.contains(t)))||(null==a||a(e),null==c||c(e),e.defaultPrevented||null==d||d())}),f);return function(e,r=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const n=hC(e);t.useEffect((()=>{const e=e=>{"Escape"===e.key&&n(e)};return r.addEventListener("keydown",e),()=>r.removeEventListener("keydown",e)}),[n,r])}((e=>{_===u.layers.size-1&&(null==s||s(e),!e.defaultPrevented&&d&&(e.preventDefault(),d()))}),f),t.useEffect((()=>{if(p)return i&&(0===u.layersWithOutsidePointerEventsDisabled.size&&(vC=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(p)),u.layers.add(p),_C(),()=>{i&&1===u.layersWithOutsidePointerEventsDisabled.size&&(f.body.style.pointerEvents=vC)}}),[p,f,i,u]),t.useEffect((()=>()=>{p&&(u.layers.delete(p),u.layersWithOutsidePointerEventsDisabled.delete(p),_C())}),[p,u]),t.useEffect((()=>{const e=()=>m({});return document.addEventListener(fC,e),()=>document.removeEventListener(fC,e)}),[]),t.createElement(pC.div,tC({},l,{ref:g,style:{pointerEvents:w?S?"auto":"none":void 0,...e.style},onFocusCapture:rC(e.onFocusCapture,R.onFocusCapture),onBlurCapture:rC(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:rC(e.onPointerDownCapture,C.onPointerDownCapture)}))}));function _C(){const e=new CustomEvent(fC);document.dispatchEvent(e)}function wC(e,t,n,{discrete:i}){const s=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&s.addEventListener(e,t,{once:!0}),i?function(e,t){e&&r.flushSync((()=>e.dispatchEvent(t)))}(s,o):s.dispatchEvent(o)}let SC=0;function CC(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}const RC="focusScope.autoFocusOnMount",PC="focusScope.autoFocusOnUnmount",TC={bubbles:!1,cancelable:!0},kC=t.forwardRef(((e,r)=>{const{loop:n=!1,trapped:i=!1,onMountAutoFocus:s,onUnmountAutoFocus:o,...a}=e,[c,d]=t.useState(null),l=hC(s),u=hC(o),p=t.useRef(null),h=iC(r,(e=>d(e))),f=t.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;t.useEffect((()=>{if(i){function e(e){if(f.paused||!c)return;const t=e.target;c.contains(t)?p.current=t:IC(p.current,{select:!0})}function t(e){if(f.paused||!c)return;const t=e.relatedTarget;null!==t&&(c.contains(t)||IC(p.current,{select:!0}))}function r(e){if(document.activeElement===document.body)for(const t of e)t.removedNodes.length>0&&IC(c)}document.addEventListener("focusin",e),document.addEventListener("focusout",t);const n=new MutationObserver(r);return c&&n.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),n.disconnect()}}}),[i,c,f.paused]),t.useEffect((()=>{if(c){xC.add(f);const t=document.activeElement;if(!c.contains(t)){const r=new CustomEvent(RC,TC);c.addEventListener(RC,l),c.dispatchEvent(r),r.defaultPrevented||(!function(e,{select:t=!1}={}){const r=document.activeElement;for(const n of e)if(IC(n,{select:t}),document.activeElement!==r)return}((e=EC(c),e.filter((e=>"A"!==e.tagName))),{select:!0}),document.activeElement===t&&IC(c))}return()=>{c.removeEventListener(RC,l),setTimeout((()=>{const e=new CustomEvent(PC,TC);c.addEventListener(PC,u),c.dispatchEvent(e),e.defaultPrevented||IC(null!=t?t:document.body,{select:!0}),c.removeEventListener(PC,u),xC.remove(f)}),0)}}var e}),[c,l,u,f]);const m=t.useCallback((e=>{if(!n&&!i)return;if(f.paused)return;const t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,r=document.activeElement;if(t&&r){const t=e.currentTarget,[i,s]=function(e){const t=EC(e),r=OC(t,e),n=OC(t.reverse(),e);return[r,n]}(t);i&&s?e.shiftKey||r!==s?e.shiftKey&&r===i&&(e.preventDefault(),n&&IC(s,{select:!0})):(e.preventDefault(),n&&IC(i,{select:!0})):r===t&&e.preventDefault()}}),[n,i,f.paused]);return t.createElement(pC.div,tC({tabIndex:-1},a,{ref:h,onKeyDown:m}))}));function EC(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{const t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function OC(e,t){for(const r of e)if(!DC(r,{upTo:t}))return r}function DC(e,{upTo:t}){if("hidden"===getComputedStyle(e).visibility)return!0;for(;e;){if(void 0!==t&&e===t)return!1;if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}function IC(e,{select:t=!1}={}){if(e&&e.focus){const r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&function(e){return e instanceof HTMLInputElement&&"select"in e}(e)&&t&&e.select()}}const xC=function(){let e=[];return{add(t){const r=e[0];t!==r&&(null==r||r.pause()),e=MC(e,t),e.unshift(t)},remove(t){var r;e=MC(e,t),null===(r=e[0])||void 0===r||r.resume()}}}();function MC(e,t){const r=[...e],n=r.indexOf(t);return-1!==n&&r.splice(n,1),r}const jC=Boolean(null===globalThis||void 0===globalThis?void 0:globalThis.document)?t.useLayoutEffect:()=>{},LC=s["useId".toString()]||(()=>{});let AC=0;function NC(e){const[t,r]=s.useState(LC());return jC((()=>{e||r((e=>null!=e?e:String(AC++)))}),[e]),e||(t?`radix-${t}`:"")}const BC=["top","right","bottom","left"],FC=Math.min,zC=Math.max,UC=Math.round,$C=Math.floor,VC=e=>({x:e,y:e}),GC={left:"right",right:"left",bottom:"top",top:"bottom"},qC={start:"end",end:"start"};function HC(e,t,r){return zC(e,FC(t,r))}function WC(e,t){return"function"==typeof e?e(t):e}function KC(e){return e.split("-")[0]}function JC(e){return e.split("-")[1]}function QC(e){return"x"===e?"y":"x"}function YC(e){return"y"===e?"height":"width"}function ZC(e){return["top","bottom"].includes(KC(e))?"y":"x"}function XC(e){return QC(ZC(e))}function eR(e){return e.replace(/start|end/g,(e=>qC[e]))}function tR(e){return e.replace(/left|right|bottom|top/g,(e=>GC[e]))}function rR(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function nR(e){const{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function iR(e,t,r){let{reference:n,floating:i}=e;const s=ZC(t),o=XC(t),a=YC(o),c=KC(t),d="y"===s,l=n.x+n.width/2-i.width/2,u=n.y+n.height/2-i.height/2,p=n[a]/2-i[a]/2;let h;switch(c){case"top":h={x:l,y:n.y-i.height};break;case"bottom":h={x:l,y:n.y+n.height};break;case"right":h={x:n.x+n.width,y:u};break;case"left":h={x:n.x-i.width,y:u};break;default:h={x:n.x,y:n.y}}switch(JC(t)){case"start":h[o]-=p*(r&&d?-1:1);break;case"end":h[o]+=p*(r&&d?-1:1)}return h}async function sR(e,t){var r;void 0===t&&(t={});const{x:n,y:i,platform:s,rects:o,elements:a,strategy:c}=e,{boundary:d="clippingAncestors",rootBoundary:l="viewport",elementContext:u="floating",altBoundary:p=!1,padding:h=0}=WC(t,e),f=rR(h),m=a[p?"floating"===u?"reference":"floating":u],g=nR(await s.getClippingRect({element:null==(r=await(null==s.isElement?void 0:s.isElement(m)))||r?m:m.contextElement||await(null==s.getDocumentElement?void 0:s.getDocumentElement(a.floating)),boundary:d,rootBoundary:l,strategy:c})),v="floating"===u?{x:n,y:i,width:o.floating.width,height:o.floating.height}:o.reference,b=await(null==s.getOffsetParent?void 0:s.getOffsetParent(a.floating)),y=await(null==s.isElement?void 0:s.isElement(b))&&await(null==s.getScale?void 0:s.getScale(b))||{x:1,y:1},_=nR(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:v,offsetParent:b,strategy:c}):v);return{top:(g.top-_.top+f.top)/y.y,bottom:(_.bottom-g.bottom+f.bottom)/y.y,left:(g.left-_.left+f.left)/y.x,right:(_.right-g.right+f.right)/y.x}}function oR(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function aR(e){return BC.some((t=>e[t]>=0))}function cR(e){return uR(e)?(e.nodeName||"").toLowerCase():"#document"}function dR(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function lR(e){var t;return null==(t=(uR(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function uR(e){return e instanceof Node||e instanceof dR(e).Node}function pR(e){return e instanceof Element||e instanceof dR(e).Element}function hR(e){return e instanceof HTMLElement||e instanceof dR(e).HTMLElement}function fR(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof dR(e).ShadowRoot)}function mR(e){const{overflow:t,overflowX:r,overflowY:n,display:i}=_R(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+r)&&!["inline","contents"].includes(i)}function gR(e){return["table","td","th"].includes(cR(e))}function vR(e){const t=bR(),r=_R(e);return"none"!==r.transform||"none"!==r.perspective||!!r.containerType&&"normal"!==r.containerType||!t&&!!r.backdropFilter&&"none"!==r.backdropFilter||!t&&!!r.filter&&"none"!==r.filter||["transform","perspective","filter"].some((e=>(r.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(r.contain||"").includes(e)))}function bR(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function yR(e){return["html","body","#document"].includes(cR(e))}function _R(e){return dR(e).getComputedStyle(e)}function wR(e){return pR(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function SR(e){if("html"===cR(e))return e;const t=e.assignedSlot||e.parentNode||fR(e)&&e.host||lR(e);return fR(t)?t.host:t}function CR(e){const t=SR(e);return yR(t)?e.ownerDocument?e.ownerDocument.body:e.body:hR(t)&&mR(t)?t:CR(t)}function RR(e,t,r){var n;void 0===t&&(t=[]),void 0===r&&(r=!0);const i=CR(e),s=i===(null==(n=e.ownerDocument)?void 0:n.body),o=dR(i);return s?t.concat(o,o.visualViewport||[],mR(i)?i:[],o.frameElement&&r?RR(o.frameElement):[]):t.concat(i,RR(i,[],r))}function PR(e){const t=_R(e);let r=parseFloat(t.width)||0,n=parseFloat(t.height)||0;const i=hR(e),s=i?e.offsetWidth:r,o=i?e.offsetHeight:n,a=UC(r)!==s||UC(n)!==o;return a&&(r=s,n=o),{width:r,height:n,$:a}}function TR(e){return pR(e)?e:e.contextElement}function kR(e){const t=TR(e);if(!hR(t))return VC(1);const r=t.getBoundingClientRect(),{width:n,height:i,$:s}=PR(t);let o=(s?UC(r.width):r.width)/n,a=(s?UC(r.height):r.height)/i;return o&&Number.isFinite(o)||(o=1),a&&Number.isFinite(a)||(a=1),{x:o,y:a}}const ER=VC(0);function OR(e){const t=dR(e);return bR()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:ER}function DR(e,t,r,n){void 0===t&&(t=!1),void 0===r&&(r=!1);const i=e.getBoundingClientRect(),s=TR(e);let o=VC(1);t&&(n?pR(n)&&(o=kR(n)):o=kR(e));const a=function(e,t,r){return void 0===t&&(t=!1),!(!r||t&&r!==dR(e))&&t}(s,r,n)?OR(s):VC(0);let c=(i.left+a.x)/o.x,d=(i.top+a.y)/o.y,l=i.width/o.x,u=i.height/o.y;if(s){const e=dR(s),t=n&&pR(n)?dR(n):n;let r=e,i=r.frameElement;for(;i&&n&&t!==r;){const e=kR(i),t=i.getBoundingClientRect(),n=_R(i),s=t.left+(i.clientLeft+parseFloat(n.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(n.paddingTop))*e.y;c*=e.x,d*=e.y,l*=e.x,u*=e.y,c+=s,d+=o,r=dR(i),i=r.frameElement}}return nR({width:l,height:u,x:c,y:d})}const IR=[":popover-open",":modal"];function xR(e){return IR.some((t=>{try{return e.matches(t)}catch(e){return!1}}))}function MR(e){return DR(lR(e)).left+wR(e).scrollLeft}function jR(e,t,r){let n;if("viewport"===t)n=function(e,t){const r=dR(e),n=lR(e),i=r.visualViewport;let s=n.clientWidth,o=n.clientHeight,a=0,c=0;if(i){s=i.width,o=i.height;const e=bR();(!e||e&&"fixed"===t)&&(a=i.offsetLeft,c=i.offsetTop)}return{width:s,height:o,x:a,y:c}}(e,r);else if("document"===t)n=function(e){const t=lR(e),r=wR(e),n=e.ownerDocument.body,i=zC(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),s=zC(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight);let o=-r.scrollLeft+MR(e);const a=-r.scrollTop;return"rtl"===_R(n).direction&&(o+=zC(t.clientWidth,n.clientWidth)-i),{width:i,height:s,x:o,y:a}}(lR(e));else if(pR(t))n=function(e,t){const r=DR(e,!0,"fixed"===t),n=r.top+e.clientTop,i=r.left+e.clientLeft,s=hR(e)?kR(e):VC(1);return{width:e.clientWidth*s.x,height:e.clientHeight*s.y,x:i*s.x,y:n*s.y}}(t,r);else{const r=OR(e);n={...t,x:t.x-r.x,y:t.y-r.y}}return nR(n)}function LR(e,t){const r=SR(e);return!(r===t||!pR(r)||yR(r))&&("fixed"===_R(r).position||LR(r,t))}function AR(e,t,r){const n=hR(t),i=lR(t),s="fixed"===r,o=DR(e,!0,s,t);let a={scrollLeft:0,scrollTop:0};const c=VC(0);if(n||!n&&!s)if(("body"!==cR(t)||mR(i))&&(a=wR(t)),n){const e=DR(t,!0,s,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&(c.x=MR(i));return{x:o.left+a.scrollLeft-c.x,y:o.top+a.scrollTop-c.y,width:o.width,height:o.height}}function NR(e){return"static"===_R(e).position}function BR(e,t){return hR(e)&&"fixed"!==_R(e).position?t?t(e):e.offsetParent:null}function FR(e,t){const r=dR(e);if(xR(e))return r;if(!hR(e)){let t=SR(e);for(;t&&!yR(t);){if(pR(t)&&!NR(t))return t;t=SR(t)}return r}let n=BR(e,t);for(;n&&gR(n)&&NR(n);)n=BR(n,t);return n&&yR(n)&&NR(n)&&!vR(n)?r:n||function(e){let t=SR(e);for(;hR(t)&&!yR(t);){if(vR(t))return t;t=SR(t)}return null}(e)||r}const zR={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:r,offsetParent:n,strategy:i}=e;const s="fixed"===i,o=lR(n),a=!!t&&xR(t.floating);if(n===o||a&&s)return r;let c={scrollLeft:0,scrollTop:0},d=VC(1);const l=VC(0),u=hR(n);if((u||!u&&!s)&&(("body"!==cR(n)||mR(o))&&(c=wR(n)),hR(n))){const e=DR(n);d=kR(n),l.x=e.x+n.clientLeft,l.y=e.y+n.clientTop}return{width:r.width*d.x,height:r.height*d.y,x:r.x*d.x-c.scrollLeft*d.x+l.x,y:r.y*d.y-c.scrollTop*d.y+l.y}},getDocumentElement:lR,getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:n,strategy:i}=e;const s="clippingAncestors"===r?xR(t)?[]:function(e,t){const r=t.get(e);if(r)return r;let n=RR(e,[],!1).filter((e=>pR(e)&&"body"!==cR(e))),i=null;const s="fixed"===_R(e).position;let o=s?SR(e):e;for(;pR(o)&&!yR(o);){const t=_R(o),r=vR(o);r||"fixed"!==t.position||(i=null),(s?!r&&!i:!r&&"static"===t.position&&i&&["absolute","fixed"].includes(i.position)||mR(o)&&!r&&LR(e,o))?n=n.filter((e=>e!==o)):i=t,o=SR(o)}return t.set(e,n),n}(t,this._c):[].concat(r),o=[...s,n],a=o[0],c=o.reduce(((e,r)=>{const n=jR(t,r,i);return e.top=zC(n.top,e.top),e.right=FC(n.right,e.right),e.bottom=FC(n.bottom,e.bottom),e.left=zC(n.left,e.left),e}),jR(t,a,i));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}},getOffsetParent:FR,getElementRects:async function(e){const t=this.getOffsetParent||FR,r=this.getDimensions,n=await r(e.floating);return{reference:AR(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:r}=PR(e);return{width:t,height:r}},getScale:kR,isElement:pR,isRTL:function(e){return"rtl"===_R(e).direction}};function UR(e,t,r,n){void 0===n&&(n={});const{ancestorScroll:i=!0,ancestorResize:s=!0,elementResize:o="function"==typeof ResizeObserver,layoutShift:a="function"==typeof IntersectionObserver,animationFrame:c=!1}=n,d=TR(e),l=i||s?[...d?RR(d):[],...RR(t)]:[];l.forEach((e=>{i&&e.addEventListener("scroll",r,{passive:!0}),s&&e.addEventListener("resize",r)}));const u=d&&a?function(e,t){let r,n=null;const i=lR(e);function s(){var e;clearTimeout(r),null==(e=n)||e.disconnect(),n=null}return function o(a,c){void 0===a&&(a=!1),void 0===c&&(c=1),s();const{left:d,top:l,width:u,height:p}=e.getBoundingClientRect();if(a||t(),!u||!p)return;const h={rootMargin:-$C(l)+"px "+-$C(i.clientWidth-(d+u))+"px "+-$C(i.clientHeight-(l+p))+"px "+-$C(d)+"px",threshold:zC(0,FC(1,c))||1};let f=!0;function m(e){const t=e[0].intersectionRatio;if(t!==c){if(!f)return o();t?o(!1,t):r=setTimeout((()=>{o(!1,1e-7)}),1e3)}f=!1}try{n=new IntersectionObserver(m,{...h,root:i.ownerDocument})}catch(e){n=new IntersectionObserver(m,h)}n.observe(e)}(!0),s}(d,r):null;let p,h=-1,f=null;o&&(f=new ResizeObserver((e=>{let[n]=e;n&&n.target===d&&f&&(f.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame((()=>{var e;null==(e=f)||e.observe(t)}))),r()})),d&&!c&&f.observe(d),f.observe(t));let m=c?DR(e):null;return c&&function t(){const n=DR(e);!m||n.x===m.x&&n.y===m.y&&n.width===m.width&&n.height===m.height||r();m=n,p=requestAnimationFrame(t)}(),r(),()=>{var e;l.forEach((e=>{i&&e.removeEventListener("scroll",r),s&&e.removeEventListener("resize",r)})),null==u||u(),null==(e=f)||e.disconnect(),f=null,c&&cancelAnimationFrame(p)}}const $R=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var r,n;const{x:i,y:s,placement:o,middlewareData:a}=t,c=await async function(e,t){const{placement:r,platform:n,elements:i}=e,s=await(null==n.isRTL?void 0:n.isRTL(i.floating)),o=KC(r),a=JC(r),c="y"===ZC(r),d=["left","top"].includes(o)?-1:1,l=s&&c?-1:1,u=WC(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:f}="number"==typeof u?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...u};return a&&"number"==typeof f&&(h="end"===a?-1*f:f),c?{x:h*l,y:p*d}:{x:p*d,y:h*l}}(t,e);return o===(null==(r=a.offset)?void 0:r.placement)&&null!=(n=a.arrow)&&n.alignmentOffset?{}:{x:i+c.x,y:s+c.y,data:{...c,placement:o}}}}},VR=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:r,y:n,placement:i}=t,{mainAxis:s=!0,crossAxis:o=!1,limiter:a={fn:e=>{let{x:t,y:r}=e;return{x:t,y:r}}},...c}=WC(e,t),d={x:r,y:n},l=await sR(t,c),u=ZC(KC(i)),p=QC(u);let h=d[p],f=d[u];if(s){const e="y"===p?"bottom":"right";h=HC(h+l["y"===p?"top":"left"],h,h-l[e])}if(o){const e="y"===u?"bottom":"right";f=HC(f+l["y"===u?"top":"left"],f,f-l[e])}const m=a.fn({...t,[p]:h,[u]:f});return{...m,data:{x:m.x-r,y:m.y-n}}}}},GR=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var r,n;const{placement:i,middlewareData:s,rects:o,initialPlacement:a,platform:c,elements:d}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=WC(e,t);if(null!=(r=s.arrow)&&r.alignmentOffset)return{};const v=KC(i),b=KC(a)===a,y=await(null==c.isRTL?void 0:c.isRTL(d.floating)),_=p||(b||!m?[tR(a)]:function(e){const t=tR(e);return[eR(e),t,eR(t)]}(a));p||"none"===f||_.push(...function(e,t,r,n){const i=JC(e);let s=function(e,t,r){const n=["left","right"],i=["right","left"],s=["top","bottom"],o=["bottom","top"];switch(e){case"top":case"bottom":return r?t?i:n:t?n:i;case"left":case"right":return t?s:o;default:return[]}}(KC(e),"start"===r,n);return i&&(s=s.map((e=>e+"-"+i)),t&&(s=s.concat(s.map(eR)))),s}(a,m,f,y));const w=[a,..._],S=await sR(t,g),C=[];let R=(null==(n=s.flip)?void 0:n.overflows)||[];if(l&&C.push(S[v]),u){const e=function(e,t,r){void 0===r&&(r=!1);const n=JC(e),i=XC(e),s=YC(i);let o="x"===i?n===(r?"end":"start")?"right":"left":"start"===n?"bottom":"top";return t.reference[s]>t.floating[s]&&(o=tR(o)),[o,tR(o)]}(i,o,y);C.push(S[e[0]],S[e[1]])}if(R=[...R,{placement:i,overflows:C}],!C.every((e=>e<=0))){var P,T;const e=((null==(P=s.flip)?void 0:P.index)||0)+1,t=w[e];if(t)return{data:{index:e,overflows:R},reset:{placement:t}};let r=null==(T=R.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:T.placement;if(!r)switch(h){case"bestFit":{var k;const e=null==(k=R.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:k[0];e&&(r=e);break}case"initialPlacement":r=a}if(i!==r)return{reset:{placement:r}}}return{}}}},qR=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){const{placement:r,rects:n,platform:i,elements:s}=t,{apply:o=(()=>{}),...a}=WC(e,t),c=await sR(t,a),d=KC(r),l=JC(r),u="y"===ZC(r),{width:p,height:h}=n.floating;let f,m;"top"===d||"bottom"===d?(f=d,m=l===(await(null==i.isRTL?void 0:i.isRTL(s.floating))?"start":"end")?"left":"right"):(m=d,f="end"===l?"top":"bottom");const g=h-c.top-c.bottom,v=p-c.left-c.right,b=FC(h-c[f],g),y=FC(p-c[m],v),_=!t.middlewareData.shift;let w=b,S=y;if(u?S=l||_?FC(y,v):v:w=l||_?FC(b,g):g,_&&!l){const e=zC(c.left,0),t=zC(c.right,0),r=zC(c.top,0),n=zC(c.bottom,0);u?S=p-2*(0!==e||0!==t?e+t:zC(c.left,c.right)):w=h-2*(0!==r||0!==n?r+n:zC(c.top,c.bottom))}await o({...t,availableWidth:S,availableHeight:w});const C=await i.getDimensions(s.floating);return p!==C.width||h!==C.height?{reset:{rects:!0}}:{}}}},HR=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:r}=t,{strategy:n="referenceHidden",...i}=WC(e,t);switch(n){case"referenceHidden":{const e=oR(await sR(t,{...i,elementContext:"reference"}),r.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:aR(e)}}}case"escaped":{const e=oR(await sR(t,{...i,altBoundary:!0}),r.floating);return{data:{escapedOffsets:e,escaped:aR(e)}}}default:return{}}}}},WR=e=>({name:"arrow",options:e,async fn(t){const{x:r,y:n,placement:i,rects:s,platform:o,elements:a,middlewareData:c}=t,{element:d,padding:l=0}=WC(e,t)||{};if(null==d)return{};const u=rR(l),p={x:r,y:n},h=XC(i),f=YC(h),m=await o.getDimensions(d),g="y"===h,v=g?"top":"left",b=g?"bottom":"right",y=g?"clientHeight":"clientWidth",_=s.reference[f]+s.reference[h]-p[h]-s.floating[f],w=p[h]-s.reference[h],S=await(null==o.getOffsetParent?void 0:o.getOffsetParent(d));let C=S?S[y]:0;C&&await(null==o.isElement?void 0:o.isElement(S))||(C=a.floating[y]||s.floating[f]);const R=_/2-w/2,P=C/2-m[f]/2-1,T=FC(u[v],P),k=FC(u[b],P),E=T,O=C-m[f]-k,D=C/2-m[f]/2+R,I=HC(E,D,O),x=!c.arrow&&null!=JC(i)&&D!==I&&s.reference[f]/2-(D<E?T:k)-m[f]/2<0,M=x?D<E?D-E:D-O:0;return{[h]:p[h]+M,data:{[h]:I,centerOffset:D-I-M,...x&&{alignmentOffset:M}},reset:x}}}),KR=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:r,y:n,placement:i,rects:s,middlewareData:o}=t,{offset:a=0,mainAxis:c=!0,crossAxis:d=!0}=WC(e,t),l={x:r,y:n},u=ZC(i),p=QC(u);let h=l[p],f=l[u];const m=WC(a,t),g="number"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(c){const e="y"===p?"height":"width",t=s.reference[p]-s.floating[e]+g.mainAxis,r=s.reference[p]+s.reference[e]-g.mainAxis;h<t?h=t:h>r&&(h=r)}if(d){var v,b;const e="y"===p?"width":"height",t=["top","left"].includes(KC(i)),r=s.reference[u]-s.floating[e]+(t&&(null==(v=o.offset)?void 0:v[u])||0)+(t?0:g.crossAxis),n=s.reference[u]+s.reference[e]+(t?0:(null==(b=o.offset)?void 0:b[u])||0)-(t?g.crossAxis:0);f<r?f=r:f>n&&(f=n)}return{[p]:h,[u]:f}}}},JR=(e,t,r)=>{const n=new Map,i={platform:zR,...r},s={...i.platform,_c:n};return(async(e,t,r)=>{const{placement:n="bottom",strategy:i="absolute",middleware:s=[],platform:o}=r,a=s.filter(Boolean),c=await(null==o.isRTL?void 0:o.isRTL(t));let d=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:l,y:u}=iR(d,n,c),p=n,h={},f=0;for(let r=0;r<a.length;r++){const{name:s,fn:m}=a[r],{x:g,y:v,data:b,reset:y}=await m({x:l,y:u,initialPlacement:n,placement:p,strategy:i,middlewareData:h,rects:d,platform:o,elements:{reference:e,floating:t}});l=null!=g?g:l,u=null!=v?v:u,h={...h,[s]:{...h[s],...b}},y&&f<=50&&(f++,"object"==typeof y&&(y.placement&&(p=y.placement),y.rects&&(d=!0===y.rects?await o.getElementRects({reference:e,floating:t,strategy:i}):y.rects),({x:l,y:u}=iR(d,p,c))),r=-1)}return{x:l,y:u,placement:p,strategy:i,middlewareData:h}})(e,t,{...i,platform:s})};var QR="undefined"!=typeof document?t.useLayoutEffect:t.useEffect;function YR(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let r,n,i;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(r=e.length,r!==t.length)return!1;for(n=r;0!=n--;)if(!YR(e[n],t[n]))return!1;return!0}if(i=Object.keys(e),r=i.length,r!==Object.keys(t).length)return!1;for(n=r;0!=n--;)if(!{}.hasOwnProperty.call(t,i[n]))return!1;for(n=r;0!=n--;){const r=i[n];if(("_owner"!==r||!e.$$typeof)&&!YR(e[r],t[r]))return!1}return!0}return e!=e&&t!=t}function ZR(e){if("undefined"==typeof window)return 1;return(e.ownerDocument.defaultView||window).devicePixelRatio||1}function XR(e,t){const r=ZR(e);return Math.round(t*r)/r}function eP(e){const t=s.useRef(e);return QR((()=>{t.current=e})),t}const tP=e=>({name:"arrow",options:e,fn(t){const{element:r,padding:n}="function"==typeof e?e(t):e;return r&&function(e){return{}.hasOwnProperty.call(e,"current")}(r)?null!=r.current?WR({element:r.current,padding:n}).fn(t):{}:r?WR({element:r,padding:n}).fn(t):{}}}),rP=(e,t)=>({...$R(e),options:[e,t]}),nP=(e,t)=>({...VR(e),options:[e,t]}),iP=(e,t)=>({...KR(e),options:[e,t]}),sP=(e,t)=>({...GR(e),options:[e,t]}),oP=(e,t)=>({...qR(e),options:[e,t]}),aP=(e,t)=>({...HR(e),options:[e,t]}),cP=(e,t)=>({...tP(e),options:[e,t]});const dP="Popper",[lP,uP]=sC(dP),[pP,hP]=lP(dP),fP=t.forwardRef(((e,r)=>{const{__scopePopper:n,virtualRef:i,...s}=e,o=hP("PopperAnchor",n),a=t.useRef(null),c=iC(r,a);return t.useEffect((()=>{o.onAnchorChange((null==i?void 0:i.current)||a.current)})),i?null:t.createElement(pC.div,tC({},s,{ref:c}))})),mP="PopperContent",[gP,vP]=lP(mP),bP=t.forwardRef(((e,r)=>{var n,i,a,c,d,l,u,p;const{__scopePopper:h,side:f="bottom",sideOffset:m=0,align:g="center",alignOffset:v=0,arrowPadding:b=0,avoidCollisions:y=!0,collisionBoundary:_=[],collisionPadding:w=0,sticky:S="partial",hideWhenDetached:C=!1,updatePositionStrategy:R="optimized",onPlaced:P,...T}=e,k=hP(mP,h),[E,O]=t.useState(null),D=iC(r,(e=>O(e))),[I,x]=t.useState(null),M=function(e){const[r,n]=t.useState(void 0);return jC((()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const t=new ResizeObserver((t=>{if(!Array.isArray(t))return;if(!t.length)return;const r=t[0];let i,s;if("borderBoxSize"in r){const e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,s=t.blockSize}else i=e.offsetWidth,s=e.offsetHeight;n({width:i,height:s})}));return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)}),[e]),r}(I),j=null!==(n=null==M?void 0:M.width)&&void 0!==n?n:0,L=null!==(i=null==M?void 0:M.height)&&void 0!==i?i:0,A=f+("center"!==g?"-"+g:""),N="number"==typeof w?w:{top:0,right:0,bottom:0,left:0,...w},B=Array.isArray(_)?_:[_],F=B.length>0,z={padding:N,boundary:B.filter(yP),altBoundary:F},{refs:U,floatingStyles:$,placement:V,isPositioned:G,middlewareData:q}=function(e){void 0===e&&(e={});const{placement:t="bottom",strategy:r="absolute",middleware:n=[],platform:i,elements:{reference:a,floating:c}={},transform:d=!0,whileElementsMounted:l,open:u}=e,[p,h]=s.useState({x:0,y:0,strategy:r,placement:t,middlewareData:{},isPositioned:!1}),[f,m]=s.useState(n);YR(f,n)||m(n);const[g,v]=s.useState(null),[b,y]=s.useState(null),_=s.useCallback((e=>{e!==R.current&&(R.current=e,v(e))}),[]),w=s.useCallback((e=>{e!==P.current&&(P.current=e,y(e))}),[]),S=a||g,C=c||b,R=s.useRef(null),P=s.useRef(null),T=s.useRef(p),k=null!=l,E=eP(l),O=eP(i),D=s.useCallback((()=>{if(!R.current||!P.current)return;const e={placement:t,strategy:r,middleware:f};O.current&&(e.platform=O.current),JR(R.current,P.current,e).then((e=>{const t={...e,isPositioned:!0};I.current&&!YR(T.current,t)&&(T.current=t,o.flushSync((()=>{h(t)})))}))}),[f,t,r,O]);QR((()=>{!1===u&&T.current.isPositioned&&(T.current.isPositioned=!1,h((e=>({...e,isPositioned:!1}))))}),[u]);const I=s.useRef(!1);QR((()=>(I.current=!0,()=>{I.current=!1})),[]),QR((()=>{if(S&&(R.current=S),C&&(P.current=C),S&&C){if(E.current)return E.current(S,C,D);D()}}),[S,C,D,E,k]);const x=s.useMemo((()=>({reference:R,floating:P,setReference:_,setFloating:w})),[_,w]),M=s.useMemo((()=>({reference:S,floating:C})),[S,C]),j=s.useMemo((()=>{const e={position:r,left:0,top:0};if(!M.floating)return e;const t=XR(M.floating,p.x),n=XR(M.floating,p.y);return d?{...e,transform:"translate("+t+"px, "+n+"px)",...ZR(M.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:t,top:n}}),[r,d,M.floating,p.x,p.y]);return s.useMemo((()=>({...p,update:D,refs:x,elements:M,floatingStyles:j})),[p,D,x,M,j])}({strategy:"fixed",placement:A,whileElementsMounted:(...e)=>UR(...e,{animationFrame:"always"===R}),elements:{reference:k.anchor},middleware:[rP({mainAxis:m+L,alignmentAxis:v}),y&&nP({mainAxis:!0,crossAxis:!1,limiter:"partial"===S?iP():void 0,...z}),y&&sP({...z}),oP({...z,apply:({elements:e,rects:t,availableWidth:r,availableHeight:n})=>{const{width:i,height:s}=t.reference,o=e.floating.style;o.setProperty("--radix-popper-available-width",`${r}px`),o.setProperty("--radix-popper-available-height",`${n}px`),o.setProperty("--radix-popper-anchor-width",`${i}px`),o.setProperty("--radix-popper-anchor-height",`${s}px`)}}),I&&cP({element:I,padding:b}),_P({arrowWidth:j,arrowHeight:L}),C&&aP({strategy:"referenceHidden",...z})]}),[H,W]=wP(V),K=hC(P);jC((()=>{G&&(null==K||K())}),[G,K]);const J=null===(a=q.arrow)||void 0===a?void 0:a.x,Q=null===(c=q.arrow)||void 0===c?void 0:c.y,Y=0!==(null===(d=q.arrow)||void 0===d?void 0:d.centerOffset),[Z,X]=t.useState();return jC((()=>{E&&X(window.getComputedStyle(E).zIndex)}),[E]),t.createElement("div",{ref:U.setFloating,"data-radix-popper-content-wrapper":"",style:{...$,transform:G?$.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Z,"--radix-popper-transform-origin":[null===(l=q.transformOrigin)||void 0===l?void 0:l.x,null===(u=q.transformOrigin)||void 0===u?void 0:u.y].join(" ")},dir:e.dir},t.createElement(gP,{scope:h,placedSide:H,onArrowChange:x,arrowX:J,arrowY:Q,shouldHideArrow:Y},t.createElement(pC.div,tC({"data-side":H,"data-align":W},T,{ref:D,style:{...T.style,animation:G?void 0:"none",opacity:null!==(p=q.hide)&&void 0!==p&&p.referenceHidden?0:void 0}}))))}));function yP(e){return null!==e}const _P=e=>({name:"transformOrigin",options:e,fn(t){var r,n,i,s,o;const{placement:a,rects:c,middlewareData:d}=t,l=0!==(null===(r=d.arrow)||void 0===r?void 0:r.centerOffset),u=l?0:e.arrowWidth,p=l?0:e.arrowHeight,[h,f]=wP(a),m={start:"0%",center:"50%",end:"100%"}[f],g=(null!==(n=null===(i=d.arrow)||void 0===i?void 0:i.x)&&void 0!==n?n:0)+u/2,v=(null!==(s=null===(o=d.arrow)||void 0===o?void 0:o.y)&&void 0!==s?s:0)+p/2;let b="",y="";return"bottom"===h?(b=l?m:`${g}px`,y=-p+"px"):"top"===h?(b=l?m:`${g}px`,y=`${c.floating.height+p}px`):"right"===h?(b=-p+"px",y=l?m:`${v}px`):"left"===h&&(b=`${c.floating.width+p}px`,y=l?m:`${v}px`),{data:{x:b,y:y}}}});function wP(e){const[t,r="center"]=e.split("-");return[t,r]}const SP=e=>{const{__scopePopper:r,children:n}=e,[i,s]=t.useState(null);return t.createElement(pP,{scope:r,anchor:i,onAnchorChange:s},n)},CP=fP,RP=bP,PP=t.forwardRef(((e,n)=>{var i;const{container:s=(null===globalThis||void 0===globalThis||null===(i=globalThis.document)||void 0===i?void 0:i.body),...o}=e;return s?r.createPortal(t.createElement(pC.div,tC({},o,{ref:n})),s):null}));const TP=e=>{const{present:n,children:i}=e,s=function(e){const[n,i]=t.useState(),s=t.useRef({}),o=t.useRef(e),a=t.useRef("none"),c=e?"mounted":"unmounted",[d,l]=function(e,r){return t.useReducer(((e,t)=>{const n=r[e][t];return null!=n?n:e}),e)}(c,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return t.useEffect((()=>{const e=kP(s.current);a.current="mounted"===d?e:"none"}),[d]),jC((()=>{const t=s.current,r=o.current;if(r!==e){const n=a.current,i=kP(t);if(e)l("MOUNT");else if("none"===i||"none"===(null==t?void 0:t.display))l("UNMOUNT");else{l(r&&n!==i?"ANIMATION_OUT":"UNMOUNT")}o.current=e}}),[e,l]),jC((()=>{if(n){const e=e=>{const t=kP(s.current).includes(e.animationName);e.target===n&&t&&r.flushSync((()=>l("ANIMATION_END")))},t=e=>{e.target===n&&(a.current=kP(s.current))};return n.addEventListener("animationstart",t),n.addEventListener("animationcancel",e),n.addEventListener("animationend",e),()=>{n.removeEventListener("animationstart",t),n.removeEventListener("animationcancel",e),n.removeEventListener("animationend",e)}}l("ANIMATION_END")}),[n,l]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:t.useCallback((e=>{e&&(s.current=getComputedStyle(e)),i(e)}),[])}}(n),o="function"==typeof i?i({present:s.isPresent}):t.Children.only(i),a=iC(s.ref,o.ref);return"function"==typeof i||s.isPresent?t.cloneElement(o,{ref:a}):null};function kP(e){return(null==e?void 0:e.animationName)||"none"}function EP({prop:e,defaultProp:r,onChange:n=(()=>{})}){const[i,s]=function({defaultProp:e,onChange:r}){const n=t.useState(e),[i]=n,s=t.useRef(i),o=hC(r);return t.useEffect((()=>{s.current!==i&&(o(i),s.current=i)}),[i,s,o]),n}({defaultProp:r,onChange:n}),o=void 0!==e,a=o?e:i,c=hC(n),d=t.useCallback((t=>{if(o){const r="function"==typeof t?t(e):t;r!==e&&c(r)}else s(t)}),[o,e,s,c]);return[a,d]}TP.displayName="Presence";var OP=new WeakMap,DP=new WeakMap,IP={},xP=0,MP=function(e){return e&&(e.host||MP(e.parentNode))},jP=function(e,t,r,n){var i=function(e,t){return t.map((function(t){if(e.contains(t))return t;var r=MP(t);return r&&e.contains(r)?r:(console.error("aria-hidden",t,"in not contained inside",e,". Doing nothing"),null)})).filter((function(e){return Boolean(e)}))}(t,Array.isArray(e)?e:[e]);IP[r]||(IP[r]=new WeakMap);var s=IP[r],o=[],a=new Set,c=new Set(i),d=function(e){e&&!a.has(e)&&(a.add(e),d(e.parentNode))};i.forEach(d);var l=function(e){e&&!c.has(e)&&Array.prototype.forEach.call(e.children,(function(e){if(a.has(e))l(e);else try{var t=e.getAttribute(n),i=null!==t&&"false"!==t,c=(OP.get(e)||0)+1,d=(s.get(e)||0)+1;OP.set(e,c),s.set(e,d),o.push(e),1===c&&i&&DP.set(e,!0),1===d&&e.setAttribute(r,"true"),i||e.setAttribute(n,"true")}catch(t){console.error("aria-hidden: cannot operate on ",e,t)}}))};return l(t),a.clear(),xP++,function(){o.forEach((function(e){var t=OP.get(e)-1,i=s.get(e)-1;OP.set(e,t),s.set(e,i),t||(DP.has(e)||e.removeAttribute(n),DP.delete(e)),i||e.removeAttribute(r)})),--xP||(OP=new WeakMap,OP=new WeakMap,DP=new WeakMap,IP={})}},LP=function(e,t,r){void 0===r&&(r="data-aria-hidden");var n=Array.from(Array.isArray(e)?e:[e]),i=t||function(e){return"undefined"==typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body}(e);return i?(n.push.apply(n,Array.from(i.querySelectorAll("[aria-live]"))),jP(n,i,r,"aria-hidden")):function(){return null}},AP="right-scroll-bar-position",NP="width-before-scroll-bar";function BP(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var FP=new WeakMap;function zP(e,r){var n,i,o,a=(n=r||null,i=function(t){return e.forEach((function(e){return BP(e,t)}))},o=t.useState((function(){return{value:n,callback:i,facade:{get current(){return o.value},set current(e){var t=o.value;t!==e&&(o.value=e,o.callback(e,t))}}}}))[0],o.callback=i,o.facade);return s.useLayoutEffect((function(){var t=FP.get(a);if(t){var r=new Set(t),n=new Set(e),i=a.current;r.forEach((function(e){n.has(e)||BP(e,null)})),n.forEach((function(e){r.has(e)||BP(e,i)}))}FP.set(a,e)}),[e]),a}function UP(e){return e}var $P=function(e){var t=e.sideCar,r=Mw(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var n=t.read();if(!n)throw new Error("Sidecar medium not found");return s.createElement(n,xw({},r))};$P.isSideCarExport=!0;var VP=function(e){void 0===e&&(e={});var t=function(e,t){void 0===t&&(t=UP);var r=[],n=!1;return{read:function(){if(n)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return r.length?r[r.length-1]:e},useMedium:function(e){var i=t(e,n);return r.push(i),function(){r=r.filter((function(e){return e!==i}))}},assignSyncMedium:function(e){for(n=!0;r.length;){var t=r;r=[],t.forEach(e)}r={push:function(t){return e(t)},filter:function(){return r}}},assignMedium:function(e){n=!0;var t=[];if(r.length){var i=r;r=[],i.forEach(e),t=r}var s=function(){var r=t;t=[],r.forEach(e)},o=function(){return Promise.resolve().then(s)};o(),r={push:function(e){t.push(e),o()},filter:function(e){return t=t.filter(e),r}}}}}(null);return t.options=xw({async:!0,ssr:!1},e),t}(),GP=function(){},qP=s.forwardRef((function(e,t){var r=s.useRef(null),n=s.useState({onScrollCapture:GP,onWheelCapture:GP,onTouchMoveCapture:GP}),i=n[0],o=n[1],a=e.forwardProps,c=e.children,d=e.className,l=e.removeScrollBar,u=e.enabled,p=e.shards,h=e.sideCar,f=e.noIsolation,m=e.inert,g=e.allowPinchZoom,v=e.as,b=void 0===v?"div":v,y=Mw(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as"]),_=h,w=zP([r,t]),S=xw(xw({},y),i);return s.createElement(s.Fragment,null,u&&s.createElement(_,{sideCar:VP,removeScrollBar:l,shards:p,noIsolation:f,inert:m,setCallbacks:o,allowPinchZoom:!!g,lockRef:r}),a?s.cloneElement(s.Children.only(c),xw(xw({},S),{ref:w})):s.createElement(b,xw({},S,{className:d,ref:w}),c))}));qP.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},qP.classNames={fullWidth:NP,zeroRight:AP};function HP(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=function(){if("undefined"!=typeof __webpack_nonce__)return __webpack_nonce__}();return t&&e.setAttribute("nonce",t),e}var WP=function(){var e=0,t=null;return{add:function(r){var n,i;0==e&&(t=HP())&&(i=r,(n=t).styleSheet?n.styleSheet.cssText=i:n.appendChild(document.createTextNode(i)),function(e){(document.head||document.getElementsByTagName("head")[0]).appendChild(e)}(t)),e++},remove:function(){! --e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},KP=function(){var e,t=(e=WP(),function(t,r){s.useEffect((function(){return e.add(t),function(){e.remove()}}),[t&&r])});return function(e){var r=e.styles,n=e.dynamic;return t(r,n),null}},JP={left:0,top:0,right:0,gap:0},QP=function(e){return parseInt(e||"",10)||0},YP=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return JP;var t=function(e){var t=window.getComputedStyle(document.body),r=t["padding"===e?"paddingLeft":"marginLeft"],n=t["padding"===e?"paddingTop":"marginTop"],i=t["padding"===e?"paddingRight":"marginRight"];return[QP(r),QP(n),QP(i)]}(e),r=document.documentElement.clientWidth,n=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,n-r+t[2]-t[0])}},ZP=KP(),XP="data-scroll-locked",eT=function(e,t,r,n){var i=e.left,s=e.top,o=e.right,a=e.gap;return void 0===r&&(r="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(n,";\n padding-right: ").concat(a,"px ").concat(n,";\n }\n body[").concat(XP,"] {\n overflow: hidden ").concat(n,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(n,";"),"margin"===r&&"\n padding-left: ".concat(i,"px;\n padding-top: ").concat(s,"px;\n padding-right: ").concat(o,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(a,"px ").concat(n,";\n "),"padding"===r&&"padding-right: ".concat(a,"px ").concat(n,";")].filter(Boolean).join(""),"\n }\n \n .").concat(AP," {\n right: ").concat(a,"px ").concat(n,";\n }\n \n .").concat(NP," {\n margin-right: ").concat(a,"px ").concat(n,";\n }\n \n .").concat(AP," .").concat(AP," {\n right: 0 ").concat(n,";\n }\n \n .").concat(NP," .").concat(NP," {\n margin-right: 0 ").concat(n,";\n }\n \n body[").concat(XP,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(a,"px;\n }\n")},tT=function(){var e=parseInt(document.body.getAttribute(XP)||"0",10);return isFinite(e)?e:0},rT=function(e){var t=e.noRelative,r=e.noImportant,n=e.gapMode,i=void 0===n?"margin":n;s.useEffect((function(){return document.body.setAttribute(XP,(tT()+1).toString()),function(){var e=tT()-1;e<=0?document.body.removeAttribute(XP):document.body.setAttribute(XP,e.toString())}}),[]);var o=s.useMemo((function(){return YP(i)}),[i]);return s.createElement(ZP,{styles:eT(o,!t,i,r?"":"!important")})},nT=!1;if("undefined"!=typeof window)try{var iT=Object.defineProperty({},"passive",{get:function(){return nT=!0,!0}});window.addEventListener("test",iT,iT),window.removeEventListener("test",iT,iT)}catch(ck){nT=!1}var sT=!!nT&&{passive:!1},oT=function(e,t){var r=window.getComputedStyle(e);return"hidden"!==r[t]&&!(r.overflowY===r.overflowX&&!function(e){return"TEXTAREA"===e.tagName}(e)&&"visible"===r[t])},aT=function(e,t){var r=t;do{if("undefined"!=typeof ShadowRoot&&r instanceof ShadowRoot&&(r=r.host),cT(e,r)){var n=dT(e,r);if(n[1]>n[2])return!0}r=r.parentNode}while(r&&r!==document.body);return!1},cT=function(e,t){return"v"===e?function(e){return oT(e,"overflowY")}(t):function(e){return oT(e,"overflowX")}(t)},dT=function(e,t){return"v"===e?function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]}(t):function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]}(t)},lT=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},uT=function(e){return[e.deltaX,e.deltaY]},pT=function(e){return e&&"current"in e?e.current:e},hT=function(e){return"\n .block-interactivity-".concat(e," {pointer-events: none;}\n .allow-interactivity-").concat(e," {pointer-events: all;}\n")},fT=0,mT=[];var gT,vT=(gT=function(e){var t=s.useRef([]),r=s.useRef([0,0]),n=s.useRef(),i=s.useState(fT++)[0],o=s.useState((function(){return KP()}))[0],a=s.useRef(e);s.useEffect((function(){a.current=e}),[e]),s.useEffect((function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var t=function(e,t,r){if(r||2===arguments.length)for(var n,i=0,s=t.length;i<s;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))}([e.lockRef.current],(e.shards||[]).map(pT),!0).filter(Boolean);return t.forEach((function(e){return e.classList.add("allow-interactivity-".concat(i))})),function(){document.body.classList.remove("block-interactivity-".concat(i)),t.forEach((function(e){return e.classList.remove("allow-interactivity-".concat(i))}))}}}),[e.inert,e.lockRef.current,e.shards]);var c=s.useCallback((function(e,t){if("touches"in e&&2===e.touches.length)return!a.current.allowPinchZoom;var i,s=lT(e),o=r.current,c="deltaX"in e?e.deltaX:o[0]-s[0],d="deltaY"in e?e.deltaY:o[1]-s[1],l=e.target,u=Math.abs(c)>Math.abs(d)?"h":"v";if("touches"in e&&"h"===u&&"range"===l.type)return!1;var p=aT(u,l);if(!p)return!0;if(p?i=u:(i="v"===u?"h":"v",p=aT(u,l)),!p)return!1;if(!n.current&&"changedTouches"in e&&(c||d)&&(n.current=i),!i)return!0;var h=n.current||i;return function(e,t,r,n,i){var s=function(e,t){return"h"===e&&"rtl"===t?-1:1}(e,window.getComputedStyle(t).direction),o=s*n,a=r.target,c=t.contains(a),d=!1,l=o>0,u=0,p=0;do{var h=dT(e,a),f=h[0],m=h[1]-h[2]-s*f;(f||m)&&cT(e,a)&&(u+=m,p+=f),a=a.parentNode}while(!c&&a!==document.body||c&&(t.contains(a)||t===a));return(l&&(i&&0===u||!i&&o>u)||!l&&(i&&0===p||!i&&-o>p))&&(d=!0),d}(h,t,e,"h"===h?c:d,!0)}),[]),d=s.useCallback((function(e){var r=e;if(mT.length&&mT[mT.length-1]===o){var n="deltaY"in r?uT(r):lT(r),i=t.current.filter((function(e){return e.name===r.type&&e.target===r.target&&(t=e.delta,i=n,t[0]===i[0]&&t[1]===i[1]);var t,i}))[0];if(i&&i.should)r.cancelable&&r.preventDefault();else if(!i){var s=(a.current.shards||[]).map(pT).filter(Boolean).filter((function(e){return e.contains(r.target)}));(s.length>0?c(r,s[0]):!a.current.noIsolation)&&r.cancelable&&r.preventDefault()}}}),[]),l=s.useCallback((function(e,r,n,i){var s={name:e,delta:r,target:n,should:i};t.current.push(s),setTimeout((function(){t.current=t.current.filter((function(e){return e!==s}))}),1)}),[]),u=s.useCallback((function(e){r.current=lT(e),n.current=void 0}),[]),p=s.useCallback((function(t){l(t.type,uT(t),t.target,c(t,e.lockRef.current))}),[]),h=s.useCallback((function(t){l(t.type,lT(t),t.target,c(t,e.lockRef.current))}),[]);s.useEffect((function(){return mT.push(o),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:h}),document.addEventListener("wheel",d,sT),document.addEventListener("touchmove",d,sT),document.addEventListener("touchstart",u,sT),function(){mT=mT.filter((function(e){return e!==o})),document.removeEventListener("wheel",d,sT),document.removeEventListener("touchmove",d,sT),document.removeEventListener("touchstart",u,sT)}}),[]);var f=e.removeScrollBar,m=e.inert;return s.createElement(s.Fragment,null,m?s.createElement(o,{styles:hT(i)}):null,f?s.createElement(rT,{gapMode:"margin"}):null)},VP.useMedium(gT),$P),bT=s.forwardRef((function(e,t){return s.createElement(qP,xw({},e,{ref:t,sideCar:vT}))}));bT.classNames=qP.classNames;var yT=bT;const _T="Popover",[wT,ST]=sC(_T,[uP]),CT=uP(),[RT,PT]=wT(_T),TT=t.forwardRef(((e,r)=>{const{__scopePopover:n,...i}=e,s=PT("PopoverTrigger",n),o=CT(n),a=iC(r,s.triggerRef),c=t.createElement(pC.button,tC({type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":LT(s.open)},i,{ref:a,onClick:rC(e.onClick,s.onOpenToggle)}));return s.hasCustomAnchor?c:t.createElement(CP,tC({asChild:!0},o),c)})),kT="PopoverPortal",[ET,OT]=wT(kT,{forceMount:void 0}),DT="PopoverContent",IT=t.forwardRef(((e,r)=>{const n=OT(DT,e.__scopePopover),{forceMount:i=n.forceMount,...s}=e,o=PT(DT,e.__scopePopover);return t.createElement(TP,{present:i||o.open},o.modal?t.createElement(xT,tC({},s,{ref:r})):t.createElement(MT,tC({},s,{ref:r})))})),xT=t.forwardRef(((e,r)=>{const n=PT(DT,e.__scopePopover),i=t.useRef(null),s=iC(r,i),o=t.useRef(!1);return t.useEffect((()=>{const e=i.current;if(e)return LP(e)}),[]),t.createElement(yT,{as:aC,allowPinchZoom:!0},t.createElement(jT,tC({},e,{ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:rC(e.onCloseAutoFocus,(e=>{var t;e.preventDefault(),o.current||null===(t=n.triggerRef.current)||void 0===t||t.focus()})),onPointerDownOutside:rC(e.onPointerDownOutside,(e=>{const t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey,n=2===t.button||r;o.current=n}),{checkForDefaultPrevented:!1}),onFocusOutside:rC(e.onFocusOutside,(e=>e.preventDefault()),{checkForDefaultPrevented:!1})})))})),MT=t.forwardRef(((e,r)=>{const n=PT(DT,e.__scopePopover),i=t.useRef(!1),s=t.useRef(!1);return t.createElement(jT,tC({},e,{ref:r,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var r,o;(null===(r=e.onCloseAutoFocus)||void 0===r||r.call(e,t),t.defaultPrevented)||(i.current||null===(o=n.triggerRef.current)||void 0===o||o.focus(),t.preventDefault());i.current=!1,s.current=!1},onInteractOutside:t=>{var r,o;null===(r=e.onInteractOutside)||void 0===r||r.call(e,t),t.defaultPrevented||(i.current=!0,"pointerdown"===t.detail.originalEvent.type&&(s.current=!0));const a=t.target;(null===(o=n.triggerRef.current)||void 0===o?void 0:o.contains(a))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&s.current&&t.preventDefault()}}))})),jT=t.forwardRef(((e,r)=>{const{__scopePopover:n,trapFocus:i,onOpenAutoFocus:s,onCloseAutoFocus:o,disableOutsidePointerEvents:a,onEscapeKeyDown:c,onPointerDownOutside:d,onFocusOutside:l,onInteractOutside:u,...p}=e,h=PT(DT,n),f=CT(n);return t.useEffect((()=>{var e,t;const r=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",null!==(e=r[0])&&void 0!==e?e:CC()),document.body.insertAdjacentElement("beforeend",null!==(t=r[1])&&void 0!==t?t:CC()),SC++,()=>{1===SC&&document.querySelectorAll("[data-radix-focus-guard]").forEach((e=>e.remove())),SC--}}),[]),t.createElement(kC,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:s,onUnmountAutoFocus:o},t.createElement(yC,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:u,onEscapeKeyDown:c,onPointerDownOutside:d,onFocusOutside:l,onDismiss:()=>h.onOpenChange(!1)},t.createElement(RP,tC({"data-state":LT(h.open),role:"dialog",id:h.contentId},f,p,{ref:r,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}}))))}));function LT(e){return e?"open":"closed"}const AT=e=>{const{__scopePopover:r,forceMount:n,children:i,container:s}=e,o=PT(kT,r);return t.createElement(ET,{scope:r,forceMount:n},t.createElement(TP,{present:n||o.open},t.createElement(PP,{asChild:!0,container:s},i)))},NT=IT,BT=e=>{const{__scopePopover:r,children:n,open:i,defaultOpen:s,onOpenChange:o,modal:a=!1}=e,c=CT(r),d=t.useRef(null),[l,u]=t.useState(!1),[p=!1,h]=EP({prop:i,defaultProp:s,onChange:o});return t.createElement(SP,c,t.createElement(RT,{scope:r,contentId:NC(),triggerRef:d,open:p,onOpenChange:h,onOpenToggle:t.useCallback((()=>h((e=>!e))),[h]),hasCustomAnchor:l,onCustomAnchorAdd:t.useCallback((()=>u(!0)),[]),onCustomAnchorRemove:t.useCallback((()=>u(!1)),[]),modal:a},n))},FT=TT,zT=s.forwardRef(((e,t)=>{var{style:r,align:n="center",sideOffset:i=4}=e,o=Mw(e,["style","align","sideOffset"]);return s.createElement(AT,null,s.createElement(NT,Object.assign({ref:t,align:n,sideOffset:i,style:Object.assign({width:"200px",backgroundColor:"#fff",border:"1px solid #e5e5e5",borderRadius:"0.375rem",boxShadow:"0 1px 2px 0 rgb(0 0 0 / 0.05)",color:"#333",fontSize:"14px",lineHeight:"1.5",padding:"16px",zIndex:50,outline:"none"},r)},o)))}));zT.displayName=NT.displayName;const UT=s.createContext({}),$T=s.createContext({}),VT=()=>{const e=s.useContext(UT),t=s.useContext($T);if(!t)throw new Error("useGridCell must be used within a GridCell");return Object.assign(Object.assign({},e),t)},GT=s.createContext({}),qT=e=>{const{children:t}=e,r=Mw(e,["children"]),[n,i]=s.useState(!1);return s.createElement(GT.Provider,{value:{open:n,setOpen:i}},s.createElement(BT,Object.assign({},r,{open:n,onOpenChange:i}),t))},HT=s.forwardRef(((e,t)=>{var{children:r,style:n}=e,i=Mw(e,["children","style"]);return s.createElement(zT,Object.assign({ref:t,style:Object.assign({display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",minWidth:"180px",maxWidth:"300px",maxHeight:"100vh",overflowY:"auto",padding:0},n)},i),r)}));HT.displayName="ParticipantMenuContent";const WT=s.forwardRef(((e,t)=>{var{children:r,style:n}=e,i=Mw(e,["children","style"]);return s.createElement(FT,Object.assign({ref:t,style:Object.assign({position:"absolute",top:"10px",right:"20px",textDecoration:"none",whiteSpace:"nowrap",border:"none",cursor:"pointer"},n)},i),r)}));WT.displayName=FT.displayName;const KT=s.forwardRef(((e,t)=>{var{children:r,style:n,participantAction:i}=e,o=Mw(e,["children","style","participantAction"]);const{participant:a,setOpen:c,maximizedParticipant:d,setMaximizedParticipant:l}=(()=>{const e=s.useContext(GT),t=VT();if(!e)throw new Error("useParticipantMenu must be used within a ParticipantMenu");return Object.assign(Object.assign({},e),t)})(),u=jw(),p=Lw($_).find((e=>e.id===a.id)),h=(null==d?void 0:d.id)===a.id;let f;switch(i){case"maximize":f=()=>{l(h?null:a),c(!1)};break;case"spotlight":f=()=>{u(p?z_({id:a.id}):F_({id:a.id})),c(!1)}}return s.createElement("button",Object.assign({ref:t,role:"menuitem",tabIndex:-1,onClick:null!=f?f:o.onClick,style:Object.assign({alignItems:"stretch",backgroundColor:"transparent",border:"none",cursor:"pointer",display:"flex",height:"40px",lineHeight:"40px",minWidth:"140px",padding:"0 12px",textAlign:"left",textDecoration:"none",whiteSpace:"nowrap",width:"100%"},n)},o),r)}));function JT(e){return s.createElement("svg",Object.assign({width:"100%",height:"100%",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},e),s.createElement("g",null,s.createElement("circle",{cx:"6",cy:"12",r:"2"}),s.createElement("circle",{cx:"12",cy:"12",r:"2"}),s.createElement("circle",{cx:"18",cy:"12",r:"2"})))}function QT(e){return s.createElement("svg",Object.assign({width:"100%",height:"100%",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},e),s.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m13.875 3c0 .62132.5037 1.125 1.125 1.125h3.284l-4.0795 4.0795c-.4393.43934-.4393 1.15166 0 1.591.4393.4393 1.1517.4393 1.591 0l4.0795-4.07951v3.28401c0 .62132.5037 1.125 1.125 1.125s1.125-.50368 1.125-1.125v-6c0-.15254-.0304-.29799-.0854-.43063-.0536-.12968-.1326-.25135-.2368-.35749l-.0147-.01469c-.203-.19928-.4812-.32219-.7881-.32219h-6c-.6213 0-1.125.50368-1.125 1.125zm-9.75 12c0-.6213-.50368-1.125-1.125-1.125s-1.125.5037-1.125 1.125v6c0 .3069.12291.5851.32219.7881.00486.005.00975.0099.01469.0147.10614.1042.22781.1832.35749.2368.13264.055.27809.0854.43063.0854h6c.62132 0 1.125-.5037 1.125-1.125s-.50368-1.125-1.125-1.125h-3.28401l4.07951-4.0795c.4393-.4393.4393-1.1517 0-1.591-.43934-.4393-1.15166-.4393-1.591 0l-4.0795 4.0795z"}))}function YT(e){return s.createElement("svg",Object.assign({width:"100%",height:"100%",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},e),s.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m15.241.146691c-.1011-.1955882-.3809-.1955879-.482 0l-1.1063 2.139639c-.0258.04991-.0665.09058-.1164.11639l-2.1396 1.10629c-.1956.10113-.1956.38085 0 .48198l2.1396 1.10629c.0499.02581.0906.06648.1164.11639l1.1063 2.13964c.1011.19559.3809.19559.482 0l1.1063-2.13964c.0258-.04991.0665-.09058.1164-.11639l2.1396-1.10629c.1956-.10113.1956-.38085 0-.48198l-2.1396-1.10629c-.0499-.02581-.0906-.06648-.1164-.11639zm-13.741 2.900259v14.67495c0 .0511.00116.1018.00345.1523-.00229.0418-.00345.0837-.00345.1258 0 .5674.21005 1.1103.59339 1.6103.24265.3472.55042.6455.90566.8773 1.61225 1.213 4.36988 2.0124 7.50095 2.0124 4.3315 0 7.9484-1.53 8.8068-3.5681.0651-.1472.1148-.3024.1455-.4658.0315-.1532.0477-.3087.0477-.4661 0-.6032-.2374-1.1788-.668-1.7045-.1377-.1975-.2995-.4017-.4877-.6127l-14.22219-13.74809c-.28845-.27884-.67396-.43471-1.07516-.43471-.85436 0-1.54695.69259-1.54695 1.54695zm19.2646 4.59631c.0988-.19101.372-.19101.4708 0l.8546 1.65303c.0253.04874.065.08846.1137.11366l1.653.85465c.1911.0988.1911.372 0 .4708l-1.653.8546c-.0487.0253-.0884.065-.1137.1137l-.8546 1.653c-.0988.1911-.372.1911-.4708 0l-.8546-1.653c-.0253-.0487-.065-.0884-.1137-.1137l-1.653-.8546c-.1911-.0988-.1911-.372 0-.4708l1.653-.85465c.0487-.0252.0884-.06492.1137-.11366zm-3.2651 10.35684c0 .0769-.1144.6851-1.5305 1.3931-1.2964.6482-3.2274 1.1069-5.4695 1.1069s-4.17308-.4587-5.46952-1.1069c-1.41607-.708-1.53047-1.3162-1.53047-1.3931 0-.077.1144-.6851 1.53047-1.3932 1.29644-.6482 3.22742-1.1068 5.46952-1.1068s4.1731.4586 5.4695 1.1068c1.4161.7081 1.5305 1.3162 1.5305 1.3932z"}))}function ZT({participant:e}){const t=Lw($_).find((t=>t.id===e.id)),{isHovered:r,maximizedParticipant:n}=VT(),i=(null==n?void 0:n.id)===e.id;return r?s.createElement(qT,null,s.createElement(WT,{style:{display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"#fff",borderRadius:"6px",padding:"4px"}},s.createElement(JT,{height:20,width:20,transform:"rotate(90)"})),s.createElement(HT,null,s.createElement(KT,{participantAction:"maximize",style:{display:"flex",alignItems:"center",gap:"10px"}},s.createElement(QT,{height:16,width:16}),i?"Minimize":"Maximize"),s.createElement(KT,{participantAction:"spotlight",style:{display:"flex",alignItems:"center",gap:"10px"}},s.createElement(YT,{height:16,width:16}),t?"Remove spotlight":"Spotlight"))):null}KT.displayName="ParticipantMenuItem";const XT=s.forwardRef((({className:e,participant:t,children:r},n)=>{const[i,o]=s.useState(!1),a=s.useCallback((()=>{o(!0)}),[]),c=s.useCallback((()=>{o(!1)}),[]);return s.createElement($T.Provider,{value:{participant:t,isHovered:i}},s.createElement("div",{ref:n,className:e,onMouseEnter:a,onMouseLeave:c},r))}));XT.displayName="GridCell";const ek=s.forwardRef(((e,t)=>{var{stream:r,style:n}=e,i=Mw(e,["stream","style"]);const o=s.useRef(null),{onSetClientAspectRatio:a,clientAspectRatios:c,participant:d}=VT();if(!d)return null;const l=c[d.id];s.useImperativeHandle(t,(()=>o.current));const u=s.useCallback((()=>{const e=o.current&&o.current.captureAspectRatio();e&&e!==l&&d.id&&a({aspectRatio:e,clientId:d.id})}),[c,d.id,a]),p=r||d.stream;return p?s.createElement(Aw,Object.assign({ref:o,style:Object.assign({borderRadius:"8px"},n)},i,{stream:p,onVideoResize:u})):null}));function tk({cellView:e,enableParticipantMenu:t,render:r}){const n=e.client;if(n)return"video"===e.type?s.createElement(XT,{participant:n},n.isVideoEnabled?s.createElement(s.Fragment,null,r?r({participant:n}):s.createElement(s.Fragment,null,s.createElement(ek,null),t?s.createElement(ZT,{participant:n}):null)):s.createElement(eC,{isSmallCell:!1,displayName:(null==n?void 0:n.displayName)||"Guest",withRoundedCorners:!0})):void 0}return ek.displayName="GridVideoView",e.GridCell=XT,e.GridVideoView=ek,e.ParticipantMenu=qT,e.ParticipantMenuContent=HT,e.ParticipantMenuItem=KT,e.ParticipantMenuTrigger=WT,e.VideoGrid=function({renderParticipant:e,stageParticipantLimit:t,gridGap:r,videoGridGap:n,enableSubgrid:i,enableParticipantMenu:o}){const a=s.useRef(null),{cellViewsVideoGrid:c,cellViewsInPresentationGrid:d,cellViewsInSubgrid:l,clientAspectRatios:u,videoStage:p,setContainerBounds:h,setClientAspectRatios:f,maximizedParticipant:m,setMaximizedParticipant:g}=kS({activeVideosSubgridTrigger:12,stageParticipantLimit:t,gridGap:r,videoGridGap:n,enableSubgrid:i}),v=s.useCallback((({aspectRatio:e,clientId:t})=>{f((r=>Object.assign(Object.assign({},r),{[t]:e})))}),[f]),b=s.useMemo((()=>d.map((t=>tk(Object.assign({cellView:t,enableParticipantMenu:o},e?{render:({participant:t})=>e({participant:t})}:{}))))),[d]),y=s.useMemo((()=>c.map((t=>tk(Object.assign({cellView:t,enableParticipantMenu:o},e?{render:({participant:t})=>e({participant:t})}:{}))))),[c]),_=s.useMemo((()=>l.map((e=>tk({cellView:e,enableParticipantMenu:o})))),[l]);return s.useEffect((()=>{if(!a.current)return;const e=new ResizeObserver(Rb((()=>{var e,t,r,n;h({width:null!==(t=null===(e=a.current)||void 0===e?void 0:e.clientWidth)&&void 0!==t?t:640,height:null!==(n=null===(r=a.current)||void 0===r?void 0:r.clientHeight)&&void 0!==n?n:480})}),{delay:60,edges:!1}));return e.observe(a.current),()=>{e.disconnect()}}),[]),s.createElement(UT.Provider,{value:{onSetClientAspectRatio:v,cellViewsVideoGrid:c,cellViewsInPresentationGrid:d,cellViewsInSubgrid:l,clientAspectRatios:u,maximizedParticipant:m,setMaximizedParticipant:g}},s.createElement("div",{ref:a,style:{width:"100%",height:"100%",position:"relative"}},s.createElement(Zw,{layoutVideoStage:p,presentationGridContent:b,gridContent:y,subgridContent:_})))},e.VideoView=Aw,e.WherebyProvider=function({children:e}){const t=(({preloadedState:e,injectServices:t})=>wt({devTools:W_,reducer:J_,middleware:e=>e({thunk:{extraArgument:{services:t}},serializableCheck:!1}).prepend(Tv.middleware),preloadedState:e}))({injectServices:function(){const e=Cw.create({baseUrl:Iw}),t=new uw({fetchDeviceCredentials:e.getCredentials.bind(e),baseUrl:Iw}),r=new Ow({apiClient:t});return{credentialsService:e,apiClient:t,organizationService:r,fetchOrganizationFromRoomUrl:e=>{const t=Am({host:new URL(e).host});return new Dw({organizationService:r,subdomain:t.subdomain}).fetchOrganization()}}}()});return s.createElement(O,{store:t},e)},e.useLocalMedia=function(e={audio:!0,video:!0}){const t=jw(),r=Lw(Fw);return s.useEffect((()=>(t(Vb(e)),()=>{t(Gb())})),[]),{state:r,actions:{setCameraDevice:s.useCallback((e=>t(kb({deviceId:e}))),[t]),setMicrophoneDevice:s.useCallback((e=>t(Eb({deviceId:e}))),[t]),setSpeakerDevice:s.useCallback((e=>t(Ob({deviceId:e}))),[t]),toggleCameraEnabled:s.useCallback((e=>t(Db({enabled:e}))),[t]),toggleMicrophoneEnabled:s.useCallback((e=>t(Ib({enabled:e}))),[t]),toggleLowDataModeEnabled:s.useCallback((e=>t(xb({enabled:e}))),[t])}}},e.useRoomConnection=function(e,t=Bw){const r=jw(),n=Lw(Nw),i=s.useMemo((()=>{const r=new URL(e),n=new URLSearchParams(r.search),i=t.roomKey||n.get("roomKey");return{displayName:t.displayName||"Guest",localMediaOptions:t.localMedia?void 0:t.localMediaOptions,roomKey:i,roomUrl:e,userAgent:"browser-sdk:3.2.2",externalId:t.externalId||null}}),[e,t]);s.useEffect((()=>()=>{r(Dv())}),[]);const o=s.useCallback((e=>{"connected"===n.connectionStatus?r(e()):console.warn("Action cannot be performed outside of a connected room")}),[n.connectionStatus,r]),a=s.useCallback((e=>o((()=>bb({text:e})))),[o]),c=s.useCallback((()=>r(Hy())),[r]),d=s.useCallback((e=>o((()=>Db({enabled:e})))),[o]),l=s.useCallback((e=>o((()=>Ib({enabled:e})))),[o]),u=s.useCallback((e=>o((()=>xb({enabled:e})))),[o]),p=s.useCallback((e=>o((()=>fy({enabled:e})))),[o]),h=s.useCallback((e=>o((()=>Ny({clientIds:[e],enable:!0})))),[o]),f=s.useCallback((e=>o((()=>q_({participantId:e})))),[o]),m=s.useCallback((e=>o((()=>H_({participantId:e})))),[o]),g=s.useCallback((()=>o((()=>wb()))),[o]),v=s.useCallback((()=>o((()=>Cy()))),[o]),b=s.useCallback((()=>o((()=>Sb()))),[o]),y=s.useCallback((()=>o((()=>Ry()))),[o]),_=s.useCallback((()=>r(Iv(i))),[r]),w=s.useCallback((()=>o((()=>Dv()))),[o]),S=s.useCallback((e=>o((()=>t_({locked:e})))),[o]),C=s.useCallback((e=>o((()=>Ny({clientIds:e,enable:!1})))),[o]),R=s.useCallback((e=>o((()=>F_({id:e})))),[o]),P=s.useCallback((e=>o((()=>z_({id:e})))),[o]),T=s.useCallback((e=>o((()=>r_({clientId:e})))),[o]),k=s.useCallback((e=>o((()=>n_({stayBehind:e})))),[o]),{events:E}=n;return{state:Mw(n,["events"]),events:E,actions:{toggleLowDataMode:u,toggleRaiseHand:p,askToSpeak:h,acceptWaitingParticipant:f,knock:c,joinRoom:_,leaveRoom:w,lockRoom:S,muteParticipants:C,kickParticipant:T,endMeeting:k,rejectWaitingParticipant:m,sendChatMessage:a,setDisplayName:e=>o((()=>uy({displayName:e}))),startCloudRecording:g,startScreenshare:v,stopCloudRecording:b,stopScreenshare:y,toggleCamera:d,toggleMicrophone:l,spotlightParticipant:R,removeSpotlight:P}}},e}({},React,ReactDOM);
3
+ let jn;kn.AwaitQueue=class{constructor(){this.pendingTasks=new Map,this.nextTaskId=0,this.stopping=!1}get size(){return this.pendingTasks.size}async push(e,t){if(t=t??e.name,In.debug(`push() [name:${t}]`),"function"!=typeof e)throw new TypeError("given task is not a function");if(t)try{Object.defineProperty(e,"name",{value:t})}catch(e){}return new Promise(((r,n)=>{const i={id:this.nextTaskId++,task:e,name:t,enqueuedAt:Date.now(),executedAt:void 0,completed:!1,resolve:e=>{if(i.completed)return;i.completed=!0,this.pendingTasks.delete(i.id),In.debug(`resolving task [name:${i.name}]`),r(e);const[t]=this.pendingTasks.values();t&&!t.executedAt&&this.execute(t)},reject:e=>{if(!i.completed&&(i.completed=!0,this.pendingTasks.delete(i.id),In.debug(`rejecting task [name:${i.name}]: %s`,String(e)),n(e),!this.stopping)){const[e]=this.pendingTasks.values();e&&!e.executedAt&&this.execute(e)}}};this.pendingTasks.set(i.id,i),1===this.pendingTasks.size&&this.execute(i)}))}stop(){In.debug("stop()"),this.stopping=!0;for(const e of this.pendingTasks.values())In.debug(`stop() | stopping task [name:${e.name}]`),e.reject(new xn);this.stopping=!1}remove(e){In.debug(`remove() [taskIdx:${e}]`);const t=Array.from(this.pendingTasks.values())[e];t?t.reject(new Mn):In.debug(`stop() | no task with given idx [taskIdx:${e}]`)}dump(){const e=Date.now();let t=0;return Array.from(this.pendingTasks.values()).map((r=>({idx:t++,task:r.task,name:r.name,enqueuedTime:r.executedAt?r.executedAt-r.enqueuedAt:e-r.enqueuedAt,executionTime:r.executedAt?e-r.executedAt:0})))}async execute(e){if(In.debug(`execute() [name:${e.name}]`),e.executedAt)throw new Error("task already being executed");e.executedAt=Date.now();try{const t=await e.task();e.resolve(t)}catch(t){e.reject(t)}}};var Ln="function"==typeof queueMicrotask?queueMicrotask.bind("undefined"!=typeof window?window:a):e=>(jn||(jn=Promise.resolve())).then(e).catch((e=>setTimeout((()=>{throw e}),0))),An={};Object.defineProperty(An,"__esModule",{value:!0}),An.Producer=void 0;const Nn=Lr,Bn=zr,Fn=new Ir.Logger("Producer");class zn extends Nn.EnhancedEventEmitter{constructor({id:e,localId:t,rtpSender:r,track:n,rtpParameters:i,stopTracks:s,disableTrackOnPause:o,zeroRtpOnPause:a,appData:c}){super(),this._closed=!1,this._observer=new Nn.EnhancedEventEmitter,Fn.debug("constructor()"),this._id=e,this._localId=t,this._rtpSender=r,this._track=n,this._kind=n.kind,this._rtpParameters=i,this._paused=!!o&&!n.enabled,this._maxSpatialLayer=void 0,this._stopTracks=s,this._disableTrackOnPause=o,this._zeroRtpOnPause=a,this._appData=c||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get closed(){return this._closed}get kind(){return this._kind}get rtpSender(){return this._rtpSender}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get maxSpatialLayer(){return this._maxSpatialLayer}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Fn.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Fn.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new Bn.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Fn.debug("pause()"),this._closed?Fn.error("pause() | Producer closed"):(this._paused=!0,this._track&&this._disableTrackOnPause&&(this._track.enabled=!1),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@pause",e,t)})).catch((()=>{})),this._observer.safeEmit("pause"))}resume(){Fn.debug("resume()"),this._closed?Fn.error("resume() | Producer closed"):(this._paused=!1,this._track&&this._disableTrackOnPause&&(this._track.enabled=!0),this._zeroRtpOnPause&&new Promise(((e,t)=>{this.safeEmit("@resume",e,t)})).catch((()=>{})),this._observer.safeEmit("resume"))}async replaceTrack({track:e}){if(Fn.debug("replaceTrack() [track:%o]",e),this._closed){if(e&&this._stopTracks)try{e.stop()}catch(e){}throw new Bn.InvalidStateError("closed")}if(e&&"ended"===e.readyState)throw new Bn.InvalidStateError("track ended");e!==this._track?(await new Promise(((t,r)=>{this.safeEmit("@replacetrack",e,t,r)})),this.destroyTrack(),this._track=e,this._track&&this._disableTrackOnPause&&(this._paused?this._paused&&(this._track.enabled=!1):this._track.enabled=!0),this.handleTrack()):Fn.debug("replaceTrack() | same track, ignored")}async setMaxSpatialLayer(e){if(this._closed)throw new Bn.InvalidStateError("closed");if("video"!==this._kind)throw new Bn.UnsupportedError("not a video Producer");if("number"!=typeof e)throw new TypeError("invalid spatialLayer");e!==this._maxSpatialLayer&&(await new Promise(((t,r)=>{this.safeEmit("@setmaxspatiallayer",e,t,r)})).catch((()=>{})),this._maxSpatialLayer=e)}async setRtpEncodingParameters(e){if(this._closed)throw new Bn.InvalidStateError("closed");if("object"!=typeof e)throw new TypeError("invalid params");await new Promise(((t,r)=>{this.safeEmit("@setrtpencodingparameters",e,t,r)}))}onTrackEnded(){Fn.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track&&this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){if(this._track)try{this._track.removeEventListener("ended",this.onTrackEnded),this._stopTracks&&this._track.stop()}catch(e){}}}An.Producer=zn;var Vn={};Object.defineProperty(Vn,"__esModule",{value:!0}),Vn.Consumer=void 0;const Un=Lr,$n=zr,Gn=new Ir.Logger("Consumer");class qn extends Un.EnhancedEventEmitter{constructor({id:e,localId:t,producerId:r,rtpReceiver:n,track:i,rtpParameters:s,appData:o}){super(),this._closed=!1,this._observer=new Un.EnhancedEventEmitter,Gn.debug("constructor()"),this._id=e,this._localId=t,this._producerId=r,this._rtpReceiver=n,this._track=i,this._rtpParameters=s,this._paused=!i.enabled,this._appData=o||{},this.onTrackEnded=this.onTrackEnded.bind(this),this.handleTrack()}get id(){return this._id}get localId(){return this._localId}get producerId(){return this._producerId}get closed(){return this._closed}get kind(){return this._track.kind}get rtpReceiver(){return this._rtpReceiver}get track(){return this._track}get rtpParameters(){return this._rtpParameters}get paused(){return this._paused}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Gn.debug("close()"),this._closed=!0,this.destroyTrack(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Gn.debug("transportClosed()"),this._closed=!0,this.destroyTrack(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}async getStats(){if(this._closed)throw new $n.InvalidStateError("closed");return new Promise(((e,t)=>{this.safeEmit("@getstats",e,t)}))}pause(){Gn.debug("pause()"),this._closed?Gn.error("pause() | Consumer closed"):this._paused?Gn.debug("pause() | Consumer is already paused"):(this._paused=!0,this._track.enabled=!1,this.emit("@pause"),this._observer.safeEmit("pause"))}resume(){Gn.debug("resume()"),this._closed?Gn.error("resume() | Consumer closed"):this._paused?(this._paused=!1,this._track.enabled=!0,this.emit("@resume"),this._observer.safeEmit("resume")):Gn.debug("resume() | Consumer is already resumed")}onTrackEnded(){Gn.debug('track "ended" event'),this.safeEmit("trackended"),this._observer.safeEmit("trackended")}handleTrack(){this._track.addEventListener("ended",this.onTrackEnded)}destroyTrack(){try{this._track.removeEventListener("ended",this.onTrackEnded),this._track.stop()}catch(e){}}}Vn.Consumer=qn;var Hn={};Object.defineProperty(Hn,"__esModule",{value:!0}),Hn.DataProducer=void 0;const Wn=Lr,Kn=zr,Jn=new Ir.Logger("DataProducer");class Qn extends Wn.EnhancedEventEmitter{constructor({id:e,dataChannel:t,sctpStreamParameters:r,appData:n}){super(),this._closed=!1,this._observer=new Wn.EnhancedEventEmitter,Jn.debug("constructor()"),this._id=e,this._dataChannel=t,this._sctpStreamParameters=r,this._appData=n||{},this.handleDataChannel()}get id(){return this._id}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get bufferedAmount(){return this._dataChannel.bufferedAmount}get bufferedAmountLowThreshold(){return this._dataChannel.bufferedAmountLowThreshold}set bufferedAmountLowThreshold(e){this._dataChannel.bufferedAmountLowThreshold=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Jn.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Jn.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}send(e){if(Jn.debug("send()"),this._closed)throw new Kn.InvalidStateError("closed");this._dataChannel.send(e)}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Jn.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?Jn.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Jn.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Jn.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(()=>{this._closed||Jn.warn('DataChannel "message" event in a DataProducer, message discarded')})),this._dataChannel.addEventListener("bufferedamountlow",(()=>{this._closed||this.safeEmit("bufferedamountlow")}))}}Hn.DataProducer=Qn;var Yn={};Object.defineProperty(Yn,"__esModule",{value:!0}),Yn.DataConsumer=void 0;const Zn=Lr,Xn=new Ir.Logger("DataConsumer");class ei extends Zn.EnhancedEventEmitter{constructor({id:e,dataProducerId:t,dataChannel:r,sctpStreamParameters:n,appData:i}){super(),this._closed=!1,this._observer=new Zn.EnhancedEventEmitter,Xn.debug("constructor()"),this._id=e,this._dataProducerId=t,this._dataChannel=r,this._sctpStreamParameters=n,this._appData=i||{},this.handleDataChannel()}get id(){return this._id}get dataProducerId(){return this._dataProducerId}get closed(){return this._closed}get sctpStreamParameters(){return this._sctpStreamParameters}get readyState(){return this._dataChannel.readyState}get label(){return this._dataChannel.label}get protocol(){return this._dataChannel.protocol}get binaryType(){return this._dataChannel.binaryType}set binaryType(e){this._dataChannel.binaryType=e}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){this._closed||(Xn.debug("close()"),this._closed=!0,this._dataChannel.close(),this.emit("@close"),this._observer.safeEmit("close"))}transportClosed(){this._closed||(Xn.debug("transportClosed()"),this._closed=!0,this._dataChannel.close(),this.safeEmit("transportclose"),this._observer.safeEmit("close"))}handleDataChannel(){this._dataChannel.addEventListener("open",(()=>{this._closed||(Xn.debug('DataChannel "open" event'),this.safeEmit("open"))})),this._dataChannel.addEventListener("error",(e=>{if(this._closed)return;let{error:t}=e;t||(t=new Error("unknown DataChannel error")),"sctp-failure"===t.errorDetail?Xn.error("DataChannel SCTP error [sctpCauseCode:%s]: %s",t.sctpCauseCode,t.message):Xn.error('DataChannel "error" event: %o',t),this.safeEmit("error",t)})),this._dataChannel.addEventListener("close",(()=>{this._closed||(Xn.warn('DataChannel "close" event'),this._closed=!0,this.emit("@close"),this.safeEmit("close"),this._observer.safeEmit("close"))})),this._dataChannel.addEventListener("message",(e=>{this._closed||this.safeEmit("message",e.data)}))}}Yn.DataConsumer=ei;var ti=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),ri=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ni=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ti(t,e,r);return ri(t,e),t},ii=a&&a.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Tn,"__esModule",{value:!0}),Tn.Transport=void 0;const si=kn,oi=ii(Ln),ai=Ir,ci=Lr,di=zr,li=ni($r),ui=ni(Gr),pi=An,hi=Vn,fi=Hn,mi=Yn,gi=new ai.Logger("Transport");class vi{constructor(e){this.consumerOptions=e,this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}let bi=class extends ci.EnhancedEventEmitter{constructor({direction:e,id:t,iceParameters:r,iceCandidates:n,dtlsParameters:i,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:u,extendedRtpCapabilities:p,canProduceByKind:h}){super(),this._closed=!1,this._iceGatheringState="new",this._connectionState="new",this._producers=new Map,this._consumers=new Map,this._dataProducers=new Map,this._dataConsumers=new Map,this._probatorConsumerCreated=!1,this._awaitQueue=new si.AwaitQueue,this._pendingConsumerTasks=[],this._consumerCreationInProgress=!1,this._pendingPauseConsumers=new Map,this._consumerPauseInProgress=!1,this._pendingResumeConsumers=new Map,this._consumerResumeInProgress=!1,this._pendingCloseConsumers=new Map,this._consumerCloseInProgress=!1,this._observer=new ci.EnhancedEventEmitter,gi.debug("constructor() [id:%s, direction:%s]",t,e),this._id=t,this._direction=e,this._extendedRtpCapabilities=p,this._canProduceByKind=h,this._maxSctpMessageSize=s?s.maxMessageSize:null,delete(c=li.clone(c)||{}).iceServers,delete c.iceTransportPolicy,delete c.bundlePolicy,delete c.rtcpMuxPolicy,delete c.sdpSemantics,this._handler=u(),this._handler.run({direction:e,iceParameters:r,iceCandidates:n,dtlsParameters:i,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,extendedRtpCapabilities:p}),this._appData=l||{},this.handleHandler()}get id(){return this._id}get closed(){return this._closed}get direction(){return this._direction}get handler(){return this._handler}get iceGatheringState(){return this._iceGatheringState}get connectionState(){return this._connectionState}get appData(){return this._appData}set appData(e){this._appData=e}get observer(){return this._observer}close(){if(!this._closed){gi.debug("close()"),this._closed=!0,this._awaitQueue.stop(),this._handler.close(),this._connectionState="closed";for(const e of this._producers.values())e.transportClosed();this._producers.clear();for(const e of this._consumers.values())e.transportClosed();this._consumers.clear();for(const e of this._dataProducers.values())e.transportClosed();this._dataProducers.clear();for(const e of this._dataConsumers.values())e.transportClosed();this._dataConsumers.clear(),this._observer.safeEmit("close")}}async getStats(){if(this._closed)throw new di.InvalidStateError("closed");return this._handler.getTransportStats()}async restartIce({iceParameters:e}){if(gi.debug("restartIce()"),this._closed)throw new di.InvalidStateError("closed");if(!e)throw new TypeError("missing iceParameters");return this._awaitQueue.push((async()=>await this._handler.restartIce(e)),"transport.restartIce()")}async updateIceServers({iceServers:e}={}){if(gi.debug("updateIceServers()"),this._closed)throw new di.InvalidStateError("closed");if(!Array.isArray(e))throw new TypeError("missing iceServers");return this._awaitQueue.push((async()=>this._handler.updateIceServers(e)),"transport.updateIceServers()")}async produce({track:e,encodings:t,codecOptions:r,codec:n,stopTracks:i=!0,disableTrackOnPause:s=!0,zeroRtpOnPause:o=!1,appData:a={}}={}){if(gi.debug("produce() [track:%o]",e),this._closed)throw new di.InvalidStateError("closed");if(!e)throw new TypeError("missing track");if("send"!==this._direction)throw new di.UnsupportedError("not a sending Transport");if(!this._canProduceByKind[e.kind])throw new di.UnsupportedError(`cannot produce ${e.kind}`);if("ended"===e.readyState)throw new di.InvalidStateError("track ended");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("produce"))throw new TypeError('no "produce" listener set into this transport');if(a&&"object"!=typeof a)throw new TypeError("if given, appData must be an object");return this._awaitQueue.push((async()=>{let c;if(t&&!Array.isArray(t))throw TypeError("encodings must be an array");t&&0===t.length?c=void 0:t&&(c=t.map((e=>{const t={active:!0};return!1===e.active&&(t.active=!1),"boolean"==typeof e.dtx&&(t.dtx=e.dtx),"string"==typeof e.scalabilityMode&&(t.scalabilityMode=e.scalabilityMode),"number"==typeof e.scaleResolutionDownBy&&(t.scaleResolutionDownBy=e.scaleResolutionDownBy),"number"==typeof e.maxBitrate&&(t.maxBitrate=e.maxBitrate),"number"==typeof e.maxFramerate&&(t.maxFramerate=e.maxFramerate),"boolean"==typeof e.adaptivePtime&&(t.adaptivePtime=e.adaptivePtime),"string"==typeof e.priority&&(t.priority=e.priority),"string"==typeof e.networkPriority&&(t.networkPriority=e.networkPriority),t})));const{localId:d,rtpParameters:l,rtpSender:u}=await this._handler.send({track:e,encodings:c,codecOptions:r,codec:n});try{ui.validateRtpParameters(l);const{id:t}=await new Promise(((t,r)=>{this.safeEmit("produce",{kind:e.kind,rtpParameters:l,appData:a},t,r)})),r=new pi.Producer({id:t,localId:d,rtpSender:u,track:e,rtpParameters:l,stopTracks:i,disableTrackOnPause:s,zeroRtpOnPause:o,appData:a});return this._producers.set(r.id,r),this.handleProducer(r),this._observer.safeEmit("newproducer",r),r}catch(e){throw this._handler.stopSending(d).catch((()=>{})),e}}),"transport.produce()").catch((t=>{if(i)try{e.stop()}catch(e){}throw t}))}async consume({id:e,producerId:t,kind:r,rtpParameters:n,streamId:i,appData:s={}}){if(gi.debug("consume()"),n=li.clone(n),this._closed)throw new di.InvalidStateError("closed");if("recv"!==this._direction)throw new di.UnsupportedError("not a receiving Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing producerId");if("audio"!==r&&"video"!==r)throw new TypeError(`invalid kind '${r}'`);if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");if(!ui.canReceive(n,this._extendedRtpCapabilities))throw new di.UnsupportedError("cannot consume this Producer");const o=new vi({id:e,producerId:t,kind:r,rtpParameters:n,streamId:i,appData:s});return this._pendingConsumerTasks.push(o),(0,oi.default)((()=>{this._closed||!1===this._consumerCreationInProgress&&this.createPendingConsumers()})),o.promise}async produceData({ordered:e=!0,maxPacketLifeTime:t,maxRetransmits:r,label:n="",protocol:i="",appData:s={}}={}){if(gi.debug("produceData()"),this._closed)throw new di.InvalidStateError("closed");if("send"!==this._direction)throw new di.UnsupportedError("not a sending Transport");if(!this._maxSctpMessageSize)throw new di.UnsupportedError("SCTP not enabled by remote Transport");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(0===this.listenerCount("producedata"))throw new TypeError('no "producedata" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return(t||r)&&(e=!1),this._awaitQueue.push((async()=>{const{dataChannel:o,sctpStreamParameters:a}=await this._handler.sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i});ui.validateSctpStreamParameters(a);const{id:c}=await new Promise(((e,t)=>{this.safeEmit("producedata",{sctpStreamParameters:a,label:n,protocol:i,appData:s},e,t)})),d=new fi.DataProducer({id:c,dataChannel:o,sctpStreamParameters:a,appData:s});return this._dataProducers.set(d.id,d),this.handleDataProducer(d),this._observer.safeEmit("newdataproducer",d),d}),"transport.produceData()")}async consumeData({id:e,dataProducerId:t,sctpStreamParameters:r,label:n="",protocol:i="",appData:s={}}){if(gi.debug("consumeData()"),r=li.clone(r),this._closed)throw new di.InvalidStateError("closed");if("recv"!==this._direction)throw new di.UnsupportedError("not a receiving Transport");if(!this._maxSctpMessageSize)throw new di.UnsupportedError("SCTP not enabled by remote Transport");if("string"!=typeof e)throw new TypeError("missing id");if("string"!=typeof t)throw new TypeError("missing dataProducerId");if(0===this.listenerCount("connect")&&"new"===this._connectionState)throw new TypeError('no "connect" listener set into this transport');if(s&&"object"!=typeof s)throw new TypeError("if given, appData must be an object");return ui.validateSctpStreamParameters(r),this._awaitQueue.push((async()=>{const{dataChannel:o}=await this._handler.receiveDataChannel({sctpStreamParameters:r,label:n,protocol:i}),a=new mi.DataConsumer({id:e,dataProducerId:t,dataChannel:o,sctpStreamParameters:r,appData:s});return this._dataConsumers.set(a.id,a),this.handleDataConsumer(a),this._observer.safeEmit("newdataconsumer",a),a}),"transport.consumeData()")}async createPendingConsumers(){this._consumerCreationInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingConsumerTasks.length)return void gi.debug("createPendingConsumers() | there is no Consumer to be created");const e=[...this._pendingConsumerTasks];let t;this._pendingConsumerTasks=[];const r=[];for(const t of e){const{id:e,kind:n,rtpParameters:i,streamId:s}=t.consumerOptions;r.push({trackId:e,kind:n,rtpParameters:i,streamId:s})}try{const n=await this._handler.receive(r);for(let r=0;r<n.length;++r){const i=e[r],s=n[r],{id:o,producerId:a,kind:c,rtpParameters:d,appData:l}=i.consumerOptions,{localId:u,rtpReceiver:p,track:h}=s,f=new hi.Consumer({id:o,localId:u,producerId:a,rtpReceiver:p,track:h,rtpParameters:d,appData:l});this._consumers.set(f.id,f),this.handleConsumer(f),this._probatorConsumerCreated||t||"video"!==c||(t=f),this._observer.safeEmit("newconsumer",f),i.resolve(f)}}catch(t){for(const r of e)r.reject(t)}if(t)try{const e=ui.generateProbatorRtpParameters(t.rtpParameters);await this._handler.receive([{trackId:"probator",kind:"video",rtpParameters:e}]),gi.debug("createPendingConsumers() | Consumer for RTP probation created"),this._probatorConsumerCreated=!0}catch(e){gi.error("createPendingConsumers() | failed to create Consumer for RTP probation:%o",e)}}),"transport.createPendingConsumers()").then((()=>{this._consumerCreationInProgress=!1,this._pendingConsumerTasks.length>0&&this.createPendingConsumers()})).catch((()=>{}))}pausePendingConsumers(){this._consumerPauseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingPauseConsumers.size)return void gi.debug("pausePendingConsumers() | there is no Consumer to be paused");const e=Array.from(this._pendingPauseConsumers.values());this._pendingPauseConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.pauseReceiving(t)}catch(e){gi.error("pausePendingConsumers() | failed to pause Consumers:",e)}}),"transport.pausePendingConsumers").then((()=>{this._consumerPauseInProgress=!1,this._pendingPauseConsumers.size>0&&this.pausePendingConsumers()})).catch((()=>{}))}resumePendingConsumers(){this._consumerResumeInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingResumeConsumers.size)return void gi.debug("resumePendingConsumers() | there is no Consumer to be resumed");const e=Array.from(this._pendingResumeConsumers.values());this._pendingResumeConsumers.clear();try{const t=e.map((e=>e.localId));await this._handler.resumeReceiving(t)}catch(e){gi.error("resumePendingConsumers() | failed to resume Consumers:",e)}}),"transport.resumePendingConsumers").then((()=>{this._consumerResumeInProgress=!1,this._pendingResumeConsumers.size>0&&this.resumePendingConsumers()})).catch((()=>{}))}closePendingConsumers(){this._consumerCloseInProgress=!0,this._awaitQueue.push((async()=>{if(0===this._pendingCloseConsumers.size)return void gi.debug("closePendingConsumers() | there is no Consumer to be closed");const e=Array.from(this._pendingCloseConsumers.values());this._pendingCloseConsumers.clear();try{await this._handler.stopReceiving(e.map((e=>e.localId)))}catch(e){gi.error("closePendingConsumers() | failed to close Consumers:",e)}}),"transport.closePendingConsumers").then((()=>{this._consumerCloseInProgress=!1,this._pendingCloseConsumers.size>0&&this.closePendingConsumers()})).catch((()=>{}))}handleHandler(){const e=this._handler;e.on("@connect",(({iceParameters:e,dtlsParameters:t},r,n)=>{this._closed?n(new di.InvalidStateError("closed")):this.safeEmit("connect",{iceParameters:e,dtlsParameters:t},r,n)})),e.on("@icegatheringstatechange",(e=>{e!==this._iceGatheringState&&(gi.debug("ICE gathering state changed to %s",e),this._iceGatheringState=e,this._closed||this.safeEmit("icegatheringstatechange",e))})),e.on("@connectionstatechange",(e=>{e!==this._connectionState&&(gi.debug("connection state changed to %s",e),this._connectionState=e,this._closed||this.safeEmit("connectionstatechange",e))}))}handleProducer(e){e.on("@close",(()=>{this._producers.delete(e.id),this._closed||this._awaitQueue.push((async()=>await this._handler.stopSending(e.localId)),"producer @close event").catch((e=>gi.warn("producer.close() failed:%o",e)))})),e.on("@pause",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.pauseSending(e.localId)),"producer @pause event").then(t).catch(r)})),e.on("@resume",((t,r)=>{this._awaitQueue.push((async()=>await this._handler.resumeSending(e.localId)),"producer @resume event").then(t).catch(r)})),e.on("@replacetrack",((t,r,n)=>{this._awaitQueue.push((async()=>await this._handler.replaceTrack(e.localId,t)),"producer @replacetrack event").then(r).catch(n)})),e.on("@setmaxspatiallayer",((t,r,n)=>{this._awaitQueue.push((async()=>await this._handler.setMaxSpatialLayer(e.localId,t)),"producer @setmaxspatiallayer event").then(r).catch(n)})),e.on("@setrtpencodingparameters",((t,r,n)=>{this._awaitQueue.push((async()=>await this._handler.setRtpEncodingParameters(e.localId,t)),"producer @setrtpencodingparameters event").then(r).catch(n)})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new di.InvalidStateError("closed"));this._handler.getSenderStats(e.localId).then(t).catch(r)}))}handleConsumer(e){e.on("@close",(()=>{this._consumers.delete(e.id),this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.delete(e.id),this._closed||(this._pendingCloseConsumers.set(e.id,e),!1===this._consumerCloseInProgress&&this.closePendingConsumers())})),e.on("@pause",(()=>{this._pendingResumeConsumers.has(e.id)&&this._pendingResumeConsumers.delete(e.id),this._pendingPauseConsumers.set(e.id,e),(0,oi.default)((()=>{this._closed||!1===this._consumerPauseInProgress&&this.pausePendingConsumers()}))})),e.on("@resume",(()=>{this._pendingPauseConsumers.has(e.id)&&this._pendingPauseConsumers.delete(e.id),this._pendingResumeConsumers.set(e.id,e),(0,oi.default)((()=>{this._closed||!1===this._consumerResumeInProgress&&this.resumePendingConsumers()}))})),e.on("@getstats",((t,r)=>{if(this._closed)return r(new di.InvalidStateError("closed"));this._handler.getReceiverStats(e.localId).then(t).catch(r)}))}handleDataProducer(e){e.on("@close",(()=>{this._dataProducers.delete(e.id)}))}handleDataConsumer(e){e.on("@close",(()=>{this._dataConsumers.delete(e.id)}))}};Tn.Transport=bi;var yi={},_i={},wi={},Si={exports:{}},Ci=Si.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Ci).forEach((function(e){Ci[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var Ri=Si.exports;!function(e){var t=function(e){return String(Number(e))===e?Number(e):e},r=function(e,r,n){var i=e.name&&e.names;e.push&&!r[e.push]?r[e.push]=[]:i&&!r[e.name]&&(r[e.name]={});var s=e.push?{}:i?r[e.name]:r;!function(e,r,n,i){if(i&&!n)r[i]=t(e[1]);else for(var s=0;s<n.length;s+=1)null!=e[s+1]&&(r[n[s]]=t(e[s+1]))}(n.match(e.reg),s,e.names,e.name),e.push&&r[e.push].push(s)},n=Ri,i=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],o=t;return e.split(/(\r\n|\r|\n)/).filter(i).forEach((function(e){var t=e[0],i=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),o=s[s.length-1]);for(var a=0;a<(n[t]||[]).length;a+=1){var c=n[t][a];if(c.reg.test(i))return r(c,o,i)}})),t.media=s,t};var s=function(e,r){var n=r.split(/=(.+)/,2);return 2===n.length?e[n[0]]=t(n[1]):1===n.length&&r.length>1&&(e[n[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(s,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var r=[],n=e.split(" ").map(t),i=0;i<n.length;i+=3)r.push({component:n[i],ip:n[i+1],port:n[i+2]});return r},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var r,n=!1;return"~"!==e[0]?r=t(e):(r=t(e.substring(1,e.length)),n=!0),{scid:r,paused:n}}))}))}}(wi);var Pi=Ri,Ti=/%[sdv%]/g,ki=function(e){var t=1,r=arguments,n=r.length;return e.replace(Ti,(function(e){if(t>=n)return e;var i=r[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(i);case"%d":return Number(i);case"%v":return""}}))},Ei=function(e,t,r){var n=[e+"="+(t.format instanceof Function?t.format(t.push?r:r[t.name]):t.format)];if(t.names)for(var i=0;i<t.names.length;i+=1){var s=t.names[i];t.name?n.push(r[t.name][s]):n.push(r[t.names[i]])}else n.push(r[t.name]);return ki.apply(null,n)},Oi=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Di=["i","c","b","a"],Ii=wi,xi=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var r=t.outerOrder||Oi,n=t.innerOrder||Di,i=[];return r.forEach((function(t){Pi[t].forEach((function(r){r.name in e&&null!=e[r.name]?i.push(Ei(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){i.push(Ei(t,r,e))}))}))})),e.media.forEach((function(e){i.push(Ei("m",Pi.m[0],e)),n.forEach((function(t){Pi[t].forEach((function(r){r.name in e&&null!=e[r.name]?i.push(Ei(t,r,e)):r.push in e&&null!=e[r.push]&&e[r.push].forEach((function(e){i.push(Ei(t,r,e))}))}))}))})),i.join("\r\n")+"\r\n"},Mi=_i.write=xi,ji=_i.parse=Ii.parse;_i.parseParams=Ii.parseParams,_i.parseFmtpConfig=Ii.parseFmtpConfig,_i.parsePayloads=Ii.parsePayloads,_i.parseRemoteCandidates=Ii.parseRemoteCandidates,_i.parseImageAttributes=Ii.parseImageAttributes,_i.parseSimulcastStreamList=Ii.parseSimulcastStreamList;var Li={},Ai=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Ni=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Bi=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ai(t,e,r);return Ni(t,e),t};Object.defineProperty(Li,"__esModule",{value:!0}),Li.applyCodecParameters=Li.getCname=Li.extractDtlsParameters=Li.extractIceParameters=Li.extractRtpCapabilities=void 0;const Fi=Bi(_i);Li.extractRtpCapabilities=function({sdpObject:e}){const t=new Map,r=[];let n=!1,i=!1;for(const s of e.media){const e=s.type;switch(e){case"audio":if(n)continue;n=!0;break;case"video":if(i)continue;i=!0;break;default:continue}for(const r of s.rtp){const n={kind:e,mimeType:`${e}/${r.codec}`,preferredPayloadType:r.payload,clockRate:r.rate,channels:r.encoding,parameters:{},rtcpFeedback:[]};t.set(n.preferredPayloadType,n)}for(const e of s.fmtp||[]){const r=Fi.parseParams(e.config),n=t.get(e.payload);n&&(r&&r.hasOwnProperty("profile-level-id")&&(r["profile-level-id"]=String(r["profile-level-id"])),n.parameters=r)}for(const r of s.rtcpFb||[]){const n={type:r.type,parameter:r.subtype};if(n.parameter||delete n.parameter,"*"!==r.payload){const e=t.get(r.payload);if(!e)continue;e.rtcpFeedback.push(n)}else for(const r of t.values())r.kind!==e||/.+\/rtx$/i.test(r.mimeType)||r.rtcpFeedback.push(n)}for(const t of s.ext||[]){if(t["encrypt-uri"])continue;const n={kind:e,uri:t.uri,preferredId:t.value};r.push(n)}}return{codecs:Array.from(t.values()),headerExtensions:r}},Li.extractIceParameters=function({sdpObject:e}){let t=e.iceUfrag,r=e.icePwd;if(!t||!r){const n=(e.media||[]).find((e=>0!==e.port));n&&(t??(t=n.iceUfrag),r??(r=n.icePwd))}if(!t)throw new Error("no a=iceUfrag found at SDP session or media level");if(!r)throw new Error("no a=icePwd found at SDP session or media level");return{usernameFragment:t,password:r}},Li.extractDtlsParameters=function({sdpObject:e}){let t,r=e.setup,n=e.fingerprint;if(!r||!n){const t=(e.media||[]).find((e=>0!==e.port));t&&(r??(r=t.setup),n??(n=t.fingerprint))}if(!r)throw new Error("no a=setup found at SDP session or media level");if(!n)throw new Error("no a=fingerprint found at SDP session or media level");switch(r){case"active":t="client";break;case"passive":t="server";break;case"actpass":t="auto"}return{role:t,fingerprints:[{algorithm:n.type,value:n.hash}]}},Li.getCname=function({offerMediaObject:e}){const t=(e.ssrcs||[]).find((e=>"cname"===e.attribute));return t?t.value:""},Li.applyCodecParameters=function({offerRtpParameters:e,answerMediaObject:t}){for(const r of e.codecs){const e=r.mimeType.toLowerCase();if("audio/opus"!==e)continue;if(!(t.rtp||[]).find((e=>e.payload===r.payloadType)))continue;t.fmtp=t.fmtp||[];let n=t.fmtp.find((e=>e.payload===r.payloadType));n||(n={payload:r.payloadType,config:""},t.fmtp.push(n));const i=Fi.parseParams(n.config);switch(e){case"audio/opus":{const e=r.parameters["sprop-stereo"];void 0!==e&&(i.stereo=e?1:0);break}}n.config="";for(const e of Object.keys(i))n.config&&(n.config+=";"),n.config+=`${e}=${i[e]}`}};var zi={};Object.defineProperty(zi,"__esModule",{value:!0}),zi.addLegacySimulcast=zi.getRtpEncodings=void 0,zi.getRtpEncodings=function({offerMediaObject:e}){const t=new Set;for(const r of e.ssrcs||[]){const e=r.id;t.add(e)}if(0===t.size)throw new Error("no a=ssrc lines found");const r=new Map;for(const n of e.ssrcGroups||[]){if("FID"!==n.semantics)continue;let[e,i]=n.ssrcs.split(/\s+/);e=Number(e),i=Number(i),t.has(e)&&(t.delete(e),t.delete(i),r.set(e,i))}for(const e of t)r.set(e,null);const n=[];for(const[e,t]of r){const r={ssrc:e};t&&(r.rtx={ssrc:t}),n.push(r)}return n},zi.addLegacySimulcast=function({offerMediaObject:e,numStreams:t}){if(t<=1)throw new TypeError("numStreams must be greater than 1");const r=(e.ssrcs||[]).find((e=>"msid"===e.attribute));if(!r)throw new Error("a=ssrc line with msid information not found");const[n,i]=r.value.split(" "),s=r.id;let o;(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===s&&(o=Number(t[1]),!0)}));const a=e.ssrcs.find((e=>"cname"===e.attribute));if(!a)throw new Error("a=ssrc line with cname information not found");const c=a.value,d=[],l=[];for(let e=0;e<t;++e)d.push(s+e),o&&l.push(o+e);e.ssrcGroups=[],e.ssrcs=[],e.ssrcGroups.push({semantics:"SIM",ssrcs:d.join(" ")});for(let t=0;t<d.length;++t){const r=d[t];e.ssrcs.push({id:r,attribute:"cname",value:c}),e.ssrcs.push({id:r,attribute:"msid",value:`${n} ${i}`})}for(let t=0;t<l.length;++t){const r=d[t],s=l[t];e.ssrcs.push({id:s,attribute:"cname",value:c}),e.ssrcs.push({id:s,attribute:"msid",value:`${n} ${i}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${r} ${s}`})}};var Vi={};Object.defineProperty(Vi,"__esModule",{value:!0}),Vi.addNackSuppportForOpus=void 0,Vi.addNackSuppportForOpus=function(e){for(const t of e.codecs||[])"audio/opus"!==t.mimeType.toLowerCase()&&"audio/multiopus"!==t.mimeType.toLowerCase()||t.rtcpFeedback?.some((e=>"nack"===e.type&&!e.parameter))||(t.rtcpFeedback||(t.rtcpFeedback=[]),t.rtcpFeedback.push({type:"nack"}))};var Ui={};Object.defineProperty(Ui,"__esModule",{value:!0}),Ui.HandlerInterface=void 0;const $i=Lr;class Gi extends $i.EnhancedEventEmitter{constructor(){super()}}Ui.HandlerInterface=Gi;var qi={},Hi={},Wi=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Ki=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ji=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Wi(t,e,r);return Ki(t,e),t};Object.defineProperty(Hi,"__esModule",{value:!0}),Hi.OfferMediaSection=Hi.AnswerMediaSection=Hi.MediaSection=void 0;const Qi=Ji(_i),Yi=Ji($r);class Zi{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:n=!1}){if(this._mediaObject={},this._planB=n,e&&this.setIceParameters(e),t){this._mediaObject.candidates=[];for(const e of t){const t={component:1};t.foundation=e.foundation,t.ip=e.address??e.ip,t.port=e.port,t.priority=e.priority,t.transport=e.protocol,t.type=e.type,e.tcpType&&(t.tcptype=e.tcpType),this._mediaObject.candidates.push(t)}this._mediaObject.endOfCandidates="end-of-candidates",this._mediaObject.iceOptions="renomination"}r&&this.setDtlsRole(r.role)}get mid(){return String(this._mediaObject.mid)}get closed(){return 0===this._mediaObject.port}getObject(){return this._mediaObject}setIceParameters(e){this._mediaObject.iceUfrag=e.usernameFragment,this._mediaObject.icePwd=e.password}pause(){this._mediaObject.direction="inactive"}disable(){this.pause(),delete this._mediaObject.ext,delete this._mediaObject.ssrcs,delete this._mediaObject.ssrcGroups,delete this._mediaObject.simulcast,delete this._mediaObject.simulcast_03,delete this._mediaObject.rids,delete this._mediaObject.extmapAllowMixed}close(){this.disable(),this._mediaObject.port=0}}Hi.MediaSection=Zi;Hi.AnswerMediaSection=class extends Zi{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:n,plainRtpParameters:i,planB:s=!1,offerMediaObject:o,offerRtpParameters:a,answerRtpParameters:c,codecOptions:d,extmapAllowMixed:l=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(o.mid),this._mediaObject.type=o.type,this._mediaObject.protocol=o.protocol,i?(this._mediaObject.connection={ip:i.ip,version:i.ipVersion},this._mediaObject.port=i.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.port=7),o.type){case"audio":case"video":this._mediaObject.direction="recvonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[];for(const e of c.codecs){const t={payload:e.payloadType,codec:Xi(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r=Yi.clone(e.parameters)??{};let n=Yi.clone(e.rtcpFeedback)??[];if(d){const{opusStereo:t,opusFec:i,opusDtx:s,opusMaxPlaybackRate:o,opusMaxAverageBitrate:c,opusPtime:l,opusNack:u,videoGoogleStartBitrate:p,videoGoogleMaxBitrate:h,videoGoogleMinBitrate:f}=d,m=a.codecs.find((t=>t.payloadType===e.payloadType));switch(e.mimeType.toLowerCase()){case"audio/opus":case"audio/multiopus":void 0!==t&&(m.parameters["sprop-stereo"]=t?1:0,r.stereo=t?1:0),void 0!==i&&(m.parameters.useinbandfec=i?1:0,r.useinbandfec=i?1:0),void 0!==s&&(m.parameters.usedtx=s?1:0,r.usedtx=s?1:0),void 0!==o&&(r.maxplaybackrate=o),void 0!==c&&(r.maxaveragebitrate=c),void 0!==l&&(m.parameters.ptime=l,r.ptime=l),u||(m.rtcpFeedback=m.rtcpFeedback.filter((e=>"nack"!==e.type||e.parameter)),n=n.filter((e=>"nack"!==e.type||e.parameter)));break;case"video/vp8":case"video/vp9":case"video/h264":case"video/h265":void 0!==p&&(r["x-google-start-bitrate"]=p),void 0!==h&&(r["x-google-max-bitrate"]=h),void 0!==f&&(r["x-google-min-bitrate"]=f)}}const i={payload:e.payloadType,config:""};for(const e of Object.keys(r))i.config&&(i.config+=";"),i.config+=`${e}=${r[e]}`;i.config&&this._mediaObject.fmtp.push(i);for(const t of n)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions){(o.ext||[]).some((t=>t.uri===e.uri))&&this._mediaObject.ext.push({uri:e.uri,value:e.id})}if(l&&"extmap-allow-mixed"===o.extmapAllowMixed&&(this._mediaObject.extmapAllowMixed="extmap-allow-mixed"),o.simulcast){this._mediaObject.simulcast={dir1:"recv",list1:o.simulcast.list1},this._mediaObject.rids=[];for(const e of o.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}else if(o.simulcast_03){this._mediaObject.simulcast_03={value:o.simulcast_03.value.replace(/send/g,"recv")},this._mediaObject.rids=[];for(const e of o.rids||[])"send"===e.direction&&this._mediaObject.rids.push({id:e.id,direction:"recv"})}this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize",this._planB&&"video"===this._mediaObject.type&&(this._mediaObject.xGoogleFlag="conference");break;case"application":"number"==typeof o.sctpPort?(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=n.port,this._mediaObject.maxMessageSize=n.maxMessageSize):o.sctpmap&&(this._mediaObject.payloads=n.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:n.port,maxMessageSize:n.maxMessageSize})}}setDtlsRole(e){switch(e){case"client":this._mediaObject.setup="active";break;case"server":this._mediaObject.setup="passive";break;case"auto":this._mediaObject.setup="actpass"}}resume(){this._mediaObject.direction="recvonly"}muxSimulcastStreams(e){if(!this._mediaObject.simulcast||!this._mediaObject.simulcast.list1)return;const t={};for(const r of e)r.rid&&(t[r.rid]=r);const r=this._mediaObject.simulcast.list1,n=Qi.parseSimulcastStreamList(r);for(const e of n)for(const r of e)r.paused=!t[r.scid]?.active;this._mediaObject.simulcast.list1=n.map((e=>e.map((e=>`${e.paused?"~":""}${e.scid}`)).join(","))).join(";")}};function Xi(e){const t=new RegExp("^(audio|video)/(.+)","i").exec(e.mimeType);if(!t)throw new TypeError("invalid codec.mimeType");return t[2]}Hi.OfferMediaSection=class extends Zi{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:n,plainRtpParameters:i,planB:s=!1,mid:o,kind:a,offerRtpParameters:c,streamId:d,trackId:l,oldDataChannelSpec:u=!1}){switch(super({iceParameters:e,iceCandidates:t,dtlsParameters:r,planB:s}),this._mediaObject.mid=String(o),this._mediaObject.type=a,i?(this._mediaObject.connection={ip:i.ip,version:i.ipVersion},this._mediaObject.protocol="RTP/AVP",this._mediaObject.port=i.port):(this._mediaObject.connection={ip:"127.0.0.1",version:4},this._mediaObject.protocol=n?"UDP/DTLS/SCTP":"UDP/TLS/RTP/SAVPF",this._mediaObject.port=7),a){case"audio":case"video":{this._mediaObject.direction="sendonly",this._mediaObject.rtp=[],this._mediaObject.rtcpFb=[],this._mediaObject.fmtp=[],this._planB||(this._mediaObject.msid=`${d||"-"} ${l}`);for(const e of c.codecs){const t={payload:e.payloadType,codec:Xi(e),rate:e.clockRate};e.channels>1&&(t.encoding=e.channels),this._mediaObject.rtp.push(t);const r={payload:e.payloadType,config:""};for(const t of Object.keys(e.parameters))r.config&&(r.config+=";"),r.config+=`${t}=${e.parameters[t]}`;r.config&&this._mediaObject.fmtp.push(r);for(const t of e.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:e.payloadType,type:t.type,subtype:t.parameter})}this._mediaObject.payloads=c.codecs.map((e=>e.payloadType)).join(" "),this._mediaObject.ext=[];for(const e of c.headerExtensions)this._mediaObject.ext.push({uri:e.uri,value:e.id});this._mediaObject.rtcpMux="rtcp-mux",this._mediaObject.rtcpRsize="rtcp-rsize";const e=c.encodings[0],t=e.ssrc,r=e.rtx&&e.rtx.ssrc?e.rtx.ssrc:void 0;this._mediaObject.ssrcs=[],this._mediaObject.ssrcGroups=[],c.rtcp.cname&&this._mediaObject.ssrcs.push({id:t,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:t,attribute:"msid",value:`${d||"-"} ${l}`}),r&&(c.rtcp.cname&&this._mediaObject.ssrcs.push({id:r,attribute:"cname",value:c.rtcp.cname}),this._planB&&this._mediaObject.ssrcs.push({id:r,attribute:"msid",value:`${d||"-"} ${l}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${t} ${r}`}));break}case"application":u?(this._mediaObject.payloads=n.port,this._mediaObject.sctpmap={app:"webrtc-datachannel",sctpmapNumber:n.port,maxMessageSize:n.maxMessageSize}):(this._mediaObject.payloads="webrtc-datachannel",this._mediaObject.sctpPort=n.port,this._mediaObject.maxMessageSize=n.maxMessageSize)}}setDtlsRole(e){this._mediaObject.setup="actpass"}resume(){this._mediaObject.direction="sendonly"}planBReceive({offerRtpParameters:e,streamId:t,trackId:r}){const n=e.encodings[0],i=n.ssrc,s=n.rtx&&n.rtx.ssrc?n.rtx.ssrc:void 0,o=this._mediaObject.payloads.split(" ");for(const t of e.codecs){if(o.includes(String(t.payloadType)))continue;const e={payload:t.payloadType,codec:Xi(t),rate:t.clockRate};t.channels>1&&(e.encoding=t.channels),this._mediaObject.rtp.push(e);const r={payload:t.payloadType,config:""};for(const e of Object.keys(t.parameters))r.config&&(r.config+=";"),r.config+=`${e}=${t.parameters[e]}`;r.config&&this._mediaObject.fmtp.push(r);for(const e of t.rtcpFeedback)this._mediaObject.rtcpFb.push({payload:t.payloadType,type:e.type,subtype:e.parameter})}this._mediaObject.payloads+=` ${e.codecs.filter((e=>!this._mediaObject.payloads.includes(e.payloadType))).map((e=>e.payloadType)).join(" ")}`,this._mediaObject.payloads=this._mediaObject.payloads.trim(),e.rtcp.cname&&this._mediaObject.ssrcs.push({id:i,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:i,attribute:"msid",value:`${t||"-"} ${r}`}),s&&(e.rtcp.cname&&this._mediaObject.ssrcs.push({id:s,attribute:"cname",value:e.rtcp.cname}),this._mediaObject.ssrcs.push({id:s,attribute:"msid",value:`${t||"-"} ${r}`}),this._mediaObject.ssrcGroups.push({semantics:"FID",ssrcs:`${i} ${s}`}))}planBStopReceiving({offerRtpParameters:e}){const t=e.encodings[0],r=t.ssrc,n=t.rtx&&t.rtx.ssrc?t.rtx.ssrc:void 0;this._mediaObject.ssrcs=this._mediaObject.ssrcs.filter((e=>e.id!==r&&e.id!==n)),n&&(this._mediaObject.ssrcGroups=this._mediaObject.ssrcGroups.filter((e=>e.ssrcs!==`${r} ${n}`)))}};var es=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),ts=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),rs=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&es(t,e,r);return ts(t,e),t};Object.defineProperty(qi,"__esModule",{value:!0}),qi.RemoteSdp=void 0;const ns=rs(_i),is=Hi,ss=new Ir.Logger("RemoteSdp");qi.RemoteSdp=class{constructor({iceParameters:e,iceCandidates:t,dtlsParameters:r,sctpParameters:n,plainRtpParameters:i,planB:s=!1}){if(this._mediaSections=[],this._midToIndex=new Map,this._iceParameters=e,this._iceCandidates=t,this._dtlsParameters=r,this._sctpParameters=n,this._plainRtpParameters=i,this._planB=s,this._sdpObject={version:0,origin:{address:"0.0.0.0",ipVer:4,netType:"IN",sessionId:1e4,sessionVersion:0,username:"mediasoup-client"},name:"-",timing:{start:0,stop:0},media:[]},e&&e.iceLite&&(this._sdpObject.icelite="ice-lite"),r){this._sdpObject.msidSemantic={semantic:"WMS",token:"*"};const e=this._dtlsParameters.fingerprints.length;this._sdpObject.fingerprint={type:r.fingerprints[e-1].algorithm,hash:r.fingerprints[e-1].value},this._sdpObject.groups=[{type:"BUNDLE",mids:""}]}i&&(this._sdpObject.origin.address=i.ip,this._sdpObject.origin.ipVer=i.ipVersion)}updateIceParameters(e){ss.debug("updateIceParameters() [iceParameters:%o]",e),this._iceParameters=e,this._sdpObject.icelite=e.iceLite?"ice-lite":void 0;for(const t of this._mediaSections)t.setIceParameters(e)}updateDtlsRole(e){ss.debug("updateDtlsRole() [role:%s]",e),this._dtlsParameters.role=e;for(const t of this._mediaSections)t.setDtlsRole(e)}getNextMediaSectionIdx(){for(let e=0;e<this._mediaSections.length;++e){const t=this._mediaSections[e];if(t.closed)return{idx:e,reuseMid:t.mid}}return{idx:this._mediaSections.length}}send({offerMediaObject:e,reuseMid:t,offerRtpParameters:r,answerRtpParameters:n,codecOptions:i,extmapAllowMixed:s=!1}){const o=new is.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,offerMediaObject:e,offerRtpParameters:r,answerRtpParameters:n,codecOptions:i,extmapAllowMixed:s});t?this._replaceMediaSection(o,t):this._midToIndex.has(o.mid)?this._replaceMediaSection(o):this._addMediaSection(o)}receive({mid:e,kind:t,offerRtpParameters:r,streamId:n,trackId:i}){const s=this._midToIndex.get(e);let o;if(void 0!==s&&(o=this._mediaSections[s]),o)o.planBReceive({offerRtpParameters:r,streamId:n,trackId:i}),this._replaceMediaSection(o);else{o=new is.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,plainRtpParameters:this._plainRtpParameters,planB:this._planB,mid:e,kind:t,offerRtpParameters:r,streamId:n,trackId:i});const s=this._mediaSections.find((e=>e.closed));s?this._replaceMediaSection(o,s.mid):this._addMediaSection(o)}}pauseMediaSection(e){this._findMediaSection(e).pause()}resumeSendingMediaSection(e){this._findMediaSection(e).resume()}resumeReceivingMediaSection(e){this._findMediaSection(e).resume()}disableMediaSection(e){this._findMediaSection(e).disable()}closeMediaSection(e){const t=this._findMediaSection(e);return e===this._firstMid?(ss.debug("closeMediaSection() | cannot close first media section, disabling it instead [mid:%s]",e),this.disableMediaSection(e),!1):(t.close(),this._regenerateBundleMids(),!0)}muxMediaSectionSimulcast(e,t){const r=this._findMediaSection(e);r.muxSimulcastStreams(t),this._replaceMediaSection(r)}planBStopReceiving({mid:e,offerRtpParameters:t}){const r=this._findMediaSection(e);r.planBStopReceiving({offerRtpParameters:t}),this._replaceMediaSection(r)}sendSctpAssociation({offerMediaObject:e}){const t=new is.AnswerMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,offerMediaObject:e});this._addMediaSection(t)}receiveSctpAssociation({oldDataChannelSpec:e=!1}={}){const t=new is.OfferMediaSection({iceParameters:this._iceParameters,iceCandidates:this._iceCandidates,dtlsParameters:this._dtlsParameters,sctpParameters:this._sctpParameters,plainRtpParameters:this._plainRtpParameters,mid:"datachannel",kind:"application",oldDataChannelSpec:e});this._addMediaSection(t)}getSdp(){return this._sdpObject.origin.sessionVersion++,ns.write(this._sdpObject)}_addMediaSection(e){this._firstMid||(this._firstMid=e.mid),this._mediaSections.push(e),this._midToIndex.set(e.mid,this._mediaSections.length-1),this._sdpObject.media.push(e.getObject()),this._regenerateBundleMids()}_replaceMediaSection(e,t){if("string"==typeof t){const r=this._midToIndex.get(t);if(void 0===r)throw new Error(`no media section found for reuseMid '${t}'`);const n=this._mediaSections[r];this._mediaSections[r]=e,this._midToIndex.delete(n.mid),this._midToIndex.set(e.mid,r),this._sdpObject.media[r]=e.getObject(),this._regenerateBundleMids()}else{const t=this._midToIndex.get(e.mid);if(void 0===t)throw new Error(`no media section found with mid '${e.mid}'`);this._mediaSections[t]=e,this._sdpObject.media[t]=e.getObject()}}_findMediaSection(e){const t=this._midToIndex.get(e);if(void 0===t)throw new Error(`no media section found with mid '${e}'`);return this._mediaSections[t]}_regenerateBundleMids(){this._dtlsParameters&&(this._sdpObject.groups[0].mids=this._mediaSections.filter((e=>!e.closed)).map((e=>e.mid)).join(" "))}};var os={};Object.defineProperty(os,"__esModule",{value:!0}),os.parse=void 0;const as=new RegExp("^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})");os.parse=function(e){const t=as.exec(e||"");return t?{spatialLayers:Number(t[1]),temporalLayers:Number(t[2])}:{spatialLayers:1,temporalLayers:1}};var cs=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),ds=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ls=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&cs(t,e,r);return ds(t,e),t};Object.defineProperty(yi,"__esModule",{value:!0});var us=yi.Chrome111=void 0;const ps=ls(_i),hs=Ir,fs=ls($r),ms=ls(Gr),gs=ls(Li),vs=ls(zi),bs=ls(Vi),ys=zr,_s=Ui,ws=qi,Ss=os,Cs=new hs.Logger("Chrome111"),Rs={OS:1024,MIS:1024};class Ps extends _s.HandlerInterface{static createFactory(){return()=>new Ps}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome111"}close(){if(Cs.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Cs.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=ps.parse(t.sdp),n=gs.extractRtpCapabilities({sdpObject:r});return bs.addNackSuppportForOpus(n),n}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Cs.debug("getNativeSctpCapabilities()"),{numStreams:Rs}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Cs.debug("run()"),this._direction=e,this._remoteSdp=new ws.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:ms.getSendingRtpParameters("audio",d),video:ms.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ms.getSendingRemoteRtpParameters("audio",d),video:ms.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(Cs.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),Cs.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Cs.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Cs.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Cs.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Cs.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){if(this.assertNotClosed(),this.assertSendDirection(),Cs.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1){t.forEach(((e,t)=>{e.rid=`r${t}`}));let e=1,r=1;for(const e of t){const t=e.scalabilityMode?(0,Ss.parse)(e.scalabilityMode).temporalLayers:3;t>r&&(r=t)}for(const n of t)n.rid="r"+e++,n.scalabilityMode=`L1T${r}`}const i=fs.clone(this._sendingRtpParametersByKind[e.kind]);i.codecs=ms.reduceCodecs(i.codecs,n);const s=fs.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=ms.reduceCodecs(s.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t}),c=await this._pc.createOffer();let d=ps.parse(c.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:d}),Cs.debug("send() | calling pc.setLocalDescription() [offer:%o]",c),await this._pc.setLocalDescription(c);const l=a.mid;i.mid=l,d=ps.parse(this._pc.localDescription.sdp);const u=d.media[o.idx];if(i.rtcp.cname=gs.getCname({offerMediaObject:u}),t)if(1===t.length){const e=vs.getRtpEncodings({offerMediaObject:u});Object.assign(e[0],t[0]),i.encodings=e}else i.encodings=t;else i.encodings=vs.getRtpEncodings({offerMediaObject:u});this._remoteSdp.send({offerMediaObject:u,reuseMid:o.reuseMid,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const p={type:"answer",sdp:this._remoteSdp.getSdp()};return Cs.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p),this._mapMidTransceiver.set(l,a),{localId:l,rtpParameters:i,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),Cs.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Cs.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Cs.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Cs.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Cs.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Cs.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Cs.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Cs.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Cs.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();Cs.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Cs.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();Cs.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};Cs.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Rs.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ps.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Cs.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Cs.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i,streamId:s}=t;Cs.debug("receive() [trackId:%s, kind:%s]",e,n);const o=i.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:n,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Cs.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=ps.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,i=r.get(e),o=s.media.find((e=>String(e.mid)===i));gs.applyCodecParameters({offerRtpParameters:n,answerMediaObject:o})}i={type:"answer",sdp:ps.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Cs.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Cs.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Cs.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Cs.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Cs.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Cs.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Cs.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Cs.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Cs.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Cs.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};Cs.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Cs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ps.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Cs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ps.parse(this._pc.localDescription.sdp));const r=gs.extractIceParameters({sdpObject:t}),n=gs.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new ys.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}us=yi.Chrome111=Ps;var Ts={},ks=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Es=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Os=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ks(t,e,r);return Es(t,e),t};Object.defineProperty(Ts,"__esModule",{value:!0}),Ts.Chrome74=void 0;const Ds=Os(_i),Is=Ir,xs=Os($r),Ms=Os(Gr),js=Os(Li),Ls=Os(zi),As=Os(Vi),Ns=zr,Bs=Ui,Fs=qi,zs=os,Vs=new Is.Logger("Chrome74"),Us={OS:1024,MIS:1024};class $s extends Bs.HandlerInterface{static createFactory(){return()=>new $s}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome74"}close(){if(Vs.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Vs.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Ds.parse(t.sdp),n=js.extractRtpCapabilities({sdpObject:r});return As.addNackSuppportForOpus(n),n}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Vs.debug("getNativeSctpCapabilities()"),{numStreams:Us}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Vs.debug("run()"),this._direction=e,this._remoteSdp=new Fs.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:Ms.getSendingRtpParameters("audio",d),video:Ms.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ms.getSendingRemoteRtpParameters("audio",d),video:Ms.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):(Vs.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})))}async updateIceServers(e){this.assertNotClosed(),Vs.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),Vs.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Vs.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Vs.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Vs.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Vs.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertNotClosed(),this.assertSendDirection(),Vs.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const i=xs.clone(this._sendingRtpParametersByKind[e.kind]);i.codecs=Ms.reduceCodecs(i.codecs,n);const s=xs.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Ms.reduceCodecs(s.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=Ds.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let u=!1;const p=(0,zs.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&p.spatialLayers>1&&"video/vp9"===i.codecs[0].mimeType.toLowerCase()&&(Vs.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=Ds.parse(d.sdp),c=l.media[o.idx],Ls.addLegacySimulcast({offerMediaObject:c,numStreams:p.spatialLayers}),d={type:"offer",sdp:Ds.write(l)}),Vs.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const h=a.mid;if(i.mid=h,l=Ds.parse(this._pc.localDescription.sdp),c=l.media[o.idx],i.rtcp.cname=js.getCname({offerMediaObject:c}),t)if(1===t.length){let e=Ls.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),u&&(e=[e[0]]),i.encodings=e}else i.encodings=t;else i.encodings=Ls.getRtpEncodings({offerMediaObject:c});if(i.encodings.length>1&&("video/vp8"===i.codecs[0].mimeType.toLowerCase()||"video/h264"===i.codecs[0].mimeType.toLowerCase()))for(const e of i.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${p.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const f={type:"answer",sdp:this._remoteSdp.getSdp()};return Vs.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f),this._mapMidTransceiver.set(h,a),{localId:h,rtpParameters:i,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),Vs.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();Vs.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Vs.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Vs.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Vs.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Vs.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Vs.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();Vs.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Vs.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Vs.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Vs.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Vs.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();Vs.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Vs.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Vs.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();Vs.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Vs.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};Vs.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Us.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ds.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Vs.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Vs.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i,streamId:s}=t;Vs.debug("receive() [trackId:%s, kind:%s]",e,n);const o=i.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:n,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Vs.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=Ds.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,i=r.get(e),o=s.media.find((e=>String(e.mid)===i));js.applyCodecParameters({offerRtpParameters:n,answerMediaObject:o})}i={type:"answer",sdp:Ds.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Vs.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Vs.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Vs.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Vs.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Vs.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Vs.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Vs.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Vs.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Vs.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Vs.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};Vs.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Vs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ds.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Vs.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ds.parse(this._pc.localDescription.sdp));const r=js.extractIceParameters({sdpObject:t}),n=js.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new Ns.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Ts.Chrome74=$s;var Gs={},qs=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Hs=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ws=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&qs(t,e,r);return Hs(t,e),t};Object.defineProperty(Gs,"__esModule",{value:!0}),Gs.Chrome70=void 0;const Ks=Ws(_i),Js=Ir,Qs=Ws($r),Ys=Ws(Gr),Zs=Ws(Li),Xs=Ws(zi),eo=Ui,to=qi,ro=os,no=new Js.Logger("Chrome70"),io={OS:1024,MIS:1024};class so extends eo.HandlerInterface{static createFactory(){return()=>new so}constructor(){super(),this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome70"}close(){if(no.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){no.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=Ks.parse(t.sdp);return Zs.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return no.debug("getNativeSctpCapabilities()"),{numStreams:io}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){no.debug("run()"),this._direction=e,this._remoteSdp=new to.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:Ys.getSendingRtpParameters("audio",d),video:Ys.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Ys.getSendingRemoteRtpParameters("audio",d),video:Ys.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(no.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){no.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(no.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});no.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();no.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertSendDirection(),no.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const i=Qs.clone(this._sendingRtpParametersByKind[e.kind]);i.codecs=Ys.reduceCodecs(i.codecs,n);const s=Qs.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Ys.reduceCodecs(s.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=Ks.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l}),t&&t.length>1&&(no.debug("send() | enabling legacy simulcast"),l=Ks.parse(d.sdp),c=l.media[o.idx],Xs.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:Ks.write(l)});let u=!1;const p=(0,ro.parse)((t||[{}])[0].scalabilityMode);if(t&&1===t.length&&p.spatialLayers>1&&"video/vp9"===i.codecs[0].mimeType.toLowerCase()&&(no.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=Ks.parse(d.sdp),c=l.media[o.idx],Xs.addLegacySimulcast({offerMediaObject:c,numStreams:p.spatialLayers}),d={type:"offer",sdp:Ks.write(l)}),no.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d),t){no.debug("send() | applying given encodings");const e=a.sender.getParameters();for(let r=0;r<(e.encodings||[]).length;++r){const n=e.encodings[r],i=t[r];if(!i)break;e.encodings[r]=Object.assign(n,i)}await a.sender.setParameters(e)}const h=a.mid;if(i.mid=h,l=Ks.parse(this._pc.localDescription.sdp),c=l.media[o.idx],i.rtcp.cname=Zs.getCname({offerMediaObject:c}),i.encodings=Xs.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<i.encodings.length;++e)t[e]&&Object.assign(i.encodings[e],t[e]);if(u&&(i.encodings=[i.encodings[0]]),i.encodings.length>1&&("video/vp8"===i.codecs[0].mimeType.toLowerCase()||"video/h264"===i.codecs[0].mimeType.toLowerCase()))for(const e of i.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r});const f={type:"answer",sdp:this._remoteSdp.getSdp()};return no.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f),this._mapMidTransceiver.set(h,a),{localId:h,rtpParameters:i,rtpSender:a.sender}}async stopSending(e){this.assertSendDirection(),no.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();no.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?no.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):no.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),no.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();no.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),no.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();no.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:i};no.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%io.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ks.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),no.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};no.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i,streamId:s}=t;no.debug("receive() [trackId:%s, kind:%s]",e,n);const o=i.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:n,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=Ks.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,i=r.get(e),o=s.media.find((e=>String(e.mid)===i));Zs.applyCodecParameters({offerRtpParameters:n,answerMediaObject:o})}i={type:"answer",sdp:Ks.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),no.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){no.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();no.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};no.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};no.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ks.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}no.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ks.parse(this._pc.localDescription.sdp));const r=Zs.extractIceParameters({sdpObject:t}),n=Zs.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Gs.Chrome70=so;var oo={},ao={};Object.defineProperty(ao,"__esModule",{value:!0}),ao.addLegacySimulcast=ao.getRtpEncodings=void 0,ao.getRtpEncodings=function({offerMediaObject:e,track:t}){const r=new Set;for(const n of e.ssrcs||[]){if("msid"!==n.attribute)continue;if(n.value.split(" ")[1]===t.id){const e=n.id;r.add(e)}}if(0===r.size)throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);const n=new Map;for(const t of e.ssrcGroups||[]){if("FID"!==t.semantics)continue;let[e,i]=t.ssrcs.split(/\s+/);e=Number(e),i=Number(i),r.has(e)&&(r.delete(e),r.delete(i),n.set(e,i))}for(const e of r)n.set(e,null);const i=[];for(const[e,t]of n){const r={ssrc:e};t&&(r.rtx={ssrc:t}),i.push(r)}return i},ao.addLegacySimulcast=function({offerMediaObject:e,track:t,numStreams:r}){if(r<=1)throw new TypeError("numStreams must be greater than 1");let n,i,s;if(!(e.ssrcs||[]).find((e=>{if("msid"!==e.attribute)return!1;return e.value.split(" ")[1]===t.id&&(n=e.id,s=e.value.split(" ")[0],!0)})))throw new Error(`a=ssrc line with msid information not found [track.id:${t.id}]`);(e.ssrcGroups||[]).some((e=>{if("FID"!==e.semantics)return!1;const t=e.ssrcs.split(/\s+/);return Number(t[0])===n&&(i=Number(t[1]),!0)}));const o=e.ssrcs.find((e=>"cname"===e.attribute&&e.id===n));if(!o)throw new Error(`a=ssrc line with cname information not found [track.id:${t.id}]`);const a=o.value,c=[],d=[];for(let e=0;e<r;++e)c.push(n+e),i&&d.push(i+e);e.ssrcGroups=e.ssrcGroups||[],e.ssrcs=e.ssrcs||[],e.ssrcGroups.push({semantics:"SIM",ssrcs:c.join(" ")});for(let r=0;r<c.length;++r){const n=c[r];e.ssrcs.push({id:n,attribute:"cname",value:a}),e.ssrcs.push({id:n,attribute:"msid",value:`${s} ${t.id}`})}for(let r=0;r<d.length;++r){const n=c[r],i=d[r];e.ssrcs.push({id:i,attribute:"cname",value:a}),e.ssrcs.push({id:i,attribute:"msid",value:`${s} ${t.id}`}),e.ssrcGroups.push({semantics:"FID",ssrcs:`${n} ${i}`})}};var co=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),lo=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),uo=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&co(t,e,r);return lo(t,e),t};Object.defineProperty(oo,"__esModule",{value:!0}),oo.Chrome67=void 0;const po=uo(_i),ho=Ir,fo=uo($r),mo=uo(Gr),go=uo(Li),vo=uo(ao),bo=Ui,yo=qi,_o=new ho.Logger("Chrome67"),wo={OS:1024,MIS:1024};class So extends bo.HandlerInterface{static createFactory(){return()=>new So}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome67"}close(){if(_o.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){_o.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=po.parse(t.sdp);return go.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return _o.debug("getNativeSctpCapabilities()"),{numStreams:wo}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){_o.debug("run()"),this._direction=e,this._remoteSdp=new yo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,planB:!0}),this._sendingRtpParametersByKind={audio:mo.getSendingRtpParameters("audio",d),video:mo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:mo.getSendingRemoteRtpParameters("audio",d),video:mo.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(_o.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){_o.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(_o.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});_o.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};_o.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};_o.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();_o.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertSendDirection(),_o.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),n&&_o.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let i,s=await this._pc.createOffer(),o=po.parse(s.sdp);const a=fo.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=mo.reduceCodecs(a.codecs);const c=fo.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=mo.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(_o.debug("send() | enabling simulcast"),o=po.parse(s.sdp),i=o.media.find((e=>"video"===e.type)),vo.addLegacySimulcast({offerMediaObject:i,track:e,numStreams:t.length}),s={type:"offer",sdp:po.write(o)}),_o.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=po.parse(this._pc.localDescription.sdp),i=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=go.getCname({offerMediaObject:i}),a.encodings=vo.getRtpEncodings({offerMediaObject:i,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&"video/vp8"===a.codecs[0].mimeType.toLowerCase())for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:i,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};_o.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const u=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,u),{localId:l,rtpParameters:a,rtpSender:u}}async stopSending(e){this.assertSendDirection(),_o.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");this._pc.removeTrack(t),t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();_o.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void _o.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const n={type:"answer",sdp:this._remoteSdp.getSdp()};_o.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?_o.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):_o.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.track;await r.replaceTrack(t),n&&this._sendStream.removeTrack(n),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),_o.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(n)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),_o.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.setParameters(n)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:i};_o.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%wo.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=po.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),_o.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};_o.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:n,streamId:i}=t;_o.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:i||n.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};_o.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let n=await this._pc.createAnswer();const i=po.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,n=e,s=i.media.find((e=>String(e.mid)===n));go.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}n={type:"answer",sdp:po.write(i)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:i}),_o.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const r of e){const{kind:e,trackId:n,rtpParameters:i}=r,s=n,o=e,a=this._pc.getReceivers().find((e=>e.track&&e.track.id===s));if(!a)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(s,{mid:o,rtpParameters:i,rtpReceiver:a}),t.push({localId:s,track:a.track,rtpReceiver:a})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){_o.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};_o.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();_o.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};_o.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};_o.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=po.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}_o.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=po.parse(this._pc.localDescription.sdp));const r=go.extractIceParameters({sdpObject:t}),n=go.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}oo.Chrome67=So;var Co={},Ro=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Po=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),To=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ro(t,e,r);return Po(t,e),t};Object.defineProperty(Co,"__esModule",{value:!0}),Co.Chrome55=void 0;const ko=To(_i),Eo=Ir,Oo=zr,Do=To($r),Io=To(Gr),xo=To(Li),Mo=To(ao),jo=Ui,Lo=qi,Ao=new Eo.Logger("Chrome55"),No={OS:1024,MIS:1024};class Bo extends jo.HandlerInterface{static createFactory(){return()=>new Bo}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Chrome55"}close(){if(Ao.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Ao.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=ko.parse(t.sdp);return xo.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Ao.debug("getNativeSctpCapabilities()"),{numStreams:No}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Ao.debug("run()"),this._direction=e,this._remoteSdp=new Lo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,planB:!0}),this._sendingRtpParametersByKind={audio:Io.getSendingRtpParameters("audio",d),video:Io.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Io.getSendingRemoteRtpParameters("audio",d),video:Io.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Ao.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Ao.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Ao.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Ao.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Ao.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ao.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Ao.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertSendDirection(),Ao.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),n&&Ao.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let i,s=await this._pc.createOffer(),o=ko.parse(s.sdp);const a=Do.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=Io.reduceCodecs(a.codecs);const c=Do.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Io.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Ao.debug("send() | enabling simulcast"),o=ko.parse(s.sdp),i=o.media.find((e=>"video"===e.type)),Mo.addLegacySimulcast({offerMediaObject:i,track:e,numStreams:t.length}),s={type:"offer",sdp:ko.write(o)}),Ao.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=ko.parse(this._pc.localDescription.sdp),i=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=xo.getCname({offerMediaObject:i}),a.encodings=Mo.getRtpEncodings({offerMediaObject:i,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&"video/vp8"===a.codecs[0].mimeType.toLowerCase())for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:i,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Ao.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:a}}async stopSending(e){this.assertSendDirection(),Ao.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();Ao.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Ao.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const n={type:"answer",sdp:this._remoteSdp.getSdp()};Ao.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new Oo.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Oo.UnsupportedError(" not implemented")}async setRtpEncodingParameters(e,t){throw new Oo.UnsupportedError("not supported")}async getSenderStats(e){throw new Oo.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:i};Ao.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%No.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=ko.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Ao.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Ao.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:n,streamId:i}=t;Ao.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:i||n.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};Ao.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let n=await this._pc.createAnswer();const i=ko.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,n=e,s=i.media.find((e=>String(e.mid)===n));xo.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}n={type:"answer",sdp:ko.write(i)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:i}),Ao.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const r of e){const{kind:e,trackId:n,rtpParameters:i}=r,s=e,o=n,a=r.streamId||i.rtcp.cname,c=this._pc.getRemoteStreams().find((e=>e.id===a)).getTrackById(o);if(!c)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(o,{mid:s,rtpParameters:i}),t.push({localId:o,track:c})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Ao.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Ao.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Ao.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Oo.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};Ao.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Ao.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=ko.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Ao.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=ko.parse(this._pc.localDescription.sdp));const r=xo.extractIceParameters({sdpObject:t}),n=xo.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Co.Chrome55=Bo;var Fo={},zo=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Vo=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Uo=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&zo(t,e,r);return Vo(t,e),t};Object.defineProperty(Fo,"__esModule",{value:!0}),Fo.Firefox60=void 0;const $o=Uo(_i),Go=Ir,qo=zr,Ho=Uo($r),Wo=Uo(Gr),Ko=Uo(Li),Jo=Uo(zi),Qo=Ui,Yo=qi,Zo=os,Xo=new Go.Logger("Firefox60"),ea={OS:16,MIS:2048};class ta extends Qo.HandlerInterface{static createFactory(){return()=>new ta}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Firefox60"}close(){if(Xo.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){Xo.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"}),t=document.createElement("canvas");t.getContext("2d");const r=t.captureStream().getVideoTracks()[0];try{e.addTransceiver("audio",{direction:"sendrecv"});const n=e.addTransceiver(r,{direction:"sendrecv"}),i=n.sender.getParameters(),s=[{rid:"r0",maxBitrate:1e5},{rid:"r1",maxBitrate:5e5}];i.encodings=s,await n.sender.setParameters(i);const o=await e.createOffer();try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}const a=$o.parse(o.sdp);return Ko.extractRtpCapabilities({sdpObject:a})}catch(n){try{t.remove()}catch(e){}try{r.stop()}catch(e){}try{e.close()}catch(e){}throw n}}async getNativeSctpCapabilities(){return Xo.debug("getNativeSctpCapabilities()"),{numStreams:ea}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),Xo.debug("run()"),this._direction=e,this._remoteSdp=new Yo.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:Wo.getSendingRtpParameters("audio",d),video:Wo.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Wo.getSendingRemoteRtpParameters("audio",d),video:Wo.getSendingRemoteRtpParameters("video",d)},this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Xo.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){throw this.assertNotClosed(),new qo.UnsupportedError("not supported")}async restartIce(e){if(this.assertNotClosed(),Xo.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Xo.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Xo.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Xo.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertNotClosed(),this.assertSendDirection(),Xo.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&(t=Ho.clone(t)).length>1&&(t.forEach(((e,t)=>{e.rid=`r${t}`})),t.reverse());const i=Ho.clone(this._sendingRtpParametersByKind[e.kind]);i.codecs=Wo.reduceCodecs(i.codecs,n);const s=Ho.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=Wo.reduceCodecs(s.codecs,n);const o=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});if(t){const e=o.sender.getParameters();e.encodings=t,await o.sender.setParameters(e)}const a=await this._pc.createOffer();let c=$o.parse(a.sdp);this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:c});const d=(0,Zo.parse)((t||[{}])[0].scalabilityMode);Xo.debug("send() | calling pc.setLocalDescription() [offer:%o]",a),await this._pc.setLocalDescription(a);const l=o.mid;i.mid=l,c=$o.parse(this._pc.localDescription.sdp);const u=c.media[c.media.length-1];if(i.rtcp.cname=Ko.getCname({offerMediaObject:u}),t)if(1===t.length){const e=Jo.getRtpEncodings({offerMediaObject:u});Object.assign(e[0],t[0]),i.encodings=e}else i.encodings=t.reverse();else i.encodings=Jo.getRtpEncodings({offerMediaObject:u});if(i.encodings.length>1&&("video/vp8"===i.codecs[0].mimeType.toLowerCase()||"video/h264"===i.codecs[0].mimeType.toLowerCase()))for(const e of i.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${d.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:u,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const p={type:"answer",sdp:this._remoteSdp.getSdp()};return Xo.debug("send() | calling pc.setRemoteDescription() [answer:%o]",p),await this._pc.setRemoteDescription(p),this._mapMidTransceiver.set(l,o),{localId:l,rtpParameters:i,rtpSender:o.sender}}async stopSending(e){if(this.assertSendDirection(),Xo.debug("stopSending() [localId:%s]",e),this._closed)return;const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated transceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender),this._remoteSdp.disableMediaSection(t.mid);const r=await this._pc.createOffer();Xo.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),Xo.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();Xo.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),Xo.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();Xo.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?Xo.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Xo.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),Xo.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated transceiver not found");const n=r.sender.getParameters();t=n.encodings.length-1-t,n.encodings.forEach(((e,r)=>{e.active=r>=t})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();Xo.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),Xo.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();Xo.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};Xo.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ea.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=$o.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:t}),Xo.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Xo.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i,streamId:s}=t;Xo.debug("receive() [trackId:%s, kind:%s]",e,n);const o=i.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:n,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Xo.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=$o.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,o=r.get(e),a=s.media.find((e=>String(e.mid)===o));Ko.applyCodecParameters({offerRtpParameters:n,answerMediaObject:a}),i={type:"answer",sdp:$o.write(s)}}this._transportReady||await this.setupTransport({localDtlsRole:"client",localSdpObject:s}),Xo.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){Xo.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Xo.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xo.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Xo.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Xo.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xo.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){Xo.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Xo.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Xo.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};Xo.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};Xo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=$o.parse(t.sdp);await this.setupTransport({localDtlsRole:"client",localSdpObject:e})}Xo.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=$o.parse(this._pc.localDescription.sdp));const r=Ko.extractIceParameters({sdpObject:t}),n=Ko.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new qo.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Fo.Firefox60=ta;var ra={},na=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),ia=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),sa=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&na(t,e,r);return ia(t,e),t};Object.defineProperty(ra,"__esModule",{value:!0}),ra.Safari12=void 0;const oa=sa(_i),aa=Ir,ca=sa($r),da=sa(Gr),la=sa(Li),ua=sa(zi),pa=sa(Vi),ha=zr,fa=Ui,ma=qi,ga=os,va=new aa.Logger("Safari12"),ba={OS:1024,MIS:1024};class ya extends fa.HandlerInterface{static createFactory(){return()=>new ya}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari12"}close(){if(va.debug("close()"),!this._closed){if(this._closed=!0,this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){va.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=oa.parse(t.sdp),n=la.extractRtpCapabilities({sdpObject:r});return pa.addNackSuppportForOpus(n),n}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return va.debug("getNativeSctpCapabilities()"),{numStreams:ba}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),va.debug("run()"),this._direction=e,this._remoteSdp=new ma.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:da.getSendingRtpParameters("audio",d),video:da.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:da.getSendingRemoteRtpParameters("audio",d),video:da.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(va.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),va.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),va.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});va.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};va.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();va.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertNotClosed(),this.assertSendDirection(),va.debug("send() [kind:%s, track.id:%s]",e.kind,e.id);const i=ca.clone(this._sendingRtpParametersByKind[e.kind]);i.codecs=da.reduceCodecs(i.codecs,n);const s=ca.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=da.reduceCodecs(s.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream]});let c,d=await this._pc.createOffer(),l=oa.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});const u=(0,ga.parse)((t||[{}])[0].scalabilityMode);t&&t.length>1&&(va.debug("send() | enabling legacy simulcast"),l=oa.parse(d.sdp),c=l.media[o.idx],ua.addLegacySimulcast({offerMediaObject:c,numStreams:t.length}),d={type:"offer",sdp:oa.write(l)}),va.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);const p=a.mid;if(i.mid=p,l=oa.parse(this._pc.localDescription.sdp),c=l.media[o.idx],i.rtcp.cname=la.getCname({offerMediaObject:c}),i.encodings=ua.getRtpEncodings({offerMediaObject:c}),t)for(let e=0;e<i.encodings.length;++e)t[e]&&Object.assign(i.encodings[e],t[e]);if(i.encodings.length>1&&("video/vp8"===i.codecs[0].mimeType.toLowerCase()||"video/h264"===i.codecs[0].mimeType.toLowerCase()))for(const e of i.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${u.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r});const h={type:"answer",sdp:this._remoteSdp.getSdp()};return va.debug("send() | calling pc.setRemoteDescription() [answer:%o]",h),await this._pc.setRemoteDescription(h),this._mapMidTransceiver.set(p,a),{localId:p,rtpParameters:i,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;va.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();va.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),va.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();va.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),va.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly",this._remoteSdp.resumeSendingMediaSection(e);const r=await this._pc.createOffer();va.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?va.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):va.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),va.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();va.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),va.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();va.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};va.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%ba.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=oa.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),va.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};va.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i,streamId:s}=t;va.debug("receive() [trackId:%s, kind:%s]",e,n);const o=i.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:n,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};va.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=oa.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,i=r.get(e),o=s.media.find((e=>String(e.mid)===i));la.applyCodecParameters({offerRtpParameters:n,answerMediaObject:o})}i={type:"answer",sdp:oa.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),va.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){va.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};va.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();va.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){va.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};va.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();va.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){va.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};va.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();va.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};va.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};va.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=oa.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}va.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=oa.parse(this._pc.localDescription.sdp));const r=la.extractIceParameters({sdpObject:t}),n=la.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new ha.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}ra.Safari12=ya;var _a={},wa=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Sa=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Ca=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&wa(t,e,r);return Sa(t,e),t};Object.defineProperty(_a,"__esModule",{value:!0}),_a.Safari11=void 0;const Ra=Ca(_i),Pa=Ir,Ta=Ca($r),ka=Ca(Gr),Ea=Ca(Li),Oa=Ca(ao),Da=Ui,Ia=qi,xa=new Pa.Logger("Safari11"),Ma={OS:1024,MIS:1024};class ja extends Da.HandlerInterface{static createFactory(){return()=>new ja}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdRtpSender=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"Safari11"}close(){if(xa.debug("close()"),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){xa.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=Ra.parse(t.sdp);return Ea.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return xa.debug("getNativeSctpCapabilities()"),{numStreams:Ma}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){xa.debug("run()"),this._direction=e,this._remoteSdp=new Ia.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,planB:!0}),this._sendingRtpParametersByKind={audio:ka.getSendingRtpParameters("audio",d),video:ka.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:ka.getSendingRemoteRtpParameters("audio",d),video:ka.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(xa.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){xa.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(xa.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});xa.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};xa.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};xa.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();xa.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertSendDirection(),xa.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),n&&xa.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addTrack(e,this._sendStream);let i,s=await this._pc.createOffer(),o=Ra.parse(s.sdp);const a=Ta.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=ka.reduceCodecs(a.codecs);const c=Ta.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=ka.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(xa.debug("send() | enabling simulcast"),o=Ra.parse(s.sdp),i=o.media.find((e=>"video"===e.type)),Oa.addLegacySimulcast({offerMediaObject:i,track:e,numStreams:t.length}),s={type:"offer",sdp:Ra.write(o)}),xa.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=Ra.parse(this._pc.localDescription.sdp),i=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=Ea.getCname({offerMediaObject:i}),a.encodings=Oa.getRtpEncodings({offerMediaObject:i,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&"video/vp8"===a.codecs[0].mimeType.toLowerCase())for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:i,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};xa.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);this._nextSendLocalId++;const u=this._pc.getSenders().find((t=>t.track===e));return this._mapSendLocalIdRtpSender.set(l,u),{localId:l,rtpParameters:a,rtpSender:u}}async stopSending(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");t.track&&this._sendStream.removeTrack(t.track),this._mapSendLocalIdRtpSender.delete(e);const r=await this._pc.createOffer();xa.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void xa.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const n={type:"answer",sdp:this._remoteSdp.getSdp()};xa.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){this.assertSendDirection(),t?xa.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):xa.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.track;await r.replaceTrack(t),n&&this._sendStream.removeTrack(n),t&&this._sendStream.addTrack(t)}async setMaxSpatialLayer(e,t){this.assertSendDirection(),xa.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(n)}async setRtpEncodingParameters(e,t){this.assertSendDirection(),xa.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapSendLocalIdRtpSender.get(e);if(!r)throw new Error("associated RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.setParameters(n)}async getSenderStats(e){this.assertSendDirection();const t=this._mapSendLocalIdRtpSender.get(e);if(!t)throw new Error("associated RTCRtpSender not found");return t.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};xa.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Ma.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=Ra.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),xa.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};xa.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[];for(const t of e){const{trackId:e,kind:r,rtpParameters:n,streamId:i}=t;xa.debug("receive() [trackId:%s, kind:%s]",e,r);const s=r;this._remoteSdp.receive({mid:s,kind:r,offerRtpParameters:n,streamId:i||n.rtcp.cname,trackId:e})}const r={type:"offer",sdp:this._remoteSdp.getSdp()};xa.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",r),await this._pc.setRemoteDescription(r);let n=await this._pc.createAnswer();const i=Ra.parse(n.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,n=e,s=i.media.find((e=>String(e.mid)===n));Ea.applyCodecParameters({offerRtpParameters:r,answerMediaObject:s})}n={type:"answer",sdp:Ra.write(i)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:i}),xa.debug("receive() | calling pc.setLocalDescription() [answer:%o]",n),await this._pc.setLocalDescription(n);for(const r of e){const{kind:e,trackId:n,rtpParameters:i}=r,s=e,o=n,a=this._pc.getReceivers().find((e=>e.track&&e.track.id===o));if(!a)throw new Error("new RTCRtpReceiver not");this._mapRecvLocalIdInfo.set(o,{mid:s,rtpParameters:i,rtpReceiver:a}),t.push({localId:o,track:a.track,rtpReceiver:a})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){xa.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};xa.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();xa.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertRecvDirection();const{rtpReceiver:t}=this._mapRecvLocalIdInfo.get(e)||{};if(!t)throw new Error("associated RTCRtpReceiver not found");return t.getStats()}async pauseReceiving(e){}async resumeReceiving(e){}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};xa.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};xa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=Ra.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}xa.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=Ra.parse(this._pc.localDescription.sdp));const r=Ea.extractIceParameters({sdpObject:t}),n=Ea.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}_a.Safari11=ja;var La={},Aa={},Na=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Ba=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Fa=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Na(t,e,r);return Ba(t,e),t};Object.defineProperty(Aa,"__esModule",{value:!0}),Aa.mangleRtpParameters=Aa.getCapabilities=void 0;const za=Fa($r);Aa.getCapabilities=function(){const e=RTCRtpReceiver.getCapabilities(),t=za.clone(e);for(const e of t.codecs??[]){if(e.channels=e.numChannels,delete e.numChannels,e.mimeType=e.mimeType||`${e.kind}/${e.name}`,e.parameters){const t=e.parameters;t.apt&&(t.apt=Number(t.apt)),t["packetization-mode"]&&(t["packetization-mode"]=Number(t["packetization-mode"]))}for(const t of e.rtcpFeedback||[])t.parameter||(t.parameter="")}return t},Aa.mangleRtpParameters=function(e){const t=za.clone(e);t.mid&&(t.muxId=t.mid,delete t.mid);for(const e of t.codecs)e.channels&&(e.numChannels=e.channels,delete e.channels),e.mimeType&&!e.name&&(e.name=e.mimeType.split("/")[1]),delete e.mimeType;return t};var Va=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Ua=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),$a=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Va(t,e,r);return Ua(t,e),t};Object.defineProperty(La,"__esModule",{value:!0}),La.Edge11=void 0;const Ga=Ir,qa=zr,Ha=$a($r),Wa=$a(Gr),Ka=$a(Aa),Ja=Ui,Qa=new Ga.Logger("Edge11");class Ya extends Ja.HandlerInterface{static createFactory(){return()=>new Ya}constructor(){super(),this._rtpSenders=new Map,this._rtpReceivers=new Map,this._nextSendLocalId=0,this._transportReady=!1}get name(){return"Edge11"}close(){Qa.debug("close()");try{this._iceGatherer.close()}catch(e){}try{this._iceTransport.stop()}catch(e){}try{this._dtlsTransport.stop()}catch(e){}for(const e of this._rtpSenders.values())try{e.stop()}catch(e){}for(const e of this._rtpReceivers.values())try{e.stop()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){return Qa.debug("getNativeRtpCapabilities()"),Ka.getCapabilities()}async getNativeSctpCapabilities(){return Qa.debug("getNativeSctpCapabilities()"),{numStreams:{OS:0,MIS:0}}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Qa.debug("run()"),this._sendingRtpParametersByKind={audio:Wa.getSendingRtpParameters("audio",d),video:Wa.getSendingRtpParameters("video",d)},this._remoteIceParameters=t,this._remoteIceCandidates=r,this._remoteDtlsParameters=n,this._cname=`CNAME-${Ha.generateRandomNumber()}`,this.setIceGatherer({iceServers:s,iceTransportPolicy:o}),this.setIceTransport(),this.setDtlsTransport()}async updateIceServers(e){throw new qa.UnsupportedError("not supported")}async restartIce(e){if(Qa.debug("restartIce()"),this._remoteIceParameters=e,this._transportReady){Qa.debug("restartIce() | calling iceTransport.start()"),this._iceTransport.start(this._iceGatherer,e,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({})}}async getTransportStats(){return this._iceTransport.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){Qa.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),this._transportReady||await this.setupTransport({localDtlsRole:"server"}),Qa.debug("send() | calling new RTCRtpSender()");const i=new RTCRtpSender(e,this._dtlsTransport),s=Ha.clone(this._sendingRtpParametersByKind[e.kind]);s.codecs=Wa.reduceCodecs(s.codecs,n);const o=s.codecs.some((e=>/.+\/rtx$/i.test(e.mimeType)));t||(t=[{}]);for(const e of t)e.ssrc=Ha.generateRandomNumber(),o&&(e.rtx={ssrc:Ha.generateRandomNumber()});s.encodings=t,s.rtcp={cname:this._cname,reducedSize:!0,mux:!0};const a=Ka.mangleRtpParameters(s);Qa.debug("send() | calling rtpSender.send() [params:%o]",a),await i.send(a);const c=String(this._nextSendLocalId);return this._nextSendLocalId++,this._rtpSenders.set(c,i),{localId:c,rtpParameters:s,rtpSender:i}}async stopSending(e){Qa.debug("stopSending() [localId:%s]",e);const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");this._rtpSenders.delete(e);try{Qa.debug("stopSending() | calling rtpSender.stop()"),t.stop()}catch(e){throw Qa.warn("stopSending() | rtpSender.stop() failed:%o",e),e}}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){t?Qa.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):Qa.debug("replaceTrack() [localId:%s, no track]",e);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");r.setTrack(t)}async setMaxSpatialLayer(e,t){Qa.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.setParameters(n)}async setRtpEncodingParameters(e,t){Qa.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._rtpSenders.get(e);if(!r)throw new Error("RTCRtpSender not found");const n=r.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.setParameters(n)}async getSenderStats(e){const t=this._rtpSenders.get(e);if(!t)throw new Error("RTCRtpSender not found");return t.getStats()}async sendDataChannel(e){throw new qa.UnsupportedError("not implemented")}async receive(e){const t=[];for(const t of e){const{trackId:e,kind:r}=t;Qa.debug("receive() [trackId:%s, kind:%s]",e,r)}this._transportReady||await this.setupTransport({localDtlsRole:"server"});for(const r of e){const{trackId:e,kind:n,rtpParameters:i}=r;Qa.debug("receive() | calling new RTCRtpReceiver()");const s=new RTCRtpReceiver(this._dtlsTransport,n);s.addEventListener("error",(e=>{Qa.error('rtpReceiver "error" event [event:%o]',e)}));const o=Ka.mangleRtpParameters(i);Qa.debug("receive() | calling rtpReceiver.receive() [params:%o]",o),await s.receive(o);const a=e;this._rtpReceivers.set(a,s),t.push({localId:a,track:s.track,rtpReceiver:s})}return t}async stopReceiving(e){for(const t of e){Qa.debug("stopReceiving() [localId:%s]",t);const e=this._rtpReceivers.get(t);if(!e)throw new Error("RTCRtpReceiver not found");this._rtpReceivers.delete(t);try{Qa.debug("stopReceiving() | calling rtpReceiver.stop()"),e.stop()}catch(e){Qa.warn("stopReceiving() | rtpReceiver.stop() failed:%o",e)}}}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){const t=this._rtpReceivers.get(e);if(!t)throw new Error("RTCRtpReceiver not found");return t.getStats()}async receiveDataChannel(e){throw new qa.UnsupportedError("not implemented")}setIceGatherer({iceServers:e,iceTransportPolicy:t}){const r=new RTCIceGatherer({iceServers:e||[],gatherPolicy:t||"all"});r.addEventListener("error",(e=>{Qa.error('iceGatherer "error" event [event:%o]',e)}));try{r.gather()}catch(e){Qa.debug("setIceGatherer() | iceGatherer.gather() failed: %s",e.toString())}this._iceGatherer=r}setIceTransport(){const e=new RTCIceTransport(this._iceGatherer);e.addEventListener("statechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("icestatechange",(()=>{switch(e.state){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}})),e.addEventListener("candidatepairchange",(e=>{Qa.debug('iceTransport "candidatepairchange" event [pair:%o]',e.pair)})),this._iceTransport=e}setDtlsTransport(){const e=new RTCDtlsTransport(this._iceTransport);e.addEventListener("statechange",(()=>{Qa.debug('dtlsTransport "statechange" event [state:%s]',e.state)})),e.addEventListener("dtlsstatechange",(()=>{Qa.debug('dtlsTransport "dtlsstatechange" event [state:%s]',e.state),"closed"===e.state&&this.emit("@connectionstatechange","closed")})),e.addEventListener("error",(e=>{Qa.error('dtlsTransport "error" event [event:%o]',e)})),this._dtlsTransport=e}async setupTransport({localDtlsRole:e}){Qa.debug("setupTransport()");const t=this._iceGatherer.getLocalParameters(),r=this._dtlsTransport.getLocalParameters();r.role=e,await new Promise(((e,n)=>{this.safeEmit("@connect",{iceParameters:t,dtlsParameters:r},e,n)})),this._iceTransport.start(this._iceGatherer,this._remoteIceParameters,"controlling");for(const e of this._remoteIceCandidates)this._iceTransport.addRemoteCandidate(e);this._iceTransport.addRemoteCandidate({}),this._remoteDtlsParameters.fingerprints=this._remoteDtlsParameters.fingerprints.filter((e=>"sha-256"===e.algorithm||"sha-384"===e.algorithm||"sha-512"===e.algorithm)),this._dtlsTransport.start(this._remoteDtlsParameters),this._transportReady=!0}}La.Edge11=Ya;var Za={},Xa=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),ec=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),tc=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Xa(t,e,r);return ec(t,e),t};Object.defineProperty(Za,"__esModule",{value:!0}),Za.ReactNativeUnifiedPlan=void 0;const rc=tc(_i),nc=Ir,ic=tc($r),sc=tc(Gr),oc=tc(Li),ac=tc(zi),cc=tc(Vi),dc=zr,lc=Ui,uc=qi,pc=os,hc=new nc.Logger("ReactNativeUnifiedPlan"),fc={OS:1024,MIS:1024};class mc extends lc.HandlerInterface{static createFactory(){return()=>new mc}constructor(){super(),this._closed=!1,this._mapMidTransceiver=new Map,this._sendStream=new MediaStream,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNativeUnifiedPlan"}close(){if(hc.debug("close()"),!this._closed){if(this._closed=!0,this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}}async getNativeRtpCapabilities(){hc.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan"});try{e.addTransceiver("audio"),e.addTransceiver("video");const t=await e.createOffer();try{e.close()}catch(e){}const r=rc.parse(t.sdp),n=oc.extractRtpCapabilities({sdpObject:r});return cc.addNackSuppportForOpus(n),n}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return hc.debug("getNativeSctpCapabilities()"),{numStreams:fc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){this.assertNotClosed(),hc.debug("run()"),this._direction=e,this._remoteSdp=new uc.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i}),this._sendingRtpParametersByKind={audio:sc.getSendingRtpParameters("audio",d),video:sc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:sc.getSendingRemoteRtpParameters("audio",d),video:sc.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"unified-plan",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(hc.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){this.assertNotClosed(),hc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(this.assertNotClosed(),hc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});hc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};hc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();hc.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this.assertNotClosed(),this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertNotClosed(),this.assertSendDirection(),hc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),t&&t.length>1&&t.forEach(((e,t)=>{e.rid=`r${t}`}));const i=ic.clone(this._sendingRtpParametersByKind[e.kind]);i.codecs=sc.reduceCodecs(i.codecs,n);const s=ic.clone(this._sendingRemoteRtpParametersByKind[e.kind]);s.codecs=sc.reduceCodecs(s.codecs,n);const o=this._remoteSdp.getNextMediaSectionIdx(),a=this._pc.addTransceiver(e,{direction:"sendonly",streams:[this._sendStream],sendEncodings:t});let c,d=await this._pc.createOffer(),l=rc.parse(d.sdp);this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:l});let u=!1;const p=(0,pc.parse)((t||[{}])[0].scalabilityMode);t&&1===t.length&&p.spatialLayers>1&&"video/vp9"===i.codecs[0].mimeType.toLowerCase()&&(hc.debug("send() | enabling legacy simulcast for VP9 SVC"),u=!0,l=rc.parse(d.sdp),c=l.media[o.idx],ac.addLegacySimulcast({offerMediaObject:c,numStreams:p.spatialLayers}),d={type:"offer",sdp:rc.write(l)}),hc.debug("send() | calling pc.setLocalDescription() [offer:%o]",d),await this._pc.setLocalDescription(d);let h=a.mid??void 0;if(h||hc.warn("send() | missing transceiver.mid (bug in react-native-webrtc, using a workaround"),i.mid=h,l=rc.parse(this._pc.localDescription.sdp),c=l.media[o.idx],i.rtcp.cname=oc.getCname({offerMediaObject:c}),t)if(1===t.length){let e=ac.getRtpEncodings({offerMediaObject:c});Object.assign(e[0],t[0]),u&&(e=[e[0]]),i.encodings=e}else i.encodings=t;else i.encodings=ac.getRtpEncodings({offerMediaObject:c});if(i.encodings.length>1&&("video/vp8"===i.codecs[0].mimeType.toLowerCase()||"video/h264"===i.codecs[0].mimeType.toLowerCase()))for(const e of i.encodings)e.scalabilityMode?e.scalabilityMode=`L1T${p.temporalLayers}`:e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:c,reuseMid:o.reuseMid,offerRtpParameters:i,answerRtpParameters:s,codecOptions:r,extmapAllowMixed:!0});const f={type:"answer",sdp:this._remoteSdp.getSdp()};return hc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",f),await this._pc.setRemoteDescription(f),h||(h=a.mid,i.mid=h),this._mapMidTransceiver.set(h,a),{localId:h,rtpParameters:i,rtpSender:a.sender}}async stopSending(e){if(this.assertSendDirection(),this._closed)return;hc.debug("stopSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.sender.replaceTrack(null),this._pc.removeTrack(t.sender);if(this._remoteSdp.closeMediaSection(t.mid))try{t.stop()}catch(e){}const r=await this._pc.createOffer();hc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._mapMidTransceiver.delete(e)}async pauseSending(e){this.assertNotClosed(),this.assertSendDirection(),hc.debug("pauseSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="inactive",this._remoteSdp.pauseMediaSection(e);const r=await this._pc.createOffer();hc.debug("pauseSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("pauseSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async resumeSending(e){this.assertNotClosed(),this.assertSendDirection(),hc.debug("resumeSending() [localId:%s]",e);const t=this._mapMidTransceiver.get(e);if(this._remoteSdp.resumeSendingMediaSection(e),!t)throw new Error("associated RTCRtpTransceiver not found");t.direction="sendonly";const r=await this._pc.createOffer();hc.debug("resumeSending() | calling pc.setLocalDescription() [offer:%o]",r),await this._pc.setLocalDescription(r);const n={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("resumeSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async replaceTrack(e,t){this.assertNotClosed(),this.assertSendDirection(),t?hc.debug("replaceTrack() [localId:%s, track.id:%s]",e,t.id):hc.debug("replaceTrack() [localId:%s, no track]",e);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");await r.sender.replaceTrack(t)}async setMaxSpatialLayer(e,t){this.assertNotClosed(),this.assertSendDirection(),hc.debug("setMaxSpatialLayer() [localId:%s, spatialLayer:%s]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{e.active=r<=t})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();hc.debug("setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async setRtpEncodingParameters(e,t){this.assertNotClosed(),this.assertSendDirection(),hc.debug("setRtpEncodingParameters() [localId:%s, params:%o]",e,t);const r=this._mapMidTransceiver.get(e);if(!r)throw new Error("associated RTCRtpTransceiver not found");const n=r.sender.getParameters();n.encodings.forEach(((e,r)=>{n.encodings[r]={...e,...t}})),await r.sender.setParameters(n),this._remoteSdp.muxMediaSectionSimulcast(e,n.encodings);const i=await this._pc.createOffer();hc.debug("setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]",i),await this._pc.setLocalDescription(i);const s={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]",s),await this._pc.setRemoteDescription(s)}async getSenderStats(e){this.assertNotClosed(),this.assertSendDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.sender.getStats()}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertNotClosed(),this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmits:r,protocol:i};hc.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%fc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=rc.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),hc.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};hc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertNotClosed(),this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i,streamId:s}=t;hc.debug("receive() [trackId:%s, kind:%s]",e,n);const o=i.mid||String(this._mapMidTransceiver.size);r.set(e,o),this._remoteSdp.receive({mid:o,kind:n,offerRtpParameters:i,streamId:s||i.rtcp.cname,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};hc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=rc.parse(i.sdp);for(const t of e){const{trackId:e,rtpParameters:n}=t,i=r.get(e),o=s.media.find((e=>String(e.mid)===i));oc.applyCodecParameters({offerRtpParameters:n,answerMediaObject:o})}i={type:"answer",sdp:rc.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),hc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{trackId:e}=n,i=r.get(e),s=this._pc.getTransceivers().find((e=>e.mid===i));if(!s)throw new Error("new RTCRtpTransceiver not found");this._mapMidTransceiver.set(i,s),t.push({localId:i,track:s.receiver.track,rtpReceiver:s.receiver})}return t}async stopReceiving(e){if(this.assertRecvDirection(),this._closed)return;for(const t of e){hc.debug("stopReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");this._remoteSdp.closeMediaSection(e.mid)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};hc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();hc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r);for(const t of e)this._mapMidTransceiver.delete(t)}async pauseReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){hc.debug("pauseReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="inactive",this._remoteSdp.pauseMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};hc.debug("pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();hc.debug("pauseReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async resumeReceiving(e){this.assertNotClosed(),this.assertRecvDirection();for(const t of e){hc.debug("resumeReceiving() [localId:%s]",t);const e=this._mapMidTransceiver.get(t);if(!e)throw new Error("associated RTCRtpTransceiver not found");e.direction="recvonly",this._remoteSdp.resumeReceivingMediaSection(t)}const t={type:"offer",sdp:this._remoteSdp.getSdp()};hc.debug("resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();hc.debug("resumeReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async getReceiverStats(e){this.assertNotClosed(),this.assertRecvDirection();const t=this._mapMidTransceiver.get(e);if(!t)throw new Error("associated RTCRtpTransceiver not found");return t.receiver.getStats()}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertNotClosed(),this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o,protocol:r};hc.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation();const e={type:"offer",sdp:this._remoteSdp.getSdp()};hc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=rc.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}hc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=rc.parse(this._pc.localDescription.sdp));const r=oc.extractIceParameters({sdpObject:t}),n=oc.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertNotClosed(){if(this._closed)throw new dc.InvalidStateError("method called in a closed handler")}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}Za.ReactNativeUnifiedPlan=mc;var gc={},vc=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),bc=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),yc=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&vc(t,e,r);return bc(t,e),t};Object.defineProperty(gc,"__esModule",{value:!0}),gc.ReactNative=void 0;const _c=yc(_i),wc=Ir,Sc=zr,Cc=yc($r),Rc=yc(Gr),Pc=yc(Li),Tc=yc(ao),kc=Ui,Ec=qi,Oc=new wc.Logger("ReactNative"),Dc={OS:1024,MIS:1024};class Ic extends kc.HandlerInterface{static createFactory(){return()=>new Ic}constructor(){super(),this._sendStream=new MediaStream,this._mapSendLocalIdTrack=new Map,this._nextSendLocalId=0,this._mapRecvLocalIdInfo=new Map,this._hasDataChannelMediaSection=!1,this._nextSendSctpStreamId=0,this._transportReady=!1}get name(){return"ReactNative"}close(){if(Oc.debug("close()"),this._sendStream.release(!1),this._pc)try{this._pc.close()}catch(e){}this.emit("@close")}async getNativeRtpCapabilities(){Oc.debug("getNativeRtpCapabilities()");const e=new RTCPeerConnection({iceServers:[],iceTransportPolicy:"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b"});try{const t=await e.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});try{e.close()}catch(e){}const r=_c.parse(t.sdp);return Pc.extractRtpCapabilities({sdpObject:r})}catch(t){try{e.close()}catch(e){}throw t}}async getNativeSctpCapabilities(){return Oc.debug("getNativeSctpCapabilities()"),{numStreams:Dc}}run({direction:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,extendedRtpCapabilities:d}){Oc.debug("run()"),this._direction=e,this._remoteSdp=new Ec.RemoteSdp({iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,planB:!0}),this._sendingRtpParametersByKind={audio:Rc.getSendingRtpParameters("audio",d),video:Rc.getSendingRtpParameters("video",d)},this._sendingRemoteRtpParametersByKind={audio:Rc.getSendingRemoteRtpParameters("audio",d),video:Rc.getSendingRemoteRtpParameters("video",d)},n.role&&"auto"!==n.role&&(this._forcedLocalDtlsRole="server"===n.role?"client":"server"),this._pc=new RTCPeerConnection({iceServers:s||[],iceTransportPolicy:o||"all",bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",sdpSemantics:"plan-b",...a},c),this._pc.addEventListener("icegatheringstatechange",(()=>{this.emit("@icegatheringstatechange",this._pc.iceGatheringState)})),this._pc.connectionState?this._pc.addEventListener("connectionstatechange",(()=>{this.emit("@connectionstatechange",this._pc.connectionState)})):this._pc.addEventListener("iceconnectionstatechange",(()=>{switch(Oc.warn("run() | pc.connectionState not supported, using pc.iceConnectionState"),this._pc.iceConnectionState){case"checking":this.emit("@connectionstatechange","connecting");break;case"connected":case"completed":this.emit("@connectionstatechange","connected");break;case"failed":this.emit("@connectionstatechange","failed");break;case"disconnected":this.emit("@connectionstatechange","disconnected");break;case"closed":this.emit("@connectionstatechange","closed")}}))}async updateIceServers(e){Oc.debug("updateIceServers()");const t=this._pc.getConfiguration();t.iceServers=e,this._pc.setConfiguration(t)}async restartIce(e){if(Oc.debug("restartIce()"),this._remoteSdp.updateIceParameters(e),this._transportReady)if("send"===this._direction){const e=await this._pc.createOffer({iceRestart:!0});Oc.debug("restartIce() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e);const t={type:"answer",sdp:this._remoteSdp.getSdp()};Oc.debug("restartIce() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setRemoteDescription(t)}else{const e={type:"offer",sdp:this._remoteSdp.getSdp()};Oc.debug("restartIce() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();Oc.debug("restartIce() | calling pc.setLocalDescription() [answer:%o]",t),await this._pc.setLocalDescription(t)}}async getTransportStats(){return this._pc.getStats()}async send({track:e,encodings:t,codecOptions:r,codec:n}){this.assertSendDirection(),Oc.debug("send() [kind:%s, track.id:%s]",e.kind,e.id),n&&Oc.warn("send() | codec selection is not available in %s handler",this.name),this._sendStream.addTrack(e),this._pc.addStream(this._sendStream);let i,s=await this._pc.createOffer(),o=_c.parse(s.sdp);const a=Cc.clone(this._sendingRtpParametersByKind[e.kind]);a.codecs=Rc.reduceCodecs(a.codecs);const c=Cc.clone(this._sendingRemoteRtpParametersByKind[e.kind]);if(c.codecs=Rc.reduceCodecs(c.codecs),this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:o}),"video"===e.kind&&t&&t.length>1&&(Oc.debug("send() | enabling simulcast"),o=_c.parse(s.sdp),i=o.media.find((e=>"video"===e.type)),Tc.addLegacySimulcast({offerMediaObject:i,track:e,numStreams:t.length}),s={type:"offer",sdp:_c.write(o)}),Oc.debug("send() | calling pc.setLocalDescription() [offer:%o]",s),await this._pc.setLocalDescription(s),o=_c.parse(this._pc.localDescription.sdp),i=o.media.find((t=>t.type===e.kind)),a.rtcp.cname=Pc.getCname({offerMediaObject:i}),a.encodings=Tc.getRtpEncodings({offerMediaObject:i,track:e}),t)for(let e=0;e<a.encodings.length;++e)t[e]&&Object.assign(a.encodings[e],t[e]);if(a.encodings.length>1&&("video/vp8"===a.codecs[0].mimeType.toLowerCase()||"video/h264"===a.codecs[0].mimeType.toLowerCase()))for(const e of a.encodings)e.scalabilityMode="L1T3";this._remoteSdp.send({offerMediaObject:i,offerRtpParameters:a,answerRtpParameters:c,codecOptions:r});const d={type:"answer",sdp:this._remoteSdp.getSdp()};Oc.debug("send() | calling pc.setRemoteDescription() [answer:%o]",d),await this._pc.setRemoteDescription(d);const l=String(this._nextSendLocalId);return this._nextSendLocalId++,this._mapSendLocalIdTrack.set(l,e),{localId:l,rtpParameters:a}}async stopSending(e){this.assertSendDirection(),Oc.debug("stopSending() [localId:%s]",e);const t=this._mapSendLocalIdTrack.get(e);if(!t)throw new Error("track not found");this._mapSendLocalIdTrack.delete(e),this._sendStream.removeTrack(t),this._pc.addStream(this._sendStream);const r=await this._pc.createOffer();Oc.debug("stopSending() | calling pc.setLocalDescription() [offer:%o]",r);try{await this._pc.setLocalDescription(r)}catch(e){if(0===this._sendStream.getTracks().length)return void Oc.warn("stopSending() | ignoring expected error due no sending tracks: %s",e.toString());throw e}if("stable"===this._pc.signalingState)return;const n={type:"answer",sdp:this._remoteSdp.getSdp()};Oc.debug("stopSending() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n)}async pauseSending(e){}async resumeSending(e){}async replaceTrack(e,t){throw new Sc.UnsupportedError("not implemented")}async setMaxSpatialLayer(e,t){throw new Sc.UnsupportedError("not implemented")}async setRtpEncodingParameters(e,t){throw new Sc.UnsupportedError("not implemented")}async getSenderStats(e){throw new Sc.UnsupportedError("not implemented")}async sendDataChannel({ordered:e,maxPacketLifeTime:t,maxRetransmits:r,label:n,protocol:i}){this.assertSendDirection();const s={negotiated:!0,id:this._nextSendSctpStreamId,ordered:e,maxPacketLifeTime:t,maxRetransmitTime:t,maxRetransmits:r,protocol:i};Oc.debug("sendDataChannel() [options:%o]",s);const o=this._pc.createDataChannel(n,s);if(this._nextSendSctpStreamId=++this._nextSendSctpStreamId%Dc.MIS,!this._hasDataChannelMediaSection){const e=await this._pc.createOffer(),t=_c.parse(e.sdp),r=t.media.find((e=>"application"===e.type));this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:t}),Oc.debug("sendDataChannel() | calling pc.setLocalDescription() [offer:%o]",e),await this._pc.setLocalDescription(e),this._remoteSdp.sendSctpAssociation({offerMediaObject:r});const n={type:"answer",sdp:this._remoteSdp.getSdp()};Oc.debug("sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]",n),await this._pc.setRemoteDescription(n),this._hasDataChannelMediaSection=!0}return{dataChannel:o,sctpStreamParameters:{streamId:s.id,ordered:s.ordered,maxPacketLifeTime:s.maxPacketLifeTime,maxRetransmits:s.maxRetransmits}}}async receive(e){this.assertRecvDirection();const t=[],r=new Map;for(const t of e){const{trackId:e,kind:n,rtpParameters:i}=t;Oc.debug("receive() [trackId:%s, kind:%s]",e,n);const s=n;let o=t.streamId||i.rtcp.cname;Oc.debug("receive() | forcing a random remote streamId to avoid well known bug in react-native-webrtc"),o+=`-hack-${Cc.generateRandomNumber()}`,r.set(e,o),this._remoteSdp.receive({mid:s,kind:n,offerRtpParameters:i,streamId:o,trackId:e})}const n={type:"offer",sdp:this._remoteSdp.getSdp()};Oc.debug("receive() | calling pc.setRemoteDescription() [offer:%o]",n),await this._pc.setRemoteDescription(n);let i=await this._pc.createAnswer();const s=_c.parse(i.sdp);for(const t of e){const{kind:e,rtpParameters:r}=t,n=e,i=s.media.find((e=>String(e.mid)===n));Pc.applyCodecParameters({offerRtpParameters:r,answerMediaObject:i})}i={type:"answer",sdp:_c.write(s)},this._transportReady||await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:s}),Oc.debug("receive() | calling pc.setLocalDescription() [answer:%o]",i),await this._pc.setLocalDescription(i);for(const n of e){const{kind:e,trackId:i,rtpParameters:s}=n,o=i,a=e,c=r.get(i),d=this._pc.getRemoteStreams().find((e=>e.id===c)).getTrackById(o);if(!d)throw new Error("remote track not found");this._mapRecvLocalIdInfo.set(o,{mid:a,rtpParameters:s}),t.push({localId:o,track:d})}return t}async stopReceiving(e){this.assertRecvDirection();for(const t of e){Oc.debug("stopReceiving() [localId:%s]",t);const{mid:e,rtpParameters:r}=this._mapRecvLocalIdInfo.get(t)||{};this._mapRecvLocalIdInfo.delete(t),this._remoteSdp.planBStopReceiving({mid:e,offerRtpParameters:r})}const t={type:"offer",sdp:this._remoteSdp.getSdp()};Oc.debug("stopReceiving() | calling pc.setRemoteDescription() [offer:%o]",t),await this._pc.setRemoteDescription(t);const r=await this._pc.createAnswer();Oc.debug("stopReceiving() | calling pc.setLocalDescription() [answer:%o]",r),await this._pc.setLocalDescription(r)}async pauseReceiving(e){}async resumeReceiving(e){}async getReceiverStats(e){throw new Sc.UnsupportedError("not implemented")}async receiveDataChannel({sctpStreamParameters:e,label:t,protocol:r}){this.assertRecvDirection();const{streamId:n,ordered:i,maxPacketLifeTime:s,maxRetransmits:o}=e,a={negotiated:!0,id:n,ordered:i,maxPacketLifeTime:s,maxRetransmitTime:s,maxRetransmits:o,protocol:r};Oc.debug("receiveDataChannel() [options:%o]",a);const c=this._pc.createDataChannel(t,a);if(!this._hasDataChannelMediaSection){this._remoteSdp.receiveSctpAssociation({oldDataChannelSpec:!0});const e={type:"offer",sdp:this._remoteSdp.getSdp()};Oc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]",e),await this._pc.setRemoteDescription(e);const t=await this._pc.createAnswer();if(!this._transportReady){const e=_c.parse(t.sdp);await this.setupTransport({localDtlsRole:this._forcedLocalDtlsRole??"client",localSdpObject:e})}Oc.debug("receiveDataChannel() | calling pc.setRemoteDescription() [answer:%o]",t),await this._pc.setLocalDescription(t),this._hasDataChannelMediaSection=!0}return{dataChannel:c}}async setupTransport({localDtlsRole:e,localSdpObject:t}){t||(t=_c.parse(this._pc.localDescription.sdp));const r=Pc.extractIceParameters({sdpObject:t}),n=Pc.extractDtlsParameters({sdpObject:t});n.role=e,this._remoteSdp.updateDtlsRole("client"===e?"server":"client"),await new Promise(((e,t)=>{this.safeEmit("@connect",{iceParameters:r,dtlsParameters:n},e,t)})),this._transportReady=!0}assertSendDirection(){if("send"!==this._direction)throw new Error('method can just be called for handlers with "send" direction')}assertRecvDirection(){if("recv"!==this._direction)throw new Error('method can just be called for handlers with "recv" direction')}}gc.ReactNative=Ic;var xc=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Mc=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),jc=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&xc(t,e,r);return Mc(t,e),t};Object.defineProperty(Er,"__esModule",{value:!0}),Er.Device=Er.detectDevice=void 0;const Lc=Dr,Ac=Ir,Nc=Lr,Bc=zr,Fc=jc($r),zc=jc(Gr),Vc=Tn,Uc=yi,$c=Ts,Gc=Gs,qc=oo,Hc=Co,Wc=Fo,Kc=ra,Jc=_a,Qc=La,Yc=Za,Zc=gc,Xc=new Ac.Logger("Device");function ed(){if("object"==typeof navigator&&"ReactNative"===navigator.product)return Xc.debug("detectDevice() | React-Native detected"),"undefined"==typeof RTCPeerConnection?void Xc.warn("detectDevice() | unsupported react-native-webrtc without RTCPeerConnection, forgot to call registerGlobals()?"):"undefined"!=typeof RTCRtpTransceiver?(Xc.debug("detectDevice() | ReactNative UnifiedPlan handler chosen"),"ReactNativeUnifiedPlan"):(Xc.debug("detectDevice() | ReactNative PlanB handler chosen"),"ReactNative");if("object"!=typeof navigator||"string"!=typeof navigator.userAgent)Xc.warn("detectDevice() | unknown device");else{const e=navigator.userAgent,t=new Lc.UAParser(e);Xc.debug("detectDevice() | browser detected [ua:%s, parsed:%o]",e,t.getResult());const r=t.getBrowser(),n=r.name?.toLowerCase(),i=parseInt(r.major??"0"),s=t.getEngine(),o=s.name?.toLowerCase(),a=t.getOS(),c=a.name?.toLowerCase(),d=parseFloat(a.version??"0"),l=t.getDevice(),u=l.model?.toLowerCase(),p="ios"===c||"ipad"===u,h=n&&["chrome","chromium","mobile chrome","chrome webview","chrome headless"].includes(n),f=n&&["firefox","mobile firefox","mobile focus"].includes(n),m=n&&["safari","mobile safari"].includes(n),g=n&&["edge"].includes(n);if((h||g)&&!p&&i>=111)return"Chrome111";if(h&&!p&&i>=74||g&&!p&&i>=88)return"Chrome74";if(h&&!p&&i>=70)return"Chrome70";if(h&&!p&&i>=67)return"Chrome67";if(h&&!p&&i>=55)return"Chrome55";if(f&&!p&&i>=60)return"Firefox60";if(f&&p&&d>=14.3)return"Safari12";if(m&&i>=12&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if(m&&i>=11)return"Safari11";if(g&&!p&&i>=11&&i<=18)return"Edge11";if("webkit"===o&&p&&"undefined"!=typeof RTCRtpTransceiver&&RTCRtpTransceiver.prototype.hasOwnProperty("currentDirection"))return"Safari12";if("blink"===o){const t=e.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);if(t){const e=Number(t[1]);return e>=111?"Chrome111":e>=74?"Chrome74":e>=70?"Chrome70":e>=67?"Chrome67":"Chrome55"}return"Chrome111"}Xc.warn("detectDevice() | browser not supported [name:%s, version:%s]",n,i)}}Er.detectDevice=ed;Er.Device=class{constructor({handlerName:e,handlerFactory:t,Handler:r}={}){if(this._loaded=!1,this._observer=new Nc.EnhancedEventEmitter,Xc.debug("constructor()"),r){if(Xc.warn("constructor() | Handler option is DEPRECATED, use handlerName or handlerFactory instead"),"string"!=typeof r)throw new TypeError("non string Handler option no longer supported, use handlerFactory instead");e=r}if(e&&t)throw new TypeError("just one of handlerName or handlerInterface can be given");if(t)this._handlerFactory=t;else{if(e)Xc.debug("constructor() | handler given: %s",e);else{if(!(e=ed()))throw new Bc.UnsupportedError("device not supported");Xc.debug("constructor() | detected handler: %s",e)}switch(e){case"Chrome111":this._handlerFactory=Uc.Chrome111.createFactory();break;case"Chrome74":this._handlerFactory=$c.Chrome74.createFactory();break;case"Chrome70":this._handlerFactory=Gc.Chrome70.createFactory();break;case"Chrome67":this._handlerFactory=qc.Chrome67.createFactory();break;case"Chrome55":this._handlerFactory=Hc.Chrome55.createFactory();break;case"Firefox60":this._handlerFactory=Wc.Firefox60.createFactory();break;case"Safari12":this._handlerFactory=Kc.Safari12.createFactory();break;case"Safari11":this._handlerFactory=Jc.Safari11.createFactory();break;case"Edge11":this._handlerFactory=Qc.Edge11.createFactory();break;case"ReactNativeUnifiedPlan":this._handlerFactory=Yc.ReactNativeUnifiedPlan.createFactory();break;case"ReactNative":this._handlerFactory=Zc.ReactNative.createFactory();break;default:throw new TypeError(`unknown handlerName "${e}"`)}}const n=this._handlerFactory();this._handlerName=n.name,n.close(),this._extendedRtpCapabilities=void 0,this._recvRtpCapabilities=void 0,this._canProduceByKind={audio:!1,video:!1},this._sctpCapabilities=void 0}get handlerName(){return this._handlerName}get loaded(){return this._loaded}get rtpCapabilities(){if(!this._loaded)throw new Bc.InvalidStateError("not loaded");return this._recvRtpCapabilities}get sctpCapabilities(){if(!this._loaded)throw new Bc.InvalidStateError("not loaded");return this._sctpCapabilities}get observer(){return this._observer}async load({routerRtpCapabilities:e}){let t;Xc.debug("load() [routerRtpCapabilities:%o]",e),e=Fc.clone(e);try{if(this._loaded)throw new Bc.InvalidStateError("already loaded");zc.validateRtpCapabilities(e),t=this._handlerFactory();const r=await t.getNativeRtpCapabilities();Xc.debug("load() | got native RTP capabilities:%o",r),zc.validateRtpCapabilities(r),this._extendedRtpCapabilities=zc.getExtendedRtpCapabilities(r,e),Xc.debug("load() | got extended RTP capabilities:%o",this._extendedRtpCapabilities),this._canProduceByKind.audio=zc.canSend("audio",this._extendedRtpCapabilities),this._canProduceByKind.video=zc.canSend("video",this._extendedRtpCapabilities),this._recvRtpCapabilities=zc.getRecvRtpCapabilities(this._extendedRtpCapabilities),zc.validateRtpCapabilities(this._recvRtpCapabilities),Xc.debug("load() | got receiving RTP capabilities:%o",this._recvRtpCapabilities),this._sctpCapabilities=await t.getNativeSctpCapabilities(),Xc.debug("load() | got native SCTP capabilities:%o",this._sctpCapabilities),zc.validateSctpCapabilities(this._sctpCapabilities),Xc.debug("load() succeeded"),this._loaded=!0,t.close()}catch(e){throw t&&t.close(),e}}canProduce(e){if(!this._loaded)throw new Bc.InvalidStateError("not loaded");if("audio"!==e&&"video"!==e)throw new TypeError(`invalid kind "${e}"`);return this._canProduceByKind[e]}createSendTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d}){return Xc.debug("createSendTransport()"),this.createTransport({direction:"send",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d})}createRecvTransport({id:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d}){return Xc.debug("createRecvTransport()"),this.createTransport({direction:"recv",id:e,iceParameters:t,iceCandidates:r,dtlsParameters:n,sctpParameters:i,iceServers:s,iceTransportPolicy:o,additionalSettings:a,proprietaryConstraints:c,appData:d})}createTransport({direction:e,id:t,iceParameters:r,iceCandidates:n,dtlsParameters:i,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,appData:l}){if(!this._loaded)throw new Bc.InvalidStateError("not loaded");if("string"!=typeof t)throw new TypeError("missing id");if("object"!=typeof r)throw new TypeError("missing iceParameters");if(!Array.isArray(n))throw new TypeError("missing iceCandidates");if("object"!=typeof i)throw new TypeError("missing dtlsParameters");if(s&&"object"!=typeof s)throw new TypeError("wrong sctpParameters");if(l&&"object"!=typeof l)throw new TypeError("if given, appData must be an object");const u=new Vc.Transport({direction:e,id:t,iceParameters:r,iceCandidates:n,dtlsParameters:i,sctpParameters:s,iceServers:o,iceTransportPolicy:a,additionalSettings:c,proprietaryConstraints:d,appData:l,handlerFactory:this._handlerFactory,extendedRtpCapabilities:this._extendedRtpCapabilities,canProduceByKind:this._canProduceByKind});return this._observer.safeEmit("newtransport",u),u}};var td={},rd={};Object.defineProperty(rd,"__esModule",{value:!0});var nd={};Object.defineProperty(nd,"__esModule",{value:!0}),function(e){var t=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),r=a&&a.__exportStar||function(e,r){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(r,n)||t(r,e,n)};Object.defineProperty(e,"__esModule",{value:!0}),r(Er,e),r(Tn,e),r(An,e),r(Vn,e),r(Hn,e),r(Yn,e),r(rd,e),r(nd,e),r(Ui,e),r(zr,e)}(td),function(e){var t=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),r=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&t(n,e,i);return r(n,e),n},i=a&&a.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.debug=e.parseScalabilityMode=e.detectDevice=e.Device=e.version=e.types=void 0;const s=i(kr);e.debug=s.default;const o=Er;Object.defineProperty(e,"Device",{enumerable:!0,get:function(){return o.Device}}),Object.defineProperty(e,"detectDevice",{enumerable:!0,get:function(){return o.detectDevice}});const c=n(td);e.types=c,e.version="3.7.3";var d=os;Object.defineProperty(e,"parseScalabilityMode",{enumerable:!0,get:function(){return d.parse}})}(Cr);let id=!0,sd=!0;function od(e,t,r){const n=e.match(t);return n&&n.length>=r&&parseInt(n[r],10)}function ad(e,t,r){if(!e.RTCPeerConnection)return;const n=e.RTCPeerConnection.prototype,i=n.addEventListener;n.addEventListener=function(e,n){if(e!==t)return i.apply(this,arguments);const s=e=>{const t=r(e);t&&(n.handleEvent?n.handleEvent(t):n(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(n,s),i.apply(this,[e,s])};const s=n.removeEventListener;n.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(r))return s.apply(this,arguments);const n=this._eventMap[t].get(r);return this._eventMap[t].delete(r),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[e,n])},Object.defineProperty(n,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function cd(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(id=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function dd(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(sd=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function ld(){if("object"==typeof window){if(id)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function ud(e,t){sd&&console.warn(e+" is deprecated, please use "+t+" instead.")}function pd(e){return"[object Object]"===Object.prototype.toString.call(e)}function hd(e){return pd(e)?Object.keys(e).reduce((function(t,r){const n=pd(e[r]),i=n?hd(e[r]):e[r],s=n&&!Object.keys(i).length;return void 0===i||s?t:Object.assign(t,{[r]:i})}),{}):e}function fd(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((n=>{n.endsWith("Id")?fd(e,e.get(t[n]),r):n.endsWith("Ids")&&t[n].forEach((t=>{fd(e,e.get(t),r)}))})))}function md(e,t,r){const n=r?"outbound-rtp":"inbound-rtp",i=new Map;if(null===t)return i;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((r=>{r.type===n&&r.trackId===t.id&&fd(e,r,i)}))})),i}const gd=ld;function vd(e,t){const r=e&&e.navigator;if(!r.mediaDevices)return;const n=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((r=>{if("require"===r||"advanced"===r||"mediaSource"===r)return;const n="object"==typeof e[r]?e[r]:{ideal:e[r]};void 0!==n.exact&&"number"==typeof n.exact&&(n.min=n.max=n.exact);const i=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==n.ideal){t.optional=t.optional||[];let e={};"number"==typeof n.ideal?(e[i("min",r)]=n.ideal,t.optional.push(e),e={},e[i("max",r)]=n.ideal,t.optional.push(e)):(e[i("",r)]=n.ideal,t.optional.push(e))}void 0!==n.exact&&"number"!=typeof n.exact?(t.mandatory=t.mandatory||{},t.mandatory[i("",r)]=n.exact):["min","max"].forEach((e=>{void 0!==n[e]&&(t.mandatory=t.mandatory||{},t.mandatory[i(e,r)]=n[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},i=function(e,i){if(t.version>=61)return i(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=n(e.audio)}if(e&&"object"==typeof e.video){let s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const o=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||o)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let o=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!o&&r.length&&t.includes("back")&&(o=r[r.length-1]),o&&(e.video.deviceId=s.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=n(e.video),gd("chrome: "+JSON.stringify(e)),i(e)}))}e.video=n(e.video)}return gd("chrome: "+JSON.stringify(e)),i(e)},s=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(r.getUserMedia=function(e,t,n){i(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{n&&n(s(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return i(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(s(e))))))}}}function bd(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function yd(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(r=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.track.id)):{track:r.track};const i=new Event("track");i.track=r.track,i.receiver=n,i.transceiver={receiver:n},i.streams=[t.stream],this.dispatchEvent(i)})),t.stream.getTracks().forEach((r=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.id)):{track:r};const i=new Event("track");i.track=r,i.receiver=n,i.transceiver={receiver:n},i.streams=[t.stream],this.dispatchEvent(i)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else ad(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function _d(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){let i=r.apply(this,arguments);return i||(i=t(this,e),this._senders.push(i)),i};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){n.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function wd(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,n]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const i=function(e){const t={};return e.result().forEach((e=>{const r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{r[t]=e.stat(t)})),t[r.id]=r})),t},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const n=function(e){r(s(i(e)))};return t.apply(this,[n,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(s(i(t)))},r])})).then(r,n)}}function Sd(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>md(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),ad(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>md(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,r,n;return this.getSenders().forEach((r=>{r.track===e&&(t?n=!0:t=r)})),this.getReceivers().forEach((t=>(t.track===e&&(r?n=!0:r=t),t.track===e))),n||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function Cd(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const n=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(n)&&this._shimmedLocalStreams[r.id].push(n):this._shimmedLocalStreams[r.id]=[r,n],n};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();r.apply(this,arguments);const n=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(n)};const n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],n.apply(this,arguments)};const i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const r=this._shimmedLocalStreams[t].indexOf(e);-1!==r&&this._shimmedLocalStreams[t].splice(r,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),i.apply(this,arguments)}}function Rd(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return Cd(e);const r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}n.apply(this,[t])};const i=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const n=e._reverseStreams[t],i=e._streams[n.id];r=r.replace(new RegExp(i.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:r})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,r){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const n=[].slice.call(arguments,1);if(1!==n.length||!n[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find((e=>e.track===t)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const i=this._streams[r.id];if(i)i.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const n=new e.MediaStream([t]);this._streams[r.id]=n,this._reverseStreams[n.id]=r,this.addStream(n)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],n={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[t=>{const r=s(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=n[t]}));const o=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const n=e._reverseStreams[t],i=e._streams[n.id];r=r.replace(new RegExp(n.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:r})}(this,arguments[0]),o.apply(this,arguments)):o.apply(this,arguments)};const a=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=a.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((r=>{this._streams[r].getTracks().find((t=>e.track===t))&&(t=this._streams[r])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Pd(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]}))}function Td(e,t){ad(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var kd=Object.freeze({__proto__:null,fixNegotiationNeeded:Td,shimAddTrackRemoveTrack:Rd,shimAddTrackRemoveTrackWithNative:Cd,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then((t=>{const n=r.video&&r.video.width,i=r.video&&r.video.height,s=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||3}},n&&(r.video.mandatory.maxWidth=n),i&&(r.video.mandatory.maxHeight=i),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))},shimGetSendersWithDtmf:_d,shimGetStats:wd,shimGetUserMedia:vd,shimMediaStream:bd,shimOnTrack:yd,shimPeerConnection:Pd,shimSenderReceiverGetStats:Sd});function Ed(e,t){const r=e&&e.navigator,n=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,n){ud("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(e).then(t,n)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){const e=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])},t=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(r){return"object"==typeof r&&"object"==typeof r.audio&&(r=JSON.parse(JSON.stringify(r)),e(r.audio,"autoGainControl","mozAutoGainControl"),e(r.audio,"noiseSuppression","mozNoiseSuppression")),t(r)},n&&n.prototype.getSettings){const t=n.prototype.getSettings;n.prototype.getSettings=function(){const r=t.apply(this,arguments);return e(r,"mozAutoGainControl","autoGainControl"),e(r,"mozNoiseSuppression","noiseSuppression"),r}}if(n&&n.prototype.applyConstraints){const t=n.prototype.applyConstraints;n.prototype.applyConstraints=function(r){return"audio"===this.kind&&"object"==typeof r&&(r=JSON.parse(JSON.stringify(r)),e(r,"autoGainControl","mozAutoGainControl"),e(r,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[r])}}}}function Od(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Dd(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]}));const r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,i,s]=arguments;return n.apply(this,[e||null]).then((e=>{if(t.version<53&&!i)try{e.forEach((e=>{e.type=r[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,n)=>{e.set(n,Object.assign({},t,{type:r[t.type]||t.type}))}))}return e})).then(i,s)}}function Id(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function xd(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),ad(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function Md(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){ud("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function jd(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function Ld(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]),e=[...e];const r=e.length>0;r&&e.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const n=t.apply(this,arguments);if(r){const{sender:t}=n,r=t.getParameters();(!("encodings"in r)||1===r.encodings.length&&0===Object.keys(r.encodings[0]).length)&&(r.encodings=e,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return n})}function Ad(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function Nd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function Bd(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}var Fd=Object.freeze({__proto__:null,shimAddTransceiver:Ld,shimCreateAnswer:Bd,shimCreateOffer:Nd,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===r.video?r.video={mediaSource:t}:r.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(r)})},shimGetParameters:Ad,shimGetUserMedia:Ed,shimOnTrack:Od,shimPeerConnection:Dd,shimRTCDataChannel:jd,shimReceiverGetStats:xd,shimRemoveStream:Md,shimSenderGetStats:Id});function zd(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((r=>t.call(this,r,e))),e.getVideoTracks().forEach((r=>t.call(this,r,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...r){return r&&r.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const r=e.getTracks();this.getSenders().forEach((e=>{r.includes(e.track)&&this.removeTrack(e)}))})}}function Vd(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const r=new Event("addstream");r.stream=t,e.dispatchEvent(r)}))}),t.apply(e,arguments)}}}function Ud(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,n=t.createAnswer,i=t.setLocalDescription,s=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){const n=arguments.length>=2?arguments[2]:arguments[0],i=r.apply(this,[n]);return t?(i.then(e,t),Promise.resolve()):i},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],i=n.apply(this,[r]);return t?(i.then(e,t),Promise.resolve()):i};let a=function(e,t,r){const n=i.apply(this,[e]);return r?(n.then(t,r),Promise.resolve()):n};t.setLocalDescription=a,a=function(e,t,r){const n=s.apply(this,[e]);return r?(n.then(t,r),Promise.resolve()):n},t.setRemoteDescription=a,a=function(e,t,r){const n=o.apply(this,[e]);return r?(n.then(t,r),Promise.resolve()):n},t.addIceCandidate=a}function $d(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>r(Gd(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,n){t.mediaDevices.getUserMedia(e).then(r,n)}.bind(t))}function Gd(e){return e&&void 0!==e.video?Object.assign({},e,{video:hd(e.video)}):e}function qd(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){const t=[];for(let r=0;r<e.iceServers.length;r++){let n=e.iceServers[r];void 0===n.urls&&n.url?(ud("RTCIceServer.url","RTCIceServer.urls"),n=JSON.parse(JSON.stringify(n)),n.urls=n.url,delete n.url,t.push(n)):t.push(e.iceServers[r])}e.iceServers=t}return new t(e,r)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function Hd(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Wd(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const r=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&r?"sendrecv"===r.direction?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":"recvonly"===r.direction&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):!0!==e.offerToReceiveVideo||r||this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function Kd(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var Jd=Object.freeze({__proto__:null,shimAudioContext:Kd,shimCallbacksAPI:Ud,shimConstraints:Gd,shimCreateOfferLegacy:Wd,shimGetUserMedia:$d,shimLocalStreamsAPI:zd,shimRTCIceServerUrls:qd,shimRemoteStreamsAPI:Vd,shimTrackEventTransceiver:Hd}),Qd={exports:{}};!function(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},t.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},t.getDescription=function(e){const r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){const r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((e=>0===e.indexOf(r)))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const r={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":r.relatedAddress=t[e+1];break;case"rport":r.relatedPort=parseInt(t[e+1],10);break;case"tcptype":r.tcpType=t[e+1];break;case"ufrag":r.ufrag=t[e+1],r.usernameFragment=t[e+1];break;default:void 0===r[t[e]]&&(r[t[e]]=t[e+1])}return r},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const r=e.component;"rtp"===r?t.push(1):"rtcp"===r?t.push(2):t.push(r),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const n=e.type;return t.push("typ"),t.push(n),"host"!==n&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const r={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),r.name=t[0],r.clockRate=parseInt(t[1],10),r.channels=3===t.length?parseInt(t[2],10):1,r.numChannels=r.channels,r},t.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let r;const n=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<n.length;e++)r=n[e].trim().split("="),t[r[0].trim()]=r[1];return t},t.writeFmtp=function(e){let t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const n=[];Object.keys(e.parameters).forEach((t=>{void 0!==e.parameters[t]?n.push(t+"="+e.parameters[t]):n.push(t)})),t+="a=fmtp:"+r+" "+n.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),r={ssrc:parseInt(e.substring(7,t),10)},n=e.indexOf(":",t);return n>-1?(r.attribute=e.substring(t+1,n),r.value=e.substring(n+1)):r.attribute=e.substring(t+1),r},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},t.getMid=function(e){const r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){const t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,r){return t.matchPrefix(e+r,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,r){const n=t.matchPrefix(e+r,"a=ice-ufrag:")[0],i=t.matchPrefix(e+r,"a=ice-pwd:")[0];return n&&i?{usernameFragment:n.substring(12),password:i.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=t.splitLines(e)[0].split(" ");r.profile=n[2];for(let i=3;i<n.length;i++){const s=n[i],o=t.matchPrefix(e,"a=rtpmap:"+s+" ")[0];if(o){const n=t.parseRtpMap(o),i=t.matchPrefix(e,"a=fmtp:"+s+" ");switch(n.parameters=i.length?t.parseFmtp(i[0]):{},n.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),r.codecs.push(n),n.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(n.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach((e=>{r.headerExtensions.push(t.parseExtmap(e))}));const i=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return r.codecs.forEach((e=>{i.forEach((t=>{e.rtcpFeedback.find((e=>e.type===t.type&&e.parameter===t.parameter))||e.rtcpFeedback.push(t)}))})),r},t.writeRtpDescription=function(e,r){let n="";n+="m="+e+" ",n+=r.codecs.length>0?"9":"0",n+=" "+(r.profile||"UDP/TLS/RTP/SAVPF")+" ",n+=r.codecs.map((e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType)).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",r.codecs.forEach((e=>{n+=t.writeRtpMap(e),n+=t.writeFmtp(e),n+=t.writeRtcpFb(e)}));let i=0;return r.codecs.forEach((e=>{e.maxptime>i&&(i=e.maxptime)})),i>0&&(n+="a=maxptime:"+i+"\r\n"),r.headerExtensions&&r.headerExtensions.forEach((e=>{n+=t.writeExtmap(e)})),n},t.parseRtpEncodingParameters=function(e){const r=[],n=t.parseRtpParameters(e),i=-1!==n.fecMechanisms.indexOf("RED"),s=-1!==n.fecMechanisms.indexOf("ULPFEC"),o=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),a=o.length>0&&o[0].ssrc;let c;const d=t.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substring(17).split(" ").map((e=>parseInt(e,10)))));d.length>0&&d[0].length>1&&d[0][0]===a&&(c=d[0][1]),n.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:a,codecPayloadType:parseInt(e.parameters.apt,10)};a&&c&&(t.rtx={ssrc:c}),r.push(t),i&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:a,mechanism:s?"red+ulpfec":"red"},r.push(t))}})),0===r.length&&a&&r.push({ssrc:a});let l=t.matchPrefix(e,"b=");return l.length&&(l=0===l[0].indexOf("b=TIAS:")?parseInt(l[0].substring(7),10):0===l[0].indexOf("b=AS:")?1e3*parseInt(l[0].substring(5),10)*.95-16e3:void 0,r.forEach((e=>{e.maxBitrate=l}))),r},t.parseRtcpParameters=function(e){const r={},n=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];n&&(r.cname=n.value,r.ssrc=n.ssrc);const i=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=i.length>0,r.compound=0===i.length;const s=t.matchPrefix(e,"a=rtcp-mux");return r.mux=s.length>0,r},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let r;const n=t.matchPrefix(e,"a=msid:");if(1===n.length)return r=n[0].substring(7).split(" "),{stream:r[0],track:r[1]};const i=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return i.length>0?(r=i[0].value.split(" "),{stream:r[0],track:r[1]}):void 0},t.parseSctpDescription=function(e){const r=t.parseMLine(e),n=t.matchPrefix(e,"a=max-message-size:");let i;n.length>0&&(i=parseInt(n[0].substring(19),10)),isNaN(i)&&(i=65536);const s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substring(12),10),protocol:r.fmt,maxMessageSize:i};const o=t.matchPrefix(e,"a=sctpmap:");if(o.length>0){const e=o[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:i}}},t.writeSctpDescription=function(e,t){let r=[];return r="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,22)},t.writeSessionBoilerplate=function(e,r,n){let i;const s=void 0!==r?r:2;i=e||t.generateSessionId();return"v=0\r\no="+(n||"thisisadapterortc")+" "+i+" "+s+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,r){const n=t.splitLines(e);for(let e=0;e<n.length;e++)switch(n[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[e].substring(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const r=t.splitLines(e)[0].substring(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){const r=t.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const r=t.splitLines(e);for(let e=0;e<r.length;e++)if(r[e].length<2||"="!==r[e].charAt(1))return!1;return!0},e.exports=t}(Qd);var Yd=Qd.exports,Zd=c(Yd),Xd=i({__proto__:null,default:Zd},[Yd]);function el(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substring(2)),e.candidate&&e.candidate.length){const r=new t(e),n=Zd.parseCandidate(e.candidate);for(const e in n)e in r||Object.defineProperty(r,e,{value:n[e]});return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,ad(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function tl(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||ad(e,"icecandidate",(e=>{if(e.candidate){const t=Zd.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function rl(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(function(e){if(!e||!e.sdp)return!1;const t=Zd.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=Zd.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))}(arguments[0])){const e=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const r=parseInt(t[1],10);return r!=r?-1:r}(arguments[0]),r=function(e){let r=65536;return"firefox"===t.browser&&(r=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),r}(e),n=function(e,r){let n=65536;"firefox"===t.browser&&57===t.version&&(n=65535);const i=Zd.matchPrefix(e.sdp,"a=max-message-size:");return i.length>0?n=parseInt(i[0].substring(19),10):"firefox"===t.browser&&-1!==r&&(n=2147483637),n}(arguments[0],e);let i;i=0===r&&0===n?Number.POSITIVE_INFINITY:0===r||0===n?Math.max(r,n):Math.min(r,n);const s={};Object.defineProperty(s,"maxMessageSize",{get:()=>i}),this._sctp=s}return r.apply(this,arguments)}}function nl(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const r=e.send;e.send=function(){const n=arguments[0],i=n.length||n.size||n.byteLength;if("open"===e.readyState&&t.sctp&&i>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}const r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=r.apply(this,arguments);return t(e,this),e},ad(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function il(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}}))}function sl(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const r=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:r}):t.sdp=r}return r.apply(this,arguments)}}function ol(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.addIceCandidate;r&&0!==r.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function al(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.setLocalDescription;r&&0!==r.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return r.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}if(e.sdp||"offer"!==e.type&&"answer"!==e.type)return r.apply(this,[e]);return("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then((e=>r.apply(this,[e])))})}var cl=Object.freeze({__proto__:null,removeExtmapAllowMixed:sl,shimAddIceCandidateNullOrEmpty:ol,shimConnectionState:il,shimMaxMessageSize:rl,shimParameterlessSetLocalDescription:al,shimRTCIceCandidate:el,shimRTCIceCandidateRelayProtocol:tl,shimSendThrowTypeError:nl});const dl=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const r=ld,n=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=od(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=od(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=od(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),i={browserDetails:n,commonShim:cl,extractVersion:od,disableLog:cd,disableWarnings:dd,sdp:Xd};switch(n.browser){case"chrome":if(!kd||!Pd||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),i;if(null===n.version)return r("Chrome shim can not determine version, not shimming."),i;r("adapter.js shimming chrome."),i.browserShim=kd,ol(e,n),al(e),vd(e,n),bd(e),Pd(e,n),yd(e),Rd(e,n),_d(e),wd(e),Sd(e),Td(e,n),el(e),tl(e),il(e),rl(e,n),nl(e),sl(e,n);break;case"firefox":if(!Fd||!Dd||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),i;r("adapter.js shimming firefox."),i.browserShim=Fd,ol(e,n),al(e),Ed(e,n),Dd(e,n),Od(e),Md(e),Id(e),xd(e),jd(e),Ld(e),Ad(e),Nd(e),Bd(e),el(e),il(e),rl(e,n),nl(e);break;case"safari":if(!Jd||!t.shimSafari)return r("Safari shim is not included in this adapter release."),i;r("adapter.js shimming safari."),i.browserShim=Jd,ol(e,n),al(e),qd(e),Wd(e),Ud(e),zd(e),Vd(e),Hd(e),$d(e),Kd(e),el(e),tl(e),rl(e,n),nl(e),sl(e,n);break;default:r("Unsupported browser!")}return i}({window:"undefined"==typeof window?void 0:window});function ll(e){return{id:e.id,tracks:e.getTracks().map((function(e){return{id:e.id,kind:e.kind,label:e.label,enabled:e.enabled,muted:e.muted,readyState:e.readyState}}))}}var ul=function(e,t,r){var n=0,i=!!window.mozRTCPeerConnection,s=!!window.RTCIceGatherer,o={};if(r.forEach((function(r){if(window[r+"RTCPeerConnection"]&&("webkit"!==r||!s)){var a=window[r+"RTCPeerConnection"],c=function(r,c){var d=new a(r,c),l="PC_"+n++;d.__rtcStatsId=l,r||(r={nullConfig:!0}),((r=JSON.parse(JSON.stringify(r)))&&r.iceServers||[]).forEach((function(e){delete e.credential})),r.browserType=i?"moz":s?"edge":"webkit",e("create",l,r),c&&e("constraints",l,c),d.addEventListener("icecandidate",(function(t){e("onicecandidate",l,t.candidate)})),d.addEventListener("addstream",(function(t){e("onaddstream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("track",(function(t){e("ontrack",l,t.track.kind+":"+t.track.id+" "+t.streams.map((function(e){return"stream:"+e.id})))})),d.addEventListener("removestream",(function(t){e("onremovestream",l,t.stream.id+" "+t.stream.getTracks().map((function(e){return e.kind+":"+e.id})))})),d.addEventListener("signalingstatechange",(function(){e("onsignalingstatechange",l,d.signalingState)})),d.addEventListener("iceconnectionstatechange",(function(){e("oniceconnectionstatechange",l,d.iceConnectionState)})),d.addEventListener("icegatheringstatechange",(function(){e("onicegatheringstatechange",l,d.iceGatheringState)})),d.addEventListener("connectionstatechange",(function(){e("onconnectionstatechange",l,d.connectionState)})),d.addEventListener("negotiationneeded",(function(){e("onnegotiationneeded",l,void 0)})),d.addEventListener("datachannel",(function(t){e("ondatachannel",l,[t.channel.id,t.channel.label])}));var u=function(){d.getStats(null).then((function(t){var r=function(e){if(!e.entries)return e;var t={};return e.forEach((function(e,r){t[r]=e})),t}(t),n=JSON.parse(JSON.stringify(r));e("getstats",l,function(e,t){t=JSON.parse(JSON.stringify(t)),Object.keys(t).forEach((function(r){var n=t[r];delete n.id,e[r]&&Object.keys(n).forEach((function(i){n[i]===e[r][i]&&delete t[r][i],(0===Object.keys(n).length||1===Object.keys(n).length&&n.timestamp)&&delete t[r]}))}));var r=-1/0;return Object.keys(t).forEach((function(e){var n=t[e];n.timestamp>r&&(r=n.timestamp)})),Object.keys(t).forEach((function(e){var n=t[e];n.timestamp===r&&(n.timestamp=0)})),t.timestamp=r,t}(o[l]||{},r)),o[l]=n}))};if(!s&&t)var p=window.setInterval((function(){"closed"!==d.signalingState?u():window.clearInterval(p)}),t);return s||d.addEventListener("connectionstatechange",(function(){"connected"!==d.connectionState&&"failed"!==d.connectionState||u()})),d};["createDataChannel","close"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){return e(t,this.__rtcStatsId,arguments),r.apply(this,arguments)})})),["addStream","removeStream"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var n=arguments[0],i=n.getTracks().map((function(e){return e.kind+":"+e.id})).join(",");return e(t,this.__rtcStatsId,n.id+" "+i),r.apply(this,arguments)})})),["addTrack"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var n=arguments[0],i=[].slice.call(arguments,1);return e(t,this.__rtcStatsId,n.kind+":"+n.id+" "+(i.map((function(e){return"stream:"+e.id})).join(";")||"-")),r.apply(this,arguments)})})),["removeTrack"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var n=arguments[0].track;return e(t,this.__rtcStatsId,n?n.kind+":"+n.id:"null"),r.apply(this,arguments)})})),["createOffer","createAnswer"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var n,i=this.__rtcStatsId,s=arguments;return 1===arguments.length&&"object"==typeof arguments[0]?n=arguments[0]:3===arguments.length&&"object"==typeof arguments[2]&&(n=arguments[2]),e(t,this.__rtcStatsId,n),r.apply(this,n?[n]:void 0).then((function(r){if(e(t+"OnSuccess",i,r),!(s.length>0&&"function"==typeof s[0]))return r;s[0].apply(null,[r])}),(function(r){if(e(t+"OnFailure",i,r.toString()),!(s.length>1&&"function"==typeof s[1]))throw r;s[1].apply(null,[r])}))})})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var r=a.prototype[t];r&&(a.prototype[t]=function(){var n=this.__rtcStatsId,i=arguments;return e(t,this.__rtcStatsId,i[0]),r.apply(this,[i[0]]).then((function(){e(t+"OnSuccess",n,void 0),i.length>=2&&"function"==typeof i[1]&&i[1].apply(null,[])}),(function(r){if(e(t+"OnFailure",n,r.toString()),!(i.length>=3&&"function"==typeof i[2]))throw r;i[2].apply(null,[r])}))})})),a.generateCertificate&&Object.defineProperty(c,"generateCertificate",{get:function(){return arguments.length?a.generateCertificate.apply(null,arguments):a.generateCertificate}}),window[r+"RTCPeerConnection"]=c,window[r+"RTCPeerConnection"].prototype=a.prototype}})),r.forEach((function(t){var r=t+(t.length?"GetUserMedia":"getUserMedia");if(navigator[r]){var n=navigator[r].bind(navigator);navigator[r]=function(){e("getUserMedia",null,arguments[0]);var t=arguments[1],r=arguments[2];n(arguments[0],(function(r){e("getUserMediaOnSuccess",null,ll(r)),t&&t(r)}),(function(t){e("getUserMediaOnFailure",null,t.name),r&&r(t)}))}.bind(navigator)}})),navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){var a=navigator.mediaDevices.getUserMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getUserMedia=function(){return e("navigator.mediaDevices.getUserMedia",null,arguments[0]),a.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getUserMediaOnSuccess",null,ll(t)),t}),(function(t){return e("navigator.mediaDevices.getUserMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia){var c=navigator.mediaDevices.getDisplayMedia.bind(navigator.mediaDevices);navigator.mediaDevices.getDisplayMedia=function(){return e("navigator.mediaDevices.getDisplayMedia",null,arguments[0]),c.apply(navigator.mediaDevices,arguments).then((function(t){return e("navigator.mediaDevices.getDisplayMediaOnSuccess",null,ll(t)),t}),(function(t){return e("navigator.mediaDevices.getDisplayMediaOnFailure",null,t.name),Promise.reject(t)}))}.bind(navigator.mediaDevices)}return{resetDelta(){o={}}}},pl=c(ul);let hl;const fl=new Uint8Array(16);function ml(){if(!hl&&(hl="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!hl))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return hl(fl)}const gl=[];for(let tk=0;tk<256;++tk)gl.push((tk+256).toString(16).slice(1));var vl={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function bl(e,t,r){if(vl.randomUUID&&!t&&!e)return vl.randomUUID();const n=(e=e||{}).random||(e.rng||ml)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(let e=0;e<16;++e)t[r+e]=n[e];return t}return function(e,t=0){return gl[e[t+0]]+gl[e[t+1]]+gl[e[t+2]]+gl[e[t+3]]+"-"+gl[e[t+4]]+gl[e[t+5]]+"-"+gl[e[t+6]]+gl[e[t+7]]+"-"+gl[e[t+8]]+gl[e[t+9]]+"-"+gl[e[t+10]]+gl[e[t+11]]+gl[e[t+12]]+gl[e[t+13]]+gl[e[t+14]]+gl[e[t+15]]}(n)}var yl={},_l={},wl={};Object.defineProperty(wl,"__esModule",{value:!0}),wl.isCorrect=wl.isInSubnet=void 0,wl.isInSubnet=function(e){return!(this.subnetMask<e.subnetMask)&&this.mask(e.subnetMask)===e.mask()},wl.isCorrect=function(e){return function(){return this.addressMinusSuffix===this.correctForm()&&(this.subnetMask===e&&!this.parsedSubnet||this.parsedSubnet===String(this.subnetMask))}};var Sl={};Object.defineProperty(Sl,"__esModule",{value:!0}),Sl.RE_SUBNET_STRING=Sl.RE_ADDRESS=Sl.GROUPS=Sl.BITS=void 0,Sl.BITS=32,Sl.GROUPS=4,Sl.RE_ADDRESS=/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g,Sl.RE_SUBNET_STRING=/\/\d{1,2}$/;var Cl={};Object.defineProperty(Cl,"__esModule",{value:!0}),Cl.AddressError=void 0;class Rl extends Error{constructor(e,t){super(e),this.name="AddressError",null!==t&&(this.parseMessage=t)}}Cl.AddressError=Rl;var Pl,Tl={exports:{}};Pl=Tl,function(){var e;function t(e,t,r){null!=e&&("number"==typeof e?this.fromNumber(e,t,r):null==t&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,t))}function r(){return new t(null)}var n="undefined"!=typeof navigator;n&&"Microsoft Internet Explorer"==navigator.appName?(t.prototype.am=function(e,t,r,n,i,s){for(var o=32767&t,a=t>>15;--s>=0;){var c=32767&this[e],d=this[e++]>>15,l=a*c+d*o;i=((c=o*c+((32767&l)<<15)+r[n]+(1073741823&i))>>>30)+(l>>>15)+a*d+(i>>>30),r[n++]=1073741823&c}return i},e=30):n&&"Netscape"!=navigator.appName?(t.prototype.am=function(e,t,r,n,i,s){for(;--s>=0;){var o=t*this[e++]+r[n]+i;i=Math.floor(o/67108864),r[n++]=67108863&o}return i},e=26):(t.prototype.am=function(e,t,r,n,i,s){for(var o=16383&t,a=t>>14;--s>=0;){var c=16383&this[e],d=this[e++]>>14,l=a*c+d*o;i=((c=o*c+((16383&l)<<14)+r[n]+i)>>28)+(l>>14)+a*d,r[n++]=268435455&c}return i},e=28),t.prototype.DB=e,t.prototype.DM=(1<<e)-1,t.prototype.DV=1<<e,t.prototype.FV=Math.pow(2,52),t.prototype.F1=52-e,t.prototype.F2=2*e-52;var i,s,o="0123456789abcdefghijklmnopqrstuvwxyz",a=new Array;for(i="0".charCodeAt(0),s=0;s<=9;++s)a[i++]=s;for(i="a".charCodeAt(0),s=10;s<36;++s)a[i++]=s;for(i="A".charCodeAt(0),s=10;s<36;++s)a[i++]=s;function c(e){return o.charAt(e)}function d(e,t){var r=a[e.charCodeAt(t)];return null==r?-1:r}function l(e){var t=r();return t.fromInt(e),t}function u(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function p(e){this.m=e}function h(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<<e.DB-15)-1,this.mt2=2*e.t}function f(e,t){return e&t}function m(e,t){return e|t}function g(e,t){return e^t}function v(e,t){return e&~t}function b(e){if(0==e)return-1;var t=0;return 0==(65535&e)&&(e>>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function y(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function _(){}function w(e){return e}function S(e){this.r2=r(),this.q3=r(),t.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}p.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},p.prototype.revert=function(e){return e},p.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},p.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},p.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},h.prototype.convert=function(e){var n=r();return e.abs().dlShiftTo(this.m.t,n),n.divRemTo(this.m,null,n),e.s<0&&n.compareTo(t.ZERO)>0&&this.m.subTo(n,n),n},h.prototype.revert=function(e){var t=r();return e.copyTo(t),this.reduce(t),t},h.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t<this.m.t;++t){var r=32767&e[t],n=r*this.mpl+((r*this.mph+(e[t]>>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,n,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},h.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},h.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},t.prototype.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},t.prototype.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+this.DV:this.t=0},t.prototype.fromString=function(e,r){var n;if(16==r)n=4;else if(8==r)n=3;else if(256==r)n=8;else if(2==r)n=1;else if(32==r)n=5;else{if(4!=r)return void this.fromRadix(e,r);n=2}this.t=0,this.s=0;for(var i=e.length,s=!1,o=0;--i>=0;){var a=8==n?255&e[i]:d(e,i);a<0?"-"==e.charAt(i)&&(s=!0):(s=!1,0==o?this[this.t++]=a:o+n>this.DB?(this[this.t-1]|=(a&(1<<this.DB-o)-1)<<o,this[this.t++]=a>>this.DB-o):this[this.t-1]|=a<<o,(o+=n)>=this.DB&&(o-=this.DB))}8==n&&0!=(128&e[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<<this.DB-o)-1<<o)),this.clamp(),s&&t.ZERO.subTo(this,this)},t.prototype.clamp=function(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t},t.prototype.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},t.prototype.drShiftTo=function(e,t){for(var r=e;r<this.t;++r)t[r-e]=this[r];t.t=Math.max(this.t-e,0),t.s=this.s},t.prototype.lShiftTo=function(e,t){var r,n=e%this.DB,i=this.DB-n,s=(1<<i)-1,o=Math.floor(e/this.DB),a=this.s<<n&this.DM;for(r=this.t-1;r>=0;--r)t[r+o+1]=this[r]>>i|a,a=(this[r]&s)<<n;for(r=o-1;r>=0;--r)t[r]=0;t[o]=a,t.t=this.t+o+1,t.s=this.s,t.clamp()},t.prototype.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var n=e%this.DB,i=this.DB-n,s=(1<<n)-1;t[0]=this[r]>>n;for(var o=r+1;o<this.t;++o)t[o-r-1]|=(this[o]&s)<<i,t[o-r]=this[o]>>n;n>0&&(t[this.t-r-1]|=(this.s&s)<<i),t.t=this.t-r,t.clamp()}},t.prototype.subTo=function(e,t){for(var r=0,n=0,i=Math.min(e.t,this.t);r<i;)n+=this[r]-e[r],t[r++]=n&this.DM,n>>=this.DB;if(e.t<this.t){for(n-=e.s;r<this.t;)n+=this[r],t[r++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;r<e.t;)n-=e[r],t[r++]=n&this.DM,n>>=this.DB;n-=e.s}t.s=n<0?-1:0,n<-1?t[r++]=this.DV+n:n>0&&(t[r++]=n),t.t=r,t.clamp()},t.prototype.multiplyTo=function(e,r){var n=this.abs(),i=e.abs(),s=n.t;for(r.t=s+i.t;--s>=0;)r[s]=0;for(s=0;s<i.t;++s)r[s+n.t]=n.am(0,i[s],r,s,0,n.t);r.s=0,r.clamp(),this.s!=e.s&&t.ZERO.subTo(r,r)},t.prototype.squareTo=function(e){for(var t=this.abs(),r=e.t=2*t.t;--r>=0;)e[r]=0;for(r=0;r<t.t-1;++r){var n=t.am(r,t[r],e,2*r,0,1);(e[r+t.t]+=t.am(r+1,2*t[r],e,2*r+1,n,t.t-r-1))>=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},t.prototype.divRemTo=function(e,n,i){var s=e.abs();if(!(s.t<=0)){var o=this.abs();if(o.t<s.t)return null!=n&&n.fromInt(0),void(null!=i&&this.copyTo(i));null==i&&(i=r());var a=r(),c=this.s,d=e.s,l=this.DB-u(s[s.t-1]);l>0?(s.lShiftTo(l,a),o.lShiftTo(l,i)):(s.copyTo(a),o.copyTo(i));var p=a.t,h=a[p-1];if(0!=h){var f=h*(1<<this.F1)+(p>1?a[p-2]>>this.F2:0),m=this.FV/f,g=(1<<this.F1)/f,v=1<<this.F2,b=i.t,y=b-p,_=null==n?r():n;for(a.dlShiftTo(y,_),i.compareTo(_)>=0&&(i[i.t++]=1,i.subTo(_,i)),t.ONE.dlShiftTo(p,_),_.subTo(a,a);a.t<p;)a[a.t++]=0;for(;--y>=0;){var w=i[--b]==h?this.DM:Math.floor(i[b]*m+(i[b-1]+v)*g);if((i[b]+=a.am(0,w,i,y,0,p))<w)for(a.dlShiftTo(y,_),i.subTo(_,i);i[b]<--w;)i.subTo(_,i)}null!=n&&(i.drShiftTo(p,n),c!=d&&t.ZERO.subTo(n,n)),i.t=p,i.clamp(),l>0&&i.rShiftTo(l,i),c<0&&t.ZERO.subTo(i,i)}}},t.prototype.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},t.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},t.prototype.exp=function(e,n){if(e>4294967295||e<1)return t.ONE;var i=r(),s=r(),o=n.convert(this),a=u(e)-1;for(o.copyTo(i);--a>=0;)if(n.sqrTo(i,s),(e&1<<a)>0)n.mulTo(s,o,i);else{var c=i;i=s,s=c}return n.revert(i)},t.prototype.toString=function(e){if(this.s<0)return"-"+this.negate().toString(e);var t;if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,n=(1<<t)-1,i=!1,s="",o=this.t,a=this.DB-o*this.DB%t;if(o-- >0)for(a<this.DB&&(r=this[o]>>a)>0&&(i=!0,s=c(r));o>=0;)a<t?(r=(this[o]&(1<<a)-1)<<t-a,r|=this[--o]>>(a+=this.DB-t)):(r=this[o]>>(a-=t)&n,a<=0&&(a+=this.DB,--o)),r>0&&(i=!0),i&&(s+=c(r));return i?s:"0"},t.prototype.negate=function(){var e=r();return t.ZERO.subTo(this,e),e},t.prototype.abs=function(){return this.s<0?this.negate():this},t.prototype.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},t.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+u(this[this.t-1]^this.s&this.DM)},t.prototype.mod=function(e){var n=r();return this.abs().divRemTo(e,null,n),this.s<0&&n.compareTo(t.ZERO)>0&&e.subTo(n,n),n},t.prototype.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new p(t):new h(t),this.exp(e,r)},t.ZERO=l(0),t.ONE=l(1),_.prototype.convert=w,_.prototype.revert=w,_.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},_.prototype.sqrTo=function(e,t){e.squareTo(t)},S.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=r();return e.copyTo(t),this.reduce(t),t},S.prototype.revert=function(e){return e},S.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},S.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},S.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var C,R,P,T=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],k=(1<<26)/T[T.length-1];function E(){var e;e=(new Date).getTime(),R[P++]^=255&e,R[P++]^=e>>8&255,R[P++]^=e>>16&255,R[P++]^=e>>24&255,P>=L&&(P-=L)}if(t.prototype.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},t.prototype.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),n=Math.pow(e,t),i=l(n),s=r(),o=r(),a="";for(this.divRemTo(i,s,o);s.signum()>0;)a=(n+o.intValue()).toString(e).substr(1)+a,s.divRemTo(i,s,o);return o.intValue().toString(e)+a},t.prototype.fromRadix=function(e,r){this.fromInt(0),null==r&&(r=10);for(var n=this.chunkSize(r),i=Math.pow(r,n),s=!1,o=0,a=0,c=0;c<e.length;++c){var l=d(e,c);l<0?"-"==e.charAt(c)&&0==this.signum()&&(s=!0):(a=r*a+l,++o>=n&&(this.dMultiply(i),this.dAddOffset(a,0),o=0,a=0))}o>0&&(this.dMultiply(Math.pow(r,o)),this.dAddOffset(a,0)),s&&t.ZERO.subTo(this,this)},t.prototype.fromNumber=function(e,r,n){if("number"==typeof r)if(e<2)this.fromInt(1);else for(this.fromNumber(e,n),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),m,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(r);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(t.ONE.shiftLeft(e-1),this);else{var i=new Array,s=7&e;i.length=1+(e>>3),r.nextBytes(i),s>0?i[0]&=(1<<s)-1:i[0]=0,this.fromString(i,256)}},t.prototype.bitwiseTo=function(e,t,r){var n,i,s=Math.min(e.t,this.t);for(n=0;n<s;++n)r[n]=t(this[n],e[n]);if(e.t<this.t){for(i=e.s&this.DM,n=s;n<this.t;++n)r[n]=t(this[n],i);r.t=this.t}else{for(i=this.s&this.DM,n=s;n<e.t;++n)r[n]=t(i,e[n]);r.t=e.t}r.s=t(this.s,e.s),r.clamp()},t.prototype.changeBit=function(e,r){var n=t.ONE.shiftLeft(e);return this.bitwiseTo(n,r,n),n},t.prototype.addTo=function(e,t){for(var r=0,n=0,i=Math.min(e.t,this.t);r<i;)n+=this[r]+e[r],t[r++]=n&this.DM,n>>=this.DB;if(e.t<this.t){for(n+=e.s;r<this.t;)n+=this[r],t[r++]=n&this.DM,n>>=this.DB;n+=this.s}else{for(n+=this.s;r<e.t;)n+=e[r],t[r++]=n&this.DM,n>>=this.DB;n+=e.s}t.s=n<0?-1:0,n>0?t[r++]=n:n<-1&&(t[r++]=this.DV+n),t.t=r,t.clamp()},t.prototype.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},t.prototype.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},t.prototype.multiplyLowerTo=function(e,t,r){var n,i=Math.min(this.t+e.t,t);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i<n;++i)r[i+this.t]=this.am(0,e[i],r,i,0,this.t);for(n=Math.min(e.t,t);i<n;++i)this.am(0,e[i],r,i,0,t-i);r.clamp()},t.prototype.multiplyUpperTo=function(e,t,r){--t;var n=r.t=this.t+e.t-t;for(r.s=0;--n>=0;)r[n]=0;for(n=Math.max(t-this.t,0);n<e.t;++n)r[this.t+n-t]=this.am(t-n,e[n],r,0,0,this.t+n-t);r.clamp(),r.drShiftTo(1,r)},t.prototype.modInt=function(e){if(e<=0)return 0;var t=this.DV%e,r=this.s<0?e-1:0;if(this.t>0)if(0==t)r=this[0]%e;else for(var n=this.t-1;n>=0;--n)r=(t*r+this[n])%e;return r},t.prototype.millerRabin=function(e){var n=this.subtract(t.ONE),i=n.getLowestSetBit();if(i<=0)return!1;var s=n.shiftRight(i);(e=e+1>>1)>T.length&&(e=T.length);for(var o=r(),a=0;a<e;++a){o.fromInt(T[Math.floor(Math.random()*T.length)]);var c=o.modPow(s,this);if(0!=c.compareTo(t.ONE)&&0!=c.compareTo(n)){for(var d=1;d++<i&&0!=c.compareTo(n);)if(0==(c=c.modPowInt(2,this)).compareTo(t.ONE))return!1;if(0!=c.compareTo(n))return!1}}return!0},t.prototype.clone=function(){var e=r();return this.copyTo(e),e},t.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]},t.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24},t.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},t.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},t.prototype.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,n=this.DB-e*this.DB%8,i=0;if(e-- >0)for(n<this.DB&&(r=this[e]>>n)!=(this.s&this.DM)>>n&&(t[i++]=r|this.s<<this.DB-n);e>=0;)n<8?(r=(this[e]&(1<<n)-1)<<8-n,r|=this[--e]>>(n+=this.DB-8)):(r=this[e]>>(n-=8)&255,n<=0&&(n+=this.DB,--e)),0!=(128&r)&&(r|=-256),0==i&&(128&this.s)!=(128&r)&&++i,(i>0||r!=this.s)&&(t[i++]=r);return t},t.prototype.equals=function(e){return 0==this.compareTo(e)},t.prototype.min=function(e){return this.compareTo(e)<0?this:e},t.prototype.max=function(e){return this.compareTo(e)>0?this:e},t.prototype.and=function(e){var t=r();return this.bitwiseTo(e,f,t),t},t.prototype.or=function(e){var t=r();return this.bitwiseTo(e,m,t),t},t.prototype.xor=function(e){var t=r();return this.bitwiseTo(e,g,t),t},t.prototype.andNot=function(e){var t=r();return this.bitwiseTo(e,v,t),t},t.prototype.not=function(){for(var e=r(),t=0;t<this.t;++t)e[t]=this.DM&~this[t];return e.t=this.t,e.s=~this.s,e},t.prototype.shiftLeft=function(e){var t=r();return e<0?this.rShiftTo(-e,t):this.lShiftTo(e,t),t},t.prototype.shiftRight=function(e){var t=r();return e<0?this.lShiftTo(-e,t):this.rShiftTo(e,t),t},t.prototype.getLowestSetBit=function(){for(var e=0;e<this.t;++e)if(0!=this[e])return e*this.DB+b(this[e]);return this.s<0?this.t*this.DB:-1},t.prototype.bitCount=function(){for(var e=0,t=this.s&this.DM,r=0;r<this.t;++r)e+=y(this[r]^t);return e},t.prototype.testBit=function(e){var t=Math.floor(e/this.DB);return t>=this.t?0!=this.s:0!=(this[t]&1<<e%this.DB)},t.prototype.setBit=function(e){return this.changeBit(e,m)},t.prototype.clearBit=function(e){return this.changeBit(e,v)},t.prototype.flipBit=function(e){return this.changeBit(e,g)},t.prototype.add=function(e){var t=r();return this.addTo(e,t),t},t.prototype.subtract=function(e){var t=r();return this.subTo(e,t),t},t.prototype.multiply=function(e){var t=r();return this.multiplyTo(e,t),t},t.prototype.divide=function(e){var t=r();return this.divRemTo(e,t,null),t},t.prototype.remainder=function(e){var t=r();return this.divRemTo(e,null,t),t},t.prototype.divideAndRemainder=function(e){var t=r(),n=r();return this.divRemTo(e,t,n),new Array(t,n)},t.prototype.modPow=function(e,t){var n,i,s=e.bitLength(),o=l(1);if(s<=0)return o;n=s<18?1:s<48?3:s<144?4:s<768?5:6,i=s<8?new p(t):t.isEven()?new S(t):new h(t);var a=new Array,c=3,d=n-1,f=(1<<n)-1;if(a[1]=i.convert(this),n>1){var m=r();for(i.sqrTo(a[1],m);c<=f;)a[c]=r(),i.mulTo(m,a[c-2],a[c]),c+=2}var g,v,b=e.t-1,y=!0,_=r();for(s=u(e[b])-1;b>=0;){for(s>=d?g=e[b]>>s-d&f:(g=(e[b]&(1<<s+1)-1)<<d-s,b>0&&(g|=e[b-1]>>this.DB+s-d)),c=n;0==(1&g);)g>>=1,--c;if((s-=c)<0&&(s+=this.DB,--b),y)a[g].copyTo(o),y=!1;else{for(;c>1;)i.sqrTo(o,_),i.sqrTo(_,o),c-=2;c>0?i.sqrTo(o,_):(v=o,o=_,_=v),i.mulTo(_,a[g],o)}for(;b>=0&&0==(e[b]&1<<s);)i.sqrTo(o,_),v=o,o=_,_=v,--s<0&&(s=this.DB-1,--b)}return i.revert(o)},t.prototype.modInverse=function(e){var r=e.isEven();if(this.isEven()&&r||0==e.signum())return t.ZERO;for(var n=e.clone(),i=this.clone(),s=l(1),o=l(0),a=l(0),c=l(1);0!=n.signum();){for(;n.isEven();)n.rShiftTo(1,n),r?(s.isEven()&&o.isEven()||(s.addTo(this,s),o.subTo(e,o)),s.rShiftTo(1,s)):o.isEven()||o.subTo(e,o),o.rShiftTo(1,o);for(;i.isEven();)i.rShiftTo(1,i),r?(a.isEven()&&c.isEven()||(a.addTo(this,a),c.subTo(e,c)),a.rShiftTo(1,a)):c.isEven()||c.subTo(e,c),c.rShiftTo(1,c);n.compareTo(i)>=0?(n.subTo(i,n),r&&s.subTo(a,s),o.subTo(c,o)):(i.subTo(n,i),r&&a.subTo(s,a),c.subTo(o,c))}return 0!=i.compareTo(t.ONE)?t.ZERO:c.compareTo(e)>=0?c.subtract(e):c.signum()<0?(c.addTo(e,c),c.signum()<0?c.add(e):c):c},t.prototype.pow=function(e){return this.exp(e,new _)},t.prototype.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var n=t;t=r,r=n}var i=t.getLowestSetBit(),s=r.getLowestSetBit();if(s<0)return t;for(i<s&&(s=i),s>0&&(t.rShiftTo(s,t),r.rShiftTo(s,r));t.signum()>0;)(i=t.getLowestSetBit())>0&&t.rShiftTo(i,t),(i=r.getLowestSetBit())>0&&r.rShiftTo(i,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return s>0&&r.lShiftTo(s,r),r},t.prototype.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=T[T.length-1]){for(t=0;t<T.length;++t)if(r[0]==T[t])return!0;return!1}if(r.isEven())return!1;for(t=1;t<T.length;){for(var n=T[t],i=t+1;i<T.length&&n<k;)n*=T[i++];for(n=r.modInt(n);t<i;)if(n%T[t++]==0)return!1}return r.millerRabin(e)},t.prototype.square=function(){var e=r();return this.squareTo(e),e},t.prototype.Barrett=S,null==R){var O;if(R=new Array,P=0,"undefined"!=typeof window&&window.crypto)if(window.crypto.getRandomValues){var D=new Uint8Array(32);for(window.crypto.getRandomValues(D),O=0;O<32;++O)R[P++]=D[O]}else if("Netscape"==navigator.appName&&navigator.appVersion<"5"){var I=window.crypto.random(32);for(O=0;O<I.length;++O)R[P++]=255&I.charCodeAt(O)}for(;P<L;)O=Math.floor(65536*Math.random()),R[P++]=O>>>8,R[P++]=255&O;P=0,E()}function x(){if(null==C){for(E(),(C=new j).init(R),P=0;P<R.length;++P)R[P]=0;P=0}return C.next()}function M(){}function j(){this.i=0,this.j=0,this.S=new Array}M.prototype.nextBytes=function(e){var t;for(t=0;t<e.length;++t)e[t]=x()},j.prototype.init=function(e){var t,r,n;for(t=0;t<256;++t)this.S[t]=t;for(r=0,t=0;t<256;++t)r=r+this.S[t]+e[t%e.length]&255,n=this.S[t],this.S[t]=this.S[r],this.S[r]=n;this.i=0,this.j=0},j.prototype.next=function(){var e;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,e=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=e,this.S[e+this.S[this.i]&255]};var L=256;Pl.exports={default:t,BigInteger:t,SecureRandom:M}}.call(a);var kl=Tl.exports,El={};!function(e){!function(){var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function r(e){return function(e,n){var i,s,o,a,c,d,l,u,p,h=1,f=e.length,m="";for(s=0;s<f;s++)if("string"==typeof e[s])m+=e[s];else if("object"==typeof e[s]){if((a=e[s]).keys)for(i=n[h],o=0;o<a.keys.length;o++){if(null==i)throw new Error(r('[sprintf] Cannot access property "%s" of undefined value "%s"',a.keys[o],a.keys[o-1]));i=i[a.keys[o]]}else i=a.param_no?n[a.param_no]:n[h++];if(t.not_type.test(a.type)&&t.not_primitive.test(a.type)&&i instanceof Function&&(i=i()),t.numeric_arg.test(a.type)&&"number"!=typeof i&&isNaN(i))throw new TypeError(r("[sprintf] expecting number but found %T",i));switch(t.number.test(a.type)&&(u=i>=0),a.type){case"b":i=parseInt(i,10).toString(2);break;case"c":i=String.fromCharCode(parseInt(i,10));break;case"d":case"i":i=parseInt(i,10);break;case"j":i=JSON.stringify(i,null,a.width?parseInt(a.width):0);break;case"e":i=a.precision?parseFloat(i).toExponential(a.precision):parseFloat(i).toExponential();break;case"f":i=a.precision?parseFloat(i).toFixed(a.precision):parseFloat(i);break;case"g":i=a.precision?String(Number(i.toPrecision(a.precision))):parseFloat(i);break;case"o":i=(parseInt(i,10)>>>0).toString(8);break;case"s":i=String(i),i=a.precision?i.substring(0,a.precision):i;break;case"t":i=String(!!i),i=a.precision?i.substring(0,a.precision):i;break;case"T":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=a.precision?i.substring(0,a.precision):i;break;case"u":i=parseInt(i,10)>>>0;break;case"v":i=i.valueOf(),i=a.precision?i.substring(0,a.precision):i;break;case"x":i=(parseInt(i,10)>>>0).toString(16);break;case"X":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}t.json.test(a.type)?m+=i:(!t.number.test(a.type)||u&&!a.sign?p="":(p=u?"+":"-",i=i.toString().replace(t.sign,"")),d=a.pad_char?"0"===a.pad_char?"0":a.pad_char.charAt(1):" ",l=a.width-(p+i).length,c=a.width&&l>0?d.repeat(l):"",m+=a.align?p+i+c:"0"===d?p+c+i:c+p+i)}return m}(function(e){if(i[e])return i[e];var r,n=e,s=[],o=0;for(;n;){if(null!==(r=t.text.exec(n)))s.push(r[0]);else if(null!==(r=t.modulo.exec(n)))s.push("%");else{if(null===(r=t.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(r[2]){o|=1;var a=[],c=r[2],d=[];if(null===(d=t.key.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(a.push(d[1]);""!==(c=c.substring(d[0].length));)if(null!==(d=t.key_access.exec(c)))a.push(d[1]);else{if(null===(d=t.index_access.exec(c)))throw new SyntaxError("[sprintf] failed to parse named argument key");a.push(d[1])}r[2]=a}else o|=2;if(3===o)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");s.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}n=n.substring(r[0].length)}return i[e]=s}(e),arguments)}function n(e,t){return r.apply(null,[e].concat(t||[]))}var i=Object.create(null);e.sprintf=r,e.vsprintf=n,"undefined"!=typeof window&&(window.sprintf=r,window.vsprintf=n)}()}(El);var Ol=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Dl=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Il=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Ol(t,e,r);return Dl(t,e),t};Object.defineProperty(_l,"__esModule",{value:!0}),_l.Address4=void 0;const xl=Il(wl),Ml=Il(Sl),jl=Cl,Ll=kl,Al=El;class Nl{constructor(e){this.groups=Ml.GROUPS,this.parsedAddress=[],this.parsedSubnet="",this.subnet="/32",this.subnetMask=32,this.v4=!0,this.isCorrect=xl.isCorrect(Ml.BITS),this.isInSubnet=xl.isInSubnet,this.address=e;const t=Ml.RE_SUBNET_STRING.exec(e);if(t){if(this.parsedSubnet=t[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,this.subnetMask<0||this.subnetMask>Ml.BITS)throw new jl.AddressError("Invalid subnet mask.");e=e.replace(Ml.RE_SUBNET_STRING,"")}this.addressMinusSuffix=e,this.parsedAddress=this.parse(e)}static isValid(e){try{return new Nl(e),!0}catch(e){return!1}}parse(e){const t=e.split(".");if(!e.match(Ml.RE_ADDRESS))throw new jl.AddressError("Invalid IPv4 address.");return t}correctForm(){return this.parsedAddress.map((e=>parseInt(e,10))).join(".")}static fromHex(e){const t=e.replace(/:/g,"").padStart(8,"0"),r=[];let n;for(n=0;n<8;n+=2){const e=t.slice(n,n+2);r.push(parseInt(e,16))}return new Nl(r.join("."))}static fromInteger(e){return Nl.fromHex(e.toString(16))}static fromArpa(e){const t=e.replace(/(\.in-addr\.arpa)?\.$/,"").split(".").reverse().join(".");return new Nl(t)}toHex(){return this.parsedAddress.map((e=>(0,Al.sprintf)("%02x",parseInt(e,10)))).join(":")}toArray(){return this.parsedAddress.map((e=>parseInt(e,10)))}toGroup6(){const e=[];let t;for(t=0;t<Ml.GROUPS;t+=2){const r=(0,Al.sprintf)("%02x%02x",parseInt(this.parsedAddress[t],10),parseInt(this.parsedAddress[t+1],10));e.push((0,Al.sprintf)("%x",parseInt(r,16)))}return e.join(":")}bigInteger(){return new Ll.BigInteger(this.parsedAddress.map((e=>(0,Al.sprintf)("%02x",parseInt(e,10)))).join(""),16)}_startAddress(){return new Ll.BigInteger(this.mask()+"0".repeat(Ml.BITS-this.subnetMask),2)}startAddress(){return Nl.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new Ll.BigInteger("1");return Nl.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new Ll.BigInteger(this.mask()+"1".repeat(Ml.BITS-this.subnetMask),2)}endAddress(){return Nl.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new Ll.BigInteger("1");return Nl.fromBigInteger(this._endAddress().subtract(e))}static fromBigInteger(e){return Nl.fromInteger(parseInt(e.toString(),10))}mask(e){return void 0===e&&(e=this.subnetMask),this.getBitsBase2(0,e)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}reverseForm(e){e||(e={});const t=this.correctForm().split(".").reverse().join(".");return e.omitSuffix?t:(0,Al.sprintf)("%s.in-addr.arpa.",t)}isMulticast(){return this.isInSubnet(new Nl("224.0.0.0/4"))}binaryZeroPad(){return this.bigInteger().toString(2).padStart(Ml.BITS,"0")}groupForV6(){const e=this.parsedAddress;return this.address.replace(Ml.RE_ADDRESS,(0,Al.sprintf)('<span class="hover-group group-v4 group-6">%s</span>.<span class="hover-group group-v4 group-7">%s</span>',e.slice(0,2).join("."),e.slice(2,4).join(".")))}}_l.Address4=Nl;var Bl={},Fl={};Object.defineProperty(Fl,"__esModule",{value:!0}),Fl.RE_URL_WITH_PORT=Fl.RE_URL=Fl.RE_ZONE_STRING=Fl.RE_SUBNET_STRING=Fl.RE_BAD_ADDRESS=Fl.RE_BAD_CHARACTERS=Fl.TYPES=Fl.SCOPES=Fl.GROUPS=Fl.BITS=void 0,Fl.BITS=128,Fl.GROUPS=8,Fl.SCOPES={0:"Reserved",1:"Interface local",2:"Link local",4:"Admin local",5:"Site local",8:"Organization local",14:"Global",15:"Reserved"},Fl.TYPES={"ff01::1/128":"Multicast (All nodes on this interface)","ff01::2/128":"Multicast (All routers on this interface)","ff02::1/128":"Multicast (All nodes on this link)","ff02::2/128":"Multicast (All routers on this link)","ff05::2/128":"Multicast (All routers in this site)","ff02::5/128":"Multicast (OSPFv3 AllSPF routers)","ff02::6/128":"Multicast (OSPFv3 AllDR routers)","ff02::9/128":"Multicast (RIP routers)","ff02::a/128":"Multicast (EIGRP routers)","ff02::d/128":"Multicast (PIM routers)","ff02::16/128":"Multicast (MLDv2 reports)","ff01::fb/128":"Multicast (mDNSv6)","ff02::fb/128":"Multicast (mDNSv6)","ff05::fb/128":"Multicast (mDNSv6)","ff02::1:2/128":"Multicast (All DHCP servers and relay agents on this link)","ff05::1:2/128":"Multicast (All DHCP servers and relay agents in this site)","ff02::1:3/128":"Multicast (All DHCP servers on this link)","ff05::1:3/128":"Multicast (All DHCP servers in this site)","::/128":"Unspecified","::1/128":"Loopback","ff00::/8":"Multicast","fe80::/10":"Link-local unicast"},Fl.RE_BAD_CHARACTERS=/([^0-9a-f:/%])/gi,Fl.RE_BAD_ADDRESS=/([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi,Fl.RE_SUBNET_STRING=/\/\d{1,3}(?=%|$)/,Fl.RE_ZONE_STRING=/%.*$/,Fl.RE_URL=new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/),Fl.RE_URL_WITH_PORT=new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);var zl={};Object.defineProperty(zl,"__esModule",{value:!0}),zl.simpleGroup=zl.spanLeadingZeroes=zl.spanAll=zl.spanAllZeroes=void 0;const Vl=El;function Ul(e){return e.replace(/(0+)/g,'<span class="zero">$1</span>')}function $l(e){return e.replace(/^(0+)/,'<span class="zero">$1</span>')}zl.spanAllZeroes=Ul,zl.spanAll=function(e,t=0){return e.split("").map(((e,r)=>(0,Vl.sprintf)('<span class="digit value-%s position-%d">%s</span>',e,r+t,Ul(e)))).join("")},zl.spanLeadingZeroes=function(e){return e.split(":").map((e=>$l(e))).join(":")},zl.simpleGroup=function(e,t=0){return e.split(":").map(((e,r)=>/group-v4/.test(e)?e:(0,Vl.sprintf)('<span class="hover-group group-%d">%s</span>',r+t,$l(e))))};var Gl={},ql=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Hl=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Wl=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&ql(t,e,r);return Hl(t,e),t};Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.possibleElisions=Gl.simpleRegularExpression=Gl.ADDRESS_BOUNDARY=Gl.padGroup=Gl.groupPossibilities=void 0;const Kl=Wl(Fl),Jl=El;function Ql(e){return(0,Jl.sprintf)("(%s)",e.join("|"))}function Yl(e){return e.length<4?(0,Jl.sprintf)("0{0,%d}%s",4-e.length,e):e}Gl.groupPossibilities=Ql,Gl.padGroup=Yl,Gl.ADDRESS_BOUNDARY="[^A-Fa-f0-9:]",Gl.simpleRegularExpression=function(e){const t=[];e.forEach(((e,r)=>{0===parseInt(e,16)&&t.push(r)}));const r=t.map((t=>e.map(((e,r)=>{if(r===t){const t=0===r||r===Kl.GROUPS-1?":":"";return Ql([Yl(e),t])}return Yl(e)})).join(":")));return r.push(e.map(Yl).join(":")),Ql(r)},Gl.possibleElisions=function(e,t,r){const n=t?"":":",i=r?"":":",s=[];t||r||s.push("::"),t&&r&&s.push(""),(r&&!t||!r&&t)&&s.push(":"),s.push((0,Jl.sprintf)("%s(:0{1,4}){1,%d}",n,e-1)),s.push((0,Jl.sprintf)("(0{1,4}:){1,%d}%s",e-1,i)),s.push((0,Jl.sprintf)("(0{1,4}:){%d}0{1,4}",e-1));for(let t=1;t<e-1;t++)for(let r=1;r<e-t;r++)s.push((0,Jl.sprintf)("(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}",r,e-r-t-1));return Ql(s)};var Zl=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),Xl=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),eu=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&Zl(t,e,r);return Xl(t,e),t};Object.defineProperty(Bl,"__esModule",{value:!0}),Bl.Address6=void 0;const tu=eu(wl),ru=eu(Sl),nu=eu(Fl),iu=eu(zl),su=_l,ou=Gl,au=Cl,cu=kl,du=El;function lu(e){if(!e)throw new Error("Assertion failed.")}function uu(e){return e=(e=e.replace(/^(0{1,})([1-9]+)$/,'<span class="parse-error">$1</span>$2')).replace(/^(0{1,})(0)$/,'<span class="parse-error">$1</span>$2')}function pu(e){return(0,du.sprintf)("%04x",parseInt(e,16))}function hu(e){return 255&e}class fu{constructor(e,t){this.addressMinusSuffix="",this.parsedSubnet="",this.subnet="/128",this.subnetMask=128,this.v4=!1,this.zone="",this.isInSubnet=tu.isInSubnet,this.isCorrect=tu.isCorrect(nu.BITS),this.groups=void 0===t?nu.GROUPS:t,this.address=e;const r=nu.RE_SUBNET_STRING.exec(e);if(r){if(this.parsedSubnet=r[0].replace("/",""),this.subnetMask=parseInt(this.parsedSubnet,10),this.subnet=`/${this.subnetMask}`,Number.isNaN(this.subnetMask)||this.subnetMask<0||this.subnetMask>nu.BITS)throw new au.AddressError("Invalid subnet mask.");e=e.replace(nu.RE_SUBNET_STRING,"")}else if(/\//.test(e))throw new au.AddressError("Invalid subnet mask.");const n=nu.RE_ZONE_STRING.exec(e);n&&(this.zone=n[0],e=e.replace(nu.RE_ZONE_STRING,"")),this.addressMinusSuffix=e,this.parsedAddress=this.parse(this.addressMinusSuffix)}static isValid(e){try{return new fu(e),!0}catch(e){return!1}}static fromBigInteger(e){const t=e.toString(16).padStart(32,"0"),r=[];let n;for(n=0;n<nu.GROUPS;n++)r.push(t.slice(4*n,4*(n+1)));return new fu(r.join(":"))}static fromURL(e){let t,r,n=null;if(-1!==e.indexOf("[")&&-1!==e.indexOf("]:")){if(r=nu.RE_URL_WITH_PORT.exec(e),null===r)return{error:"failed to parse address with port",address:null,port:null};t=r[1],n=r[2]}else if(-1!==e.indexOf("/")){if(e=e.replace(/^[a-z0-9]+:\/\//,""),r=nu.RE_URL.exec(e),null===r)return{error:"failed to parse address from URL",address:null,port:null};t=r[1]}else t=e;return n?(n=parseInt(n,10),(n<0||n>65536)&&(n=null)):n=null,{address:new fu(t),port:n}}static fromAddress4(e){const t=new su.Address4(e),r=nu.BITS-(ru.BITS-t.subnetMask);return new fu(`::ffff:${t.correctForm()}/${r}`)}static fromArpa(e){let t=e.replace(/(\.ip6\.arpa)?\.$/,"");if(63!==t.length)throw new au.AddressError("Invalid 'ip6.arpa' form.");const r=t.split(".").reverse();for(let e=7;e>0;e--){const t=4*e;r.splice(t,0,":")}return t=r.join(""),new fu(t)}microsoftTranscription(){return(0,du.sprintf)("%s.ipv6-literal.net",this.correctForm().replace(/:/g,"-"))}mask(e=this.subnetMask){return this.getBitsBase2(0,e)}possibleSubnets(e=128){const t=nu.BITS-this.subnetMask-Math.abs(e-nu.BITS);return t<0?"0":function(e){const t=/(\d+)(\d{3})/;for(;t.test(e);)e=e.replace(t,"$1,$2");return e}(new cu.BigInteger("2",10).pow(t).toString(10))}_startAddress(){return new cu.BigInteger(this.mask()+"0".repeat(nu.BITS-this.subnetMask),2)}startAddress(){return fu.fromBigInteger(this._startAddress())}startAddressExclusive(){const e=new cu.BigInteger("1");return fu.fromBigInteger(this._startAddress().add(e))}_endAddress(){return new cu.BigInteger(this.mask()+"1".repeat(nu.BITS-this.subnetMask),2)}endAddress(){return fu.fromBigInteger(this._endAddress())}endAddressExclusive(){const e=new cu.BigInteger("1");return fu.fromBigInteger(this._endAddress().subtract(e))}getScope(){let e=nu.SCOPES[this.getBits(12,16).intValue()];return"Global unicast"===this.getType()&&"Link local"!==e&&(e="Global"),e||"Unknown"}getType(){for(const e of Object.keys(nu.TYPES))if(this.isInSubnet(new fu(e)))return nu.TYPES[e];return"Global unicast"}getBits(e,t){return new cu.BigInteger(this.getBitsBase2(e,t),2)}getBitsBase2(e,t){return this.binaryZeroPad().slice(e,t)}getBitsBase16(e,t){const r=t-e;if(r%4!=0)throw new Error("Length of bits to retrieve must be divisible by four");return this.getBits(e,t).toString(16).padStart(r/4,"0")}getBitsPastSubnet(){return this.getBitsBase2(this.subnetMask,nu.BITS)}reverseForm(e){e||(e={});const t=Math.floor(this.subnetMask/4),r=this.canonicalForm().replace(/:/g,"").split("").slice(0,t).reverse().join(".");return t>0?e.omitSuffix?r:(0,du.sprintf)("%s.ip6.arpa.",r):e.omitSuffix?"":"ip6.arpa."}correctForm(){let e,t=[],r=0;const n=[];for(e=0;e<this.parsedAddress.length;e++){const t=parseInt(this.parsedAddress[e],16);0===t&&r++,0!==t&&r>0&&(r>1&&n.push([e-r,e-1]),r=0)}r>1&&n.push([this.parsedAddress.length-r,this.parsedAddress.length-1]);const i=n.map((e=>e[1]-e[0]+1));if(n.length>0){const e=i.indexOf(Math.max(...i));t=function(e,t){const r=[],n=[];let i;for(i=0;i<e.length;i++)i<t[0]?r.push(e[i]):i>t[1]&&n.push(e[i]);return r.concat(["compact"]).concat(n)}(this.parsedAddress,n[e])}else t=this.parsedAddress;for(e=0;e<t.length;e++)"compact"!==t[e]&&(t[e]=parseInt(t[e],16).toString(16));let s=t.join(":");return s=s.replace(/^compact$/,"::"),s=s.replace(/^compact|compact$/,":"),s=s.replace(/compact/,""),s}binaryZeroPad(){return this.bigInteger().toString(2).padStart(nu.BITS,"0")}parse4in6(e){const t=e.split(":"),r=t.slice(-1)[0].match(ru.RE_ADDRESS);if(r){this.parsedAddress4=r[0],this.address4=new su.Address4(this.parsedAddress4);for(let t=0;t<this.address4.groups;t++)if(/^0[0-9]+/.test(this.address4.parsedAddress[t]))throw new au.AddressError("IPv4 addresses can't have leading zeroes.",e.replace(ru.RE_ADDRESS,this.address4.parsedAddress.map(uu).join(".")));this.v4=!0,t[t.length-1]=this.address4.toGroup6(),e=t.join(":")}return e}parse(e){const t=(e=this.parse4in6(e)).match(nu.RE_BAD_CHARACTERS);if(t)throw new au.AddressError((0,du.sprintf)("Bad character%s detected in address: %s",t.length>1?"s":"",t.join("")),e.replace(nu.RE_BAD_CHARACTERS,'<span class="parse-error">$1</span>'));const r=e.match(nu.RE_BAD_ADDRESS);if(r)throw new au.AddressError((0,du.sprintf)("Address failed regex: %s",r.join("")),e.replace(nu.RE_BAD_ADDRESS,'<span class="parse-error">$1</span>'));let n=[];const i=e.split("::");if(2===i.length){let e=i[0].split(":"),t=i[1].split(":");1===e.length&&""===e[0]&&(e=[]),1===t.length&&""===t[0]&&(t=[]);const r=this.groups-(e.length+t.length);if(!r)throw new au.AddressError("Error parsing groups");this.elidedGroups=r,this.elisionBegin=e.length,this.elisionEnd=e.length+this.elidedGroups,n=n.concat(e);for(let e=0;e<r;e++)n.push("0");n=n.concat(t)}else{if(1!==i.length)throw new au.AddressError("Too many :: groups found");n=e.split(":"),this.elidedGroups=0}if(n=n.map((e=>(0,du.sprintf)("%x",parseInt(e,16)))),n.length!==this.groups)throw new au.AddressError("Incorrect number of groups found");return n}canonicalForm(){return this.parsedAddress.map(pu).join(":")}decimal(){return this.parsedAddress.map((e=>(0,du.sprintf)("%05d",parseInt(e,16)))).join(":")}bigInteger(){return new cu.BigInteger(this.parsedAddress.map(pu).join(""),16)}to4(){const e=this.binaryZeroPad().split("");return su.Address4.fromHex(new cu.BigInteger(e.slice(96,128).join(""),2).toString(16))}to4in6(){const e=this.to4(),t=new fu(this.parsedAddress.slice(0,6).join(":"),6).correctForm();let r="";return/:$/.test(t)||(r=":"),t+r+e.address}inspectTeredo(){const e=this.getBitsBase16(0,32),t=this.getBits(80,96).xor(new cu.BigInteger("ffff",16)).toString(),r=su.Address4.fromHex(this.getBitsBase16(32,64)),n=su.Address4.fromHex(this.getBits(96,128).xor(new cu.BigInteger("ffffffff",16)).toString(16)),i=this.getBits(64,80),s=this.getBitsBase2(64,80),o=i.testBit(15),a=i.testBit(14),c=i.testBit(8),d=i.testBit(9),l=new cu.BigInteger(s.slice(2,6)+s.slice(8,16),2).toString(10);return{prefix:(0,du.sprintf)("%s:%s",e.slice(0,4),e.slice(4,8)),server4:r.address,client4:n.address,flags:s,coneNat:o,microsoft:{reserved:a,universalLocal:d,groupIndividual:c,nonce:l},udpPort:t}}inspect6to4(){const e=this.getBitsBase16(0,16),t=su.Address4.fromHex(this.getBitsBase16(16,48));return{prefix:(0,du.sprintf)("%s",e.slice(0,4)),gateway:t.address}}to6to4(){if(!this.is4())return null;const e=["2002",this.getBitsBase16(96,112),this.getBitsBase16(112,128),"","/16"].join(":");return new fu(e)}toByteArray(){const e=this.bigInteger().toByteArray();return 17===e.length&&0===e[0]?e.slice(1):e}toUnsignedByteArray(){return this.toByteArray().map(hu)}static fromByteArray(e){return this.fromUnsignedByteArray(e.map(hu))}static fromUnsignedByteArray(e){const t=new cu.BigInteger("256",10);let r=new cu.BigInteger("0",10),n=new cu.BigInteger("1",10);for(let i=e.length-1;i>=0;i--)r=r.add(n.multiply(new cu.BigInteger(e[i].toString(10),10))),n=n.multiply(t);return fu.fromBigInteger(r)}isCanonical(){return this.addressMinusSuffix===this.canonicalForm()}isLinkLocal(){return"1111111010000000000000000000000000000000000000000000000000000000"===this.getBitsBase2(0,64)}isMulticast(){return"Multicast"===this.getType()}is4(){return this.v4}isTeredo(){return this.isInSubnet(new fu("2001::/32"))}is6to4(){return this.isInSubnet(new fu("2002::/16"))}isLoopback(){return"Loopback"===this.getType()}href(e){return e=void 0===e?"":(0,du.sprintf)(":%s",e),(0,du.sprintf)("http://[%s]%s/",this.correctForm(),e)}link(e){e||(e={}),void 0===e.className&&(e.className=""),void 0===e.prefix&&(e.prefix="/#address="),void 0===e.v4&&(e.v4=!1);let t=this.correctForm;return e.v4&&(t=this.to4in6),e.className?(0,du.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>',e.prefix,t.call(this),e.className):(0,du.sprintf)('<a href="%1$s%2$s">%2$s</a>',e.prefix,t.call(this))}group(){if(0===this.elidedGroups)return iu.simpleGroup(this.address).join(":");lu("number"==typeof this.elidedGroups),lu("number"==typeof this.elisionBegin);const e=[],[t,r]=this.address.split("::");t.length?e.push(...iu.simpleGroup(t)):e.push("");const n=["hover-group"];for(let e=this.elisionBegin;e<this.elisionBegin+this.elidedGroups;e++)n.push((0,du.sprintf)("group-%d",e));return e.push((0,du.sprintf)('<span class="%s"></span>',n.join(" "))),r.length?e.push(...iu.simpleGroup(r,this.elisionEnd)):e.push(""),this.is4()&&(lu(this.address4 instanceof su.Address4),e.pop(),e.push(this.address4.groupForV6())),e.join(":")}regularExpressionString(e=!1){let t=[];const r=new fu(this.correctForm());if(0===r.elidedGroups)t.push((0,ou.simpleRegularExpression)(r.parsedAddress));else if(r.elidedGroups===nu.GROUPS)t.push((0,ou.possibleElisions)(nu.GROUPS));else{const e=r.address.split("::");e[0].length&&t.push((0,ou.simpleRegularExpression)(e[0].split(":"))),lu("number"==typeof r.elidedGroups),t.push((0,ou.possibleElisions)(r.elidedGroups,0!==e[0].length,0!==e[1].length)),e[1].length&&t.push((0,ou.simpleRegularExpression)(e[1].split(":"))),t=[t.join(":")]}return e||(t=["(?=^|",ou.ADDRESS_BOUNDARY,"|[^\\w\\:])(",...t,")(?=[^\\w\\:]|",ou.ADDRESS_BOUNDARY,"|$)"]),t.join("")}regularExpression(e=!1){return new RegExp(this.regularExpressionString(e),"i")}}Bl.Address6=fu,function(e){var t=a&&a.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var i=Object.getOwnPropertyDescriptor(t,r);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,i)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),r=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),n=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var n={};if(null!=e)for(var i in e)"default"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&t(n,e,i);return r(n,e),n};Object.defineProperty(e,"__esModule",{value:!0}),e.v6=e.AddressError=e.Address6=e.Address4=void 0;const i=_l;Object.defineProperty(e,"Address4",{enumerable:!0,get:function(){return i.Address4}});const s=Bl;Object.defineProperty(e,"Address6",{enumerable:!0,get:function(){return s.Address6}});const o=Cl;Object.defineProperty(e,"AddressError",{enumerable:!0,get:function(){return o.AddressError}});const c=n(zl);e.v6={helpers:c}}(yl);var mu={exports:{}};!function(e){(function(){var t,r,n,i,s,o,a,c;r={},null!==e&&e.exports?e.exports=r:this.ipaddr=r,a=function(e,t,r,n){var i,s;if(e.length!==t.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(i=0;n>0;){if((s=r-n)<0&&(s=0),e[i]>>s!=t[i]>>s)return!1;n-=r,i+=1}return!0},r.subnetMatch=function(e,t,r){var n,i,s,o,a;for(s in null==r&&(r="unicast"),t)for(!(o=t[s])[0]||o[0]instanceof Array||(o=[o]),n=0,i=o.length;n<i;n++)if(a=o[n],e.kind()===a[0].kind()&&e.match.apply(e,a))return s;return r},r.IPv4=function(){function e(e){var t,r,n;if(4!==e.length)throw new Error("ipaddr: ipv4 octet count should be 4");for(t=0,r=e.length;t<r;t++)if(!(0<=(n=e[t])&&n<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=e}return e.prototype.kind=function(){return"ipv4"},e.prototype.toString=function(){return this.octets.join(".")},e.prototype.toNormalizedString=function(){return this.toString()},e.prototype.toByteArray=function(){return this.octets.slice(0)},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv4"!==e.kind())throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return a(this.octets,e.octets,8,t)},e.prototype.SpecialRanges={unspecified:[[new e([0,0,0,0]),8]],broadcast:[[new e([255,255,255,255]),32]],multicast:[[new e([224,0,0,0]),4]],linkLocal:[[new e([169,254,0,0]),16]],loopback:[[new e([127,0,0,0]),8]],carrierGradeNat:[[new e([100,64,0,0]),10]],private:[[new e([10,0,0,0]),8],[new e([172,16,0,0]),12],[new e([192,168,0,0]),16]],reserved:[[new e([192,0,0,0]),24],[new e([192,0,2,0]),24],[new e([192,88,99,0]),24],[new e([198,51,100,0]),24],[new e([203,0,113,0]),24],[new e([240,0,0,0]),4]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.toIPv4MappedAddress=function(){return r.IPv6.parse("::ffff:"+this.toString())},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,n,i,s,o;for(o={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},e=0,i=!1,t=r=3;r>=0;t=r+=-1){if(!((n=this.octets[t])in o))return null;if(s=o[n],i&&0!==s)return null;8!==s&&(i=!0),e+=s}return 32-e},e}(),n="(0?\\d+|0x[a-f0-9]+)",i={fourOctet:new RegExp("^"+n+"\\."+n+"\\."+n+"\\."+n+"$","i"),longValue:new RegExp("^"+n+"$","i")},r.IPv4.parser=function(e){var t,r,n,s,o;if(r=function(e){return"0"===e[0]&&"x"!==e[1]?parseInt(e,8):parseInt(e)},t=e.match(i.fourOctet))return function(){var e,i,s,o;for(o=[],e=0,i=(s=t.slice(1,6)).length;e<i;e++)n=s[e],o.push(r(n));return o}();if(t=e.match(i.longValue)){if((o=r(t[1]))>4294967295||o<0)throw new Error("ipaddr: address outside defined range");return function(){var e,t;for(t=[],s=e=0;e<=24;s=e+=8)t.push(o>>s&255);return t}().reverse()}return null},r.IPv6=function(){function e(e,t){var r,n,i,s,o,a;if(16===e.length)for(this.parts=[],r=n=0;n<=14;r=n+=2)this.parts.push(e[r]<<8|e[r+1]);else{if(8!==e.length)throw new Error("ipaddr: ipv6 part count should be 8 or 16");this.parts=e}for(i=0,s=(a=this.parts).length;i<s;i++)if(!(0<=(o=a[i])&&o<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");t&&(this.zoneId=t)}return e.prototype.kind=function(){return"ipv6"},e.prototype.toString=function(){return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/,"::")},e.prototype.toRFC5952String=function(){var e,t,r,n,i;for(n=/((^|:)(0(:|$)){2,})/g,i=this.toNormalizedString(),e=0,t=-1;r=n.exec(i);)r[0].length>t&&(e=r.index,t=r[0].length);return t<0?i:i.substring(0,e)+"::"+i.substring(e+t)},e.prototype.toByteArray=function(){var e,t,r,n,i;for(e=[],t=0,r=(i=this.parts).length;t<r;t++)n=i[t],e.push(n>>8),e.push(255&n);return e},e.prototype.toNormalizedString=function(){var e,t,r;return e=function(){var e,r,n,i;for(i=[],e=0,r=(n=this.parts).length;e<r;e++)t=n[e],i.push(t.toString(16));return i}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.toFixedLengthString=function(){var e,t,r;return e=function(){var e,r,n,i;for(i=[],e=0,r=(n=this.parts).length;e<r;e++)t=n[e],i.push(t.toString(16).padStart(4,"0"));return i}.call(this).join(":"),r="",this.zoneId&&(r="%"+this.zoneId),e+r},e.prototype.match=function(e,t){var r;if(void 0===t&&(e=(r=e)[0],t=r[1]),"ipv6"!==e.kind())throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return a(this.parts,e.parts,16,t)},e.prototype.SpecialRanges={unspecified:[new e([0,0,0,0,0,0,0,0]),128],linkLocal:[new e([65152,0,0,0,0,0,0,0]),10],multicast:[new e([65280,0,0,0,0,0,0,0]),8],loopback:[new e([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new e([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new e([0,0,0,0,0,65535,0,0]),96],rfc6145:[new e([0,0,0,0,65535,0,0,0]),96],rfc6052:[new e([100,65435,0,0,0,0,0,0]),96],"6to4":[new e([8194,0,0,0,0,0,0,0]),16],teredo:[new e([8193,0,0,0,0,0,0,0]),32],reserved:[[new e([8193,3512,0,0,0,0,0,0]),32]]},e.prototype.range=function(){return r.subnetMatch(this,this.SpecialRanges)},e.prototype.isIPv4MappedAddress=function(){return"ipv4Mapped"===this.range()},e.prototype.toIPv4Address=function(){var e,t,n;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return e=(n=this.parts.slice(-2))[0],t=n[1],new r.IPv4([e>>8,255&e,t>>8,255&t])},e.prototype.prefixLengthFromSubnetMask=function(){var e,t,r,n,i,s,o;for(o={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},e=0,i=!1,t=r=7;r>=0;t=r+=-1){if(!((n=this.parts[t])in o))return null;if(s=o[n],i&&0!==s)return null;16!==s&&(i=!0),e+=s}return 128-e},e}(),s="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",o={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+s+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+s+")|(?:::)(?:"+s+")?)"+n+"\\."+n+"\\."+n+"\\."+n+"("+c+")?$","i")},t=function(e,t){var r,n,i,s,a,c;if(e.indexOf("::")!==e.lastIndexOf("::"))return null;for((c=(e.match(o.zoneIndex)||[])[0])&&(c=c.substring(1),e=e.replace(/%.+$/,"")),r=0,n=-1;(n=e.indexOf(":",n+1))>=0;)r++;if("::"===e.substr(0,2)&&r--,"::"===e.substr(-2,2)&&r--,r>t)return null;for(a=t-r,s=":";a--;)s+="0:";return":"===(e=e.replace("::",s))[0]&&(e=e.slice(1)),":"===e[e.length-1]&&(e=e.slice(0,-1)),{parts:t=function(){var t,r,n,s;for(s=[],t=0,r=(n=e.split(":")).length;t<r;t++)i=n[t],s.push(parseInt(i,16));return s}(),zoneId:c}},r.IPv6.parser=function(e){var r,n,i,s,a,c,d;if(o.native.test(e))return t(e,8);if((s=e.match(o.transitional))&&(d=s[6]||"",(r=t(s[1].slice(0,-1)+d,6)).parts)){for(n=0,i=(c=[parseInt(s[2]),parseInt(s[3]),parseInt(s[4]),parseInt(s[5])]).length;n<i;n++)if(!(0<=(a=c[n])&&a<=255))return null;return r.parts.push(c[0]<<8|c[1]),r.parts.push(c[2]<<8|c[3]),{parts:r.parts,zoneId:r.zoneId}}return null},r.IPv4.isIPv4=r.IPv6.isIPv6=function(e){return null!==this.parser(e)},r.IPv4.isValid=function(e){try{return new this(this.parser(e)),!0}catch(e){return!1}},r.IPv4.isValidFourPartDecimal=function(e){return!(!r.IPv4.isValid(e)||!e.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},r.IPv6.isValid=function(e){var t;if("string"==typeof e&&-1===e.indexOf(":"))return!1;try{return new this((t=this.parser(e)).parts,t.zoneId),!0}catch(e){return!1}},r.IPv4.parse=function(e){var t;if(null===(t=this.parser(e)))throw new Error("ipaddr: string is not formatted like ip address");return new this(t)},r.IPv6.parse=function(e){var t;if(null===(t=this.parser(e)).parts)throw new Error("ipaddr: string is not formatted like ip address");return new this(t.parts,t.zoneId)},r.IPv4.parseCIDR=function(e){var t,r,n;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=32)return n=[this.parse(r[1]),t],Object.defineProperty(n,"toString",{value:function(){return this.join("/")}}),n;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},r.IPv4.subnetMaskFromPrefixLength=function(e){var t,r,n;if((e=parseInt(e))<0||e>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(n=[0,0,0,0],r=0,t=Math.floor(e/8);r<t;)n[r]=255,r++;return t<4&&(n[t]=Math.pow(2,e%8)-1<<8-e%8),new this(n)},r.IPv4.broadcastAddressFromCIDR=function(e){var t,r,n,i,s;try{for(n=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),i=[],r=0;r<4;)i.push(parseInt(n[r],10)|255^parseInt(s[r],10)),r++;return new this(i)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv4.networkAddressFromCIDR=function(e){var t,r,n,i,s;try{for(n=(t=this.parseCIDR(e))[0].toByteArray(),s=this.subnetMaskFromPrefixLength(t[1]).toByteArray(),i=[],r=0;r<4;)i.push(parseInt(n[r],10)&parseInt(s[r],10)),r++;return new this(i)}catch(e){throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},r.IPv6.parseCIDR=function(e){var t,r,n;if((r=e.match(/^(.+)\/(\d+)$/))&&(t=parseInt(r[2]))>=0&&t<=128)return n=[this.parse(r[1]),t],Object.defineProperty(n,"toString",{value:function(){return this.join("/")}}),n;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},r.isValid=function(e){return r.IPv6.isValid(e)||r.IPv4.isValid(e)},r.parse=function(e){if(r.IPv6.isValid(e))return r.IPv6.parse(e);if(r.IPv4.isValid(e))return r.IPv4.parse(e);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},r.parseCIDR=function(e){try{return r.IPv6.parseCIDR(e)}catch(t){try{return r.IPv4.parseCIDR(e)}catch(e){throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},r.fromByteArray=function(e){var t;if(4===(t=e.length))return new r.IPv4(e);if(16===t)return new r.IPv6(e);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},r.process=function(e){var t;return"ipv6"===(t=this.parse(e)).kind()&&t.isIPv4MappedAddress()?t.toIPv4Address():t}}).call(a)}(mu);var gu=mu.exports,vu=function(e,t){if("string"==typeof t)return bu(e,t);if("object"==typeof t){for(var r=!1,n=0;n<t.length;n++)if(bu(e,t[n])){r=!0;break}return r}};function bu(e,t){try{var r=gu.process(e);if(-1===t.indexOf("/")){var n=gu.process(t);return"ipv6"===r.kind()&&"ipv6"===n.kind()?r.toNormalizedString()===n.toNormalizedString():r.toString()==n.toString()}var i=gu.parseCIDR(t);return r.match(i)}catch(e){return!1}}var yu=vu,_u=/^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,wu=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.2.0/24","192.168.0.0/16","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","224.0.0.0/3"],Su=["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"];for(var Cu=function(e){var t=[],r={originalIp:e,boiledIp:!1,isValid:!1,isBogon:!1,isApipa:!1,isMulticast:!1,isRfc1918:!1,isPublicIp:!1};if(_u.test(e)){r.isValid=!0;for(var n=e.split("."),i=0;i<4;i++)t.push(parseInt(n[i],10));r.boiledIp=t.join("."),yu(r.boiledIp,wu)&&(r.isBogon=!0),yu(r.boiledIp,"169.254.0.0/16")&&(r.isApipa=!0),yu(r.boiledIp,"224.0.0.0/4")&&(r.isMulticast=!0),yu(r.boiledIp,Su)?r.isRfc1918=!0:!1===r.isBogon&&(r.isPublicIp=!0)}return r},Ru=c(Cu),Pu={exports:{}},Tu=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ku=[],Eu=0;Eu<256;Eu++)ku[Eu]=(Eu+256).toString(16).substr(1);Pu.exports=function(e,t){var r;if(Buffer.isBuffer(e))r=function(e,t){var r=t||0,n=ku;return n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+"-"+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]+n[e[r++]]}(e);else{if("[object String]"!==Object.prototype.toString.call(e))return!1;r=e}if(r=r.toLowerCase(),!Tu.test(r))return!1;if(void 0===t)t=Ou(r);else if(Ou(r)!==t)return!1;switch(t){case 1:case 2:return!0;case 3:case 4:case 5:return-1!==["8","9","a","b"].indexOf(r.charAt(19));default:throw new Error("Invalid version provided.")}};var Ou=Pu.exports.version=function(e){return 0|e.charAt(14)},Du=c(Pu.exports);const Iu=Object.create(null);Iu.open="0",Iu.close="1",Iu.ping="2",Iu.pong="3",Iu.message="4",Iu.upgrade="5",Iu.noop="6";const xu=Object.create(null);Object.keys(Iu).forEach((e=>{xu[Iu[e]]=e}));const Mu={type:"error",data:"parser error"},ju="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Lu="function"==typeof ArrayBuffer,Au=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Nu=({type:e,data:t},r,n)=>ju&&t instanceof Blob?r?n(t):Bu(t,n):Lu&&(t instanceof ArrayBuffer||Au(t))?r?n(t):Bu(new Blob([t]),n):n(Iu[e]+(t||"")),Bu=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function Fu(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let zu;const Vu="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Uu="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let rk=0;rk<64;rk++)Uu[Vu.charCodeAt(rk)]=rk;const $u="function"==typeof ArrayBuffer,Gu=(e,t)=>{if("string"!=typeof e)return{type:"message",data:Hu(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:qu(e.substring(1),t)};return xu[r]?e.length>1?{type:xu[r],data:e.substring(1)}:{type:xu[r]}:Mu},qu=(e,t)=>{if($u){const r=(e=>{let t,r,n,i,s,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);const d=new ArrayBuffer(o),l=new Uint8Array(d);for(t=0;t<a;t+=4)r=Uu[e.charCodeAt(t)],n=Uu[e.charCodeAt(t+1)],i=Uu[e.charCodeAt(t+2)],s=Uu[e.charCodeAt(t+3)],l[c++]=r<<2|n>>4,l[c++]=(15&n)<<4|i>>2,l[c++]=(3&i)<<6|63&s;return d})(e);return Hu(r,t)}return{base64:!0,data:e}},Hu=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,Wu=String.fromCharCode(30);function Ku(){return new TransformStream({transform(e,t){!function(e,t){ju&&e.data instanceof Blob?e.data.arrayBuffer().then(Fu).then(t):Lu&&(e.data instanceof ArrayBuffer||Au(e.data))?t(Fu(e.data)):Nu(e,!1,(e=>{zu||(zu=new TextEncoder),t(zu.encode(e))}))}(e,(r=>{const n=r.length;let i;if(n<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,n);else if(n<65536){i=new Uint8Array(3);const e=new DataView(i.buffer);e.setUint8(0,126),e.setUint16(1,n)}else{i=new Uint8Array(9);const e=new DataView(i.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(n))}e.data&&"string"!=typeof e.data&&(i[0]|=128),t.enqueue(i),t.enqueue(r)}))}})}let Ju;function Qu(e){return e.reduce(((e,t)=>e+t.length),0)}function Yu(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let n=0;for(let i=0;i<t;i++)r[i]=e[0][n++],n===e[0].length&&(e.shift(),n=0);return e.length&&n<e[0].length&&(e[0]=e[0].slice(n)),r}function Zu(e){if(e)return function(e){for(var t in Zu.prototype)e[t]=Zu.prototype[t];return e}(e)}Zu.prototype.on=Zu.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Zu.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Zu.prototype.off=Zu.prototype.removeListener=Zu.prototype.removeAllListeners=Zu.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var i=0;i<n.length;i++)if((r=n[i])===t||r.fn===t){n.splice(i,1);break}return 0===n.length&&delete this._callbacks["$"+e],this},Zu.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(r){n=0;for(var i=(r=r.slice(0)).length;n<i;++n)r[n].apply(this,t)}return this},Zu.prototype.emitReserved=Zu.prototype.emit,Zu.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Zu.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Xu="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function ep(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const tp=Xu.setTimeout,rp=Xu.clearTimeout;function np(e,t){t.useNativeTimers?(e.setTimeoutFn=tp.bind(Xu),e.clearTimeoutFn=rp.bind(Xu)):(e.setTimeoutFn=Xu.setTimeout.bind(Xu),e.clearTimeoutFn=Xu.clearTimeout.bind(Xu))}class ip extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class sp extends Zu{constructor(e){super(),this.writable=!1,np(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new ip(e,t,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=Gu(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}}const op="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),ap=64,cp={};let dp,lp=0,up=0;function pp(e){let t="";do{t=op[e%ap]+t,e=Math.floor(e/ap)}while(e>0);return t}function hp(){const e=pp(+new Date);return e!==dp?(lp=0,dp=e):e+"."+pp(lp++)}for(;up<ap;up++)cp[op[up]]=up;let fp=!1;try{fp="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(nk){}const mp=fp;function gp(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||mp))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Xu[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function vp(){}const bp=null!=new gp({xdomain:!1}).responseType;class yp extends Zu{constructor(e,t){super(),np(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=ep(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new gp(t);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(r)),4===r.readyState&&(200===r.status||1223===r.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=yp.requestsCount++,yp.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=vp,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete yp.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(yp.requestsCount=0,yp.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",_p);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Xu?"pagehide":"unload",_p,!1)}function _p(){for(let e in yp.requests)yp.requests.hasOwnProperty(e)&&yp.requests[e].abort()}const wp="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Sp=Xu.WebSocket||Xu.MozWebSocket,Cp="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const Rp={websocket:class extends sp{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=Cp?{}:ep(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=Cp?new Sp(e,t,r):t?new Sp(e,t):new Sp(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],n=t===e.length-1;Nu(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}n&&wp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=hp()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!Sp}},webtransport:class extends sp{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){Ju||(Ju=new TextDecoder);const r=[];let n=0,i=-1,s=!1;return new TransformStream({transform(o,a){for(r.push(o);;){if(0===n){if(Qu(r)<1)break;const e=Yu(r,1);s=128==(128&e[0]),i=127&e[0],n=i<126?3:126===i?1:2}else if(1===n){if(Qu(r)<2)break;const e=Yu(r,2);i=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),n=3}else if(2===n){if(Qu(r)<8)break;const e=Yu(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),s=t.getUint32(0);if(s>Math.pow(2,21)-1){a.enqueue(Mu);break}i=s*Math.pow(2,32)+t.getUint32(4),n=3}else{if(Qu(r)<i)break;const e=Yu(r,i);a.enqueue(Gu(s?e:Ju.decode(e),t)),n=0}if(0===i||i>e){a.enqueue(Mu);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),n=Ku();n.readable.pipeTo(e.writable),this.writer=n.writable.getWriter();const i=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),i())})).catch((e=>{}))};i();const s={type:"open"};this.query.sid&&(s.data=`{"sid":"${this.query.sid}"}`),this.writer.write(s).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],n=t===e.length-1;this.writer.write(r).then((()=>{n&&wp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends sp{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port}const t=e&&e.forceBase64;this.supportsBinary=bp&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(Wu),n=[];for(let e=0;e<r.length;e++){const i=Gu(r[e],t);if(n.push(i),"error"===i.type)break}return n})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,n=new Array(r);let i=0;e.forEach(((e,s)=>{Nu(e,!1,(e=>{n[s]=e,++i===r&&t(n.join(Wu))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=hp()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new yp(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},Pp=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Tp=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function kp(e){if(e.length>2e3)throw"URI too long";const t=e,r=e.indexOf("["),n=e.indexOf("]");-1!=r&&-1!=n&&(e=e.substring(0,r)+e.substring(r,n).replace(/:/g,";")+e.substring(n,e.length));let i=Pp.exec(e||""),s={},o=14;for(;o--;)s[Tp[o]]=i[o]||"";return-1!=r&&-1!=n&&(s.source=t,s.host=s.host.substring(1,s.host.length-1).replace(/;/g,":"),s.authority=s.authority.replace("[","").replace("]","").replace(/;/g,":"),s.ipv6uri=!0),s.pathNames=function(e,t){const r=/\/{2,9}/g,n=t.replace(r,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||n.splice(0,1);"/"==t.slice(-1)&&n.splice(n.length-1,1);return n}(0,s.path),s.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,n){t&&(r[t]=n)})),r}(0,s.query),s}let Ep=class e extends Zu{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=kp(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=kp(t.host).host),np(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,n=r.length;e<n;e++){let n=r[e].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new Rp[e](r)}open(){let t;if(this.opts.rememberUpgrade&&e.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);t=this.transports[0]}this.readyState="opening";try{t=this.createTransport(t)}catch(e){return this.transports.shift(),void this.open()}t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(t){let r=this.createTransport(t),n=!1;e.priorWebsocketSuccess=!1;const i=()=>{n||(r.send([{type:"ping",data:"probe"}]),r.once("packet",(t=>{if(!n)if("pong"===t.type&&"probe"===t.data){if(this.upgrading=!0,this.emitReserved("upgrading",r),!r)return;e.priorWebsocketSuccess="websocket"===r.name,this.transport.pause((()=>{n||"closed"!==this.readyState&&(l(),this.setTransport(r),r.send([{type:"upgrade"}]),this.emitReserved("upgrade",r),r=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=r.name,this.emitReserved("upgradeError",e)}})))};function s(){n||(n=!0,l(),r.close(),r=null)}const o=e=>{const t=new Error("probe error: "+e);t.transport=r.name,s(),this.emitReserved("upgradeError",t)};function a(){o("transport closed")}function c(){o("socket closed")}function d(e){r&&e.name!==r.name&&s()}const l=()=>{r.removeListener("open",i),r.removeListener("error",o),r.removeListener("close",a),this.off("close",c),this.off("upgrading",d)};r.once("open",i),r.once("error",o),r.once("close",a),this.once("close",c),this.once("upgrading",d),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==t?this.setTimeoutFn((()=>{n||r.open()}),200):r.open()}onOpen(){if(this.readyState="open",e.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let r=0;r<this.writeBuffer.length;r++){const n=this.writeBuffer[r].data;if(n&&(e+="string"==typeof(t=n)?function(e){let t=0,r=0;for(let n=0,i=e.length;n<i;n++)t=e.charCodeAt(n),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(n++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}var t;return this.writeBuffer}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof r&&(n=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const i={type:e,data:t,options:r};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),n&&this.once("flush",n),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(t){e.priorWebsocketSuccess=!1,this.emitReserved("error",t),this.onClose("transport error",t)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const n=e.length;for(;r<n;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}};Ep.protocol=4;const Op="function"==typeof ArrayBuffer,Dp=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,Ip=Object.prototype.toString,xp="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Ip.call(Blob),Mp="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Ip.call(File);function jp(e){return Op&&(e instanceof ArrayBuffer||Dp(e))||xp&&e instanceof Blob||Mp&&e instanceof File}function Lp(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Lp(e[t]))return!0;return!1}if(jp(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Lp(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Lp(e[t]))return!0;return!1}function Ap(e){const t=[],r=e.data,n=e;return n.data=Np(r,t),n.attachments=t.length,{packet:n,buffers:t}}function Np(e,t){if(!e)return e;if(jp(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let n=0;n<e.length;n++)r[n]=Np(e[n],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=Np(e[n],t));return r}return e}function Bp(e,t){return e.data=Fp(e.data,t),delete e.attachments,e}function Fp(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Fp(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=Fp(e[r],t));return e}const zp=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var Vp;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Vp||(Vp={}));function Up(e){return"[object Object]"===Object.prototype.toString.call(e)}class $p extends Zu{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===Vp.BINARY_EVENT;r||t.type===Vp.BINARY_ACK?(t.type=r?Vp.EVENT:Vp.ACK,this.reconstructor=new Gp(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!jp(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===Vp[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Vp.BINARY_EVENT||r.type===Vp.BINARY_ACK){const n=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const i=e.substring(n,t);if(i!=Number(i)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(i)}if("/"===e.charAt(t+1)){const n=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(n,t)}else r.nsp="/";const n=e.charAt(t+1);if(""!==n&&Number(n)==n){const n=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(n,t+1))}if(e.charAt(++t)){const n=this.tryParse(e.substr(t));if(!$p.isPayloadValid(r.type,n))throw new Error("invalid payload");r.data=n}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case Vp.CONNECT:return Up(t);case Vp.DISCONNECT:return void 0===t;case Vp.CONNECT_ERROR:return"string"==typeof t||Up(t);case Vp.EVENT:case Vp.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===zp.indexOf(t[0]));case Vp.ACK:case Vp.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Gp{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=Bp(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var qp=Object.freeze({__proto__:null,Decoder:$p,Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==Vp.EVENT&&e.type!==Vp.ACK||!Lp(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===Vp.EVENT?Vp.BINARY_EVENT:Vp.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==Vp.BINARY_EVENT&&e.type!==Vp.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=Ap(e),r=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(r),n}},get PacketType(){return Vp},protocol:5});function Hp(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Wp=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Kp extends Zu{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Hp(e,"open",this.onopen.bind(this)),Hp(e,"packet",this.onpacket.bind(this)),Hp(e,"error",this.onerror.bind(this)),Hp(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(Wp.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const r={type:Vp.EVENT,data:t,options:{}};if(r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,n=t.pop();this._registerAckCallback(e,n),r.id=e}const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!n||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(e,t){var r;const n=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===n)return void(this.acks[e]=t);const i=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),n);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(i),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((n,i)=>{t.push(((e,t)=>r?e?i(e):n(t):n(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...n)=>{if(r!==this._queue[0])return;return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...n)),r.pending=!1,this._drainQueue()})),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:Vp.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Vp.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Vp.EVENT:case Vp.BINARY_EVENT:this.onevent(e);break;case Vp.ACK:case Vp.BINARY_ACK:this.onack(e);break;case Vp.DISCONNECT:this.ondisconnect();break;case Vp.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...n){r||(r=!0,t.packet({type:Vp.ACK,id:e,data:n}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Vp.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function Jp(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Jp.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},Jp.prototype.reset=function(){this.attempts=0},Jp.prototype.setMin=function(e){this.ms=e},Jp.prototype.setMax=function(e){this.max=e},Jp.prototype.setJitter=function(e){this.jitter=e};class Qp extends Zu{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,np(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new Jp({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const n=t.parser||qp;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Ep(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const n=Hp(t,"open",(function(){r.onopen(),e&&e()})),i=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},s=Hp(t,"error",i);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{n(),i(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}return this.subs.push(n),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Hp(e,"ping",this.onping.bind(this)),Hp(e,"data",this.ondata.bind(this)),Hp(e,"error",this.onerror.bind(this)),Hp(e,"close",this.onclose.bind(this)),Hp(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){wp((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new Kp(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Yp={};function Zp(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let n=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),n=kp(e)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";const i=-1!==n.host.indexOf(":")?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+i+":"+n.port+t,n.href=n.protocol+"://"+i+(r&&r.port===n.port?"":":"+n.port),n}(e,(t=t||{}).path||"/socket.io"),n=r.source,i=r.id,s=r.path,o=Yp[i]&&s in Yp[i].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new Qp(n,t):(Yp[i]||(Yp[i]=new Qp(n,t)),a=Yp[i]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}Object.assign(Zp,{Manager:Qp,Socket:Kp,io:Zp,connect:Zp});const Xp=new URLSearchParams(window.location.search).has("debug");class eh{constructor(){this._isEnabled=!1,this._debugger=null,this._isEnabled=Xp}isEnabled(){return this._isEnabled}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}info(...e){if(this._isEnabled)return console.info(...e)}warn(...e){if(this._isEnabled)return console.warn(...e)}error(...e){if(this._isEnabled)return console.error(...e)}withDebugLogger(e=null){return this._debugger=e,this}debug(...e){if(!this._isEnabled||!this._debugger)return;const t=[];e.forEach((e=>{if("function"==typeof e){const r=e();t.push(r)}else t.push(e)})),this._debugger.print(...t)}}function th(e,t,r,n){return new(r||(r=Promise))((function(i,s){function o(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){e.done?i(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(o,a)}c((n=n.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;let rh=[],nh=0;const ih=new WeakMap;if(window.RTCPeerConnection){const ik=window.RTCPeerConnection;function sk(e){const t=new ik(e);rh.push(t),ih.set(t,{index:nh++});const r=()=>{"closed"===t.connectionState&&((e=>{rh=rh.filter((t=>t!==e))})(t),t.removeEventListener("connectionstatechange",r))};return t.addEventListener("connectionstatechange",r),t}sk.prototype=ik.prototype,window.RTCPeerConnection=sk}const sh=null,oh=()=>{var e;return null===(e=sh)||void 0===e?void 0:e.getUpdatedStats()};class ah{static parse(e){let t;try{t=JSON.parse(e)}catch(e){return}if("object"==typeof t&&!Array.isArray(t))return t.request?ah._handleRequest(t):t.response?ah._handleResponse(t):t.message?ah._handleMessage(t):void 0}static _handleRequest(e){const t={request:!0};if("string"==typeof e.method&&"number"==typeof e.id)return t.id=e.id,t.method=e.method,t.data=e.data||{},t}static _handleResponse(e){const t={response:!0};if("number"==typeof e.id)return t.id=e.id,e.ok?(t.ok=!0,t.data=e.data||{}):(t.ok=!1,t.errorCode=e.errorCode,t.errorReason=e.errorReason),t}static _handleMessage(e){const t={message:!0};if("string"==typeof e.method)return t.method=e.method,t.data=e.data||{},t}static createRequest(e,t){return{request:!0,id:Math.round(1e7*Math.random()),method:e,data:t||{}}}static createSuccessResponse(e,t){return{response:!0,id:e.id,ok:!0,data:t||{}}}static createErrorResponse(e,t,r){return{response:!0,id:e.id,errorCode:t,errorReason:r}}static createMessage(e,t){return{message:!0,method:e,data:t||{}}}}const ch=new eh;class dh extends fr{constructor(e,t="whereby-sfu#v4"){super(),this.socket=null,this.wsUrl=e,this.protocol=t,this.sents=new Map,this._setupSocket()}_setupSocket(){this.socket=new WebSocket(this.wsUrl,this.protocol),this.socket.onopen=this._onOpen.bind(this),this.socket.onmessage=this._onMessage.bind(this),this.socket.onclose=this._onClose.bind(this),this.socket.onerror=this._onError.bind(this)}_tearDown(){null!==this.socket&&(this.socket.onopen=null,this.socket.onmessage=null,this.socket.onclose=null,this.socket.onerror=null,this.socket=null,this.sents.forEach((e=>e.close())),this.emit("close"))}close(){var e;null===(e=this.socket)||void 0===e||e.close()}_onOpen(){ch.info("Connected"),this.emit("open")}_onMessage(e){const t=ah.parse(e.data);ch.info("Received message",t),(null==t?void 0:t.response)?this._handleResponse(t):(null==t?void 0:t.message)&&this.emit("message",t)}_onClose(){ch.info("Disconnected"),this._tearDown()}_onError(e){ch.info("Error",e)}_handleResponse(e){const t=this.sents.get(e.id);if(e.ok)t.resolve(e.data);else{const r=new Error(e.errorReason);t.reject(r)}}send(e){try{this.socket&&this.socket.send(JSON.stringify(e))}catch(e){}}message(e,t={}){const r=ah.createMessage(e,t);this.send(r)}request(e,t={},r=1500*(15+.1*this.sents.size)){const n=ah.createRequest(e,t);return this.send(n),new Promise(((e,t)=>{const i={id:n.id,method:n.method,resolve:t=>{this.sents.delete(n.id)&&(clearTimeout(i.timer),e(t))},reject:e=>{this.sents.delete(n.id)&&(clearTimeout(i.timer),t(e))},timer:setTimeout((()=>{this.sents.delete(n.id)&&t(new Error("request timeout"))}),r),close:()=>{clearTimeout(i.timer),t(new Error("transport closed"))}};this.sents.set(n.id,i)}))}}const lh={codecOptions:{opusDtx:!0,opusFec:!0},encodings:[{dtx:!0}]},uh={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:4,maxBitrate:15e4},{scaleResolutionDownBy:2,maxBitrate:5e5},{scaleResolutionDownBy:1,maxBitrate:1e6}]},ph={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scaleResolutionDownBy:2,maxBitrate:15e4},{scaleResolutionDownBy:1,maxBitrate:5e5}]},hh={codecOptions:{videoGoogleStartBitrate:500},encodings:[{scalabilityMode:"L3T2_KEY"}]},fh={encodings:[{}]},mh={encodings:[{scaleResolutionDownBy:2,dtx:!0,maxBitrate:5e5},{scaleResolutionDownBy:1,dtx:!0,maxBitrate:15e5}]},gh={encodings:[{dtx:!0}]},vh=(e,t,r)=>{const{lowDataModeEnabled:n,simulcastScreenshareOn:i,vp9On:s}=r;return"audio"===e?lh:t?s?gh:i?mh:fh:s?hh:n?ph:uh},bh=()=>{let e=Cr.detectDevice()||(/applecoremedia|applewebkit|safari/i.test(navigator.userAgent)?"Safari12":void 0);return/iphone|ipad/i.test(navigator.userAgent)&&(e="Safari12"),e};var yh;const _h=null!==(yh=dl.default)&&void 0!==yh?yh:dl;const wh=400;var Sh;const Ch="safari"===(null!==(Sh=dl.default)&&void 0!==Sh?Sh:dl).browserDetails.browser,Rh=e=>e.split(/[^\d]/g).map((e=>parseInt(e,10)));function Ph({devices:e,videoId:t,audioId:r,options:n,type:i="ideal"}){const s=e.filter((e=>"audioinput"===e.kind)),o=e.filter((e=>"videoinput"===e.kind)),a=!r||!s.some((e=>e.deviceId===r)),c=!t||!o.some((e=>e.deviceId===t)),d=function({disableAEC:e,disableAGC:t,hd:r,lax:n,lowDataMode:i,preferredDeviceIds:s,resolution:o,simulcast:a,widescreen:c}){var d,l;let u=480,p=240;r&&(u=n||Ch?720:{min:360,ideal:720}),a&&(!1===r?(u=360,p=270):p=360);const h={audio:Object.assign({},s.audioId&&{deviceId:s.audioId}),video:Object.assign(Object.assign({},s.videoId?{deviceId:s.videoId}:{facingMode:"user"}),{height:i?p:u,frameRate:i&&!a?15:24})};if(n)return(null===(d=h.audio)||void 0===d?void 0:d.deviceId)||(h.audio=!0),null===(l=h.video)||void 0===l||delete l.facingMode,h;if(o){const[e,t,r]=Rh(o);e&&(h.video.width={exact:e}),t&&(h.video.height={exact:t}),r&&(h.video.frameRate={exact:r}),delete h.video.facingMode}else h.video.aspectRatio=c?16/9:4/3;return t&&(h.audio.autoGainControl=!1),e&&(h.audio.echoCancellation=!1),h}(Object.assign({preferredDeviceIds:{audioId:a?null:{[i]:r},videoId:c?null:{[i]:t}}},n));return!1!==r&&s.length||delete d.audio,!1!==t&&o.length||delete d.video,d}const Th=new eh,kh=/mobi/i.test(navigator.userAgent);class Eh extends Error{constructor(...e){super(...e),this.name="nodevices"}}function Oh(e){return e.audio||e.video?navigator.mediaDevices.getUserMedia(e).catch((t=>{const r=`${t}, ${JSON.stringify(e,null,2)}`;throw Th.error(`getUserMedia ${r}`),t})):Promise.reject(new Eh("No provided devices"))}function Dh(e,t,r,n){var i,s,o;let a={deviceId:null};return t?(a.label=t.label,t.getSettings&&(a=Object.assign(Object.assign({},a),t.getSettings())),a.deviceId?a:(t.getCapabilities&&(a.deviceId=t.getCapabilities().deviceId),a.deviceId?a:(t.label&&r&&(a.deviceId=null===(s=r.find((r=>t.label===r.label&&r.kind===e)))||void 0===s?void 0:s.deviceId),a.deviceId||(a.deviceId=null===(o=t.getConstraints())||void 0===o?void 0:o.deviceId,a.broken=1),a))):(n&&r&&(a.deviceId=null===(i=r.find((t=>t.deviceId===n&&t.kind===e)))||void 0===i?void 0:i.deviceId),a)}function Ih(e,t){t&&"audio"!==t||e.getAudioTracks().forEach((e=>e.stop())),t&&"video"!==t||e.getVideoTracks().forEach((e=>e.stop()))}function xh(e,{replaceStream:t,fallback:r=!0}={}){var n;return th(this,void 0,void 0,(function*(){let i,s,o,a=null;const c=!1===e.audioId?"video":!1===e.videoId&&"audio",d=kh||"video"!==c,l=Ph(e),u=(e,t)=>(e.details=Object.assign({constraints:l,constraint:e.constraint||(null==t?void 0:t.constraint),newConstraints:s,fallback:r,stopTracks:d},e!==i&&{error:String(i)}),e);d&&t&&Ih(t,c);try{a=yield Oh(l)}catch(s){if(i=s,!r)throw u(s);if("OverconstrainedError"===s.name){o={deviceId:{videoId:null,audioId:null},width:{lax:!0},height:{lax:!0},"":{audioId:null,videoId:null,lax:!0}}[s.constraint||""]}else if("NotFoundError"===s.name){if(l.audio&&l.video){try{a=yield Oh(Ph(Object.assign(Object.assign({},e),{audioId:!1})))}catch(e){if("NotFoundError"!==e.name)throw u(e,s)}try{a||(a=yield Oh(Ph(Object.assign(Object.assign({},e),{videoId:!1}))))}catch(e){throw u(e,s)}}}else if("NotAllowedError"===s.name||"NotReadableError"===s.name||"AbortError"===s.name)if(t&&!d)Ih(t,c),o=e;else if("NotAllowedError"!==s.name){try{a=yield Oh(Ph(Object.assign(Object.assign({},e),{options:Object.assign(Object.assign({},e.options),{lax:!0})})))}catch(e){Th.warn("Tried getting stream again with laxer constraints, but failed: "+(""+e))}const t=(""+s).toLowerCase(),r={audio:"audioId",video:"videoId"}[(null===(n=/(video|audio)/.exec(t))||void 0===n?void 0:n[0])||c||""];if(!a&&r)try{a=yield Oh(Ph(Object.assign(Object.assign({},e),{[r]:null})))}catch(e){Th.warn(`Re-tried ${r} with no constraints, but failed: ${""+e}`)}if(!a){const t=r?[r]:["videoId","audioId"];for(const r of t){try{a=yield Oh(Ph(Object.assign(Object.assign({},e),{[r]:!1})))}catch(e){Th.warn(`Re-tried without ${r}, but failed: ${""+e}`)}if(a)break}}}}if(o){const t=c?{audio:{videoId:!1},video:{audioId:!1}}[c]:{};s=Ph(Object.assign(Object.assign(Object.assign(Object.assign({},e),o),{options:Object.assign(Object.assign({},e.options),{lax:o.lax})}),t));try{a=yield Oh(s)}catch(e){throw u(e,i)}}if(!a)throw u(i);let p;return t&&(d||Ih(t,c),p=function(e,t,r){const n=[];return r&&"audio"!==r||(n.push(...e.getAudioTracks()),t.getAudioTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),r&&"video"!==r||(n.push(...e.getVideoTracks()),t.getVideoTracks().forEach((t=>{t.replacement=!0,e.addTrack(t)}))),n.forEach((t=>{t.replaced=!0,e.removeTrack(t)})),n}(t,a,c),a=t),{error:i&&u(i),stream:a,replacedTracks:p}}))}function Mh({oldDevices:e,newDevices:t,currentAudioId:r,currentVideoId:n,currentSpeakerId:i}){const s=function(e,t){const[r,n]=[e,t].map((e=>e.filter((e=>e.kind&&e.deviceId)).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t.kind]:Object.assign(Object.assign({},e[t.kind]),{[t.deviceId]:t})})),{}))),i={};return e.forEach((e=>{e.kind&&e.deviceId&&(i[e.kind]||(i[e.kind]={added:{},removed:{},changed:{}}),n[e.kind]&&n[e.kind][e.deviceId]||(i[e.kind].removed[e.deviceId]=e))})),t.forEach((e=>{e.kind&&e.deviceId&&(i[e.kind]||(i[e.kind]={added:{},removed:{},changed:{}}),r[e.kind]&&r[e.kind][e.deviceId]?r[e.kind][e.deviceId].label&&r[e.kind][e.deviceId].label!==e.label&&(i[e.kind].changed[e.deviceId]=e):i[e.kind].added[e.deviceId]=e)})),i}(e,t),o={},a={};return[["audioinput",r],["videoinput",n],["audiooutput",i]].forEach((([e,r])=>{const n=s[e=e||""];if(n){if(r){if(n.removed[r]&&(o[e]={deviceId:null},"audiooutput"===e)){const r=t.find((e=>"audiooutput"===e.kind));o[e]={deviceId:null==r?void 0:r.deviceId}}n.changed[r]&&(o[e]={deviceId:r})}if(Object.keys(n.added).length){const[t]=Object.keys(n.added).slice(0,1),r=n.added[t];a[e]={deviceId:r.deviceId,label:r.label,kind:r.kind}}}})),{addedDevices:a,changedDevices:o}}dl.default;const jh={id:bl(),connectionNumber:0},Lh=()=>{};let Ah=Lh;const Nh=function(e,t=console){const r=[];let n,i,s,o,a,c,d,l,u,p,h,f,m=0,g=!1,v=0;const b={connected:!1,trace:(...e)=>{if(e.push(Date.now()),"customEvent"===e[0]&&"roomSessionId"===e[2].type){const t=c&&c[2].value.roomSessionId,r=e[2].value.roomSessionId;if(c=e,g&&r&&r!==t&&n)return void n.close();r&&(g=!0)}else"customEvent"===e[0]&&"clientId"===e[2].type?s=e:"customEvent"===e[0]&&"organizationId"===e[2].type?i=e:"customEvent"===e[0]&&"displayName"===e[2].type?o=e:"customEvent"===e[0]&&"userRole"===e[2].type?a=e:"customEvent"===e[0]&&"deviceId"===e[2].type?l=e:"customEvent"===e[0]&&"roomProduct"===e[2].type?u=e:"customEvent"===e[0]&&"roomMode"===e[2].type?p=e:"customEvent"===e[0]&&"sfuServer"===e[2].type?h=e:"customEvent"===e[0]&&"featureFlags"===e[2].type&&(f=e);n.readyState===WebSocket.OPEN?(m=0,n.send(JSON.stringify(e))):"getstats"===e[0]?v<20&&(v++,r.push(e)):"customEvent"===e[0]&&"insightsStats"===e[2].type||r.push(e),n.readyState===WebSocket.CLOSED&&d&&setTimeout((()=>{n.readyState===WebSocket.CLOSED&&d&&b.connect()}),1e3*m)},close:()=>{d=!1,n&&n.close()},connect:()=>{d=!0,m+=1,n&&n.close(),b.connected=!0,n=new WebSocket(e+window.location.pathname,"1.0"),n.onerror=e=>{b.connected=!1,t.warn("[RTCSTATS] WebSocket error",e)},n.onclose=e=>{b.connected=!1,t.info(`[RTCSTATS] Closed ${e.code}`),Ah()},n.onopen=()=>{for(jh.connectionNumber++,n.send(JSON.stringify(["clientInfo",null,jh])),i&&n.send(JSON.stringify(i)),s&&n.send(JSON.stringify(s)),c&&n.send(JSON.stringify(c)),o&&n.send(JSON.stringify(o)),a&&n.send(JSON.stringify(a)),l&&n.send(JSON.stringify(l)),p&&n.send(JSON.stringify(p)),u&&n.send(JSON.stringify(u)),h&&n.send(JSON.stringify(h)),f&&n.send(JSON.stringify(f));r.length;)n.send(JSON.stringify(r.shift()));v=0}}};return b.connect(),b}("wss://rtcstats.srv.whereby.com"),Bh=pl(Nh.trace,1e4,[""]);Ah=(null==Bh?void 0:Bh.resetDelta)||Lh;const Fh={sendEvent:(e,t)=>{Nh.trace("customEvent",null,{type:e,value:t})},sendAudioMuted:e=>{Fh.sendEvent("audio_muted",{muted:e})},sendVideoMuted:e=>{Fh.sendEvent("video_muted",{muted:e})},server:Nh};var zh;const Vh=null!==(zh=dl.default)&&void 0!==zh?zh:dl,Uh=new eh,$h=Vh.browserDetails.browser,Gh=Vh.browserDetails.version;function qh(e,t){let r=e.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/),n=t.match(/a=ssrc-group:FID (\d+) (\d+)\r\n/);r||(r=e.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/),n=t.match(/a=ssrc:(\d+) cname:(.*)\r\n/g)[1].match(/a=ssrc:(\d+)/));for(let e=1;e<r.length;e++)t=t.replace(new RegExp(n[e],"g"),r[e]);return t}function Hh(e){return"firefox"!==$h?e:Zd.splitLines(e.trim()).map((e=>e.startsWith("a=msid-semantic:")?"a=msid-semantic: WMS *":e)).join("\r\n")+"\r\n"}function Wh(e){return function(e,t,r=!1,n=!1){var i,s;try{const o=ji(e);if((null===(i=null==o?void 0:o.ext)||void 0===i?void 0:i.length)&&o.ext.length>0)return e;if((null==o?void 0:o.media.length)<1)return e;const a=null==o?void 0:o.media.flatMap((e=>e.ext||[])),c=(null===(s=a.find((e=>e.uri===t)))||void 0===s?void 0:s.value)||[...new Set([0,15,...a.map((e=>e.value))])].sort(((e,t)=>e-t)).find(((e,t,r)=>e+1!==r[t+1]))+1;return o.media.forEach((e=>{var i;(r&&"audio"===e.type||n&&"video"===e.type)&&((null===(i=e.ext)||void 0===i?void 0:i.find((e=>e.uri===t)))||(Array.isArray(e.ext)?e.ext.push({value:c,uri:t}):e.ext=[{value:c,uri:t}]))})),Mi(o)}catch(e){console.error("Error during addAbsCaptureTimeExtMap: ",e)}return e}(e,"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time",!0,!0)}function Kh(e,t,r=console){const n=e.getSenders().find((e=>e.track&&"video"===e.track.kind));if(!n)return Promise.resolve();const i=n.getParameters();return i.encodings&&0===i.encodings.length?Promise.resolve():(i.encodings||(i.encodings=[{}]),0===t?delete i.encodings[0].maxBitrate:i.encodings[0].maxBitrate=1e3*t,n.setParameters(i).catch((e=>{r.error("setParameters err: ",e)})))}var Jh;const Qh=null!==(Jh=dl.default)&&void 0!==Jh?Jh:dl,Yh=new eh;class Zh{constructor({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:r,deprioritizeH264Encoding:n}){this.peerConnectionId=e,this.relayCandidateSeen=!1,this.serverReflexiveCandidateSeen=!1,this.publicHostCandidateSeen=!1,this.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this.pc=null,this.wasEverConnected=!1,this.connectionStatus=null,this.stats={totalSent:0,totalRecv:0},this.bandwidth=t||0,this.maximumTurnBandwidth=r,this.pending=[],this.isOperationPending=!1,this.streamIds=[],this.streams=[],this.earlyIceCandidates=[],this.afterConnected=new Promise((e=>{this.registerConnected=e})),this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._deprioritizeH264Encoding=n}setAndGetPeerConnection({clientId:e,constraints:t,peerConnectionConfig:r,shouldAddLocalVideo:n}){return this.peerConnectionConfig=r,this.shouldAddLocalVideo=n,this.clientId=e,this.pc=new RTCPeerConnection(r),this.signalingState=this.pc.signalingState,this.pc.addEventListener("signalingstatechange",(()=>{if(this.signalingState!==this.pc.signalingState&&(this.signalingState=this.pc.signalingState,"stable"===this.pc.signalingState)){this.isOperationPending=!1;const e=this.pending.shift();e&&e.apply()}})),this.pc}addStream(e){this.streamIds.push(e.id),this.streams.push(e),RTCPeerConnection.prototype.addTrack?(e.getAudioTracks().forEach((t=>{this.pc.addTrack(t,e)})),e.getVideoTracks().forEach((t=>{this.pc.addTrack(t,e)}))):this.pc.addStream(e)}addTrack(e,t){t||(t=this.streams[0]),null==t||t.addTrack(e),this.pc.addTrack(e,t)}removeTrack(e){this.streams[0].removeTrack(e);const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)}removeStream(e){for(let t=0;t<this.streamIds.length;t++)this.streamIds[t]===e.id&&(this.streamIds.splice(t,1),this.streams.splice(t,1));this.pc&&(this.pc.removeTrack?e.getTracks().forEach((e=>{const t=this.pc.getSenders().find((t=>t.track===e));t&&this.pc.removeTrack(t)})):this.pc.removeStream&&this.pc.removeStream(e))}_setRemoteDescription(e){return this._deprioritizeH264Encoding&&(e.sdp=function(e){return Zd.splitSections(e).map((e=>{if("video"!==Zd.getKind(e))return e;const t=Zd.matchPrefix(e,"a=rtpmap:").map((e=>Zd.parseRtpMap(e))).filter((e=>/h264/i.test(e.name))).map((e=>""+e.payloadType));if(!t.length)return e;const r=Zd.matchPrefix(e,"m=video")[0],n=/(\s\d+)+$/i.exec(r),i=n?n[0]:"",s=[...i.split(" ").filter((e=>e&&!t.includes(e))),...t].join(" "),o=r.replace(i," "+s);return e.replace(r,o)})).join("")}(e.sdp)),this.srdComplete=this.pc.setRemoteDescription(e),this.srdComplete.then((()=>{this.earlyIceCandidates.forEach((e=>this.pc.addIceCandidate(e))),this.earlyIceCandidates=[]}))}handleOffer(e){if(!this.canModifyPeerConnection())return new Promise((t=>{this.pending.push((()=>this.handleOffer(e).then(t)))}));this.isOperationPending=!0;let t=e.sdp;t=function(e){return"safari"!==$h&&("firefox"!==$h||Gh&&Gh>=63||60===Gh)?e:Zd.splitLines(e.trim()).filter((e=>!e.startsWith("a=extmap:")||"urn:ietf:params:rtp-hdrext:sdes:mid"!==Zd.parseExtmap(e).uri)).join("\r\n")+"\r\n"}(t),t=Hh(t);const r={type:e.type,sdp:t};let n;return this._setRemoteDescription(r).then((()=>this.pc.createAnswer())).then((e=>(n=e,this.pc.setLocalDescription(e)))).then((()=>Kh(this.pc,this.bandwidth))).then((()=>n))}handleAnswer(e){if(this.pendingOffer){const t=this.pendingOffer;return delete this.pendingOffer,this.pc.setLocalDescription(t).then((()=>this.handleAnswer(e)))}let t=e.sdp;t=Hh(t);const r={type:e.type,sdp:t};return this._setRemoteDescription(r).then((()=>Kh(this.pc,this.bandwidth)),(e=>{Yh.warn("Could not set remote description from remote answer: ",e)}))}addIceCandidate(e){this.srdComplete?this.srdComplete.then((()=>{"closed"!==this.pc.signalingState&&("safari"===Qh.browserDetails.browser&&e&&""===e.candidate||this.pc.addIceCandidate(e).catch((t=>{Yh.warn("Failed to add ICE candidate ('%s'): %s",e?e.candidate:null,t)})))})):this.earlyIceCandidates.push(e)}canModifyPeerConnection(){return"stable"===this.pc.signalingState&&!this.isOperationPending}close(){const e=this.pc;if(e){e.oniceconnectionstatechange=null,e.onicecandidate=null,e.ontrack=null;try{e.close()}catch(e){Yh.warn("failures during close of session",e)}}}hasConnectedPeerConnection(){return this.pc&&"connected"===this.pc.connectionState}replaceTrack(e,t){t||Fh.sendEvent("replaceTrackP2P",{nullTrack:"newTrack",oldTrackKind:null==e?void 0:e.kind});const r=this.pc;if(!r)return!1;const n=r.getSenders();if(e||(e=(n.find((e=>e.track&&e.track.kind===t.kind))||{}).track),window.RTCRtpSender&&window.RTCRtpSender.prototype.replaceTrack){if(e){const r=()=>{for(let r=0;r<n.length;r++){const i=n[r].track;if(i||Fh.sendEvent("replaceTrackP2P",{nullTrack:"trackFromSender",oldTrackKind:null==e?void 0:e.kind,newTrackKind:null==t?void 0:t.kind}),i.id===t.id)return Promise.resolve(t);if(i.id===e.id)return n[r].replaceTrack(t)}return null};let i=r();if(i)return i;let s=null,o=null;i=new Promise(((e,t)=>{s=e,o=t}));let a=0,c=setInterval((()=>th(this,void 0,void 0,(function*(){const e=r();if(!e)return void(3<++a&&(clearInterval(c),c=null,o("No sender track to replace")));clearInterval(c),c=null;const t=yield e;s(t)}))),1e3);return i}const i=this.streams.find((e=>e.getTracks().find((e=>e.id===t.id))))||this.streams[0];return i?r.addTrack(t,i):Promise.reject(new Error("replaceTrack: No stream?"))}if(!this.canModifyPeerConnection())return void this.pending.push((()=>{this.replaceTrack(e,t)}));this.isOperationPending=!0;const i=r.onnegotiationneeded;return r.onnegotiationneeded=null,this.removeTrack(e),this.addTrack(t),setTimeout((()=>{r.onnegotiationneeded=i}),0),"offer"===r.localDescription.type?r.createOffer().then((e=>(e.sdp=qh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e)))).then((()=>this._setRemoteDescription(r.remoteDescription))):this._setRemoteDescription(r.remoteDescription).then((()=>r.createAnswer())).then((e=>(e.sdp=qh(r.localDescription.sdp,e.sdp),r.setLocalDescription(e))))}maybeRestrictRelayBandwidth(){var e;-1!==this.maximumTurnBandwidth&&(this.pc.getStats&&(e=this.pc,e.getStats(null).then((e=>{let t,r;return e.forEach((n=>{if("transport"===n.type&&n.selectedCandidatePairId){const i=e.get(n.selectedCandidatePairId);if(!i)return;return t=e.get(i.localCandidateId).candidateType,void(r=e.get(i.remoteCandidateId).candidateType)}"candidate-pair"===n.type&&n.selected&&(t=e.get(n.localCandidateId).candidateType,r=e.get(n.remoteCandidateId).candidateType)})),"relay"===t||"relayed"===t||"relay"===r||"relayed"===r}))).then((e=>{e&&0===this.bandwidth&&this.changeBandwidth(this.maximumTurnBandwidth)})))}changeBandwidth(e){e!==this.bandwidth&&(this.canModifyPeerConnection()?(this.bandwidth=e,this.pc.localDescription&&""!==this.pc.localDescription.type&&Kh(this.pc,this.bandwidth)):this.pending.push((()=>this.changeBandwidth(e))))}setAudioOnly(e,t=[]){this.pc.getTransceivers().filter((e=>{var r,n,i,s,o,a;return"recvonly"!==(null==e?void 0:e.direction)&&"video"===(null===(n=null===(r=null==e?void 0:e.receiver)||void 0===r?void 0:r.track)||void 0===n?void 0:n.kind)&&!t.includes(null===(s=null===(i=null==e?void 0:e.receiver)||void 0===i?void 0:i.track)||void 0===s?void 0:s.id)&&!t.includes(null===(a=null===(o=null==e?void 0:e.sender)||void 0===o?void 0:o.track)||void 0===a?void 0:a.id)})).forEach((t=>{t.direction=e?"sendonly":"sendrecv"}))}}const Xh="fetch_mediaserver_config",ef="start_screenshare",tf="stop_screenshare",rf="audio_enabled",nf="client_left",sf="mediaserver_config",of="new_client",af="screenshare_started",cf="screenshare_stopped",df="room_joined",lf="video_enabled",uf="ice_candidate",pf="ice_endofcandidates",hf="ready_to_receive_offer",ff="sdp_answer",mf="sdp_offer",gf="pending_client_left",vf="media_quality_changed",bf="client_connection_status_changed",yf="stream_added",_f="rtc_manager_created",wf="rtc_manager_destroyed",Sf="local_stream_track_added",Cf="local_stream_track_removed",Rf="connecting",Pf="connection_failed",Tf="connection_successful",kf="connection_disconnected",Ef="camera",Of="screen_share";const Df=57600,If=2.6041666666666665,xf=921600,Mf=1.0850694444444444;const jf="[a-fA-F\\d:]",Lf=e=>e&&e.includeBoundaries?`(?:(?<=\\s|^)(?=${jf})|(?<=${jf})(?=\\s|$))`:"",Af="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",Nf="[a-fA-F\\d]{1,4}",Bf=`\n(?:\n(?:${Nf}:){7}(?:${Nf}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8\n(?:${Nf}:){6}(?:${Af}|:${Nf}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4\n(?:${Nf}:){5}(?::${Af}|(?::${Nf}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4\n(?:${Nf}:){4}(?:(?::${Nf}){0,1}:${Af}|(?::${Nf}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4\n(?:${Nf}:){3}(?:(?::${Nf}){0,2}:${Af}|(?::${Nf}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4\n(?:${Nf}:){2}(?:(?::${Nf}){0,3}:${Af}|(?::${Nf}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4\n(?:${Nf}:){1}(?:(?::${Nf}){0,4}:${Af}|(?::${Nf}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::${Nf}){0,5}:${Af}|(?::${Nf}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1\n`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),Ff=new RegExp(`(?:^${Af}$)|(?:^${Bf}$)`),zf=new RegExp(`^${Af}$`),Vf=new RegExp(`^${Bf}$`),Uf=e=>e&&e.exact?Ff:new RegExp(`(?:${Lf(e)}${Af}${Lf(e)})|(?:${Lf(e)}${Bf}${Lf(e)})`,"g");Uf.v4=e=>e&&e.exact?zf:new RegExp(`${Lf(e)}${Af}${Lf(e)}`,"g"),Uf.v6=e=>e&&e.exact?Vf:new RegExp(`${Lf(e)}${Bf}${Lf(e)}`,"g");var $f,Gf,qf="connection_blocked_by_network",Hf="ice_ipv6_seen",Wf="ice_mdns_seen",Kf="ice_no_public_ip_gathered",Jf="ice_no_public_ip_gathered_3sec",Qf="ice_restart",Yf="microphone_not_working",Zf="microphone_stopped_working",Xf="new_pc",em="sfu_connection_open",tm="sfu_connection_closed",rm="dominant_speaker";const nm=null!==($f=dl.default)&&void 0!==$f?$f:dl,im=new eh,sm=class{constructor(e,t){this.id=""+e,this.type=t,this.isEnabled=!0,this.hasSupportForAutoSuperSize=!1,this.isAudioEnabled=!0,this.isVideoEnabled=!0,this.status=Rf,this.stream=null,this.streamId=null}setup(e){return this.stream=e,this.streamId=e.id,this.setVideoEnabled(this.isVideoEnabled&&e.getVideoTracks().length>0),this.setAudioEnabled(this.isAudioEnabled&&e.getAudioTracks().length>0),this}setStatus(e){return this.status=e,this}setVideoEnabled(e){this.isVideoEnabled=e,this.stream&&this.stream.getVideoTracks().forEach((t=>{t.enabled=e}))}setAudioEnabled(e){this.isAudioEnabled=e,this.stream&&this.stream.getAudioTracks().forEach((t=>{t.enabled=e}))}static getCameraId(){return"0"}static getTypeFromId(e){return"0"===""+e?Ef:Of}}.getCameraId(),om=nm.browserDetails.browser,am=nm.browserDetails.version;"firefox"===om&&nm.browserShim&&"shimGetDisplayMedia"in nm.browserShim&&(null===(Gf=nm.browserShim)||void 0===Gf||Gf.shimGetDisplayMedia(window,"screen"));let cm=!1;"chrome"===om&&window.document.addEventListener("beforeunload",(()=>{cm=!0}));class dm{constructor({selfId:e,room:t,emitter:r,serverSocket:n,webrtcProvider:i,features:s}){const{name:o,session:a,iceServers:c,sfuServer:d,mediaserverConfigTtlSeconds:l}=t;this._selfId=e,this._roomName=o,this._roomSessionId=a&&a.id,this.peerConnections={},this.localStreams={},this.enabledLocalStreamIds=[],this._screenshareVideoTrackIds=[],this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction=null,this._emitter=r,this._serverSocket=n,this._webrtcProvider=i,this._features=s||{},this._isAudioOnlyMode=!1,this.offerOptions={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this._pendingActionsForConnectedPeerConnections=[],this._audioTrackOnEnded=()=>{Fh.sendEvent("audio_ended",{unloading:cm}),this._emit(Zf,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:d,iceServers:c.iceServers||[],mediaserverConfigTtlSeconds:l}),this.totalSessionsCreated=0}numberOfPeerconnections(){return Object.keys(this.peerConnections).length}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._roomName===t&&r===!!this._sfuServer}supportsScreenShareAudio(){return!0}maybeRestrictRelayBandwidth(e){e.maybeRestrictRelayBandwidth()}addNewStream(e,t){if(t!==this.localStreams[e]){if(this._addLocalStream(e,t),e===sm){this._addStreamToPeerConnections(t);const[e]=t.getAudioTracks();e&&this._startMonitoringAudioTrack(e),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const r=e=>{const{enable:t,track:r}=e.detail;this._handleStopOrResumeVideo({enable:t,track:r})};return t.addEventListener("stopresumevideo",r),void(this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",r)})}this._screenshareVideoTrackIds.push(t.getVideoTracks()[0].id),this._shareScreen(e,t)}}replaceTrack(e,t){return e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),t&&"audio"===t.kind&&this._startMonitoringAudioTrack(t),this._replaceTrackToPeerConnections(e,t)}accept({clientId:e,shouldAddLocalVideo:t}){return this.acceptNewStream({streamId:e,clientId:e,shouldAddLocalVideo:t})}disconnectAll(){Object.keys(this.peerConnections).forEach((e=>{this.disconnect(e)})),this.peerConnections={},this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._socketListenerDeregisterFunctions=[],this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null)}fixChromeAudio(e){if("chrome"!==om)return;const t=this._getLocalCameraStream(),r=t.getAudioTracks()[0];return r&&"ended"===r.readyState?navigator.mediaDevices.getUserMedia({audio:e}).then((e=>{const n=e.getAudioTracks()[0];return n.enabled=r.enabled,t.removeTrack(r),t.addTrack(n),this.replaceTrack(r,n)})):void 0}setupSocketListeners(){this._socketListenerDeregisterFunctions=[()=>this._clearMediaServersRefresh(),this._serverSocket.on(sf,(e=>{e.error?im.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(hf,(e=>{this._connect(e.clientId)})),this._serverSocket.on(uf,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(e.message):im.warn("No RTCPeerConnection on ICE_CANDIDATE",e)})),this._serverSocket.on(pf,(e=>{const t=this._getSession(e.clientId);t?t.addIceCandidate(null):im.warn("No RTCPeerConnection on ICE_END_OF_CANDIDATES",e)})),this._serverSocket.on(mf,(e=>{const t=this._getSession(e.clientId);if(!t)return void im.warn("No RTCPeerConnection on SDP_OFFER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleOffer(r).then((t=>{this._emitServerEvent(ff,{receiverId:e.clientId,message:this._transformOutgoingSdp(t)})}))})),this._serverSocket.on(ff,(e=>{const t=this._getSession(e.clientId);if(!t)return void im.warn("No RTCPeerConnection on SDP_ANSWER",e);const r=this._transformIncomingSdp(e.message,t.pc);t.handleAnswer(r)})),this._serverSocket.on(df,(({room:{sfuServer:e}})=>{if(e||!this._wasScreenSharing)return;const t=Object.keys(this.localStreams).find((e=>e!==sm));if(!t)return;const r=this.localStreams[t];if(!r)return void im.warn("screenshare stream %s not found",t);const n=r.getAudioTracks().length>0;this._emitServerEvent(ef,{streamId:t,hasAudioTrack:n})}))]}sendAudioMutedStats(e){Fh.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Fh.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Fh.sendEvent(e,t)}rtcStatsDisconnect(){Fh.server.close()}rtcStatsReconnect(){Fh.server.connected||Fh.server.connect()}setAudioOnly(e){this._isAudioOnlyMode=e,this._forEachPeerConnection((e=>{e.hasConnectedPeerConnection()&&this._withForcedRenegotiation(e,(()=>e.setAudioOnly(this._isAudioOnlyMode,this._screenshareVideoTrackIds)))}))}setRemoteScreenshareVideoTrackIds(e=[]){const t=this._getFirstLocalNonCameraStream();this._screenshareVideoTrackIds=[...(null==t?void 0:t.track)?[t.track.id]:[],...e]}setRoomSessionId(e){this._roomSessionId=e}_setConnectionStatus(e,t,r){const n=e.connectionStatus;n!==t&&e.peerConnectionId!==this._selfId&&(n===kf&&t===Rf||(e.connectionStatus=t,setTimeout((()=>{this._emit(bf,{streamIds:e.streamIds,clientId:r,status:t,previous:n})}),0)))}_setJitterBufferTarget(e){try{e.getReceivers().forEach((e=>{e.jitterBufferTarget=wh,e.playoutDelayHint=.4}))}catch(e){im.error("Error during setting jitter buffer target:",e)}}_emitServerEvent(e,t,r){this._serverSocket.emit(e,t,r)}_emit(e,t){this._emitter.emit(e,t)}_addEnabledLocalStreamId(e){this.enabledLocalStreamIds.push(e)}_deleteEnabledLocalStreamId(e){const t=this.enabledLocalStreamIds.indexOf(e);-1!==t&&this.enabledLocalStreamIds.splice(t,1)}_getSession(e){return e in this.peerConnections?this.peerConnections[e]:null}_getOrCreateSession(e,t){let r=this.peerConnections[e];if(void 0===r){const n="safari"===om&&am&&am>=14&&this._features.deprioritizeH264OnSafari;this.peerConnections[e]=r=new Zh({peerConnectionId:e,bandwidth:t,maximumTurnBandwidth:this._features.unlimitedBandwidthWhenUsingRelayP2POn?-1:1280,deprioritizeH264Encoding:n}),this.totalSessionsCreated++}return r}_getLocalCameraStream(){return this.localStreams[sm]}_getNonLocalCameraStreamIds(){return Object.keys(this.localStreams).filter((e=>e!==sm))}_isScreensharingLocally(){return this._getNonLocalCameraStreamIds().length>0}_getFirstLocalNonCameraStream(){const e=this._getNonLocalCameraStreamIds();return 0===e.length?null:this.localStreams[e[0]]}_transformIncomingSdp(e,t){return{type:e.type,sdp:e.sdpU}}_transformOutgoingSdp(e){return{type:e.type,sdpU:e.sdp}}_createSession({clientId:e,initialBandwidth:t,isOfferer:r,peerConnectionId:n,shouldAddLocalVideo:i}){if(!n)throw new Error("peerConnectionId is missing");if(!e)throw new Error("clientId is missing");const s=this._getOrCreateSession(n,t),o={optional:[]};"chrome"===om&&o.optional.push({googCpuOveruseDetection:!0}),o.optional.push({rtcStatsRoomSessionId:this._roomSessionId}),o.optional.push({rtcStatsClientId:this._selfId}),o.optional.push({rtcStatsPeerId:n}),o.optional.push({rtcStatsConferenceId:this._roomName});const a={iceServers:this._iceServers};if(this._features.turnServerOverrideHost){const e=this._features.turnServerOverrideHost,t=e.indexOf(":")>0?"":":443",r=":"+e+t;a.iceServers=a.iceServers.map((e=>{const t=Object.assign({},e);return t.url&&(t.url=t.url.replace(/:[^?]*/,r)),t.urls&&(t.urls=t.urls.map((e=>e.replace(/:[^?]*/,r)))),t}))}if(this._features.useOnlyTURN){a.iceTransportPolicy="relay";const e={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[this._features.useOnlyTURN];e&&(a.iceServers=a.iceServers.filter((t=>t.url&&t.url.match(e))))}"chrome"===om&&(a.sdpSemantics="unified-plan");const c=s.setAndGetPeerConnection({constraints:o,peerConnectionConfig:a,shouldAddLocalVideo:i,clientId:e});setTimeout((()=>this._emit(Xf)),0),c.ontrack=t=>{const r=t.streams[0];"default"===r.id&&0===r.getAudioTracks().length||-1===s.streamIds.indexOf(r.id)&&(s.streamIds.push(r.id),this._emit(yf,{clientId:e,stream:r}),s.connectionStatus===Tf&&setTimeout((()=>{this._emit(bf,{streamIds:s.streamIds,clientId:e,status:s.connectionStatus,previous:Rf})}),0))},c.oniceconnectionstatechange=()=>{let t;const r=s.connectionStatus;switch(c.iceConnectionState){case"checking":t=Rf;break;case"connected":case"completed":t=Tf,s.wasEverConnected||(this._pendingActionsForConnectedPeerConnections.forEach((e=>{"function"==typeof e&&e()})),this._pendingActionsForConnectedPeerConnections=[]),!s.wasEverConnected&&(c.iceConnectionState.match(/connected|completed/)||"chrome"===om&&c.localDescription&&"answer"===c.localDescription.type)&&(s.wasEverConnected=!0,"false"!==this._features.bandwidth&&this.maybeRestrictRelayBandwidth(s)),this._isAudioOnlyMode&&s.setAudioOnly(!0,this._screenshareVideoTrackIds),s.registerConnected();break;case"disconnected":t=kf,setTimeout((()=>{"disconnected"===c.iceConnectionState&&this._maybeRestartIce(e,s)}),2e3);break;case"failed":t=Pf,r!==t&&this._maybeRestartIce(e,s),null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(qf);break;default:return}this._setConnectionStatus(s,t,e)},c.onconnectionstate=()=>{switch(c.connectionState){case"connected":setTimeout((()=>{(function(e){if("chrome"!==_h.browserDetails.browser||_h.browserDetails.browser<58||"closed"===e.signalingState)return Promise.resolve(!1);const t=e.getSenders().some((e=>e.track&&"audio"===e.track.kind)),r=e.getReceivers().some((e=>e.track&&"audio"===e.track.kind));return e.getStats(null).then((e=>{let n=!1;return e.forEach((e=>{"outbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!t?"inbound-rtp"!==e.type||"audio"!==e.kind&&"audio"!==e.mediaType||!r||0===e.bytesReceived&&(n="inbound"):0===e.bytesSent&&(n="outbound")})),n}))})(s.pc).then((t=>{!1!==t&&this._emit(Yf,{failureDirection:t,clientId:e})}))}),3e3),s.registerConnected();break;case"failed":const t=Pf;null!==s.relayCandidateSeen||s.wasEverConnected||this._emit(qf),this._setConnectionStatus(s,t,e)}};const d=this.localStreams[sm];return i&&d&&s.addStream(d),i&&Object.keys(this.localStreams).forEach((e=>{if(e===sm)return;const t=this.localStreams[e];r?s.addStream(t):s.afterConnected.then((()=>{this._emitServerEvent(ef,{receiverId:s.clientId,streamId:t.id,hasAudioTrack:!!t.getAudioTracks().length}),this._withForcedRenegotiation(s,(()=>s.addStream(t)))}))})),s}_cleanup(e){const t=this._getSession(e);t?(t.close(),delete this.peerConnections[e]):im.warn("No RTCPeerConnection in RTCManager.disconnect()",e)}_forEachPeerConnection(e){Object.values(this.peerConnections).forEach((t=>{e(t)}))}_addStreamToPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.addStream(e)))}))}_addTrackToPeerConnections(e,t){this._forEachPeerConnection((r=>{this._withForcedRenegotiation(r,(()=>r.addTrack(e,t)))}))}_replaceTrackToPeerConnections(e,t){const r=[];return this._forEachPeerConnection((n=>{if(!n.hasConnectedPeerConnection()){im.info("Session doesn't have a connected PeerConnection, adding pending action!");const i=this._pendingActionsForConnectedPeerConnections;if(!i)return void im.warn("No pending action is created to repalce track, because the pending actions array is null");const s=new Promise(((r,s)=>{i.push((()=>{const i=n.replaceTrack(e,t);if(!i)return im.error("replaceTrack returned false!"),void s("ReplaceTrack returned false");i.then((e=>r(e))).catch((e=>s(e)))}))}));return void r.push(s)}const i=n.replaceTrack(e,t);i?r.push(i):im.error("replaceTrack returned false!")})),Promise.all(r)}_removeStreamFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeStream(e)))}))}_removeTrackFromPeerConnections(e){this._forEachPeerConnection((t=>{this._withForcedRenegotiation(t,(()=>t.removeTrack(e)))}))}_addLocalStream(e,t){this._addEnabledLocalStreamId(e),this.localStreams[e]=t}_removeLocalStream(e){delete this.localStreams[e],this._deleteEnabledLocalStreamId(e)}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitServerEvent(Xh)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_connect(e){this.rtcStatsReconnect();let t=this._getSession(e),r=t&&t.bandwidth||0;return t?(im.warn("Replacing peer session",e),this._cleanup(e)):r=this._changeBandwidthForAllClients(!0),t=this._createP2pSession(e,r,!0,!0),this._negotiatePeerConnection(e,t),Promise.resolve(t)}_maybeRestartIce(e,t){const r=t.pc;"disconnected"!==r.iceConnectionState&&"failed"!==r.iceConnectionState||"offer"===r.localDescription.type&&(t.wasEverConnected=!1,t.relayCandidateSeen=!1,t.serverReflexiveCandidateSeen=!1,t.publicHostCandidateSeen=!1,t.ipv6HostCandidateSeen=!1,this.ipv6HostCandidateTeredoSeen=!1,this.ipv6HostCandidate6to4Seen=!1,this.mdnsHostCandidateSeen=!1,this._emit(Qf),this._negotiatePeerConnection(e,t,Object.assign({},this.offerOptions,{iceRestart:!0})))}_setCodecPreferences(e,t,r,n){try{const i=e.getTransceivers().filter((e=>{var t,r;return"audio"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));i.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const t=RTCRtpSender.getCapabilities("audio");for(let e=0;e<t.codecs.length;e++)if(n&&"audio/red"===t.codecs[e].mimeType.toLowerCase()){t.codecs.unshift(t.codecs.splice(e,1)[0]);break}void 0!==e.setCodecPreferences&&e.setCodecPreferences(t.codecs)}));const s=e.getTransceivers().filter((e=>{var t,r;return"video"===(null===(r=null===(t=null==e?void 0:e.sender)||void 0===t?void 0:t.track)||void 0===r?void 0:r.kind)}));s.forEach((e=>{if(void 0===RTCRtpSender.getCapabilities)return;const n=RTCRtpSender.getCapabilities("video");for(let e=0;e<n.codecs.length;e++){if(t&&"video/vp9"===n.codecs[e].mimeType.toLowerCase()){n.codecs.unshift(n.codecs.splice(e,1)[0]);break}if(r&&"video/av1"===n.codecs[e].mimeType.toLowerCase()){n.codecs.unshift(n.codecs.splice(e,1)[0]);break}}void 0!==e.setCodecPreferences&&e.setCodecPreferences(n.codecs)}))}catch(e){im.error("Error during setting setCodecPreferences:",e)}}_negotiatePeerConnection(e,t,r){if(!t)return void im.warn("No RTCPeerConnection in negotiatePeerConnection()",e);const n=t.pc;if(!t.canModifyPeerConnection())return void t.pending.push((()=>{this._negotiatePeerConnection(e,t,r)}));t.isOperationPending=!0;const{vp9On:i,av1On:s,redOn:o,rtpAbsCaptureTimeOn:a}=this._features;(i||s||o)&&this._setCodecPreferences(n,i,s,o),n.createOffer(r||this.offerOptions).then((r=>{a&&(r.sdp=Wh(r.sdp)),(i||o)&&"firefox"===om&&(r.sdp=function(e,t,r){var n,i;try{const s=ji(e);if(Array.isArray(null==s?void 0:s.media)){const e=s.media.find((e=>"audio"===e.type));if(Array.isArray(null==e?void 0:e.rtp)){const t=e.rtp;for(let i=0;i<t.length;i++)if(r&&"red"===t[i].codec){const r=null===(n=e.payloads)||void 0===n?void 0:n.split(" "),s=null==r?void 0:r.indexOf(""+t[i].payload);s&&-1!==s&&s>=0&&(null==r||r.unshift(r.splice(s,1)[0]),e.payloads=null==r?void 0:r.join(" "))}}const o=s.media.find((e=>"video"===e.type));if(Array.isArray(null==o?void 0:o.rtp)){const e=o.rtp;for(let r=0;r<e.length;r++)if(t&&"VP9"===e[r].codec){const t=null===(i=o.payloads)||void 0===i?void 0:i.split(" "),n=null==t?void 0:t.indexOf(""+e[r].payload);n&&-1!==n&&n>=0&&(null==t||t.unshift(t.splice(n,1)[0]),o.payloads=null==t?void 0:t.join(" "))}}}return Mi(s)}catch(e){Uh.error("setCodecPreferenceSDP error:",e)}}(r.sdp,i,o)),this._emitServerEvent(mf,{receiverId:e,message:this._transformOutgoingSdp(r)}),"chrome"===om&&n.getSenders().filter((e=>e.track&&"video"===e.track.kind)).length>=2?t.pendingOffer=r:n.setLocalDescription(r).catch((t=>{im.warn("RTCPeerConnection.setLocalDescription() failed with local offer",t),this._features.reverseOfferOnFailure&&(this._lastReverseDirectionAttemptByClientId||(this._lastReverseDirectionAttemptByClientId={}),(!this._lastReverseDirectionAttemptByClientId[e]||this._lastReverseDirectionAttemptByClientId[e]<Date.now()-1e4)&&(this.acceptNewStream({clientId:e,streamId:e,shouldAddLocalVideo:!0}),this._lastReverseDirectionAttemptByClientId[e]=Date.now()))}))})).catch((e=>{im.warn("RTCPeerConnection.createOffer() failed to create local offer",e)}))}_withForcedRenegotiation(e,t){const r=e.pc,n=r.onnegotationneeded;r.onnegotiationneeded=null,t(),this._negotiatePeerConnection(e.clientId,e),setTimeout((()=>r.onnegotiationneeded=n),0)}_changeBandwidthForAllClients(e){let t=this.numberOfPeerconnections();if(e&&(t+=1),0===t)return 0;t>7&&(t=7);let r=this._features.bandwidth?parseInt(this._features.bandwidth,10):{1:0,2:this._features.highP2PBandwidth?768:384,3:this._features.highP2PBandwidth?512:256,4:192,5:128,6:128,7:64}[t];if(void 0===r)return 0;if(this._features.adjustBitratesFromResolution){const e=this._getLocalCameraStream();if(e){const t=e&&e.getVideoTracks()[0];if(t){const{width:e,height:n,frameRate:i}=t.getSettings();if(e&&n&&i){const t=Math.round(function(e,t,r){let n=e*t;n<Df&&(n=Df),n>xf&&(n=xf);let i=If;n>xf?i=Mf:n>Df&&(i+=-17582143775720163e-22*(n-Df));let s=e*t*i;return r<=15?s*=.7:r<=24&&(s*=.9),s}(e,n,i)/1e3);r=Math.min(t,r||t)}}}}return this._features.higherP2PBitrates&&(r*=1.5),this._forEachPeerConnection((e=>{e.changeBandwidth(r)})),r}_createP2pSession(e,t,r,n){const i=this._createSession({peerConnectionId:e,clientId:e,initialBandwidth:t,shouldAddLocalVideo:r,isOfferer:n}),s=i.pc;this._features.increaseIncomingMediaBufferOn&&this._setJitterBufferTarget(s);const o=this.localStreams[sm];return r&&o&&!o.getVideoTracks().length&&this._stoppedVideoTrack&&s.addTrack(this._stoppedVideoTrack,o),s.onicegatheringstatechange=e=>{switch(e.target.iceGatheringState){case"gathering":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=setTimeout((()=>{i.publicHostCandidateSeen||i.relayCandidateSeen||i.serverReflexiveCandidateSeen||this._emit(Jf)}),3e3);break;case"complete":this.icePublicIPGatheringTimeoutID&&clearTimeout(this.icePublicIPGatheringTimeoutID),this.icePublicIPGatheringTimeoutID=void 0}},s.onicecandidate=t=>{var r,n;if(t.candidate){switch(null===(r=t.candidate)||void 0===r?void 0:r.type){case"host":const e=null===(n=null==t?void 0:t.candidate)||void 0===n?void 0:n.address;try{if(Uf.v4({exact:!0}).test(e)){Ru(e).isPublicIp&&(i.publicHostCandidateSeen=!0)}else if(Uf.v6({exact:!0}).test(e.replace(/^\[(.*)\]/,"$1"))){const t=new yl.Address6(e.replace(/^\[(.*)\]/,"$1"));i.ipv6HostCandidateSeen=!0,"Global"===t.getScope()&&(i.publicHostCandidateSeen=!0),t.isTeredo()&&(i.ipv6HostCandidateTeredoSeen=!0),t.is6to4()&&(i.ipv6HostCandidate6to4Seen=!0)}else{const t=e.replace(/.local/,"");t&&Du(t,4)&&(i.mdnsHostCandidateSeen=!0)}}catch(e){im.info("Error during parsing candidates! Error: ",{error:e})}break;case"srflx":i.serverReflexiveCandidateSeen||(i.serverReflexiveCandidateSeen=!0);break;case"relay":case"relayed":i.relayCandidateSeen||(i.relayCandidateSeen=!0)}this._emitServerEvent(uf,{receiverId:e,message:t.candidate})}else this._emitServerEvent(pf,{receiverId:e}),i.publicHostCandidateSeen||i.relayCandidateSeen||i.serverReflexiveCandidateSeen||this._emit(Kf),i.ipv6HostCandidateSeen&&this._emit(Hf,{teredoSeen:i.ipv6HostCandidateTeredoSeen,sixtofourSeen:i.ipv6HostCandidate6to4Seen}),i.mdnsHostCandidateSeen&&this._emit(Wf)},s.onnegotiationneeded=()=>{"new"!==s.iceConnectionState&&i.connectionStatus&&this._negotiatePeerConnection(e,i)},i}acceptNewStream({streamId:e,clientId:t,shouldAddLocalVideo:r}){let n=this._getSession(t);if(n&&e!==t)return n;let i=n&&n.bandwidth||0;return n?(im.warn("Replacing peer session",t),this._cleanup(t)):i=this._changeBandwidthForAllClients(!0),n=this._createP2pSession(t,i,r),this._emitServerEvent(hf,{receiverId:t}),n}disconnect(e){this._cleanup(e),this._changeBandwidthForAllClients(!1);0===this.numberOfPeerconnections()&&setTimeout((()=>{0===this.numberOfPeerconnections()&&this.rtcStatsDisconnect()}),6e4)}updateStreamResolution(){}stopOrResumeAudio(){}_handleStopOrResumeVideo({enable:e,track:t}){e?this._stoppedVideoTrack?(this._replaceTrackToPeerConnections(this._stoppedVideoTrack,t),delete this._stoppedVideoTrack):this._addTrackToPeerConnections(t):this._stoppedVideoTrack=t}stopOrResumeVideo(e,t){if(["chrome","safari"].includes(om))if(!1===t)setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emit(Cf,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3);else if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;if(!r)return;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const n=r.getVideoTracks()[0];e.addTrack(n),this._emit(Sf,{streamId:e.id,tracks:[n],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:n})}))}}_shareScreen(e,t){this._emitServerEvent(ef,{streamId:e,hasAudioTrack:!!t.getAudioTracks().length}),this._wasScreenSharing=!0,this._addStreamToPeerConnections(t)}removeStream(e,t,r){this._removeLocalStream(e),this._removeStreamFromPeerConnections(t),this._wasScreenSharing=!1,this._emitServerEvent(tf,{streamId:e,requestedByClientId:r})}hasClient(e){return Object.keys(this.peerConnections).includes(e)}}var lm=Object.freeze({__proto__:null,KalmanFilter:class{constructor({R:e=.01,Q:t=2,A:r=1.1,B:n=1,C:i=1.2}={R:.01,Q:2,A:1.1,B:1,C:1.2}){this.R=e,this.Q=t,this.A=r,this.C=i,this.B=n,this.cov=NaN,this.x=NaN}filter(e,t=0){if(isNaN(this.x))this.x=1/this.C*e,this.cov=1/this.C*this.Q*(1/this.C);else{const r=this.predict(t),n=this.uncertainty(),i=n*this.C*(1/(this.C*n*this.C+this.Q));this.x=r+i*(e-this.C*r),this.cov=n-i*this.C*n}return this.x}predict(e=0){return this.A*this.x+this.B*e}uncertainty(){return this.A*this.cov*this.A+this.R}lastMeasurement(){return this.x}setMeasurementNoise(e){this.Q=e}setProcessNoise(e){this.R=e}},calculateStd:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,r)=>e.concat(Math.pow(r-t,2))),[]).reduce(((e,t)=>e+t),0)/e.length},createACFCalculator:()=>{let e=-1,t=0,r=0;return n=>{const i=n.reduce(((e,t)=>e+t),0)/n.length;if(e=e<0?i:.95*e+.05*i,++r<2)return t=i,0;const s=(i-e)*(t-e);return t=i,s}},standardDeviation:e=>{const t=e.reduce(((e,t)=>e+t),0)/e.length;return{mean:t,SD:Math.sqrt(e.reduce(((e,r)=>e+Math.pow(r-t,2)),0)/e.length)}},variance:(e,t=!1)=>{const r=e.reduce(((e,t)=>e+t),0)/e.length;return e.reduce(((e,t)=>e.concat(Math.pow(t-r,2))),[]).reduce(((e,t)=>e+t),0)/(e.length-(t?0:1))}});const um={minDecibels:-80,maxDecibels:-10,smoothingTimeConstant:.8,aggSize:1,sampleRate:10,reportRate:2,bins:32,bands:[[0,1,2,3],[4,5,6,7]],separateTrack:{autoGainControl:!1,noiseSupression:!1},binFormula:"bin",scoreFormula:"300 * bands[1].avg / Math.max(bands[1].avg + bands[0].avg, 0.01)",outFormula:"score"},pm=new eh;const hm=new eh,fm=Object.freeze({ok:"ok",warning:"warning",critical:"critical"});class mm extends fr{constructor(){super(),this._clients={},this._producers={},this._startMonitor()}close(){clearInterval(this._intervalHandle),delete this._intervalHandle,this._producers={},this._clients={}}_startMonitor(){this._intervalHandle=setInterval((()=>{Object.entries(this._producers).forEach((([e,t])=>{this._evaluateClient(e,t)}))}),600)}_evaluateClient(e,t){this._clients[e]||(this._clients[e]={audio:{currentQuality:fm.ok,trend:[]},video:{currentQuality:fm.ok,trend:[]}}),this._evaluateProducer(e,Object.values(t).filter((e=>"audio"===e.kind)),"audio"),this._evaluateProducer(e,Object.values(t).filter((e=>"video"===e.kind)),"video")}_evaluateProducer(e,t,r){if(0===t.length)return;const n=t.reduce(((e,t)=>e+t.score),0)/t.length,i=this._evaluateScore(n);this._updateTrend(i,this._clients[e][r])&&this.emit(vf,{clientId:e,kind:r,quality:i})}_updateTrend(e,t){return t.trend.push(e),t.trend.length>3&&t.trend.shift(),!(e===t.currentQuality||!t.trend.every((e=>e!==t.currentQuality)))&&(t.currentQuality=e,!0)}addProducer(e,t){e&&t&&"string"==typeof e&&"string"==typeof t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):hm.warn("Missing clientId or producerId")}removeProducer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addConsumer(e,t){e&&t?(this._producers[e]||(this._producers[e]={}),this._producers[e][t]={}):hm.warn("Missing clientId or consumerId")}removeConsumer(e,t){delete this._producers[e][t],0===Object.keys(this._producers[e]).length&&delete this._producers[e]}addProducerScore(e,t,r,n){Array.isArray(n)&&0!==n.length&&!n.some((e=>!e||!e.hasOwnProperty("score")||"number"!=typeof e.score||isNaN(e.score)))?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(n.map((e=>e.score)))}:hm.warn("Unexpected producer score format")}addConsumerScore(e,t,r,n){n&&n.hasOwnProperty("producerScores")&&Array.isArray(n.producerScores)?this._producers[e][t]={kind:r,score:this._calcAvgProducerScore(n.producerScores)}:hm.warn("Unexpected consumer score format")}_evaluateScore(e){return e<=9&&e>7?fm.warning:e<=7&&e>0?fm.critical:fm.ok}_calcAvgProducerScore(e){try{if(!Array.isArray(e)||0===e.length)return 0;let t=0,r=0;return e.forEach((e=>{e>0&&(t+=e,r++)})),0===t||0===r?0:t/r}catch(e){return hm.error(e),0}}}var gm;const vm=null!==(gm=dl.default)&&void 0!==gm?gm:dl,bm=new eh,ym=vm.browserDetails.browser;let _m=!1;const wm=bl(),Sm=bl();"chrome"===ym&&window.document.addEventListener("beforeunload",(()=>_m=!0));class Cm{constructor({selfId:e,room:t,emitter:r,serverSocket:n,webrtcProvider:i,features:s,eventClaim:o,deviceHandlerFactory:a}){const{session:c,iceServers:d,sfuServer:l,mediaserverConfigTtlSeconds:u}=t;this._selfId=e,this._room=t,this._roomSessionId=null==c?void 0:c.id,this._emitter=r,this._serverSocket=n,this._webrtcProvider=i,this._features=s||{},this._eventClaim=o,this._vegaConnection=null,this._micAnalyser=null,this._micAnalyserDebugger=null,this._mediasoupDevice=a?new Cr.Device({handlerFactory:a}):new Cr.Device({handlerName:bh()}),this._routerRtpCapabilities=null,this._sendTransport=null,this._receiveTransport=null,this._clientStates=new Map,this._streamIdToVideoConsumerId=new Map,this._consumers=new Map,this._dataConsumers=new Map,this._localStreamDeregisterFunction=null,this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._micProducer=null,this._micProducerPromise=null,this._micPaused=!1,this._micScoreProducer=null,this._micScoreProducerPromise=null,this._webcamProducer=null,this._webcamProducerPromise=null,this._webcamPaused=!1,this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._sndTransportIceRestartPromise=null,this._rcvTransportIceRestartPromise=null,this._colocation=null,this._stopCameraTimeout=null,this._audioTrackOnEnded=()=>{Fh.sendEvent("audio_ended",{unloading:_m}),this._emitToPWA(Zf,{})},this._updateAndScheduleMediaServersRefresh({sfuServer:l,iceServers:d.iceServers||[],mediaserverConfigTtlSeconds:u}),this._socketListenerDeregisterFunctions=[],this._reconnect=!0,this._reconnectTimeOut=null,this._qualityMonitor=new mm,this._qualityMonitor.on(vf,(e=>{this._emitToPWA(vf,e)}))}_updateAndScheduleMediaServersRefresh({iceServers:e,sfuServer:t,mediaserverConfigTtlSeconds:r}){var n,i;this._iceServers=e,this._sfuServer=t,this._mediaserverConfigTtlSeconds=r,null===(n=this._sendTransport)||void 0===n||n.updateIceServers({iceServers:this._iceServers}),null===(i=this._receiveTransport)||void 0===i||i.updateIceServers({iceServers:this._iceServers}),this._clearMediaServersRefresh(),r&&(this._fetchMediaServersTimer=setTimeout((()=>this._emitToSignal(Xh)),1e3*r))}_clearMediaServersRefresh(){this._fetchMediaServersTimer&&(clearTimeout(this._fetchMediaServersTimer),this._fetchMediaServersTimer=null)}setupSocketListeners(){this._socketListenerDeregisterFunctions.push((()=>this._clearMediaServersRefresh()),this._serverSocket.on(sf,(e=>{e.error?bm.warn("FETCH_MEDIASERVER_CONFIG failed:",e.error):this._updateAndScheduleMediaServersRefresh(e)})),this._serverSocket.on(df,(()=>{this._screenVideoTrack&&this._emitScreenshareStarted()}))),this._connect()}_emitScreenshareStarted(){this._emitToSignal(ef,{streamId:Sm,hasAudioTrack:Boolean(this._screenAudioTrack)})}_connect(){const e=this._features.sfuServerOverrideHost||[this._sfuServer.url],t=new URLSearchParams(Object.assign({clientId:this._selfId,organizationId:this._room.organizationId,roomName:this._room.name,eventClaim:this._room.isClaimed?this._eventClaim:null,lowBw:"true"},Object.keys(this._features||{}).filter((e=>this._features[e]&&/^sfu/.test(e))).reduce(((e,t)=>Object.assign(Object.assign({},e),{[t]:this._features[t]})),{}))),r=`wss://${e}?${t.toString()}`;this._vegaConnection=new dh(r),this._vegaConnection.on("open",(()=>this._join())),this._vegaConnection.on("close",(()=>this._onClose())),this._vegaConnection.on("message",(e=>this._onMessage(e)))}_onClose(){var e,t;bm.info("_onClose()"),null===(e=this._sendTransport)||void 0===e||e.close(),null===(t=this._receiveTransport)||void 0===t||t.close(),this._sendTransport=null,this._receiveTransport=null,this._streamIdToVideoConsumerId.clear(),this._reconnect&&(this._reconnectTimeOut=setTimeout((()=>this._connect()),1e3)),this._qualityMonitor.close(),this._emitToPWA(tm)}_join(){return th(this,void 0,void 0,(function*(){bm.info("join()"),this._emitToPWA(em);try{const{routerRtpCapabilities:e}=yield this._vegaConnection.request("getCapabilities");this._routerRtpCapabilities||(((e,t)=>{const{vp9On:r,h264On:n}=t;if(r){const{preferredPayloadType:t}=e.codecs.find((e=>"video/vp9"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}else if(n){const{preferredPayloadType:t}=e.codecs.find((e=>"video/h264"===e.mimeType.toLowerCase())),{preferredPayloadType:r}=e.codecs.find((e=>"video/rtx"===e.mimeType.toLowerCase()&&e.parameters.apt===t));e.codecs=e.codecs.filter((e=>"audio"===e.kind||e.preferredPayloadType===t||e.preferredPayloadType===r))}})(e,this._features),this._routerRtpCapabilities=e,yield this._mediasoupDevice.load({routerRtpCapabilities:e})),this._vegaConnection.message("setCapabilities",{rtpCapabilities:this._mediasoupDevice.rtpCapabilities}),this._colocation&&this._vegaConnection.message("setColocation",{colocation:this._colocation}),yield Promise.all([this._createTransport(!0),this._createTransport(!1)]);const t=[];!this._micTrack||this._micProducer||this._micProducerPromise||t.push(this._internalSendMic()),!this._webcamTrack||this._webcamProducer||this._webcamProducerPromise||t.push(this._internalSendWebcam()),!this._screenVideoTrack||this._screenVideoProducer||this._screenVideoProducerPromise||t.push(this._internalSendScreenVideo()),!this._screenAudioTrack||this._screenAudioProducer||this._screenAudioProducerPromise||t.push(this._internalSendScreenAudio()),yield Promise.all(t)}catch(e){bm.error("_join() [error:%o]",e)}}))}_createTransport(e){return th(this,void 0,void 0,(function*(){const t=e?"createSendTransport":"createRecvTransport",r=yield this._vegaConnection.request("createTransport",{producing:e,consuming:!e,enableTcp:!0,enableUdp:!0,preferUdp:!0,sctpParameters:{enableSctp:!0,numSctpStreams:{OS:1024,MIS:1024},maxSctpMessageSize:262144,sctpSendBufferSize:262144}});r.iceServers=this._iceServers,((e,t)=>{if(!t.useOnlyTURN)return;e.iceTransportPolicy="relay";const r={onlyudp:/^turn:.*transport=udp$/,onlytcp:/^turn:.*transport=tcp$/,onlytls:/^turns:.*transport=tcp$/}[t.useOnlyTURN];r&&(e.iceServers=e.iceServers.filter((e=>e.url&&e.url.match(r))))})(r,this._features);const n=this._mediasoupDevice[t](r),i=t=>th(this,void 0,void 0,(function*(){if(bm.info(`Transport ConnectionStateChanged ${t}`),"disconnected"===t||"failed"===t)if(e){if(this._sndTransportIceRestartPromise)return;this._sndTransportIceRestartPromise=this._restartIce(n).finally((()=>{this._sndTransportIceRestartPromise=null}))}else{if(this._rcvTransportIceRestartPromise)return;this._rcvTransportIceRestartPromise=this._restartIce(n).finally((()=>{this._rcvTransportIceRestartPromise=null}))}}));n.on("connect",(({dtlsParameters:e},t)=>{var r;null===(r=this._vegaConnection)||void 0===r||r.message("connectTransport",{transportId:n.id,dtlsParameters:e}),t()})).on("connectionstatechange",i),n.observer.once("close",(()=>{n.removeListener(i)})),e?(n.on("produce",(({kind:e,rtpParameters:t,appData:r},i,s)=>th(this,void 0,void 0,(function*(){var o;try{const{paused:s}=r,{id:a}=yield null===(o=this._vegaConnection)||void 0===o?void 0:o.request("produce",{transportId:n.id,kind:e,rtpParameters:t,paused:s,appData:r});i({id:a})}catch(e){s(e)}})))),n.on("producedata",(({appData:e,sctpStreamParameters:t},r,i)=>th(this,void 0,void 0,(function*(){var s;try{const{id:i}=yield null===(s=this._vegaConnection)||void 0===s?void 0:s.request("produceData",{transportId:n.id,sctpStreamParameters:t,appData:e});r({id:i})}catch(e){i(e)}})))),this._sendTransport=n):this._receiveTransport=n}))}_restartIce(e,t=0){return th(this,void 0,void 0,(function*(){if(!e||!("closed"in e)||!("connectionState"in e))return void bm.info("_restartIce: No transport or property closed or connectionState!");if(e.closed)return void bm.info("_restartIce: Transport is closed!");if("disconnected"!==e.connectionState&&"failed"!==e.connectionState)return void bm.info("_restartIce: Connection is healthy ICE restart no loneger needed!");const{iceRestartStarted:r}=e.appData,n=Date.now();if(Number.isFinite(r)&&n-r<3500)return;if(e.appData.iceRestartStarted=n,5<=t)return void bm.info("_restartIce: Reached restart ICE maximum retry count!");if(!this._vegaConnection)return void bm.info("_restartIce: Connection is undefined");const{iceParameters:i}=yield this._vegaConnection.request("restartIce",{transportId:e.id});bm.info("_restartIce: ICE restart iceParameters received from SFU: ",i);const s=yield e.restartIce({iceParameters:i}).then((()=>null)).catch((e=>e));if(s)switch(bm.error(`_restartIce: ICE restart failed: ${s}`),s.message){case"missing transportId":case"no such transport":break;default:yield new Promise((e=>{setTimeout((()=>{e(void 0)}),Math.min(3500*Math.pow(2,t),6e4))})),yield this._restartIce(e,t+1)}else yield new Promise((e=>{setTimeout((()=>{e(void 0)}),6e4*Math.min(8,t+1))})),"failed"!==e.connectionState&&"disconnected"!==e.connectionState||(yield this._restartIce(e,t+1))}))}_internalSendMic(){return th(this,void 0,void 0,(function*(){bm.info("_internalSendMic()"),this._micProducerPromise=(()=>th(this,void 0,void 0,(function*(){try{if(!this._micTrack||!this._sendTransport||this._micProducer)return void(this._micProducerPromise=null);const e=this._micPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._micTrack,disableTrackOnPause:!1,stopTracks:!1},vh("audio",!1,this._features)),{appData:{streamId:wm,sourceClientId:this._selfId,screenShare:!1,source:"mic",paused:e}}));e?t.pause():t.resume(),this._micProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;bm.info('micProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._micProducer=null,this._micProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._micTrack!==this._micProducer.track&&(yield this._replaceMicTrack()),this._micPaused!==this._micProducer.paused&&this._pauseResumeMic()}catch(e){bm.error("micProducer failed:%o",e)}finally{this._micProducerPromise=null,this._micTrack||(this._stopProducer(this._micProducer),this._micProducer=null)}})))()}))}_internalSetupMicScore(){return th(this,void 0,void 0,(function*(){bm.info("_internalSetupMicScore()"),this._micScoreProducerPromise=(()=>th(this,void 0,void 0,(function*(){try{if(!this._micProducer||!this._colocation||this._micScoreProducer)return void(this._micScoreProducerPromise=null);const e=yield this._sendTransport.produceData({ordered:!1,maxPacketLifeTime:3e3,label:"micscore",appData:{producerId:this._micProducer.id,clientId:this._selfId}});this._micScoreProducer=e,e.observer.once("close",(()=>{var t;bm.info('micScoreProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeDataProducers",{dataProducerIds:[e.id]})),this._micScoreProducer=null,this._micScoreProducerPromise=null}))}catch(e){bm.error("micScoreProducer failed:%o",e)}finally{this._micScoreProducerPromise=null,this._micProducer&&this._colocation||this._stopMicScoreProducer()}})))()}))}_stopMicScoreProducer(){this._stopProducer(this._micScoreProducer),this._micScoreProducer=null}_replaceMicTrack(){var e;return th(this,void 0,void 0,(function*(){bm.info("_replaceMicTrack()"),this._micTrack&&this._micProducer&&!this._micProducer.closed&&this._micProducer.track!==this._micTrack&&(yield this._micProducer.replaceTrack({track:this._micTrack}),null===(e=this._micAnalyser)||void 0===e||e.setTrack(this._micTrack),yield this._replaceMicTrack())}))}_pauseResumeMic(){var e,t;bm.info("_pauseResumeMic()"),this._micProducer&&!this._micProducer.closed&&this._micPaused!==this._micProducer.paused&&(this._micPaused?(this._micProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._micProducer.id]})):(this._micProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._micProducer.id]})),this._pauseResumeMic())}_sendMic(e){return th(this,void 0,void 0,(function*(){return bm.info("_sendMic() [track:%o]",e),this._micTrack=e,this._micProducer?yield this._replaceMicTrack():this._micProducerPromise?void 0:this._sendTransport?yield this._internalSendMic():void 0}))}_sendMicScore(e){if(!isNaN(e)&&isFinite(e))if(this._micScoreProducer){if(this._micScoreProducer.closed)return void this._stopMicScoreProducer();try{this._micScoreProducer.send(JSON.stringify({score:e}))}catch(e){bm.error("_sendMicScore failed [error:%o]",e)}}else!this._micScoreProducerPromise&&this._micProducer&&this._colocation&&0!==e&&this._internalSetupMicScore()}_internalSendWebcam(){return th(this,void 0,void 0,(function*(){bm.info("_internalSendWebcam()"),this._webcamProducerPromise=(()=>th(this,void 0,void 0,(function*(){try{if(!this._webcamTrack||!this._sendTransport||this._webcamProducer)return void(this._webcamProducerPromise=null);const e=this._webcamPaused,t=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._webcamTrack,disableTrackOnPause:!1,stopTracks:!1},vh("video",!1,this._features)),{appData:{streamId:wm,sourceClientId:this._selfId,screenShare:!1,source:"webcam",paused:e}}));e?t.pause():t.resume(),this._webcamProducer=t,this._qualityMonitor.addProducer(this._selfId,t.id),t.observer.once("close",(()=>{var e;bm.info('webcamProducer "close" event'),t.appData.localClosed&&(null===(e=this._vegaConnection)||void 0===e||e.message("closeProducers",{producerIds:[t.id]})),this._webcamProducer=null,this._webcamProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,t.id)})),this._webcamTrack!==this._webcamProducer.track&&(yield this._replaceWebcamTrack()),this._webcamPaused!==this._webcamProducer.paused&&this._pauseResumeWebcam()}catch(e){bm.error("webcamProducer failed:%o",e)}finally{this._webcamProducerPromise=null,this._webcamTrack||(yield this._stopProducer(this._webcamProducer),this._webcamProducer=null)}})))()}))}_replaceWebcamTrack(){return th(this,void 0,void 0,(function*(){bm.info("_replaceWebcamTrack()"),this._webcamTrack&&this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track!==this._webcamTrack&&(yield this._webcamProducer.replaceTrack({track:this._webcamTrack}),yield this._replaceWebcamTrack())}))}_pauseResumeWebcam(){var e,t;bm.info("_pauseResumeWebcam()"),this._webcamProducer&&!this._webcamProducer.closed&&this._webcamPaused!==this._webcamProducer.paused&&(this._webcamPaused?(this._webcamProducer.pause(),null===(e=this._vegaConnection)||void 0===e||e.message("pauseProducers",{producerIds:[this._webcamProducer.id]})):(this._webcamProducer.resume(),null===(t=this._vegaConnection)||void 0===t||t.message("resumeProducers",{producerIds:[this._webcamProducer.id]})),this._pauseResumeWebcam())}_sendWebcam(e){return th(this,void 0,void 0,(function*(){return bm.info("_sendWebcam() [track:%o]",e),this._webcamTrack=e,this._webcamProducer?yield this._replaceWebcamTrack():this._webcamProducerPromise?void 0:this._sendTransport?yield this._internalSendWebcam():void 0}))}_internalSendScreenVideo(){return th(this,void 0,void 0,(function*(){bm.info("_internalSendScreenVideo()"),this._screenVideoProducerPromise=(()=>th(this,void 0,void 0,(function*(){try{if(!this._screenVideoTrack||!this._sendTransport||this._screenVideoProducer)return void(this._screenVideoProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenVideoTrack,disableTrackOnPause:!1,stopTracks:!1},vh("video",!0,this._features)),{appData:{streamId:Sm,sourceClientId:this._selfId,screenShare:!0,source:"screenvideo",paused:!1}}));this._screenVideoProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;bm.info('screenVideoProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenVideoProducer=null,this._screenVideoProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenVideoTrack!==this._screenVideoProducer.track&&(yield this._replaceScreenVideoTrack())}catch(e){bm.error("screenVideoProducer failed:%o",e)}finally{this._screenVideoProducerPromise=null,this._screenVideoTrack||(yield this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null)}})))()}))}_replaceScreenVideoTrack(){return th(this,void 0,void 0,(function*(){bm.info("_replaceScreenVideoTrack()"),this._screenVideoTrack&&this._screenVideoProducer&&!this._screenVideoProducer.closed&&this._screenVideoProducer.track!==this._screenVideoTrack&&(yield this._screenVideoProducer.replaceTrack({track:this._screenVideoTrack}),yield this._replaceScreenVideoTrack())}))}_sendScreenVideo(e){return th(this,void 0,void 0,(function*(){return bm.info("_sendScreenVideo() [track:%o]",e),this._screenVideoTrack=e,this._screenVideoProducer?yield this._replaceScreenVideoTrack():this._screenVideoProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenVideo():void 0}))}_internalSendScreenAudio(){return th(this,void 0,void 0,(function*(){bm.info("_internalSendScreenAudio()"),this._screenAudioProducerPromise=(()=>th(this,void 0,void 0,(function*(){try{if(!this._screenAudioTrack||!this._sendTransport||this._screenAudioProducer)return void(this._screenAudioProducerPromise=null);const e=yield this._sendTransport.produce(Object.assign(Object.assign({track:this._screenAudioTrack,disableTrackOnPause:!1,stopTracks:!1},vh("audio",!0,this._features)),{appData:{streamId:Sm,sourceClientId:this._selfId,screenShare:!0,source:"screenaudio",paused:!1}}));this._screenAudioProducer=e,this._qualityMonitor.addProducer(this._selfId,e.id),e.observer.once("close",(()=>{var t;bm.info('screenAudioProducer "close" event'),e.appData.localClosed&&(null===(t=this._vegaConnection)||void 0===t||t.message("closeProducers",{producerIds:[e.id]})),this._screenAudioProducer=null,this._screenAudioProducerPromise=null,this._qualityMonitor.removeProducer(this._selfId,e.id)})),this._screenAudioTrack!==this._screenAudioProducer.track&&(yield this._replaceScreenAudioTrack())}catch(e){bm.error("screenAudioProducer failed:%o",e)}finally{this._screenAudioProducerPromise=null,this._screenAudioTrack||(yield this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null)}})))()}))}_replaceScreenAudioTrack(){return th(this,void 0,void 0,(function*(){bm.info("_replaceScreenAudioTrack()"),this._screenAudioTrack&&this._screenAudioProducer&&!this._screenAudioProducer.closed&&this._screenAudioProducer.track!==this._screenAudioTrack&&(yield this._screenAudioProducer.replaceTrack({track:this._screenAudioTrack}),yield this._replaceScreenAudioTrack())}))}_sendScreenAudio(e){return th(this,void 0,void 0,(function*(){return bm.info("_sendScreenAudio() [track:%o]",e),this._screenAudioTrack=e,this._screenAudioProducer?yield this._replaceScreenAudioTrack():this._screenAudioProducerPromise?void 0:this._sendTransport?yield this._internalSendScreenAudio():void 0}))}_stopProducer(e){bm.info("_stopProducer()"),e&&!e.closed&&(e.appData.localClosed=!0,e.close())}isInitializedWith({selfId:e,roomName:t,isSfu:r}){return this._selfId===e&&this._room.name===t&&Boolean(r)}setEventClaim(e){var t;this._eventClaim=e,null===(t=this._vegaConnection)||void 0===t||t.message("eventClaim",{eventClaim:e})}setColocation(e){var t;this._colocation=e,null===(t=this._vegaConnection)||void 0===t||t.message("setColocation",{colocation:e}),e||!this._micScoreProducer||this._micScoreProducerPromise||this._stopMicScoreProducer(),this._syncMicAnalyser(),Fh.sendEvent("colocation_changed",{colocation:e})}setAudioOnly(e){var t;null===(t=this._vegaConnection)||void 0===t||t.message(e?"enableAudioOnly":"disableAudioOnly")}setRemoteScreenshareVideoTrackIds(){}setRoomSessionId(e){this._roomSessionId=e}disconnect(e,t,r){var n;if(bm.info("disconnect() [clientIdOrStreamId:%s, eventClaim:%s]",e,r),this._clientStates.has(e)){const t=this._clientStates.get(e);t.hasAcceptedWebcamStream=!1,t.hasAcceptedScreenStream=!1,this._syncIncomingStreamsWithPWA(e)}r&&(this._eventClaim=r,null===(n=this._vegaConnection)||void 0===n||n.message("eventClaim",{eventClaim:r}))}replaceTrack(e,t){e&&"audio"===e.kind&&this._stopMonitoringAudioTrack(e),"audio"===t.kind&&(this._startMonitoringAudioTrack(t),this._micTrack=t,this._replaceMicTrack()),"video"===t.kind&&(this._webcamTrack=t,this._replaceWebcamTrack())}removeStream(e,t,r){bm.info("removeStream() [streamId:%s, requestedByClientId:%s]",e,r),this._emitToSignal(tf,{streamId:Sm,requestedByClientId:r}),this._stopProducer(this._screenVideoProducer),this._screenVideoProducer=null,this._screenVideoTrack=null,this._stopProducer(this._screenAudioProducer),this._screenAudioProducer=null,this._screenAudioTrack=null}_onMicAnalyserScoreUpdated(e){var t,r;null===(r=null===(t=this._micAnalyserDebugger)||void 0===t?void 0:t.onScoreUpdated)||void 0===r||r.call(t,e),this._sendMicScore(this._micPaused?0:e.out)}addNewStream(e,t,r,n){if("0"===e){this._micPaused=r,this._webcamPaused=n;const e=t.getVideoTracks()[0],i=t.getAudioTracks()[0];e&&this._sendWebcam(e),i&&(this._sendMic(i),this._syncMicAnalyser(),this._startMonitoringAudioTrack(i)),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null);const s=e=>{const{enable:t,track:r}=e.detail;this._webcamPaused=!t,this._pauseResumeWebcam(),this._handleStopOrResumeVideo({enable:t,track:r})};t.addEventListener("stopresumevideo",s),this._localStreamDeregisterFunction=()=>{t.removeEventListener("stopresumevideo",s)}}else{const e=t.getVideoTracks()[0],r=t.getAudioTracks()[0];e&&this._sendScreenVideo(e),r&&this._sendScreenAudio(r),this._emitScreenshareStarted()}}_syncMicAnalyser(){if(!this._micTrack||!this._colocation||this._micAnalyser)return this._micAnalyser&&!this._colocation?(this._micAnalyser.close(),void(this._micAnalyser=null)):void 0;this._micAnalyser=function({micTrack:e,params:t,onScoreUpdated:r}){const n=new AudioContext;let i=null,s=null,o=null,a=!1;const c=e=>th(this,void 0,void 0,(function*(){if(o&&a&&o.stop(),a=!1,e&&t.separateTrack)try{const r=yield navigator.mediaDevices.getUserMedia({audio:Object.assign({deviceId:null==o?void 0:o.getSettings().deviceId},t.separateTrack),video:!1});e=r.getAudioTracks()[0],a=!0}catch(e){pm.warn("unable to fetch new track for colocation speaker analysis, using current",e)}if(o=e,s&&(s.disconnect(),s=null),e){const t=new MediaStream([e]);s=n.createMediaStreamSource(t),s.connect(i)}}));let d;const l=e=>{if(clearInterval(d),t=Object.assign(Object.assign({},um),e),!i||i.fftSize!==2*t.bins){let e=null;i&&(e=o,c(null)),i=n.createAnalyser(),i.fftSize=2*t.bins,e&&c(e)}const s=new Uint8Array(i.frequencyBinCount),a=[];i.minDecibels=t.minDecibels,i.maxDecibels=t.maxDecibels,i.smoothingTimeConstant=t.smoothingTimeConstant;const l=t.initScript&&new Function("f","setTrack","lastTrack",t.initScript.join("\n")),u=t.scoreScript&&new Function("bins","g","f",t.scoreScript.join("\n")),p=t.scoreFormula&&new Function("bands",`return ${t.scoreFormula}`),h=t.outFormula&&new Function("score","avg","max","scores",`return ${t.outFormula}`),f=t.binFormula&&new Function("bin","index",`return ${t.binFormula}`);let m=0;const g=l&&l(lm,c,o);d=setInterval((()=>{i.getByteFrequencyData(s);let e=0;if(p){const r=t.bands.map((e=>{const t=e.map((e=>f(s[e]/255,e)));return{avg:t.reduce(((e,t)=>e+t),0)/e.length,min:t.reduce(((e,t)=>Math.min(e,t/255)),Number.MAX_VALUE),max:t.reduce(((e,t)=>Math.max(e,t/255)),0)}}));e=p(r)||0}else u&&(e=u(s,g,lm),isNaN(e)&&(e=0));if(a.push(e),a.length>t.aggSize&&a.shift(),m++,m>=t.reportRate){m=0;const t=a.reduce(((e,t)=>Math.max(e,t)),0),n=a.reduce(((e,t)=>e+t),0)/a.length,i=h(e,n,t,a);r({bins:s,score:e,max:t,avg:n,out:i})}}),1e3/t.sampleRate)};return l(t),c(e),{setParams:l,setTrack:c,close(){c(null),clearInterval(d),n.close()}}}({micTrack:this._micTrack,onScoreUpdated:this._onMicAnalyserScoreUpdated.bind(this)})}stopOrResumeAudio(e,t){bm.info("stopOrResumeAudio() [enabled:%s]",t),this._micPaused=!t,this._pauseResumeMic()}_handleStopOrResumeVideo({enable:e,track:t}){e?this._sendWebcam(t):this._webcamProducer&&!this._webcamProducer.closed&&this._webcamProducer.track===t&&(this._stopProducer(this._webcamProducer),this._webcamProducer=null,this._webcamTrack=null)}stopOrResumeVideo(e,t){if(bm.info("stopOrResumeVideo() [enable:%s]",t),this._webcamPaused=!t,this._pauseResumeWebcam(),["chrome","safari"].includes(ym))if(t){if(0===e.getVideoTracks().length){const r=this._webrtcProvider.getMediaConstraints().video;navigator.mediaDevices.getUserMedia({video:r}).then((r=>{const n=r.getVideoTracks()[0];e.addTrack(n),this._emitToPWA(Sf,{streamId:e.id,tracks:[n],screenShare:!1}),this._handleStopOrResumeVideo({enable:t,track:n})}))}}else clearTimeout(this._stopCameraTimeout),this._stopCameraTimeout=setTimeout((()=>{e.getVideoTracks().forEach((r=>{!1===r.enabled&&(r.stop(),e.removeTrack(r),this._emitToPWA(Cf,{stream:e,track:r}),this._handleStopOrResumeVideo({enable:t,track:r}))}))}),5e3)}supportsScreenShareAudio(){return!0}acceptNewStream({streamId:e,clientId:t}){bm.info("acceptNewStream()",{streamId:e,clientId:t}),this.rtcStatsReconnect();const r=this._getOrCreateClientState(t);e!==t?(r.hasAcceptedScreenStream=!0,r.hasEmittedScreenStream=!1):(r.hasAcceptedWebcamStream=!0,r.hasEmittedWebcamStream=!1),this._syncIncomingStreamsWithPWA(t)}updateStreamResolution(e,t,{width:r,height:n}){var i,s;bm.info("updateStreamResolution()",{streamId:e,width:r,height:n});const o=this._streamIdToVideoConsumerId.get(e),a=this._consumers.get(o);if(!a)return;const c=function(e){let t=0;return e.forEach((e=>{var r,n;e._closed||e._paused||"webcam"!==(null===(r=e._appData)||void 0===r?void 0:r.source)&&"screenvideo"!==(null===(n=e._appData)||void 0===n?void 0:n.source)||t++})),t}(this._consumers),d=function(e){var t,r,n;return/T3/.test((null===(n=null===(r=null===(t=e._rtpParameters)||void 0===t?void 0:t.encodings)||void 0===r?void 0:r[0])||void 0===n?void 0:n.scalabilityMode)||"")?3:2}(a),{spatialLayer:l,temporalLayer:u}=function({width:e,height:t},{numberOfActiveVideos:r,numberOfTemporalLayers:n,uncappedSingleRemoteVideoOn:i}){const s=Math.max(e,t);let o=s>=480?s>=960?2:1:0,a=n-1;return s<100&&(a=Math.max(n-2,0)),r>8&&0===o&&(a=Math.max(n-2,0)),r<4&&s>300&&0===o&&(o=1),i&&1===r&&(o=2,a=n-1),{spatialLayer:o,temporalLayer:a}}({width:r,height:n},{numberOfActiveVideos:c,numberOfTemporalLayers:d,uncappedSingleRemoteVideoOn:null===(i=this._features)||void 0===i?void 0:i.uncappedSingleRemoteVideoOn});a.appData.spatialLayer===l&&a.appData.temporalLayer===u||(a.appData.spatialLayer=l,a.appData.temporalLayer=u,null===(s=this._vegaConnection)||void 0===s||s.message("setConsumersPreferredLayers",{consumerIds:[o],spatialLayer:l,temporalLayer:u}))}disconnectAll(){var e,t,r,n;this._reconnect=!1,this._reconnectTimeOut&&(clearTimeout(this._reconnectTimeOut),this._reconnectTimeOut=null),this._socketListenerDeregisterFunctions.forEach((e=>{e()})),this._localStreamDeregisterFunction&&(this._localStreamDeregisterFunction(),this._localStreamDeregisterFunction=null),this._socketListenerDeregisterFunctions=[],null===(e=this._vegaConnection)||void 0===e||e.removeAllListeners(),null===(t=this._vegaConnection)||void 0===t||t.close(),null===(r=this._sendTransport)||void 0===r||r.close(),null===(n=this._receiveTransport)||void 0===n||n.close(),this._micTrack=null,this._webcamTrack=null,this._screenVideoTrack=null,this._screenAudioTrack=null,this._streamIdToVideoConsumerId.clear(),this._mediasoupDevice=null}sendAudioMutedStats(e){Fh.sendEvent("audio_muted",{muted:e})}sendVideoMutedStats(e){Fh.sendEvent("video_muted",{muted:e})}sendStatsCustomEvent(e,t){Fh.sendEvent(e,t)}rtcStatsDisconnect(){Fh.server.close()}rtcStatsReconnect(){Fh.server.connected||Fh.server.connect()}_startMonitoringAudioTrack(e){e.addEventListener("ended",this._audioTrackOnEnded)}_stopMonitoringAudioTrack(e){e.removeEventListener("ended",this._audioTrackOnEnded)}_onMessage(e){return th(this,void 0,void 0,(function*(){const{method:t,data:r}=e;return Promise.resolve().then((()=>{switch(t){case"consumerReady":return this._onConsumerReady(r);case"consumerClosed":return this._onConsumerClosed(r);case"consumerPaused":return this._onConsumerPaused(r);case"consumerResumed":return this._onConsumerResumed(r);case"dataConsumerReady":return this._onDataConsumerReady(r);case"dataConsumerClosed":return this._onDataConsumerClosed(r);case"dominantSpeaker":return this._onDominantSpeaker(r);case"consumerScore":return this._onConsumerScore(r);case"producerScore":return this._onProducerScore(r);default:return void bm.info(`unknown message method "${t}"`)}})).catch((e=>{bm.error('"message" failed [error:%o]',e)}))}))}_onConsumerReady(e){return th(this,void 0,void 0,(function*(){bm.info("_onConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consume(e);if(t.pause(),t.appData.localPaused=!0,t.appData.spatialLayer=2,this._consumers.set(t.id,t),this._qualityMonitor.addConsumer(t.appData.sourceClientId,t.id),t.observer.once("close",(()=>{this._consumers.delete(t.id),this._qualityMonitor.removeConsumer(t.appData.sourceClientId,t.id),this._consumerClosedCleanup(t)})),this._features.increaseIncomingMediaBufferOn&&t.rtpReceiver)try{t.rtpReceiver.jitterBufferTarget=wh,t.rtpReceiver.playoutDelayHint=.4}catch(e){bm.error("Error during setting jitter buffer target:",e)}const{sourceClientId:r,screenShare:n,streamId:i}=t.appData,s=this._getOrCreateClientState(r);n?(s.hasEmittedScreenStream=!1,s.screenShareStreamId=i):(s.hasEmittedWebcamStream=!1,s.camStreamId=i);let o=n?s.screenStream:s.webcamStream;o&&o.inboundId===i||(o=new MediaStream,o.inboundId=i,n?s.screenStream=o:s.webcamStream=o),"video"===t.kind&&this._streamIdToVideoConsumerId.set(o.id,t.id),o.addTrack(t.track),this._syncIncomingStreamsWithPWA(r)}))}_onConsumerClosed({consumerId:e,reason:t}){var r;return th(this,void 0,void 0,(function*(){bm.info("_onConsumerClosed()",{consumerId:e,reason:t}),null===(r=this._consumers.get(e))||void 0===r||r.close()}))}_onConsumerPaused({consumerId:e}){bm.info("_onConsumerPaused()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!0,t.pause())}_onConsumerResumed({consumerId:e}){bm.info("_onConsumerResumed()",{consumerId:e});const t=this._consumers.get(e);t&&(t.appData.remotePaused=!1,t.appData.localPaused||t.resume())}_onConsumerScore({consumerId:e,kind:t,score:r}){bm.info("_onConsumerScore()",{consumerId:e,kind:t,score:r});const{appData:{sourceClientId:n}}=this._consumers.get(e)||{appData:{}};n&&this._qualityMonitor.addConsumerScore(n,e,t,r)}_onProducerScore({producerId:e,kind:t,score:r}){bm.info("_onProducerScore()",{producerId:e,kind:t,score:r}),[this._micProducer,this._webcamProducer,this._screenVideoProducer,this._screenAudioProducer].forEach((n=>{(null==n?void 0:n.id)===e&&this._qualityMonitor.addProducerScore(this._selfId,e,t,r)}))}_onDataConsumerReady(e){return th(this,void 0,void 0,(function*(){bm.info("_onDataConsumerReady()",{id:e.id,producerId:e.producerId});const t=yield this._receiveTransport.consumeData(e);this._dataConsumers.set(t.id,t),t.once("close",(()=>{this._dataConsumers.delete(t.id)}));const{clientId:r}=t.appData;t.on("message",(e=>{var r;if(!this._micAnalyserDebugger)return;if("string"!=typeof e)return;const{score:n}=JSON.parse(e);n&&(null===(r=this._micAnalyserDebugger)||void 0===r||r.onConsumerScore(t.appData.clientId,n))})),this._syncIncomingStreamsWithPWA(r)}))}_onDataConsumerClosed({dataConsumerId:e,reason:t}){return th(this,void 0,void 0,(function*(){bm.info("_onDataConsumerClosed()",{dataConsumerId:e,reason:t});const r=this._dataConsumers.get(e);null==r||r.close()}))}_onDominantSpeaker({consumerId:e}){const t=this._consumers.get(e);if(!t)return;const{sourceClientId:r}=t.appData;this._emitToPWA(rm,{clientId:r})}_consumerClosedCleanup(e){const{sourceClientId:t,screenShare:r}=e.appData,n=this._getOrCreateClientState(t),i=r?n.screenStream:n.webcamStream;i&&(i.removeTrack(e.track),0===i.getTracks().length&&(this._streamIdToVideoConsumerId.delete(i.id),r?(n.screenStream=null,n.hasEmittedScreenStream=!1,n.screenShareStreamId=null):(n.hasEmittedWebcamStream=!1,n.camStreamId=null)))}_syncIncomingStreamsWithPWA(e){var t,r;const n=this._getOrCreateClientState(e),{webcamStream:i,screenStream:s,hasEmittedWebcamStream:o,hasEmittedScreenStream:a,hasAcceptedWebcamStream:c,hasAcceptedScreenStream:d,screenShareStreamId:l,camStreamId:u}=n,p=[],h=[];this._consumers.forEach((t=>{if(t.appData.sourceClientId!==e)return;const r=t.appData.screenShare?d:c;!t.appData.localPaused!==r&&(r?(t.appData.remotePaused||t.resume(),t.appData.localPaused=!1,h.push(t.id)):(t.pause(),t.appData.localPaused=!0,p.push(t.id)))})),p.length>0&&(null===(t=this._vegaConnection)||void 0===t||t.message("pauseConsumers",{consumerIds:p})),h.length>0&&(null===(r=this._vegaConnection)||void 0===r||r.message("resumeConsumers",{consumerIds:h})),i&&!o&&c&&(this._emitToPWA(yf,{clientId:e,stream:i,streamId:u,streamType:"webcam"}),n.hasEmittedWebcamStream=!0),s&&!a&&d&&(this._emitToPWA(yf,{clientId:e,stream:s,streamId:l,streamType:"screenshare"}),n.hasEmittedScreenStream=!0)}_getOrCreateClientState(e){let t=this._clientStates.get(e);return t||(t={hasAcceptedWebcamStream:!1,hasAcceptedScreenStream:!1,hasEmittedWebcamStream:!1,hasEmittedScreenStream:!1,webcamStream:null,screenStream:null,screenShareStreamId:null,camStreamId:null},this._clientStates.set(e,t)),t}_emitToPWA(e,t){this._emitter.emit(e,t)}_emitToSignal(e,t,r){this._serverSocket.emit(e,t,r)}shouldAcceptStreamsFromBothSides(){return!0}setMicAnalyserDebugger(e){this._micAnalyserDebugger=e}setMicAnalyserParams(e){var t;null===(t=this._micAnalyser)||void 0===t||t.setParams(e)}hasClient(e){return this._clientStates.has(e)}}class Rm{constructor({emitter:e,serverSocket:t,webrtcProvider:r,features:n}){this.emitter=e,this.currentManager=null,t.on(df,(({room:i,selfId:s,error:o,eventClaim:a})=>{if(o)return;const c={selfId:s,room:i,emitter:e,serverSocket:t,webrtcProvider:r,features:n,eventClaim:a,deviceHandlerFactory:null==n?void 0:n.deviceHandlerFactory},d=!!i.sfuServer;if(this.currentManager){if(this.currentManager.isInitializedWith({selfId:s,roomName:i.name,isSfu:d}))return void(this.currentManager.setEventClaim&&a&&this.currentManager.setEventClaim(a));this.currentManager.disconnectAll(),e.emit(wf)}let l=null;l=d?new Cm(c):new dm(c),l.setupSocketListeners(),e.emit(_f,{rtcManager:l}),this.currentManager=l,t.setRtcManager(l)}))}stopRtcManager(){this.currentManager&&(this.currentManager.disconnectAll(),this.emitter.emit(wf))}}var Pm;!function(e){e.rtc_manager_created="rtc_manager_created",e.stream_added="stream_added"}(Pm||(Pm={}));class Tm extends Error{constructor(e){super(e.message),this.name="AssertionError",this.code="ERR_ASSERTION",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,Error.captureStackTrace&&Error.captureStackTrace(this,e.stackStartFn)}}function km(e){if(e.message instanceof Error)throw e.message;throw new Tm(e)}function Em(...e){!function(e,t,r,n){if(!r){let i=!1;if(0===t)i=!0,n="No value argument passed to `assert.ok()`";else if(n instanceof Error)throw n;const s=new Tm({actual:r,expected:!0,message:n,operator:"==",stackStartFn:e});throw s.generatedMessage=i,s}}(Em,e.length,...e)}const Om={fail:e=>{km({actual:"fail()",expected:"fail() should not be called",message:e,operator:"fail",stackStartFn:Om.fail})},ok:Em,notEqual:function e(t,r,n){if(arguments.length<2)throw new Error("'actual' and 'expected' arguments are required");t==r&&km({actual:t,expected:r,message:n,operator:"!=",stackStartFn:e})}};Om.ok=Em;const Dm=new eh;class Im extends fr{constructor(e){super(),this._socket=e,this._clients={},this._signalDisconnectTime=void 0,this.rtcManager=void 0,this.metrics={roomJoinedLate:0,pendingClientCanceled:0,evaluationFailed:0,roomJoined:0},e.on("disconnect",(()=>{this._signalDisconnectTime=Date.now()})),e.on(df,(e=>this._onRoomJoined(e))),e.on(of,(e=>this._onNewClient(e))),e.on(nf,(e=>this._onClientLeft(e))),e.on(gf,(e=>this._onPendingClientLeft(e))),e.on(rf,(e=>this._onAudioEnabled(e))),e.on(lf,(e=>this._onVideoEnabled(e))),e.on(af,(e=>this._onScreenshareChanged(e,!0))),e.on(cf,(e=>this._onScreenshareChanged(e,!1)))}_onRoomJoined(e){var t,r;return th(this,void 0,void 0,(function*(){if(!(null===(t=e.room)||void 0===t?void 0:t.clients))return void this.emit(df,e);if(!e.selfId)return void this.emit(df,e);const n=null===(r=e.room.clients.find((t=>e.selfId===t.id)))||void 0===r?void 0:r.deviceId;if(!n)return void this.emit(df,e);if(!this._signalDisconnectTime)return this._resetClientState(e),e.room.clients=e.room.clients.filter((e=>!(e.deviceId===n&&e.isPendingToLeave))),void this.emit(df,e);const i=.8*e.disconnectTimeout;if(Date.now()-this._signalDisconnectTime>i)return this._resetClientState(e),this.emit(df,e),void this.metrics.roomJoinedLate++;e.room.clients=e.room.clients.filter((e=>!(e.deviceId===n&&e.isPendingToLeave)));const s=yield oh();e.room.clients.forEach((t=>{var r;try{if(t.id===e.selfId)return;if(!this._clients[t.id])return void this._addClientToState(t);if(!(null===(r=this.rtcManager)||void 0===r?void 0:r.hasClient(t.id)))return;if(this._hasClientStateChanged({clientId:t.id,webcam:t.isVideoEnabled,mic:t.isAudioEnabled,screenShare:t.streams.length>1}))return;if(this._wasClientSendingMedia(t.id)&&!this._isClientMediaActive(s,t.id))return;t.mergeWithOldClientState=!0}catch(e){Dm.error("Failed to evaluate if we should merge client state %o",e),this.metrics.evaluationFailed++}})),e.room.clients.forEach((e=>{e.isPendingToLeave&&this._onPendingClientLeft({clientId:e.id})})),this.metrics.roomJoined++,this.emit(df,e)}))}_onClientLeft(e){var t;const{clientId:r}=e,n=this._clients[r];n&&(clearTimeout(n.timeout),delete this._clients[r]),null===(t=this.rtcManager)||void 0===t||t.disconnect(r,null,e.eventClaim),this.emit(nf,e)}_onPendingClientLeft(e){const{clientId:t}=e,r=this._clients[t];r?r.isPendingToLeave||(r.isPendingToLeave=!0,this._wasClientSendingMedia(t)&&(r.checkActiveMediaAttempts=0,this._abortIfNotActive(e))):Dm.warn(`client ${t} not found`)}_onNewClient(e){const{client:{id:t,deviceId:r}}=e,n=this._clients[t];if(n&&n.isPendingToLeave)return clearTimeout(n.timeoutHandler),n.isPendingToLeave=!1,void this.metrics.pendingClientCanceled++;this._getPendingClientsByDeviceId(r).forEach((e=>{clearTimeout(e.timeoutHandler),e.isPendingToLeave=void 0,this.emit(nf,{clientId:e.clientId})})),this._addClientToState(e.client),this.emit(of,e)}_abortIfNotActive(e){return th(this,void 0,void 0,(function*(){const{clientId:t}=e;let r=this._clients[t];if(!(null==r?void 0:r.isPendingToLeave))return;if(r.checkActiveMediaAttempts++,r.checkActiveMediaAttempts>3)return;(yield this._checkIsActive(t))?r.timeoutHandler=setTimeout((()=>this._abortIfNotActive(e)),500):(r=this._clients[t],(null==r?void 0:r.isPendingToLeave)&&(clearTimeout(r.timeoutHandler),delete this._clients[t],this.emit(nf,e)))}))}_checkIsActive(e){return th(this,void 0,void 0,(function*(){const t=yield oh();return this._isClientMediaActive(t,e)}))}_isClientMediaActive(e,t){const r=null==e?void 0:e[t];let n=!1;return r&&Object.entries(r.tracks).forEach((([e,t])=>{"probator"!==e&&Object.values(t.ssrcs).forEach((e=>{(e.bitrate||0)>0&&(n=!0)}))})),n}_onAudioEnabled(e){const{clientId:t,isAudioEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isAudioEnabled:r})}_onVideoEnabled(e){const{clientId:t,isVideoEnabled:r}=e;this._clients[t]=Object.assign(Object.assign({},this._clients[t]||{}),{isVideoEnabled:r})}_onScreenshareChanged(e,t){const{clientId:r}=e;this._clients[r]=Object.assign(Object.assign({},this._clients[r]||{}),{isScreenshareEnabled:t})}_hasClientStateChanged({clientId:e,webcam:t,mic:r,screenShare:n}){const i=this._clients[e];if(!i)throw new Error(`Client ${e} not found in ReconnectManager state`);return t!==i.isVideoEnabled||(r!==i.isAudioEnabled||n!==i.isScreenshareEnabled)}_addClientToState(e){this._clients[e.id]=Object.assign(Object.assign({},this._clients[e.id]||{}),{isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled,isScreenshareEnabled:e.streams.length>1,deviceId:e.deviceId,isPendingToLeave:e.isPendingToLeave,clientId:e.id})}_wasClientSendingMedia(e){const t=this._clients[e];if(!t)throw new Error(`Client ${e} not found in ReconnectManager state`);return t.isAudioEnabled||t.isVideoEnabled||t.isScreenshareEnabled}_getPendingClientsByDeviceId(e){return Object.values(this._clients).filter((t=>t.deviceId===e&&t.isPendingToLeave))}_resetClientState(e){this._clients={},e.room.clients.forEach((t=>{t.id!==e.selfId&&this._addClientToState(t)}))}}var xm;const Mm=null!==(xm=dl.default)&&void 0!==xm?xm:dl;class jm{constructor(e,t,r=!1){this._wasConnectedUsingWebsocket=!1,this._reconnectManager=null,this._socket=Zp(e,Object.assign({path:"/protocol/socket.io/v4",randomizationFactor:.5,reconnectionDelay:250,reconnectionDelayMax:5e3,timeout:5e3,transports:["websocket"],withCredentials:!0},t)),this._socket.io.on("reconnect",(()=>{this._socket.sendBuffer=[]})),this._socket.io.on("reconnect_attempt",(()=>{this._wasConnectedUsingWebsocket?(this._socket.io.opts.transports=["websocket"],"safari"!==Mm.browserDetails.browser&&delete this._wasConnectedUsingWebsocket):this._socket.io.opts.transports=["websocket","polling"]})),r&&(this._reconnectManager=new Im(this._socket)),this._socket.on("connect",(()=>{"websocket"===this.getTransport()&&(this._wasConnectedUsingWebsocket=!0,this.noopKeepaliveInterval||(this.noopKeepaliveInterval=setInterval((()=>{try{this._socket.connected&&this._socket.io.engine.sendPacket("noop")}catch(e){}}),2e3)))})),this._socket.on("disconnect",(()=>{this.noopKeepaliveInterval&&(clearInterval(this.noopKeepaliveInterval),this.noopKeepaliveInterval=null)}))}setRtcManager(e){this._reconnectManager&&(this._reconnectManager.rtcManager=e)}connect(){this.isConnected()||this.isConnecting()||this._socket.open()}disconnect(){this._socket.disconnect()}disconnectOnConnect(){this._socket.once("connect",(()=>{this._socket.disconnect()}))}emit(e,...t){this._socket.emit.apply(this._socket,arguments)}emitIfConnected(e,t){this.isConnected()&&this.emit(e,t)}getTransport(){return this._socket&&this._socket.io&&this._socket.io.engine&&this._socket.io.engine.transport&&this._socket.io.engine.transport.name}getManager(){return this._socket.io}isConnecting(){return this._socket&&this._socket.connecting}isConnected(){return this._socket&&this._socket.connected}on(e,t){const r=[df,nf,of];return this._reconnectManager&&r.includes(e)?this._interceptEvent(e,t):(this._socket.on(e,t),()=>{this._socket.off(e,t)})}once(e,t){this._socket.once(e,t)}off(e,t){this._socket.off(e,t)}_interceptEvent(e,t){return this._reconnectManager&&this._reconnectManager.on(e,t),()=>{this._reconnectManager&&this._reconnectManager.removeListener(e,t)}}getGlitchFreeMetrics(){var e;return null===(e=this._reconnectManager)||void 0===e?void 0:e.metrics}}const Lm=[{pattern:/^(?:([^.]+)[.])?(server:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?(localhost:?\d*)/,separator:"."},{pattern:/^(?:([^.]+)[.])?((\d+[.]){3}:?\d*)$/,separator:"."},{pattern:/^(?:([^.]+)-)?(ip-[^.]*[.](?:hereby[.]dev|rfc1918[.]disappear[.]at)(?::\d+|))$/,separator:"-"},{pattern:/^(?:([^.]+)[.])?((:?[^.]+[.]){1,}[^.]+)$/,separator:"."}];function Am({host:e="whereby.com",protocol:t="https:"}={}){let r="",n=e,i=".";for(const{separator:t,pattern:s}of Lm){const o=s.exec(e);if(o){r=o[1]||"",n=o[2],i=t;break}}const s=r?`${r}${i}${n}`:n;return{domain:n,domainWithSeparator:`${i}${n}`,organizationDomain:s,organization:`${t}//${s}`,service:`${t}//${n}`,subdomain:r}}Am(window&&window.location);var Nm={exports:{}};Nm.exports=function(e){return(e instanceof Buffer?e:Buffer.from(e.toString(),"binary")).toString("base64")};var Bm=c(Nm.exports);function Fm(e,t){return function(){return e.apply(t,arguments)}}const{toString:zm}=Object.prototype,{getPrototypeOf:Vm}=Object,Um=(e=>t=>{const r=zm.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),$m=e=>(e=e.toLowerCase(),t=>Um(t)===e),Gm=e=>t=>typeof t===e,{isArray:qm}=Array,Hm=Gm("undefined");const Wm=$m("ArrayBuffer");const Km=Gm("string"),Jm=Gm("function"),Qm=Gm("number"),Ym=e=>null!==e&&"object"==typeof e,Zm=e=>{if("object"!==Um(e))return!1;const t=Vm(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},Xm=$m("Date"),eg=$m("File"),tg=$m("Blob"),rg=$m("FileList"),ng=$m("URLSearchParams");function ig(e,t,{allOwnKeys:r=!1}={}){if(null==e)return;let n,i;if("object"!=typeof e&&(e=[e]),qm(e))for(n=0,i=e.length;n<i;n++)t.call(null,e[n],n,e);else{const i=r?Object.getOwnPropertyNames(e):Object.keys(e),s=i.length;let o;for(n=0;n<s;n++)o=i[n],t.call(null,e[o],o,e)}}function sg(e,t){t=t.toLowerCase();const r=Object.keys(e);let n,i=r.length;for(;i-- >0;)if(n=r[i],t===n.toLowerCase())return n;return null}const og="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,ag=e=>!Hm(e)&&e!==og;const cg=(dg="undefined"!=typeof Uint8Array&&Vm(Uint8Array),e=>dg&&e instanceof dg);var dg;const lg=$m("HTMLFormElement"),ug=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),pg=$m("RegExp"),hg=(e,t)=>{const r=Object.getOwnPropertyDescriptors(e),n={};ig(r,((r,i)=>{let s;!1!==(s=t(r,i,e))&&(n[i]=s||r)})),Object.defineProperties(e,n)},fg="abcdefghijklmnopqrstuvwxyz",mg="0123456789",gg={DIGIT:mg,ALPHA:fg,ALPHA_DIGIT:fg+fg.toUpperCase()+mg};const vg=$m("AsyncFunction");var bg={isArray:qm,isArrayBuffer:Wm,isBuffer:function(e){return null!==e&&!Hm(e)&&null!==e.constructor&&!Hm(e.constructor)&&Jm(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||Jm(e.append)&&("formdata"===(t=Um(e))||"object"===t&&Jm(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&Wm(e.buffer),t},isString:Km,isNumber:Qm,isBoolean:e=>!0===e||!1===e,isObject:Ym,isPlainObject:Zm,isUndefined:Hm,isDate:Xm,isFile:eg,isBlob:tg,isRegExp:pg,isFunction:Jm,isStream:e=>Ym(e)&&Jm(e.pipe),isURLSearchParams:ng,isTypedArray:cg,isFileList:rg,forEach:ig,merge:function e(){const{caseless:t}=ag(this)&&this||{},r={},n=(n,i)=>{const s=t&&sg(r,i)||i;Zm(r[s])&&Zm(n)?r[s]=e(r[s],n):Zm(n)?r[s]=e({},n):qm(n)?r[s]=n.slice():r[s]=n};for(let e=0,t=arguments.length;e<t;e++)arguments[e]&&ig(arguments[e],n);return r},extend:(e,t,r,{allOwnKeys:n}={})=>(ig(t,((t,n)=>{r&&Jm(t)?e[n]=Fm(t,r):e[n]=t}),{allOwnKeys:n}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,n)=>{e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,n)=>{let i,s,o;const a={};if(t=t||{},null==e)return t;do{for(i=Object.getOwnPropertyNames(e),s=i.length;s-- >0;)o=i[s],n&&!n(o,e,t)||a[o]||(t[o]=e[o],a[o]=!0);e=!1!==r&&Vm(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:Um,kindOfTest:$m,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;const n=e.indexOf(t,r);return-1!==n&&n===r},toArray:e=>{if(!e)return null;if(qm(e))return e;let t=e.length;if(!Qm(t))return null;const r=new Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let n;for(;(n=r.next())&&!n.done;){const r=n.value;t.call(e,r[0],r[1])}},matchAll:(e,t)=>{let r;const n=[];for(;null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:lg,hasOwnProperty:ug,hasOwnProp:ug,reduceDescriptors:hg,freezeMethods:e=>{hg(e,((t,r)=>{if(Jm(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;const n=e[r];Jm(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:(e,t)=>{const r={},n=e=>{e.forEach((e=>{r[e]=!0}))};return qm(e)?n(e):n(String(e).split(t)),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r})),noop:()=>{},toFiniteNumber:(e,t)=>(e=+e,Number.isFinite(e)?e:t),findKey:sg,global:og,isContextDefined:ag,ALPHABET:gg,generateString:(e=16,t=gg.ALPHA_DIGIT)=>{let r="";const{length:n}=t;for(;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&Jm(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),r=(e,n)=>{if(Ym(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[n]=e;const i=qm(e)?[]:{};return ig(e,((e,t)=>{const s=r(e,n+1);!Hm(s)&&(i[t]=s)})),t[n]=void 0,i}}return e};return r(e,0)},isAsyncFn:vg,isThenable:e=>e&&(Ym(e)||Jm(e))&&Jm(e.then)&&Jm(e.catch)};function yg(e,t,r,n,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),i&&(this.response=i)}bg.inherits(yg,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:bg.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const _g=yg.prototype,wg={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{wg[e]={value:e}})),Object.defineProperties(yg,wg),Object.defineProperty(_g,"isAxiosError",{value:!0}),yg.from=(e,t,r,n,i,s)=>{const o=Object.create(_g);return bg.toFlatObject(e,o,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),yg.call(o,e.message,t,r,n,i),o.cause=e,o.name=e.name,s&&Object.assign(o,s),o};function Sg(e){return bg.isPlainObject(e)||bg.isArray(e)}function Cg(e){return bg.endsWith(e,"[]")?e.slice(0,-2):e}function Rg(e,t,r){return e?e.concat(t).map((function(e,t){return e=Cg(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}const Pg=bg.toFlatObject(bg,{},null,(function(e){return/^is[A-Z]/.test(e)}));function Tg(e,t,r){if(!bg.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const n=(r=bg.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!bg.isUndefined(t[e])}))).metaTokens,i=r.visitor||d,s=r.dots,o=r.indexes,a=(r.Blob||"undefined"!=typeof Blob&&Blob)&&bg.isSpecCompliantForm(t);if(!bg.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(bg.isDate(e))return e.toISOString();if(!a&&bg.isBlob(e))throw new yg("Blob is not supported. Use a Buffer instead.");return bg.isArrayBuffer(e)||bg.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function d(e,r,i){let a=e;if(e&&!i&&"object"==typeof e)if(bg.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(bg.isArray(e)&&function(e){return bg.isArray(e)&&!e.some(Sg)}(e)||(bg.isFileList(e)||bg.endsWith(r,"[]"))&&(a=bg.toArray(e)))return r=Cg(r),a.forEach((function(e,n){!bg.isUndefined(e)&&null!==e&&t.append(!0===o?Rg([r],n,s):null===o?r:r+"[]",c(e))})),!1;return!!Sg(e)||(t.append(Rg(i,r,s),c(e)),!1)}const l=[],u=Object.assign(Pg,{defaultVisitor:d,convertValue:c,isVisitable:Sg});if(!bg.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!bg.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),bg.forEach(r,(function(r,s){!0===(!(bg.isUndefined(r)||null===r)&&i.call(t,r,bg.isString(s)?s.trim():s,n,u))&&e(r,n?n.concat(s):[s])})),l.pop()}}(e),t}function kg(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function Eg(e,t){this._pairs=[],e&&Tg(e,this,t)}const Og=Eg.prototype;function Dg(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ig(e,t,r){if(!t)return e;const n=r&&r.encode||Dg,i=r&&r.serialize;let s;if(s=i?i(t,r):bg.isURLSearchParams(t)?t.toString():new Eg(t,r).toString(n),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}Og.append=function(e,t){this._pairs.push([e,t])},Og.toString=function(e){const t=e?function(t){return e.call(this,t,kg)}:kg;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};class xg{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){bg.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}var Mg={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},jg={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:Eg,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const Lg="undefined"!=typeof window&&"undefined"!=typeof document,Ag=(Ng="undefined"!=typeof navigator&&navigator.product,Lg&&["ReactNative","NativeScript","NS"].indexOf(Ng)<0);var Ng;const Bg="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts;var Fg={...Object.freeze({__proto__:null,hasBrowserEnv:Lg,hasStandardBrowserEnv:Ag,hasStandardBrowserWebWorkerEnv:Bg}),...jg};function zg(e){function t(e,r,n,i){let s=e[i++];if("__proto__"===s)return!0;const o=Number.isFinite(+s),a=i>=e.length;if(s=!s&&bg.isArray(n)?n.length:s,a)return bg.hasOwnProp(n,s)?n[s]=[n[s],r]:n[s]=r,!o;n[s]&&bg.isObject(n[s])||(n[s]=[]);return t(e,r,n[s],i)&&bg.isArray(n[s])&&(n[s]=function(e){const t={},r=Object.keys(e);let n;const i=r.length;let s;for(n=0;n<i;n++)s=r[n],t[s]=e[s];return t}(n[s])),!o}if(bg.isFormData(e)&&bg.isFunction(e.entries)){const r={};return bg.forEachEntry(e,((e,n)=>{t(function(e){return bg.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),n,r,0)})),r}return null}const Vg={transitional:Mg,adapter:["xhr","http"],transformRequest:[function(e,t){const r=t.getContentType()||"",n=r.indexOf("application/json")>-1,i=bg.isObject(e);i&&bg.isHTMLForm(e)&&(e=new FormData(e));if(bg.isFormData(e))return n?JSON.stringify(zg(e)):e;if(bg.isArrayBuffer(e)||bg.isBuffer(e)||bg.isStream(e)||bg.isFile(e)||bg.isBlob(e))return e;if(bg.isArrayBufferView(e))return e.buffer;if(bg.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Tg(e,new Fg.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return Fg.isNode&&bg.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=bg.isFileList(e))||r.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return Tg(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return i||n?(t.setContentType("application/json",!1),function(e,t,r){if(bg.isString(e))try{return(t||JSON.parse)(e),bg.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||Vg.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(e&&bg.isString(e)&&(r&&!this.responseType||n)){const r=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(r){if("SyntaxError"===e.name)throw yg.from(e,yg.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Fg.classes.FormData,Blob:Fg.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};bg.forEach(["delete","get","head","post","put","patch"],(e=>{Vg.headers[e]={}}));var Ug=Vg;const $g=bg.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);const Gg=Symbol("internals");function qg(e){return e&&String(e).trim().toLowerCase()}function Hg(e){return!1===e||null==e?e:bg.isArray(e)?e.map(Hg):String(e)}function Wg(e,t,r,n,i){return bg.isFunction(n)?n.call(this,t,r):(i&&(t=r),bg.isString(t)?bg.isString(n)?-1!==t.indexOf(n):bg.isRegExp(n)?n.test(t):void 0:void 0)}class Kg{constructor(e){e&&this.set(e)}set(e,t,r){const n=this;function i(e,t,r){const i=qg(t);if(!i)throw new Error("header name must be a non-empty string");const s=bg.findKey(n,i);(!s||void 0===n[s]||!0===r||void 0===r&&!1!==n[s])&&(n[s||t]=Hg(e))}const s=(e,t)=>bg.forEach(e,((e,r)=>i(e,r,t)));return bg.isPlainObject(e)||e instanceof this.constructor?s(e,t):bg.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?s((e=>{const t={};let r,n,i;return e&&e.split("\n").forEach((function(e){i=e.indexOf(":"),r=e.substring(0,i).trim().toLowerCase(),n=e.substring(i+1).trim(),!r||t[r]&&$g[r]||("set-cookie"===r?t[r]?t[r].push(n):t[r]=[n]:t[r]=t[r]?t[r]+", "+n:n)})),t})(e),t):null!=e&&i(t,e,r),this}get(e,t){if(e=qg(e)){const r=bg.findKey(this,e);if(r){const e=this[r];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(e);)t[n[1]]=n[2];return t}(e);if(bg.isFunction(t))return t.call(this,e,r);if(bg.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=qg(e)){const r=bg.findKey(this,e);return!(!r||void 0===this[r]||t&&!Wg(0,this[r],r,t))}return!1}delete(e,t){const r=this;let n=!1;function i(e){if(e=qg(e)){const i=bg.findKey(r,e);!i||t&&!Wg(0,r[i],i,t)||(delete r[i],n=!0)}}return bg.isArray(e)?e.forEach(i):i(e),n}clear(e){const t=Object.keys(this);let r=t.length,n=!1;for(;r--;){const i=t[r];e&&!Wg(0,this[i],i,e,!0)||(delete this[i],n=!0)}return n}normalize(e){const t=this,r={};return bg.forEach(this,((n,i)=>{const s=bg.findKey(r,i);if(s)return t[s]=Hg(n),void delete t[i];const o=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,r)=>t.toUpperCase()+r))}(i):String(i).trim();o!==i&&delete t[i],t[o]=Hg(n),r[o]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return bg.forEach(this,((r,n)=>{null!=r&&!1!==r&&(t[n]=e&&bg.isArray(r)?r.join(", "):r)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const r=new this(e);return t.forEach((e=>r.set(e))),r}static accessor(e){const t=(this[Gg]=this[Gg]={accessors:{}}).accessors,r=this.prototype;function n(e){const n=qg(e);t[n]||(!function(e,t){const r=bg.toCamelCase(" "+t);["get","set","has"].forEach((n=>{Object.defineProperty(e,n+r,{value:function(e,r,i){return this[n].call(this,t,e,r,i)},configurable:!0})}))}(r,e),t[n]=!0)}return bg.isArray(e)?e.forEach(n):n(e),this}}Kg.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),bg.reduceDescriptors(Kg.prototype,(({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}})),bg.freezeMethods(Kg);var Jg=Kg;function Qg(e,t){const r=this||Ug,n=t||r,i=Jg.from(n.headers);let s=n.data;return bg.forEach(e,(function(e){s=e.call(r,s,i.normalize(),t?t.status:void 0)})),i.normalize(),s}function Yg(e){return!(!e||!e.__CANCEL__)}function Zg(e,t,r){yg.call(this,null==e?"canceled":e,yg.ERR_CANCELED,t,r),this.name="CanceledError"}bg.inherits(Zg,yg,{__CANCEL__:!0});var Xg=Fg.hasStandardBrowserEnv?{write(e,t,r,n,i,s){const o=[e+"="+encodeURIComponent(t)];bg.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),bg.isString(n)&&o.push("path="+n),bg.isString(i)&&o.push("domain="+i),!0===s&&o.push("secure"),document.cookie=o.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function ev(e,t){return e&&!function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var tv=Fg.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let r;function n(r){let n=r;return e&&(t.setAttribute("href",n),n=t.href),t.setAttribute("href",n),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return r=n(window.location.href),function(e){const t=bg.isString(e)?n(e):e;return t.protocol===r.protocol&&t.host===r.host}}():function(){return!0};function rv(e,t){let r=0;const n=function(e,t){e=e||10;const r=new Array(e),n=new Array(e);let i,s=0,o=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),d=n[o];i||(i=c),r[s]=a,n[s]=c;let l=o,u=0;for(;l!==s;)u+=r[l++],l%=e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),c-i<t)return;const p=d&&c-d;return p?Math.round(1e3*u/p):void 0}}(50,250);return i=>{const s=i.loaded,o=i.lengthComputable?i.total:void 0,a=s-r,c=n(a);r=s;const d={loaded:s,total:o,progress:o?s/o:void 0,bytes:a,rate:c||void 0,estimated:c&&o&&s<=o?(o-s)/c:void 0,event:i};d[t?"download":"upload"]=!0,e(d)}}var nv="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){let n=e.data;const i=Jg.from(e.headers).normalize();let s,o,{responseType:a,withXSRFToken:c}=e;function d(){e.cancelToken&&e.cancelToken.unsubscribe(s),e.signal&&e.signal.removeEventListener("abort",s)}if(bg.isFormData(n))if(Fg.hasStandardBrowserEnv||Fg.hasStandardBrowserWebWorkerEnv)i.setContentType(!1);else if(!1!==(o=i.getContentType())){const[e,...t]=o?o.split(";").map((e=>e.trim())).filter(Boolean):[];i.setContentType([e||"multipart/form-data",...t].join("; "))}let l=new XMLHttpRequest;if(e.auth){const t=e.auth.username||"",r=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";i.set("Authorization","Basic "+btoa(t+":"+r))}const u=ev(e.baseURL,e.url);function p(){if(!l)return;const n=Jg.from("getAllResponseHeaders"in l&&l.getAllResponseHeaders());!function(e,t,r){const n=r.config.validateStatus;r.status&&n&&!n(r.status)?t(new yg("Request failed with status code "+r.status,[yg.ERR_BAD_REQUEST,yg.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r)):e(r)}((function(e){t(e),d()}),(function(e){r(e),d()}),{data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:n,config:e,request:l}),l=null}if(l.open(e.method.toUpperCase(),Ig(u,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=p:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(p)},l.onabort=function(){l&&(r(new yg("Request aborted",yg.ECONNABORTED,e,l)),l=null)},l.onerror=function(){r(new yg("Network Error",yg.ERR_NETWORK,e,l)),l=null},l.ontimeout=function(){let t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const n=e.transitional||Mg;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(new yg(t,n.clarifyTimeoutError?yg.ETIMEDOUT:yg.ECONNABORTED,e,l)),l=null},Fg.hasStandardBrowserEnv&&(c&&bg.isFunction(c)&&(c=c(e)),c||!1!==c&&tv(u))){const t=e.xsrfHeaderName&&e.xsrfCookieName&&Xg.read(e.xsrfCookieName);t&&i.set(e.xsrfHeaderName,t)}void 0===n&&i.setContentType(null),"setRequestHeader"in l&&bg.forEach(i.toJSON(),(function(e,t){l.setRequestHeader(t,e)})),bg.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),a&&"json"!==a&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",rv(e.onDownloadProgress,!0)),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",rv(e.onUploadProgress)),(e.cancelToken||e.signal)&&(s=t=>{l&&(r(!t||t.type?new Zg(null,e,l):t),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(s),e.signal&&(e.signal.aborted?s():e.signal.addEventListener("abort",s)));const h=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(u);h&&-1===Fg.protocols.indexOf(h)?r(new yg("Unsupported protocol "+h+":",yg.ERR_BAD_REQUEST,e)):l.send(n||null)}))};const iv={http:null,xhr:nv};bg.forEach(iv,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const sv=e=>`- ${e}`,ov=e=>bg.isFunction(e)||null===e||!1===e;var av=e=>{e=bg.isArray(e)?e:[e];const{length:t}=e;let r,n;const i={};for(let s=0;s<t;s++){let t;if(r=e[s],n=r,!ov(r)&&(n=iv[(t=String(r)).toLowerCase()],void 0===n))throw new yg(`Unknown adapter '${t}'`);if(n)break;i[t||"#"+s]=n}if(!n){const e=Object.entries(i).map((([e,t])=>`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new yg("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(sv).join("\n"):" "+sv(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return n};function cv(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Zg(null,e)}function dv(e){cv(e),e.headers=Jg.from(e.headers),e.data=Qg.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return av(e.adapter||Ug.adapter)(e).then((function(t){return cv(e),t.data=Qg.call(e,e.transformResponse,t),t.headers=Jg.from(t.headers),t}),(function(t){return Yg(t)||(cv(e),t&&t.response&&(t.response.data=Qg.call(e,e.transformResponse,t.response),t.response.headers=Jg.from(t.response.headers))),Promise.reject(t)}))}const lv=e=>e instanceof Jg?e.toJSON():e;function uv(e,t){t=t||{};const r={};function n(e,t,r){return bg.isPlainObject(e)&&bg.isPlainObject(t)?bg.merge.call({caseless:r},e,t):bg.isPlainObject(t)?bg.merge({},t):bg.isArray(t)?t.slice():t}function i(e,t,r){return bg.isUndefined(t)?bg.isUndefined(e)?void 0:n(void 0,e,r):n(e,t,r)}function s(e,t){if(!bg.isUndefined(t))return n(void 0,t)}function o(e,t){return bg.isUndefined(t)?bg.isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function a(r,i,s){return s in t?n(r,i):s in e?n(void 0,r):void 0}const c={url:s,method:s,data:s,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a,headers:(e,t)=>i(lv(e),lv(t),!0)};return bg.forEach(Object.keys(Object.assign({},e,t)),(function(n){const s=c[n]||i,o=s(e[n],t[n],n);bg.isUndefined(o)&&s!==a||(r[n]=o)})),r}const pv="1.6.7",hv={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{hv[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));const fv={};hv.transitional=function(e,t,r){function n(e,t){return"[Axios v1.6.7] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,i,s)=>{if(!1===e)throw new yg(n(i," has been removed"+(t?" in "+t:"")),yg.ERR_DEPRECATED);return t&&!fv[i]&&(fv[i]=!0,console.warn(n(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,i,s)}};var mv={assertOptions:function(e,t,r){if("object"!=typeof e)throw new yg("options must be an object",yg.ERR_BAD_OPTION_VALUE);const n=Object.keys(e);let i=n.length;for(;i-- >0;){const s=n[i],o=t[s];if(o){const t=e[s],r=void 0===t||o(t,s,e);if(!0!==r)throw new yg("option "+s+" must be "+r,yg.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new yg("Unknown option "+s,yg.ERR_BAD_OPTION)}},validators:hv};const gv=mv.validators;class vv{constructor(e){this.defaults=e,this.interceptors={request:new xg,response:new xg}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const r=t.stack?t.stack.replace(/^.+\n/,""):"";e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=uv(this.defaults,t);const{transitional:r,paramsSerializer:n,headers:i}=t;void 0!==r&&mv.assertOptions(r,{silentJSONParsing:gv.transitional(gv.boolean),forcedJSONParsing:gv.transitional(gv.boolean),clarifyTimeoutError:gv.transitional(gv.boolean)},!1),null!=n&&(bg.isFunction(n)?t.paramsSerializer={serialize:n}:mv.assertOptions(n,{encode:gv.function,serialize:gv.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=i&&bg.merge(i.common,i[t.method]);i&&bg.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete i[e]})),t.headers=Jg.concat(s,i);const o=[];let a=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,o.unshift(e.fulfilled,e.rejected))}));const c=[];let d;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,u=0;if(!a){const e=[dv.bind(this),void 0];for(e.unshift.apply(e,o),e.push.apply(e,c),l=e.length,d=Promise.resolve(t);u<l;)d=d.then(e[u++],e[u++]);return d}l=o.length;let p=t;for(u=0;u<l;){const e=o[u++],t=o[u++];try{p=e(p)}catch(e){t.call(this,e);break}}try{d=dv.call(this,p)}catch(e){return Promise.reject(e)}for(u=0,l=c.length;u<l;)d=d.then(c[u++],c[u++]);return d}getUri(e){return Ig(ev((e=uv(this.defaults,e)).baseURL,e.url),e.params,e.paramsSerializer)}}bg.forEach(["delete","get","head","options"],(function(e){vv.prototype[e]=function(t,r){return this.request(uv(r||{},{method:e,url:t,data:(r||{}).data}))}})),bg.forEach(["post","put","patch"],(function(e){function t(t){return function(r,n,i){return this.request(uv(i||{},{method:e,headers:t?{"Content-Type":"multipart/form-data"}:{},url:r,data:n}))}}vv.prototype[e]=t(),vv.prototype[e+"Form"]=t(!0)}));var bv=vv;class yv{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise((function(e){t=e}));const r=this;this.promise.then((e=>{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null})),this.promise.then=e=>{let t;const n=new Promise((e=>{r.subscribe(e),t=e})).then(e);return n.cancel=function(){r.unsubscribe(t)},n},e((function(e,n,i){r.reason||(r.reason=new Zg(e,n,i),t(r.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new yv((function(t){e=t})),cancel:e}}}var _v=yv;const wv={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(wv).forEach((([e,t])=>{wv[t]=e}));var Sv=wv;const Cv=function e(t){const r=new bv(t),n=Fm(bv.prototype.request,r);return bg.extend(n,bv.prototype,r,{allOwnKeys:!0}),bg.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(uv(t,r))},n}(Ug);function Rv(e,t){return Ot(e,t)}function Pv(e,t){return r=>(n,i,s)=>e(i())?t(r)(n,i,s):(console.warn("Not authorized to perform this action"),!1)}Cv.Axios=bv,Cv.CanceledError=Zg,Cv.CancelToken=_v,Cv.isCancel=Yg,Cv.VERSION=pv,Cv.toFormData=Tg,Cv.AxiosError=yg,Cv.Cancel=Cv.CanceledError,Cv.all=function(e){return Promise.all(e)},Cv.spread=function(e){return function(t){return e.apply(null,t)}},Cv.isAxiosError=function(e){return bg.isObject(e)&&!0===e.isAxiosError},Cv.mergeConfig=uv,Cv.AxiosHeaders=Jg,Cv.formToJSON=e=>zg(bg.isHTMLForm(e)?new FormData(e):e),Cv.getAdapter=av,Cv.HttpStatusCode=Sv,Cv.default=Cv;const Tv=((e={})=>{const t=new Map,{extra:r,onError:n=pr}=e;qt(n,"onError");const i=e=>{let r=st(Array.from(t.values()),(t=>t.effect===e.effect));return r||(r=or(e)),(e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&ar(e)}))(r)};Object.assign(i,{withTypes:()=>i});const s=e=>{const{type:r,effect:n,predicate:i}=sr(e),s=st(Array.from(t.values()),(e=>("string"==typeof r?e.type===r:e.predicate===i)&&e.effect===n));return s&&(s.unsubscribe(),e.cancelActive&&ar(s)),!!s};Object.assign(s,{withTypes:()=>s});const o=async(e,s,o,a)=>{const c=new AbortController,d=ir(i,c.signal),l=[];try{e.pending.add(c),await Promise.resolve(e.effect(s,er({},o,{getOriginalState:a,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Xt(c.signal),pause:Zt(c.signal),extra:r,signal:c.signal,fork:nr(c.signal,l),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach(((e,t,r)=>{e!==c&&(Jt(e,Ut),r.delete(e))}))},cancel:()=>{Jt(c,Ut),e.pending.delete(c)},throwIfCancelled:()=>{Qt(c.signal)}})))}catch(e){e instanceof Gt||cr(n,e,{raisedBy:"effect"})}finally{await Promise.all(l),Jt(c,$t),e.pending.delete(c)}},a=(e=>()=>{e.forEach(ar),e.clear()})(t);return{middleware:e=>r=>c=>{if(!q(c))return r(c);if(dr.match(c))return i(c.payload);if(lr.match(c))return void a();if(ur.match(c))return s(c.payload);let d=e.getState();const l=()=>{if(d===tr)throw new Error(`${rr}: getOriginalState can only be called synchronously`);return d};let u;try{if(u=r(c),t.size>0){const r=e.getState(),i=Array.from(t.values());for(const t of i){let i=!1;try{i=t.predicate(c,r,d)}catch(e){i=!1,cr(n,e,{raisedBy:"predicate"})}i&&o(t,c,e,l)}}}finally{d=tr}return u},startListening:i,stopListening:s,clearListeners:a}})(),kv=Tv.startListening,Ev=(e,t)=>kv({predicate:(t,r,n)=>{const i=e.map((e=>e(n))),s=e.map((e=>e(r)));return i.some(((e,t)=>e!==s[t]))},effect:(r,{dispatch:n,getState:i,extra:s})=>{const o=e.map((e=>e(i())));t({dispatch:n,getState:i,extra:s},...o)}}),Ov=Lt({name:"app",initialState:{isNodeSdk:!1,isActive:!1,roomName:null,roomUrl:null,displayName:null,userAgent:"core:0.19.1",externalId:null},reducers:{doAppStart:(e,t)=>{const r=new URL(t.payload.roomUrl);return Object.assign(Object.assign(Object.assign({},e),t.payload),{roomName:r.pathname,initialConfig:Object.assign({},t.payload),isActive:!0})},doAppStop:e=>Object.assign(Object.assign({},e),{isActive:!1})}}),{doAppStop:Dv,doAppStart:Iv}=Ov.actions,xv=e=>e.app.isActive,Mv=e=>e.app.roomName,jv=e=>e.app.displayName,Lv=e=>e.app.userAgent,Av=e=>e.app.externalId;function Nv(e){return rt(`signalConnection/event/${e}`)}const Bv={audioEnabled:Nv("audioEnabled"),audioEnableRequested:Nv("audioEnableRequested"),chatMessage:Nv("chatMessage"),clientLeft:Nv("clientLeft"),clientKicked:Nv("clientKicked"),clientMetadataReceived:Nv("clientMetadataReceived"),cloudRecordingStarted:Nv("cloudRecordingStarted"),cloudRecordingStopped:Nv("cloudRecordingStopped"),disconnect:Nv("disconnect"),knockerLeft:Nv("knockerLeft"),knockHandled:Nv("knockHandled"),newClient:Nv("newClient"),roomJoined:Nv("roomJoined"),roomKnocked:Nv("roomKnocked"),roomLeft:Nv("roomLeft"),roomLocked:Nv("roomLocked"),roomSessionEnded:Nv("roomSessionEnded"),screenshareStarted:Nv("screenshareStarted"),screenshareStopped:Nv("screenshareStopped"),spotlightAdded:Nv("spotlightAdded"),spotlightRemoved:Nv("spotlightRemoved"),streamingStopped:Nv("streamingStopped"),videoEnabled:Nv("videoEnabled")},Fv={canLockRoom:["host"],canRequestAudioEnable:["host"],canKickClient:["host"],canEndMeeting:["host"],canAskToSpeak:["host"],canSpotlight:["host"]},zv=Lt({name:"authorization",initialState:{roomKey:null,roleName:"none"},reducers:{setRoomKey:(e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload})},extraReducers:e=>{e.addCase(Iv,((e,t)=>Object.assign(Object.assign({},e),{roomKey:t.payload.roomKey}))),e.addCase(Bv.roomJoined,((e,t)=>{var r,n;const i=null===(n=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===n?void 0:n.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{roleName:(null==i?void 0:i.role.roleName)||"none"})}))}}),{setRoomKey:Vv}=zv.actions,Uv=e=>e.authorization.roomKey,$v=e=>e.authorization.roleName,Gv=Je($v,(e=>Fv.canLockRoom.includes(e))),qv=Je($v,(e=>Fv.canRequestAudioEnable.includes(e))),Hv=Je($v,(e=>Fv.canKickClient.includes(e))),Wv=Je($v,(e=>Fv.canEndMeeting.includes(e))),Kv=Je($v,(e=>Fv.canAskToSpeak.includes(e))),Jv=Je($v,(e=>Fv.canSpotlight.includes(e)));function Qv(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r}function Yv(e,t,r,n){return new(r||(r=Promise))((function(i,s){function o(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){e.done?i(e.value):function(e){return e instanceof r?e:new r((function(t){t(e)}))}(e.value).then(o,a)}c((n=n.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const Zv=Lt({name:"deviceCredentials",initialState:{isFetching:!1,data:null},reducers:{},extraReducers:e=>{e.addCase(Xv.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(Xv.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}))),e.addCase(Xv.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!0})))}}),Xv=Rv("deviceCredentials/doGetDeviceCredentials",((e,{extra:t})=>Yv(void 0,void 0,void 0,(function*(){try{return yield t.services.credentialsService.getCredentials()}catch(e){console.error(e)}})))),eb=e=>e.deviceCredentials;Ev([Je(xv,eb,((e,t)=>!(!e||t.isFetching||t.data)))],(({dispatch:e},t)=>{t&&e(Xv())}));const tb=Lt({name:"signalConnection",initialState:{deviceIdentified:!1,isIdentifyingDevice:!1,status:"ready",socket:null},reducers:{socketConnecting:e=>Object.assign(Object.assign({},e),{status:"connecting"}),socketConnected:(e,t)=>Object.assign(Object.assign({},e),{socket:t.payload,status:"connected"}),socketDisconnected:e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"}),socketReconnecting:e=>Object.assign(Object.assign({},e),{status:"reconnecting"}),deviceIdentifying:e=>Object.assign(Object.assign({},e),{isIdentifyingDevice:!0}),deviceIdentified:e=>Object.assign(Object.assign({},e),{deviceIdentified:!0,isIdentifyingDevice:!1})},extraReducers:e=>{e.addCase(Bv.disconnect,(e=>Object.assign(Object.assign({},e),{deviceIdentified:!1,status:"disconnected"})))}}),{deviceIdentifying:rb,deviceIdentified:nb,socketConnected:ib,socketConnecting:sb,socketDisconnected:ob,socketReconnecting:ab}=tb.actions,cb=()=>(e,t)=>{if(fb(t()))return;e(sb());const r=function(){const e=new URL("wss://signal.appearin.net").origin;return new jm(e,{autoConnect:!1})}();r.on("connect",(()=>e(ib(r)))),r.on("device_identified",(()=>e(nb()))),r.getManager().on("reconnect",(()=>e(ab()))),function(e,t){e.on("room_joined",(e=>t(Bv.roomJoined(e)))),e.on("new_client",(e=>t(Bv.newClient(e)))),e.on("client_left",(e=>t(Bv.clientLeft(e)))),e.on("client_kicked",(e=>t(Bv.clientKicked(e)))),e.on("audio_enabled",(e=>t(Bv.audioEnabled(e)))),e.on("video_enabled",(e=>t(Bv.videoEnabled(e)))),e.on("audio_enable_requested",(e=>t(Bv.audioEnableRequested(e)))),e.on("client_metadata_received",(e=>t(Bv.clientMetadataReceived(e)))),e.on("chat_message",(e=>t(Bv.chatMessage(e)))),e.on("disconnect",(()=>t(Bv.disconnect()))),e.on("room_knocked",(e=>t(Bv.roomKnocked(e)))),e.on("room_left",(()=>t(Bv.roomLeft()))),e.on("room_locked",(e=>t(Bv.roomLocked(e)))),e.on("room_session_ended",(e=>t(Bv.roomSessionEnded(e)))),e.on("knocker_left",(e=>t(Bv.knockerLeft(e)))),e.on("knock_handled",(e=>t(Bv.knockHandled(e)))),e.on("screenshare_started",(e=>t(Bv.screenshareStarted(e)))),e.on("screenshare_stopped",(e=>t(Bv.screenshareStopped(e)))),e.on("cloud_recording_started",(e=>t(Bv.cloudRecordingStarted(e)))),e.on("cloud_recording_stopped",(()=>t(Bv.cloudRecordingStopped()))),e.on("streaming_stopped",(()=>t(Bv.streamingStopped()))),e.on("spotlight_added",(e=>t(Bv.spotlightAdded(e)))),e.on("spotlight_removed",(e=>t(Bv.spotlightRemoved(e))))}(r,e),r.connect()},db=({deviceCredentials:e})=>(t,r)=>{const n=r(),i=fb(n),s=pb(n);i&&(s||(i.emit("identify_device",{deviceCredentials:e}),t(rb())))},lb=()=>(e,t)=>{const r=t();if("connected"===hb(r)){const t=ub(r).socket;null==t||t.disconnect(),e(ob())}},ub=e=>e.signalConnection,pb=e=>e.signalConnection.deviceIdentified,hb=e=>e.signalConnection.status,fb=e=>e.signalConnection.socket;Ev([Je(xv,hb,((e,t)=>!(!e||!["ready","reconnecting"].includes(t))))],(({dispatch:e},t)=>{t&&e(cb())}));const mb=Je(eb,hb,pb,(e=>e.signalConnection.isIdentifyingDevice),((e,t,r,n)=>!(!e.data||"connected"!==t||r||n)));Ev([mb,eb],(({dispatch:e},t,r)=>{t&&r.data&&e(db({deviceCredentials:r.data}))})),kv({actionCreator:Bv.roomLeft,effect:(e,{dispatch:t})=>{t(lb())}}),kv({actionCreator:Bv.clientKicked,effect:(e,{dispatch:t})=>{t(lb())}});const gb=Lt({name:"chat",initialState:{chatMessages:[]},reducers:{},extraReducers(e){e.addCase(Bv.chatMessage,((e,t)=>{const r={senderId:t.payload.senderId,timestamp:t.payload.timestamp,text:t.payload.text};return Object.assign(Object.assign({},e),{chatMessages:[...e.chatMessages,r]})}))}}),vb=e=>(t,r)=>{const n=r(),i=ub(n).socket;null==i||i.emit("chat_message",{text:e.text})},bb=Lt({name:"cloudRecording",initialState:{isRecording:!1,error:null,startedAt:void 0},reducers:{recordingRequestStarted:e=>Object.assign(Object.assign({},e),{status:"requested"})},extraReducers:e=>{e.addCase(Bv.cloudRecordingStopped,(e=>Object.assign(Object.assign({},e),{isRecording:!1,status:void 0}))),e.addCase(Bv.cloudRecordingStarted,((e,t)=>{const{payload:r}=t;return r.error?Object.assign(Object.assign({},e),{isRecording:!1,status:"error",error:r.error}):e})),e.addCase(Bv.newClient,((e,{payload:t})=>{var r;const{client:n}=t;return"recorder"===(null===(r=n.role)||void 0===r?void 0:r.roleName)?Object.assign(Object.assign({},e),{isRecording:!0,status:"recording",startedAt:n.startedCloudRecordingAt?new Date(n.startedCloudRecordingAt).getTime():(new Date).getTime()}):e}))}}),{recordingRequestStarted:yb}=bb.actions,_b=()=>(e,t)=>{const r=t(),n=ub(r).socket,i=Sb(r);i&&["recording","requested"].includes(i)||(null==n||n.emit("start_recording",{recording:"cloud"}),e(yb()))},wb=()=>(e,t)=>{const r=t(),n=ub(r).socket;null==n||n.emit("stop_recording")},Sb=e=>e.cloudRecording.status;function Cb(e,{delay:t=500,edges:r}={}){let n,i=0;return(...s)=>{i+=1,r&&1===i&&e(...s),clearTimeout(n),n=setTimeout((()=>{(!r||i>1)&&e(...s),n=void 0,i=0}),t)}}const Rb=Lt({name:"localMedia",initialState:{busyDeviceIds:[],cameraEnabled:!1,currentSpeakerDeviceId:"default",devices:[],isSettingCameraDevice:!1,isSettingMicrophoneDevice:!1,isSettingSpeakerDevice:!1,isTogglingCamera:!1,lowDataMode:!1,microphoneEnabled:!1,status:"inactive",stream:void 0,isSwitchingStream:!1},reducers:{deviceBusy:(e,t)=>e.busyDeviceIds.includes(t.payload.deviceId)?e:Object.assign(Object.assign({},e),{busyDeviceIds:[...e.busyDeviceIds,t.payload.deviceId]}),toggleCameraEnabled(e,t){var r;return Object.assign(Object.assign({},e),{cameraEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.cameraEnabled})},setCurrentCameraDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentCameraDeviceId:t.payload.deviceId}),toggleMicrophoneEnabled(e,t){var r;return Object.assign(Object.assign({},e),{microphoneEnabled:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.microphoneEnabled})},setCurrentMicrophoneDeviceId:(e,t)=>Object.assign(Object.assign({},e),{currentMicrophoneDeviceId:t.payload.deviceId}),setCurrentSpeakerDeviceId(e,t){var r;return Object.assign(Object.assign({},e),{currentSpeakerDeviceId:null!==(r=t.payload.deviceId)&&void 0!==r?r:"default"})},toggleLowDataModeEnabled(e,t){var r;return Object.assign(Object.assign({},e),{lowDataMode:null!==(r=t.payload.enabled)&&void 0!==r?r:!e.lowDataMode})},setDevices:(e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}),setLocalMediaStream:(e,t)=>Object.assign(Object.assign({},e),{stream:t.payload.stream}),setLocalMediaOptions:(e,t)=>Object.assign(Object.assign({},e),{options:t.payload.options}),localMediaStopped:e=>Object.assign(Object.assign({},e),{status:"stopped",stream:void 0}),localStreamMetadataUpdated(e,t){const{audio:r,video:n}=t.payload;return Object.assign(Object.assign({},e),{currentCameraDeviceId:n.deviceId,currentMicrophoneDeviceId:r.deviceId,busyDeviceIds:e.busyDeviceIds.filter((e=>e!==r.deviceId&&e!==n.deviceId))})}},extraReducers:e=>{e.addCase(Iv,((e,t)=>Object.assign(Object.assign({},e),{options:t.payload.localMediaOptions}))),e.addCase(Fb.pending,((e,t)=>{const{audio:r,video:n}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:n,isSettingMicrophoneDevice:r})})),e.addCase(Fb.fulfilled,((e,t)=>{const{audio:r,video:n}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!n&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice})})),e.addCase(Fb.rejected,((e,t)=>{const{audio:r,video:n}=t.meta.arg;return Object.assign(Object.assign({},e),{isSettingCameraDevice:!n&&e.isSettingCameraDevice,isSettingMicrophoneDevice:!r&&e.isSettingMicrophoneDevice,cameraDeviceError:n?t.error:e.cameraDeviceError,microphoneDeviceError:r?t.error:e.microphoneDeviceError})})),e.addCase(Ab.pending,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!0}))),e.addCase(Ab.fulfilled,(e=>Object.assign(Object.assign({},e),{isTogglingCamera:!1}))),e.addCase(zb.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{devices:t.payload.devices}))),e.addCase(Ub.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(Ub.fulfilled,((e,{payload:{stream:t,onDeviceChange:r}})=>{let n,i,s=!1,o=!1;const a=t.getAudioTracks()[0],c=t.getVideoTracks()[0];return a&&(i=a.getSettings().deviceId,o=a.enabled),c&&(s=c.enabled,n=c.getSettings().deviceId),Object.assign(Object.assign({},e),{stream:t,status:"started",currentCameraDeviceId:n,currentMicrophoneDeviceId:i,cameraEnabled:s,microphoneEnabled:o,onDeviceChange:r})})),e.addCase(Ub.rejected,((e,t)=>Object.assign(Object.assign({},e),{status:"error",startError:t.error}))),e.addCase(Vb.pending,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!0}))),e.addCase(Vb.fulfilled,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1}))),e.addCase(Vb.rejected,(e=>Object.assign(Object.assign({},e),{isSwitchingStream:!1})))}}),{deviceBusy:Pb,setCurrentCameraDeviceId:Tb,setCurrentMicrophoneDeviceId:kb,setCurrentSpeakerDeviceId:Eb,toggleCameraEnabled:Ob,toggleMicrophoneEnabled:Db,toggleLowDataModeEnabled:Ib,setLocalMediaOptions:xb,setLocalMediaStream:Mb,localMediaStopped:jb,localStreamMetadataUpdated:Lb}=Rb.actions,Ab=Rv("localMedia/doToggleCamera",((e,{getState:t,rejectWithValue:r})=>Yv(void 0,void 0,void 0,(function*(){const e=t(),n=ty(e);if(!n)return;let i=n.getVideoTracks()[0];const s=Kb(e);try{if(s)if(i)i.enabled=!0;else{const t=ny(e),r=qb(e);yield xh(Object.assign(Object.assign({},t),{audioId:!1,videoId:r,type:"exact"}),{replaceStream:n}),i=n.getVideoTracks()[0]}else{if(!i)return;i.enabled=!1,i.stop(),n.removeTrack(i)}n.dispatchEvent(new CustomEvent("stopresumevideo",{detail:{track:i,enable:s}}))}catch(e){return r(e)}})))),Nb=Rv("localMedia/doToggleMicrophone",((e,{getState:t})=>{var r;const n=t(),i=ty(n);if(!i)return;const s=Jb(n),o=null===(r=i.getAudioTracks())||void 0===r?void 0:r[0];o&&(o.enabled=s)})),Bb=()=>(e,t)=>{const r=t();if(!ty(r))return;const n=qb(r),i=Hb(r);e(Vb({audioId:i,videoId:n}))},Fb=Rv("localMedia/reactSetDevice",(({audio:e,video:t},{getState:r,rejectWithValue:n})=>Yv(void 0,void 0,void 0,(function*(){try{const n=r(),i=ty(n);if(!i)throw new Error("No stream");const s=!!e&&Hb(n),o=!!t&&qb(n),a=ny(n),{replacedTracks:c}=yield xh(Object.assign(Object.assign({},a),{audioId:s,videoId:o,type:"exact"}),{replaceStream:i}),d=Jb(n);i.getAudioTracks().forEach((e=>e.enabled=d));const l=Kb(n);return i.getVideoTracks().forEach((e=>e.enabled=l)),{replacedTracks:c}}catch(e){return n(e)}})))),zb=Rv("localMedia/doUpdateDeviceList",((e,{getState:t,dispatch:r,rejectWithValue:n})=>Yv(void 0,void 0,void 0,(function*(){var e,i,s,o;const a=t();let c=[],d=[];const l=ty(a);try{c=yield navigator.mediaDevices.enumerateDevices(),d=Yb(a);if(!(l&&!ry(a)&&c&&d&&d.find((e=>e.deviceId))))return{devices:c};const{changedDevices:t,addedDevices:n}=Mh({oldDevices:d,newDevices:c});let u=null===(e=t.audioinput)||void 0===e?void 0:e.deviceId,p=null===(i=t.videoinput)||void 0===i?void 0:i.deviceId;return void 0===u&&(u=null===(s=n.audioinput)||void 0===s?void 0:s.deviceId),void 0===p&&(p=null===(o=n.videoinput)||void 0===o?void 0:o.deviceId),void 0===u&&void 0===p||r(Vb({audioId:u,videoId:p})),{devices:c}}catch(e){return n(e)}})))),Vb=Rv("localMedia/doSwitchLocalStream",(({audioId:e,videoId:t},{dispatch:r,getState:n,rejectWithValue:i})=>Yv(void 0,void 0,void 0,(function*(){const s=n(),o=ty(s),a=ny(s),c=!(!t||e)||!(t||!e);if(o)try{const{replacedTracks:n}=yield xh(Object.assign(Object.assign({},a),{audioId:void 0!==e&&e,videoId:void 0!==t&&t,type:"exact"}),{replaceStream:o}),i=e||t;return c&&i&&r(Pb({deviceId:i})),{replacedTracks:n}}catch(n){console.error(n);const s=e||t;return c&&s&&r(Pb({deviceId:s})),i(n)}})))),Ub=Rv("localMedia/doStartLocalMedia",((e,{getState:t,dispatch:r,rejectWithValue:n})=>Yv(void 0,void 0,void 0,(function*(){const i=Cb((()=>{r(zb())}),{delay:500});if(navigator.mediaDevices&&navigator.mediaDevices.addEventListener("devicechange",i),"getTracks"in e)return Promise.resolve({stream:e,onDeviceChange:i});if(!e.audio&&!e.video)return{stream:new MediaStream,onDeviceChange:i};r(xb({options:e}));try{yield r(zb());const n=t(),s=ny(n),{stream:o}=yield xh(Object.assign(Object.assign({},s),{audioId:e.audio,videoId:e.video}));return{stream:o,onDeviceChange:i}}catch(e){return n(e)}})))),$b=()=>(e,t)=>{const r=ty(t()),n=Xb(t()).onDeviceChange;null==r||r.getTracks().forEach((e=>{e.stop()})),navigator.mediaDevices&&n&&navigator.mediaDevices.removeEventListener("devicechange",n),e(jb())},Gb=e=>e.localMedia.busyDeviceIds,qb=e=>e.localMedia.currentCameraDeviceId,Hb=e=>e.localMedia.currentMicrophoneDeviceId,Wb=e=>e.localMedia.currentSpeakerDeviceId,Kb=e=>e.localMedia.cameraEnabled,Jb=e=>e.localMedia.microphoneEnabled,Qb=e=>e.localMedia.lowDataMode,Yb=e=>e.localMedia.devices,Zb=e=>e.localMedia.options;Je(Zb,(e=>!!e));const Xb=e=>e.localMedia,ey=e=>e.localMedia.status,ty=e=>e.localMedia.stream,ry=e=>e.localMedia.isSwitchingStream,ny=Je(Yb,qb,Hb,Qb,((e,t,r,n)=>({devices:e,videoId:t,audioId:r,options:{disableAEC:!1,disableAGC:!1,hd:!0,lax:!1,lowDataMode:n,simulcast:!0,widescreen:!0}}))),iy=Je(ey,(e=>"starting"===e)),sy=Je(Yb,Gb,((e,t)=>e.filter((e=>"videoinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),oy=Je(Yb,Gb,((e,t)=>e.filter((e=>"audioinput"===e.kind)).filter((e=>!t.includes(e.deviceId))))),ay=Je(Yb,(e=>e.filter((e=>"audiooutput"===e.kind))));Ev([Je(xv,ey,Zb,((e,t,r)=>{if(e&&["inactive","stopped"].includes(t)&&r)return r}))],(({dispatch:e},t)=>{t&&e(Ub(t))}));Ev([Je(xv,ey,Zb,((e,t,r)=>!e&&"inactive"!==t&&!!r))],(({dispatch:e},t)=>{t&&e($b())})),kv({predicate:(e,t,r)=>{const n=Jb(r),i=Jb(t);return"started"===ey(r)&&n!==i},effect:(e,{dispatch:t})=>{t(Nb())}}),kv({predicate:(e,t,r)=>{const n=Qb(r),i=Qb(t);return"started"===ey(r)&&n!==i},effect:(e,{dispatch:t})=>{t(Bb())}}),kv({predicate:(e,t,r)=>{if(t.localMedia.isTogglingCamera)return!1;const n=Kb(r),i=Kb(t);return"started"===ey(r)&&n!==i},effect:(e,{dispatch:t})=>{t(Ab())}}),kv({predicate:(e,t,r)=>{const n=qb(r),i=qb(t);return"started"===ey(r)&&n!==i},effect:(e,{dispatch:t})=>{t(Fb({audio:!1,video:!0}))}}),kv({predicate:(e,t,r)=>{const n=Hb(r),i=Hb(t);return"started"===ey(r)&&n!==i},effect:(e,{dispatch:t})=>{t(Fb({audio:!0,video:!1}))}}),kv({matcher:Rt(Ub.fulfilled,zb.fulfilled,Vb.fulfilled,Vb.rejected),effect:(e,{dispatch:t,getState:r})=>{const n=r(),i=ty(n),s=Yb(n);if(!i)return;const o=function({audioTrack:e,videoTrack:t,devices:r,stoppedVideoTrack:n,lastAudioId:i,lastVideoId:s}){const o=e=>"live"===(null==e?void 0:e.readyState)?e:null;return t=o(t)||n,e=o(e),{video:Dh("videoinput",t,r,s),audio:Dh("audioinput",e,r,i)}}({audioTrack:i.getAudioTracks()[0],videoTrack:i.getVideoTracks()[0],devices:s});t(Lb(o))}}),kv({actionCreator:Bv.audioEnableRequested,effect:({payload:e},{dispatch:t})=>{const{enable:r}=e;r||t(Db({enabled:!1}))}});const cy=["recorder","streamer"],dy=Lt({name:"localParticipant",initialState:{displayName:"",id:"",isAudioEnabled:!0,isVideoEnabled:!0,isLocalParticipant:!0,stream:void 0,isScreenSharing:!1,roleName:"none",clientClaim:void 0,stickyReaction:void 0},reducers:{doSetDisplayName:(e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName})},extraReducers:e=>{e.addCase(Iv,((e,t)=>Object.assign(Object.assign({},e),{displayName:t.payload.displayName}))),e.addCase(uy.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isAudioEnabled:t.payload}))),e.addCase(py.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{isVideoEnabled:t.payload}))),e.addCase(hy.fulfilled,((e,t)=>Object.assign(Object.assign({},e),{stickyReaction:t.payload}))),e.addCase(Bv.roomJoined,((e,t)=>{var r,n;const i=null===(n=null===(r=t.payload)||void 0===r?void 0:r.room)||void 0===n?void 0:n.clients.find((e=>{var r;return e.id===(null===(r=t.payload)||void 0===r?void 0:r.selfId)}));return Object.assign(Object.assign({},e),{id:t.payload.selfId,roleName:(null==i?void 0:i.role.roleName)||"none",clientClaim:t.payload.clientClaim})}))}}),{doSetDisplayName:ly}=dy.actions,uy=Rv("localParticipant/doEnableAudio",((e,{dispatch:t,getState:r})=>Yv(void 0,void 0,void 0,(function*(){const n=r(),i=ub(n).socket;return null==i||i.emit("enable_audio",{enabled:e.enabled}),e.enabled&&t(hy({enabled:!1})),e.enabled})))),py=Rv("localParticipant/doEnableVideo",((e,{getState:t})=>Yv(void 0,void 0,void 0,(function*(){const r=t(),n=ub(r).socket;return null==n||n.emit("enable_video",{enabled:e.enabled}),e.enabled})))),hy=Rv("localParticipant/doSetLocalStickyReaction",((e,{getState:t,rejectWithValue:r})=>Yv(void 0,void 0,void 0,(function*(){var n;const i=t(),s=by(i),o=Boolean(s),a=null!==(n=e.enabled)&&void 0!==n?n:!o;if(a===o)return r(s);return a?{reaction:"✋",timestamp:(new Date).toISOString()}:null})))),fy=()=>(e,t)=>{const r=t(),n=ub(r).socket,i={displayName:vy(r),stickyReaction:by(r)};null==n||n.emit("send_client_metadata",{type:"UserData",payload:i})},my=e=>e.localParticipant,gy=e=>e.localParticipant.id,vy=e=>e.localParticipant.displayName,by=e=>e.localParticipant.stickyReaction,yy=Je(my,ty,((e,t)=>{const r={id:e.id,clientId:e.id,displayName:e.displayName,stream:t,isLocalClient:!0,isAudioEnabled:e.isAudioEnabled,isVideoEnabled:e.isVideoEnabled};return cy.includes(e.roleName)?null:r}));kv({actionCreator:Ob,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:n}=e,{isVideoEnabled:i}=my(r());t(py({enabled:n||!i}))}}),kv({actionCreator:Db,effect:({payload:e},{dispatch:t,getState:r})=>{const{enabled:n}=e,{isAudioEnabled:i}=my(r());t(uy({enabled:n||!i}))}}),Ev([vy,by],(({dispatch:e})=>{e(fy())}));const _y=Lt({name:"localScreenshare",initialState:{status:"inactive",stream:null,error:null},reducers:{stopScreenshare:(e,t)=>Object.assign(Object.assign({},e),{status:"inactive",stream:null})},extraReducers:e=>{e.addCase(Sy.pending,(e=>Object.assign(Object.assign({},e),{status:"starting"}))),e.addCase(Sy.fulfilled,((e,{payload:{stream:t}})=>Object.assign(Object.assign({},e),{status:"active",stream:t}))),e.addCase(Sy.rejected,((e,{payload:t})=>Object.assign(Object.assign({},e),{error:t,status:"inactive",stream:null})))}}),{stopScreenshare:wy}=_y.actions,Sy=Rv("localScreenshare/doStartScreenshare",((e,{dispatch:t,getState:r,rejectWithValue:n})=>Yv(void 0,void 0,void 0,(function*(){var e;try{const n=r(),i=Ry(n);if(i)return{stream:i};const s=yield navigator.mediaDevices.getDisplayMedia(),o=()=>{t(Cy())};return"oninactive"in s?s.addEventListener("inactive",o):null===(e=s.getVideoTracks()[0])||void 0===e||e.addEventListener("ended",o),{stream:s}}catch(e){return n(e)}})))),Cy=()=>(e,t)=>{const r=t(),n=Ry(r);n&&(n.getTracks().forEach((e=>e.stop())),e(wy({stream:n})))},Ry=e=>e.localScreenshare.stream;function Py(e){return rt(`rtcConnection/event/${e}`)}kv({actionCreator:jb,effect:(e,{getState:t})=>{const r=t(),n=Ry(r);n&&(null==n||n.getTracks().forEach((e=>{e.stop()})))}});const Ty={rtcManagerCreated:Py("rtcManagerCreated"),rtcManagerDestroyed:Py("rtcManagerDestroyed"),streamAdded:Py("streamAdded")};function ky(e,t=!1){const{streams:r,role:n}=e,i=Qv(e,["streams","role"]);return Object.assign(Object.assign({},i),{stream:null,streams:r.map((e=>({id:e,state:t?"new_accept":"to_accept"}))),isLocalParticipant:!1,roleName:(null==n?void 0:n.roleName)||"none",presentationStream:null,newJoiner:t})}function Ey(e,t){const r=e.remoteParticipants.findIndex((e=>e.id===t));return{index:r,participant:e.remoteParticipants[r]}}function Oy(e,t,r){const{participant:n,index:i}=Ey(e,t);return n?Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants.slice(0,i),Object.assign(Object.assign({},n),r),...e.remoteParticipants.slice(i+1)]}):(console.error(`Did not find client for update ${t}`),e)}function Dy(e,t,r,n){const{participant:i}=Ey(e,t);if(!i)return console.error(`No client ${t} found to update stream ${r} ${n}`),e;const s=i.streams.findIndex((e=>e.id===r)),o=[...i.streams];return o[s]=Object.assign(Object.assign({},o[s]),{state:n}),Oy(e,t,{streams:o})}function Iy(e,t,r){const{participant:n}=Ey(e,t);return!n||n.streams.find((e=>e.id===r))?(console.warn(`No participant ${t} or stream ${r} already exists`),e):Oy(e,t,{streams:[...n.streams,{id:r,state:"to_accept"}]})}const xy=Lt({name:"remoteParticipants",initialState:{remoteParticipants:[]},reducers:{streamStatusUpdated:(e,t)=>{let r=e;for(const{clientId:e,streamId:n,state:i}of t.payload)r=Dy(r,e,n,i);return r},participantStreamAdded:(e,t)=>{const{clientId:r,stream:n}=t.payload;return Oy(e,r,{stream:n})},participantStreamIdAdded:(e,t)=>{const{clientId:r,streamId:n}=t.payload;return Iy(e,r,n)}},extraReducers:e=>{e.addCase(Bv.roomJoined,((e,t)=>{var r;if(!(null===(r=t.payload)||void 0===r?void 0:r.room))return e;const n=t.payload.selfId,{clients:i}=t.payload.room;return Object.assign(Object.assign({},e),{remoteParticipants:i.filter((e=>e.id!==n)).filter((e=>!cy.includes(e.role.roleName))).map((e=>ky(e)))})})),e.addCase(Ty.streamAdded,((e,t)=>function(e,t){const{clientId:r,stream:n,streamType:i}=t;let{streamId:s}=t;const{participant:o}=Ey(e,r);if(!o)return console.error(`Did not find client ${r} for adding stream`),e;const a=e.remoteParticipants;s||(s=n.id);const c=a.find((e=>e.id===r));if(!c)return e;const d=c.streams.find((e=>e.id===s));return c.stream&&(c.stream.id===s||c.stream.inboundId===s)||!c.stream&&"webcam"===i||!c.stream&&!i&&!d?Oy(e,r,{stream:n}):Oy(e,r,{presentationStream:n})}(e,t.payload))),e.addCase(Bv.newClient,((e,t)=>{const{client:r}=t.payload;return cy.includes(r.role.roleName)?e:function(e,t){const{participant:r}=Ey(e,t.id);return r?(console.warn(`Client already existing ${t.id}. Ignoring`),e):Object.assign(Object.assign({},e),{remoteParticipants:[...e.remoteParticipants,t]})}(e,ky(r,!0))})),e.addCase(Bv.clientLeft,((e,t)=>{const{clientId:r}=t.payload;return function(e,t){return Object.assign(Object.assign({},e),{remoteParticipants:e.remoteParticipants.filter((e=>e.id!==t))})}(e,r)})),e.addCase(Bv.audioEnabled,((e,t)=>{const{clientId:r,isAudioEnabled:n}=t.payload;return Oy(e,r,{isAudioEnabled:n})})),e.addCase(Bv.videoEnabled,((e,t)=>{const{clientId:r,isVideoEnabled:n}=t.payload;return Oy(e,r,{isVideoEnabled:n})})),e.addCase(Bv.clientMetadataReceived,((e,t)=>{const{error:r,payload:n}=t.payload;if(r||!n)return console.warn(r||"Client metadata error received"),e;const{clientId:i,displayName:s,stickyReaction:o}=n;return Oy(e,i,{displayName:s,stickyReaction:o})})),e.addCase(Bv.screenshareStarted,((e,t)=>{const{clientId:r,streamId:n}=t.payload;return Iy(e,r,n)})),e.addCase(Bv.screenshareStopped,((e,t)=>{const{clientId:r,streamId:n}=t.payload;return function(e,t,r){var n,i;const{participant:s}=Ey(e,t);if(!s)return console.error(`No participant ${t} found to remove stream ${r}`),e;const o=s.stream&&s.stream.id,a=(null===(n=s.presentationStream)||void 0===n?void 0:n.inboundId)||(null===(i=s.presentationStream)||void 0===i?void 0:i.id),c=s.streams.findIndex((e=>e.id===r));return Oy(e,t,Object.assign(Object.assign({streams:s.streams.filter(((e,t)=>t!==c))},o===r&&{stream:null}),a===r&&{presentationStream:null}))}(e,r,n)}))}}),{participantStreamAdded:My,participantStreamIdAdded:jy,streamStatusUpdated:Ly}=xy.actions,Ay=Pv((e=>qv(e)),(e=>(t,r)=>{const n=r(),i=Kv(n);if(e.enable&&!i)return void console.warn("Not authorized to perform this action");const s=ub(n).socket;null==s||s.emit("request_audio_enable",e)})),Ny=e=>e.remoteParticipants.remoteParticipants,By=Je(Ny,(e=>e.filter((e=>!cy.includes(e.roleName)))));Je(Ny,(e=>e.length+1));const Fy=Je(By,my,((e,t)=>cy.includes(t.roleName)?e.length:e.length+1)),zy=Lt({initialState:{data:null,isFetching:!1,error:null},name:"organization",reducers:{},extraReducers:e=>{e.addCase(Vy.pending,(e=>Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(Vy.fulfilled,((e,t)=>t.payload?Object.assign(Object.assign({},e),{isFetching:!1,data:t.payload}):Object.assign(Object.assign({},e),{isFetching:!0}))),e.addCase(Vy.rejected,(e=>Object.assign(Object.assign({},e),{isFetching:!1,error:!0})))}}),Vy=Rv("organization/doOrganizationFetch",((e,{extra:t,getState:r})=>Yv(void 0,void 0,void 0,(function*(){try{const e=r().app.roomUrl,n=yield t.services.fetchOrganizationFromRoomUrl(e||"");if(!n)throw new Error("Invalid room url");return n}catch(e){console.error(e)}})))),Uy=e=>{var t;return null===(t=e.organization.data)||void 0===t?void 0:t.organizationId};Ev([Je(xv,(e=>e.organization),eb,((e,t,r)=>!(!e||t.data||t.isFetching||t.error||r.isFetching)))],(({dispatch:e},t)=>{t&&e(Vy())}));const $y=Lt({initialState:{session:null,status:"ready",error:null},name:"roomConnection",reducers:{connectionStatusChanged:(e,t)=>Object.assign(Object.assign({},e),{status:t.payload})},extraReducers:e=>{e.addCase(Bv.roomJoined,((e,t)=>{var r,n;const{error:i,isLocked:s}=t.payload;return"room_locked"===i&&s?Object.assign(Object.assign({},e),{status:"room_locked"}):i?Object.assign(Object.assign({},e),{status:"disconnected",error:i}):Object.assign(Object.assign({},e),{status:"connected",session:null!==(n=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==n?n:null})})),e.addCase(Bv.disconnect,(e=>["kicked","left"].includes(e.status)?Object.assign({},e):Object.assign(Object.assign({},e),{status:"disconnected"}))),e.addCase(Bv.newClient,((e,t)=>{var r,n;return Object.assign(Object.assign({},e),{session:null!==(n=null===(r=t.payload.room)||void 0===r?void 0:r.session)&&void 0!==n?n:null})})),e.addCase(Bv.roomSessionEnded,((e,t)=>{var r;return(null===(r=e.session)||void 0===r?void 0:r.id)!==t.payload.roomSessionId?e:Object.assign(Object.assign({},e),{session:null})})),e.addCase(Bv.clientKicked,(e=>Object.assign(Object.assign({},e),{status:"kicked"}))),e.addCase(Bv.roomLeft,(e=>Object.assign(Object.assign({},e),{status:"left"}))),e.addCase(ab,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"})))}}),{connectionStatusChanged:Gy}=$y.actions,qy=()=>(e,t)=>{const r=t(),n=ub(r).socket,i=Mv(r),s=Uv(r),o=jv(r),a=Lv(r),c=Av(r),d=Uy(r);null==n||n.emit("knock_room",{avatarUrl:null,config:{isAudioEnabled:!0,isVideoEnabled:!0},deviceCapabilities:{canScreenshare:!0},displayName:o,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:i,userAgent:a,externalId:c}),e(Gy("knocking"))},Hy=()=>(e,t)=>{const r=t(),n=ub(r).socket,i=Mv(r),s=Uv(r),o=jv(r),a=Lv(r),c=Av(r),d=Uy(r),l=Kb(t()),u=Jb(t()),p=(e=>e.localParticipant.clientClaim)(t());null==n||n.emit("join_room",Object.assign({avatarUrl:null,config:{isAudioEnabled:u,isVideoEnabled:l},deviceCapabilities:{canScreenshare:!0},displayName:o,isCoLocated:!1,isDevicePermissionDenied:!1,kickFromOtherRooms:!1,organizationId:d,roomKey:s,roomName:i,userAgent:a,externalId:c},p&&{clientClaim:p})),e(Gy("connecting"))},Wy=e=>e.roomConnection.status;Ev([Je([xv,Uy,Wy,pb,ey],((e,t,r,n,i)=>!!(e&&"started"===i&&n&&t&&["ready","reconnecting","disconnected"].includes(r))))],(({dispatch:e},t)=>{t&&e(Hy())})),kv({actionCreator:Bv.knockHandled,effect:({payload:e},{dispatch:t,getState:r})=>{const{clientId:n,resolution:i}=e,s=r();n===gy(s)&&("accepted"===i?(t(Vv(e.metadata.roomKey)),t(Hy())):"rejected"===i&&t(Gy("knock_rejected")))}}),kv({actionCreator:Dv,effect:(e,{dispatch:t,getState:r})=>{const n=r();if("connected"===Wy(n)){const e=ub(n).socket;null==e||e.emit("leave_room"),t(Gy("leaving"))}else lb()}});function Ky(e){return Object.assign(Object.assign({},e),{timestamp:Date.now()})}const Jy=Lt({name:"notifications",initialState:{emitter:new fr,events:[]},reducers:{addNotification:(e,t)=>Object.assign(Object.assign({},e),{events:[...e.events,Object.assign({},t.payload)]}),doClearNotifications:e=>Object.assign(Object.assign({},e),{events:[]})}});Jy.actions;const Qy=e=>(t,r)=>{t(Jy.actions.addNotification(e));const n=r(),i=Yy(n);i.emit(e.type,e),i.emit("*",e)},Yy=e=>e.notifications.emitter;function Zy(e){return"recorder"===e.roleName}kv({actionCreator:Bv.chatMessage,effect:({payload:e},{dispatch:t,getState:r})=>{const n=r(),i=By(n).find((({id:t})=>t===e.senderId));i?t(Qy(Ky({type:"chatMessageReceived",message:`${i.displayName} says: ${e.text}`,props:{client:i,chatMessage:{senderId:e.senderId,timestamp:e.timestamp,text:e.text}}}))):console.warn("Could not find remote client that sent chat message")}}),kv({actionCreator:Bv.audioEnableRequested,effect:({payload:e},{dispatch:t,getState:r})=>{const{enable:n,requestedByClientId:i}=e,s=r(),o=By(s).find((({id:e})=>e===i));o?t(Qy(Ky({type:n?"requestAudioEnable":"requestAudioDisable",message:n?`${o.displayName} has requested for you to speak`:`${o.displayName} has muted your microphone`,props:{client:o,enable:n}}))):console.warn("Could not find remote client that requested a local audio change")}}),kv({actionCreator:Bv.clientMetadataReceived,effect:(e,{dispatch:t,getOriginalState:r,getState:n})=>{var i;const{error:s,payload:o}=e.payload;if(s||!o)return;const{clientId:a,stickyReaction:c}=o,d=n();if(!Kv(d))return;const l=By(d).find((({id:e})=>e===a));if(!l)return void console.warn("Could not find remote client that provided updated metadata");const u=r(),p=By(u).find((({id:e})=>e===a));(c||(null==p?void 0:p.stickyReaction))&&(null==c?void 0:c.timestamp)!==(null===(i=null==p?void 0:p.stickyReaction)||void 0===i?void 0:i.timestamp)&&t(Qy(Ky({type:c?"remoteHandRaised":"remoteHandLowered",message:`${l.displayName} ${c?"raised":"lowered"} their hand`,props:{client:l,stickyReaction:c}})))}}),Ev([hb],(({dispatch:e,getState:t},r)=>{const n=t(),i=Wy(n);["left","kicked"].includes(i)||("disconnected"===r?e(Qy(Ky({type:"signalTrouble",message:"Network connection lost. Trying to reconnect you...",props:{}}))):"connected"===r&&e(Qy(Ky({type:"signalOk",message:"Network connection available",props:{}}))))}));const Xy=Lt({name:"room",initialState:{isLocked:!1},reducers:{},extraReducers:e=>{e.addCase(Bv.roomJoined,((e,t)=>{const{error:r,isLocked:n}=t.payload;return r?e:Object.assign(Object.assign({},e),{isLocked:Boolean(n)})})),e.addCase(Bv.roomLocked,((e,t)=>{const{isLocked:r}=t.payload;return Object.assign(Object.assign({},e),{isLocked:Boolean(r)})}))}}),e_=Pv((e=>Gv(e)),(e=>(t,r)=>{const n=r(),{socket:i}=ub(n);null==i||i.emit("set_lock",{locked:e.locked})})),t_=Pv((e=>Hv(e)),(e=>(t,r)=>{const n=r(),{socket:i}=ub(n);null==i||i.emit("kick_client",{clientId:e.clientId,reasonId:"kick"})})),r_=Pv((e=>Wv(e)),(e=>(t,r)=>{const n=r(),i=Ny(n).map((e=>e.id));if(i.length){const{socket:e}=ub(n);null==e||e.emit("kick_client",{clientIds:i,reasonId:"end-meeting"})}e.stayBehind||t(Dv())})),n_=Je(Ry,By,((e,t)=>{const r=[];e&&r.push({id:e.id||"local-screenshare",participantId:"local",hasAudioTrack:e.getTracks().some((e=>"audio"===e.kind)),stream:e,isLocal:!0});for(const e of t)e.presentationStream&&r.push({id:e.presentationStream.id||`pres-${e.id}`,participantId:e.id,hasAudioTrack:e.presentationStream.getTracks().some((e=>"audio"===e.kind)),stream:e.presentationStream,isLocal:!1});return r})),i_=Je(Ry,my,By,((e,t,r)=>{const n=[];if(e){const r=!!e.getAudioTracks().length;n.push({clientId:t.id,displayName:"Your screenshare",id:"local-screenshare",isAudioEnabled:r,isLocalClient:!0,isPresentation:!0,isVideoEnabled:!0,stream:e})}for(const e of r){if("streamer"===e.roleName||Zy(e))continue;const{presentationStream:t}=e,r=Qv(e,["presentationStream"]),i=e.displayName||"Guest",s=t&&t.active,o="pres-"+e.id,a=e.stream&&e.stream.active,c=e.isVideoEnabled;n.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,displayName:i,hasActivePresentation:!!s}),e.isVideoEnabled?{isVideoEnabled:c}:{})),s&&n.push(Object.assign(Object.assign(Object.assign({},r),{clientId:e.id,stream:e.presentationStream,displayName:`Screenshare (${i})`,id:o,isPresentation:!0,isVideoEnabled:!0}),a&&{isRecording:null}))}return n})),s_=Je(yy,i_,((e,t)=>[...e?[e]:[],...t])),o_=e=>({emit:(t,r)=>{"rtc_manager_created"===t?e(__(r)):"stream_added"===t?e(Ty.streamAdded(r)):"rtc_manager_destroyed"===t&&e(h_())}}),a_={dispatcherCreated:!1,error:null,isCreatingDispatcher:!1,reportedStreamResolutions:{},rtcManager:null,rtcManagerDispatcher:null,rtcManagerInitialized:!1,status:"inactive",isAcceptingStreams:!1},c_=Lt({name:"rtcConnection",initialState:a_,reducers:{isAcceptingStreams:(e,t)=>Object.assign(Object.assign({},e),{isAcceptingStreams:t.payload}),resolutionReported:(e,t)=>{const{streamId:r,width:n,height:i}=t.payload;return Object.assign(Object.assign({},e),{reportedStreamResolutions:Object.assign(Object.assign({},e.reportedStreamResolutions),{[r]:{width:n,height:i}})})},rtcDisconnected:()=>Object.assign({},a_),rtcDispatcherCreated:(e,t)=>Object.assign(Object.assign({},e),{dispatcherCreated:!0,rtcManagerDispatcher:t.payload}),rtcManagerCreated:(e,t)=>Object.assign(Object.assign({},e),{rtcManager:t.payload,status:"ready"}),rtcManagerDestroyed:e=>Object.assign(Object.assign({},e),{rtcManager:null}),rtcManagerInitialized:e=>Object.assign(Object.assign({},e),{rtcManagerInitialized:!0})},extraReducers:e=>{e.addCase(ab,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"}))),e.addCase(Bv.roomJoined,(e=>Object.assign(Object.assign({},e),{status:"reconnecting"===e.status?"ready":e.status})))}}),{resolutionReported:d_,rtcDispatcherCreated:l_,rtcDisconnected:u_,rtcManagerCreated:p_,rtcManagerDestroyed:h_,rtcManagerInitialized:f_,isAcceptingStreams:m_}=c_.actions,g_=()=>(e,t)=>{const r=t(),n=ub(r).socket,i=S_(r).rtcManagerDispatcher,s=Kb(r),o=Jb(r),a=(e=>e.app.isNodeSdk)(r);if(i||!n)return;const c={getMediaConstraints:()=>({audio:o,video:s}),deferrable:e=>!e},d=new Rm({emitter:o_(e),serverSocket:n,webrtcProvider:c,features:{lowDataModeEnabled:!1,sfuServerOverrideHost:void 0,turnServerOverrideHost:void 0,useOnlyTURN:void 0,vp9On:!1,h264On:!1,simulcastScreenshareOn:!1,deviceHandlerFactory:a?us.createFactory():void 0}});e(l_(d))},v_=()=>(e,t)=>{const{rtcManager:r}=S_(t());r&&r.disconnectAll(),e(u_())},b_=e=>(t,r)=>{var n;t(m_(!0));const i=r(),s=S_(i).rtcManager,o=Ny(i);if(!s)throw new Error("No rtc manager");const a=null===(n=s.shouldAcceptStreamsFromBothSides)||void 0===n?void 0:n.call(s),c=[];for(const{clientId:t,streamId:r,state:n}of e){if(o.find((e=>e.id===t))){if("to_accept"===n||"new_accept"===n&&a||"old_accept"===n&&!a)s.acceptNewStream({streamId:"0"===r?t:r,clientId:t,shouldAddLocalVideo:"0"===r,activeBreakout:false});else if("new_accept"===n||"old_accept"===n);else if("to_unaccept"===n)null==s||s.disconnect("0"===r?t:r,false);else if("done_accept"!==n)continue;c.push({clientId:t,streamId:r,state:n.replace(/to_|new_|old_/,"done_")})}}t(Ly(c)),t(m_(!1))},y_=({streamId:e,width:t,height:r})=>(n,i)=>{const{reportedStreamResolutions:s,rtcManager:o}=S_(i()),a=ty(i());if(!o||(null==a?void 0:a.id)===e)return;const c=s[e];c&&c.width===t&&c.height===r||o.updateStreamResolution(e,null,{width:t||1,height:r||1}),n(d_({streamId:e,width:t,height:r}))},__=e=>t=>{const{rtcManager:r}=e;t(p_(r))},w_=()=>(e,t)=>{const r=ty(t()),n=S_(t()).rtcManager,i=Kb(t()),s=Jb(t());r&&n&&n.addNewStream("0",r,!s,!i),e(f_())},S_=e=>e.rtcConnection,C_=e=>e.rtcConnection.rtcManagerInitialized,R_=e=>e.rtcConnection.status;kv({actionCreator:Fb.fulfilled,effect:({payload:e},{getState:t})=>{const{replacedTracks:r}=e,{rtcManager:n}=S_(t()),i=ty(t());null==r||r.forEach((e=>{((e,t)=>{const r=null==i?void 0:i.getTracks().find((t=>t.kind===e));r&&(null==n||n.replaceTrack(t,r))})(e.kind,e)}))}}),kv({actionCreator:Sy.fulfilled,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:n}=S_(t());null==n||n.addNewStream(r.id,r,!1,!0)}}),kv({actionCreator:wy,effect:({payload:e},{getState:t})=>{const{stream:r}=e,{rtcManager:n}=S_(t());null==n||n.removeStream(r.id,r,null)}}),kv({actionCreator:Vb.fulfilled,effect:({payload:e},{getState:t})=>{var r;const n=ty(t()),{rtcManager:i}=S_(t());if(n&&i){const t=(e,t)=>{const r=n.getTracks().find((t=>t.kind===e));return r&&i.replaceTrack(t,r)};null===(r=null==e?void 0:e.replacedTracks)||void 0===r||r.forEach((e=>{t(e.kind,e)}))}}});Ev([Je((e=>e.rtcConnection.dispatcherCreated),(e=>e.rtcConnection.isCreatingDispatcher),fb,((e,t,r)=>!(e||t||!r)))],(({dispatch:e},t)=>{t&&e(g_())}));const P_=Je((e=>e.rtcConnection.rtcManager),C_,ey,((e,t,r)=>!("started"!==r||!e||t)));Ev([P_],(({dispatch:e},t)=>{t&&e(w_())}));Ev([Je(R_,xv,((e,t)=>!t&&!["inactive","disconnected"].includes(e)))],(({dispatch:e},t)=>{t&&e(v_())}));const T_=Je(R_,Ny,((e,t)=>{if("ready"!==e)return[];const r=[];for(const e of t){const{streams:t,id:n,newJoiner:i}=e;for(let e=0;e<t.length;e++){let s=t[e].id,o=t[e].state;(null==t?void 0:t.length)>1&&"0"===t[1].id&&(0===e?(s=t[1].id,o=t[1].state):1===e&&(s=t[0].id,o=t[0].state)),"done_accept"!==o&&r.push({clientId:n,streamId:s,state:(i&&"0"===s?"new":"to")+"_accept"})}}return r}));Ev([T_,e=>e.rtcConnection.isAcceptingStreams],(({dispatch:e},t,r)=>{0<t.length&&!r&&e(b_(t))}));const k_={audioEnabled:{actions:[uy.fulfilled],rtcEventName:"audioEnabled",getValue:e=>Jb(e),getOutput:e=>({enabled:e})},videoEnabled:{actions:[py.fulfilled],rtcEventName:"videoEnabled",getValue:e=>Kb(e),getOutput:e=>({enabled:e})},localStream:{actions:[Fb.fulfilled],rtcEventName:"localStream",getValue:e=>{var t;return null===(t=ty(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({stream:e})},localScreenshareStream:{actions:[Sy.fulfilled],rtcEventName:"localScreenshareStream",getValue:e=>{var t;return null===(t=Ry(e))||void 0===t?void 0:t.getTracks().map((e=>({id:e.id,kind:e.kind,label:e.label})))},getOutput:e=>({tracks:e})},localScreenshareStreamStopped:{actions:[wy],rtcEventName:"localScreenshareStream",getValue:()=>()=>null,getOutput:()=>({})},displayName:{actions:[ly],rtcEventName:"displayName",getValue:e=>jv(e),getOutput:e=>({displayName:e})},clientId:{actions:null,rtcEventName:"clientId",getValue:e=>gy(e),getOutput:e=>({clientId:e})},deviceId:{actions:null,rtcEventName:"deviceId",getValue:e=>(e=>{var t,r;return null===(r=null===(t=e.deviceCredentials.data)||void 0===t?void 0:t.credentials)||void 0===r?void 0:r.uuid})(e),getOutput:e=>({deviceId:e})},externalId:{actions:null,rtcEventName:"externalId",getValue:e=>Av(e),getOutput:e=>({externalId:e})},organizationId:{actions:null,rtcEventName:"organizationId",getValue:e=>Uy(e),getOutput:e=>({organizationId:e})},signalConnectionStatus:{actions:null,rtcEventName:"signalConnectionStatus",getValue:e=>hb(e),getOutput:e=>({status:e})},roomSessionId:{actions:[Bv.newClient,Bv.roomJoined,Bv.roomSessionEnded,Bv.clientLeft],rtcEventName:"roomSessionId",getValue:e=>(e=>{var t;return null===(t=e.roomConnection.session)||void 0===t?void 0:t.id})(e),getOutput:e=>({roomSessionId:e})},rtcConnectionStatus:{actions:null,rtcEventName:"rtcConnectionStatus",getValue:e=>R_(e),getOutput:e=>({status:e})},userRole:{actions:null,rtcEventName:"userRole",getValue:e=>$v(e),getOutput:e=>({userRole:e})}},E_=Object.values(k_).flatMap((({actions:e})=>{var t;return null!==(t=null==e?void 0:e.map((e=>e)))&&void 0!==t?t:null})).filter((e=>null!==e)),O_=e=>"object"==typeof e?JSON.stringify(e):e,D_=Lt({initialState:{reportedValues:{}},name:"rtcAnalytics",reducers:{updateReportedValues:(e,t)=>Object.assign(Object.assign({},e),{reportedValues:Object.assign(Object.assign({},e.reportedValues),{[t.payload.rtcEventName]:t.payload.value})})}}),I_=()=>(e,t)=>{const r=t(),n=S_(r).rtcManager;n&&(n.sendStatsCustomEvent("insightsStats",{_time:Date.now(),ls:0,lr:0,bs:0,br:0,cpu:0}),Object.values(k_).forEach((({rtcEventName:t,getValue:i,getOutput:s})=>{var o;const a=i(r),c=Object.assign(Object.assign({},s(a)),{_time:Date.now()}),d=O_(a);(null===(o=r.rtcAnalytics.reportedValues)||void 0===o?void 0:o[t])!==d&&(n.sendStatsCustomEvent(t,c),e(x_({rtcEventName:t,value:a})))})))},{updateReportedValues:x_}=D_.actions;function M_({isPresentation:e,stream:t}){var r,n;return e?null!==(n=null!==(r=null==t?void 0:t.outboundId)&&void 0!==r?r:null==t?void 0:t.inboundId)&&void 0!==n?n:null==t?void 0:t.id:"0"}function j_(e,t){return e.find((e=>e.clientId===t.clientId&&e.streamId===t.streamId))?e:e.concat(t)}kv({matcher:Rt(...E_),effect:({type:e},{getState:t,dispatch:r})=>{var n;const i=t(),s=S_(i).rtcManager;if(!s)return;const o=Object.values(k_).find((({actions:t})=>null==t?void 0:t.map((e=>e.type)).includes(e)));if(!o)return;const{getValue:a,getOutput:c,rtcEventName:d}=o,l=a(i),u=O_(l),p=Object.assign(Object.assign({},c(l)),{_time:Date.now()});(null===(n=i.rtcAnalytics.reportedValues)||void 0===n?void 0:n[d])!==u&&(s.sendStatsCustomEvent(d,p),r(x_({rtcEventName:d,value:l})))}}),Ev([C_],(({dispatch:e},t)=>{t&&e(I_())}));const L_=Lt({name:"spotlights",initialState:{sorted:[]},reducers:{addSpotlight(e,t){const{clientId:r,streamId:n}=t.payload;return Object.assign(Object.assign({},e),{sorted:j_(e.sorted,{clientId:r,streamId:n})})},removeSpotlight(e,t){const{clientId:r,streamId:n}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>!(e.clientId===r&&e.streamId===n)))})}},extraReducers:e=>{e.addCase(Bv.roomJoined,((e,t)=>{if(!t.payload.room)return e;const{spotlights:r}=t.payload.room;return Object.assign(Object.assign({},e),{sorted:r})})),e.addCase(Bv.spotlightAdded,((e,t)=>{const{clientId:r,streamId:n}=t.payload;return Object.assign(Object.assign({},e),{sorted:j_(e.sorted,{clientId:r,streamId:n})})})),e.addCase(Bv.spotlightRemoved,((e,t)=>{const{clientId:r,streamId:n}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>!(e.clientId===r&&e.streamId===n)))})})),e.addMatcher(Rt(Bv.clientKicked,Bv.clientLeft),((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{sorted:e.sorted.filter((e=>e.clientId!==r))})}))}}),{addSpotlight:A_,removeSpotlight:N_}=L_.actions,B_=Pv((e=>Jv(e)),(({id:e})=>(t,r)=>{const n=r(),i=s_(n).find((t=>t.clientId===e));if(!i)return;const{socket:s}=ub(n),o=M_(i),a={clientId:i.id,streamId:null!=o?o:"0"};null==s||s.emit("add_spotlight",a)})),F_=Pv((e=>Jv(e)),(({id:e})=>(t,r)=>{const n=r(),i=s_(n).find((t=>t.clientId===e));if(!i)return;const{socket:s}=ub(n),o=M_(i),a={clientId:i.id,streamId:null!=o?o:"0"};null==s||s.emit("remove_spotlight",a)})),z_=e=>e.spotlights.sorted;Je(my,z_,((e,t)=>function({spotlights:e,isPresentation:t,clientId:r,stream:n}){return!!e.find((e=>{const i=M_({isPresentation:t,stream:n});return e.clientId===r&&e.streamId===i}))}({clientId:e.id,stream:e.stream,spotlights:t})));const V_=Je(s_,z_,((e,t)=>function(e,t){return e.reduce(((e,r)=>{const n=t.find((e=>r.clientId===e.clientId&&r.streamId===M_(e)));return n&&!e.includes(n)&&e.push(n),e}),[])}(t,e)));kv({actionCreator:Sy.fulfilled,effect:({payload:e},{getState:t,dispatch:r})=>{const{stream:n}=e,i=t(),s=my(i);s&&r(A_({clientId:s.id,streamId:n.id}))}}),kv({actionCreator:wy,effect:({payload:e},{getState:t,dispatch:r})=>{const{stream:n}=e,i=t(),s=my(i);s&&r(N_({clientId:s.id,streamId:n.id}))}});const U_=Lt({name:"streaming",initialState:{isStreaming:!1,error:null,startedAt:void 0},reducers:{doHandleStreamingStarted:e=>Object.assign(Object.assign({},e),{isStreaming:!0,error:null,startedAt:(new Date).getTime()}),doHandleStreamingStopped:e=>Object.assign(Object.assign({},e),{isStreaming:!1})}});U_.actions;const $_=Lt({name:"waitingParticipants",initialState:{waitingParticipants:[]},reducers:{},extraReducers:e=>{e.addCase(Bv.roomJoined,((e,{payload:t})=>{var r;return(null===(r=t.room)||void 0===r?void 0:r.knockers.length)?Object.assign(Object.assign({},e),{waitingParticipants:t.room.knockers.map((e=>({id:e.clientId,displayName:e.displayName})))}):e})),e.addCase(Bv.roomKnocked,((e,t)=>{const{clientId:r,displayName:n}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:[...e.waitingParticipants,{id:r,displayName:n}]})})),e.addCase(Bv.knockerLeft,((e,t)=>{const{clientId:r}=t.payload;return Object.assign(Object.assign({},e),{waitingParticipants:e.waitingParticipants.filter((e=>e.id!==r))})}))}}),G_=e=>(t,r)=>{const{participantId:n}=e,i=r(),s=fb(i);null==s||s.emit("handle_knock",{action:"accept",clientId:n,response:{}})},q_=e=>(t,r)=>{const{participantId:n}=e,i=r(),s=fb(i);null==s||s.emit("handle_knock",{action:"reject",clientId:n,response:{}})};const H_=null===!1&&!1,W_=$({app:Ov.reducer,authorization:zv.reducer,chat:gb.reducer,cloudRecording:bb.reducer,deviceCredentials:Zv.reducer,localMedia:Rb.reducer,localParticipant:dy.reducer,localScreenshare:_y.reducer,notifications:Jy.reducer,organization:zy.reducer,remoteParticipants:xy.reducer,room:Xy.reducer,roomConnection:$y.reducer,rtcAnalytics:D_.reducer,rtcConnection:c_.reducer,signalConnection:tb.reducer,spotlights:L_.reducer,streaming:U_.reducer,waitingParticipants:$_.reducer}),K_=(e,t)=>{var r;if(Iv.match(t)){const n={app:Object.assign(Object.assign({},Ov.getInitialState()),{initialConfig:null===(r=null==e?void 0:e.app)||void 0===r?void 0:r.initialConfig}),localMedia:Object.assign(Object.assign({},Rb.getInitialState()),null==e?void 0:e.localMedia)};return W_(n,t)}return W_(e,t)};class J_{constructor(e={}){this.data=void 0===e.data?{}:e.data,this.headers=e.headers||{},this.status=e.status||200,this.statusText=e.statusText||"OK",this.url=e.url||null}}function Q_(e,t){return Om.ok(e,`${t} is required`),e}function Y_(e,t){return Om.ok("boolean"==typeof e,`${t}<boolean> is required`),e}function Z_(e,t){return Om.ok("number"==typeof e,`${t}<number> is required`),e}function X_(e,t){return Om.ok("string"==typeof e,`${t}<string> is required`),e}function ew(e,t,r){const n=r||t.name[0].toLowerCase()+t.name.substring(1);return Om.ok(e instanceof t,`${n}<${t.name}> is required`),e}function tw(e,t){return Om.ok(Array.isArray(e),`${t}<array> is required`),e}function rw(e,t){if(null==e||"object"!=typeof e||Array.isArray(e))throw new Error(`${t} must be a record. ${JSON.stringify(e)}`);return e}function nw(e,t,r){X_(t,"name"),function(e,t,r,n){X_(r,"name");const i=n||`${r} must be null or of type ${t}`;Om.ok(null===e||typeof e===t,i)}(e,"string",t,r)}function iw({baseUrl:e,url:t}){return e?e+t:t}class sw{constructor({baseUrl:e}){X_(e,"baseUrl"),this._baseUrl=e}_requestAxios(e,t){const r=Object.assign({},t,{url:e,baseURL:this._baseUrl});return Cv.request(r)}request(e,t){return X_(e,"url"),Om.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Om.ok(t,"options are required"),this._requestAxios(e,t).then((e=>{const{data:t,headers:r,status:n,statusText:i,config:s}=e,o=s&&s.url?iw({baseUrl:s.baseURL,url:s.url}):null;return new J_({data:t,headers:r,status:n,statusText:i,url:o})})).catch((e=>{const t=e.response;if(!t)throw new Error("Could not make the request.");const{data:r,headers:n,status:i,statusText:s,config:o}=t,a=o&&o.url?iw({baseUrl:o.baseURL,url:o.url}):null;return Promise.reject(new J_({data:r,headers:n,status:i,statusText:s,url:a}))}))}}class ow{constructor({httpClient:e}){Om.ok(e,"httpClient is required"),this._httpClient=e}static dataToFormData(e){Om.ok(e,"data is required");const t=new FormData;return Object.keys(e).forEach((r=>{const n=e[r];t.append(r,n)})),t}request(e,t={}){const r=Object.assign(t.headers||{},{"Content-Type":void 0});return this._httpClient.request(e,Object.assign(t,{headers:r,transformRequest:ow.dataToFormData}))}}let aw;aw="object"==typeof window?window.btoa||Bm:"object"==typeof global&&global.btoa||Bm;const cw=()=>Promise.resolve(null);class dw{constructor({httpClient:e,fetchDeviceCredentials:t}){this._httpClient=e,this._fetchDeviceCredentials=t}request(e,t){return this._fetchDeviceCredentials().then((r=>{const n=Object.assign({},t.headers,function(e){if(e&&e.credentials){const t=`${e.credentials.uuid}:${e.hmac}`;return{Authorization:`Basic ${aw(t)}`}}return{}}(r),{"X-Appearin-Device-Platform":"web"}),i=Object.assign({},t,{headers:n});return this._httpClient.request(e,i)}))}}class lw{constructor({baseUrl:e="https://api.appearin.net",fetchDeviceCredentials:t=cw}={}){this.authenticatedHttpClient=new dw({httpClient:new sw({baseUrl:e}),fetchDeviceCredentials:t}),this.authenticatedFormDataHttpClient=new ow({httpClient:this.authenticatedHttpClient})}request(e,t){return X_(e,"url"),Om.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Om.ok(t,"options are required"),this.authenticatedHttpClient.request(e,t)}requestMultipart(e,t){return X_(e,"url"),Om.ok("/"===e[0],'url<String> only accepts relative URLs beginning with "/".'),Om.ok(t,"options are required"),this.authenticatedFormDataHttpClient.request(e,t)}}function uw(e,t){return X_(rw(e,"data")[t],t)}const pw=(hw=uw,(e,t)=>{const r=rw(e,"data")[t];return null==r?null:hw(e,t)});var hw;function fw(e,t,r){return function(e,t){return tw(rw(e,"data")[t],t)}(e,t).map((e=>r(e)))}class mw{constructor(e,t,r=void 0){this.credentials={uuid:e},this.hmac=t,this.userId=r}toJson(){return Object.assign({credentials:this.credentials,hmac:this.hmac},this.userId&&{userId:this.userId})}static fromJson(e){return new mw(uw(function(e,t){const r=rw(e,"data")[t];return void 0===r?null:r}(e,"credentials"),"uuid"),uw(e,"hmac"),pw(e,"userId")||void 0)}}class gw{constructor({apiClient:e}){this._apiClient=e}getCredentials(){return this._apiClient.request("/devices",{method:"post"}).then((({data:e})=>mw.fromJson(e))).catch((e=>{if(e.response&&404===e.response.status)return null;throw e}))}}class vw{constructor(e,t){this._key=e,this._chromeStorage=t}loadOrDefault(e){return new Promise((t=>{this._chromeStorage.get(this._key,(r=>{t(r[this._key]||e)}))}))}save(e){return new Promise((t=>{this._chromeStorage.set({[this._key]:e},(()=>{t()}))}))}}class bw{constructor(e,t){Q_(t,"localStorage"),this._key=X_(e,"key"),this._localStorage=t}loadOrDefault(e){try{const t=this._localStorage.getItem(this._key);if(t)try{return Promise.resolve(JSON.parse(t))}catch(e){}return Promise.resolve(e)}catch(t){return console.warn("Error getting access to storage. Are cookies blocked?",t),Promise.resolve(e)}}save(e){try{return this._localStorage.setItem(this._key,JSON.stringify(e)),Promise.resolve()}catch(e){return console.warn("Error getting access to storage. Are cookies blocked?",e),Promise.reject(e)}}}let yw;try{yw=self.localStorage}catch(ok){yw={getItem:()=>{},key:()=>{},setItem:()=>{},removeItem:()=>{},hasOwnProperty:()=>{},length:0}}var _w=yw;const ww="credentials_saved";class Sw extends fr{constructor({deviceService:e,credentialsStore:t}){super(),this._deviceService=e,this._credentialsStore=t}static create({baseUrl:e,storeName:t="CredentialsStorage",storeType:r="localStorage"}){const n=new gw({apiClient:new lw({baseUrl:e})});let i=null;if("localStorage"===r)i=new bw(t,_w);else{if("chromeStorage"!==r)throw new Error(`Unknown store type: ${r}`);i=new vw(t,window.chrome.storage.local)}return new Sw({deviceService:n,credentialsStore:i})}_fetchNewCredentialsFromApi(){const e=this._credentialsStore;return new Promise((t=>{const r=()=>{this._deviceService.getCredentials().then((r=>e.save(r?r.toJson():null).then((()=>t(r))))).catch((()=>{setTimeout(r,2e3)}))};r()}))}getCurrentCredentials(){return this._credentialsStore.loadOrDefault(null).then((e=>e?mw.fromJson(e):null))}getCredentials(){return this.credentialsPromise||(this.credentialsPromise=this.getCurrentCredentials().then((e=>e||this._fetchNewCredentialsFromApi()))),this.credentialsPromise}saveCredentials(e){return this.credentialsPromise=void 0,this._credentialsStore.save(e.toJson()).then((()=>(this.emit(ww,e),e)))}setUserId(e){return this.getCurrentCredentials().then((t=>{t||console.error("Illegal state: no credentials to set user id for.");if(null===t||t.userId!==e)return this._credentialsStore.save(Object.assign({},null==t?void 0:t.toJson(),{userId:e}))})).then((()=>{}))}}class Cw{constructor({isExhausted:e,renewsAt:t,totalMinutesLimit:r,totalMinutesUsed:n}){this.isExhausted=e,this.renewsAt=t,this.totalMinutesLimit=r,this.totalMinutesUsed=n}static fromJson(e){return new Cw({isExhausted:Y_(e.isExhausted,"isExhausted"),renewsAt:new Date(X_(e.renewsAt,"renewsAt")),totalMinutesLimit:Z_(e.totalMinutesLimit,"totalMinutesLimit"),totalMinutesUsed:Z_(e.totalMinutesUsed,"totalMinutesUsed")})}}class Rw{constructor({basePlanId:e,embeddedFreeTierStatus:t,isDeactivated:r,isOnTrial:n,onTrialUntil:i,trialStatus:s}){this.basePlanId=e,this.isDeactivated=r,this.isOnTrial=n,this.onTrialUntil=i||null,this.trialStatus=s||null,this.embeddedFreeTierStatus=t||null}static fromJson(e){return new Rw({basePlanId:"string"==typeof e.basePlanId?e.basePlanId:null,isDeactivated:Y_(e.isDeactivated,"isDeactivated"),isOnTrial:Y_(e.isOnTrial,"isOnTrial"),onTrialUntil:"string"==typeof e.onTrialUntil?new Date(e.onTrialUntil):null,trialStatus:"string"==typeof e.trialStatus?e.trialStatus:null,embeddedFreeTierStatus:e.embeddedFreeTierStatus?Cw.fromJson(e.embeddedFreeTierStatus):null})}}function Pw(e){return null!=e}function Tw(e={}){return{maxNumberOfInvitationsAndUsers:Pw(null==e?void 0:e.maxNumberOfInvitationsAndUsers)?Number(null==e?void 0:e.maxNumberOfInvitationsAndUsers):null,maxNumberOfClaimedRooms:Pw(null==e?void 0:e.maxNumberOfClaimedRooms)?Number(null==e?void 0:e.maxNumberOfClaimedRooms):null,maxRoomLimitPerOrganization:Pw(null==e?void 0:e.maxRoomLimitPerOrganization)?Number(null==e?void 0:e.maxRoomLimitPerOrganization):null,trialMinutesLimit:Pw(null==e?void 0:e.trialMinutesLimit)?Number(null==e?void 0:e.trialMinutesLimit):null,includedUnits:Pw(null==e?void 0:e.includedUnits)?Number(null==e?void 0:e.includedUnits):null}}class kw{constructor(e){this.logoImageUrl=null,this.roomBackgroundImageUrl=null,this.roomBackgroundThumbnailUrl=null,this.roomKnockPageBackgroundImageUrl=null,this.roomKnockPageBackgroundThumbnailUrl=null,this.preferences=null,this.onboardingSurvey=null,this.type=null,ew(e,Object,"properties"),X_(e.organizationId,"organizationId"),X_(e.organizationName,"organizationName"),X_(e.subdomain,"subdomain"),ew(e.permissions,Object,"permissions"),ew(e.limits,Object,"limits"),this.organizationId=e.organizationId,this.organizationName=e.organizationName,this.subdomain=e.subdomain,this.permissions=e.permissions,this.limits=e.limits,this.account=e.account?new Rw(e.account):null,this.logoImageUrl=e.logoImageUrl,this.roomBackgroundImageUrl=e.roomBackgroundImageUrl,this.roomBackgroundThumbnailUrl=e.roomBackgroundThumbnailUrl,this.roomKnockPageBackgroundImageUrl=e.roomKnockPageBackgroundImageUrl,this.roomKnockPageBackgroundThumbnailUrl=e.roomKnockPageBackgroundThumbnailUrl,this.preferences=e.preferences,this.onboardingSurvey=e.onboardingSurvey,this.type=e.type}static fromJson(e){const t=ew(e,Object,"data"),r=(null==t?void 0:t.preferences)||{},n=(null==t?void 0:t.onboardingSurvey)||null,i=ew(t.permissions,Object,"permissions");return new kw({organizationId:X_(t.organizationId,"organizationId"),organizationName:X_(t.organizationName,"organizationName"),subdomain:X_(t.subdomain,"subdomain"),permissions:i,limits:Tw(ew(t.limits,Object,"limits")),account:t.account?Rw.fromJson(t.account):null,logoImageUrl:"string"==typeof t.logoImageUrl?t.logoImageUrl:null,roomBackgroundImageUrl:"string"==typeof t.roomBackgroundImageUrl?t.roomBackgroundImageUrl:null,roomBackgroundThumbnailUrl:"string"==typeof t.roomBackgroundThumbnailUrl?t.roomBackgroundThumbnailUrl:null,roomKnockPageBackgroundImageUrl:"string"==typeof t.roomKnockPageBackgroundImageUrl?t.roomKnockPageBackgroundImageUrl:null,roomKnockPageBackgroundThumbnailUrl:"string"==typeof t.roomKnockPageBackgroundThumbnailUrl?t.roomKnockPageBackgroundThumbnailUrl:null,preferences:r,onboardingSurvey:n,type:"string"==typeof t.type?t.type:null})}}kw.GLOBAL_ORGANIZATION_ID="1";class Ew{constructor({apiClient:e}){this._apiClient=e}createOrganization({organizationName:e,subdomain:t,owner:r}){const{displayName:n,consents:i}=r||{},s="email"in r?{value:r.email,verificationCode:X_(r.verificationCode,"owner.verificationCode")}:null,o="idToken"in r?r.idToken:null;if(X_(t,"subdomain"),X_(e,"organizationName"),X_(n,"owner.displayName"),Om.ok(s||o,"owner.email or owner.idToken is required"),i){tw(i,"consents");for(const{consentRevisionId:e,action:t}of i)X_(e,"consentRevisionId"),nw(t,"action")}return this._apiClient.request("/organizations",{method:"POST",data:{organizationName:e,type:"private",subdomain:t,owner:Object.assign(Object.assign(Object.assign(Object.assign({},s&&{email:s}),o&&{idToken:o}),i&&{consents:i}),{displayName:n})}}).then((({data:e})=>uw(e,"organizationId")))}getOrganizationBySubdomain(e){return X_(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/?fields=permissions,account,onboardingSurvey`,{method:"GET"}).then((({data:e})=>kw.fromJson(e))).catch((e=>{if(e instanceof J_){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationByOrganizationId(e){return X_(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}?fields=permissions,account`,{method:"GET"}).then((({data:e})=>kw.fromJson(e))).catch((e=>{if(e instanceof J_){if(404===e.status)return null;throw new Error(e.statusText)}throw e}))}getOrganizationsByContactPoint(e){const{code:t}=e,r="email"in e?e.email:null,n="phoneNumber"in e?e.phoneNumber:null;Om.ok((r||n)&&!(r&&n),"either email or phoneNumber is required"),X_(t,"code");const i=r?{type:"email",value:r}:{type:"phoneNumber",value:n};return this._apiClient.request("/organization-queries",{method:"POST",data:{contactPoint:i,code:t}}).then((({data:e})=>fw(e,"organizations",(e=>kw.fromJson(e)))))}getOrganizationsByIdToken({idToken:e}){return X_(e,"idToken"),this._apiClient.request("/organization-queries",{method:"POST",data:{idToken:e}}).then((({data:e})=>fw(e,"organizations",(e=>kw.fromJson(Object.assign({permissions:{},limits:{}},rw(e,"organization")))))))}getOrganizationsByLoggedInUser(){return this._apiClient.request("/user/organizations",{method:"GET"}).then((({data:e})=>fw(e,"organizations",(e=>kw.fromJson(Object.assign({permissions:{},limits:{}},rw(e,"organization")))))))}getSubdomainAvailability(e){return X_(e,"subdomain"),this._apiClient.request(`/organization-subdomains/${encodeURIComponent(e)}/availability`,{method:"GET"}).then((({data:e})=>(ew(e,Object,"data"),{status:uw(e,"status")})))}updatePreferences({organizationId:e,preferences:t}){return Q_(e,"organizationId"),Q_(t,"preferences"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}/preferences`,{method:"PATCH",data:t}).then((()=>{}))}deleteOrganization({organizationId:e}){return Q_(e,"organizationId"),this._apiClient.request(`/organizations/${encodeURIComponent(e)}`,{method:"DELETE"}).then((()=>{}))}}class Ow{constructor({organizationService:e,subdomain:t}){this._organizationService=e,this._subdomain=t,this._organizationPromise=null}initOrganization(){return this.fetchOrganization().then((()=>{}))}fetchOrganization(){return this._organizationPromise||(this._organizationPromise=this._organizationService.getOrganizationBySubdomain(this._subdomain)),this._organizationPromise}}const Dw="https://api.whereby.dev";var Iw=function(){return Iw=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},Iw.apply(this,arguments)};function xw(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r}"function"==typeof SuppressedError&&SuppressedError;const Mw=j.withTypes(),jw=R.withTypes(),Lw=s.forwardRef(((e,t)=>{var{muted:r,mirror:n=!1,stream:i,onVideoResize:o}=e,a=xw(e,["muted","mirror","stream","onVideoResize"]);const c=Mw(),d=jw(Wb),l=s.useRef(null),u=s.useRef(null);return s.useImperativeHandle(t,(()=>Object.assign(l.current,{captureAspectRatio:()=>{if(!l.current)return null;const e=l.current.videoHeight,t=l.current.videoWidth;return t&&e&&t+e>20?t/e:null}}))),s.useEffect((()=>{if(!l.current)return;const e=new ResizeObserver(Cb((()=>{if(l.current&&(null==i?void 0:i.id)){const e=l.current.clientWidth,t=l.current.clientHeight;c(y_({streamId:i.id,width:e,height:t})),o&&o({width:e,height:t,stream:i})}}),{delay:1e3,edges:!0}));return e.observe(l.current),()=>{e.disconnect()}}),[i]),s.useEffect((()=>{l.current&&(l.current.srcObject!==i&&(l.current.srcObject=i),l.current.muted!==r&&(l.current.muted=Boolean(r)))}),[r,i,l]),s.useEffect((()=>{u.current&&!r&&i&&d&&(u.current.srcObject!==i&&(u.current.srcObject=i),u.current.setSinkId&&u.current.setSinkId(d))}),[i,u,d,r]),s.createElement(s.Fragment,null,s.createElement("video",Object.assign({ref:l,autoPlay:!0,playsInline:!0},a,{style:Object.assign({transform:n?"scaleX(-1)":"none",width:"100%",height:"100%"},a.style)})),s.createElement("audio",{ref:u,autoPlay:!0,playsInline:!0}))}));Lw.displayName="VideoView";const Aw=Je((e=>e.chat.chatMessages),(e=>e.cloudRecording),my,ty,By,n_,Wy,(e=>e.streaming),(e=>e.waitingParticipants.waitingParticipants),Yy,V_,((e,t,r,n,i,s,o,a,c,d,l)=>({chatMessages:e,cloudRecording:t.isRecording?{status:"recording"}:void 0,connectionStatus:o,events:d,liveStream:a.isStreaming?{status:"streaming",startedAt:a.startedAt}:void 0,localScreenshareStatus:r.isScreenSharing?"active":void 0,localParticipant:Object.assign(Object.assign({},r),{stream:n}),remoteParticipants:i,screenshares:s,waitingParticipants:c,spotlightedParticipants:l}))),Nw={localMediaOptions:{audio:!0,video:!0}};const Bw=Je((e=>e.localMedia.cameraDeviceError),sy,qb,Hb,Wb,(e=>e.localMedia.isSettingCameraDevice),(e=>e.localMedia.isSettingMicrophoneDevice),iy,ty,(e=>e.localMedia.microphoneDeviceError),oy,ay,(e=>e.localMedia.startError),((e,t,r,n,i,s,o,a,c,d,l,u,p)=>({cameraDeviceError:e,cameraDevices:t,currentCameraDeviceId:r,currentMicrophoneDeviceId:n,currentSpeakerDeviceId:i,isSettingCameraDevice:s,isSettingMicrophoneDevice:o,isStarting:a,localStream:c,microphoneDeviceError:d,microphoneDevices:l,speakerDevices:u,startError:p})));var Fw={MIN_WINDOW_HEIGHT:320,MIN_WINDOW_WIDTH:320,DESKTOP_BREAKPOINT:1025,TABLET_BREAKPOINT:750,PHONE_BREAKPOINT:500,TOP_TOOLBAR_HEIGHT:56,BOTTOM_TOOLBAR_HEIGHT:82,SIDEBAR_WIDTH:375,VIDEO_CONTROLS_MIN_WIDTH:420,ROOM_FOOTER_MIN_WIDTH:600,FLOATING_VIDEO_CONTROLS_BOTTOM_MARGIN:20,WATERMARK_BAR_HEIGHT:32,BREAKOUT_STAGE_BACKDROP_HEADER_HEIGHT:28,BREAKOUT_STAGE_BACKDROP_FOOTER_HEIGHT:56,SUBGRID_EMPTY_STAGE_MAX_WIDTH:800,GROUPS_CELL_MARGIN:8,GROUPS_CELL_PADDING:12,GROUPS_CELL_NAV_HEIGHT:56,GROUPS_CELL_AVATAR_WRAPPER_BOTTOM_MARGIN:8,GROUPS_CELL_AVATAR_GRID_GAP:8,GROUPS_CELL_MIN_WIDTH:360,GROUPS_CELL_MAX_WIDTH:600,GROUPS_ROW_HEIGHT:72,GROUPS_ROW_GAP:1,FOLDABLE_SCREEN_STAGE_PADDING:8};function zw({top:e=0,left:t=0}={}){return{top:e,left:t}}function Vw({width:e=0,height:t=0}={}){return{width:Math.max(e,0),height:Math.max(t,0)}}function Uw({top:e=0,left:t=0,width:r=0,height:n=0}={}){return{bounds:Vw({width:r,height:n}),origin:zw({top:e,left:t})}}function $w({top:e=0,left:t=0,bottom:r=0,right:n=0}={}){return{top:e,left:t,bottom:r,right:n}}function Gw(e){return!!e&&!(e.width<=0||e.height<=0)}function qw(e,t){const{width:r,height:n}=t,i=n,s=i*e,o=Math.min(r/s,n/i);return{width:s*o,height:i*o}}const Hw=({vertical:e,width:t,height:r,count:n,aspectRatio:i})=>{const s=[1,2,3].map((s=>(({width:e,height:t,rows:r,cols:n,aspectRatio:i})=>{const s=qw(i,{width:e/n,height:t/r});return Math.round(s.width*s.height)})({width:t,height:r,rows:e?Math.ceil(n/s):s,cols:e?s:Math.ceil(n/s),aspectRatio:i}))),o=Math.max(...s);return{splits:s.indexOf(o)+1,weight:o}},Ww=({width:e,height:t,count:r,aspectRatio:n})=>{const i=Hw({vertical:!0,width:e,height:t,count:r,aspectRatio:n}),s=Hw({vertical:!1,width:e,height:t,count:r,aspectRatio:n});return i.weight>s.weight?{splits:i.splits,vertical:!0}:{splits:s.splits,vertical:!1}};function Kw(e){var{aspectRatio:t,children:r,className:n,height:i,style:o,width:a,withRoundedCorners:c=!1,withShadow:d=!0}=e,l=xw(e,["aspectRatio","children","className","height","style","width","withRoundedCorners","withShadow"]);let u=a,p=i,h=0,f=0;t&&(({width:u,height:p}=qw(t,{width:a,height:i})),h=(a-u)/2,f=(i-p)/2);const m=Object.assign({width:`${Math.round(u)}px`,height:`${Math.round(p)}px`},h||f?{transform:`translate3d(${Math.round(h)}px, ${Math.round(f)}px, 0)`}:{});return s.createElement("div",{className:n,style:Object.assign({position:"absolute",top:0,left:0},o)},s.createElement("div",Object.assign({style:m},l),s.cloneElement(r,{contentWidth:u,contentHeight:p,withRoundedCorners:c,withShadow:d})))}function Jw({origin:e,bounds:t}){return{top:Math.round(e.top),left:Math.round(e.left),height:Math.round(t.height),width:Math.round(t.width)}}function Qw({cell:e,child:t,clientId:r,style:n={},withRoundedCorners:i=!1,withShadow:o=!1}){const a=!Gw(e.bounds);return s.createElement(Kw,{width:e.bounds.width,height:e.bounds.height,aspectRatio:e.aspectRatio,style:a?{width:0,height:0}:n,withRoundedCorners:i,withShadow:o,key:r},t)}function Yw({debug:e=!1,featureRoundedCornersOff:t=!1,gridContent:r=[],isConstrained:n=!1,layoutOverflowBackdropFrame:i=Uw(),layoutVideoStage:o,presentationGridContent:a=[],subgridContent:c=[]}){const d=!t&&!n,l=[];return r.length&&l.push(...function({content:e,isConstrained:t,stageLayout:r,withRoundedCorners:n,withShadow:i}){var o;const a=(null===(o=r.videoGrid)||void 0===o?void 0:o.cells)||[],c=e.map(((e,o)=>{var c,d;if(!r.videoGrid)return null;const l=a[o],u={top:r.videoGrid.origin.top+r.videoGrid.paddings.top+l.origin.top,left:r.videoGrid.origin.left+r.videoGrid.paddings.left+l.origin.left},p={width:Math.round(l.bounds.width),height:Math.round(l.bounds.height),transform:`translate3d(${Math.round(u.left)}px, ${Math.round(u.top)}px, 0)`},h=null===(d=null===(c=null==e?void 0:e.props)||void 0===c?void 0:c.participant)||void 0===d?void 0:d.id;return Qw({cell:l,child:s.cloneElement(e,{isSmallCell:l.isSmallCell,isZoomedByDefault:!!t&&!(null==e?void 0:e.props.participant.isPresentation),canZoom:!!t,key:h||`video-${o}`}),clientId:h||`video-${o}`,withRoundedCorners:n,style:p,withShadow:i})}));return c}({content:r,isConstrained:n,stageLayout:o,withRoundedCorners:d,withShadow:!n})),a.length&&l.push(...function({content:e,isConstrained:t,stageLayout:r,withRoundedCorners:n,withShadow:i}){var o;const a=(null===(o=r.presentationGrid)||void 0===o?void 0:o.cells)||[];return e.map(((e,o)=>{var c,d;if(!r.presentationGrid)return null;const l=a[o],u={top:r.presentationGrid.origin.top+r.presentationGrid.paddings.top+l.origin.top,left:r.presentationGrid.origin.left+r.presentationGrid.paddings.left+l.origin.left},p={width:Math.round(l.bounds.width),height:Math.round(l.bounds.height),transform:`translate3d(${Math.round(u.left)}px, ${Math.round(u.top)}px, 0)`},h=null===(d=null===(c=null==e?void 0:e.props)||void 0===c?void 0:c.participant)||void 0===d?void 0:d.id;return Qw({cell:l,child:s.cloneElement(e,{isSmallCell:l.isSmallCell,isZoomedByDefault:!!t&&!(null==e?void 0:e.props.participant.isPresentation),canZoom:!!t,key:h||`presentation-${o}`}),clientId:h||`presentation-${o}`,style:p,withRoundedCorners:n,withShadow:i})}))}({content:a,isConstrained:n,stageLayout:o,withRoundedCorners:d,withShadow:!n})),c.length&&l.push(...function({content:e,stageLayout:t,withRoundedCorners:r,withShadow:n}){const i=t.subgrid.cells;return e.map(((e,o)=>{var a,c,d,l;const u=i[o],p={height:Math.round(u.bounds.height),width:Math.round(u.bounds.width),transform:""},h={top:t.subgrid.origin.top+u.origin.top,left:t.subgrid.origin.left+u.origin.left};p.transform=`translate3d(${Math.round(h.left)}px, ${Math.round(h.top)}px, 0)`;const f=null===(c=null===(a=null==e?void 0:e.props)||void 0===a?void 0:a.participant)||void 0===c?void 0:c.id,m=(null===(d=u.paddings)||void 0===d?void 0:d.left)||0,g=(null===(l=u.paddings)||void 0===l?void 0:l.right)||0;return Qw({cell:u,child:s.cloneElement(e,{avatarSize:u.bounds.width-m-g,canZoom:!1,cellPaddings:u.paddings,isSmallCell:u.isSmallCell,isZoomedByDefault:!1,key:f||`subgrid-${o}`,style:p}),clientId:f||`subgrid-${o}`,style:p,withRoundedCorners:r,withShadow:n})}))}({content:c,stageLayout:o,withRoundedCorners:!t,withShadow:!0})),s.createElement("div",{key:"video-stage-layout",style:{width:"100%",height:"100%",position:"relative"}},Gw(i.bounds)&&s.createElement("div",{style:Jw(i)}),l,e&&s.createElement(s.Fragment,null))}const Zw=16/9,Xw=4/3,eS=({value:e,min:t,max:r})=>Math.min(Math.max(e,t),r);function tS({choices:e=[]}){const t=Math.min(...e),r=Math.max(...e);let n=null;if(t===r)n=t;else{const t=function(...e){return new Set(e).size!==e.length}(e)?(i=e).sort(((e,t)=>i.filter((t=>t===e)).length-i.filter((e=>e===t)).length)).pop():r;n=eS({value:t||r,min:Xw,max:Zw})}var i;return{minAr:t,maxAr:r,chosenAr:n}}function rS({width:e,height:t,cellCount:r,gridGap:n,cellAspectRatios:i=[Xw],paddings:s=$w()}){if(!r)return{cellCount:r,cellHeight:0,cellWidth:0,cols:0,rows:0,extraHorizontalPadding:0,extraVerticalPadding:0,gridGap:n,paddings:s};const o=e-(s.left+s.right),a=t-(s.top+s.bottom),c=tS({choices:i});let d=c.chosenAr;const{rows:l,cols:u}=function({count:e,width:t,height:r,aspectRatio:n}){if(e<=1)return{rows:1,cols:1};const{splits:i,vertical:s}=Ww({width:t,height:r,count:e,aspectRatio:n});return s?{rows:Math.ceil(e/i),cols:i}:{rows:i,cols:Math.ceil(e/i)}}({count:r,width:o,height:a,aspectRatio:d});1===l?d=eS({value:o/u/a,min:Math.min(c.chosenAr,c.maxAr),max:Math.max(c.chosenAr,c.maxAr)}):1===u&&(d=eS({value:o/(a/l),min:Math.min(c.chosenAr,c.maxAr),max:Math.max(c.chosenAr,c.maxAr)}));const{cellWidth:p,cellHeight:h,extraHorizontalPadding:f,extraVerticalPadding:m}=function({width:e,height:t,rows:r,cols:n,gridGap:i,aspectRatio:s}){const o=(e-(n-1)*i)/n,a=(t-(r-1)*i)/r,c=o/a;let d=0,l=0;return s<c?d=o-a*s:s>c&&(l=a-o/s),{cellWidth:o-d,cellHeight:a-l,extraHorizontalPadding:d*n/2,extraVerticalPadding:l*r/2}}({width:o,height:a,rows:l,cols:u,gridGap:n,aspectRatio:d});return{cellCount:r,cellHeight:h,cellWidth:p,cols:u,rows:l,extraHorizontalPadding:f,extraVerticalPadding:m,gridGap:n,paddings:s}}function nS({containerBounds:e,isPortrait:t,cellCount:r,cellBounds:n,paddings:i=$w()}){let s=0,o=0,a=0,c=0,d=0,l=0;const u=e.width-i.left-i.right,p=e.height-i.top-i.bottom;return r&&(t?(c=Math.floor(u/n.width),a=Math.ceil(r/c),s=u,o=a*n.height,d=(u-c*n.width)/2):(a=Math.floor(p/n.height),c=Math.ceil(r/a),s=c*n.width,o=p,l=(p-a*n.height)/2)),{isPortrait:t,width:s+i.left+i.right,height:o+i.top+i.bottom,cellBounds:n,cellCount:r,rows:a,cols:c,extraHorizontalPadding:d,extraVerticalPadding:l,paddings:i}}const{BOTTOM_TOOLBAR_HEIGHT:iS,VIDEO_CONTROLS_MIN_WIDTH:sS,TABLET_BREAKPOINT:oS,SUBGRID_EMPTY_STAGE_MAX_WIDTH:aS}=Fw,cS=200,dS=300,lS=200,uS=20,pS=12,hS=$w({top:4,bottom:28,left:8,right:8});function fS({hasOverflow:e,hasStage:t}){return e&&t?[80]:[80,60]}function mS({cellCount:e}){const t=e<=6;return Vw({width:t?dS-50:dS,height:t?cS-50:cS})}function gS({containerBounds:e,isPortrait:t,cellCount:r,cellSizeOptions:n,cellPaddings:i,paddings:s}){const o=function({containerBounds:e,isPortrait:t,cellCount:r,cellSizeOptions:n,cellPaddings:i,paddings:s}){let o;for(let a=0;a<n.length;a++){const c=n[a];if(o=nS({containerBounds:e,isPortrait:t,cellCount:r,cellBounds:Vw({width:c+i.left+i.right,height:c+i.top+i.bottom}),paddings:s}),o.width<=e.width&&o.height<=e.height)return o}return o}({containerBounds:e,isPortrait:t,cellCount:r,cellSizeOptions:n,cellPaddings:i,paddings:s}),a=o.cellBounds.width-i.left-i.right===n[n.length-1],c=Vw({width:Math.min(o.width,e.width),height:Math.min(o.height,e.height)}),d=Vw({width:o.width,height:o.height});return 0===r?{bounds:c,contentBounds:d,videoCells:[]}:{bounds:c,contentBounds:d,videoCells:[...Array(r)].map(((e,t)=>{const{top:r,left:n,width:s,height:c}=function({index:e,layout:t}){const{isPortrait:r,rows:n,cols:i,cellCount:s,cellBounds:o,extraHorizontalPadding:a,extraVerticalPadding:c,paddings:d}=t,l=r?Math.floor(e/i):Math.floor(e%n),u=r?Math.floor(e%i):Math.floor(e/n),p=function({index:e,isPortrait:t,rows:r,cols:n,cellBounds:i,cellCount:s}){const o=r*n,a=o-s;if(!a)return 0;const c=o-a-1;return e<c-((t?n:r)-a)+1||e>c?0:a*(t?i.width:i.height)/2}({index:e,isPortrait:r,rows:n,cols:i,cellBounds:o,cellCount:s});return{top:d.top+c+l*o.height+(r?0:p),left:d.left+a+u*o.width+(r?p:0),width:o.width,height:o.height}}({index:t,layout:o});return{origin:zw({top:r,left:n}),bounds:Vw({width:s,height:c}),paddings:i,isSmallCell:a}}))}}function vS({cellPaddings:e,cellSizeOptions:t,containerBounds:r,containerOrigin:n,gridGap:i,hasConstrainedOverflow:s,hasPresentationContent:o,hasVideoContent:a,isConstrained:c,isMaximizeMode:d,isPortrait:l,isSmallScreen:u,maxGridWidth:p,shouldOverflowSubgrid:h,subgridVideos:f}){const{width:m,height:g}=r,v=o||a,b=f.length>0;if(!b&&!v)return{isPortrait:l,videosContainer:Uw(),subgrid:Object.assign(Object.assign({},Uw()),{contentBounds:Vw(),cells:[]}),hasOverflow:!1};if(!b)return{isPortrait:l,videosContainer:Uw(Object.assign(Object.assign({},r),n)),subgrid:Object.assign(Object.assign({},Uw()),{contentBounds:Vw(),cells:[]}),hasOverflow:s};const y=h?uS:0;let _=null;if(v)if(h){const n=t[0];let i=d?iS:iS+e.top+(c||u?n/2:n)+e.bottom;r.height-i<cS&&(i=0),_=Vw({width:r.width,height:i})}else _=Vw(d?{width:r.width,height:t[0]+e.top+e.bottom}:l?{width:r.width,height:r.height/2}:{width:r.width/2,height:r.height});else _=Vw({width:Math.min(aS,r.width),height:r.height});let w=0;_.width>p&&(w=(_.width-p)/2);const S=gS({containerBounds:_,isPortrait:l,cellCount:f.length,cellSizeOptions:t,cellPaddings:e,paddings:$w({top:y,left:w,right:w})}),C=Vw({width:S.contentBounds.width-_.width,height:S.contentBounds.height-_.height}),R=C.width>0||C.height>0;let P,T=null;T=!v||h||R?S.contentBounds:S.bounds;let k=T;v?(k=Vw(h?{width:0,height:_.height+y+i}:l?{width:0,height:S.bounds.height+i}:{width:S.bounds.width+i,height:0}),P=function({bounds:e,fromBounds:t}){return{width:Math.max(t.width-e.width,0),height:Math.max(t.height-e.height,0)}}({bounds:k,fromBounds:r})):P=Vw();const E=Object.assign({},n);let O;return O=zw(v?{top:l?Math.max(n.top+g-k.height+i,0):n.top,left:l?n.left:Math.max(n.left+m-T.width,0)}:{top:n.top+Math.max(0,(g-T.height)/2),left:n.left+Math.max(0,(m-T.width)/2)}),{isPortrait:l,videosContainer:Uw(Object.assign(Object.assign({},P),E)),subgrid:Object.assign(Object.assign({},Uw(Object.assign(Object.assign({},T),O))),{cells:S.videoCells.map(((e,t)=>{var r,n;return Object.assign({aspectRatio:(null===(r=f[t])||void 0===r?void 0:r.aspectRatio)||1,type:"video",clientId:null===(n=f[t])||void 0===n?void 0:n.clientId},e)})),contentBounds:S.contentBounds}),hasOverflow:R||h||s,overflowNeedBounds:h?Vw():C}}function bS({containerBounds:e,containerOrigin:t,gridGap:r,supersizedContentAspectRatio:n,hasPresentationContent:i,hasPresentationGrid:s,hasVideoContent:o,minGridBounds:a}){const{width:c,height:d}=e;let l=c<=d,u=Vw(),p=zw(),h=o?Object.assign({},e):Vw(),f=o?Object.assign({},t):zw();if(i){const i=function({bounds:e,aspectRatio:t,minGridContainerBounds:r,hasPresentationGrid:n}){const{width:i,height:s}=e;if(!(r.width>0))return{isPortrait:i<=s,supersizedContentBounds:e};const o=Math.round(i/2),a=Math.round(s/2),c=Math.max(i-r.width,0),d=Math.max(s-r.height,0);let l=c<=d,u=0,p=0;if(t){const e=qw(t,{width:c,height:s}),r=qw(t,{width:i,height:d});if(l=t<=1?r.height>e.height:r.width>e.width,l){const e=d-Math.max(r.height,a);p=Math.max(e,0)}else{const t=c-Math.max(e.width,o);u=Math.max(t,0)}}else n&&(l=c/d>=5);return{isPortrait:l,supersizedContentBounds:{width:l?i:c-u,height:l?d-p:s}}}({bounds:e,aspectRatio:n||1,minGridContainerBounds:Vw({width:o?a.width+r:0,height:o?a.height+r:0}),hasPresentationGrid:s});l=i.isPortrait,u=i.supersizedContentBounds,p=Object.assign({},t),o&&(h=Vw({width:l?e.width:e.width-u.width-r,height:l?e.height-u.height-r:e.height}),f=zw({top:l?t.top+u.height+r:t.top,left:l?t.left:t.left+u.width+r}))}return{isPortrait:l,presentationGrid:Object.assign({},Uw(Object.assign(Object.assign({},u),p))),videoGrid:Uw(Object.assign(Object.assign({},h),f))}}function yS({containerBounds:e,paddings:t=$w(),videos:r,isConstrained:n,maxGridWidth:i,gridGap:s}){const{width:o,height:a}=e,c=i?Math.min(o,i):o,d=r.length;let l=null;const u=r.map((e=>e.aspectRatio||1)),p=mS({cellCount:d}),h=rS({width:c,height:a,cellCount:d,gridGap:s,cellAspectRatios:u,paddings:t});return l=r.map(((e,t)=>{const r=function({index:e,layout:t}){const{cellWidth:r,cellHeight:n,rows:i,cols:s,cellCount:o,gridGap:a}=t,c=Math.floor(e/s),d=Math.floor(e%s),l=function({rows:e,cols:t,cellWidth:r,index:n,cellCount:i,gridGap:s}){const o=e*t,a=o-i;if(!a)return 0;const c=o-a-1;return n>=c-(t-a)+1&&n<=c?a*r/2+s:0}({rows:i,cols:s,cellWidth:r,index:e,cellCount:o,gridGap:a});return{top:c*n+c*a,left:d*r+d*a+l,width:r,height:n}}({index:t,layout:h}),i=h.cellWidth<p.width,s=n||i?h.cellWidth/h.cellHeight:e.aspectRatio||1;return{clientId:e.clientId,isDraggable:e.isDraggable,origin:zw({top:r.top,left:r.left}),bounds:Vw({width:r.width,height:r.height}),aspectRatio:s,isSmallCell:i,type:"video"}})),{videoCells:l,extraHorizontalPadding:o!==c?h.extraHorizontalPadding+(o-c)/2:h.extraHorizontalPadding,extraVerticalPadding:h.extraVerticalPadding,paddings:h.paddings,gridGap:s}}function _S({a:e,b:t,gridGap:r,isPortrait:n}){const i=n?e.vertical:e.horizontal,s=n?t.vertical:t.horizontal;if(i===s)return{a:0,b:0};const o=i<s?e:t,a=n?o.vertical:o.horizontal,c=(r+(i+s)+a)/2-a;return{a:o===e?c:0,b:o===t?c:0}}function wS({gridGap:e,isConstrained:t,presentationVideos:r,videos:n,videosContainerLayout:i,gridLayoutPaddings:s=$w(),presentationGridLayoutPaddings:o=$w(),maxGridWidth:a}){return{gridLayout:yS({containerBounds:i.videoGrid.bounds,gridGap:e,isConstrained:t,maxGridWidth:a,paddings:s,videos:n}),presentationGridLayout:yS({containerBounds:i.presentationGrid.bounds,gridGap:e,isConstrained:t,maxGridWidth:a,paddings:o,videos:r})}}function SS({floatingVideo:e,frame:t,gridGap:r,isConstrained:n,isMaximizeMode:i=!1,isXLMeetingSize:s=!1,paddings:o=$w(),presentationVideos:a=[],rebalanceLayout:c=!1,roomBounds:d,roomLayoutHasOverlow:l=!1,subgridCellPaddings:u=hS,subgridVideos:p=[],videoControlsHeight:h=0,videos:f=[],videoGridGap:m}){let g=s&&(!screen||screen.width<=2048);const v=!!a.length,b=a.length>1,y=v&&!b?a[0].aspectRatio:null,_=!!f.length,w=t.bounds.width-o.left-o.right;let S=t.bounds.height-o.top-o.bottom;const C=Math.max(2200,.8*w),R=n&&f.length>pS,P=S/4,T=Math.ceil((f.length-pS)/3);S=R?S+P*T:S;const k=Vw({width:w,height:S}),E=zw({top:o.top,left:o.left}),O=mS({cellCount:f.length}),D=d.width<oS||d.height<oS,I=i||g||!(v||_)||k.width<=k.height,x={cellPaddings:u,containerBounds:k,containerOrigin:E,gridGap:r,hasPresentationContent:v,hasVideoContent:_,isConstrained:n,isMaximizeMode:i,isSmallScreen:D,subgridVideos:p,maxGridWidth:C};let M=vS(Object.assign(Object.assign({},x),{cellSizeOptions:fS({hasOverflow:g,hasStage:v||_}),isPortrait:I,shouldOverflowSubgrid:g,hasConstrainedOverflow:R})),j=!1;if(!g&&l&&!M.hasOverflow){vS(Object.assign(Object.assign({},x),{containerBounds:Vw({width:k.width,height:k.height-iS}),cellSizeOptions:fS({hasOverflow:g,hasStage:v||_}),isPortrait:I,shouldOverflowSubgrid:g,hasConstrainedOverflow:R})).hasOverflow&&(j=!0)}(j||M.hasOverflow&&!g)&&(g=!0,M=vS(Object.assign(Object.assign({},x),{cellSizeOptions:fS({hasOverflow:!0,hasStage:v||_}),isPortrait:!0,shouldOverflowSubgrid:g,hasConstrainedOverflow:R})));const L=bS({containerBounds:M.videosContainer.bounds,containerOrigin:M.videosContainer.origin,gridGap:r,supersizedContentAspectRatio:y||1,hasPresentationContent:v,hasPresentationGrid:b,hasVideoContent:_,minGridBounds:O});let{gridLayout:A,presentationGridLayout:N}=wS({gridGap:m||r,isConstrained:n,presentationVideos:a,videos:f,videosContainerLayout:L,maxGridWidth:C});if(M.hasOverflow&&!g){const{vPaddings:e,hPaddings:t}=function({need:e,stageLayout:t,gridLayout:r,presentationGridLayout:n,videosContainerLayout:i}){let s={presentationGrid:0,grid:0},o={presentationGrid:0,grid:0};if(t.isPortrait){const t=Math.min(r.extraVerticalPadding,n.extraVerticalPadding);s={presentationGrid:Math.min(i.isPortrait?n.extraVerticalPadding:t,e.height),grid:Math.min(i.isPortrait?r.extraVerticalPadding:t,e.height)}}else{const t=Math.min(r.extraHorizontalPadding,n.extraHorizontalPadding);o={presentationGrid:Math.min(i.isPortrait?t:n.extraHorizontalPadding,e.width),grid:Math.min(i.isPortrait?t:r.extraHorizontalPadding,e.width)}}return{vPaddings:s,hPaddings:o}}({need:M.overflowNeedBounds||Vw(),stageLayout:M,gridLayout:A,presentationGridLayout:N,videosContainerLayout:L});(e.presentationGrid||e.grid||t.presentationGrid||t.grid)&&(!function({vPaddings:e,hPaddings:t,stageLayout:r,videosContainerLayout:n}){if(r.isPortrait&&(e.presentationGrid||e.grid)){const t=n.isPortrait?2*e.presentationGrid+2*e.grid:e.presentationGrid+e.grid;r.videosContainer.bounds.height-=t,r.subgrid.origin.top-=t,r.subgrid.bounds.height+=t,n.presentationGrid.bounds.height-=2*e.presentationGrid,n.videoGrid.bounds.height-=2*e.grid,n.isPortrait&&(n.videoGrid.origin.top-=e.presentationGrid)}if(!r.isPortrait&&(t.presentationGrid||t.grid)){const e=n.isPortrait?t.presentationGrid+t.grid:2*t.presentationGrid+2*t.grid;r.videosContainer.bounds.width-=e,r.subgrid.origin.left-=e,r.subgrid.bounds.width+=e,n.presentationGrid.bounds.width-=2*t.presentationGrid,n.videoGrid.bounds.width-=2*t.grid,n.isPortrait||(n.videoGrid.origin.left-=t.grid)}}({vPaddings:e,hPaddings:t,stageLayout:M,videosContainerLayout:L}),({gridLayout:A,presentationGridLayout:N}=wS({gridGap:m||r,isConstrained:n,presentationVideos:a,videos:f,videosContainerLayout:L,maxGridWidth:C})))}const B=function({roomBounds:e,containerFrame:t,floatingVideo:r,videoControlsHeight:n,margin:i=8}){if(!r)return null;const s=qw(r.aspectRatio||0,{width:lS,height:lS}),o=!(e.height-t.bounds.height-t.origin.top),a=t.bounds.width-2*(s.width+i)<sS;let c=0;o&&a?c=-1*n:o||a||(c=n);const d=zw({top:t.origin.top+(t.bounds.height-s.height-i)+c,left:t.origin.left+(t.bounds.width-s.width-i)});return{clientId:r.clientId,isDraggable:r.isDraggable,origin:d,bounds:s,aspectRatio:r.aspectRatio,isSmallCell:!0}}({roomBounds:d,containerFrame:t,floatingVideo:e||null,videoControlsHeight:h});c&&function({videosContainerLayout:e,gridLayout:t,presentationGridLayout:r,stageLayout:n,gridGap:i,shouldOverflowSubgrid:s}){const o=e.presentationGrid.bounds.width>0,a=e.videoGrid.bounds.width>0,c=n.subgrid.bounds.width>0,d={vertical:0,horizontal:0};if(o&&a){const n=_S({a:{horizontal:r.extraHorizontalPadding,vertical:r.extraVerticalPadding},b:{horizontal:t.extraHorizontalPadding,vertical:t.extraVerticalPadding},gridGap:i,isPortrait:e.isPortrait});e.isPortrait?(e.presentationGrid.origin.top+=n.a,e.videoGrid.origin.top-=n.b,d.vertical=n.b):(e.presentationGrid.origin.left+=n.a,e.videoGrid.origin.left-=n.b,d.horizontal=n.b)}if(c&&(o||a)&&!s){const s={horizontal:r.extraHorizontalPadding,vertical:r.extraVerticalPadding},c={horizontal:t.extraHorizontalPadding+d.horizontal,vertical:t.extraVerticalPadding+d.vertical};let l;const u=o&&a;l=u&&e.isPortrait&&!n.isPortrait?s.horizontal<c.horizontal?s:c:u&&!e.isPortrait&&n.isPortrait?s.vertical<c.vertical?s:c:a?c:s;const p=_S({a:l,b:{horizontal:0,vertical:0},gridGap:i,isPortrait:n.isPortrait});n.isPortrait?n.subgrid.origin.top-=p.b:n.subgrid.origin.left-=p.b}}({videosContainerLayout:L,gridLayout:A,presentationGridLayout:N,stageLayout:M,gridGap:r,shouldOverflowSubgrid:g});let F=o.top+M.videosContainer.bounds.height+M.subgrid.bounds.height+o.bottom;return(v||_)&&(F+=r),{isPortrait:M.isPortrait,hasOverflow:M.hasOverflow,videosContainer:Object.assign(Object.assign({},L),{bounds:Vw({width:M.videosContainer.bounds.width,height:M.videosContainer.bounds.height}),origin:zw({top:M.videosContainer.origin.top,left:M.videosContainer.origin.left})}),bounds:Vw({height:g?F:t.bounds.height,width:t.bounds.width}),gridGap:r,presentationGrid:Object.assign(Object.assign({},L.presentationGrid),{cells:N.videoCells,paddings:$w({top:N.paddings.top+N.extraVerticalPadding,bottom:N.paddings.bottom+N.extraVerticalPadding,left:N.paddings.left+N.extraHorizontalPadding,right:N.paddings.right+N.extraHorizontalPadding})}),videoGrid:Object.assign(Object.assign({},L.videoGrid),{cells:A.videoCells,paddings:$w({top:A.paddings.top+A.extraVerticalPadding,bottom:A.paddings.bottom+A.extraVerticalPadding,left:A.paddings.left+A.extraHorizontalPadding,right:A.paddings.right+A.extraHorizontalPadding})}),subgrid:M.subgrid,floatingContent:Object.assign(Object.assign({},B),e)}}function CS({aspectRatio:e,avatarSize:t,cellPaddings:r,client:n,isDraggable:i=!0,isPlaceholder:s=!1,isSubgrid:o=!1}){return{aspectRatio:e||16/9,avatarSize:t,cellPaddings:r,client:n,clientId:(null==n?void 0:n.id)||"",isDraggable:i,isPlaceholder:s,isSubgrid:o,type:"video"}}const RS=12,PS=12;function TS({activeVideosSubgridTrigger:e,forceSubgrid:t,stageParticipantLimit:r=RS,gridGap:n=8,videoGridGap:i=8,enableSubgrid:o=!0}={}){const[a,c]=s.useState({width:0,height:0}),[d,l]=s.useState({}),[u,p]=s.useState(null),{clientViewsInGrid:h,clientViewsInPresentationGrid:f,clientViewsInSubgrid:m}=function({activeVideosSubgridTrigger:e=PS,stageParticipantLimit:t=RS,forceSubgrid:r=!0,enableSubgrid:n=!0,maximizedParticipant:i}={}){const o=jw(s_),a=jw(V_),c=jw(Fy),d=s.useMemo((()=>!!n&&(!!r||c>t)),[r,c,t,n]),l=s.useMemo((()=>function({clientViews:e,activeVideosSubgridTrigger:t,shouldShowSubgrid:r,spotlightedParticipants:n,maximizedParticipant:i}){if(!r)return[];const s=n.length>0,o=(i?e.filter((e=>e.id!==i.id)):e).filter((e=>!e.isPresentation&&!n.includes(e))),a=o.filter((e=>!e.isVideoEnabled)),c=o.filter((e=>e.isVideoEnabled)).length>t,d=o.filter((e=>!a.includes(e)&&e.isAudioEnabled)),l=o.filter((e=>!a.includes(e)&&!e.isAudioEnabled));if(a.length&&s)return[...l,...a];if(c&&l.length){const e=[...d,...l].slice(0,t);return e.length<=t?[...l.filter((t=>!e.includes(t))),...a]:[...l,...a]}return a}({clientViews:o,activeVideosSubgridTrigger:e,shouldShowSubgrid:d,spotlightedParticipants:a,maximizedParticipant:i})),[o,d,e,a]),u=s.useMemo((()=>o.filter((e=>!l.includes(e)))),[o,l]),p=s.useMemo((()=>i?[i]:a),[a,i]);return{clientViewsInGrid:s.useMemo((()=>u.filter((e=>!p.includes(e)))),[u,p]),clientViewsInPresentationGrid:p,clientViewsInSubgrid:l}}({activeVideosSubgridTrigger:e,forceSubgrid:t,stageParticipantLimit:r,enableSubgrid:o,maximizedParticipant:u}),g=s.useMemo((()=>h.map((e=>CS({client:e,aspectRatio:d[e.id],avatarSize:0,cellPaddings:{top:0,right:0}})))),[h,d]),v=s.useMemo((()=>f.map((e=>CS({client:e,aspectRatio:d[e.id],avatarSize:0,cellPaddings:{top:0,right:0}})))),[f,d]),b=s.useMemo((()=>m.map((e=>CS({client:e,aspectRatio:d[e.id],avatarSize:0,cellPaddings:{top:0,right:0},isSubgrid:!0})))),[m,d]),y=s.useMemo((()=>Uw(a)),[a]),_=s.useMemo((()=>SS({frame:y,gridGap:n,isConstrained:!1,roomBounds:y.bounds,videos:g,videoGridGap:i,presentationVideos:v,subgridVideos:b})),[y,g,v,b,n,i]);return{cellViewsVideoGrid:g,cellViewsInPresentationGrid:v,cellViewsInSubgrid:b,clientAspectRatios:d,videoStage:_,setContainerBounds:c,setClientAspectRatios:l,maximizedParticipant:u,setMaximizedParticipant:p}}var kS={exports:{}};const ES=55296,OS=56319,DS=56320,IS=127462,xS=127487,MS=127995,jS=127999,LS=65024,AS=65039,NS=8400,BS=8447,FS=8205,zS=[776,2359,2359,2367,2367,2984,3007,3021,3633,3635,3648,3657,4352,4449,4520];function VS(e){if("string"!=typeof e)throw new Error("string cannot be undefined or null");const t=[];let r=0,n=0;for(;r<e.length;)n+=US(r+n,e),HS(e[r+n])&&n++,GS(e[r+n])&&n++,qS(e[r+n])&&n++,WS(e[r+n])?n++:(t.push(e.substring(r,r+n)),r+=n,n=0);return t}function US(e,t){const r=t[e];if(!function(e){return e&&JS(e[0].charCodeAt(0),ES,OS)}(r)||e===t.length-1)return 1;const n=r+t[e+1];let i=t.substring(e+2,e+5);return $S(n)&&$S(i)||function(e){return JS(KS(e),MS,jS)}(i)?4:2}function $S(e){return JS(KS(e),IS,xS)}function GS(e){return"string"==typeof e&&JS(e.charCodeAt(0),LS,AS)}function qS(e){return"string"==typeof e&&JS(e.charCodeAt(0),NS,BS)}function HS(e){return"string"==typeof e&&-1!==zS.indexOf(e.charCodeAt(0))}function WS(e){return"string"==typeof e&&e.charCodeAt(0)===FS}function KS(e){return(e.charCodeAt(0)-ES<<10)+(e.charCodeAt(1)-DS)+65536}function JS(e,t,r){return e>=t&&e<=r}kS.exports=VS,kS.exports.substr=function(e,t,r){const n=VS(e);if(void 0===t)return e;if(t>=n.length)return"";const i=n.length-t;let s=t+(void 0===r?i:r);return s>t+i&&(s=void 0),n.slice(t,s).join("")};var QS=c(kS.exports);const YS=({name:e})=>{const t=((e="")=>{if(e=e.trim())return e.split(/-| /).map((e=>QS(e)[0])).slice(0,3);return[]})(e),r=[0,56,48,40][t.length]||32,n=t.join("").toUpperCase();return s.createElement("svg",{viewBox:"-60 -60 120 120","aria-hidden":"true",style:{height:"100%",pointerEvents:"none",width:"100%"}},s.createElement("text",{x:0,y:0,textAnchor:"middle",dominantBaseline:"central",fontSize:r},n))};function ZS(e){var{avatarUrl:t,className:r,size:n=40,name:i,variant:o="round"}=e,a=xw(e,["avatarUrl","className","size","name","variant"]);return s.createElement("div",Object.assign({style:{height:`${n}px`,width:`${n}px`,userSelect:"none",overflow:"hidden",borderRadius:"round"===o?"50%":"4px",backgroundColor:"#f8e3c8"},className:r,title:i},a),!t&&i?s.createElement(YS,{name:i}):s.createElement("img",{src:t||"",alt:"",style:{height:"100%",width:"100%",objectFit:"cover",maxWidth:"initial"}}))}function XS({avatarUrl:e,displayName:t,isSmallCell:r,withRoundedCorners:n}){return s.createElement("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",position:"absolute",top:0,left:0,height:"100%",width:"100%",borderRadius:n?"8px":"0"}},s.createElement("div",{style:{height:r?60:80,width:r?60:80,pointerEvents:"none",position:"relative"}},s.createElement(ZS,{variant:"square",avatarUrl:e,name:t,size:r?60:80})))}function eC(){return eC=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},eC.apply(this,arguments)}function tC(e,t,{checkForDefaultPrevented:r=!0}={}){return function(n){if(null==e||e(n),!1===r||!n.defaultPrevented)return null==t?void 0:t(n)}}function rC(...e){return t=>e.forEach((e=>function(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}(e,t)))}function nC(...e){return t.useCallback(rC(...e),e)}function iC(e,r=[]){let n=[];const i=()=>{const r=n.map((e=>t.createContext(e)));return function(n){const i=(null==n?void 0:n[e])||r;return t.useMemo((()=>({[`__scope${e}`]:{...n,[e]:i}})),[n,i])}};return i.scopeName=e,[function(r,i){const s=t.createContext(i),o=n.length;function a(r){const{scope:n,children:i,...a}=r,c=(null==n?void 0:n[e][o])||s,d=t.useMemo((()=>a),Object.values(a));return t.createElement(c.Provider,{value:d},i)}return n=[...n,i],a.displayName=r+"Provider",[a,function(n,a){const c=(null==a?void 0:a[e][o])||s,d=t.useContext(c);if(d)return d;if(void 0!==i)return i;throw new Error(`\`${n}\` must be used within \`${r}\``)}]},sC(i,...r)]}function sC(...e){const r=e[0];if(1===e.length)return r;const n=()=>{const n=e.map((e=>({useScope:e(),scopeName:e.scopeName})));return function(e){const i=n.reduce(((t,{useScope:r,scopeName:n})=>({...t,...r(e)[`__scope${n}`]})),{});return t.useMemo((()=>({[`__scope${r.scopeName}`]:i})),[i])}};return n.scopeName=r.scopeName,n}const oC=t.forwardRef(((e,r)=>{const{children:n,...i}=e,s=t.Children.toArray(n),o=s.find(dC);if(o){const e=o.props.children,n=s.map((r=>r===o?t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null:r));return t.createElement(aC,eC({},i,{ref:r}),t.isValidElement(e)?t.cloneElement(e,void 0,n):null)}return t.createElement(aC,eC({},i,{ref:r}),n)}));oC.displayName="Slot";const aC=t.forwardRef(((e,r)=>{const{children:n,...i}=e;return t.isValidElement(n)?t.cloneElement(n,{...lC(i,n.props),ref:r?rC(r,n.ref):n.ref}):t.Children.count(n)>1?t.Children.only(null):null}));aC.displayName="SlotClone";const cC=({children:e})=>t.createElement(t.Fragment,null,e);function dC(e){return t.isValidElement(e)&&e.type===cC}function lC(e,t){const r={...t};for(const n in t){const i=e[n],s=t[n];/^on[A-Z]/.test(n)?i&&s?r[n]=(...e)=>{s(...e),i(...e)}:i&&(r[n]=i):"style"===n?r[n]={...i,...s}:"className"===n&&(r[n]=[i,s].filter(Boolean).join(" "))}return{...e,...r}}const uC=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce(((e,r)=>{const n=t.forwardRef(((e,n)=>{const{asChild:i,...s}=e,o=i?oC:r;return t.useEffect((()=>{window[Symbol.for("radix-ui")]=!0}),[]),t.createElement(o,eC({},s,{ref:n}))}));return n.displayName=`Primitive.${r}`,{...e,[r]:n}}),{});function pC(e){const r=t.useRef(e);return t.useEffect((()=>{r.current=e})),t.useMemo((()=>(...e)=>{var t;return null===(t=r.current)||void 0===t?void 0:t.call(r,...e)}),[])}const hC="dismissableLayer.update",fC="dismissableLayer.pointerDownOutside",mC="dismissableLayer.focusOutside";let gC;const vC=t.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),bC=t.forwardRef(((e,r)=>{var n;const{disableOutsidePointerEvents:i=!1,onEscapeKeyDown:s,onPointerDownOutside:o,onFocusOutside:a,onInteractOutside:c,onDismiss:d,...l}=e,u=t.useContext(vC),[p,h]=t.useState(null),f=null!==(n=null==p?void 0:p.ownerDocument)&&void 0!==n?n:null===globalThis||void 0===globalThis?void 0:globalThis.document,[,m]=t.useState({}),g=nC(r,(e=>h(e))),v=Array.from(u.layers),[b]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),y=v.indexOf(b),_=p?v.indexOf(p):-1,w=u.layersWithOutsidePointerEventsDisabled.size>0,S=_>=y,C=function(e,r=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const n=pC(e),i=t.useRef(!1),s=t.useRef((()=>{}));return t.useEffect((()=>{const e=e=>{if(e.target&&!i.current){const t={originalEvent:e};function o(){_C(fC,n,t,{discrete:!0})}"touch"===e.pointerType?(r.removeEventListener("click",s.current),s.current=o,r.addEventListener("click",s.current,{once:!0})):o()}else r.removeEventListener("click",s.current);i.current=!1},t=window.setTimeout((()=>{r.addEventListener("pointerdown",e)}),0);return()=>{window.clearTimeout(t),r.removeEventListener("pointerdown",e),r.removeEventListener("click",s.current)}}),[r,n]),{onPointerDownCapture:()=>i.current=!0}}((e=>{const t=e.target,r=[...u.branches].some((e=>e.contains(t)));S&&!r&&(null==o||o(e),null==c||c(e),e.defaultPrevented||null==d||d())}),f),R=function(e,r=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const n=pC(e),i=t.useRef(!1);return t.useEffect((()=>{const e=e=>{if(e.target&&!i.current){_C(mC,n,{originalEvent:e},{discrete:!1})}};return r.addEventListener("focusin",e),()=>r.removeEventListener("focusin",e)}),[r,n]),{onFocusCapture:()=>i.current=!0,onBlurCapture:()=>i.current=!1}}((e=>{const t=e.target;[...u.branches].some((e=>e.contains(t)))||(null==a||a(e),null==c||c(e),e.defaultPrevented||null==d||d())}),f);return function(e,r=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const n=pC(e);t.useEffect((()=>{const e=e=>{"Escape"===e.key&&n(e)};return r.addEventListener("keydown",e),()=>r.removeEventListener("keydown",e)}),[n,r])}((e=>{_===u.layers.size-1&&(null==s||s(e),!e.defaultPrevented&&d&&(e.preventDefault(),d()))}),f),t.useEffect((()=>{if(p)return i&&(0===u.layersWithOutsidePointerEventsDisabled.size&&(gC=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(p)),u.layers.add(p),yC(),()=>{i&&1===u.layersWithOutsidePointerEventsDisabled.size&&(f.body.style.pointerEvents=gC)}}),[p,f,i,u]),t.useEffect((()=>()=>{p&&(u.layers.delete(p),u.layersWithOutsidePointerEventsDisabled.delete(p),yC())}),[p,u]),t.useEffect((()=>{const e=()=>m({});return document.addEventListener(hC,e),()=>document.removeEventListener(hC,e)}),[]),t.createElement(uC.div,eC({},l,{ref:g,style:{pointerEvents:w?S?"auto":"none":void 0,...e.style},onFocusCapture:tC(e.onFocusCapture,R.onFocusCapture),onBlurCapture:tC(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:tC(e.onPointerDownCapture,C.onPointerDownCapture)}))}));function yC(){const e=new CustomEvent(hC);document.dispatchEvent(e)}function _C(e,t,n,{discrete:i}){const s=n.originalEvent.target,o=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&s.addEventListener(e,t,{once:!0}),i?function(e,t){e&&r.flushSync((()=>e.dispatchEvent(t)))}(s,o):s.dispatchEvent(o)}let wC=0;function SC(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}const CC="focusScope.autoFocusOnMount",RC="focusScope.autoFocusOnUnmount",PC={bubbles:!1,cancelable:!0},TC=t.forwardRef(((e,r)=>{const{loop:n=!1,trapped:i=!1,onMountAutoFocus:s,onUnmountAutoFocus:o,...a}=e,[c,d]=t.useState(null),l=pC(s),u=pC(o),p=t.useRef(null),h=nC(r,(e=>d(e))),f=t.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;t.useEffect((()=>{if(i){function e(e){if(f.paused||!c)return;const t=e.target;c.contains(t)?p.current=t:DC(p.current,{select:!0})}function t(e){if(f.paused||!c)return;const t=e.relatedTarget;null!==t&&(c.contains(t)||DC(p.current,{select:!0}))}function r(e){if(document.activeElement===document.body)for(const t of e)t.removedNodes.length>0&&DC(c)}document.addEventListener("focusin",e),document.addEventListener("focusout",t);const n=new MutationObserver(r);return c&&n.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),n.disconnect()}}}),[i,c,f.paused]),t.useEffect((()=>{if(c){IC.add(f);const t=document.activeElement;if(!c.contains(t)){const r=new CustomEvent(CC,PC);c.addEventListener(CC,l),c.dispatchEvent(r),r.defaultPrevented||(!function(e,{select:t=!1}={}){const r=document.activeElement;for(const n of e)if(DC(n,{select:t}),document.activeElement!==r)return}((e=kC(c),e.filter((e=>"A"!==e.tagName))),{select:!0}),document.activeElement===t&&DC(c))}return()=>{c.removeEventListener(CC,l),setTimeout((()=>{const e=new CustomEvent(RC,PC);c.addEventListener(RC,u),c.dispatchEvent(e),e.defaultPrevented||DC(null!=t?t:document.body,{select:!0}),c.removeEventListener(RC,u),IC.remove(f)}),0)}}var e}),[c,l,u,f]);const m=t.useCallback((e=>{if(!n&&!i)return;if(f.paused)return;const t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,r=document.activeElement;if(t&&r){const t=e.currentTarget,[i,s]=function(e){const t=kC(e),r=EC(t,e),n=EC(t.reverse(),e);return[r,n]}(t);i&&s?e.shiftKey||r!==s?e.shiftKey&&r===i&&(e.preventDefault(),n&&DC(s,{select:!0})):(e.preventDefault(),n&&DC(i,{select:!0})):r===t&&e.preventDefault()}}),[n,i,f.paused]);return t.createElement(uC.div,eC({tabIndex:-1},a,{ref:h,onKeyDown:m}))}));function kC(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{const t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t}function EC(e,t){for(const r of e)if(!OC(r,{upTo:t}))return r}function OC(e,{upTo:t}){if("hidden"===getComputedStyle(e).visibility)return!0;for(;e;){if(void 0!==t&&e===t)return!1;if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}function DC(e,{select:t=!1}={}){if(e&&e.focus){const r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&function(e){return e instanceof HTMLInputElement&&"select"in e}(e)&&t&&e.select()}}const IC=function(){let e=[];return{add(t){const r=e[0];t!==r&&(null==r||r.pause()),e=xC(e,t),e.unshift(t)},remove(t){var r;e=xC(e,t),null===(r=e[0])||void 0===r||r.resume()}}}();function xC(e,t){const r=[...e],n=r.indexOf(t);return-1!==n&&r.splice(n,1),r}const MC=Boolean(null===globalThis||void 0===globalThis?void 0:globalThis.document)?t.useLayoutEffect:()=>{},jC=s["useId".toString()]||(()=>{});let LC=0;function AC(e){const[t,r]=s.useState(jC());return MC((()=>{e||r((e=>null!=e?e:String(LC++)))}),[e]),e||(t?`radix-${t}`:"")}const NC=["top","right","bottom","left"],BC=Math.min,FC=Math.max,zC=Math.round,VC=Math.floor,UC=e=>({x:e,y:e}),$C={left:"right",right:"left",bottom:"top",top:"bottom"},GC={start:"end",end:"start"};function qC(e,t,r){return FC(e,BC(t,r))}function HC(e,t){return"function"==typeof e?e(t):e}function WC(e){return e.split("-")[0]}function KC(e){return e.split("-")[1]}function JC(e){return"x"===e?"y":"x"}function QC(e){return"y"===e?"height":"width"}function YC(e){return["top","bottom"].includes(WC(e))?"y":"x"}function ZC(e){return JC(YC(e))}function XC(e){return e.replace(/start|end/g,(e=>GC[e]))}function eR(e){return e.replace(/left|right|bottom|top/g,(e=>$C[e]))}function tR(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function rR(e){const{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function nR(e,t,r){let{reference:n,floating:i}=e;const s=YC(t),o=ZC(t),a=QC(o),c=WC(t),d="y"===s,l=n.x+n.width/2-i.width/2,u=n.y+n.height/2-i.height/2,p=n[a]/2-i[a]/2;let h;switch(c){case"top":h={x:l,y:n.y-i.height};break;case"bottom":h={x:l,y:n.y+n.height};break;case"right":h={x:n.x+n.width,y:u};break;case"left":h={x:n.x-i.width,y:u};break;default:h={x:n.x,y:n.y}}switch(KC(t)){case"start":h[o]-=p*(r&&d?-1:1);break;case"end":h[o]+=p*(r&&d?-1:1)}return h}async function iR(e,t){var r;void 0===t&&(t={});const{x:n,y:i,platform:s,rects:o,elements:a,strategy:c}=e,{boundary:d="clippingAncestors",rootBoundary:l="viewport",elementContext:u="floating",altBoundary:p=!1,padding:h=0}=HC(t,e),f=tR(h),m=a[p?"floating"===u?"reference":"floating":u],g=rR(await s.getClippingRect({element:null==(r=await(null==s.isElement?void 0:s.isElement(m)))||r?m:m.contextElement||await(null==s.getDocumentElement?void 0:s.getDocumentElement(a.floating)),boundary:d,rootBoundary:l,strategy:c})),v="floating"===u?{x:n,y:i,width:o.floating.width,height:o.floating.height}:o.reference,b=await(null==s.getOffsetParent?void 0:s.getOffsetParent(a.floating)),y=await(null==s.isElement?void 0:s.isElement(b))&&await(null==s.getScale?void 0:s.getScale(b))||{x:1,y:1},_=rR(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({elements:a,rect:v,offsetParent:b,strategy:c}):v);return{top:(g.top-_.top+f.top)/y.y,bottom:(_.bottom-g.bottom+f.bottom)/y.y,left:(g.left-_.left+f.left)/y.x,right:(_.right-g.right+f.right)/y.x}}function sR(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function oR(e){return NC.some((t=>e[t]>=0))}function aR(e){return lR(e)?(e.nodeName||"").toLowerCase():"#document"}function cR(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function dR(e){var t;return null==(t=(lR(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function lR(e){return e instanceof Node||e instanceof cR(e).Node}function uR(e){return e instanceof Element||e instanceof cR(e).Element}function pR(e){return e instanceof HTMLElement||e instanceof cR(e).HTMLElement}function hR(e){return"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof cR(e).ShadowRoot)}function fR(e){const{overflow:t,overflowX:r,overflowY:n,display:i}=yR(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+r)&&!["inline","contents"].includes(i)}function mR(e){return["table","td","th"].includes(aR(e))}function gR(e){const t=vR(),r=yR(e);return"none"!==r.transform||"none"!==r.perspective||!!r.containerType&&"normal"!==r.containerType||!t&&!!r.backdropFilter&&"none"!==r.backdropFilter||!t&&!!r.filter&&"none"!==r.filter||["transform","perspective","filter"].some((e=>(r.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(r.contain||"").includes(e)))}function vR(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function bR(e){return["html","body","#document"].includes(aR(e))}function yR(e){return cR(e).getComputedStyle(e)}function _R(e){return uR(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function wR(e){if("html"===aR(e))return e;const t=e.assignedSlot||e.parentNode||hR(e)&&e.host||dR(e);return hR(t)?t.host:t}function SR(e){const t=wR(e);return bR(t)?e.ownerDocument?e.ownerDocument.body:e.body:pR(t)&&fR(t)?t:SR(t)}function CR(e,t,r){var n;void 0===t&&(t=[]),void 0===r&&(r=!0);const i=SR(e),s=i===(null==(n=e.ownerDocument)?void 0:n.body),o=cR(i);return s?t.concat(o,o.visualViewport||[],fR(i)?i:[],o.frameElement&&r?CR(o.frameElement):[]):t.concat(i,CR(i,[],r))}function RR(e){const t=yR(e);let r=parseFloat(t.width)||0,n=parseFloat(t.height)||0;const i=pR(e),s=i?e.offsetWidth:r,o=i?e.offsetHeight:n,a=zC(r)!==s||zC(n)!==o;return a&&(r=s,n=o),{width:r,height:n,$:a}}function PR(e){return uR(e)?e:e.contextElement}function TR(e){const t=PR(e);if(!pR(t))return UC(1);const r=t.getBoundingClientRect(),{width:n,height:i,$:s}=RR(t);let o=(s?zC(r.width):r.width)/n,a=(s?zC(r.height):r.height)/i;return o&&Number.isFinite(o)||(o=1),a&&Number.isFinite(a)||(a=1),{x:o,y:a}}const kR=UC(0);function ER(e){const t=cR(e);return vR()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:kR}function OR(e,t,r,n){void 0===t&&(t=!1),void 0===r&&(r=!1);const i=e.getBoundingClientRect(),s=PR(e);let o=UC(1);t&&(n?uR(n)&&(o=TR(n)):o=TR(e));const a=function(e,t,r){return void 0===t&&(t=!1),!(!r||t&&r!==cR(e))&&t}(s,r,n)?ER(s):UC(0);let c=(i.left+a.x)/o.x,d=(i.top+a.y)/o.y,l=i.width/o.x,u=i.height/o.y;if(s){const e=cR(s),t=n&&uR(n)?cR(n):n;let r=e,i=r.frameElement;for(;i&&n&&t!==r;){const e=TR(i),t=i.getBoundingClientRect(),n=yR(i),s=t.left+(i.clientLeft+parseFloat(n.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(n.paddingTop))*e.y;c*=e.x,d*=e.y,l*=e.x,u*=e.y,c+=s,d+=o,r=cR(i),i=r.frameElement}}return rR({width:l,height:u,x:c,y:d})}const DR=[":popover-open",":modal"];function IR(e){return DR.some((t=>{try{return e.matches(t)}catch(e){return!1}}))}function xR(e){return OR(dR(e)).left+_R(e).scrollLeft}function MR(e,t,r){let n;if("viewport"===t)n=function(e,t){const r=cR(e),n=dR(e),i=r.visualViewport;let s=n.clientWidth,o=n.clientHeight,a=0,c=0;if(i){s=i.width,o=i.height;const e=vR();(!e||e&&"fixed"===t)&&(a=i.offsetLeft,c=i.offsetTop)}return{width:s,height:o,x:a,y:c}}(e,r);else if("document"===t)n=function(e){const t=dR(e),r=_R(e),n=e.ownerDocument.body,i=FC(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),s=FC(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight);let o=-r.scrollLeft+xR(e);const a=-r.scrollTop;return"rtl"===yR(n).direction&&(o+=FC(t.clientWidth,n.clientWidth)-i),{width:i,height:s,x:o,y:a}}(dR(e));else if(uR(t))n=function(e,t){const r=OR(e,!0,"fixed"===t),n=r.top+e.clientTop,i=r.left+e.clientLeft,s=pR(e)?TR(e):UC(1);return{width:e.clientWidth*s.x,height:e.clientHeight*s.y,x:i*s.x,y:n*s.y}}(t,r);else{const r=ER(e);n={...t,x:t.x-r.x,y:t.y-r.y}}return rR(n)}function jR(e,t){const r=wR(e);return!(r===t||!uR(r)||bR(r))&&("fixed"===yR(r).position||jR(r,t))}function LR(e,t,r){const n=pR(t),i=dR(t),s="fixed"===r,o=OR(e,!0,s,t);let a={scrollLeft:0,scrollTop:0};const c=UC(0);if(n||!n&&!s)if(("body"!==aR(t)||fR(i))&&(a=_R(t)),n){const e=OR(t,!0,s,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&(c.x=xR(i));return{x:o.left+a.scrollLeft-c.x,y:o.top+a.scrollTop-c.y,width:o.width,height:o.height}}function AR(e){return"static"===yR(e).position}function NR(e,t){return pR(e)&&"fixed"!==yR(e).position?t?t(e):e.offsetParent:null}function BR(e,t){const r=cR(e);if(IR(e))return r;if(!pR(e)){let t=wR(e);for(;t&&!bR(t);){if(uR(t)&&!AR(t))return t;t=wR(t)}return r}let n=NR(e,t);for(;n&&mR(n)&&AR(n);)n=NR(n,t);return n&&bR(n)&&AR(n)&&!gR(n)?r:n||function(e){let t=wR(e);for(;pR(t)&&!bR(t);){if(gR(t))return t;t=wR(t)}return null}(e)||r}const FR={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:r,offsetParent:n,strategy:i}=e;const s="fixed"===i,o=dR(n),a=!!t&&IR(t.floating);if(n===o||a&&s)return r;let c={scrollLeft:0,scrollTop:0},d=UC(1);const l=UC(0),u=pR(n);if((u||!u&&!s)&&(("body"!==aR(n)||fR(o))&&(c=_R(n)),pR(n))){const e=OR(n);d=TR(n),l.x=e.x+n.clientLeft,l.y=e.y+n.clientTop}return{width:r.width*d.x,height:r.height*d.y,x:r.x*d.x-c.scrollLeft*d.x+l.x,y:r.y*d.y-c.scrollTop*d.y+l.y}},getDocumentElement:dR,getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:n,strategy:i}=e;const s="clippingAncestors"===r?IR(t)?[]:function(e,t){const r=t.get(e);if(r)return r;let n=CR(e,[],!1).filter((e=>uR(e)&&"body"!==aR(e))),i=null;const s="fixed"===yR(e).position;let o=s?wR(e):e;for(;uR(o)&&!bR(o);){const t=yR(o),r=gR(o);r||"fixed"!==t.position||(i=null),(s?!r&&!i:!r&&"static"===t.position&&i&&["absolute","fixed"].includes(i.position)||fR(o)&&!r&&jR(e,o))?n=n.filter((e=>e!==o)):i=t,o=wR(o)}return t.set(e,n),n}(t,this._c):[].concat(r),o=[...s,n],a=o[0],c=o.reduce(((e,r)=>{const n=MR(t,r,i);return e.top=FC(n.top,e.top),e.right=BC(n.right,e.right),e.bottom=BC(n.bottom,e.bottom),e.left=FC(n.left,e.left),e}),MR(t,a,i));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}},getOffsetParent:BR,getElementRects:async function(e){const t=this.getOffsetParent||BR,r=this.getDimensions,n=await r(e.floating);return{reference:LR(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:r}=RR(e);return{width:t,height:r}},getScale:TR,isElement:uR,isRTL:function(e){return"rtl"===yR(e).direction}};function zR(e,t,r,n){void 0===n&&(n={});const{ancestorScroll:i=!0,ancestorResize:s=!0,elementResize:o="function"==typeof ResizeObserver,layoutShift:a="function"==typeof IntersectionObserver,animationFrame:c=!1}=n,d=PR(e),l=i||s?[...d?CR(d):[],...CR(t)]:[];l.forEach((e=>{i&&e.addEventListener("scroll",r,{passive:!0}),s&&e.addEventListener("resize",r)}));const u=d&&a?function(e,t){let r,n=null;const i=dR(e);function s(){var e;clearTimeout(r),null==(e=n)||e.disconnect(),n=null}return function o(a,c){void 0===a&&(a=!1),void 0===c&&(c=1),s();const{left:d,top:l,width:u,height:p}=e.getBoundingClientRect();if(a||t(),!u||!p)return;const h={rootMargin:-VC(l)+"px "+-VC(i.clientWidth-(d+u))+"px "+-VC(i.clientHeight-(l+p))+"px "+-VC(d)+"px",threshold:FC(0,BC(1,c))||1};let f=!0;function m(e){const t=e[0].intersectionRatio;if(t!==c){if(!f)return o();t?o(!1,t):r=setTimeout((()=>{o(!1,1e-7)}),1e3)}f=!1}try{n=new IntersectionObserver(m,{...h,root:i.ownerDocument})}catch(e){n=new IntersectionObserver(m,h)}n.observe(e)}(!0),s}(d,r):null;let p,h=-1,f=null;o&&(f=new ResizeObserver((e=>{let[n]=e;n&&n.target===d&&f&&(f.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame((()=>{var e;null==(e=f)||e.observe(t)}))),r()})),d&&!c&&f.observe(d),f.observe(t));let m=c?OR(e):null;return c&&function t(){const n=OR(e);!m||n.x===m.x&&n.y===m.y&&n.width===m.width&&n.height===m.height||r();m=n,p=requestAnimationFrame(t)}(),r(),()=>{var e;l.forEach((e=>{i&&e.removeEventListener("scroll",r),s&&e.removeEventListener("resize",r)})),null==u||u(),null==(e=f)||e.disconnect(),f=null,c&&cancelAnimationFrame(p)}}const VR=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var r,n;const{x:i,y:s,placement:o,middlewareData:a}=t,c=await async function(e,t){const{placement:r,platform:n,elements:i}=e,s=await(null==n.isRTL?void 0:n.isRTL(i.floating)),o=WC(r),a=KC(r),c="y"===YC(r),d=["left","top"].includes(o)?-1:1,l=s&&c?-1:1,u=HC(t,e);let{mainAxis:p,crossAxis:h,alignmentAxis:f}="number"==typeof u?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...u};return a&&"number"==typeof f&&(h="end"===a?-1*f:f),c?{x:h*l,y:p*d}:{x:p*d,y:h*l}}(t,e);return o===(null==(r=a.offset)?void 0:r.placement)&&null!=(n=a.arrow)&&n.alignmentOffset?{}:{x:i+c.x,y:s+c.y,data:{...c,placement:o}}}}},UR=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:r,y:n,placement:i}=t,{mainAxis:s=!0,crossAxis:o=!1,limiter:a={fn:e=>{let{x:t,y:r}=e;return{x:t,y:r}}},...c}=HC(e,t),d={x:r,y:n},l=await iR(t,c),u=YC(WC(i)),p=JC(u);let h=d[p],f=d[u];if(s){const e="y"===p?"bottom":"right";h=qC(h+l["y"===p?"top":"left"],h,h-l[e])}if(o){const e="y"===u?"bottom":"right";f=qC(f+l["y"===u?"top":"left"],f,f-l[e])}const m=a.fn({...t,[p]:h,[u]:f});return{...m,data:{x:m.x-r,y:m.y-n}}}}},$R=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var r,n;const{placement:i,middlewareData:s,rects:o,initialPlacement:a,platform:c,elements:d}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:p,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:m=!0,...g}=HC(e,t);if(null!=(r=s.arrow)&&r.alignmentOffset)return{};const v=WC(i),b=WC(a)===a,y=await(null==c.isRTL?void 0:c.isRTL(d.floating)),_=p||(b||!m?[eR(a)]:function(e){const t=eR(e);return[XC(e),t,XC(t)]}(a));p||"none"===f||_.push(...function(e,t,r,n){const i=KC(e);let s=function(e,t,r){const n=["left","right"],i=["right","left"],s=["top","bottom"],o=["bottom","top"];switch(e){case"top":case"bottom":return r?t?i:n:t?n:i;case"left":case"right":return t?s:o;default:return[]}}(WC(e),"start"===r,n);return i&&(s=s.map((e=>e+"-"+i)),t&&(s=s.concat(s.map(XC)))),s}(a,m,f,y));const w=[a,..._],S=await iR(t,g),C=[];let R=(null==(n=s.flip)?void 0:n.overflows)||[];if(l&&C.push(S[v]),u){const e=function(e,t,r){void 0===r&&(r=!1);const n=KC(e),i=ZC(e),s=QC(i);let o="x"===i?n===(r?"end":"start")?"right":"left":"start"===n?"bottom":"top";return t.reference[s]>t.floating[s]&&(o=eR(o)),[o,eR(o)]}(i,o,y);C.push(S[e[0]],S[e[1]])}if(R=[...R,{placement:i,overflows:C}],!C.every((e=>e<=0))){var P,T;const e=((null==(P=s.flip)?void 0:P.index)||0)+1,t=w[e];if(t)return{data:{index:e,overflows:R},reset:{placement:t}};let r=null==(T=R.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:T.placement;if(!r)switch(h){case"bestFit":{var k;const e=null==(k=R.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:k[0];e&&(r=e);break}case"initialPlacement":r=a}if(i!==r)return{reset:{placement:r}}}return{}}}},GR=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){const{placement:r,rects:n,platform:i,elements:s}=t,{apply:o=(()=>{}),...a}=HC(e,t),c=await iR(t,a),d=WC(r),l=KC(r),u="y"===YC(r),{width:p,height:h}=n.floating;let f,m;"top"===d||"bottom"===d?(f=d,m=l===(await(null==i.isRTL?void 0:i.isRTL(s.floating))?"start":"end")?"left":"right"):(m=d,f="end"===l?"top":"bottom");const g=h-c.top-c.bottom,v=p-c.left-c.right,b=BC(h-c[f],g),y=BC(p-c[m],v),_=!t.middlewareData.shift;let w=b,S=y;if(u?S=l||_?BC(y,v):v:w=l||_?BC(b,g):g,_&&!l){const e=FC(c.left,0),t=FC(c.right,0),r=FC(c.top,0),n=FC(c.bottom,0);u?S=p-2*(0!==e||0!==t?e+t:FC(c.left,c.right)):w=h-2*(0!==r||0!==n?r+n:FC(c.top,c.bottom))}await o({...t,availableWidth:S,availableHeight:w});const C=await i.getDimensions(s.floating);return p!==C.width||h!==C.height?{reset:{rects:!0}}:{}}}},qR=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:r}=t,{strategy:n="referenceHidden",...i}=HC(e,t);switch(n){case"referenceHidden":{const e=sR(await iR(t,{...i,elementContext:"reference"}),r.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:oR(e)}}}case"escaped":{const e=sR(await iR(t,{...i,altBoundary:!0}),r.floating);return{data:{escapedOffsets:e,escaped:oR(e)}}}default:return{}}}}},HR=e=>({name:"arrow",options:e,async fn(t){const{x:r,y:n,placement:i,rects:s,platform:o,elements:a,middlewareData:c}=t,{element:d,padding:l=0}=HC(e,t)||{};if(null==d)return{};const u=tR(l),p={x:r,y:n},h=ZC(i),f=QC(h),m=await o.getDimensions(d),g="y"===h,v=g?"top":"left",b=g?"bottom":"right",y=g?"clientHeight":"clientWidth",_=s.reference[f]+s.reference[h]-p[h]-s.floating[f],w=p[h]-s.reference[h],S=await(null==o.getOffsetParent?void 0:o.getOffsetParent(d));let C=S?S[y]:0;C&&await(null==o.isElement?void 0:o.isElement(S))||(C=a.floating[y]||s.floating[f]);const R=_/2-w/2,P=C/2-m[f]/2-1,T=BC(u[v],P),k=BC(u[b],P),E=T,O=C-m[f]-k,D=C/2-m[f]/2+R,I=qC(E,D,O),x=!c.arrow&&null!=KC(i)&&D!==I&&s.reference[f]/2-(D<E?T:k)-m[f]/2<0,M=x?D<E?D-E:D-O:0;return{[h]:p[h]+M,data:{[h]:I,centerOffset:D-I-M,...x&&{alignmentOffset:M}},reset:x}}}),WR=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:r,y:n,placement:i,rects:s,middlewareData:o}=t,{offset:a=0,mainAxis:c=!0,crossAxis:d=!0}=HC(e,t),l={x:r,y:n},u=YC(i),p=JC(u);let h=l[p],f=l[u];const m=HC(a,t),g="number"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(c){const e="y"===p?"height":"width",t=s.reference[p]-s.floating[e]+g.mainAxis,r=s.reference[p]+s.reference[e]-g.mainAxis;h<t?h=t:h>r&&(h=r)}if(d){var v,b;const e="y"===p?"width":"height",t=["top","left"].includes(WC(i)),r=s.reference[u]-s.floating[e]+(t&&(null==(v=o.offset)?void 0:v[u])||0)+(t?0:g.crossAxis),n=s.reference[u]+s.reference[e]+(t?0:(null==(b=o.offset)?void 0:b[u])||0)-(t?g.crossAxis:0);f<r?f=r:f>n&&(f=n)}return{[p]:h,[u]:f}}}},KR=(e,t,r)=>{const n=new Map,i={platform:FR,...r},s={...i.platform,_c:n};return(async(e,t,r)=>{const{placement:n="bottom",strategy:i="absolute",middleware:s=[],platform:o}=r,a=s.filter(Boolean),c=await(null==o.isRTL?void 0:o.isRTL(t));let d=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:l,y:u}=nR(d,n,c),p=n,h={},f=0;for(let r=0;r<a.length;r++){const{name:s,fn:m}=a[r],{x:g,y:v,data:b,reset:y}=await m({x:l,y:u,initialPlacement:n,placement:p,strategy:i,middlewareData:h,rects:d,platform:o,elements:{reference:e,floating:t}});l=null!=g?g:l,u=null!=v?v:u,h={...h,[s]:{...h[s],...b}},y&&f<=50&&(f++,"object"==typeof y&&(y.placement&&(p=y.placement),y.rects&&(d=!0===y.rects?await o.getElementRects({reference:e,floating:t,strategy:i}):y.rects),({x:l,y:u}=nR(d,p,c))),r=-1)}return{x:l,y:u,placement:p,strategy:i,middlewareData:h}})(e,t,{...i,platform:s})};var JR="undefined"!=typeof document?t.useLayoutEffect:t.useEffect;function QR(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let r,n,i;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(r=e.length,r!==t.length)return!1;for(n=r;0!=n--;)if(!QR(e[n],t[n]))return!1;return!0}if(i=Object.keys(e),r=i.length,r!==Object.keys(t).length)return!1;for(n=r;0!=n--;)if(!{}.hasOwnProperty.call(t,i[n]))return!1;for(n=r;0!=n--;){const r=i[n];if(("_owner"!==r||!e.$$typeof)&&!QR(e[r],t[r]))return!1}return!0}return e!=e&&t!=t}function YR(e){if("undefined"==typeof window)return 1;return(e.ownerDocument.defaultView||window).devicePixelRatio||1}function ZR(e,t){const r=YR(e);return Math.round(t*r)/r}function XR(e){const t=s.useRef(e);return JR((()=>{t.current=e})),t}const eP=e=>({name:"arrow",options:e,fn(t){const{element:r,padding:n}="function"==typeof e?e(t):e;return r&&function(e){return{}.hasOwnProperty.call(e,"current")}(r)?null!=r.current?HR({element:r.current,padding:n}).fn(t):{}:r?HR({element:r,padding:n}).fn(t):{}}}),tP=(e,t)=>({...VR(e),options:[e,t]}),rP=(e,t)=>({...UR(e),options:[e,t]}),nP=(e,t)=>({...WR(e),options:[e,t]}),iP=(e,t)=>({...$R(e),options:[e,t]}),sP=(e,t)=>({...GR(e),options:[e,t]}),oP=(e,t)=>({...qR(e),options:[e,t]}),aP=(e,t)=>({...eP(e),options:[e,t]});const cP="Popper",[dP,lP]=iC(cP),[uP,pP]=dP(cP),hP=t.forwardRef(((e,r)=>{const{__scopePopper:n,virtualRef:i,...s}=e,o=pP("PopperAnchor",n),a=t.useRef(null),c=nC(r,a);return t.useEffect((()=>{o.onAnchorChange((null==i?void 0:i.current)||a.current)})),i?null:t.createElement(uC.div,eC({},s,{ref:c}))})),fP="PopperContent",[mP,gP]=dP(fP),vP=t.forwardRef(((e,r)=>{var n,i,a,c,d,l,u,p;const{__scopePopper:h,side:f="bottom",sideOffset:m=0,align:g="center",alignOffset:v=0,arrowPadding:b=0,avoidCollisions:y=!0,collisionBoundary:_=[],collisionPadding:w=0,sticky:S="partial",hideWhenDetached:C=!1,updatePositionStrategy:R="optimized",onPlaced:P,...T}=e,k=pP(fP,h),[E,O]=t.useState(null),D=nC(r,(e=>O(e))),[I,x]=t.useState(null),M=function(e){const[r,n]=t.useState(void 0);return MC((()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const t=new ResizeObserver((t=>{if(!Array.isArray(t))return;if(!t.length)return;const r=t[0];let i,s;if("borderBoxSize"in r){const e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,s=t.blockSize}else i=e.offsetWidth,s=e.offsetHeight;n({width:i,height:s})}));return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)}),[e]),r}(I),j=null!==(n=null==M?void 0:M.width)&&void 0!==n?n:0,L=null!==(i=null==M?void 0:M.height)&&void 0!==i?i:0,A=f+("center"!==g?"-"+g:""),N="number"==typeof w?w:{top:0,right:0,bottom:0,left:0,...w},B=Array.isArray(_)?_:[_],F=B.length>0,z={padding:N,boundary:B.filter(bP),altBoundary:F},{refs:V,floatingStyles:U,placement:$,isPositioned:G,middlewareData:q}=function(e){void 0===e&&(e={});const{placement:t="bottom",strategy:r="absolute",middleware:n=[],platform:i,elements:{reference:a,floating:c}={},transform:d=!0,whileElementsMounted:l,open:u}=e,[p,h]=s.useState({x:0,y:0,strategy:r,placement:t,middlewareData:{},isPositioned:!1}),[f,m]=s.useState(n);QR(f,n)||m(n);const[g,v]=s.useState(null),[b,y]=s.useState(null),_=s.useCallback((e=>{e!==R.current&&(R.current=e,v(e))}),[]),w=s.useCallback((e=>{e!==P.current&&(P.current=e,y(e))}),[]),S=a||g,C=c||b,R=s.useRef(null),P=s.useRef(null),T=s.useRef(p),k=null!=l,E=XR(l),O=XR(i),D=s.useCallback((()=>{if(!R.current||!P.current)return;const e={placement:t,strategy:r,middleware:f};O.current&&(e.platform=O.current),KR(R.current,P.current,e).then((e=>{const t={...e,isPositioned:!0};I.current&&!QR(T.current,t)&&(T.current=t,o.flushSync((()=>{h(t)})))}))}),[f,t,r,O]);JR((()=>{!1===u&&T.current.isPositioned&&(T.current.isPositioned=!1,h((e=>({...e,isPositioned:!1}))))}),[u]);const I=s.useRef(!1);JR((()=>(I.current=!0,()=>{I.current=!1})),[]),JR((()=>{if(S&&(R.current=S),C&&(P.current=C),S&&C){if(E.current)return E.current(S,C,D);D()}}),[S,C,D,E,k]);const x=s.useMemo((()=>({reference:R,floating:P,setReference:_,setFloating:w})),[_,w]),M=s.useMemo((()=>({reference:S,floating:C})),[S,C]),j=s.useMemo((()=>{const e={position:r,left:0,top:0};if(!M.floating)return e;const t=ZR(M.floating,p.x),n=ZR(M.floating,p.y);return d?{...e,transform:"translate("+t+"px, "+n+"px)",...YR(M.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:t,top:n}}),[r,d,M.floating,p.x,p.y]);return s.useMemo((()=>({...p,update:D,refs:x,elements:M,floatingStyles:j})),[p,D,x,M,j])}({strategy:"fixed",placement:A,whileElementsMounted:(...e)=>zR(...e,{animationFrame:"always"===R}),elements:{reference:k.anchor},middleware:[tP({mainAxis:m+L,alignmentAxis:v}),y&&rP({mainAxis:!0,crossAxis:!1,limiter:"partial"===S?nP():void 0,...z}),y&&iP({...z}),sP({...z,apply:({elements:e,rects:t,availableWidth:r,availableHeight:n})=>{const{width:i,height:s}=t.reference,o=e.floating.style;o.setProperty("--radix-popper-available-width",`${r}px`),o.setProperty("--radix-popper-available-height",`${n}px`),o.setProperty("--radix-popper-anchor-width",`${i}px`),o.setProperty("--radix-popper-anchor-height",`${s}px`)}}),I&&aP({element:I,padding:b}),yP({arrowWidth:j,arrowHeight:L}),C&&oP({strategy:"referenceHidden",...z})]}),[H,W]=_P($),K=pC(P);MC((()=>{G&&(null==K||K())}),[G,K]);const J=null===(a=q.arrow)||void 0===a?void 0:a.x,Q=null===(c=q.arrow)||void 0===c?void 0:c.y,Y=0!==(null===(d=q.arrow)||void 0===d?void 0:d.centerOffset),[Z,X]=t.useState();return MC((()=>{E&&X(window.getComputedStyle(E).zIndex)}),[E]),t.createElement("div",{ref:V.setFloating,"data-radix-popper-content-wrapper":"",style:{...U,transform:G?U.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Z,"--radix-popper-transform-origin":[null===(l=q.transformOrigin)||void 0===l?void 0:l.x,null===(u=q.transformOrigin)||void 0===u?void 0:u.y].join(" ")},dir:e.dir},t.createElement(mP,{scope:h,placedSide:H,onArrowChange:x,arrowX:J,arrowY:Q,shouldHideArrow:Y},t.createElement(uC.div,eC({"data-side":H,"data-align":W},T,{ref:D,style:{...T.style,animation:G?void 0:"none",opacity:null!==(p=q.hide)&&void 0!==p&&p.referenceHidden?0:void 0}}))))}));function bP(e){return null!==e}const yP=e=>({name:"transformOrigin",options:e,fn(t){var r,n,i,s,o;const{placement:a,rects:c,middlewareData:d}=t,l=0!==(null===(r=d.arrow)||void 0===r?void 0:r.centerOffset),u=l?0:e.arrowWidth,p=l?0:e.arrowHeight,[h,f]=_P(a),m={start:"0%",center:"50%",end:"100%"}[f],g=(null!==(n=null===(i=d.arrow)||void 0===i?void 0:i.x)&&void 0!==n?n:0)+u/2,v=(null!==(s=null===(o=d.arrow)||void 0===o?void 0:o.y)&&void 0!==s?s:0)+p/2;let b="",y="";return"bottom"===h?(b=l?m:`${g}px`,y=-p+"px"):"top"===h?(b=l?m:`${g}px`,y=`${c.floating.height+p}px`):"right"===h?(b=-p+"px",y=l?m:`${v}px`):"left"===h&&(b=`${c.floating.width+p}px`,y=l?m:`${v}px`),{data:{x:b,y:y}}}});function _P(e){const[t,r="center"]=e.split("-");return[t,r]}const wP=e=>{const{__scopePopper:r,children:n}=e,[i,s]=t.useState(null);return t.createElement(uP,{scope:r,anchor:i,onAnchorChange:s},n)},SP=hP,CP=vP,RP=t.forwardRef(((e,n)=>{var i;const{container:s=(null===globalThis||void 0===globalThis||null===(i=globalThis.document)||void 0===i?void 0:i.body),...o}=e;return s?r.createPortal(t.createElement(uC.div,eC({},o,{ref:n})),s):null}));const PP=e=>{const{present:n,children:i}=e,s=function(e){const[n,i]=t.useState(),s=t.useRef({}),o=t.useRef(e),a=t.useRef("none"),c=e?"mounted":"unmounted",[d,l]=function(e,r){return t.useReducer(((e,t)=>{const n=r[e][t];return null!=n?n:e}),e)}(c,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return t.useEffect((()=>{const e=TP(s.current);a.current="mounted"===d?e:"none"}),[d]),MC((()=>{const t=s.current,r=o.current;if(r!==e){const n=a.current,i=TP(t);if(e)l("MOUNT");else if("none"===i||"none"===(null==t?void 0:t.display))l("UNMOUNT");else{l(r&&n!==i?"ANIMATION_OUT":"UNMOUNT")}o.current=e}}),[e,l]),MC((()=>{if(n){const e=e=>{const t=TP(s.current).includes(e.animationName);e.target===n&&t&&r.flushSync((()=>l("ANIMATION_END")))},t=e=>{e.target===n&&(a.current=TP(s.current))};return n.addEventListener("animationstart",t),n.addEventListener("animationcancel",e),n.addEventListener("animationend",e),()=>{n.removeEventListener("animationstart",t),n.removeEventListener("animationcancel",e),n.removeEventListener("animationend",e)}}l("ANIMATION_END")}),[n,l]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:t.useCallback((e=>{e&&(s.current=getComputedStyle(e)),i(e)}),[])}}(n),o="function"==typeof i?i({present:s.isPresent}):t.Children.only(i),a=nC(s.ref,o.ref);return"function"==typeof i||s.isPresent?t.cloneElement(o,{ref:a}):null};function TP(e){return(null==e?void 0:e.animationName)||"none"}function kP({prop:e,defaultProp:r,onChange:n=(()=>{})}){const[i,s]=function({defaultProp:e,onChange:r}){const n=t.useState(e),[i]=n,s=t.useRef(i),o=pC(r);return t.useEffect((()=>{s.current!==i&&(o(i),s.current=i)}),[i,s,o]),n}({defaultProp:r,onChange:n}),o=void 0!==e,a=o?e:i,c=pC(n),d=t.useCallback((t=>{if(o){const r="function"==typeof t?t(e):t;r!==e&&c(r)}else s(t)}),[o,e,s,c]);return[a,d]}PP.displayName="Presence";var EP=new WeakMap,OP=new WeakMap,DP={},IP=0,xP=function(e){return e&&(e.host||xP(e.parentNode))},MP=function(e,t,r,n){var i=function(e,t){return t.map((function(t){if(e.contains(t))return t;var r=xP(t);return r&&e.contains(r)?r:(console.error("aria-hidden",t,"in not contained inside",e,". Doing nothing"),null)})).filter((function(e){return Boolean(e)}))}(t,Array.isArray(e)?e:[e]);DP[r]||(DP[r]=new WeakMap);var s=DP[r],o=[],a=new Set,c=new Set(i),d=function(e){e&&!a.has(e)&&(a.add(e),d(e.parentNode))};i.forEach(d);var l=function(e){e&&!c.has(e)&&Array.prototype.forEach.call(e.children,(function(e){if(a.has(e))l(e);else try{var t=e.getAttribute(n),i=null!==t&&"false"!==t,c=(EP.get(e)||0)+1,d=(s.get(e)||0)+1;EP.set(e,c),s.set(e,d),o.push(e),1===c&&i&&OP.set(e,!0),1===d&&e.setAttribute(r,"true"),i||e.setAttribute(n,"true")}catch(t){console.error("aria-hidden: cannot operate on ",e,t)}}))};return l(t),a.clear(),IP++,function(){o.forEach((function(e){var t=EP.get(e)-1,i=s.get(e)-1;EP.set(e,t),s.set(e,i),t||(OP.has(e)||e.removeAttribute(n),OP.delete(e)),i||e.removeAttribute(r)})),--IP||(EP=new WeakMap,EP=new WeakMap,OP=new WeakMap,DP={})}},jP=function(e,t,r){void 0===r&&(r="data-aria-hidden");var n=Array.from(Array.isArray(e)?e:[e]),i=t||function(e){return"undefined"==typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body}(e);return i?(n.push.apply(n,Array.from(i.querySelectorAll("[aria-live]"))),MP(n,i,r,"aria-hidden")):function(){return null}},LP="right-scroll-bar-position",AP="width-before-scroll-bar";function NP(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var BP=new WeakMap;function FP(e,r){var n,i,o,a=(n=r||null,i=function(t){return e.forEach((function(e){return NP(e,t)}))},o=t.useState((function(){return{value:n,callback:i,facade:{get current(){return o.value},set current(e){var t=o.value;t!==e&&(o.value=e,o.callback(e,t))}}}}))[0],o.callback=i,o.facade);return s.useLayoutEffect((function(){var t=BP.get(a);if(t){var r=new Set(t),n=new Set(e),i=a.current;r.forEach((function(e){n.has(e)||NP(e,null)})),n.forEach((function(e){r.has(e)||NP(e,i)}))}BP.set(a,e)}),[e]),a}function zP(e){return e}var VP=function(e){var t=e.sideCar,r=xw(e,["sideCar"]);if(!t)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var n=t.read();if(!n)throw new Error("Sidecar medium not found");return s.createElement(n,Iw({},r))};VP.isSideCarExport=!0;var UP=function(e){void 0===e&&(e={});var t=function(e,t){void 0===t&&(t=zP);var r=[],n=!1;return{read:function(){if(n)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return r.length?r[r.length-1]:e},useMedium:function(e){var i=t(e,n);return r.push(i),function(){r=r.filter((function(e){return e!==i}))}},assignSyncMedium:function(e){for(n=!0;r.length;){var t=r;r=[],t.forEach(e)}r={push:function(t){return e(t)},filter:function(){return r}}},assignMedium:function(e){n=!0;var t=[];if(r.length){var i=r;r=[],i.forEach(e),t=r}var s=function(){var r=t;t=[],r.forEach(e)},o=function(){return Promise.resolve().then(s)};o(),r={push:function(e){t.push(e),o()},filter:function(e){return t=t.filter(e),r}}}}}(null);return t.options=Iw({async:!0,ssr:!1},e),t}(),$P=function(){},GP=s.forwardRef((function(e,t){var r=s.useRef(null),n=s.useState({onScrollCapture:$P,onWheelCapture:$P,onTouchMoveCapture:$P}),i=n[0],o=n[1],a=e.forwardProps,c=e.children,d=e.className,l=e.removeScrollBar,u=e.enabled,p=e.shards,h=e.sideCar,f=e.noIsolation,m=e.inert,g=e.allowPinchZoom,v=e.as,b=void 0===v?"div":v,y=xw(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as"]),_=h,w=FP([r,t]),S=Iw(Iw({},y),i);return s.createElement(s.Fragment,null,u&&s.createElement(_,{sideCar:UP,removeScrollBar:l,shards:p,noIsolation:f,inert:m,setCallbacks:o,allowPinchZoom:!!g,lockRef:r}),a?s.cloneElement(s.Children.only(c),Iw(Iw({},S),{ref:w})):s.createElement(b,Iw({},S,{className:d,ref:w}),c))}));GP.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},GP.classNames={fullWidth:AP,zeroRight:LP};function qP(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=function(){if("undefined"!=typeof __webpack_nonce__)return __webpack_nonce__}();return t&&e.setAttribute("nonce",t),e}var HP=function(){var e=0,t=null;return{add:function(r){var n,i;0==e&&(t=qP())&&(i=r,(n=t).styleSheet?n.styleSheet.cssText=i:n.appendChild(document.createTextNode(i)),function(e){(document.head||document.getElementsByTagName("head")[0]).appendChild(e)}(t)),e++},remove:function(){! --e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},WP=function(){var e,t=(e=HP(),function(t,r){s.useEffect((function(){return e.add(t),function(){e.remove()}}),[t&&r])});return function(e){var r=e.styles,n=e.dynamic;return t(r,n),null}},KP={left:0,top:0,right:0,gap:0},JP=function(e){return parseInt(e||"",10)||0},QP=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return KP;var t=function(e){var t=window.getComputedStyle(document.body),r=t["padding"===e?"paddingLeft":"marginLeft"],n=t["padding"===e?"paddingTop":"marginTop"],i=t["padding"===e?"paddingRight":"marginRight"];return[JP(r),JP(n),JP(i)]}(e),r=document.documentElement.clientWidth,n=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,n-r+t[2]-t[0])}},YP=WP(),ZP="data-scroll-locked",XP=function(e,t,r,n){var i=e.left,s=e.top,o=e.right,a=e.gap;return void 0===r&&(r="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(n,";\n padding-right: ").concat(a,"px ").concat(n,";\n }\n body[").concat(ZP,"] {\n overflow: hidden ").concat(n,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(n,";"),"margin"===r&&"\n padding-left: ".concat(i,"px;\n padding-top: ").concat(s,"px;\n padding-right: ").concat(o,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(a,"px ").concat(n,";\n "),"padding"===r&&"padding-right: ".concat(a,"px ").concat(n,";")].filter(Boolean).join(""),"\n }\n \n .").concat(LP," {\n right: ").concat(a,"px ").concat(n,";\n }\n \n .").concat(AP," {\n margin-right: ").concat(a,"px ").concat(n,";\n }\n \n .").concat(LP," .").concat(LP," {\n right: 0 ").concat(n,";\n }\n \n .").concat(AP," .").concat(AP," {\n margin-right: 0 ").concat(n,";\n }\n \n body[").concat(ZP,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(a,"px;\n }\n")},eT=function(){var e=parseInt(document.body.getAttribute(ZP)||"0",10);return isFinite(e)?e:0},tT=function(e){var t=e.noRelative,r=e.noImportant,n=e.gapMode,i=void 0===n?"margin":n;s.useEffect((function(){return document.body.setAttribute(ZP,(eT()+1).toString()),function(){var e=eT()-1;e<=0?document.body.removeAttribute(ZP):document.body.setAttribute(ZP,e.toString())}}),[]);var o=s.useMemo((function(){return QP(i)}),[i]);return s.createElement(YP,{styles:XP(o,!t,i,r?"":"!important")})},rT=!1;if("undefined"!=typeof window)try{var nT=Object.defineProperty({},"passive",{get:function(){return rT=!0,!0}});window.addEventListener("test",nT,nT),window.removeEventListener("test",nT,nT)}catch(ak){rT=!1}var iT=!!rT&&{passive:!1},sT=function(e,t){var r=window.getComputedStyle(e);return"hidden"!==r[t]&&!(r.overflowY===r.overflowX&&!function(e){return"TEXTAREA"===e.tagName}(e)&&"visible"===r[t])},oT=function(e,t){var r=t;do{if("undefined"!=typeof ShadowRoot&&r instanceof ShadowRoot&&(r=r.host),aT(e,r)){var n=cT(e,r);if(n[1]>n[2])return!0}r=r.parentNode}while(r&&r!==document.body);return!1},aT=function(e,t){return"v"===e?function(e){return sT(e,"overflowY")}(t):function(e){return sT(e,"overflowX")}(t)},cT=function(e,t){return"v"===e?function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]}(t):function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]}(t)},dT=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},lT=function(e){return[e.deltaX,e.deltaY]},uT=function(e){return e&&"current"in e?e.current:e},pT=function(e){return"\n .block-interactivity-".concat(e," {pointer-events: none;}\n .allow-interactivity-").concat(e," {pointer-events: all;}\n")},hT=0,fT=[];var mT,gT=(mT=function(e){var t=s.useRef([]),r=s.useRef([0,0]),n=s.useRef(),i=s.useState(hT++)[0],o=s.useState((function(){return WP()}))[0],a=s.useRef(e);s.useEffect((function(){a.current=e}),[e]),s.useEffect((function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var t=function(e,t,r){if(r||2===arguments.length)for(var n,i=0,s=t.length;i<s;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))}([e.lockRef.current],(e.shards||[]).map(uT),!0).filter(Boolean);return t.forEach((function(e){return e.classList.add("allow-interactivity-".concat(i))})),function(){document.body.classList.remove("block-interactivity-".concat(i)),t.forEach((function(e){return e.classList.remove("allow-interactivity-".concat(i))}))}}}),[e.inert,e.lockRef.current,e.shards]);var c=s.useCallback((function(e,t){if("touches"in e&&2===e.touches.length)return!a.current.allowPinchZoom;var i,s=dT(e),o=r.current,c="deltaX"in e?e.deltaX:o[0]-s[0],d="deltaY"in e?e.deltaY:o[1]-s[1],l=e.target,u=Math.abs(c)>Math.abs(d)?"h":"v";if("touches"in e&&"h"===u&&"range"===l.type)return!1;var p=oT(u,l);if(!p)return!0;if(p?i=u:(i="v"===u?"h":"v",p=oT(u,l)),!p)return!1;if(!n.current&&"changedTouches"in e&&(c||d)&&(n.current=i),!i)return!0;var h=n.current||i;return function(e,t,r,n,i){var s=function(e,t){return"h"===e&&"rtl"===t?-1:1}(e,window.getComputedStyle(t).direction),o=s*n,a=r.target,c=t.contains(a),d=!1,l=o>0,u=0,p=0;do{var h=cT(e,a),f=h[0],m=h[1]-h[2]-s*f;(f||m)&&aT(e,a)&&(u+=m,p+=f),a=a.parentNode}while(!c&&a!==document.body||c&&(t.contains(a)||t===a));return(l&&(i&&0===u||!i&&o>u)||!l&&(i&&0===p||!i&&-o>p))&&(d=!0),d}(h,t,e,"h"===h?c:d,!0)}),[]),d=s.useCallback((function(e){var r=e;if(fT.length&&fT[fT.length-1]===o){var n="deltaY"in r?lT(r):dT(r),i=t.current.filter((function(e){return e.name===r.type&&e.target===r.target&&(t=e.delta,i=n,t[0]===i[0]&&t[1]===i[1]);var t,i}))[0];if(i&&i.should)r.cancelable&&r.preventDefault();else if(!i){var s=(a.current.shards||[]).map(uT).filter(Boolean).filter((function(e){return e.contains(r.target)}));(s.length>0?c(r,s[0]):!a.current.noIsolation)&&r.cancelable&&r.preventDefault()}}}),[]),l=s.useCallback((function(e,r,n,i){var s={name:e,delta:r,target:n,should:i};t.current.push(s),setTimeout((function(){t.current=t.current.filter((function(e){return e!==s}))}),1)}),[]),u=s.useCallback((function(e){r.current=dT(e),n.current=void 0}),[]),p=s.useCallback((function(t){l(t.type,lT(t),t.target,c(t,e.lockRef.current))}),[]),h=s.useCallback((function(t){l(t.type,dT(t),t.target,c(t,e.lockRef.current))}),[]);s.useEffect((function(){return fT.push(o),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:h}),document.addEventListener("wheel",d,iT),document.addEventListener("touchmove",d,iT),document.addEventListener("touchstart",u,iT),function(){fT=fT.filter((function(e){return e!==o})),document.removeEventListener("wheel",d,iT),document.removeEventListener("touchmove",d,iT),document.removeEventListener("touchstart",u,iT)}}),[]);var f=e.removeScrollBar,m=e.inert;return s.createElement(s.Fragment,null,m?s.createElement(o,{styles:pT(i)}):null,f?s.createElement(tT,{gapMode:"margin"}):null)},UP.useMedium(mT),VP),vT=s.forwardRef((function(e,t){return s.createElement(GP,Iw({},e,{ref:t,sideCar:gT}))}));vT.classNames=GP.classNames;var bT=vT;const yT="Popover",[_T,wT]=iC(yT,[lP]),ST=lP(),[CT,RT]=_T(yT),PT=t.forwardRef(((e,r)=>{const{__scopePopover:n,...i}=e,s=RT("PopoverTrigger",n),o=ST(n),a=nC(r,s.triggerRef),c=t.createElement(uC.button,eC({type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":jT(s.open)},i,{ref:a,onClick:tC(e.onClick,s.onOpenToggle)}));return s.hasCustomAnchor?c:t.createElement(SP,eC({asChild:!0},o),c)})),TT="PopoverPortal",[kT,ET]=_T(TT,{forceMount:void 0}),OT="PopoverContent",DT=t.forwardRef(((e,r)=>{const n=ET(OT,e.__scopePopover),{forceMount:i=n.forceMount,...s}=e,o=RT(OT,e.__scopePopover);return t.createElement(PP,{present:i||o.open},o.modal?t.createElement(IT,eC({},s,{ref:r})):t.createElement(xT,eC({},s,{ref:r})))})),IT=t.forwardRef(((e,r)=>{const n=RT(OT,e.__scopePopover),i=t.useRef(null),s=nC(r,i),o=t.useRef(!1);return t.useEffect((()=>{const e=i.current;if(e)return jP(e)}),[]),t.createElement(bT,{as:oC,allowPinchZoom:!0},t.createElement(MT,eC({},e,{ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:tC(e.onCloseAutoFocus,(e=>{var t;e.preventDefault(),o.current||null===(t=n.triggerRef.current)||void 0===t||t.focus()})),onPointerDownOutside:tC(e.onPointerDownOutside,(e=>{const t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey,n=2===t.button||r;o.current=n}),{checkForDefaultPrevented:!1}),onFocusOutside:tC(e.onFocusOutside,(e=>e.preventDefault()),{checkForDefaultPrevented:!1})})))})),xT=t.forwardRef(((e,r)=>{const n=RT(OT,e.__scopePopover),i=t.useRef(!1),s=t.useRef(!1);return t.createElement(MT,eC({},e,{ref:r,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var r,o;(null===(r=e.onCloseAutoFocus)||void 0===r||r.call(e,t),t.defaultPrevented)||(i.current||null===(o=n.triggerRef.current)||void 0===o||o.focus(),t.preventDefault());i.current=!1,s.current=!1},onInteractOutside:t=>{var r,o;null===(r=e.onInteractOutside)||void 0===r||r.call(e,t),t.defaultPrevented||(i.current=!0,"pointerdown"===t.detail.originalEvent.type&&(s.current=!0));const a=t.target;(null===(o=n.triggerRef.current)||void 0===o?void 0:o.contains(a))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&s.current&&t.preventDefault()}}))})),MT=t.forwardRef(((e,r)=>{const{__scopePopover:n,trapFocus:i,onOpenAutoFocus:s,onCloseAutoFocus:o,disableOutsidePointerEvents:a,onEscapeKeyDown:c,onPointerDownOutside:d,onFocusOutside:l,onInteractOutside:u,...p}=e,h=RT(OT,n),f=ST(n);return t.useEffect((()=>{var e,t;const r=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",null!==(e=r[0])&&void 0!==e?e:SC()),document.body.insertAdjacentElement("beforeend",null!==(t=r[1])&&void 0!==t?t:SC()),wC++,()=>{1===wC&&document.querySelectorAll("[data-radix-focus-guard]").forEach((e=>e.remove())),wC--}}),[]),t.createElement(TC,{asChild:!0,loop:!0,trapped:i,onMountAutoFocus:s,onUnmountAutoFocus:o},t.createElement(bC,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:u,onEscapeKeyDown:c,onPointerDownOutside:d,onFocusOutside:l,onDismiss:()=>h.onOpenChange(!1)},t.createElement(CP,eC({"data-state":jT(h.open),role:"dialog",id:h.contentId},f,p,{ref:r,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}}))))}));function jT(e){return e?"open":"closed"}const LT=e=>{const{__scopePopover:r,forceMount:n,children:i,container:s}=e,o=RT(TT,r);return t.createElement(kT,{scope:r,forceMount:n},t.createElement(PP,{present:n||o.open},t.createElement(RP,{asChild:!0,container:s},i)))},AT=DT,NT=e=>{const{__scopePopover:r,children:n,open:i,defaultOpen:s,onOpenChange:o,modal:a=!1}=e,c=ST(r),d=t.useRef(null),[l,u]=t.useState(!1),[p=!1,h]=kP({prop:i,defaultProp:s,onChange:o});return t.createElement(wP,c,t.createElement(CT,{scope:r,contentId:AC(),triggerRef:d,open:p,onOpenChange:h,onOpenToggle:t.useCallback((()=>h((e=>!e))),[h]),hasCustomAnchor:l,onCustomAnchorAdd:t.useCallback((()=>u(!0)),[]),onCustomAnchorRemove:t.useCallback((()=>u(!1)),[]),modal:a},n))},BT=PT,FT=s.forwardRef(((e,t)=>{var{style:r,align:n="center",sideOffset:i=4}=e,o=xw(e,["style","align","sideOffset"]);return s.createElement(LT,null,s.createElement(AT,Object.assign({ref:t,align:n,sideOffset:i,style:Object.assign({width:"200px",backgroundColor:"#fff",border:"1px solid #e5e5e5",borderRadius:"0.375rem",boxShadow:"0 1px 2px 0 rgb(0 0 0 / 0.05)",color:"#333",fontSize:"14px",lineHeight:"1.5",padding:"16px",zIndex:50,outline:"none"},r)},o)))}));FT.displayName=AT.displayName;const zT=s.createContext({}),VT=s.createContext({}),UT=()=>{const e=s.useContext(zT),t=s.useContext(VT);if(!t)throw new Error("useGridCell must be used within a GridCell");return Object.assign(Object.assign({},e),t)},$T=s.createContext({}),GT=e=>{const{children:t}=e,r=xw(e,["children"]),[n,i]=s.useState(!1);return s.createElement($T.Provider,{value:{open:n,setOpen:i}},s.createElement(NT,Object.assign({},r,{open:n,onOpenChange:i}),t))},qT=s.forwardRef(((e,t)=>{var{children:r,style:n}=e,i=xw(e,["children","style"]);return s.createElement(FT,Object.assign({ref:t,style:Object.assign({display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",minWidth:"180px",maxWidth:"300px",maxHeight:"100vh",overflowY:"auto",padding:0},n)},i),r)}));qT.displayName="ParticipantMenuContent";const HT=s.forwardRef(((e,t)=>{var{children:r,style:n}=e,i=xw(e,["children","style"]);return s.createElement(BT,Object.assign({ref:t,style:Object.assign({position:"absolute",top:"10px",right:"20px",textDecoration:"none",whiteSpace:"nowrap",border:"none",cursor:"pointer"},n)},i),r)}));HT.displayName=BT.displayName;const WT=s.forwardRef(((e,t)=>{var{children:r,style:n,participantAction:i}=e,o=xw(e,["children","style","participantAction"]);const{participant:a,setOpen:c,maximizedParticipant:d,setMaximizedParticipant:l}=(()=>{const e=s.useContext($T),t=UT();if(!e)throw new Error("useParticipantMenu must be used within a ParticipantMenu");return Object.assign(Object.assign({},e),t)})(),u=Mw(),p=jw(V_).find((e=>e.id===a.id)),h=(null==d?void 0:d.id)===a.id;let f;switch(i){case"maximize":f=()=>{l(h?null:a),c(!1)};break;case"spotlight":f=()=>{u(p?F_({id:a.id}):B_({id:a.id})),c(!1)}}return s.createElement("button",Object.assign({ref:t,role:"menuitem",tabIndex:-1,onClick:null!=f?f:o.onClick,style:Object.assign({alignItems:"stretch",backgroundColor:"transparent",border:"none",cursor:"pointer",display:"flex",height:"40px",lineHeight:"40px",minWidth:"140px",padding:"0 12px",textAlign:"left",textDecoration:"none",whiteSpace:"nowrap",width:"100%"},n)},o),r)}));function KT(e){return s.createElement("svg",Object.assign({width:"100%",height:"100%",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},e),s.createElement("g",null,s.createElement("circle",{cx:"6",cy:"12",r:"2"}),s.createElement("circle",{cx:"12",cy:"12",r:"2"}),s.createElement("circle",{cx:"18",cy:"12",r:"2"})))}function JT(e){return s.createElement("svg",Object.assign({width:"100%",height:"100%",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},e),s.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m13.875 3c0 .62132.5037 1.125 1.125 1.125h3.284l-4.0795 4.0795c-.4393.43934-.4393 1.15166 0 1.591.4393.4393 1.1517.4393 1.591 0l4.0795-4.07951v3.28401c0 .62132.5037 1.125 1.125 1.125s1.125-.50368 1.125-1.125v-6c0-.15254-.0304-.29799-.0854-.43063-.0536-.12968-.1326-.25135-.2368-.35749l-.0147-.01469c-.203-.19928-.4812-.32219-.7881-.32219h-6c-.6213 0-1.125.50368-1.125 1.125zm-9.75 12c0-.6213-.50368-1.125-1.125-1.125s-1.125.5037-1.125 1.125v6c0 .3069.12291.5851.32219.7881.00486.005.00975.0099.01469.0147.10614.1042.22781.1832.35749.2368.13264.055.27809.0854.43063.0854h6c.62132 0 1.125-.5037 1.125-1.125s-.50368-1.125-1.125-1.125h-3.28401l4.07951-4.0795c.4393-.4393.4393-1.1517 0-1.591-.43934-.4393-1.15166-.4393-1.591 0l-4.0795 4.0795z"}))}function QT(e){return s.createElement("svg",Object.assign({width:"100%",height:"100%",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},e),s.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"m15.241.146691c-.1011-.1955882-.3809-.1955879-.482 0l-1.1063 2.139639c-.0258.04991-.0665.09058-.1164.11639l-2.1396 1.10629c-.1956.10113-.1956.38085 0 .48198l2.1396 1.10629c.0499.02581.0906.06648.1164.11639l1.1063 2.13964c.1011.19559.3809.19559.482 0l1.1063-2.13964c.0258-.04991.0665-.09058.1164-.11639l2.1396-1.10629c.1956-.10113.1956-.38085 0-.48198l-2.1396-1.10629c-.0499-.02581-.0906-.06648-.1164-.11639zm-13.741 2.900259v14.67495c0 .0511.00116.1018.00345.1523-.00229.0418-.00345.0837-.00345.1258 0 .5674.21005 1.1103.59339 1.6103.24265.3472.55042.6455.90566.8773 1.61225 1.213 4.36988 2.0124 7.50095 2.0124 4.3315 0 7.9484-1.53 8.8068-3.5681.0651-.1472.1148-.3024.1455-.4658.0315-.1532.0477-.3087.0477-.4661 0-.6032-.2374-1.1788-.668-1.7045-.1377-.1975-.2995-.4017-.4877-.6127l-14.22219-13.74809c-.28845-.27884-.67396-.43471-1.07516-.43471-.85436 0-1.54695.69259-1.54695 1.54695zm19.2646 4.59631c.0988-.19101.372-.19101.4708 0l.8546 1.65303c.0253.04874.065.08846.1137.11366l1.653.85465c.1911.0988.1911.372 0 .4708l-1.653.8546c-.0487.0253-.0884.065-.1137.1137l-.8546 1.653c-.0988.1911-.372.1911-.4708 0l-.8546-1.653c-.0253-.0487-.065-.0884-.1137-.1137l-1.653-.8546c-.1911-.0988-.1911-.372 0-.4708l1.653-.85465c.0487-.0252.0884-.06492.1137-.11366zm-3.2651 10.35684c0 .0769-.1144.6851-1.5305 1.3931-1.2964.6482-3.2274 1.1069-5.4695 1.1069s-4.17308-.4587-5.46952-1.1069c-1.41607-.708-1.53047-1.3162-1.53047-1.3931 0-.077.1144-.6851 1.53047-1.3932 1.29644-.6482 3.22742-1.1068 5.46952-1.1068s4.1731.4586 5.4695 1.1068c1.4161.7081 1.5305 1.3162 1.5305 1.3932z"}))}function YT({participant:e}){const t=jw(V_).find((t=>t.id===e.id)),{isHovered:r,maximizedParticipant:n}=UT(),i=(null==n?void 0:n.id)===e.id;return r?s.createElement(GT,null,s.createElement(HT,{style:{display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"#fff",borderRadius:"6px",padding:"4px"}},s.createElement(KT,{height:20,width:20,transform:"rotate(90)"})),s.createElement(qT,null,s.createElement(WT,{participantAction:"maximize",style:{display:"flex",alignItems:"center",gap:"10px"}},s.createElement(JT,{height:16,width:16}),i?"Minimize":"Maximize"),s.createElement(WT,{participantAction:"spotlight",style:{display:"flex",alignItems:"center",gap:"10px"}},s.createElement(QT,{height:16,width:16}),t?"Remove spotlight":"Spotlight"))):null}WT.displayName="ParticipantMenuItem";const ZT=s.forwardRef((({className:e,participant:t,children:r},n)=>{const[i,o]=s.useState(!1),a=s.useCallback((()=>{o(!0)}),[]),c=s.useCallback((()=>{o(!1)}),[]);return s.createElement(VT.Provider,{value:{participant:t,isHovered:i}},s.createElement("div",{ref:n,className:e,onMouseEnter:a,onMouseLeave:c},r))}));ZT.displayName="GridCell";const XT=s.forwardRef(((e,t)=>{var{stream:r,style:n}=e,i=xw(e,["stream","style"]);const o=s.useRef(null),{onSetClientAspectRatio:a,clientAspectRatios:c,participant:d}=UT();if(!d)return null;const l=c[d.id];s.useImperativeHandle(t,(()=>o.current));const u=s.useCallback((()=>{const e=o.current&&o.current.captureAspectRatio();e&&e!==l&&d.id&&a({aspectRatio:e,clientId:d.id})}),[c,d.id,a]),p=r||d.stream;return p?s.createElement(Lw,Object.assign({ref:o,style:Object.assign({borderRadius:"8px"},n)},i,{stream:p,onVideoResize:u})):null}));function ek({cellView:e,enableParticipantMenu:t,render:r}){const n=e.client;if(n)return"video"===e.type?s.createElement(ZT,{participant:n},n.isVideoEnabled?s.createElement(s.Fragment,null,r?r({participant:n}):s.createElement(s.Fragment,null,s.createElement(XT,null),t?s.createElement(YT,{participant:n}):null)):s.createElement(XS,{isSmallCell:!1,displayName:(null==n?void 0:n.displayName)||"Guest",withRoundedCorners:!0})):void 0}return XT.displayName="GridVideoView",e.GridCell=ZT,e.GridVideoView=XT,e.ParticipantMenu=GT,e.ParticipantMenuContent=qT,e.ParticipantMenuItem=WT,e.ParticipantMenuTrigger=HT,e.VideoGrid=function({renderParticipant:e,stageParticipantLimit:t,gridGap:r,videoGridGap:n,enableSubgrid:i,enableParticipantMenu:o}){const a=s.useRef(null),{cellViewsVideoGrid:c,cellViewsInPresentationGrid:d,cellViewsInSubgrid:l,clientAspectRatios:u,videoStage:p,setContainerBounds:h,setClientAspectRatios:f,maximizedParticipant:m,setMaximizedParticipant:g}=TS({activeVideosSubgridTrigger:12,stageParticipantLimit:t,gridGap:r,videoGridGap:n,enableSubgrid:i}),v=s.useCallback((({aspectRatio:e,clientId:t})=>{f((r=>Object.assign(Object.assign({},r),{[t]:e})))}),[f]),b=s.useMemo((()=>d.map((t=>ek(Object.assign({cellView:t,enableParticipantMenu:o},e?{render:({participant:t})=>e({participant:t})}:{}))))),[d]),y=s.useMemo((()=>c.map((t=>ek(Object.assign({cellView:t,enableParticipantMenu:o},e?{render:({participant:t})=>e({participant:t})}:{}))))),[c]),_=s.useMemo((()=>l.map((e=>ek({cellView:e,enableParticipantMenu:o})))),[l]);return s.useEffect((()=>{if(!a.current)return;const e=new ResizeObserver(Cb((()=>{var e,t,r,n;h({width:null!==(t=null===(e=a.current)||void 0===e?void 0:e.clientWidth)&&void 0!==t?t:640,height:null!==(n=null===(r=a.current)||void 0===r?void 0:r.clientHeight)&&void 0!==n?n:480})}),{delay:60,edges:!1}));return e.observe(a.current),()=>{e.disconnect()}}),[]),s.createElement(zT.Provider,{value:{onSetClientAspectRatio:v,cellViewsVideoGrid:c,cellViewsInPresentationGrid:d,cellViewsInSubgrid:l,clientAspectRatios:u,maximizedParticipant:m,setMaximizedParticipant:g}},s.createElement("div",{ref:a,style:{width:"100%",height:"100%",position:"relative"}},s.createElement(Yw,{layoutVideoStage:p,presentationGridContent:b,gridContent:y,subgridContent:_})))},e.VideoView=Lw,e.WherebyProvider=function({children:e}){const t=(({preloadedState:e,injectServices:t})=>wt({devTools:H_,reducer:K_,middleware:e=>e({thunk:{extraArgument:{services:t}},serializableCheck:!1}).prepend(Tv.middleware),preloadedState:e}))({injectServices:function(){const e=Sw.create({baseUrl:Dw}),t=new lw({fetchDeviceCredentials:e.getCredentials.bind(e),baseUrl:Dw}),r=new Ew({apiClient:t});return{credentialsService:e,apiClient:t,organizationService:r,fetchOrganizationFromRoomUrl:e=>{const t=Am({host:new URL(e).host});return new Ow({organizationService:r,subdomain:t.subdomain}).fetchOrganization()}}}()});return s.createElement(O,{store:t},e)},e.useLocalMedia=function(e={audio:!0,video:!0}){const t=Mw(),r=jw(Bw);return s.useEffect((()=>(t(Ub(e)),()=>{t($b())})),[]),{state:r,actions:{setCameraDevice:s.useCallback((e=>t(Tb({deviceId:e}))),[t]),setMicrophoneDevice:s.useCallback((e=>t(kb({deviceId:e}))),[t]),setSpeakerDevice:s.useCallback((e=>t(Eb({deviceId:e}))),[t]),toggleCameraEnabled:s.useCallback((e=>t(Ob({enabled:e}))),[t]),toggleMicrophoneEnabled:s.useCallback((e=>t(Db({enabled:e}))),[t]),toggleLowDataModeEnabled:s.useCallback((e=>t(Ib({enabled:e}))),[t])}}},e.useRoomConnection=function(e,t=Nw){const r=Mw(),n=jw(Aw),i=s.useMemo((()=>{const r=new URL(e),n=new URLSearchParams(r.search),i=t.roomKey||n.get("roomKey");return{displayName:t.displayName||"Guest",localMediaOptions:t.localMedia?void 0:t.localMediaOptions,roomKey:i,roomUrl:e,userAgent:"browser-sdk:3.2.4",externalId:t.externalId||null}}),[e,t]);s.useEffect((()=>()=>{r(Dv())}),[]);const o=s.useCallback((e=>{"connected"===n.connectionStatus?r(e()):console.warn("Action cannot be performed outside of a connected room")}),[n.connectionStatus,r]),a=s.useCallback((e=>o((()=>vb({text:e})))),[o]),c=s.useCallback((()=>r(qy())),[r]),d=s.useCallback((e=>o((()=>Ob({enabled:e})))),[o]),l=s.useCallback((e=>o((()=>Db({enabled:e})))),[o]),u=s.useCallback((e=>o((()=>Ib({enabled:e})))),[o]),p=s.useCallback((e=>o((()=>hy({enabled:e})))),[o]),h=s.useCallback((e=>o((()=>Ay({clientIds:[e],enable:!0})))),[o]),f=s.useCallback((e=>o((()=>G_({participantId:e})))),[o]),m=s.useCallback((e=>o((()=>q_({participantId:e})))),[o]),g=s.useCallback((()=>o((()=>_b()))),[o]),v=s.useCallback((()=>o((()=>Sy()))),[o]),b=s.useCallback((()=>o((()=>wb()))),[o]),y=s.useCallback((()=>o((()=>Cy()))),[o]),_=s.useCallback((()=>r(Iv(i))),[r]),w=s.useCallback((()=>o((()=>Dv()))),[o]),S=s.useCallback((e=>o((()=>e_({locked:e})))),[o]),C=s.useCallback((e=>o((()=>Ay({clientIds:e,enable:!1})))),[o]),R=s.useCallback((e=>o((()=>B_({id:e})))),[o]),P=s.useCallback((e=>o((()=>F_({id:e})))),[o]),T=s.useCallback((e=>o((()=>t_({clientId:e})))),[o]),k=s.useCallback((e=>o((()=>r_({stayBehind:e})))),[o]),{events:E}=n;return{state:xw(n,["events"]),events:E,actions:{toggleLowDataMode:u,toggleRaiseHand:p,askToSpeak:h,acceptWaitingParticipant:f,knock:c,joinRoom:_,leaveRoom:w,lockRoom:S,muteParticipants:C,kickParticipant:T,endMeeting:k,rejectWaitingParticipant:m,sendChatMessage:a,setDisplayName:e=>o((()=>ly({displayName:e}))),startCloudRecording:g,startScreenshare:v,stopCloudRecording:b,stopScreenshare:y,toggleCamera:d,toggleMicrophone:l,spotlightParticipant:R,removeSpotlight:P}}},e}({},React,ReactDOM);