diff --git a/bower.json b/bower.json index d5f574497..ca276ad99 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "sip.js", - "version": "0.6.3", + "version": "0.6.4", "authors": [ "Will Mitchell ", "James Criscuolo ", diff --git a/dist/sip.js b/dist/sip.js index 9978d6acf..019862dbf 100644 --- a/dist/sip.js +++ b/dist/sip.js @@ -1,5 +1,5 @@ /* - * SIP version 0.6.3 + * SIP version 0.6.4 * Copyright (c) 2014-2014 Junction Networks, Inc * Homepage: http://sipjs.com * License: http://sipjs.com/license/ @@ -37,7 +37,7 @@ module.exports={ "name": "sip.js", "title": "SIP.js", "description": "A simple, intuitive, and powerful JavaScript signaling library", - "version": "0.6.3", + "version": "0.6.4", "main": "src/SIP.js", "homepage": "http://sipjs.com", "author": "Will Mitchell ", @@ -2445,12 +2445,8 @@ module.exports = function(SIP) { * as to most easily track when particular hacks may not be necessary anymore. */ -module.exports = function (window) { - -var Hacks; - -Hacks = { - +module.exports = function (SIP) { +var Hacks = { AllBrowsers: { maskDtls: function (message) { if (message.body) { @@ -2478,12 +2474,6 @@ Hacks = { return window.mozRTCPeerConnection !== undefined; }, - cannotHandleRelayCandidates: function (message) { - if (this.isFirefox() && message.body) { - message.body = message.body.replace(/relay/g, 'host generation 0'); - } - }, - cannotHandleExtraWhitespace: function (message) { if (this.isFirefox() && message.body) { message.body = message.body.replace(/ \r\n/g, "\r\n"); @@ -2516,7 +2506,7 @@ Hacks = { if (mlines[i].toString().search(/i=.*/) >= 0) { insertAt = sdp.indexOf(mlines[i].toString())+mlines[i].toString().length; if (sdp.substr(insertAt,2)!=='c=') { - sdp = sdp.substr(0,insertAt) + '\r\nc=IN IP 4 0.0.0.0' + sdp.substr(insertAt); + sdp = sdp.substr(0,insertAt) + '\r\nc=IN IP4 0.0.0.0' + sdp.substr(insertAt); } // else add the C line if it's missing @@ -2527,6 +2517,19 @@ Hacks = { } } return sdp; + }, + + hasIncompatibleCLineWithSomeSIPEndpoints: function(sdp) { + /* + * Firefox appears to be following https://tools.ietf.org/html/rfc5245#section-9.1.1.1 + * and using a c line IP address of 0.0.0.0. This is completely valid, however it is + * causing some endpoints (such as FreeSWITCH) to interpret the SDP as being on hold + * https://freeswitch.org/jira/browse/FS-6955. To get around this issue we pull the + * replace the c line with 1.1.1.1 which SIP clients do not interpret as hold. + * This makes the other endpoint believe that the call is not on hold and audio flows + * because ICE determines the media pathway (not the c line). + */ + return sdp.replace(/(0\.0\.0\.0)/gmi, SIP.Utils.getRandomTestNetIP()); } }, @@ -2554,10 +2557,10 @@ Hacks = { } }; - return Hacks; }; + },{}],11:[function(_dereq_,module,exports){ module.exports = (function() { @@ -3623,7 +3626,7 @@ module.exports = (function(window) { var WebRTCMediaStreamManager = _dereq_('./WebRTC/MediaStreamManager.js')(SIP); SIP.WebRTC = _dereq_('./WebRTC.js')(SIP.Utils, window, WebRTCMediaHandler, WebRTCMediaStreamManager); _dereq_('./UA.js')(SIP, window); - SIP.Hacks = _dereq_('./Hacks.js')(window); + SIP.Hacks = _dereq_('./Hacks.js')(SIP); _dereq_('./SanityCheck.js')(SIP); SIP.DigestAuthentication = _dereq_('./DigestAuthentication.js')(SIP.Utils); SIP.Grammar = _dereq_('./Grammar/dist/Grammar')(SIP); @@ -5507,7 +5510,6 @@ InviteServerContext = function(ua, request) { } //TODO: move this into media handler - SIP.Hacks.Firefox.cannotHandleRelayCandidates(request); SIP.Hacks.Firefox.cannotHandleExtraWhitespace(request); SIP.Hacks.AllBrowsers.maskDtls(request); @@ -5805,7 +5807,7 @@ InviteServerContext.prototype = { */ accept: function(options) { options = options || {}; - + options = SIP.Utils.desugarSessionOptions(options); SIP.Utils.optionsOverride(options, 'media', 'mediaConstraints', true, this.logger, this.ua.configuration.media); this.mediaHint = options.media; @@ -5983,7 +5985,6 @@ InviteServerContext.prototype = { if (!this.hasAnswer) { if(request.body && request.getHeader('content-type') === 'application/sdp') { // ACK contains answer to an INVITE w/o SDP negotiation - SIP.Hacks.Firefox.cannotHandleRelayCandidates(request); SIP.Hacks.Firefox.cannotHandleExtraWhitespace(request); SIP.Hacks.AllBrowsers.maskDtls(request); @@ -6353,7 +6354,6 @@ InviteClientContext.prototype = { return; } - SIP.Hacks.Firefox.cannotHandleRelayCandidates(response); SIP.Hacks.Firefox.cannotHandleExtraWhitespace(response); SIP.Hacks.AllBrowsers.maskDtls(response); @@ -6480,7 +6480,6 @@ InviteClientContext.prototype = { break; } - SIP.Hacks.Firefox.cannotHandleRelayCandidates(response); SIP.Hacks.Firefox.cannotHandleExtraWhitespace(response); SIP.Hacks.AllBrowsers.maskDtls(response); @@ -8486,6 +8485,7 @@ UA.prototype.isConnected = function() { */ UA.prototype.invite = function(target, options) { options = options || {}; + options = SIP.Utils.desugarSessionOptions(options); SIP.Utils.optionsOverride(options, 'media', 'mediaConstraints', true, this.logger); var context = new SIP.InviteClientContext(this, target, options); @@ -9132,6 +9132,7 @@ UA.prototype.loadConfig = function(configuration) { // Hacks hackViaTcp: false, hackIpInContact: false, + hackWssInTransport: false, //autostarting autostart: true, @@ -9181,14 +9182,19 @@ UA.prototype.loadConfig = function(configuration) { SIP.Utils.optionsOverride(configuration, 'rel100', 'reliable', true, this.logger, SIP.C.supported.UNSUPPORTED); + var emptyArraysAllowed = ['stunServers', 'turnServers']; + // Check Optional parameters for(parameter in UA.configuration_check.optional) { aliasUnderscored(parameter, this.logger); if(configuration.hasOwnProperty(parameter)) { value = configuration[parameter]; - // If the parameter value is null, empty string,undefined, or empty array then apply its default value. - if(value === null || value === "" || value === undefined || (value instanceof Array && value.length === 0)) { continue; } + // If the parameter value is an empty array, but shouldn't be, apply its default value. + if (value instanceof Array && value.length === 0 && emptyArraysAllowed.indexOf(parameter) < 0) { continue; } + + // If the parameter value is null, empty string, or undefined then apply its default value. + if(value === null || value === "" || value === undefined) { continue; } // If it's a number with NaN value then also apply its default value. // NOTE: JS does not allow "value === NaN", the following does the work: else if(typeof(value) === 'number' && isNaN(value)) { continue; } @@ -9254,7 +9260,7 @@ UA.prototype.loadConfig = function(configuration) { this.contact = { pub_gruu: null, temp_gruu: null, - uri: new SIP.URI('sip', SIP.Utils.createRandomToken(8), settings.viaHost, null, {transport: 'ws'}), + uri: new SIP.URI('sip', SIP.Utils.createRandomToken(8), settings.viaHost, null, {transport: ((settings.hackWssInTransport)?'wss':'ws')}), toString: function(options){ options = options || {}; @@ -9264,7 +9270,7 @@ UA.prototype.loadConfig = function(configuration) { contact = '<'; if (anonymous) { - contact += (this.temp_gruu || 'sip:anonymous@anonymous.invalid;transport=ws').toString(); + contact += (this.temp_gruu || ('sip:anonymous@anonymous.invalid;transport='+(settings.hackWssInTransport)?'wss':'ws')).toString(); } else { contact += (this.pub_gruu || this.uri).toString(); } @@ -9334,6 +9340,7 @@ UA.configuration_skeleton = (function() { "displayName", "hackViaTcp", // false. "hackIpInContact", //false + "hackWssInTransport", //false "instanceId", "noAnswerTimeout", // 30 seconds. "password", @@ -9508,6 +9515,12 @@ UA.configuration_check = { } }, + hackWssInTransport: function(hackWssInTransport) { + if (typeof hackWssInTransport === 'boolean') { + return hackWssInTransport; + } + }, + instanceId: function(instanceId) { if(typeof instanceId !== 'string') { return; @@ -9912,6 +9925,7 @@ SIP.URI = URI; }; },{}],30:[function(_dereq_,module,exports){ +(function (global){ /** * @fileoverview Utils */ @@ -9948,6 +9962,25 @@ Utils= { options[winner] = options[winner] || options[loser] || defaultValue; }, + desugarSessionOptions: function desugarSessionOptions (options) { + if (global.HTMLMediaElement && options instanceof global.HTMLMediaElement) { + options = { + media: { + constraints: { + audio: true, + video: options.tagName === 'VIDEO' + }, + render: { + remote: { + video: options + } + } + } + }; + } + return options; + }, + str_utf8_length: function(string) { return encodeURIComponent(string).replace(/%[A-F\d]{2}/g, 'U').length; }, @@ -10376,6 +10409,7 @@ Utils= { SIP.Utils = Utils; }; +}).call(this,typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],31:[function(_dereq_,module,exports){ /** * @fileoverview WebRTC @@ -10435,6 +10469,7 @@ var MediaHandler = function(session, options) { 'userMedia', 'userMediaFailed', 'iceGathering', + 'iceCandidate', 'iceComplete', 'iceFailed', 'getDescription', @@ -10472,7 +10507,9 @@ var MediaHandler = function(session, options) { /* Change 'url' to 'urls' whenever this issue is solved: * https://code.google.com/p/webrtc/issues/detail?id=2096 */ - servers.push({'url': stunServers}); + [].concat(stunServers).forEach(function (server) { + servers.push({'url': server}); + }); length = turnServers.length; for (idx = 0; idx < length; idx++) { @@ -10497,6 +10534,7 @@ var MediaHandler = function(session, options) { }; this.peerConnection.onicecandidate = function(e) { + self.emit('iceCandidate', e); if (e.candidate) { self.logger.log('ICE candidate received: '+ (e.candidate.candidate === null ? null : e.candidate.candidate.trim())); } else if (self.onIceCompleted !== undefined) { @@ -10831,6 +10869,7 @@ MediaHandler.prototype = Object.create(SIP.MediaHandler.prototype, { sdp = SIP.Hacks.Chrome.needsExplicitlyInactiveSDP(sdp); sdp = SIP.Hacks.AllBrowsers.unmaskDtls(sdp); + sdp = SIP.Hacks.Firefox.hasIncompatibleCLineWithSomeSIPEndpoints(sdp); var sdpWrapper = { type: methodName === 'createOffer' ? 'offer' : 'answer', diff --git a/dist/sip.min.js b/dist/sip.min.js index e7176629b..10a580013 100644 --- a/dist/sip.min.js +++ b/dist/sip.min.js @@ -1,5 +1,5 @@ /* - * SIP version 0.6.3 + * SIP version 0.6.4 * Copyright (c) 2014-2014 Junction Networks, Inc * Homepage: http://sipjs.com * License: http://sipjs.com/license/ @@ -32,9 +32,9 @@ */ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.SIP=e()}}(function(){return function e(f,n,o){function d(t,l){if(!n[t]){if(!f[t]){var u="function"==typeof require&&require;if(!l&&u)return u(t,!0);if(i)return i(t,!0);throw new Error("Cannot find module '"+t+"'")}var p=n[t]={exports:{}};f[t][0].call(p.exports,function(e){var n=f[t][1][e];return d(n?n:e)},p,p.exports,e,f,n,o)}return n[t].exports}for(var i="function"==typeof require&&require,t=0;t",contributors:[{url:"http://sipjs.com/authors/"}],repository:{type:"git",url:"https://github.com/onsip/SIP.js.git"},keywords:["sip","websocket","webrtc","library","javascript"],devDependencies:{grunt:"~0.4.0","grunt-cli":"~0.1.6","grunt-contrib-jasmine":"~0.6.0","grunt-contrib-jshint":">0.5.0","grunt-contrib-uglify":"~0.2.0","grunt-peg":"~1.3.1","grunt-trimtrailingspaces":"^0.4.0","node-minify":"~0.7.2",pegjs:"0.8.0","sdp-transform":"~0.4.0","grunt-contrib-copy":"^0.5.0",browserify:"^4.1.8","grunt-browserify":"^2.1.0"},engines:{node:">=0.8"},license:"MIT",scripts:{test:"grunt travis --verbose"}}},{}],2:[function(e,f){f.exports=function(e){var f;f=function(f,n,o,d){var i,t,l=o,u=["progress","accepted","rejected","failed","cancel"];if(void 0===o)throw new TypeError("Not enough arguments");if(o=f.normalizeTarget(o),!o)throw new TypeError("Invalid target: "+l);this.ua=f,this.logger=f.getLogger("sip.clientcontext"),this.method=n,i=d&&d.params,t=(d&&d.extraHeaders||[]).slice(),d&&d.body&&(this.body=d.body),d&&d.contentType&&(this.contentType=d.contentType,t.push("Content-Type: "+this.contentType)),this.request=new e.OutgoingRequest(this.method,o,this.ua,i,t),this.localIdentity=this.request.from,this.remoteIdentity=this.request.to,this.body&&(this.request.body=this.body),this.data={},this.initEvents(u)},f.prototype=new e.EventEmitter,f.prototype.send=function(){return new e.RequestSender(this,this.ua).send(),this},f.prototype.cancel=function(f){f=f||{};var n,o=f.status_code,d=f.reason_phrase;if(o&&200>o||o>699)throw new TypeError("Invalid status_code: "+o);o&&(d=d||e.C.REASON_PHRASE[o]||"",n="SIP ;cause="+o+' ;text="'+d+'"'),this.request.cancel(n),this.emit("cancel")},f.prototype.receiveResponse=function(f){var n=e.C.REASON_PHRASE[f.status_code]||"";switch(!0){case/^1[0-9]{2}$/.test(f.status_code):this.emit("progress",f,n);break;case/^2[0-9]{2}$/.test(f.status_code):this.ua.applicants[this]&&delete this.ua.applicants[this],this.emit("accepted",f,n);break;default:this.ua.applicants[this]&&delete this.ua.applicants[this],this.emit("rejected",f,n),this.emit("failed",f,n)}},f.prototype.onRequestTimeout=function(){this.emit("failed",null,e.C.causes.REQUEST_TIMEOUT)},f.prototype.onTransportError=function(){this.emit("failed",null,e.C.causes.CONNECTION_ERROR)},e.ClientContext=f}},{}],3:[function(e,f){f.exports=function(e,f){return{USER_AGENT:e+"/"+f,SIP:"sip",SIPS:"sips",causes:{CONNECTION_ERROR:"Connection Error",REQUEST_TIMEOUT:"Request Timeout",SIP_FAILURE_CODE:"SIP Failure Code",INTERNAL_ERROR:"Internal Error",BUSY:"Busy",REJECTED:"Rejected",REDIRECTED:"Redirected",UNAVAILABLE:"Unavailable",NOT_FOUND:"Not Found",ADDRESS_INCOMPLETE:"Address Incomplete",INCOMPATIBLE_SDP:"Incompatible SDP",AUTHENTICATION_ERROR:"Authentication Error",DIALOG_ERROR:"Dialog Error",WEBRTC_NOT_SUPPORTED:"WebRTC Not Supported",WEBRTC_ERROR:"WebRTC Error",CANCELED:"Canceled",NO_ANSWER:"No Answer",EXPIRES:"Expires",NO_ACK:"No ACK",NO_PRACK:"No PRACK",USER_DENIED_MEDIA_ACCESS:"User Denied Media Access",BAD_MEDIA_DESCRIPTION:"Bad Media Description",RTP_TIMEOUT:"RTP Timeout"},supported:{UNSUPPORTED:"none",SUPPORTED:"supported",REQUIRED:"required"},SIP_ERROR_CAUSES:{REDIRECTED:[300,301,302,305,380],BUSY:[486,600],REJECTED:[403,603],NOT_FOUND:[404,604],UNAVAILABLE:[480,410,408,430],ADDRESS_INCOMPLETE:[484],INCOMPATIBLE_SDP:[488,606],AUTHENTICATION_ERROR:[401,407]},ACK:"ACK",BYE:"BYE",CANCEL:"CANCEL",INFO:"INFO",INVITE:"INVITE",MESSAGE:"MESSAGE",NOTIFY:"NOTIFY",OPTIONS:"OPTIONS",REGISTER:"REGISTER",UPDATE:"UPDATE",SUBSCRIBE:"SUBSCRIBE",REFER:"REFER",PRACK:"PRACK",REASON_PHRASE:{100:"Trying",180:"Ringing",181:"Call Is Being Forwarded",182:"Queued",183:"Session Progress",199:"Early Dialog Terminated",200:"OK",202:"Accepted",204:"No Notification",300:"Multiple Choices",301:"Moved Permanently",302:"Moved Temporarily",305:"Use Proxy",380:"Alternative Service",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",410:"Gone",412:"Conditional Request Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Unsupported URI Scheme",417:"Unknown Resource-Priority",420:"Bad Extension",421:"Extension Required",422:"Session Interval Too Small",423:"Interval Too Brief",428:"Use Identity Header",429:"Provide Referrer Identity",430:"Flow Failed",433:"Anonymity Disallowed",436:"Bad Identity-Info",437:"Unsupported Certificate",438:"Invalid Identity Header",439:"First Hop Lacks Outbound Support",440:"Max-Breadth Exceeded",469:"Bad Info Package",470:"Consent Needed",478:"Unresolvable Destination",480:"Temporarily Unavailable",481:"Call/Transaction Does Not Exist",482:"Loop Detected",483:"Too Many Hops",484:"Address Incomplete",485:"Ambiguous",486:"Busy Here",487:"Request Terminated",488:"Not Acceptable Here",489:"Bad Event",491:"Request Pending",493:"Undecipherable",494:"Security Agreement Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Server Time-out",505:"Version Not Supported",513:"Message Too Large",580:"Precondition Failure",600:"Busy Everywhere",603:"Decline",604:"Does Not Exist Anywhere",606:"Not Acceptable"}}}},{}],4:[function(e,f){f.exports=function(e){var f;return f=function(e,f,n){this.dialog=e,this.applicant=f,this.request=n,this.reattempt=!1,this.reattemptTimer=null},f.prototype={send:function(){var f=this,n=new e.RequestSender(this,this.dialog.owner.ua);n.send(),this.request.method===e.C.INVITE&&n.clientTransaction.state!==e.Transactions.C.STATUS_TERMINATED&&(this.dialog.uac_pending_reply=!0,n.clientTransaction.on("stateChanged",function o(){(this.state===e.Transactions.C.STATUS_ACCEPTED||this.state===e.Transactions.C.STATUS_COMPLETED||this.state===e.Transactions.C.STATUS_TERMINATED)&&(this.off("stateChanged",o),f.dialog.uac_pending_reply=!1,f.dialog.uas_pending_reply===!1&&f.dialog.owner.onReadyToReinvite())}))},onRequestTimeout:function(){this.applicant.onRequestTimeout()},onTransportError:function(){this.applicant.onTransportError()},receiveResponse:function(f){var n=this;408===f.status_code||481===f.status_code?this.applicant.onDialogError(f):f.method===e.C.INVITE&&491===f.status_code?this.reattempt?this.applicant.receiveResponse(f):(this.request.cseq.value=this.dialog.local_seqnum+=1,this.reattemptTimer=e.Timers.setTimeout(function(){n.applicant.owner.status!==e.Session.C.STATUS_TERMINATED&&(n.reattempt=!0,n.request_sender.send())},this.getReattemptTimeout())):this.applicant.receiveResponse(f)}},f}},{}],5:[function(e,f){f.exports=function(e,f){var n,o={STATUS_EARLY:1,STATUS_CONFIRMED:2};n=function(f,n,d,i){var t;return this.uac_pending_reply=!1,this.uas_pending_reply=!1,n.hasHeader("contact")?(i=n instanceof e.IncomingResponse?n.status_code<200?o.STATUS_EARLY:o.STATUS_CONFIRMED:i||o.STATUS_CONFIRMED,t=n.parseHeader("contact"),"UAS"===d?(this.id={call_id:n.call_id,local_tag:n.to_tag,remote_tag:n.from_tag,toString:function(){return this.call_id+this.local_tag+this.remote_tag}},this.state=i,this.remote_seqnum=n.cseq,this.local_uri=n.parseHeader("to").uri,this.remote_uri=n.parseHeader("from").uri,this.remote_target=t.uri,this.route_set=n.getHeaders("record-route"),this.invite_seqnum=n.cseq,this.local_seqnum=n.cseq):"UAC"===d&&(this.id={call_id:n.call_id,local_tag:n.from_tag,remote_tag:n.to_tag,toString:function(){return this.call_id+this.local_tag+this.remote_tag}},this.state=i,this.invite_seqnum=n.cseq,this.local_seqnum=n.cseq,this.local_uri=n.parseHeader("from").uri,this.pracked=[],this.remote_uri=n.parseHeader("to").uri,this.remote_target=t.uri,this.route_set=n.getHeaders("record-route").reverse(),this.state!==o.STATUS_EARLY||f.hasOffer||(this.mediaHandler=f.mediaHandlerFactory(f))),this.logger=f.ua.getLogger("sip.dialog",this.id.toString()),this.owner=f,f.ua.dialogs[this.id.toString()]=this,void this.logger.log("new "+d+" dialog created with status "+(this.state===o.STATUS_EARLY?"EARLY":"CONFIRMED"))):{error:"unable to create a Dialog without Contact header field"}},n.prototype={update:function(e,f){this.state=o.STATUS_CONFIRMED,this.logger.log("dialog "+this.id.toString()+" changed to CONFIRMED state"),"UAC"===f&&(this.route_set=e.getHeaders("record-route").reverse())},terminate:function(){this.logger.log("dialog "+this.id.toString()+" deleted"),this.mediaHandler&&this.state!==o.STATUS_CONFIRMED&&this.mediaHandler.peerConnection.close(),delete this.owner.ua.dialogs[this.id.toString()]},createRequest:function(f,n,o){var d,i;return n=(n||[]).slice(),this.local_seqnum||(this.local_seqnum=Math.floor(1e4*Math.random())),d=f===e.C.CANCEL||f===e.C.ACK?this.invite_seqnum:this.local_seqnum+=1,i=new e.OutgoingRequest(f,this.remote_target,this.owner.ua,{cseq:d,call_id:this.id.call_id,from_uri:this.local_uri,from_tag:this.id.local_tag,to_uri:this.remote_uri,to_tag:this.id.remote_tag,route_set:this.route_set},n,o),i.dialog=this,i},checkInDialogRequest:function(f){var n=this;if(this.remote_seqnum){if(f.cseqthis.remote_seqnum&&(this.remote_seqnum=f.cseq)}else this.remote_seqnum=f.cseq;switch(f.method){case e.C.INVITE:if(this.uac_pending_reply===!0)f.reply(491);else{if(this.uas_pending_reply===!0){var o=(10*Math.random()|0)+1;return f.reply(500,null,["Retry-After:"+o]),!1}this.uas_pending_reply=!0,f.server_transaction.on("stateChanged",function d(){(this.state===e.Transactions.C.STATUS_ACCEPTED||this.state===e.Transactions.C.STATUS_COMPLETED||this.state===e.Transactions.C.STATUS_TERMINATED)&&(this.off("stateChanged",d),n.uas_pending_reply=!1,n.uac_pending_reply===!1&&n.owner.onReadyToReinvite())})}f.hasHeader("contact")&&f.server_transaction.on("stateChanged",function(){this.state===e.Transactions.C.STATUS_ACCEPTED&&(n.remote_target=f.parseHeader("contact").uri)});break;case e.C.NOTIFY:f.hasHeader("contact")&&f.server_transaction.on("stateChanged",function(){this.state===e.Transactions.C.STATUS_COMPLETED&&(n.remote_target=f.parseHeader("contact").uri)})}return!0},sendRequest:function(e,n,o){o=o||{};var d=(o.extraHeaders||[]).slice(),i=o.body||null,t=this.createRequest(n,d,i),l=new f(this,e,t);return l.send(),t},receiveRequest:function(e){this.checkInDialogRequest(e)&&this.owner.receiveRequest(e)}},n.C=o,e.Dialog=n}},{}],6:[function(e,f){f.exports=function(e){var f;return f=function(e){this.logger=e.getLogger("sipjs.digestauthentication"),this.username=e.configuration.authorizationUser,this.password=e.configuration.password,this.cnonce=null,this.nc=0,this.ncHex="00000000",this.response=null},f.prototype.authenticate=function(f,n){if(this.algorithm=n.algorithm,this.realm=n.realm,this.nonce=n.nonce,this.opaque=n.opaque,this.stale=n.stale,this.algorithm){if("MD5"!==this.algorithm)return this.logger.warn('challenge with Digest algorithm different than "MD5", authentication aborted'),!1}else this.algorithm="MD5";if(!this.realm)return this.logger.warn("challenge without Digest realm, authentication aborted"),!1;if(!this.nonce)return this.logger.warn("challenge without Digest nonce, authentication aborted"),!1;if(n.qop)if(n.qop.indexOf("auth")>-1)this.qop="auth";else{if(!(n.qop.indexOf("auth-int")>-1))return this.logger.warn('challenge without Digest qop different than "auth" or "auth-int", authentication aborted'),!1;this.qop="auth-int"}else this.qop=null;return this.method=f.method,this.uri=f.ruri,this.cnonce=e.createRandomToken(12),this.nc+=1,this.updateNcHex(),4294967296===this.nc&&(this.nc=1,this.ncHex="00000001"),this.calculateResponse(),!0},f.prototype.calculateResponse=function(){var f,n;f=e.calculateMD5(this.username+":"+this.realm+":"+this.password),"auth"===this.qop?(n=e.calculateMD5(this.method+":"+this.uri),this.response=e.calculateMD5(f+":"+this.nonce+":"+this.ncHex+":"+this.cnonce+":auth:"+n)):"auth-int"===this.qop?(n=e.calculateMD5(this.method+":"+this.uri+":"+e.calculateMD5(this.body?this.body:"")),this.response=e.calculateMD5(f+":"+this.nonce+":"+this.ncHex+":"+this.cnonce+":auth-int:"+n)):null===this.qop&&(n=e.calculateMD5(this.method+":"+this.uri),this.response=e.calculateMD5(f+":"+this.nonce+":"+n))},f.prototype.toString=function(){var e=[];if(!this.response)throw new Error("response field does not exist, cannot generate Authorization header");return e.push("algorithm="+this.algorithm),e.push('username="'+this.username+'"'),e.push('realm="'+this.realm+'"'),e.push('nonce="'+this.nonce+'"'),e.push('uri="'+this.uri+'"'),e.push('response="'+this.response+'"'),this.opaque&&e.push('opaque="'+this.opaque+'"'),this.qop&&(e.push("qop="+this.qop),e.push('cnonce="'+this.cnonce+'"'),e.push("nc="+this.ncHex)),"Digest "+e.join(", ")},f.prototype.updateNcHex=function(){var e=Number(this.nc).toString(16);this.ncHex="00000000".substr(0,8-e.length)+e},f}},{}],7:[function(e,f){f.exports=function(e){var f,n,o=(new e.LoggerFactory).getLogger("sip.eventemitter"),d={MAX_LISTENERS:10};f=function(){},f.prototype={initEvents:function(e){return this.events={},this.initMoreEvents(e)},initMoreEvents:function(e){var f;for(this.logger||(this.logger=o),this.maxListeners=d.MAX_LISTENERS,f=0;f0},on:function(e,f,n){if(void 0===f)return this;if("function"!=typeof f)return this.logger.error("listener must be a function"),this;if(!this.checkEvent(e))throw this.logger.error("unable to add a listener to a nonexistent event "+e),new TypeError("Invalid or uninitialized event: "+e);var o={listener:f};return n&&(o.bindTarget=n),this.events[e].length>=this.maxListeners?(this.logger.warn("max listeners exceeded for event "+e),this):(this.events[e].push(o),this.logger.log("new listener added to event "+e),this)},once:function(e,f,n){function o(){f.apply(this,arguments),d.off(e,o,n)}var d=this;return this.on(e,o,n)},off:function(e,f,n){var o,d,i=0;if(f&&"function"!=typeof f)return this.logger.error("listener must be a function"),this;if(!e){for(i in this.events)this.events[i]=[];return this}if(!this.checkEvent(e))throw this.logger.error("unable to remove a listener from a nonexistent event "+e),new TypeError("Invalid or uninitialized event: "+e);for(o=this.events[e],d=o.length;d>i;)!o[i]||f&&o[i].listener!==f||n&&o[i].bindTarget!==n?i++:o.splice(i,1);return this},setMaxListeners:function(e){return"number"!=typeof e||0>e?(this.logger.error("listeners must be a positive number"),this):(this.maxListeners=e,this)},emit:function(e){if(!this.checkEvent(e))throw this.logger.error("unable to emit a nonexistent event "+e),new TypeError("Invalid or uninitialized event: "+e);this.logger.log("emitting event "+e);var f=Array.prototype.slice.call(arguments,1);return this.events[e].slice().forEach(function(e){try{e.listener.apply(e.bindTarget||this,f)}catch(n){this.logger.error(n.stack)}},this),this}},n=function(e,f,n){this.type=e,this.sender=f,this.data=n},f.C=d,e.EventEmitter=f,e.Event=n}},{}],8:[function(e,f){f.exports={ConfigurationError:function(){var e=function(e,f){this.code=1,this.name="CONFIGURATION_ERROR",this.parameter=e,this.value=f,this.message=this.value?"Invalid value "+JSON.stringify(this.value)+' for parameter "'+this.parameter+'"':"Missing parameter: "+this.parameter};return e.prototype=new Error,e}(),InvalidStateError:function(){var e=function(e){this.code=2,this.name="INVALID_STATE_ERROR",this.status=e,this.message="Invalid status: "+e};return e.prototype=new Error,e}(),NotSupportedError:function(){var e=function(e){this.code=3,this.name="NOT_SUPPORTED_ERROR",this.message=e};return e.prototype=new Error,e}(),NotReadyError:function(){var e=function(e){this.code=4,this.name="NOT_READY_ERROR",this.message=e};return e.prototype=new Error,e}()}},{}],9:[function(e,f){f.exports=function(e){function f(e,f){function n(){this.constructor=e}n.prototype=f.prototype,e.prototype=new n}function n(e,f,n,o,d,i){this.message=e,this.expected=f,this.found=n,this.offset=o,this.line=d,this.column=i,this.name="SyntaxError"}function o(f){function o(){return f.substring(g,m)}function d(){return g}function i(e){function n(e,n,o){var d,i;for(d=n;o>d;d++)i=f.charAt(d),"\n"===i?(e.seenCR||e.line++,e.column=1,e.seenCR=!1):"\r"===i||"\u2028"===i||"\u2029"===i?(e.line++,e.column=1,e.seenCR=!0):(e.column++,e.seenCR=!1)}return x!==e&&(x>e&&(x=0,j={line:1,column:1,seenCR:!1}),n(j,x,e),x=e),j}function t(e){v>m||(m>v&&(v=m,I=[]),I.push(e))}function l(e,o,d){function t(e){var f=1;for(e.sort(function(e,f){return e.descriptionf.description?1:0});f1?t.slice(0,-1).join(", ")+" or "+t[e.length-1]:t[0],d=f?'"'+n(f)+'"':"end of input","Expected "+o+" but "+d+" found."}var u=i(d),p=dl;)switch(i[l]){case 0:a.push(n(w[i[l+1]])),l+=2;break;case 1:a.push(m),l++;break;case 2:a.pop(),l++;break;case 3:m=a.pop(),l++;break;case 4:a.length-=i[l+1],l+=2;break;case 5:a.splice(-2,1),l++;break;case 6:a[a.length-2].push(a.pop()),l++;break;case 7:a.push(a.splice(a.length-i[l+1],i[l+1])),l+=2;break;case 8:a.pop(),a.push(f.substring(a[a.length-1],m)),l++;break;case 9:y.push(s),u.push(l+3+i[l+1]+i[l+2]),a[a.length-1]?(s=l+3+i[l+1],l+=3):(s=l+3+i[l+1]+i[l+2],l+=3+i[l+1]);break;case 10:y.push(s),u.push(l+3+i[l+1]+i[l+2]),a[a.length-1]===c?(s=l+3+i[l+1],l+=3):(s=l+3+i[l+1]+i[l+2],l+=3+i[l+1]);break;case 11:y.push(s),u.push(l+3+i[l+1]+i[l+2]),a[a.length-1]!==c?(s=l+3+i[l+1],l+=3):(s=l+3+i[l+1]+i[l+2],l+=3+i[l+1]);break;case 12:a[a.length-1]!==c?(y.push(s),u.push(l),s=l+2+i[l+1],l+=2):l+=2+i[l+1];break;case 13:y.push(s),u.push(l+3+i[l+1]+i[l+2]),f.length>m?(s=l+3+i[l+1],l+=3):(s=l+3+i[l+1]+i[l+2],l+=3+i[l+1]);break;case 14:y.push(s),u.push(l+4+i[l+2]+i[l+3]),f.substr(m,w[i[l+1]].length)===w[i[l+1]]?(s=l+4+i[l+2],l+=4):(s=l+4+i[l+2]+i[l+3],l+=4+i[l+2]);break;case 15:y.push(s),u.push(l+4+i[l+2]+i[l+3]),f.substr(m,w[i[l+1]].length).toLowerCase()===w[i[l+1]]?(s=l+4+i[l+2],l+=4):(s=l+4+i[l+2]+i[l+3],l+=4+i[l+2]);break;case 16:y.push(s),u.push(l+4+i[l+2]+i[l+3]),w[i[l+1]].test(f.charAt(m))?(s=l+4+i[l+2],l+=4):(s=l+4+i[l+2]+i[l+3],l+=4+i[l+2]);break;case 17:a.push(f.substr(m,i[l+1])),m+=i[l+1],l+=2;break;case 18:a.push(w[i[l+1]]),m+=w[i[l+1]].length,l+=2;break;case 19:a.push(c),0===P&&t(w[i[l+1]]),l+=2;break;case 20:g=a[a.length-1-i[l+1]],l+=2;break;case 21:g=m,l++;break;case 22:for(o=i.slice(l+4,l+4+i[l+3]),d=0;d0))break;s=y.pop(),l=u.pop()}return a[0]}var s,y=arguments.length>1?arguments[1]:{},c={},a={Contact:118,Name_Addr_Header:155,Record_Route:175,Request_Response:81,SIP_URI:45,Subscription_State:182,Via:190,absoluteURI:84,Call_ID:117,Content_Disposition:129,Content_Length:134,Content_Type:135,CSeq:145,displayName:121,Event:148,From:150,host:52,Max_Forwards:153,Proxy_Authenticate:156,quoted_string:40,Refer_To:177,stun_URI:209,To:188,turn_URI:216,uuid:219,WWW_Authenticate:205,challenge:157},r=118,w=["\r\n",{type:"literal",value:"\r\n",description:'"\\r\\n"'},/^[0-9]/,{type:"class",value:"[0-9]",description:"[0-9]"},/^[a-zA-Z]/,{type:"class",value:"[a-zA-Z]",description:"[a-zA-Z]"},/^[0-9a-fA-F]/,{type:"class",value:"[0-9a-fA-F]",description:"[0-9a-fA-F]"},/^[\0-\xFF]/,{type:"class",value:"[\\0-\\xFF]",description:"[\\0-\\xFF]"},/^["]/,{type:"class",value:'["]',description:'["]'}," ",{type:"literal",value:" ",description:'" "'}," ",{type:"literal",value:" ",description:'"\\t"'},/^[a-zA-Z0-9]/,{type:"class",value:"[a-zA-Z0-9]",description:"[a-zA-Z0-9]"},";",{type:"literal",value:";",description:'";"'},"/",{type:"literal",value:"/",description:'"/"'},"?",{type:"literal",value:"?",description:'"?"'},":",{type:"literal",value:":",description:'":"'},"@",{type:"literal",value:"@",description:'"@"'},"&",{type:"literal",value:"&",description:'"&"'},"=",{type:"literal",value:"=",description:'"="'},"+",{type:"literal",value:"+",description:'"+"'},"$",{type:"literal",value:"$",description:'"$"'},",",{type:"literal",value:",",description:'","'},"-",{type:"literal",value:"-",description:'"-"'},"_",{type:"literal",value:"_",description:'"_"'},".",{type:"literal",value:".",description:'"."'},"!",{type:"literal",value:"!",description:'"!"'},"~",{type:"literal",value:"~",description:'"~"'},"*",{type:"literal",value:"*",description:'"*"'},"'",{type:"literal",value:"'",description:'"\'"'},"(",{type:"literal",value:"(",description:'"("'},")",{type:"literal",value:")",description:'")"'},c,"%",{type:"literal",value:"%",description:'"%"'},function(e){return e.join("")},null,[],function(){return" "},function(){return":"},function(){return o()},/^[!-~]/,{type:"class",value:"[!-~]",description:"[!-~]"},/^[\x80-\uFFFF]/,{type:"class",value:"[\\x80-\\uFFFF]",description:"[\\x80-\\uFFFF]"},/^[\x80-\xBF]/,{type:"class",value:"[\\x80-\\xBF]",description:"[\\x80-\\xBF]"},/^[a-f]/,{type:"class",value:"[a-f]",description:"[a-f]"},"`",{type:"literal",value:"`",description:'"`"'},function(){return o()},"<",{type:"literal",value:"<",description:'"<"'},">",{type:"literal",value:">",description:'">"'},"\\",{type:"literal",value:"\\",description:'"\\\\"'},"[",{type:"literal",value:"[",description:'"["'},"]",{type:"literal",value:"]",description:'"]"'},"{",{type:"literal",value:"{",description:'"{"'},"}",{type:"literal",value:"}",description:'"}"'},function(){return"*"},function(){return"/"},function(){return"="},function(){return"("},function(){return")"},function(){return">"},function(){return"<"},function(){return","},function(){return";"},function(){return":"},function(){return'"'},/^[!-']/,{type:"class",value:"[!-']",description:"[!-']"},/^[*-[]/,{type:"class",value:"[*-[]",description:"[*-[]"},/^[\]-~]/,{type:"class",value:"[\\]-~]",description:"[\\]-~]"},function(e){return e},/^[#-[]/,{type:"class",value:"[#-[]",description:"[#-[]"},/^[\0-\t]/,{type:"class",value:"[\\0-\\t]",description:"[\\0-\\t]"},/^[\x0B-\f]/,{type:"class",value:"[\\x0B-\\f]",description:"[\\x0B-\\f]"},/^[\x0E-]/,{type:"class",value:"[\\x0E-]",description:"[\\x0E-]"},function(){S.uri=new e.URI(S.scheme,S.user,S.host,S.port),delete S.scheme,delete S.user,delete S.host,delete S.host_type,delete S.port},function(){S.uri=new e.URI(S.scheme,S.user,S.host,S.port,S.uri_params,S.uri_headers),delete S.scheme,delete S.user,delete S.host,delete S.host_type,delete S.port,delete S.uri_params,"SIP_URI"===y.startRule&&(S=S.uri)},"sips",{type:"literal",value:"sips",description:'"sips"'},"sip",{type:"literal",value:"sip",description:'"sip"'},function(e){S.scheme=e.toLowerCase()},function(){S.user=decodeURIComponent(o().slice(0,-1))},function(){S.password=o()},function(){return S.host=o().toLowerCase(),S.host},function(){return S.host_type="domain",o()},/^[a-zA-Z0-9_\-]/,{type:"class",value:"[a-zA-Z0-9_\\-]",description:"[a-zA-Z0-9_\\-]"},/^[a-zA-Z0-9\-]/,{type:"class",value:"[a-zA-Z0-9\\-]",description:"[a-zA-Z0-9\\-]"},function(){return S.host_type="IPv6",o()},"::",{type:"literal",value:"::",description:'"::"'},function(){return S.host_type="IPv6",o()},function(){return S.host_type="IPv4",o()},"25",{type:"literal",value:"25",description:'"25"'},/^[0-5]/,{type:"class",value:"[0-5]",description:"[0-5]"},"2",{type:"literal",value:"2",description:'"2"'},/^[0-4]/,{type:"class",value:"[0-4]",description:"[0-4]"},"1",{type:"literal",value:"1",description:'"1"'},/^[1-9]/,{type:"class",value:"[1-9]",description:"[1-9]"},function(e){return e=parseInt(e.join("")),S.port=e,e},"transport=",{type:"literal",value:"transport=",description:'"transport="'},"udp",{type:"literal",value:"udp",description:'"udp"'},"tcp",{type:"literal",value:"tcp",description:'"tcp"'},"sctp",{type:"literal",value:"sctp",description:'"sctp"'},"tls",{type:"literal",value:"tls",description:'"tls"'},function(e){S.uri_params||(S.uri_params={}),S.uri_params.transport=e.toLowerCase()},"user=",{type:"literal",value:"user=",description:'"user="'},"phone",{type:"literal",value:"phone",description:'"phone"'},"ip",{type:"literal",value:"ip",description:'"ip"'},function(e){S.uri_params||(S.uri_params={}),S.uri_params.user=e.toLowerCase()},"method=",{type:"literal",value:"method=",description:'"method="'},function(e){S.uri_params||(S.uri_params={}),S.uri_params.method=e},"ttl=",{type:"literal",value:"ttl=",description:'"ttl="'},function(e){S.params||(S.params={}),S.params.ttl=e},"maddr=",{type:"literal",value:"maddr=",description:'"maddr="'},function(e){S.uri_params||(S.uri_params={}),S.uri_params.maddr=e},"lr",{type:"literal",value:"lr",description:'"lr"'},function(){S.uri_params||(S.uri_params={}),S.uri_params.lr=void 0},function(e,f){S.uri_params||(S.uri_params={}),f=null===f?void 0:f[1],S.uri_params[e.toLowerCase()]=f&&f.toLowerCase()},function(e){return e.join("")},function(e){return e.join("")},function(e,f){e=e.join("").toLowerCase(),f=f.join(""),S.uri_headers||(S.uri_headers={}),S.uri_headers[e]?S.uri_headers[e].push(f):S.uri_headers[e]=[f]},function(){"Refer_To"===y.startRule&&(S.uri=new e.URI(S.scheme,S.user,S.host,S.port,S.uri_params,S.uri_headers),delete S.scheme,delete S.user,delete S.host,delete S.host_type,delete S.port,delete S.uri_params)},"//",{type:"literal",value:"//",description:'"//"'},function(){S.scheme=o()},{type:"literal",value:"SIP",description:'"SIP"'},function(){S.sip_version=o()},"INVITE",{type:"literal",value:"INVITE",description:'"INVITE"'},"ACK",{type:"literal",value:"ACK",description:'"ACK"'},"VXACH",{type:"literal",value:"VXACH",description:'"VXACH"'},"OPTIONS",{type:"literal",value:"OPTIONS",description:'"OPTIONS"'},"BYE",{type:"literal",value:"BYE",description:'"BYE"'},"CANCEL",{type:"literal",value:"CANCEL",description:'"CANCEL"'},"REGISTER",{type:"literal",value:"REGISTER",description:'"REGISTER"'},"SUBSCRIBE",{type:"literal",value:"SUBSCRIBE",description:'"SUBSCRIBE"'},"NOTIFY",{type:"literal",value:"NOTIFY",description:'"NOTIFY"'},"REFER",{type:"literal",value:"REFER",description:'"REFER"'},function(){return S.method=o(),S.method},function(e){S.status_code=parseInt(e.join(""))},function(){S.reason_phrase=o()},function(){S=o()},function(){var e,f;for(f=S.multi_header.length,e=0;f>e;e++)if(null===S.multi_header[e].parsed){S=null;break}S=null!==S?S.multi_header:-1},function(){var f;S.multi_header||(S.multi_header=[]);try{f=new e.NameAddrHeader(S.uri,S.displayName,S.params),delete S.uri,delete S.displayName,delete S.params}catch(n){f=null}S.multi_header.push({position:m,offset:d(),parsed:f})},function(e){e=o().trim(),'"'===e[0]&&(e=e.substring(1,e.length-1)),S.displayName=e},"q",{type:"literal",value:"q",description:'"q"'},function(e){S.params||(S.params={}),S.params.q=e},"expires",{type:"literal",value:"expires",description:'"expires"'},function(e){S.params||(S.params={}),S.params.expires=e},function(e){return parseInt(e.join(""))},"0",{type:"literal",value:"0",description:'"0"'},function(){return parseFloat(o())},function(e,f){S.params||(S.params={}),f=null===f?void 0:f[1],S.params[e.toLowerCase()]=f},"render",{type:"literal",value:"render",description:'"render"'},"session",{type:"literal",value:"session",description:'"session"'},"icon",{type:"literal",value:"icon",description:'"icon"'},"alert",{type:"literal",value:"alert",description:'"alert"'},function(){"Content_Disposition"===y.startRule&&(S.type=o().toLowerCase())},"handling",{type:"literal",value:"handling",description:'"handling"'},"optional",{type:"literal",value:"optional",description:'"optional"'},"required",{type:"literal",value:"required",description:'"required"'},function(e){S=parseInt(e.join(""))},function(){S=o()},"text",{type:"literal",value:"text",description:'"text"'},"image",{type:"literal",value:"image",description:'"image"'},"audio",{type:"literal",value:"audio",description:'"audio"'},"video",{type:"literal",value:"video",description:'"video"'},"application",{type:"literal",value:"application",description:'"application"'},"message",{type:"literal",value:"message",description:'"message"'},"multipart",{type:"literal",value:"multipart",description:'"multipart"'},"x-",{type:"literal",value:"x-",description:'"x-"'},function(e){S.value=parseInt(e.join(""))},function(e){S=e},function(e){S.event=e.toLowerCase()},function(){var f=S.tag;S=new e.NameAddrHeader(S.uri,S.displayName,S.params),f&&S.setParam("tag",f)},"tag",{type:"literal",value:"tag",description:'"tag"'},function(e){S.tag=e},function(e){S=parseInt(e.join(""))},function(e){S=e},function(){S=new e.NameAddrHeader(S.uri,S.displayName,S.params)},"digest",{type:"literal",value:"Digest",description:'"Digest"'},"realm",{type:"literal",value:"realm",description:'"realm"'},function(e){S.realm=e},"domain",{type:"literal",value:"domain",description:'"domain"'},"nonce",{type:"literal",value:"nonce",description:'"nonce"'},function(e){S.nonce=e},"opaque",{type:"literal",value:"opaque",description:'"opaque"'},function(e){S.opaque=e},"stale",{type:"literal",value:"stale",description:'"stale"'},"true",{type:"literal",value:"true",description:'"true"'},function(){S.stale=!0},"false",{type:"literal",value:"false",description:'"false"'},function(){S.stale=!1},"algorithm",{type:"literal",value:"algorithm",description:'"algorithm"'},"md5",{type:"literal",value:"MD5",description:'"MD5"'},"md5-sess",{type:"literal",value:"MD5-sess",description:'"MD5-sess"'},function(e){S.algorithm=e.toUpperCase()},"qop",{type:"literal",value:"qop",description:'"qop"'},"auth-int",{type:"literal",value:"auth-int",description:'"auth-int"'},"auth",{type:"literal",value:"auth",description:'"auth"'},function(e){S.qop||(S.qop=[]),S.qop.push(e.toLowerCase())},function(e){S.value=parseInt(e.join(""))},function(){var e,f;for(f=S.multi_header.length,e=0;f>e;e++)if(null===S.multi_header[e].parsed){S=null;break}S=null!==S?S.multi_header:-1},function(){var f;S.multi_header||(S.multi_header=[]); -try{f=new e.NameAddrHeader(S.uri,S.displayName,S.params),delete S.uri,delete S.displayName,delete S.params}catch(n){f=null}S.multi_header.push({position:m,offset:d(),parsed:f})},function(){S=new e.NameAddrHeader(S.uri,S.displayName,S.params)},function(e){S.value=parseInt(e.join(""))},"active",{type:"literal",value:"active",description:'"active"'},"pending",{type:"literal",value:"pending",description:'"pending"'},"terminated",{type:"literal",value:"terminated",description:'"terminated"'},function(){S.state=o()},"reason",{type:"literal",value:"reason",description:'"reason"'},function(e){"undefined"!=typeof e&&(S.reason=e)},function(e){"undefined"!=typeof e&&(S.expires=e)},"retry_after",{type:"literal",value:"retry_after",description:'"retry_after"'},function(e){"undefined"!=typeof e&&(S.retry_after=e)},"deactivated",{type:"literal",value:"deactivated",description:'"deactivated"'},"probation",{type:"literal",value:"probation",description:'"probation"'},"rejected",{type:"literal",value:"rejected",description:'"rejected"'},"timeout",{type:"literal",value:"timeout",description:'"timeout"'},"giveup",{type:"literal",value:"giveup",description:'"giveup"'},"noresource",{type:"literal",value:"noresource",description:'"noresource"'},"invariant",{type:"literal",value:"invariant",description:'"invariant"'},function(){var f=S.tag;S=new e.NameAddrHeader(S.uri,S.displayName,S.params),f&&S.setParam("tag",f)},"ttl",{type:"literal",value:"ttl",description:'"ttl"'},function(e){S.ttl=e},"maddr",{type:"literal",value:"maddr",description:'"maddr"'},function(e){S.maddr=e},"received",{type:"literal",value:"received",description:'"received"'},function(e){S.received=e},"branch",{type:"literal",value:"branch",description:'"branch"'},function(e){S.branch=e},"rport",{type:"literal",value:"rport",description:'"rport"'},function(){"undefined"!=typeof response_port&&(S.rport=response_port.join(""))},function(e){S.protocol=e},{type:"literal",value:"UDP",description:'"UDP"'},{type:"literal",value:"TCP",description:'"TCP"'},{type:"literal",value:"TLS",description:'"TLS"'},{type:"literal",value:"SCTP",description:'"SCTP"'},function(e){S.transport=e},function(){S.host=o()},function(e){S.port=parseInt(e.join(""))},function(e){return parseInt(e.join(""))},"stuns",{type:"literal",value:"stuns",description:'"stuns"'},"stun",{type:"literal",value:"stun",description:'"stun"'},function(e){S.scheme=e},function(e){S.host=e},function(){return o()},"?transport=",{type:"literal",value:"?transport=",description:'"?transport="'},"turns",{type:"literal",value:"turns",description:'"turns"'},"turn",{type:"literal",value:"turn",description:'"turn"'},function(){S.transport=transport},function(){S=o()}],b=[u('. ""2 3!'),u('0"""1!3#'),u('0$""1!3%'),u('0&""1!3\''),u("7'*# \"7("),u('0(""1!3)'),u('0*""1!3+'),u('.,""2,3-'),u('..""2.3/'),u('00""1!31'),u('.2""2233*\x89 ".4""2435*} ".6""2637*q ".8""2839*e ".:""2:3;*Y ".<""2<3=*M ".>""2>3?*A ".@""2@3A*5 ".B""2B3C*) ".D""2D3E'),u('7)*# "7,'),u('.F""2F3G*} ".H""2H3I*q ".J""2J3K*e ".L""2L3M*Y ".N""2N3O*M ".P""2P3Q*A ".R""2R3S*5 ".T""2T3U*) ".V""2V3W'),u('!!.Y""2Y3Z+7$7#+-%7#+#%\'#%$## X$"# X"# X+\' 4!6[!! %'),u('!! ]7$,#&7$"+-$7 +#%\'"%$"# X"# X*# " \\+@$ ]7$+&$,#&7$""" X+\'%4"6^" %$"# X"# X'),u('7.*# " \\'),u('! ]7\'*# "7(,)&7\'*# "7("+A$.8""2839+1%7/+\'%4#6_# %$## X$"# X"# X'),u('! ]72+&$,#&72""" X+s$ ]! ]7.,#&7."+-$72+#%\'"%$"# X"# X,@&! ]7.,#&7."+-$72+#%\'"%$"# X"# X"+\'%4"6`" %$"# X"# X'),u('0a""1!3b*# "73'),u('0c""1!3d'),u('0e""1!3f'),u('7!*) "0g""1!3h'),u('! ]7)*\x95 ".F""2F3G*\x89 ".J""2J3K*} ".L""2L3M*q ".Y""2Y3Z*e ".P""2P3Q*Y ".H""2H3I*M ".@""2@3A*A ".i""2i3j*5 ".R""2R3S*) ".N""2N3O+\x9e$,\x9b&7)*\x95 ".F""2F3G*\x89 ".J""2J3K*} ".L""2L3M*q ".Y""2Y3Z*e ".P""2P3Q*Y ".H""2H3I*M ".@""2@3A*A ".i""2i3j*5 ".R""2R3S*) ".N""2N3O""" X+& 4!6k! %'),u('! ]7)*\x89 ".F""2F3G*} ".L""2L3M*q ".Y""2Y3Z*e ".P""2P3Q*Y ".H""2H3I*M ".@""2@3A*A ".i""2i3j*5 ".R""2R3S*) ".N""2N3O+\x92$,\x8f&7)*\x89 ".F""2F3G*} ".L""2L3M*q ".Y""2Y3Z*e ".P""2P3Q*Y ".H""2H3I*M ".@""2@3A*A ".i""2i3j*5 ".R""2R3S*) ".N""2N3O""" X+& 4!6k! %'),u('.T""2T3U*\xe3 ".V""2V3W*\xd7 ".l""2l3m*\xcb ".n""2n3o*\xbf ".:""2:3;*\xb3 ".D""2D3E*\xa7 ".2""2233*\x9b ".8""2839*\x8f ".p""2p3q*\x83 "7&*} ".4""2435*q ".r""2r3s*e ".t""2t3u*Y ".6""2637*M ".>""2>3?*A ".v""2v3w*5 ".x""2x3y*) "7\'*# "7('),u('! ]7)*\u012b ".F""2F3G*\u011f ".J""2J3K*\u0113 ".L""2L3M*\u0107 ".Y""2Y3Z*\xfb ".P""2P3Q*\xef ".H""2H3I*\xe3 ".@""2@3A*\xd7 ".i""2i3j*\xcb ".R""2R3S*\xbf ".N""2N3O*\xb3 ".T""2T3U*\xa7 ".V""2V3W*\x9b ".l""2l3m*\x8f ".n""2n3o*\x83 ".8""2839*w ".p""2p3q*k "7&*e ".4""2435*Y ".r""2r3s*M ".t""2t3u*A ".6""2637*5 ".v""2v3w*) ".x""2x3y+\u0134$,\u0131&7)*\u012b ".F""2F3G*\u011f ".J""2J3K*\u0113 ".L""2L3M*\u0107 ".Y""2Y3Z*\xfb ".P""2P3Q*\xef ".H""2H3I*\xe3 ".@""2@3A*\xd7 ".i""2i3j*\xcb ".R""2R3S*\xbf ".N""2N3O*\xb3 ".T""2T3U*\xa7 ".V""2V3W*\x9b ".l""2l3m*\x8f ".n""2n3o*\x83 ".8""2839*w ".p""2p3q*k "7&*e ".4""2435*Y ".r""2r3s*M ".t""2t3u*A ".6""2637*5 ".v""2v3w*) ".x""2x3y""" X+& 4!6k! %'),u('!7/+A$.P""2P3Q+1%7/+\'%4#6z# %$## X$"# X"# X'),u('!7/+A$.4""2435+1%7/+\'%4#6{# %$## X$"# X"# X'),u('!7/+A$.>""2>3?+1%7/+\'%4#6|# %$## X$"# X"# X'),u('!7/+A$.T""2T3U+1%7/+\'%4#6}# %$## X$"# X"# X'),u('!7/+A$.V""2V3W+1%7/+\'%4#6~# %$## X$"# X"# X'),u('!.n""2n3o+1$7/+\'%4"6" %$"# X"# X'),u('!7/+7$.l""2l3m+\'%4"6\x80" %$"# X"# X'),u('!7/+A$.D""2D3E+1%7/+\'%4#6\x81# %$## X$"# X"# X'),u('!7/+A$.2""2233+1%7/+\'%4#6\x82# %$## X$"# X"# X'),u('!7/+A$.8""2839+1%7/+\'%4#6\x83# %$## X$"# X"# X'),u('!7/+1$7&+\'%4"6\x84" %$"# X"# X'),u('!7&+1$7/+\'%4"6\x84" %$"# X"# X'),u('!7=+W$ ]7G*) "7K*# "7F,/&7G*) "7K*# "7F"+-%7>+#%\'#%$## X$"# X"# X'),u('0\x85""1!3\x86*A "0\x87""1!3\x88*5 "0\x89""1!3\x8a*) "73*# "7.'),u('!7/+Y$7&+O% ]7J*# "7K,)&7J*# "7K"+1%7&+\'%4$6k$ %$$# X$## X$"# X"# X'),u('!7/+`$7&+V%! ]7J*# "7K,)&7J*# "7K"+! (%+2%7&+(%4$6\x8b$!!%$$# X$## X$"# X"# X'),u('7.*G ".L""2L3M*; "0\x8c""1!3\x8d*/ "0\x89""1!3\x8a*# "73'),u('!.p""2p3q+K$0\x8e""1!3\x8f*5 "0\x90""1!3\x91*) "0\x92""1!3\x93+#%\'"%$"# X"# X'),u('!7N+Q$.8""2839+A%7O*# " \\+1%7S+\'%4$6\x94$ %$$# X$## X$"# X"# X'),u('!7N+k$.8""2839+[%7O*# " \\+K%7S+A%7_+7%7l*# " \\+\'%4&6\x95& %$&# X$%# X$$# X$## X$"# X"# X'),u('!/\x96""1$3\x97*) "/\x98""1#3\x99+\' 4!6\x9a!! %'),u('!7P+b$!.8""2839+-$7R+#%\'"%$"# X"# X*# " \\+7%.:""2:3;+\'%4#6\x9b# %$## X$"# X"# X'),u(' ]7+*) "7-*# "7Q+2$,/&7+*) "7-*# "7Q""" X'),u('.<""2<3=*q ".>""2>3?*e ".@""2@3A*Y ".B""2B3C*M ".D""2D3E*A ".2""2233*5 ".6""2637*) ".4""2435'),u('! ]7+*_ "7-*Y ".<""2<3=*M ".>""2>3?*A ".@""2@3A*5 ".B""2B3C*) ".D""2D3E,e&7+*_ "7-*Y ".<""2<3=*M ".>""2>3?*A ".@""2@3A*5 ".B""2B3C*) ".D""2D3E"+& 4!6\x9c! %'),u('!7T+N$!.8""2839+-$7^+#%\'"%$"# X"# X*# " \\+#%\'"%$"# X"# X'),u('!7U*) "7\\*# "7X+& 4!6\x9d! %'),u('! ]!7V+3$.J""2J3K+#%\'"%$"# X"# X,>&!7V+3$.J""2J3K+#%\'"%$"# X"# X"+G$7W+=%.J""2J3K*# " \\+\'%4#6\x9e# %$## X$"# X"# X'),u(' ]0\x9f""1!3\xa0+,$,)&0\x9f""1!3\xa0""" X'),u('!0$""1!3%+A$ ]0\xa1""1!3\xa2,)&0\xa1""1!3\xa2"+#%\'"%$"# X"# X'),u('!.r""2r3s+A$7Y+7%.t""2t3u+\'%4#6\xa3# %$## X$"# X"# X'),u('!!7Z+\xbf$.8""2839+\xaf%7Z+\xa5%.8""2839+\x95%7Z+\x8b%.8""2839+{%7Z+q%.8""2839+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\'-%$-# X$,# X$+# X$*# X$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0838 "!.\xa4""2\xa43\xa5+\xaf$7Z+\xa5%.8""2839+\x95%7Z+\x8b%.8""2839+{%7Z+q%.8""2839+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\',%$,# X$+# X$*# X$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0795 "!.\xa4""2\xa43\xa5+\x95$7Z+\x8b%.8""2839+{%7Z+q%.8""2839+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\'*%$*# X$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u070c "!.\xa4""2\xa43\xa5+{$7Z+q%.8""2839+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\'(%$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u069d "!.\xa4""2\xa43\xa5+a$7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\'&%$&# X$%# X$$# X$## X$"# X"# X*\u0648 "!.\xa4""2\xa43\xa5+G$7Z+=%.8""2839+-%7[+#%\'$%$$# X$## X$"# X"# X*\u060d "!.\xa4""2\xa43\xa5+-$7[+#%\'"%$"# X"# X*\u05ec "!.\xa4""2\xa43\xa5+-$7Z+#%\'"%$"# X"# X*\u05cb "!7Z+\xa5$.\xa4""2\xa43\xa5+\x95%7Z+\x8b%.8""2839+{%7Z+q%.8""2839+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\'+%$+# X$*# X$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0538 "!7Z+\xb6$!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\x8b%.\xa4""2\xa43\xa5+{%7Z+q%.8""2839+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\'*%$*# X$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0494 "!7Z+\xc7$!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\x9c%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+q%.\xa4""2\xa43\xa5+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\')%$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u03df "!7Z+\xd8$!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\xad%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\x82%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+W%.\xa4""2\xa43\xa5+G%7Z+=%.8""2839+-%7[+#%\'(%$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0319 "!7Z+\xe9$!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\xbe%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\x93%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+h%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+=%.\xa4""2\xa43\xa5+-%7[+#%\'\'%$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0242 "!7Z+\u0114$!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\xe9%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\xbe%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\x93%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+h%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+=%.\xa4""2\xa43\xa5+-%7Z+#%\'(%$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0140 "!7Z+\u0135$!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\u010a%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\xdf%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\xb4%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\x89%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+^%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+3%.\xa4""2\xa43\xa5+#%\'(%$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X+& 4!6\xa6! %'),u('!7#+S$7#*# " \\+C%7#*# " \\+3%7#*# " \\+#%\'$%$$# X$## X$"# X"# X'),u('!7Z+=$.8""2839+-%7Z+#%\'#%$## X$"# X"# X*# "7\\'),u('!7]+u$.J""2J3K+e%7]+[%.J""2J3K+K%7]+A%.J""2J3K+1%7]+\'%4\'6\xa7\' %$\'# X$&# X$%# X$$# X$## X$"# X"# X'),u('!.\xa8""2\xa83\xa9+3$0\xaa""1!3\xab+#%\'"%$"# X"# X*\xa0 "!.\xac""2\xac3\xad+=$0\xae""1!3\xaf+-%7!+#%\'#%$## X$"# X"# X*o "!.\xb0""2\xb03\xb1+7$7!+-%7!+#%\'#%$## X$"# X"# X*D "!0\xb2""1!3\xb3+-$7!+#%\'"%$"# X"# X*# "7!'),u('!!7!*# " \\+c$7!*# " \\+S%7!*# " \\+C%7!*# " \\+3%7!*# " \\+#%\'%%$%# X$$# X$## X$"# X"# X+\' 4!6\xb4!! %'),u(' ]!.2""2233+-$7`+#%\'"%$"# X"# X,>&!.2""2233+-$7`+#%\'"%$"# X"# X"'),u('7a*A "7b*; "7c*5 "7d*/ "7e*) "7f*# "7g'),u('!/\xb5""1*3\xb6+b$/\xb7""1#3\xb8*G "/\xb9""1#3\xba*; "/\xbb""1$3\xbc*/ "/\xbd""1#3\xbe*# "76+(%4"6\xbf"! %$"# X"# X'),u('!/\xc0""1%3\xc1+J$/\xc2""1%3\xc3*/ "/\xc4""1"3\xc5*# "76+(%4"6\xc6"! %$"# X"# X'),u('!/\xc7""1\'3\xc8+2$7\x8f+(%4"6\xc9"! %$"# X"# X'),u('!/\xca""1$3\xcb+2$7\xec+(%4"6\xcc"! %$"# X"# X'),u('!/\xcd""1&3\xce+2$7T+(%4"6\xcf"! %$"# X"# X'),u('!/\xd0""1"3\xd1+R$!.>""2>3?+-$76+#%\'"%$"# X"# X*# " \\+\'%4"6\xd2" %$"# X"# X'),u('!7h+T$!.>""2>3?+-$7i+#%\'"%$"# X"# X*# " \\+)%4"6\xd3""! %$"# X"# X'),u('! ]7j+&$,#&7j""" X+\' 4!6\xd4!! %'),u('! ]7j+&$,#&7j""" X+\' 4!6\xd5!! %'),u('7k*) "7+*# "7-'),u('.r""2r3s*e ".t""2t3u*Y ".4""2435*M ".8""2839*A ".<""2<3=*5 ".@""2@3A*) ".B""2B3C'),u('!.6""2637+u$7m+k% ]!.<""2<3=+-$7m+#%\'"%$"# X"# X,>&!.<""2<3=+-$7m+#%\'"%$"# X"# X"+#%\'#%$## X$"# X"# X'),u('!7n+C$.>""2>3?+3%7o+)%4#6\xd6#"" %$## X$"# X"# X'),u(' ]7p*) "7+*# "7-+2$,/&7p*) "7+*# "7-""" X'),u(' ]7p*) "7+*# "7-,/&7p*) "7+*# "7-"'),u('.r""2r3s*e ".t""2t3u*Y ".4""2435*M ".6""2637*A ".8""2839*5 ".@""2@3A*) ".B""2B3C'),u('7\x90*# "7r'),u("!7\x8f+K$7'+A%7s+7%7'+-%7\x84+#%'%%$%# X$$# X$## X$\"# X\"# X"),u('7M*# "7t'),u('!7+G$.8""2839+7%7u*# "7x+\'%4#6\xd7# %$## X$"# X"# X'),u('!7v*# "7w+N$!.6""2637+-$7\x83+#%\'"%$"# X"# X*# " \\+#%\'"%$"# X"# X'),u('!.\xd8""2\xd83\xd9+=$7\x80+3%7w*# " \\+#%\'#%$## X$"# X"# X'),u('!.4""2435+-$7{+#%\'"%$"# X"# X'),u('!7z+5$ ]7y,#&7y"+#%\'"%$"# X"# X'),u('7**) "7+*# "7-'),u('7+*\x8f "7-*\x89 ".2""2233*} ".6""2637*q ".8""2839*e ".:""2:3;*Y ".<""2<3=*M ".>""2>3?*A ".@""2@3A*5 ".B""2B3C*) ".D""2D3E'),u('!7|+k$ ]!.4""2435+-$7|+#%\'"%$"# X"# X,>&!.4""2435+-$7|+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),u('! ]7~,#&7~"+k$ ]!.2""2233+-$7}+#%\'"%$"# X"# X,>&!.2""2233+-$7}+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),u(' ]7~,#&7~"'),u('7+*w "7-*q ".8""2839*e ".:""2:3;*Y ".<""2<3=*M ".>""2>3?*A ".@""2@3A*5 ".B""2B3C*) ".D""2D3E'),u('!7"+\x8d$ ]7"*G "7!*A ".@""2@3A*5 ".F""2F3G*) ".J""2J3K,M&7"*G "7!*A ".@""2@3A*5 ".F""2F3G*) ".J""2J3K"+\'%4"6\xda" %$"# X"# X'),u('7\x81*# "7\x82'),u('!!7O+3$.:""2:3;+#%\'"%$"# X"# X*# " \\+-$7S+#%\'"%$"# X"# X*# " \\'),u(' ]7+*\x83 "7-*} ".B""2B3C*q ".D""2D3E*e ".2""2233*Y ".8""2839*M ".:""2:3;*A ".<""2<3=*5 ".>""2>3?*) ".@""2@3A+\x8c$,\x89&7+*\x83 "7-*} ".B""2B3C*q ".D""2D3E*e ".2""2233*Y ".8""2839*M ".:""2:3;*A ".<""2<3=*5 ".>""2>3?*) ".@""2@3A""" X'),u(' ]7y,#&7y"'),u('!/\x98""1#3\xdb+y$.4""2435+i% ]7!+&$,#&7!""" X+P%.J""2J3K+@% ]7!+&$,#&7!""" X+\'%4%6\xdc% %$%# X$$# X$## X$"# X"# X'),u('.\xdd""2\xdd3\xde'),u('.\xdf""2\xdf3\xe0'),u('.\xe1""2\xe13\xe2'),u('.\xe3""2\xe33\xe4'),u('.\xe5""2\xe53\xe6'),u('.\xe7""2\xe73\xe8'),u('.\xe9""2\xe93\xea'),u('.\xeb""2\xeb3\xec'),u('.\xed""2\xed3\xee'),u('.\xef""2\xef3\xf0'),u('!7\x85*S "7\x86*M "7\x88*G "7\x89*A "7\x8a*; "7\x8b*5 "7\x8c*/ "7\x8d*) "7\x8e*# "76+& 4!6\xf1! %'),u("!7\x84+K$7'+A%7\x91+7%7'+-%7\x93+#%'%%$%# X$$# X$## X$\"# X\"# X"),u("!7\x92+' 4!6\xf2!! %"),u('!7!+7$7!+-%7!+#%\'#%$## X$"# X"# X'),u('! ]7**A "7+*; "7-*5 "73*/ "74*) "7\'*# "7(,G&7**A "7+*; "7-*5 "73*/ "74*) "7\'*# "7("+& 4!6\xf3! %'),u('!7\xb5+_$ ]!7A+-$7\xb5+#%\'"%$"# X"# X,8&!7A+-$7\xb5+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),u('!79+R$!.:""2:3;+-$79+#%\'"%$"# X"# X*# " \\+\'%4"6\xf4" %$"# X"# X'),u('!7:*j "!7\x97+_$ ]!7A+-$7\x97+#%\'"%$"# X"# X,8&!7A+-$7\x97+#%\'"%$"# X"# X"+#%\'"%$"# X"# X+& 4!6\xf5! %'),u('!7L*# "7\x98+c$ ]!7B+-$7\x9a+#%\'"%$"# X"# X,8&!7B+-$7\x9a+#%\'"%$"# X"# X"+\'%4"6\xf6" %$"# X"# X'),u('!7\x99*# " \\+A$7@+7%7M+-%7?+#%\'$%$$# X$## X$"# X"# X'),u('!!76+_$ ]!7.+-$76+#%\'"%$"# X"# X,8&!7.+-$76+#%\'"%$"# X"# X"+#%\'"%$"# X"# X*# "7H+\' 4!6\xf7!! %'),u('7\x9b*) "7\x9c*# "7\x9f'),u('!/\xf8""1!3\xf9+<$7<+2%7\x9e+(%4#6\xfa#! %$## X$"# X"# X'),u('!/\xfb""1\'3\xfc+<$7<+2%7\x9d+(%4#6\xfd#! %$## X$"# X"# X'),u('! ]7!+&$,#&7!""" X+\' 4!6\xfe!! %'),u('!.\xff""2\xff3\u0100+x$!.J""2J3K+S$7!*# " \\+C%7!*# " \\+3%7!*# " \\+#%\'$%$$# X$## X$"# X"# X*# " \\+\'%4"6\u0101" %$"# X"# X'),u('!76+N$!7<+-$7\xa0+#%\'"%$"# X"# X*# " \\+)%4"6\u0102""! %$"# X"# X'),u('76*) "7T*# "7H'),u('!7\xa2+_$ ]!7B+-$7\xa3+#%\'"%$"# X"# X,8&!7B+-$7\xa3+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),u('!/\u0103""1&3\u0104*G "/\u0105""1\'3\u0106*; "/\u0107""1$3\u0108*/ "/\u0109""1%3\u010a*# "76+& 4!6\u010b! %'),u('7\xa4*# "7\x9f'),u('!/\u010c""1(3\u010d+O$7<+E%/\u010e""1(3\u010f*/ "/\u0110""1(3\u0111*# "76+#%\'#%$## X$"# X"# X'),u('!76+_$ ]!7A+-$76+#%\'"%$"# X"# X,8&!7A+-$76+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),u('! ]7!+&$,#&7!""" X+\' 4!6\u0112!! %'),u("!7\xa8+& 4!6\u0113! %"),u('!7\xa9+s$7;+i%7\xae+_% ]!7B+-$7\xaf+#%\'"%$"# X"# X,8&!7B+-$7\xaf+#%\'"%$"# X"# X"+#%\'$%$$# X$## X$"# X"# X'),u('7\xaa*# "7\xab'),u('/\u0114""1$3\u0115*S "/\u0116""1%3\u0117*G "/\u0118""1%3\u0119*; "/\u011a""1%3\u011b*/ "/\u011c""1+3\u011d*# "7\xac'),u('/\u011e""1\'3\u011f*/ "/\u0120""1)3\u0121*# "7\xac'),u('76*# "7\xad'),u('!/\u0122""1"3\u0123+-$76+#%\'"%$"# X"# X'),u('7\xac*# "76'),u('!76+7$7<+-%7\xb0+#%\'#%$## X$"# X"# X'),u('76*# "7H'),u('!7\xb2+7$7.+-%7\x8f+#%\'#%$## X$"# X"# X'),u('! ]7!+&$,#&7!""" X+\' 4!6\u0124!! %'),u("!7\x9d+' 4!6\u0125!! %"),u('!7\xb5+d$ ]!7B+-$7\x9f+#%\'"%$"# X"# X,8&!7B+-$7\x9f+#%\'"%$"# X"# X"+(%4"6\u0126"!!%$"# X"# X'),u('!!77+k$ ]!.J""2J3K+-$77+#%\'"%$"# X"# X,>&!.J""2J3K+-$77+#%\'"%$"# X"# X"+#%\'"%$"# X"# X+! (%'),u('!7L*# "7\x98+c$ ]!7B+-$7\xb7+#%\'"%$"# X"# X,8&!7B+-$7\xb7+#%\'"%$"# X"# X"+\'%4"6\u0127" %$"# X"# X'),u('7\xb8*# "7\x9f'),u('!/\u0128""1#3\u0129+<$7<+2%76+(%4#6\u012a#! %$## X$"# X"# X'),u('! ]7!+&$,#&7!""" X+\' 4!6\u012b!! %'),u("!7\x9d+' 4!6\u012c!! %"),u('! ]7\x99,#&7\x99"+\x81$7@+w%7M+m%7?+c% ]!7B+-$7\x9f+#%\'"%$"# X"# X,8&!7B+-$7\x9f+#%\'"%$"# X"# X"+\'%4%6\u012d% %$%# X$$# X$## X$"# X"# X'),u("7\xbd"),u('!/\u012e""1&3\u012f+s$7.+i%7\xc0+_% ]!7A+-$7\xc0+#%\'"%$"# X"# X,8&!7A+-$7\xc0+#%\'"%$"# X"# X"+#%\'$%$$# X$## X$"# X"# X*# "7\xbe'),u('!76+s$7.+i%7\xbf+_% ]!7A+-$7\xbf+#%\'"%$"# X"# X,8&!7A+-$7\xbf+#%\'"%$"# X"# X"+#%\'$%$$# X$## X$"# X"# X'),u('!76+=$7<+3%76*# "7H+#%\'#%$## X$"# X"# X'),u('7\xc1*G "7\xc3*A "7\xc5*; "7\xc7*5 "7\xc8*/ "7\xc9*) "7\xca*# "7\xbf'),u('!/\u0130""1%3\u0131+7$7<+-%7\xc2+#%\'#%$## X$"# X"# X'),u("!7I+' 4!6\u0132!! %"),u('!/\u0133""1&3\u0134+\xa5$7<+\x9b%7D+\x91%7\xc4+\x87% ]! ]7\'+&$,#&7\'""" X+-$7\xc4+#%\'"%$"# X"# X,G&! ]7\'+&$,#&7\'""" X+-$7\xc4+#%\'"%$"# X"# X"+-%7E+#%\'&%$&# X$%# X$$# X$## X$"# X"# X'),u('7t*# "7w'),u('!/\u0135""1%3\u0136+7$7<+-%7\xc6+#%\'#%$## X$"# X"# X'),u("!7I+' 4!6\u0137!! %"),u('!/\u0138""1&3\u0139+<$7<+2%7I+(%4#6\u013a#! %$## X$"# X"# X'),u('!/\u013b""1%3\u013c+_$7<+U%!/\u013d""1$3\u013e+& 4!6\u013f! %*4 "!/\u0140""1%3\u0141+& 4!6\u0142! %+#%\'#%$## X$"# X"# X'),u('!/\u0143""1)3\u0144+T$7<+J%/\u0145""1#3\u0146*/ "/\u0147""1(3\u0148*# "76+(%4#6\u0149#! %$## X$"# X"# X'),u('!/\u014a""1#3\u014b+\x9e$7<+\x94%7D+\x8a%!7\xcb+k$ ]!.D""2D3E+-$7\xcb+#%\'"%$"# X"# X,>&!.D""2D3E+-$7\xcb+#%\'"%$"# X"# X"+#%\'"%$"# X"# X+-%7E+#%\'%%$%# X$$# X$## X$"# X"# X'),u('!/\u014c""1(3\u014d*/ "/\u014e""1$3\u014f*# "76+\' 4!6\u0150!! %'),u('!76+_$ ]!7A+-$76+#%\'"%$"# X"# X,8&!7A+-$76+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),u('!7\xce+K$7.+A%7\xce+7%7.+-%7\x8f+#%\'%%$%# X$$# X$## X$"# X"# X'),u('! ]7!+&$,#&7!""" X+\' 4!6\u0151!! %'),u('!7\xd0+c$ ]!7A+-$7\xd0+#%\'"%$"# X"# X,8&!7A+-$7\xd0+#%\'"%$"# X"# X"+\'%4"6\u0152" %$"# X"# X'),u('!7\x98+c$ ]!7B+-$7\x9f+#%\'"%$"# X"# X,8&!7B+-$7\x9f+#%\'"%$"# X"# X"+\'%4"6\u0153" %$"# X"# X'),u('!7L*) "7\x98*# "7t+c$ ]!7B+-$7\x9f+#%\'"%$"# X"# X,8&!7B+-$7\x9f+#%\'"%$"# X"# X"+\'%4"6\u0154" %$"# X"# X'),u('!76+_$ ]!7A+-$76+#%\'"%$"# X"# X,8&!7A+-$76+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),u('!7\xd4+_$ ]!7A+-$7\xd4+#%\'"%$"# X"# X,8&!7A+-$7\xd4+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),u('!7\x98+_$ ]!7B+-$7\x9f+#%\'"%$"# X"# X,8&!7B+-$7\x9f+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),u('! ]7!+&$,#&7!""" X+\' 4!6\u0155!! %'),u('!7\xd7+_$ ]!7B+-$7\xd8+#%\'"%$"# X"# X,8&!7B+-$7\xd8+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),u('!/\u0156""1&3\u0157*; "/\u0158""1\'3\u0159*/ "/\u015a""1*3\u015b*# "76+& 4!6\u015c! %'),u('!/\u015d""1&3\u015e+<$7<+2%7\xd9+(%4#6\u015f#! %$## X$"# X"# X*\x83 "!/\xfb""1\'3\xfc+<$7<+2%7\x9d+(%4#6\u0160#! %$## X$"# X"# X*S "!/\u0161""1+3\u0162+<$7<+2%7\x9d+(%4#6\u0163#! %$## X$"# X"# X*# "7\x9f'),u('/\u0164""1+3\u0165*k "/\u0166""1)3\u0167*_ "/\u0168""1(3\u0169*S "/\u016a""1\'3\u016b*G "/\u016c""1&3\u016d*; "/\u016e""1*3\u016f*/ "/\u0170""1)3\u0171*# "76'),u('71*# " \\'),u('!76+_$ ]!7A+-$76+#%\'"%$"# X"# X,8&!7A+-$76+#%\'"%$"# X"# X"+#%\'"%$"# X"# X*# " \\'),u('!7L*# "7\x98+c$ ]!7B+-$7\xdd+#%\'"%$"# X"# X,8&!7B+-$7\xdd+#%\'"%$"# X"# X"+\'%4"6\u0172" %$"# X"# X'),u('7\xb8*# "7\x9f'),u('!7\xdf+_$ ]!7A+-$7\xdf+#%\'"%$"# X"# X,8&!7A+-$7\xdf+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),u('!7\xe6+s$7.+i%7\xe9+_% ]!7B+-$7\xe0+#%\'"%$"# X"# X,8&!7B+-$7\xe0+#%\'"%$"# X"# X"+#%\'$%$$# X$## X$"# X"# X'),u('7\xe1*; "7\xe2*5 "7\xe3*/ "7\xe4*) "7\xe5*# "7\x9f'),u('!/\u0173""1#3\u0174+<$7<+2%7\xec+(%4#6\u0175#! %$## X$"# X"# X'),u('!/\u0176""1%3\u0177+<$7<+2%7T+(%4#6\u0178#! %$## X$"# X"# X'),u('!/\u0179""1(3\u017a+B$7<+8%7\\*# "7Y+(%4#6\u017b#! %$## X$"# X"# X'),u('!/\u017c""1&3\u017d+<$7<+2%76+(%4#6\u017e#! %$## X$"# X"# X'),u('!/\u017f""1%3\u0180+T$!7<+5$ ]7!,#&7!"+#%\'"%$"# X"# X*# " \\+\'%4"6\u0181" %$"# X"# X'),u('!7\xe7+K$7;+A%76+7%7;+-%7\xe8+#%\'%%$%# X$$# X$## X$"# X"# X'),u('!/\x98""1#3\xdb*# "76+\' 4!6\u0182!! %'),u('!/\xb7""1#3\u0183*G "/\xb9""1#3\u0184*; "/\xbd""1#3\u0185*/ "/\xbb""1$3\u0186*# "76+\' 4!6\u0187!! %'),u('!7\xea+H$!7C+-$7\xeb+#%\'"%$"# X"# X*# " \\+#%\'"%$"# X"# X'),u('!7U*) "7\\*# "7X+& 4!6\u0188! %'),u('!!7!*# " \\+c$7!*# " \\+S%7!*# " \\+C%7!*# " \\+3%7!*# " \\+#%\'%%$%# X$$# X$## X$"# X"# X+\' 4!6\u0189!! %'),u('!!7!+C$7!*# " \\+3%7!*# " \\+#%\'#%$## X$"# X"# X+\' 4!6\u018a!! %'),u("7\xbd"),u('!76+7$70+-%7\xef+#%\'#%$## X$"# X"# X'),u(' ]72*) "74*# "7.,/&72*) "74*# "7."'),u(' ]7%,#&7%"'),u('!7\xf2+=$.8""2839+-%7\xf3+#%\'#%$## X$"# X"# X'),u('!/\u018b""1%3\u018c*) "/\u018d""1$3\u018e+\' 4!6\u018f!! %'),u('!7\xf4+N$!.8""2839+-$7^+#%\'"%$"# X"# X*# " \\+#%\'"%$"# X"# X'),u('!7\\*) "7X*# "7\x82+\' 4!6\u0190!! %'),u('! ]7\xf6*) "7-*# "7\xf7,/&7\xf6*) "7-*# "7\xf7"+& 4!6\u0191! %'),u('7"*S "7!*M ".F""2F3G*A ".J""2J3K*5 ".H""2H3I*) ".N""2N3O'),u('.L""2L3M*\x95 ".B""2B3C*\x89 ".<""2<3=*} ".R""2R3S*q ".T""2T3U*e ".V""2V3W*Y ".P""2P3Q*M ".@""2@3A*A ".D""2D3E*5 ".2""2233*) ".>""2>3?'),u('!7\xf9+h$.8""2839+X%7\xf3+N%!.\u0192""2\u01923\u0193+-$7\xe8+#%\'"%$"# X"# X*# " \\+#%\'$%$$# X$## X$"# X"# X'),u('!/\u0194""1%3\u0195*) "/\u0196""1$3\u0197+\' 4!6\u018f!! %'),u('!7\xe8+Q$/\xb7""1#3\xb8*7 "/\xb9""1#3\xba*+ " ]7+,#&7+"+\'%4"6\u0198" %$"# X"# X'),u('!7\xfd+\x8f$.F""2F3G+%7\xfc+u%.F""2F3G+e%7\xfc+[%.F""2F3G+K%7\xfc+A%.F""2F3G+1%7\xfe+\'%4)6\u0199) %$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X'),u('!7#+A$7#+7%7#+-%7#+#%\'$%$$# X$## X$"# X"# X'),u('!7\xfc+-$7\xfc+#%\'"%$"# X"# X'),u('!7\xfc+7$7\xfc+-%7\xfc+#%\'#%$## X$"# X"# X')],m=0,g=0,x=0,j={line:1,column:1,seenCR:!1},v=0,I=[],P=0;if("startRule"in y){if(!(y.startRule in a))throw new Error("Can't start parsing from rule \""+y.startRule+'".');r=a[y.startRule]}var S={};return s=p(r),s!==c&&m===f.length?S:(s!==c&&m=0&&3>=o?n=o:o>3?n=3:f.hasOwnProperty(o)?n=f[o]:e.error('invalid "level" parameter value: '+JSON.stringify(o))}},connector:{get:function(){return d},set:function(f){null===f||""===f||void 0===f?d=null:"function"==typeof f?d=f:e.error('invalid "connector" parameter value: '+JSON.stringify(f))}}})};return o.prototype.print=function(e,f,o,d){var i=[];i.push(new Date),i.push(f),o&&i.push(o),i.push(""),"string"==typeof d?e.call(n,i.join(" | ")+d):e.call(n,d)},o.prototype.debug=function(e,f,o){3===this.level&&(this.builtinEnabled&&this.print(n.debug,e,f,o),this.connector&&this.connector("debug",e,f,o))},o.prototype.log=function(e,f,o){this.level>=2&&(this.builtinEnabled&&this.print(n.log,e,f,o),this.connector&&this.connector("log",e,f,o))},o.prototype.warn=function(e,f,o){this.level>=1&&(this.builtinEnabled&&this.print(n.warn,e,f,o),this.connector&&this.connector("warn",e,f,o))},o.prototype.error=function(e,f,o){this.builtinEnabled&&this.print(n.error,e,f,o),this.connector&&this.connector("error",e,f,o)},o.prototype.getLogger=function(e,n){var o;return n&&3===this.level?new f(this,e,n):this.loggers[e]?this.loggers[e]:(o=new f(this,e),this.loggers[e]=o,o)},o}},{}],13:[function(e,f){f.exports=function(e){var f=function(e,f){e=e,f=f};return f.prototype=Object.create(e.prototype,{isReady:{value:function(){}},close:{value:function(){}},getDescription:{value:function(e,f,n){e=e,f=f,n=n}},setDescription:{value:function(e,f,n){e=e,f=f,n=n}}}),f}},{}],14:[function(e,f){f.exports=function(e){var f;f=function(f,n,o){var d;if(!(f&&f instanceof e.URI))throw new TypeError('missing or invalid "uri" parameter');this.uri=f,this.parameters={};for(d in o)this.setParam(d,o[d]);Object.defineProperties(this,{displayName:{get:function(){return n},set:function(e){n=0===e?"0":e}}})},f.prototype={setParam:function(e,f){e&&(this.parameters[e.toLowerCase()]="undefined"==typeof f||null===f?null:f.toString())},getParam:e.URI.prototype.getParam,hasParam:e.URI.prototype.hasParam,deleteParam:e.URI.prototype.deleteParam,clearParams:e.URI.prototype.clearParams,clone:function(){return new f(this.uri.clone(),this.displayName,JSON.parse(JSON.stringify(this.parameters)))},toString:function(){var e,f;e=this.displayName||0===this.displayName?'"'+this.displayName+'" ':"",e+="<"+this.uri.toString()+">";for(f in this.parameters)e+=";"+f,null!==this.parameters[f]&&(e+="="+this.parameters[f]);return e}},f.parse=function(f){return f=e.Grammar.parse(f,"Name_Addr_Header"),-1!==f?f:void 0},e.NameAddrHeader=f}},{}],15:[function(e,f){f.exports=function(e){function f(e,f){var n=f,o=0,d=0;if(e.substring(n,n+2).match(/(^\r\n)/))return-2;for(;0===o;){if(d=e.indexOf("\r\n",n),-1===d)return d;!e.substring(d+2,d+4).match(/(^\r\n)/)&&e.charAt(d+2).match(/(^\s+)/)?n=d+2:o=d}return o}function n(f,n,o,d){var i,t,l,u,p=n.indexOf(":",o),s=n.substring(o,p).trim(),y=n.substring(p+1,d).trim();switch(s.toLowerCase()){case"via":case"v":f.addHeader("via",y),1===f.getHeaders("via").length?(u=f.parseHeader("Via"),u&&(f.via=u,f.via_branch=u.branch)):u=0;break;case"from":case"f":f.setHeader("from",y),u=f.parseHeader("from"),u&&(f.from=u,f.from_tag=u.getParam("tag"));break;case"to":case"t":f.setHeader("to",y),u=f.parseHeader("to"),u&&(f.to=u,f.to_tag=u.getParam("tag"));break;case"record-route":if(u=e.Grammar.parse(y,"Record_Route"),-1===u){u=void 0;break}for(l=u.length,t=0;l>t;t++)i=u[t],f.addHeader("record-route",y.substring(i.position,i.offset)),f.headers["Record-Route"][f.getHeaders("record-route").length-1].parsed=i.parsed;break;case"call-id":case"i":f.setHeader("call-id",y),u=f.parseHeader("call-id"),u&&(f.call_id=y);break;case"contact":case"m":if(u=e.Grammar.parse(y,"Contact"),-1===u){u=void 0;break}for(l=u.length,t=0;l>t;t++)i=u[t],f.addHeader("contact",y.substring(i.position,i.offset)),f.headers.Contact[f.getHeaders("contact").length-1].parsed=i.parsed;break;case"content-length":case"l":f.setHeader("content-length",y),u=f.parseHeader("content-length");break;case"content-type":case"c":f.setHeader("content-type",y),u=f.parseHeader("content-type");break;case"cseq":f.setHeader("cseq",y),u=f.parseHeader("cseq"),u&&(f.cseq=u.value),f instanceof e.IncomingResponse&&(f.method=u.method);break;case"max-forwards":f.setHeader("max-forwards",y),u=f.parseHeader("max-forwards");break;case"www-authenticate":f.setHeader("www-authenticate",y),u=f.parseHeader("www-authenticate");break;case"proxy-authenticate":f.setHeader("proxy-authenticate",y),u=f.parseHeader("proxy-authenticate");break;case"refer-to":case"r":f.setHeader("refer-to",y),u=f.parseHeader("refer-to"),u&&(f.refer_to=u);break;default:f.setHeader(s,y),u=0}return void 0===u?{error:'error parsing header "'+s+'"'}:!0}var o;o={},o.parseMessage=function(o,d){var i,t,l,u,p,s=0,y=o.indexOf("\r\n"),c=d.getLogger("sip.parser");if(-1===y)return void c.warn("no CRLF found, not a SIP message, discarded");if(t=o.substring(0,y),p=e.Grammar.parse(t,"Request_Response"),-1===p)return void c.warn('error parsing first line of SIP message: "'+t+'"');for(p.status_code?(i=new e.IncomingResponse(d),i.status_code=p.status_code,i.reason_phrase=p.reason_phrase):(i=new e.IncomingRequest(d),i.method=p.method,i.ruri=p.uri),i.data=o,s=y+2;;){if(y=f(o,s),-2===y){u=s+2;break}if(-1===y)return void c.error("malformed message");if(p=n(i,o,s,y),p!==!0)return void c.error(p.error);s=y+2}return i.hasHeader("content-length")?(l=i.getHeader("content-length"),i.body=o.substr(u,l)):i.body=o.substring(u),i},e.Parser=o}},{}],16:[function(e,f){f.exports=function(e){var f;f=function(f){var n={},o=1,d=["registered","unregistered"];this.registrar=f.configuration.registrarServer,this.expires=f.configuration.registerExpires,this.contact=f.contact.toString(),o&&(this.contact+=";reg-id="+o,this.contact+=';+sip.instance=""'),this.call_id=e.Utils.createRandomToken(22),this.cseq=80,this.to_uri=f.configuration.uri,n.to_uri=this.to_uri,n.call_id=this.call_id,n.cseq=this.cseq,e.Utils.augment(this,e.ClientContext,[f,"REGISTER",this.registrar,{params:n}]),this.registrationTimer=null,this.registrationExpiredTimer=null,this.registered=!1,this.logger=f.getLogger("sip.registercontext"),this.initMoreEvents(d)},f.prototype={register:function(f){var n,o=this;f=f||{},n=(f.extraHeaders||[]).slice(),n.push("Contact: "+this.contact+";expires="+this.expires),n.push("Allow: "+e.Utils.getAllowedMethods(this.ua)),this.receiveResponse=function(n){var d,i,t,l=n.getHeaders("contact").length;if(n.cseq===this.cseq)switch(null!==this.registrationTimer&&(e.Timers.clearTimeout(this.registrationTimer),this.registrationTimer=null),!0){case/^1[0-9]{2}$/.test(n.status_code):this.emit("progress",n);break;case/^2[0-9]{2}$/.test(n.status_code):if(this.emit("accepted",n),n.hasHeader("expires")&&(i=n.getHeader("expires")),null!==this.registrationExpiredTimer&&(e.Timers.clearTimeout(this.registrationExpiredTimer),this.registrationExpiredTimer=null),!l){this.logger.warn("no Contact header in response to REGISTER, response ignored");break}for(;l--;){if(d=n.parseHeader("contact",l),d.uri.user===this.ua.contact.uri.user){i=d.getParam("expires");break}d=null}if(!d){this.logger.warn("no Contact header pointing to us, response ignored");break}i||(i=this.expires),this.registrationTimer=e.Timers.setTimeout(function(){o.registrationTimer=null,o.register(f)},1e3*i-3e3),this.registrationExpiredTimer=e.Timers.setTimeout(function(){o.logger.warn("registration expired"),o.registered&&o.unregistered(null,e.C.causes.EXPIRES)},1e3*i),d.hasParam("temp-gruu")&&(this.ua.contact.temp_gruu=e.URI.parse(d.getParam("temp-gruu").replace(/"/g,""))),d.hasParam("pub-gruu")&&(this.ua.contact.pub_gruu=e.URI.parse(d.getParam("pub-gruu").replace(/"/g,""))),this.registered=!0,this.emit("registered",n||null);break;case/^423$/.test(n.status_code):n.hasHeader("min-expires")?(this.expires=n.getHeader("min-expires"),this.register(f)):(this.logger.warn("423 response received for REGISTER without Min-Expires"),this.registrationFailure(n,e.C.causes.SIP_FAILURE_CODE));break;default:t=e.Utils.sipErrorCause(n.status_code),this.registrationFailure(n,t)}},this.onRequestTimeout=function(){this.registrationFailure(null,e.C.causes.REQUEST_TIMEOUT)},this.onTransportError=function(){this.registrationFailure(null,e.C.causes.CONNECTION_ERROR) -},this.cseq++,this.request.cseq=this.cseq,this.request.setHeader("cseq",this.cseq+" REGISTER"),this.request.extraHeaders=n,this.send()},registrationFailure:function(e,f){this.emit("failed",e||null,f||null)},onTransportClosed:function(){this.registered_before=this.registered,null!==this.registrationTimer&&(e.Timers.clearTimeout(this.registrationTimer),this.registrationTimer=null),null!==this.registrationExpiredTimer&&(e.Timers.clearTimeout(this.registrationExpiredTimer),this.registrationExpiredTimer=null),this.registered&&this.unregistered(null,e.C.causes.CONNECTION_ERROR)},onTransportConnected:function(){this.register()},close:function(){this.registered_before=this.registered,this.unregister()},unregister:function(f){var n;return this.registered?(f=f||{},n=(f.extraHeaders||[]).slice(),this.registered=!1,null!==this.registrationTimer&&(e.Timers.clearTimeout(this.registrationTimer),this.registrationTimer=null),f.all?(n.push("Contact: *"),n.push("Expires: 0")):n.push("Contact: "+this.contact+";expires=0"),this.receiveResponse=function(f){var n;switch(!0){case/^1[0-9]{2}$/.test(f.status_code):this.emit("progress",f);break;case/^2[0-9]{2}$/.test(f.status_code):this.emit("accepted",f),null!==this.registrationExpiredTimer&&(e.Timers.clearTimeout(this.registrationExpiredTimer),this.registrationExpiredTimer=null),this.unregistered(f);break;default:n=e.Utils.sipErrorCause(f.status_code),this.unregistered(f,n)}},this.onRequestTimeout=function(){},this.onTransportError=function(){},this.cseq++,this.request.cseq=this.cseq,this.request.setHeader("cseq",this.cseq+" REGISTER"),this.request.extraHeaders=n,void this.send()):void this.logger.warn("already unregistered")},unregistered:function(e,f){this.registered=!1,this.emit("unregistered",e||null,f||null)}},e.RegisterContext=f}},{}],17:[function(e,f){f.exports=function(e){var f;f=function(f,n){this.logger=n.getLogger("sip.requestsender"),this.ua=n,this.applicant=f,this.method=f.request.method,this.request=f.request,this.credentials=null,this.challenged=!1,this.staled=!1,n.status!==e.UA.C.STATUS_USER_CLOSED||this.method===e.C.BYE&&this.method===e.C.ACK||this.onTransportError()},f.prototype={send:function(){switch(this.method){case"INVITE":this.clientTransaction=new e.Transactions.InviteClientTransaction(this,this.request,this.ua.transport);break;case"ACK":this.clientTransaction=new e.Transactions.AckClientTransaction(this,this.request,this.ua.transport);break;default:this.clientTransaction=new e.Transactions.NonInviteClientTransaction(this,this.request,this.ua.transport)}return this.clientTransaction.send(),this.clientTransaction},onRequestTimeout:function(){this.applicant.onRequestTimeout()},onTransportError:function(){this.applicant.onTransportError()},receiveResponse:function(f){var n,o,d,i=f.status_code;if(401!==i&&407!==i||null===this.ua.configuration.password)this.applicant.receiveResponse(f);else{if(401===f.status_code?(o=f.parseHeader("www-authenticate"),d="authorization"):(o=f.parseHeader("proxy-authenticate"),d="proxy-authorization"),!o)return this.logger.warn(f.status_code+" with wrong or missing challenge, cannot authenticate"),void this.applicant.receiveResponse(f);if(!this.challenged||!this.staled&&o.stale===!0){if(this.credentials||(this.credentials=new e.DigestAuthentication(this.ua)),!this.credentials.authenticate(this.request,o))return void this.applicant.receiveResponse(f);this.challenged=!0,o.stale&&(this.staled=!0),f.method===e.C.REGISTER?n=this.applicant.cseq+=1:this.request.dialog?n=this.request.dialog.local_seqnum+=1:(n=this.request.cseq+1,this.request.cseq=n),this.request.setHeader("cseq",n+" "+this.method),this.request.setHeader(d,this.credentials.toString()),this.send()}else this.applicant.receiveResponse(f)}}},e.RequestSender=f}},{}],18:[function(e,f){(function(n){f.exports=function(f){"use strict";var n={},o=e("../package.json");Object.defineProperties(n,{version:{get:function(){return o.version}},name:{get:function(){return o.title}}}),e("./Utils.js")(n);var d=e("./Logger.js");n.LoggerFactory=e("./LoggerFactory.js")(f,d),e("./EventEmitter.js")(n),n.C=e("./Constants.js")(n.name,n.version),n.Exceptions=e("./Exceptions.js"),n.Timers=e("./Timers.js")(f),e("./Transport.js")(n,f),e("./Parser.js")(n),e("./SIPMessage.js")(n),e("./URI.js")(n),e("./NameAddrHeader.js")(n),e("./Transactions.js")(n,f);var i=e("./Dialog/RequestSender.js")(n,f);e("./Dialogs.js")(n,i),e("./RequestSender.js")(n),e("./RegisterContext.js")(n,f),n.MediaHandler=e("./MediaHandler.js")(n.EventEmitter),e("./ClientContext.js")(n),e("./ServerContext.js")(n);var t=e("./Session/DTMF.js")(n);e("./Session.js")(n,f,t),e("./Subscription.js")(n,f);var l=e("./WebRTC/MediaHandler.js")(n),u=e("./WebRTC/MediaStreamManager.js")(n);return n.WebRTC=e("./WebRTC.js")(n.Utils,f,l,u),e("./UA.js")(n,f),n.Hacks=e("./Hacks.js")(f),e("./SanityCheck.js")(n),n.DigestAuthentication=e("./DigestAuthentication.js")(n.Utils),n.Grammar=e("./Grammar/dist/Grammar")(n),n}("undefined"!=typeof window?window:n)}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../package.json":1,"./ClientContext.js":2,"./Constants.js":3,"./Dialog/RequestSender.js":4,"./Dialogs.js":5,"./DigestAuthentication.js":6,"./EventEmitter.js":7,"./Exceptions.js":8,"./Grammar/dist/Grammar":9,"./Hacks.js":10,"./Logger.js":11,"./LoggerFactory.js":12,"./MediaHandler.js":13,"./NameAddrHeader.js":14,"./Parser.js":15,"./RegisterContext.js":16,"./RequestSender.js":17,"./SIPMessage.js":19,"./SanityCheck.js":20,"./ServerContext.js":21,"./Session.js":22,"./Session/DTMF.js":23,"./Subscription.js":24,"./Timers.js":25,"./Transactions.js":26,"./Transport.js":27,"./UA.js":28,"./URI.js":29,"./Utils.js":30,"./WebRTC.js":31,"./WebRTC/MediaHandler.js":32,"./WebRTC/MediaStreamManager.js":33}],19:[function(e,f){f.exports=function(e){var f,n,o,d;f=function(f,n,o,d,i,t){var l,u,p,s;return d=d||{},f&&n&&o?(this.logger=o.getLogger("sip.sipmessage"),this.ua=o,this.headers={},this.method=f,this.ruri=n,this.body=t,this.extraHeaders=(i||[]).slice(),this.statusCode=d.status_code,this.reasonPhrase=d.reason_phrase,d.route_set?this.setHeader("route",d.route_set):o.configuration.usePreloadedRoute&&this.setHeader("route",o.transport.server.sip_uri),this.setHeader("via",""),this.setHeader("max-forwards",e.UA.C.MAX_FORWARDS),l=d.to_displayName||0===d.to_displayName?'"'+d.to_displayName+'" ':"",l+="<"+(d.to_uri||n)+">",l+=d.to_tag?";tag="+d.to_tag:"",this.to=new e.NameAddrHeader.parse(l),this.setHeader("to",l),u=d.from_displayName||0===d.from_displayName?'"'+d.from_displayName+'" ':o.configuration.displayName?'"'+o.configuration.displayName+'" ':"",u+="<"+(d.from_uri||o.configuration.uri)+">;tag=",u+=d.from_tag||e.Utils.newTag(),this.from=new e.NameAddrHeader.parse(u),this.setHeader("from",u),p=d.call_id||o.configuration.sipjsId+e.Utils.createRandomToken(15),this.call_id=p,this.setHeader("call-id",p),s=d.cseq||Math.floor(1e4*Math.random()),this.cseq=s,void this.setHeader("cseq",s+" "+f)):null},f.prototype={setHeader:function(f,n){this.headers[e.Utils.headerize(f)]=n instanceof Array?n:[n]},getHeader:function(f){var n,o,d=this.extraHeaders.length,i=this.headers[e.Utils.headerize(f)];if(i){if(i[0])return i[0]}else for(n=new RegExp("^\\s*"+f+"\\s*:","i"),o=0;d>o;o++)if(i=this.extraHeaders[o],n.test(i))return i.substring(i.indexOf(":")+1).trim()},getHeaders:function(f){var n,o,d,i=this.headers[e.Utils.headerize(f)],t=[];if(i){for(o=i.length,n=0;o>n;n++)t.push(i[n]);return t}for(o=this.extraHeaders.length,d=new RegExp("^\\s*"+f+"\\s*:","i"),n=0;o>n;n++)i=this.extraHeaders[n],d.test(i)&&t.push(i.substring(i.indexOf(":")+1).trim());return t},hasHeader:function(f){var n,o,d=this.extraHeaders.length;if(this.headers[e.Utils.headerize(f)])return!0;for(n=new RegExp("^\\s*"+f+"\\s*:","i"),o=0;d>o;o++)if(n.test(this.extraHeaders[o]))return!0;return!1},toString:function(){var f,n,o,d="",i=[];d+=this.method+" "+this.ruri+" SIP/2.0\r\n";for(f in this.headers)for(n=this.headers[f].length,o=0;n>o;o++)d+=f+": "+this.headers[f][o]+"\r\n";for(n=this.extraHeaders.length,o=0;n>o;o++)d+=this.extraHeaders[o].trim()+"\r\n";return this.method===e.C.REGISTER?i.push("path","gruu"):this.method===e.C.INVITE&&(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&i.push("gruu"),this.ua.configuration.rel100===e.C.supported.SUPPORTED&&i.push("100rel"),i.push("outbound"),d+="Supported: "+i+"\r\n",d+="User-Agent: "+this.ua.configuration.userAgentString+"\r\n",this.body?(n=e.Utils.str_utf8_length(this.body),d+="Content-Length: "+n+"\r\n\r\n",d+=this.body):d+="Content-Length: 0\r\n\r\n",d}},n=function(){this.data=null,this.headers=null,this.method=null,this.via=null,this.via_branch=null,this.call_id=null,this.cseq=null,this.from=null,this.from_tag=null,this.to=null,this.to_tag=null,this.body=null},n.prototype={addHeader:function(f,n){var o={raw:n};f=e.Utils.headerize(f),this.headers[f]?this.headers[f].push(o):this.headers[f]=[o]},getHeader:function(f){var n=this.headers[e.Utils.headerize(f)];if(n)return n[0]?n[0].raw:void 0},getHeaders:function(f){var n,o,d=this.headers[e.Utils.headerize(f)],i=[];if(!d)return[];for(o=d.length,n=0;o>n;n++)i.push(d[n].raw);return i},hasHeader:function(f){return this.headers[e.Utils.headerize(f)]?!0:!1},parseHeader:function(f,n){var o,d,i;return f=e.Utils.headerize(f),n=n||0,this.headers[f]?n>=this.headers[f].length?void this.logger.log('not so many "'+f+'" headers present'):(o=this.headers[f][n],d=o.raw,o.parsed?o.parsed:(i=e.Grammar.parse(d,f.replace(/-/g,"_")),-1===i?(this.headers[f].splice(n,1),void this.logger.warn('error parsing "'+f+'" header field with value "'+d+'"')):(o.parsed=i,i))):void this.logger.log('header "'+f+'" not present')},s:function(e,f){return this.parseHeader(e,f)},setHeader:function(f,n){var o={raw:n};this.headers[e.Utils.headerize(f)]=[o]},toString:function(){return this.data}},o=function(e){this.logger=e.getLogger("sip.sipmessage"),this.ua=e,this.headers={},this.ruri=null,this.transport=null,this.server_transaction=null},o.prototype=new n,o.prototype.reply=function(f,n,o,d,i,t){var l,u,p,s,y,c=[],a=this.getHeader("To"),r=0,w=0;if(f=f||null,n=n||null,!f||100>f||f>699)throw new TypeError("Invalid status_code: "+f);if(n&&"string"!=typeof n&&!(n instanceof String))throw new TypeError("Invalid reason_phrase: "+n);if(n=n||e.C.REASON_PHRASE[f]||"",o=(o||[]).slice(),y="SIP/2.0 "+f+" "+n+"\r\n",this.method===e.C.INVITE&&f>100&&200>=f)for(l=this.getHeaders("record-route"),p=l.length,r;p>r;r++)y+="Record-Route: "+l[r]+"\r\n";for(u=this.getHeaders("via"),p=u.length,w;p>w;w++)y+="Via: "+u[w]+"\r\n";for(!this.to_tag&&f>100?a+=";tag="+e.Utils.newTag():this.to_tag&&!this.s("to").hasParam("tag")&&(a+=";tag="+this.to_tag),y+="To: "+a+"\r\n",y+="From: "+this.getHeader("From")+"\r\n",y+="Call-ID: "+this.call_id+"\r\n",y+="CSeq: "+this.cseq+" "+this.method+"\r\n",p=o.length,s=0;p>s;s++)y+=o[s].trim()+"\r\n";return this.method===e.C.INVITE&&(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&c.push("gruu"),this.ua.configuration.rel100===e.C.supported.SUPPORTED&&c.push("100rel"),c.push("outbound"),y+="Supported: "+c+"\r\n",d?(p=e.Utils.str_utf8_length(d),y+="Content-Type: application/sdp\r\n",y+="Content-Length: "+p+"\r\n\r\n",y+=d):y+="Content-Length: 0\r\n\r\n",this.server_transaction.receiveResponse(f,y,i,t),y},o.prototype.reply_sl=function(f,n){var o,d,i=0,t=this.getHeaders("via"),l=t.length;if(f=f||null,n=n||null,!f||100>f||f>699)throw new TypeError("Invalid status_code: "+f);if(n&&"string"!=typeof n&&!(n instanceof String))throw new TypeError("Invalid reason_phrase: "+n);for(n=n||e.C.REASON_PHRASE[f]||"",d="SIP/2.0 "+f+" "+n+"\r\n",i;l>i;i++)d+="Via: "+t[i]+"\r\n";o=this.getHeader("To"),!this.to_tag&&f>100?o+=";tag="+e.Utils.newTag():this.to_tag&&!this.s("to").hasParam("tag")&&(o+=";tag="+this.to_tag),d+="To: "+o+"\r\n",d+="From: "+this.getHeader("From")+"\r\n",d+="Call-ID: "+this.call_id+"\r\n",d+="CSeq: "+this.cseq+" "+this.method+"\r\n",d+="Content-Length: 0\r\n\r\n",this.transport.send(d)},d=function(e){this.logger=e.getLogger("sip.sipmessage"),this.headers={},this.status_code=null,this.reason_phrase=null},d.prototype=new n,e.OutgoingRequest=f,e.IncomingRequest=o,e.IncomingResponse=d}},{}],20:[function(e,f){f.exports=function(e){function f(){return c.ruri&&"sip"===c.ruri.scheme?void 0:(p(416),!1)}function n(){return c.to_tag||c.call_id.substr(0,5)!==a.configuration.sipjsId?void 0:(p(482),!1)}function o(){var f=e.Utils.str_utf8_length(c.body),n=c.getHeader("content-length");return n>f?(p(400),!1):void 0}function d(){var f,n,o=c.from_tag,d=c.call_id,i=c.cseq;if(!c.to_tag)if(c.method===e.C.INVITE){if(f=a.transactions.ist[c.via_branch])return;for(n in a.transactions.ist)if(f=a.transactions.ist[n],f.request.from_tag===o&&f.request.call_id===d&&f.request.cseq===i)return p(482),!1}else{if(f=a.transactions.nist[c.via_branch])return;for(n in a.transactions.nist)if(f=a.transactions.nist[n],f.request.from_tag===o&&f.request.call_id===d&&f.request.cseq===i)return p(482),!1}}function i(){return c.getHeaders("via").length>1?(y.warn("More than one Via header field present in the response. Dropping the response"),!1):void 0}function t(){var e=a.configuration.viaHost;return c.via.host!==e||void 0!==c.via.port?(y.warn("Via sent-by in the response does not match UA Via host value. Dropping the response"),!1):void 0}function l(){var f=e.Utils.str_utf8_length(c.body),n=c.getHeader("content-length");return n>f?(y.warn("Message body length is lower than the value in Content-Length header field. Dropping the response"),!1):void 0}function u(){for(var e=["from","to","call_id","cseq","via"],f=e.length;f--;)if(!c.hasHeader(e[f]))return y.warn("Missing mandatory header field : "+e[f]+". Dropping the response"),!1}function p(f){var n,o="SIP/2.0 "+f+" "+e.C.REASON_PHRASE[f]+"\r\n",d=c.getHeaders("via"),i=d.length,t=0;for(t;i>t;t++)o+="Via: "+d[t]+"\r\n";n=c.getHeader("To"),c.to_tag||(n+=";tag="+e.Utils.newTag()),o+="To: "+n+"\r\n",o+="From: "+c.getHeader("From")+"\r\n",o+="Call-ID: "+c.call_id+"\r\n",o+="CSeq: "+c.cseq+" "+c.method+"\r\n",o+="\r\n",r.send(o)}var s,y,c,a,r,w=[],b=[],m=[];w.push(f),w.push(n),w.push(o),w.push(d),b.push(i),b.push(t),b.push(l),m.push(u),s=function(f,n,o){var d,i;for(c=f,a=n,r=o,y=a.getLogger("sip.sanitycheck"),d=m.length;d--;)if(i=m[d](c),i===!1)return!1;if(c instanceof e.IncomingRequest){for(d=w.length;d--;)if(i=w[d](c),i===!1)return!1}else if(c instanceof e.IncomingResponse)for(d=b.length;d--;)if(i=b[d](c),i===!1)return!1;return!0},e.sanityCheck=s}},{}],21:[function(e,f){f.exports=function(e){var f;f=function(f,n){var o=["progress","accepted","rejected","failed"];this.ua=f,this.logger=f.getLogger("sip.servercontext"),this.request=n,this.transaction=n.method===e.C.INVITE?new e.Transactions.InviteServerTransaction(n,f):new e.Transactions.NonInviteServerTransaction(n,f),n.body&&(this.body=n.body),n.hasHeader("Content-Type")&&(this.contentType=n.getHeader("Content-Type")),this.method=n.method,this.data={},this.localIdentity=n.to,this.remoteIdentity=n.from,this.initEvents(o)},f.prototype=new e.EventEmitter,f.prototype.progress=function(f){f=f||{};var n,o=f.statusCode||180,d=f.reasonPhrase||e.C.REASON_PHRASE[o],i=(f.extraHeaders||[]).slice(),t=f.body;if(100>o||o>199)throw new TypeError("Invalid statusCode: "+o);return n=this.request.reply(o,d,i,t),this.emit("progress",n,d),this},f.prototype.accept=function(f){f=f||{};var n,o=f.statusCode||200,d=f.reasonPhrase||e.C.REASON_PHRASE[o],i=(f.extraHeaders||[]).slice(),t=f.body;if(200>o||o>299)throw new TypeError("Invalid statusCode: "+o);return n=this.request.reply(o,d,i,t),this.emit("accepted",n,d),this},f.prototype.reject=function(f){f=f||{};var n,o=f.statusCode||480,d=f.reasonPhrase||e.C.REASON_PHRASE[o],i=(f.extraHeaders||[]).slice(),t=f.body;if(300>o||o>699)throw new TypeError("Invalid statusCode: "+o);return n=this.request.reply(o,d,i,t),this.emit("rejected",n,d),this.emit("failed",n,d),this},f.prototype.reply=function(e){e=e||{};var f=e.statusCode,n=e.reasonPhrase,o=(e.extraHeaders||[]).slice(),d=e.body;return this.request.reply(f,n,o,d),this},f.prototype.onRequestTimeout=function(){this.emit("failed",null,e.C.causes.REQUEST_TIMEOUT)},f.prototype.onTransportError=function(){this.emit("failed",null,e.C.causes.CONNECTION_ERROR)},e.ServerContext=f}},{}],22:[function(e,f){f.exports=function(e,f,n){var o,d,i,t={STATUS_NULL:0,STATUS_INVITE_SENT:1,STATUS_1XX_RECEIVED:2,STATUS_INVITE_RECEIVED:3,STATUS_WAITING_FOR_ANSWER:4,STATUS_ANSWERED:5,STATUS_WAITING_FOR_PRACK:6,STATUS_WAITING_FOR_ACK:7,STATUS_CANCELED:8,STATUS_TERMINATED:9,STATUS_ANSWERED_WAITING_FOR_PRACK:10,STATUS_EARLY_MEDIA:11,STATUS_CONFIRMED:12};o=function(f){var n=["connecting","terminated","dtmf","invite","cancel","refer","bye","hold","unhold","muted","unmuted"];this.status=t.STATUS_NULL,this.dialog=null,this.earlyDialogs={},this.mediaHandlerFactory=f||e.WebRTC.MediaHandler.defaultFactory,this.hasOffer=!1,this.hasAnswer=!1,this.timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null,rel1xxTimer:null,prackTimer:null},this.startTime=null,this.endTime=null,this.tones=null,this.local_hold=!1,this.remote_hold=!1,this.pending_actions={actions:[],length:function(){return this.actions.length},isPending:function(e){var f=0,n=this.actions.length;for(f;n>f;f++)if(this.actions[f].name===e)return!0;return!1},shift:function(){return this.actions.shift()},push:function(e){this.actions.push({name:e})},pop:function(e){var f=0,n=this.actions.length;for(f;n>f;f++)this.actions[f].name===e&&(this.actions.splice(f,1),n--,f--)}},this.early_sdp=null,this.rel100=e.C.supported.UNSUPPORTED,this.initMoreEvents(n)},o.prototype={dtmf:function(f,o){var d,i=[],l=this;if(o=o||{},void 0===f)throw new TypeError("Not enough arguments");if(this.status!==t.STATUS_CONFIRMED&&this.status!==t.STATUS_WAITING_FOR_ACK)throw new e.Exceptions.InvalidStateError(this.status);if(!f||"string"!=typeof f&&"number"!=typeof f||!f.toString().match(/^[0-9A-D#*,]+$/i))throw new TypeError("Invalid tones: "+f);for(f=f.toString().split("");f.length>0;)i.push(new n(this,f.shift(),o));if(this.tones)return this.tones=this.tones.concat(i),this;var u=function(){var f,n;return l.status!==t.STATUS_TERMINATED&&l.tones&&0!==l.tones.length?(f=l.tones.shift(),","===d?n=2e3:(f.on("failed",function(){l.tones=null}),f.send(o),n=f.duration+f.interToneGap),void e.Timers.setTimeout(u,n)):(l.tones=null,this)};return this.tones=i,u(),this},bye:function(f){f=f||{};var n=f.statusCode;if(this.status===t.STATUS_TERMINATED)return this.logger.error("Error: Attempted to send BYE in a terminated session."),this;if(this.logger.log("terminating Session"),n&&(200>n||n>=700))throw new TypeError("Invalid statusCode: "+n);return f.receiveResponse=function(){},this.sendRequest(e.C.BYE,f).terminated()},refer:function(f,n){n=n||{};var o=(n.extraHeaders||[]).slice(),d=f;if(void 0===f)throw new TypeError("Not enough arguments");if(f instanceof e.InviteServerContext||f instanceof e.InviteClientContext)o.push("Contact: "+this.contact),o.push("Allow: "+e.Utils.getAllowedMethods(this.ua)),o.push("Refer-To: <"+f.dialog.remote_target.toString()+"?Replaces="+f.dialog.id.call_id+"%3Bto-tag%3D"+f.dialog.id.remote_tag+"%3Bfrom-tag%3D"+f.dialog.id.local_tag+">");else{if(this.status!==t.STATUS_CONFIRMED)throw new e.Exceptions.InvalidStateError(this.status);try{f=e.Grammar.parse(f,"Refer_To").uri||f}catch(i){this.logger.debug(".refer() cannot parse Refer_To from",f),this.logger.debug("...falling through to normalizeTarget()")}if(f=this.ua.normalizeTarget(f),!f)throw new TypeError("Invalid target: "+d);o.push("Contact: "+this.contact),o.push("Allow: "+e.Utils.getAllowedMethods(this.ua)),o.push("Refer-To: "+f)}return this.sendRequest(e.C.REFER,{extraHeaders:o,body:n.body,receiveResponse:function(){}}),f.scheme.match("^sips?$")&&this.terminate(),this},followRefer:function(n){return function(n,o){var d=o.parseHeader("refer-to").uri;if(!d.scheme.match("^sips?$")){var i=d.toString();return void("undefined"!=typeof f&&"function"==typeof f.open?f.open(i):this.logger.warn("referred to non-SIP URI but window.open isn't a function: "+i))}e.Hacks.Chrome.getsConfusedAboutGUM(this);var t=this.ua.invite(o.parseHeader("refer-to").uri,{media:this.mediaHint});n.call(this,o,t),this.terminate()}.bind(this,n)},sendRequest:function(f,n){n=n||{};var o=this,d=new e.OutgoingRequest(f,this.dialog.remote_target,this.ua,{cseq:n.cseq||(this.dialog.local_seqnum+=1),call_id:this.dialog.id.call_id,from_uri:this.dialog.local_uri,from_tag:this.dialog.id.local_tag,to_uri:this.dialog.remote_uri,to_tag:this.dialog.id.remote_tag,route_set:this.dialog.route_set,statusCode:n.statusCode,reasonPhrase:n.reasonPhrase},n.extraHeaders||[],n.body);return new e.RequestSender({request:d,onRequestTimeout:function(){o.onRequestTimeout()},onTransportError:function(){o.onTransportError()},receiveResponse:n.receiveResponse||function(e){o.receiveNonInviteResponse(e)}},this.ua).send(),this.checkEvent(f.toLowerCase())&&this.emit(f.toLowerCase(),d),this},close:function(){var f;if(this.status===t.STATUS_TERMINATED)return this;this.logger.log("closing INVITE session "+this.id),this.mediaHandler&&this.mediaHandler.close();for(f in this.timers)e.Timers.clearTimeout(this.timers[f]);this.dialog&&(this.dialog.terminate(),delete this.dialog);for(f in this.earlyDialogs)this.earlyDialogs[f].terminate(),delete this.earlyDialogs[f];return this.status=t.STATUS_TERMINATED,delete this.ua.sessions[this.id],this},createDialog:function(f,n,o){var d,i,t=f["UAS"===n?"to_tag":"from_tag"],l=f["UAS"===n?"from_tag":"to_tag"],u=f.call_id+t+l;if(i=this.earlyDialogs[u],o)return i?!0:(i=new e.Dialog(this,f,n,e.Dialog.C.STATUS_EARLY),i.error?(this.logger.error(i.error),this.failed(f,e.C.causes.INTERNAL_ERROR),!1):(this.earlyDialogs[u]=i,!0));if(i){i.update(f,n),this.dialog=i,delete this.earlyDialogs[u];for(var p in this.earlyDialogs)this.earlyDialogs[p].terminate(),delete this.earlyDialogs[p];return!0}return d=new e.Dialog(this,f,n),d.error?(this.logger.error(d.error),this.failed(f,e.C.causes.INTERNAL_ERROR),!1):(this.to_tag=f.to_tag,this.dialog=d,!0)},isReadyToReinvite:function(){return this.mediaHandler.isReady()&&!this.dialog.uac_pending_reply&&!this.dialog.uas_pending_reply},mute:function(e){var f=this.mediaHandler.mute(e);f&&this.onmute(f)},unmute:function(e){var f=this.mediaHandler.unmute(e);f&&this.onunmute(f)},hold:function(){if(this.status!==t.STATUS_WAITING_FOR_ACK&&this.status!==t.STATUS_CONFIRMED)throw new e.Exceptions.InvalidStateError(this.status);return this.mediaHandler.hold(),this.isReadyToReinvite()?void(this.local_hold!==!0&&(this.onhold("local"),this.sendReinvite({mangle:function(e){return/a=(sendrecv|sendonly|recvonly|inactive)/.test(e)?(e=e.replace(/a=sendrecv\r\n/g,"a=sendonly\r\n"),e=e.replace(/a=recvonly\r\n/g,"a=inactive\r\n")):e=e.replace(/(m=[^\r]*\r\n)/g,"$1a=sendonly\r\n"),e}}))):void(this.pending_actions.isPending("unhold")?this.pending_actions.pop("unhold"):this.pending_actions.isPending("hold")||this.pending_actions.push("hold"))},unhold:function(){if(this.status!==t.STATUS_WAITING_FOR_ACK&&this.status!==t.STATUS_CONFIRMED)throw new e.Exceptions.InvalidStateError(this.status);return this.mediaHandler.unhold(),this.isReadyToReinvite()?void(this.local_hold!==!1&&(this.onunhold("local"),this.sendReinvite())):void(this.pending_actions.isPending("hold")?this.pending_actions.pop("hold"):this.pending_actions.isPending("unhold")||this.pending_actions.push("unhold"))},isOnHold:function(){return{local:this.local_hold,remote:this.remote_hold}},receiveReinvite:function(e){var f=this,n=e.getHeader("Content-Type"),o=!0;if(e.body){if("application/sdp"!==n)return this.logger.warn("invalid Content-Type"),void e.reply(415);o=/a=(sendonly|inactive)/.test(e.body),this.mediaHandler.setDescription(e.body,function(){f.mediaHandler.getDescription(function(n){e.reply(200,null,["Contact: "+f.contact],n,function(){f.status=t.STATUS_WAITING_FOR_ACK,f.setInvite2xxTimer(e,n),f.setACKTimer(),f.remote_hold&&!o?f.onunhold("remote"):!f.remote_hold&&o&&f.onhold("remote")})},function(){e.reply(500)},f.mediaHint)},function(n){f.logger.error(n),e.reply(488)})}},sendReinvite:function(f){f=f||{};var n=this,o=(f.extraHeaders||[]).slice(),d=f.eventHandlers||{},i=f.mangle||null;this.reinviteSucceeded=d.succeeded?d.succeeded:function(){e.Timers.clearTimeout(n.timers.ackTimer),e.Timers.clearTimeout(n.timers.invite2xxTimer),n.status=t.STATUS_CONFIRMED},this.reinviteFailed=d.failed?d.failed:function(){},o.push("Contact: "+this.contact),o.push("Allow: "+e.Utils.getAllowedMethods(this.ua)),o.push("Content-Type: application/sdp"),this.receiveResponse=this.receiveReinviteResponse,this.mediaHandler.getDescription(function(f){i&&(f=i(f)),n.dialog.sendRequest(n,e.C.INVITE,{extraHeaders:o,body:f})},function(){n.isReadyToReinvite()&&n.onReadyToReinvite(),n.reinviteFailed()},n.mediaHint)},receiveRequest:function(f){switch(f.method){case e.C.BYE:f.reply(200),this.status===t.STATUS_CONFIRMED&&(this.emit("bye",f),this.terminated(f,e.C.causes.BYE));break;case e.C.INVITE:this.status===t.STATUS_CONFIRMED&&(this.logger.log("re-INVITE received"),f.reply(488,null,['Warning: 399 sipjs "Cannot update media description"']));break;case e.C.INFO:if(this.status===t.STATUS_CONFIRMED||this.status===t.STATUS_WAITING_FOR_ACK){var o,d,i,l=f.getHeader("content-type"),u=/^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/,p=/^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/;l&&(l.match(/^application\/dtmf-relay/i)?(f.body&&(o=f.body.split("\r\n",2),2===o.length&&(u.test(o[0])&&(d=o[0].replace(u,"$2")),p.test(o[1])&&(i=parseInt(o[1].replace(p,"$2"),10)))),new n(this,d,{duration:i}).init_incoming(f)):f.reply(415,null,["Accept: application/dtmf-relay"]))}break;case e.C.REFER:if(this.status===t.STATUS_CONFIRMED){this.logger.log("REFER received"),f.reply(202,"Accepted");var s=this.checkListener("refer"),y=s?"SIP/2.0 100 Trying":"SIP/2.0 603 Declined";this.sendRequest(e.C.NOTIFY,{extraHeaders:["Event: refer","Subscription-State: terminated","Content-Type: message/sipfrag"],body:y,receiveResponse:function(){}}),s&&this.emit("refer",f)}}},receiveReinviteResponse:function(f){var n=this,o=f.getHeader("Content-Type");if(this.status!==t.STATUS_TERMINATED)switch(!0){case/^1[0-9]{2}$/.test(f.status_code):break;case/^2[0-9]{2}$/.test(f.status_code):if(this.status=t.STATUS_CONFIRMED,this.sendRequest(e.C.ACK,{cseq:f.cseq}),!f.body){this.reinviteFailed();break}if("application/sdp"!==o){this.reinviteFailed();break}this.mediaHandler.setDescription(f.body,function(){n.reinviteSucceeded()},function(){n.reinviteFailed()});break;default:this.reinviteFailed()}},acceptAndTerminate:function(f,n,o){var d=[];return n&&(o=o||e.C.REASON_PHRASE[n]||"",d.push("Reason: SIP ;cause="+n+'; text="'+o+'"')),(this.dialog||this.createDialog(f,"UAC"))&&(this.sendRequest(e.C.ACK,{cseq:f.cseq}),this.sendRequest(e.C.BYE,{extraHeaders:d})),this},setInvite2xxTimer:function(f,n){var o=this,d=e.Timers.T1;this.timers.invite2xxTimer=e.Timers.setTimeout(function i(){o.status===t.STATUS_WAITING_FOR_ACK&&(o.logger.log("no ACK received, attempting to retransmit OK"),f.reply(200,null,["Contact: "+o.contact],n),d=Math.min(2*d,e.Timers.T2),o.timers.invite2xxTimer=e.Timers.setTimeout(i,d))},d)},setACKTimer:function(){var f=this;this.timers.ackTimer=e.Timers.setTimeout(function(){f.status===t.STATUS_WAITING_FOR_ACK&&(f.logger.log("no ACK received for an extended period of time, terminating the call"),e.Timers.clearTimeout(f.timers.invite2xxTimer),f.sendRequest(e.C.BYE),f.terminated(null,e.C.causes.NO_ACK))},e.Timers.TIMER_H)},onReadyToReinvite:function(){var e=this.pending_actions.shift();e&&this[e.name]&&this[e.name]()},onTransportError:function(){this.status===t.STATUS_CONFIRMED?this.terminated(null,e.C.causes.CONNECTION_ERROR):this.status!==t.STATUS_TERMINATED&&this.failed(null,e.C.causes.CONNECTION_ERROR)},onRequestTimeout:function(){this.status===t.STATUS_CONFIRMED?this.terminated(null,e.C.causes.REQUEST_TIMEOUT):this.status!==t.STATUS_TERMINATED&&this.failed(null,e.C.causes.REQUEST_TIMEOUT)},onDialogError:function(f){this.status===t.STATUS_CONFIRMED?this.terminated(f,e.C.causes.DIALOG_ERROR):this.status!==t.STATUS_TERMINATED&&this.failed(f,e.C.causes.DIALOG_ERROR)},onhold:function(e){this["local"===e?"local_hold":"remote_hold"]=!0,this.emit("hold",{originator:e})},onunhold:function(e){this["local"===e?"local_hold":"remote_hold"]=!1,this.emit("unhold",{originator:e})},onmute:function(e){this.emit("muted",{audio:e.audio,video:e.video})},onunmute:function(e){this.emit("unmuted",{audio:e.audio,video:e.video})},failed:function(e,f){return this.close(),this.emit("failed",e,f)},rejected:function(e,f){return this.close(),this.emit("rejected",e||null,f)},canceled:function(){return this.close(),this.emit("cancel")},accepted:function(f,n){return n=n||f&&e.C.REASON_PHRASE[f.status_code]||"",this.startTime=new Date,this.emit("accepted",f,n)},terminated:function(e,f){return this.endTime=new Date,this.close(),this.emit("terminated",{message:e||null,cause:f||null})},connecting:function(e){return this.emit("connecting",{request:e})}},o.C=t,e.Session=o,d=function(f,n){function o(e,f){n.hasHeader(e)&&n.getHeader(e).toLowerCase().indexOf("100rel")>=0&&(l.rel100=f)}function d(){var f={extraHeaders:["Contact: "+l.contact]};l.rel100!==e.C.supported.REQUIRED&&l.progress(f),l.status=t.STATUS_WAITING_FOR_ANSWER,l.timers.userNoAnswerTimer=e.Timers.setTimeout(function(){n.reply(408),l.failed(n,e.C.causes.NO_ANSWER)},l.ua.configuration.noAnswerTimeout),i&&(l.timers.expiresTimer=e.Timers.setTimeout(function(){l.status===t.STATUS_WAITING_FOR_ANSWER&&(n.reply(487),l.failed(n,e.C.causes.EXPIRES))},i)),l.emit("invite",n)}var i,l=this,u=n.getHeader("Content-Type"),p=n.parseHeader("Content-Disposition");if(!p&&"application/sdp"!==u||p&&"render"===p.type)this.renderbody=n.body,this.rendertype=u;else if("application/sdp"!==u&&p&&"session"===p.type)return void n.reply(415);return e.Hacks.Firefox.cannotHandleRelayCandidates(n),e.Hacks.Firefox.cannotHandleExtraWhitespace(n),e.Hacks.AllBrowsers.maskDtls(n),e.Utils.augment(this,e.ServerContext,[f,n]),e.Utils.augment(this,e.Session,[f.configuration.mediaHandlerFactory]),this.status=t.STATUS_INVITE_RECEIVED,this.from_tag=n.from_tag,this.id=n.call_id+this.from_tag,this.request=n,this.contact=this.ua.contact.toString(),this.receiveNonInviteResponse=function(){},this.logger=f.getLogger("sip.inviteservercontext",this.id),this.ua.sessions[this.id]=this,n.hasHeader("expires")&&(i=1e3*n.getHeader("expires")),o("require",e.C.supported.REQUIRED),o("supported",e.C.supported.SUPPORTED),n.to_tag=e.Utils.newTag(),this.createDialog(n,"UAS",!0)?(this.mediaHandler=this.mediaHandlerFactory(this,{RTCConstraints:{optional:[{DtlsSrtpKeyAgreement:"true"}]}}),this.mediaHandler&&this.mediaHandler.getRemoteStreams&&(this.getRemoteStreams=this.mediaHandler.getRemoteStreams.bind(this.mediaHandler),this.getLocalStreams=this.mediaHandler.getLocalStreams.bind(this.mediaHandler)),void(!n.body||this.renderbody?e.Timers.setTimeout(d,0):(this.hasOffer=!0,this.mediaHandler.setDescription(n.body,d,function(e){l.logger.warn("invalid SDP"),l.logger.warn(e),n.reply(488)})))):void n.reply(500,"Missing Contact header field")},d.prototype={reject:function(f){if(this.status===t.STATUS_TERMINATED)throw new e.Exceptions.InvalidStateError(this.status);return this.logger.log("rejecting RTCSession"),e.ServerContext.prototype.reject.apply(this,[f]),this.terminated()},terminate:function(f){f=f||{};var n,o=(f.extraHeaders||[]).slice(),d=f.body,i=this;return this.status===t.STATUS_WAITING_FOR_ACK&&this.request.server_transaction.state!==e.Transactions.C.STATUS_TERMINATED?(n=this.dialog,this.receiveRequest=function(f){f.method===e.C.ACK&&(this.request(e.C.BYE,{extraHeaders:o,body:d}),n.terminate())},this.request.server_transaction.on("stateChanged",function(){this.state===e.Transactions.C.STATUS_TERMINATED&&(this.request=new e.OutgoingRequest(e.C.BYE,this.dialog.remote_target,this.ua,{cseq:this.dialog.local_seqnum+=1,call_id:this.dialog.id.call_id,from_uri:this.dialog.local_uri,from_tag:this.dialog.id.local_tag,to_uri:this.dialog.remote_uri,to_tag:this.dialog.id.remote_tag,route_set:this.dialog.route_set},o,d),new e.RequestSender({request:this.request,onRequestTimeout:function(){i.onRequestTimeout() -},onTransportError:function(){i.onTransportError()},receiveResponse:function(){}},this.ua).send(),n.terminate())}),this.emit("bye",this.request),this.terminated(),this.dialog=n,this.ua.dialogs[n.id.toString()]=n):this.status===t.STATUS_CONFIRMED?this.bye(f):this.reject(f),this},progress:function(f){function n(){i=f.statusCode||183,this.status=t.STATUS_WAITING_FOR_PRACK,u.push("Contact: "+this.contact),u.push("Require: 100rel"),u.push("RSeq: "+Math.floor(1e4*Math.random())),this.mediaHint=f.media,this.mediaHandler.getDescription(function(f){if(!this.isCanceled&&this.status!==t.STATUS_TERMINATED){this.early_sdp=f,this[this.hasOffer?"hasAnswer":"hasOffer"]=!0;var n=e.Timers.T1;this.timers.rel1xxTimer=e.Timers.setTimeout(function o(){this.request.reply(i,null,u,f),n*=2,this.timers.rel1xxTimer=e.Timers.setTimeout(o.bind(this),n)}.bind(this),n),this.timers.prackTimer=e.Timers.setTimeout(function(){this.status===t.STATUS_WAITING_FOR_PRACK&&(this.logger.log("no PRACK received, rejecting the call"),e.Timers.clearTimeout(this.timers.rel1xxTimer),this.request.reply(504),this.terminated(null,e.C.causes.NO_PRACK))}.bind(this),64*e.Timers.T1),d=this.request.reply(i,l,u,f),this.emit("progress",d,l)}}.bind(this),function(){this.failed(null,e.C.causes.WEBRTC_ERROR)}.bind(this),f.media)}function o(){d=this.request.reply(i,l,u,p),this.emit("progress",d,l)}f=f||{};var d,i=f.statusCode||180,l=f.reasonPhrase,u=(f.extraHeaders||[]).slice(),p=f.body;if(100>i||i>199)throw new TypeError("Invalid statusCode: "+i);return this.isCanceled||this.status===t.STATUS_TERMINATED?this:(100!==f.statusCode&&(this.rel100===e.C.supported.REQUIRED||this.rel100===e.C.supported.SUPPORTED&&f.rel100||this.rel100===e.C.supported.SUPPORTED&&this.ua.configuration.rel100===e.C.supported.REQUIRED)?n.apply(this):o.apply(this),this)},accept:function(f){f=f||{},e.Utils.optionsOverride(f,"media","mediaConstraints",!0,this.logger,this.ua.configuration.media),this.mediaHint=f.media;var n=this,o=this.request,d=(f.extraHeaders||[]).slice(),i=function(f){var i,l=function(){n.status=t.STATUS_WAITING_FOR_ACK,n.setInvite2xxTimer(o,f),n.setACKTimer()},u=function(){n.failed(null,e.C.causes.CONNECTION_ERROR)};n.mediaHandler.render(),d.push("Contact: "+n.contact),n.hasOffer?n.hasAnswer=!0:n.hasOffer=!0,i=o.reply(200,null,d,f,l,u),n.status!==t.STATUS_TERMINATED&&n.accepted(i,e.C.REASON_PHRASE[200])},l=function(){n.status!==t.STATUS_TERMINATED&&n.failed(null,e.C.causes.WEBRTC_ERROR)};if(this.status===t.STATUS_WAITING_FOR_PRACK)return this.status=t.STATUS_ANSWERED_WAITING_FOR_PRACK,this;if(this.status===t.STATUS_WAITING_FOR_ANSWER)this.status=t.STATUS_ANSWERED;else if(this.status!==t.STATUS_EARLY_MEDIA)throw new e.Exceptions.InvalidStateError(this.status);return this.createDialog(o,"UAS")?(e.Timers.clearTimeout(this.timers.userNoAnswerTimer),this.status===t.STATUS_EARLY_MEDIA?i():this.mediaHandler.getDescription(i,l,n.mediaHint),this):(o.reply(500,"Missing Contact header field"),this)},receiveRequest:function(f){function n(){var n;e.Timers.clearTimeout(this.timers.ackTimer),e.Timers.clearTimeout(this.timers.invite2xxTimer),this.status=t.STATUS_CONFIRMED,this.unmute(),n=f.getHeader("Content-Type"),"application/sdp"!==n&&(this.renderbody=f.body,this.rendertype=n)}switch(f.method){case e.C.CANCEL:(this.status===t.STATUS_WAITING_FOR_ANSWER||this.status===t.STATUS_WAITING_FOR_PRACK||this.status===t.STATUS_ANSWERED_WAITING_FOR_PRACK||this.status===t.STATUS_EARLY_MEDIA||this.status===t.STATUS_ANSWERED)&&(this.status=t.STATUS_CANCELED,this.request.reply(487),this.canceled(f),this.rejected(f,e.C.causes.CANCELED),this.failed(f,e.C.causes.CANCELED));break;case e.C.ACK:this.status===t.STATUS_WAITING_FOR_ACK&&(this.hasAnswer?n.apply(this):f.body&&"application/sdp"===f.getHeader("content-type")?(e.Hacks.Firefox.cannotHandleRelayCandidates(f),e.Hacks.Firefox.cannotHandleExtraWhitespace(f),e.Hacks.AllBrowsers.maskDtls(f),this.hasAnswer=!0,this.mediaHandler.setDescription(f.body,n.bind(this),function(n){this.logger.warn(n),this.terminate({statusCode:"488",reasonPhrase:"Bad Media Description"}),this.failed(f,e.C.causes.BAD_MEDIA_DESCRIPTION)}.bind(this))):this.early_sdp?n.apply(this):this.failed(f,e.C.causes.BAD_MEDIA_DESCRIPTION));break;case e.C.PRACK:this.status===t.STATUS_WAITING_FOR_PRACK||this.status===t.STATUS_ANSWERED_WAITING_FOR_PRACK?this.hasAnswer?(e.Timers.clearTimeout(this.timers.rel1xxTimer),e.Timers.clearTimeout(this.timers.prackTimer),f.reply(200),this.status===t.STATUS_ANSWERED_WAITING_FOR_PRACK&&(this.status=t.STATUS_EARLY_MEDIA,this.accept()),this.status=t.STATUS_EARLY_MEDIA,this.mute()):f.body&&"application/sdp"===f.getHeader("content-type")?(this.hasAnswer=!0,this.mediaHandler.setDescription(f.body,function(){e.Timers.clearTimeout(this.timers.rel1xxTimer),e.Timers.clearTimeout(this.timers.prackTimer),f.reply(200),this.status===t.STATUS_ANSWERED_WAITING_FOR_PRACK&&(this.status=t.STATUS_EARLY_MEDIA,this.accept()),this.status=t.STATUS_EARLY_MEDIA,this.mute()}.bind(this),function(n){this.logger.warn(n),this.terminate({statusCode:"488",reasonPhrase:"Bad Media Description"}),this.failed(f,e.C.causes.BAD_MEDIA_DESCRIPTION)}.bind(this))):(this.terminate({statusCode:"488",reasonPhrase:"Bad Media Description"}),this.failed(f,e.C.causes.BAD_MEDIA_DESCRIPTION)):this.status===t.STATUS_EARLY_MEDIA&&f.reply(200);break;default:o.prototype.receiveRequest.apply(this,[f])}}},e.InviteServerContext=d,i=function(f,n,o){o=o||{};var d,i,l=(o.extraHeaders||[]).slice(),u=o.stunServers||null,p=o.turnServers||null,s=f.configuration.mediaHandlerFactory.isSupported;if(s&&!s())throw new e.Exceptions.NotSupportedError("Media not supported");if(this.RTCConstraints=o.RTCConstraints||{},this.inviteWithoutSdp=o.inviteWithoutSdp||!1,this.anonymous=o.anonymous||!1,this.renderbody=o.renderbody||null,this.rendertype=o.rendertype||"text/plain",d={from_tag:this.from_tag},this.contact=f.contact.toString({anonymous:this.anonymous,outbound:this.anonymous?!f.contact.temp_gruu:!f.contact.pub_gruu}),this.anonymous&&(d.from_displayName="Anonymous",d.from_uri="sip:anonymous@anonymous.invalid",l.push("P-Preferred-Identity: "+f.configuration.uri.toString()),l.push("Privacy: id")),l.push("Contact: "+this.contact),l.push("Allow: "+e.Utils.getAllowedMethods(f)),this.inviteWithoutSdp?this.renderbody&&(l.push("Content-Type: "+this.rendertype),l.push("Content-Disposition: render;handling=optional")):l.push("Content-Type: application/sdp"),f.configuration.rel100===e.C.supported.REQUIRED&&l.push("Require: 100rel"),o.extraHeaders=l,o.params=d,e.Utils.augment(this,e.ClientContext,[f,e.C.INVITE,n,o]),e.Utils.augment(this,e.Session,[f.configuration.mediaHandlerFactory]),this.status!==t.STATUS_NULL)throw new e.Exceptions.InvalidStateError(this.status);if(this.from_tag=e.Utils.newTag(),this.isCanceled=!1,this.received_100=!1,this.method=e.C.INVITE,this.receiveNonInviteResponse=this.receiveResponse,this.receiveResponse=this.receiveInviteResponse,this.logger=f.getLogger("sip.inviteclientcontext"),u){if(i=e.UA.configuration_check.optional.stunServers(u),!i)throw new TypeError("Invalid stunServers: "+u);this.stunServers=i}if(p){if(i=e.UA.configuration_check.optional.turnServers(p),!i)throw new TypeError("Invalid turnServers: "+p);this.turnServers=i}f.applicants[this]=this,this.id=this.request.call_id+this.from_tag,this.mediaHandler=this.mediaHandlerFactory(this,{RTCConstraints:this.RTCConstraints,stunServers:this.stunServers,turnServers:this.turnServers}),this.mediaHandler&&this.mediaHandler.getRemoteStreams&&(this.getRemoteStreams=this.mediaHandler.getRemoteStreams.bind(this.mediaHandler),this.getLocalStreams=this.mediaHandler.getLocalStreams.bind(this.mediaHandler))},i.prototype={invite:function(f){var n=this;return f=f||{},e.Utils.optionsOverride(f,"media","mediaConstraints",!0,this.logger,this.ua.configuration.media),this.mediaHint=f.media,this.ua.sessions[this.id]=this,this.inviteWithoutSdp?(this.request.body=n.renderbody,this.status=t.STATUS_INVITE_SENT,this.send()):this.mediaHandler.getDescription(function(e){n.isCanceled||n.status===t.STATUS_TERMINATED||(n.hasOffer=!0,n.request.body=e,n.status=t.STATUS_INVITE_SENT,n.send())},function(){n.status!==t.STATUS_TERMINATED&&n.failed(null,e.C.causes.WEBRTC_ERROR)},n.mediaHint),this},receiveInviteResponse:function(f){var n,o=this,d=f.call_id+f.from_tag+f.to_tag,i=[],l={};if(this.status!==t.STATUS_TERMINATED&&f.method===e.C.INVITE){if(this.dialog&&f.status_code>=200&&f.status_code<=299){if(d!==this.dialog.id.toString()){if(!this.createDialog(f,"UAC",!0))return;return this.earlyDialogs[d].sendRequest(this,e.C.ACK,{body:e.Utils.generateFakeSDP(f.body)}),this.earlyDialogs[d].sendRequest(this,e.C.BYE),void(this.status!==t.STATUS_CONFIRMED&&this.failed(f,e.C.causes.WEBRTC_ERROR))}if(this.status===t.STATUS_CONFIRMED)return void this.sendRequest(e.C.ACK,{cseq:f.cseq});if(!this.hasAnswer)return}if(this.dialog&&f.status_code<200){if(!this.earlyDialogs[d]&&!this.createDialog(f,"UAC",!0))return;return i.push("RAck: "+f.getHeader("rseq")+" "+f.getHeader("cseq")),this.earlyDialogs[d].pracked.push(f.getHeader("rseq")),void this.earlyDialogs[d].sendRequest(this,e.C.PRACK,{extraHeaders:i,body:e.Utils.generateFakeSDP(f.body)})}if(this.isCanceled)return void(f.status_code>=100&&f.status_code<200?(this.request.cancel(this.cancelReason),this.canceled(null)):f.status_code>=200&&f.status_code<299&&(this.acceptAndTerminate(f),this.emit("bye",this.request)));switch(!0){case/^100$/.test(f.status_code):this.received_100=!0;break;case/^1[0-9]{2}$/.test(f.status_code):if(!f.to_tag){this.logger.warn("1xx response received without to tag");break}if(f.hasHeader("contact")&&!this.createDialog(f,"UAC",!0))break;if(this.status=t.STATUS_1XX_RECEIVED,f.hasHeader("require")&&-1!==f.getHeader("require").indexOf("100rel")){if(this.dialog||!this.earlyDialogs[d])break;if(-1!==this.earlyDialogs[d].pracked.indexOf(f.getHeader("rseq"))||this.earlyDialogs[d].pracked[this.earlyDialogs[d].pracked.length-1]>=f.getHeader("rseq")&&this.earlyDialogs[d].pracked.length>0)return;if(e.Hacks.Firefox.cannotHandleRelayCandidates(f),e.Hacks.Firefox.cannotHandleExtraWhitespace(f),e.Hacks.AllBrowsers.maskDtls(f),f.body)if(this.hasOffer){if(!this.createDialog(f,"UAC"))break;this.hasAnswer=!0,this.mediaHandler.setDescription(f.body,function(){i.push("RAck: "+f.getHeader("rseq")+" "+f.getHeader("cseq")),o.dialog.pracked.push(f.getHeader("rseq")),o.sendRequest(e.C.PRACK,{extraHeaders:i,receiveResponse:function(){}}),o.status=t.STATUS_EARLY_MEDIA,o.mute(),o.emit("progress",f)},function(n){o.logger.warn(n),o.acceptAndTerminate(f,488,"Not Acceptable Here"),o.failed(f,e.C.causes.BAD_MEDIA_DESCRIPTION)})}else this.earlyDialogs[d].pracked.push(f.getHeader("rseq")),this.earlyDialogs[d].mediaHandler.setDescription(f.body,function(){o.earlyDialogs[d].mediaHandler.getDescription(function(n){i.push("Content-Type: application/sdp"),i.push("RAck: "+f.getHeader("rseq")+" "+f.getHeader("cseq")),o.earlyDialogs[d].sendRequest(o,e.C.PRACK,{extraHeaders:i,body:n}),o.status=t.STATUS_EARLY_MEDIA,o.emit("progress",f)},function(){o.earlyDialogs[d].pracked.push(f.getHeader("rseq")),o.status!==t.STATUS_TERMINATED&&o.failed(null,e.C.causes.WEBRTC_ERROR)},o.mediaHint)},function(e){o.earlyDialogs[d].pracked.splice(o.earlyDialogs[d].pracked.indexOf(f.getHeader("rseq")),1),o.logger.warn("invalid SDP"),o.logger.warn(e)});else i.push("RAck: "+f.getHeader("rseq")+" "+f.getHeader("cseq")),this.earlyDialogs[d].pracked.push(f.getHeader("rseq")),this.earlyDialogs[d].sendRequest(this,e.C.PRACK,{extraHeaders:i}),this.emit("progress",f)}else this.emit("progress",f);break;case/^2[0-9]{2}$/.test(f.status_code):var u=this.request.cseq+" "+this.request.method;if(u!==f.getHeader("cseq"))break;if(this.status===t.STATUS_EARLY_MEDIA&&this.dialog){this.status=t.STATUS_CONFIRMED,this.unmute(),l={},this.renderbody&&(i.push("Content-Type: "+this.rendertype),l.extraHeaders=i,l.body=this.renderbody),l.cseq=f.cseq,this.sendRequest(e.C.ACK,l),this.accepted(f);break}if(this.dialog)break;if(e.Hacks.Firefox.cannotHandleRelayCandidates(f),e.Hacks.Firefox.cannotHandleExtraWhitespace(f),e.Hacks.AllBrowsers.maskDtls(f),this.hasOffer)if(this.hasAnswer)this.renderbody&&(i.push("Content-Type: "+o.rendertype),l.extraHeaders=i,l.body=this.renderbody),this.sendRequest(e.C.ACK,l);else{if(!f.body){this.acceptAndTerminate(f,400,"Missing session description"),this.failed(f,e.C.causes.BAD_MEDIA_DESCRIPTION);break}if(!this.createDialog(f,"UAC"))break;this.hasAnswer=!0,this.mediaHandler.setDescription(f.body,function(){var n={};o.status=t.STATUS_CONFIRMED,o.unmute(),o.renderbody&&(i.push("Content-Type: "+o.rendertype),n.extraHeaders=i,n.body=o.renderbody),n.cseq=f.cseq,o.sendRequest(e.C.ACK,n),o.accepted(f)},function(n){o.logger.warn(n),o.acceptAndTerminate(f,488,"Not Acceptable Here"),o.failed(f,e.C.causes.BAD_MEDIA_DESCRIPTION)})}else if(this.earlyDialogs[d]&&this.earlyDialogs[d].mediaHandler.localMedia){if(this.hasOffer=!0,this.hasAnswer=!0,this.mediaHandler=this.earlyDialogs[d].mediaHandler,!this.createDialog(f,"UAC"))break;this.status=t.STATUS_CONFIRMED,this.sendRequest(e.C.ACK,{cseq:f.cseq}),this.unmute(),this.accepted(f)}else{if(!f.body){this.acceptAndTerminate(f,400,"Missing session description"),this.failed(f,e.C.causes.BAD_MEDIA_DESCRIPTION);break}if(!this.createDialog(f,"UAC"))break;this.hasOffer=!0,this.mediaHandler.setDescription(f.body,function(){o.mediaHandler.getDescription(function(n){o.isCanceled||o.status===t.STATUS_TERMINATED||(n=e.Hacks.Firefox.hasMissingCLineInSDP(n),o.status=t.STATUS_CONFIRMED,o.hasAnswer=!0,o.unmute(),o.sendRequest(e.C.ACK,{body:n,extraHeaders:["Content-Type: application/sdp"],cseq:f.cseq}),o.accepted(f))},function(){o.logger.warn("there was a problem")},o.mediaHint)},function(e){o.logger.warn("invalid SDP"),o.logger.warn(e),f.reply(488)})}break;default:n=e.Utils.sipErrorCause(f.status_code),this.failed(f,n),this.rejected(f,n)}}},cancel:function(f){f=f||{};var n,o=f.status_code,d=f.reasonPhrase;if(this.status===t.STATUS_TERMINATED)throw new e.Exceptions.InvalidStateError(this.status);if(this.logger.log("canceling RTCSession"),o&&(200>o||o>=700))throw new TypeError("Invalid status_code: "+o);return o&&(d=d||e.C.REASON_PHRASE[o]||"",n="SIP ;cause="+o+' ;text="'+d+'"'),this.status===t.STATUS_NULL||this.status===t.STATUS_INVITE_SENT&&!this.received_100?(this.isCanceled=!0,this.cancelReason=n):(this.status===t.STATUS_INVITE_SENT||this.status===t.STATUS_1XX_RECEIVED||this.status===t.STATUS_EARLY_MEDIA)&&this.request.cancel(n),this.canceled()},terminate:function(e){return this.status===t.STATUS_TERMINATED?this:(this.status===t.STATUS_WAITING_FOR_ACK||this.status===t.STATUS_CONFIRMED?this.bye(e):this.cancel(e),this.terminated())},receiveRequest:function(f){return f.method===e.C.CANCEL,f.method===e.C.ACK&&this.status===t.STATUS_WAITING_FOR_ACK&&(e.Timers.clearTimeout(this.timers.ackTimer),e.Timers.clearTimeout(this.timers.invite2xxTimer),this.status=t.STATUS_CONFIRMED,this.unmute(),this.accepted()),o.prototype.receiveRequest.apply(this,[f])}},e.InviteClientContext=i}},{}],23:[function(e,f){f.exports=function(e){var f,n={MIN_DURATION:70,MAX_DURATION:6e3,DEFAULT_DURATION:100,MIN_INTER_TONE_GAP:50,DEFAULT_INTER_TONE_GAP:500};return f=function(n,o,d){var i,t,l=["succeeded","failed"];if(void 0===o)throw new TypeError("Not enough arguments");if(this.logger=n.ua.getLogger("sip.invitecontext.dtmf",n.id),this.owner=n,this.direction=null,d=d||{},i=d.duration||null,t=d.interToneGap||null,"string"==typeof o)o=o.toUpperCase();else{if("number"!=typeof o)throw new TypeError("Invalid tone: "+o);o=o.toString()}if(!o.match(/^[0-9A-D#*]$/))throw new TypeError("Invalid tone: "+o);if(this.tone=o,i&&!e.Utils.isDecimal(i))throw new TypeError("Invalid tone duration: "+i);if(i?if.C.MAX_DURATION?(this.logger.warn('"duration" value is greater than the maximum allowed, setting it to '+f.C.MAX_DURATION+" milliseconds"),i=f.C.MAX_DURATION):i=Math.abs(i):i=f.C.DEFAULT_DURATION,this.duration=i,t&&!e.Utils.isDecimal(t))throw new TypeError("Invalid interToneGap: "+t);t?td)switch(this.state){case f.STATUS_TRYING:case f.STATUS_PROCEEDING:this.stateChanged(f.STATUS_PROCEEDING),this.request_sender.receiveResponse(n)}else switch(this.state){case f.STATUS_TRYING:case f.STATUS_PROCEEDING:this.stateChanged(f.STATUS_COMPLETED),e.Timers.clearTimeout(this.F),408===d?this.request_sender.onRequestTimeout():this.request_sender.receiveResponse(n),this.K=e.Timers.setTimeout(o.timer_K.bind(o),e.Timers.TIMER_K);break;case f.STATUS_COMPLETED:}};var o=function(e,n,o){var d,i=this,t=["stateChanged"];this.type=f.INVITE_CLIENT,this.transport=o,this.id="z9hG4bK"+Math.floor(1e7*Math.random()),this.request_sender=e,this.request=n,this.logger=e.ua.getLogger("sip.transaction.ict",this.id),d="SIP/2.0/"+(e.ua.configuration.hackViaTcp?"TCP":o.server.scheme),d+=" "+e.ua.configuration.viaHost+";branch="+this.id,this.request.setHeader("via",d),this.request_sender.ua.newTransaction(this),this.request.cancel=function(e){i.cancel_request(i,e)},this.initEvents(t)};o.prototype=new e.EventEmitter,o.prototype.stateChanged=function(e){this.state=e,this.emit("stateChanged")},o.prototype.send=function(){var n=this;this.stateChanged(f.STATUS_CALLING),this.B=e.Timers.setTimeout(n.timer_B.bind(n),e.Timers.TIMER_B),this.transport.send(this.request)||this.onTransportError()},o.prototype.onTransportError=function(){this.logger.log("transport error occurred, deleting INVITE client transaction "+this.id),e.Timers.clearTimeout(this.B),e.Timers.clearTimeout(this.D),e.Timers.clearTimeout(this.M),this.stateChanged(f.STATUS_TERMINATED),this.request_sender.ua.destroyTransaction(this),this.state!==f.STATUS_ACCEPTED&&this.request_sender.onTransportError()},o.prototype.timer_M=function(){this.logger.log("Timer M expired for INVITE client transaction "+this.id),this.state===f.STATUS_ACCEPTED&&(e.Timers.clearTimeout(this.B),this.stateChanged(f.STATUS_TERMINATED),this.request_sender.ua.destroyTransaction(this))},o.prototype.timer_B=function(){this.logger.log("Timer B expired for INVITE client transaction "+this.id),this.state===f.STATUS_CALLING&&(this.stateChanged(f.STATUS_TERMINATED),this.request_sender.ua.destroyTransaction(this),this.request_sender.onRequestTimeout())},o.prototype.timer_D=function(){this.logger.log("Timer D expired for INVITE client transaction "+this.id),e.Timers.clearTimeout(this.B),this.stateChanged(f.STATUS_TERMINATED),this.request_sender.ua.destroyTransaction(this)},o.prototype.sendACK=function(f){var n=this;this.ack="ACK "+this.request.ruri+" SIP/2.0\r\n",this.ack+="Via: "+this.request.headers.Via.toString()+"\r\n",this.request.headers.Route&&(this.ack+="Route: "+this.request.headers.Route.toString()+"\r\n"),this.ack+="To: "+f.getHeader("to")+"\r\n",this.ack+="From: "+this.request.headers.From.toString()+"\r\n",this.ack+="Call-ID: "+this.request.headers["Call-ID"].toString()+"\r\n",this.ack+="CSeq: "+this.request.headers.CSeq.toString().split(" ")[0],this.ack+=" ACK\r\n\r\n",this.D=e.Timers.setTimeout(n.timer_D.bind(n),e.Timers.TIMER_D),this.transport.send(this.ack)},o.prototype.cancel_request=function(n,o){var d=n.request;this.cancel=e.C.CANCEL+" "+d.ruri+" SIP/2.0\r\n",this.cancel+="Via: "+d.headers.Via.toString()+"\r\n",this.request.headers.Route&&(this.cancel+="Route: "+d.headers.Route.toString()+"\r\n"),this.cancel+="To: "+d.headers.To.toString()+"\r\n",this.cancel+="From: "+d.headers.From.toString()+"\r\n",this.cancel+="Call-ID: "+d.headers["Call-ID"].toString()+"\r\n",this.cancel+="CSeq: "+d.headers.CSeq.toString().split(" ")[0]+" CANCEL\r\n",o&&(this.cancel+="Reason: "+o+"\r\n"),this.cancel+="Content-Length: 0\r\n\r\n",this.state===f.STATUS_PROCEEDING&&this.transport.send(this.cancel)},o.prototype.receiveResponse=function(n){var o=this,d=n.status_code;if(d>=100&&199>=d)switch(this.state){case f.STATUS_CALLING:this.stateChanged(f.STATUS_PROCEEDING),this.request_sender.receiveResponse(n),this.cancel&&this.transport.send(this.cancel);break;case f.STATUS_PROCEEDING:this.request_sender.receiveResponse(n)}else if(d>=200&&299>=d)switch(this.state){case f.STATUS_CALLING:case f.STATUS_PROCEEDING:this.stateChanged(f.STATUS_ACCEPTED),this.M=e.Timers.setTimeout(o.timer_M.bind(o),e.Timers.TIMER_M),this.request_sender.receiveResponse(n);break;case f.STATUS_ACCEPTED:this.request_sender.receiveResponse(n)}else if(d>=300&&699>=d)switch(this.state){case f.STATUS_CALLING:case f.STATUS_PROCEEDING:this.stateChanged(f.STATUS_COMPLETED),this.sendACK(n),this.request_sender.receiveResponse(n);break;case f.STATUS_COMPLETED:this.sendACK(n)}};var d=function(e,f,n){var o;this.transport=n,this.id="z9hG4bK"+Math.floor(1e7*Math.random()),this.request_sender=e,this.request=f,this.logger=e.ua.getLogger("sip.transaction.nict",this.id),o="SIP/2.0/"+(e.ua.configuration.hackViaTcp?"TCP":n.server.scheme),o+=" "+e.ua.configuration.viaHost+";branch="+this.id,this.request.setHeader("via",o)};d.prototype=new e.EventEmitter,d.prototype.send=function(){this.transport.send(this.request)||this.onTransportError()},d.prototype.onTransportError=function(){this.logger.log("transport error occurred, for an ACK client transaction "+this.id),this.request_sender.onTransportError()};var i=function(e,n){var o=["stateChanged"];this.type=f.NON_INVITE_SERVER,this.id=e.via_branch,this.request=e,this.transport=e.transport,this.ua=n,this.last_response="",e.server_transaction=this,this.logger=n.getLogger("sip.transaction.nist",this.id),this.state=f.STATUS_TRYING,n.newTransaction(this),this.initEvents(o)};i.prototype=new e.EventEmitter,i.prototype.stateChanged=function(e){this.state=e,this.emit("stateChanged")},i.prototype.timer_J=function(){this.logger.log("Timer J expired for non-INVITE server transaction "+this.id),this.stateChanged(f.STATUS_TERMINATED),this.ua.destroyTransaction(this)},i.prototype.onTransportError=function(){this.transportError||(this.transportError=!0,this.logger.log("transport error occurred, deleting non-INVITE server transaction "+this.id),e.Timers.clearTimeout(this.J),this.stateChanged(f.STATUS_TERMINATED),this.ua.destroyTransaction(this))},i.prototype.receiveResponse=function(n,o,d,i){var t=this;if(100===n)switch(this.state){case f.STATUS_TRYING:this.stateChanged(f.STATUS_PROCEEDING),this.transport.send(o)||this.onTransportError();break;case f.STATUS_PROCEEDING:this.last_response=o,this.transport.send(o)?d&&d():(this.onTransportError(),i&&i())}else if(n>=200&&699>=n)switch(this.state){case f.STATUS_TRYING:case f.STATUS_PROCEEDING:this.stateChanged(f.STATUS_COMPLETED),this.last_response=o,this.J=e.Timers.setTimeout(t.timer_J.bind(t),e.Timers.TIMER_J),this.transport.send(o)?d&&d():(this.onTransportError(),i&&i());break;case f.STATUS_COMPLETED:}};var t=function(e,n){var o=["stateChanged"];this.type=f.INVITE_SERVER,this.id=e.via_branch,this.request=e,this.transport=e.transport,this.ua=n,this.last_response="",e.server_transaction=this,this.logger=n.getLogger("sip.transaction.ist",this.id),this.state=f.STATUS_PROCEEDING,n.newTransaction(this),this.resendProvisionalTimer=null,e.reply(100),this.initEvents(o)};t.prototype=new e.EventEmitter,t.prototype.stateChanged=function(e){this.state=e,this.emit("stateChanged")},t.prototype.timer_H=function(){this.logger.log("Timer H expired for INVITE server transaction "+this.id),this.state===f.STATUS_COMPLETED&&this.logger.warn("transactions","ACK for INVITE server transaction was never received, call will be terminated"),this.stateChanged(f.STATUS_TERMINATED),this.ua.destroyTransaction(this)},t.prototype.timer_I=function(){this.stateChanged(f.STATUS_TERMINATED),this.ua.destroyTransaction(this) -},t.prototype.timer_L=function(){this.logger.log("Timer L expired for INVITE server transaction "+this.id),this.state===f.STATUS_ACCEPTED&&(this.stateChanged(f.STATUS_TERMINATED),this.ua.destroyTransaction(this))},t.prototype.onTransportError=function(){this.transportError||(this.transportError=!0,this.logger.log("transport error occurred, deleting INVITE server transaction "+this.id),null!==this.resendProvisionalTimer&&(e.Timers.clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),e.Timers.clearTimeout(this.L),e.Timers.clearTimeout(this.H),e.Timers.clearTimeout(this.I),this.stateChanged(f.STATUS_TERMINATED),this.ua.destroyTransaction(this))},t.prototype.resend_provisional=function(){this.transport.send(this.last_response)||this.onTransportError()},t.prototype.receiveResponse=function(n,o,d,i){var t=this;if(n>=100&&199>=n)switch(this.state){case f.STATUS_PROCEEDING:this.transport.send(o)||this.onTransportError(),this.last_response=o}if(n>100&&199>=n&&this.state===f.STATUS_PROCEEDING)null===this.resendProvisionalTimer&&(this.resendProvisionalTimer=e.Timers.setInterval(t.resend_provisional.bind(t),e.Timers.PROVISIONAL_RESPONSE_INTERVAL));else if(n>=200&&299>=n)switch(this.state){case f.STATUS_PROCEEDING:this.stateChanged(f.STATUS_ACCEPTED),this.last_response=o,this.L=e.Timers.setTimeout(t.timer_L.bind(t),e.Timers.TIMER_L),null!==this.resendProvisionalTimer&&(e.Timers.clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null);case f.STATUS_ACCEPTED:this.transport.send(o)?d&&d():(this.onTransportError(),i&&i())}else if(n>=300&&699>=n)switch(this.state){case f.STATUS_PROCEEDING:null!==this.resendProvisionalTimer&&(e.Timers.clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),this.transport.send(o)?(this.stateChanged(f.STATUS_COMPLETED),this.H=e.Timers.setTimeout(t.timer_H.bind(t),e.Timers.TIMER_H),d&&d()):(this.onTransportError(),i&&i())}};var l=function(n,o){var d;switch(o.method){case e.C.INVITE:if(d=n.transactions.ist[o.via_branch]){switch(d.state){case f.STATUS_PROCEEDING:d.transport.send(d.last_response);break;case f.STATUS_ACCEPTED:}return!0}break;case e.C.ACK:if(d=n.transactions.ist[o.via_branch],!d)return!1;if(d.state===f.STATUS_ACCEPTED)return!1;if(d.state===f.STATUS_COMPLETED)return d.state=f.STATUS_CONFIRMED,d.I=e.Timers.setTimeout(d.timer_I.bind(d),e.Timers.TIMER_I),!0;break;case e.C.CANCEL:return d=n.transactions.ist[o.via_branch],d?(o.reply_sl(200),d.state===f.STATUS_PROCEEDING?!1:!0):(o.reply_sl(481),!0);default:if(d=n.transactions.nist[o.via_branch]){switch(d.state){case f.STATUS_TRYING:break;case f.STATUS_PROCEEDING:case f.STATUS_COMPLETED:d.transport.send(d.last_response)}return!0}}};e.Transactions={C:f,checkTransaction:l,NonInviteClientTransaction:n,InviteClientTransaction:o,AckClientTransaction:d,NonInviteServerTransaction:i,InviteServerTransaction:t}}},{}],27:[function(e,f){f.exports=function(e,f){var n,o={STATUS_READY:0,STATUS_DISCONNECTED:1,STATUS_ERROR:2};n=function(e,f){this.logger=e.getLogger("sip.transport"),this.ua=e,this.ws=null,this.server=f,this.reconnection_attempts=0,this.closed=!1,this.connected=!1,this.reconnectTimer=null,this.lastTransportError={},this.ua.transport=this,this.connect()},n.prototype={send:function(e){var n=e.toString();return this.ws&&this.ws.readyState===f.WebSocket.OPEN?(this.ua.configuration.traceSip===!0&&this.logger.log("sending WebSocket message:\n\n"+n+"\n"),this.ws.send(n),!0):(this.logger.warn("unable to send message, WebSocket is not open"),!1)},disconnect:function(){this.ws&&(e.Timers.clearTimeout(this.reconnectTimer),this.closed=!0,this.logger.log("closing WebSocket "+this.server.ws_uri),this.ws.close()),null!==this.reconnectTimer&&(e.Timers.clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.ua.emit("disconnected",{transport:this,code:this.lastTransportError.code,reason:this.lastTransportError.reason}))},connect:function(){var e=this;if(this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING))return this.logger.log("WebSocket "+this.server.ws_uri+" is already connected"),!1;this.ws&&this.ws.close(),this.logger.log("connecting to WebSocket "+this.server.ws_uri),this.ua.onTransportConnecting(this,0===this.reconnection_attempts?1:this.reconnection_attempts);try{this.ws=new f.WebSocket(this.server.ws_uri,"sip")}catch(n){this.logger.warn("error connecting to WebSocket "+this.server.ws_uri+": "+n)}this.ws.binaryType="arraybuffer",this.ws.onopen=function(){e.onOpen()},this.ws.onclose=function(f){e.onClose(f)},this.ws.onmessage=function(f){e.onMessage(f)},this.ws.onerror=function(f){e.onError(f)}},onOpen:function(){this.connected=!0,this.logger.log("WebSocket "+this.server.ws_uri+" connected"),null!==this.reconnectTimer&&(e.Timers.clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnection_attempts=0,this.closed=!1,this.ua.onTransportConnected(this)},onClose:function(e){var f=this.connected;this.connected=!1,this.lastTransportError.code=e.code,this.lastTransportError.reason=e.reason,this.logger.log("WebSocket disconnected (code: "+e.code+(e.reason?"| reason: "+e.reason:"")+")"),e.wasClean===!1&&this.logger.warn("WebSocket abrupt disconnection"),f===!0?(this.ua.onTransportClosed(this),this.closed?this.ua.emit("disconnected",{transport:this,code:this.lastTransportError.code,reason:this.lastTransportError.reason}):this.reConnect()):this.ua.onTransportError(this)},onMessage:function(f){var n,o,d=f.data;if("\r\n"===d)return void(this.ua.configuration.traceSip===!0&&this.logger.log("received WebSocket message with CRLF Keep Alive response"));if("string"!=typeof d){try{d=String.fromCharCode.apply(null,new Uint8Array(d))}catch(i){return void this.logger.warn("received WebSocket binary message failed to be converted into string, message discarded")}this.ua.configuration.traceSip===!0&&this.logger.log("received WebSocket binary message:\n\n"+d+"\n")}else this.ua.configuration.traceSip===!0&&this.logger.log("received WebSocket text message:\n\n"+d+"\n");if(n=e.Parser.parseMessage(d,this.ua),n&&!(this.ua.status===e.UA.C.STATUS_USER_CLOSED&&n instanceof e.IncomingRequest)&&e.sanityCheck(n,this.ua,this))if(n instanceof e.IncomingRequest)n.transport=this,this.ua.receiveRequest(n);else if(n instanceof e.IncomingResponse)switch(n.method){case e.C.INVITE:o=this.ua.transactions.ict[n.via_branch],o&&o.receiveResponse(n);break;case e.C.ACK:break;default:o=this.ua.transactions.nict[n.via_branch],o&&o.receiveResponse(n)}},onError:function(e){this.logger.warn("WebSocket connection error: "+e)},reConnect:function(){var f=this;this.reconnection_attempts+=1,this.reconnection_attempts>this.ua.configuration.wsServerMaxReconnection?(this.logger.warn("maximum reconnection attempts for WebSocket "+this.server.ws_uri),this.ua.onTransportError(this)):(this.logger.log("trying to reconnect to WebSocket "+this.server.ws_uri+" (reconnection attempt "+this.reconnection_attempts+")"),this.reconnectTimer=e.Timers.setTimeout(function(){f.connect(),f.reconnectTimer=null},1e3*this.ua.configuration.wsServerReconnectionTimeout))}},n.C=o,e.Transport=n}},{}],28:[function(e,f){(function(e){f.exports=function(f){var n,o={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2,EVENT_METHODS:{invite:"INVITE",message:"MESSAGE"},ALLOWED_METHODS:["ACK","CANCEL","BYE","OPTIONS","INFO","NOTIFY"],ACCEPTED_BODY_TYPES:["application/sdp","application/dtmf-relay"],MAX_FORWARDS:70,TAG_LENGTH:10};n=function(n){function d(e){return l.emit.bind(l,e)}var i,t,l=this,u=["connecting","connected","disconnected","newTransaction","transactionDestroyed","registered","unregistered","registrationFailed","invite","newSession","message"];for(i=0,t=o.ALLOWED_METHODS.length;t>i;i++)u.push(o.ALLOWED_METHODS[i].toLowerCase());o.ACCEPTED_BODY_TYPES=o.ACCEPTED_BODY_TYPES.toString(),this.log=new f.LoggerFactory,this.logger=this.getLogger("sip.ua"),this.cache={credentials:{}},this.configuration={},this.dialogs={},this.applicants={},this.data={},this.sessions={},this.subscriptions={},this.transport=null,this.contact=null,this.status=o.STATUS_INIT,this.error=null,this.transactions={nist:{},nict:{},ist:{},ict:{}},this.transportRecoverAttempts=0,this.transportRecoveryTimer=null,Object.defineProperties(this,{transactionsCount:{get:function(){var e,f=["nist","nict","ist","ict"],n=0;for(e in f)n+=Object.keys(this.transactions[f[e]]).length;return n}},nictTransactionsCount:{get:function(){return Object.keys(this.transactions.nict).length}},nistTransactionsCount:{get:function(){return Object.keys(this.transactions.nist).length}},ictTransactionsCount:{get:function(){return Object.keys(this.transactions.ict).length}},istTransactionsCount:{get:function(){return Object.keys(this.transactions.ist).length}}}),void 0===n?n={}:("string"==typeof n||n instanceof String)&&(n={uri:n}),n.log&&(n.log.hasOwnProperty("builtinEnabled")&&(this.log.builtinEnabled=n.log.builtinEnabled),n.log.hasOwnProperty("level")&&(this.log.level=n.log.level),n.log.hasOwnProperty("connector")&&(this.log.connector=n.log.connector));try{this.loadConfig(n),this.initEvents(u)}catch(p){throw this.status=o.STATUS_NOT_READY,this.error=o.CONFIGURATION_ERROR,p}this.registerContext=new f.RegisterContext(this),this.registerContext.on("failed",d("registrationFailed")),this.registerContext.on("registered",d("registered")),this.registerContext.on("unregistered",d("unregistered")),this.configuration.autostart&&this.start(),"function"==typeof e.addEventListener&&e.addEventListener("unload",this.stop.bind(this))},n.prototype=new f.EventEmitter,n.prototype.register=function(e){return this.configuration.register=!0,this.registerContext.register(e),this},n.prototype.unregister=function(e){return this.configuration.register=!1,this.registerContext.unregister(e),this},n.prototype.isRegistered=function(){return this.registerContext.registered},n.prototype.isConnected=function(){return this.transport?this.transport.connected:!1},n.prototype.invite=function(e,n){n=n||{},f.Utils.optionsOverride(n,"media","mediaConstraints",!0,this.logger);var o=new f.InviteClientContext(this,e,n);return this.isConnected()?o.invite({media:n.media}):this.once("connected",function(){o.invite({media:n.media})}),o},n.prototype.subscribe=function(e,n,o){var d=new f.Subscription(this,e,n,o);return this.isConnected()?d.subscribe():this.once("connected",function(){d.subscribe()}),d},n.prototype.message=function(e,n,o){if(void 0===n)throw new TypeError("Not enough arguments");o=o||{},o.contentType=o.contentType||"text/plain",o.body=n;var d=new f.ClientContext(this,f.C.MESSAGE,e,o);return this.isConnected()?d.send():this.once("connected",function(){d.send()}),d},n.prototype.request=function(e,n,o){var d=new f.ClientContext(this,e,n,o);return this.isConnected()?d.send():this.once("connected",function(){d.send()}),d},n.prototype.stop=function(){function e(){0===t.nistTransactionsCount&&0===t.nictTransactionsCount&&(t.off("transactionDestroyed",e),t.transport.disconnect())}var n,d,i,t=this;if(this.logger.log("user requested closure..."),this.status===o.STATUS_USER_CLOSED)return this.logger.warn("UA already closed"),this;f.Timers.clearTimeout(this.transportRecoveryTimer),this.logger.log("closing registerContext"),this.registerContext.close();for(n in this.sessions)this.logger.log("closing session "+n),this.sessions[n].terminate();for(d in this.subscriptions)this.logger.log("unsubscribing from subscription "+d),this.subscriptions[d].close();for(i in this.applicants)this.applicants[i].close();return this.status=o.STATUS_USER_CLOSED,0===this.nistTransactionsCount&&0===this.nictTransactionsCount?this.transport.disconnect():this.on("transactionDestroyed",e),this},n.prototype.start=function(){var e;return this.logger.log("user requested startup..."),this.status===o.STATUS_INIT?(e=this.getNextWsServer(),new f.Transport(this,e)):this.status===o.STATUS_USER_CLOSED?(this.logger.log("resuming"),this.status=o.STATUS_READY,this.transport.connect()):this.status===o.STATUS_READY?this.logger.log("UA is in READY status, not resuming"):this.logger.error("Connection is down. Auto-Recovery system is trying to connect"),this},n.prototype.normalizeTarget=function(e){return f.Utils.normalizeTarget(e,this.configuration.hostportParams)},n.prototype.saveCredentials=function(e){return this.cache.credentials[e.realm]=this.cache.credentials[e.realm]||{},this.cache.credentials[e.realm][e.uri]=e,this},n.prototype.getCredentials=function(e){var f,n;return f=e.ruri.host,this.cache.credentials[f]&&this.cache.credentials[f][e.ruri]&&(n=this.cache.credentials[f][e.ruri],n.method=e.method),n},n.prototype.getLogger=function(e,f){return this.log.getLogger(e,f)},n.prototype.onTransportClosed=function(e){var n,o,d,i=["nict","ict","nist","ist"];for(e.server.status=f.Transport.C.STATUS_DISCONNECTED,this.logger.log("connection state set to "+f.Transport.C.STATUS_DISCONNECTED),d=i.length,n=0;d>n;n++)for(o in this.transactions[i[n]])this.transactions[i[n]][o].onTransportError();this.contact.pub_gruu||this.closeSessionsOnTransportError()},n.prototype.onTransportError=function(e){var n;this.logger.log("transport "+e.server.ws_uri+" failed | connection state set to "+f.Transport.C.STATUS_ERROR),e.server.status=f.Transport.C.STATUS_ERROR,this.emit("disconnected",{transport:e}),this.status!==o.STATUS_USER_CLOSED&&(n=this.getNextWsServer(),n?new f.Transport(this,n):(this.closeSessionsOnTransportError(),this.error&&this.error===o.NETWORK_ERROR||(this.status=o.STATUS_NOT_READY,this.error=o.NETWORK_ERROR),this.recoverTransport()))},n.prototype.onTransportConnected=function(e){this.transport=e,this.transportRecoverAttempts=0,e.server.status=f.Transport.C.STATUS_READY,this.logger.log("connection state set to "+f.Transport.C.STATUS_READY),this.status!==o.STATUS_USER_CLOSED&&(this.status=o.STATUS_READY,this.error=null,this.configuration.register&&this.registerContext.onTransportConnected(),this.emit("connected",{transport:e}))},n.prototype.onTransportConnecting=function(e,f){this.emit("connecting",{transport:e,attempts:f})},n.prototype.newTransaction=function(e){this.transactions[e.type][e.id]=e,this.emit("newTransaction",{transaction:e})},n.prototype.destroyTransaction=function(e){delete this.transactions[e.type][e.id],this.emit("transactionDestroyed",{transaction:e})},n.prototype.receiveRequest=function(e){function n(f){return f&&f.user===e.ruri.user}var d,i,t,l,u=e.method,p=e.method.toLowerCase(),s=this;if(!(n(this.configuration.uri)||n(this.contact.uri)||n(this.contact.pub_gruu)||n(this.contact.temp_gruu)))return this.logger.warn("Request-URI does not point to us"),void(e.method!==f.C.ACK&&e.reply_sl(404));if(e.ruri.scheme===f.C.SIPS)return void e.reply_sl(416);if(!f.Transactions.checkTransaction(this,e)){if(u===f.C.OPTIONS)new f.Transactions.NonInviteServerTransaction(e,this),e.reply(200,null,["Allow: "+f.Utils.getAllowedMethods(this),"Accept: "+o.ACCEPTED_BODY_TYPES]);else if(u===f.C.MESSAGE){if(!this.checkListener(p))return new f.Transactions.NonInviteServerTransaction(e,this),void e.reply(405,null,["Allow: "+f.Utils.getAllowedMethods(this)]);t=new f.ServerContext(this,e),t.body=e.body,t.content_type=e.getHeader("Content-Type")||"text/plain",e.reply(200,null),this.emit("message",t)}else u!==f.C.INVITE&&u!==f.C.ACK&&(l=new f.ServerContext(this,e));if(e.to_tag)d=this.findDialog(e),d?(u===f.C.INVITE&&new f.Transactions.InviteServerTransaction(e,this),d.receiveRequest(e)):u===f.C.NOTIFY?(i=this.findSession(e),i?i.receiveRequest(e):(this.logger.warn("received NOTIFY request for a non existent session"),e.reply(481,"Subscription does not exist"))):u!==f.C.ACK&&e.reply(481);else switch(u){case f.C.INVITE:var y=this.configuration.mediaHandlerFactory.isSupported;!y||y()?i=new f.InviteServerContext(this,e).on("invite",function(){s.emit("invite",this)}):(this.logger.warn("INVITE received but WebRTC is not supported"),e.reply(488));break;case f.C.BYE:e.reply(481);break;case f.C.CANCEL:i=this.findSession(e),i?i.receiveRequest(e):this.logger.warn("received CANCEL request for a non existent session");break;case f.C.ACK:break;default:e.reply(405)}}},n.prototype.findSession=function(e){return this.sessions[e.call_id+e.from_tag]||this.sessions[e.call_id+e.to_tag]||null},n.prototype.findDialog=function(e){return this.dialogs[e.call_id+e.from_tag+e.to_tag]||this.dialogs[e.call_id+e.to_tag+e.from_tag]||null},n.prototype.getNextWsServer=function(){var e,n,o,d=[];for(n=this.configuration.wsServers.length,e=0;n>e;e++)o=this.configuration.wsServers[e],o.status!==f.Transport.C.STATUS_ERROR&&(0===d.length?d.push(o):o.weight>d[0].weight?d=[o]:o.weight===d[0].weight&&d.push(o));return e=Math.floor(Math.random()*d.length),d[e]},n.prototype.closeSessionsOnTransportError=function(){var e;for(e in this.sessions)this.sessions[e].onTransportError();this.registerContext.onTransportClosed()},n.prototype.recoverTransport=function(e){var n,o,d,i,t,l;for(e=e||this,t=e.transportRecoverAttempts,o=e.configuration.wsServers.length,n=0;o>n;n++)e.configuration.wsServers[n].status=0;l=e.getNextWsServer(),d=Math.floor(Math.random()*Math.pow(2,t)+1),i=d*e.configuration.connectionRecoveryMinInterval,i>e.configuration.connectionRecoveryMaxInterval&&(this.logger.log("time for next connection attempt exceeds connectionRecoveryMaxInterval, resetting counter"),i=e.configuration.connectionRecoveryMinInterval,t=0),this.logger.log("next connection attempt in "+i+" seconds"),this.transportRecoveryTimer=f.Timers.setTimeout(function(){e.transportRecoverAttempts=t+1,new f.Transport(e,l)},1e3*i)},n.prototype.loadConfig=function(e){function o(f,n){var o=f.replace(/([a-z][A-Z])/g,function(e){return e[0]+"_"+e[1].toLowerCase()});if(f!==o){var d=e.hasOwnProperty(f);e.hasOwnProperty(o)&&(n.warn(o+" is deprecated, please use "+f),d&&n.warn(f+" overriding "+o)),e[f]=d?e[f]:e[o]}}var d,i,t,l,u,p={viaHost:f.Utils.createRandomToken(12)+".invalid",uri:new f.URI("sip","anonymous."+f.Utils.createRandomToken(6),"anonymous.invalid",null,null),wsServers:[{scheme:"WSS",sip_uri:"",status:0,weight:0,ws_uri:"wss://edge.sip.onsip.com"}],password:null,registerExpires:600,register:!0,registrarServer:null,wsServerMaxReconnection:3,wsServerReconnectionTimeout:4,connectionRecoveryMinInterval:2,connectionRecoveryMaxInterval:30,usePreloadedRoute:!1,userAgentString:f.C.USER_AGENT,noAnswerTimeout:60,stunServers:["stun:stun.l.google.com:19302"],turnServers:[],traceSip:!1,hackViaTcp:!1,hackIpInContact:!1,autostart:!0,rel100:f.C.supported.UNSUPPORTED,mediaHandlerFactory:f.WebRTC.MediaHandler.defaultFactory};for(d in n.configuration_check.mandatory){if(o(d,this.logger),!e.hasOwnProperty(d))throw new f.Exceptions.ConfigurationError(d);if(i=e[d],t=n.configuration_check.mandatory[d](i),void 0===t)throw new f.Exceptions.ConfigurationError(d,i);p[d]=t}f.Utils.optionsOverride(e,"rel100","reliable",!0,this.logger,f.C.supported.UNSUPPORTED);for(d in n.configuration_check.optional)if(o(d,this.logger),e.hasOwnProperty(d)){if(i=e[d],null===i||""===i||void 0===i||i instanceof Array&&0===i.length)continue;if("number"==typeof i&&isNaN(i))continue;if(t=n.configuration_check.optional[d](i),void 0===t)throw new f.Exceptions.ConfigurationError(d,i);p[d]=t}if(p.connectionRecoveryMaxInterval"}},f.Utils.optionsOverride(p,"media","mediaConstraints",!0,this.logger);for(d in p)n.configuration_skeleton[d].value=p[d];Object.defineProperties(this.configuration,n.configuration_skeleton);for(d in p)n.configuration_skeleton[d].value="";this.logger.log("configuration parameters after validation:");for(d in p)switch(d){case"uri":case"registrarServer":case"mediaHandlerFactory":this.logger.log("\xb7 "+d+": "+p[d]);break;case"password":this.logger.log("\xb7 "+d+": NOT SHOWN");break;default:this.logger.log("\xb7 "+d+": "+JSON.stringify(p[d]))}},n.configuration_skeleton=function(){var e,f,n={},o=["sipjsId","hostportParams","uri","wsServers","authorizationUser","connectionRecoveryMaxInterval","connectionRecoveryMinInterval","displayName","hackViaTcp","hackIpInContact","instanceId","noAnswerTimeout","password","registerExpires","registrarServer","reliable","rel100","userAgentString","autostart","stunServers","traceSip","turnServers","usePreloadedRoute","wsServerMaxReconnection","wsServerReconnectionTimeout","mediaHandlerFactory","media","mediaConstraints","via_core_value","viaHost"];for(e in o)f=o[e],n[f]={value:"",writable:!1,configurable:!1};return n.register={value:"",writable:!0,configurable:!1},n}(),n.configuration_check={mandatory:{},optional:{uri:function(e){var n;return/^sip:/i.test(e)||(e=f.C.SIP+":"+e),n=f.URI.parse(e),n&&n.user?n:void 0},wsServers:function(e){var n,o,d;if("string"==typeof e)e=[{ws_uri:e}];else{if(!(e instanceof Array))return;for(o=e.length,n=0;o>n;n++)"string"==typeof e[n]&&(e[n]={ws_uri:e[n]})}if(0===e.length)return!1;for(o=e.length,n=0;o>n;n++){if(!e[n].ws_uri)return;if(e[n].weight&&!Number(e[n].weight))return;if(d=f.Grammar.parse(e[n].ws_uri,"absoluteURI"),-1===d)return;if("wss"!==d.scheme&&"ws"!==d.scheme)return;e[n].sip_uri="",e[n].weight||(e[n].weight=0),e[n].status=0,e[n].scheme=d.scheme.toUpperCase()}return e},authorizationUser:function(e){return-1===f.Grammar.parse('"'+e+'"',"quoted_string")?void 0:e},connectionRecoveryMaxInterval:function(e){var n;return f.Utils.isDecimal(e)&&(n=Number(e),n>0)?n:void 0},connectionRecoveryMinInterval:function(e){var n;return f.Utils.isDecimal(e)&&(n=Number(e),n>0)?n:void 0},displayName:function(e){return-1===f.Grammar.parse('"'+e+'"',"displayName")?void 0:e},hackViaTcp:function(e){return"boolean"==typeof e?e:void 0},hackIpInContact:function(e){return"boolean"==typeof e?e:void 0},instanceId:function(e){return"string"==typeof e?(/^uuid:/i.test(e)&&(e=e.substr(5)),-1===f.Grammar.parse(e,"uuid")?void 0:e):void 0},noAnswerTimeout:function(e){var n;return f.Utils.isDecimal(e)&&(n=Number(e),n>0)?n:void 0},password:function(e){return String(e)},rel100:function(e){return e===f.C.supported.REQUIRED?f.C.supported.REQUIRED:e===f.C.supported.SUPPORTED?f.C.supported.SUPPORTED:f.C.supported.UNSUPPORTED},register:function(e){return"boolean"==typeof e?e:void 0},registerExpires:function(e){var n;return f.Utils.isDecimal(e)&&(n=Number(e),n>0)?n:void 0},registrarServer:function(e){var n;if("string"==typeof e)return/^sip:/i.test(e)||(e=f.C.SIP+":"+e),n=f.URI.parse(e),n?n.user?void 0:n:void 0},stunServers:function(e){var n,o,d;if("string"==typeof e)e=[e];else if(!(e instanceof Array))return;for(o=e.length,n=0;o>n;n++){if(d=e[n],/^stuns?:/.test(d)||(d="stun:"+d),-1===f.Grammar.parse(d,"stun_URI"))return;e[n]=d}return e},traceSip:function(e){return"boolean"==typeof e?e:void 0},turnServers:function(e){var n,o,d,i;for(e instanceof Array||(e=[e]),o=e.length,n=0;o>n;n++){if(d=e[n],d.server&&(d.urls=[d.server]),!d.urls||!d.username||!d.password)return;for(d.urls instanceof Array||(d.urls=[d.urls]),o=d.urls.length,n=0;o>n;n++)if(i=d.urls[n],/^turns?:/.test(i)||(i="turn:"+i),-1===f.Grammar.parse(i,"turn_URI"))return}return e},userAgentString:function(e){return"string"==typeof e?e:void 0},usePreloadedRoute:function(e){return"boolean"==typeof e?e:void 0},wsServerMaxReconnection:function(e){var n;return f.Utils.isDecimal(e)&&(n=Number(e),n>0)?n:void 0},wsServerReconnectionTimeout:function(e){var n;return f.Utils.isDecimal(e)&&(n=Number(e),n>0)?n:void 0},autostart:function(e){return"boolean"==typeof e?e:void 0},mediaHandlerFactory:function(e){return e instanceof Function?e:void 0}}},n.C=o,f.UA=n}}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],29:[function(e,f){f.exports=function(e){var f;f=function(f,n,o,d,i,t){var l,u;if(!o)throw new TypeError('missing or invalid "host" parameter');f=f||e.C.SIP,this.parameters={},this.headers={};for(l in i)this.setParam(l,i[l]);for(u in t)this.setHeader(u,t[u]);Object.defineProperties(this,{scheme:{get:function(){return f},set:function(e){f=e.toLowerCase()}},user:{get:function(){return n},set:function(e){n=e}},host:{get:function(){return o},set:function(e){o=e.toLowerCase()}},port:{get:function(){return d},set:function(e){d=0===e?e:parseInt(e,10)||null}}})},f.prototype={setParam:function(e,f){e&&(this.parameters[e.toLowerCase()]="undefined"==typeof f||null===f?null:f.toString().toLowerCase())},getParam:function(e){return e?this.parameters[e.toLowerCase()]:void 0},hasParam:function(e){return e?this.parameters.hasOwnProperty(e.toLowerCase())&&!0||!1:void 0},deleteParam:function(e){var f;return e=e.toLowerCase(),this.parameters.hasOwnProperty(e)?(f=this.parameters[e],delete this.parameters[e],f):void 0},clearParams:function(){this.parameters={}},setHeader:function(f,n){this.headers[e.Utils.headerize(f)]=n instanceof Array?n:[n]},getHeader:function(f){return f?this.headers[e.Utils.headerize(f)]:void 0},hasHeader:function(f){return f?this.headers.hasOwnProperty(e.Utils.headerize(f))&&!0||!1:void 0},deleteHeader:function(f){var n;return f=e.Utils.headerize(f),this.headers.hasOwnProperty(f)?(n=this.headers[f],delete this.headers[f],n):void 0},clearHeaders:function(){this.headers={}},clone:function(){return new f(this.scheme,this.user,this.host,this.port,JSON.parse(JSON.stringify(this.parameters)),JSON.parse(JSON.stringify(this.headers)))},toString:function(){var f,n,o,d,i=[];d=this.scheme+":",this.scheme.match("^sips?$")||(d+="//"),this.user&&(d+=e.Utils.escapeUser(this.user)+"@"),d+=this.host,(this.port||0===this.port)&&(d+=":"+this.port);for(n in this.parameters)d+=";"+n,null!==this.parameters[n]&&(d+="="+this.parameters[n]);for(f in this.headers)for(o in this.headers[f])i.push(f+"="+this.headers[f][o]);return i.length>0&&(d+="?"+i.join("&")),d}},f.parse=function(f){return f=e.Grammar.parse(f,"SIP_URI"),-1!==f?f:void 0},e.URI=f}},{}],30:[function(e,f){f.exports=function(e){var f;f={augment:function(e,f,n,o){var d,i;i=f.prototype;for(d in i)(o||void 0===e[d])&&(e[d]=i[d]);f.apply(e,n)},optionsOverride:function(e,f,n,o,d,i){o&&e[n]&&d.warn(n+" is deprecated, please use "+f+" instead"),e[f]&&e[n]&&d.warn(f+" overriding "+n),e[f]=e[f]||e[n]||i},str_utf8_length:function(e){return encodeURIComponent(e).replace(/%[A-F\d]{2}/g,"U").length},getPrefixedProperty:function(e,f){if(null!=e){var n=f.charAt(0).toUpperCase()+f.slice(1),o=[f,"webkit"+n,"moz"+n];for(var d in o){var i=e[o[d]];if(i)return i}}},generateFakeSDP:function(e){if(e){var f=e.indexOf("o="),n=e.indexOf("\r\n",f);return"v=0\r\n"+e.slice(f,n)+"\r\ns=-\r\nt=0 0\r\nc=IN IP4 0.0.0.0"}},isFunction:function(e){return void 0!==e?"[object Function]"===Object.prototype.toString.call(e):!1},isDecimal:function(e){return!isNaN(e)&&parseFloat(e)===parseInt(e,10)},createRandomToken:function(e,f){var n,o,d="";for(f=f||32,n=0;e>n;n++)o=Math.random()*f|0,d+=o.toString(f);return d},newTag:function(){return e.Utils.createRandomToken(e.UA.C.TAG_LENGTH)},newUUID:function(){var e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var f=16*Math.random()|0,n="x"===e?f:3&f|8;return n.toString(16)});return e},hostType:function(f){return f?(f=e.Grammar.parse(f,"host"),-1!==f?f.host_type:void 0):void 0},normalizeTarget:function(f,n){var o,d,i,t;if(f){if(f instanceof e.URI)return f;if("string"==typeof f){switch(d=f.split("@"),d.length){case 1:if(!n)return;i=f,t=n;break;case 2:i=d[0],t=d[1];break;default:i=d.slice(0,d.length-1).join("@"),t=d[d.length-1]}return i=i.replace(/^(sips?|tel):/i,""),/^[\-\.\(\)]*\+?[0-9\-\.\(\)]+$/.test(i)&&(i=i.replace(/[\-\.\(\)]/g,"")),f=e.C.SIP+":"+e.Utils.escapeUser(i)+"@"+t,(o=e.URI.parse(f))?o:void 0}}else;},escapeUser:function(e){return encodeURIComponent(decodeURIComponent(e)).replace(/%3A/gi,":").replace(/%2B/gi,"+").replace(/%3F/gi,"?").replace(/%2F/gi,"/")},headerize:function(e){var f,n={"Call-Id":"Call-ID",Cseq:"CSeq",Rack:"RAck",Rseq:"RSeq","Www-Authenticate":"WWW-Authenticate"},o=e.toLowerCase().replace(/_/g,"-").split("-"),d="",i=o.length;for(f=0;i>f;f++)0!==f&&(d+="-"),d+=o[f].charAt(0).toUpperCase()+o[f].substring(1);return n[d]&&(d=n[d]),d},sipErrorCause:function(f){var n;for(n in e.C.SIP_ERROR_CAUSES)if(-1!==e.C.SIP_ERROR_CAUSES[n].indexOf(f))return e.C.causes[n];return e.C.causes.SIP_FAILURE_CODE},getRandomTestNetIP:function(){function e(e,f){return Math.floor(Math.random()*(f-e+1)+e)}return"192.0.2."+e(1,254)},getAllowedMethods:function(f){var n,o=e.UA.C.ALLOWED_METHODS.toString();for(n in e.UA.C.EVENT_METHODS)f.checkListener(n)&&(o+=","+e.UA.C.EVENT_METHODS[n]);return o},calculateMD5:function(e){function f(e,f){return e<>>32-f}function n(e,f){var n,o,d,i,t;return d=2147483648&e,i=2147483648&f,n=1073741824&e,o=1073741824&f,t=(1073741823&e)+(1073741823&f),n&o?2147483648^t^d^i:n|o?1073741824&t?3221225472^t^d^i:1073741824^t^d^i:t^d^i}function o(e,f,n){return e&f|~e&n}function d(e,f,n){return e&n|f&~n}function i(e,f,n){return e^f^n}function t(e,f,n){return f^(e|~n)}function l(e,d,i,t,l,u,p){return e=n(e,n(n(o(d,i,t),l),p)),n(f(e,u),d)}function u(e,o,i,t,l,u,p){return e=n(e,n(n(d(o,i,t),l),p)),n(f(e,u),o)}function p(e,o,d,t,l,u,p){return e=n(e,n(n(i(o,d,t),l),p)),n(f(e,u),o)}function s(e,o,d,i,l,u,p){return e=n(e,n(n(t(o,d,i),l),p)),n(f(e,u),o)}function y(e){for(var f,n=e.length,o=n+8,d=(o-o%64)/64,i=16*(d+1),t=Array(i-1),l=0,u=0;n>u;)f=(u-u%4)/4,l=u%4*8,t[f]=t[f]|e.charCodeAt(u)<>>29,t}function c(e){var f,n,o="",d="";for(n=0;3>=n;n++)f=e>>>8*n&255,d="0"+f.toString(16),o+=d.substr(d.length-2,2);return o}function a(e){e=e.replace(/\r\n/g,"\n");for(var f="",n=0;no?f+=String.fromCharCode(o):o>127&&2048>o?(f+=String.fromCharCode(o>>6|192),f+=String.fromCharCode(63&o|128)):(f+=String.fromCharCode(o>>12|224),f+=String.fromCharCode(o>>6&63|128),f+=String.fromCharCode(63&o|128))}return f}var r,w,b,m,g,x,j,v,I,P=[],S=7,h=12,k=17,q=22,z=5,A=9,B=14,C=20,D=4,E=11,F=16,G=23,H=6,J=10,K=15,L=21;for(e=a(e),P=y(e),x=1732584193,j=4023233417,v=2562383102,I=271733878,r=0;ri;i++)l=y[i],p.push({url:l.urls,username:l.username,credential:l.password});this.peerConnection=new e.WebRTC.RTCPeerConnection({iceServers:p},this.RTCConstraints),this.peerConnection.onaddstream=function(e){u.logger.log("stream added: "+e.stream.id),u.render(),u.emit("addStream",e)},this.peerConnection.onremovestream=function(e){u.logger.log("stream removed: "+e.stream.id)},this.peerConnection.onicecandidate=function(e){e.candidate?u.logger.log("ICE candidate received: "+(null===e.candidate.candidate?null:e.candidate.candidate.trim())):void 0!==u.onIceCompleted?u.onIceCompleted(this):u.callOnIceCompleted=!0},this.peerConnection.onicegatheringstatechange=function(){u.logger.log("RTCIceGatheringState changed: "+this.iceGatheringState),"gathering"===this.iceGatheringState&&u.emit("iceGathering",this),"complete"===this.iceGatheringState&&(void 0!==u.onIceCompleted?u.onIceCompleted(this):u.callOnIceCompleted=!0)},this.peerConnection.oniceconnectionstatechange=function(){u.logger.log('ICE connection state changed to "'+this.iceConnectionState+'"'),"failed"===this.iceConnectionState&&u.emit("iceFailed",this)},this.peerConnection.onstatechange=function(){u.logger.log('PeerConnection state changed to "'+this.readyState+'"')},this.initEvents(d),o(this,"userMediaRequest"),o(this,"userMedia"),o(this,"userMediaFailed")};return f.defaultFactory=function(e,n){return new f(e,n)},f.defaultFactory.isSupported=function(){return e.WebRTC.isSupported()},f.prototype=Object.create(e.MediaHandler.prototype,{isReady:{writable:!0,value:function(){return this.ready}},close:{writable:!0,value:function(){this.logger.log("closing PeerConnection"),this.peerConnection&&"closed"!==this.peerConnection.signalingState&&(this.peerConnection.close(),this.localMedia&&this.mediaStreamManager.release(this.localMedia))}},getDescription:{writable:!0,value:function(e,f,n){function o(){i.hasOffer("remote")?i.peerConnection.ondatachannel=function(e){i.dataChannel=e.channel,i.emit("dataChannel",i.dataChannel)}:n.dataChannel&&i.peerConnection.createDataChannel&&(i.dataChannel=i.peerConnection.createDataChannel("sipjs",n.dataChannel),i.emit("dataChannel",i.dataChannel)),i.render(),i.createOfferOrAnswer(e,f,i.RTCConstraints)}function d(e){i.logger.log("acquired local media stream"),i.localMedia=e,i.session.connecting(),i.addStream(e,o,f)}var i=this;return n=n||{},n.dataChannel===!0&&(n.dataChannel={}),this.mediaHint=n,i.localMedia?(i.logger.log("already have local media"),void o()):(i.logger.log("acquiring local media"),void i.mediaStreamManager.acquire(d,function(e){i.logger.error("unable to acquire stream"),i.logger.error(e),i.session.connecting(),f(e)},n))}},setDescription:{writable:!0,value:function(f,n,o){var d={type:this.hasOffer("local")?"answer":"offer",sdp:f};this.emit("setDescription",d);var i=new e.WebRTC.RTCSessionDescription(d);this.peerConnection.setRemoteDescription(i,n,o)}},isMuted:{writable:!0,value:function(){return{audio:this.audioMuted,video:this.videoMuted}}},mute:{writable:!0,value:function(e){if(0!==this.getLocalStreams().length){e=e||{audio:this.getLocalStreams()[0].getAudioTracks().length>0,video:this.getLocalStreams()[0].getVideoTracks().length>0};var f=!1,n=!1;return e.audio&&!this.audioMuted&&(f=!0,this.audioMuted=!0,this.toggleMuteAudio(!0)),e.video&&!this.videoMuted&&(n=!0,this.videoMuted=!0,this.toggleMuteVideo(!0)),f||n?{audio:f,video:n}:void 0}}},unmute:{writable:!0,value:function(e){if(0!==this.getLocalStreams().length){e=e||{audio:this.getLocalStreams()[0].getAudioTracks().length>0,video:this.getLocalStreams()[0].getVideoTracks().length>0};var f=!1,n=!1;return e.audio&&this.audioMuted&&(f=!0,this.audioMuted=!1,this.toggleMuteAudio(!1)),e.video&&this.videoMuted&&(n=!0,this.videoMuted=!1,this.toggleMuteVideo(!1)),f||n?{audio:f,video:n}:void 0}}},hold:{writable:!0,value:function(){this.toggleMuteAudio(!0),this.toggleMuteVideo(!0)}},unhold:{writable:!0,value:function(){this.audioMuted||this.toggleMuteAudio(!1),this.videoMuted||this.toggleMuteVideo(!1)}},getLocalStreams:{writable:!0,value:function(){var e=this.peerConnection;return e&&"closed"===e.signalingState?(this.logger.warn("peerConnection is closed, getLocalStreams returning []"),[]):e.getLocalStreams&&e.getLocalStreams()||e.localStreams||[]}},getRemoteStreams:{writable:!0,value:function(){var e=this.peerConnection;return e&&"closed"===e.signalingState?(this.logger.warn("peerConnection is closed, getRemoteStreams returning []"),[]):e.getRemoteStreams&&e.getRemoteStreams()||e.remoteStreams||[]}},render:{writable:!0,value:function(f){if(f=f||this.mediaHint&&this.mediaHint.render,!f)return!1;var n={local:"getLocalStreams",remote:"getRemoteStreams"};Object.keys(n).forEach(function(o){var d=n[o],i=this[d]();i.length&&e.WebRTC.MediaStreamManager.render(i[0],f[o])}.bind(this))}},hasOffer:{writable:!0,value:function(e){var f="have-"+e+"-offer";return this.peerConnection.signalingState===f}},createOfferOrAnswer:{writable:!0,value:function(f,n,o){function d(){var n=u.peerConnection.localDescription.sdp;n=e.Hacks.Chrome.needsExplicitlyInactiveSDP(n),n=e.Hacks.AllBrowsers.unmaskDtls(n);var o={type:"createOffer"===l?"offer":"answer",sdp:n};u.emit("getDescription",o),u.ready=!0,f(o.sdp)}function i(){"complete"!==u.peerConnection.iceGatheringState||"connected"!==u.peerConnection.iceConnectionState&&"completed"!==u.peerConnection.iceConnectionState?(u.onIceCompleted=function(e){u.logger.log("ICE Gathering Completed"),u.onIceCompleted=void 0,u.emit("iceComplete",e),d()},u.callOnIceCompleted&&u.onIceCompleted()):d()}function t(e,f){u.logger.error("peerConnection."+e+" failed"),u.logger.error(f),u.ready=!0,n(f)}var l,u=this;u.ready=!1,l=u.hasOffer("remote")?"createAnswer":"createOffer",u.peerConnection[l](function(e){u.peerConnection.setLocalDescription(e,i,t.bind(null,"setLocalDescription"))},t.bind(null,l),o)}},addStream:{writable:!0,value:function(e,f,n){try{this.peerConnection.addStream(e)}catch(o){return this.logger.error("error adding stream"),this.logger.error(o),void n(o)}f()}},toggleMuteHelper:{writable:!0,value:function(e,f){this.getLocalStreams().forEach(function(n){n[e]().forEach(function(e){e.enabled=!f})})}},toggleMuteAudio:{writable:!0,value:function(e){this.toggleMuteHelper("getAudioTracks",e)}},toggleMuteVideo:{writable:!0,value:function(e){this.toggleMuteHelper("getVideoTracks",e)}}}),f}},{}],33:[function(e,f){f.exports=function(e){var f=function(f,n){if(!e.WebRTC.isSupported())throw new e.Exceptions.NotSupportedError("Media not supported");var o=["userMediaRequest","userMedia","userMediaFailed"];this.mediaHint=n||{constraints:{audio:!0,video:!0}},this.logger=f,this.initEvents(o),this.acquisitions={}};return f.streamId=function(e){return e.getAudioTracks().concat(e.getVideoTracks()).map(function(e){return e.id}).join("")},f.render=function(f,n){function o(e,f){(window.attachMediaStream||d)(e,f),i(e)}function d(e,f){if("undefined"!=typeof e.src)URL.revokeObjectURL(e.src),e.src=URL.createObjectURL(f);else{if("undefined"==typeof(e.srcObject||e.mozSrcObject))return!1;e.srcObject=e.mozSrcObject=f}return!0}function i(f){var n=100;f.ensurePlayingIntervalId=e.Timers.setInterval(function(){f.paused?f.play():e.Timers.clearInterval(f.ensurePlayingIntervalId)},n)}return n?(n.video&&(n.audio&&(n.video.volume=0),o(n.video,f)),void(n.audio&&o(n.audio,f))):!1},f.prototype=Object.create(e.EventEmitter.prototype,{acquire:{value:function(n,o,d){d=Object.keys(d||{}).length?d:this.mediaHint;var i=function(e,n,o){var d=f.streamId(n);this.acquisitions[d]=!!o,e(n)}.bind(this,n);if(d.stream)i(d.stream,!0);else{var t=d.constraints||this.mediaHint&&this.mediaHint.constraints||{audio:!0,video:!0};e.Timers.setTimeout(function(){this.emit("userMediaRequest",t);var f=function(e,f){var n=Array.prototype.slice.call(arguments,2),o=[e].concat(n);this.emit.apply(this,o),f.apply(null,n)}.bind(this);e.WebRTC.getUserMedia(t,f.bind(this,"userMedia",i),f.bind(this,"userMediaFailed",o))}.bind(this),0)}}},release:{value:function(e){var n=f.streamId(e);this.acquisitions[n]===!1&&e.stop(),delete this.acquisitions[n]}}}),f}},{}]},{},[18])(18)}); \ No newline at end of file +!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;"undefined"!=typeof window?b=window:"undefined"!=typeof global?b=global:"undefined"!=typeof self&&(b=self),b.SIP=a()}}(function(){return function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g",contributors:[{url:"http://sipjs.com/authors/"}],repository:{type:"git",url:"https://github.com/onsip/SIP.js.git"},keywords:["sip","websocket","webrtc","library","javascript"],devDependencies:{grunt:"~0.4.0","grunt-cli":"~0.1.6","grunt-contrib-jasmine":"~0.6.0","grunt-contrib-jshint":">0.5.0","grunt-contrib-uglify":"~0.2.0","grunt-peg":"~1.3.1","grunt-trimtrailingspaces":"^0.4.0","node-minify":"~0.7.2",pegjs:"0.8.0","sdp-transform":"~0.4.0","grunt-contrib-copy":"^0.5.0",browserify:"^4.1.8","grunt-browserify":"^2.1.0"},engines:{node:">=0.8"},license:"MIT",scripts:{test:"grunt travis --verbose"}}},{}],2:[function(a,b){b.exports=function(a){var b;b=function(b,c,d,e){var f,g,h=d,i=["progress","accepted","rejected","failed","cancel"];if(void 0===d)throw new TypeError("Not enough arguments");if(d=b.normalizeTarget(d),!d)throw new TypeError("Invalid target: "+h);this.ua=b,this.logger=b.getLogger("sip.clientcontext"),this.method=c,f=e&&e.params,g=(e&&e.extraHeaders||[]).slice(),e&&e.body&&(this.body=e.body),e&&e.contentType&&(this.contentType=e.contentType,g.push("Content-Type: "+this.contentType)),this.request=new a.OutgoingRequest(this.method,d,this.ua,f,g),this.localIdentity=this.request.from,this.remoteIdentity=this.request.to,this.body&&(this.request.body=this.body),this.data={},this.initEvents(i)},b.prototype=new a.EventEmitter,b.prototype.send=function(){return new a.RequestSender(this,this.ua).send(),this},b.prototype.cancel=function(b){b=b||{};var c,d=b.status_code,e=b.reason_phrase;if(d&&200>d||d>699)throw new TypeError("Invalid status_code: "+d);d&&(e=e||a.C.REASON_PHRASE[d]||"",c="SIP ;cause="+d+' ;text="'+e+'"'),this.request.cancel(c),this.emit("cancel")},b.prototype.receiveResponse=function(b){var c=a.C.REASON_PHRASE[b.status_code]||"";switch(!0){case/^1[0-9]{2}$/.test(b.status_code):this.emit("progress",b,c);break;case/^2[0-9]{2}$/.test(b.status_code):this.ua.applicants[this]&&delete this.ua.applicants[this],this.emit("accepted",b,c);break;default:this.ua.applicants[this]&&delete this.ua.applicants[this],this.emit("rejected",b,c),this.emit("failed",b,c)}},b.prototype.onRequestTimeout=function(){this.emit("failed",null,a.C.causes.REQUEST_TIMEOUT)},b.prototype.onTransportError=function(){this.emit("failed",null,a.C.causes.CONNECTION_ERROR)},a.ClientContext=b}},{}],3:[function(a,b){b.exports=function(a,b){return{USER_AGENT:a+"/"+b,SIP:"sip",SIPS:"sips",causes:{CONNECTION_ERROR:"Connection Error",REQUEST_TIMEOUT:"Request Timeout",SIP_FAILURE_CODE:"SIP Failure Code",INTERNAL_ERROR:"Internal Error",BUSY:"Busy",REJECTED:"Rejected",REDIRECTED:"Redirected",UNAVAILABLE:"Unavailable",NOT_FOUND:"Not Found",ADDRESS_INCOMPLETE:"Address Incomplete",INCOMPATIBLE_SDP:"Incompatible SDP",AUTHENTICATION_ERROR:"Authentication Error",DIALOG_ERROR:"Dialog Error",WEBRTC_NOT_SUPPORTED:"WebRTC Not Supported",WEBRTC_ERROR:"WebRTC Error",CANCELED:"Canceled",NO_ANSWER:"No Answer",EXPIRES:"Expires",NO_ACK:"No ACK",NO_PRACK:"No PRACK",USER_DENIED_MEDIA_ACCESS:"User Denied Media Access",BAD_MEDIA_DESCRIPTION:"Bad Media Description",RTP_TIMEOUT:"RTP Timeout"},supported:{UNSUPPORTED:"none",SUPPORTED:"supported",REQUIRED:"required"},SIP_ERROR_CAUSES:{REDIRECTED:[300,301,302,305,380],BUSY:[486,600],REJECTED:[403,603],NOT_FOUND:[404,604],UNAVAILABLE:[480,410,408,430],ADDRESS_INCOMPLETE:[484],INCOMPATIBLE_SDP:[488,606],AUTHENTICATION_ERROR:[401,407]},ACK:"ACK",BYE:"BYE",CANCEL:"CANCEL",INFO:"INFO",INVITE:"INVITE",MESSAGE:"MESSAGE",NOTIFY:"NOTIFY",OPTIONS:"OPTIONS",REGISTER:"REGISTER",UPDATE:"UPDATE",SUBSCRIBE:"SUBSCRIBE",REFER:"REFER",PRACK:"PRACK",REASON_PHRASE:{100:"Trying",180:"Ringing",181:"Call Is Being Forwarded",182:"Queued",183:"Session Progress",199:"Early Dialog Terminated",200:"OK",202:"Accepted",204:"No Notification",300:"Multiple Choices",301:"Moved Permanently",302:"Moved Temporarily",305:"Use Proxy",380:"Alternative Service",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",410:"Gone",412:"Conditional Request Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Unsupported URI Scheme",417:"Unknown Resource-Priority",420:"Bad Extension",421:"Extension Required",422:"Session Interval Too Small",423:"Interval Too Brief",428:"Use Identity Header",429:"Provide Referrer Identity",430:"Flow Failed",433:"Anonymity Disallowed",436:"Bad Identity-Info",437:"Unsupported Certificate",438:"Invalid Identity Header",439:"First Hop Lacks Outbound Support",440:"Max-Breadth Exceeded",469:"Bad Info Package",470:"Consent Needed",478:"Unresolvable Destination",480:"Temporarily Unavailable",481:"Call/Transaction Does Not Exist",482:"Loop Detected",483:"Too Many Hops",484:"Address Incomplete",485:"Ambiguous",486:"Busy Here",487:"Request Terminated",488:"Not Acceptable Here",489:"Bad Event",491:"Request Pending",493:"Undecipherable",494:"Security Agreement Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Server Time-out",505:"Version Not Supported",513:"Message Too Large",580:"Precondition Failure",600:"Busy Everywhere",603:"Decline",604:"Does Not Exist Anywhere",606:"Not Acceptable"}}}},{}],4:[function(a,b){b.exports=function(a){var b;return b=function(a,b,c){this.dialog=a,this.applicant=b,this.request=c,this.reattempt=!1,this.reattemptTimer=null},b.prototype={send:function(){var b=this,c=new a.RequestSender(this,this.dialog.owner.ua);c.send(),this.request.method===a.C.INVITE&&c.clientTransaction.state!==a.Transactions.C.STATUS_TERMINATED&&(this.dialog.uac_pending_reply=!0,c.clientTransaction.on("stateChanged",function d(){(this.state===a.Transactions.C.STATUS_ACCEPTED||this.state===a.Transactions.C.STATUS_COMPLETED||this.state===a.Transactions.C.STATUS_TERMINATED)&&(this.off("stateChanged",d),b.dialog.uac_pending_reply=!1,b.dialog.uas_pending_reply===!1&&b.dialog.owner.onReadyToReinvite())}))},onRequestTimeout:function(){this.applicant.onRequestTimeout()},onTransportError:function(){this.applicant.onTransportError()},receiveResponse:function(b){var c=this;408===b.status_code||481===b.status_code?this.applicant.onDialogError(b):b.method===a.C.INVITE&&491===b.status_code?this.reattempt?this.applicant.receiveResponse(b):(this.request.cseq.value=this.dialog.local_seqnum+=1,this.reattemptTimer=a.Timers.setTimeout(function(){c.applicant.owner.status!==a.Session.C.STATUS_TERMINATED&&(c.reattempt=!0,c.request_sender.send())},this.getReattemptTimeout())):this.applicant.receiveResponse(b)}},b}},{}],5:[function(a,b){b.exports=function(a,b){var c,d={STATUS_EARLY:1,STATUS_CONFIRMED:2};c=function(b,c,e,f){var g;return this.uac_pending_reply=!1,this.uas_pending_reply=!1,c.hasHeader("contact")?(f=c instanceof a.IncomingResponse?c.status_code<200?d.STATUS_EARLY:d.STATUS_CONFIRMED:f||d.STATUS_CONFIRMED,g=c.parseHeader("contact"),"UAS"===e?(this.id={call_id:c.call_id,local_tag:c.to_tag,remote_tag:c.from_tag,toString:function(){return this.call_id+this.local_tag+this.remote_tag}},this.state=f,this.remote_seqnum=c.cseq,this.local_uri=c.parseHeader("to").uri,this.remote_uri=c.parseHeader("from").uri,this.remote_target=g.uri,this.route_set=c.getHeaders("record-route"),this.invite_seqnum=c.cseq,this.local_seqnum=c.cseq):"UAC"===e&&(this.id={call_id:c.call_id,local_tag:c.from_tag,remote_tag:c.to_tag,toString:function(){return this.call_id+this.local_tag+this.remote_tag}},this.state=f,this.invite_seqnum=c.cseq,this.local_seqnum=c.cseq,this.local_uri=c.parseHeader("from").uri,this.pracked=[],this.remote_uri=c.parseHeader("to").uri,this.remote_target=g.uri,this.route_set=c.getHeaders("record-route").reverse(),this.state!==d.STATUS_EARLY||b.hasOffer||(this.mediaHandler=b.mediaHandlerFactory(b))),this.logger=b.ua.getLogger("sip.dialog",this.id.toString()),this.owner=b,b.ua.dialogs[this.id.toString()]=this,void this.logger.log("new "+e+" dialog created with status "+(this.state===d.STATUS_EARLY?"EARLY":"CONFIRMED"))):{error:"unable to create a Dialog without Contact header field"}},c.prototype={update:function(a,b){this.state=d.STATUS_CONFIRMED,this.logger.log("dialog "+this.id.toString()+" changed to CONFIRMED state"),"UAC"===b&&(this.route_set=a.getHeaders("record-route").reverse())},terminate:function(){this.logger.log("dialog "+this.id.toString()+" deleted"),this.mediaHandler&&this.state!==d.STATUS_CONFIRMED&&this.mediaHandler.peerConnection.close(),delete this.owner.ua.dialogs[this.id.toString()]},createRequest:function(b,c,d){var e,f;return c=(c||[]).slice(),this.local_seqnum||(this.local_seqnum=Math.floor(1e4*Math.random())),e=b===a.C.CANCEL||b===a.C.ACK?this.invite_seqnum:this.local_seqnum+=1,f=new a.OutgoingRequest(b,this.remote_target,this.owner.ua,{cseq:e,call_id:this.id.call_id,from_uri:this.local_uri,from_tag:this.id.local_tag,to_uri:this.remote_uri,to_tag:this.id.remote_tag,route_set:this.route_set},c,d),f.dialog=this,f},checkInDialogRequest:function(b){var c=this;if(this.remote_seqnum){if(b.cseqthis.remote_seqnum&&(this.remote_seqnum=b.cseq)}else this.remote_seqnum=b.cseq;switch(b.method){case a.C.INVITE:if(this.uac_pending_reply===!0)b.reply(491);else{if(this.uas_pending_reply===!0){var d=(10*Math.random()|0)+1;return b.reply(500,null,["Retry-After:"+d]),!1}this.uas_pending_reply=!0,b.server_transaction.on("stateChanged",function e(){(this.state===a.Transactions.C.STATUS_ACCEPTED||this.state===a.Transactions.C.STATUS_COMPLETED||this.state===a.Transactions.C.STATUS_TERMINATED)&&(this.off("stateChanged",e),c.uas_pending_reply=!1,c.uac_pending_reply===!1&&c.owner.onReadyToReinvite())})}b.hasHeader("contact")&&b.server_transaction.on("stateChanged",function(){this.state===a.Transactions.C.STATUS_ACCEPTED&&(c.remote_target=b.parseHeader("contact").uri)});break;case a.C.NOTIFY:b.hasHeader("contact")&&b.server_transaction.on("stateChanged",function(){this.state===a.Transactions.C.STATUS_COMPLETED&&(c.remote_target=b.parseHeader("contact").uri)})}return!0},sendRequest:function(a,c,d){d=d||{};var e=(d.extraHeaders||[]).slice(),f=d.body||null,g=this.createRequest(c,e,f),h=new b(this,a,g);return h.send(),g},receiveRequest:function(a){this.checkInDialogRequest(a)&&this.owner.receiveRequest(a)}},c.C=d,a.Dialog=c}},{}],6:[function(a,b){b.exports=function(a){var b;return b=function(a){this.logger=a.getLogger("sipjs.digestauthentication"),this.username=a.configuration.authorizationUser,this.password=a.configuration.password,this.cnonce=null,this.nc=0,this.ncHex="00000000",this.response=null},b.prototype.authenticate=function(b,c){if(this.algorithm=c.algorithm,this.realm=c.realm,this.nonce=c.nonce,this.opaque=c.opaque,this.stale=c.stale,this.algorithm){if("MD5"!==this.algorithm)return this.logger.warn('challenge with Digest algorithm different than "MD5", authentication aborted'),!1}else this.algorithm="MD5";if(!this.realm)return this.logger.warn("challenge without Digest realm, authentication aborted"),!1;if(!this.nonce)return this.logger.warn("challenge without Digest nonce, authentication aborted"),!1;if(c.qop)if(c.qop.indexOf("auth")>-1)this.qop="auth";else{if(!(c.qop.indexOf("auth-int")>-1))return this.logger.warn('challenge without Digest qop different than "auth" or "auth-int", authentication aborted'),!1;this.qop="auth-int"}else this.qop=null;return this.method=b.method,this.uri=b.ruri,this.cnonce=a.createRandomToken(12),this.nc+=1,this.updateNcHex(),4294967296===this.nc&&(this.nc=1,this.ncHex="00000001"),this.calculateResponse(),!0},b.prototype.calculateResponse=function(){var b,c;b=a.calculateMD5(this.username+":"+this.realm+":"+this.password),"auth"===this.qop?(c=a.calculateMD5(this.method+":"+this.uri),this.response=a.calculateMD5(b+":"+this.nonce+":"+this.ncHex+":"+this.cnonce+":auth:"+c)):"auth-int"===this.qop?(c=a.calculateMD5(this.method+":"+this.uri+":"+a.calculateMD5(this.body?this.body:"")),this.response=a.calculateMD5(b+":"+this.nonce+":"+this.ncHex+":"+this.cnonce+":auth-int:"+c)):null===this.qop&&(c=a.calculateMD5(this.method+":"+this.uri),this.response=a.calculateMD5(b+":"+this.nonce+":"+c))},b.prototype.toString=function(){var a=[];if(!this.response)throw new Error("response field does not exist, cannot generate Authorization header");return a.push("algorithm="+this.algorithm),a.push('username="'+this.username+'"'),a.push('realm="'+this.realm+'"'),a.push('nonce="'+this.nonce+'"'),a.push('uri="'+this.uri+'"'),a.push('response="'+this.response+'"'),this.opaque&&a.push('opaque="'+this.opaque+'"'),this.qop&&(a.push("qop="+this.qop),a.push('cnonce="'+this.cnonce+'"'),a.push("nc="+this.ncHex)),"Digest "+a.join(", ")},b.prototype.updateNcHex=function(){var a=Number(this.nc).toString(16);this.ncHex="00000000".substr(0,8-a.length)+a},b}},{}],7:[function(a,b){b.exports=function(a){var b,c,d=(new a.LoggerFactory).getLogger("sip.eventemitter"),e={MAX_LISTENERS:10};b=function(){},b.prototype={initEvents:function(a){return this.events={},this.initMoreEvents(a)},initMoreEvents:function(a){var b;for(this.logger||(this.logger=d),this.maxListeners=e.MAX_LISTENERS,b=0;b0},on:function(a,b,c){if(void 0===b)return this;if("function"!=typeof b)return this.logger.error("listener must be a function"),this;if(!this.checkEvent(a))throw this.logger.error("unable to add a listener to a nonexistent event "+a),new TypeError("Invalid or uninitialized event: "+a);var d={listener:b};return c&&(d.bindTarget=c),this.events[a].length>=this.maxListeners?(this.logger.warn("max listeners exceeded for event "+a),this):(this.events[a].push(d),this.logger.log("new listener added to event "+a),this)},once:function(a,b,c){function d(){b.apply(this,arguments),e.off(a,d,c)}var e=this;return this.on(a,d,c)},off:function(a,b,c){var d,e,f=0;if(b&&"function"!=typeof b)return this.logger.error("listener must be a function"),this;if(!a){for(f in this.events)this.events[f]=[];return this}if(!this.checkEvent(a))throw this.logger.error("unable to remove a listener from a nonexistent event "+a),new TypeError("Invalid or uninitialized event: "+a);for(d=this.events[a],e=d.length;e>f;)!d[f]||b&&d[f].listener!==b||c&&d[f].bindTarget!==c?f++:d.splice(f,1);return this},setMaxListeners:function(a){return"number"!=typeof a||0>a?(this.logger.error("listeners must be a positive number"),this):(this.maxListeners=a,this)},emit:function(a){if(!this.checkEvent(a))throw this.logger.error("unable to emit a nonexistent event "+a),new TypeError("Invalid or uninitialized event: "+a);this.logger.log("emitting event "+a);var b=Array.prototype.slice.call(arguments,1);return this.events[a].slice().forEach(function(a){try{a.listener.apply(a.bindTarget||this,b)}catch(c){this.logger.error(c.stack)}},this),this}},c=function(a,b,c){this.type=a,this.sender=b,this.data=c},b.C=e,a.EventEmitter=b,a.Event=c}},{}],8:[function(a,b){b.exports={ConfigurationError:function(){var a=function(a,b){this.code=1,this.name="CONFIGURATION_ERROR",this.parameter=a,this.value=b,this.message=this.value?"Invalid value "+JSON.stringify(this.value)+' for parameter "'+this.parameter+'"':"Missing parameter: "+this.parameter};return a.prototype=new Error,a}(),InvalidStateError:function(){var a=function(a){this.code=2,this.name="INVALID_STATE_ERROR",this.status=a,this.message="Invalid status: "+a};return a.prototype=new Error,a}(),NotSupportedError:function(){var a=function(a){this.code=3,this.name="NOT_SUPPORTED_ERROR",this.message=a};return a.prototype=new Error,a}(),NotReadyError:function(){var a=function(a){this.code=4,this.name="NOT_READY_ERROR",this.message=a};return a.prototype=new Error,a}()}},{}],9:[function(a,b){b.exports=function(a){function b(a,b){function c(){this.constructor=a}c.prototype=b.prototype,a.prototype=new c}function c(a,b,c,d,e,f){this.message=a,this.expected=b,this.found=c,this.offset=d,this.line=e,this.column=f,this.name="SyntaxError"}function d(b){function d(){return b.substring(s,r)}function e(){return s}function f(a){function c(a,c,d){var e,f;for(e=c;d>e;e++)f=b.charAt(e),"\n"===f?(a.seenCR||a.line++,a.column=1,a.seenCR=!1):"\r"===f||"\u2028"===f||"\u2029"===f?(a.line++,a.column=1,a.seenCR=!0):(a.column++,a.seenCR=!1)}return t!==a&&(t>a&&(t=0,u={line:1,column:1,seenCR:!1}),c(u,t,a),t=a),u}function g(a){v>r||(r>v&&(v=r,w=[]),w.push(a))}function h(a,d,e){function g(a){var b=1;for(a.sort(function(a,b){return a.descriptionb.description?1:0});b1?g.slice(0,-1).join(", ")+" or "+g[a.length-1]:g[0],e=b?'"'+c(b)+'"':"end of input","Expected "+d+" but "+e+" found."}var i=f(e),j=eh;)switch(f[h]){case 0:n.push(c(p[f[h+1]])),h+=2;break;case 1:n.push(r),h++;break;case 2:n.pop(),h++;break;case 3:r=n.pop(),h++;break;case 4:n.length-=f[h+1],h+=2;break;case 5:n.splice(-2,1),h++;break;case 6:n[n.length-2].push(n.pop()),h++;break;case 7:n.push(n.splice(n.length-f[h+1],f[h+1])),h+=2;break;case 8:n.pop(),n.push(b.substring(n[n.length-1],r)),h++;break;case 9:l.push(k),i.push(h+3+f[h+1]+f[h+2]),n[n.length-1]?(k=h+3+f[h+1],h+=3):(k=h+3+f[h+1]+f[h+2],h+=3+f[h+1]);break;case 10:l.push(k),i.push(h+3+f[h+1]+f[h+2]),n[n.length-1]===m?(k=h+3+f[h+1],h+=3):(k=h+3+f[h+1]+f[h+2],h+=3+f[h+1]);break;case 11:l.push(k),i.push(h+3+f[h+1]+f[h+2]),n[n.length-1]!==m?(k=h+3+f[h+1],h+=3):(k=h+3+f[h+1]+f[h+2],h+=3+f[h+1]);break;case 12:n[n.length-1]!==m?(l.push(k),i.push(h),k=h+2+f[h+1],h+=2):h+=2+f[h+1];break;case 13:l.push(k),i.push(h+3+f[h+1]+f[h+2]),b.length>r?(k=h+3+f[h+1],h+=3):(k=h+3+f[h+1]+f[h+2],h+=3+f[h+1]);break;case 14:l.push(k),i.push(h+4+f[h+2]+f[h+3]),b.substr(r,p[f[h+1]].length)===p[f[h+1]]?(k=h+4+f[h+2],h+=4):(k=h+4+f[h+2]+f[h+3],h+=4+f[h+2]);break;case 15:l.push(k),i.push(h+4+f[h+2]+f[h+3]),b.substr(r,p[f[h+1]].length).toLowerCase()===p[f[h+1]]?(k=h+4+f[h+2],h+=4):(k=h+4+f[h+2]+f[h+3],h+=4+f[h+2]);break;case 16:l.push(k),i.push(h+4+f[h+2]+f[h+3]),p[f[h+1]].test(b.charAt(r))?(k=h+4+f[h+2],h+=4):(k=h+4+f[h+2]+f[h+3],h+=4+f[h+2]);break;case 17:n.push(b.substr(r,f[h+1])),r+=f[h+1],h+=2;break;case 18:n.push(p[f[h+1]]),r+=p[f[h+1]].length,h+=2;break;case 19:n.push(m),0===x&&g(p[f[h+1]]),h+=2;break;case 20:s=n[n.length-1-f[h+1]],h+=2;break;case 21:s=r,h++;break;case 22:for(d=f.slice(h+4,h+4+f[h+3]),e=0;e0))break;k=l.pop(),h=i.pop()}return n[0]}var k,l=arguments.length>1?arguments[1]:{},m={},n={Contact:118,Name_Addr_Header:155,Record_Route:175,Request_Response:81,SIP_URI:45,Subscription_State:182,Via:190,absoluteURI:84,Call_ID:117,Content_Disposition:129,Content_Length:134,Content_Type:135,CSeq:145,displayName:121,Event:148,From:150,host:52,Max_Forwards:153,Proxy_Authenticate:156,quoted_string:40,Refer_To:177,stun_URI:209,To:188,turn_URI:216,uuid:219,WWW_Authenticate:205,challenge:157},o=118,p=["\r\n",{type:"literal",value:"\r\n",description:'"\\r\\n"'},/^[0-9]/,{type:"class",value:"[0-9]",description:"[0-9]"},/^[a-zA-Z]/,{type:"class",value:"[a-zA-Z]",description:"[a-zA-Z]"},/^[0-9a-fA-F]/,{type:"class",value:"[0-9a-fA-F]",description:"[0-9a-fA-F]"},/^[\0-\xFF]/,{type:"class",value:"[\\0-\\xFF]",description:"[\\0-\\xFF]"},/^["]/,{type:"class",value:'["]',description:'["]'}," ",{type:"literal",value:" ",description:'" "'}," ",{type:"literal",value:" ",description:'"\\t"'},/^[a-zA-Z0-9]/,{type:"class",value:"[a-zA-Z0-9]",description:"[a-zA-Z0-9]"},";",{type:"literal",value:";",description:'";"'},"/",{type:"literal",value:"/",description:'"/"'},"?",{type:"literal",value:"?",description:'"?"'},":",{type:"literal",value:":",description:'":"'},"@",{type:"literal",value:"@",description:'"@"'},"&",{type:"literal",value:"&",description:'"&"'},"=",{type:"literal",value:"=",description:'"="'},"+",{type:"literal",value:"+",description:'"+"'},"$",{type:"literal",value:"$",description:'"$"'},",",{type:"literal",value:",",description:'","'},"-",{type:"literal",value:"-",description:'"-"'},"_",{type:"literal",value:"_",description:'"_"'},".",{type:"literal",value:".",description:'"."'},"!",{type:"literal",value:"!",description:'"!"'},"~",{type:"literal",value:"~",description:'"~"'},"*",{type:"literal",value:"*",description:'"*"'},"'",{type:"literal",value:"'",description:'"\'"'},"(",{type:"literal",value:"(",description:'"("'},")",{type:"literal",value:")",description:'")"'},m,"%",{type:"literal",value:"%",description:'"%"'},function(a){return a.join("")},null,[],function(){return" "},function(){return":"},function(){return d()},/^[!-~]/,{type:"class",value:"[!-~]",description:"[!-~]"},/^[\x80-\uFFFF]/,{type:"class",value:"[\\x80-\\uFFFF]",description:"[\\x80-\\uFFFF]"},/^[\x80-\xBF]/,{type:"class",value:"[\\x80-\\xBF]",description:"[\\x80-\\xBF]"},/^[a-f]/,{type:"class",value:"[a-f]",description:"[a-f]"},"`",{type:"literal",value:"`",description:'"`"'},function(){return d()},"<",{type:"literal",value:"<",description:'"<"'},">",{type:"literal",value:">",description:'">"'},"\\",{type:"literal",value:"\\",description:'"\\\\"'},"[",{type:"literal",value:"[",description:'"["'},"]",{type:"literal",value:"]",description:'"]"'},"{",{type:"literal",value:"{",description:'"{"'},"}",{type:"literal",value:"}",description:'"}"'},function(){return"*"},function(){return"/"},function(){return"="},function(){return"("},function(){return")"},function(){return">"},function(){return"<"},function(){return","},function(){return";"},function(){return":"},function(){return'"'},/^[!-']/,{type:"class",value:"[!-']",description:"[!-']"},/^[*-[]/,{type:"class",value:"[*-[]",description:"[*-[]"},/^[\]-~]/,{type:"class",value:"[\\]-~]",description:"[\\]-~]"},function(a){return a},/^[#-[]/,{type:"class",value:"[#-[]",description:"[#-[]"},/^[\0-\t]/,{type:"class",value:"[\\0-\\t]",description:"[\\0-\\t]"},/^[\x0B-\f]/,{type:"class",value:"[\\x0B-\\f]",description:"[\\x0B-\\f]"},/^[\x0E-]/,{type:"class",value:"[\\x0E-]",description:"[\\x0E-]"},function(){y.uri=new a.URI(y.scheme,y.user,y.host,y.port),delete y.scheme,delete y.user,delete y.host,delete y.host_type,delete y.port},function(){y.uri=new a.URI(y.scheme,y.user,y.host,y.port,y.uri_params,y.uri_headers),delete y.scheme,delete y.user,delete y.host,delete y.host_type,delete y.port,delete y.uri_params,"SIP_URI"===l.startRule&&(y=y.uri)},"sips",{type:"literal",value:"sips",description:'"sips"'},"sip",{type:"literal",value:"sip",description:'"sip"'},function(a){y.scheme=a.toLowerCase()},function(){y.user=decodeURIComponent(d().slice(0,-1))},function(){y.password=d()},function(){return y.host=d().toLowerCase(),y.host},function(){return y.host_type="domain",d()},/^[a-zA-Z0-9_\-]/,{type:"class",value:"[a-zA-Z0-9_\\-]",description:"[a-zA-Z0-9_\\-]"},/^[a-zA-Z0-9\-]/,{type:"class",value:"[a-zA-Z0-9\\-]",description:"[a-zA-Z0-9\\-]"},function(){return y.host_type="IPv6",d()},"::",{type:"literal",value:"::",description:'"::"'},function(){return y.host_type="IPv6",d()},function(){return y.host_type="IPv4",d()},"25",{type:"literal",value:"25",description:'"25"'},/^[0-5]/,{type:"class",value:"[0-5]",description:"[0-5]"},"2",{type:"literal",value:"2",description:'"2"'},/^[0-4]/,{type:"class",value:"[0-4]",description:"[0-4]"},"1",{type:"literal",value:"1",description:'"1"'},/^[1-9]/,{type:"class",value:"[1-9]",description:"[1-9]"},function(a){return a=parseInt(a.join("")),y.port=a,a},"transport=",{type:"literal",value:"transport=",description:'"transport="'},"udp",{type:"literal",value:"udp",description:'"udp"'},"tcp",{type:"literal",value:"tcp",description:'"tcp"'},"sctp",{type:"literal",value:"sctp",description:'"sctp"'},"tls",{type:"literal",value:"tls",description:'"tls"'},function(a){y.uri_params||(y.uri_params={}),y.uri_params.transport=a.toLowerCase()},"user=",{type:"literal",value:"user=",description:'"user="'},"phone",{type:"literal",value:"phone",description:'"phone"'},"ip",{type:"literal",value:"ip",description:'"ip"'},function(a){y.uri_params||(y.uri_params={}),y.uri_params.user=a.toLowerCase()},"method=",{type:"literal",value:"method=",description:'"method="'},function(a){y.uri_params||(y.uri_params={}),y.uri_params.method=a},"ttl=",{type:"literal",value:"ttl=",description:'"ttl="'},function(a){y.params||(y.params={}),y.params.ttl=a},"maddr=",{type:"literal",value:"maddr=",description:'"maddr="'},function(a){y.uri_params||(y.uri_params={}),y.uri_params.maddr=a},"lr",{type:"literal",value:"lr",description:'"lr"'},function(){y.uri_params||(y.uri_params={}),y.uri_params.lr=void 0},function(a,b){y.uri_params||(y.uri_params={}),b=null===b?void 0:b[1],y.uri_params[a.toLowerCase()]=b&&b.toLowerCase()},function(a){return a.join("")},function(a){return a.join("")},function(a,b){a=a.join("").toLowerCase(),b=b.join(""),y.uri_headers||(y.uri_headers={}),y.uri_headers[a]?y.uri_headers[a].push(b):y.uri_headers[a]=[b]},function(){"Refer_To"===l.startRule&&(y.uri=new a.URI(y.scheme,y.user,y.host,y.port,y.uri_params,y.uri_headers),delete y.scheme,delete y.user,delete y.host,delete y.host_type,delete y.port,delete y.uri_params)},"//",{type:"literal",value:"//",description:'"//"'},function(){y.scheme=d()},{type:"literal",value:"SIP",description:'"SIP"'},function(){y.sip_version=d()},"INVITE",{type:"literal",value:"INVITE",description:'"INVITE"'},"ACK",{type:"literal",value:"ACK",description:'"ACK"'},"VXACH",{type:"literal",value:"VXACH",description:'"VXACH"'},"OPTIONS",{type:"literal",value:"OPTIONS",description:'"OPTIONS"'},"BYE",{type:"literal",value:"BYE",description:'"BYE"'},"CANCEL",{type:"literal",value:"CANCEL",description:'"CANCEL"'},"REGISTER",{type:"literal",value:"REGISTER",description:'"REGISTER"'},"SUBSCRIBE",{type:"literal",value:"SUBSCRIBE",description:'"SUBSCRIBE"'},"NOTIFY",{type:"literal",value:"NOTIFY",description:'"NOTIFY"'},"REFER",{type:"literal",value:"REFER",description:'"REFER"'},function(){return y.method=d(),y.method},function(a){y.status_code=parseInt(a.join(""))},function(){y.reason_phrase=d()},function(){y=d()},function(){var a,b;for(b=y.multi_header.length,a=0;b>a;a++)if(null===y.multi_header[a].parsed){y=null;break}y=null!==y?y.multi_header:-1},function(){var b;y.multi_header||(y.multi_header=[]);try{b=new a.NameAddrHeader(y.uri,y.displayName,y.params),delete y.uri,delete y.displayName,delete y.params}catch(c){b=null}y.multi_header.push({position:r,offset:e(),parsed:b})},function(a){a=d().trim(),'"'===a[0]&&(a=a.substring(1,a.length-1)),y.displayName=a},"q",{type:"literal",value:"q",description:'"q"'},function(a){y.params||(y.params={}),y.params.q=a},"expires",{type:"literal",value:"expires",description:'"expires"'},function(a){y.params||(y.params={}),y.params.expires=a},function(a){return parseInt(a.join(""))},"0",{type:"literal",value:"0",description:'"0"'},function(){return parseFloat(d())},function(a,b){y.params||(y.params={}),b=null===b?void 0:b[1],y.params[a.toLowerCase()]=b},"render",{type:"literal",value:"render",description:'"render"'},"session",{type:"literal",value:"session",description:'"session"'},"icon",{type:"literal",value:"icon",description:'"icon"'},"alert",{type:"literal",value:"alert",description:'"alert"'},function(){"Content_Disposition"===l.startRule&&(y.type=d().toLowerCase())},"handling",{type:"literal",value:"handling",description:'"handling"'},"optional",{type:"literal",value:"optional",description:'"optional"'},"required",{type:"literal",value:"required",description:'"required"'},function(a){y=parseInt(a.join(""))},function(){y=d()},"text",{type:"literal",value:"text",description:'"text"'},"image",{type:"literal",value:"image",description:'"image"'},"audio",{type:"literal",value:"audio",description:'"audio"'},"video",{type:"literal",value:"video",description:'"video"'},"application",{type:"literal",value:"application",description:'"application"'},"message",{type:"literal",value:"message",description:'"message"'},"multipart",{type:"literal",value:"multipart",description:'"multipart"'},"x-",{type:"literal",value:"x-",description:'"x-"'},function(a){y.value=parseInt(a.join(""))},function(a){y=a},function(a){y.event=a.toLowerCase()},function(){var b=y.tag;y=new a.NameAddrHeader(y.uri,y.displayName,y.params),b&&y.setParam("tag",b)},"tag",{type:"literal",value:"tag",description:'"tag"'},function(a){y.tag=a},function(a){y=parseInt(a.join(""))},function(a){y=a},function(){y=new a.NameAddrHeader(y.uri,y.displayName,y.params)},"digest",{type:"literal",value:"Digest",description:'"Digest"'},"realm",{type:"literal",value:"realm",description:'"realm"'},function(a){y.realm=a},"domain",{type:"literal",value:"domain",description:'"domain"'},"nonce",{type:"literal",value:"nonce",description:'"nonce"'},function(a){y.nonce=a},"opaque",{type:"literal",value:"opaque",description:'"opaque"'},function(a){y.opaque=a},"stale",{type:"literal",value:"stale",description:'"stale"'},"true",{type:"literal",value:"true",description:'"true"'},function(){y.stale=!0},"false",{type:"literal",value:"false",description:'"false"'},function(){y.stale=!1},"algorithm",{type:"literal",value:"algorithm",description:'"algorithm"'},"md5",{type:"literal",value:"MD5",description:'"MD5"'},"md5-sess",{type:"literal",value:"MD5-sess",description:'"MD5-sess"'},function(a){y.algorithm=a.toUpperCase()},"qop",{type:"literal",value:"qop",description:'"qop"'},"auth-int",{type:"literal",value:"auth-int",description:'"auth-int"'},"auth",{type:"literal",value:"auth",description:'"auth"'},function(a){y.qop||(y.qop=[]),y.qop.push(a.toLowerCase())},function(a){y.value=parseInt(a.join(""))},function(){var a,b;for(b=y.multi_header.length,a=0;b>a;a++)if(null===y.multi_header[a].parsed){y=null;break}y=null!==y?y.multi_header:-1},function(){var b;y.multi_header||(y.multi_header=[]); +try{b=new a.NameAddrHeader(y.uri,y.displayName,y.params),delete y.uri,delete y.displayName,delete y.params}catch(c){b=null}y.multi_header.push({position:r,offset:e(),parsed:b})},function(){y=new a.NameAddrHeader(y.uri,y.displayName,y.params)},function(a){y.value=parseInt(a.join(""))},"active",{type:"literal",value:"active",description:'"active"'},"pending",{type:"literal",value:"pending",description:'"pending"'},"terminated",{type:"literal",value:"terminated",description:'"terminated"'},function(){y.state=d()},"reason",{type:"literal",value:"reason",description:'"reason"'},function(a){"undefined"!=typeof a&&(y.reason=a)},function(a){"undefined"!=typeof a&&(y.expires=a)},"retry_after",{type:"literal",value:"retry_after",description:'"retry_after"'},function(a){"undefined"!=typeof a&&(y.retry_after=a)},"deactivated",{type:"literal",value:"deactivated",description:'"deactivated"'},"probation",{type:"literal",value:"probation",description:'"probation"'},"rejected",{type:"literal",value:"rejected",description:'"rejected"'},"timeout",{type:"literal",value:"timeout",description:'"timeout"'},"giveup",{type:"literal",value:"giveup",description:'"giveup"'},"noresource",{type:"literal",value:"noresource",description:'"noresource"'},"invariant",{type:"literal",value:"invariant",description:'"invariant"'},function(){var b=y.tag;y=new a.NameAddrHeader(y.uri,y.displayName,y.params),b&&y.setParam("tag",b)},"ttl",{type:"literal",value:"ttl",description:'"ttl"'},function(a){y.ttl=a},"maddr",{type:"literal",value:"maddr",description:'"maddr"'},function(a){y.maddr=a},"received",{type:"literal",value:"received",description:'"received"'},function(a){y.received=a},"branch",{type:"literal",value:"branch",description:'"branch"'},function(a){y.branch=a},"rport",{type:"literal",value:"rport",description:'"rport"'},function(){"undefined"!=typeof response_port&&(y.rport=response_port.join(""))},function(a){y.protocol=a},{type:"literal",value:"UDP",description:'"UDP"'},{type:"literal",value:"TCP",description:'"TCP"'},{type:"literal",value:"TLS",description:'"TLS"'},{type:"literal",value:"SCTP",description:'"SCTP"'},function(a){y.transport=a},function(){y.host=d()},function(a){y.port=parseInt(a.join(""))},function(a){return parseInt(a.join(""))},"stuns",{type:"literal",value:"stuns",description:'"stuns"'},"stun",{type:"literal",value:"stun",description:'"stun"'},function(a){y.scheme=a},function(a){y.host=a},function(){return d()},"?transport=",{type:"literal",value:"?transport=",description:'"?transport="'},"turns",{type:"literal",value:"turns",description:'"turns"'},"turn",{type:"literal",value:"turn",description:'"turn"'},function(){y.transport=transport},function(){y=d()}],q=[i('. ""2 3!'),i('0"""1!3#'),i('0$""1!3%'),i('0&""1!3\''),i("7'*# \"7("),i('0(""1!3)'),i('0*""1!3+'),i('.,""2,3-'),i('..""2.3/'),i('00""1!31'),i('.2""2233*\x89 ".4""2435*} ".6""2637*q ".8""2839*e ".:""2:3;*Y ".<""2<3=*M ".>""2>3?*A ".@""2@3A*5 ".B""2B3C*) ".D""2D3E'),i('7)*# "7,'),i('.F""2F3G*} ".H""2H3I*q ".J""2J3K*e ".L""2L3M*Y ".N""2N3O*M ".P""2P3Q*A ".R""2R3S*5 ".T""2T3U*) ".V""2V3W'),i('!!.Y""2Y3Z+7$7#+-%7#+#%\'#%$## X$"# X"# X+\' 4!6[!! %'),i('!! ]7$,#&7$"+-$7 +#%\'"%$"# X"# X*# " \\+@$ ]7$+&$,#&7$""" X+\'%4"6^" %$"# X"# X'),i('7.*# " \\'),i('! ]7\'*# "7(,)&7\'*# "7("+A$.8""2839+1%7/+\'%4#6_# %$## X$"# X"# X'),i('! ]72+&$,#&72""" X+s$ ]! ]7.,#&7."+-$72+#%\'"%$"# X"# X,@&! ]7.,#&7."+-$72+#%\'"%$"# X"# X"+\'%4"6`" %$"# X"# X'),i('0a""1!3b*# "73'),i('0c""1!3d'),i('0e""1!3f'),i('7!*) "0g""1!3h'),i('! ]7)*\x95 ".F""2F3G*\x89 ".J""2J3K*} ".L""2L3M*q ".Y""2Y3Z*e ".P""2P3Q*Y ".H""2H3I*M ".@""2@3A*A ".i""2i3j*5 ".R""2R3S*) ".N""2N3O+\x9e$,\x9b&7)*\x95 ".F""2F3G*\x89 ".J""2J3K*} ".L""2L3M*q ".Y""2Y3Z*e ".P""2P3Q*Y ".H""2H3I*M ".@""2@3A*A ".i""2i3j*5 ".R""2R3S*) ".N""2N3O""" X+& 4!6k! %'),i('! ]7)*\x89 ".F""2F3G*} ".L""2L3M*q ".Y""2Y3Z*e ".P""2P3Q*Y ".H""2H3I*M ".@""2@3A*A ".i""2i3j*5 ".R""2R3S*) ".N""2N3O+\x92$,\x8f&7)*\x89 ".F""2F3G*} ".L""2L3M*q ".Y""2Y3Z*e ".P""2P3Q*Y ".H""2H3I*M ".@""2@3A*A ".i""2i3j*5 ".R""2R3S*) ".N""2N3O""" X+& 4!6k! %'),i('.T""2T3U*\xe3 ".V""2V3W*\xd7 ".l""2l3m*\xcb ".n""2n3o*\xbf ".:""2:3;*\xb3 ".D""2D3E*\xa7 ".2""2233*\x9b ".8""2839*\x8f ".p""2p3q*\x83 "7&*} ".4""2435*q ".r""2r3s*e ".t""2t3u*Y ".6""2637*M ".>""2>3?*A ".v""2v3w*5 ".x""2x3y*) "7\'*# "7('),i('! ]7)*\u012b ".F""2F3G*\u011f ".J""2J3K*\u0113 ".L""2L3M*\u0107 ".Y""2Y3Z*\xfb ".P""2P3Q*\xef ".H""2H3I*\xe3 ".@""2@3A*\xd7 ".i""2i3j*\xcb ".R""2R3S*\xbf ".N""2N3O*\xb3 ".T""2T3U*\xa7 ".V""2V3W*\x9b ".l""2l3m*\x8f ".n""2n3o*\x83 ".8""2839*w ".p""2p3q*k "7&*e ".4""2435*Y ".r""2r3s*M ".t""2t3u*A ".6""2637*5 ".v""2v3w*) ".x""2x3y+\u0134$,\u0131&7)*\u012b ".F""2F3G*\u011f ".J""2J3K*\u0113 ".L""2L3M*\u0107 ".Y""2Y3Z*\xfb ".P""2P3Q*\xef ".H""2H3I*\xe3 ".@""2@3A*\xd7 ".i""2i3j*\xcb ".R""2R3S*\xbf ".N""2N3O*\xb3 ".T""2T3U*\xa7 ".V""2V3W*\x9b ".l""2l3m*\x8f ".n""2n3o*\x83 ".8""2839*w ".p""2p3q*k "7&*e ".4""2435*Y ".r""2r3s*M ".t""2t3u*A ".6""2637*5 ".v""2v3w*) ".x""2x3y""" X+& 4!6k! %'),i('!7/+A$.P""2P3Q+1%7/+\'%4#6z# %$## X$"# X"# X'),i('!7/+A$.4""2435+1%7/+\'%4#6{# %$## X$"# X"# X'),i('!7/+A$.>""2>3?+1%7/+\'%4#6|# %$## X$"# X"# X'),i('!7/+A$.T""2T3U+1%7/+\'%4#6}# %$## X$"# X"# X'),i('!7/+A$.V""2V3W+1%7/+\'%4#6~# %$## X$"# X"# X'),i('!.n""2n3o+1$7/+\'%4"6" %$"# X"# X'),i('!7/+7$.l""2l3m+\'%4"6\x80" %$"# X"# X'),i('!7/+A$.D""2D3E+1%7/+\'%4#6\x81# %$## X$"# X"# X'),i('!7/+A$.2""2233+1%7/+\'%4#6\x82# %$## X$"# X"# X'),i('!7/+A$.8""2839+1%7/+\'%4#6\x83# %$## X$"# X"# X'),i('!7/+1$7&+\'%4"6\x84" %$"# X"# X'),i('!7&+1$7/+\'%4"6\x84" %$"# X"# X'),i('!7=+W$ ]7G*) "7K*# "7F,/&7G*) "7K*# "7F"+-%7>+#%\'#%$## X$"# X"# X'),i('0\x85""1!3\x86*A "0\x87""1!3\x88*5 "0\x89""1!3\x8a*) "73*# "7.'),i('!7/+Y$7&+O% ]7J*# "7K,)&7J*# "7K"+1%7&+\'%4$6k$ %$$# X$## X$"# X"# X'),i('!7/+`$7&+V%! ]7J*# "7K,)&7J*# "7K"+! (%+2%7&+(%4$6\x8b$!!%$$# X$## X$"# X"# X'),i('7.*G ".L""2L3M*; "0\x8c""1!3\x8d*/ "0\x89""1!3\x8a*# "73'),i('!.p""2p3q+K$0\x8e""1!3\x8f*5 "0\x90""1!3\x91*) "0\x92""1!3\x93+#%\'"%$"# X"# X'),i('!7N+Q$.8""2839+A%7O*# " \\+1%7S+\'%4$6\x94$ %$$# X$## X$"# X"# X'),i('!7N+k$.8""2839+[%7O*# " \\+K%7S+A%7_+7%7l*# " \\+\'%4&6\x95& %$&# X$%# X$$# X$## X$"# X"# X'),i('!/\x96""1$3\x97*) "/\x98""1#3\x99+\' 4!6\x9a!! %'),i('!7P+b$!.8""2839+-$7R+#%\'"%$"# X"# X*# " \\+7%.:""2:3;+\'%4#6\x9b# %$## X$"# X"# X'),i(' ]7+*) "7-*# "7Q+2$,/&7+*) "7-*# "7Q""" X'),i('.<""2<3=*q ".>""2>3?*e ".@""2@3A*Y ".B""2B3C*M ".D""2D3E*A ".2""2233*5 ".6""2637*) ".4""2435'),i('! ]7+*_ "7-*Y ".<""2<3=*M ".>""2>3?*A ".@""2@3A*5 ".B""2B3C*) ".D""2D3E,e&7+*_ "7-*Y ".<""2<3=*M ".>""2>3?*A ".@""2@3A*5 ".B""2B3C*) ".D""2D3E"+& 4!6\x9c! %'),i('!7T+N$!.8""2839+-$7^+#%\'"%$"# X"# X*# " \\+#%\'"%$"# X"# X'),i('!7U*) "7\\*# "7X+& 4!6\x9d! %'),i('! ]!7V+3$.J""2J3K+#%\'"%$"# X"# X,>&!7V+3$.J""2J3K+#%\'"%$"# X"# X"+G$7W+=%.J""2J3K*# " \\+\'%4#6\x9e# %$## X$"# X"# X'),i(' ]0\x9f""1!3\xa0+,$,)&0\x9f""1!3\xa0""" X'),i('!0$""1!3%+A$ ]0\xa1""1!3\xa2,)&0\xa1""1!3\xa2"+#%\'"%$"# X"# X'),i('!.r""2r3s+A$7Y+7%.t""2t3u+\'%4#6\xa3# %$## X$"# X"# X'),i('!!7Z+\xbf$.8""2839+\xaf%7Z+\xa5%.8""2839+\x95%7Z+\x8b%.8""2839+{%7Z+q%.8""2839+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\'-%$-# X$,# X$+# X$*# X$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0838 "!.\xa4""2\xa43\xa5+\xaf$7Z+\xa5%.8""2839+\x95%7Z+\x8b%.8""2839+{%7Z+q%.8""2839+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\',%$,# X$+# X$*# X$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0795 "!.\xa4""2\xa43\xa5+\x95$7Z+\x8b%.8""2839+{%7Z+q%.8""2839+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\'*%$*# X$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u070c "!.\xa4""2\xa43\xa5+{$7Z+q%.8""2839+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\'(%$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u069d "!.\xa4""2\xa43\xa5+a$7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\'&%$&# X$%# X$$# X$## X$"# X"# X*\u0648 "!.\xa4""2\xa43\xa5+G$7Z+=%.8""2839+-%7[+#%\'$%$$# X$## X$"# X"# X*\u060d "!.\xa4""2\xa43\xa5+-$7[+#%\'"%$"# X"# X*\u05ec "!.\xa4""2\xa43\xa5+-$7Z+#%\'"%$"# X"# X*\u05cb "!7Z+\xa5$.\xa4""2\xa43\xa5+\x95%7Z+\x8b%.8""2839+{%7Z+q%.8""2839+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\'+%$+# X$*# X$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0538 "!7Z+\xb6$!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\x8b%.\xa4""2\xa43\xa5+{%7Z+q%.8""2839+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\'*%$*# X$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0494 "!7Z+\xc7$!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\x9c%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+q%.\xa4""2\xa43\xa5+a%7Z+W%.8""2839+G%7Z+=%.8""2839+-%7[+#%\')%$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u03df "!7Z+\xd8$!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\xad%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\x82%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+W%.\xa4""2\xa43\xa5+G%7Z+=%.8""2839+-%7[+#%\'(%$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0319 "!7Z+\xe9$!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\xbe%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\x93%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+h%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+=%.\xa4""2\xa43\xa5+-%7[+#%\'\'%$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0242 "!7Z+\u0114$!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\xe9%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\xbe%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\x93%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+h%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+=%.\xa4""2\xa43\xa5+-%7Z+#%\'(%$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X*\u0140 "!7Z+\u0135$!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\u010a%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\xdf%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\xb4%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+\x89%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+^%!.8""2839+-$7Z+#%\'"%$"# X"# X*# " \\+3%.\xa4""2\xa43\xa5+#%\'(%$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X+& 4!6\xa6! %'),i('!7#+S$7#*# " \\+C%7#*# " \\+3%7#*# " \\+#%\'$%$$# X$## X$"# X"# X'),i('!7Z+=$.8""2839+-%7Z+#%\'#%$## X$"# X"# X*# "7\\'),i('!7]+u$.J""2J3K+e%7]+[%.J""2J3K+K%7]+A%.J""2J3K+1%7]+\'%4\'6\xa7\' %$\'# X$&# X$%# X$$# X$## X$"# X"# X'),i('!.\xa8""2\xa83\xa9+3$0\xaa""1!3\xab+#%\'"%$"# X"# X*\xa0 "!.\xac""2\xac3\xad+=$0\xae""1!3\xaf+-%7!+#%\'#%$## X$"# X"# X*o "!.\xb0""2\xb03\xb1+7$7!+-%7!+#%\'#%$## X$"# X"# X*D "!0\xb2""1!3\xb3+-$7!+#%\'"%$"# X"# X*# "7!'),i('!!7!*# " \\+c$7!*# " \\+S%7!*# " \\+C%7!*# " \\+3%7!*# " \\+#%\'%%$%# X$$# X$## X$"# X"# X+\' 4!6\xb4!! %'),i(' ]!.2""2233+-$7`+#%\'"%$"# X"# X,>&!.2""2233+-$7`+#%\'"%$"# X"# X"'),i('7a*A "7b*; "7c*5 "7d*/ "7e*) "7f*# "7g'),i('!/\xb5""1*3\xb6+b$/\xb7""1#3\xb8*G "/\xb9""1#3\xba*; "/\xbb""1$3\xbc*/ "/\xbd""1#3\xbe*# "76+(%4"6\xbf"! %$"# X"# X'),i('!/\xc0""1%3\xc1+J$/\xc2""1%3\xc3*/ "/\xc4""1"3\xc5*# "76+(%4"6\xc6"! %$"# X"# X'),i('!/\xc7""1\'3\xc8+2$7\x8f+(%4"6\xc9"! %$"# X"# X'),i('!/\xca""1$3\xcb+2$7\xec+(%4"6\xcc"! %$"# X"# X'),i('!/\xcd""1&3\xce+2$7T+(%4"6\xcf"! %$"# X"# X'),i('!/\xd0""1"3\xd1+R$!.>""2>3?+-$76+#%\'"%$"# X"# X*# " \\+\'%4"6\xd2" %$"# X"# X'),i('!7h+T$!.>""2>3?+-$7i+#%\'"%$"# X"# X*# " \\+)%4"6\xd3""! %$"# X"# X'),i('! ]7j+&$,#&7j""" X+\' 4!6\xd4!! %'),i('! ]7j+&$,#&7j""" X+\' 4!6\xd5!! %'),i('7k*) "7+*# "7-'),i('.r""2r3s*e ".t""2t3u*Y ".4""2435*M ".8""2839*A ".<""2<3=*5 ".@""2@3A*) ".B""2B3C'),i('!.6""2637+u$7m+k% ]!.<""2<3=+-$7m+#%\'"%$"# X"# X,>&!.<""2<3=+-$7m+#%\'"%$"# X"# X"+#%\'#%$## X$"# X"# X'),i('!7n+C$.>""2>3?+3%7o+)%4#6\xd6#"" %$## X$"# X"# X'),i(' ]7p*) "7+*# "7-+2$,/&7p*) "7+*# "7-""" X'),i(' ]7p*) "7+*# "7-,/&7p*) "7+*# "7-"'),i('.r""2r3s*e ".t""2t3u*Y ".4""2435*M ".6""2637*A ".8""2839*5 ".@""2@3A*) ".B""2B3C'),i('7\x90*# "7r'),i("!7\x8f+K$7'+A%7s+7%7'+-%7\x84+#%'%%$%# X$$# X$## X$\"# X\"# X"),i('7M*# "7t'),i('!7+G$.8""2839+7%7u*# "7x+\'%4#6\xd7# %$## X$"# X"# X'),i('!7v*# "7w+N$!.6""2637+-$7\x83+#%\'"%$"# X"# X*# " \\+#%\'"%$"# X"# X'),i('!.\xd8""2\xd83\xd9+=$7\x80+3%7w*# " \\+#%\'#%$## X$"# X"# X'),i('!.4""2435+-$7{+#%\'"%$"# X"# X'),i('!7z+5$ ]7y,#&7y"+#%\'"%$"# X"# X'),i('7**) "7+*# "7-'),i('7+*\x8f "7-*\x89 ".2""2233*} ".6""2637*q ".8""2839*e ".:""2:3;*Y ".<""2<3=*M ".>""2>3?*A ".@""2@3A*5 ".B""2B3C*) ".D""2D3E'),i('!7|+k$ ]!.4""2435+-$7|+#%\'"%$"# X"# X,>&!.4""2435+-$7|+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),i('! ]7~,#&7~"+k$ ]!.2""2233+-$7}+#%\'"%$"# X"# X,>&!.2""2233+-$7}+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),i(' ]7~,#&7~"'),i('7+*w "7-*q ".8""2839*e ".:""2:3;*Y ".<""2<3=*M ".>""2>3?*A ".@""2@3A*5 ".B""2B3C*) ".D""2D3E'),i('!7"+\x8d$ ]7"*G "7!*A ".@""2@3A*5 ".F""2F3G*) ".J""2J3K,M&7"*G "7!*A ".@""2@3A*5 ".F""2F3G*) ".J""2J3K"+\'%4"6\xda" %$"# X"# X'),i('7\x81*# "7\x82'),i('!!7O+3$.:""2:3;+#%\'"%$"# X"# X*# " \\+-$7S+#%\'"%$"# X"# X*# " \\'),i(' ]7+*\x83 "7-*} ".B""2B3C*q ".D""2D3E*e ".2""2233*Y ".8""2839*M ".:""2:3;*A ".<""2<3=*5 ".>""2>3?*) ".@""2@3A+\x8c$,\x89&7+*\x83 "7-*} ".B""2B3C*q ".D""2D3E*e ".2""2233*Y ".8""2839*M ".:""2:3;*A ".<""2<3=*5 ".>""2>3?*) ".@""2@3A""" X'),i(' ]7y,#&7y"'),i('!/\x98""1#3\xdb+y$.4""2435+i% ]7!+&$,#&7!""" X+P%.J""2J3K+@% ]7!+&$,#&7!""" X+\'%4%6\xdc% %$%# X$$# X$## X$"# X"# X'),i('.\xdd""2\xdd3\xde'),i('.\xdf""2\xdf3\xe0'),i('.\xe1""2\xe13\xe2'),i('.\xe3""2\xe33\xe4'),i('.\xe5""2\xe53\xe6'),i('.\xe7""2\xe73\xe8'),i('.\xe9""2\xe93\xea'),i('.\xeb""2\xeb3\xec'),i('.\xed""2\xed3\xee'),i('.\xef""2\xef3\xf0'),i('!7\x85*S "7\x86*M "7\x88*G "7\x89*A "7\x8a*; "7\x8b*5 "7\x8c*/ "7\x8d*) "7\x8e*# "76+& 4!6\xf1! %'),i("!7\x84+K$7'+A%7\x91+7%7'+-%7\x93+#%'%%$%# X$$# X$## X$\"# X\"# X"),i("!7\x92+' 4!6\xf2!! %"),i('!7!+7$7!+-%7!+#%\'#%$## X$"# X"# X'),i('! ]7**A "7+*; "7-*5 "73*/ "74*) "7\'*# "7(,G&7**A "7+*; "7-*5 "73*/ "74*) "7\'*# "7("+& 4!6\xf3! %'),i('!7\xb5+_$ ]!7A+-$7\xb5+#%\'"%$"# X"# X,8&!7A+-$7\xb5+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),i('!79+R$!.:""2:3;+-$79+#%\'"%$"# X"# X*# " \\+\'%4"6\xf4" %$"# X"# X'),i('!7:*j "!7\x97+_$ ]!7A+-$7\x97+#%\'"%$"# X"# X,8&!7A+-$7\x97+#%\'"%$"# X"# X"+#%\'"%$"# X"# X+& 4!6\xf5! %'),i('!7L*# "7\x98+c$ ]!7B+-$7\x9a+#%\'"%$"# X"# X,8&!7B+-$7\x9a+#%\'"%$"# X"# X"+\'%4"6\xf6" %$"# X"# X'),i('!7\x99*# " \\+A$7@+7%7M+-%7?+#%\'$%$$# X$## X$"# X"# X'),i('!!76+_$ ]!7.+-$76+#%\'"%$"# X"# X,8&!7.+-$76+#%\'"%$"# X"# X"+#%\'"%$"# X"# X*# "7H+\' 4!6\xf7!! %'),i('7\x9b*) "7\x9c*# "7\x9f'),i('!/\xf8""1!3\xf9+<$7<+2%7\x9e+(%4#6\xfa#! %$## X$"# X"# X'),i('!/\xfb""1\'3\xfc+<$7<+2%7\x9d+(%4#6\xfd#! %$## X$"# X"# X'),i('! ]7!+&$,#&7!""" X+\' 4!6\xfe!! %'),i('!.\xff""2\xff3\u0100+x$!.J""2J3K+S$7!*# " \\+C%7!*# " \\+3%7!*# " \\+#%\'$%$$# X$## X$"# X"# X*# " \\+\'%4"6\u0101" %$"# X"# X'),i('!76+N$!7<+-$7\xa0+#%\'"%$"# X"# X*# " \\+)%4"6\u0102""! %$"# X"# X'),i('76*) "7T*# "7H'),i('!7\xa2+_$ ]!7B+-$7\xa3+#%\'"%$"# X"# X,8&!7B+-$7\xa3+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),i('!/\u0103""1&3\u0104*G "/\u0105""1\'3\u0106*; "/\u0107""1$3\u0108*/ "/\u0109""1%3\u010a*# "76+& 4!6\u010b! %'),i('7\xa4*# "7\x9f'),i('!/\u010c""1(3\u010d+O$7<+E%/\u010e""1(3\u010f*/ "/\u0110""1(3\u0111*# "76+#%\'#%$## X$"# X"# X'),i('!76+_$ ]!7A+-$76+#%\'"%$"# X"# X,8&!7A+-$76+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),i('! ]7!+&$,#&7!""" X+\' 4!6\u0112!! %'),i("!7\xa8+& 4!6\u0113! %"),i('!7\xa9+s$7;+i%7\xae+_% ]!7B+-$7\xaf+#%\'"%$"# X"# X,8&!7B+-$7\xaf+#%\'"%$"# X"# X"+#%\'$%$$# X$## X$"# X"# X'),i('7\xaa*# "7\xab'),i('/\u0114""1$3\u0115*S "/\u0116""1%3\u0117*G "/\u0118""1%3\u0119*; "/\u011a""1%3\u011b*/ "/\u011c""1+3\u011d*# "7\xac'),i('/\u011e""1\'3\u011f*/ "/\u0120""1)3\u0121*# "7\xac'),i('76*# "7\xad'),i('!/\u0122""1"3\u0123+-$76+#%\'"%$"# X"# X'),i('7\xac*# "76'),i('!76+7$7<+-%7\xb0+#%\'#%$## X$"# X"# X'),i('76*# "7H'),i('!7\xb2+7$7.+-%7\x8f+#%\'#%$## X$"# X"# X'),i('! ]7!+&$,#&7!""" X+\' 4!6\u0124!! %'),i("!7\x9d+' 4!6\u0125!! %"),i('!7\xb5+d$ ]!7B+-$7\x9f+#%\'"%$"# X"# X,8&!7B+-$7\x9f+#%\'"%$"# X"# X"+(%4"6\u0126"!!%$"# X"# X'),i('!!77+k$ ]!.J""2J3K+-$77+#%\'"%$"# X"# X,>&!.J""2J3K+-$77+#%\'"%$"# X"# X"+#%\'"%$"# X"# X+! (%'),i('!7L*# "7\x98+c$ ]!7B+-$7\xb7+#%\'"%$"# X"# X,8&!7B+-$7\xb7+#%\'"%$"# X"# X"+\'%4"6\u0127" %$"# X"# X'),i('7\xb8*# "7\x9f'),i('!/\u0128""1#3\u0129+<$7<+2%76+(%4#6\u012a#! %$## X$"# X"# X'),i('! ]7!+&$,#&7!""" X+\' 4!6\u012b!! %'),i("!7\x9d+' 4!6\u012c!! %"),i('! ]7\x99,#&7\x99"+\x81$7@+w%7M+m%7?+c% ]!7B+-$7\x9f+#%\'"%$"# X"# X,8&!7B+-$7\x9f+#%\'"%$"# X"# X"+\'%4%6\u012d% %$%# X$$# X$## X$"# X"# X'),i("7\xbd"),i('!/\u012e""1&3\u012f+s$7.+i%7\xc0+_% ]!7A+-$7\xc0+#%\'"%$"# X"# X,8&!7A+-$7\xc0+#%\'"%$"# X"# X"+#%\'$%$$# X$## X$"# X"# X*# "7\xbe'),i('!76+s$7.+i%7\xbf+_% ]!7A+-$7\xbf+#%\'"%$"# X"# X,8&!7A+-$7\xbf+#%\'"%$"# X"# X"+#%\'$%$$# X$## X$"# X"# X'),i('!76+=$7<+3%76*# "7H+#%\'#%$## X$"# X"# X'),i('7\xc1*G "7\xc3*A "7\xc5*; "7\xc7*5 "7\xc8*/ "7\xc9*) "7\xca*# "7\xbf'),i('!/\u0130""1%3\u0131+7$7<+-%7\xc2+#%\'#%$## X$"# X"# X'),i("!7I+' 4!6\u0132!! %"),i('!/\u0133""1&3\u0134+\xa5$7<+\x9b%7D+\x91%7\xc4+\x87% ]! ]7\'+&$,#&7\'""" X+-$7\xc4+#%\'"%$"# X"# X,G&! ]7\'+&$,#&7\'""" X+-$7\xc4+#%\'"%$"# X"# X"+-%7E+#%\'&%$&# X$%# X$$# X$## X$"# X"# X'),i('7t*# "7w'),i('!/\u0135""1%3\u0136+7$7<+-%7\xc6+#%\'#%$## X$"# X"# X'),i("!7I+' 4!6\u0137!! %"),i('!/\u0138""1&3\u0139+<$7<+2%7I+(%4#6\u013a#! %$## X$"# X"# X'),i('!/\u013b""1%3\u013c+_$7<+U%!/\u013d""1$3\u013e+& 4!6\u013f! %*4 "!/\u0140""1%3\u0141+& 4!6\u0142! %+#%\'#%$## X$"# X"# X'),i('!/\u0143""1)3\u0144+T$7<+J%/\u0145""1#3\u0146*/ "/\u0147""1(3\u0148*# "76+(%4#6\u0149#! %$## X$"# X"# X'),i('!/\u014a""1#3\u014b+\x9e$7<+\x94%7D+\x8a%!7\xcb+k$ ]!.D""2D3E+-$7\xcb+#%\'"%$"# X"# X,>&!.D""2D3E+-$7\xcb+#%\'"%$"# X"# X"+#%\'"%$"# X"# X+-%7E+#%\'%%$%# X$$# X$## X$"# X"# X'),i('!/\u014c""1(3\u014d*/ "/\u014e""1$3\u014f*# "76+\' 4!6\u0150!! %'),i('!76+_$ ]!7A+-$76+#%\'"%$"# X"# X,8&!7A+-$76+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),i('!7\xce+K$7.+A%7\xce+7%7.+-%7\x8f+#%\'%%$%# X$$# X$## X$"# X"# X'),i('! ]7!+&$,#&7!""" X+\' 4!6\u0151!! %'),i('!7\xd0+c$ ]!7A+-$7\xd0+#%\'"%$"# X"# X,8&!7A+-$7\xd0+#%\'"%$"# X"# X"+\'%4"6\u0152" %$"# X"# X'),i('!7\x98+c$ ]!7B+-$7\x9f+#%\'"%$"# X"# X,8&!7B+-$7\x9f+#%\'"%$"# X"# X"+\'%4"6\u0153" %$"# X"# X'),i('!7L*) "7\x98*# "7t+c$ ]!7B+-$7\x9f+#%\'"%$"# X"# X,8&!7B+-$7\x9f+#%\'"%$"# X"# X"+\'%4"6\u0154" %$"# X"# X'),i('!76+_$ ]!7A+-$76+#%\'"%$"# X"# X,8&!7A+-$76+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),i('!7\xd4+_$ ]!7A+-$7\xd4+#%\'"%$"# X"# X,8&!7A+-$7\xd4+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),i('!7\x98+_$ ]!7B+-$7\x9f+#%\'"%$"# X"# X,8&!7B+-$7\x9f+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),i('! ]7!+&$,#&7!""" X+\' 4!6\u0155!! %'),i('!7\xd7+_$ ]!7B+-$7\xd8+#%\'"%$"# X"# X,8&!7B+-$7\xd8+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),i('!/\u0156""1&3\u0157*; "/\u0158""1\'3\u0159*/ "/\u015a""1*3\u015b*# "76+& 4!6\u015c! %'),i('!/\u015d""1&3\u015e+<$7<+2%7\xd9+(%4#6\u015f#! %$## X$"# X"# X*\x83 "!/\xfb""1\'3\xfc+<$7<+2%7\x9d+(%4#6\u0160#! %$## X$"# X"# X*S "!/\u0161""1+3\u0162+<$7<+2%7\x9d+(%4#6\u0163#! %$## X$"# X"# X*# "7\x9f'),i('/\u0164""1+3\u0165*k "/\u0166""1)3\u0167*_ "/\u0168""1(3\u0169*S "/\u016a""1\'3\u016b*G "/\u016c""1&3\u016d*; "/\u016e""1*3\u016f*/ "/\u0170""1)3\u0171*# "76'),i('71*# " \\'),i('!76+_$ ]!7A+-$76+#%\'"%$"# X"# X,8&!7A+-$76+#%\'"%$"# X"# X"+#%\'"%$"# X"# X*# " \\'),i('!7L*# "7\x98+c$ ]!7B+-$7\xdd+#%\'"%$"# X"# X,8&!7B+-$7\xdd+#%\'"%$"# X"# X"+\'%4"6\u0172" %$"# X"# X'),i('7\xb8*# "7\x9f'),i('!7\xdf+_$ ]!7A+-$7\xdf+#%\'"%$"# X"# X,8&!7A+-$7\xdf+#%\'"%$"# X"# X"+#%\'"%$"# X"# X'),i('!7\xe6+s$7.+i%7\xe9+_% ]!7B+-$7\xe0+#%\'"%$"# X"# X,8&!7B+-$7\xe0+#%\'"%$"# X"# X"+#%\'$%$$# X$## X$"# X"# X'),i('7\xe1*; "7\xe2*5 "7\xe3*/ "7\xe4*) "7\xe5*# "7\x9f'),i('!/\u0173""1#3\u0174+<$7<+2%7\xec+(%4#6\u0175#! %$## X$"# X"# X'),i('!/\u0176""1%3\u0177+<$7<+2%7T+(%4#6\u0178#! %$## X$"# X"# X'),i('!/\u0179""1(3\u017a+B$7<+8%7\\*# "7Y+(%4#6\u017b#! %$## X$"# X"# X'),i('!/\u017c""1&3\u017d+<$7<+2%76+(%4#6\u017e#! %$## X$"# X"# X'),i('!/\u017f""1%3\u0180+T$!7<+5$ ]7!,#&7!"+#%\'"%$"# X"# X*# " \\+\'%4"6\u0181" %$"# X"# X'),i('!7\xe7+K$7;+A%76+7%7;+-%7\xe8+#%\'%%$%# X$$# X$## X$"# X"# X'),i('!/\x98""1#3\xdb*# "76+\' 4!6\u0182!! %'),i('!/\xb7""1#3\u0183*G "/\xb9""1#3\u0184*; "/\xbd""1#3\u0185*/ "/\xbb""1$3\u0186*# "76+\' 4!6\u0187!! %'),i('!7\xea+H$!7C+-$7\xeb+#%\'"%$"# X"# X*# " \\+#%\'"%$"# X"# X'),i('!7U*) "7\\*# "7X+& 4!6\u0188! %'),i('!!7!*# " \\+c$7!*# " \\+S%7!*# " \\+C%7!*# " \\+3%7!*# " \\+#%\'%%$%# X$$# X$## X$"# X"# X+\' 4!6\u0189!! %'),i('!!7!+C$7!*# " \\+3%7!*# " \\+#%\'#%$## X$"# X"# X+\' 4!6\u018a!! %'),i("7\xbd"),i('!76+7$70+-%7\xef+#%\'#%$## X$"# X"# X'),i(' ]72*) "74*# "7.,/&72*) "74*# "7."'),i(' ]7%,#&7%"'),i('!7\xf2+=$.8""2839+-%7\xf3+#%\'#%$## X$"# X"# X'),i('!/\u018b""1%3\u018c*) "/\u018d""1$3\u018e+\' 4!6\u018f!! %'),i('!7\xf4+N$!.8""2839+-$7^+#%\'"%$"# X"# X*# " \\+#%\'"%$"# X"# X'),i('!7\\*) "7X*# "7\x82+\' 4!6\u0190!! %'),i('! ]7\xf6*) "7-*# "7\xf7,/&7\xf6*) "7-*# "7\xf7"+& 4!6\u0191! %'),i('7"*S "7!*M ".F""2F3G*A ".J""2J3K*5 ".H""2H3I*) ".N""2N3O'),i('.L""2L3M*\x95 ".B""2B3C*\x89 ".<""2<3=*} ".R""2R3S*q ".T""2T3U*e ".V""2V3W*Y ".P""2P3Q*M ".@""2@3A*A ".D""2D3E*5 ".2""2233*) ".>""2>3?'),i('!7\xf9+h$.8""2839+X%7\xf3+N%!.\u0192""2\u01923\u0193+-$7\xe8+#%\'"%$"# X"# X*# " \\+#%\'$%$$# X$## X$"# X"# X'),i('!/\u0194""1%3\u0195*) "/\u0196""1$3\u0197+\' 4!6\u018f!! %'),i('!7\xe8+Q$/\xb7""1#3\xb8*7 "/\xb9""1#3\xba*+ " ]7+,#&7+"+\'%4"6\u0198" %$"# X"# X'),i('!7\xfd+\x8f$.F""2F3G+%7\xfc+u%.F""2F3G+e%7\xfc+[%.F""2F3G+K%7\xfc+A%.F""2F3G+1%7\xfe+\'%4)6\u0199) %$)# X$(# X$\'# X$&# X$%# X$$# X$## X$"# X"# X'),i('!7#+A$7#+7%7#+-%7#+#%\'$%$$# X$## X$"# X"# X'),i('!7\xfc+-$7\xfc+#%\'"%$"# X"# X'),i('!7\xfc+7$7\xfc+-%7\xfc+#%\'#%$## X$"# X"# X')],r=0,s=0,t=0,u={line:1,column:1,seenCR:!1},v=0,w=[],x=0;if("startRule"in l){if(!(l.startRule in n))throw new Error("Can't start parsing from rule \""+l.startRule+'".');o=n[l.startRule]}var y={};return k=j(o),k!==m&&r===b.length?y:(k!==m&&r=0&&3>=d?c=d:d>3?c=3:b.hasOwnProperty(d)?c=b[d]:a.error('invalid "level" parameter value: '+JSON.stringify(d))}},connector:{get:function(){return e},set:function(b){null===b||""===b||void 0===b?e=null:"function"==typeof b?e=b:a.error('invalid "connector" parameter value: '+JSON.stringify(b))}}})};return d.prototype.print=function(a,b,d,e){var f=[];f.push(new Date),f.push(b),d&&f.push(d),f.push(""),"string"==typeof e?a.call(c,f.join(" | ")+e):a.call(c,e)},d.prototype.debug=function(a,b,d){3===this.level&&(this.builtinEnabled&&this.print(c.debug,a,b,d),this.connector&&this.connector("debug",a,b,d))},d.prototype.log=function(a,b,d){this.level>=2&&(this.builtinEnabled&&this.print(c.log,a,b,d),this.connector&&this.connector("log",a,b,d))},d.prototype.warn=function(a,b,d){this.level>=1&&(this.builtinEnabled&&this.print(c.warn,a,b,d),this.connector&&this.connector("warn",a,b,d))},d.prototype.error=function(a,b,d){this.builtinEnabled&&this.print(c.error,a,b,d),this.connector&&this.connector("error",a,b,d)},d.prototype.getLogger=function(a,c){var d;return c&&3===this.level?new b(this,a,c):this.loggers[a]?this.loggers[a]:(d=new b(this,a),this.loggers[a]=d,d)},d}},{}],13:[function(a,b){b.exports=function(a){var b=function(a,b){a=a,b=b};return b.prototype=Object.create(a.prototype,{isReady:{value:function(){}},close:{value:function(){}},getDescription:{value:function(a,b,c){a=a,b=b,c=c}},setDescription:{value:function(a,b,c){a=a,b=b,c=c}}}),b}},{}],14:[function(a,b){b.exports=function(a){var b;b=function(b,c,d){var e;if(!(b&&b instanceof a.URI))throw new TypeError('missing or invalid "uri" parameter');this.uri=b,this.parameters={};for(e in d)this.setParam(e,d[e]);Object.defineProperties(this,{displayName:{get:function(){return c},set:function(a){c=0===a?"0":a}}})},b.prototype={setParam:function(a,b){a&&(this.parameters[a.toLowerCase()]="undefined"==typeof b||null===b?null:b.toString())},getParam:a.URI.prototype.getParam,hasParam:a.URI.prototype.hasParam,deleteParam:a.URI.prototype.deleteParam,clearParams:a.URI.prototype.clearParams,clone:function(){return new b(this.uri.clone(),this.displayName,JSON.parse(JSON.stringify(this.parameters)))},toString:function(){var a,b;a=this.displayName||0===this.displayName?'"'+this.displayName+'" ':"",a+="<"+this.uri.toString()+">";for(b in this.parameters)a+=";"+b,null!==this.parameters[b]&&(a+="="+this.parameters[b]);return a}},b.parse=function(b){return b=a.Grammar.parse(b,"Name_Addr_Header"),-1!==b?b:void 0},a.NameAddrHeader=b}},{}],15:[function(a,b){b.exports=function(a){function b(a,b){var c=b,d=0,e=0;if(a.substring(c,c+2).match(/(^\r\n)/))return-2;for(;0===d;){if(e=a.indexOf("\r\n",c),-1===e)return e;!a.substring(e+2,e+4).match(/(^\r\n)/)&&a.charAt(e+2).match(/(^\s+)/)?c=e+2:d=e}return d}function c(b,c,d,e){var f,g,h,i,j=c.indexOf(":",d),k=c.substring(d,j).trim(),l=c.substring(j+1,e).trim();switch(k.toLowerCase()){case"via":case"v":b.addHeader("via",l),1===b.getHeaders("via").length?(i=b.parseHeader("Via"),i&&(b.via=i,b.via_branch=i.branch)):i=0;break;case"from":case"f":b.setHeader("from",l),i=b.parseHeader("from"),i&&(b.from=i,b.from_tag=i.getParam("tag"));break;case"to":case"t":b.setHeader("to",l),i=b.parseHeader("to"),i&&(b.to=i,b.to_tag=i.getParam("tag"));break;case"record-route":if(i=a.Grammar.parse(l,"Record_Route"),-1===i){i=void 0;break}for(h=i.length,g=0;h>g;g++)f=i[g],b.addHeader("record-route",l.substring(f.position,f.offset)),b.headers["Record-Route"][b.getHeaders("record-route").length-1].parsed=f.parsed;break;case"call-id":case"i":b.setHeader("call-id",l),i=b.parseHeader("call-id"),i&&(b.call_id=l);break;case"contact":case"m":if(i=a.Grammar.parse(l,"Contact"),-1===i){i=void 0;break}for(h=i.length,g=0;h>g;g++)f=i[g],b.addHeader("contact",l.substring(f.position,f.offset)),b.headers.Contact[b.getHeaders("contact").length-1].parsed=f.parsed;break;case"content-length":case"l":b.setHeader("content-length",l),i=b.parseHeader("content-length");break;case"content-type":case"c":b.setHeader("content-type",l),i=b.parseHeader("content-type");break;case"cseq":b.setHeader("cseq",l),i=b.parseHeader("cseq"),i&&(b.cseq=i.value),b instanceof a.IncomingResponse&&(b.method=i.method);break;case"max-forwards":b.setHeader("max-forwards",l),i=b.parseHeader("max-forwards");break;case"www-authenticate":b.setHeader("www-authenticate",l),i=b.parseHeader("www-authenticate");break;case"proxy-authenticate":b.setHeader("proxy-authenticate",l),i=b.parseHeader("proxy-authenticate");break;case"refer-to":case"r":b.setHeader("refer-to",l),i=b.parseHeader("refer-to"),i&&(b.refer_to=i);break;default:b.setHeader(k,l),i=0}return void 0===i?{error:'error parsing header "'+k+'"'}:!0}var d;d={},d.parseMessage=function(d,e){var f,g,h,i,j,k=0,l=d.indexOf("\r\n"),m=e.getLogger("sip.parser");if(-1===l)return void m.warn("no CRLF found, not a SIP message, discarded");if(g=d.substring(0,l),j=a.Grammar.parse(g,"Request_Response"),-1===j)return void m.warn('error parsing first line of SIP message: "'+g+'"');for(j.status_code?(f=new a.IncomingResponse(e),f.status_code=j.status_code,f.reason_phrase=j.reason_phrase):(f=new a.IncomingRequest(e),f.method=j.method,f.ruri=j.uri),f.data=d,k=l+2;;){if(l=b(d,k),-2===l){i=k+2;break}if(-1===l)return void m.error("malformed message");if(j=c(f,d,k,l),j!==!0)return void m.error(j.error);k=l+2}return f.hasHeader("content-length")?(h=f.getHeader("content-length"),f.body=d.substr(i,h)):f.body=d.substring(i),f},a.Parser=d}},{}],16:[function(a,b){b.exports=function(a){var b;b=function(b){var c={},d=1,e=["registered","unregistered"];this.registrar=b.configuration.registrarServer,this.expires=b.configuration.registerExpires,this.contact=b.contact.toString(),d&&(this.contact+=";reg-id="+d,this.contact+=';+sip.instance=""'),this.call_id=a.Utils.createRandomToken(22),this.cseq=80,this.to_uri=b.configuration.uri,c.to_uri=this.to_uri,c.call_id=this.call_id,c.cseq=this.cseq,a.Utils.augment(this,a.ClientContext,[b,"REGISTER",this.registrar,{params:c}]),this.registrationTimer=null,this.registrationExpiredTimer=null,this.registered=!1,this.logger=b.getLogger("sip.registercontext"),this.initMoreEvents(e)},b.prototype={register:function(b){var c,d=this;b=b||{},c=(b.extraHeaders||[]).slice(),c.push("Contact: "+this.contact+";expires="+this.expires),c.push("Allow: "+a.Utils.getAllowedMethods(this.ua)),this.receiveResponse=function(c){var e,f,g,h=c.getHeaders("contact").length;if(c.cseq===this.cseq)switch(null!==this.registrationTimer&&(a.Timers.clearTimeout(this.registrationTimer),this.registrationTimer=null),!0){case/^1[0-9]{2}$/.test(c.status_code):this.emit("progress",c);break;case/^2[0-9]{2}$/.test(c.status_code):if(this.emit("accepted",c),c.hasHeader("expires")&&(f=c.getHeader("expires")),null!==this.registrationExpiredTimer&&(a.Timers.clearTimeout(this.registrationExpiredTimer),this.registrationExpiredTimer=null),!h){this.logger.warn("no Contact header in response to REGISTER, response ignored");break}for(;h--;){if(e=c.parseHeader("contact",h),e.uri.user===this.ua.contact.uri.user){f=e.getParam("expires");break}e=null}if(!e){this.logger.warn("no Contact header pointing to us, response ignored");break}f||(f=this.expires),this.registrationTimer=a.Timers.setTimeout(function(){d.registrationTimer=null,d.register(b)},1e3*f-3e3),this.registrationExpiredTimer=a.Timers.setTimeout(function(){d.logger.warn("registration expired"),d.registered&&d.unregistered(null,a.C.causes.EXPIRES)},1e3*f),e.hasParam("temp-gruu")&&(this.ua.contact.temp_gruu=a.URI.parse(e.getParam("temp-gruu").replace(/"/g,""))),e.hasParam("pub-gruu")&&(this.ua.contact.pub_gruu=a.URI.parse(e.getParam("pub-gruu").replace(/"/g,""))),this.registered=!0,this.emit("registered",c||null);break;case/^423$/.test(c.status_code):c.hasHeader("min-expires")?(this.expires=c.getHeader("min-expires"),this.register(b)):(this.logger.warn("423 response received for REGISTER without Min-Expires"),this.registrationFailure(c,a.C.causes.SIP_FAILURE_CODE));break;default:g=a.Utils.sipErrorCause(c.status_code),this.registrationFailure(c,g)}},this.onRequestTimeout=function(){this.registrationFailure(null,a.C.causes.REQUEST_TIMEOUT)},this.onTransportError=function(){this.registrationFailure(null,a.C.causes.CONNECTION_ERROR) +},this.cseq++,this.request.cseq=this.cseq,this.request.setHeader("cseq",this.cseq+" REGISTER"),this.request.extraHeaders=c,this.send()},registrationFailure:function(a,b){this.emit("failed",a||null,b||null)},onTransportClosed:function(){this.registered_before=this.registered,null!==this.registrationTimer&&(a.Timers.clearTimeout(this.registrationTimer),this.registrationTimer=null),null!==this.registrationExpiredTimer&&(a.Timers.clearTimeout(this.registrationExpiredTimer),this.registrationExpiredTimer=null),this.registered&&this.unregistered(null,a.C.causes.CONNECTION_ERROR)},onTransportConnected:function(){this.register()},close:function(){this.registered_before=this.registered,this.unregister()},unregister:function(b){var c;return this.registered?(b=b||{},c=(b.extraHeaders||[]).slice(),this.registered=!1,null!==this.registrationTimer&&(a.Timers.clearTimeout(this.registrationTimer),this.registrationTimer=null),b.all?(c.push("Contact: *"),c.push("Expires: 0")):c.push("Contact: "+this.contact+";expires=0"),this.receiveResponse=function(b){var c;switch(!0){case/^1[0-9]{2}$/.test(b.status_code):this.emit("progress",b);break;case/^2[0-9]{2}$/.test(b.status_code):this.emit("accepted",b),null!==this.registrationExpiredTimer&&(a.Timers.clearTimeout(this.registrationExpiredTimer),this.registrationExpiredTimer=null),this.unregistered(b);break;default:c=a.Utils.sipErrorCause(b.status_code),this.unregistered(b,c)}},this.onRequestTimeout=function(){},this.onTransportError=function(){},this.cseq++,this.request.cseq=this.cseq,this.request.setHeader("cseq",this.cseq+" REGISTER"),this.request.extraHeaders=c,void this.send()):void this.logger.warn("already unregistered")},unregistered:function(a,b){this.registered=!1,this.emit("unregistered",a||null,b||null)}},a.RegisterContext=b}},{}],17:[function(a,b){b.exports=function(a){var b;b=function(b,c){this.logger=c.getLogger("sip.requestsender"),this.ua=c,this.applicant=b,this.method=b.request.method,this.request=b.request,this.credentials=null,this.challenged=!1,this.staled=!1,c.status!==a.UA.C.STATUS_USER_CLOSED||this.method===a.C.BYE&&this.method===a.C.ACK||this.onTransportError()},b.prototype={send:function(){switch(this.method){case"INVITE":this.clientTransaction=new a.Transactions.InviteClientTransaction(this,this.request,this.ua.transport);break;case"ACK":this.clientTransaction=new a.Transactions.AckClientTransaction(this,this.request,this.ua.transport);break;default:this.clientTransaction=new a.Transactions.NonInviteClientTransaction(this,this.request,this.ua.transport)}return this.clientTransaction.send(),this.clientTransaction},onRequestTimeout:function(){this.applicant.onRequestTimeout()},onTransportError:function(){this.applicant.onTransportError()},receiveResponse:function(b){var c,d,e,f=b.status_code;if(401!==f&&407!==f||null===this.ua.configuration.password)this.applicant.receiveResponse(b);else{if(401===b.status_code?(d=b.parseHeader("www-authenticate"),e="authorization"):(d=b.parseHeader("proxy-authenticate"),e="proxy-authorization"),!d)return this.logger.warn(b.status_code+" with wrong or missing challenge, cannot authenticate"),void this.applicant.receiveResponse(b);if(!this.challenged||!this.staled&&d.stale===!0){if(this.credentials||(this.credentials=new a.DigestAuthentication(this.ua)),!this.credentials.authenticate(this.request,d))return void this.applicant.receiveResponse(b);this.challenged=!0,d.stale&&(this.staled=!0),b.method===a.C.REGISTER?c=this.applicant.cseq+=1:this.request.dialog?c=this.request.dialog.local_seqnum+=1:(c=this.request.cseq+1,this.request.cseq=c),this.request.setHeader("cseq",c+" "+this.method),this.request.setHeader(e,this.credentials.toString()),this.send()}else this.applicant.receiveResponse(b)}}},a.RequestSender=b}},{}],18:[function(a,b){(function(c){b.exports=function(b){"use strict";var c={},d=a("../package.json");Object.defineProperties(c,{version:{get:function(){return d.version}},name:{get:function(){return d.title}}}),a("./Utils.js")(c);var e=a("./Logger.js");c.LoggerFactory=a("./LoggerFactory.js")(b,e),a("./EventEmitter.js")(c),c.C=a("./Constants.js")(c.name,c.version),c.Exceptions=a("./Exceptions.js"),c.Timers=a("./Timers.js")(b),a("./Transport.js")(c,b),a("./Parser.js")(c),a("./SIPMessage.js")(c),a("./URI.js")(c),a("./NameAddrHeader.js")(c),a("./Transactions.js")(c,b);var f=a("./Dialog/RequestSender.js")(c,b);a("./Dialogs.js")(c,f),a("./RequestSender.js")(c),a("./RegisterContext.js")(c,b),c.MediaHandler=a("./MediaHandler.js")(c.EventEmitter),a("./ClientContext.js")(c),a("./ServerContext.js")(c);var g=a("./Session/DTMF.js")(c);a("./Session.js")(c,b,g),a("./Subscription.js")(c,b);var h=a("./WebRTC/MediaHandler.js")(c),i=a("./WebRTC/MediaStreamManager.js")(c);return c.WebRTC=a("./WebRTC.js")(c.Utils,b,h,i),a("./UA.js")(c,b),c.Hacks=a("./Hacks.js")(c),a("./SanityCheck.js")(c),c.DigestAuthentication=a("./DigestAuthentication.js")(c.Utils),c.Grammar=a("./Grammar/dist/Grammar")(c),c}("undefined"!=typeof window?window:c)}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../package.json":1,"./ClientContext.js":2,"./Constants.js":3,"./Dialog/RequestSender.js":4,"./Dialogs.js":5,"./DigestAuthentication.js":6,"./EventEmitter.js":7,"./Exceptions.js":8,"./Grammar/dist/Grammar":9,"./Hacks.js":10,"./Logger.js":11,"./LoggerFactory.js":12,"./MediaHandler.js":13,"./NameAddrHeader.js":14,"./Parser.js":15,"./RegisterContext.js":16,"./RequestSender.js":17,"./SIPMessage.js":19,"./SanityCheck.js":20,"./ServerContext.js":21,"./Session.js":22,"./Session/DTMF.js":23,"./Subscription.js":24,"./Timers.js":25,"./Transactions.js":26,"./Transport.js":27,"./UA.js":28,"./URI.js":29,"./Utils.js":30,"./WebRTC.js":31,"./WebRTC/MediaHandler.js":32,"./WebRTC/MediaStreamManager.js":33}],19:[function(a,b){b.exports=function(a){var b,c,d,e;b=function(b,c,d,e,f,g){var h,i,j,k;return e=e||{},b&&c&&d?(this.logger=d.getLogger("sip.sipmessage"),this.ua=d,this.headers={},this.method=b,this.ruri=c,this.body=g,this.extraHeaders=(f||[]).slice(),this.statusCode=e.status_code,this.reasonPhrase=e.reason_phrase,e.route_set?this.setHeader("route",e.route_set):d.configuration.usePreloadedRoute&&this.setHeader("route",d.transport.server.sip_uri),this.setHeader("via",""),this.setHeader("max-forwards",a.UA.C.MAX_FORWARDS),h=e.to_displayName||0===e.to_displayName?'"'+e.to_displayName+'" ':"",h+="<"+(e.to_uri||c)+">",h+=e.to_tag?";tag="+e.to_tag:"",this.to=new a.NameAddrHeader.parse(h),this.setHeader("to",h),i=e.from_displayName||0===e.from_displayName?'"'+e.from_displayName+'" ':d.configuration.displayName?'"'+d.configuration.displayName+'" ':"",i+="<"+(e.from_uri||d.configuration.uri)+">;tag=",i+=e.from_tag||a.Utils.newTag(),this.from=new a.NameAddrHeader.parse(i),this.setHeader("from",i),j=e.call_id||d.configuration.sipjsId+a.Utils.createRandomToken(15),this.call_id=j,this.setHeader("call-id",j),k=e.cseq||Math.floor(1e4*Math.random()),this.cseq=k,void this.setHeader("cseq",k+" "+b)):null},b.prototype={setHeader:function(b,c){this.headers[a.Utils.headerize(b)]=c instanceof Array?c:[c]},getHeader:function(b){var c,d,e=this.extraHeaders.length,f=this.headers[a.Utils.headerize(b)];if(f){if(f[0])return f[0]}else for(c=new RegExp("^\\s*"+b+"\\s*:","i"),d=0;e>d;d++)if(f=this.extraHeaders[d],c.test(f))return f.substring(f.indexOf(":")+1).trim()},getHeaders:function(b){var c,d,e,f=this.headers[a.Utils.headerize(b)],g=[];if(f){for(d=f.length,c=0;d>c;c++)g.push(f[c]);return g}for(d=this.extraHeaders.length,e=new RegExp("^\\s*"+b+"\\s*:","i"),c=0;d>c;c++)f=this.extraHeaders[c],e.test(f)&&g.push(f.substring(f.indexOf(":")+1).trim());return g},hasHeader:function(b){var c,d,e=this.extraHeaders.length;if(this.headers[a.Utils.headerize(b)])return!0;for(c=new RegExp("^\\s*"+b+"\\s*:","i"),d=0;e>d;d++)if(c.test(this.extraHeaders[d]))return!0;return!1},toString:function(){var b,c,d,e="",f=[];e+=this.method+" "+this.ruri+" SIP/2.0\r\n";for(b in this.headers)for(c=this.headers[b].length,d=0;c>d;d++)e+=b+": "+this.headers[b][d]+"\r\n";for(c=this.extraHeaders.length,d=0;c>d;d++)e+=this.extraHeaders[d].trim()+"\r\n";return this.method===a.C.REGISTER?f.push("path","gruu"):this.method===a.C.INVITE&&(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&f.push("gruu"),this.ua.configuration.rel100===a.C.supported.SUPPORTED&&f.push("100rel"),f.push("outbound"),e+="Supported: "+f+"\r\n",e+="User-Agent: "+this.ua.configuration.userAgentString+"\r\n",this.body?(c=a.Utils.str_utf8_length(this.body),e+="Content-Length: "+c+"\r\n\r\n",e+=this.body):e+="Content-Length: 0\r\n\r\n",e}},c=function(){this.data=null,this.headers=null,this.method=null,this.via=null,this.via_branch=null,this.call_id=null,this.cseq=null,this.from=null,this.from_tag=null,this.to=null,this.to_tag=null,this.body=null},c.prototype={addHeader:function(b,c){var d={raw:c};b=a.Utils.headerize(b),this.headers[b]?this.headers[b].push(d):this.headers[b]=[d]},getHeader:function(b){var c=this.headers[a.Utils.headerize(b)];if(c)return c[0]?c[0].raw:void 0},getHeaders:function(b){var c,d,e=this.headers[a.Utils.headerize(b)],f=[];if(!e)return[];for(d=e.length,c=0;d>c;c++)f.push(e[c].raw);return f},hasHeader:function(b){return this.headers[a.Utils.headerize(b)]?!0:!1},parseHeader:function(b,c){var d,e,f;return b=a.Utils.headerize(b),c=c||0,this.headers[b]?c>=this.headers[b].length?void this.logger.log('not so many "'+b+'" headers present'):(d=this.headers[b][c],e=d.raw,d.parsed?d.parsed:(f=a.Grammar.parse(e,b.replace(/-/g,"_")),-1===f?(this.headers[b].splice(c,1),void this.logger.warn('error parsing "'+b+'" header field with value "'+e+'"')):(d.parsed=f,f))):void this.logger.log('header "'+b+'" not present')},s:function(a,b){return this.parseHeader(a,b)},setHeader:function(b,c){var d={raw:c};this.headers[a.Utils.headerize(b)]=[d]},toString:function(){return this.data}},d=function(a){this.logger=a.getLogger("sip.sipmessage"),this.ua=a,this.headers={},this.ruri=null,this.transport=null,this.server_transaction=null},d.prototype=new c,d.prototype.reply=function(b,c,d,e,f,g){var h,i,j,k,l,m=[],n=this.getHeader("To"),o=0,p=0;if(b=b||null,c=c||null,!b||100>b||b>699)throw new TypeError("Invalid status_code: "+b);if(c&&"string"!=typeof c&&!(c instanceof String))throw new TypeError("Invalid reason_phrase: "+c);if(c=c||a.C.REASON_PHRASE[b]||"",d=(d||[]).slice(),l="SIP/2.0 "+b+" "+c+"\r\n",this.method===a.C.INVITE&&b>100&&200>=b)for(h=this.getHeaders("record-route"),j=h.length,o;j>o;o++)l+="Record-Route: "+h[o]+"\r\n";for(i=this.getHeaders("via"),j=i.length,p;j>p;p++)l+="Via: "+i[p]+"\r\n";for(!this.to_tag&&b>100?n+=";tag="+a.Utils.newTag():this.to_tag&&!this.s("to").hasParam("tag")&&(n+=";tag="+this.to_tag),l+="To: "+n+"\r\n",l+="From: "+this.getHeader("From")+"\r\n",l+="Call-ID: "+this.call_id+"\r\n",l+="CSeq: "+this.cseq+" "+this.method+"\r\n",j=d.length,k=0;j>k;k++)l+=d[k].trim()+"\r\n";return this.method===a.C.INVITE&&(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&m.push("gruu"),this.ua.configuration.rel100===a.C.supported.SUPPORTED&&m.push("100rel"),m.push("outbound"),l+="Supported: "+m+"\r\n",e?(j=a.Utils.str_utf8_length(e),l+="Content-Type: application/sdp\r\n",l+="Content-Length: "+j+"\r\n\r\n",l+=e):l+="Content-Length: 0\r\n\r\n",this.server_transaction.receiveResponse(b,l,f,g),l},d.prototype.reply_sl=function(b,c){var d,e,f=0,g=this.getHeaders("via"),h=g.length;if(b=b||null,c=c||null,!b||100>b||b>699)throw new TypeError("Invalid status_code: "+b);if(c&&"string"!=typeof c&&!(c instanceof String))throw new TypeError("Invalid reason_phrase: "+c);for(c=c||a.C.REASON_PHRASE[b]||"",e="SIP/2.0 "+b+" "+c+"\r\n",f;h>f;f++)e+="Via: "+g[f]+"\r\n";d=this.getHeader("To"),!this.to_tag&&b>100?d+=";tag="+a.Utils.newTag():this.to_tag&&!this.s("to").hasParam("tag")&&(d+=";tag="+this.to_tag),e+="To: "+d+"\r\n",e+="From: "+this.getHeader("From")+"\r\n",e+="Call-ID: "+this.call_id+"\r\n",e+="CSeq: "+this.cseq+" "+this.method+"\r\n",e+="Content-Length: 0\r\n\r\n",this.transport.send(e)},e=function(a){this.logger=a.getLogger("sip.sipmessage"),this.headers={},this.status_code=null,this.reason_phrase=null},e.prototype=new c,a.OutgoingRequest=b,a.IncomingRequest=d,a.IncomingResponse=e}},{}],20:[function(a,b){b.exports=function(a){function b(){return m.ruri&&"sip"===m.ruri.scheme?void 0:(j(416),!1)}function c(){return m.to_tag||m.call_id.substr(0,5)!==n.configuration.sipjsId?void 0:(j(482),!1)}function d(){var b=a.Utils.str_utf8_length(m.body),c=m.getHeader("content-length");return c>b?(j(400),!1):void 0}function e(){var b,c,d=m.from_tag,e=m.call_id,f=m.cseq;if(!m.to_tag)if(m.method===a.C.INVITE){if(b=n.transactions.ist[m.via_branch])return;for(c in n.transactions.ist)if(b=n.transactions.ist[c],b.request.from_tag===d&&b.request.call_id===e&&b.request.cseq===f)return j(482),!1}else{if(b=n.transactions.nist[m.via_branch])return;for(c in n.transactions.nist)if(b=n.transactions.nist[c],b.request.from_tag===d&&b.request.call_id===e&&b.request.cseq===f)return j(482),!1}}function f(){return m.getHeaders("via").length>1?(l.warn("More than one Via header field present in the response. Dropping the response"),!1):void 0}function g(){var a=n.configuration.viaHost;return m.via.host!==a||void 0!==m.via.port?(l.warn("Via sent-by in the response does not match UA Via host value. Dropping the response"),!1):void 0}function h(){var b=a.Utils.str_utf8_length(m.body),c=m.getHeader("content-length");return c>b?(l.warn("Message body length is lower than the value in Content-Length header field. Dropping the response"),!1):void 0}function i(){for(var a=["from","to","call_id","cseq","via"],b=a.length;b--;)if(!m.hasHeader(a[b]))return l.warn("Missing mandatory header field : "+a[b]+". Dropping the response"),!1}function j(b){var c,d="SIP/2.0 "+b+" "+a.C.REASON_PHRASE[b]+"\r\n",e=m.getHeaders("via"),f=e.length,g=0;for(g;f>g;g++)d+="Via: "+e[g]+"\r\n";c=m.getHeader("To"),m.to_tag||(c+=";tag="+a.Utils.newTag()),d+="To: "+c+"\r\n",d+="From: "+m.getHeader("From")+"\r\n",d+="Call-ID: "+m.call_id+"\r\n",d+="CSeq: "+m.cseq+" "+m.method+"\r\n",d+="\r\n",o.send(d)}var k,l,m,n,o,p=[],q=[],r=[];p.push(b),p.push(c),p.push(d),p.push(e),q.push(f),q.push(g),q.push(h),r.push(i),k=function(b,c,d){var e,f;for(m=b,n=c,o=d,l=n.getLogger("sip.sanitycheck"),e=r.length;e--;)if(f=r[e](m),f===!1)return!1;if(m instanceof a.IncomingRequest){for(e=p.length;e--;)if(f=p[e](m),f===!1)return!1}else if(m instanceof a.IncomingResponse)for(e=q.length;e--;)if(f=q[e](m),f===!1)return!1;return!0},a.sanityCheck=k}},{}],21:[function(a,b){b.exports=function(a){var b;b=function(b,c){var d=["progress","accepted","rejected","failed"];this.ua=b,this.logger=b.getLogger("sip.servercontext"),this.request=c,this.transaction=c.method===a.C.INVITE?new a.Transactions.InviteServerTransaction(c,b):new a.Transactions.NonInviteServerTransaction(c,b),c.body&&(this.body=c.body),c.hasHeader("Content-Type")&&(this.contentType=c.getHeader("Content-Type")),this.method=c.method,this.data={},this.localIdentity=c.to,this.remoteIdentity=c.from,this.initEvents(d)},b.prototype=new a.EventEmitter,b.prototype.progress=function(b){b=b||{};var c,d=b.statusCode||180,e=b.reasonPhrase||a.C.REASON_PHRASE[d],f=(b.extraHeaders||[]).slice(),g=b.body;if(100>d||d>199)throw new TypeError("Invalid statusCode: "+d);return c=this.request.reply(d,e,f,g),this.emit("progress",c,e),this},b.prototype.accept=function(b){b=b||{};var c,d=b.statusCode||200,e=b.reasonPhrase||a.C.REASON_PHRASE[d],f=(b.extraHeaders||[]).slice(),g=b.body;if(200>d||d>299)throw new TypeError("Invalid statusCode: "+d);return c=this.request.reply(d,e,f,g),this.emit("accepted",c,e),this},b.prototype.reject=function(b){b=b||{};var c,d=b.statusCode||480,e=b.reasonPhrase||a.C.REASON_PHRASE[d],f=(b.extraHeaders||[]).slice(),g=b.body;if(300>d||d>699)throw new TypeError("Invalid statusCode: "+d);return c=this.request.reply(d,e,f,g),this.emit("rejected",c,e),this.emit("failed",c,e),this},b.prototype.reply=function(a){a=a||{};var b=a.statusCode,c=a.reasonPhrase,d=(a.extraHeaders||[]).slice(),e=a.body;return this.request.reply(b,c,d,e),this},b.prototype.onRequestTimeout=function(){this.emit("failed",null,a.C.causes.REQUEST_TIMEOUT)},b.prototype.onTransportError=function(){this.emit("failed",null,a.C.causes.CONNECTION_ERROR)},a.ServerContext=b}},{}],22:[function(a,b){b.exports=function(a,b,c){var d,e,f,g={STATUS_NULL:0,STATUS_INVITE_SENT:1,STATUS_1XX_RECEIVED:2,STATUS_INVITE_RECEIVED:3,STATUS_WAITING_FOR_ANSWER:4,STATUS_ANSWERED:5,STATUS_WAITING_FOR_PRACK:6,STATUS_WAITING_FOR_ACK:7,STATUS_CANCELED:8,STATUS_TERMINATED:9,STATUS_ANSWERED_WAITING_FOR_PRACK:10,STATUS_EARLY_MEDIA:11,STATUS_CONFIRMED:12};d=function(b){var c=["connecting","terminated","dtmf","invite","cancel","refer","bye","hold","unhold","muted","unmuted"];this.status=g.STATUS_NULL,this.dialog=null,this.earlyDialogs={},this.mediaHandlerFactory=b||a.WebRTC.MediaHandler.defaultFactory,this.hasOffer=!1,this.hasAnswer=!1,this.timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null,rel1xxTimer:null,prackTimer:null},this.startTime=null,this.endTime=null,this.tones=null,this.local_hold=!1,this.remote_hold=!1,this.pending_actions={actions:[],length:function(){return this.actions.length},isPending:function(a){var b=0,c=this.actions.length;for(b;c>b;b++)if(this.actions[b].name===a)return!0;return!1},shift:function(){return this.actions.shift()},push:function(a){this.actions.push({name:a})},pop:function(a){var b=0,c=this.actions.length;for(b;c>b;b++)this.actions[b].name===a&&(this.actions.splice(b,1),c--,b--)}},this.early_sdp=null,this.rel100=a.C.supported.UNSUPPORTED,this.initMoreEvents(c)},d.prototype={dtmf:function(b,d){var e,f=[],h=this;if(d=d||{},void 0===b)throw new TypeError("Not enough arguments");if(this.status!==g.STATUS_CONFIRMED&&this.status!==g.STATUS_WAITING_FOR_ACK)throw new a.Exceptions.InvalidStateError(this.status);if(!b||"string"!=typeof b&&"number"!=typeof b||!b.toString().match(/^[0-9A-D#*,]+$/i))throw new TypeError("Invalid tones: "+b);for(b=b.toString().split("");b.length>0;)f.push(new c(this,b.shift(),d));if(this.tones)return this.tones=this.tones.concat(f),this;var i=function(){var b,c;return h.status!==g.STATUS_TERMINATED&&h.tones&&0!==h.tones.length?(b=h.tones.shift(),","===e?c=2e3:(b.on("failed",function(){h.tones=null}),b.send(d),c=b.duration+b.interToneGap),void a.Timers.setTimeout(i,c)):(h.tones=null,this)};return this.tones=f,i(),this},bye:function(b){b=b||{};var c=b.statusCode;if(this.status===g.STATUS_TERMINATED)return this.logger.error("Error: Attempted to send BYE in a terminated session."),this;if(this.logger.log("terminating Session"),c&&(200>c||c>=700))throw new TypeError("Invalid statusCode: "+c);return b.receiveResponse=function(){},this.sendRequest(a.C.BYE,b).terminated()},refer:function(b,c){c=c||{};var d=(c.extraHeaders||[]).slice(),e=b;if(void 0===b)throw new TypeError("Not enough arguments");if(b instanceof a.InviteServerContext||b instanceof a.InviteClientContext)d.push("Contact: "+this.contact),d.push("Allow: "+a.Utils.getAllowedMethods(this.ua)),d.push("Refer-To: <"+b.dialog.remote_target.toString()+"?Replaces="+b.dialog.id.call_id+"%3Bto-tag%3D"+b.dialog.id.remote_tag+"%3Bfrom-tag%3D"+b.dialog.id.local_tag+">");else{if(this.status!==g.STATUS_CONFIRMED)throw new a.Exceptions.InvalidStateError(this.status);try{b=a.Grammar.parse(b,"Refer_To").uri||b}catch(f){this.logger.debug(".refer() cannot parse Refer_To from",b),this.logger.debug("...falling through to normalizeTarget()")}if(b=this.ua.normalizeTarget(b),!b)throw new TypeError("Invalid target: "+e);d.push("Contact: "+this.contact),d.push("Allow: "+a.Utils.getAllowedMethods(this.ua)),d.push("Refer-To: "+b)}return this.sendRequest(a.C.REFER,{extraHeaders:d,body:c.body,receiveResponse:function(){}}),b.scheme.match("^sips?$")&&this.terminate(),this},followRefer:function(c){return function(c,d){var e=d.parseHeader("refer-to").uri;if(!e.scheme.match("^sips?$")){var f=e.toString();return void("undefined"!=typeof b&&"function"==typeof b.open?b.open(f):this.logger.warn("referred to non-SIP URI but window.open isn't a function: "+f))}a.Hacks.Chrome.getsConfusedAboutGUM(this);var g=this.ua.invite(d.parseHeader("refer-to").uri,{media:this.mediaHint});c.call(this,d,g),this.terminate()}.bind(this,c)},sendRequest:function(b,c){c=c||{};var d=this,e=new a.OutgoingRequest(b,this.dialog.remote_target,this.ua,{cseq:c.cseq||(this.dialog.local_seqnum+=1),call_id:this.dialog.id.call_id,from_uri:this.dialog.local_uri,from_tag:this.dialog.id.local_tag,to_uri:this.dialog.remote_uri,to_tag:this.dialog.id.remote_tag,route_set:this.dialog.route_set,statusCode:c.statusCode,reasonPhrase:c.reasonPhrase},c.extraHeaders||[],c.body);return new a.RequestSender({request:e,onRequestTimeout:function(){d.onRequestTimeout()},onTransportError:function(){d.onTransportError()},receiveResponse:c.receiveResponse||function(a){d.receiveNonInviteResponse(a)}},this.ua).send(),this.checkEvent(b.toLowerCase())&&this.emit(b.toLowerCase(),e),this},close:function(){var b;if(this.status===g.STATUS_TERMINATED)return this;this.logger.log("closing INVITE session "+this.id),this.mediaHandler&&this.mediaHandler.close();for(b in this.timers)a.Timers.clearTimeout(this.timers[b]);this.dialog&&(this.dialog.terminate(),delete this.dialog);for(b in this.earlyDialogs)this.earlyDialogs[b].terminate(),delete this.earlyDialogs[b];return this.status=g.STATUS_TERMINATED,delete this.ua.sessions[this.id],this},createDialog:function(b,c,d){var e,f,g=b["UAS"===c?"to_tag":"from_tag"],h=b["UAS"===c?"from_tag":"to_tag"],i=b.call_id+g+h;if(f=this.earlyDialogs[i],d)return f?!0:(f=new a.Dialog(this,b,c,a.Dialog.C.STATUS_EARLY),f.error?(this.logger.error(f.error),this.failed(b,a.C.causes.INTERNAL_ERROR),!1):(this.earlyDialogs[i]=f,!0));if(f){f.update(b,c),this.dialog=f,delete this.earlyDialogs[i];for(var j in this.earlyDialogs)this.earlyDialogs[j].terminate(),delete this.earlyDialogs[j];return!0}return e=new a.Dialog(this,b,c),e.error?(this.logger.error(e.error),this.failed(b,a.C.causes.INTERNAL_ERROR),!1):(this.to_tag=b.to_tag,this.dialog=e,!0)},isReadyToReinvite:function(){return this.mediaHandler.isReady()&&!this.dialog.uac_pending_reply&&!this.dialog.uas_pending_reply},mute:function(a){var b=this.mediaHandler.mute(a);b&&this.onmute(b)},unmute:function(a){var b=this.mediaHandler.unmute(a);b&&this.onunmute(b)},hold:function(){if(this.status!==g.STATUS_WAITING_FOR_ACK&&this.status!==g.STATUS_CONFIRMED)throw new a.Exceptions.InvalidStateError(this.status);return this.mediaHandler.hold(),this.isReadyToReinvite()?void(this.local_hold!==!0&&(this.onhold("local"),this.sendReinvite({mangle:function(a){return/a=(sendrecv|sendonly|recvonly|inactive)/.test(a)?(a=a.replace(/a=sendrecv\r\n/g,"a=sendonly\r\n"),a=a.replace(/a=recvonly\r\n/g,"a=inactive\r\n")):a=a.replace(/(m=[^\r]*\r\n)/g,"$1a=sendonly\r\n"),a}}))):void(this.pending_actions.isPending("unhold")?this.pending_actions.pop("unhold"):this.pending_actions.isPending("hold")||this.pending_actions.push("hold"))},unhold:function(){if(this.status!==g.STATUS_WAITING_FOR_ACK&&this.status!==g.STATUS_CONFIRMED)throw new a.Exceptions.InvalidStateError(this.status);return this.mediaHandler.unhold(),this.isReadyToReinvite()?void(this.local_hold!==!1&&(this.onunhold("local"),this.sendReinvite())):void(this.pending_actions.isPending("hold")?this.pending_actions.pop("hold"):this.pending_actions.isPending("unhold")||this.pending_actions.push("unhold"))},isOnHold:function(){return{local:this.local_hold,remote:this.remote_hold}},receiveReinvite:function(a){var b=this,c=a.getHeader("Content-Type"),d=!0;if(a.body){if("application/sdp"!==c)return this.logger.warn("invalid Content-Type"),void a.reply(415);d=/a=(sendonly|inactive)/.test(a.body),this.mediaHandler.setDescription(a.body,function(){b.mediaHandler.getDescription(function(c){a.reply(200,null,["Contact: "+b.contact],c,function(){b.status=g.STATUS_WAITING_FOR_ACK,b.setInvite2xxTimer(a,c),b.setACKTimer(),b.remote_hold&&!d?b.onunhold("remote"):!b.remote_hold&&d&&b.onhold("remote")})},function(){a.reply(500)},b.mediaHint)},function(c){b.logger.error(c),a.reply(488)})}},sendReinvite:function(b){b=b||{};var c=this,d=(b.extraHeaders||[]).slice(),e=b.eventHandlers||{},f=b.mangle||null;this.reinviteSucceeded=e.succeeded?e.succeeded:function(){a.Timers.clearTimeout(c.timers.ackTimer),a.Timers.clearTimeout(c.timers.invite2xxTimer),c.status=g.STATUS_CONFIRMED},this.reinviteFailed=e.failed?e.failed:function(){},d.push("Contact: "+this.contact),d.push("Allow: "+a.Utils.getAllowedMethods(this.ua)),d.push("Content-Type: application/sdp"),this.receiveResponse=this.receiveReinviteResponse,this.mediaHandler.getDescription(function(b){f&&(b=f(b)),c.dialog.sendRequest(c,a.C.INVITE,{extraHeaders:d,body:b})},function(){c.isReadyToReinvite()&&c.onReadyToReinvite(),c.reinviteFailed()},c.mediaHint)},receiveRequest:function(b){switch(b.method){case a.C.BYE:b.reply(200),this.status===g.STATUS_CONFIRMED&&(this.emit("bye",b),this.terminated(b,a.C.causes.BYE));break;case a.C.INVITE:this.status===g.STATUS_CONFIRMED&&(this.logger.log("re-INVITE received"),b.reply(488,null,['Warning: 399 sipjs "Cannot update media description"']));break;case a.C.INFO:if(this.status===g.STATUS_CONFIRMED||this.status===g.STATUS_WAITING_FOR_ACK){var d,e,f,h=b.getHeader("content-type"),i=/^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/,j=/^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/;h&&(h.match(/^application\/dtmf-relay/i)?(b.body&&(d=b.body.split("\r\n",2),2===d.length&&(i.test(d[0])&&(e=d[0].replace(i,"$2")),j.test(d[1])&&(f=parseInt(d[1].replace(j,"$2"),10)))),new c(this,e,{duration:f}).init_incoming(b)):b.reply(415,null,["Accept: application/dtmf-relay"]))}break;case a.C.REFER:if(this.status===g.STATUS_CONFIRMED){this.logger.log("REFER received"),b.reply(202,"Accepted");var k=this.checkListener("refer"),l=k?"SIP/2.0 100 Trying":"SIP/2.0 603 Declined";this.sendRequest(a.C.NOTIFY,{extraHeaders:["Event: refer","Subscription-State: terminated","Content-Type: message/sipfrag"],body:l,receiveResponse:function(){}}),k&&this.emit("refer",b)}}},receiveReinviteResponse:function(b){var c=this,d=b.getHeader("Content-Type");if(this.status!==g.STATUS_TERMINATED)switch(!0){case/^1[0-9]{2}$/.test(b.status_code):break;case/^2[0-9]{2}$/.test(b.status_code):if(this.status=g.STATUS_CONFIRMED,this.sendRequest(a.C.ACK,{cseq:b.cseq}),!b.body){this.reinviteFailed();break}if("application/sdp"!==d){this.reinviteFailed();break}this.mediaHandler.setDescription(b.body,function(){c.reinviteSucceeded()},function(){c.reinviteFailed()});break;default:this.reinviteFailed()}},acceptAndTerminate:function(b,c,d){var e=[];return c&&(d=d||a.C.REASON_PHRASE[c]||"",e.push("Reason: SIP ;cause="+c+'; text="'+d+'"')),(this.dialog||this.createDialog(b,"UAC"))&&(this.sendRequest(a.C.ACK,{cseq:b.cseq}),this.sendRequest(a.C.BYE,{extraHeaders:e})),this},setInvite2xxTimer:function(b,c){var d=this,e=a.Timers.T1;this.timers.invite2xxTimer=a.Timers.setTimeout(function f(){d.status===g.STATUS_WAITING_FOR_ACK&&(d.logger.log("no ACK received, attempting to retransmit OK"),b.reply(200,null,["Contact: "+d.contact],c),e=Math.min(2*e,a.Timers.T2),d.timers.invite2xxTimer=a.Timers.setTimeout(f,e))},e)},setACKTimer:function(){var b=this;this.timers.ackTimer=a.Timers.setTimeout(function(){b.status===g.STATUS_WAITING_FOR_ACK&&(b.logger.log("no ACK received for an extended period of time, terminating the call"),a.Timers.clearTimeout(b.timers.invite2xxTimer),b.sendRequest(a.C.BYE),b.terminated(null,a.C.causes.NO_ACK))},a.Timers.TIMER_H)},onReadyToReinvite:function(){var a=this.pending_actions.shift();a&&this[a.name]&&this[a.name]()},onTransportError:function(){this.status===g.STATUS_CONFIRMED?this.terminated(null,a.C.causes.CONNECTION_ERROR):this.status!==g.STATUS_TERMINATED&&this.failed(null,a.C.causes.CONNECTION_ERROR)},onRequestTimeout:function(){this.status===g.STATUS_CONFIRMED?this.terminated(null,a.C.causes.REQUEST_TIMEOUT):this.status!==g.STATUS_TERMINATED&&this.failed(null,a.C.causes.REQUEST_TIMEOUT)},onDialogError:function(b){this.status===g.STATUS_CONFIRMED?this.terminated(b,a.C.causes.DIALOG_ERROR):this.status!==g.STATUS_TERMINATED&&this.failed(b,a.C.causes.DIALOG_ERROR)},onhold:function(a){this["local"===a?"local_hold":"remote_hold"]=!0,this.emit("hold",{originator:a})},onunhold:function(a){this["local"===a?"local_hold":"remote_hold"]=!1,this.emit("unhold",{originator:a})},onmute:function(a){this.emit("muted",{audio:a.audio,video:a.video})},onunmute:function(a){this.emit("unmuted",{audio:a.audio,video:a.video})},failed:function(a,b){return this.close(),this.emit("failed",a,b)},rejected:function(a,b){return this.close(),this.emit("rejected",a||null,b)},canceled:function(){return this.close(),this.emit("cancel")},accepted:function(b,c){return c=c||b&&a.C.REASON_PHRASE[b.status_code]||"",this.startTime=new Date,this.emit("accepted",b,c)},terminated:function(a,b){return this.endTime=new Date,this.close(),this.emit("terminated",{message:a||null,cause:b||null})},connecting:function(a){return this.emit("connecting",{request:a})}},d.C=g,a.Session=d,e=function(b,c){function d(a,b){c.hasHeader(a)&&c.getHeader(a).toLowerCase().indexOf("100rel")>=0&&(h.rel100=b)}function e(){var b={extraHeaders:["Contact: "+h.contact]};h.rel100!==a.C.supported.REQUIRED&&h.progress(b),h.status=g.STATUS_WAITING_FOR_ANSWER,h.timers.userNoAnswerTimer=a.Timers.setTimeout(function(){c.reply(408),h.failed(c,a.C.causes.NO_ANSWER)},h.ua.configuration.noAnswerTimeout),f&&(h.timers.expiresTimer=a.Timers.setTimeout(function(){h.status===g.STATUS_WAITING_FOR_ANSWER&&(c.reply(487),h.failed(c,a.C.causes.EXPIRES))},f)),h.emit("invite",c)}var f,h=this,i=c.getHeader("Content-Type"),j=c.parseHeader("Content-Disposition");if(!j&&"application/sdp"!==i||j&&"render"===j.type)this.renderbody=c.body,this.rendertype=i;else if("application/sdp"!==i&&j&&"session"===j.type)return void c.reply(415);return a.Hacks.Firefox.cannotHandleExtraWhitespace(c),a.Hacks.AllBrowsers.maskDtls(c),a.Utils.augment(this,a.ServerContext,[b,c]),a.Utils.augment(this,a.Session,[b.configuration.mediaHandlerFactory]),this.status=g.STATUS_INVITE_RECEIVED,this.from_tag=c.from_tag,this.id=c.call_id+this.from_tag,this.request=c,this.contact=this.ua.contact.toString(),this.receiveNonInviteResponse=function(){},this.logger=b.getLogger("sip.inviteservercontext",this.id),this.ua.sessions[this.id]=this,c.hasHeader("expires")&&(f=1e3*c.getHeader("expires")),d("require",a.C.supported.REQUIRED),d("supported",a.C.supported.SUPPORTED),c.to_tag=a.Utils.newTag(),this.createDialog(c,"UAS",!0)?(this.mediaHandler=this.mediaHandlerFactory(this,{RTCConstraints:{optional:[{DtlsSrtpKeyAgreement:"true"}]}}),this.mediaHandler&&this.mediaHandler.getRemoteStreams&&(this.getRemoteStreams=this.mediaHandler.getRemoteStreams.bind(this.mediaHandler),this.getLocalStreams=this.mediaHandler.getLocalStreams.bind(this.mediaHandler)),void(!c.body||this.renderbody?a.Timers.setTimeout(e,0):(this.hasOffer=!0,this.mediaHandler.setDescription(c.body,e,function(a){h.logger.warn("invalid SDP"),h.logger.warn(a),c.reply(488)})))):void c.reply(500,"Missing Contact header field")},e.prototype={reject:function(b){if(this.status===g.STATUS_TERMINATED)throw new a.Exceptions.InvalidStateError(this.status);return this.logger.log("rejecting RTCSession"),a.ServerContext.prototype.reject.apply(this,[b]),this.terminated()},terminate:function(b){b=b||{};var c,d=(b.extraHeaders||[]).slice(),e=b.body,f=this;return this.status===g.STATUS_WAITING_FOR_ACK&&this.request.server_transaction.state!==a.Transactions.C.STATUS_TERMINATED?(c=this.dialog,this.receiveRequest=function(b){b.method===a.C.ACK&&(this.request(a.C.BYE,{extraHeaders:d,body:e}),c.terminate())},this.request.server_transaction.on("stateChanged",function(){this.state===a.Transactions.C.STATUS_TERMINATED&&(this.request=new a.OutgoingRequest(a.C.BYE,this.dialog.remote_target,this.ua,{cseq:this.dialog.local_seqnum+=1,call_id:this.dialog.id.call_id,from_uri:this.dialog.local_uri,from_tag:this.dialog.id.local_tag,to_uri:this.dialog.remote_uri,to_tag:this.dialog.id.remote_tag,route_set:this.dialog.route_set},d,e),new a.RequestSender({request:this.request,onRequestTimeout:function(){f.onRequestTimeout() +},onTransportError:function(){f.onTransportError()},receiveResponse:function(){}},this.ua).send(),c.terminate())}),this.emit("bye",this.request),this.terminated(),this.dialog=c,this.ua.dialogs[c.id.toString()]=c):this.status===g.STATUS_CONFIRMED?this.bye(b):this.reject(b),this},progress:function(b){function c(){f=b.statusCode||183,this.status=g.STATUS_WAITING_FOR_PRACK,i.push("Contact: "+this.contact),i.push("Require: 100rel"),i.push("RSeq: "+Math.floor(1e4*Math.random())),this.mediaHint=b.media,this.mediaHandler.getDescription(function(b){if(!this.isCanceled&&this.status!==g.STATUS_TERMINATED){this.early_sdp=b,this[this.hasOffer?"hasAnswer":"hasOffer"]=!0;var c=a.Timers.T1;this.timers.rel1xxTimer=a.Timers.setTimeout(function d(){this.request.reply(f,null,i,b),c*=2,this.timers.rel1xxTimer=a.Timers.setTimeout(d.bind(this),c)}.bind(this),c),this.timers.prackTimer=a.Timers.setTimeout(function(){this.status===g.STATUS_WAITING_FOR_PRACK&&(this.logger.log("no PRACK received, rejecting the call"),a.Timers.clearTimeout(this.timers.rel1xxTimer),this.request.reply(504),this.terminated(null,a.C.causes.NO_PRACK))}.bind(this),64*a.Timers.T1),e=this.request.reply(f,h,i,b),this.emit("progress",e,h)}}.bind(this),function(){this.failed(null,a.C.causes.WEBRTC_ERROR)}.bind(this),b.media)}function d(){e=this.request.reply(f,h,i,j),this.emit("progress",e,h)}b=b||{};var e,f=b.statusCode||180,h=b.reasonPhrase,i=(b.extraHeaders||[]).slice(),j=b.body;if(100>f||f>199)throw new TypeError("Invalid statusCode: "+f);return this.isCanceled||this.status===g.STATUS_TERMINATED?this:(100!==b.statusCode&&(this.rel100===a.C.supported.REQUIRED||this.rel100===a.C.supported.SUPPORTED&&b.rel100||this.rel100===a.C.supported.SUPPORTED&&this.ua.configuration.rel100===a.C.supported.REQUIRED)?c.apply(this):d.apply(this),this)},accept:function(b){b=b||{},b=a.Utils.desugarSessionOptions(b),a.Utils.optionsOverride(b,"media","mediaConstraints",!0,this.logger,this.ua.configuration.media),this.mediaHint=b.media;var c=this,d=this.request,e=(b.extraHeaders||[]).slice(),f=function(b){var f,h=function(){c.status=g.STATUS_WAITING_FOR_ACK,c.setInvite2xxTimer(d,b),c.setACKTimer()},i=function(){c.failed(null,a.C.causes.CONNECTION_ERROR)};c.mediaHandler.render(),e.push("Contact: "+c.contact),c.hasOffer?c.hasAnswer=!0:c.hasOffer=!0,f=d.reply(200,null,e,b,h,i),c.status!==g.STATUS_TERMINATED&&c.accepted(f,a.C.REASON_PHRASE[200])},h=function(){c.status!==g.STATUS_TERMINATED&&c.failed(null,a.C.causes.WEBRTC_ERROR)};if(this.status===g.STATUS_WAITING_FOR_PRACK)return this.status=g.STATUS_ANSWERED_WAITING_FOR_PRACK,this;if(this.status===g.STATUS_WAITING_FOR_ANSWER)this.status=g.STATUS_ANSWERED;else if(this.status!==g.STATUS_EARLY_MEDIA)throw new a.Exceptions.InvalidStateError(this.status);return this.createDialog(d,"UAS")?(a.Timers.clearTimeout(this.timers.userNoAnswerTimer),this.status===g.STATUS_EARLY_MEDIA?f():this.mediaHandler.getDescription(f,h,c.mediaHint),this):(d.reply(500,"Missing Contact header field"),this)},receiveRequest:function(b){function c(){var c;a.Timers.clearTimeout(this.timers.ackTimer),a.Timers.clearTimeout(this.timers.invite2xxTimer),this.status=g.STATUS_CONFIRMED,this.unmute(),c=b.getHeader("Content-Type"),"application/sdp"!==c&&(this.renderbody=b.body,this.rendertype=c)}switch(b.method){case a.C.CANCEL:(this.status===g.STATUS_WAITING_FOR_ANSWER||this.status===g.STATUS_WAITING_FOR_PRACK||this.status===g.STATUS_ANSWERED_WAITING_FOR_PRACK||this.status===g.STATUS_EARLY_MEDIA||this.status===g.STATUS_ANSWERED)&&(this.status=g.STATUS_CANCELED,this.request.reply(487),this.canceled(b),this.rejected(b,a.C.causes.CANCELED),this.failed(b,a.C.causes.CANCELED));break;case a.C.ACK:this.status===g.STATUS_WAITING_FOR_ACK&&(this.hasAnswer?c.apply(this):b.body&&"application/sdp"===b.getHeader("content-type")?(a.Hacks.Firefox.cannotHandleExtraWhitespace(b),a.Hacks.AllBrowsers.maskDtls(b),this.hasAnswer=!0,this.mediaHandler.setDescription(b.body,c.bind(this),function(c){this.logger.warn(c),this.terminate({statusCode:"488",reasonPhrase:"Bad Media Description"}),this.failed(b,a.C.causes.BAD_MEDIA_DESCRIPTION)}.bind(this))):this.early_sdp?c.apply(this):this.failed(b,a.C.causes.BAD_MEDIA_DESCRIPTION));break;case a.C.PRACK:this.status===g.STATUS_WAITING_FOR_PRACK||this.status===g.STATUS_ANSWERED_WAITING_FOR_PRACK?this.hasAnswer?(a.Timers.clearTimeout(this.timers.rel1xxTimer),a.Timers.clearTimeout(this.timers.prackTimer),b.reply(200),this.status===g.STATUS_ANSWERED_WAITING_FOR_PRACK&&(this.status=g.STATUS_EARLY_MEDIA,this.accept()),this.status=g.STATUS_EARLY_MEDIA,this.mute()):b.body&&"application/sdp"===b.getHeader("content-type")?(this.hasAnswer=!0,this.mediaHandler.setDescription(b.body,function(){a.Timers.clearTimeout(this.timers.rel1xxTimer),a.Timers.clearTimeout(this.timers.prackTimer),b.reply(200),this.status===g.STATUS_ANSWERED_WAITING_FOR_PRACK&&(this.status=g.STATUS_EARLY_MEDIA,this.accept()),this.status=g.STATUS_EARLY_MEDIA,this.mute()}.bind(this),function(c){this.logger.warn(c),this.terminate({statusCode:"488",reasonPhrase:"Bad Media Description"}),this.failed(b,a.C.causes.BAD_MEDIA_DESCRIPTION)}.bind(this))):(this.terminate({statusCode:"488",reasonPhrase:"Bad Media Description"}),this.failed(b,a.C.causes.BAD_MEDIA_DESCRIPTION)):this.status===g.STATUS_EARLY_MEDIA&&b.reply(200);break;default:d.prototype.receiveRequest.apply(this,[b])}}},a.InviteServerContext=e,f=function(b,c,d){d=d||{};var e,f,h=(d.extraHeaders||[]).slice(),i=d.stunServers||null,j=d.turnServers||null,k=b.configuration.mediaHandlerFactory.isSupported;if(k&&!k())throw new a.Exceptions.NotSupportedError("Media not supported");if(this.RTCConstraints=d.RTCConstraints||{},this.inviteWithoutSdp=d.inviteWithoutSdp||!1,this.anonymous=d.anonymous||!1,this.renderbody=d.renderbody||null,this.rendertype=d.rendertype||"text/plain",e={from_tag:this.from_tag},this.contact=b.contact.toString({anonymous:this.anonymous,outbound:this.anonymous?!b.contact.temp_gruu:!b.contact.pub_gruu}),this.anonymous&&(e.from_displayName="Anonymous",e.from_uri="sip:anonymous@anonymous.invalid",h.push("P-Preferred-Identity: "+b.configuration.uri.toString()),h.push("Privacy: id")),h.push("Contact: "+this.contact),h.push("Allow: "+a.Utils.getAllowedMethods(b)),this.inviteWithoutSdp?this.renderbody&&(h.push("Content-Type: "+this.rendertype),h.push("Content-Disposition: render;handling=optional")):h.push("Content-Type: application/sdp"),b.configuration.rel100===a.C.supported.REQUIRED&&h.push("Require: 100rel"),d.extraHeaders=h,d.params=e,a.Utils.augment(this,a.ClientContext,[b,a.C.INVITE,c,d]),a.Utils.augment(this,a.Session,[b.configuration.mediaHandlerFactory]),this.status!==g.STATUS_NULL)throw new a.Exceptions.InvalidStateError(this.status);if(this.from_tag=a.Utils.newTag(),this.isCanceled=!1,this.received_100=!1,this.method=a.C.INVITE,this.receiveNonInviteResponse=this.receiveResponse,this.receiveResponse=this.receiveInviteResponse,this.logger=b.getLogger("sip.inviteclientcontext"),i){if(f=a.UA.configuration_check.optional.stunServers(i),!f)throw new TypeError("Invalid stunServers: "+i);this.stunServers=f}if(j){if(f=a.UA.configuration_check.optional.turnServers(j),!f)throw new TypeError("Invalid turnServers: "+j);this.turnServers=f}b.applicants[this]=this,this.id=this.request.call_id+this.from_tag,this.mediaHandler=this.mediaHandlerFactory(this,{RTCConstraints:this.RTCConstraints,stunServers:this.stunServers,turnServers:this.turnServers}),this.mediaHandler&&this.mediaHandler.getRemoteStreams&&(this.getRemoteStreams=this.mediaHandler.getRemoteStreams.bind(this.mediaHandler),this.getLocalStreams=this.mediaHandler.getLocalStreams.bind(this.mediaHandler))},f.prototype={invite:function(b){var c=this;return b=b||{},a.Utils.optionsOverride(b,"media","mediaConstraints",!0,this.logger,this.ua.configuration.media),this.mediaHint=b.media,this.ua.sessions[this.id]=this,this.inviteWithoutSdp?(this.request.body=c.renderbody,this.status=g.STATUS_INVITE_SENT,this.send()):this.mediaHandler.getDescription(function(a){c.isCanceled||c.status===g.STATUS_TERMINATED||(c.hasOffer=!0,c.request.body=a,c.status=g.STATUS_INVITE_SENT,c.send())},function(){c.status!==g.STATUS_TERMINATED&&c.failed(null,a.C.causes.WEBRTC_ERROR)},c.mediaHint),this},receiveInviteResponse:function(b){var c,d=this,e=b.call_id+b.from_tag+b.to_tag,f=[],h={};if(this.status!==g.STATUS_TERMINATED&&b.method===a.C.INVITE){if(this.dialog&&b.status_code>=200&&b.status_code<=299){if(e!==this.dialog.id.toString()){if(!this.createDialog(b,"UAC",!0))return;return this.earlyDialogs[e].sendRequest(this,a.C.ACK,{body:a.Utils.generateFakeSDP(b.body)}),this.earlyDialogs[e].sendRequest(this,a.C.BYE),void(this.status!==g.STATUS_CONFIRMED&&this.failed(b,a.C.causes.WEBRTC_ERROR))}if(this.status===g.STATUS_CONFIRMED)return void this.sendRequest(a.C.ACK,{cseq:b.cseq});if(!this.hasAnswer)return}if(this.dialog&&b.status_code<200){if(!this.earlyDialogs[e]&&!this.createDialog(b,"UAC",!0))return;return f.push("RAck: "+b.getHeader("rseq")+" "+b.getHeader("cseq")),this.earlyDialogs[e].pracked.push(b.getHeader("rseq")),void this.earlyDialogs[e].sendRequest(this,a.C.PRACK,{extraHeaders:f,body:a.Utils.generateFakeSDP(b.body)})}if(this.isCanceled)return void(b.status_code>=100&&b.status_code<200?(this.request.cancel(this.cancelReason),this.canceled(null)):b.status_code>=200&&b.status_code<299&&(this.acceptAndTerminate(b),this.emit("bye",this.request)));switch(!0){case/^100$/.test(b.status_code):this.received_100=!0;break;case/^1[0-9]{2}$/.test(b.status_code):if(!b.to_tag){this.logger.warn("1xx response received without to tag");break}if(b.hasHeader("contact")&&!this.createDialog(b,"UAC",!0))break;if(this.status=g.STATUS_1XX_RECEIVED,b.hasHeader("require")&&-1!==b.getHeader("require").indexOf("100rel")){if(this.dialog||!this.earlyDialogs[e])break;if(-1!==this.earlyDialogs[e].pracked.indexOf(b.getHeader("rseq"))||this.earlyDialogs[e].pracked[this.earlyDialogs[e].pracked.length-1]>=b.getHeader("rseq")&&this.earlyDialogs[e].pracked.length>0)return;if(a.Hacks.Firefox.cannotHandleExtraWhitespace(b),a.Hacks.AllBrowsers.maskDtls(b),b.body)if(this.hasOffer){if(!this.createDialog(b,"UAC"))break;this.hasAnswer=!0,this.mediaHandler.setDescription(b.body,function(){f.push("RAck: "+b.getHeader("rseq")+" "+b.getHeader("cseq")),d.dialog.pracked.push(b.getHeader("rseq")),d.sendRequest(a.C.PRACK,{extraHeaders:f,receiveResponse:function(){}}),d.status=g.STATUS_EARLY_MEDIA,d.mute(),d.emit("progress",b)},function(c){d.logger.warn(c),d.acceptAndTerminate(b,488,"Not Acceptable Here"),d.failed(b,a.C.causes.BAD_MEDIA_DESCRIPTION)})}else this.earlyDialogs[e].pracked.push(b.getHeader("rseq")),this.earlyDialogs[e].mediaHandler.setDescription(b.body,function(){d.earlyDialogs[e].mediaHandler.getDescription(function(c){f.push("Content-Type: application/sdp"),f.push("RAck: "+b.getHeader("rseq")+" "+b.getHeader("cseq")),d.earlyDialogs[e].sendRequest(d,a.C.PRACK,{extraHeaders:f,body:c}),d.status=g.STATUS_EARLY_MEDIA,d.emit("progress",b)},function(){d.earlyDialogs[e].pracked.push(b.getHeader("rseq")),d.status!==g.STATUS_TERMINATED&&d.failed(null,a.C.causes.WEBRTC_ERROR)},d.mediaHint)},function(a){d.earlyDialogs[e].pracked.splice(d.earlyDialogs[e].pracked.indexOf(b.getHeader("rseq")),1),d.logger.warn("invalid SDP"),d.logger.warn(a)});else f.push("RAck: "+b.getHeader("rseq")+" "+b.getHeader("cseq")),this.earlyDialogs[e].pracked.push(b.getHeader("rseq")),this.earlyDialogs[e].sendRequest(this,a.C.PRACK,{extraHeaders:f}),this.emit("progress",b)}else this.emit("progress",b);break;case/^2[0-9]{2}$/.test(b.status_code):var i=this.request.cseq+" "+this.request.method;if(i!==b.getHeader("cseq"))break;if(this.status===g.STATUS_EARLY_MEDIA&&this.dialog){this.status=g.STATUS_CONFIRMED,this.unmute(),h={},this.renderbody&&(f.push("Content-Type: "+this.rendertype),h.extraHeaders=f,h.body=this.renderbody),h.cseq=b.cseq,this.sendRequest(a.C.ACK,h),this.accepted(b);break}if(this.dialog)break;if(a.Hacks.Firefox.cannotHandleExtraWhitespace(b),a.Hacks.AllBrowsers.maskDtls(b),this.hasOffer)if(this.hasAnswer)this.renderbody&&(f.push("Content-Type: "+d.rendertype),h.extraHeaders=f,h.body=this.renderbody),this.sendRequest(a.C.ACK,h);else{if(!b.body){this.acceptAndTerminate(b,400,"Missing session description"),this.failed(b,a.C.causes.BAD_MEDIA_DESCRIPTION);break}if(!this.createDialog(b,"UAC"))break;this.hasAnswer=!0,this.mediaHandler.setDescription(b.body,function(){var c={};d.status=g.STATUS_CONFIRMED,d.unmute(),d.renderbody&&(f.push("Content-Type: "+d.rendertype),c.extraHeaders=f,c.body=d.renderbody),c.cseq=b.cseq,d.sendRequest(a.C.ACK,c),d.accepted(b)},function(c){d.logger.warn(c),d.acceptAndTerminate(b,488,"Not Acceptable Here"),d.failed(b,a.C.causes.BAD_MEDIA_DESCRIPTION)})}else if(this.earlyDialogs[e]&&this.earlyDialogs[e].mediaHandler.localMedia){if(this.hasOffer=!0,this.hasAnswer=!0,this.mediaHandler=this.earlyDialogs[e].mediaHandler,!this.createDialog(b,"UAC"))break;this.status=g.STATUS_CONFIRMED,this.sendRequest(a.C.ACK,{cseq:b.cseq}),this.unmute(),this.accepted(b)}else{if(!b.body){this.acceptAndTerminate(b,400,"Missing session description"),this.failed(b,a.C.causes.BAD_MEDIA_DESCRIPTION);break}if(!this.createDialog(b,"UAC"))break;this.hasOffer=!0,this.mediaHandler.setDescription(b.body,function(){d.mediaHandler.getDescription(function(c){d.isCanceled||d.status===g.STATUS_TERMINATED||(c=a.Hacks.Firefox.hasMissingCLineInSDP(c),d.status=g.STATUS_CONFIRMED,d.hasAnswer=!0,d.unmute(),d.sendRequest(a.C.ACK,{body:c,extraHeaders:["Content-Type: application/sdp"],cseq:b.cseq}),d.accepted(b))},function(){d.logger.warn("there was a problem")},d.mediaHint)},function(a){d.logger.warn("invalid SDP"),d.logger.warn(a),b.reply(488)})}break;default:c=a.Utils.sipErrorCause(b.status_code),this.failed(b,c),this.rejected(b,c)}}},cancel:function(b){b=b||{};var c,d=b.status_code,e=b.reasonPhrase;if(this.status===g.STATUS_TERMINATED)throw new a.Exceptions.InvalidStateError(this.status);if(this.logger.log("canceling RTCSession"),d&&(200>d||d>=700))throw new TypeError("Invalid status_code: "+d);return d&&(e=e||a.C.REASON_PHRASE[d]||"",c="SIP ;cause="+d+' ;text="'+e+'"'),this.status===g.STATUS_NULL||this.status===g.STATUS_INVITE_SENT&&!this.received_100?(this.isCanceled=!0,this.cancelReason=c):(this.status===g.STATUS_INVITE_SENT||this.status===g.STATUS_1XX_RECEIVED||this.status===g.STATUS_EARLY_MEDIA)&&this.request.cancel(c),this.canceled()},terminate:function(a){return this.status===g.STATUS_TERMINATED?this:(this.status===g.STATUS_WAITING_FOR_ACK||this.status===g.STATUS_CONFIRMED?this.bye(a):this.cancel(a),this.terminated())},receiveRequest:function(b){return b.method===a.C.CANCEL,b.method===a.C.ACK&&this.status===g.STATUS_WAITING_FOR_ACK&&(a.Timers.clearTimeout(this.timers.ackTimer),a.Timers.clearTimeout(this.timers.invite2xxTimer),this.status=g.STATUS_CONFIRMED,this.unmute(),this.accepted()),d.prototype.receiveRequest.apply(this,[b])}},a.InviteClientContext=f}},{}],23:[function(a,b){b.exports=function(a){var b,c={MIN_DURATION:70,MAX_DURATION:6e3,DEFAULT_DURATION:100,MIN_INTER_TONE_GAP:50,DEFAULT_INTER_TONE_GAP:500};return b=function(c,d,e){var f,g,h=["succeeded","failed"];if(void 0===d)throw new TypeError("Not enough arguments");if(this.logger=c.ua.getLogger("sip.invitecontext.dtmf",c.id),this.owner=c,this.direction=null,e=e||{},f=e.duration||null,g=e.interToneGap||null,"string"==typeof d)d=d.toUpperCase();else{if("number"!=typeof d)throw new TypeError("Invalid tone: "+d);d=d.toString()}if(!d.match(/^[0-9A-D#*]$/))throw new TypeError("Invalid tone: "+d);if(this.tone=d,f&&!a.Utils.isDecimal(f))throw new TypeError("Invalid tone duration: "+f);if(f?fb.C.MAX_DURATION?(this.logger.warn('"duration" value is greater than the maximum allowed, setting it to '+b.C.MAX_DURATION+" milliseconds"),f=b.C.MAX_DURATION):f=Math.abs(f):f=b.C.DEFAULT_DURATION,this.duration=f,g&&!a.Utils.isDecimal(g))throw new TypeError("Invalid interToneGap: "+g);g?ge)switch(this.state){case b.STATUS_TRYING:case b.STATUS_PROCEEDING:this.stateChanged(b.STATUS_PROCEEDING),this.request_sender.receiveResponse(c)}else switch(this.state){case b.STATUS_TRYING:case b.STATUS_PROCEEDING:this.stateChanged(b.STATUS_COMPLETED),a.Timers.clearTimeout(this.F),408===e?this.request_sender.onRequestTimeout():this.request_sender.receiveResponse(c),this.K=a.Timers.setTimeout(d.timer_K.bind(d),a.Timers.TIMER_K);break;case b.STATUS_COMPLETED:}};var d=function(a,c,d){var e,f=this,g=["stateChanged"];this.type=b.INVITE_CLIENT,this.transport=d,this.id="z9hG4bK"+Math.floor(1e7*Math.random()),this.request_sender=a,this.request=c,this.logger=a.ua.getLogger("sip.transaction.ict",this.id),e="SIP/2.0/"+(a.ua.configuration.hackViaTcp?"TCP":d.server.scheme),e+=" "+a.ua.configuration.viaHost+";branch="+this.id,this.request.setHeader("via",e),this.request_sender.ua.newTransaction(this),this.request.cancel=function(a){f.cancel_request(f,a)},this.initEvents(g)};d.prototype=new a.EventEmitter,d.prototype.stateChanged=function(a){this.state=a,this.emit("stateChanged")},d.prototype.send=function(){var c=this;this.stateChanged(b.STATUS_CALLING),this.B=a.Timers.setTimeout(c.timer_B.bind(c),a.Timers.TIMER_B),this.transport.send(this.request)||this.onTransportError()},d.prototype.onTransportError=function(){this.logger.log("transport error occurred, deleting INVITE client transaction "+this.id),a.Timers.clearTimeout(this.B),a.Timers.clearTimeout(this.D),a.Timers.clearTimeout(this.M),this.stateChanged(b.STATUS_TERMINATED),this.request_sender.ua.destroyTransaction(this),this.state!==b.STATUS_ACCEPTED&&this.request_sender.onTransportError()},d.prototype.timer_M=function(){this.logger.log("Timer M expired for INVITE client transaction "+this.id),this.state===b.STATUS_ACCEPTED&&(a.Timers.clearTimeout(this.B),this.stateChanged(b.STATUS_TERMINATED),this.request_sender.ua.destroyTransaction(this))},d.prototype.timer_B=function(){this.logger.log("Timer B expired for INVITE client transaction "+this.id),this.state===b.STATUS_CALLING&&(this.stateChanged(b.STATUS_TERMINATED),this.request_sender.ua.destroyTransaction(this),this.request_sender.onRequestTimeout())},d.prototype.timer_D=function(){this.logger.log("Timer D expired for INVITE client transaction "+this.id),a.Timers.clearTimeout(this.B),this.stateChanged(b.STATUS_TERMINATED),this.request_sender.ua.destroyTransaction(this)},d.prototype.sendACK=function(b){var c=this;this.ack="ACK "+this.request.ruri+" SIP/2.0\r\n",this.ack+="Via: "+this.request.headers.Via.toString()+"\r\n",this.request.headers.Route&&(this.ack+="Route: "+this.request.headers.Route.toString()+"\r\n"),this.ack+="To: "+b.getHeader("to")+"\r\n",this.ack+="From: "+this.request.headers.From.toString()+"\r\n",this.ack+="Call-ID: "+this.request.headers["Call-ID"].toString()+"\r\n",this.ack+="CSeq: "+this.request.headers.CSeq.toString().split(" ")[0],this.ack+=" ACK\r\n\r\n",this.D=a.Timers.setTimeout(c.timer_D.bind(c),a.Timers.TIMER_D),this.transport.send(this.ack)},d.prototype.cancel_request=function(c,d){var e=c.request;this.cancel=a.C.CANCEL+" "+e.ruri+" SIP/2.0\r\n",this.cancel+="Via: "+e.headers.Via.toString()+"\r\n",this.request.headers.Route&&(this.cancel+="Route: "+e.headers.Route.toString()+"\r\n"),this.cancel+="To: "+e.headers.To.toString()+"\r\n",this.cancel+="From: "+e.headers.From.toString()+"\r\n",this.cancel+="Call-ID: "+e.headers["Call-ID"].toString()+"\r\n",this.cancel+="CSeq: "+e.headers.CSeq.toString().split(" ")[0]+" CANCEL\r\n",d&&(this.cancel+="Reason: "+d+"\r\n"),this.cancel+="Content-Length: 0\r\n\r\n",this.state===b.STATUS_PROCEEDING&&this.transport.send(this.cancel)},d.prototype.receiveResponse=function(c){var d=this,e=c.status_code;if(e>=100&&199>=e)switch(this.state){case b.STATUS_CALLING:this.stateChanged(b.STATUS_PROCEEDING),this.request_sender.receiveResponse(c),this.cancel&&this.transport.send(this.cancel);break;case b.STATUS_PROCEEDING:this.request_sender.receiveResponse(c)}else if(e>=200&&299>=e)switch(this.state){case b.STATUS_CALLING:case b.STATUS_PROCEEDING:this.stateChanged(b.STATUS_ACCEPTED),this.M=a.Timers.setTimeout(d.timer_M.bind(d),a.Timers.TIMER_M),this.request_sender.receiveResponse(c);break;case b.STATUS_ACCEPTED:this.request_sender.receiveResponse(c)}else if(e>=300&&699>=e)switch(this.state){case b.STATUS_CALLING:case b.STATUS_PROCEEDING:this.stateChanged(b.STATUS_COMPLETED),this.sendACK(c),this.request_sender.receiveResponse(c);break;case b.STATUS_COMPLETED:this.sendACK(c)}};var e=function(a,b,c){var d;this.transport=c,this.id="z9hG4bK"+Math.floor(1e7*Math.random()),this.request_sender=a,this.request=b,this.logger=a.ua.getLogger("sip.transaction.nict",this.id),d="SIP/2.0/"+(a.ua.configuration.hackViaTcp?"TCP":c.server.scheme),d+=" "+a.ua.configuration.viaHost+";branch="+this.id,this.request.setHeader("via",d)};e.prototype=new a.EventEmitter,e.prototype.send=function(){this.transport.send(this.request)||this.onTransportError()},e.prototype.onTransportError=function(){this.logger.log("transport error occurred, for an ACK client transaction "+this.id),this.request_sender.onTransportError()};var f=function(a,c){var d=["stateChanged"];this.type=b.NON_INVITE_SERVER,this.id=a.via_branch,this.request=a,this.transport=a.transport,this.ua=c,this.last_response="",a.server_transaction=this,this.logger=c.getLogger("sip.transaction.nist",this.id),this.state=b.STATUS_TRYING,c.newTransaction(this),this.initEvents(d)};f.prototype=new a.EventEmitter,f.prototype.stateChanged=function(a){this.state=a,this.emit("stateChanged")},f.prototype.timer_J=function(){this.logger.log("Timer J expired for non-INVITE server transaction "+this.id),this.stateChanged(b.STATUS_TERMINATED),this.ua.destroyTransaction(this)},f.prototype.onTransportError=function(){this.transportError||(this.transportError=!0,this.logger.log("transport error occurred, deleting non-INVITE server transaction "+this.id),a.Timers.clearTimeout(this.J),this.stateChanged(b.STATUS_TERMINATED),this.ua.destroyTransaction(this))},f.prototype.receiveResponse=function(c,d,e,f){var g=this;if(100===c)switch(this.state){case b.STATUS_TRYING:this.stateChanged(b.STATUS_PROCEEDING),this.transport.send(d)||this.onTransportError();break;case b.STATUS_PROCEEDING:this.last_response=d,this.transport.send(d)?e&&e():(this.onTransportError(),f&&f())}else if(c>=200&&699>=c)switch(this.state){case b.STATUS_TRYING:case b.STATUS_PROCEEDING:this.stateChanged(b.STATUS_COMPLETED),this.last_response=d,this.J=a.Timers.setTimeout(g.timer_J.bind(g),a.Timers.TIMER_J),this.transport.send(d)?e&&e():(this.onTransportError(),f&&f());break;case b.STATUS_COMPLETED:}};var g=function(a,c){var d=["stateChanged"];this.type=b.INVITE_SERVER,this.id=a.via_branch,this.request=a,this.transport=a.transport,this.ua=c,this.last_response="",a.server_transaction=this,this.logger=c.getLogger("sip.transaction.ist",this.id),this.state=b.STATUS_PROCEEDING,c.newTransaction(this),this.resendProvisionalTimer=null,a.reply(100),this.initEvents(d)};g.prototype=new a.EventEmitter,g.prototype.stateChanged=function(a){this.state=a,this.emit("stateChanged")},g.prototype.timer_H=function(){this.logger.log("Timer H expired for INVITE server transaction "+this.id),this.state===b.STATUS_COMPLETED&&this.logger.warn("transactions","ACK for INVITE server transaction was never received, call will be terminated"),this.stateChanged(b.STATUS_TERMINATED),this.ua.destroyTransaction(this)},g.prototype.timer_I=function(){this.stateChanged(b.STATUS_TERMINATED),this.ua.destroyTransaction(this)},g.prototype.timer_L=function(){this.logger.log("Timer L expired for INVITE server transaction "+this.id),this.state===b.STATUS_ACCEPTED&&(this.stateChanged(b.STATUS_TERMINATED),this.ua.destroyTransaction(this)) +},g.prototype.onTransportError=function(){this.transportError||(this.transportError=!0,this.logger.log("transport error occurred, deleting INVITE server transaction "+this.id),null!==this.resendProvisionalTimer&&(a.Timers.clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),a.Timers.clearTimeout(this.L),a.Timers.clearTimeout(this.H),a.Timers.clearTimeout(this.I),this.stateChanged(b.STATUS_TERMINATED),this.ua.destroyTransaction(this))},g.prototype.resend_provisional=function(){this.transport.send(this.last_response)||this.onTransportError()},g.prototype.receiveResponse=function(c,d,e,f){var g=this;if(c>=100&&199>=c)switch(this.state){case b.STATUS_PROCEEDING:this.transport.send(d)||this.onTransportError(),this.last_response=d}if(c>100&&199>=c&&this.state===b.STATUS_PROCEEDING)null===this.resendProvisionalTimer&&(this.resendProvisionalTimer=a.Timers.setInterval(g.resend_provisional.bind(g),a.Timers.PROVISIONAL_RESPONSE_INTERVAL));else if(c>=200&&299>=c)switch(this.state){case b.STATUS_PROCEEDING:this.stateChanged(b.STATUS_ACCEPTED),this.last_response=d,this.L=a.Timers.setTimeout(g.timer_L.bind(g),a.Timers.TIMER_L),null!==this.resendProvisionalTimer&&(a.Timers.clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null);case b.STATUS_ACCEPTED:this.transport.send(d)?e&&e():(this.onTransportError(),f&&f())}else if(c>=300&&699>=c)switch(this.state){case b.STATUS_PROCEEDING:null!==this.resendProvisionalTimer&&(a.Timers.clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),this.transport.send(d)?(this.stateChanged(b.STATUS_COMPLETED),this.H=a.Timers.setTimeout(g.timer_H.bind(g),a.Timers.TIMER_H),e&&e()):(this.onTransportError(),f&&f())}};var h=function(c,d){var e;switch(d.method){case a.C.INVITE:if(e=c.transactions.ist[d.via_branch]){switch(e.state){case b.STATUS_PROCEEDING:e.transport.send(e.last_response);break;case b.STATUS_ACCEPTED:}return!0}break;case a.C.ACK:if(e=c.transactions.ist[d.via_branch],!e)return!1;if(e.state===b.STATUS_ACCEPTED)return!1;if(e.state===b.STATUS_COMPLETED)return e.state=b.STATUS_CONFIRMED,e.I=a.Timers.setTimeout(e.timer_I.bind(e),a.Timers.TIMER_I),!0;break;case a.C.CANCEL:return e=c.transactions.ist[d.via_branch],e?(d.reply_sl(200),e.state===b.STATUS_PROCEEDING?!1:!0):(d.reply_sl(481),!0);default:if(e=c.transactions.nist[d.via_branch]){switch(e.state){case b.STATUS_TRYING:break;case b.STATUS_PROCEEDING:case b.STATUS_COMPLETED:e.transport.send(e.last_response)}return!0}}};a.Transactions={C:b,checkTransaction:h,NonInviteClientTransaction:c,InviteClientTransaction:d,AckClientTransaction:e,NonInviteServerTransaction:f,InviteServerTransaction:g}}},{}],27:[function(a,b){b.exports=function(a,b){var c,d={STATUS_READY:0,STATUS_DISCONNECTED:1,STATUS_ERROR:2};c=function(a,b){this.logger=a.getLogger("sip.transport"),this.ua=a,this.ws=null,this.server=b,this.reconnection_attempts=0,this.closed=!1,this.connected=!1,this.reconnectTimer=null,this.lastTransportError={},this.ua.transport=this,this.connect()},c.prototype={send:function(a){var c=a.toString();return this.ws&&this.ws.readyState===b.WebSocket.OPEN?(this.ua.configuration.traceSip===!0&&this.logger.log("sending WebSocket message:\n\n"+c+"\n"),this.ws.send(c),!0):(this.logger.warn("unable to send message, WebSocket is not open"),!1)},disconnect:function(){this.ws&&(a.Timers.clearTimeout(this.reconnectTimer),this.closed=!0,this.logger.log("closing WebSocket "+this.server.ws_uri),this.ws.close()),null!==this.reconnectTimer&&(a.Timers.clearTimeout(this.reconnectTimer),this.reconnectTimer=null,this.ua.emit("disconnected",{transport:this,code:this.lastTransportError.code,reason:this.lastTransportError.reason}))},connect:function(){var a=this;if(this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING))return this.logger.log("WebSocket "+this.server.ws_uri+" is already connected"),!1;this.ws&&this.ws.close(),this.logger.log("connecting to WebSocket "+this.server.ws_uri),this.ua.onTransportConnecting(this,0===this.reconnection_attempts?1:this.reconnection_attempts);try{this.ws=new b.WebSocket(this.server.ws_uri,"sip")}catch(c){this.logger.warn("error connecting to WebSocket "+this.server.ws_uri+": "+c)}this.ws.binaryType="arraybuffer",this.ws.onopen=function(){a.onOpen()},this.ws.onclose=function(b){a.onClose(b)},this.ws.onmessage=function(b){a.onMessage(b)},this.ws.onerror=function(b){a.onError(b)}},onOpen:function(){this.connected=!0,this.logger.log("WebSocket "+this.server.ws_uri+" connected"),null!==this.reconnectTimer&&(a.Timers.clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnection_attempts=0,this.closed=!1,this.ua.onTransportConnected(this)},onClose:function(a){var b=this.connected;this.connected=!1,this.lastTransportError.code=a.code,this.lastTransportError.reason=a.reason,this.logger.log("WebSocket disconnected (code: "+a.code+(a.reason?"| reason: "+a.reason:"")+")"),a.wasClean===!1&&this.logger.warn("WebSocket abrupt disconnection"),b===!0?(this.ua.onTransportClosed(this),this.closed?this.ua.emit("disconnected",{transport:this,code:this.lastTransportError.code,reason:this.lastTransportError.reason}):this.reConnect()):this.ua.onTransportError(this)},onMessage:function(b){var c,d,e=b.data;if("\r\n"===e)return void(this.ua.configuration.traceSip===!0&&this.logger.log("received WebSocket message with CRLF Keep Alive response"));if("string"!=typeof e){try{e=String.fromCharCode.apply(null,new Uint8Array(e))}catch(f){return void this.logger.warn("received WebSocket binary message failed to be converted into string, message discarded")}this.ua.configuration.traceSip===!0&&this.logger.log("received WebSocket binary message:\n\n"+e+"\n")}else this.ua.configuration.traceSip===!0&&this.logger.log("received WebSocket text message:\n\n"+e+"\n");if(c=a.Parser.parseMessage(e,this.ua),c&&!(this.ua.status===a.UA.C.STATUS_USER_CLOSED&&c instanceof a.IncomingRequest)&&a.sanityCheck(c,this.ua,this))if(c instanceof a.IncomingRequest)c.transport=this,this.ua.receiveRequest(c);else if(c instanceof a.IncomingResponse)switch(c.method){case a.C.INVITE:d=this.ua.transactions.ict[c.via_branch],d&&d.receiveResponse(c);break;case a.C.ACK:break;default:d=this.ua.transactions.nict[c.via_branch],d&&d.receiveResponse(c)}},onError:function(a){this.logger.warn("WebSocket connection error: "+a)},reConnect:function(){var b=this;this.reconnection_attempts+=1,this.reconnection_attempts>this.ua.configuration.wsServerMaxReconnection?(this.logger.warn("maximum reconnection attempts for WebSocket "+this.server.ws_uri),this.ua.onTransportError(this)):(this.logger.log("trying to reconnect to WebSocket "+this.server.ws_uri+" (reconnection attempt "+this.reconnection_attempts+")"),this.reconnectTimer=a.Timers.setTimeout(function(){b.connect(),b.reconnectTimer=null},1e3*this.ua.configuration.wsServerReconnectionTimeout))}},c.C=d,a.Transport=c}},{}],28:[function(a,b){(function(a){b.exports=function(b){var c,d={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2,EVENT_METHODS:{invite:"INVITE",message:"MESSAGE"},ALLOWED_METHODS:["ACK","CANCEL","BYE","OPTIONS","INFO","NOTIFY"],ACCEPTED_BODY_TYPES:["application/sdp","application/dtmf-relay"],MAX_FORWARDS:70,TAG_LENGTH:10};c=function(c){function e(a){return h.emit.bind(h,a)}var f,g,h=this,i=["connecting","connected","disconnected","newTransaction","transactionDestroyed","registered","unregistered","registrationFailed","invite","newSession","message"];for(f=0,g=d.ALLOWED_METHODS.length;g>f;f++)i.push(d.ALLOWED_METHODS[f].toLowerCase());d.ACCEPTED_BODY_TYPES=d.ACCEPTED_BODY_TYPES.toString(),this.log=new b.LoggerFactory,this.logger=this.getLogger("sip.ua"),this.cache={credentials:{}},this.configuration={},this.dialogs={},this.applicants={},this.data={},this.sessions={},this.subscriptions={},this.transport=null,this.contact=null,this.status=d.STATUS_INIT,this.error=null,this.transactions={nist:{},nict:{},ist:{},ict:{}},this.transportRecoverAttempts=0,this.transportRecoveryTimer=null,Object.defineProperties(this,{transactionsCount:{get:function(){var a,b=["nist","nict","ist","ict"],c=0;for(a in b)c+=Object.keys(this.transactions[b[a]]).length;return c}},nictTransactionsCount:{get:function(){return Object.keys(this.transactions.nict).length}},nistTransactionsCount:{get:function(){return Object.keys(this.transactions.nist).length}},ictTransactionsCount:{get:function(){return Object.keys(this.transactions.ict).length}},istTransactionsCount:{get:function(){return Object.keys(this.transactions.ist).length}}}),void 0===c?c={}:("string"==typeof c||c instanceof String)&&(c={uri:c}),c.log&&(c.log.hasOwnProperty("builtinEnabled")&&(this.log.builtinEnabled=c.log.builtinEnabled),c.log.hasOwnProperty("level")&&(this.log.level=c.log.level),c.log.hasOwnProperty("connector")&&(this.log.connector=c.log.connector));try{this.loadConfig(c),this.initEvents(i)}catch(j){throw this.status=d.STATUS_NOT_READY,this.error=d.CONFIGURATION_ERROR,j}this.registerContext=new b.RegisterContext(this),this.registerContext.on("failed",e("registrationFailed")),this.registerContext.on("registered",e("registered")),this.registerContext.on("unregistered",e("unregistered")),this.configuration.autostart&&this.start(),"function"==typeof a.addEventListener&&a.addEventListener("unload",this.stop.bind(this))},c.prototype=new b.EventEmitter,c.prototype.register=function(a){return this.configuration.register=!0,this.registerContext.register(a),this},c.prototype.unregister=function(a){return this.configuration.register=!1,this.registerContext.unregister(a),this},c.prototype.isRegistered=function(){return this.registerContext.registered},c.prototype.isConnected=function(){return this.transport?this.transport.connected:!1},c.prototype.invite=function(a,c){c=c||{},c=b.Utils.desugarSessionOptions(c),b.Utils.optionsOverride(c,"media","mediaConstraints",!0,this.logger);var d=new b.InviteClientContext(this,a,c);return this.isConnected()?d.invite({media:c.media}):this.once("connected",function(){d.invite({media:c.media})}),d},c.prototype.subscribe=function(a,c,d){var e=new b.Subscription(this,a,c,d);return this.isConnected()?e.subscribe():this.once("connected",function(){e.subscribe()}),e},c.prototype.message=function(a,c,d){if(void 0===c)throw new TypeError("Not enough arguments");d=d||{},d.contentType=d.contentType||"text/plain",d.body=c;var e=new b.ClientContext(this,b.C.MESSAGE,a,d);return this.isConnected()?e.send():this.once("connected",function(){e.send()}),e},c.prototype.request=function(a,c,d){var e=new b.ClientContext(this,a,c,d);return this.isConnected()?e.send():this.once("connected",function(){e.send()}),e},c.prototype.stop=function(){function a(){0===g.nistTransactionsCount&&0===g.nictTransactionsCount&&(g.off("transactionDestroyed",a),g.transport.disconnect())}var c,e,f,g=this;if(this.logger.log("user requested closure..."),this.status===d.STATUS_USER_CLOSED)return this.logger.warn("UA already closed"),this;b.Timers.clearTimeout(this.transportRecoveryTimer),this.logger.log("closing registerContext"),this.registerContext.close();for(c in this.sessions)this.logger.log("closing session "+c),this.sessions[c].terminate();for(e in this.subscriptions)this.logger.log("unsubscribing from subscription "+e),this.subscriptions[e].close();for(f in this.applicants)this.applicants[f].close();return this.status=d.STATUS_USER_CLOSED,0===this.nistTransactionsCount&&0===this.nictTransactionsCount?this.transport.disconnect():this.on("transactionDestroyed",a),this},c.prototype.start=function(){var a;return this.logger.log("user requested startup..."),this.status===d.STATUS_INIT?(a=this.getNextWsServer(),new b.Transport(this,a)):this.status===d.STATUS_USER_CLOSED?(this.logger.log("resuming"),this.status=d.STATUS_READY,this.transport.connect()):this.status===d.STATUS_READY?this.logger.log("UA is in READY status, not resuming"):this.logger.error("Connection is down. Auto-Recovery system is trying to connect"),this},c.prototype.normalizeTarget=function(a){return b.Utils.normalizeTarget(a,this.configuration.hostportParams)},c.prototype.saveCredentials=function(a){return this.cache.credentials[a.realm]=this.cache.credentials[a.realm]||{},this.cache.credentials[a.realm][a.uri]=a,this},c.prototype.getCredentials=function(a){var b,c;return b=a.ruri.host,this.cache.credentials[b]&&this.cache.credentials[b][a.ruri]&&(c=this.cache.credentials[b][a.ruri],c.method=a.method),c},c.prototype.getLogger=function(a,b){return this.log.getLogger(a,b)},c.prototype.onTransportClosed=function(a){var c,d,e,f=["nict","ict","nist","ist"];for(a.server.status=b.Transport.C.STATUS_DISCONNECTED,this.logger.log("connection state set to "+b.Transport.C.STATUS_DISCONNECTED),e=f.length,c=0;e>c;c++)for(d in this.transactions[f[c]])this.transactions[f[c]][d].onTransportError();this.contact.pub_gruu||this.closeSessionsOnTransportError()},c.prototype.onTransportError=function(a){var c;this.logger.log("transport "+a.server.ws_uri+" failed | connection state set to "+b.Transport.C.STATUS_ERROR),a.server.status=b.Transport.C.STATUS_ERROR,this.emit("disconnected",{transport:a}),this.status!==d.STATUS_USER_CLOSED&&(c=this.getNextWsServer(),c?new b.Transport(this,c):(this.closeSessionsOnTransportError(),this.error&&this.error===d.NETWORK_ERROR||(this.status=d.STATUS_NOT_READY,this.error=d.NETWORK_ERROR),this.recoverTransport()))},c.prototype.onTransportConnected=function(a){this.transport=a,this.transportRecoverAttempts=0,a.server.status=b.Transport.C.STATUS_READY,this.logger.log("connection state set to "+b.Transport.C.STATUS_READY),this.status!==d.STATUS_USER_CLOSED&&(this.status=d.STATUS_READY,this.error=null,this.configuration.register&&this.registerContext.onTransportConnected(),this.emit("connected",{transport:a}))},c.prototype.onTransportConnecting=function(a,b){this.emit("connecting",{transport:a,attempts:b})},c.prototype.newTransaction=function(a){this.transactions[a.type][a.id]=a,this.emit("newTransaction",{transaction:a})},c.prototype.destroyTransaction=function(a){delete this.transactions[a.type][a.id],this.emit("transactionDestroyed",{transaction:a})},c.prototype.receiveRequest=function(a){function c(b){return b&&b.user===a.ruri.user}var e,f,g,h,i=a.method,j=a.method.toLowerCase(),k=this;if(!(c(this.configuration.uri)||c(this.contact.uri)||c(this.contact.pub_gruu)||c(this.contact.temp_gruu)))return this.logger.warn("Request-URI does not point to us"),void(a.method!==b.C.ACK&&a.reply_sl(404));if(a.ruri.scheme===b.C.SIPS)return void a.reply_sl(416);if(!b.Transactions.checkTransaction(this,a)){if(i===b.C.OPTIONS)new b.Transactions.NonInviteServerTransaction(a,this),a.reply(200,null,["Allow: "+b.Utils.getAllowedMethods(this),"Accept: "+d.ACCEPTED_BODY_TYPES]);else if(i===b.C.MESSAGE){if(!this.checkListener(j))return new b.Transactions.NonInviteServerTransaction(a,this),void a.reply(405,null,["Allow: "+b.Utils.getAllowedMethods(this)]);g=new b.ServerContext(this,a),g.body=a.body,g.content_type=a.getHeader("Content-Type")||"text/plain",a.reply(200,null),this.emit("message",g)}else i!==b.C.INVITE&&i!==b.C.ACK&&(h=new b.ServerContext(this,a));if(a.to_tag)e=this.findDialog(a),e?(i===b.C.INVITE&&new b.Transactions.InviteServerTransaction(a,this),e.receiveRequest(a)):i===b.C.NOTIFY?(f=this.findSession(a),f?f.receiveRequest(a):(this.logger.warn("received NOTIFY request for a non existent session"),a.reply(481,"Subscription does not exist"))):i!==b.C.ACK&&a.reply(481);else switch(i){case b.C.INVITE:var l=this.configuration.mediaHandlerFactory.isSupported;!l||l()?f=new b.InviteServerContext(this,a).on("invite",function(){k.emit("invite",this)}):(this.logger.warn("INVITE received but WebRTC is not supported"),a.reply(488));break;case b.C.BYE:a.reply(481);break;case b.C.CANCEL:f=this.findSession(a),f?f.receiveRequest(a):this.logger.warn("received CANCEL request for a non existent session");break;case b.C.ACK:break;default:a.reply(405)}}},c.prototype.findSession=function(a){return this.sessions[a.call_id+a.from_tag]||this.sessions[a.call_id+a.to_tag]||null},c.prototype.findDialog=function(a){return this.dialogs[a.call_id+a.from_tag+a.to_tag]||this.dialogs[a.call_id+a.to_tag+a.from_tag]||null},c.prototype.getNextWsServer=function(){var a,c,d,e=[];for(c=this.configuration.wsServers.length,a=0;c>a;a++)d=this.configuration.wsServers[a],d.status!==b.Transport.C.STATUS_ERROR&&(0===e.length?e.push(d):d.weight>e[0].weight?e=[d]:d.weight===e[0].weight&&e.push(d));return a=Math.floor(Math.random()*e.length),e[a]},c.prototype.closeSessionsOnTransportError=function(){var a;for(a in this.sessions)this.sessions[a].onTransportError();this.registerContext.onTransportClosed()},c.prototype.recoverTransport=function(a){var c,d,e,f,g,h;for(a=a||this,g=a.transportRecoverAttempts,d=a.configuration.wsServers.length,c=0;d>c;c++)a.configuration.wsServers[c].status=0;h=a.getNextWsServer(),e=Math.floor(Math.random()*Math.pow(2,g)+1),f=e*a.configuration.connectionRecoveryMinInterval,f>a.configuration.connectionRecoveryMaxInterval&&(this.logger.log("time for next connection attempt exceeds connectionRecoveryMaxInterval, resetting counter"),f=a.configuration.connectionRecoveryMinInterval,g=0),this.logger.log("next connection attempt in "+f+" seconds"),this.transportRecoveryTimer=b.Timers.setTimeout(function(){a.transportRecoverAttempts=g+1,new b.Transport(a,h)},1e3*f)},c.prototype.loadConfig=function(a){function d(b,c){var d=b.replace(/([a-z][A-Z])/g,function(a){return a[0]+"_"+a[1].toLowerCase()});if(b!==d){var e=a.hasOwnProperty(b);a.hasOwnProperty(d)&&(c.warn(d+" is deprecated, please use "+b),e&&c.warn(b+" overriding "+d)),a[b]=e?a[b]:a[d]}}var e,f,g,h,i,j={viaHost:b.Utils.createRandomToken(12)+".invalid",uri:new b.URI("sip","anonymous."+b.Utils.createRandomToken(6),"anonymous.invalid",null,null),wsServers:[{scheme:"WSS",sip_uri:"",status:0,weight:0,ws_uri:"wss://edge.sip.onsip.com"}],password:null,registerExpires:600,register:!0,registrarServer:null,wsServerMaxReconnection:3,wsServerReconnectionTimeout:4,connectionRecoveryMinInterval:2,connectionRecoveryMaxInterval:30,usePreloadedRoute:!1,userAgentString:b.C.USER_AGENT,noAnswerTimeout:60,stunServers:["stun:stun.l.google.com:19302"],turnServers:[],traceSip:!1,hackViaTcp:!1,hackIpInContact:!1,hackWssInTransport:!1,autostart:!0,rel100:b.C.supported.UNSUPPORTED,mediaHandlerFactory:b.WebRTC.MediaHandler.defaultFactory};for(e in c.configuration_check.mandatory){if(d(e,this.logger),!a.hasOwnProperty(e))throw new b.Exceptions.ConfigurationError(e);if(f=a[e],g=c.configuration_check.mandatory[e](f),void 0===g)throw new b.Exceptions.ConfigurationError(e,f);j[e]=g}b.Utils.optionsOverride(a,"rel100","reliable",!0,this.logger,b.C.supported.UNSUPPORTED);var k=["stunServers","turnServers"];for(e in c.configuration_check.optional)if(d(e,this.logger),a.hasOwnProperty(e)){if(f=a[e],f instanceof Array&&0===f.length&&k.indexOf(e)<0)continue;if(null===f||""===f||void 0===f)continue;if("number"==typeof f&&isNaN(f))continue;if(g=c.configuration_check.optional[e](f),void 0===g)throw new b.Exceptions.ConfigurationError(e,f);j[e]=g}if(j.connectionRecoveryMaxInterval"}},b.Utils.optionsOverride(j,"media","mediaConstraints",!0,this.logger);for(e in j)c.configuration_skeleton[e].value=j[e];Object.defineProperties(this.configuration,c.configuration_skeleton);for(e in j)c.configuration_skeleton[e].value="";this.logger.log("configuration parameters after validation:");for(e in j)switch(e){case"uri":case"registrarServer":case"mediaHandlerFactory":this.logger.log("\xb7 "+e+": "+j[e]);break;case"password":this.logger.log("\xb7 "+e+": NOT SHOWN");break;default:this.logger.log("\xb7 "+e+": "+JSON.stringify(j[e]))}},c.configuration_skeleton=function(){var a,b,c={},d=["sipjsId","hostportParams","uri","wsServers","authorizationUser","connectionRecoveryMaxInterval","connectionRecoveryMinInterval","displayName","hackViaTcp","hackIpInContact","hackWssInTransport","instanceId","noAnswerTimeout","password","registerExpires","registrarServer","reliable","rel100","userAgentString","autostart","stunServers","traceSip","turnServers","usePreloadedRoute","wsServerMaxReconnection","wsServerReconnectionTimeout","mediaHandlerFactory","media","mediaConstraints","via_core_value","viaHost"];for(a in d)b=d[a],c[b]={value:"",writable:!1,configurable:!1};return c.register={value:"",writable:!0,configurable:!1},c}(),c.configuration_check={mandatory:{},optional:{uri:function(a){var c;return/^sip:/i.test(a)||(a=b.C.SIP+":"+a),c=b.URI.parse(a),c&&c.user?c:void 0},wsServers:function(a){var c,d,e;if("string"==typeof a)a=[{ws_uri:a}];else{if(!(a instanceof Array))return;for(d=a.length,c=0;d>c;c++)"string"==typeof a[c]&&(a[c]={ws_uri:a[c]})}if(0===a.length)return!1;for(d=a.length,c=0;d>c;c++){if(!a[c].ws_uri)return;if(a[c].weight&&!Number(a[c].weight))return;if(e=b.Grammar.parse(a[c].ws_uri,"absoluteURI"),-1===e)return;if("wss"!==e.scheme&&"ws"!==e.scheme)return;a[c].sip_uri="",a[c].weight||(a[c].weight=0),a[c].status=0,a[c].scheme=e.scheme.toUpperCase()}return a},authorizationUser:function(a){return-1===b.Grammar.parse('"'+a+'"',"quoted_string")?void 0:a},connectionRecoveryMaxInterval:function(a){var c;return b.Utils.isDecimal(a)&&(c=Number(a),c>0)?c:void 0},connectionRecoveryMinInterval:function(a){var c;return b.Utils.isDecimal(a)&&(c=Number(a),c>0)?c:void 0},displayName:function(a){return-1===b.Grammar.parse('"'+a+'"',"displayName")?void 0:a},hackViaTcp:function(a){return"boolean"==typeof a?a:void 0},hackIpInContact:function(a){return"boolean"==typeof a?a:void 0},hackWssInTransport:function(a){return"boolean"==typeof a?a:void 0},instanceId:function(a){return"string"==typeof a?(/^uuid:/i.test(a)&&(a=a.substr(5)),-1===b.Grammar.parse(a,"uuid")?void 0:a):void 0},noAnswerTimeout:function(a){var c;return b.Utils.isDecimal(a)&&(c=Number(a),c>0)?c:void 0},password:function(a){return String(a)},rel100:function(a){return a===b.C.supported.REQUIRED?b.C.supported.REQUIRED:a===b.C.supported.SUPPORTED?b.C.supported.SUPPORTED:b.C.supported.UNSUPPORTED},register:function(a){return"boolean"==typeof a?a:void 0},registerExpires:function(a){var c;return b.Utils.isDecimal(a)&&(c=Number(a),c>0)?c:void 0},registrarServer:function(a){var c;if("string"==typeof a)return/^sip:/i.test(a)||(a=b.C.SIP+":"+a),c=b.URI.parse(a),c?c.user?void 0:c:void 0},stunServers:function(a){var c,d,e;if("string"==typeof a)a=[a];else if(!(a instanceof Array))return;for(d=a.length,c=0;d>c;c++){if(e=a[c],/^stuns?:/.test(e)||(e="stun:"+e),-1===b.Grammar.parse(e,"stun_URI"))return;a[c]=e}return a},traceSip:function(a){return"boolean"==typeof a?a:void 0},turnServers:function(a){var c,d,e,f;for(a instanceof Array||(a=[a]),d=a.length,c=0;d>c;c++){if(e=a[c],e.server&&(e.urls=[e.server]),!e.urls||!e.username||!e.password)return;for(e.urls instanceof Array||(e.urls=[e.urls]),d=e.urls.length,c=0;d>c;c++)if(f=e.urls[c],/^turns?:/.test(f)||(f="turn:"+f),-1===b.Grammar.parse(f,"turn_URI"))return}return a},userAgentString:function(a){return"string"==typeof a?a:void 0},usePreloadedRoute:function(a){return"boolean"==typeof a?a:void 0},wsServerMaxReconnection:function(a){var c;return b.Utils.isDecimal(a)&&(c=Number(a),c>0)?c:void 0},wsServerReconnectionTimeout:function(a){var c;return b.Utils.isDecimal(a)&&(c=Number(a),c>0)?c:void 0},autostart:function(a){return"boolean"==typeof a?a:void 0},mediaHandlerFactory:function(a){return a instanceof Function?a:void 0}}},c.C=d,b.UA=c}}).call(this,"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],29:[function(a,b){b.exports=function(a){var b;b=function(b,c,d,e,f,g){var h,i;if(!d)throw new TypeError('missing or invalid "host" parameter');b=b||a.C.SIP,this.parameters={},this.headers={};for(h in f)this.setParam(h,f[h]);for(i in g)this.setHeader(i,g[i]);Object.defineProperties(this,{scheme:{get:function(){return b},set:function(a){b=a.toLowerCase()}},user:{get:function(){return c},set:function(a){c=a}},host:{get:function(){return d},set:function(a){d=a.toLowerCase()}},port:{get:function(){return e},set:function(a){e=0===a?a:parseInt(a,10)||null}}})},b.prototype={setParam:function(a,b){a&&(this.parameters[a.toLowerCase()]="undefined"==typeof b||null===b?null:b.toString().toLowerCase())},getParam:function(a){return a?this.parameters[a.toLowerCase()]:void 0},hasParam:function(a){return a?this.parameters.hasOwnProperty(a.toLowerCase())&&!0||!1:void 0},deleteParam:function(a){var b;return a=a.toLowerCase(),this.parameters.hasOwnProperty(a)?(b=this.parameters[a],delete this.parameters[a],b):void 0},clearParams:function(){this.parameters={}},setHeader:function(b,c){this.headers[a.Utils.headerize(b)]=c instanceof Array?c:[c]},getHeader:function(b){return b?this.headers[a.Utils.headerize(b)]:void 0},hasHeader:function(b){return b?this.headers.hasOwnProperty(a.Utils.headerize(b))&&!0||!1:void 0},deleteHeader:function(b){var c;return b=a.Utils.headerize(b),this.headers.hasOwnProperty(b)?(c=this.headers[b],delete this.headers[b],c):void 0},clearHeaders:function(){this.headers={}},clone:function(){return new b(this.scheme,this.user,this.host,this.port,JSON.parse(JSON.stringify(this.parameters)),JSON.parse(JSON.stringify(this.headers)))},toString:function(){var b,c,d,e,f=[];e=this.scheme+":",this.scheme.match("^sips?$")||(e+="//"),this.user&&(e+=a.Utils.escapeUser(this.user)+"@"),e+=this.host,(this.port||0===this.port)&&(e+=":"+this.port);for(c in this.parameters)e+=";"+c,null!==this.parameters[c]&&(e+="="+this.parameters[c]);for(b in this.headers)for(d in this.headers[b])f.push(b+"="+this.headers[b][d]);return f.length>0&&(e+="?"+f.join("&")),e}},b.parse=function(b){return b=a.Grammar.parse(b,"SIP_URI"),-1!==b?b:void 0},a.URI=b}},{}],30:[function(a,b){(function(a){b.exports=function(b){var c;c={augment:function(a,b,c,d){var e,f;f=b.prototype;for(e in f)(d||void 0===a[e])&&(a[e]=f[e]);b.apply(a,c)},optionsOverride:function(a,b,c,d,e,f){d&&a[c]&&e.warn(c+" is deprecated, please use "+b+" instead"),a[b]&&a[c]&&e.warn(b+" overriding "+c),a[b]=a[b]||a[c]||f},desugarSessionOptions:function(b){return a.HTMLMediaElement&&b instanceof a.HTMLMediaElement&&(b={media:{constraints:{audio:!0,video:"VIDEO"===b.tagName},render:{remote:{video:b}}}}),b},str_utf8_length:function(a){return encodeURIComponent(a).replace(/%[A-F\d]{2}/g,"U").length},getPrefixedProperty:function(a,b){if(null!=a){var c=b.charAt(0).toUpperCase()+b.slice(1),d=[b,"webkit"+c,"moz"+c];for(var e in d){var f=a[d[e]];if(f)return f}}},generateFakeSDP:function(a){if(a){var b=a.indexOf("o="),c=a.indexOf("\r\n",b);return"v=0\r\n"+a.slice(b,c)+"\r\ns=-\r\nt=0 0\r\nc=IN IP4 0.0.0.0"}},isFunction:function(a){return void 0!==a?"[object Function]"===Object.prototype.toString.call(a):!1},isDecimal:function(a){return!isNaN(a)&&parseFloat(a)===parseInt(a,10)},createRandomToken:function(a,b){var c,d,e="";for(b=b||32,c=0;a>c;c++)d=Math.random()*b|0,e+=d.toString(b);return e},newTag:function(){return b.Utils.createRandomToken(b.UA.C.TAG_LENGTH)},newUUID:function(){var a="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"===a?b:3&b|8;return c.toString(16)});return a},hostType:function(a){return a?(a=b.Grammar.parse(a,"host"),-1!==a?a.host_type:void 0):void 0},normalizeTarget:function(a,c){var d,e,f,g;if(a){if(a instanceof b.URI)return a;if("string"==typeof a){switch(e=a.split("@"),e.length){case 1:if(!c)return;f=a,g=c;break;case 2:f=e[0],g=e[1];break;default:f=e.slice(0,e.length-1).join("@"),g=e[e.length-1]}return f=f.replace(/^(sips?|tel):/i,""),/^[\-\.\(\)]*\+?[0-9\-\.\(\)]+$/.test(f)&&(f=f.replace(/[\-\.\(\)]/g,"")),a=b.C.SIP+":"+b.Utils.escapeUser(f)+"@"+g,(d=b.URI.parse(a))?d:void 0}}else;},escapeUser:function(a){return encodeURIComponent(decodeURIComponent(a)).replace(/%3A/gi,":").replace(/%2B/gi,"+").replace(/%3F/gi,"?").replace(/%2F/gi,"/")},headerize:function(a){var b,c={"Call-Id":"Call-ID",Cseq:"CSeq",Rack:"RAck",Rseq:"RSeq","Www-Authenticate":"WWW-Authenticate"},d=a.toLowerCase().replace(/_/g,"-").split("-"),e="",f=d.length;for(b=0;f>b;b++)0!==b&&(e+="-"),e+=d[b].charAt(0).toUpperCase()+d[b].substring(1);return c[e]&&(e=c[e]),e},sipErrorCause:function(a){var c;for(c in b.C.SIP_ERROR_CAUSES)if(-1!==b.C.SIP_ERROR_CAUSES[c].indexOf(a))return b.C.causes[c];return b.C.causes.SIP_FAILURE_CODE},getRandomTestNetIP:function(){function a(a,b){return Math.floor(Math.random()*(b-a+1)+a)}return"192.0.2."+a(1,254)},getAllowedMethods:function(a){var c,d=b.UA.C.ALLOWED_METHODS.toString();for(c in b.UA.C.EVENT_METHODS)a.checkListener(c)&&(d+=","+b.UA.C.EVENT_METHODS[c]);return d},calculateMD5:function(a){function b(a,b){return a<>>32-b}function c(a,b){var c,d,e,f,g;return e=2147483648&a,f=2147483648&b,c=1073741824&a,d=1073741824&b,g=(1073741823&a)+(1073741823&b),c&d?2147483648^g^e^f:c|d?1073741824&g?3221225472^g^e^f:1073741824^g^e^f:g^e^f}function d(a,b,c){return a&b|~a&c}function e(a,b,c){return a&c|b&~c}function f(a,b,c){return a^b^c}function g(a,b,c){return b^(a|~c)}function h(a,e,f,g,h,i,j){return a=c(a,c(c(d(e,f,g),h),j)),c(b(a,i),e)}function i(a,d,f,g,h,i,j){return a=c(a,c(c(e(d,f,g),h),j)),c(b(a,i),d)}function j(a,d,e,g,h,i,j){return a=c(a,c(c(f(d,e,g),h),j)),c(b(a,i),d)}function k(a,d,e,f,h,i,j){return a=c(a,c(c(g(d,e,f),h),j)),c(b(a,i),d)}function l(a){for(var b,c=a.length,d=c+8,e=(d-d%64)/64,f=16*(e+1),g=Array(f-1),h=0,i=0;c>i;)b=(i-i%4)/4,h=i%4*8,g[b]=g[b]|a.charCodeAt(i)<>>29,g}function m(a){var b,c,d="",e="";for(c=0;3>=c;c++)b=a>>>8*c&255,e="0"+b.toString(16),d+=e.substr(e.length-2,2);return d}function n(a){a=a.replace(/\r\n/g,"\n");for(var b="",c=0;cd?b+=String.fromCharCode(d):d>127&&2048>d?(b+=String.fromCharCode(d>>6|192),b+=String.fromCharCode(63&d|128)):(b+=String.fromCharCode(d>>12|224),b+=String.fromCharCode(d>>6&63|128),b+=String.fromCharCode(63&d|128))}return b}var o,p,q,r,s,t,u,v,w,x=[],y=7,z=12,A=17,B=22,C=5,D=9,E=14,F=20,G=4,H=11,I=16,J=23,K=6,L=10,M=15,N=21;for(a=n(a),x=l(a),t=1732584193,u=4023233417,v=2562383102,w=271733878,o=0;of;f++)h=l[f],j.push({url:h.urls,username:h.username,credential:h.password});this.peerConnection=new a.WebRTC.RTCPeerConnection({iceServers:j},this.RTCConstraints),this.peerConnection.onaddstream=function(a){i.logger.log("stream added: "+a.stream.id),i.render(),i.emit("addStream",a)},this.peerConnection.onremovestream=function(a){i.logger.log("stream removed: "+a.stream.id)},this.peerConnection.onicecandidate=function(a){i.emit("iceCandidate",a),a.candidate?i.logger.log("ICE candidate received: "+(null===a.candidate.candidate?null:a.candidate.candidate.trim())):void 0!==i.onIceCompleted?i.onIceCompleted(this):i.callOnIceCompleted=!0},this.peerConnection.onicegatheringstatechange=function(){i.logger.log("RTCIceGatheringState changed: "+this.iceGatheringState),"gathering"===this.iceGatheringState&&i.emit("iceGathering",this),"complete"===this.iceGatheringState&&(void 0!==i.onIceCompleted?i.onIceCompleted(this):i.callOnIceCompleted=!0)},this.peerConnection.oniceconnectionstatechange=function(){i.logger.log('ICE connection state changed to "'+this.iceConnectionState+'"'),"failed"===this.iceConnectionState&&i.emit("iceFailed",this)},this.peerConnection.onstatechange=function(){i.logger.log('PeerConnection state changed to "'+this.readyState+'"')},this.initEvents(e),d(this,"userMediaRequest"),d(this,"userMedia"),d(this,"userMediaFailed")};return b.defaultFactory=function(a,c){return new b(a,c)},b.defaultFactory.isSupported=function(){return a.WebRTC.isSupported()},b.prototype=Object.create(a.MediaHandler.prototype,{isReady:{writable:!0,value:function(){return this.ready}},close:{writable:!0,value:function(){this.logger.log("closing PeerConnection"),this.peerConnection&&"closed"!==this.peerConnection.signalingState&&(this.peerConnection.close(),this.localMedia&&this.mediaStreamManager.release(this.localMedia))}},getDescription:{writable:!0,value:function(a,b,c){function d(){f.hasOffer("remote")?f.peerConnection.ondatachannel=function(a){f.dataChannel=a.channel,f.emit("dataChannel",f.dataChannel)}:c.dataChannel&&f.peerConnection.createDataChannel&&(f.dataChannel=f.peerConnection.createDataChannel("sipjs",c.dataChannel),f.emit("dataChannel",f.dataChannel)),f.render(),f.createOfferOrAnswer(a,b,f.RTCConstraints)}function e(a){f.logger.log("acquired local media stream"),f.localMedia=a,f.session.connecting(),f.addStream(a,d,b)}var f=this;return c=c||{},c.dataChannel===!0&&(c.dataChannel={}),this.mediaHint=c,f.localMedia?(f.logger.log("already have local media"),void d()):(f.logger.log("acquiring local media"),void f.mediaStreamManager.acquire(e,function(a){f.logger.error("unable to acquire stream"),f.logger.error(a),f.session.connecting(),b(a)},c))}},setDescription:{writable:!0,value:function(b,c,d){var e={type:this.hasOffer("local")?"answer":"offer",sdp:b};this.emit("setDescription",e);var f=new a.WebRTC.RTCSessionDescription(e);this.peerConnection.setRemoteDescription(f,c,d)}},isMuted:{writable:!0,value:function(){return{audio:this.audioMuted,video:this.videoMuted}}},mute:{writable:!0,value:function(a){if(0!==this.getLocalStreams().length){a=a||{audio:this.getLocalStreams()[0].getAudioTracks().length>0,video:this.getLocalStreams()[0].getVideoTracks().length>0};var b=!1,c=!1;return a.audio&&!this.audioMuted&&(b=!0,this.audioMuted=!0,this.toggleMuteAudio(!0)),a.video&&!this.videoMuted&&(c=!0,this.videoMuted=!0,this.toggleMuteVideo(!0)),b||c?{audio:b,video:c}:void 0}}},unmute:{writable:!0,value:function(a){if(0!==this.getLocalStreams().length){a=a||{audio:this.getLocalStreams()[0].getAudioTracks().length>0,video:this.getLocalStreams()[0].getVideoTracks().length>0};var b=!1,c=!1;return a.audio&&this.audioMuted&&(b=!0,this.audioMuted=!1,this.toggleMuteAudio(!1)),a.video&&this.videoMuted&&(c=!0,this.videoMuted=!1,this.toggleMuteVideo(!1)),b||c?{audio:b,video:c}:void 0}}},hold:{writable:!0,value:function(){this.toggleMuteAudio(!0),this.toggleMuteVideo(!0)}},unhold:{writable:!0,value:function(){this.audioMuted||this.toggleMuteAudio(!1),this.videoMuted||this.toggleMuteVideo(!1)}},getLocalStreams:{writable:!0,value:function(){var a=this.peerConnection;return a&&"closed"===a.signalingState?(this.logger.warn("peerConnection is closed, getLocalStreams returning []"),[]):a.getLocalStreams&&a.getLocalStreams()||a.localStreams||[]}},getRemoteStreams:{writable:!0,value:function(){var a=this.peerConnection;return a&&"closed"===a.signalingState?(this.logger.warn("peerConnection is closed, getRemoteStreams returning []"),[]):a.getRemoteStreams&&a.getRemoteStreams()||a.remoteStreams||[]}},render:{writable:!0,value:function(b){if(b=b||this.mediaHint&&this.mediaHint.render,!b)return!1;var c={local:"getLocalStreams",remote:"getRemoteStreams"};Object.keys(c).forEach(function(d){var e=c[d],f=this[e]();f.length&&a.WebRTC.MediaStreamManager.render(f[0],b[d])}.bind(this))}},hasOffer:{writable:!0,value:function(a){var b="have-"+a+"-offer";return this.peerConnection.signalingState===b}},createOfferOrAnswer:{writable:!0,value:function(b,c,d){function e(){var c=i.peerConnection.localDescription.sdp;c=a.Hacks.Chrome.needsExplicitlyInactiveSDP(c),c=a.Hacks.AllBrowsers.unmaskDtls(c),c=a.Hacks.Firefox.hasIncompatibleCLineWithSomeSIPEndpoints(c);var d={type:"createOffer"===h?"offer":"answer",sdp:c};i.emit("getDescription",d),i.ready=!0,b(d.sdp)}function f(){"complete"!==i.peerConnection.iceGatheringState||"connected"!==i.peerConnection.iceConnectionState&&"completed"!==i.peerConnection.iceConnectionState?(i.onIceCompleted=function(a){i.logger.log("ICE Gathering Completed"),i.onIceCompleted=void 0,i.emit("iceComplete",a),e()},i.callOnIceCompleted&&i.onIceCompleted()):e()}function g(a,b){i.logger.error("peerConnection."+a+" failed"),i.logger.error(b),i.ready=!0,c(b)}var h,i=this;i.ready=!1,h=i.hasOffer("remote")?"createAnswer":"createOffer",i.peerConnection[h](function(a){i.peerConnection.setLocalDescription(a,f,g.bind(null,"setLocalDescription"))},g.bind(null,h),d)}},addStream:{writable:!0,value:function(a,b,c){try{this.peerConnection.addStream(a)}catch(d){return this.logger.error("error adding stream"),this.logger.error(d),void c(d)}b()}},toggleMuteHelper:{writable:!0,value:function(a,b){this.getLocalStreams().forEach(function(c){c[a]().forEach(function(a){a.enabled=!b})})}},toggleMuteAudio:{writable:!0,value:function(a){this.toggleMuteHelper("getAudioTracks",a)}},toggleMuteVideo:{writable:!0,value:function(a){this.toggleMuteHelper("getVideoTracks",a)}}}),b}},{}],33:[function(a,b){b.exports=function(a){var b=function(b,c){if(!a.WebRTC.isSupported())throw new a.Exceptions.NotSupportedError("Media not supported");var d=["userMediaRequest","userMedia","userMediaFailed"];this.mediaHint=c||{constraints:{audio:!0,video:!0}},this.logger=b,this.initEvents(d),this.acquisitions={}};return b.streamId=function(a){return a.getAudioTracks().concat(a.getVideoTracks()).map(function(a){return a.id}).join("")},b.render=function(b,c){function d(a,b){(window.attachMediaStream||e)(a,b),f(a)}function e(a,b){if("undefined"!=typeof a.src)URL.revokeObjectURL(a.src),a.src=URL.createObjectURL(b);else{if("undefined"==typeof(a.srcObject||a.mozSrcObject))return!1;a.srcObject=a.mozSrcObject=b}return!0}function f(b){var c=100;b.ensurePlayingIntervalId=a.Timers.setInterval(function(){b.paused?b.play():a.Timers.clearInterval(b.ensurePlayingIntervalId)},c)}return c?(c.video&&(c.audio&&(c.video.volume=0),d(c.video,b)),void(c.audio&&d(c.audio,b))):!1},b.prototype=Object.create(a.EventEmitter.prototype,{acquire:{value:function(c,d,e){e=Object.keys(e||{}).length?e:this.mediaHint;var f=function(a,c,d){var e=b.streamId(c);this.acquisitions[e]=!!d,a(c)}.bind(this,c);if(e.stream)f(e.stream,!0);else{var g=e.constraints||this.mediaHint&&this.mediaHint.constraints||{audio:!0,video:!0};a.Timers.setTimeout(function(){this.emit("userMediaRequest",g);var b=function(a,b){var c=Array.prototype.slice.call(arguments,2),d=[a].concat(c);this.emit.apply(this,d),b.apply(null,c)}.bind(this);a.WebRTC.getUserMedia(g,b.bind(this,"userMedia",f),b.bind(this,"userMediaFailed",d))}.bind(this),0)}}},release:{value:function(a){var c=b.streamId(a);this.acquisitions[c]===!1&&a.stop(),delete this.acquisitions[c]}}}),b}},{}]},{},[18])(18)}); \ No newline at end of file diff --git a/package.json b/package.json index cd1c428a8..57748819b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "sip.js", "title": "SIP.js", "description": "A simple, intuitive, and powerful JavaScript signaling library", - "version": "0.6.3", + "version": "0.6.4", "main": "src/SIP.js", "homepage": "http://sipjs.com", "author": "Will Mitchell ", diff --git a/plugin.xml b/plugin.xml index 72df67d27..9d7162ee8 100644 --- a/plugin.xml +++ b/plugin.xml @@ -1,5 +1,5 @@ - + sip.js