(()=>{function e(e,t,r,n){Object.defineProperty(e,t,{get:r,set:n,enumerable:!0,configurable:!0})}function t(e){return e&&e.__esModule?e.default:e}let r=document.currentScript.src;class n{ws;endpoint;autoPair=!1;connected=!1;autoReconnect=!0;autoReconnectTimeout=3e3;autoReconnectTimer;constructor(e){if("auto"==e.endpoint){let e=new URL(r),t="https:"==e.protocol,n=new URL(e.pathname.split("/").slice(0,-1).join("/")+"/",e);n.protocol=t?"wss:":"ws:",this.endpoint=new URL(n.href)}else try{this.endpoint=new URL(e.endpoint)}catch{throw Error("endpoint is required")}"boolean"==typeof e.autoReconnect?this.autoReconnect=!0:e.autoReconnect&&(this.autoReconnect=!0,this.autoReconnectTimeout=e.autoReconnect.timeout)}connect(){this.autoReconnectTimer&&clearTimeout(this.autoReconnectTimer),this.ws=new WebSocket(this.endpoint.href),this.addWSEvents()}disconnect(){this.autoReconnect=!1,this.ws.close()}addWSEvents(){this.ws.addEventListener("open",()=>this.eventOpen()),this.ws.addEventListener("close",()=>this.eventClose()),this.ws.addEventListener("error",()=>this.eventError()),this.ws.addEventListener("message",({data:e})=>this.eventMessage(e))}eventOpen(){for(let e of(this.connected=!0,this.activeConnectionEvent))e(void 0)}eventClose(){for(let e of this.passiveConnectionEvent)e(void 0);this.connected=!1,this.autoReconnect&&(this.autoReconnectTimer=setTimeout(()=>this.connect(),this.autoReconnectTimeout))}eventError(){this.connected=!1}recaivePackEvent=[];onRecaivePack(e){this.recaivePackEvent.push(e)}activeConnectionEvent=[];onActive(e){this.connected?e():this.activeConnectionEvent.push(e)}passiveConnectionEvent=[];onPassive(e){this.connected?this.passiveConnectionEvent.push(e):e()}eventMessage(e){if("string"==typeof e){let t=JSON.parse(e);for(let e of this.recaivePackEvent)e(t)}}tranferToServer(e){this.connected&&this.ws.send(JSON.stringify(e))}}class i{wsts;events=new Map;signals=new Map;requests=new Map;count=0;constructor(e){this.wsts=e}request(e){return new Promise((t,r)=>{let n=++this.count;this.events.set(n,[e=>{t(e)},e=>{r(e)}]),this.wsts.WSTSProtocol.SendRequest(e,n)})}stream(e,t){let r=++this.count;this.wsts.WSTSProtocol.StartStream(e,r),this.events.set(r,[e=>{t(e)},()=>{}])}signal(e,t){let r=this.signals.get(e);r?r.push(t):this.signals.set(e,[t])}}class s{events={};emit(e,...t){if(this.events[e])for(let r of this.events[e])r(...t)}on(e,t){this.events[e]?this.events[e].push(t):this.events[e]=[t]}activeScope=!1;scope(e){this.activeScope?e():this.on("scope",e)}}class o{mwse;APNumber;APShortCode;APIPAddress;constructor(e){this.mwse=e}async allocAPIPAddress(){let{status:e,ip:t}=await this.mwse.EventPooling.request({type:"alloc/APIPAddress"});if("success"==e)return this.APIPAddress=t,t;throw Error("Error Allocated Access Point IP Address")}async allocAPNumber(){let{status:e,number:t}=await this.mwse.EventPooling.request({type:"alloc/APNumber"});if("success"==e)return this.APNumber=t,t;throw Error("Error Allocated Access Point Number")}async allocAPShortCode(){let{status:e,code:t}=await this.mwse.EventPooling.request({type:"alloc/APShortCode"});if("success"==e)return this.APShortCode=t,t;throw Error("Error Allocated Access Point Short Code")}async reallocAPIPAddress(){let{status:e,ip:t}=await this.mwse.EventPooling.request({type:"realloc/APIPAddress"});if("success"==e)return this.APIPAddress=t,t;throw Error("Error Reallocated Access Point IP Address")}async reallocAPNumber(){let{status:e,number:t}=await this.mwse.EventPooling.request({type:"realloc/APNumber"});if("success"==e)return this.APNumber=t,t;throw Error("Error Reallocated Access Point Number")}async reallocAPShortCode(){let{status:e,code:t}=await this.mwse.EventPooling.request({type:"realloc/APShortCode"});if("success"==e)return this.APShortCode=t,t;throw Error("Error Reallocated Access Point Short Code")}async releaseAPIPAddress(){let{status:e}=await this.mwse.EventPooling.request({type:"release/APIPAddress"});if("success"==e)this.APIPAddress=void 0;else throw Error("Error release Access Point IP Address")}async releaseAPNumber(){let{status:e}=await this.mwse.EventPooling.request({type:"release/APNumber"});if("success"==e)this.APNumber=void 0;else throw Error("Error release Access Point Number")}async releaseAPShortCode(){let{status:e}=await this.mwse.EventPooling.request({type:"release/APShortCode"});if("success"==e)this.APShortCode=void 0;else throw Error("Error release Access Point Short Code")}async queryAPIPAddress(e){let{status:t,socket:r}=await this.mwse.EventPooling.request({type:"whois/APIPAddress",whois:e});return"success"==t?r:null}async queryAPNumber(e){let{status:t,socket:r}=await this.mwse.EventPooling.request({type:"whois/APNumber",whois:e});return"success"==t?r:null}async queryAPShortCode(e){let{status:t,socket:r}=await this.mwse.EventPooling.request({type:"whois/APShortCode",whois:e});return"success"==t?r:null}}class a{peer;info={};constructor(e){this.peer=e}async fetch(e){if(e){let t=await this.peer.mwse.EventPooling.request({type:"peer/info",peer:this.peer.socketId,name:e});"success"==t.status?this.info=t.info:console.warn(t.message)}else{let e=await this.peer.mwse.EventPooling.request({type:"peer/info",peer:this.peer.socketId});"success"==e.status?this.info=e.info:console.warn(e.message)}return this.info}set(e,t){this.info[e]=t,this.peer.mwse.WSTSProtocol.SendOnly({type:"auth/info",name:e,value:t})}get(e){return e?this.info[e]:this.info}}let c=!0,d=!0;function p(e,t,r){let n=e.match(t);return n&&n.length>=r&&parseInt(n[r],10)}function l(e,t,r){if(!e.RTCPeerConnection)return;let n=e.RTCPeerConnection.prototype,i=n.addEventListener;n.addEventListener=function(e,n){if(e!==t)return i.apply(this,arguments);let s=e=>{let 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])};let s=n.removeEventListener;n.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t]||!this._eventMap[t].has(r))return s.apply(this,arguments);let 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 h(e){return"boolean"!=typeof e?Error("Argument type: "+typeof e+". Please use a boolean."):(c=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function m(e){return"boolean"!=typeof e?Error("Argument type: "+typeof e+". Please use a boolean."):(d=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function u(){"object"!=typeof window||c||"undefined"==typeof console||"function"!=typeof console.log||console.log.apply(console,arguments)}function f(e,t){d&&console.warn(e+" is deprecated, please use "+t+" instead.")}function y(e){return"[object Object]"===Object.prototype.toString.call(e)}function v(e,t,r){let n=r?"outbound-rtp":"inbound-rtp",i=new Map;if(null===t)return i;let 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&&function e(t,r,n){!r||n.has(r.id)||(n.set(r.id,r),Object.keys(r).forEach(i=>{i.endsWith("Id")?e(t,t.get(r[i]),n):i.endsWith("Ids")&&r[i].forEach(r=>{e(t,t.get(r),n)})}))}(e,r,i)})}),i}var g,C,S={};function P(e,t){let r=e&&e.navigator;if(!r.mediaDevices)return;let n=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;let t={};return Object.keys(e).forEach(r=>{if("require"===r||"advanced"===r||"mediaSource"===r)return;let n="object"==typeof e[r]?e[r]:{ideal:e[r]};void 0!==n.exact&&"number"==typeof n.exact&&(n.min=n.max=n.exact);let 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={})[i("max",r)]=n.ideal):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){let 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});let 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),u("chrome: "+JSON.stringify(e)),i(e)})}e.video=n(e.video)}return u("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){let 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 T(e,t){if((!e.navigator.mediaDevices||!("getDisplayMedia"in e.navigator.mediaDevices))&&e.navigator.mediaDevices){if("function"!=typeof t){console.error("shimGetDisplayMedia: getSourceId argument is not a function");return}e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then(t=>{let 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)})}}}function R(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function w(e){if("object"!=typeof e||!e.RTCPeerConnection||"ontrack"in e.RTCPeerConnection.prototype)l(e,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e));else{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});let 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};let 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};let 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)}}}function E(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){let 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()};let 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};let n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){n.apply(this,arguments);let t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}let 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))})};let n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach(e=>{let 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)){let t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){let 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 b(e){if(!e.RTCPeerConnection)return;let t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){let[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,[]);let i=function(e){let t={};return e.result().forEach(e=>{let 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]]))};return arguments.length>=2?t.apply(this,[function(e){r(s(i(e)))},e]):new Promise((e,r)=>{t.apply(this,[function(t){e(s(i(t)))},r])}).then(r,n)}}function k(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){let t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e});let r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){let e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){let e=this;return this._pc.getStats().then(t=>v(t,e.track,!0))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){let t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e}),l(e,"track",e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){let e=this;return this._pc.getStats().then(t=>v(t,e.track,!1))}}if(!("getStats"in e.RTCRtpSender.prototype&&"getStats"in e.RTCRtpReceiver.prototype))return;let t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){let e,t,r;let n=arguments[0];return(this.getSenders().forEach(t=>{t.track===n&&(e?r=!0:e=t)}),this.getReceivers().forEach(e=>(e.track===n&&(t?r=!0:t=e),e.track===n)),r||e&&t)?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):e?e.getStats():t?t.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function I(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(e=>this._shimmedLocalStreams[e][0])};let t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};let 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};let 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")});let t=this.getSenders();r.apply(this,arguments);let n=this.getSenders().filter(e=>-1===t.indexOf(e));this._shimmedLocalStreams[e.id]=[e].concat(n)};let 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)};let i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach(t=>{let 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 _(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return I(e);let r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){let e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map(e=>this._reverseStreams[e.id])};let 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]){let r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}n.apply(this,[t])};let i=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{let n=e._reverseStreams[t],i=e._streams[n.id];r=r.replace(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");let 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||{};let i=this._streams[r.id];if(i)i.addTrack(t),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{let 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){let r=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=({[t](){let e=arguments,t=arguments.length&&"function"==typeof arguments[0];return t?r.apply(this,[t=>{let 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))}})[t]});let o=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){var e,t;let r;return arguments.length&&arguments[0].type&&(arguments[0]=(e=this,t=arguments[0],r=t.sdp,Object.keys(e._reverseStreams||[]).forEach(t=>{let n=e._reverseStreams[t],i=e._streams[n.id];r=r.replace(RegExp(n.id,"g"),i.id)}),new RTCSessionDescription({type:t.type,sdp:r}))),o.apply(this,arguments)};let a=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){let e=a.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){let t;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");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 A(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){let r=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=({[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}})[t]})}function D(e,t){l(e,"negotiationneeded",e=>{let r=e.target;if(!(t.version<72)&&(!r.getConfiguration||"plan-b"!==r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e})}e(S,"shimMediaStream",()=>R),e(S,"shimOnTrack",()=>w),e(S,"shimGetSendersWithDtmf",()=>E),e(S,"shimGetStats",()=>b),e(S,"shimSenderReceiverGetStats",()=>k),e(S,"shimAddTrackRemoveTrackWithNative",()=>I),e(S,"shimAddTrackRemoveTrack",()=>_),e(S,"shimPeerConnection",()=>A),e(S,"fixNegotiationNeeded",()=>D),e(S,"shimGetUserMedia",()=>P),e(S,"shimGetDisplayMedia",()=>T);var M={};function x(e,t){let r=e&&e.navigator,n=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,n){f("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(e).then(t,n)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){let 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&&(e((r=JSON.parse(JSON.stringify(r))).audio,"autoGainControl","mozAutoGainControl"),e(r.audio,"noiseSuppression","mozNoiseSuppression")),t(r)},n&&n.prototype.getSettings){let t=n.prototype.getSettings;n.prototype.getSettings=function(){let r=t.apply(this,arguments);return e(r,"mozAutoGainControl","autoGainControl"),e(r,"mozNoiseSuppression","noiseSuppression"),r}}if(n&&n.prototype.applyConstraints){let t=n.prototype.applyConstraints;n.prototype.applyConstraints=function(r){return"audio"===this.kind&&"object"==typeof r&&(e(r=JSON.parse(JSON.stringify(r)),"autoGainControl","mozAutoGainControl"),e(r,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[r])}}}}function O(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||!e.navigator.mediaDevices||(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!(r&&r.video)){let 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)})}function L(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 j(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){let r=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=({[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}})[t]});let 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(){let[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 N(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender)||e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;let t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e});let r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){let 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 q(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender)||e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;let t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){let e=t.apply(this,[]);return e.forEach(e=>e._pc=this),e}),l(e,"track",e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function F(e){!e.RTCPeerConnection||"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){f("removeStream","removeTrack"),this.getSenders().forEach(t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)})})}function U(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function z(e){if(!("object"==typeof e&&e.RTCPeerConnection))return;let t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]);let r=(e=[...e]).length>0;r&&e.forEach(e=>{if("rid"in e&&!/^[a-z0-9]{0,16}$/i.test(e.rid))throw TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw RangeError("max_framerate must be >= 0.0")});let n=t.apply(this,arguments);if(r){let{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 G(e){if(!("object"==typeof e&&e.RTCRtpSender))return;let t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){let e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function J(e){if(!("object"==typeof e&&e.RTCPeerConnection))return;let 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 W(e){if(!("object"==typeof e&&e.RTCPeerConnection))return;let 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)}}e(M,"shimOnTrack",()=>L),e(M,"shimPeerConnection",()=>j),e(M,"shimSenderGetStats",()=>N),e(M,"shimReceiverGetStats",()=>q),e(M,"shimRemoveStream",()=>F),e(M,"shimRTCDataChannel",()=>U),e(M,"shimAddTransceiver",()=>z),e(M,"shimGetParameters",()=>G),e(M,"shimCreateOffer",()=>J),e(M,"shimCreateAnswer",()=>W),e(M,"shimGetUserMedia",()=>x),e(M,"shimGetDisplayMedia",()=>O);var V={};function B(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)){let 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=[]);let t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);let r=e.getTracks();this.getSenders().forEach(e=>{r.includes(e.track)&&this.removeTrack(e)})})}}function K(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);let t=new Event("addstream");t.stream=e,this.dispatchEvent(t)})})}});let t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){let 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);let r=new Event("addstream");r.stream=t,e.dispatchEvent(r)})}),t.apply(e,arguments)}}}function Y(e){if("object"!=typeof e||!e.RTCPeerConnection)return;let t=e.RTCPeerConnection.prototype,r=t.createOffer,n=t.createAnswer,i=t.setLocalDescription,s=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){let 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){let 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){let n=i.apply(this,[e]);return r?(n.then(t,r),Promise.resolve()):n};t.setLocalDescription=a,a=function(e,t,r){let n=s.apply(this,[e]);return r?(n.then(t,r),Promise.resolve()):n},t.setRemoteDescription=a,a=function(e,t,r){let n=o.apply(this,[e]);return r?(n.then(t,r),Promise.resolve()):n},t.addIceCandidate=a}function H(e){let t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){let e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>r(X(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=(function(e,r,n){t.mediaDevices.getUserMedia(e).then(r,n)}).bind(t))}function X(e){return e&&void 0!==e.video?Object.assign({},e,{video:function e(t){return y(t)?Object.keys(t).reduce(function(r,n){let i=y(t[n]),s=i?e(t[n]):t[n],o=i&&!Object.keys(s).length;return void 0===s||o?r:Object.assign(r,{[n]:s})},{}):t}(e.video)}):e}function Q(e){if(!e.RTCPeerConnection)return;let t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){let t=[];for(let r=0;rt.generateCertificate})}function $(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 Z(e){let t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);let 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);let 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 ee(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}e(V,"shimLocalStreamsAPI",()=>B),e(V,"shimRemoteStreamsAPI",()=>K),e(V,"shimCallbacksAPI",()=>Y),e(V,"shimGetUserMedia",()=>H),e(V,"shimConstraints",()=>X),e(V,"shimRTCIceServerUrls",()=>Q),e(V,"shimTrackEventTransceiver",()=>$),e(V,"shimCreateOfferLegacy",()=>Z),e(V,"shimAudioContext",()=>ee);var et={};e(et,"shimRTCIceCandidate",()=>ei),e(et,"shimRTCIceCandidateRelayProtocol",()=>es),e(et,"shimMaxMessageSize",()=>eo),e(et,"shimSendThrowTypeError",()=>ea),e(et,"shimConnectionState",()=>ec),e(et,"removeExtmapAllowMixed",()=>ed),e(et,"shimAddIceCandidateNullOrEmpty",()=>ep),e(et,"shimParameterlessSetLocalDescription",()=>el);var er={};let en={};function ei(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;let r=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){let n=new r(e),i=t(er).parseCandidate(e.candidate);for(let e in i)e in n||Object.defineProperty(n,e,{value:i[e]});return n.toJSON=function(){return{candidate:n.candidate,sdpMid:n.sdpMid,sdpMLineIndex:n.sdpMLineIndex,usernameFragment:n.usernameFragment}},n}return new r(e)},e.RTCIceCandidate.prototype=r.prototype,l(e,"icecandidate",t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t))}function es(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||l(e,"icecandidate",e=>{if(e.candidate){let r=t(er).parseCandidate(e.candidate.candidate);"relay"===r.type&&(e.candidate.relayProtocol=({0:"tls",1:"tcp",2:"udp"})[r.priority>>24])}return e})}function eo(e,r){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});let n=function(e){if(!e||!e.sdp)return!1;let r=t(er).splitSections(e.sdp);return r.shift(),r.some(e=>{let r=t(er).parseMLine(e);return r&&"application"===r.kind&&-1!==r.protocol.indexOf("SCTP")})},i=function(e){let t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return -1;let r=parseInt(t[1],10);return r!=r?-1:r},s=function(e){let t=65536;return"firefox"===r.browser&&(t=r.version<57?-1===e?16384:2147483637:r.version<60?57===r.version?65535:65536:2147483637),t},o=function(e,n){let i=65536;"firefox"===r.browser&&57===r.version&&(i=65535);let s=t(er).matchPrefix(e.sdp,"a=max-message-size:");return s.length>0?i=parseInt(s[0].substring(19),10):"firefox"===r.browser&&-1!==n&&(i=2147483637),i},a=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===r.browser&&r.version>=76){let{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(n(arguments[0])){let e;let t=i(arguments[0]),r=s(t),n=o(arguments[0],t);e=0===r&&0===n?Number.POSITIVE_INFINITY:0===r||0===n?Math.max(r,n):Math.min(r,n);let a={};Object.defineProperty(a,"maxMessageSize",{get:()=>e}),this._sctp=a}return a.apply(this,arguments)}}function ea(e){if(!(e.RTCPeerConnection&&"createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){let r=e.send;e.send=function(){let n=arguments[0],i=n.length||n.size||n.byteLength;if("open"===e.readyState&&t.sctp&&i>t.sctp.maxMessageSize)throw TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}let r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){let e=r.apply(this,arguments);return t(e,this),e},l(e,"datachannel",e=>(t(e.channel,e.target),e))}function ec(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;let 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=>{let r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{let t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;let r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}})}function ed(e,t){if(!e.RTCPeerConnection||"chrome"===t.browser&&t.version>=71||"safari"===t.browser&&t.version>=605)return;let r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){let 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 ep(e,t){if(!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype))return;let 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 el(e,t){if(!(e.RTCPeerConnection&&e.RTCPeerConnection.prototype))return;let 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}).type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}return e.sdp||"offer"!==e.type&&"answer"!==e.type?r.apply(this,[e]):("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then(e=>r.apply(this,[e]))})}en.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},en.localCName=en.generateIdentifier(),en.splitLines=function(e){return e.trim().split("\n").map(e=>e.trim())},en.splitSections=function(e){return e.split("\nm=").map((e,t)=>(t>0?"m="+e:e).trim()+"\r\n")},en.getDescription=function(e){let t=en.splitSections(e);return t&&t[0]},en.getMediaSections=function(e){let t=en.splitSections(e);return t.shift(),t},en.matchPrefix=function(e,t){return en.splitLines(e).filter(e=>0===e.indexOf(t))},en.parseCandidate=function(e){let t;let r={foundation:(t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" "))[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;e0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},en.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"},en.parseFmtp=function(e){let t;let r={},n=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e{void 0!==e.parameters[t]?n.push(t+"="+e.parameters[t]):n.push(t)}),t+="a=fmtp:"+r+" "+n.join(";")+"\r\n"}return t},en.parseRtcpFb=function(e){let t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},en.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},en.parseSsrcMedia=function(e){let 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},en.parseSsrcGroup=function(e){let t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map(e=>parseInt(e,10))}},en.getMid=function(e){let t=en.matchPrefix(e,"a=mid:")[0];if(t)return t.substring(6)},en.parseFingerprint=function(e){let t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},en.getDtlsParameters=function(e,t){return{role:"auto",fingerprints:en.matchPrefix(e+t,"a=fingerprint:").map(en.parseFingerprint)}},en.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},en.parseCryptoLine=function(e){let t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},en.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?en.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},en.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;let 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}},en.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},en.getCryptoParameters=function(e,t){return en.matchPrefix(e+t,"a=crypto:").map(en.parseCryptoLine)},en.getIceParameters=function(e,t){let r=en.matchPrefix(e+t,"a=ice-ufrag:")[0],n=en.matchPrefix(e+t,"a=ice-pwd:")[0];return r&&n?{usernameFragment:r.substring(12),password:n.substring(10)}:null},en.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},en.parseRtpParameters=function(e){let t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},r=en.splitLines(e)[0].split(" ");t.profile=r[2];for(let n=3;n{t.headerExtensions.push(en.parseExtmap(e))});let n=en.matchPrefix(e,"a=rtcp-fb:* ").map(en.parseRtcpFb);return t.codecs.forEach(e=>{n.forEach(t=>{e.rtcpFeedback.find(e=>e.type===t.type&&e.parameter===t.parameter)||e.rtcpFeedback.push(t)})}),t},en.writeRtpDescription=function(e,t){let r="";r+="m="+e+" "+(t.codecs.length>0?"9":"0")+" "+(t.profile||"UDP/TLS/RTP/SAVPF")+" "+t.codecs.map(e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType).join(" ")+"\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\n",t.codecs.forEach(e=>{r+=en.writeRtpMap(e)+en.writeFmtp(e)+en.writeRtcpFb(e)});let n=0;return t.codecs.forEach(e=>{e.maxptime>n&&(n=e.maxptime)}),n>0&&(r+="a=maxptime:"+n+"\r\n"),t.headerExtensions&&t.headerExtensions.forEach(e=>{r+=en.writeExtmap(e)}),r},en.parseRtpEncodingParameters=function(e){let t;let r=[],n=en.parseRtpParameters(e),i=-1!==n.fecMechanisms.indexOf("RED"),s=-1!==n.fecMechanisms.indexOf("ULPFEC"),o=en.matchPrefix(e,"a=ssrc:").map(e=>en.parseSsrcMedia(e)).filter(e=>"cname"===e.attribute),a=o.length>0&&o[0].ssrc,c=en.matchPrefix(e,"a=ssrc-group:FID").map(e=>e.substring(17).split(" ").map(e=>parseInt(e,10)));c.length>0&&c[0].length>1&&c[0][0]===a&&(t=c[0][1]),n.codecs.forEach(e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let n={ssrc:a,codecPayloadType:parseInt(e.parameters.apt,10)};a&&t&&(n.rtx={ssrc:t}),r.push(n),i&&((n=JSON.parse(JSON.stringify(n))).fec={ssrc:a,mechanism:s?"red+ulpfec":"red"},r.push(n))}}),0===r.length&&a&&r.push({ssrc:a});let d=en.matchPrefix(e,"b=");return d.length&&(d=0===d[0].indexOf("b=TIAS:")?parseInt(d[0].substring(7),10):0===d[0].indexOf("b=AS:")?950*parseInt(d[0].substring(5),10)-16e3:void 0,r.forEach(e=>{e.maxBitrate=d})),r},en.parseRtcpParameters=function(e){let t={},r=en.matchPrefix(e,"a=ssrc:").map(e=>en.parseSsrcMedia(e)).filter(e=>"cname"===e.attribute)[0];r&&(t.cname=r.value,t.ssrc=r.ssrc);let n=en.matchPrefix(e,"a=rtcp-rsize");t.reducedSize=n.length>0,t.compound=0===n.length;let i=en.matchPrefix(e,"a=rtcp-mux");return t.mux=i.length>0,t},en.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},en.parseMsid=function(e){let t;let r=en.matchPrefix(e,"a=msid:");if(1===r.length)return{stream:(t=r[0].substring(7).split(" "))[0],track:t[1]};let n=en.matchPrefix(e,"a=ssrc:").map(e=>en.parseSsrcMedia(e)).filter(e=>"msid"===e.attribute);if(n.length>0)return{stream:(t=n[0].value.split(" "))[0],track:t[1]}},en.parseSctpDescription=function(e){let t;let r=en.parseMLine(e),n=en.matchPrefix(e,"a=max-message-size:");n.length>0&&(t=parseInt(n[0].substring(19),10)),isNaN(t)&&(t=65536);let i=en.matchPrefix(e,"a=sctp-port:");if(i.length>0)return{port:parseInt(i[0].substring(12),10),protocol:r.fmt,maxMessageSize:t};let s=en.matchPrefix(e,"a=sctpmap:");if(s.length>0){let e=s[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:t}}},en.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("")},en.generateSessionId=function(){return Math.random().toString().substr(2,22)},en.writeSessionBoilerplate=function(e,t,r){return"v=0\r\no="+(r||"thisisadapterortc")+" "+(e||en.generateSessionId())+" "+(void 0!==t?t:2)+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},en.getDirection=function(e,t){let r=en.splitLines(e);for(let e=0;e{let n=0,o=0,a=0,c=[];e.onmessage=function({data:t}){if(0==o){let{size:r,part:n}=JSON.parse(t);o=r,a=n,e.send("READY")}else n+=t.byteLength,c.push(t),n==o&&(s[a]=new Blob(c),c=[],o=0,a=0,n=0,e.send("TOTAL_RECAIVED"))},e.onclose=()=>{0==--r&&i(new File(s,t.name,{type:t.type,lastModified:+new Date}))}})}async SendFile(e,t){this.isSending=!0,this.isStarted=!0;let r=await e.arrayBuffer(),n=Math.ceil(r.byteLength/1e7),i=Math.min(5,n);if("connected"!=this.webrtc.iceStatus)throw Error("WebRTC is a not ready");this.peer.send({type:"file",name:e.name,size:e.size,mimetype:e.type,partCount:n,channelCount:i,metadata:t});let s=[];for(let e=0;e{t.onopen=()=>{e(void 0)}}),s.push(t)}let o=0,a=()=>o{for(let t=0;t{0==--c&&(this.isSending=!1,this.isStarted=!1,e(void 0))})})}sendPartition(e,t,r,n){let[i,s]=t(),o=0,a=()=>{if(!(i instanceof ArrayBuffer))return;let e=i.slice(16e3*o,16e3*o+16e3);if(o++,0!=e.byteLength)return e};e.addEventListener("message",({data:r})=>{"READY"==r&&this.sendFileChannel(e,a),"TOTAL_RECAIVED"==r&&([i,s]=t(),o=0,!1!=i?e.send(JSON.stringify({size:i.byteLength,part:s})):(e.close(),n()))}),e.send(JSON.stringify({size:i.byteLength,part:s}))}sendFileChannel(e,t){e.addEventListener("bufferedamountlow",function(){let r=t();r&&e.send(r)}),e.bufferedAmountLowThreshold=15999;let r=t();r&&e.send(r)}}class em{static channels=new Map;static requireGC=!1;id;active=!1;connectionStatus="new";iceStatus="new";gatheringStatus="new";signalingStatus="";rtc;recaivingStream=new Map;sendingStream=new Map;events={};channel;static defaultRTCConfig={iceCandidatePoolSize:0,iceTransportPolicy:"all",rtcpMuxPolicy:"require"};static defaultICEServers=[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun1.l.google.com:19302"},{urls:"stun:stun2.l.google.com:19302"},{urls:"stun:stun3.l.google.com:19302"},{urls:"stun:stun4.l.google.com:19302"}];peer;FileTransportChannel;constructor(e,t){let r={};e?Object.assign(r,em.defaultRTCConfig,e):Object.assign(r,em.defaultRTCConfig),r.iceServers=t||em.defaultICEServers,this.rtc=new RTCPeerConnection(r),this.rtc.addEventListener("connectionstatechange",()=>{this.eventConnectionState()}),this.rtc.addEventListener("icecandidate",(...e)=>{this.eventIcecandidate(...e)}),this.rtc.addEventListener("iceconnectionstatechange",()=>{this.eventICEConnectionState()}),this.rtc.addEventListener("icegatheringstatechange",()=>{this.eventICEGatherinState()}),this.rtc.addEventListener("negotiationneeded",()=>{this.eventNogationNeeded()}),this.rtc.addEventListener("signalingstatechange",()=>{this.eventSignalingState()}),this.rtc.addEventListener("track",(...e)=>{this.eventTrack(...e)}),this.rtc.addEventListener("datachannel",(...e)=>{this.eventDatachannel(...e)}),this.on("input",async e=>{switch(e.type){case"icecandidate":await this.rtc.addIceCandidate(new RTCIceCandidate(e.value));break;case"offer":{await this.rtc.setRemoteDescription(new RTCSessionDescription(e.value));let t=await this.rtc.createAnswer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});await this.rtc.setLocalDescription(t),this.send({type:"answer",value:t});break}case"answer":await this.rtc.setRemoteDescription(new RTCSessionDescription(e.value));break;case"streamInfo":{let{id:t,value:r}=e,n=this.recaivingStream.get(t);n?this.recaivingStream.set(t,{...n,...r}):this.recaivingStream.set(t,r),this.send({type:"streamAccept",id:t});break}case"streamRemoved":{let{id:t}=e;this.emit("stream:stopped",this.recaivingStream.get(t)),this.recaivingStream.delete(t);break}case"streamAccept":{let{id:t}=e,r=this.sendingStream.get(t),n=[];if(r&&r.stream){for(let e of r.stream.getTracks())n.push(this.rtc.addTrack(e,r.stream));r.senders=n}break}case"message":this.emit("message",e.payload)}})}addEventListener(e,t){(this.events[e]||(this.events[e]=[])).push(t)}on(e,t){this.addEventListener(e,t)}async dispatch(e,...t){if(this.events[e])for(let r of this.events[e])await r(...t)}async emit(e,...t){await this.dispatch(e,...t)}connect(){this.channel||this.createDefaultDataChannel()}sendMessage(e){this.send({type:"message",payload:e})}createDefaultDataChannel(){let e=this.rtc.createDataChannel(":default:",{ordered:!0});e.addEventListener("open",()=>{this.channel=e,em.channels.set(this.id,this),this.active=!0}),e.addEventListener("message",({data:e})=>{let t=JSON.parse(e);this.emit("input",t)}),e.addEventListener("close",()=>{this.channel=void 0,this.active=!1})}destroy(){this.active=!1,this.channel&&(this.channel.close(),this.channel=void 0),this.rtc&&this.rtc.close(),this.emit("disconnected"),em.channels.delete(this.id)}eventDatachannel(e){":default:"==e.channel.label?(em.channels.set(this.id,this),this.channel=e.channel,this.active=!0,e.channel.addEventListener("message",({data:e})=>{let t=JSON.parse(e);this.emit("input",t)}),e.channel.addEventListener("close",()=>{this.channel=void 0,em.channels.delete(this.id),em.requireGC=!0})):this.emit("datachannel",e.channel)}send(e){this.channel?.readyState=="open"?this.channel.send(JSON.stringify(e)):this.emit("output",e)}eventConnectionState(){this.connectionStatus=this.rtc.connectionState,"connected"==this.connectionStatus&&!1==this.active&&this.emit("connected"),("failed"==this.connectionStatus||"disconnected"==this.connectionStatus||"closed"==this.connectionStatus)&&this.active&&this.destroy()}eventIcecandidate(e){e.candidate&&this.send({type:"icecandidate",value:e.candidate})}eventICEConnectionState(){this.iceStatus=this.rtc.iceConnectionState}eventICEGatherinState(){this.gatheringStatus=this.rtc.iceGatheringState}async eventNogationNeeded(){let e=await this.rtc.createOffer({iceRestart:!0,offerToReceiveAudio:!0,offerToReceiveVideo:!0});await this.rtc.setLocalDescription(e),this.send({type:"offer",value:e})}eventSignalingState(){this.signalingStatus=this.rtc.signalingState}eventTrack(e){let t=e.receiver;if(e.streams.length)for(let r of e.streams){let e=this.recaivingStream.get(r.id);(e.recaivers||(e.recaivers=[])).push(t),null==this.recaivingStream.get(r.id).stream?(e.stream=r,this.emit("stream:added",this.recaivingStream.get(r.id))):e.stream=r}}sendStream(e,t,r){this.send({type:"streamInfo",id:e.id,value:{...r,name:t}}),this.sendingStream.set(e.id,{...r,id:e.id,name:t,stream:e})}stopStream(e){if("connected"==this.connectionStatus&&this.sendingStream.has(e.id)){let{stream:t}=this.sendingStream.get(e.id);for(let e of t.getTracks())for(let t of this.rtc.getSenders())t.track?.id==e.id&&this.rtc.removeTrack(t);this.send({type:"streamRemoved",id:t.id}),this.sendingStream.delete(e.id)}}stopAllStreams(){if("connected"==this.connectionStatus){for(let[,{stream:e}]of this.sendingStream)if(void 0!=e){for(let t of e.getTracks())for(let e of this.rtc.getSenders())e.track?.id==t.id&&this.rtc.removeTrack(e);this.send({type:"streamRemoved",id:e.id})}this.sendingStream.clear()}}async SendFile(e,t){if(!this.peer)throw Error("Peer is not ready");this.FileTransportChannel=new eh(this,this.peer),await this.FileTransportChannel.SendFile(e,t)}async RecaiveFile(e,t,r){if(!this.peer)throw Error("Peer is not ready");return this.FileTransportChannel=new eh(this,this.peer),await new Promise(n=>{this.FileTransportChannel&&this.FileTransportChannel.RecaiveFile(this.rtc,t,e,r,e=>{n(e)})})}}em.requireGC=!1,setInterval(()=>{if(!1==em.requireGC)return;let e=document.createElement("img");e.src=window.URL.createObjectURL(new Blob([new ArrayBuffer(5e7)])),e.onerror=function(){window.URL.revokeObjectURL(this.src)},em.requireGC=!1},3e3),(g=C||(C={}))[g.PayloadMessagePack=-12873.54]="PayloadMessagePack",g[g.PayloadRTCBasePack=-12884.54]="PayloadRTCBasePack";class eu extends s{mwse;options={};socketId;selfSocket=!1;active=!1;info;rtc;peerConnection=!1;primaryChannel="datachannel";constructor(e){super(),this.mwse=e,this.info=new a(this),this.on("pack",e=>{if(":rtcpack:"==e.type)return this.rtc?this.rtc.emit("input",e.payload):console.warn("Not active rtc but recaived rtc packs");this.emit("message",e)})}createRTC(e,t){return this.rtc=new em(e,t),this.rtc.peer=this,this.rtc.on("connected",()=>{this.peerConnection=!0}),this.rtc.on("disconnected",()=>{this.peerConnection=!1}),this.rtc.on("output",e=>{this.send({type:":rtcpack:",payload:e})}),this.rtc.on("message",e=>{this.emit("pack",e)}),this.rtc}setPeerOptions(e){"string"==typeof e?this.setSocketId(e):this.options=e}setSocketId(e){this.socketId=e}async metadata(){if("me"==this.socketId){let e=await this.mwse.EventPooling.request({type:"my/socketid"});return this.selfSocket=!0,this.active||=!0,this.socketId=e,this.emit("scope"),this.activeScope=!0,e}}async request(e){if(this.active)return await this.mwse.request(this.socketId,e)}equalTo(e){return this.socketId==e.socketId}async isReachable(){return await this.mwse.EventPooling.request({type:"is/reachable",to:this.socketId})}async enablePairAuth(){await this.mwse.EventPooling.request({type:"auth/pair-system",value:"everybody"})}async disablePairAuth(){await this.mwse.EventPooling.request({type:"auth/pair-system",value:"disable"})}async enablePairInfo(){await this.mwse.EventPooling.request({type:"connection/pairinfo",value:!0})}async disablePairInfo(){await this.mwse.EventPooling.request({type:"connection/pairinfo",value:!1})}async requestPair(){let{message:e,status:t}=await this.mwse.EventPooling.request({type:"request/pair",to:this.socketId});return("ALREADY-PAIRED"==e||"ALREADY-REQUESTED"==e)&&console.warn("Already paired or pair requested"),"fail"!=t||(console.error("Request Pair Error",t,e),!1)}async endPair(){await this.mwse.EventPooling.request({type:"end/pair",to:this.socketId}),this.forget()}async acceptPair(){let{message:e,status:t}=await this.mwse.EventPooling.request({type:"accept/pair",to:this.socketId});return"fail"!=t||(console.error("Pair Error",t,e),!1)}async rejectPair(){let{message:e,status:t}=await this.mwse.EventPooling.request({type:"reject/pair",to:this.socketId});return"fail"!=t||(console.error("Pair Error",t,e),!1)}async getPairedList(){let{value:e}=await this.mwse.EventPooling.request({type:"pair/list",to:this.socketId});return e}async send(e){let t=this.peerConnection&&this.rtc?.active,r=this.mwse.server.connected;if("websocket"==(t&&r?"websocket"==this.primaryChannel?"websocket":"datachannel":r?"websocket":"datachannel")){if(!this.mwse.writable)return console.warn("Socket is not writable");await this.mwse.EventPooling.request({type:"pack/to",pack:e,to:this.socketId})}else this.rtc?.sendMessage(e)}async forget(){this.mwse.peers.delete(this.socketId),this.mwse.pairs.delete(this.socketId)}}class ef{room;info={};constructor(e){this.room=e,this.room.on("updateinfo",(e,t)=>{this.info[e]=t})}async fetch(e){if(e){let t=await this.room.mwse.EventPooling.request({type:"room/getinfo",roomId:this.room.roomId,name:e});"success"==t.status?this.info=t.value:console.warn(t.message)}else{let e=await this.room.mwse.EventPooling.request({type:"room/info",roomId:this.room.roomId});"success"==e.status?this.info=e.value:console.warn(e.message)}return this.info}set(e,t){this.info[e]=t,this.room.mwse.WSTSProtocol.SendOnly({type:"room/setinfo",roomId:this.room.roomId,name:e,value:t})}get(e){return e?this.info[e]:this.info}}class ey extends s{mwse;options;config;roomId;accessType;description;joinType;name;owner;peers=new Map;info;constructor(e){super(),this.mwse=e,this.info=new ef(this)}setRoomOptions(e){if("string"==typeof e)this.roomId=e;else{let t={joinType:"free",ifexistsJoin:!0,accessType:"private",notifyActionInvite:!0,notifyActionJoined:!0,notifyActionEjected:!0,autoFetchInfo:!0};Object.assign(t,e),this.config=t}}setRoomId(e){this.roomId=e}async createRoom(e){let t=this.config||e,r=await this.mwse.EventPooling.request({type:"create-room",...t});if("fail"==r.status){if("ALREADY-EXISTS"==r.message&&this.config.ifexistsJoin)return this.join();throw Error(r.message||r.messages)}this.options={...this.config,...r.room},this.roomId=r.room.id,this.mwse.rooms.set(this.roomId,this)}async join(){let e=await this.mwse.EventPooling.request({type:"joinroom",name:this.config.name,credential:this.config.credential,autoFetchInfo:this.config.autoFetchInfo||!1});if("fail"==e.status)throw Error(e.message);this.options={...this.config,...e.room},e.info&&(this.info.info=e.info),this.roomId=e.room.id,this.mwse.rooms.set(this.roomId,this)}async eject(){let{type:e}=await this.mwse.EventPooling.request({type:"ejectroom",roomId:this.roomId});this.peers.clear(),"success"==e&&this.mwse.rooms.delete(this.roomId)}async send(e,t=!1,r=!1){if(!this.mwse.writable)return console.warn("Socket is not writable");if(r){let{type:n}=await this.mwse.EventPooling.request({type:"pack/room",pack:e,to:this.roomId,wom:t,handshake:r});if("fail"==n)throw Error("Cant send message to room")}else await this.mwse.EventPooling.request({type:"pack/room",pack:e,to:this.roomId,wom:t,handshake:r})}async fetchPeers(e,t=!1){if(t){let{count:t}=await this.mwse.EventPooling.request({type:"room/peer-count",roomId:this.roomId,filter:e||{}});return t}{let{status:t,peers:r}=await this.mwse.EventPooling.request({type:"room-peers",roomId:this.roomId,filter:e||{}}),n=[];if("fail"==t)throw Error("Cant using peers on room");if("success"==t)for(let e of r){let t=this.mwse.peer(e,!0);n.push(t),this.peers.set(e,t)}return n}}}class ev{mwse;constructor(e){this.mwse=e,this.addListener()}addListener(){this.mwse.server?.onRecaivePack(e=>{this.PackAnalyze(e)})}SendRaw(e){this.mwse.server.tranferToServer(e)}SendOnly(e){this.mwse.server.tranferToServer([e,"R"])}SendRequest(e,t){this.mwse.server.tranferToServer([e,t,"R"])}StartStream(e,t){this.mwse.server.tranferToServer([e,t,"S"])}PackAnalyze(e){let[t,r,n]=e;if("number"==typeof r){let e=this.mwse.EventPooling.events.get(r);e?(e[0](t,n),"E"===n&&this.mwse.EventPooling.events.delete(r)):console.warn("Missing event sended from server")}else{let e=this.mwse.EventPooling.signals.get(r);if(e)for(let r of e)r(t);else console.warn("Missing event sended from server")}}}class eg extends s{static rtc;server;WSTSProtocol;EventPooling;rooms=new Map;pairs=new Map;peers=new Map;virtualPressure;me;constructor(e){super(),this.server=new n(e),this.WSTSProtocol=new ev(this),this.EventPooling=new i(this),this.virtualPressure=new o(this),this.server.connect(),this.me=new eu(this),this.me.scope(()=>{this.peers.set("me",this.me),this.peers.set(this.me.socketId,this.me)}),this.server.onActive(async()=>{this.me.setSocketId("me"),await this.me.metadata(),this.emit("scope"),this.activeScope=!0}),this.server.onPassive(async()=>{this.emit("close")}),this.packMessagingSystem()}writable=1;readable=1;destroy(){this.server.disconnect()}enableRecaiveData(){this.WSTSProtocol.SendOnly({type:"connection/packrecaive",value:1}),this.readable=1}disableRecaiveData(){this.WSTSProtocol.SendOnly({type:"connection/packrecaive",value:0}),this.readable=0}enableSendData(){this.WSTSProtocol.SendOnly({type:"connection/packsending",value:1}),this.writable=1}disableSendData(){this.WSTSProtocol.SendOnly({type:"connection/packsending",value:0}),this.writable=0}enableNotifyRoomInfo(){this.WSTSProtocol.SendOnly({type:"connection/roominfo",value:1})}disableNotifyRoomInfo(){this.WSTSProtocol.SendOnly({type:"connection/roominfo",value:0})}async request(e,t){let{pack:r}=await this.EventPooling.request({type:"request/to",to:e,pack:t});return r}async response(e,t,r){this.WSTSProtocol.SendOnly({type:"response/to",to:e,pack:r,id:t})}packMessagingSystem(){this.EventPooling.signal("pack",e=>{if(this.readable){let{from:t,pack:r}=e;this.peer(t,!0).emit("pack",r)}}),this.EventPooling.signal("request",e=>{let{from:t,pack:r,id:n}=e,i={body:r,response:e=>{this.response(t,n,e)},peer:this.peer(t,!0)};this.peer(t,!0).emit("request",i),this.peer("me").emit("request",i)}),this.EventPooling.signal("pack/room",e=>{if(this.readable){let{from:t,pack:r,sender:n}=e;this.room(t).emit("message",r,this.peer(n))}}),this.EventPooling.signal("room/joined",e=>{let{id:t,roomid:r}=e,n=this.room(r),i=this.peer(t,!0);n.peers.set(i.socketId,i),n.emit("join",i)}),this.EventPooling.signal("room/info",e=>{let{roomId:t,name:r,value:n}=e;this.room(t).emit("updateinfo",r,n)}),this.EventPooling.signal("room/ejected",e=>{let{id:t,roomid:r}=e,n=this.room(r),i=this.peer(t,!0);n.peers.delete(i.socketId),n.emit("eject",i)}),this.EventPooling.signal("room/closed",e=>{let{roomid:t}=e,r=this.room(t);r.peers.clear(),r.emit("close"),this.rooms.delete(t)}),this.EventPooling.signal("pair/info",e=>{let{from:t,name:r,value:n}=e,i=this.peer(t,!0);i.info.info[r]=n,i.emit("info",r,n)}),this.EventPooling.signal("request/pair",e=>{let{from:t,info:r}=e,n=this.peer(t,!0);n.info.info=r,n.emit("request/pair",n),this.peer("me").emit("request/pair",n)}),this.EventPooling.signal("peer/disconnect",e=>{let{id:t}=e,r=this.peer(t,!0);r.emit("disconnect",r)}),this.EventPooling.signal("accepted/pair",e=>{let{from:t,info:r}=e,n=this.peer(t,!0);n.info.info=r,n.emit("accepted/pair",n),this.peer("me").emit("accepted/pairr",n)}),this.EventPooling.signal("end/pair",e=>{let{from:t,info:r}=e;this.peer(t,!0).emit("endPair",r),this.peer("me").emit("endPair",t,r)})}room(e){if("string"==typeof e&&this.rooms.has(e))return this.rooms.get(e);let t=new ey(this);return t.setRoomOptions(e),this.emit("room"),t}peer(e,t=!1){if("string"==typeof e){if(this.peers.has(e))return this.peers.get(e);if(this.pairs.has(e))return this.pairs.get(e)}let r=new eu(this);return r.setPeerOptions(e),r.active=t,this.peers.set(r.socketId,r),this.emit("peer",r),r}}window.MWSE=eg})(); //# sourceMappingURL=index.js.map