'use strict'; // Last time updated: 2019-06-15 4:26:11 PM UTC // _________________________ // RTCMultiConnection v3.6.9 // Open-Sourced: https://github.com/muaz-khan/RTCMultiConnection // -------------------------------------------------- // Muaz Khan - www.MuazKhan.com // MIT License - www.WebRTC-Experiment.com/licence // -------------------------------------------------- "use strict";var RTCMultiConnection=function(e,n){var t;function i(e,n){function t(e){return!e.audio&&!e.video&&!e.screen&&e.data}var i="";i+="?userid="+e.userid,i+="&sessionid="+e.sessionid,i+="&msgEvent="+e.socketMessageEvent,i+="&socketCustomEvent="+e.socketCustomEvent,i+="&autoCloseEntireSession="+!!e.autoCloseEntireSession,!0===e.session.broadcast&&(i+="&oneToMany=true"),i+="&maxParticipantsAllowed="+e.maxParticipantsAllowed,e.enableScalableBroadcast&&(i+="&enableScalableBroadcast=true",i+="&maxRelayLimitPerUser="+(e.maxRelayLimitPerUser||2)),i+="&extra="+JSON.stringify(e.extra||{}),e.socketCustomParameters&&(i+=e.socketCustomParameters);try{io.sockets={}}catch(e){}if(e.socketURL||(e.socketURL="/"),"/"!=e.socketURL.substr(e.socketURL.length-1,1))throw'"socketURL" MUST end with a slash.';e.enableLogs&&e.socketURL;try{e.socket=io(e.socketURL+i)}catch(n){e.socket=io.connect(e.socketURL+i,e.socketOptions)}var o=e.multiPeersHandler;function r(n,t){e.peersBackup[n]||(e.peersBackup[n]={userid:n,extra:{}}),e.peersBackup[n].extra=t}e.socket.on("extra-data-updated",function(n,t){e.peers[n]&&(e.peers[n].extra=t,e.onExtraDataUpdated({userid:n,extra:t}),r(n,t))}),e.socket.on(e.socketMessageEvent,function n(i){if(i.remoteUserId==e.userid)if(e.peers[i.sender]&&e.peers[i.sender].extra!=i.message.extra&&(e.peers[i.sender].extra=i.extra,e.onExtraDataUpdated({userid:i.sender,extra:i.extra}),r(i.sender,i.extra)),i.message.streamSyncNeeded&&e.peers[i.sender]){var a=e.streamEvents[i.message.streamid];if(!a||!a.stream)return;var s=i.message.action;if("ended"===s||"inactive"===s||"stream-removed"===s)return e.peersBackup[a.userid]&&(a.extra=e.peersBackup[a.userid].extra),void e.onstreamended(a);var d="both"!=i.message.type?i.message.type:null;"function"==typeof a.stream[s]&&a.stream[s](d)}else if("dropPeerConnection"!==i.message){if(i.message.allParticipants)return-1===i.message.allParticipants.indexOf(i.sender)&&i.message.allParticipants.push(i.sender),void i.message.allParticipants.forEach(function(n){o[e.peers[n]?"renegotiatePeer":"createNewPeer"](n,{localPeerSdpConstraints:{OfferToReceiveAudio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.sdpConstraints.mandatory.OfferToReceiveVideo},remotePeerSdpConstraints:{OfferToReceiveAudio:e.session.oneway?!!e.session.audio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.session.oneway?!!e.session.video||!!e.session.screen:e.sdpConstraints.mandatory.OfferToReceiveVideo},isOneWay:!!e.session.oneway||"one-way"===e.direction,isDataOnly:t(e.session)})});if(i.message.newParticipant){if(i.message.newParticipant==e.userid)return;if(e.peers[i.message.newParticipant])return;o.createNewPeer(i.message.newParticipant,i.message.userPreferences||{localPeerSdpConstraints:{OfferToReceiveAudio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.sdpConstraints.mandatory.OfferToReceiveVideo},remotePeerSdpConstraints:{OfferToReceiveAudio:e.session.oneway?!!e.session.audio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.session.oneway?!!e.session.video||!!e.session.screen:e.sdpConstraints.mandatory.OfferToReceiveVideo},isOneWay:!!e.session.oneway||"one-way"===e.direction,isDataOnly:t(e.session)})}else if(i.message.readyForOffer&&(e.attachStreams.length&&(e.waitingForLocalMedia=!1),e.waitingForLocalMedia))setTimeout(function(){n(i)},1);else if(i.message.newParticipationRequest&&i.sender!==e.userid){e.peers[i.sender]&&e.deletePeer(i.sender);var c={extra:i.extra||{},localPeerSdpConstraints:i.message.remotePeerSdpConstraints||{OfferToReceiveAudio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.sdpConstraints.mandatory.OfferToReceiveVideo},remotePeerSdpConstraints:i.message.localPeerSdpConstraints||{OfferToReceiveAudio:e.session.oneway?!!e.session.audio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.session.oneway?!!e.session.video||!!e.session.screen:e.sdpConstraints.mandatory.OfferToReceiveVideo},isOneWay:void 0!==i.message.isOneWay?i.message.isOneWay:!!e.session.oneway||"one-way"===e.direction,isDataOnly:void 0!==i.message.isDataOnly?i.message.isDataOnly:t(e.session),dontGetRemoteStream:void 0!==i.message.isOneWay?i.message.isOneWay:!!e.session.oneway||"one-way"===e.direction,dontAttachLocalStream:!!i.message.dontGetRemoteStream,connectionDescription:i,successCallback:function(){}};e.onNewParticipant(i.sender,c)}else{if(i.message.changedUUID&&e.peers[i.message.oldUUID]&&(e.peers[i.message.newUUID]=e.peers[i.message.oldUUID],delete e.peers[i.message.oldUUID]),i.message.userLeft)return o.onUserLeft(i.sender),void(i.message.autoCloseEntireSession&&e.leave());o.addNegotiatedMessage(i.message,i.sender)}}else e.deletePeer(i.sender)});var a=!1;e.socket.resetProps=function(){a=!1},e.socket.on("connect",function(){a||(a=!0,e.enableLogs,setTimeout(function(){e.socket.emit("extra-data-updated",e.extra)},1e3),n&&n(e.socket))}),e.socket.on("disconnect",function(n){e.onSocketDisconnect(n)}),e.socket.on("error",function(n){e.onSocketError(n)}),e.socket.on("user-disconnected",function(n){n!==e.userid&&(e.onUserStatusChanged({userid:n,status:"offline",extra:e.peers[n]&&e.peers[n].extra||{}}),e.deletePeer(n))}),e.socket.on("user-connected",function(n){n!==e.userid&&e.onUserStatusChanged({userid:n,status:"online",extra:e.peers[n]&&e.peers[n].extra||{}})}),e.socket.on("closed-entire-session",function(n,t){e.leave(),e.onEntireSessionClosed({sessionid:n,userid:n,extra:t})}),e.socket.on("userid-already-taken",function(n,t){e.onUserIdAlreadyTaken(n,t)}),e.socket.on("logs",function(n){e.enableLogs}),e.socket.on("number-of-broadcast-viewers-updated",function(n){e.onNumberOfBroadcastViewersUpdated(n)}),e.socket.on("set-isInitiator-true",function(n){n==e.sessionid&&(e.isInitiator=!0)})}function o(e){var n=this,t=["getAllParticipants","getLength","selectFirst","streams","send","forEach"];function i(){e.fbr=new FileBufferReader,e.fbr.onProgress=function(n){e.onFileProgress(n)},e.fbr.onBegin=function(n){e.onFileStart(n)},e.fbr.onEnd=function(n){e.onFileEnd(n)}}e.peers={getLength:function(){var e=0;for(var n in this)-1==t.indexOf(n)&&e++;return e},selectFirst:function(){var e;for(var n in this)-1==t.indexOf(n)&&(e=this[n]);return e},getAllParticipants:function(e){var n=[];for(var i in this)-1==t.indexOf(i)&&i!=e&&n.push(i);return n},forEach:function(n){this.getAllParticipants().forEach(function(t){n(e.peers[t])})},send:function(t,i){var o=this;if(!l(t.size)&&!l(t.type)){if(e.enableFileSharing)return void n.shareFile(t,i);"string"!=typeof t&&(t=JSON.stringify(t))}if("text"===t.type||t instanceof ArrayBuffer||t instanceof DataView){if("text"===t.type&&(t=JSON.stringify(t)),i){var r=e.peers[i];if(r)return r.channels.length?void r.channels.forEach(function(e){e.send(t)}):(e.peers[i].createDataChannel(),e.renegotiate(i),void setTimeout(function(){o.send(t,i)},3e3))}this.getAllParticipants().forEach(function(n){if(!o[n].channels.length)return e.peers[n].createDataChannel(),e.renegotiate(n),void setTimeout(function(){o[n].channels.forEach(function(e){e.send(t)})},3e3);o[n].channels.forEach(function(e){e.send(t)})})}else D.send({text:t,channel:this,connection:e,remoteUserId:i})}},this.uuid=e.userid,this.getLocalConfig=function(t,o,r){return r||(r={}),{streamsToShare:r.streamsToShare||{},rtcMultiConnection:e,connectionDescription:r.connectionDescription,userid:o,localPeerSdpConstraints:r.localPeerSdpConstraints,remotePeerSdpConstraints:r.remotePeerSdpConstraints,dontGetRemoteStream:!!r.dontGetRemoteStream,dontAttachLocalStream:!!r.dontAttachLocalStream,renegotiatingPeer:!!r.renegotiatingPeer,peerRef:r.peerRef,channels:r.channels||[],onLocalSdp:function(e){n.onNegotiationNeeded(e,o)},onLocalCandidate:function(t){(t=E.processCandidates(e,t))&&n.onNegotiationNeeded(t,o)},remoteSdp:t,onDataChannelMessage:function(t){if(!e.fbr&&e.enableFileSharing&&i(),"string"!=typeof t&&e.enableFileSharing){var r=this;t instanceof ArrayBuffer||t instanceof DataView?e.fbr.convertToObject(t,function(e){r.onDataChannelMessage(e)}):t.readyForNextChunk?e.fbr.getNextChunk(t,function(n,t){e.peers[o].channels.forEach(function(e){e.send(n)})},o):t.chunkMissing?e.fbr.chunkMissing(t):e.fbr.addChunk(t,function(n){e.peers[o].peer.channel.send(n)})}else n.onDataChannelMessage(t,o)},onDataChannelError:function(e){n.onDataChannelError(e,o)},onDataChannelOpened:function(e){n.onDataChannelOpened(e,o)},onDataChannelClosed:function(e){n.onDataChannelClosed(e,o)},onRemoteStream:function(t){e.peers[o]&&e.peers[o].streams.push(t),n.onGettingRemoteMedia(t,o)},onRemoteStreamRemoved:function(e){n.onRemovingRemoteMedia(e,o)},onPeerStateChanged:function(e){n.onPeerStateChanged(e),"new"===e.iceConnectionState&&n.onNegotiationStarted(o,e),"connected"===e.iceConnectionState&&n.onNegotiationCompleted(o,e),-1!==e.iceConnectionState.search(/closed|failed/gi)&&(n.onUserLeft(o),n.disconnectWith(o))}}},this.createNewPeer=function(n,t){if(!(e.maxParticipantsAllowed<=e.getAllParticipants().length)){if(t=t||{},e.isInitiator&&e.session.audio&&"two-way"===e.session.audio&&!t.streamsToShare&&(t.isOneWay=!1,t.isDataOnly=!1,t.session=e.session),!t.isOneWay&&!t.isDataOnly)return t.isOneWay=!0,void this.onNegotiationNeeded({enableMedia:!0,userPreferences:t},n);t=e.setUserPreferences(t,n);var i=this.getLocalConfig(null,n,t);e.peers[n]=new T(i)}},this.createAnsweringPeer=function(n,t,i){i=e.setUserPreferences(i||{},t);var o=this.getLocalConfig(n,t,i);e.peers[t]=new T(o)},this.renegotiatePeer=function(n,t,i){if(e.peers[n]){t||(t={}),t.renegotiatingPeer=!0,t.peerRef=e.peers[n].peer,t.channels=e.peers[n].channels;var o=this.getLocalConfig(i,n,t);e.peers[n]=new T(o)}else e.enableLogs},this.replaceTrack=function(n,t,i){if(!e.peers[t])throw"This peer ("+t+") does not exist.";var o=e.peers[t].peer;o.getSenders&&"function"==typeof o.getSenders&&o.getSenders().length?o.getSenders().forEach(function(o){i&&"video"===o.track.kind&&(e.peers[t].peer.lastVideoTrack=o.track,o.replaceTrack(n)),i||"audio"!==o.track.kind||(e.peers[t].peer.lastAudioTrack=o.track,o.replaceTrack(n))}):this.renegotiatePeer(t)},this.onNegotiationNeeded=function(e,n){},this.addNegotiatedMessage=function(t,i){if(t.type&&t.sdp)return"answer"==t.type&&e.peers[i]&&e.peers[i].addRemoteSdp(t),"offer"==t.type&&(t.renegotiatingPeer?this.renegotiatePeer(i,null,t):this.createAnsweringPeer(t,i)),void e.enableLogs;if(t.candidate)return e.peers[i]&&e.peers[i].addRemoteCandidate(t),void e.enableLogs;if(t.enableMedia){e.session=t.userPreferences.session||e.session,e.session.oneway&&e.attachStreams.length&&(e.attachStreams=[]),t.userPreferences.isDataOnly&&e.attachStreams.length&&(e.attachStreams.length=[]);var o={};e.attachStreams.forEach(function(e){o[e.streamid]={isAudio:!!e.isAudio,isVideo:!!e.isVideo,isScreen:!!e.isScreen}}),t.userPreferences.streamsToShare=o,n.onNegotiationNeeded({readyForOffer:!0,userPreferences:t.userPreferences},i)}t.readyForOffer&&e.onReadyForOffer(i,t.userPreferences)},this.onGettingRemoteMedia=function(e,n){},this.onRemovingRemoteMedia=function(e,n){},this.onGettingLocalMedia=function(e){},this.onLocalMediaError=function(n,t){e.onMediaError(n,t)},this.shareFile=function(n,t){i(),e.fbr.readAsArrayBuffer(n,function(n){var i=e.getAllParticipants();t&&(i=[t]),i.forEach(function(t){e.fbr.getNextChunk(n,function(n){e.peers[t].channels.forEach(function(e){e.send(n)})},t)})},{userid:e.userid,chunkSize:"Firefox"===DetectRTC.browser.name?15e3:e.chunkSize||0})};var o=new O(e);this.onDataChannelMessage=function(n,t){o.receive(JSON.parse(n),t,e.peers[t]?e.peers[t].extra:{})},this.onDataChannelClosed=function(n,t){n.userid=t,n.extra=e.peers[t]?e.peers[t].extra:{},e.onclose(n)},this.onDataChannelError=function(n,t){n.userid=t,event.extra=e.peers[t]?e.peers[t].extra:{},e.onerror(n)},this.onDataChannelOpened=function(n,t){e.peers[t].channels.length?e.peers[t].channels=[n]:(e.peers[t].channels.push(n),e.onopen({userid:t,extra:e.peers[t]?e.peers[t].extra:{},channel:n}))},this.onPeerStateChanged=function(n){e.onPeerStateChanged(n)},this.onNegotiationStarted=function(e,n){},this.onNegotiationCompleted=function(e,n){},this.getRemoteStreams=function(n){return n=n||e.peers.getAllParticipants()[0],e.peers[n]?e.peers[n].streams:[]}}function r(e,n,t){if("undefined"!=typeof CustomEvent){var i=new CustomEvent(n,{arguments:t,__exposedProps__:t});e.dispatchEvent(i)}}function a(e,n){n.stream&&n.stream&&n.stream.addEventListener&&(n.stream.addEventListener("mute",function(t){(t=e.streamEvents[n.streamid]).session={audio:"audio"===t.muteType,video:"video"===t.muteType},e.onmute(t)},!1),n.stream.addEventListener("unmute",function(t){(t=e.streamEvents[n.streamid]).session={audio:"audio"===t.unmuteType,video:"video"===t.unmuteType},e.onunmute(t)},!1))}function s(){if(window.crypto&&window.crypto.getRandomValues&&-1===navigator.userAgent.indexOf("Safari")){for(var e=window.crypto.getRandomValues(new Uint32Array(3)),n="",t=0,i=e.length;t=0,s=void 0!==window.InstallTrigger,d=/^((?!chrome|android).)*safari/i.test(i.userAgent),c=!!window.chrome&&!a,u="undefined"!=typeof document&&!!document.documentMode&&!r;function f(e,n){var t=0,i=!1,o=window.setInterval(function(){e()&&(window.clearInterval(o),n(i)),t++>50&&(window.clearInterval(o),n(i=!0))},10)}var l={Android:function(){return i.userAgent.match(/Android/i)},BlackBerry:function(){return i.userAgent.match(/BlackBerry|BB10/i)},iOS:function(){return i.userAgent.match(/iPhone|iPad|iPod/i)},Opera:function(){return i.userAgent.match(/Opera Mini/i)},Windows:function(){return i.userAgent.match(/IEMobile/i)},any:function(){return l.Android()||l.BlackBerry()||l.iOS()||l.Opera()||l.Windows()},getOsName:function(){var e="Unknown OS";return l.Android()&&(e="Android"),l.BlackBerry()&&(e="BlackBerry"),l.iOS()&&(e="iOS"),l.Opera()&&(e="Opera Mini"),l.Windows()&&(e="Windows"),e}};var m="Unknown OS",p="Unknown OS Version";var v,g,h=function(){for(var e,n=i.appVersion,t=i.userAgent,o="-",r=[{s:"Windows 10",r:/(Windows 10.0|Windows NT 10.0)/},{s:"Windows 8.1",r:/(Windows 8.1|Windows NT 6.3)/},{s:"Windows 8",r:/(Windows 8|Windows NT 6.2)/},{s:"Windows 7",r:/(Windows 7|Windows NT 6.1)/},{s:"Windows Vista",r:/Windows NT 6.0/},{s:"Windows Server 2003",r:/Windows NT 5.2/},{s:"Windows XP",r:/(Windows NT 5.1|Windows XP)/},{s:"Windows 2000",r:/(Windows NT 5.0|Windows 2000)/},{s:"Windows ME",r:/(Win 9x 4.90|Windows ME)/},{s:"Windows 98",r:/(Windows 98|Win98)/},{s:"Windows 95",r:/(Windows 95|Win95|Windows_95)/},{s:"Windows NT 4.0",r:/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/},{s:"Windows CE",r:/Windows CE/},{s:"Windows 3.11",r:/Win16/},{s:"Android",r:/Android/},{s:"Open BSD",r:/OpenBSD/},{s:"Sun OS",r:/SunOS/},{s:"Linux",r:/(Linux|X11)/},{s:"iOS",r:/(iPhone|iPad|iPod)/},{s:"Mac OS X",r:/Mac OS X/},{s:"Mac OS",r:/(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/},{s:"QNX",r:/QNX/},{s:"UNIX",r:/UNIX/},{s:"BeOS",r:/BeOS/},{s:"OS/2",r:/OS\/2/},{s:"Search Bot",r:/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/}],a=0;e=r[a];a++)if(e.r.test(t)){o=e.s;break}var s="-";switch(/Windows/.test(o)&&(/Windows (.*)/.test(o)&&(s=/Windows (.*)/.exec(o)[1]),o="Windows"),o){case"Mac OS X":/Mac OS X (10[\.\_\d]+)/.test(t)&&(s=/Mac OS X (10[\.\_\d]+)/.exec(t)[1]);break;case"Android":/Android ([\.\_\d]+)/.test(t)&&(s=/Android ([\.\_\d]+)/.exec(t)[1]);break;case"iOS":/OS (\d+)_(\d+)_?(\d+)?/.test(t)&&(s=(s=/OS (\d+)_(\d+)_?(\d+)?/.exec(n))[1]+"."+s[2]+"."+(0|s[3]))}return{osName:o,osVersion:s}}();h&&h.osName&&"-"!=h.osName?(m=h.osName,p=h.osVersion):l.any()&&"Android"==(m=l.getOsName())&&(p=!!(g=(v=(v||i.userAgent).toLowerCase()).match(/android\s([0-9\.]*)/))&&g[1]);var S="object"==typeof process&&"object"==typeof process.versions&&process.versions.node;"Unknown OS"===m&&S&&(m="Nodejs",p=process.versions.node.toString().replace("v",""));var w=!1,C=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach(function(e){"undefined"!=typeof document&&"function"==typeof document.createElement&&(!w&&e in document.createElement("canvas")&&(w=!0),!C&&e in document.createElement("video")&&(C=!0))});var b=/^(192\.168\.|169\.254\.|10\.|172\.(1[6-9]|2\d|3[01]))/,y=/([0-9]{1,3}(\.[0-9]{1,3}){3})/,T=/[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7}/;var R=[],E=[],M=[],x=[];i.mediaDevices&&i.mediaDevices.enumerateDevices&&(i.enumerateDevices=function(e){var n=i.mediaDevices.enumerateDevices();n&&n.then?i.mediaDevices.enumerateDevices().then(e).catch(function(){e([])}):e([])});var P=!1;void 0!==k&&"getSources"in k?P=!0:i.mediaDevices&&i.mediaDevices.enumerateDevices&&(P=!0);var O=!1,D=!1,A=!1,L=!1,U=!1;function I(e){if(P)if(!i.enumerateDevices&&window.MediaStreamTrack&&window.MediaStreamTrack.getSources&&(i.enumerateDevices=window.MediaStreamTrack.getSources.bind(window.MediaStreamTrack)),!i.enumerateDevices&&i.enumerateDevices&&(i.enumerateDevices=i.enumerateDevices.bind(i)),i.enumerateDevices){R=[],E=[],M=[],x=[],O=!1,D=!1,A=!1,L=!1,U=!1;var n={};i.enumerateDevices(function(t){t.forEach(function(e){var t={};for(var i in e)try{"function"!=typeof e[i]&&(t[i]=e[i])}catch(e){}n[t.deviceId+t.label+t.kind]||("audio"===t.kind&&(t.kind="audioinput"),"video"===t.kind&&(t.kind="videoinput"),t.deviceId||(t.deviceId=t.id),t.id||(t.id=t.deviceId),t.label?("videoinput"!==t.kind||U||(U=!0),"audioinput"!==t.kind||L||(L=!0)):(t.isCustomLabel=!0,"videoinput"===t.kind?t.label="Camera "+(x.length+1):"audioinput"===t.kind?t.label="Microphone "+(E.length+1):"audiooutput"===t.kind?t.label="Speaker "+(M.length+1):t.label="Please invoke getUserMedia once.",void 0!==N&&N.browser.isChrome&&N.browser.version>=46&&!/^(https:|chrome-extension:)$/g.test(location.protocol||"")&&"undefined"!=typeof document&&"string"==typeof document.domain&&document.domain.search&&-1===document.domain.search(/localhost|127.0./g)&&(t.label="HTTPs is required to get label of this "+t.kind+" device.")),"audioinput"===t.kind&&(O=!0,-1===E.indexOf(t)&&E.push(t)),"audiooutput"===t.kind&&(D=!0,-1===M.indexOf(t)&&M.push(t)),"videoinput"===t.kind&&(A=!0,-1===x.indexOf(t)&&x.push(t)),R.push(t),n[t.deviceId+t.label+t.kind]=t)}),void 0!==N&&(N.MediaDevices=R,N.hasMicrophone=O,N.hasSpeakers=D,N.hasWebcam=A,N.isWebsiteHasWebcamPermissions=U,N.isWebsiteHasMicrophonePermissions=L,N.audioInputDevices=E,N.audioOutputDevices=M,N.videoInputDevices=x),e&&e()})}else e&&e();else e&&e()}var N=window.DetectRTC||{};N.browser=function(){i.appVersion;var e,n,t,o=i.userAgent,f=i.appName,l=""+parseFloat(i.appVersion),m=parseInt(i.appVersion,10);if(d&&!c&&-1!==o.indexOf("CriOS")&&(d=!1,c=!0),a){f="Opera";try{m=(l=i.userAgent.split("OPR/")[1].split(" ")[0]).split(".")[0]}catch(e){l="0.0.0.0",m=0}}else u?((n=o.indexOf("rv:"))>0?l=o.substring(n+3):(n=o.indexOf("MSIE"),l=o.substring(n+5)),f="IE"):c?(n=o.indexOf("Chrome"),f="Chrome",l=o.substring(n+7)):d?(n=o.indexOf("Safari"),f="Safari",l=o.substring(n+7),-1!==(n=o.indexOf("Version"))&&(l=o.substring(n+8)),-1!==i.userAgent.indexOf("Version/")&&(l=i.userAgent.split("Version/")[1].split(" ")[0])):s?(n=o.indexOf("Firefox"),f="Firefox",l=o.substring(n+8)):(e=o.lastIndexOf(" ")+1)<(n=o.lastIndexOf("/"))&&(f=o.substring(e,n),l=o.substring(n+1),f.toLowerCase()===f.toUpperCase()&&(f=i.appName));return r&&(f="Edge",l=i.userAgent.split("Edge/")[1]),-1!==(t=l.search(/[; \)]/))&&(l=l.substring(0,t)),m=parseInt(""+l,10),isNaN(m)&&(l=""+parseFloat(i.appVersion),m=parseInt(i.appVersion,10)),{fullVersion:l,version:m,name:f,isPrivateBrowsing:!1}}(),function(e){var n;try{if(window.webkitRequestFileSystem)window.webkitRequestFileSystem(window.TEMPORARY,1,function(){n=!1},function(e){n=!0});else if(window.indexedDB&&/Firefox/.test(window.navigator.userAgent)){var t;try{(t=window.indexedDB.open("test")).onerror=function(){return!0}}catch(e){n=!0}void 0===n&&f(function(){return"done"===t.readyState},function(e){e||(n=!t.result)})}else if(function(e){var n=e.toLowerCase();if(0===n.indexOf("msie")&&0===n.indexOf("trident"))return!1;var t=/(?:msie|rv:)\s?([\d\.]+)/.exec(n);return!!(t&&parseInt(t[1],10)>=10)}(window.navigator.userAgent)){n=!1;try{window.indexedDB||(n=!0)}catch(e){n=!0}}else if(window.localStorage&&/Safari/.test(window.navigator.userAgent)){try{window.localStorage.setItem("test",1)}catch(e){n=!0}void 0===n&&(n=!1,window.localStorage.removeItem("test"))}}catch(e){n=!1}f(function(){return void 0!==n},function(t){e(n)})}(function(e){N.browser.isPrivateBrowsing=!!e}),N.browser["is"+N.browser.name]=!0,N.osName=m,N.osVersion=p;"object"==typeof process&&"object"==typeof process.versions&&process.versions["node-webkit"];var W=!1;["RTCPeerConnection","webkitRTCPeerConnection","mozRTCPeerConnection","RTCIceGatherer"].forEach(function(e){W||e in window&&(W=!0)}),N.isWebRTCSupported=W,N.isORTCSupported="undefined"!=typeof RTCIceGatherer;var V=!1;(N.browser.isChrome&&N.browser.version>=35?V=!0:N.browser.isFirefox&&N.browser.version>=34?V=!0:N.browser.isEdge&&N.browser.version>=17?V=!0:"Android"===N.osName&&N.browser.isChrome&&(V=!0),/^(https:|chrome-extension:)$/g.test(location.protocol||""))||("undefined"!=typeof document&&"string"==typeof document.domain&&document.domain.search&&-1===document.domain.search(/localhost|127.0./g)&&(N.browser.isChrome||N.browser.isEdge||N.browser.isOpera)?V=!1:N.browser.isFirefox&&(V=!1));N.isScreenCapturingSupported=V;var B={isSupported:!1,isCreateMediaStreamSourceSupported:!1};["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"].forEach(function(e){B.isSupported||e in window&&(B.isSupported=!0,window[e]&&"createMediaStreamSource"in window[e].prototype&&(B.isCreateMediaStreamSourceSupported=!0))}),N.isAudioContextSupported=B.isSupported,N.isCreateMediaStreamSourceSupported=B.isCreateMediaStreamSourceSupported;var F=!1;N.browser.isChrome&&N.browser.version>31&&(F=!0),N.isRtpDataChannelsSupported=F;var q=!1;N.browser.isFirefox&&N.browser.version>28?q=!0:N.browser.isChrome&&N.browser.version>25?q=!0:N.browser.isOpera&&N.browser.version>=11&&(q=!0),N.isSctpDataChannelsSupported=q,N.isMobileDevice=o;var G=!1;i.getUserMedia?G=!0:i.mediaDevices&&i.mediaDevices.getUserMedia&&(G=!0),N.browser.isChrome&&N.browser.version>=46&&!/^(https:|chrome-extension:)$/g.test(location.protocol||"")&&"undefined"!=typeof document&&"string"==typeof document.domain&&document.domain.search&&-1===document.domain.search(/localhost|127.0./g)&&(G="Requires HTTPs"),"Nodejs"===N.osName&&(G=!1),N.isGetUserMediaSupported=G;var j,H,z,_="";screen.width&&(_+=(screen.width?screen.width:"")+" x "+(screen.height?screen.height:""));N.displayResolution=_,N.displayAspectRatio=(j=screen.width,H=screen.height,z=function e(n,t){return 0==t?n:e(t,n%t)}(j,H),j/z/(H/z)).toFixed(2),N.isCanvasSupportsStreamCapturing=w,N.isVideoSupportsStreamCapturing=C,"Chrome"==N.browser.name&&N.browser.version>=53&&(N.isCanvasSupportsStreamCapturing||(N.isCanvasSupportsStreamCapturing="Requires chrome flag: enable-experimental-web-platform-features"),N.isVideoSupportsStreamCapturing||(N.isVideoSupportsStreamCapturing="Requires chrome flag: enable-experimental-web-platform-features")),N.DetectLocalIPAddress=function(e,n){if(N.isWebRTCSupported){var t=!0,i=!0;!function(e,n){if("undefined"!=typeof document&&"function"==typeof document.getElementById){var t={},i=window.RTCPeerConnection||window.mozRTCPeerConnection||window.webkitRTCPeerConnection;if(!i){var o=document.getElementById("iframe");if(!o)return;var r=o.contentWindow;i=r.RTCPeerConnection||r.mozRTCPeerConnection||r.webkitRTCPeerConnection}if(i){var a=null;"Chrome"===N.browser&&N.browser.version<58&&(a={optional:[{RtpDataChannels:!0}]});var s=new i({iceServers:[{urls:"stun:stun.l.google.com:19302"}]},a);if(n&&(s.addStream?s.addStream(n):s.addTrack&&n.getTracks()[0]&&s.addTrack(n.getTracks()[0],n)),s.onicecandidate=function(e){e.candidate&&e.candidate.candidate?d(e.candidate.candidate):d()},!n)try{s.createDataChannel("sctp",{})}catch(e){}N.isPromisesSupported?s.createOffer().then(function(e){s.setLocalDescription(e).then(c)}):s.createOffer(function(e){s.setLocalDescription(e,c,function(){})},function(){})}}function d(n){if(n){var i=y.exec(n);if(i){var o=i[1],r=n.match(b);void 0===t[o]&&e(o,r,!0),t[o]=!0}}else e()}function c(){var e=s.localDescription.sdp.split("\n");e.forEach(function(e){e&&0===e.indexOf("a=candidate:")&&d(e)})}}(function(n){n?n.match(b)?e("Local: "+n,t=!1,i):n.match(T)?e("Public: "+n,t,i=!1):e("Public: "+n,t,i):e()},n)}},N.isWebSocketsSupported="WebSocket"in window&&2===window.WebSocket.CLOSING,N.isWebSocketsBlocked=!N.isWebSocketsSupported,"Nodejs"===N.osName&&(N.isWebSocketsSupported=!0,N.isWebSocketsBlocked=!1),N.checkWebSocketsSupport=function(e){e=e||function(){};try{var n,t=new WebSocket("wss://echo.websocket.org:443/");t.onopen=function(){N.isWebSocketsBlocked=!1,n=(new Date).getTime(),t.send("ping")},t.onmessage=function(){N.WebsocketLatency=(new Date).getTime()-n+"ms",e(),t.close(),t=null},t.onerror=function(){N.isWebSocketsBlocked=!0,e()}}catch(n){N.isWebSocketsBlocked=!0,e()}},N.load=function(e){I(e=e||function(){})},N.MediaDevices=void 0!==R?R:[],N.hasMicrophone=O,N.hasSpeakers=D,N.hasWebcam=A,N.isWebsiteHasWebcamPermissions=U,N.isWebsiteHasMicrophonePermissions=L,N.audioInputDevices=E,N.audioOutputDevices=M,N.videoInputDevices=x;var X=!1;"undefined"!=typeof document&&"function"==typeof document.createElement&&"setSinkId"in document.createElement("video")&&(X=!0),N.isSetSinkIdSupported=X;var J=!1;N.browser.isFirefox&&"undefined"!=typeof mozRTCPeerConnection?"getSenders"in mozRTCPeerConnection.prototype&&(J=!0):N.browser.isChrome&&"undefined"!=typeof webkitRTCPeerConnection&&"getSenders"in webkitRTCPeerConnection.prototype&&(J=!0),N.isRTPSenderReplaceTracksSupported=J;var K=!1;N.browser.isFirefox&&N.browser.version>38&&(K=!0),N.isRemoteStreamProcessingSupported=K;var Y=!1;void 0!==k&&"applyConstraints"in k.prototype&&(Y=!0),N.isApplyConstraintsSupported=Y;var $=!1;N.browser.isFirefox&&N.browser.version>=43&&($=!0),N.isMultiMonitorScreenCapturingSupported=$,N.isPromisesSupported=!!("Promise"in window),N.version="1.3.9",void 0===N&&(window.DetectRTC={});var Q=window.MediaStream;void 0===Q&&"undefined"!=typeof webkitMediaStream&&(Q=webkitMediaStream),N.MediaStream=void 0!==Q&&"function"==typeof Q&&Object.keys(Q.prototype),N.MediaStreamTrack=void 0!==k&&Object.keys(k.prototype);var Z=window.RTCPeerConnection||window.mozRTCPeerConnection||window.webkitRTCPeerConnection;N.RTCPeerConnection=void 0!==Z&&Object.keys(Z.prototype),window.DetectRTC=N,"undefined"!=typeof module&&(module.exports=N),"function"==typeof define&&define.amd&&define("DetectRTC",[],function(){return N})}(),"undefined"!=typeof cordova&&(DetectRTC.isMobileDevice=!0,DetectRTC.browser.name="Chrome"),navigator&&navigator.userAgent&&-1!==navigator.userAgent.indexOf("Crosswalk")&&(DetectRTC.isMobileDevice=!0,DetectRTC.browser.name="Chrome"),window.addEventListener||(window.addEventListener=function(e,n,t){e.attachEvent&&e.attachEvent("on"+n,t)}),window.attachEventListener=function(e,n,t,i){e.addEventListener(n,t,i)};var m=window.MediaStream;function p(e,n){return(!e.session.audio||"two-way"!==e.session.audio)&&("Firefox"===DetectRTC.browser.name&&!1!==n||!("Chrome"!==DetectRTC.browser.name||DetectRTC.browser.version<50)&&(!0===typeof n||!(void 0!==n||!e.session.audio||!e.session.screen||e.session.video)&&(n=!0,!0)))}function v(e,n){return e&&e.getTracks?e.getTracks().filter(function(e){return e.kind===(n||"audio")}):[]}function g(){var e=!1;try{if("undefined"==typeof RTCRtpTransceiver)return!1;if(!("currentDirection"in RTCRtpTransceiver.prototype))return!1;var n=new S;try{n.addTransceiver("audio"),e=!0}catch(e){}n.close()}catch(n){e=!1}return e&&function(){var e=!1;try{var n=new S({sdpSemantics:"unified-plan"});try{var t=n.getConfiguration();e="unified-plan"==t.sdpSemantics||(t.sdpSemantics,!1)}catch(n){e=!1}}catch(n){e=!1}return e}()}function h(){if("undefined"!=typeof cordova&&void 0!==cordova.plugins&&void 0!==cordova.plugins.iosrtc){var e=cordova.plugins.iosrtc;window.webkitRTCPeerConnection=e.RTCPeerConnection,window.RTCSessionDescription=e.RTCSessionDescription,window.RTCIceCandidate=e.RTCIceCandidate,window.MediaStream=e.MediaStream,window.MediaStreamTrack=e.MediaStreamTrack,navigator.getUserMedia=navigator.webkitGetUserMedia=e.getUserMedia,e.debug.enable("iosrtc*"),"function"==typeof e.selectAudioOutput&&e.selectAudioOutput(window.iOSDefaultAudioOutputDevice||"speaker"),e.registerGlobals()}}void 0===m&&"undefined"!=typeof webkitMediaStream&&(m=webkitMediaStream),void 0!==m&&("stop"in m.prototype||(m.prototype.stop=function(){this.getTracks().forEach(function(e){e.stop()})})),window.iOSDefaultAudioOutputDevice=window.iOSDefaultAudioOutputDevice||"speaker",document.addEventListener("deviceready",h,!1),h();var S,w={};function C(e){return{OfferToReceiveAudio:!!e.OfferToReceiveAudio,OfferToReceiveVideo:!!e.OfferToReceiveVideo}}void 0!==window.RTCPeerConnection?S=window.RTCPeerConnection:"undefined"!=typeof mozRTCPeerConnection?S=mozRTCPeerConnection:"undefined"!=typeof webkitRTCPeerConnection&&(S=webkitRTCPeerConnection);var b=window.RTCSessionDescription||window.mozRTCSessionDescription,y=window.RTCIceCandidate||window.mozRTCIceCandidate,k=window.MediaStreamTrack;function T(e){if(void 0!==window.RTCPeerConnection?S=window.RTCPeerConnection:"undefined"!=typeof mozRTCPeerConnection?S=mozRTCPeerConnection:"undefined"!=typeof webkitRTCPeerConnection&&(S=webkitRTCPeerConnection),b=window.RTCSessionDescription||window.mozRTCSessionDescription,y=window.RTCIceCandidate||window.mozRTCIceCandidate,k=window.MediaStreamTrack,!S)throw"WebRTC 1.0 (RTCPeerConnection) API are NOT available in this browser.";var n=e.rtcMultiConnection;this.extra=e.remoteSdp?e.remoteSdp.extra:n.extra,this.userid=e.userid,this.streams=[],this.channels=e.channels||[],this.connectionDescription=e.connectionDescription,this.addStream=function(e){n.addStream(e,t.userid)},this.removeStream=function(e){n.removeStream(e,t.userid)};var t=this;e.remoteSdp&&(this.connectionDescription=e.remoteSdp.connectionDescription);var i,o={};w.sdpConstraints=C({OfferToReceiveAudio:!0,OfferToReceiveVideo:!0});var r=!!e.renegotiatingPeer;e.remoteSdp&&(r=!!e.remoteSdp.renegotiatingPeer);var a=[];if(n.attachStreams.forEach(function(e){e&&a.push(e)}),r)i=e.peerRef;else{var s="all";(n.candidates.turn||n.candidates.relay)&&(n.candidates.stun||n.candidates.reflexive||n.candidates.host||(s="relay"));try{var d={iceServers:n.iceServers,iceTransportPolicy:n.iceTransportPolicy||s};void 0!==n.iceCandidatePoolSize&&(d.iceCandidatePoolSize=n.iceCandidatePoolSize),void 0!==n.bundlePolicy&&(d.bundlePolicy=n.bundlePolicy),void 0!==n.rtcpMuxPolicy&&(d.rtcpMuxPolicy=n.rtcpMuxPolicy),n.sdpSemantics&&(d.sdpSemantics=n.sdpSemantics||"unified-plan"),n.iceServers&&n.iceServers.length||(d=null,n.optionalArgument=null),i=new S(d,n.optionalArgument)}catch(e){try{d={iceServers:n.iceServers};i=new S(d)}catch(e){i=new S}}}!i.getRemoteStreams&&i.getReceivers&&(i.getRemoteStreams=function(){var e=new m;return i.getReceivers().forEach(function(n){e.addTrack(n.track)}),[e]}),!i.getLocalStreams&&i.getSenders&&(i.getLocalStreams=function(){var e=new m;return i.getSenders().forEach(function(n){e.addTrack(n.track)}),[e]}),i.onicecandidate=function(o){if(o.candidate)n.trickleIce&&e.onLocalCandidate({candidate:o.candidate.candidate,sdpMid:o.candidate.sdpMid,sdpMLineIndex:o.candidate.sdpMLineIndex});else if(!n.trickleIce){var r=i.localDescription;e.onLocalSdp({type:r.type,sdp:r.sdp,remotePeerSdpConstraints:e.remotePeerSdpConstraints||!1,renegotiatingPeer:!!e.renegotiatingPeer||!1,connectionDescription:t.connectionDescription,dontGetRemoteStream:!!e.dontGetRemoteStream,extra:n?n.extra:{},streamsToShare:p})}},a.forEach(function(o){e.remoteSdp&&e.remoteSdp.remotePeerSdpConstraints&&e.remoteSdp.remotePeerSdpConstraints.dontGetRemoteStream||e.dontAttachLocalStream||(o=n.beforeAddingStream(o,t))&&(i.getLocalStreams().forEach(function(e){o&&e.id==o.id&&(o=null)}),o&&o.getTracks&&o.getTracks().forEach(function(e){try{i.addTrack(e,o)}catch(e){}}))}),i.oniceconnectionstatechange=i.onsignalingstatechange=function(){var o=t.extra;n.peers[t.userid]&&(o=n.peers[t.userid].extra||o),i&&(e.onPeerStateChanged({iceConnectionState:i.iceConnectionState,iceGatheringState:i.iceGatheringState,signalingState:i.signalingState,extra:o,userid:t.userid}),i&&i.iceConnectionState&&-1!==i.iceConnectionState.search(/closed|failed/gi)&&t.streams instanceof Array&&t.streams.forEach(function(e){var t=n.streamEvents[e.id]||{streamid:e.id,stream:e,type:"remote"};n.onstreamended(t)}))};var c={OfferToReceiveAudio:!!a.length,OfferToReceiveVideo:!!a.length};e.localPeerSdpConstraints&&(c=e.localPeerSdpConstraints),w.sdpConstraints=C(c);var u={};i.ontrack=function(n){if(n&&"track"===n.type)if(n.stream=n.streams[n.streams.length-1],n.stream.id||(n.stream.id=n.track.id),u[n.stream.id]&&"Safari"!==DetectRTC.browser.name)n.track&&(n.track.onended=function(){i&&i.onremovestream(n)});else{u[n.stream.id]=n.stream.id;var t={};e.remoteSdp&&e.remoteSdp.streamsToShare?t=e.remoteSdp.streamsToShare:e.streamsToShare&&(t=e.streamsToShare);var r=t[n.stream.id];r?(n.stream.isAudio=r.isAudio,n.stream.isVideo=r.isVideo,n.stream.isScreen=r.isScreen):(n.stream.isVideo=!!v(n.stream,"video").length,n.stream.isAudio=!n.stream.isVideo,n.stream.isScreen=!1),n.stream.streamid=n.stream.id,o[n.stream.id]=n.stream,e.onRemoteStream(n.stream),n.stream.getTracks().forEach(function(e){e.onended=function(){i&&i.onremovestream(n)}}),n.stream.onremovetrack=function(){i&&i.onremovestream(n)}}},i.onremovestream=function(n){n.stream.streamid=n.stream.id,o[n.stream.id]&&delete o[n.stream.id],e.onRemoteStreamRemoved(n.stream)},"function"!=typeof i.removeStream&&(i.removeStream=function(e){e.getTracks().forEach(function(n){i.removeTrack(n,e)})}),this.addRemoteCandidate=function(e){i.addIceCandidate(new y(e))},this.addRemoteSdp=function(e,t){t=t||function(){},"Safari"!==DetectRTC.browser.name&&(e.sdp=n.processSdp(e.sdp)),i.setRemoteDescription(new b(e)).then(t,function(e){n.enableLogs,t()}).catch(function(e){n.enableLogs,t()})};var f=!0;function l(n){n.binaryType="arraybuffer",n.onmessage=function(n){e.onDataChannelMessage(n.data)},n.onopen=function(){e.onDataChannelOpened(n)},n.onerror=function(n){e.onDataChannelError(n)},n.onclose=function(n){e.onDataChannelClosed(n)},n.internalSend=n.send,n.send=function(e){"open"===n.readyState&&n.internalSend(e)},i.channel=n}e.remoteSdp&&(f=!1),this.createDataChannel=function(){l(i.createDataChannel("sctp",{}))},!0!==n.session.data||r||(f?this.createDataChannel():i.ondatachannel=function(e){l(e.channel)}),this.enableDisableVideoEncoding=function(e){var n;if(i.getSenders().forEach(function(e){n||"video"!==e.track.kind||(n=e)}),n&&n.getParameters){var t=n.getParameters();t.encodings[1]&&(t.encodings[1].active=!!e),t.encodings[2]&&(t.encodings[2].active=!!e),n.setParameters(t)}},e.remoteSdp&&(e.remoteSdp.remotePeerSdpConstraints&&(c=e.remoteSdp.remotePeerSdpConstraints),w.sdpConstraints=C(c),this.addRemoteSdp(e.remoteSdp,function(){g("createAnswer")})),"two-way"!=n.session.audio&&"two-way"!=n.session.video&&"two-way"!=n.session.screen||(w.sdpConstraints=C({OfferToReceiveAudio:"two-way"==n.session.audio||e.remoteSdp&&e.remoteSdp.remotePeerSdpConstraints&&e.remoteSdp.remotePeerSdpConstraints.OfferToReceiveAudio,OfferToReceiveVideo:"two-way"==n.session.video||"two-way"==n.session.screen||e.remoteSdp&&e.remoteSdp.remotePeerSdpConstraints&&e.remoteSdp.remotePeerSdpConstraints.OfferToReceiveAudio}));var p={};function g(o){i[o](w.sdpConstraints).then(function(o){"Safari"!==DetectRTC.browser.name&&(o.sdp=n.processSdp(o.sdp)),i.setLocalDescription(o).then(function(){n.trickleIce&&(e.onLocalSdp({type:o.type,sdp:o.sdp,remotePeerSdpConstraints:e.remotePeerSdpConstraints||!1,renegotiatingPeer:!!e.renegotiatingPeer||!1,connectionDescription:t.connectionDescription,dontGetRemoteStream:!!e.dontGetRemoteStream,extra:n?n.extra:{},streamsToShare:p}),n.onSettingLocalDescription(t))},function(e){n.enableLogs})},function(e){n.enableLogs})}i.getLocalStreams().forEach(function(e){p[e.streamid]={isAudio:!!e.isAudio,isVideo:!!e.isVideo,isScreen:!!e.isScreen}}),f&&g("createOffer"),i.nativeClose=i.close,i.close=function(){if(i){try{i.nativeClose!==i.close&&i.nativeClose()}catch(e){}i=null,t.peer=null}},this.peer=i}var R=function(){function e(e,i){var o=t(e);return o.videoCodecNumbers?"vp8"===i&&o.vp8LineNumber===o.videoCodecNumbers[0]?e:"vp9"===i&&o.vp9LineNumber===o.videoCodecNumbers[0]?e:"h264"===i&&o.h264LineNumber===o.videoCodecNumbers[0]?e:e=n(e,i,o):e}function n(e,n,t,i){var o="";if("vp8"===n){if(!t.vp8LineNumber)return e;o=t.vp8LineNumber}if("vp9"===n){if(!t.vp9LineNumber)return e;o=t.vp9LineNumber}if("h264"===n){if(!t.h264LineNumber)return e;o=t.h264LineNumber}var r=t.videoCodecNumbersOriginal.split("SAVPF")[0]+"SAVPF ",a=[o];return i&&(a=[]),t.videoCodecNumbers.forEach(function(e){e!==o&&a.push(e)}),r+=a.join(" "),e=e.replace(t.videoCodecNumbersOriginal,r)}function t(e){var n={};return e.split("\n").forEach(function(e){0===e.indexOf("m=video")&&(n.videoCodecNumbers=[],e.split("SAVPF")[1].split(" ").forEach(function(t){(t=t.trim())&&t.length&&(n.videoCodecNumbers.push(t),n.videoCodecNumbersOriginal=e)})),-1===e.indexOf("VP8/90000")||n.vp8LineNumber||(n.vp8LineNumber=e.replace("a=rtpmap:","").split(" ")[0]),-1===e.indexOf("VP9/90000")||n.vp9LineNumber||(n.vp9LineNumber=e.replace("a=rtpmap:","").split(" ")[0]),-1===e.indexOf("H264/90000")||n.h264LineNumber||(n.h264LineNumber=e.replace("a=rtpmap:","").split(" ")[0])}),n}function i(e,n,t){return function(e,n,t,i,o){for(var r=-1!==t?t:e.length,a=n;a=t||setTimeout(function(){i(),e(n,t,i,o)},n)}(200,5,function(){try{e.volume+=.2}catch(n){e.volume=1}})}}(),void 0!==o&&"audio"!=o||v(n,"audio").forEach(function(e){e.enabled=!0,i.streamEvents[n.streamid].isAudioMuted=!1}),void 0!==o&&"video"!=o||(v(n,"video").forEach(function(e){e.enabled=!0}),void 0!==o&&"video"==o&&i.streamEvents[n.streamid].isAudioMuted&&function e(t){t||(t=0),++t<100&&i.streamEvents[n.streamid].isAudioMuted&&(n.mute("audio"),setTimeout(function(){e(t)},50))}()),void 0!==t&&1!=t||P.onSyncNeeded(n.streamid,"unmute",o),i.streamEvents[n.streamid].unmuteType=o||"both",r(n,"unmute",o)}}},onSyncNeeded:function(e,n,t){}}}();function O(e){var n={};return{receive:function(t,i,o){var r=t.uuid;if(n[r]||(n[r]=[]),n[r].push(t.message),t.last){var a=n[r].join("");t.isobject&&(a=JSON.parse(a));var s={data:a,userid:i,extra:o,latency:(new Date).getTime()-t.sendingTime};e.autoTranslateText?(s.original=s.data,e.Translator.TranslateText(s.data,function(n){s.data=n,e.onmessage(s)})):e.onmessage(s),delete n[r]}}}}var D={send:function(e){var n=e.connection,t=e.channel,i=e.remoteUserId,o=e.text,r=n.chunkSize||1e3,a="",d=!1;"string"!=typeof o&&(d=!0,o=JSON.stringify(o));var c=s(),u=(new Date).getTime();!function e(o,s){var f={type:"text",uuid:c,sendingTime:u};o&&(s=o,f.packets=parseInt(s.length/r));s.length>r?f.message=s.slice(0,r):(f.message=s,f.last=!0,f.isobject=d);t.send(f,i);a=s.slice(f.message.length);a.length&&setTimeout(function(){e(null,a)},n.chunkInterval||100)}(o)}},A=function(){return{handle:function(e){var n={};e.onFileStart=function(t){var i=document.createElement("div");if(i.title=t.name,i.innerHTML=" ",t.remoteUserId&&(i.innerHTML+=" (Sharing with:"+t.remoteUserId+")"),e.filesContainer||(e.filesContainer=document.body||document.documentElement),e.filesContainer.insertBefore(i,e.filesContainer.firstChild),!t.remoteUserId)return n[t.uuid]={div:i,progress:i.querySelector("progress"),label:i.querySelector("label")},void(n[t.uuid].progress.max=t.maxChunks);n[t.uuid]||(n[t.uuid]={}),n[t.uuid][t.remoteUserId]={div:i,progress:i.querySelector("progress"),label:i.querySelector("label")},n[t.uuid][t.remoteUserId].progress.max=t.maxChunks},e.onFileProgress=function(e){var t=n[e.uuid];t&&(e.remoteUserId&&!(t=n[e.uuid][e.remoteUserId])||(t.progress.value=e.currentPosition||e.maxChunks||t.progress.max,function(e,n){if(-1!==e.position){var t=+e.position.toFixed(2).split(".")[1]||100;n.innerHTML=t+"%"}}(t.progress,t.label)))},e.onFileEnd=function(t){var i=n[t.uuid];if(i&&(!t.remoteUserId||(i=n[t.uuid][t.remoteUserId]))){var o=i.div;-1!=t.type.indexOf("image")?o.innerHTML='Download '+t.name+'
':o.innerHTML='Download '+t.name+'
',e.filesContainer.insertAdjacentElement("beforebegin",o)}}}}}(),L=function(){return{handle:function(e){e.autoTranslateText=!1,e.language="en",e.googKey="AIzaSyCgB5hmFY74WYB-EoWkhr9cAGr6TiTHrEE",e.Translator={TranslateText:function(n,t){var i=document.createElement("script");i.type="text/javascript";var o=encodeURIComponent(n),r="method"+e.token();window[r]=function(e){e.data&&e.data.translations[0]&&t?t(e.data.translations[0].translatedText):e.error&&"Daily Limit Exceeded"===e.error.message||e.error};var a="https://www.googleapis.com/language/translate/v2?key="+e.googKey+"&target="+(e.language||"en-US")+"&callback=window."+r+"&q="+o;i.src=a,document.getElementsByTagName("head")[0].appendChild(i)},getListOfLanguages:function(n){var t=new XMLHttpRequest;t.onreadystatechange=function(){if(t.readyState==XMLHttpRequest.DONE){var e=JSON.parse(t.responseText);if(e&&e.data&&e.data.languages)return void n(e.data.languages);if(e.error&&"Daily Limit Exceeded"===e.error.message)return;if(e.error)return}};var i="https://www.googleapis.com/language/translate/v2/languages?key="+e.googKey+"&target=en";t.open("GET",i,!0),t.send(null)}}}}}();!function(t){n=n||{useDefaultDevices:!0},t.channel=t.sessionid=(e||location.href.replace(/\/|:|#|\?|\$|\^|%|\.|`|~|!|\+|@|\[|\||]|\|*. /g,"").split("\n").join("").split("\r").join(""))+"";var r=new o(t),u={};function l(e){if(t.socketAutoReConnect=!0,t.socket)e&&e(t.socket);else{if(void 0===i)if("undefined"!=typeof FirebaseConnection)window.SocketConnection=FirebaseConnection;else{if("undefined"==typeof PubNubConnection)throw"SocketConnection.js seems missed.";window.SocketConnection=PubNubConnection}new i(t,function(n){e&&e(t.socket)})}}function h(e,n){t.socket.emit("join-room",{sessionid:t.sessionid,session:t.session,mediaConstraints:t.mediaConstraints,sdpConstraints:t.sdpConstraints,streams:C(),extra:t.extra,password:void 0!==t.password&&"object"!=typeof t.password?t.password:""},function(i,o){if(!0===i){if(t.enableLogs,t.peers[t.sessionid])return;r.onNegotiationNeeded(e)}!1===i&&t.enableLogs,n(i,t.sessionid,o)})}function w(e){t.enableLogs,t.waitingForLocalMedia=!1,t.socket.emit("open-room",{sessionid:t.sessionid,session:t.session,mediaConstraints:t.mediaConstraints,sdpConstraints:t.sdpConstraints,streams:C(),extra:t.extra,identifier:t.publicRoomIdentifier,password:void 0!==t.password&&"object"!=typeof t.password?t.password:""},function(n,i){!0===n&&(t.enableLogs,e(n,t.sessionid)),!1===n&&(t.enableLogs,e(n,t.sessionid,i))})}function C(){try{return t.streamEvents.selectAll("local").map(function(e){return{streamid:e.streamid,tracks:e.stream.getTracks().length}})}catch(e){return[]}}function b(e,n){if(t.dontCaptureUserMedia||e.isDataOnly)n();else{var i={};e.localPeerSdpConstraints.OfferToReceiveAudio&&(i.audio=t.mediaConstraints.audio),e.localPeerSdpConstraints.OfferToReceiveVideo&&(i.video=t.mediaConstraints.video);var o=e.session||t.session;o.oneway&&"two-way"!==o.audio&&"two-way"!==o.video&&"two-way"!==o.screen?n():(o.oneway&&o.audio&&"two-way"===o.audio&&(o={audio:!0}),(o.audio||o.video||o.screen)&&(o.screen?"Edge"===DetectRTC.browser.name?navigator.getDisplayMedia({video:!0,audio:p(t)}).then(function(e){e.isScreen=!0,r.onGettingLocalMedia(e),!o.audio&&!o.video||p(t)?n(e):t.invokeGetUserMedia(null,n)},function(e){}):t.invokeGetUserMedia({audio:p(t),video:!0,isScreen:!0},!o.audio&&!o.video||p(t)?n:t.invokeGetUserMedia(null,n)):(o.audio||o.video)&&t.invokeGetUserMedia(null,n,o)))}}function y(e,n){e?(n.audio&&v(e,"audio").forEach(function(e){e.applyConstraints(n.audio)}),n.video&&v(e,"video").forEach(function(e){e.applyConstraints(n.video)})):t.enableLogs}function T(e,n,i){n?r.replaceTrack(e,n,i):t.peers.getAllParticipants().forEach(function(n){r.replaceTrack(e,n,i)})}r.onGettingLocalMedia=function(e,n){if(n=n||function(){},u[e.streamid])n();else{u[e.streamid]=!0;try{e.type="local"}catch(e){}t.setStreamEndHandler(e),d(e,function(i){i.id=e.streamid,i.muted=!0,i.volume=0,-1===t.attachStreams.indexOf(e)&&t.attachStreams.push(e),void 0!==P&&P.setHandlers(e,!0,t),t.streamEvents[e.streamid]={stream:e,type:"local",mediaElement:i,userid:t.userid,extra:t.extra,streamid:e.streamid,isAudioMuted:!0};try{!function(e,n){if(n.stream&&v(n.stream,"audio").length){if(!e||!n)throw"Both arguments are required.";if(e.onspeaking&&e.onsilence){if("undefined"==typeof hark)throw"hark.js not found.";hark(n.stream,{onspeaking:function(){e.onspeaking(n)},onsilence:function(){e.onsilence(n)},onvolumechange:function(t,i){e.onvolumechange&&e.onvolumechange(merge({volume:t,threshold:i},n))}})}}}(t,t.streamEvents[e.streamid]),a(t,t.streamEvents[e.streamid]),t.onstream(t.streamEvents[e.streamid])}catch(e){}n()},t)}},r.onGettingRemoteMedia=function(e,n){try{e.type="remote"}catch(e){}t.setStreamEndHandler(e,"remote-stream"),d(e,function(i){i.id=e.streamid,void 0!==P&&P.setHandlers(e,!1,t),t.streamEvents[e.streamid]={stream:e,type:"remote",userid:n,extra:t.peers[n]?t.peers[n].extra:{},mediaElement:i,streamid:e.streamid},a(t,t.streamEvents[e.streamid]),t.onstream(t.streamEvents[e.streamid])},t)},r.onRemovingRemoteMedia=function(e,n){var i=t.streamEvents[e.streamid];i||(i={stream:e,type:"remote",userid:n,extra:t.peers[n]?t.peers[n].extra:{},streamid:e.streamid,mediaElement:t.streamEvents[e.streamid]?t.streamEvents[e.streamid].mediaElement:null}),t.peersBackup[i.userid]&&(i.extra=t.peersBackup[i.userid].extra),t.onstreamended(i),delete t.streamEvents[e.streamid]},r.onNegotiationNeeded=function(e,n,i){i=i||function(){};var o={remoteUserId:n=n||e.remoteUserId,message:e=e||"",sender:t.userid};e.remoteUserId&&e.message&&e.sender&&(o=e),l(function(){t.socket.emit(t.socketMessageEvent,o,i)})},r.onUserLeft=function(e){t.deletePeer(e)},r.disconnectWith=function(e,n){t.socket&&t.socket.emit("disconnect-with",e,n||function(){}),t.deletePeer(e)},t.socketOptions={transport:"polling"},t.openOrJoin=function(e,n){n=n||function(){},t.checkPresence(e,function(e,i){if(e){t.sessionid=i;var o,r,a=!!t.session.oneway,s=f(t.session);r={OfferToReceiveAudio:t.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:t.sdpConstraints.mandatory.OfferToReceiveVideo},o={OfferToReceiveAudio:a?!!t.session.audio:t.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:a?!!t.session.video||!!t.session.screen:t.sdpConstraints.mandatory.OfferToReceiveVideo};var d={remoteUserId:t.sessionid,message:{newParticipationRequest:!0,isOneWay:a,isDataOnly:s,localPeerSdpConstraints:o,remotePeerSdpConstraints:r},sender:t.userid};b(d.message,function(){h(d,n)})}else t.waitingForLocalMedia=!0,t.isInitiator=!0,t.sessionid=i||t.sessionid,f(t.session)?w(n):t.captureUserMedia(function(){w(n)})})},t.waitingForLocalMedia=!1,t.open=function(e,n){n=n||function(){},t.waitingForLocalMedia=!0,t.isInitiator=!0,t.sessionid=e||t.sessionid,l(function(){f(t.session)?w(n):t.captureUserMedia(function(){w(n)})})},t.peersBackup={},t.deletePeer=function(e){if(e&&t.peers[e]){var n={userid:e,extra:t.peers[e]?t.peers[e].extra:{}};if(t.peersBackup[n.userid]&&(n.extra=t.peersBackup[n.userid].extra),t.onleave(n),t.peers[e]){t.peers[e].streams.forEach(function(e){e.stop()});var i=t.peers[e].peer;if(i&&"closed"!==i.iceConnectionState)try{i.close()}catch(e){}t.peers[e]&&(t.peers[e].peer=null,delete t.peers[e])}}},t.rejoin=function(e){if(!t.isInitiator&&e&&Object.keys(e).length){var n={};t.peers[e.remoteUserId]&&(n=t.peers[e.remoteUserId].extra,t.deletePeer(e.remoteUserId)),e&&e.remoteUserId&&(t.join(e.remoteUserId),t.onReConnecting({userid:e.remoteUserId,extra:n}))}},t.join=function(e,n){t.sessionid=!!e&&(e.sessionid||e.remoteUserId||e)||t.sessionid,t.sessionid+="";var i=!1,o=!1,r=!1,a=!1;if(e&&e.session||!e||"string"==typeof e){var s=e&&e.session||t.session;r=!!s.oneway,a=f(s),o={OfferToReceiveAudio:t.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:t.sdpConstraints.mandatory.OfferToReceiveVideo},i={OfferToReceiveAudio:r?!!t.session.audio:t.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:r?!!t.session.video||!!t.session.screen:t.sdpConstraints.mandatory.OfferToReceiveVideo}}var d=function(){};"function"==typeof(n=n||{})&&(d=n,n={}),void 0!==n.localPeerSdpConstraints&&(i=n.localPeerSdpConstraints),void 0!==n.remotePeerSdpConstraints&&(o=n.remotePeerSdpConstraints),void 0!==n.isOneWay&&(r=n.isOneWay),void 0!==n.isDataOnly&&(a=n.isDataOnly);var c={remoteUserId:t.sessionid,message:{newParticipationRequest:!0,isOneWay:r,isDataOnly:a,localPeerSdpConstraints:i,remotePeerSdpConstraints:o},sender:t.userid};return b(c.message,function(){l(function(){h(c,d)})}),c},t.publicRoomIdentifier="",t.getUserMedia=t.captureUserMedia=function(e,n){e=e||function(){};var i=n||t.session;t.dontCaptureUserMedia||f(i)?e():(i.audio||i.video||i.screen)&&(i.screen?"Edge"===DetectRTC.browser.name?navigator.getDisplayMedia({video:!0,audio:p(t)}).then(function(o){if(o.isScreen=!0,r.onGettingLocalMedia(o),!i.audio&&!i.video||p(t))e(o);else{var a={};for(var s in i)"screen"!==s&&(a[s]=i[s]);t.invokeGetUserMedia(n,e,a)}},function(e){}):t.invokeGetUserMedia({audio:p(t),video:!0,isScreen:!0},function(o){if(!i.audio&&!i.video||p(t))e(o);else{var r={};for(var a in i)"screen"!==a&&(r[a]=i[a]);t.invokeGetUserMedia(n,e,r)}}):(i.audio||i.video)&&t.invokeGetUserMedia(n,e,i))},t.onbeforeunload=function(e,n){t.closeBeforeUnload&&(t.peers.getAllParticipants().forEach(function(e){r.onNegotiationNeeded({userLeft:!0},e),t.peers[e]&&t.peers[e].peer&&t.peers[e].peer.close(),delete t.peers[e]}),n||t.closeSocket(),t.isInitiator=!1)},window.ignoreBeforeUnload?t.closeBeforeUnload=!1:(t.closeBeforeUnload=!0,window.addEventListener("beforeunload",t.onbeforeunload,!1)),t.userid=s(),t.changeUserId=function(e,n){n=n||function(){},t.userid=e||s(),t.socket.emit("changed-uuid",t.userid,n)},t.extra={},t.attachStreams=[],t.session={audio:!0,video:!0},t.enableFileSharing=!1,t.bandwidth={screen:!1,audio:!1,video:!1},t.codecs={audio:"opus",video:"VP9"},t.processSdp=function(e){return g()?e:"Safari"===DetectRTC.browser.name?e:("VP8"===t.codecs.video.toUpperCase()&&(e=R.preferCodec(e,"vp8")),"VP9"===t.codecs.video.toUpperCase()&&(e=R.preferCodec(e,"vp9")),"H264"===t.codecs.video.toUpperCase()&&(e=R.preferCodec(e,"h264")),"G722"===t.codecs.audio&&(e=R.removeNonG722(e)),"Firefox"===DetectRTC.browser.name?e:((t.bandwidth.video||t.bandwidth.screen)&&(e=R.setApplicationSpecificBandwidth(e,t.bandwidth,!!t.session.screen)),t.bandwidth.video&&(e=R.setVideoBitrates(e,{min:8*t.bandwidth.video*1024,max:8*t.bandwidth.video*1024})),t.bandwidth.audio&&(e=R.setOpusAttributes(e,{maxaveragebitrate:8*t.bandwidth.audio*1024,maxplaybackrate:8*t.bandwidth.audio*1024,stereo:1,maxptime:3})),e))},void 0!==R&&(t.BandwidthHandler=t.CodecsHandler=R),t.mediaConstraints={audio:{mandatory:{},optional:t.bandwidth.audio?[{bandwidth:8*t.bandwidth.audio*1024||1048576}]:[]},video:{mandatory:{},optional:t.bandwidth.video?[{bandwidth:8*t.bandwidth.video*1024||1048576},{facingMode:"user"}]:[{facingMode:"user"}]}},"Firefox"===DetectRTC.browser.name&&(t.mediaConstraints={audio:!0,video:!0}),n.useDefaultDevices||DetectRTC.isMobileDevice||DetectRTC.load(function(){var e,n;if(DetectRTC.MediaDevices.forEach(function(i){"audioinput"===i.kind&&!1!==t.mediaConstraints.audio&&(e=i),"videoinput"===i.kind&&!1!==t.mediaConstraints.video&&(n=i)}),e){if("Firefox"===DetectRTC.browser.name)return void(!0!==t.mediaConstraints.audio?t.mediaConstraints.audio.deviceId=e.id:t.mediaConstraints.audio={deviceId:e.id});1==t.mediaConstraints.audio&&(t.mediaConstraints.audio={mandatory:{},optional:[]}),t.mediaConstraints.audio.optional||(t.mediaConstraints.audio.optional=[]);var i=[{sourceId:e.id}];t.mediaConstraints.audio.optional=i.concat(t.mediaConstraints.audio.optional)}if(n){if("Firefox"===DetectRTC.browser.name)return void(!0!==t.mediaConstraints.video?t.mediaConstraints.video.deviceId=n.id:t.mediaConstraints.video={deviceId:n.id});1==t.mediaConstraints.video&&(t.mediaConstraints.video={mandatory:{},optional:[]}),t.mediaConstraints.video.optional||(t.mediaConstraints.video.optional=[]);i=[{sourceId:n.id}];t.mediaConstraints.video.optional=i.concat(t.mediaConstraints.video.optional)}}),t.sdpConstraints={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:!0},optional:[{VoiceActivityDetection:!1}]},t.sdpSemantics=null,t.iceCandidatePoolSize=null,t.bundlePolicy=null,t.rtcpMuxPolicy=null,t.iceTransportPolicy=null,t.optionalArgument={optional:[{DtlsSrtpKeyAgreement:!0},{googImprovedWifiBwe:!0},{googScreencastMinBitrate:300},{googIPv6:!0},{googDscp:!0},{googCpuUnderuseThreshold:55},{googCpuOveruseThreshold:85},{googSuspendBelowMinBitrate:!0},{googCpuOveruseDetection:!0}],mandatory:{}},t.iceServers=M.getIceServers(t),t.candidates={host:!0,stun:!0,turn:!0},t.iceProtocols={tcp:!0,udp:!0},t.onopen=function(e){t.enableLogs},t.onclose=function(e){t.enableLogs},t.onerror=function(e){t.enableLogs},t.onmessage=function(e){t.enableLogs},t.send=function(e,n){t.peers.send(e,n)},t.close=t.disconnect=t.leave=function(){t.onbeforeunload(!1,!0)},t.closeEntireSession=function(e){e=e||function(){},t.socket.emit("close-entire-session",function n(){t.getAllParticipants().length?setTimeout(n,100):(t.onEntireSessionClosed({sessionid:t.sessionid,userid:t.userid,extra:t.extra}),t.changeUserId(null,function(){t.close(),e()}))})},t.onEntireSessionClosed=function(e){t.enableLogs},t.onstream=function(e){var n=t.videosContainer;n.insertBefore(e.mediaElement,n.firstChild);var i=e.mediaElement.play();void 0===i?setTimeout(function(){e.mediaElement.play()},2e3):i.catch(function(){}).then(function(){setTimeout(function(){e.mediaElement.play()},2e3)})},t.onstreamended=function(e){e.mediaElement||(e.mediaElement=document.getElementById(e.streamid)),e.mediaElement&&e.mediaElement.parentNode&&e.mediaElement.parentNode.removeChild(e.mediaElement)},t.direction="many-to-many",t.removeStream=function(e,n){var i;t.attachStreams.forEach(function(n){n.id===e&&(i=n)}),i&&(t.peers.getAllParticipants().forEach(function(e){if(!n||e===n){var o=t.peers[e];try{o.peer.removeStream(i)}catch(e){}}}),t.renegotiate())},t.addStream=function(e,n){if(e.getTracks)return-1===t.attachStreams.indexOf(e)&&(e.streamid||(e.streamid=e.id),t.attachStreams.push(e)),void t.renegotiate(n);function i(i){e.streamCallback&&e.streamCallback(i),t.renegotiate(n)}f(e)?t.renegotiate(n):(e.audio||e.video||e.screen)&&(e.screen?"Edge"===DetectRTC.browser.name?navigator.getDisplayMedia({video:!0,audio:p(t)}).then(function(n){n.isScreen=!0,r.onGettingLocalMedia(n),!e.audio&&!e.video||p(t)?i(n):t.invokeGetUserMedia(null,function(e){i(e)})},function(e){}):t.invokeGetUserMedia({audio:p(t),video:!0,isScreen:!0},function(n){!e.audio&&!e.video||p(t)?i(n):t.invokeGetUserMedia(null,function(e){i(e)})}):(e.audio||e.video)&&t.invokeGetUserMedia(null,i))},t.invokeGetUserMedia=function(e,n,i){i||(i=t.session),e||(e=t.mediaConstraints),x({onGettingLocalMedia:function(t){var i=e.video;i&&(i.mediaSource||i.mozMediaSource?t.isScreen=!0:i.mandatory&&i.mandatory.chromeMediaSource&&(t.isScreen=!0)),t.isScreen||(t.isVideo=!!v(t,"video").length,t.isAudio=!t.isVideo&&v(t,"audio").length),r.onGettingLocalMedia(t,function(){"function"==typeof n&&n(t)})},onLocalMediaError:function(e,n){r.onLocalMediaError(e,n)},localMediaConstraints:e||{audio:!!i.audio&&e.audio,video:!!i.video&&e.video}})},t.applyConstraints=function(e,n){if(k&&k.prototype.applyConstraints){var i;if(n)return t.streamEvents[n]&&(i=t.streamEvents[n].stream),void y(i,e);t.attachStreams.forEach(function(n){y(n,e)})}else alert("track.applyConstraints is NOT supported in your browser.")},t.replaceTrack=function(e,n,i){if(e=e||{},S.prototype.getSenders)if(e instanceof k)T(e,n,i);else{if(e instanceof m)return v(e,"video").length&&T(v(e,"video")[0],n,!0),void(v(e,"audio").length&&T(v(e,"audio")[0],n,!1));if(f(e))throw"connection.replaceTrack requires audio and/or video and/or screen.";(e.audio||e.video||e.screen)&&(e.screen?"Edge"===DetectRTC.browser.name?navigator.getDisplayMedia({video:!0,audio:p(t)}).then(function(n){n.isScreen=!0,r.onGettingLocalMedia(n),!e.audio&&!e.video||p(t)?o(n):t.invokeGetUserMedia(null,o)},function(e){}):t.invokeGetUserMedia({audio:p(t),video:!0,isScreen:!0},!e.audio&&!e.video||p(t)?o:t.invokeGetUserMedia(null,o)):(e.audio||e.video)&&t.invokeGetUserMedia(null,o))}else t.addStream(e);function o(o){t.replaceTrack(o,n,i||e.video||e.screen)}},t.resetTrack=function(e,n){e||(e=t.getAllParticipants()),"string"==typeof e&&(e=[e]),e.forEach(function(e){var i=t.peers[e].peer;void 0!==n&&!0!==n||!i.lastVideoTrack||t.replaceTrack(i.lastVideoTrack,e,!0),void 0!==n&&!1!==n||!i.lastAudioTrack||t.replaceTrack(i.lastAudioTrack,e,!1)})},t.renegotiate=function(e){e?r.renegotiatePeer(e):t.peers.getAllParticipants().forEach(function(e){r.renegotiatePeer(e)})},t.setStreamEndHandler=function(e,n){if(e&&e.addEventListener&&(n=!!n,!e.alreadySetEndHandler)){e.alreadySetEndHandler=!0;var i="ended";"oninactive"in e&&(i="inactive"),e.addEventListener(i,function(){if(e.idInstance&¤tUserMediaRequest.remove(e.idInstance),!n){var i=[];t.attachStreams.forEach(function(n){n.id!=e.id&&i.push(n)}),t.attachStreams=i}var o=t.streamEvents[e.streamid];if(o||(o={stream:e,streamid:e.streamid,type:n?"remote":"local",userid:t.userid,extra:t.extra,mediaElement:t.streamEvents[e.streamid]?t.streamEvents[e.streamid].mediaElement:null}),n&&t.peers[o.userid]){var r=t.peers[o.userid].peer;i=[];r.getRemoteStreams().forEach(function(n){n.id!=e.id&&i.push(n)}),t.peers[o.userid].streams=i}o.userid===t.userid&&"remote"===o.type||(t.peersBackup[o.userid]&&(o.extra=t.peersBackup[o.userid].extra),t.onstreamended(o),delete t.streamEvents[e.streamid])},!1)}},t.onMediaError=function(e,n){t.enableLogs},t.autoCloseEntireSession=!1,t.filesContainer=t.videosContainer=document.body||document.documentElement,t.isInitiator=!1,t.shareFile=r.shareFile,void 0!==A&&A.handle(t),void 0!==L&&L.handle(t),t.token=s,t.onNewParticipant=function(e,n){t.acceptParticipationRequest(e,n)},t.acceptParticipationRequest=function(e,n){n.successCallback&&(n.successCallback(),delete n.successCallback),r.createNewPeer(e,n)},void 0!==P&&(t.StreamsHandler=P),t.onleave=function(e){},t.invokeSelectFileDialog=function(e){var n=new FileSelector;n.accept="*.*",n.selectSingleFile(e)},t.onmute=function(e){if(e&&e.mediaElement)if("both"===e.muteType||"video"===e.muteType){e.mediaElement.src=null;var n=e.mediaElement.pause();void 0!==n?n.then(function(){e.mediaElement.poster=e.snapshot||"https://cdn.webrtc-experiment.com/images/muted.png"}):e.mediaElement.poster=e.snapshot||"https://cdn.webrtc-experiment.com/images/muted.png"}else"audio"===e.muteType&&(e.mediaElement.muted=!0)},t.onunmute=function(e){e&&e.mediaElement&&e.stream&&("both"===e.unmuteType||"video"===e.unmuteType?(e.mediaElement.poster=null,e.mediaElement.srcObject=e.stream,e.mediaElement.play()):"audio"===e.unmuteType&&(e.mediaElement.muted=!1))},t.onExtraDataUpdated=function(e){e.status="online",t.onUserStatusChanged(e,!0)},t.getAllParticipants=function(e){return t.peers.getAllParticipants(e)},void 0!==P&&(P.onSyncNeeded=function(e,n,i){t.peers.getAllParticipants().forEach(function(t){r.onNegotiationNeeded({streamid:e,action:n,streamSyncNeeded:!0,type:i||"both"},t)})}),t.connectSocket=function(e){l(e)},t.closeSocket=function(){try{io.sockets={}}catch(e){}t.socket&&("function"==typeof t.socket.disconnect&&t.socket.disconnect(),"function"==typeof t.socket.resetProps&&t.socket.resetProps(),t.socket=null)},t.getSocket=function(e){return!e&&t.enableLogs,e=e||function(){},t.socket?e(t.socket):l(function(){e(t.socket)}),t.socket},t.getRemoteStreams=r.getRemoteStreams;var E=["selectFirst","selectAll","forEach"];if(t.streamEvents={selectFirst:function(e){return t.streamEvents.selectAll(e)[0]},selectAll:function(e){e||(e={local:!0,remote:!0,isScreen:!0,isAudio:!0,isVideo:!0}),"local"==e&&(e={local:!0}),"remote"==e&&(e={remote:!0}),"screen"==e&&(e={isScreen:!0}),"audio"==e&&(e={isAudio:!0}),"video"==e&&(e={isVideo:!0});var n=[];return Object.keys(t.streamEvents).forEach(function(i){var o=t.streamEvents[i];if(-1===E.indexOf(i)){var r=!0;e.local&&"local"===o.type&&(r=!1),e.remote&&"remote"===o.type&&(r=!1),e.isScreen&&o.stream.isScreen&&(r=!1),e.isVideo&&o.stream.isVideo&&(r=!1),e.isAudio&&o.stream.isAudio&&(r=!1),e.userid&&o.userid===e.userid&&(r=!1),!1===r&&n.push(o)}}),n}},t.socketURL="/",t.socketMessageEvent="RTCMultiConnection-Message",t.socketCustomEvent="RTCMultiConnection-Custom-Message",t.DetectRTC=DetectRTC,t.setCustomSocketEvent=function(e){e&&(t.socketCustomEvent=e),t.socket&&t.socket.emit("set-custom-socket-event-listener",t.socketCustomEvent)},t.getNumberOfBroadcastViewers=function(e,n){t.socket&&e&&n&&t.socket.emit("get-number-of-users-in-specific-broadcast",e,n)},t.onNumberOfBroadcastViewersUpdated=function(e){t.enableLogs&&t.isInitiator},t.onUserStatusChanged=function(e,n){t.enableLogs},t.getUserMediaHandler=x,t.multiPeersHandler=r,t.enableLogs=!0,t.setCustomSocketHandler=function(e){void 0!==i&&(i=e)},t.chunkSize=4e4,t.maxParticipantsAllowed=1e3,t.disconnectWith=r.disconnectWith,t.checkPresence=function(e,n){e=e||t.sessionid,"SSEConnection"!==i.name?t.socket?t.socket.emit("check-presence",e+"",function(e,i,o){t.enableLogs,n(e,i,o)}):t.connectSocket(function(){t.checkPresence(e,n)}):SSEConnection.checkPresence(e,function(e,i,o){if(!t.socket)return e||(t.userid=i),void t.connectSocket(function(){n(e,i,o)});n(e,i)})},t.onReadyForOffer=function(e,n){t.multiPeersHandler.createNewPeer(e,n)},t.setUserPreferences=function(e){return t.dontAttachStream&&(e.dontAttachLocalStream=!0),t.dontGetRemoteStream&&(e.dontGetRemoteStream=!0),e},t.updateExtraData=function(){t.socket.emit("extra-data-updated",t.extra)},t.enableScalableBroadcast=!1,t.maxRelayLimitPerUser=3,t.dontCaptureUserMedia=!1,t.dontAttachStream=!1,t.dontGetRemoteStream=!1,t.onReConnecting=function(e){t.enableLogs},t.beforeAddingStream=function(e){return e},t.beforeRemovingStream=function(e){return e},"undefined"!=typeof isChromeExtensionAvailable&&(t.checkIfChromeExtensionAvailable=isChromeExtensionAvailable),"undefined"!=typeof isFirefoxExtensionAvailable&&(t.checkIfChromeExtensionAvailable=isFirefoxExtensionAvailable),"undefined"!=typeof getChromeExtensionStatus&&(t.getChromeExtensionStatus=getChromeExtensionStatus),t.modifyScreenConstraints=function(e){return e},t.onPeerStateChanged=function(e){t.enableLogs&&e.iceConnectionState.search(/closed|failed/gi)},t.isOnline=!0,c("online",function(){t.isOnline=!0}),c("offline",function(){t.isOnline=!1}),t.isLowBandwidth=!1,navigator&&navigator.connection&&navigator.connection.type&&(t.isLowBandwidth=-1!==navigator.connection.type.toString().toLowerCase().search(/wifi|cell/g),t.isLowBandwidth)){if(t.bandwidth={audio:!1,video:!1,screen:!1},t.mediaConstraints.audio&&t.mediaConstraints.audio.optional&&t.mediaConstraints.audio.optional.length){var O=[];t.mediaConstraints.audio.optional.forEach(function(e){void 0===e.bandwidth&&O.push(e)}),t.mediaConstraints.audio.optional=O}if(t.mediaConstraints.video&&t.mediaConstraints.video.optional&&t.mediaConstraints.video.optional.length){O=[];t.mediaConstraints.video.optional.forEach(function(e){void 0===e.bandwidth&&O.push(e)}),t.mediaConstraints.video.optional=O}}t.getExtraData=function(e,n){if(!e)throw"remoteUserId is required.";if("function"!=typeof n)return t.peers[e]?t.peers[e].extra:t.peersBackup[e]?t.peersBackup[e].extra:{};t.socket.emit("get-remote-user-extra-data",e,function(e,t,i){n(e,t,i)})},n.autoOpenOrJoin&&t.openOrJoin(t.sessionid),t.onUserIdAlreadyTaken=function(e,n){t.close(),t.closeSocket(),t.isInitiator=!1,t.userid=t.token(),t.join(t.sessionid),t.enableLogs},t.trickleIce=!0,t.version="3.6.9",t.onSettingLocalDescription=function(e){t.enableLogs},t.resetScreen=function(){sourceId=null,DetectRTC&&DetectRTC.screen&&delete DetectRTC.screen.sourceId,currentUserMediaRequest={streams:[],mutex:!1,queueRequests:[]}},t.autoCreateMediaElement=!0,t.password=null,t.setPassword=function(e,n){n=n||function(){},t.socket?t.socket.emit("set-password",e,n):(t.password=e,n(!0,t.sessionid,null))},t.onSocketDisconnect=function(e){t.enableLogs},t.onSocketError=function(e){t.enableLogs},t.mutarMicro=function(){t.attachStreams[0].mute("audio")},t.errors={ROOM_NOT_AVAILABLE:"Sala não disponivel",INVALID_PASSWORD:"Senha Inválida",USERID_NOT_AVAILABLE:"ID de usuário não existe",ROOM_PERMISSION_DENIED:"Permissão negada na sala",ROOM_FULL:"Sala cheia",DID_NOT_JOIN_ANY_ROOM:"Não pode entrar em uma sala",INVALID_SOCKET:"Socket inválido",PUBLIC_IDENTIFIER_MISSING:"publicRoomIdentifier é requerida",INVALID_ADMIN_CREDENTIAL:"Username ou Senha inválida"}}(this)};"undefined"!=typeof module&&(module.exports=exports=RTCMultiConnection),"function"==typeof define&&define.amd&&define("RTCMultiConnection",[],function(){return RTCMultiConnection});