function e(e,t,i,n,r){var s={};return Object.keys(n).forEach((function(e){s[e]=n[e]})),s.enumerable=!!s.enumerable,s.configurable=!!s.configurable,("value"in s||s.initializer)&&(s.writable=!0),s=i.slice().reverse().reduce((function(i,n){return n(e,t,i)||i}),s),r&&void 0!==s.initializer&&(s.value=s.initializer?s.initializer.call(r):void 0,s.initializer=void 0),void 0===s.initializer&&(Object.defineProperty(e,t,s),s=null),s}let t=!0,i=!0;function n(e,t,i){const n=e.match(t);return n&&n.length>=i&&parseInt(n[i],10)}function r(e,t,i){if(!e.RTCPeerConnection)return;const n=e.RTCPeerConnection.prototype,r=n.addEventListener;n.addEventListener=function(e,n){if(e!==t)return r.apply(this,arguments);const s=e=>{const t=i(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),r.apply(this,[e,s])};const s=n.removeEventListener;n.removeEventListener=function(e,i){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(i))return s.apply(this,arguments);const n=this._eventMap[t].get(i);return this._eventMap[t].delete(i),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 s(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(t=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function o(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(i=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function a(){if("object"==typeof window){if(t)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function c(e,t){i&&console.warn(e+" is deprecated, please use "+t+" instead.")}function d(e){return"[object Object]"===Object.prototype.toString.call(e)}function h(e){return d(e)?Object.keys(e).reduce((function(t,i){const n=d(e[i]),r=n?h(e[i]):e[i],s=n&&!Object.keys(r).length;return void 0===r||s?t:Object.assign(t,{[i]:r})}),{}):e}function u(e,t,i){const n=i?"outbound-rtp":"inbound-rtp",r=new Map;if(null===t)return r;const s=[];return e.forEach(e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)}),s.forEach(t=>{e.forEach(i=>{i.type===n&&i.trackId===t.id&&function e(t,i,n){i&&!n.has(i.id)&&(n.set(i.id,i),Object.keys(i).forEach(r=>{r.endsWith("Id")?e(t,t.get(i[r]),n):r.endsWith("Ids")&&i[r].forEach(i=>{e(t,t.get(i),n)})}))}(e,i,r)})}),r}const l=a;function p(e,t){const i=e&&e.navigator;if(!i.mediaDevices)return;const n=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach(i=>{if("require"===i||"advanced"===i||"mediaSource"===i)return;const n="object"==typeof e[i]?e[i]:{ideal:e[i]};void 0!==n.exact&&"number"==typeof n.exact&&(n.min=n.max=n.exact);const r=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[r("min",i)]=n.ideal,t.optional.push(e),e={},e[r("max",i)]=n.ideal,t.optional.push(e)):(e[r("",i)]=n.ideal,t.optional.push(e))}void 0!==n.exact&&"number"!=typeof n.exact?(t.mandatory=t.mandatory||{},t.mandatory[r("",i)]=n.exact):["min","max"].forEach(e=>{void 0!==n[e]&&(t.mandatory=t.mandatory||{},t.mandatory[r(e,i)]=n[e])})}),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},r=function(e,r){if(t.version>=61)return r(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,i){t in e&&!(i in e)&&(e[i]=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)&&(!i.mediaDevices.getSupportedConstraints||!i.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 i.mediaDevices.enumerateDevices().then(i=>{let o=(i=i.filter(e=>"videoinput"===e.kind)).find(e=>t.some(t=>e.label.toLowerCase().includes(t)));return!o&&i.length&&t.includes("back")&&(o=i[i.length-1]),o&&(e.video.deviceId=s.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=n(e.video),l("chrome: "+JSON.stringify(e)),r(e)})}e.video=n(e.video)}return l("chrome: "+JSON.stringify(e)),r(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(i.getUserMedia=function(e,t,n){r(e,e=>{i.webkitGetUserMedia(e,t,e=>{n&&n(s(e))})})}.bind(i),i.mediaDevices.getUserMedia){const e=i.mediaDevices.getUserMedia.bind(i.mediaDevices);i.mediaDevices.getUserMedia=function(t){return r(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 _(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function m(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",i=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(e=>e.track&&e.track.id===i.track.id):{track:i.track};const r=new Event("track");r.track=i.track,r.receiver=n,r.transceiver={receiver:n},r.streams=[t.stream],this.dispatchEvent(r)}),t.stream.getTracks().forEach(i=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find(e=>e.track&&e.track.id===i.id):{track:i};const r=new Event("track");r.track=i,r.receiver=n,r.transceiver={receiver:n},r.streams=[t.stream],this.dispatchEvent(r)})},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else r(e,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function f(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 i=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){let r=i.apply(this,arguments);return r||(r=t(this,e),this._senders.push(r)),r};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 i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],i.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 g(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,i,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 r=function(e){const t={};return e.result().forEach(e=>{const i={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach(t=>{i[t]=e.stat(t)}),t[i.id]=i}),t},s=function(e){return new Map(Object.keys(e).map(t=>[t,e[t]]))};if(arguments.length>=2){const n=function(e){i(s(r(e)))};return t.apply(this,[n,e])}return new Promise((e,i)=>{t.apply(this,[function(t){e(s(r(t)))},i])}).then(i,n)}}function S(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 i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=i.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then(t=>u(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}),r(e,"track",e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then(t=>u(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,i,n;return this.getSenders().forEach(i=>{i.track===e&&(t?n=!0:t=i)}),this.getReceivers().forEach(t=>(t.track===e&&(i?n=!0:i=t),t.track===e)),n||t&&i?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():i?i.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function v(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,i){if(!i)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const n=t.apply(this,arguments);return this._shimmedLocalStreams[i.id]?-1===this._shimmedLocalStreams[i.id].indexOf(n)&&this._shimmedLocalStreams[i.id].push(n):this._shimmedLocalStreams[i.id]=[i,n],n};const i=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();i.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 r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach(t=>{const i=this._shimmedLocalStreams[t].indexOf(e);-1!==i&&this._shimmedLocalStreams[t].splice(i,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]}),r.apply(this,arguments)}}function T(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return v(e);const i=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=i.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 i=new e.MediaStream(t.getTracks());this._streams[t.id]=i,this._reverseStreams[i.id]=t,t=i}n.apply(this,[t])};const r=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let i=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{const n=e._reverseStreams[t],r=e._streams[n.id];i=i.replace(new RegExp(r.id,"g"),n.id)}),new RTCSessionDescription({type:t.type,sdp:i})}function o(e,t){let i=t.sdp;return Object.keys(e._reverseStreams||[]).forEach(t=>{const n=e._reverseStreams[t],r=e._streams[n.id];i=i.replace(new RegExp(n.id,"g"),r.id)}),new RTCSessionDescription({type:t.type,sdp:i})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},r.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,i){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");const r=this.getSenders().find(e=>e.track===t);if(r)throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const s=this._streams[i.id];if(s)s.addTrack(t),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const n=new e.MediaStream([t]);this._streams[i.id]=n,this._reverseStreams[n.id]=i,this.addStream(n)}return this.getSenders().find(e=>e.track===t)},["createOffer","createAnswer"].forEach((function(t){const i=e.RTCPeerConnection.prototype[t],n={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?i.apply(this,[t=>{const i=s(this,t);e[0].apply(null,[i])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):i.apply(this,arguments).then(e=>s(this,e))}};e.RTCPeerConnection.prototype[t]=n[t]}));const a=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=o(this,arguments[0]),a.apply(this,arguments)):a.apply(this,arguments)};const c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=c.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(i=>{this._streams[i].getTracks().find(t=>e.track===t)&&(t=this._streams[i])}),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function y(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const i=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]}))}function E(e,t){r(e,"negotiationneeded",e=>{const i=e.target;if(!(t.version<72||i.getConfiguration&&"plan-b"===i.getConfiguration().sdpSemantics)||"stable"===i.signalingState)return e})}var I=Object.freeze({__proto__:null,shimMediaStream:_,shimOnTrack:m,shimGetSendersWithDtmf:f,shimGetStats:g,shimSenderReceiverGetStats:S,shimAddTrackRemoveTrackWithNative:v,shimAddTrackRemoveTrack:T,shimPeerConnection:y,fixNegotiationNeeded:E,shimGetUserMedia:p,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(i){return t(i).then(t=>{const n=i.video&&i.video.width,r=i.video&&i.video.height,s=i.video&&i.video.frameRate;return i.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||3}},n&&(i.video.mandatory.maxWidth=n),r&&(i.video.mandatory.maxHeight=r),e.navigator.mediaDevices.getUserMedia(i)})}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}});var R="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function C(e,t){return e(t={exports:{}},t.exports),t.exports}var b=C((function(e){var t={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((function(e){return e.trim()}))},t.splitSections=function(e){return e.split("\nm=").map((function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"}))},t.getDescription=function(e){var i=t.splitSections(e);return i&&i[0]},t.getMediaSections=function(e){var i=t.splitSections(e);return i.shift(),i},t.matchPrefix=function(e,i){return t.splitLines(e).filter((function(e){return 0===e.indexOf(i)}))},t.parseCandidate=function(e){for(var t,i={foundation:(t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" "))[0],component:parseInt(t[1],10),protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]},n=8;n0?t[0].split("/")[1]:"sendrecv",uri:t[1]}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+"\r\n"},t.parseFmtp=function(e){for(var t,i={},n=e.substr(e.indexOf(" ")+1).split(";"),r=0;r-1?(i.attribute=e.substr(t+1,n-t-1),i.value=e.substr(n+1)):i.attribute=e.substr(t+1),i},t.parseSsrcGroup=function(e){var t=e.substr(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((function(e){return parseInt(e,10)}))}},t.getMid=function(e){var i=t.matchPrefix(e,"a=mid:")[0];if(i)return i.substr(6)},t.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1]}},t.getDtlsParameters=function(e,i){return{role:"auto",fingerprints:t.matchPrefix(e+i,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){var i="a=setup:"+t+"\r\n";return e.fingerprints.forEach((function(e){i+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),i},t.parseCryptoLine=function(e){var t=e.substr(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;var t=e.substr(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,i){return t.matchPrefix(e+i,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,i){var n=t.matchPrefix(e+i,"a=ice-ufrag:")[0],r=t.matchPrefix(e+i,"a=ice-pwd:")[0];return n&&r?{usernameFragment:n.substr(12),password:r.substr(10)}:null},t.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},t.parseRtpParameters=function(e){for(var i={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=t.splitLines(e)[0].split(" "),r=3;r0?"9":"0",n+=" UDP/TLS/RTP/SAVPF ",n+=i.codecs.map((function(e){return 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",i.codecs.forEach((function(e){n+=t.writeRtpMap(e),n+=t.writeFmtp(e),n+=t.writeRtcpFb(e)}));var r=0;return i.codecs.forEach((function(e){e.maxptime>r&&(r=e.maxptime)})),r>0&&(n+="a=maxptime:"+r+"\r\n"),n+="a=rtcp-mux\r\n",i.headerExtensions&&i.headerExtensions.forEach((function(e){n+=t.writeExtmap(e)})),n},t.parseRtpEncodingParameters=function(e){var i,n=[],r=t.parseRtpParameters(e),s=-1!==r.fecMechanisms.indexOf("RED"),o=-1!==r.fecMechanisms.indexOf("ULPFEC"),a=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute})),c=a.length>0&&a[0].ssrc,d=t.matchPrefix(e,"a=ssrc-group:FID").map((function(e){return e.substr(17).split(" ").map((function(e){return parseInt(e,10)}))}));d.length>0&&d[0].length>1&&d[0][0]===c&&(i=d[0][1]),r.codecs.forEach((function(e){if("RTX"===e.name.toUpperCase()&&e.parameters.apt){var t={ssrc:c,codecPayloadType:parseInt(e.parameters.apt,10)};c&&i&&(t.rtx={ssrc:i}),n.push(t),s&&((t=JSON.parse(JSON.stringify(t))).fec={ssrc:c,mechanism:o?"red+ulpfec":"red"},n.push(t))}})),0===n.length&&c&&n.push({ssrc:c});var h=t.matchPrefix(e,"b=");return h.length&&(h=0===h[0].indexOf("b=TIAS:")?parseInt(h[0].substr(7),10):0===h[0].indexOf("b=AS:")?1e3*parseInt(h[0].substr(5),10)*.95-16e3:void 0,n.forEach((function(e){e.maxBitrate=h}))),n},t.parseRtcpParameters=function(e){var i={},n=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute}))[0];n&&(i.cname=n.value,i.ssrc=n.ssrc);var r=t.matchPrefix(e,"a=rtcp-rsize");i.reducedSize=r.length>0,i.compound=0===r.length;var s=t.matchPrefix(e,"a=rtcp-mux");return i.mux=s.length>0,i},t.parseMsid=function(e){var i,n=t.matchPrefix(e,"a=msid:");if(1===n.length)return{stream:(i=n[0].substr(7).split(" "))[0],track:i[1]};var r=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"msid"===e.attribute}));return r.length>0?{stream:(i=r[0].value.split(" "))[0],track:i[1]}:void 0},t.parseSctpDescription=function(e){var i,n=t.parseMLine(e),r=t.matchPrefix(e,"a=max-message-size:");r.length>0&&(i=parseInt(r[0].substr(19),10)),isNaN(i)&&(i=65536);var s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substr(12),10),protocol:n.fmt,maxMessageSize:i};if(t.matchPrefix(e,"a=sctpmap:").length>0){var o=t.matchPrefix(e,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(o[0],10),protocol:o[1],maxMessageSize:i}}},t.writeSctpDescription=function(e,t){var i=[];return i="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&&i.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),i.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,21)},t.writeSessionBoilerplate=function(e,i,n){var r=void 0!==i?i:2;return"v=0\r\no="+(n||"thisisadapterortc")+" "+(e||t.generateSessionId())+" "+r+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.writeMediaSection=function(e,i,n,r){var s=t.writeRtpDescription(e.kind,i);if(s+=t.writeIceParameters(e.iceGatherer.getLocalParameters()),s+=t.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":"active"),s+="a=mid:"+e.mid+"\r\n",e.direction?s+="a="+e.direction+"\r\n":e.rtpSender&&e.rtpReceiver?s+="a=sendrecv\r\n":e.rtpSender?s+="a=sendonly\r\n":e.rtpReceiver?s+="a=recvonly\r\n":s+="a=inactive\r\n",e.rtpSender){var o="msid:"+r.id+" "+e.rtpSender.track.id+"\r\n";s+="a="+o,s+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+o,e.sendEncodingParameters[0].rtx&&(s+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+o,s+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return s+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+t.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(s+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+t.localCName+"\r\n"),s},t.getDirection=function(e,i){for(var n=t.splitLines(e),r=0;r=14393&&-1===e.indexOf("?transport=udp")})),delete e.url,e.urls=r?n[0]:n,!!n.length}}))}(i.iceServers||[],t),this._iceGatherers=[],i.iceCandidatePoolSize)for(var s=i.iceCandidatePoolSize;s>0;s--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:i.iceServers,gatherPolicy:i.iceTransportPolicy}));else i.iceCandidatePoolSize=0;this._config=i,this.transceivers=[],this._sdpSessionId=b.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(r.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(r.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),r.prototype.onicecandidate=null,r.prototype.onaddstream=null,r.prototype.ontrack=null,r.prototype.onremovestream=null,r.prototype.onsignalingstatechange=null,r.prototype.oniceconnectionstatechange=null,r.prototype.onconnectionstatechange=null,r.prototype.onicegatheringstatechange=null,r.prototype.onnegotiationneeded=null,r.prototype.ondatachannel=null,r.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),"function"==typeof this["on"+e]&&this["on"+e](t))},r.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)},r.prototype.getConfiguration=function(){return this._config},r.prototype.getLocalStreams=function(){return this.localStreams},r.prototype.getRemoteStreams=function(){return this.remoteStreams},r.prototype._createTransceiver=function(e,t){var i=this.transceivers.length>0,n={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:e,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&i)n.iceTransport=this.transceivers[0].iceTransport,n.dtlsTransport=this.transceivers[0].dtlsTransport;else{var r=this._createIceAndDtlsTransports();n.iceTransport=r.iceTransport,n.dtlsTransport=r.dtlsTransport}return t||this.transceivers.push(n),n},r.prototype.addTrack=function(t,i){if(this._isClosed)throw P("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var n;if(this.transceivers.find((function(e){return e.track===t})))throw P("InvalidAccessError","Track already exists.");for(var r=0;r=15025)e.getTracks().forEach((function(t){i.addTrack(t,e)}));else{var n=e.clone();e.getTracks().forEach((function(e,t){var i=n.getTracks()[t];e.addEventListener("enabled",(function(e){i.enabled=e.enabled}))})),n.getTracks().forEach((function(e){i.addTrack(e,n)}))}},r.prototype.removeTrack=function(t){if(this._isClosed)throw P("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(t instanceof e.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var i=this.transceivers.find((function(e){return e.rtpSender===t}));if(!i)throw P("InvalidAccessError","Sender was not created by this connection.");var n=i.stream;i.rtpSender.stop(),i.rtpSender=null,i.track=null,i.stream=null,-1===this.transceivers.map((function(e){return e.stream})).indexOf(n)&&this.localStreams.indexOf(n)>-1&&this.localStreams.splice(this.localStreams.indexOf(n),1),this._maybeFireNegotiationNeeded()},r.prototype.removeStream=function(e){var t=this;e.getTracks().forEach((function(e){var i=t.getSenders().find((function(t){return t.track===e}));i&&t.removeTrack(i)}))},r.prototype.getSenders=function(){return this.transceivers.filter((function(e){return!!e.rtpSender})).map((function(e){return e.rtpSender}))},r.prototype.getReceivers=function(){return this.transceivers.filter((function(e){return!!e.rtpReceiver})).map((function(e){return e.rtpReceiver}))},r.prototype._createIceGatherer=function(t,i){var n=this;if(i&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var r=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(r,"state",{value:"new",writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){var i=!e.candidate||0===Object.keys(e.candidate).length;r.state=i?"completed":"gathering",null!==n.transceivers[t].bufferedCandidateEvents&&n.transceivers[t].bufferedCandidateEvents.push(e)},r.addEventListener("localcandidate",this.transceivers[t].bufferCandidates),r},r.prototype._gather=function(t,i){var n=this,r=this.transceivers[i].iceGatherer;if(!r.onlocalcandidate){var s=this.transceivers[i].bufferedCandidateEvents;this.transceivers[i].bufferedCandidateEvents=null,r.removeEventListener("localcandidate",this.transceivers[i].bufferCandidates),r.onlocalcandidate=function(e){if(!(n.usingBundle&&i>0)){var s=new Event("icecandidate");s.candidate={sdpMid:t,sdpMLineIndex:i};var o=e.candidate,a=!o||0===Object.keys(o).length;if(a)"new"!==r.state&&"gathering"!==r.state||(r.state="completed");else{"new"===r.state&&(r.state="gathering"),o.component=1,o.ufrag=r.getLocalParameters().usernameFragment;var c=b.writeCandidate(o);s.candidate=Object.assign(s.candidate,b.parseCandidate(c)),s.candidate.candidate=c,s.candidate.toJSON=function(){return{candidate:s.candidate.candidate,sdpMid:s.candidate.sdpMid,sdpMLineIndex:s.candidate.sdpMLineIndex,usernameFragment:s.candidate.usernameFragment}}}var d=b.getMediaSections(n._localDescription.sdp);d[s.candidate.sdpMLineIndex]+=a?"a=end-of-candidates\r\n":"a="+s.candidate.candidate+"\r\n",n._localDescription.sdp=b.getDescription(n._localDescription.sdp)+d.join("");var h=n.transceivers.every((function(e){return e.iceGatherer&&"completed"===e.iceGatherer.state}));"gathering"!==n.iceGatheringState&&(n.iceGatheringState="gathering",n._emitGatheringStateChange()),a||n._dispatchEvent("icecandidate",s),h&&(n._dispatchEvent("icecandidate",new Event("icecandidate")),n.iceGatheringState="complete",n._emitGatheringStateChange())}},e.setTimeout((function(){s.forEach((function(e){r.onlocalcandidate(e)}))}),0)}},r.prototype._createIceAndDtlsTransports=function(){var t=this,i=new e.RTCIceTransport(null);i.onicestatechange=function(){t._updateIceConnectionState(),t._updateConnectionState()};var n=new e.RTCDtlsTransport(i);return n.ondtlsstatechange=function(){t._updateConnectionState()},n.onerror=function(){Object.defineProperty(n,"state",{value:"failed",writable:!0}),t._updateConnectionState()},{iceTransport:i,dtlsTransport:n}},r.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var i=this.transceivers[e].iceTransport;i&&(delete i.onicestatechange,delete this.transceivers[e].iceTransport);var n=this.transceivers[e].dtlsTransport;n&&(delete n.ondtlsstatechange,delete n.onerror,delete this.transceivers[e].dtlsTransport)},r.prototype._transceive=function(e,i,n){var r=w(e.localCapabilities,e.remoteCapabilities);i&&e.rtpSender&&(r.encodings=e.sendEncodingParameters,r.rtcp={cname:b.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(r.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(r)),n&&e.rtpReceiver&&r.codecs.length>0&&("video"===e.kind&&e.recvEncodingParameters&&t<15019&&e.recvEncodingParameters.forEach((function(e){delete e.rtx})),e.recvEncodingParameters.length?r.encodings=e.recvEncodingParameters:r.encodings=[{}],r.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(r.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(r.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(r))},r.prototype.setLocalDescription=function(e){var t,i,n=this;if(-1===["offer","answer"].indexOf(e.type))return Promise.reject(P("TypeError",'Unsupported type "'+e.type+'"'));if(!k("setLocalDescription",e.type,n.signalingState)||n._isClosed)return Promise.reject(P("InvalidStateError","Can not set local "+e.type+" in state "+n.signalingState));if("offer"===e.type)t=b.splitSections(e.sdp),i=t.shift(),t.forEach((function(e,t){var i=b.parseRtpParameters(e);n.transceivers[t].localCapabilities=i})),n.transceivers.forEach((function(e,t){n._gather(e.mid,t)}));else if("answer"===e.type){t=b.splitSections(n._remoteDescription.sdp),i=t.shift();var r=b.matchPrefix(i,"a=ice-lite").length>0;t.forEach((function(e,t){var s=n.transceivers[t],o=s.iceGatherer,a=s.iceTransport,c=s.dtlsTransport,d=s.localCapabilities,h=s.remoteCapabilities;if(!(b.isRejected(e)&&0===b.matchPrefix(e,"a=bundle-only").length)&&!s.rejected){var u=b.getIceParameters(e,i),l=b.getDtlsParameters(e,i);r&&(l.role="server"),n.usingBundle&&0!==t||(n._gather(s.mid,t),"new"===a.state&&a.start(o,u,r?"controlling":"controlled"),"new"===c.state&&c.start(l));var p=w(d,h);n._transceive(s,p.codecs.length>0,!1)}}))}return n._localDescription={type:e.type,sdp:e.sdp},"offer"===e.type?n._updateSignalingState("have-local-offer"):n._updateSignalingState("stable"),Promise.resolve()},r.prototype.setRemoteDescription=function(r){var s=this;if(-1===["offer","answer"].indexOf(r.type))return Promise.reject(P("TypeError",'Unsupported type "'+r.type+'"'));if(!k("setRemoteDescription",r.type,s.signalingState)||s._isClosed)return Promise.reject(P("InvalidStateError","Can not set remote "+r.type+" in state "+s.signalingState));var o={};s.remoteStreams.forEach((function(e){o[e.id]=e}));var a=[],c=b.splitSections(r.sdp),d=c.shift(),h=b.matchPrefix(d,"a=ice-lite").length>0,u=b.matchPrefix(d,"a=group:BUNDLE ").length>0;s.usingBundle=u;var l=b.matchPrefix(d,"a=ice-options:")[0];return s.canTrickleIceCandidates=!!l&&l.substr(14).split(" ").indexOf("trickle")>=0,c.forEach((function(n,c){var l=b.splitLines(n),p=b.getKind(n),_=b.isRejected(n)&&0===b.matchPrefix(n,"a=bundle-only").length,m=l[0].substr(2).split(" ")[2],f=b.getDirection(n,d),g=b.parseMsid(n),S=b.getMid(n)||b.generateIdentifier();if(_||"application"===p&&("DTLS/SCTP"===m||"UDP/DTLS/SCTP"===m))s.transceivers[c]={mid:S,kind:p,protocol:m,rejected:!0};else{var v,T,y,E,I,R,C,A,k;!_&&s.transceivers[c]&&s.transceivers[c].rejected&&(s.transceivers[c]=s._createTransceiver(p,!0));var P,N,M=b.parseRtpParameters(n);_||(P=b.getIceParameters(n,d),(N=b.getDtlsParameters(n,d)).role="client"),C=b.parseRtpEncodingParameters(n);var O=b.parseRtcpParameters(n),L=b.matchPrefix(n,"a=end-of-candidates",d).length>0,V=b.matchPrefix(n,"a=candidate:").map((function(e){return b.parseCandidate(e)})).filter((function(e){return 1===e.component}));if(("offer"===r.type||"answer"===r.type)&&!_&&u&&c>0&&s.transceivers[c]&&(s._disposeIceAndDtlsTransports(c),s.transceivers[c].iceGatherer=s.transceivers[0].iceGatherer,s.transceivers[c].iceTransport=s.transceivers[0].iceTransport,s.transceivers[c].dtlsTransport=s.transceivers[0].dtlsTransport,s.transceivers[c].rtpSender&&s.transceivers[c].rtpSender.setTransport(s.transceivers[0].dtlsTransport),s.transceivers[c].rtpReceiver&&s.transceivers[c].rtpReceiver.setTransport(s.transceivers[0].dtlsTransport)),"offer"!==r.type||_){if("answer"===r.type&&!_){T=(v=s.transceivers[c]).iceGatherer,y=v.iceTransport,E=v.dtlsTransport,I=v.rtpReceiver,R=v.sendEncodingParameters,A=v.localCapabilities,s.transceivers[c].recvEncodingParameters=C,s.transceivers[c].remoteCapabilities=M,s.transceivers[c].rtcpParameters=O,V.length&&"new"===y.state&&(!h&&!L||u&&0!==c?V.forEach((function(e){D(v.iceTransport,e)})):y.setRemoteCandidates(V)),u&&0!==c||("new"===y.state&&y.start(T,P,"controlling"),"new"===E.state&&E.start(N)),!w(v.localCapabilities,v.remoteCapabilities).codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&v.sendEncodingParameters[0].rtx&&delete v.sendEncodingParameters[0].rtx,s._transceive(v,"sendrecv"===f||"recvonly"===f,"sendrecv"===f||"sendonly"===f),!I||"sendrecv"!==f&&"sendonly"!==f?delete v.rtpReceiver:(k=I.track,g?(o[g.stream]||(o[g.stream]=new e.MediaStream),i(k,o[g.stream]),a.push([k,I,o[g.stream]])):(o.default||(o.default=new e.MediaStream),i(k,o.default),a.push([k,I,o.default])))}}else{(v=s.transceivers[c]||s._createTransceiver(p)).mid=S,v.iceGatherer||(v.iceGatherer=s._createIceGatherer(c,u)),V.length&&"new"===v.iceTransport.state&&(!L||u&&0!==c?V.forEach((function(e){D(v.iceTransport,e)})):v.iceTransport.setRemoteCandidates(V)),A=e.RTCRtpReceiver.getCapabilities(p),t<15019&&(A.codecs=A.codecs.filter((function(e){return"rtx"!==e.name}))),R=v.sendEncodingParameters||[{ssrc:1001*(2*c+2)}];var U,x=!1;if("sendrecv"===f||"sendonly"===f){if(x=!v.rtpReceiver,I=v.rtpReceiver||new e.RTCRtpReceiver(v.dtlsTransport,p),x)k=I.track,g&&"-"===g.stream||(g?(o[g.stream]||(o[g.stream]=new e.MediaStream,Object.defineProperty(o[g.stream],"id",{get:function(){return g.stream}})),Object.defineProperty(k,"id",{get:function(){return g.track}}),U=o[g.stream]):(o.default||(o.default=new e.MediaStream),U=o.default)),U&&(i(k,U),v.associatedRemoteMediaStreams.push(U)),a.push([k,I,U])}else v.rtpReceiver&&v.rtpReceiver.track&&(v.associatedRemoteMediaStreams.forEach((function(t){var i=t.getTracks().find((function(e){return e.id===v.rtpReceiver.track.id}));i&&function(t,i){i.removeTrack(t),i.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:t}))}(i,t)})),v.associatedRemoteMediaStreams=[]);v.localCapabilities=A,v.remoteCapabilities=M,v.rtpReceiver=I,v.rtcpParameters=O,v.sendEncodingParameters=R,v.recvEncodingParameters=C,s._transceive(s.transceivers[c],!1,x)}}})),void 0===s._dtlsRole&&(s._dtlsRole="offer"===r.type?"active":"passive"),s._remoteDescription={type:r.type,sdp:r.sdp},"offer"===r.type?s._updateSignalingState("have-remote-offer"):s._updateSignalingState("stable"),Object.keys(o).forEach((function(t){var i=o[t];if(i.getTracks().length){if(-1===s.remoteStreams.indexOf(i)){s.remoteStreams.push(i);var r=new Event("addstream");r.stream=i,e.setTimeout((function(){s._dispatchEvent("addstream",r)}))}a.forEach((function(e){var t=e[0],r=e[1];i.id===e[2].id&&n(s,t,r,[i])}))}})),a.forEach((function(e){e[2]||n(s,e[0],e[1],[])})),e.setTimeout((function(){s&&s.transceivers&&s.transceivers.forEach((function(e){e.iceTransport&&"new"===e.iceTransport.state&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),e.iceTransport.addRemoteCandidate({}))}))}),4e3),Promise.resolve()},r.prototype.close=function(){this.transceivers.forEach((function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()})),this._isClosed=!0,this._updateSignalingState("closed")},r.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)},r.prototype._maybeFireNegotiationNeeded=function(){var t=this;"stable"===this.signalingState&&!0!==this.needNegotiation&&(this.needNegotiation=!0,e.setTimeout((function(){if(t.needNegotiation){t.needNegotiation=!1;var e=new Event("negotiationneeded");t._dispatchEvent("negotiationneeded",e)}}),0))},r.prototype._updateIceConnectionState=function(){var e,t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&!e.rejected&&t[e.iceTransport.state]++})),e="new",t.failed>0?e="failed":t.checking>0?e="checking":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0?e="connected":t.completed>0&&(e="completed"),e!==this.iceConnectionState){this.iceConnectionState=e;var i=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",i)}},r.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&e.dtlsTransport&&!e.rejected&&(t[e.iceTransport.state]++,t[e.dtlsTransport.state]++)})),t.connected+=t.completed,e="new",t.failed>0?e="failed":t.connecting>0?e="connecting":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0&&(e="connected"),e!==this.connectionState){this.connectionState=e;var i=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",i)}},r.prototype.createOffer=function(){var i=this;if(i._isClosed)return Promise.reject(P("InvalidStateError","Can not call createOffer after close"));var n=i.transceivers.filter((function(e){return"audio"===e.kind})).length,r=i.transceivers.filter((function(e){return"video"===e.kind})).length,s=arguments[0];if(s){if(s.mandatory||s.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==s.offerToReceiveAudio&&(n=!0===s.offerToReceiveAudio?1:!1===s.offerToReceiveAudio?0:s.offerToReceiveAudio),void 0!==s.offerToReceiveVideo&&(r=!0===s.offerToReceiveVideo?1:!1===s.offerToReceiveVideo?0:s.offerToReceiveVideo)}for(i.transceivers.forEach((function(e){"audio"===e.kind?--n<0&&(e.wantReceive=!1):"video"===e.kind&&--r<0&&(e.wantReceive=!1)}));n>0||r>0;)n>0&&(i._createTransceiver("audio"),n--),r>0&&(i._createTransceiver("video"),r--);var o=b.writeSessionBoilerplate(i._sdpSessionId,i._sdpSessionVersion++);i.transceivers.forEach((function(n,r){var s=n.track,o=n.kind,a=n.mid||b.generateIdentifier();n.mid=a,n.iceGatherer||(n.iceGatherer=i._createIceGatherer(r,i.usingBundle));var c=e.RTCRtpSender.getCapabilities(o);t<15019&&(c.codecs=c.codecs.filter((function(e){return"rtx"!==e.name}))),c.codecs.forEach((function(e){"H264"===e.name&&void 0===e.parameters["level-asymmetry-allowed"]&&(e.parameters["level-asymmetry-allowed"]="1"),n.remoteCapabilities&&n.remoteCapabilities.codecs&&n.remoteCapabilities.codecs.forEach((function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)}))})),c.headerExtensions.forEach((function(e){(n.remoteCapabilities&&n.remoteCapabilities.headerExtensions||[]).forEach((function(t){e.uri===t.uri&&(e.id=t.id)}))}));var d=n.sendEncodingParameters||[{ssrc:1001*(2*r+1)}];s&&t>=15019&&"video"===o&&!d[0].rtx&&(d[0].rtx={ssrc:d[0].ssrc+1}),n.wantReceive&&(n.rtpReceiver=new e.RTCRtpReceiver(n.dtlsTransport,o)),n.localCapabilities=c,n.sendEncodingParameters=d})),"max-compat"!==i._config.bundlePolicy&&(o+="a=group:BUNDLE "+i.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),o+="a=ice-options:trickle\r\n",i.transceivers.forEach((function(e,t){o+=A(e,e.localCapabilities,"offer",e.stream,i._dtlsRole),o+="a=rtcp-rsize\r\n",!e.iceGatherer||"new"===i.iceGatheringState||0!==t&&i.usingBundle||(e.iceGatherer.getLocalCandidates().forEach((function(e){e.component=1,o+="a="+b.writeCandidate(e)+"\r\n"})),"completed"===e.iceGatherer.state&&(o+="a=end-of-candidates\r\n"))}));var a=new e.RTCSessionDescription({type:"offer",sdp:o});return Promise.resolve(a)},r.prototype.createAnswer=function(){var i=this;if(i._isClosed)return Promise.reject(P("InvalidStateError","Can not call createAnswer after close"));if("have-remote-offer"!==i.signalingState&&"have-local-pranswer"!==i.signalingState)return Promise.reject(P("InvalidStateError","Can not call createAnswer in signalingState "+i.signalingState));var n=b.writeSessionBoilerplate(i._sdpSessionId,i._sdpSessionVersion++);i.usingBundle&&(n+="a=group:BUNDLE "+i.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),n+="a=ice-options:trickle\r\n";var r=b.getMediaSections(i._remoteDescription.sdp).length;i.transceivers.forEach((function(e,s){if(!(s+1>r)){if(e.rejected)return"application"===e.kind?"DTLS/SCTP"===e.protocol?n+="m=application 0 DTLS/SCTP 5000\r\n":n+="m=application 0 "+e.protocol+" webrtc-datachannel\r\n":"audio"===e.kind?n+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n":"video"===e.kind&&(n+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"),void(n+="c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:"+e.mid+"\r\n");var o;if(e.stream)"audio"===e.kind?o=e.stream.getAudioTracks()[0]:"video"===e.kind&&(o=e.stream.getVideoTracks()[0]),o&&t>=15019&&"video"===e.kind&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1});var a=w(e.localCapabilities,e.remoteCapabilities);!a.codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,n+=A(e,a,"answer",e.stream,i._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(n+="a=rtcp-rsize\r\n")}}));var s=new e.RTCSessionDescription({type:"answer",sdp:n});return Promise.resolve(s)},r.prototype.addIceCandidate=function(e){var t,i=this;return e&&void 0===e.sdpMLineIndex&&!e.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise((function(n,r){if(!i._remoteDescription)return r(P("InvalidStateError","Can not add ICE candidate without a remote description"));if(e&&""!==e.candidate){var s=e.sdpMLineIndex;if(e.sdpMid)for(var o=0;o0?b.parseCandidate(e.candidate):{};if("tcp"===c.protocol&&(0===c.port||9===c.port))return n();if(c.component&&1!==c.component)return n();if((0===s||s>0&&a.iceTransport!==i.transceivers[0].iceTransport)&&!D(a.iceTransport,c))return r(P("OperationError","Can not add ICE candidate"));var d=e.candidate.trim();0===d.indexOf("a=")&&(d=d.substr(2)),(t=b.getMediaSections(i._remoteDescription.sdp))[s]+="a="+(c.type?d:"end-of-candidates")+"\r\n",i._remoteDescription.sdp=b.getDescription(i._remoteDescription.sdp)+t.join("")}else for(var h=0;hPromise.reject(function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString(){return this.name}}}(e)))}}function O(e){"getDisplayMedia"in e.navigator&&e.navigator.mediaDevices&&(e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||(e.navigator.mediaDevices.getDisplayMedia=e.navigator.getDisplayMedia.bind(e.navigator)))}function L(e,t){if(e.RTCIceGatherer&&(e.RTCIceCandidate||(e.RTCIceCandidate=function(e){return e}),e.RTCSessionDescription||(e.RTCSessionDescription=function(e){return e}),t.version<15025)){const t=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,"enabled");Object.defineProperty(e.MediaStreamTrack.prototype,"enabled",{set(e){t.set.call(this,e);const i=new Event("enabled");i.enabled=e,this.dispatchEvent(i)}})}e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)&&Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=new e.RTCDtmfSender(this):"video"===this.track.kind&&(this._dtmf=null)),this._dtmf}}),e.RTCDtmfSender&&!e.RTCDTMFSender&&(e.RTCDTMFSender=e.RTCDtmfSender);const i=N(e,t.version);e.RTCPeerConnection=function(e){return e&&e.iceServers&&(e.iceServers=function(e,t){let i=!1;return(e=JSON.parse(JSON.stringify(e))).filter(e=>{if(e&&(e.urls||e.url)){let t=e.urls||e.url;e.url&&!e.urls&&c("RTCIceServer.url","RTCIceServer.urls");const n="string"==typeof t;return n&&(t=[t]),t=t.filter(e=>{if(0===e.indexOf("stun:"))return!1;const t=e.startsWith("turn")&&!e.startsWith("turn:[")&&e.includes("transport=udp");return t&&!i?(i=!0,!0):t&&!i}),delete e.url,e.urls=n?t[0]:t,!!t.length}})}(e.iceServers,t.version),a("ICE servers after filtering:",e.iceServers)),new i(e)},e.RTCPeerConnection.prototype=i.prototype}function V(e){e.RTCRtpSender&&!("replaceTrack"in e.RTCRtpSender.prototype)&&(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)}var U=Object.freeze({__proto__:null,shimPeerConnection:L,shimReplaceTrack:V,shimGetUserMedia:M,shimGetDisplayMedia:O});function x(e,t){const i=e&&e.navigator,n=e&&e.MediaStreamTrack;if(i.getUserMedia=function(e,t,n){c("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),i.mediaDevices.getUserMedia(e).then(t,n)},!(t.version>55&&"autoGainControl"in i.mediaDevices.getSupportedConstraints())){const e=function(e,t,i){t in e&&!(i in e)&&(e[i]=e[t],delete e[t])},t=i.mediaDevices.getUserMedia.bind(i.mediaDevices);if(i.mediaDevices.getUserMedia=function(i){return"object"==typeof i&&"object"==typeof i.audio&&(i=JSON.parse(JSON.stringify(i)),e(i.audio,"autoGainControl","mozAutoGainControl"),e(i.audio,"noiseSuppression","mozNoiseSuppression")),t(i)},n&&n.prototype.getSettings){const t=n.prototype.getSettings;n.prototype.getSettings=function(){const i=t.apply(this,arguments);return e(i,"mozAutoGainControl","autoGainControl"),e(i,"mozNoiseSuppression","noiseSuppression"),i}}if(n&&n.prototype.applyConstraints){const t=n.prototype.applyConstraints;n.prototype.applyConstraints=function(i){return"audio"===this.kind&&"object"==typeof i&&(i=JSON.parse(JSON.stringify(i)),e(i,"autoGainControl","mozAutoGainControl"),e(i,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[i])}}}}function F(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 B(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 i=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]}));const i={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,r,s]=arguments;return n.apply(this,[e||null]).then(e=>{if(t.version<53&&!r)try{e.forEach(e=>{e.type=i[e.type]||e.type})}catch(n){if("TypeError"!==n.name)throw n;e.forEach((t,n)=>{e.set(n,Object.assign({},t,{type:i[t.type]||t.type}))})}return e}).then(r,s)}}function $(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 i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=i.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 j(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}),r(e,"track",e=>(e.receiver._pc=e.srcElement,e)),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function H(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){c("removeStream","removeTrack"),this.getSenders().forEach(t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)})})}function J(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function G(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const e=arguments[1],i=e&&"sendEncodings"in e;i&&e.sendEncodings.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(i){const{sender:t}=n,i=t.getParameters();(!("encodings"in i)||1===i.encodings.length&&0===Object.keys(i.encodings[0]).length)&&(i.encodings=e.sendEncodings,t.sendEncodings=e.sendEncodings,this.setParametersPromises.push(t.setParameters(i).then(()=>{delete t.sendEncodings}).catch(()=>{delete t.sendEncodings})))}return n})}function z(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 W(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 q(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 K=Object.freeze({__proto__:null,shimOnTrack:F,shimPeerConnection:B,shimSenderGetStats:$,shimReceiverGetStats:j,shimRemoveStream:H,shimRTCDataChannel:J,shimAddTransceiver:G,shimGetParameters:z,shimCreateOffer:W,shimCreateAnswer:q,shimGetUserMedia:x,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(i){if(!i||!i.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===i.video?i.video={mediaSource:t}:i.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(i)})}});function Q(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(i=>t.call(this,i,e)),e.getVideoTracks().forEach(i=>t.call(this,i,e))},e.RTCPeerConnection.prototype.addTrack=function(e,...i){return i&&i.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 i=e.getTracks();this.getSenders().forEach(e=>{i.includes(e.track)&&this.removeTrack(e)})})}}function X(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 i=new Event("addstream");i.stream=t,e.dispatchEvent(i)})}),t.apply(e,arguments)}}}function Y(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,i=t.createOffer,n=t.createAnswer,r=t.setLocalDescription,s=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){const n=arguments.length>=2?arguments[2]:arguments[0],r=i.apply(this,[n]);return t?(r.then(e,t),Promise.resolve()):r},t.createAnswer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],r=n.apply(this,[i]);return t?(r.then(e,t),Promise.resolve()):r};let a=function(e,t,i){const n=r.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n};t.setLocalDescription=a,a=function(e,t,i){const n=s.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n},t.setRemoteDescription=a,a=function(e,t,i){const n=o.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n},t.addIceCandidate=a}function Z(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,i=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>i(ee(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,i,n){t.mediaDevices.getUserMedia(e).then(i,n)}.bind(t))}function ee(e){return e&&void 0!==e.video?Object.assign({},e,{video:h(e.video)}):e}function te(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,i){if(e&&e.iceServers){const t=[];for(let i=0;it.generateCertificate})}function ie(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 ne(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"),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const i=this.getTransceivers().find(e=>"video"===e.receiver.track.kind);!1===e.offerToReceiveVideo&&i?"sendrecv"===i.direction?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":"recvonly"===i.direction&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):!0!==e.offerToReceiveVideo||i||this.addTransceiver("video")}return t.apply(this,arguments)}}function re(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var se=Object.freeze({__proto__:null,shimLocalStreamsAPI:Q,shimRemoteStreamsAPI:X,shimCallbacksAPI:Y,shimGetUserMedia:Z,shimConstraints:ee,shimRTCIceServerUrls:te,shimTrackEventTransceiver:ie,shimCreateOfferLegacy:ne,shimAudioContext:re});function oe(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.substr(2)),e.candidate&&e.candidate.length){const i=new t(e),n=b.parseCandidate(e.candidate),r=Object.assign(i,n);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,r(e,"icecandidate",t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t))}function ae(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 i=function(e){if(!e||!e.sdp)return!1;const t=b.splitSections(e.sdp);return t.shift(),t.some(e=>{const t=b.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")})},n=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const i=parseInt(t[1],10);return i!=i?-1:i},r=function(e){let i=65536;return"firefox"===t.browser&&(i=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),i},s=function(e,i){let n=65536;"firefox"===t.browser&&57===t.version&&(n=65535);const r=b.matchPrefix(e.sdp,"a=max-message-size:");return r.length>0?n=parseInt(r[0].substr(19),10):"firefox"===t.browser&&-1!==i&&(n=2147483637),n},o=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(i(arguments[0])){const e=n(arguments[0]),t=r(e),i=s(arguments[0],e);let o;o=0===t&&0===i?Number.POSITIVE_INFINITY:0===t||0===i?Math.max(t,i):Math.min(t,i);const a={};Object.defineProperty(a,"maxMessageSize",{get:()=>o}),this._sctp=a}return o.apply(this,arguments)}}function ce(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const i=e.send;e.send=function(){const n=arguments[0],r=n.length||n.size||n.byteLength;if("open"===e.readyState&&t.sctp&&r>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return i.apply(e,arguments)}}const i=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=i.apply(this,arguments);return t(e,this),e},r(e,"datachannel",e=>(t(e.channel,e.target),e))}function de(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 i=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 i=new Event("connectionstatechange",e);t.dispatchEvent(i)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),i.apply(this,arguments)}})}function he(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const i=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const i=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:i}):t.sdp=i}return i.apply(this,arguments)}}function ue(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const i=e.RTCPeerConnection.prototype.addIceCandidate;i&&0!==i.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():i.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}var le=Object.freeze({__proto__:null,shimRTCIceCandidate:oe,shimMaxMessageSize:ae,shimSendThrowTypeError:ce,shimConnectionState:de,removeExtmapAllowMixed:he,shimAddIceCandidateNullOrEmpty:ue});!function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){const i=a,r=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator)return t.browser="Not a browser.",t;const{navigator:i}=e;if(i.mozGetUserMedia)t.browser="firefox",t.version=n(i.userAgent,/Firefox\/(\d+)\./,1);else if(i.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection&&!e.RTCIceGatherer)t.browser="chrome",t.version=n(i.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(i.mediaDevices&&i.userAgent.match(/Edge\/(\d+).(\d+)$/))t.browser="edge",t.version=n(i.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!e.RTCPeerConnection||!i.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=n(i.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),c={browserDetails:r,commonShim:le,extractVersion:n,disableLog:s,disableWarnings:o};switch(r.browser){case"chrome":if(!I||!y||!t.shimChrome)return i("Chrome shim is not included in this adapter release."),c;if(null===r.version)return i("Chrome shim can not determine version, not shimming."),c;i("adapter.js shimming chrome."),c.browserShim=I,ue(e,r),p(e,r),_(e),y(e,r),m(e),T(e,r),f(e),g(e),S(e),E(e,r),oe(e),de(e),ae(e,r),ce(e),he(e,r);break;case"firefox":if(!K||!B||!t.shimFirefox)return i("Firefox shim is not included in this adapter release."),c;i("adapter.js shimming firefox."),c.browserShim=K,ue(e,r),x(e,r),B(e,r),F(e),H(e),$(e),j(e),J(e),G(e),z(e),W(e),q(e),oe(e),de(e),ae(e,r),ce(e);break;case"edge":if(!U||!L||!t.shimEdge)return i("MS edge shim is not included in this adapter release."),c;i("adapter.js shimming edge."),c.browserShim=U,M(e),O(e),L(e,r),V(e),ae(e,r),ce(e);break;case"safari":if(!se||!t.shimSafari)return i("Safari shim is not included in this adapter release."),c;i("adapter.js shimming safari."),c.browserShim=se,ue(e,r),te(e),ne(e),Y(e),Q(e),X(e),ie(e),Z(e),re(e),oe(e),ae(e,r),ce(e),he(e,r);break;default:i("Unsupported browser!")}}({window:"undefined"==typeof window?void 0:window});const pe="wss://qcloud.rtc.qq.com",_e="wss://bk.rtc.qq.com",me="wss://trtc.rtc.qq.com",fe="wss://webrtc.qq.com";let ge="";const Se=e=>ge=e,ve=1,Te=2,ye=20,Ee=21,Ie="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",Re="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",Ce=2,be="DISCONNECTED",Ae="CONNECTING",we="RECONNECTING",ke="CONNECTED",De="join",Pe="delta-join",Ne="rejoin",Me="leave",Oe="delta-leave",Le="publish",Ve="delta-publish",Ue="unpublish",xe="subscribe",Fe="unsubscribe",Be="uplink-connection",$e="uplink-reconnection",je="downlink-connection",He="downlink-reconnection",Je="setLocalDescription",Ge="setRemoteDescription",ze="iceConnectionState",We="stream-initialize",qe="websocketConnectionState",Ke="websocketReconnectionState",Qe="update-stream",Xe="recover-subscription",Ye="start-mix-transcode",Ze="stop-mix-transcode",et="player-error",tt="unsubscribe",it="subscribe_change",nt={MANUAL:"manual",PRESET_LAYOUT:"preset-layout"},rt={REMOTE:"$PLACE_HOLDER_REMOTE$"},st={IT_AUDIO_VIDEO:0,IT_PICTURE:2,IT_CANVAS:3,IT_PURE_AUDIO:4,IT_PURE_VIDEO:5},ot="string",at="number",ct="boolean",dt="array",ht="object",ut="audio",lt="video",pt="auxiliary",_t="user",mt="environment",ft="add",gt="remove",St={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5},vt=-1,Tt=0,yt=1,Et="TRTC",It="Client",Rt="LocalStream",Ct="RemoteStream",bt="Stream",At="https://web.sdk.qcloud.com/trtc/webrtc/doc/zh-cn/",wt={INVALID_PARAMETER:4096,INVALID_OPERATION:4097,NOT_SUPPORTED:4098,DEVICE_NOT_FOUND:4099,SIGNAL_CHANNEL_SETUP_FAILED:16385,SIGNAL_CHANNEL_ERROR:16386,ICE_TRANSPORT_ERROR:16387,JOIN_ROOM_FAILED:16388,CREATE_OFFER_FAILED:16389,SIGNAL_CHANNEL_RECONNECTION_FAILED:16390,UPLINK_RECONNECTION_FAILED:16391,DOWNLINK_RECONNECTION_FAILED:16392,CLIENT_BANNED:16448,SERVER_TIMEOUT:16449,SUBSCRIPTION_TIMEOUT:16450,PLAY_NOT_ALLOWED:16451,DEVICE_AUTO_RECOVER_FAILED:16452,START_PUBLISH_CDN_FAILED:16453,STOP_PUBLISH_CDN_FAILED:16454,START_MIX_TRANSCODE_FAILED:16455,STOP_MIX_TRANSCODE_FAILED:16456,NOT_SUPPORTED_H264:16457,SWITCH_ROLE_FAILED:16458,API_CALL_TIMEOUT:16459,UNKNOWN:65535};class kt extends Error{constructor({message:e,code:t=wt.UNKNOWN,extraCode:i=0}){super(e+` <${function(e){for(let t in wt)if(wt[t]===e)return t;return"UNKNOWN"}(t)} 0x${t.toString(16)}>`),this.code_=t,this.extraCode_=i,this.name="RtcError",this.message_=e}getCode(){return this.code_}getExtraCode(){return this.extraCode_}}var Dt=function(e,t){return function(){for(var i=new Array(arguments.length),n=0;n1)for(var i=1;i=0)return;c[r]="set-cookie"===r?(c[r]?c[r]:[]).concat([o]):c[r]?c[r]+", "+o:o}})),c):c):null,h={data:e.responseType&&"text"!==e.responseType?s.response:s.responseText,status:s.status,statusText:s.statusText,headers:d,config:e,request:s};!function(e,t,i){var n=i.config.validateStatus;!n||n(i.status)?e(i):t(fi("Request failed with status code "+i.status,i.config,null,i.request,i))}(t,i,h),s=null}},s.onabort=function(){s&&(i(fi("Request aborted",e,"ECONNABORTED",s)),s=null)},s.onerror=function(){i(fi("Network Error",e,null,s)),s=null},s.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),i(fi(t,e,"ECONNABORTED",s)),s=null},Ut.isStandardBrowserEnv()){var u=vi,l=(e.withCredentials||Si(h))&&e.xsrfCookieName?u.read(e.xsrfCookieName):void 0;l&&(r[e.xsrfHeaderName]=l)}if("setRequestHeader"in s&&Ut.forEach(r,(function(e,t){void 0===n&&"content-type"===t.toLowerCase()?delete r[t]:s.setRequestHeader(t,e)})),Ut.isUndefined(e.withCredentials)||(s.withCredentials=!!e.withCredentials),e.responseType)try{s.responseType=e.responseType}catch(p){if("json"!==e.responseType)throw p}"function"==typeof e.onDownloadProgress&&s.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&s.upload&&s.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){s&&(s.abort(),i(e),s=null)})),void 0===n&&(n=null),s.send(n)}))},yi={"Content-Type":"application/x-www-form-urlencoded"};function Ei(e,t){!Ut.isUndefined(e)&&Ut.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var Ii={adapter:function(){var e;return("undefined"!=typeof XMLHttpRequest||void 0!==_i&&"[object process]"===Object.prototype.toString.call(_i))&&(e=Ti),e}(),transformRequest:[function(e,t){return mi(t,"Accept"),mi(t,"Content-Type"),Ut.isFormData(e)||Ut.isArrayBuffer(e)||Ut.isBuffer(e)||Ut.isStream(e)||Ut.isFile(e)||Ut.isBlob(e)?e:Ut.isArrayBufferView(e)?e.buffer:Ut.isURLSearchParams(e)?(Ei(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):Ut.isObject(e)?(Ei(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(t){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};Ut.forEach(["delete","get","head"],(function(e){Ii.headers[e]={}})),Ut.forEach(["post","put","patch"],(function(e){Ii.headers[e]=Ut.merge(yi)}));var Ri=Ii;function Ci(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var bi=function(e){return Ci(e),e.headers=e.headers||{},e.data=jt(e.data,e.headers,e.transformRequest),e.headers=Ut.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Ut.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Ri.adapter)(e).then((function(t){return Ci(e),t.data=jt(t.data,t.headers,e.transformResponse),t}),(function(t){return Ht(t)||(Ci(e),t&&t.response&&(t.response.data=jt(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},Ai=function(e,t){t=t||{};var i={},n=["url","method","params","data"],r=["headers","auth","proxy"],s=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];Ut.forEach(n,(function(e){void 0!==t[e]&&(i[e]=t[e])})),Ut.forEach(r,(function(n){Ut.isObject(t[n])?i[n]=Ut.deepMerge(e[n],t[n]):void 0!==t[n]?i[n]=t[n]:Ut.isObject(e[n])?i[n]=Ut.deepMerge(e[n]):void 0!==e[n]&&(i[n]=e[n])})),Ut.forEach(s,(function(n){void 0!==t[n]?i[n]=t[n]:void 0!==e[n]&&(i[n]=e[n])}));var o=n.concat(r).concat(s),a=Object.keys(t).filter((function(e){return-1===o.indexOf(e)}));return Ut.forEach(a,(function(n){void 0!==t[n]?i[n]=t[n]:void 0!==e[n]&&(i[n]=e[n])})),i};function wi(e){this.defaults=e,this.interceptors={request:new $t,response:new $t}}wi.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=Ai(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[bi,void 0],i=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){t.push(e.fulfilled,e.rejected)}));t.length;)i=i.then(t.shift(),t.shift());return i},wi.prototype.getUri=function(e){return e=Ai(this.defaults,e),Ft(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},Ut.forEach(["delete","get","head","options"],(function(e){wi.prototype[e]=function(t,i){return this.request(Ut.merge(i||{},{method:e,url:t}))}})),Ut.forEach(["post","put","patch"],(function(e){wi.prototype[e]=function(t,i,n){return this.request(Ut.merge(n||{},{method:e,url:t,data:i}))}}));var ki=wi;function Di(e){this.message=e}Di.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},Di.prototype.__CANCEL__=!0;var Pi=Di;function Ni(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var i=this;e((function(e){i.reason||(i.reason=new Pi(e),t(i.reason))}))}Ni.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},Ni.source=function(){var e;return{token:new Ni((function(t){e=t})),cancel:e}};var Mi=Ni;function Oi(e){var t=new ki(e),i=Dt(ki.prototype.request,t);return Ut.extend(i,ki.prototype,t),Ut.extend(i,t),i}var Li=Oi(Ri);Li.Axios=ki,Li.create=function(e){return Oi(Ai(Li.defaults,e))},Li.Cancel=Pi,Li.CancelToken=Mi,Li.isCancel=Ht,Li.all=function(e){return Promise.all(e)},Li.spread=function(e){return function(t){return e.apply(null,t)}};var Vi=Li,Ui=Li;Vi.default=Ui;var xi=Vi;let Fi=(new Date).getTime(),Bi=0;const $i=function(){return(new Date).getTime()+Bi},ji=function(){const e=new Date;return e.setTime($i()),e.toLocaleString()},Hi={sdkAppId:"",userId:"",version:"",env:"qcloud",browserVersion:"",ua:""},Ji=function(e,t){const i={timestamp:ji(),sdkAppId:Hi.sdkAppId,userId:Hi.userId,version:Hi.version,log:e};t&&(i.errorInfo=t.message),xi.post(Qi(),JSON.stringify(i)).catch(()=>{})},Gi=function(e){let t=`stat-${e.eventType}-${e.result}`;"delta-join"!==e.eventType&&"delta-leave"!==e.eventType&&"delta-publish"!==e.eventType||(t=`${e.eventType}:${e.delta}`),Ji(t),"failed"===e.result&&(t=`stat-${e.eventType}-${e.result}-${e.code}`,Ji(t,e.error))},zi=function(e){if(pr)return;const t={...e,...Hi};nn(t.code)&&(t.code="failed"===t.result?wt.UNKNOWN:0),xi.post(Xi(),JSON.stringify(t)).catch(()=>{})},Wi=function(e){pr||(zi({...e,result:"success"}),"qcloud"===Hi.env&&Gi({...e,result:"success"}))},qi=function(e){if(pr)return;const{eventType:t,code:i,error:n}=e,r={eventType:t,result:"failed",code:i||(n instanceof kt?n.getExtraCode()||n.getCode():wt.UNKNOWN)};zi(r),"qcloud"===Hi.env&&Gi({...r,error:n})},Ki=function(){return function(e){const t=window.location.search.match(new RegExp("(\\?|&)"+e+"=([^&]*)(&|$)"));return t?decodeURIComponent(t[2]):""}("trtc_env")},Qi=function(){return(ge||"https://yun.tim.qq.com")+"/v5/AVQualityReportSvc/C2S?sdkappid=1&cmdtype=jssdk_log"},Xi=function(){return(ge||"https://yun.tim.qq.com")+"/v5/AVQualityReportSvc/C2S?sdkappid=1&cmdtype=jssdk_event"};function Yi(){const e=navigator.userAgent,t=navigator.connection;let i=e.match(/NetType\/\w+/)?e.match(/NetType\/\w+/)[0]:"";i=i.toLowerCase().replace("nettype/",""),"3gnet"===i&&(i="3g");const n=t&&t.type&&t.type.toLowerCase();let r=t&&t.effectiveType&&t.effectiveType.toLowerCase();"slow-2"===r&&(r="2g");let s=i||"unknown";if(n)switch(n){case"cellular":case"wimax":s=r||"unknown";break;case"wifi":s="wifi";break;case"ethernet":s="wired";break;case"none":case"other":case"unknown":s="unknown"}return gr.info("networkType:",s),s}const Zi=function(e){if(!e||"object"!=typeof e||"[object Object]"!=Object.prototype.toString.call(e))return!1;var t=Object.getPrototypeOf(e);if(null===t)return!0;var i=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return"function"==typeof i&&i instanceof i&&Function.prototype.toString.call(i)===Function.prototype.toString.call(Object)};function en(e){const t=Math.round(e/2)+1;return t>6?13e3:1e3*function e(t,i=1,n=1){return t<=1?n:e(t-1,n,i+n)}(t)}const tn=e=>"function"==typeof e,nn=e=>void 0===e,rn=e=>"string"==typeof e,sn=e=>"number"==typeof e;function on(e){return Reflect.apply(Object.prototype.toString,e,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}function an(e,t){for(let i in e)if(t[i]&&"undefined"!==on(e[i])&&on(e[i])!==t[i].toLowerCase())return{ret:!1,message:`${i} should be ${t[i]}`};return{ret:!0}}function cn(e){const t={};return t.urls="turn:"+e.url,nn(e.username)||nn(e.credential)||(t.username=e.username,t.credential=e.credential,t.credentialType="password",nn(e.credentialType)||(t.credentialType=e.credentialType)),t}function dn(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}function hn(e,t="big"){if(!rn(e))return 0;const i=e.split(".");return"big"===t?(Number(i[0])<<24|Number(i[1])<<16|Number(i[2])<<8|Number(i[3]))>>>0:(Number(i[3])<<24|Number(i[2])<<16|Number(i[1])<<8|Number(i[0]))>>>0}const un=window.navigator&&window.navigator.userAgent||"",ln=/AppleWebKit\/([\d.]+)/i.exec(un),pn=(ln&&parseFloat(ln.pop()),/iPad/i.test(un)),_n=/iPhone/i.test(un)&&!pn,mn=/iPod/i.test(un),fn=_n||pn||mn,gn="15.1"===(fn&&function(){const e=un.match(/OS (\d+)_(\d+)/i);if(e&&e[1]){let t=e[1];return e[2]&&(t+="."+e[2]),t}return null}()),Sn=/Android/i.test(un),vn=Sn&&function(){const e=un.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(!e)return null;const t=e[1]&&parseFloat(e[1]),i=e[2]&&parseFloat(e[2]);return t&&i?parseFloat(e[1]+"."+e[2]):t||null}(),Tn=(Sn&&/webkit/i.test(un),/Firefox/i.test(un)),yn=Tn&&function(){const e=un.match(/Firefox\/(\d+)/);return e&&e[1]?parseFloat(e[1]):null}(),En=/Edge\//i.test(un),In=En&&function(){var e=un.match(/Edge\/(\d+)/i);if(e&&e[1])return e[1]}(),Rn=/Edg\//i.test(un),Cn=Rn&&function(){const e=un.match(/Edg\/(\d+)/);return e&&e[1]?parseFloat(e[1]):null}(),bn=/SogouMobileBrowser\//i.test(un),An=bn&&function(){const e=un.match(/SogouMobileBrowser\/(\d+)/);return e&&e[1]?parseFloat(e[1]):null}(),wn=/MetaSr\s/i.test(un),kn=wn&&function(){const e=un.match(/MetaSr(\s\d+(\.\d+)+)/);return e&&e[1]?parseFloat(e[1]):null}(),Dn=/TBS\/\d+/i.test(un),Pn=Dn&&function(){var e=un.match(/TBS\/(\d+)/i);if(e&&e[1])return e[1]}(),Nn=/XWEB\/\d+/i.test(un),Mn=Nn&&function(){var e=un.match(/XWEB\/(\d+)/i);if(e&&e[1])return e[1]}(),On=(/MSIE\s8\.0/.test(un),/MSIE\/\d+/i.test(un)&&function(){const e=/MSIE\s(\d+)\.\d/.exec(un);let t=e&&parseFloat(e[1]);!t&&/Trident\/7.0/i.test(un)&&/rv:11.0/.test(un)&&(t=11)}(),/(micromessenger|webbrowser)/i.test(un)),Ln=On&&function(){var e=un.match(/MicroMessenger\/(\d+)/i);if(e&&e[1])return e[1]}(),Vn=!Dn&&/MQQBrowser\/\d+/i.test(un)&&/COVC\/\d+/i.test(un),Un=!Dn&&/MQQBrowser\/\d+/i.test(un)&&!/COVC\/\d+/i.test(un),xn=(Un||Vn)&&function(){const e=un.match(/ MQQBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),Fn=!Dn&&/ QQBrowser\/\d+/i.test(un),Bn=Fn&&function(){const e=un.match(/ QQBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),$n=!Dn&&/QQBrowserLite\/\d+/i.test(un),jn=$n&&function(){const e=un.match(/QQBrowserLite\/([\d.]+)/);return e&&e[1]?e[1]:null}(),Hn=!Dn&&/MQBHD\/\d+/i.test(un),Jn=Hn&&function(){const e=un.match(/MQBHD\/([\d.]+)/);return e&&e[1]?e[1]:null}(),Gn=/Windows/i.test(un),zn=!fn&&/MAC OS X/i.test(un),Wn=!Sn&&/Linux/i.test(un),qn=(/MicroMessenger/i.test(un),/UCBrowser/i.test(un)),Kn=(/Electron/i.test(un),/MiuiBrowser/i.test(un)),Qn=Kn&&function(){const e=un.match(/MiuiBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),Xn=/HuaweiBrowser/i.test(un),Yn=/Huawei/i.test(un),Zn=Xn&&function(){const e=un.match(/HuaweiBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),er=/SamsungBrowser/i.test(un),tr=er&&function(){const e=un.match(/SamsungBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),ir=/HeyTapBrowser/i.test(un),nr=ir&&function(){const e=un.match(/HeyTapBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),rr=/VivoBrowser/i.test(un),sr=rr&&function(){const e=un.match(/VivoBrowser\/([\d.]+)/);return e&&e[1]?e[1]:null}(),or=/Chrome/i.test(un),ar=!En&&!wn&&!bn&&!Dn&&!Nn&&!Rn&&!Fn&&!Kn&&!Xn&&!er&&!ir&&!rr&&/Chrome/i.test(un),cr=ar&&function(){const e=un.match(/Chrome\/(\d+)/);return e&&e[1]?parseFloat(e[1]):null}(),dr=ar&&function(){const e=un.match(/Chrome\/([\d.]+)/);return e&&e[1]?e[1]:null}(),hr=!or&&!Un&&!Vn&&!$n&&!Hn&&/Safari/i.test(un),ur=hr&&function(){const e=un.match(/Version\/([\d.]+)/);return e&&e[1]?e[1]:null}(),lr=ar?"Chrome/"+dr:hr?"Safari/"+ur:"NotSupportedBrowser",pr="file:"===location.protocol||"localhost"===location.hostname||/^\d+\.\d+\.\d+\.\d+$/.test(location.hostname),_r=(()=>{let e;return()=>{if(nn(e))try{e=window.localStorage}catch(t){gr.warn(t),e=!1}return e}})(),mr=new Map([[Tn,["Firefox",yn]],[Rn,["Edg",Cn]],[ar,["Chrome",dr]],[hr,["Safari",ur]],[Dn,["TBS",Pn]],[Nn,["XWEB",Mn]],[On&&_n,["WeChat",Ln]],[Fn,["QQ(Win)",Bn]],[Un,["QQ(Mobile)",xn]],[Vn,["QQ(Mobile X5)",xn]],[$n,["QQ(Mac)",jn]],[Hn,["QQ(iPad)",Jn]],[Kn,["MI",Qn]],[Xn,["HW",Zn]],[er,["Samsung",tr]],[ir,["OPPO",nr]],[rr,["VIVO",sr]],[En,["EDGE",In]],[bn,["SogouMobile",An]],[wn,["Sogou",kn]]]);function fr(){let e="unknown",t="unknown";return mr.get(!0)&&(e=mr.get(!0)[0],t=mr.get(!0)[1]),{name:e,version:t}}const gr=function(){var e=function(){},t=["trace","debug","info","warn","error"];function i(e,t){var i=e[t];if(tn(i.bind))return i.bind(e);try{return Function.prototype.bind.call(i,e)}catch(n){return function(){return Function.prototype.apply.apply(i,[e,arguments])}}}function n(t){return"debug"===t&&(t="log"),"undefined"!=typeof console&&(void 0!==console[t]?i(console,t):void 0!==console.log?i(console,"log"):e)}function r(e,i){for(var n=0;n=0&&i<=a.levels.SILENT))throw"log.setLevel() called with invalid level: "+i;if(s=i,!1!==n&&function(e){var i=(t[e]||"silent").toUpperCase();if("undefined"!=typeof window)try{_r()&&(window.localStorage[c]=i)}catch(n){}}(i),r.call(a,i,e),"undefined"==typeof console&&i{if(i&&document.hidden){e();const i=setTimeout(o,t);this.setTimeoutId(n,i),r=dn(),s=r}else{s=dn(),s-r>=t&&(r=s,e());const i=requestAnimationFrame(o);this.setRafId(n,i)}},a=requestAnimationFrame(o);if(this.setRafId(n,a),i){const e=()=>{if(document.hidden){const e=dn()-r;if(e>=t)o();else{const i=setTimeout(o,t-e);this.setTimeoutId(n,i)}}};document.addEventListener("visibilitychange",e),this.setOnVisibilityChange(n,e)}return n}clearInterval(e){if(this.intervalMap_.has(e)){const{rafId:t,timeoutId:i,onVisibilityChange:n}=this.intervalMap_.get(e);cancelAnimationFrame(t),clearTimeout(i),document.removeEventListener("visibilitychange",n),this.intervalMap_.delete(e)}}setTimeoutId(e,t){if(this.intervalMap_.has(e)){const i=this.intervalMap_.get(e);i.timeoutId&&clearTimeout(i.timeoutId),i.timeoutId=t}}setRafId(e,t){if(this.intervalMap_.has(e)){const i=this.intervalMap_.get(e);i.rafId&&cancelAnimationFrame(i.rafId),i.rafId=t}}setOnVisibilityChange(e,t){if(this.intervalMap_.has(e)){this.intervalMap_.get(e).onVisibilityChange=t}}};let Tr;function yr(e){try{return JSON.stringify(e)}catch(t){if(!Tr)try{const e={};e.a=e,JSON.stringify(e)}catch(i){Tr=i.message}if(t.message===Tr)return"[Circular]";throw t}}function Er(e){let t="",i=0;return e.length>1&&rn(e[0])&&(t=e[0].replace(/(%?)(%([sdjo]))/g,(t,n,r,s)=>{if(!n){i+=1;const t=e[i];let n="";switch(s){case"s":n+=t;break;case"d":n+=+t;break;case"j":n=yr(t);break;case"o":{let e=yr(t);"{"!==e[0]&&"["!==e[0]&&(e=`<${e}>`),n=function(e){if(!Object.getOwnPropertyDescriptor||!Object.getPrototypeOf)return Object.prototype.toString.call(e).slice(8,-1);for(;e;){const t=Object.getOwnPropertyDescriptor(e,"constructor");if(void 0!==t&&tn(t.value)&&""!==t.value.name)return t.value.name;e=Object.getPrototypeOf(e)}return""}(t)+e;break}}return n}return t}),t=t.replace(/%{2,2}/g,"%"),i+=1),e.length>i&&(t&&(t+=" "),t+=e.slice(i).join(" ")),t}const{hasOwnProperty:Ir}=Object.prototype;function Rr(){try{throw new Error}catch(e){return e.stack}}function Cr(e){let t=[],i=[];this.length=()=>t.length,this.sent=()=>i.length,this.push=i=>{t.push(i),t.length>e&&t.shift()},this.send=()=>(i.length||(i=t,t=[]),i),this.confirm=()=>{i=[],this.content=""},this.fail=()=>{t=i.concat(t),this.confirm();const n=1+t.length+i.length-e;n>0&&(i.splice(0,n),t=i.concat(t),this.confirm())}}const br=!!Rr();let Ar,wr,kr;function Dr(e){return`[${e.timestamp}] <${e.level.label.toUpperCase()}>${e.logger?` (${e.logger})`:""}: ${e.message}${e.stacktrace?"\n"+e.stacktrace:""}`}const Pr={interval:1e3,level:"trace",capacity:0,stacktrace:{levels:["trace","warn","error"],depth:3,excess:0},timestamp:()=>(new Date).toISOString(),format:Dr};let Nr=-1,Mr=!1,Or="",Lr="",Vr="";const Ur={plain:Dr,json:function(e){return e.level=e.level.label,e},setConfig(e){Mr||(Or=""+e.sdkAppId,Lr=""+e.userId,Vr=""+e.version,Mr=!0)},apply(e,t){if(!e||!e.getLogger)throw new TypeError("Argument is not a root loglevel object");if(Ar)throw new Error("You can assign a plugin only one time");Ar=e;const i=function e(){const t={};for(let i=0;it===e),c=Ar.levels[e.toUpperCase()];return(...d)=>{const h=Er(d);if(c>=t){const t=new Date;t.setTime($i());const i="["+(t.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")+":"+t.getMilliseconds())+"] <"+e.toUpperCase()+"> "+h;o.apply(void 0,[i])}{const t=ji();let l=a?Rr():"";if(l){const e=l.split("\n");e.splice(0,i.stacktrace.excess+3);const{depth:t}=i.stacktrace;if(t&&e.length!==t+1){l=e.splice(0,t).join("\n"),e.length&&(l+=`\n and ${e.length} more`)}else l=e.join("\n")}const p=i.format({message:h,level:{label:e,value:c},logger:r||"",timestamp:t,stacktrace:l});void 0===n&&(n=!rn(p));let _="";if(n)try{_+=JSON.stringify(p)}catch(u){return o(...d),void Ar.getLogger("logger").error(u)}else _+=p;s.push(_)}}},e.methodFactory=kr,e.setLevel(e.getLevel()),e},disable(){if(!Ar)throw new Error("You can't disable a not appled plugin");if(kr!==Ar.methodFactory)throw new Error("You can't disable a plugin after appling another plugin");Ar.methodFactory=wr,Ar.setLevel(Ar.getLevel()),Ar=void 0,vr.clearInterval(Nr)}};let xr=!1;gr.setConfig=function(e){Ur.setConfig(e)},gr.setLogLevel=function(e){gr.setLevel(e)},gr.getLogLevel=function(e){return gr.getLevel(e)},gr.enableUploadLog=function(){xr||(Ur.apply(gr),xr=!0)},gr.disableUploadLog=function(){xr&&(gr.warn("disable upload log! Without log we are difficult to help you triage the issue you might run into!"),Ur.disable(),xr=!1)},gr.enableUploadLog(),gr.setLevel("INFO");let Fr=!0;var Br=C((function(e){var t=Object.prototype.hasOwnProperty,i="~";function n(){}function r(e,t,i){this.fn=e,this.context=t,this.once=i||!1}function s(e,t,n,s,o){if("function"!=typeof n)throw new TypeError("The listener must be a function");var a=new r(n,s||e,o),c=i?i+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],a]:e._events[c].push(a):(e._events[c]=a,e._eventsCount++),e}function o(e,t){0==--e._eventsCount?e._events=new n:delete e._events[t]}function a(){this._events=new n,this._eventsCount=0}Object.create&&(n.prototype=Object.create(null),(new n).__proto__||(i=!1)),a.prototype.eventNames=function(){var e,n,r=[];if(0===this._eventsCount)return r;for(n in e=this._events)t.call(e,n)&&r.push(i?n.slice(1):n);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},a.prototype.listeners=function(e){var t=i?i+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,s=n.length,o=new Array(s);r`previous ${e.name}() is ongoing, please avoid repeated calls.`,INVALID_PARAMETER_REQUIRED:({key:e,rule:t,fnName:i,value:n})=>`'${e||t.name}' is a required param when calling ${i}(), received: ${n}.`,INVALID_PARAMETER_TYPE({key:e,rule:t,fnName:i,value:n}){const r=""+(e||t.name);let s="";return s=Array.isArray(t.type)?t.type.join("|"):t.type,`'${r}' must be type of ${s} when calling ${i}(), received type: ${on(n)}.`},INVALID_PARAMETER_EMPTY:({key:e,rule:t,fnName:i,value:n})=>`'${e||t.name}' cannot be '${n}' when calling ${i}().`,INVALID_PARAMETER_INSTANCE:({key:e,rule:t,fnName:i,value:n})=>`'${""+(e||t.name)}' must be instanceof ${""+(t.instanceOf.name||t.instanceOf)} when calling ${i}(), received type: ${on(n)}.`,INVALID_PARAMETER_RANGE:({key:e,rule:t,fnName:i,value:n})=>`'${e||t.name}' must be one of ${t.values.join("|")} when calling ${i}(), received: ${n}.`,API_CALL_TIMEOUT:e=>(e.commandDesc||e.command)+" timeout observed.",SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED:e=>`SignalChannel setup failure: (errorCode: ${e.errorCode}, errorMsg: ${e.errorMsg} }).`,ERROR_MESSAGE:function(e){let t=e.type+" failed";return e.message&&(t=`${t}: ${e.message}.`),t},SUBSCRIPTION_TIMEOUT:"remote server does not respond to the subscription.",EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED:function(e){return`exchange sdp failed ${e.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",AUDIO:function(e){return e.error.toString()+"