@voicenter-team/opensips-js 1.0.95 → 1.0.96

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,158 +1,158 @@
1
- "use strict";var x_=Object.defineProperty;var M_=(c,s,r)=>s in c?x_(c,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):c[s]=r;var Wt=(c,s,r)=>(M_(c,typeof s!="symbol"?s+"":s,r),r);var k_=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ze(c){return c&&c.__esModule&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c}const L_="jssip",$_="JsSIP",H_="the Javascript SIP library",F_="3.10.0",j_="https://jssip.net",q_=["José Luis Millán <jmillan@aliax.net> (https://github.com/jmillan)","Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)"],V_="lib/JsSIP.d.ts",B_="lib-es5/JsSIP.js",G_=["sip","websocket","webrtc","node","browser","library"],W_="MIT",K_={type:"git",url:"https://github.com/versatica/JsSIP.git"},Y_={url:"https://github.com/versatica/JsSIP/issues"},J_={"@types/events":"^3.0.0","@types/debug":"^4.1.7",debug:"^4.3.1",events:"^3.3.0","sdp-transform":"^2.14.1"},z_={"@babel/core":"^7.19.6","@babel/preset-env":"^7.19.4","ansi-colors":"^3.2.4",browserify:"^16.5.1",eslint:"^5.16.0","fancy-log":"^1.3.3",gulp:"^4.0.2","gulp-babel":"^8.0.0","gulp-eslint":"^5.0.0","gulp-expect-file":"^1.0.2","gulp-header":"^2.0.9","gulp-nodeunit-runner":"^0.2.2","gulp-plumber":"^1.2.1","gulp-rename":"^1.4.0","gulp-uglify-es":"^1.0.4",pegjs:"^0.7.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0"},X_={lint:"node npm-scripts.js lint",test:"node npm-scripts.js test",prepublish:"node npm-scripts.js prepublish",release:"node npm-scripts.js release"},La={name:L_,title:$_,description:H_,version:F_,homepage:j_,contributors:q_,types:V_,main:B_,keywords:G_,license:W_,repository:K_,bugs:Y_,dependencies:J_,devDependencies:z_,scripts:X_};var Vu=La,it={USER_AGENT:"".concat(Vu.title," ").concat(Vu.version),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",MISSING_SDP:"Missing SDP",AUTHENTICATION_ERROR:"Authentication Error",BYE:"Terminated",WEBRTC_ERROR:"WebRTC Error",CANCELED:"Canceled",NO_ANSWER:"No Answer",EXPIRES:"Expires",NO_ACK:"No ACK",DIALOG_ERROR:"Dialog Error",USER_DENIED_MEDIA_ACCESS:"User Denied Media Access",BAD_MEDIA_DESCRIPTION:"Bad Media Description",RTP_TIMEOUT:"RTP Timeout"},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,424],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",REFER:"REFER",UPDATE:"UPDATE",SUBSCRIBE:"SUBSCRIBE",DTMF_TRANSPORT:{INFO:"INFO",RFC2833:"RFC2833"},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",424:"Bad Location Information",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:"JsSIP Internal 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"},ALLOWED_METHODS:"INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY",ACCEPTED_BODY_TYPES:"application/sdp, application/dtmf-relay",MAX_FORWARDS:69,SESSION_EXPIRES:90,MIN_SESSION_EXPIRES:60,CONNECTION_RECOVERY_MAX_INTERVAL:30,CONNECTION_RECOVERY_MIN_INTERVAL:2};function _a(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_a=function(r){return typeof r}:_a=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},_a(c)}function $a(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Ha(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&Xi(c,s)}function Fa(c){var s=Ff();return function(){var a=Qi(c),o;if(s){var t=Qi(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return Q_(this,o)}}function Q_(c,s){return s&&(_a(s)==="object"||typeof s=="function")?s:Z_(c)}function Z_(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function dr(c){var s=typeof Map=="function"?new Map:void 0;return dr=function(a){if(a===null||!eh(a))return a;if(typeof a!="function")throw new TypeError("Super expression must either be null or a function");if(typeof s<"u"){if(s.has(a))return s.get(a);s.set(a,o)}function o(){return ha(a,arguments,Qi(this).constructor)}return o.prototype=Object.create(a.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),Xi(o,a)},dr(c)}function ha(c,s,r){return Ff()?ha=Reflect.construct:ha=function(o,t,n){var h=[null];h.push.apply(h,t);var _=Function.bind.apply(o,h),d=new _;return n&&Xi(d,n.prototype),d},ha.apply(null,arguments)}function Ff(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function eh(c){return Function.toString.call(c).indexOf("[native code]")!==-1}function Xi(c,s){return Xi=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},Xi(c,s)}function Qi(c){return Qi=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Qi(c)}var th=function(c){Ha(r,c);var s=Fa(r);function r(a,o){var t;return $a(this,r),t=s.call(this),t.code=1,t.name="CONFIGURATION_ERROR",t.parameter=a,t.value=o,t.message=t.value?"Invalid value ".concat(JSON.stringify(t.value),' for parameter "').concat(t.parameter,'"'):"Missing parameter: ".concat(t.parameter),t}return r}(dr(Error)),sh=function(c){Ha(r,c);var s=Fa(r);function r(a){var o;return $a(this,r),o=s.call(this),o.code=2,o.name="INVALID_STATE_ERROR",o.status=a,o.message="Invalid status: ".concat(a),o}return r}(dr(Error)),nh=function(c){Ha(r,c);var s=Fa(r);function r(a){var o;return $a(this,r),o=s.call(this),o.code=3,o.name="NOT_SUPPORTED_ERROR",o.message=a,o}return r}(dr(Error)),rh=function(c){Ha(r,c);var s=Fa(r);function r(a){var o;return $a(this,r),o=s.call(this),o.code=4,o.name="NOT_READY_ERROR",o.message=a,o}return r}(dr(Error)),Bs={ConfigurationError:th,InvalidStateError:sh,NotSupportedError:nh,NotReadyError:rh},Ze={},oo,Bu;function bu(){if(Bu)return oo;Bu=1;function c(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function s(t,n){for(var h=0;h<n.length;h++){var _=n[h];_.enumerable=_.enumerable||!1,_.configurable=!0,"value"in _&&(_.writable=!0),Object.defineProperty(t,_.key,_)}}function r(t,n,h){return n&&s(t.prototype,n),h&&s(t,h),t}var a=Gs(),o=ls();return oo=function(){r(t,null,[{key:"parse",value:function(h){if(h=o.parse(h,"Name_Addr_Header"),h!==-1)return h}}]);function t(n,h,_){if(c(this,t),!n||!(n instanceof a))throw new TypeError('missing or invalid "uri" parameter');this._uri=n,this._parameters={},this.display_name=h;for(var d in _)Object.prototype.hasOwnProperty.call(_,d)&&this.setParam(d,_[d])}return r(t,[{key:"setParam",value:function(h,_){h&&(this._parameters[h.toLowerCase()]=typeof _>"u"||_===null?null:_.toString())}},{key:"getParam",value:function(h){if(h)return this._parameters[h.toLowerCase()]}},{key:"hasParam",value:function(h){if(h)return this._parameters.hasOwnProperty(h.toLowerCase())&&!0||!1}},{key:"deleteParam",value:function(h){if(h=h.toLowerCase(),this._parameters.hasOwnProperty(h)){var _=this._parameters[h];return delete this._parameters[h],_}}},{key:"clearParams",value:function(){this._parameters={}}},{key:"clone",value:function(){return new t(this._uri.clone(),this._display_name,JSON.parse(JSON.stringify(this._parameters)))}},{key:"_quote",value:function(h){return h.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}},{key:"toString",value:function(){var h=this._display_name?'"'.concat(this._quote(this._display_name),'" '):"";h+="<".concat(this._uri.toString(),">");for(var _ in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,_)&&(h+=";".concat(_),this._parameters[_]!==null&&(h+="=".concat(this._parameters[_])));return h}},{key:"uri",get:function(){return this._uri}},{key:"display_name",get:function(){return this._display_name},set:function(h){this._display_name=h===0?"0":h}}]),t}(),oo}var uo,Gu;function ls(){return Gu||(Gu=1,uo=function(){function c(r){return'"'+r.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g,escape)+'"'}var s={parse:function(a,o){var t={CRLF:g,DIGIT:T,ALPHA:E,HEXDIG:y,WSP:A,OCTET:C,DQUOTE:I,SP:H,HTAB:L,alphanum:oe,reserved:N,unreserved:j,mark:Se,escaped:ve,LWS:M,SWS:D,HCOLON:B,TEXT_UTF8_TRIM:V,TEXT_UTF8char:J,UTF8_NONASCII:F,UTF8_CONT:X,LHEX:U,token:P,token_nodot:se,separators:tt,word:ee,STAR:W,SLASH:G,EQUAL:re,LPAREN:ge,RPAREN:be,RAQUOT:xe,LAQUOT:Ce,COMMA:le,SEMI:ye,COLON:st,LDQUOT:lt,RDQUOT:Ee,comment:Ae,ctext:Ie,quoted_string:Oe,quoted_string_clean:pe,qdtext:ue,quoted_pair:de,SIP_URI_noparams:we,SIP_URI:Ne,uri_scheme:Qe,uri_scheme_sips:Le,uri_scheme_sip:kt,userinfo:ht,user:In,user_unreserved:bn,password:Ws,hostport:Qt,host:as,hostname:Ks,domainlabel:wn,toplabel:On,IPv6reference:Ys,IPv6address:me,h16:ae,ls32:at,IPv4address:Gt,dec_octet:ys,port:Tr,uri_parameters:Dn,uri_parameter:Nn,transport_param:vr,user_param:Er,method_param:Sr,ttl_param:yr,maddr_param:Ar,lr_param:Cr,other_param:Rr,pname:Ir,pvalue:As,paramchar:Cs,param_unreserved:br,headers:Js,header:zs,hname:wr,hvalue:Rs,hnv_unreserved:Xs,Request_Response:dl,Request_Line:Or,Request_URI:Un,absoluteURI:Pn,hier_part:Dr,net_path:Qs,abs_path:Zs,opaque_part:Is,uric:bs,uric_no_slash:Nr,path_segments:en,segment:ws,param:os,pchar:Os,scheme:Ur,authority:Pr,srvr:xr,reg_name:Mr,query:xn,SIP_Version:Mn,INVITEm:kr,ACKm:Lr,OPTIONSm:$r,BYEm:Hr,CANCELm:Fr,REGISTERm:jr,SUBSCRIBEm:qr,NOTIFYm:Vr,REFERm:tn,Method:sn,Status_Line:Br,Status_Code:Gr,extension_code:Wr,Reason_Phrase:pl,Allow_Events:Wa,Call_ID:Ka,Contact:kn,contact_param:Lt,name_addr:$t,display_name:Ds,contact_params:Ln,c_p_q:Kr,c_p_expires:Zt,delta_seconds:es,qvalue:Ge,generic_param:We,gen_value:ml,Content_Disposition:gl,disp_type:$n,disp_param:Hn,handling_param:Tl,Content_Encoding:Ya,Content_Length:Ja,Content_Type:vl,media_type:Yr,m_type:Jr,discrete_type:zr,composite_type:nn,extension_token:rn,x_token:Xr,m_subtype:Fn,m_parameter:jn,m_value:El,CSeq:Sl,CSeq_value:yl,Expires:za,Event:ln,event_type:an,From:Qr,from_param:on,tag_param:Zr,Max_Forwards:Xa,Min_Expires:Qa,Name_Addr_Header:Za,Proxy_Authenticate:ei,challenge:qn,other_challenge:Ns,auth_param:ts,digest_cln:un,realm:ti,realm_value:si,domain:cn,URI:fn,nonce:ni,nonce_value:ri,opaque:ii,stale:li,algorithm:ai,qop_options:_n,qop_value:Vn,Proxy_Require:eo,Record_Route:Bn,rec_route:Gn,Reason:oi,reason_param:Wn,reason_cause:Al,Require:to,Route:Kn,route_param:Yn,Subscription_State:Cl,substate_value:Jn,subexp_params:zn,event_reason_value:Rl,Subject:so,Supported:no,To:ui,to_param:ci,Via:Xn,via_param:Us,via_params:Qn,via_ttl:fi,via_maddr:_i,via_received:hi,via_branch:di,response_port:pi,rport:mi,sent_protocol:gi,protocol_name:Ti,transport:vi,sent_by:Ei,via_host:Si,via_port:Zn,ttl:yi,WWW_Authenticate:ro,Session_Expires:Il,s_e_expires:er,s_e_params:tr,s_e_refresher:bl,extension_header:wl,header_value:Ol,message_body:io,uuid_URI:Dl,uuid:Ht,hex4:Ft,hex8:Ai,hex12:Nl,Refer_To:lo,Replaces:Ul,call_id:sr,replaces_param:nr,to_tag:Ci,from_tag:Ri,early_flag:Pl};if(o!==void 0){if(t[o]===void 0)throw new Error("Invalid rule name: "+c(o)+".")}else o="CRLF";var n=0,h=0,_=[];function d(e){n<h||(n>h&&(h=n,_=[]),_.push(e))}function g(){var e;return a.substr(n,2)===`\r
1
+ "use strict";var Mh=Object.defineProperty;var Lh=(c,s,n)=>s in c?Mh(c,s,{enumerable:!0,configurable:!0,writable:!0,value:n}):c[s]=n;var Wt=(c,s,n)=>(Lh(c,typeof s!="symbol"?s+"":s,n),n);var $h=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ze(c){return c&&c.__esModule&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c}const Hh="jssip",Fh="JsSIP",jh="the Javascript SIP library",Vh="3.10.0",qh="https://jssip.net",Bh=["José Luis Millán <jmillan@aliax.net> (https://github.com/jmillan)","Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)"],Gh="lib/JsSIP.d.ts",Wh="lib-es5/JsSIP.js",Kh=["sip","websocket","webrtc","node","browser","library"],Yh="MIT",Jh={type:"git",url:"https://github.com/versatica/JsSIP.git"},zh={url:"https://github.com/versatica/JsSIP/issues"},Xh={"@types/events":"^3.0.0","@types/debug":"^4.1.7",debug:"^4.3.1",events:"^3.3.0","sdp-transform":"^2.14.1"},Qh={"@babel/core":"^7.19.6","@babel/preset-env":"^7.19.4","ansi-colors":"^3.2.4",browserify:"^16.5.1",eslint:"^5.16.0","fancy-log":"^1.3.3",gulp:"^4.0.2","gulp-babel":"^8.0.0","gulp-eslint":"^5.0.0","gulp-expect-file":"^1.0.2","gulp-header":"^2.0.9","gulp-nodeunit-runner":"^0.2.2","gulp-plumber":"^1.2.1","gulp-rename":"^1.4.0","gulp-uglify-es":"^1.0.4",pegjs:"^0.7.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0"},Zh={lint:"node npm-scripts.js lint",test:"node npm-scripts.js test",prepublish:"node npm-scripts.js prepublish",release:"node npm-scripts.js release"},Ha={name:Hh,title:Fh,description:jh,version:Vh,homepage:qh,contributors:Bh,types:Gh,main:Wh,keywords:Kh,license:Yh,repository:Jh,bugs:zh,dependencies:Xh,devDependencies:Qh,scripts:Zh};var Gu=Ha,lt={USER_AGENT:"".concat(Gu.title," ").concat(Gu.version),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",MISSING_SDP:"Missing SDP",AUTHENTICATION_ERROR:"Authentication Error",BYE:"Terminated",WEBRTC_ERROR:"WebRTC Error",CANCELED:"Canceled",NO_ANSWER:"No Answer",EXPIRES:"Expires",NO_ACK:"No ACK",DIALOG_ERROR:"Dialog Error",USER_DENIED_MEDIA_ACCESS:"User Denied Media Access",BAD_MEDIA_DESCRIPTION:"Bad Media Description",RTP_TIMEOUT:"RTP Timeout"},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,424],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",REFER:"REFER",UPDATE:"UPDATE",SUBSCRIBE:"SUBSCRIBE",DTMF_TRANSPORT:{INFO:"INFO",RFC2833:"RFC2833"},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",424:"Bad Location Information",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:"JsSIP Internal 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"},ALLOWED_METHODS:"INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY",ACCEPTED_BODY_TYPES:"application/sdp, application/dtmf-relay",MAX_FORWARDS:69,SESSION_EXPIRES:90,MIN_SESSION_EXPIRES:60,CONNECTION_RECOVERY_MAX_INTERVAL:30,CONNECTION_RECOVERY_MIN_INTERVAL:2};function da(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?da=function(n){return typeof n}:da=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},da(c)}function Fa(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function ja(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&Zi(c,s)}function Va(c){var s=Vf();return function(){var a=el(c),o;if(s){var t=el(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return e_(this,o)}}function e_(c,s){return s&&(da(s)==="object"||typeof s=="function")?s:t_(c)}function t_(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function mr(c){var s=typeof Map=="function"?new Map:void 0;return mr=function(a){if(a===null||!s_(a))return a;if(typeof a!="function")throw new TypeError("Super expression must either be null or a function");if(typeof s<"u"){if(s.has(a))return s.get(a);s.set(a,o)}function o(){return pa(a,arguments,el(this).constructor)}return o.prototype=Object.create(a.prototype,{constructor:{value:o,enumerable:!1,writable:!0,configurable:!0}}),Zi(o,a)},mr(c)}function pa(c,s,n){return Vf()?pa=Reflect.construct:pa=function(o,t,r){var _=[null];_.push.apply(_,t);var h=Function.bind.apply(o,_),d=new h;return r&&Zi(d,r.prototype),d},pa.apply(null,arguments)}function Vf(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function s_(c){return Function.toString.call(c).indexOf("[native code]")!==-1}function Zi(c,s){return Zi=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},Zi(c,s)}function el(c){return el=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},el(c)}var n_=function(c){ja(n,c);var s=Va(n);function n(a,o){var t;return Fa(this,n),t=s.call(this),t.code=1,t.name="CONFIGURATION_ERROR",t.parameter=a,t.value=o,t.message=t.value?"Invalid value ".concat(JSON.stringify(t.value),' for parameter "').concat(t.parameter,'"'):"Missing parameter: ".concat(t.parameter),t}return n}(mr(Error)),r_=function(c){ja(n,c);var s=Va(n);function n(a){var o;return Fa(this,n),o=s.call(this),o.code=2,o.name="INVALID_STATE_ERROR",o.status=a,o.message="Invalid status: ".concat(a),o}return n}(mr(Error)),i_=function(c){ja(n,c);var s=Va(n);function n(a){var o;return Fa(this,n),o=s.call(this),o.code=3,o.name="NOT_SUPPORTED_ERROR",o.message=a,o}return n}(mr(Error)),l_=function(c){ja(n,c);var s=Va(n);function n(a){var o;return Fa(this,n),o=s.call(this),o.code=4,o.name="NOT_READY_ERROR",o.message=a,o}return n}(mr(Error)),Ws={ConfigurationError:n_,InvalidStateError:r_,NotSupportedError:i_,NotReadyError:l_},Ze={},co,Wu;function Ou(){if(Wu)return co;Wu=1;function c(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function s(t,r){for(var _=0;_<r.length;_++){var h=r[_];h.enumerable=h.enumerable||!1,h.configurable=!0,"value"in h&&(h.writable=!0),Object.defineProperty(t,h.key,h)}}function n(t,r,_){return r&&s(t.prototype,r),_&&s(t,_),t}var a=Ks(),o=os();return co=function(){n(t,null,[{key:"parse",value:function(_){if(_=o.parse(_,"Name_Addr_Header"),_!==-1)return _}}]);function t(r,_,h){if(c(this,t),!r||!(r instanceof a))throw new TypeError('missing or invalid "uri" parameter');this._uri=r,this._parameters={},this.display_name=_;for(var d in h)Object.prototype.hasOwnProperty.call(h,d)&&this.setParam(d,h[d])}return n(t,[{key:"setParam",value:function(_,h){_&&(this._parameters[_.toLowerCase()]=typeof h>"u"||h===null?null:h.toString())}},{key:"getParam",value:function(_){if(_)return this._parameters[_.toLowerCase()]}},{key:"hasParam",value:function(_){if(_)return this._parameters.hasOwnProperty(_.toLowerCase())&&!0||!1}},{key:"deleteParam",value:function(_){if(_=_.toLowerCase(),this._parameters.hasOwnProperty(_)){var h=this._parameters[_];return delete this._parameters[_],h}}},{key:"clearParams",value:function(){this._parameters={}}},{key:"clone",value:function(){return new t(this._uri.clone(),this._display_name,JSON.parse(JSON.stringify(this._parameters)))}},{key:"_quote",value:function(_){return _.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}},{key:"toString",value:function(){var _=this._display_name?'"'.concat(this._quote(this._display_name),'" '):"";_+="<".concat(this._uri.toString(),">");for(var h in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,h)&&(_+=";".concat(h),this._parameters[h]!==null&&(_+="=".concat(this._parameters[h])));return _}},{key:"uri",get:function(){return this._uri}},{key:"display_name",get:function(){return this._display_name},set:function(_){this._display_name=_===0?"0":_}}]),t}(),co}var fo,Ku;function os(){return Ku||(Ku=1,fo=function(){function c(n){return'"'+n.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g,escape)+'"'}var s={parse:function(a,o){var t={CRLF:g,DIGIT:T,ALPHA:E,HEXDIG:y,WSP:A,OCTET:C,DQUOTE:I,SP:H,HTAB:$,alphanum:oe,reserved:N,unreserved:j,mark:Se,escaped:ve,LWS:k,SWS:D,HCOLON:B,TEXT_UTF8_TRIM:q,TEXT_UTF8char:J,UTF8_NONASCII:F,UTF8_CONT:X,LHEX:U,token:x,token_nodot:se,separators:tt,word:ee,STAR:W,SLASH:G,EQUAL:re,LPAREN:ge,RPAREN:be,RAQUOT:Pe,LAQUOT:Ce,COMMA:le,SEMI:ye,COLON:st,LDQUOT:at,RDQUOT:Ee,comment:Ae,ctext:Ie,quoted_string:Oe,quoted_string_clean:pe,qdtext:ue,quoted_pair:de,SIP_URI_noparams:we,SIP_URI:Ne,uri_scheme:Qe,uri_scheme_sips:Le,uri_scheme_sip:Mt,userinfo:_t,user:wn,user_unreserved:On,password:Ys,hostport:Zt,host:us,hostname:Js,domainlabel:Dn,toplabel:Nn,IPv6reference:zs,IPv6address:me,h16:ae,ls32:ot,IPv4address:Gt,dec_octet:Cs,port:Er,uri_parameters:Un,uri_parameter:xn,transport_param:Sr,user_param:yr,method_param:Ar,ttl_param:Cr,maddr_param:Rr,lr_param:Ir,other_param:br,pname:wr,pvalue:Rs,paramchar:Is,param_unreserved:Or,headers:Xs,header:Qs,hname:Dr,hvalue:bs,hnv_unreserved:Zs,Request_Response:ml,Request_Line:Nr,Request_URI:Pn,absoluteURI:kn,hier_part:Ur,net_path:en,abs_path:tn,opaque_part:ws,uric:Os,uric_no_slash:xr,path_segments:sn,segment:Ds,param:cs,pchar:Ns,scheme:Pr,authority:kr,srvr:Mr,reg_name:Lr,query:Mn,SIP_Version:Ln,INVITEm:$r,ACKm:Hr,OPTIONSm:Fr,BYEm:jr,CANCELm:Vr,REGISTERm:qr,SUBSCRIBEm:Br,NOTIFYm:Gr,REFERm:nn,Method:rn,Status_Line:Wr,Status_Code:Kr,extension_code:Yr,Reason_Phrase:gl,Allow_Events:Ya,Call_ID:Ja,Contact:$n,contact_param:Lt,name_addr:$t,display_name:Us,contact_params:Hn,c_p_q:Jr,c_p_expires:es,delta_seconds:ts,qvalue:Ge,generic_param:We,gen_value:Tl,Content_Disposition:vl,disp_type:Fn,disp_param:jn,handling_param:El,Content_Encoding:za,Content_Length:Xa,Content_Type:Sl,media_type:zr,m_type:Xr,discrete_type:Qr,composite_type:ln,extension_token:an,x_token:Zr,m_subtype:Vn,m_parameter:qn,m_value:yl,CSeq:Al,CSeq_value:Cl,Expires:Qa,Event:on,event_type:un,From:ei,from_param:cn,tag_param:ti,Max_Forwards:Za,Min_Expires:eo,Name_Addr_Header:to,Proxy_Authenticate:si,challenge:Bn,other_challenge:xs,auth_param:ss,digest_cln:fn,realm:ni,realm_value:ri,domain:hn,URI:_n,nonce:ii,nonce_value:li,opaque:ai,stale:oi,algorithm:ui,qop_options:dn,qop_value:Gn,Proxy_Require:so,Record_Route:Wn,rec_route:Kn,Reason:ci,reason_param:Yn,reason_cause:Rl,Require:no,Route:Jn,route_param:zn,Subscription_State:Il,substate_value:Xn,subexp_params:Qn,event_reason_value:bl,Subject:ro,Supported:io,To:fi,to_param:hi,Via:Zn,via_param:Ps,via_params:er,via_ttl:_i,via_maddr:di,via_received:pi,via_branch:mi,response_port:gi,rport:Ti,sent_protocol:vi,protocol_name:Ei,transport:Si,sent_by:yi,via_host:Ai,via_port:tr,ttl:Ci,WWW_Authenticate:lo,Session_Expires:wl,s_e_expires:sr,s_e_params:nr,s_e_refresher:Ol,extension_header:Dl,header_value:Nl,message_body:ao,uuid_URI:Ul,uuid:Ht,hex4:Ft,hex8:Ri,hex12:xl,Refer_To:oo,Replaces:Pl,call_id:rr,replaces_param:ir,to_tag:Ii,from_tag:bi,early_flag:kl};if(o!==void 0){if(t[o]===void 0)throw new Error("Invalid rule name: "+c(o)+".")}else o="CRLF";var r=0,_=0,h=[];function d(e){r<_||(r>_&&(_=r,h=[]),h.push(e))}function g(){var e;return a.substr(r,2)===`\r
2
2
  `?(e=`\r
3
- `,n+=2):(e=null,d('"\\r\\n"')),e}function T(){var e;return/^[0-9]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[0-9]")),e}function E(){var e;return/^[a-zA-Z]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[a-zA-Z]")),e}function y(){var e;return/^[0-9a-fA-F]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[0-9a-fA-F]")),e}function A(){var e;return e=H(),e===null&&(e=L()),e}function C(){var e;return/^[\0-\xFF]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[\\0-\\xFF]")),e}function I(){var e;return/^["]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d('["]')),e}function H(){var e;return a.charCodeAt(n)===32?(e=" ",n++):(e=null,d('" "')),e}function L(){var e;return a.charCodeAt(n)===9?(e=" ",n++):(e=null,d('"\\t"')),e}function oe(){var e;return/^[a-zA-Z0-9]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[a-zA-Z0-9]")),e}function N(){var e;return a.charCodeAt(n)===59?(e=";",n++):(e=null,d('";"')),e===null&&(a.charCodeAt(n)===47?(e="/",n++):(e=null,d('"/"')),e===null&&(a.charCodeAt(n)===63?(e="?",n++):(e=null,d('"?"')),e===null&&(a.charCodeAt(n)===58?(e=":",n++):(e=null,d('":"')),e===null&&(a.charCodeAt(n)===64?(e="@",n++):(e=null,d('"@"')),e===null&&(a.charCodeAt(n)===38?(e="&",n++):(e=null,d('"&"')),e===null&&(a.charCodeAt(n)===61?(e="=",n++):(e=null,d('"="')),e===null&&(a.charCodeAt(n)===43?(e="+",n++):(e=null,d('"+"')),e===null&&(a.charCodeAt(n)===36?(e="$",n++):(e=null,d('"$"')),e===null&&(a.charCodeAt(n)===44?(e=",",n++):(e=null,d('","'))))))))))),e}function j(){var e;return e=oe(),e===null&&(e=Se()),e}function Se(){var e;return a.charCodeAt(n)===45?(e="-",n++):(e=null,d('"-"')),e===null&&(a.charCodeAt(n)===95?(e="_",n++):(e=null,d('"_"')),e===null&&(a.charCodeAt(n)===46?(e=".",n++):(e=null,d('"."')),e===null&&(a.charCodeAt(n)===33?(e="!",n++):(e=null,d('"!"')),e===null&&(a.charCodeAt(n)===126?(e="~",n++):(e=null,d('"~"')),e===null&&(a.charCodeAt(n)===42?(e="*",n++):(e=null,d('"*"')),e===null&&(a.charCodeAt(n)===39?(e="'",n++):(e=null,d(`"'"`)),e===null&&(a.charCodeAt(n)===40?(e="(",n++):(e=null,d('"("')),e===null&&(a.charCodeAt(n)===41?(e=")",n++):(e=null,d('")"')))))))))),e}function ve(){var e,l,u,f,p;return f=n,p=n,a.charCodeAt(n)===37?(e="%",n++):(e=null,d('"%"')),e!==null?(l=y(),l!==null?(u=y(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){return v.join("")}(f,e)),e===null&&(n=f),e}function M(){var e,l,u,f,p,m;for(f=n,p=n,m=n,e=[],l=A();l!==null;)e.push(l),l=A();if(e!==null?(l=g(),l!==null?e=[e,l]:(e=null,n=m)):(e=null,n=m),e=e!==null?e:"",e!==null){if(u=A(),u!==null)for(l=[];u!==null;)l.push(u),u=A();else l=null;l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e!==null&&(e=function(v){return" "}()),e===null&&(n=f),e}function D(){var e;return e=M(),e=e!==null?e:"",e}function B(){var e,l,u,f,p;for(f=n,p=n,e=[],l=H(),l===null&&(l=L());l!==null;)e.push(l),l=H(),l===null&&(l=L());return e!==null?(a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m){return":"}()),e===null&&(n=f),e}function V(){var e,l,u,f,p,m,v;if(p=n,m=n,l=J(),l!==null)for(e=[];l!==null;)e.push(l),l=J();else e=null;if(e!==null){for(l=[],v=n,u=[],f=M();f!==null;)u.push(f),f=M();for(u!==null?(f=J(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);u!==null;){for(l.push(u),v=n,u=[],f=M();f!==null;)u.push(f),f=M();u!==null?(f=J(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v)}l!==null?e=[e,l]:(e=null,n=m)}else e=null,n=m;return e!==null&&(e=function(S){return a.substring(n,S)}(p)),e===null&&(n=p),e}function J(){var e;return/^[!-~]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[!-~]")),e===null&&(e=F()),e}function F(){var e;return/^[\x80-\uFFFF]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[\\x80-\\uFFFF]")),e}function X(){var e;return/^[\x80-\xBF]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[\\x80-\\xBF]")),e}function U(){var e;return e=T(),e===null&&(/^[a-f]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[a-f]"))),e}function P(){var e,l,u;if(u=n,l=oe(),l===null&&(a.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l===null&&(a.charCodeAt(n)===46?(l=".",n++):(l=null,d('"."')),l===null&&(a.charCodeAt(n)===33?(l="!",n++):(l=null,d('"!"')),l===null&&(a.charCodeAt(n)===37?(l="%",n++):(l=null,d('"%"')),l===null&&(a.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l===null&&(a.charCodeAt(n)===95?(l="_",n++):(l=null,d('"_"')),l===null&&(a.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(a.charCodeAt(n)===96?(l="`",n++):(l=null,d('"`"')),l===null&&(a.charCodeAt(n)===39?(l="'",n++):(l=null,d(`"'"`)),l===null&&(a.charCodeAt(n)===126?(l="~",n++):(l=null,d('"~"')))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=oe(),l===null&&(a.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l===null&&(a.charCodeAt(n)===46?(l=".",n++):(l=null,d('"."')),l===null&&(a.charCodeAt(n)===33?(l="!",n++):(l=null,d('"!"')),l===null&&(a.charCodeAt(n)===37?(l="%",n++):(l=null,d('"%"')),l===null&&(a.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l===null&&(a.charCodeAt(n)===95?(l="_",n++):(l=null,d('"_"')),l===null&&(a.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(a.charCodeAt(n)===96?(l="`",n++):(l=null,d('"`"')),l===null&&(a.charCodeAt(n)===39?(l="'",n++):(l=null,d(`"'"`)),l===null&&(a.charCodeAt(n)===126?(l="~",n++):(l=null,d('"~"'))))))))))));else e=null;return e!==null&&(e=function(f){return a.substring(n,f)}(u)),e===null&&(n=u),e}function se(){var e,l,u;if(u=n,l=oe(),l===null&&(a.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l===null&&(a.charCodeAt(n)===33?(l="!",n++):(l=null,d('"!"')),l===null&&(a.charCodeAt(n)===37?(l="%",n++):(l=null,d('"%"')),l===null&&(a.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l===null&&(a.charCodeAt(n)===95?(l="_",n++):(l=null,d('"_"')),l===null&&(a.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(a.charCodeAt(n)===96?(l="`",n++):(l=null,d('"`"')),l===null&&(a.charCodeAt(n)===39?(l="'",n++):(l=null,d(`"'"`)),l===null&&(a.charCodeAt(n)===126?(l="~",n++):(l=null,d('"~"'))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=oe(),l===null&&(a.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l===null&&(a.charCodeAt(n)===33?(l="!",n++):(l=null,d('"!"')),l===null&&(a.charCodeAt(n)===37?(l="%",n++):(l=null,d('"%"')),l===null&&(a.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l===null&&(a.charCodeAt(n)===95?(l="_",n++):(l=null,d('"_"')),l===null&&(a.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(a.charCodeAt(n)===96?(l="`",n++):(l=null,d('"`"')),l===null&&(a.charCodeAt(n)===39?(l="'",n++):(l=null,d(`"'"`)),l===null&&(a.charCodeAt(n)===126?(l="~",n++):(l=null,d('"~"')))))))))));else e=null;return e!==null&&(e=function(f){return a.substring(n,f)}(u)),e===null&&(n=u),e}function tt(){var e;return a.charCodeAt(n)===40?(e="(",n++):(e=null,d('"("')),e===null&&(a.charCodeAt(n)===41?(e=")",n++):(e=null,d('")"')),e===null&&(a.charCodeAt(n)===60?(e="<",n++):(e=null,d('"<"')),e===null&&(a.charCodeAt(n)===62?(e=">",n++):(e=null,d('">"')),e===null&&(a.charCodeAt(n)===64?(e="@",n++):(e=null,d('"@"')),e===null&&(a.charCodeAt(n)===44?(e=",",n++):(e=null,d('","')),e===null&&(a.charCodeAt(n)===59?(e=";",n++):(e=null,d('";"')),e===null&&(a.charCodeAt(n)===58?(e=":",n++):(e=null,d('":"')),e===null&&(a.charCodeAt(n)===92?(e="\\",n++):(e=null,d('"\\\\"')),e===null&&(e=I(),e===null&&(a.charCodeAt(n)===47?(e="/",n++):(e=null,d('"/"')),e===null&&(a.charCodeAt(n)===91?(e="[",n++):(e=null,d('"["')),e===null&&(a.charCodeAt(n)===93?(e="]",n++):(e=null,d('"]"')),e===null&&(a.charCodeAt(n)===63?(e="?",n++):(e=null,d('"?"')),e===null&&(a.charCodeAt(n)===61?(e="=",n++):(e=null,d('"="')),e===null&&(a.charCodeAt(n)===123?(e="{",n++):(e=null,d('"{"')),e===null&&(a.charCodeAt(n)===125?(e="}",n++):(e=null,d('"}"')),e===null&&(e=H(),e===null&&(e=L())))))))))))))))))),e}function ee(){var e,l,u;if(u=n,l=oe(),l===null&&(a.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l===null&&(a.charCodeAt(n)===46?(l=".",n++):(l=null,d('"."')),l===null&&(a.charCodeAt(n)===33?(l="!",n++):(l=null,d('"!"')),l===null&&(a.charCodeAt(n)===37?(l="%",n++):(l=null,d('"%"')),l===null&&(a.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l===null&&(a.charCodeAt(n)===95?(l="_",n++):(l=null,d('"_"')),l===null&&(a.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(a.charCodeAt(n)===96?(l="`",n++):(l=null,d('"`"')),l===null&&(a.charCodeAt(n)===39?(l="'",n++):(l=null,d(`"'"`)),l===null&&(a.charCodeAt(n)===126?(l="~",n++):(l=null,d('"~"')),l===null&&(a.charCodeAt(n)===40?(l="(",n++):(l=null,d('"("')),l===null&&(a.charCodeAt(n)===41?(l=")",n++):(l=null,d('")"')),l===null&&(a.charCodeAt(n)===60?(l="<",n++):(l=null,d('"<"')),l===null&&(a.charCodeAt(n)===62?(l=">",n++):(l=null,d('">"')),l===null&&(a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l===null&&(a.charCodeAt(n)===92?(l="\\",n++):(l=null,d('"\\\\"')),l===null&&(l=I(),l===null&&(a.charCodeAt(n)===47?(l="/",n++):(l=null,d('"/"')),l===null&&(a.charCodeAt(n)===91?(l="[",n++):(l=null,d('"["')),l===null&&(a.charCodeAt(n)===93?(l="]",n++):(l=null,d('"]"')),l===null&&(a.charCodeAt(n)===63?(l="?",n++):(l=null,d('"?"')),l===null&&(a.charCodeAt(n)===123?(l="{",n++):(l=null,d('"{"')),l===null&&(a.charCodeAt(n)===125?(l="}",n++):(l=null,d('"}"'))))))))))))))))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=oe(),l===null&&(a.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l===null&&(a.charCodeAt(n)===46?(l=".",n++):(l=null,d('"."')),l===null&&(a.charCodeAt(n)===33?(l="!",n++):(l=null,d('"!"')),l===null&&(a.charCodeAt(n)===37?(l="%",n++):(l=null,d('"%"')),l===null&&(a.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l===null&&(a.charCodeAt(n)===95?(l="_",n++):(l=null,d('"_"')),l===null&&(a.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(a.charCodeAt(n)===96?(l="`",n++):(l=null,d('"`"')),l===null&&(a.charCodeAt(n)===39?(l="'",n++):(l=null,d(`"'"`)),l===null&&(a.charCodeAt(n)===126?(l="~",n++):(l=null,d('"~"')),l===null&&(a.charCodeAt(n)===40?(l="(",n++):(l=null,d('"("')),l===null&&(a.charCodeAt(n)===41?(l=")",n++):(l=null,d('")"')),l===null&&(a.charCodeAt(n)===60?(l="<",n++):(l=null,d('"<"')),l===null&&(a.charCodeAt(n)===62?(l=">",n++):(l=null,d('">"')),l===null&&(a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l===null&&(a.charCodeAt(n)===92?(l="\\",n++):(l=null,d('"\\\\"')),l===null&&(l=I(),l===null&&(a.charCodeAt(n)===47?(l="/",n++):(l=null,d('"/"')),l===null&&(a.charCodeAt(n)===91?(l="[",n++):(l=null,d('"["')),l===null&&(a.charCodeAt(n)===93?(l="]",n++):(l=null,d('"]"')),l===null&&(a.charCodeAt(n)===63?(l="?",n++):(l=null,d('"?"')),l===null&&(a.charCodeAt(n)===123?(l="{",n++):(l=null,d('"{"')),l===null&&(a.charCodeAt(n)===125?(l="}",n++):(l=null,d('"}"')))))))))))))))))))))))));else e=null;return e!==null&&(e=function(f){return a.substring(n,f)}(u)),e===null&&(n=u),e}function W(){var e,l,u,f,p;return f=n,p=n,e=D(),e!==null?(a.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m){return"*"}()),e===null&&(n=f),e}function G(){var e,l,u,f,p;return f=n,p=n,e=D(),e!==null?(a.charCodeAt(n)===47?(l="/",n++):(l=null,d('"/"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m){return"/"}()),e===null&&(n=f),e}function re(){var e,l,u,f,p;return f=n,p=n,e=D(),e!==null?(a.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m){return"="}()),e===null&&(n=f),e}function ge(){var e,l,u,f,p;return f=n,p=n,e=D(),e!==null?(a.charCodeAt(n)===40?(l="(",n++):(l=null,d('"("')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m){return"("}()),e===null&&(n=f),e}function be(){var e,l,u,f,p;return f=n,p=n,e=D(),e!==null?(a.charCodeAt(n)===41?(l=")",n++):(l=null,d('")"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m){return")"}()),e===null&&(n=f),e}function xe(){var e,l,u,f;return u=n,f=n,a.charCodeAt(n)===62?(e=">",n++):(e=null,d('">"')),e!==null?(l=D(),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e!==null&&(e=function(p){return">"}()),e===null&&(n=u),e}function Ce(){var e,l,u,f;return u=n,f=n,e=D(),e!==null?(a.charCodeAt(n)===60?(l="<",n++):(l=null,d('"<"')),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e!==null&&(e=function(p){return"<"}()),e===null&&(n=u),e}function le(){var e,l,u,f,p;return f=n,p=n,e=D(),e!==null?(a.charCodeAt(n)===44?(l=",",n++):(l=null,d('","')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m){return","}()),e===null&&(n=f),e}function ye(){var e,l,u,f,p;return f=n,p=n,e=D(),e!==null?(a.charCodeAt(n)===59?(l=";",n++):(l=null,d('";"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m){return";"}()),e===null&&(n=f),e}function st(){var e,l,u,f,p;return f=n,p=n,e=D(),e!==null?(a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m){return":"}()),e===null&&(n=f),e}function lt(){var e,l,u,f;return u=n,f=n,e=D(),e!==null?(l=I(),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e!==null&&(e=function(p){return'"'}()),e===null&&(n=u),e}function Ee(){var e,l,u,f;return u=n,f=n,e=I(),e!==null?(l=D(),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e!==null&&(e=function(p){return'"'}()),e===null&&(n=u),e}function Ae(){var e,l,u,f;if(f=n,e=ge(),e!==null){for(l=[],u=Ie(),u===null&&(u=de(),u===null&&(u=Ae()));u!==null;)l.push(u),u=Ie(),u===null&&(u=de(),u===null&&(u=Ae()));l!==null?(u=be(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)}else e=null,n=f;return e}function Ie(){var e;return/^[!-']/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[!-']")),e===null&&(/^[*-[]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[*-[]")),e===null&&(/^[\]-~]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[\\]-~]")),e===null&&(e=F(),e===null&&(e=M())))),e}function Oe(){var e,l,u,f,p,m;if(p=n,m=n,e=D(),e!==null)if(l=I(),l!==null){for(u=[],f=ue(),f===null&&(f=de());f!==null;)u.push(f),f=ue(),f===null&&(f=de());u!==null?(f=I(),f!==null?e=[e,l,u,f]:(e=null,n=m)):(e=null,n=m)}else e=null,n=m;else e=null,n=m;return e!==null&&(e=function(v){return a.substring(n,v)}(p)),e===null&&(n=p),e}function pe(){var e,l,u,f,p,m;if(p=n,m=n,e=D(),e!==null)if(l=I(),l!==null){for(u=[],f=ue(),f===null&&(f=de());f!==null;)u.push(f),f=ue(),f===null&&(f=de());u!==null?(f=I(),f!==null?e=[e,l,u,f]:(e=null,n=m)):(e=null,n=m)}else e=null,n=m;else e=null,n=m;return e!==null&&(e=function(v){var S=a.substring(n,v).trim();return S.substring(1,S.length-1).replace(/\\([\x00-\x09\x0b-\x0c\x0e-\x7f])/g,"$1")}(p)),e===null&&(n=p),e}function ue(){var e;return e=M(),e===null&&(a.charCodeAt(n)===33?(e="!",n++):(e=null,d('"!"')),e===null&&(/^[#-[]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[#-[]")),e===null&&(/^[\]-~]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[\\]-~]")),e===null&&(e=F())))),e}function de(){var e,l,u;return u=n,a.charCodeAt(n)===92?(e="\\",n++):(e=null,d('"\\\\"')),e!==null?(/^[\0-\t]/.test(a.charAt(n))?(l=a.charAt(n),n++):(l=null,d("[\\0-\\t]")),l===null&&(/^[\x0B-\f]/.test(a.charAt(n))?(l=a.charAt(n),n++):(l=null,d("[\\x0B-\\f]")),l===null&&(/^[\x0E-]/.test(a.charAt(n))?(l=a.charAt(n),n++):(l=null,d("[\\x0E-]")))),l!==null?e=[e,l]:(e=null,n=u)):(e=null,n=u),e}function we(){var e,l,u,f,p,m;return p=n,m=n,e=Qe(),e!==null?(a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=ht(),u=u!==null?u:"",u!==null?(f=Qt(),f!==null?e=[e,l,u,f]:(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m),e!==null&&(e=function(v){try{w.uri=new us(w.scheme,w.user,w.host,w.port),delete w.scheme,delete w.user,delete w.host,delete w.host_type,delete w.port}catch{w=-1}}()),e===null&&(n=p),e}function Ne(){var e,l,u,f,p,m,v,S;return v=n,S=n,e=Qe(),e!==null?(a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=ht(),u=u!==null?u:"",u!==null?(f=Qt(),f!==null?(p=Dn(),p!==null?(m=Js(),m=m!==null?m:"",m!==null?e=[e,l,u,f,p,m]:(e=null,n=S)):(e=null,n=S)):(e=null,n=S)):(e=null,n=S)):(e=null,n=S)):(e=null,n=S),e!==null&&(e=function(O){try{w.uri=new us(w.scheme,w.user,w.host,w.port,w.uri_params,w.uri_headers),delete w.scheme,delete w.user,delete w.host,delete w.host_type,delete w.port,delete w.uri_params,o==="SIP_URI"&&(w=w.uri)}catch{w=-1}}()),e===null&&(n=v),e}function Qe(){var e;return e=Le(),e===null&&(e=kt()),e}function Le(){var e,l;return l=n,a.substr(n,4).toLowerCase()==="sips"?(e=a.substr(n,4),n+=4):(e=null,d('"sips"')),e!==null&&(e=function(u,f){w.scheme=f.toLowerCase()}(l,e)),e===null&&(n=l),e}function kt(){var e,l;return l=n,a.substr(n,3).toLowerCase()==="sip"?(e=a.substr(n,3),n+=3):(e=null,d('"sip"')),e!==null&&(e=function(u,f){w.scheme=f.toLowerCase()}(l,e)),e===null&&(n=l),e}function ht(){var e,l,u,f,p,m;return f=n,p=n,e=In(),e!==null?(m=n,a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=Ws(),u!==null?l=[l,u]:(l=null,n=m)):(l=null,n=m),l=l!==null?l:"",l!==null?(a.charCodeAt(n)===64?(u="@",n++):(u=null,d('"@"')),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(v){w.user=decodeURIComponent(a.substring(n-1,v))}(f)),e===null&&(n=f),e}function In(){var e,l;if(l=j(),l===null&&(l=ve(),l===null&&(l=bn())),l!==null)for(e=[];l!==null;)e.push(l),l=j(),l===null&&(l=ve(),l===null&&(l=bn()));else e=null;return e}function bn(){var e;return a.charCodeAt(n)===38?(e="&",n++):(e=null,d('"&"')),e===null&&(a.charCodeAt(n)===61?(e="=",n++):(e=null,d('"="')),e===null&&(a.charCodeAt(n)===43?(e="+",n++):(e=null,d('"+"')),e===null&&(a.charCodeAt(n)===36?(e="$",n++):(e=null,d('"$"')),e===null&&(a.charCodeAt(n)===44?(e=",",n++):(e=null,d('","')),e===null&&(a.charCodeAt(n)===59?(e=";",n++):(e=null,d('";"')),e===null&&(a.charCodeAt(n)===63?(e="?",n++):(e=null,d('"?"')),e===null&&(a.charCodeAt(n)===47?(e="/",n++):(e=null,d('"/"'))))))))),e}function Ws(){var e,l,u;for(u=n,e=[],l=j(),l===null&&(l=ve(),l===null&&(a.charCodeAt(n)===38?(l="&",n++):(l=null,d('"&"')),l===null&&(a.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l===null&&(a.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(a.charCodeAt(n)===36?(l="$",n++):(l=null,d('"$"')),l===null&&(a.charCodeAt(n)===44?(l=",",n++):(l=null,d('","'))))))));l!==null;)e.push(l),l=j(),l===null&&(l=ve(),l===null&&(a.charCodeAt(n)===38?(l="&",n++):(l=null,d('"&"')),l===null&&(a.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l===null&&(a.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(a.charCodeAt(n)===36?(l="$",n++):(l=null,d('"$"')),l===null&&(a.charCodeAt(n)===44?(l=",",n++):(l=null,d('","'))))))));return e!==null&&(e=function(f){w.password=a.substring(n,f)}(u)),e===null&&(n=u),e}function Qt(){var e,l,u,f,p;return f=n,e=as(),e!==null?(p=n,a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=Tr(),u!==null?l=[l,u]:(l=null,n=p)):(l=null,n=p),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e}function as(){var e,l;return l=n,e=Ks(),e===null&&(e=Gt(),e===null&&(e=Ys())),e!==null&&(e=function(u){return w.host=a.substring(n,u).toLowerCase(),w.host}(l)),e===null&&(n=l),e}function Ks(){var e,l,u,f,p,m;for(f=n,p=n,e=[],m=n,l=wn(),l!==null?(a.charCodeAt(n)===46?(u=".",n++):(u=null,d('"."')),u!==null?l=[l,u]:(l=null,n=m)):(l=null,n=m);l!==null;)e.push(l),m=n,l=wn(),l!==null?(a.charCodeAt(n)===46?(u=".",n++):(u=null,d('"."')),u!==null?l=[l,u]:(l=null,n=m)):(l=null,n=m);return e!==null?(l=On(),l!==null?(a.charCodeAt(n)===46?(u=".",n++):(u=null,d('"."')),u=u!==null?u:"",u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(v){return w.host_type="domain",a.substring(n,v)}(f)),e===null&&(n=f),e}function wn(){var e,l,u,f;if(f=n,e=oe(),e!==null){for(l=[],u=oe(),u===null&&(a.charCodeAt(n)===45?(u="-",n++):(u=null,d('"-"')),u===null&&(a.charCodeAt(n)===95?(u="_",n++):(u=null,d('"_"'))));u!==null;)l.push(u),u=oe(),u===null&&(a.charCodeAt(n)===45?(u="-",n++):(u=null,d('"-"')),u===null&&(a.charCodeAt(n)===95?(u="_",n++):(u=null,d('"_"'))));l!==null?e=[e,l]:(e=null,n=f)}else e=null,n=f;return e}function On(){var e,l,u,f;if(f=n,e=E(),e!==null){for(l=[],u=oe(),u===null&&(a.charCodeAt(n)===45?(u="-",n++):(u=null,d('"-"')),u===null&&(a.charCodeAt(n)===95?(u="_",n++):(u=null,d('"_"'))));u!==null;)l.push(u),u=oe(),u===null&&(a.charCodeAt(n)===45?(u="-",n++):(u=null,d('"-"')),u===null&&(a.charCodeAt(n)===95?(u="_",n++):(u=null,d('"_"'))));l!==null?e=[e,l]:(e=null,n=f)}else e=null,n=f;return e}function Ys(){var e,l,u,f,p;return f=n,p=n,a.charCodeAt(n)===91?(e="[",n++):(e=null,d('"["')),e!==null?(l=me(),l!==null?(a.charCodeAt(n)===93?(u="]",n++):(u=null,d('"]"')),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m){return w.host_type="IPv6",a.substring(n,m)}(f)),e===null&&(n=f),e}function me(){var e,l,u,f,p,m,v,S,O,ie,Ue,wt,Ps,k,R,Te;return k=n,R=n,e=ae(),e!==null?(a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?(a.charCodeAt(n)===58?(f=":",n++):(f=null,d('":"')),f!==null?(p=ae(),p!==null?(a.charCodeAt(n)===58?(m=":",n++):(m=null,d('":"')),m!==null?(v=ae(),v!==null?(a.charCodeAt(n)===58?(S=":",n++):(S=null,d('":"')),S!==null?(O=ae(),O!==null?(a.charCodeAt(n)===58?(ie=":",n++):(ie=null,d('":"')),ie!==null?(Ue=ae(),Ue!==null?(a.charCodeAt(n)===58?(wt=":",n++):(wt=null,d('":"')),wt!==null?(Ps=at(),Ps!==null?e=[e,l,u,f,p,m,v,S,O,ie,Ue,wt,Ps]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R),e===null&&(R=n,a.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=ae(),l!==null?(a.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?(a.charCodeAt(n)===58?(p=":",n++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?(a.charCodeAt(n)===58?(v=":",n++):(v=null,d('":"')),v!==null?(S=ae(),S!==null?(a.charCodeAt(n)===58?(O=":",n++):(O=null,d('":"')),O!==null?(ie=ae(),ie!==null?(a.charCodeAt(n)===58?(Ue=":",n++):(Ue=null,d('":"')),Ue!==null?(wt=at(),wt!==null?e=[e,l,u,f,p,m,v,S,O,ie,Ue,wt]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R),e===null&&(R=n,a.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=ae(),l!==null?(a.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?(a.charCodeAt(n)===58?(p=":",n++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?(a.charCodeAt(n)===58?(v=":",n++):(v=null,d('":"')),v!==null?(S=ae(),S!==null?(a.charCodeAt(n)===58?(O=":",n++):(O=null,d('":"')),O!==null?(ie=at(),ie!==null?e=[e,l,u,f,p,m,v,S,O,ie]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R),e===null&&(R=n,a.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=ae(),l!==null?(a.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?(a.charCodeAt(n)===58?(p=":",n++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?(a.charCodeAt(n)===58?(v=":",n++):(v=null,d('":"')),v!==null?(S=at(),S!==null?e=[e,l,u,f,p,m,v,S]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R),e===null&&(R=n,a.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=ae(),l!==null?(a.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?(a.charCodeAt(n)===58?(p=":",n++):(p=null,d('":"')),p!==null?(m=at(),m!==null?e=[e,l,u,f,p,m]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R),e===null&&(R=n,a.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=ae(),l!==null?(a.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=at(),f!==null?e=[e,l,u,f]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R),e===null&&(R=n,a.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=at(),l!==null?e=[e,l]:(e=null,n=R)):(e=null,n=R),e===null&&(R=n,a.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=ae(),l!==null?e=[e,l]:(e=null,n=R)):(e=null,n=R),e===null&&(R=n,e=ae(),e!==null?(a.substr(n,2)==="::"?(l="::",n+=2):(l=null,d('"::"')),l!==null?(u=ae(),u!==null?(a.charCodeAt(n)===58?(f=":",n++):(f=null,d('":"')),f!==null?(p=ae(),p!==null?(a.charCodeAt(n)===58?(m=":",n++):(m=null,d('":"')),m!==null?(v=ae(),v!==null?(a.charCodeAt(n)===58?(S=":",n++):(S=null,d('":"')),S!==null?(O=ae(),O!==null?(a.charCodeAt(n)===58?(ie=":",n++):(ie=null,d('":"')),ie!==null?(Ue=at(),Ue!==null?e=[e,l,u,f,p,m,v,S,O,ie,Ue]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R),e===null&&(R=n,e=ae(),e!==null?(Te=n,a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?l=[l,u]:(l=null,n=Te)):(l=null,n=Te),l=l!==null?l:"",l!==null?(a.substr(n,2)==="::"?(u="::",n+=2):(u=null,d('"::"')),u!==null?(f=ae(),f!==null?(a.charCodeAt(n)===58?(p=":",n++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?(a.charCodeAt(n)===58?(v=":",n++):(v=null,d('":"')),v!==null?(S=ae(),S!==null?(a.charCodeAt(n)===58?(O=":",n++):(O=null,d('":"')),O!==null?(ie=at(),ie!==null?e=[e,l,u,f,p,m,v,S,O,ie]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R),e===null&&(R=n,e=ae(),e!==null?(Te=n,a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?l=[l,u]:(l=null,n=Te)):(l=null,n=Te),l=l!==null?l:"",l!==null?(Te=n,a.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?u=[u,f]:(u=null,n=Te)):(u=null,n=Te),u=u!==null?u:"",u!==null?(a.substr(n,2)==="::"?(f="::",n+=2):(f=null,d('"::"')),f!==null?(p=ae(),p!==null?(a.charCodeAt(n)===58?(m=":",n++):(m=null,d('":"')),m!==null?(v=ae(),v!==null?(a.charCodeAt(n)===58?(S=":",n++):(S=null,d('":"')),S!==null?(O=at(),O!==null?e=[e,l,u,f,p,m,v,S,O]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R),e===null&&(R=n,e=ae(),e!==null?(Te=n,a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?l=[l,u]:(l=null,n=Te)):(l=null,n=Te),l=l!==null?l:"",l!==null?(Te=n,a.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?u=[u,f]:(u=null,n=Te)):(u=null,n=Te),u=u!==null?u:"",u!==null?(Te=n,a.charCodeAt(n)===58?(f=":",n++):(f=null,d('":"')),f!==null?(p=ae(),p!==null?f=[f,p]:(f=null,n=Te)):(f=null,n=Te),f=f!==null?f:"",f!==null?(a.substr(n,2)==="::"?(p="::",n+=2):(p=null,d('"::"')),p!==null?(m=ae(),m!==null?(a.charCodeAt(n)===58?(v=":",n++):(v=null,d('":"')),v!==null?(S=at(),S!==null?e=[e,l,u,f,p,m,v,S]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R),e===null&&(R=n,e=ae(),e!==null?(Te=n,a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?l=[l,u]:(l=null,n=Te)):(l=null,n=Te),l=l!==null?l:"",l!==null?(Te=n,a.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?u=[u,f]:(u=null,n=Te)):(u=null,n=Te),u=u!==null?u:"",u!==null?(Te=n,a.charCodeAt(n)===58?(f=":",n++):(f=null,d('":"')),f!==null?(p=ae(),p!==null?f=[f,p]:(f=null,n=Te)):(f=null,n=Te),f=f!==null?f:"",f!==null?(Te=n,a.charCodeAt(n)===58?(p=":",n++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?p=[p,m]:(p=null,n=Te)):(p=null,n=Te),p=p!==null?p:"",p!==null?(a.substr(n,2)==="::"?(m="::",n+=2):(m=null,d('"::"')),m!==null?(v=at(),v!==null?e=[e,l,u,f,p,m,v]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R),e===null&&(R=n,e=ae(),e!==null?(Te=n,a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?l=[l,u]:(l=null,n=Te)):(l=null,n=Te),l=l!==null?l:"",l!==null?(Te=n,a.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?u=[u,f]:(u=null,n=Te)):(u=null,n=Te),u=u!==null?u:"",u!==null?(Te=n,a.charCodeAt(n)===58?(f=":",n++):(f=null,d('":"')),f!==null?(p=ae(),p!==null?f=[f,p]:(f=null,n=Te)):(f=null,n=Te),f=f!==null?f:"",f!==null?(Te=n,a.charCodeAt(n)===58?(p=":",n++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?p=[p,m]:(p=null,n=Te)):(p=null,n=Te),p=p!==null?p:"",p!==null?(Te=n,a.charCodeAt(n)===58?(m=":",n++):(m=null,d('":"')),m!==null?(v=ae(),v!==null?m=[m,v]:(m=null,n=Te)):(m=null,n=Te),m=m!==null?m:"",m!==null?(a.substr(n,2)==="::"?(v="::",n+=2):(v=null,d('"::"')),v!==null?(S=ae(),S!==null?e=[e,l,u,f,p,m,v,S]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R),e===null&&(R=n,e=ae(),e!==null?(Te=n,a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?l=[l,u]:(l=null,n=Te)):(l=null,n=Te),l=l!==null?l:"",l!==null?(Te=n,a.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?u=[u,f]:(u=null,n=Te)):(u=null,n=Te),u=u!==null?u:"",u!==null?(Te=n,a.charCodeAt(n)===58?(f=":",n++):(f=null,d('":"')),f!==null?(p=ae(),p!==null?f=[f,p]:(f=null,n=Te)):(f=null,n=Te),f=f!==null?f:"",f!==null?(Te=n,a.charCodeAt(n)===58?(p=":",n++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?p=[p,m]:(p=null,n=Te)):(p=null,n=Te),p=p!==null?p:"",p!==null?(Te=n,a.charCodeAt(n)===58?(m=":",n++):(m=null,d('":"')),m!==null?(v=ae(),v!==null?m=[m,v]:(m=null,n=Te)):(m=null,n=Te),m=m!==null?m:"",m!==null?(Te=n,a.charCodeAt(n)===58?(v=":",n++):(v=null,d('":"')),v!==null?(S=ae(),S!==null?v=[v,S]:(v=null,n=Te)):(v=null,n=Te),v=v!==null?v:"",v!==null?(a.substr(n,2)==="::"?(S="::",n+=2):(S=null,d('"::"')),S!==null?e=[e,l,u,f,p,m,v,S]:(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R)):(e=null,n=R))))))))))))))),e!==null&&(e=function(P_){return w.host_type="IPv6",a.substring(n,P_)}(k)),e===null&&(n=k),e}function ae(){var e,l,u,f,p;return p=n,e=y(),e!==null?(l=y(),l=l!==null?l:"",l!==null?(u=y(),u=u!==null?u:"",u!==null?(f=y(),f=f!==null?f:"",f!==null?e=[e,l,u,f]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e}function at(){var e,l,u,f;return f=n,e=ae(),e!==null?(a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e===null&&(e=Gt()),e}function Gt(){var e,l,u,f,p,m,v,S,O;return S=n,O=n,e=ys(),e!==null?(a.charCodeAt(n)===46?(l=".",n++):(l=null,d('"."')),l!==null?(u=ys(),u!==null?(a.charCodeAt(n)===46?(f=".",n++):(f=null,d('"."')),f!==null?(p=ys(),p!==null?(a.charCodeAt(n)===46?(m=".",n++):(m=null,d('"."')),m!==null?(v=ys(),v!==null?e=[e,l,u,f,p,m,v]:(e=null,n=O)):(e=null,n=O)):(e=null,n=O)):(e=null,n=O)):(e=null,n=O)):(e=null,n=O)):(e=null,n=O),e!==null&&(e=function(ie){return w.host_type="IPv4",a.substring(n,ie)}(S)),e===null&&(n=S),e}function ys(){var e,l,u,f;return f=n,a.substr(n,2)==="25"?(e="25",n+=2):(e=null,d('"25"')),e!==null?(/^[0-5]/.test(a.charAt(n))?(l=a.charAt(n),n++):(l=null,d("[0-5]")),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e===null&&(f=n,a.charCodeAt(n)===50?(e="2",n++):(e=null,d('"2"')),e!==null?(/^[0-4]/.test(a.charAt(n))?(l=a.charAt(n),n++):(l=null,d("[0-4]")),l!==null?(u=T(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e===null&&(f=n,a.charCodeAt(n)===49?(e="1",n++):(e=null,d('"1"')),e!==null?(l=T(),l!==null?(u=T(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e===null&&(f=n,/^[1-9]/.test(a.charAt(n))?(e=a.charAt(n),n++):(e=null,d("[1-9]")),e!==null?(l=T(),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e===null&&(e=T())))),e}function Tr(){var e,l,u,f,p,m,v;return m=n,v=n,e=T(),e=e!==null?e:"",e!==null?(l=T(),l=l!==null?l:"",l!==null?(u=T(),u=u!==null?u:"",u!==null?(f=T(),f=f!==null?f:"",f!==null?(p=T(),p=p!==null?p:"",p!==null?e=[e,l,u,f,p]:(e=null,n=v)):(e=null,n=v)):(e=null,n=v)):(e=null,n=v)):(e=null,n=v),e!==null&&(e=function(S,O){return O=parseInt(O.join("")),w.port=O,O}(m,e)),e===null&&(n=m),e}function Dn(){var e,l,u,f;for(e=[],f=n,a.charCodeAt(n)===59?(l=";",n++):(l=null,d('";"')),l!==null?(u=Nn(),u!==null?l=[l,u]:(l=null,n=f)):(l=null,n=f);l!==null;)e.push(l),f=n,a.charCodeAt(n)===59?(l=";",n++):(l=null,d('";"')),l!==null?(u=Nn(),u!==null?l=[l,u]:(l=null,n=f)):(l=null,n=f);return e}function Nn(){var e;return e=vr(),e===null&&(e=Er(),e===null&&(e=Sr(),e===null&&(e=yr(),e===null&&(e=Ar(),e===null&&(e=Cr(),e===null&&(e=Rr())))))),e}function vr(){var e,l,u,f;return u=n,f=n,a.substr(n,10).toLowerCase()==="transport="?(e=a.substr(n,10),n+=10):(e=null,d('"transport="')),e!==null?(a.substr(n,3).toLowerCase()==="udp"?(l=a.substr(n,3),n+=3):(l=null,d('"udp"')),l===null&&(a.substr(n,3).toLowerCase()==="tcp"?(l=a.substr(n,3),n+=3):(l=null,d('"tcp"')),l===null&&(a.substr(n,4).toLowerCase()==="sctp"?(l=a.substr(n,4),n+=4):(l=null,d('"sctp"')),l===null&&(a.substr(n,3).toLowerCase()==="tls"?(l=a.substr(n,3),n+=3):(l=null,d('"tls"')),l===null&&(l=P())))),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e!==null&&(e=function(p,m){w.uri_params||(w.uri_params={}),w.uri_params.transport=m.toLowerCase()}(u,e[1])),e===null&&(n=u),e}function Er(){var e,l,u,f;return u=n,f=n,a.substr(n,5).toLowerCase()==="user="?(e=a.substr(n,5),n+=5):(e=null,d('"user="')),e!==null?(a.substr(n,5).toLowerCase()==="phone"?(l=a.substr(n,5),n+=5):(l=null,d('"phone"')),l===null&&(a.substr(n,2).toLowerCase()==="ip"?(l=a.substr(n,2),n+=2):(l=null,d('"ip"')),l===null&&(l=P())),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e!==null&&(e=function(p,m){w.uri_params||(w.uri_params={}),w.uri_params.user=m.toLowerCase()}(u,e[1])),e===null&&(n=u),e}function Sr(){var e,l,u,f;return u=n,f=n,a.substr(n,7).toLowerCase()==="method="?(e=a.substr(n,7),n+=7):(e=null,d('"method="')),e!==null?(l=sn(),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e!==null&&(e=function(p,m){w.uri_params||(w.uri_params={}),w.uri_params.method=m}(u,e[1])),e===null&&(n=u),e}function yr(){var e,l,u,f;return u=n,f=n,a.substr(n,4).toLowerCase()==="ttl="?(e=a.substr(n,4),n+=4):(e=null,d('"ttl="')),e!==null?(l=yi(),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e!==null&&(e=function(p,m){w.params||(w.params={}),w.params.ttl=m}(u,e[1])),e===null&&(n=u),e}function Ar(){var e,l,u,f;return u=n,f=n,a.substr(n,6).toLowerCase()==="maddr="?(e=a.substr(n,6),n+=6):(e=null,d('"maddr="')),e!==null?(l=as(),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e!==null&&(e=function(p,m){w.uri_params||(w.uri_params={}),w.uri_params.maddr=m}(u,e[1])),e===null&&(n=u),e}function Cr(){var e,l,u,f,p,m;return f=n,p=n,a.substr(n,2).toLowerCase()==="lr"?(e=a.substr(n,2),n+=2):(e=null,d('"lr"')),e!==null?(m=n,a.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l!==null?(u=P(),u!==null?l=[l,u]:(l=null,n=m)):(l=null,n=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(v){w.uri_params||(w.uri_params={}),w.uri_params.lr=void 0}()),e===null&&(n=f),e}function Rr(){var e,l,u,f,p,m;return f=n,p=n,e=Ir(),e!==null?(m=n,a.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l!==null?(u=As(),u!==null?l=[l,u]:(l=null,n=m)):(l=null,n=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(v,S,O){w.uri_params||(w.uri_params={}),typeof O>"u"?O=void 0:O=O[1],w.uri_params[S.toLowerCase()]=O}(f,e[0],e[1])),e===null&&(n=f),e}function Ir(){var e,l,u;if(u=n,l=Cs(),l!==null)for(e=[];l!==null;)e.push(l),l=Cs();else e=null;return e!==null&&(e=function(f,p){return p.join("")}(u,e)),e===null&&(n=u),e}function As(){var e,l,u;if(u=n,l=Cs(),l!==null)for(e=[];l!==null;)e.push(l),l=Cs();else e=null;return e!==null&&(e=function(f,p){return p.join("")}(u,e)),e===null&&(n=u),e}function Cs(){var e;return e=br(),e===null&&(e=j(),e===null&&(e=ve())),e}function br(){var e;return a.charCodeAt(n)===91?(e="[",n++):(e=null,d('"["')),e===null&&(a.charCodeAt(n)===93?(e="]",n++):(e=null,d('"]"')),e===null&&(a.charCodeAt(n)===47?(e="/",n++):(e=null,d('"/"')),e===null&&(a.charCodeAt(n)===58?(e=":",n++):(e=null,d('":"')),e===null&&(a.charCodeAt(n)===38?(e="&",n++):(e=null,d('"&"')),e===null&&(a.charCodeAt(n)===43?(e="+",n++):(e=null,d('"+"')),e===null&&(a.charCodeAt(n)===36?(e="$",n++):(e=null,d('"$"')))))))),e}function Js(){var e,l,u,f,p,m,v;if(m=n,a.charCodeAt(n)===63?(e="?",n++):(e=null,d('"?"')),e!==null)if(l=zs(),l!==null){for(u=[],v=n,a.charCodeAt(n)===38?(f="&",n++):(f=null,d('"&"')),f!==null?(p=zs(),p!==null?f=[f,p]:(f=null,n=v)):(f=null,n=v);f!==null;)u.push(f),v=n,a.charCodeAt(n)===38?(f="&",n++):(f=null,d('"&"')),f!==null?(p=zs(),p!==null?f=[f,p]:(f=null,n=v)):(f=null,n=v);u!==null?e=[e,l,u]:(e=null,n=m)}else e=null,n=m;else e=null,n=m;return e}function zs(){var e,l,u,f,p;return f=n,p=n,e=wr(),e!==null?(a.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l!==null?(u=Rs(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v,S){v=v.join("").toLowerCase(),S=S.join(""),w.uri_headers||(w.uri_headers={}),w.uri_headers[v]?w.uri_headers[v].push(S):w.uri_headers[v]=[S]}(f,e[0],e[2])),e===null&&(n=f),e}function wr(){var e,l;if(l=Xs(),l===null&&(l=j(),l===null&&(l=ve())),l!==null)for(e=[];l!==null;)e.push(l),l=Xs(),l===null&&(l=j(),l===null&&(l=ve()));else e=null;return e}function Rs(){var e,l;for(e=[],l=Xs(),l===null&&(l=j(),l===null&&(l=ve()));l!==null;)e.push(l),l=Xs(),l===null&&(l=j(),l===null&&(l=ve()));return e}function Xs(){var e;return a.charCodeAt(n)===91?(e="[",n++):(e=null,d('"["')),e===null&&(a.charCodeAt(n)===93?(e="]",n++):(e=null,d('"]"')),e===null&&(a.charCodeAt(n)===47?(e="/",n++):(e=null,d('"/"')),e===null&&(a.charCodeAt(n)===63?(e="?",n++):(e=null,d('"?"')),e===null&&(a.charCodeAt(n)===58?(e=":",n++):(e=null,d('":"')),e===null&&(a.charCodeAt(n)===43?(e="+",n++):(e=null,d('"+"')),e===null&&(a.charCodeAt(n)===36?(e="$",n++):(e=null,d('"$"')))))))),e}function dl(){var e;return e=Br(),e===null&&(e=Or()),e}function Or(){var e,l,u,f,p,m;return m=n,e=sn(),e!==null?(l=H(),l!==null?(u=Un(),u!==null?(f=H(),f!==null?(p=Mn(),p!==null?e=[e,l,u,f,p]:(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m),e}function Un(){var e;return e=Ne(),e===null&&(e=Pn()),e}function Pn(){var e,l,u,f;return f=n,e=Ur(),e!==null?(a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=Dr(),u===null&&(u=Is()),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function Dr(){var e,l,u,f,p;return f=n,e=Qs(),e===null&&(e=Zs()),e!==null?(p=n,a.charCodeAt(n)===63?(l="?",n++):(l=null,d('"?"')),l!==null?(u=xn(),u!==null?l=[l,u]:(l=null,n=p)):(l=null,n=p),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e}function Qs(){var e,l,u,f;return f=n,a.substr(n,2)==="//"?(e="//",n+=2):(e=null,d('"//"')),e!==null?(l=Pr(),l!==null?(u=Zs(),u=u!==null?u:"",u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function Zs(){var e,l,u;return u=n,a.charCodeAt(n)===47?(e="/",n++):(e=null,d('"/"')),e!==null?(l=en(),l!==null?e=[e,l]:(e=null,n=u)):(e=null,n=u),e}function Is(){var e,l,u,f;if(f=n,e=Nr(),e!==null){for(l=[],u=bs();u!==null;)l.push(u),u=bs();l!==null?e=[e,l]:(e=null,n=f)}else e=null,n=f;return e}function bs(){var e;return e=N(),e===null&&(e=j(),e===null&&(e=ve())),e}function Nr(){var e;return e=j(),e===null&&(e=ve(),e===null&&(a.charCodeAt(n)===59?(e=";",n++):(e=null,d('";"')),e===null&&(a.charCodeAt(n)===63?(e="?",n++):(e=null,d('"?"')),e===null&&(a.charCodeAt(n)===58?(e=":",n++):(e=null,d('":"')),e===null&&(a.charCodeAt(n)===64?(e="@",n++):(e=null,d('"@"')),e===null&&(a.charCodeAt(n)===38?(e="&",n++):(e=null,d('"&"')),e===null&&(a.charCodeAt(n)===61?(e="=",n++):(e=null,d('"="')),e===null&&(a.charCodeAt(n)===43?(e="+",n++):(e=null,d('"+"')),e===null&&(a.charCodeAt(n)===36?(e="$",n++):(e=null,d('"$"')),e===null&&(a.charCodeAt(n)===44?(e=",",n++):(e=null,d('","')))))))))))),e}function en(){var e,l,u,f,p,m;if(p=n,e=ws(),e!==null){for(l=[],m=n,a.charCodeAt(n)===47?(u="/",n++):(u=null,d('"/"')),u!==null?(f=ws(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,a.charCodeAt(n)===47?(u="/",n++):(u=null,d('"/"')),u!==null?(f=ws(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function ws(){var e,l,u,f,p,m;for(p=n,e=[],l=Os();l!==null;)e.push(l),l=Os();if(e!==null){for(l=[],m=n,a.charCodeAt(n)===59?(u=";",n++):(u=null,d('";"')),u!==null?(f=os(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,a.charCodeAt(n)===59?(u=";",n++):(u=null,d('";"')),u!==null?(f=os(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function os(){var e,l;for(e=[],l=Os();l!==null;)e.push(l),l=Os();return e}function Os(){var e;return e=j(),e===null&&(e=ve(),e===null&&(a.charCodeAt(n)===58?(e=":",n++):(e=null,d('":"')),e===null&&(a.charCodeAt(n)===64?(e="@",n++):(e=null,d('"@"')),e===null&&(a.charCodeAt(n)===38?(e="&",n++):(e=null,d('"&"')),e===null&&(a.charCodeAt(n)===61?(e="=",n++):(e=null,d('"="')),e===null&&(a.charCodeAt(n)===43?(e="+",n++):(e=null,d('"+"')),e===null&&(a.charCodeAt(n)===36?(e="$",n++):(e=null,d('"$"')),e===null&&(a.charCodeAt(n)===44?(e=",",n++):(e=null,d('","')))))))))),e}function Ur(){var e,l,u,f,p;if(f=n,p=n,e=E(),e!==null){for(l=[],u=E(),u===null&&(u=T(),u===null&&(a.charCodeAt(n)===43?(u="+",n++):(u=null,d('"+"')),u===null&&(a.charCodeAt(n)===45?(u="-",n++):(u=null,d('"-"')),u===null&&(a.charCodeAt(n)===46?(u=".",n++):(u=null,d('"."'))))));u!==null;)l.push(u),u=E(),u===null&&(u=T(),u===null&&(a.charCodeAt(n)===43?(u="+",n++):(u=null,d('"+"')),u===null&&(a.charCodeAt(n)===45?(u="-",n++):(u=null,d('"-"')),u===null&&(a.charCodeAt(n)===46?(u=".",n++):(u=null,d('"."'))))));l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e!==null&&(e=function(m){w.scheme=a.substring(n,m)}(f)),e===null&&(n=f),e}function Pr(){var e;return e=xr(),e===null&&(e=Mr()),e}function xr(){var e,l,u,f;return u=n,f=n,e=ht(),e!==null?(a.charCodeAt(n)===64?(l="@",n++):(l=null,d('"@"')),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e=e!==null?e:"",e!==null?(l=Qt(),l!==null?e=[e,l]:(e=null,n=u)):(e=null,n=u),e=e!==null?e:"",e}function Mr(){var e,l;if(l=j(),l===null&&(l=ve(),l===null&&(a.charCodeAt(n)===36?(l="$",n++):(l=null,d('"$"')),l===null&&(a.charCodeAt(n)===44?(l=",",n++):(l=null,d('","')),l===null&&(a.charCodeAt(n)===59?(l=";",n++):(l=null,d('";"')),l===null&&(a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l===null&&(a.charCodeAt(n)===64?(l="@",n++):(l=null,d('"@"')),l===null&&(a.charCodeAt(n)===38?(l="&",n++):(l=null,d('"&"')),l===null&&(a.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l===null&&(a.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"'))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=j(),l===null&&(l=ve(),l===null&&(a.charCodeAt(n)===36?(l="$",n++):(l=null,d('"$"')),l===null&&(a.charCodeAt(n)===44?(l=",",n++):(l=null,d('","')),l===null&&(a.charCodeAt(n)===59?(l=";",n++):(l=null,d('";"')),l===null&&(a.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l===null&&(a.charCodeAt(n)===64?(l="@",n++):(l=null,d('"@"')),l===null&&(a.charCodeAt(n)===38?(l="&",n++):(l=null,d('"&"')),l===null&&(a.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l===null&&(a.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')))))))))));else e=null;return e}function xn(){var e,l;for(e=[],l=bs();l!==null;)e.push(l),l=bs();return e}function Mn(){var e,l,u,f,p,m,v,S;if(v=n,S=n,a.substr(n,3).toLowerCase()==="sip"?(e=a.substr(n,3),n+=3):(e=null,d('"SIP"')),e!==null)if(a.charCodeAt(n)===47?(l="/",n++):(l=null,d('"/"')),l!==null){if(f=T(),f!==null)for(u=[];f!==null;)u.push(f),f=T();else u=null;if(u!==null)if(a.charCodeAt(n)===46?(f=".",n++):(f=null,d('"."')),f!==null){if(m=T(),m!==null)for(p=[];m!==null;)p.push(m),m=T();else p=null;p!==null?e=[e,l,u,f,p]:(e=null,n=S)}else e=null,n=S;else e=null,n=S}else e=null,n=S;else e=null,n=S;return e!==null&&(e=function(O){w.sip_version=a.substring(n,O)}(v)),e===null&&(n=v),e}function kr(){var e;return a.substr(n,6)==="INVITE"?(e="INVITE",n+=6):(e=null,d('"INVITE"')),e}function Lr(){var e;return a.substr(n,3)==="ACK"?(e="ACK",n+=3):(e=null,d('"ACK"')),e}function $r(){var e;return a.substr(n,7)==="OPTIONS"?(e="OPTIONS",n+=7):(e=null,d('"OPTIONS"')),e}function Hr(){var e;return a.substr(n,3)==="BYE"?(e="BYE",n+=3):(e=null,d('"BYE"')),e}function Fr(){var e;return a.substr(n,6)==="CANCEL"?(e="CANCEL",n+=6):(e=null,d('"CANCEL"')),e}function jr(){var e;return a.substr(n,8)==="REGISTER"?(e="REGISTER",n+=8):(e=null,d('"REGISTER"')),e}function qr(){var e;return a.substr(n,9)==="SUBSCRIBE"?(e="SUBSCRIBE",n+=9):(e=null,d('"SUBSCRIBE"')),e}function Vr(){var e;return a.substr(n,6)==="NOTIFY"?(e="NOTIFY",n+=6):(e=null,d('"NOTIFY"')),e}function tn(){var e;return a.substr(n,5)==="REFER"?(e="REFER",n+=5):(e=null,d('"REFER"')),e}function sn(){var e,l;return l=n,e=kr(),e===null&&(e=Lr(),e===null&&(e=$r(),e===null&&(e=Hr(),e===null&&(e=Fr(),e===null&&(e=jr(),e===null&&(e=qr(),e===null&&(e=Vr(),e===null&&(e=tn(),e===null&&(e=P()))))))))),e!==null&&(e=function(u){return w.method=a.substring(n,u),w.method}(l)),e===null&&(n=l),e}function Br(){var e,l,u,f,p,m;return m=n,e=Mn(),e!==null?(l=H(),l!==null?(u=Gr(),u!==null?(f=H(),f!==null?(p=pl(),p!==null?e=[e,l,u,f,p]:(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m),e}function Gr(){var e,l;return l=n,e=Wr(),e!==null&&(e=function(u,f){w.status_code=parseInt(f.join(""))}(l,e)),e===null&&(n=l),e}function Wr(){var e,l,u,f;return f=n,e=T(),e!==null?(l=T(),l!==null?(u=T(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function pl(){var e,l,u;for(u=n,e=[],l=N(),l===null&&(l=j(),l===null&&(l=ve(),l===null&&(l=F(),l===null&&(l=X(),l===null&&(l=H(),l===null&&(l=L()))))));l!==null;)e.push(l),l=N(),l===null&&(l=j(),l===null&&(l=ve(),l===null&&(l=F(),l===null&&(l=X(),l===null&&(l=H(),l===null&&(l=L()))))));return e!==null&&(e=function(f){w.reason_phrase=a.substring(n,f)}(u)),e===null&&(n=u),e}function Wa(){var e,l,u,f,p,m;if(p=n,e=an(),e!==null){for(l=[],m=n,u=le(),u!==null?(f=an(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,u=le(),u!==null?(f=an(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function Ka(){var e,l,u,f,p,m;return f=n,p=n,e=ee(),e!==null?(m=n,a.charCodeAt(n)===64?(l="@",n++):(l=null,d('"@"')),l!==null?(u=ee(),u!==null?l=[l,u]:(l=null,n=m)):(l=null,n=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(v){w=a.substring(n,v)}(f)),e===null&&(n=f),e}function kn(){var e,l,u,f,p,m,v;if(p=n,e=W(),e===null)if(m=n,e=Lt(),e!==null){for(l=[],v=n,u=le(),u!==null?(f=Lt(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);u!==null;)l.push(u),v=n,u=le(),u!==null?(f=Lt(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);l!==null?e=[e,l]:(e=null,n=m)}else e=null,n=m;return e!==null&&(e=function(S){var O,ie;for(ie=w.multi_header.length,O=0;O<ie;O++)if(w.multi_header[O].parsed===null){w=null;break}w!==null?w=w.multi_header:w=-1}()),e===null&&(n=p),e}function Lt(){var e,l,u,f,p,m,v;if(p=n,m=n,e=we(),e===null&&(e=$t()),e!==null){for(l=[],v=n,u=ye(),u!==null?(f=Ln(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);u!==null;)l.push(u),v=n,u=ye(),u!==null?(f=Ln(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);l!==null?e=[e,l]:(e=null,n=m)}else e=null,n=m;return e!==null&&(e=function(S){var O;w.multi_header||(w.multi_header=[]);try{O=new b(w.uri,w.display_name,w.params),delete w.uri,delete w.display_name,delete w.params}catch{O=null}w.multi_header.push({possition:n,offset:S,parsed:O})}(p)),e===null&&(n=p),e}function $t(){var e,l,u,f,p;return p=n,e=Ds(),e=e!==null?e:"",e!==null?(l=Ce(),l!==null?(u=Ne(),u!==null?(f=xe(),f!==null?e=[e,l,u,f]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e}function Ds(){var e,l,u,f,p,m,v;if(p=n,m=n,e=P(),e!==null){for(l=[],v=n,u=M(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);u!==null;)l.push(u),v=n,u=M(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);l!==null?e=[e,l]:(e=null,n=m)}else e=null,n=m;return e===null&&(e=pe()),e!==null&&(e=function(S,O){typeof O=="string"?w.display_name=O:w.display_name=O[1].reduce(function(ie,Ue){return ie+Ue[0]+Ue[1]},O[0])}(p,e)),e===null&&(n=p),e}function Ln(){var e;return e=Kr(),e===null&&(e=Zt(),e===null&&(e=We())),e}function Kr(){var e,l,u,f,p;return f=n,p=n,a.substr(n,1).toLowerCase()==="q"?(e=a.substr(n,1),n++):(e=null,d('"q"')),e!==null?(l=re(),l!==null?(u=Ge(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){w.params||(w.params={}),w.params.q=v}(f,e[2])),e===null&&(n=f),e}function Zt(){var e,l,u,f,p;return f=n,p=n,a.substr(n,7).toLowerCase()==="expires"?(e=a.substr(n,7),n+=7):(e=null,d('"expires"')),e!==null?(l=re(),l!==null?(u=es(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){w.params||(w.params={}),w.params.expires=v}(f,e[2])),e===null&&(n=f),e}function es(){var e,l,u;if(u=n,l=T(),l!==null)for(e=[];l!==null;)e.push(l),l=T();else e=null;return e!==null&&(e=function(f,p){return parseInt(p.join(""))}(u,e)),e===null&&(n=u),e}function Ge(){var e,l,u,f,p,m,v,S;return m=n,v=n,a.charCodeAt(n)===48?(e="0",n++):(e=null,d('"0"')),e!==null?(S=n,a.charCodeAt(n)===46?(l=".",n++):(l=null,d('"."')),l!==null?(u=T(),u=u!==null?u:"",u!==null?(f=T(),f=f!==null?f:"",f!==null?(p=T(),p=p!==null?p:"",p!==null?l=[l,u,f,p]:(l=null,n=S)):(l=null,n=S)):(l=null,n=S)):(l=null,n=S),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=v)):(e=null,n=v),e!==null&&(e=function(O){return parseFloat(a.substring(n,O))}(m)),e===null&&(n=m),e}function We(){var e,l,u,f,p,m;return f=n,p=n,e=P(),e!==null?(m=n,l=re(),l!==null?(u=ml(),u!==null?l=[l,u]:(l=null,n=m)):(l=null,n=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(v,S,O){w.params||(w.params={}),typeof O>"u"?O=void 0:O=O[1],w.params[S.toLowerCase()]=O}(f,e[0],e[1])),e===null&&(n=f),e}function ml(){var e;return e=P(),e===null&&(e=as(),e===null&&(e=Oe())),e}function gl(){var e,l,u,f,p,m;if(p=n,e=$n(),e!==null){for(l=[],m=n,u=ye(),u!==null?(f=Hn(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,u=ye(),u!==null?(f=Hn(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function $n(){var e;return a.substr(n,6).toLowerCase()==="render"?(e=a.substr(n,6),n+=6):(e=null,d('"render"')),e===null&&(a.substr(n,7).toLowerCase()==="session"?(e=a.substr(n,7),n+=7):(e=null,d('"session"')),e===null&&(a.substr(n,4).toLowerCase()==="icon"?(e=a.substr(n,4),n+=4):(e=null,d('"icon"')),e===null&&(a.substr(n,5).toLowerCase()==="alert"?(e=a.substr(n,5),n+=5):(e=null,d('"alert"')),e===null&&(e=P())))),e}function Hn(){var e;return e=Tl(),e===null&&(e=We()),e}function Tl(){var e,l,u,f;return f=n,a.substr(n,8).toLowerCase()==="handling"?(e=a.substr(n,8),n+=8):(e=null,d('"handling"')),e!==null?(l=re(),l!==null?(a.substr(n,8).toLowerCase()==="optional"?(u=a.substr(n,8),n+=8):(u=null,d('"optional"')),u===null&&(a.substr(n,8).toLowerCase()==="required"?(u=a.substr(n,8),n+=8):(u=null,d('"required"')),u===null&&(u=P())),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function Ya(){var e,l,u,f,p,m;if(p=n,e=P(),e!==null){for(l=[],m=n,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function Ja(){var e,l,u;if(u=n,l=T(),l!==null)for(e=[];l!==null;)e.push(l),l=T();else e=null;return e!==null&&(e=function(f,p){w=parseInt(p.join(""))}(u,e)),e===null&&(n=u),e}function vl(){var e,l;return l=n,e=Yr(),e!==null&&(e=function(u){w=a.substring(n,u)}(l)),e===null&&(n=l),e}function Yr(){var e,l,u,f,p,m,v,S;if(v=n,e=Jr(),e!==null)if(l=G(),l!==null)if(u=Fn(),u!==null){for(f=[],S=n,p=ye(),p!==null?(m=jn(),m!==null?p=[p,m]:(p=null,n=S)):(p=null,n=S);p!==null;)f.push(p),S=n,p=ye(),p!==null?(m=jn(),m!==null?p=[p,m]:(p=null,n=S)):(p=null,n=S);f!==null?e=[e,l,u,f]:(e=null,n=v)}else e=null,n=v;else e=null,n=v;else e=null,n=v;return e}function Jr(){var e;return e=zr(),e===null&&(e=nn()),e}function zr(){var e;return a.substr(n,4).toLowerCase()==="text"?(e=a.substr(n,4),n+=4):(e=null,d('"text"')),e===null&&(a.substr(n,5).toLowerCase()==="image"?(e=a.substr(n,5),n+=5):(e=null,d('"image"')),e===null&&(a.substr(n,5).toLowerCase()==="audio"?(e=a.substr(n,5),n+=5):(e=null,d('"audio"')),e===null&&(a.substr(n,5).toLowerCase()==="video"?(e=a.substr(n,5),n+=5):(e=null,d('"video"')),e===null&&(a.substr(n,11).toLowerCase()==="application"?(e=a.substr(n,11),n+=11):(e=null,d('"application"')),e===null&&(e=rn()))))),e}function nn(){var e;return a.substr(n,7).toLowerCase()==="message"?(e=a.substr(n,7),n+=7):(e=null,d('"message"')),e===null&&(a.substr(n,9).toLowerCase()==="multipart"?(e=a.substr(n,9),n+=9):(e=null,d('"multipart"')),e===null&&(e=rn())),e}function rn(){var e;return e=P(),e===null&&(e=Xr()),e}function Xr(){var e,l,u;return u=n,a.substr(n,2).toLowerCase()==="x-"?(e=a.substr(n,2),n+=2):(e=null,d('"x-"')),e!==null?(l=P(),l!==null?e=[e,l]:(e=null,n=u)):(e=null,n=u),e}function Fn(){var e;return e=rn(),e===null&&(e=P()),e}function jn(){var e,l,u,f;return f=n,e=P(),e!==null?(l=re(),l!==null?(u=El(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function El(){var e;return e=P(),e===null&&(e=Oe()),e}function Sl(){var e,l,u,f;return f=n,e=yl(),e!==null?(l=M(),l!==null?(u=sn(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function yl(){var e,l,u;if(u=n,l=T(),l!==null)for(e=[];l!==null;)e.push(l),l=T();else e=null;return e!==null&&(e=function(f,p){w.value=parseInt(p.join(""))}(u,e)),e===null&&(n=u),e}function za(){var e,l;return l=n,e=es(),e!==null&&(e=function(u,f){w=f}(l,e)),e===null&&(n=l),e}function ln(){var e,l,u,f,p,m,v;if(p=n,m=n,e=an(),e!==null){for(l=[],v=n,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);u!==null;)l.push(u),v=n,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);l!==null?e=[e,l]:(e=null,n=m)}else e=null,n=m;return e!==null&&(e=function(S,O){w.event=O.join("").toLowerCase()}(p,e[0])),e===null&&(n=p),e}function an(){var e,l,u,f,p,m;if(p=n,e=se(),e!==null){for(l=[],m=n,a.charCodeAt(n)===46?(u=".",n++):(u=null,d('"."')),u!==null?(f=se(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,a.charCodeAt(n)===46?(u=".",n++):(u=null,d('"."')),u!==null?(f=se(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function Qr(){var e,l,u,f,p,m,v;if(p=n,m=n,e=we(),e===null&&(e=$t()),e!==null){for(l=[],v=n,u=ye(),u!==null?(f=on(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);u!==null;)l.push(u),v=n,u=ye(),u!==null?(f=on(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);l!==null?e=[e,l]:(e=null,n=m)}else e=null,n=m;return e!==null&&(e=function(S){var O=w.tag;try{w=new b(w.uri,w.display_name,w.params),O&&w.setParam("tag",O)}catch{w=-1}}()),e===null&&(n=p),e}function on(){var e;return e=Zr(),e===null&&(e=We()),e}function Zr(){var e,l,u,f,p;return f=n,p=n,a.substr(n,3).toLowerCase()==="tag"?(e=a.substr(n,3),n+=3):(e=null,d('"tag"')),e!==null?(l=re(),l!==null?(u=P(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){w.tag=v}(f,e[2])),e===null&&(n=f),e}function Xa(){var e,l,u;if(u=n,l=T(),l!==null)for(e=[];l!==null;)e.push(l),l=T();else e=null;return e!==null&&(e=function(f,p){w=parseInt(p.join(""))}(u,e)),e===null&&(n=u),e}function Qa(){var e,l;return l=n,e=es(),e!==null&&(e=function(u,f){w=f}(l,e)),e===null&&(n=l),e}function Za(){var e,l,u,f,p,m,v,S,O,ie;for(S=n,O=n,e=[],l=Ds();l!==null;)e.push(l),l=Ds();if(e!==null)if(l=Ce(),l!==null)if(u=Ne(),u!==null)if(f=xe(),f!==null){for(p=[],ie=n,m=ye(),m!==null?(v=We(),v!==null?m=[m,v]:(m=null,n=ie)):(m=null,n=ie);m!==null;)p.push(m),ie=n,m=ye(),m!==null?(v=We(),v!==null?m=[m,v]:(m=null,n=ie)):(m=null,n=ie);p!==null?e=[e,l,u,f,p]:(e=null,n=O)}else e=null,n=O;else e=null,n=O;else e=null,n=O;else e=null,n=O;return e!==null&&(e=function(Ue){try{w=new b(w.uri,w.display_name,w.params)}catch{w=-1}}()),e===null&&(n=S),e}function ei(){var e;return e=qn(),e}function qn(){var e,l,u,f,p,m,v,S;if(v=n,a.substr(n,6).toLowerCase()==="digest"?(e=a.substr(n,6),n+=6):(e=null,d('"Digest"')),e!==null)if(l=M(),l!==null)if(u=un(),u!==null){for(f=[],S=n,p=le(),p!==null?(m=un(),m!==null?p=[p,m]:(p=null,n=S)):(p=null,n=S);p!==null;)f.push(p),S=n,p=le(),p!==null?(m=un(),m!==null?p=[p,m]:(p=null,n=S)):(p=null,n=S);f!==null?e=[e,l,u,f]:(e=null,n=v)}else e=null,n=v;else e=null,n=v;else e=null,n=v;return e===null&&(e=Ns()),e}function Ns(){var e,l,u,f,p,m,v,S;if(v=n,e=P(),e!==null)if(l=M(),l!==null)if(u=ts(),u!==null){for(f=[],S=n,p=le(),p!==null?(m=ts(),m!==null?p=[p,m]:(p=null,n=S)):(p=null,n=S);p!==null;)f.push(p),S=n,p=le(),p!==null?(m=ts(),m!==null?p=[p,m]:(p=null,n=S)):(p=null,n=S);f!==null?e=[e,l,u,f]:(e=null,n=v)}else e=null,n=v;else e=null,n=v;else e=null,n=v;return e}function ts(){var e,l,u,f;return f=n,e=P(),e!==null?(l=re(),l!==null?(u=P(),u===null&&(u=Oe()),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function un(){var e;return e=ti(),e===null&&(e=cn(),e===null&&(e=ni(),e===null&&(e=ii(),e===null&&(e=li(),e===null&&(e=ai(),e===null&&(e=_n(),e===null&&(e=ts()))))))),e}function ti(){var e,l,u,f;return f=n,a.substr(n,5).toLowerCase()==="realm"?(e=a.substr(n,5),n+=5):(e=null,d('"realm"')),e!==null?(l=re(),l!==null?(u=si(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function si(){var e,l;return l=n,e=pe(),e!==null&&(e=function(u,f){w.realm=f}(l,e)),e===null&&(n=l),e}function cn(){var e,l,u,f,p,m,v,S,O;if(S=n,a.substr(n,6).toLowerCase()==="domain"?(e=a.substr(n,6),n+=6):(e=null,d('"domain"')),e!==null)if(l=re(),l!==null)if(u=lt(),u!==null)if(f=fn(),f!==null){if(p=[],O=n,v=H(),v!==null)for(m=[];v!==null;)m.push(v),v=H();else m=null;for(m!==null?(v=fn(),v!==null?m=[m,v]:(m=null,n=O)):(m=null,n=O);m!==null;){if(p.push(m),O=n,v=H(),v!==null)for(m=[];v!==null;)m.push(v),v=H();else m=null;m!==null?(v=fn(),v!==null?m=[m,v]:(m=null,n=O)):(m=null,n=O)}p!==null?(m=Ee(),m!==null?e=[e,l,u,f,p,m]:(e=null,n=S)):(e=null,n=S)}else e=null,n=S;else e=null,n=S;else e=null,n=S;else e=null,n=S;return e}function fn(){var e;return e=Pn(),e===null&&(e=Zs()),e}function ni(){var e,l,u,f;return f=n,a.substr(n,5).toLowerCase()==="nonce"?(e=a.substr(n,5),n+=5):(e=null,d('"nonce"')),e!==null?(l=re(),l!==null?(u=ri(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function ri(){var e,l;return l=n,e=pe(),e!==null&&(e=function(u,f){w.nonce=f}(l,e)),e===null&&(n=l),e}function ii(){var e,l,u,f,p;return f=n,p=n,a.substr(n,6).toLowerCase()==="opaque"?(e=a.substr(n,6),n+=6):(e=null,d('"opaque"')),e!==null?(l=re(),l!==null?(u=pe(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){w.opaque=v}(f,e[2])),e===null&&(n=f),e}function li(){var e,l,u,f,p;return f=n,a.substr(n,5).toLowerCase()==="stale"?(e=a.substr(n,5),n+=5):(e=null,d('"stale"')),e!==null?(l=re(),l!==null?(p=n,a.substr(n,4).toLowerCase()==="true"?(u=a.substr(n,4),n+=4):(u=null,d('"true"')),u!==null&&(u=function(m){w.stale=!0}()),u===null&&(n=p),u===null&&(p=n,a.substr(n,5).toLowerCase()==="false"?(u=a.substr(n,5),n+=5):(u=null,d('"false"')),u!==null&&(u=function(m){w.stale=!1}()),u===null&&(n=p)),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function ai(){var e,l,u,f,p;return f=n,p=n,a.substr(n,9).toLowerCase()==="algorithm"?(e=a.substr(n,9),n+=9):(e=null,d('"algorithm"')),e!==null?(l=re(),l!==null?(a.substr(n,3).toLowerCase()==="md5"?(u=a.substr(n,3),n+=3):(u=null,d('"MD5"')),u===null&&(a.substr(n,8).toLowerCase()==="md5-sess"?(u=a.substr(n,8),n+=8):(u=null,d('"MD5-sess"')),u===null&&(u=P())),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){w.algorithm=v.toUpperCase()}(f,e[2])),e===null&&(n=f),e}function _n(){var e,l,u,f,p,m,v,S,O,ie;if(S=n,a.substr(n,3).toLowerCase()==="qop"?(e=a.substr(n,3),n+=3):(e=null,d('"qop"')),e!==null)if(l=re(),l!==null)if(u=lt(),u!==null){if(O=n,f=Vn(),f!==null){for(p=[],ie=n,a.charCodeAt(n)===44?(m=",",n++):(m=null,d('","')),m!==null?(v=Vn(),v!==null?m=[m,v]:(m=null,n=ie)):(m=null,n=ie);m!==null;)p.push(m),ie=n,a.charCodeAt(n)===44?(m=",",n++):(m=null,d('","')),m!==null?(v=Vn(),v!==null?m=[m,v]:(m=null,n=ie)):(m=null,n=ie);p!==null?f=[f,p]:(f=null,n=O)}else f=null,n=O;f!==null?(p=Ee(),p!==null?e=[e,l,u,f,p]:(e=null,n=S)):(e=null,n=S)}else e=null,n=S;else e=null,n=S;else e=null,n=S;return e}function Vn(){var e,l;return l=n,a.substr(n,8).toLowerCase()==="auth-int"?(e=a.substr(n,8),n+=8):(e=null,d('"auth-int"')),e===null&&(a.substr(n,4).toLowerCase()==="auth"?(e=a.substr(n,4),n+=4):(e=null,d('"auth"')),e===null&&(e=P())),e!==null&&(e=function(u,f){w.qop||(w.qop=[]),w.qop.push(f.toLowerCase())}(l,e)),e===null&&(n=l),e}function eo(){var e,l,u,f,p,m;if(p=n,e=P(),e!==null){for(l=[],m=n,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function Bn(){var e,l,u,f,p,m,v;if(p=n,m=n,e=Gn(),e!==null){for(l=[],v=n,u=le(),u!==null?(f=Gn(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);u!==null;)l.push(u),v=n,u=le(),u!==null?(f=Gn(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);l!==null?e=[e,l]:(e=null,n=m)}else e=null,n=m;return e!==null&&(e=function(S){var O,ie;for(ie=w.multi_header.length,O=0;O<ie;O++)if(w.multi_header[O].parsed===null){w=null;break}w!==null?w=w.multi_header:w=-1}()),e===null&&(n=p),e}function Gn(){var e,l,u,f,p,m,v;if(p=n,m=n,e=$t(),e!==null){for(l=[],v=n,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);u!==null;)l.push(u),v=n,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);l!==null?e=[e,l]:(e=null,n=m)}else e=null,n=m;return e!==null&&(e=function(S){var O;w.multi_header||(w.multi_header=[]);try{O=new b(w.uri,w.display_name,w.params),delete w.uri,delete w.display_name,delete w.params}catch{O=null}w.multi_header.push({possition:n,offset:S,parsed:O})}(p)),e===null&&(n=p),e}function oi(){var e,l,u,f,p,m,v;if(p=n,m=n,a.substr(n,3).toLowerCase()==="sip"?(e=a.substr(n,3),n+=3):(e=null,d('"SIP"')),e===null&&(e=P()),e!==null){for(l=[],v=n,u=ye(),u!==null?(f=Wn(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);u!==null;)l.push(u),v=n,u=ye(),u!==null?(f=Wn(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);l!==null?e=[e,l]:(e=null,n=m)}else e=null,n=m;return e!==null&&(e=function(S,O){if(w.protocol=O.toLowerCase(),w.params||(w.params={}),w.params.text&&w.params.text[0]==='"'){var ie=w.params.text;w.text=ie.substring(1,ie.length-1),delete w.params.text}}(p,e[0])),e===null&&(n=p),e}function Wn(){var e;return e=Al(),e===null&&(e=We()),e}function Al(){var e,l,u,f,p,m;if(p=n,m=n,a.substr(n,5).toLowerCase()==="cause"?(e=a.substr(n,5),n+=5):(e=null,d('"cause"')),e!==null)if(l=re(),l!==null){if(f=T(),f!==null)for(u=[];f!==null;)u.push(f),f=T();else u=null;u!==null?e=[e,l,u]:(e=null,n=m)}else e=null,n=m;else e=null,n=m;return e!==null&&(e=function(v,S){w.cause=parseInt(S.join(""))}(p,e[2])),e===null&&(n=p),e}function to(){var e,l,u,f,p,m;if(p=n,e=P(),e!==null){for(l=[],m=n,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function Kn(){var e,l,u,f,p,m;if(p=n,e=Yn(),e!==null){for(l=[],m=n,u=le(),u!==null?(f=Yn(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,u=le(),u!==null?(f=Yn(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function Yn(){var e,l,u,f,p,m;if(p=n,e=$t(),e!==null){for(l=[],m=n,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function Cl(){var e,l,u,f,p,m;if(p=n,e=Jn(),e!==null){for(l=[],m=n,u=ye(),u!==null?(f=zn(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,u=ye(),u!==null?(f=zn(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function Jn(){var e,l;return l=n,a.substr(n,6).toLowerCase()==="active"?(e=a.substr(n,6),n+=6):(e=null,d('"active"')),e===null&&(a.substr(n,7).toLowerCase()==="pending"?(e=a.substr(n,7),n+=7):(e=null,d('"pending"')),e===null&&(a.substr(n,10).toLowerCase()==="terminated"?(e=a.substr(n,10),n+=10):(e=null,d('"terminated"')),e===null&&(e=P()))),e!==null&&(e=function(u){w.state=a.substring(n,u)}(l)),e===null&&(n=l),e}function zn(){var e,l,u,f,p;return f=n,p=n,a.substr(n,6).toLowerCase()==="reason"?(e=a.substr(n,6),n+=6):(e=null,d('"reason"')),e!==null?(l=re(),l!==null?(u=Rl(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){typeof v<"u"&&(w.reason=v)}(f,e[2])),e===null&&(n=f),e===null&&(f=n,p=n,a.substr(n,7).toLowerCase()==="expires"?(e=a.substr(n,7),n+=7):(e=null,d('"expires"')),e!==null?(l=re(),l!==null?(u=es(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){typeof v<"u"&&(w.expires=v)}(f,e[2])),e===null&&(n=f),e===null&&(f=n,p=n,a.substr(n,11).toLowerCase()==="retry_after"?(e=a.substr(n,11),n+=11):(e=null,d('"retry_after"')),e!==null?(l=re(),l!==null?(u=es(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){typeof v<"u"&&(w.retry_after=v)}(f,e[2])),e===null&&(n=f),e===null&&(e=We()))),e}function Rl(){var e;return a.substr(n,11).toLowerCase()==="deactivated"?(e=a.substr(n,11),n+=11):(e=null,d('"deactivated"')),e===null&&(a.substr(n,9).toLowerCase()==="probation"?(e=a.substr(n,9),n+=9):(e=null,d('"probation"')),e===null&&(a.substr(n,8).toLowerCase()==="rejected"?(e=a.substr(n,8),n+=8):(e=null,d('"rejected"')),e===null&&(a.substr(n,7).toLowerCase()==="timeout"?(e=a.substr(n,7),n+=7):(e=null,d('"timeout"')),e===null&&(a.substr(n,6).toLowerCase()==="giveup"?(e=a.substr(n,6),n+=6):(e=null,d('"giveup"')),e===null&&(a.substr(n,10).toLowerCase()==="noresource"?(e=a.substr(n,10),n+=10):(e=null,d('"noresource"')),e===null&&(a.substr(n,9).toLowerCase()==="invariant"?(e=a.substr(n,9),n+=9):(e=null,d('"invariant"')),e===null&&(e=P()))))))),e}function so(){var e;return e=V(),e=e!==null?e:"",e}function no(){var e,l,u,f,p,m;if(p=n,e=P(),e!==null){for(l=[],m=n,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e=e!==null?e:"",e}function ui(){var e,l,u,f,p,m,v;if(p=n,m=n,e=we(),e===null&&(e=$t()),e!==null){for(l=[],v=n,u=ye(),u!==null?(f=ci(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);u!==null;)l.push(u),v=n,u=ye(),u!==null?(f=ci(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);l!==null?e=[e,l]:(e=null,n=m)}else e=null,n=m;return e!==null&&(e=function(S){var O=w.tag;try{w=new b(w.uri,w.display_name,w.params),O&&w.setParam("tag",O)}catch{w=-1}}()),e===null&&(n=p),e}function ci(){var e;return e=Zr(),e===null&&(e=We()),e}function Xn(){var e,l,u,f,p,m;if(p=n,e=Us(),e!==null){for(l=[],m=n,u=le(),u!==null?(f=Us(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,u=le(),u!==null?(f=Us(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function Us(){var e,l,u,f,p,m,v,S;if(v=n,e=gi(),e!==null)if(l=M(),l!==null)if(u=Ei(),u!==null){for(f=[],S=n,p=ye(),p!==null?(m=Qn(),m!==null?p=[p,m]:(p=null,n=S)):(p=null,n=S);p!==null;)f.push(p),S=n,p=ye(),p!==null?(m=Qn(),m!==null?p=[p,m]:(p=null,n=S)):(p=null,n=S);f!==null?e=[e,l,u,f]:(e=null,n=v)}else e=null,n=v;else e=null,n=v;else e=null,n=v;return e}function Qn(){var e;return e=fi(),e===null&&(e=_i(),e===null&&(e=hi(),e===null&&(e=di(),e===null&&(e=pi(),e===null&&(e=We()))))),e}function fi(){var e,l,u,f,p;return f=n,p=n,a.substr(n,3).toLowerCase()==="ttl"?(e=a.substr(n,3),n+=3):(e=null,d('"ttl"')),e!==null?(l=re(),l!==null?(u=yi(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){w.ttl=v}(f,e[2])),e===null&&(n=f),e}function _i(){var e,l,u,f,p;return f=n,p=n,a.substr(n,5).toLowerCase()==="maddr"?(e=a.substr(n,5),n+=5):(e=null,d('"maddr"')),e!==null?(l=re(),l!==null?(u=as(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){w.maddr=v}(f,e[2])),e===null&&(n=f),e}function hi(){var e,l,u,f,p;return f=n,p=n,a.substr(n,8).toLowerCase()==="received"?(e=a.substr(n,8),n+=8):(e=null,d('"received"')),e!==null?(l=re(),l!==null?(u=Gt(),u===null&&(u=me()),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){w.received=v}(f,e[2])),e===null&&(n=f),e}function di(){var e,l,u,f,p;return f=n,p=n,a.substr(n,6).toLowerCase()==="branch"?(e=a.substr(n,6),n+=6):(e=null,d('"branch"')),e!==null?(l=re(),l!==null?(u=P(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){w.branch=v}(f,e[2])),e===null&&(n=f),e}function pi(){var e,l,u,f,p;return f=n,a.substr(n,5).toLowerCase()==="rport"?(e=a.substr(n,5),n+=5):(e=null,d('"rport"')),e!==null?(p=n,l=re(),l!==null?(u=mi(),u!==null?l=[l,u]:(l=null,n=p)):(l=null,n=p),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e}function mi(){var e,l,u,f,p,m,v;return m=n,v=n,e=T(),e=e!==null?e:"",e!==null?(l=T(),l=l!==null?l:"",l!==null?(u=T(),u=u!==null?u:"",u!==null?(f=T(),f=f!==null?f:"",f!==null?(p=T(),p=p!==null?p:"",p!==null?e=[e,l,u,f,p]:(e=null,n=v)):(e=null,n=v)):(e=null,n=v)):(e=null,n=v)):(e=null,n=v),e!==null&&(e=function(S,O){w.rport=parseInt(O.join(""))}(m,e)),e===null&&(n=m),e}function gi(){var e,l,u,f,p,m;return m=n,e=Ti(),e!==null?(l=G(),l!==null?(u=P(),u!==null?(f=G(),f!==null?(p=vi(),p!==null?e=[e,l,u,f,p]:(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m),e}function Ti(){var e,l;return l=n,a.substr(n,3).toLowerCase()==="sip"?(e=a.substr(n,3),n+=3):(e=null,d('"SIP"')),e===null&&(e=P()),e!==null&&(e=function(u,f){w.protocol=f}(l,e)),e===null&&(n=l),e}function vi(){var e,l;return l=n,a.substr(n,3).toLowerCase()==="udp"?(e=a.substr(n,3),n+=3):(e=null,d('"UDP"')),e===null&&(a.substr(n,3).toLowerCase()==="tcp"?(e=a.substr(n,3),n+=3):(e=null,d('"TCP"')),e===null&&(a.substr(n,3).toLowerCase()==="tls"?(e=a.substr(n,3),n+=3):(e=null,d('"TLS"')),e===null&&(a.substr(n,4).toLowerCase()==="sctp"?(e=a.substr(n,4),n+=4):(e=null,d('"SCTP"')),e===null&&(e=P())))),e!==null&&(e=function(u,f){w.transport=f}(l,e)),e===null&&(n=l),e}function Ei(){var e,l,u,f,p;return f=n,e=Si(),e!==null?(p=n,l=st(),l!==null?(u=Zn(),u!==null?l=[l,u]:(l=null,n=p)):(l=null,n=p),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e}function Si(){var e,l;return l=n,e=Gt(),e===null&&(e=Ys(),e===null&&(e=Ks())),e!==null&&(e=function(u){w.host=a.substring(n,u)}(l)),e===null&&(n=l),e}function Zn(){var e,l,u,f,p,m,v;return m=n,v=n,e=T(),e=e!==null?e:"",e!==null?(l=T(),l=l!==null?l:"",l!==null?(u=T(),u=u!==null?u:"",u!==null?(f=T(),f=f!==null?f:"",f!==null?(p=T(),p=p!==null?p:"",p!==null?e=[e,l,u,f,p]:(e=null,n=v)):(e=null,n=v)):(e=null,n=v)):(e=null,n=v)):(e=null,n=v),e!==null&&(e=function(S,O){w.port=parseInt(O.join(""))}(m,e)),e===null&&(n=m),e}function yi(){var e,l,u,f,p;return f=n,p=n,e=T(),e!==null?(l=T(),l=l!==null?l:"",l!==null?(u=T(),u=u!==null?u:"",u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){return parseInt(v.join(""))}(f,e)),e===null&&(n=f),e}function ro(){var e;return e=qn(),e}function Il(){var e,l,u,f,p,m;if(p=n,e=er(),e!==null){for(l=[],m=n,u=ye(),u!==null?(f=tr(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,u=ye(),u!==null?(f=tr(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function er(){var e,l;return l=n,e=es(),e!==null&&(e=function(u,f){w.expires=f}(l,e)),e===null&&(n=l),e}function tr(){var e;return e=bl(),e===null&&(e=We()),e}function bl(){var e,l,u,f,p;return f=n,p=n,a.substr(n,9).toLowerCase()==="refresher"?(e=a.substr(n,9),n+=9):(e=null,d('"refresher"')),e!==null?(l=re(),l!==null?(a.substr(n,3).toLowerCase()==="uac"?(u=a.substr(n,3),n+=3):(u=null,d('"uac"')),u===null&&(a.substr(n,3).toLowerCase()==="uas"?(u=a.substr(n,3),n+=3):(u=null,d('"uas"'))),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){w.refresher=v.toLowerCase()}(f,e[2])),e===null&&(n=f),e}function wl(){var e,l,u,f;return f=n,e=P(),e!==null?(l=B(),l!==null?(u=Ol(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function Ol(){var e,l;for(e=[],l=J(),l===null&&(l=X(),l===null&&(l=M()));l!==null;)e.push(l),l=J(),l===null&&(l=X(),l===null&&(l=M()));return e}function io(){var e,l;for(e=[],l=C();l!==null;)e.push(l),l=C();return e}function Dl(){var e,l,u;return u=n,a.substr(n,5)==="uuid:"?(e="uuid:",n+=5):(e=null,d('"uuid:"')),e!==null?(l=Ht(),l!==null?e=[e,l]:(e=null,n=u)):(e=null,n=u),e}function Ht(){var e,l,u,f,p,m,v,S,O,ie,Ue;return ie=n,Ue=n,e=Ai(),e!==null?(a.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l!==null?(u=Ft(),u!==null?(a.charCodeAt(n)===45?(f="-",n++):(f=null,d('"-"')),f!==null?(p=Ft(),p!==null?(a.charCodeAt(n)===45?(m="-",n++):(m=null,d('"-"')),m!==null?(v=Ft(),v!==null?(a.charCodeAt(n)===45?(S="-",n++):(S=null,d('"-"')),S!==null?(O=Nl(),O!==null?e=[e,l,u,f,p,m,v,S,O]:(e=null,n=Ue)):(e=null,n=Ue)):(e=null,n=Ue)):(e=null,n=Ue)):(e=null,n=Ue)):(e=null,n=Ue)):(e=null,n=Ue)):(e=null,n=Ue)):(e=null,n=Ue),e!==null&&(e=function(wt,Ps){w=a.substring(n+5,wt)}(ie,e[0])),e===null&&(n=ie),e}function Ft(){var e,l,u,f,p;return p=n,e=y(),e!==null?(l=y(),l!==null?(u=y(),u!==null?(f=y(),f!==null?e=[e,l,u,f]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e}function Ai(){var e,l,u;return u=n,e=Ft(),e!==null?(l=Ft(),l!==null?e=[e,l]:(e=null,n=u)):(e=null,n=u),e}function Nl(){var e,l,u,f;return f=n,e=Ft(),e!==null?(l=Ft(),l!==null?(u=Ft(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function lo(){var e,l,u,f,p,m,v;if(p=n,m=n,e=we(),e===null&&(e=$t()),e!==null){for(l=[],v=n,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);u!==null;)l.push(u),v=n,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,n=v)):(u=null,n=v);l!==null?e=[e,l]:(e=null,n=m)}else e=null,n=m;return e!==null&&(e=function(S){try{w=new b(w.uri,w.display_name,w.params)}catch{w=-1}}()),e===null&&(n=p),e}function Ul(){var e,l,u,f,p,m;if(p=n,e=sr(),e!==null){for(l=[],m=n,u=ye(),u!==null?(f=nr(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,u=ye(),u!==null?(f=nr(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=p)}else e=null,n=p;return e}function sr(){var e,l,u,f,p,m;return f=n,p=n,e=ee(),e!==null?(m=n,a.charCodeAt(n)===64?(l="@",n++):(l=null,d('"@"')),l!==null?(u=ee(),u!==null?l=[l,u]:(l=null,n=m)):(l=null,n=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(v){w.call_id=a.substring(n,v)}(f)),e===null&&(n=f),e}function nr(){var e;return e=Ci(),e===null&&(e=Ri(),e===null&&(e=Pl(),e===null&&(e=We()))),e}function Ci(){var e,l,u,f,p;return f=n,p=n,a.substr(n,6)==="to-tag"?(e="to-tag",n+=6):(e=null,d('"to-tag"')),e!==null?(l=re(),l!==null?(u=P(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){w.to_tag=v}(f,e[2])),e===null&&(n=f),e}function Ri(){var e,l,u,f,p;return f=n,p=n,a.substr(n,8)==="from-tag"?(e="from-tag",n+=8):(e=null,d('"from-tag"')),e!==null?(l=re(),l!==null?(u=P(),u!==null?e=[e,l,u]:(e=null,n=p)):(e=null,n=p)):(e=null,n=p),e!==null&&(e=function(m,v){w.from_tag=v}(f,e[2])),e===null&&(n=f),e}function Pl(){var e,l;return l=n,a.substr(n,10)==="early-only"?(e="early-only",n+=10):(e=null,d('"early-only"')),e!==null&&(e=function(u){w.early_only=!0}()),e===null&&(n=l),e}function ao(e){e.sort();for(var l=null,u=[],f=0;f<e.length;f++)e[f]!==l&&(u.push(e[f]),l=e[f]);return u}function xl(){for(var e=1,l=1,u=!1,f=0;f<Math.max(n,h);f++){var p=a.charAt(f);p===`
4
- `?(u||e++,l=1,u=!1):p==="\r"||p==="\u2028"||p==="\u2029"?(e++,l=1,u=!0):(l++,u=!1)}return{line:e,column:l}}var us=Gs(),b=bu(),w={},Ii=t[o]();if(Ii===null||n!==a.length){var bi=Math.max(n,h),Ml=bi<a.length?a.charAt(bi):null,i=xl();return new this.SyntaxError(ao(_),Ml,bi,i.line,i.column),-1}return w},toSource:function(){return this._source}};return s.SyntaxError=function(r,a,o,t,n){function h(_,d){var g,T;switch(_.length){case 0:g="end of input";break;case 1:g=_[0];break;default:g=_.slice(0,_.length-1).join(", ")+" or "+_[_.length-1]}return T=d?c(d):"end of input","Expected "+g+" but "+T+" found."}this.name="SyntaxError",this.expected=r,this.found=a,this.message=h(r,a),this.offset=o,this.line=t,this.column=n},s.SyntaxError.prototype=Error.prototype,s}()),uo}var co,Wu;function Gs(){if(Wu)return co;Wu=1;function c(d,g){var T;if(typeof Symbol>"u"||d[Symbol.iterator]==null){if(Array.isArray(d)||(T=s(d))||g&&d&&typeof d.length=="number"){T&&(d=T);var E=0,y=function(){};return{s:y,n:function(){return E>=d.length?{done:!0}:{done:!1,value:d[E++]}},e:function(L){throw L},f:y}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
5
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var A=!0,C=!1,I;return{s:function(){T=d[Symbol.iterator]()},n:function(){var L=T.next();return A=L.done,L},e:function(L){C=!0,I=L},f:function(){try{!A&&T.return!=null&&T.return()}finally{if(C)throw I}}}}function s(d,g){if(d){if(typeof d=="string")return r(d,g);var T=Object.prototype.toString.call(d).slice(8,-1);if(T==="Object"&&d.constructor&&(T=d.constructor.name),T==="Map"||T==="Set")return Array.from(d);if(T==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(T))return r(d,g)}}function r(d,g){(g==null||g>d.length)&&(g=d.length);for(var T=0,E=new Array(g);T<g;T++)E[T]=d[T];return E}function a(d,g){if(!(d instanceof g))throw new TypeError("Cannot call a class as a function")}function o(d,g){for(var T=0;T<g.length;T++){var E=g[T];E.enumerable=E.enumerable||!1,E.configurable=!0,"value"in E&&(E.writable=!0),Object.defineProperty(d,E.key,E)}}function t(d,g,T){return g&&o(d.prototype,g),T&&o(d,T),d}var n=it,h=bt(),_=ls();return co=function(){t(d,null,[{key:"parse",value:function(T){if(T=_.parse(T,"SIP_URI"),T!==-1)return T}}]);function d(g,T,E,y){var A=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{},C=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};if(a(this,d),!E)throw new TypeError('missing or invalid "host" parameter');this._parameters={},this._headers={},this._scheme=g||n.SIP,this._user=T,this._host=E,this._port=y;for(var I in A)Object.prototype.hasOwnProperty.call(A,I)&&this.setParam(I,A[I]);for(var H in C)Object.prototype.hasOwnProperty.call(C,H)&&this.setHeader(H,C[H])}return t(d,[{key:"setParam",value:function(T,E){T&&(this._parameters[T.toLowerCase()]=typeof E>"u"||E===null?null:E.toString())}},{key:"getParam",value:function(T){if(T)return this._parameters[T.toLowerCase()]}},{key:"hasParam",value:function(T){if(T)return this._parameters.hasOwnProperty(T.toLowerCase())&&!0||!1}},{key:"deleteParam",value:function(T){if(T=T.toLowerCase(),this._parameters.hasOwnProperty(T)){var E=this._parameters[T];return delete this._parameters[T],E}}},{key:"clearParams",value:function(){this._parameters={}}},{key:"setHeader",value:function(T,E){this._headers[h.headerize(T)]=Array.isArray(E)?E:[E]}},{key:"getHeader",value:function(T){if(T)return this._headers[h.headerize(T)]}},{key:"hasHeader",value:function(T){if(T)return this._headers.hasOwnProperty(h.headerize(T))&&!0||!1}},{key:"deleteHeader",value:function(T){if(T=h.headerize(T),this._headers.hasOwnProperty(T)){var E=this._headers[T];return delete this._headers[T],E}}},{key:"clearHeaders",value:function(){this._headers={}}},{key:"clone",value:function(){return new d(this._scheme,this._user,this._host,this._port,JSON.parse(JSON.stringify(this._parameters)),JSON.parse(JSON.stringify(this._headers)))}},{key:"toString",value:function(){var T=[],E="".concat(this._scheme,":");this._user&&(E+="".concat(h.escapeUser(this._user),"@")),E+=this._host,(this._port||this._port===0)&&(E+=":".concat(this._port));for(var y in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,y)&&(E+=";".concat(y),this._parameters[y]!==null&&(E+="=".concat(this._parameters[y])));for(var A in this._headers)if(Object.prototype.hasOwnProperty.call(this._headers,A)){var C=c(this._headers[A]),I;try{for(C.s();!(I=C.n()).done;){var H=I.value;T.push("".concat(A,"=").concat(H))}}catch(L){C.e(L)}finally{C.f()}}return T.length>0&&(E+="?".concat(T.join("&"))),E}},{key:"toAor",value:function(T){var E="".concat(this._scheme,":");return this._user&&(E+="".concat(h.escapeUser(this._user),"@")),E+=this._host,T&&(this._port||this._port===0)&&(E+=":".concat(this._port)),E}},{key:"scheme",get:function(){return this._scheme},set:function(T){this._scheme=T.toLowerCase()}},{key:"user",get:function(){return this._user},set:function(T){this._user=T}},{key:"host",get:function(){return this._host},set:function(T){this._host=T.toLowerCase()}},{key:"port",get:function(){return this._port},set:function(T){this._port=T===0?T:parseInt(T,10)||null}}]),d}(),co}var Ku;function bt(){if(Ku)return Ze;Ku=1;function c(g){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?c=function(E){return typeof E}:c=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},c(g)}function s(g,T){var E;if(typeof Symbol>"u"||g[Symbol.iterator]==null){if(Array.isArray(g)||(E=r(g))||T&&g&&typeof g.length=="number"){E&&(g=E);var y=0,A=function(){};return{s:A,n:function(){return y>=g.length?{done:!0}:{done:!1,value:g[y++]}},e:function(oe){throw oe},f:A}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
6
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var C=!0,I=!1,H;return{s:function(){E=g[Symbol.iterator]()},n:function(){var oe=E.next();return C=oe.done,oe},e:function(oe){I=!0,H=oe},f:function(){try{!C&&E.return!=null&&E.return()}finally{if(I)throw H}}}}function r(g,T){if(g){if(typeof g=="string")return a(g,T);var E=Object.prototype.toString.call(g).slice(8,-1);if(E==="Object"&&g.constructor&&(E=g.constructor.name),E==="Map"||E==="Set")return Array.from(g);if(E==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(E))return a(g,T)}}function a(g,T){(T==null||T>g.length)&&(T=g.length);for(var E=0,y=new Array(T);E<T;E++)y[E]=g[E];return y}var o=it,t=Gs(),n=ls();Ze.str_utf8_length=function(g){return unescape(encodeURIComponent(g)).length};var h=Ze.isFunction=function(g){return g!==void 0?Object.prototype.toString.call(g)==="[object Function]":!1};Ze.isString=function(g){return g!==void 0?Object.prototype.toString.call(g)==="[object String]":!1},Ze.isDecimal=function(g){return!isNaN(g)&&parseFloat(g)===parseInt(g,10)},Ze.isEmpty=function(g){return g===null||g===""||g===void 0||Array.isArray(g)&&g.length===0||typeof g=="number"&&isNaN(g)},Ze.hasMethods=function(g){for(var T=arguments.length,E=new Array(T>1?T-1:0),y=1;y<T;y++)E[y-1]=arguments[y];for(var A=0,C=E;A<C.length;A++){var I=C[A];if(h(g[I]))return!1}return!0};var _=Ze.createRandomToken=function(g){var T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:32,E,y,A="";for(E=0;E<g;E++)y=Math.random()*T|0,A+=y.toString(T);return A};Ze.newTag=function(){return _(10)},Ze.newUUID=function(){var g="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(T){var E=Math.random()*16|0,y=T==="x"?E:E&3|8;return y.toString(16)});return g},Ze.hostType=function(g){if(g){if(g=n.parse(g,"host"),g!==-1)return g.host_type}else return};var d=Ze.escapeUser=function(g){return encodeURIComponent(decodeURIComponent(g)).replace(/%3A/ig,":").replace(/%2B/ig,"+").replace(/%3F/ig,"?").replace(/%2F/ig,"/")};return Ze.normalizeTarget=function(g,T){if(g){if(g instanceof t)return g;if(typeof g=="string"){var E=g.split("@"),y,A;switch(E.length){case 1:if(!T)return;y=g,A=T;break;case 2:y=E[0],A=E[1];break;default:y=E.slice(0,E.length-1).join("@"),A=E[E.length-1]}y=y.replace(/^(sips?|tel):/i,""),/^[-.()]*\+?[0-9\-.()]+$/.test(y)&&(y=y.replace(/[-.()]/g,"")),g="".concat(o.SIP,":").concat(d(y),"@").concat(A);var C;return(C=t.parse(g))?C:void 0}else return}else return},Ze.headerize=function(g){var T={"Call-Id":"Call-ID",Cseq:"CSeq","Www-Authenticate":"WWW-Authenticate"},E=g.toLowerCase().replace(/_/g,"-").split("-"),y="",A=E.length,C;for(C=0;C<A;C++)C!==0&&(y+="-"),y+=E[C].charAt(0).toUpperCase()+E[C].substring(1);return T[y]&&(y=T[y]),y},Ze.sipErrorCause=function(g){for(var T in o.SIP_ERROR_CAUSES)if(o.SIP_ERROR_CAUSES[T].indexOf(g)!==-1)return o.causes[T];return o.causes.SIP_FAILURE_CODE},Ze.getRandomTestNetIP=function(){function g(T,E){return Math.floor(Math.random()*(E-T+1)+T)}return"192.0.2.".concat(g(1,254))},Ze.calculateMD5=function(g){function T(pe,ue){return pe<<ue|pe>>>32-ue}function E(pe,ue){var de=pe&2147483648,we=ue&2147483648,Ne=pe&1073741824,Qe=ue&1073741824,Le=(pe&1073741823)+(ue&1073741823);return Ne&Qe?Le^2147483648^de^we:Ne|Qe?Le&1073741824?Le^3221225472^de^we:Le^1073741824^de^we:Le^de^we}function y(pe,ue,de){return pe&ue|~pe&de}function A(pe,ue,de){return pe&de|ue&~de}function C(pe,ue,de){return pe^ue^de}function I(pe,ue,de){return ue^(pe|~de)}function H(pe,ue,de,we,Ne,Qe,Le){return pe=E(pe,E(E(y(ue,de,we),Ne),Le)),E(T(pe,Qe),ue)}function L(pe,ue,de,we,Ne,Qe,Le){return pe=E(pe,E(E(A(ue,de,we),Ne),Le)),E(T(pe,Qe),ue)}function oe(pe,ue,de,we,Ne,Qe,Le){return pe=E(pe,E(E(C(ue,de,we),Ne),Le)),E(T(pe,Qe),ue)}function N(pe,ue,de,we,Ne,Qe,Le){return pe=E(pe,E(E(I(ue,de,we),Ne),Le)),E(T(pe,Qe),ue)}function j(pe){for(var ue,de=pe.length,we=de+8,Ne=(we-we%64)/64,Qe=(Ne+1)*16,Le=new Array(Qe-1),kt=0,ht=0;ht<de;)ue=(ht-ht%4)/4,kt=ht%4*8,Le[ue]=Le[ue]|pe.charCodeAt(ht)<<kt,ht++;return ue=(ht-ht%4)/4,kt=ht%4*8,Le[ue]=Le[ue]|128<<kt,Le[Qe-2]=de<<3,Le[Qe-1]=de>>>29,Le}function Se(pe){var ue="",de="",we,Ne;for(Ne=0;Ne<=3;Ne++)we=pe>>>Ne*8&255,de="0".concat(we.toString(16)),ue=ue+de.substr(de.length-2,2);return ue}function ve(pe){for(var ue="",de=0;de<pe.length;de++){var we=pe.charCodeAt(de);we<128?ue+=String.fromCharCode(we):we>127&&we<2048?(ue+=String.fromCharCode(we>>6|192),ue+=String.fromCharCode(we&63|128)):(ue+=String.fromCharCode(we>>12|224),ue+=String.fromCharCode(we>>6&63|128),ue+=String.fromCharCode(we&63|128))}return ue}var M=[],D,B,V,J,F,X,U,P,se,tt=7,ee=12,W=17,G=22,re=5,ge=9,be=14,xe=20,Ce=4,le=11,ye=16,st=23,lt=6,Ee=10,Ae=15,Ie=21;for(g=ve(g),M=j(g),X=1732584193,U=4023233417,P=2562383102,se=271733878,D=0;D<M.length;D+=16)B=X,V=U,J=P,F=se,X=H(X,U,P,se,M[D+0],tt,3614090360),se=H(se,X,U,P,M[D+1],ee,3905402710),P=H(P,se,X,U,M[D+2],W,606105819),U=H(U,P,se,X,M[D+3],G,3250441966),X=H(X,U,P,se,M[D+4],tt,4118548399),se=H(se,X,U,P,M[D+5],ee,1200080426),P=H(P,se,X,U,M[D+6],W,2821735955),U=H(U,P,se,X,M[D+7],G,4249261313),X=H(X,U,P,se,M[D+8],tt,1770035416),se=H(se,X,U,P,M[D+9],ee,2336552879),P=H(P,se,X,U,M[D+10],W,4294925233),U=H(U,P,se,X,M[D+11],G,2304563134),X=H(X,U,P,se,M[D+12],tt,1804603682),se=H(se,X,U,P,M[D+13],ee,4254626195),P=H(P,se,X,U,M[D+14],W,2792965006),U=H(U,P,se,X,M[D+15],G,1236535329),X=L(X,U,P,se,M[D+1],re,4129170786),se=L(se,X,U,P,M[D+6],ge,3225465664),P=L(P,se,X,U,M[D+11],be,643717713),U=L(U,P,se,X,M[D+0],xe,3921069994),X=L(X,U,P,se,M[D+5],re,3593408605),se=L(se,X,U,P,M[D+10],ge,38016083),P=L(P,se,X,U,M[D+15],be,3634488961),U=L(U,P,se,X,M[D+4],xe,3889429448),X=L(X,U,P,se,M[D+9],re,568446438),se=L(se,X,U,P,M[D+14],ge,3275163606),P=L(P,se,X,U,M[D+3],be,4107603335),U=L(U,P,se,X,M[D+8],xe,1163531501),X=L(X,U,P,se,M[D+13],re,2850285829),se=L(se,X,U,P,M[D+2],ge,4243563512),P=L(P,se,X,U,M[D+7],be,1735328473),U=L(U,P,se,X,M[D+12],xe,2368359562),X=oe(X,U,P,se,M[D+5],Ce,4294588738),se=oe(se,X,U,P,M[D+8],le,2272392833),P=oe(P,se,X,U,M[D+11],ye,1839030562),U=oe(U,P,se,X,M[D+14],st,4259657740),X=oe(X,U,P,se,M[D+1],Ce,2763975236),se=oe(se,X,U,P,M[D+4],le,1272893353),P=oe(P,se,X,U,M[D+7],ye,4139469664),U=oe(U,P,se,X,M[D+10],st,3200236656),X=oe(X,U,P,se,M[D+13],Ce,681279174),se=oe(se,X,U,P,M[D+0],le,3936430074),P=oe(P,se,X,U,M[D+3],ye,3572445317),U=oe(U,P,se,X,M[D+6],st,76029189),X=oe(X,U,P,se,M[D+9],Ce,3654602809),se=oe(se,X,U,P,M[D+12],le,3873151461),P=oe(P,se,X,U,M[D+15],ye,530742520),U=oe(U,P,se,X,M[D+2],st,3299628645),X=N(X,U,P,se,M[D+0],lt,4096336452),se=N(se,X,U,P,M[D+7],Ee,1126891415),P=N(P,se,X,U,M[D+14],Ae,2878612391),U=N(U,P,se,X,M[D+5],Ie,4237533241),X=N(X,U,P,se,M[D+12],lt,1700485571),se=N(se,X,U,P,M[D+3],Ee,2399980690),P=N(P,se,X,U,M[D+10],Ae,4293915773),U=N(U,P,se,X,M[D+1],Ie,2240044497),X=N(X,U,P,se,M[D+8],lt,1873313359),se=N(se,X,U,P,M[D+15],Ee,4264355552),P=N(P,se,X,U,M[D+6],Ae,2734768916),U=N(U,P,se,X,M[D+13],Ie,1309151649),X=N(X,U,P,se,M[D+4],lt,4149444226),se=N(se,X,U,P,M[D+11],Ee,3174756917),P=N(P,se,X,U,M[D+2],Ae,718787259),U=N(U,P,se,X,M[D+9],Ie,3951481745),X=E(X,B),U=E(U,V),P=E(P,J),se=E(se,F);var Oe=Se(X)+Se(U)+Se(P)+Se(se);return Oe.toLowerCase()},Ze.closeMediaStream=function(g){if(g)try{var T;if(g.getTracks){T=g.getTracks();var E=s(T),y;try{for(E.s();!(y=E.n()).done;){var A=y.value;A.stop()}}catch(j){E.e(j)}finally{E.f()}}else{T=g.getAudioTracks();var C=s(T),I;try{for(C.s();!(I=C.n()).done;){var H=I.value;H.stop()}}catch(j){C.e(j)}finally{C.f()}T=g.getVideoTracks();var L=s(T),oe;try{for(L.s();!(oe=L.n()).done;){var N=oe.value;N.stop()}}catch(j){L.e(j)}finally{L.f()}}}catch{(typeof g.stop=="function"||c(g.stop)==="object")&&g.stop()}},Ze.cloneArray=function(g){return g&&g.slice()||[]},Ze.cloneObject=function(g){var T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return g&&Object.assign({},g)||T},Ze}var wu={exports:{}},_r=typeof Reflect=="object"?Reflect:null,Yu=_r&&typeof _r.apply=="function"?_r.apply:function(s,r,a){return Function.prototype.apply.call(s,r,a)},da;_r&&typeof _r.ownKeys=="function"?da=_r.ownKeys:Object.getOwnPropertySymbols?da=function(s){return Object.getOwnPropertyNames(s).concat(Object.getOwnPropertySymbols(s))}:da=function(s){return Object.getOwnPropertyNames(s)};function ih(c){console&&console.warn&&console.warn(c)}var jf=Number.isNaN||function(s){return s!==s};function ke(){ke.init.call(this)}wu.exports=ke;wu.exports.once=uh;ke.EventEmitter=ke;ke.prototype._events=void 0;ke.prototype._eventsCount=0;ke.prototype._maxListeners=void 0;var Ju=10;function ja(c){if(typeof c!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof c)}Object.defineProperty(ke,"defaultMaxListeners",{enumerable:!0,get:function(){return Ju},set:function(c){if(typeof c!="number"||c<0||jf(c))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+c+".");Ju=c}});ke.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};ke.prototype.setMaxListeners=function(s){if(typeof s!="number"||s<0||jf(s))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+s+".");return this._maxListeners=s,this};function qf(c){return c._maxListeners===void 0?ke.defaultMaxListeners:c._maxListeners}ke.prototype.getMaxListeners=function(){return qf(this)};ke.prototype.emit=function(s){for(var r=[],a=1;a<arguments.length;a++)r.push(arguments[a]);var o=s==="error",t=this._events;if(t!==void 0)o=o&&t.error===void 0;else if(!o)return!1;if(o){var n;if(r.length>0&&(n=r[0]),n instanceof Error)throw n;var h=new Error("Unhandled error."+(n?" ("+n.message+")":""));throw h.context=n,h}var _=t[s];if(_===void 0)return!1;if(typeof _=="function")Yu(_,this,r);else for(var d=_.length,g=Kf(_,d),a=0;a<d;++a)Yu(g[a],this,r);return!0};function Vf(c,s,r,a){var o,t,n;if(ja(r),t=c._events,t===void 0?(t=c._events=Object.create(null),c._eventsCount=0):(t.newListener!==void 0&&(c.emit("newListener",s,r.listener?r.listener:r),t=c._events),n=t[s]),n===void 0)n=t[s]=r,++c._eventsCount;else if(typeof n=="function"?n=t[s]=a?[r,n]:[n,r]:a?n.unshift(r):n.push(r),o=qf(c),o>0&&n.length>o&&!n.warned){n.warned=!0;var h=new Error("Possible EventEmitter memory leak detected. "+n.length+" "+String(s)+" listeners added. Use emitter.setMaxListeners() to increase limit");h.name="MaxListenersExceededWarning",h.emitter=c,h.type=s,h.count=n.length,ih(h)}return c}ke.prototype.addListener=function(s,r){return Vf(this,s,r,!1)};ke.prototype.on=ke.prototype.addListener;ke.prototype.prependListener=function(s,r){return Vf(this,s,r,!0)};function lh(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Bf(c,s,r){var a={fired:!1,wrapFn:void 0,target:c,type:s,listener:r},o=lh.bind(a);return o.listener=r,a.wrapFn=o,o}ke.prototype.once=function(s,r){return ja(r),this.on(s,Bf(this,s,r)),this};ke.prototype.prependOnceListener=function(s,r){return ja(r),this.prependListener(s,Bf(this,s,r)),this};ke.prototype.removeListener=function(s,r){var a,o,t,n,h;if(ja(r),o=this._events,o===void 0)return this;if(a=o[s],a===void 0)return this;if(a===r||a.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete o[s],o.removeListener&&this.emit("removeListener",s,a.listener||r));else if(typeof a!="function"){for(t=-1,n=a.length-1;n>=0;n--)if(a[n]===r||a[n].listener===r){h=a[n].listener,t=n;break}if(t<0)return this;t===0?a.shift():ah(a,t),a.length===1&&(o[s]=a[0]),o.removeListener!==void 0&&this.emit("removeListener",s,h||r)}return this};ke.prototype.off=ke.prototype.removeListener;ke.prototype.removeAllListeners=function(s){var r,a,o;if(a=this._events,a===void 0)return this;if(a.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):a[s]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete a[s]),this;if(arguments.length===0){var t=Object.keys(a),n;for(o=0;o<t.length;++o)n=t[o],n!=="removeListener"&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(r=a[s],typeof r=="function")this.removeListener(s,r);else if(r!==void 0)for(o=r.length-1;o>=0;o--)this.removeListener(s,r[o]);return this};function Gf(c,s,r){var a=c._events;if(a===void 0)return[];var o=a[s];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?oh(o):Kf(o,o.length)}ke.prototype.listeners=function(s){return Gf(this,s,!0)};ke.prototype.rawListeners=function(s){return Gf(this,s,!1)};ke.listenerCount=function(c,s){return typeof c.listenerCount=="function"?c.listenerCount(s):Wf.call(c,s)};ke.prototype.listenerCount=Wf;function Wf(c){var s=this._events;if(s!==void 0){var r=s[c];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}ke.prototype.eventNames=function(){return this._eventsCount>0?da(this._events):[]};function Kf(c,s){for(var r=new Array(s),a=0;a<s;++a)r[a]=c[a];return r}function ah(c,s){for(;s+1<c.length;s++)c[s]=c[s+1];c.pop()}function oh(c){for(var s=new Array(c.length),r=0;r<s.length;++r)s[r]=c[r].listener||c[r];return s}function uh(c,s){return new Promise(function(r,a){function o(n){c.removeListener(s,t),a(n)}function t(){typeof c.removeListener=="function"&&c.removeListener("error",o),r([].slice.call(arguments))}Yf(c,s,t,{once:!0}),s!=="error"&&ch(c,o,{once:!0})})}function ch(c,s,r){typeof c.on=="function"&&Yf(c,"error",s,r)}function Yf(c,s,r,a){if(typeof c.on=="function")a.once?c.once(s,r):c.on(s,r);else if(typeof c.addEventListener=="function")c.addEventListener(s,function o(t){a.once&&c.removeEventListener(s,o),r(t)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof c)}var ft=wu.exports,au={exports:{}},fo,zu;function fh(){if(zu)return fo;zu=1;var c=1e3,s=c*60,r=s*60,a=r*24,o=a*7,t=a*365.25;fo=function(g,T){T=T||{};var E=typeof g;if(E==="string"&&g.length>0)return n(g);if(E==="number"&&isFinite(g))return T.long?_(g):h(g);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(g))};function n(g){if(g=String(g),!(g.length>100)){var T=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(g);if(T){var E=parseFloat(T[1]),y=(T[2]||"ms").toLowerCase();switch(y){case"years":case"year":case"yrs":case"yr":case"y":return E*t;case"weeks":case"week":case"w":return E*o;case"days":case"day":case"d":return E*a;case"hours":case"hour":case"hrs":case"hr":case"h":return E*r;case"minutes":case"minute":case"mins":case"min":case"m":return E*s;case"seconds":case"second":case"secs":case"sec":case"s":return E*c;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return E;default:return}}}}function h(g){var T=Math.abs(g);return T>=a?Math.round(g/a)+"d":T>=r?Math.round(g/r)+"h":T>=s?Math.round(g/s)+"m":T>=c?Math.round(g/c)+"s":g+"ms"}function _(g){var T=Math.abs(g);return T>=a?d(g,T,a,"day"):T>=r?d(g,T,r,"hour"):T>=s?d(g,T,s,"minute"):T>=c?d(g,T,c,"second"):g+" ms"}function d(g,T,E,y){var A=T>=E*1.5;return Math.round(g/E)+" "+y+(A?"s":"")}return fo}function _h(c){r.debug=r,r.default=r,r.coerce=_,r.disable=t,r.enable=o,r.enabled=n,r.humanize=fh(),r.destroy=d,Object.keys(c).forEach(g=>{r[g]=c[g]}),r.names=[],r.skips=[],r.formatters={};function s(g){let T=0;for(let E=0;E<g.length;E++)T=(T<<5)-T+g.charCodeAt(E),T|=0;return r.colors[Math.abs(T)%r.colors.length]}r.selectColor=s;function r(g){let T,E=null,y,A;function C(...I){if(!C.enabled)return;const H=C,L=Number(new Date),oe=L-(T||L);H.diff=oe,H.prev=T,H.curr=L,T=L,I[0]=r.coerce(I[0]),typeof I[0]!="string"&&I.unshift("%O");let N=0;I[0]=I[0].replace(/%([a-zA-Z%])/g,(Se,ve)=>{if(Se==="%%")return"%";N++;const M=r.formatters[ve];if(typeof M=="function"){const D=I[N];Se=M.call(H,D),I.splice(N,1),N--}return Se}),r.formatArgs.call(H,I),(H.log||r.log).apply(H,I)}return C.namespace=g,C.useColors=r.useColors(),C.color=r.selectColor(g),C.extend=a,C.destroy=r.destroy,Object.defineProperty(C,"enabled",{enumerable:!0,configurable:!1,get:()=>E!==null?E:(y!==r.namespaces&&(y=r.namespaces,A=r.enabled(g)),A),set:I=>{E=I}}),typeof r.init=="function"&&r.init(C),C}function a(g,T){const E=r(this.namespace+(typeof T>"u"?":":T)+g);return E.log=this.log,E}function o(g){r.save(g),r.namespaces=g,r.names=[],r.skips=[];let T;const E=(typeof g=="string"?g:"").split(/[\s,]+/),y=E.length;for(T=0;T<y;T++)E[T]&&(g=E[T].replace(/\*/g,".*?"),g[0]==="-"?r.skips.push(new RegExp("^"+g.slice(1)+"$")):r.names.push(new RegExp("^"+g+"$")))}function t(){const g=[...r.names.map(h),...r.skips.map(h).map(T=>"-"+T)].join(",");return r.enable(""),g}function n(g){if(g[g.length-1]==="*")return!0;let T,E;for(T=0,E=r.skips.length;T<E;T++)if(r.skips[T].test(g))return!1;for(T=0,E=r.names.length;T<E;T++)if(r.names[T].test(g))return!0;return!1}function h(g){return g.toString().substring(2,g.toString().length-2).replace(/\.\*\?$/,"*")}function _(g){return g instanceof Error?g.stack||g.message:g}function d(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}var hh=_h;(function(c,s){s.formatArgs=a,s.save=o,s.load=t,s.useColors=r,s.storage=n(),s.destroy=(()=>{let _=!1;return()=>{_||(_=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),s.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function a(_){if(_[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+_[0]+(this.useColors?"%c ":" ")+"+"+c.exports.humanize(this.diff),!this.useColors)return;const d="color: "+this.color;_.splice(1,0,d,"color: inherit");let g=0,T=0;_[0].replace(/%[a-zA-Z%]/g,E=>{E!=="%%"&&(g++,E==="%c"&&(T=g))}),_.splice(T,0,d)}s.log=console.debug||console.log||(()=>{});function o(_){try{_?s.storage.setItem("debug",_):s.storage.removeItem("debug")}catch{}}function t(){let _;try{_=s.storage.getItem("debug")}catch{}return!_&&typeof process<"u"&&"env"in process&&(_=process.env.DEBUG),_}function n(){try{return localStorage}catch{}}c.exports=hh(s);const{formatters:h}=c.exports;h.j=function(_){try{return JSON.stringify(_)}catch(d){return"[UnexpectedJSONParseError]: "+d.message}}})(au,au.exports);var pr=au.exports;function dh(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Xu(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function ph(c,s,r){return s&&Xu(c.prototype,s),r&&Xu(c,r),c}var rr=pr,ir="JsSIP",_t=function(){function c(s){dh(this,c),s?(this._debug=rr.default("".concat(ir,":").concat(s)),this._warn=rr.default("".concat(ir,":WARN:").concat(s)),this._error=rr.default("".concat(ir,":ERROR:").concat(s))):(this._debug=rr.default(ir),this._warn=rr.default("".concat(ir,":WARN")),this._error=rr.default("".concat(ir,":ERROR"))),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}return ph(c,[{key:"debug",get:function(){return this._debug}},{key:"warn",get:function(){return this._warn}},{key:"error",get:function(){return this._error}}]),c}(),Pt={},Jf={},zf={exports:{}},Qu=zf.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(c){return c.encoding?"rtpmap:%d %s/%s/%s":c.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(c){return c.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(c){return c.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(c){return"extmap:%d"+(c.direction?"/%s":"%v")+(c["encrypt-uri"]?" %s":"%v")+" %s"+(c.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(c){return c.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(c){var s="candidate:%s %d %s %d %s %d typ %s";return s+=c.raddr!=null?" raddr %s rport %d":"%v%v",s+=c.tcptype!=null?" tcptype %s":"%v",c.generation!=null&&(s+=" generation %d"),s+=c["network-id"]!=null?" network-id %d":"%v",s+=c["network-cost"]!=null?" network-cost %d":"%v",s}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(c){var s="ssrc:%d";return c.attribute!=null&&(s+=" %s",c.value!=null&&(s+=":%s")),s}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(c){return c.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(c){return c.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(c){return"imageattr:%s %s %s"+(c.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(c){return"simulcast:%s %s"+(c.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(c){return"ts-refclk:%s"+(c.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(c){var s="mediaclk:";return s+=c.id!=null?"id=%s %s":"%v%s",s+=c.mediaClockValue!=null?"=%s":"",s+=c.rateNumerator!=null?" rate=%s":"",s+=c.rateDenominator!=null?"/%s":"",s}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Qu).forEach(function(c){var s=Qu[c];s.forEach(function(r){r.reg||(r.reg=/(.*)/),r.format||(r.format="%s")})});var Xf=zf.exports;(function(c){var s=function(h){return String(Number(h))===h?Number(h):h},r=function(h,_,d,g){if(g&&!d)_[g]=s(h[1]);else for(var T=0;T<d.length;T+=1)h[T+1]!=null&&(_[d[T]]=s(h[T+1]))},a=function(h,_,d){var g=h.name&&h.names;h.push&&!_[h.push]?_[h.push]=[]:g&&!_[h.name]&&(_[h.name]={});var T=h.push?{}:g?_[h.name]:_;r(d.match(h.reg),T,h.names,h.name),h.push&&_[h.push].push(T)},o=Xf,t=RegExp.prototype.test.bind(/^([a-z])=(.*)/);c.parse=function(h){var _={},d=[],g=_;return h.split(/(\r\n|\r|\n)/).filter(t).forEach(function(T){var E=T[0],y=T.slice(2);E==="m"&&(d.push({rtp:[],fmtp:[]}),g=d[d.length-1]);for(var A=0;A<(o[E]||[]).length;A+=1){var C=o[E][A];if(C.reg.test(y))return a(C,g,y)}}),_.media=d,_};var n=function(h,_){var d=_.split(/=(.+)/,2);return d.length===2?h[d[0]]=s(d[1]):d.length===1&&_.length>1&&(h[d[0]]=void 0),h};c.parseParams=function(h){return h.split(/;\s?/).reduce(n,{})},c.parseFmtpConfig=c.parseParams,c.parsePayloads=function(h){return h.toString().split(" ").map(Number)},c.parseRemoteCandidates=function(h){for(var _=[],d=h.split(" ").map(s),g=0;g<d.length;g+=3)_.push({component:d[g],ip:d[g+1],port:d[g+2]});return _},c.parseImageAttributes=function(h){return h.split(" ").map(function(_){return _.substring(1,_.length-1).split(",").reduce(n,{})})},c.parseSimulcastStreamList=function(h){return h.split(";").map(function(_){return _.split(",").map(function(d){var g,T=!1;return d[0]!=="~"?g=s(d):(g=s(d.substring(1,d.length)),T=!0),{scid:g,paused:T}})})}})(Jf);var _o=Xf,mh=/%[sdv%]/g,gh=function(c){var s=1,r=arguments,a=r.length;return c.replace(mh,function(o){if(s>=a)return o;var t=r[s];switch(s+=1,o){case"%%":return"%";case"%s":return String(t);case"%d":return Number(t);case"%v":return""}})},wi=function(c,s,r){var a=s.format instanceof Function?s.format(s.push?r:r[s.name]):s.format,o=[c+"="+a];if(s.names)for(var t=0;t<s.names.length;t+=1){var n=s.names[t];s.name?o.push(r[s.name][n]):o.push(r[s.names[t]])}else o.push(r[s.name]);return gh.apply(null,o)},Th=["v","o","s","i","u","e","p","c","b","t","r","z","a"],vh=["i","c","b","a"],Eh=function(c,s){s=s||{},c.version==null&&(c.version=0),c.name==null&&(c.name=" "),c.media.forEach(function(t){t.payloads==null&&(t.payloads="")});var r=s.outerOrder||Th,a=s.innerOrder||vh,o=[];return r.forEach(function(t){_o[t].forEach(function(n){n.name in c&&c[n.name]!=null?o.push(wi(t,n,c)):n.push in c&&c[n.push]!=null&&c[n.push].forEach(function(h){o.push(wi(t,n,h))})})}),c.media.forEach(function(t){o.push(wi("m",_o.m[0],t)),a.forEach(function(n){_o[n].forEach(function(h){h.name in t&&t[h.name]!=null?o.push(wi(n,h,t)):h.push in t&&t[h.push]!=null&&t[h.push].forEach(function(_){o.push(wi(n,h,_))})})})}),o.join(`\r
3
+ `,r+=2):(e=null,d('"\\r\\n"')),e}function T(){var e;return/^[0-9]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[0-9]")),e}function E(){var e;return/^[a-zA-Z]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[a-zA-Z]")),e}function y(){var e;return/^[0-9a-fA-F]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[0-9a-fA-F]")),e}function A(){var e;return e=H(),e===null&&(e=$()),e}function C(){var e;return/^[\0-\xFF]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[\\0-\\xFF]")),e}function I(){var e;return/^["]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d('["]')),e}function H(){var e;return a.charCodeAt(r)===32?(e=" ",r++):(e=null,d('" "')),e}function $(){var e;return a.charCodeAt(r)===9?(e=" ",r++):(e=null,d('"\\t"')),e}function oe(){var e;return/^[a-zA-Z0-9]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[a-zA-Z0-9]")),e}function N(){var e;return a.charCodeAt(r)===59?(e=";",r++):(e=null,d('";"')),e===null&&(a.charCodeAt(r)===47?(e="/",r++):(e=null,d('"/"')),e===null&&(a.charCodeAt(r)===63?(e="?",r++):(e=null,d('"?"')),e===null&&(a.charCodeAt(r)===58?(e=":",r++):(e=null,d('":"')),e===null&&(a.charCodeAt(r)===64?(e="@",r++):(e=null,d('"@"')),e===null&&(a.charCodeAt(r)===38?(e="&",r++):(e=null,d('"&"')),e===null&&(a.charCodeAt(r)===61?(e="=",r++):(e=null,d('"="')),e===null&&(a.charCodeAt(r)===43?(e="+",r++):(e=null,d('"+"')),e===null&&(a.charCodeAt(r)===36?(e="$",r++):(e=null,d('"$"')),e===null&&(a.charCodeAt(r)===44?(e=",",r++):(e=null,d('","'))))))))))),e}function j(){var e;return e=oe(),e===null&&(e=Se()),e}function Se(){var e;return a.charCodeAt(r)===45?(e="-",r++):(e=null,d('"-"')),e===null&&(a.charCodeAt(r)===95?(e="_",r++):(e=null,d('"_"')),e===null&&(a.charCodeAt(r)===46?(e=".",r++):(e=null,d('"."')),e===null&&(a.charCodeAt(r)===33?(e="!",r++):(e=null,d('"!"')),e===null&&(a.charCodeAt(r)===126?(e="~",r++):(e=null,d('"~"')),e===null&&(a.charCodeAt(r)===42?(e="*",r++):(e=null,d('"*"')),e===null&&(a.charCodeAt(r)===39?(e="'",r++):(e=null,d(`"'"`)),e===null&&(a.charCodeAt(r)===40?(e="(",r++):(e=null,d('"("')),e===null&&(a.charCodeAt(r)===41?(e=")",r++):(e=null,d('")"')))))))))),e}function ve(){var e,l,u,f,p;return f=r,p=r,a.charCodeAt(r)===37?(e="%",r++):(e=null,d('"%"')),e!==null?(l=y(),l!==null?(u=y(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){return v.join("")}(f,e)),e===null&&(r=f),e}function k(){var e,l,u,f,p,m;for(f=r,p=r,m=r,e=[],l=A();l!==null;)e.push(l),l=A();if(e!==null?(l=g(),l!==null?e=[e,l]:(e=null,r=m)):(e=null,r=m),e=e!==null?e:"",e!==null){if(u=A(),u!==null)for(l=[];u!==null;)l.push(u),u=A();else l=null;l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e!==null&&(e=function(v){return" "}()),e===null&&(r=f),e}function D(){var e;return e=k(),e=e!==null?e:"",e}function B(){var e,l,u,f,p;for(f=r,p=r,e=[],l=H(),l===null&&(l=$());l!==null;)e.push(l),l=H(),l===null&&(l=$());return e!==null?(a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m){return":"}()),e===null&&(r=f),e}function q(){var e,l,u,f,p,m,v;if(p=r,m=r,l=J(),l!==null)for(e=[];l!==null;)e.push(l),l=J();else e=null;if(e!==null){for(l=[],v=r,u=[],f=k();f!==null;)u.push(f),f=k();for(u!==null?(f=J(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);u!==null;){for(l.push(u),v=r,u=[],f=k();f!==null;)u.push(f),f=k();u!==null?(f=J(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v)}l!==null?e=[e,l]:(e=null,r=m)}else e=null,r=m;return e!==null&&(e=function(S){return a.substring(r,S)}(p)),e===null&&(r=p),e}function J(){var e;return/^[!-~]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[!-~]")),e===null&&(e=F()),e}function F(){var e;return/^[\x80-\uFFFF]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[\\x80-\\uFFFF]")),e}function X(){var e;return/^[\x80-\xBF]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[\\x80-\\xBF]")),e}function U(){var e;return e=T(),e===null&&(/^[a-f]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[a-f]"))),e}function x(){var e,l,u;if(u=r,l=oe(),l===null&&(a.charCodeAt(r)===45?(l="-",r++):(l=null,d('"-"')),l===null&&(a.charCodeAt(r)===46?(l=".",r++):(l=null,d('"."')),l===null&&(a.charCodeAt(r)===33?(l="!",r++):(l=null,d('"!"')),l===null&&(a.charCodeAt(r)===37?(l="%",r++):(l=null,d('"%"')),l===null&&(a.charCodeAt(r)===42?(l="*",r++):(l=null,d('"*"')),l===null&&(a.charCodeAt(r)===95?(l="_",r++):(l=null,d('"_"')),l===null&&(a.charCodeAt(r)===43?(l="+",r++):(l=null,d('"+"')),l===null&&(a.charCodeAt(r)===96?(l="`",r++):(l=null,d('"`"')),l===null&&(a.charCodeAt(r)===39?(l="'",r++):(l=null,d(`"'"`)),l===null&&(a.charCodeAt(r)===126?(l="~",r++):(l=null,d('"~"')))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=oe(),l===null&&(a.charCodeAt(r)===45?(l="-",r++):(l=null,d('"-"')),l===null&&(a.charCodeAt(r)===46?(l=".",r++):(l=null,d('"."')),l===null&&(a.charCodeAt(r)===33?(l="!",r++):(l=null,d('"!"')),l===null&&(a.charCodeAt(r)===37?(l="%",r++):(l=null,d('"%"')),l===null&&(a.charCodeAt(r)===42?(l="*",r++):(l=null,d('"*"')),l===null&&(a.charCodeAt(r)===95?(l="_",r++):(l=null,d('"_"')),l===null&&(a.charCodeAt(r)===43?(l="+",r++):(l=null,d('"+"')),l===null&&(a.charCodeAt(r)===96?(l="`",r++):(l=null,d('"`"')),l===null&&(a.charCodeAt(r)===39?(l="'",r++):(l=null,d(`"'"`)),l===null&&(a.charCodeAt(r)===126?(l="~",r++):(l=null,d('"~"'))))))))))));else e=null;return e!==null&&(e=function(f){return a.substring(r,f)}(u)),e===null&&(r=u),e}function se(){var e,l,u;if(u=r,l=oe(),l===null&&(a.charCodeAt(r)===45?(l="-",r++):(l=null,d('"-"')),l===null&&(a.charCodeAt(r)===33?(l="!",r++):(l=null,d('"!"')),l===null&&(a.charCodeAt(r)===37?(l="%",r++):(l=null,d('"%"')),l===null&&(a.charCodeAt(r)===42?(l="*",r++):(l=null,d('"*"')),l===null&&(a.charCodeAt(r)===95?(l="_",r++):(l=null,d('"_"')),l===null&&(a.charCodeAt(r)===43?(l="+",r++):(l=null,d('"+"')),l===null&&(a.charCodeAt(r)===96?(l="`",r++):(l=null,d('"`"')),l===null&&(a.charCodeAt(r)===39?(l="'",r++):(l=null,d(`"'"`)),l===null&&(a.charCodeAt(r)===126?(l="~",r++):(l=null,d('"~"'))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=oe(),l===null&&(a.charCodeAt(r)===45?(l="-",r++):(l=null,d('"-"')),l===null&&(a.charCodeAt(r)===33?(l="!",r++):(l=null,d('"!"')),l===null&&(a.charCodeAt(r)===37?(l="%",r++):(l=null,d('"%"')),l===null&&(a.charCodeAt(r)===42?(l="*",r++):(l=null,d('"*"')),l===null&&(a.charCodeAt(r)===95?(l="_",r++):(l=null,d('"_"')),l===null&&(a.charCodeAt(r)===43?(l="+",r++):(l=null,d('"+"')),l===null&&(a.charCodeAt(r)===96?(l="`",r++):(l=null,d('"`"')),l===null&&(a.charCodeAt(r)===39?(l="'",r++):(l=null,d(`"'"`)),l===null&&(a.charCodeAt(r)===126?(l="~",r++):(l=null,d('"~"')))))))))));else e=null;return e!==null&&(e=function(f){return a.substring(r,f)}(u)),e===null&&(r=u),e}function tt(){var e;return a.charCodeAt(r)===40?(e="(",r++):(e=null,d('"("')),e===null&&(a.charCodeAt(r)===41?(e=")",r++):(e=null,d('")"')),e===null&&(a.charCodeAt(r)===60?(e="<",r++):(e=null,d('"<"')),e===null&&(a.charCodeAt(r)===62?(e=">",r++):(e=null,d('">"')),e===null&&(a.charCodeAt(r)===64?(e="@",r++):(e=null,d('"@"')),e===null&&(a.charCodeAt(r)===44?(e=",",r++):(e=null,d('","')),e===null&&(a.charCodeAt(r)===59?(e=";",r++):(e=null,d('";"')),e===null&&(a.charCodeAt(r)===58?(e=":",r++):(e=null,d('":"')),e===null&&(a.charCodeAt(r)===92?(e="\\",r++):(e=null,d('"\\\\"')),e===null&&(e=I(),e===null&&(a.charCodeAt(r)===47?(e="/",r++):(e=null,d('"/"')),e===null&&(a.charCodeAt(r)===91?(e="[",r++):(e=null,d('"["')),e===null&&(a.charCodeAt(r)===93?(e="]",r++):(e=null,d('"]"')),e===null&&(a.charCodeAt(r)===63?(e="?",r++):(e=null,d('"?"')),e===null&&(a.charCodeAt(r)===61?(e="=",r++):(e=null,d('"="')),e===null&&(a.charCodeAt(r)===123?(e="{",r++):(e=null,d('"{"')),e===null&&(a.charCodeAt(r)===125?(e="}",r++):(e=null,d('"}"')),e===null&&(e=H(),e===null&&(e=$())))))))))))))))))),e}function ee(){var e,l,u;if(u=r,l=oe(),l===null&&(a.charCodeAt(r)===45?(l="-",r++):(l=null,d('"-"')),l===null&&(a.charCodeAt(r)===46?(l=".",r++):(l=null,d('"."')),l===null&&(a.charCodeAt(r)===33?(l="!",r++):(l=null,d('"!"')),l===null&&(a.charCodeAt(r)===37?(l="%",r++):(l=null,d('"%"')),l===null&&(a.charCodeAt(r)===42?(l="*",r++):(l=null,d('"*"')),l===null&&(a.charCodeAt(r)===95?(l="_",r++):(l=null,d('"_"')),l===null&&(a.charCodeAt(r)===43?(l="+",r++):(l=null,d('"+"')),l===null&&(a.charCodeAt(r)===96?(l="`",r++):(l=null,d('"`"')),l===null&&(a.charCodeAt(r)===39?(l="'",r++):(l=null,d(`"'"`)),l===null&&(a.charCodeAt(r)===126?(l="~",r++):(l=null,d('"~"')),l===null&&(a.charCodeAt(r)===40?(l="(",r++):(l=null,d('"("')),l===null&&(a.charCodeAt(r)===41?(l=")",r++):(l=null,d('")"')),l===null&&(a.charCodeAt(r)===60?(l="<",r++):(l=null,d('"<"')),l===null&&(a.charCodeAt(r)===62?(l=">",r++):(l=null,d('">"')),l===null&&(a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l===null&&(a.charCodeAt(r)===92?(l="\\",r++):(l=null,d('"\\\\"')),l===null&&(l=I(),l===null&&(a.charCodeAt(r)===47?(l="/",r++):(l=null,d('"/"')),l===null&&(a.charCodeAt(r)===91?(l="[",r++):(l=null,d('"["')),l===null&&(a.charCodeAt(r)===93?(l="]",r++):(l=null,d('"]"')),l===null&&(a.charCodeAt(r)===63?(l="?",r++):(l=null,d('"?"')),l===null&&(a.charCodeAt(r)===123?(l="{",r++):(l=null,d('"{"')),l===null&&(a.charCodeAt(r)===125?(l="}",r++):(l=null,d('"}"'))))))))))))))))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=oe(),l===null&&(a.charCodeAt(r)===45?(l="-",r++):(l=null,d('"-"')),l===null&&(a.charCodeAt(r)===46?(l=".",r++):(l=null,d('"."')),l===null&&(a.charCodeAt(r)===33?(l="!",r++):(l=null,d('"!"')),l===null&&(a.charCodeAt(r)===37?(l="%",r++):(l=null,d('"%"')),l===null&&(a.charCodeAt(r)===42?(l="*",r++):(l=null,d('"*"')),l===null&&(a.charCodeAt(r)===95?(l="_",r++):(l=null,d('"_"')),l===null&&(a.charCodeAt(r)===43?(l="+",r++):(l=null,d('"+"')),l===null&&(a.charCodeAt(r)===96?(l="`",r++):(l=null,d('"`"')),l===null&&(a.charCodeAt(r)===39?(l="'",r++):(l=null,d(`"'"`)),l===null&&(a.charCodeAt(r)===126?(l="~",r++):(l=null,d('"~"')),l===null&&(a.charCodeAt(r)===40?(l="(",r++):(l=null,d('"("')),l===null&&(a.charCodeAt(r)===41?(l=")",r++):(l=null,d('")"')),l===null&&(a.charCodeAt(r)===60?(l="<",r++):(l=null,d('"<"')),l===null&&(a.charCodeAt(r)===62?(l=">",r++):(l=null,d('">"')),l===null&&(a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l===null&&(a.charCodeAt(r)===92?(l="\\",r++):(l=null,d('"\\\\"')),l===null&&(l=I(),l===null&&(a.charCodeAt(r)===47?(l="/",r++):(l=null,d('"/"')),l===null&&(a.charCodeAt(r)===91?(l="[",r++):(l=null,d('"["')),l===null&&(a.charCodeAt(r)===93?(l="]",r++):(l=null,d('"]"')),l===null&&(a.charCodeAt(r)===63?(l="?",r++):(l=null,d('"?"')),l===null&&(a.charCodeAt(r)===123?(l="{",r++):(l=null,d('"{"')),l===null&&(a.charCodeAt(r)===125?(l="}",r++):(l=null,d('"}"')))))))))))))))))))))))));else e=null;return e!==null&&(e=function(f){return a.substring(r,f)}(u)),e===null&&(r=u),e}function W(){var e,l,u,f,p;return f=r,p=r,e=D(),e!==null?(a.charCodeAt(r)===42?(l="*",r++):(l=null,d('"*"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m){return"*"}()),e===null&&(r=f),e}function G(){var e,l,u,f,p;return f=r,p=r,e=D(),e!==null?(a.charCodeAt(r)===47?(l="/",r++):(l=null,d('"/"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m){return"/"}()),e===null&&(r=f),e}function re(){var e,l,u,f,p;return f=r,p=r,e=D(),e!==null?(a.charCodeAt(r)===61?(l="=",r++):(l=null,d('"="')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m){return"="}()),e===null&&(r=f),e}function ge(){var e,l,u,f,p;return f=r,p=r,e=D(),e!==null?(a.charCodeAt(r)===40?(l="(",r++):(l=null,d('"("')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m){return"("}()),e===null&&(r=f),e}function be(){var e,l,u,f,p;return f=r,p=r,e=D(),e!==null?(a.charCodeAt(r)===41?(l=")",r++):(l=null,d('")"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m){return")"}()),e===null&&(r=f),e}function Pe(){var e,l,u,f;return u=r,f=r,a.charCodeAt(r)===62?(e=">",r++):(e=null,d('">"')),e!==null?(l=D(),l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e!==null&&(e=function(p){return">"}()),e===null&&(r=u),e}function Ce(){var e,l,u,f;return u=r,f=r,e=D(),e!==null?(a.charCodeAt(r)===60?(l="<",r++):(l=null,d('"<"')),l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e!==null&&(e=function(p){return"<"}()),e===null&&(r=u),e}function le(){var e,l,u,f,p;return f=r,p=r,e=D(),e!==null?(a.charCodeAt(r)===44?(l=",",r++):(l=null,d('","')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m){return","}()),e===null&&(r=f),e}function ye(){var e,l,u,f,p;return f=r,p=r,e=D(),e!==null?(a.charCodeAt(r)===59?(l=";",r++):(l=null,d('";"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m){return";"}()),e===null&&(r=f),e}function st(){var e,l,u,f,p;return f=r,p=r,e=D(),e!==null?(a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m){return":"}()),e===null&&(r=f),e}function at(){var e,l,u,f;return u=r,f=r,e=D(),e!==null?(l=I(),l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e!==null&&(e=function(p){return'"'}()),e===null&&(r=u),e}function Ee(){var e,l,u,f;return u=r,f=r,e=I(),e!==null?(l=D(),l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e!==null&&(e=function(p){return'"'}()),e===null&&(r=u),e}function Ae(){var e,l,u,f;if(f=r,e=ge(),e!==null){for(l=[],u=Ie(),u===null&&(u=de(),u===null&&(u=Ae()));u!==null;)l.push(u),u=Ie(),u===null&&(u=de(),u===null&&(u=Ae()));l!==null?(u=be(),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)}else e=null,r=f;return e}function Ie(){var e;return/^[!-']/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[!-']")),e===null&&(/^[*-[]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[*-[]")),e===null&&(/^[\]-~]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[\\]-~]")),e===null&&(e=F(),e===null&&(e=k())))),e}function Oe(){var e,l,u,f,p,m;if(p=r,m=r,e=D(),e!==null)if(l=I(),l!==null){for(u=[],f=ue(),f===null&&(f=de());f!==null;)u.push(f),f=ue(),f===null&&(f=de());u!==null?(f=I(),f!==null?e=[e,l,u,f]:(e=null,r=m)):(e=null,r=m)}else e=null,r=m;else e=null,r=m;return e!==null&&(e=function(v){return a.substring(r,v)}(p)),e===null&&(r=p),e}function pe(){var e,l,u,f,p,m;if(p=r,m=r,e=D(),e!==null)if(l=I(),l!==null){for(u=[],f=ue(),f===null&&(f=de());f!==null;)u.push(f),f=ue(),f===null&&(f=de());u!==null?(f=I(),f!==null?e=[e,l,u,f]:(e=null,r=m)):(e=null,r=m)}else e=null,r=m;else e=null,r=m;return e!==null&&(e=function(v){var S=a.substring(r,v).trim();return S.substring(1,S.length-1).replace(/\\([\x00-\x09\x0b-\x0c\x0e-\x7f])/g,"$1")}(p)),e===null&&(r=p),e}function ue(){var e;return e=k(),e===null&&(a.charCodeAt(r)===33?(e="!",r++):(e=null,d('"!"')),e===null&&(/^[#-[]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[#-[]")),e===null&&(/^[\]-~]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[\\]-~]")),e===null&&(e=F())))),e}function de(){var e,l,u;return u=r,a.charCodeAt(r)===92?(e="\\",r++):(e=null,d('"\\\\"')),e!==null?(/^[\0-\t]/.test(a.charAt(r))?(l=a.charAt(r),r++):(l=null,d("[\\0-\\t]")),l===null&&(/^[\x0B-\f]/.test(a.charAt(r))?(l=a.charAt(r),r++):(l=null,d("[\\x0B-\\f]")),l===null&&(/^[\x0E-]/.test(a.charAt(r))?(l=a.charAt(r),r++):(l=null,d("[\\x0E-]")))),l!==null?e=[e,l]:(e=null,r=u)):(e=null,r=u),e}function we(){var e,l,u,f,p,m;return p=r,m=r,e=Qe(),e!==null?(a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=_t(),u=u!==null?u:"",u!==null?(f=Zt(),f!==null?e=[e,l,u,f]:(e=null,r=m)):(e=null,r=m)):(e=null,r=m)):(e=null,r=m),e!==null&&(e=function(v){try{w.uri=new fs(w.scheme,w.user,w.host,w.port),delete w.scheme,delete w.user,delete w.host,delete w.host_type,delete w.port}catch{w=-1}}()),e===null&&(r=p),e}function Ne(){var e,l,u,f,p,m,v,S;return v=r,S=r,e=Qe(),e!==null?(a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=_t(),u=u!==null?u:"",u!==null?(f=Zt(),f!==null?(p=Un(),p!==null?(m=Xs(),m=m!==null?m:"",m!==null?e=[e,l,u,f,p,m]:(e=null,r=S)):(e=null,r=S)):(e=null,r=S)):(e=null,r=S)):(e=null,r=S)):(e=null,r=S),e!==null&&(e=function(O){try{w.uri=new fs(w.scheme,w.user,w.host,w.port,w.uri_params,w.uri_headers),delete w.scheme,delete w.user,delete w.host,delete w.host_type,delete w.port,delete w.uri_params,o==="SIP_URI"&&(w=w.uri)}catch{w=-1}}()),e===null&&(r=v),e}function Qe(){var e;return e=Le(),e===null&&(e=Mt()),e}function Le(){var e,l;return l=r,a.substr(r,4).toLowerCase()==="sips"?(e=a.substr(r,4),r+=4):(e=null,d('"sips"')),e!==null&&(e=function(u,f){w.scheme=f.toLowerCase()}(l,e)),e===null&&(r=l),e}function Mt(){var e,l;return l=r,a.substr(r,3).toLowerCase()==="sip"?(e=a.substr(r,3),r+=3):(e=null,d('"sip"')),e!==null&&(e=function(u,f){w.scheme=f.toLowerCase()}(l,e)),e===null&&(r=l),e}function _t(){var e,l,u,f,p,m;return f=r,p=r,e=wn(),e!==null?(m=r,a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=Ys(),u!==null?l=[l,u]:(l=null,r=m)):(l=null,r=m),l=l!==null?l:"",l!==null?(a.charCodeAt(r)===64?(u="@",r++):(u=null,d('"@"')),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(v){w.user=decodeURIComponent(a.substring(r-1,v))}(f)),e===null&&(r=f),e}function wn(){var e,l;if(l=j(),l===null&&(l=ve(),l===null&&(l=On())),l!==null)for(e=[];l!==null;)e.push(l),l=j(),l===null&&(l=ve(),l===null&&(l=On()));else e=null;return e}function On(){var e;return a.charCodeAt(r)===38?(e="&",r++):(e=null,d('"&"')),e===null&&(a.charCodeAt(r)===61?(e="=",r++):(e=null,d('"="')),e===null&&(a.charCodeAt(r)===43?(e="+",r++):(e=null,d('"+"')),e===null&&(a.charCodeAt(r)===36?(e="$",r++):(e=null,d('"$"')),e===null&&(a.charCodeAt(r)===44?(e=",",r++):(e=null,d('","')),e===null&&(a.charCodeAt(r)===59?(e=";",r++):(e=null,d('";"')),e===null&&(a.charCodeAt(r)===63?(e="?",r++):(e=null,d('"?"')),e===null&&(a.charCodeAt(r)===47?(e="/",r++):(e=null,d('"/"'))))))))),e}function Ys(){var e,l,u;for(u=r,e=[],l=j(),l===null&&(l=ve(),l===null&&(a.charCodeAt(r)===38?(l="&",r++):(l=null,d('"&"')),l===null&&(a.charCodeAt(r)===61?(l="=",r++):(l=null,d('"="')),l===null&&(a.charCodeAt(r)===43?(l="+",r++):(l=null,d('"+"')),l===null&&(a.charCodeAt(r)===36?(l="$",r++):(l=null,d('"$"')),l===null&&(a.charCodeAt(r)===44?(l=",",r++):(l=null,d('","'))))))));l!==null;)e.push(l),l=j(),l===null&&(l=ve(),l===null&&(a.charCodeAt(r)===38?(l="&",r++):(l=null,d('"&"')),l===null&&(a.charCodeAt(r)===61?(l="=",r++):(l=null,d('"="')),l===null&&(a.charCodeAt(r)===43?(l="+",r++):(l=null,d('"+"')),l===null&&(a.charCodeAt(r)===36?(l="$",r++):(l=null,d('"$"')),l===null&&(a.charCodeAt(r)===44?(l=",",r++):(l=null,d('","'))))))));return e!==null&&(e=function(f){w.password=a.substring(r,f)}(u)),e===null&&(r=u),e}function Zt(){var e,l,u,f,p;return f=r,e=us(),e!==null?(p=r,a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=Er(),u!==null?l=[l,u]:(l=null,r=p)):(l=null,r=p),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e}function us(){var e,l;return l=r,e=Js(),e===null&&(e=Gt(),e===null&&(e=zs())),e!==null&&(e=function(u){return w.host=a.substring(r,u).toLowerCase(),w.host}(l)),e===null&&(r=l),e}function Js(){var e,l,u,f,p,m;for(f=r,p=r,e=[],m=r,l=Dn(),l!==null?(a.charCodeAt(r)===46?(u=".",r++):(u=null,d('"."')),u!==null?l=[l,u]:(l=null,r=m)):(l=null,r=m);l!==null;)e.push(l),m=r,l=Dn(),l!==null?(a.charCodeAt(r)===46?(u=".",r++):(u=null,d('"."')),u!==null?l=[l,u]:(l=null,r=m)):(l=null,r=m);return e!==null?(l=Nn(),l!==null?(a.charCodeAt(r)===46?(u=".",r++):(u=null,d('"."')),u=u!==null?u:"",u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(v){return w.host_type="domain",a.substring(r,v)}(f)),e===null&&(r=f),e}function Dn(){var e,l,u,f;if(f=r,e=oe(),e!==null){for(l=[],u=oe(),u===null&&(a.charCodeAt(r)===45?(u="-",r++):(u=null,d('"-"')),u===null&&(a.charCodeAt(r)===95?(u="_",r++):(u=null,d('"_"'))));u!==null;)l.push(u),u=oe(),u===null&&(a.charCodeAt(r)===45?(u="-",r++):(u=null,d('"-"')),u===null&&(a.charCodeAt(r)===95?(u="_",r++):(u=null,d('"_"'))));l!==null?e=[e,l]:(e=null,r=f)}else e=null,r=f;return e}function Nn(){var e,l,u,f;if(f=r,e=E(),e!==null){for(l=[],u=oe(),u===null&&(a.charCodeAt(r)===45?(u="-",r++):(u=null,d('"-"')),u===null&&(a.charCodeAt(r)===95?(u="_",r++):(u=null,d('"_"'))));u!==null;)l.push(u),u=oe(),u===null&&(a.charCodeAt(r)===45?(u="-",r++):(u=null,d('"-"')),u===null&&(a.charCodeAt(r)===95?(u="_",r++):(u=null,d('"_"'))));l!==null?e=[e,l]:(e=null,r=f)}else e=null,r=f;return e}function zs(){var e,l,u,f,p;return f=r,p=r,a.charCodeAt(r)===91?(e="[",r++):(e=null,d('"["')),e!==null?(l=me(),l!==null?(a.charCodeAt(r)===93?(u="]",r++):(u=null,d('"]"')),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m){return w.host_type="IPv6",a.substring(r,m)}(f)),e===null&&(r=f),e}function me(){var e,l,u,f,p,m,v,S,O,ie,Ue,wt,ks,M,R,Te;return M=r,R=r,e=ae(),e!==null?(a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?(a.charCodeAt(r)===58?(f=":",r++):(f=null,d('":"')),f!==null?(p=ae(),p!==null?(a.charCodeAt(r)===58?(m=":",r++):(m=null,d('":"')),m!==null?(v=ae(),v!==null?(a.charCodeAt(r)===58?(S=":",r++):(S=null,d('":"')),S!==null?(O=ae(),O!==null?(a.charCodeAt(r)===58?(ie=":",r++):(ie=null,d('":"')),ie!==null?(Ue=ae(),Ue!==null?(a.charCodeAt(r)===58?(wt=":",r++):(wt=null,d('":"')),wt!==null?(ks=ot(),ks!==null?e=[e,l,u,f,p,m,v,S,O,ie,Ue,wt,ks]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R),e===null&&(R=r,a.substr(r,2)==="::"?(e="::",r+=2):(e=null,d('"::"')),e!==null?(l=ae(),l!==null?(a.charCodeAt(r)===58?(u=":",r++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?(a.charCodeAt(r)===58?(p=":",r++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?(a.charCodeAt(r)===58?(v=":",r++):(v=null,d('":"')),v!==null?(S=ae(),S!==null?(a.charCodeAt(r)===58?(O=":",r++):(O=null,d('":"')),O!==null?(ie=ae(),ie!==null?(a.charCodeAt(r)===58?(Ue=":",r++):(Ue=null,d('":"')),Ue!==null?(wt=ot(),wt!==null?e=[e,l,u,f,p,m,v,S,O,ie,Ue,wt]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R),e===null&&(R=r,a.substr(r,2)==="::"?(e="::",r+=2):(e=null,d('"::"')),e!==null?(l=ae(),l!==null?(a.charCodeAt(r)===58?(u=":",r++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?(a.charCodeAt(r)===58?(p=":",r++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?(a.charCodeAt(r)===58?(v=":",r++):(v=null,d('":"')),v!==null?(S=ae(),S!==null?(a.charCodeAt(r)===58?(O=":",r++):(O=null,d('":"')),O!==null?(ie=ot(),ie!==null?e=[e,l,u,f,p,m,v,S,O,ie]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R),e===null&&(R=r,a.substr(r,2)==="::"?(e="::",r+=2):(e=null,d('"::"')),e!==null?(l=ae(),l!==null?(a.charCodeAt(r)===58?(u=":",r++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?(a.charCodeAt(r)===58?(p=":",r++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?(a.charCodeAt(r)===58?(v=":",r++):(v=null,d('":"')),v!==null?(S=ot(),S!==null?e=[e,l,u,f,p,m,v,S]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R),e===null&&(R=r,a.substr(r,2)==="::"?(e="::",r+=2):(e=null,d('"::"')),e!==null?(l=ae(),l!==null?(a.charCodeAt(r)===58?(u=":",r++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?(a.charCodeAt(r)===58?(p=":",r++):(p=null,d('":"')),p!==null?(m=ot(),m!==null?e=[e,l,u,f,p,m]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R),e===null&&(R=r,a.substr(r,2)==="::"?(e="::",r+=2):(e=null,d('"::"')),e!==null?(l=ae(),l!==null?(a.charCodeAt(r)===58?(u=":",r++):(u=null,d('":"')),u!==null?(f=ot(),f!==null?e=[e,l,u,f]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R),e===null&&(R=r,a.substr(r,2)==="::"?(e="::",r+=2):(e=null,d('"::"')),e!==null?(l=ot(),l!==null?e=[e,l]:(e=null,r=R)):(e=null,r=R),e===null&&(R=r,a.substr(r,2)==="::"?(e="::",r+=2):(e=null,d('"::"')),e!==null?(l=ae(),l!==null?e=[e,l]:(e=null,r=R)):(e=null,r=R),e===null&&(R=r,e=ae(),e!==null?(a.substr(r,2)==="::"?(l="::",r+=2):(l=null,d('"::"')),l!==null?(u=ae(),u!==null?(a.charCodeAt(r)===58?(f=":",r++):(f=null,d('":"')),f!==null?(p=ae(),p!==null?(a.charCodeAt(r)===58?(m=":",r++):(m=null,d('":"')),m!==null?(v=ae(),v!==null?(a.charCodeAt(r)===58?(S=":",r++):(S=null,d('":"')),S!==null?(O=ae(),O!==null?(a.charCodeAt(r)===58?(ie=":",r++):(ie=null,d('":"')),ie!==null?(Ue=ot(),Ue!==null?e=[e,l,u,f,p,m,v,S,O,ie,Ue]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R),e===null&&(R=r,e=ae(),e!==null?(Te=r,a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?l=[l,u]:(l=null,r=Te)):(l=null,r=Te),l=l!==null?l:"",l!==null?(a.substr(r,2)==="::"?(u="::",r+=2):(u=null,d('"::"')),u!==null?(f=ae(),f!==null?(a.charCodeAt(r)===58?(p=":",r++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?(a.charCodeAt(r)===58?(v=":",r++):(v=null,d('":"')),v!==null?(S=ae(),S!==null?(a.charCodeAt(r)===58?(O=":",r++):(O=null,d('":"')),O!==null?(ie=ot(),ie!==null?e=[e,l,u,f,p,m,v,S,O,ie]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R),e===null&&(R=r,e=ae(),e!==null?(Te=r,a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?l=[l,u]:(l=null,r=Te)):(l=null,r=Te),l=l!==null?l:"",l!==null?(Te=r,a.charCodeAt(r)===58?(u=":",r++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?u=[u,f]:(u=null,r=Te)):(u=null,r=Te),u=u!==null?u:"",u!==null?(a.substr(r,2)==="::"?(f="::",r+=2):(f=null,d('"::"')),f!==null?(p=ae(),p!==null?(a.charCodeAt(r)===58?(m=":",r++):(m=null,d('":"')),m!==null?(v=ae(),v!==null?(a.charCodeAt(r)===58?(S=":",r++):(S=null,d('":"')),S!==null?(O=ot(),O!==null?e=[e,l,u,f,p,m,v,S,O]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R),e===null&&(R=r,e=ae(),e!==null?(Te=r,a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?l=[l,u]:(l=null,r=Te)):(l=null,r=Te),l=l!==null?l:"",l!==null?(Te=r,a.charCodeAt(r)===58?(u=":",r++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?u=[u,f]:(u=null,r=Te)):(u=null,r=Te),u=u!==null?u:"",u!==null?(Te=r,a.charCodeAt(r)===58?(f=":",r++):(f=null,d('":"')),f!==null?(p=ae(),p!==null?f=[f,p]:(f=null,r=Te)):(f=null,r=Te),f=f!==null?f:"",f!==null?(a.substr(r,2)==="::"?(p="::",r+=2):(p=null,d('"::"')),p!==null?(m=ae(),m!==null?(a.charCodeAt(r)===58?(v=":",r++):(v=null,d('":"')),v!==null?(S=ot(),S!==null?e=[e,l,u,f,p,m,v,S]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R),e===null&&(R=r,e=ae(),e!==null?(Te=r,a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?l=[l,u]:(l=null,r=Te)):(l=null,r=Te),l=l!==null?l:"",l!==null?(Te=r,a.charCodeAt(r)===58?(u=":",r++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?u=[u,f]:(u=null,r=Te)):(u=null,r=Te),u=u!==null?u:"",u!==null?(Te=r,a.charCodeAt(r)===58?(f=":",r++):(f=null,d('":"')),f!==null?(p=ae(),p!==null?f=[f,p]:(f=null,r=Te)):(f=null,r=Te),f=f!==null?f:"",f!==null?(Te=r,a.charCodeAt(r)===58?(p=":",r++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?p=[p,m]:(p=null,r=Te)):(p=null,r=Te),p=p!==null?p:"",p!==null?(a.substr(r,2)==="::"?(m="::",r+=2):(m=null,d('"::"')),m!==null?(v=ot(),v!==null?e=[e,l,u,f,p,m,v]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R),e===null&&(R=r,e=ae(),e!==null?(Te=r,a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?l=[l,u]:(l=null,r=Te)):(l=null,r=Te),l=l!==null?l:"",l!==null?(Te=r,a.charCodeAt(r)===58?(u=":",r++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?u=[u,f]:(u=null,r=Te)):(u=null,r=Te),u=u!==null?u:"",u!==null?(Te=r,a.charCodeAt(r)===58?(f=":",r++):(f=null,d('":"')),f!==null?(p=ae(),p!==null?f=[f,p]:(f=null,r=Te)):(f=null,r=Te),f=f!==null?f:"",f!==null?(Te=r,a.charCodeAt(r)===58?(p=":",r++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?p=[p,m]:(p=null,r=Te)):(p=null,r=Te),p=p!==null?p:"",p!==null?(Te=r,a.charCodeAt(r)===58?(m=":",r++):(m=null,d('":"')),m!==null?(v=ae(),v!==null?m=[m,v]:(m=null,r=Te)):(m=null,r=Te),m=m!==null?m:"",m!==null?(a.substr(r,2)==="::"?(v="::",r+=2):(v=null,d('"::"')),v!==null?(S=ae(),S!==null?e=[e,l,u,f,p,m,v,S]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R),e===null&&(R=r,e=ae(),e!==null?(Te=r,a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?l=[l,u]:(l=null,r=Te)):(l=null,r=Te),l=l!==null?l:"",l!==null?(Te=r,a.charCodeAt(r)===58?(u=":",r++):(u=null,d('":"')),u!==null?(f=ae(),f!==null?u=[u,f]:(u=null,r=Te)):(u=null,r=Te),u=u!==null?u:"",u!==null?(Te=r,a.charCodeAt(r)===58?(f=":",r++):(f=null,d('":"')),f!==null?(p=ae(),p!==null?f=[f,p]:(f=null,r=Te)):(f=null,r=Te),f=f!==null?f:"",f!==null?(Te=r,a.charCodeAt(r)===58?(p=":",r++):(p=null,d('":"')),p!==null?(m=ae(),m!==null?p=[p,m]:(p=null,r=Te)):(p=null,r=Te),p=p!==null?p:"",p!==null?(Te=r,a.charCodeAt(r)===58?(m=":",r++):(m=null,d('":"')),m!==null?(v=ae(),v!==null?m=[m,v]:(m=null,r=Te)):(m=null,r=Te),m=m!==null?m:"",m!==null?(Te=r,a.charCodeAt(r)===58?(v=":",r++):(v=null,d('":"')),v!==null?(S=ae(),S!==null?v=[v,S]:(v=null,r=Te)):(v=null,r=Te),v=v!==null?v:"",v!==null?(a.substr(r,2)==="::"?(S="::",r+=2):(S=null,d('"::"')),S!==null?e=[e,l,u,f,p,m,v,S]:(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R)):(e=null,r=R))))))))))))))),e!==null&&(e=function(kh){return w.host_type="IPv6",a.substring(r,kh)}(M)),e===null&&(r=M),e}function ae(){var e,l,u,f,p;return p=r,e=y(),e!==null?(l=y(),l=l!==null?l:"",l!==null?(u=y(),u=u!==null?u:"",u!==null?(f=y(),f=f!==null?f:"",f!==null?e=[e,l,u,f]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e}function ot(){var e,l,u,f;return f=r,e=ae(),e!==null?(a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=ae(),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e===null&&(e=Gt()),e}function Gt(){var e,l,u,f,p,m,v,S,O;return S=r,O=r,e=Cs(),e!==null?(a.charCodeAt(r)===46?(l=".",r++):(l=null,d('"."')),l!==null?(u=Cs(),u!==null?(a.charCodeAt(r)===46?(f=".",r++):(f=null,d('"."')),f!==null?(p=Cs(),p!==null?(a.charCodeAt(r)===46?(m=".",r++):(m=null,d('"."')),m!==null?(v=Cs(),v!==null?e=[e,l,u,f,p,m,v]:(e=null,r=O)):(e=null,r=O)):(e=null,r=O)):(e=null,r=O)):(e=null,r=O)):(e=null,r=O)):(e=null,r=O),e!==null&&(e=function(ie){return w.host_type="IPv4",a.substring(r,ie)}(S)),e===null&&(r=S),e}function Cs(){var e,l,u,f;return f=r,a.substr(r,2)==="25"?(e="25",r+=2):(e=null,d('"25"')),e!==null?(/^[0-5]/.test(a.charAt(r))?(l=a.charAt(r),r++):(l=null,d("[0-5]")),l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e===null&&(f=r,a.charCodeAt(r)===50?(e="2",r++):(e=null,d('"2"')),e!==null?(/^[0-4]/.test(a.charAt(r))?(l=a.charAt(r),r++):(l=null,d("[0-4]")),l!==null?(u=T(),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e===null&&(f=r,a.charCodeAt(r)===49?(e="1",r++):(e=null,d('"1"')),e!==null?(l=T(),l!==null?(u=T(),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e===null&&(f=r,/^[1-9]/.test(a.charAt(r))?(e=a.charAt(r),r++):(e=null,d("[1-9]")),e!==null?(l=T(),l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e===null&&(e=T())))),e}function Er(){var e,l,u,f,p,m,v;return m=r,v=r,e=T(),e=e!==null?e:"",e!==null?(l=T(),l=l!==null?l:"",l!==null?(u=T(),u=u!==null?u:"",u!==null?(f=T(),f=f!==null?f:"",f!==null?(p=T(),p=p!==null?p:"",p!==null?e=[e,l,u,f,p]:(e=null,r=v)):(e=null,r=v)):(e=null,r=v)):(e=null,r=v)):(e=null,r=v),e!==null&&(e=function(S,O){return O=parseInt(O.join("")),w.port=O,O}(m,e)),e===null&&(r=m),e}function Un(){var e,l,u,f;for(e=[],f=r,a.charCodeAt(r)===59?(l=";",r++):(l=null,d('";"')),l!==null?(u=xn(),u!==null?l=[l,u]:(l=null,r=f)):(l=null,r=f);l!==null;)e.push(l),f=r,a.charCodeAt(r)===59?(l=";",r++):(l=null,d('";"')),l!==null?(u=xn(),u!==null?l=[l,u]:(l=null,r=f)):(l=null,r=f);return e}function xn(){var e;return e=Sr(),e===null&&(e=yr(),e===null&&(e=Ar(),e===null&&(e=Cr(),e===null&&(e=Rr(),e===null&&(e=Ir(),e===null&&(e=br())))))),e}function Sr(){var e,l,u,f;return u=r,f=r,a.substr(r,10).toLowerCase()==="transport="?(e=a.substr(r,10),r+=10):(e=null,d('"transport="')),e!==null?(a.substr(r,3).toLowerCase()==="udp"?(l=a.substr(r,3),r+=3):(l=null,d('"udp"')),l===null&&(a.substr(r,3).toLowerCase()==="tcp"?(l=a.substr(r,3),r+=3):(l=null,d('"tcp"')),l===null&&(a.substr(r,4).toLowerCase()==="sctp"?(l=a.substr(r,4),r+=4):(l=null,d('"sctp"')),l===null&&(a.substr(r,3).toLowerCase()==="tls"?(l=a.substr(r,3),r+=3):(l=null,d('"tls"')),l===null&&(l=x())))),l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e!==null&&(e=function(p,m){w.uri_params||(w.uri_params={}),w.uri_params.transport=m.toLowerCase()}(u,e[1])),e===null&&(r=u),e}function yr(){var e,l,u,f;return u=r,f=r,a.substr(r,5).toLowerCase()==="user="?(e=a.substr(r,5),r+=5):(e=null,d('"user="')),e!==null?(a.substr(r,5).toLowerCase()==="phone"?(l=a.substr(r,5),r+=5):(l=null,d('"phone"')),l===null&&(a.substr(r,2).toLowerCase()==="ip"?(l=a.substr(r,2),r+=2):(l=null,d('"ip"')),l===null&&(l=x())),l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e!==null&&(e=function(p,m){w.uri_params||(w.uri_params={}),w.uri_params.user=m.toLowerCase()}(u,e[1])),e===null&&(r=u),e}function Ar(){var e,l,u,f;return u=r,f=r,a.substr(r,7).toLowerCase()==="method="?(e=a.substr(r,7),r+=7):(e=null,d('"method="')),e!==null?(l=rn(),l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e!==null&&(e=function(p,m){w.uri_params||(w.uri_params={}),w.uri_params.method=m}(u,e[1])),e===null&&(r=u),e}function Cr(){var e,l,u,f;return u=r,f=r,a.substr(r,4).toLowerCase()==="ttl="?(e=a.substr(r,4),r+=4):(e=null,d('"ttl="')),e!==null?(l=Ci(),l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e!==null&&(e=function(p,m){w.params||(w.params={}),w.params.ttl=m}(u,e[1])),e===null&&(r=u),e}function Rr(){var e,l,u,f;return u=r,f=r,a.substr(r,6).toLowerCase()==="maddr="?(e=a.substr(r,6),r+=6):(e=null,d('"maddr="')),e!==null?(l=us(),l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e!==null&&(e=function(p,m){w.uri_params||(w.uri_params={}),w.uri_params.maddr=m}(u,e[1])),e===null&&(r=u),e}function Ir(){var e,l,u,f,p,m;return f=r,p=r,a.substr(r,2).toLowerCase()==="lr"?(e=a.substr(r,2),r+=2):(e=null,d('"lr"')),e!==null?(m=r,a.charCodeAt(r)===61?(l="=",r++):(l=null,d('"="')),l!==null?(u=x(),u!==null?l=[l,u]:(l=null,r=m)):(l=null,r=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(v){w.uri_params||(w.uri_params={}),w.uri_params.lr=void 0}()),e===null&&(r=f),e}function br(){var e,l,u,f,p,m;return f=r,p=r,e=wr(),e!==null?(m=r,a.charCodeAt(r)===61?(l="=",r++):(l=null,d('"="')),l!==null?(u=Rs(),u!==null?l=[l,u]:(l=null,r=m)):(l=null,r=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(v,S,O){w.uri_params||(w.uri_params={}),typeof O>"u"?O=void 0:O=O[1],w.uri_params[S.toLowerCase()]=O}(f,e[0],e[1])),e===null&&(r=f),e}function wr(){var e,l,u;if(u=r,l=Is(),l!==null)for(e=[];l!==null;)e.push(l),l=Is();else e=null;return e!==null&&(e=function(f,p){return p.join("")}(u,e)),e===null&&(r=u),e}function Rs(){var e,l,u;if(u=r,l=Is(),l!==null)for(e=[];l!==null;)e.push(l),l=Is();else e=null;return e!==null&&(e=function(f,p){return p.join("")}(u,e)),e===null&&(r=u),e}function Is(){var e;return e=Or(),e===null&&(e=j(),e===null&&(e=ve())),e}function Or(){var e;return a.charCodeAt(r)===91?(e="[",r++):(e=null,d('"["')),e===null&&(a.charCodeAt(r)===93?(e="]",r++):(e=null,d('"]"')),e===null&&(a.charCodeAt(r)===47?(e="/",r++):(e=null,d('"/"')),e===null&&(a.charCodeAt(r)===58?(e=":",r++):(e=null,d('":"')),e===null&&(a.charCodeAt(r)===38?(e="&",r++):(e=null,d('"&"')),e===null&&(a.charCodeAt(r)===43?(e="+",r++):(e=null,d('"+"')),e===null&&(a.charCodeAt(r)===36?(e="$",r++):(e=null,d('"$"')))))))),e}function Xs(){var e,l,u,f,p,m,v;if(m=r,a.charCodeAt(r)===63?(e="?",r++):(e=null,d('"?"')),e!==null)if(l=Qs(),l!==null){for(u=[],v=r,a.charCodeAt(r)===38?(f="&",r++):(f=null,d('"&"')),f!==null?(p=Qs(),p!==null?f=[f,p]:(f=null,r=v)):(f=null,r=v);f!==null;)u.push(f),v=r,a.charCodeAt(r)===38?(f="&",r++):(f=null,d('"&"')),f!==null?(p=Qs(),p!==null?f=[f,p]:(f=null,r=v)):(f=null,r=v);u!==null?e=[e,l,u]:(e=null,r=m)}else e=null,r=m;else e=null,r=m;return e}function Qs(){var e,l,u,f,p;return f=r,p=r,e=Dr(),e!==null?(a.charCodeAt(r)===61?(l="=",r++):(l=null,d('"="')),l!==null?(u=bs(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v,S){v=v.join("").toLowerCase(),S=S.join(""),w.uri_headers||(w.uri_headers={}),w.uri_headers[v]?w.uri_headers[v].push(S):w.uri_headers[v]=[S]}(f,e[0],e[2])),e===null&&(r=f),e}function Dr(){var e,l;if(l=Zs(),l===null&&(l=j(),l===null&&(l=ve())),l!==null)for(e=[];l!==null;)e.push(l),l=Zs(),l===null&&(l=j(),l===null&&(l=ve()));else e=null;return e}function bs(){var e,l;for(e=[],l=Zs(),l===null&&(l=j(),l===null&&(l=ve()));l!==null;)e.push(l),l=Zs(),l===null&&(l=j(),l===null&&(l=ve()));return e}function Zs(){var e;return a.charCodeAt(r)===91?(e="[",r++):(e=null,d('"["')),e===null&&(a.charCodeAt(r)===93?(e="]",r++):(e=null,d('"]"')),e===null&&(a.charCodeAt(r)===47?(e="/",r++):(e=null,d('"/"')),e===null&&(a.charCodeAt(r)===63?(e="?",r++):(e=null,d('"?"')),e===null&&(a.charCodeAt(r)===58?(e=":",r++):(e=null,d('":"')),e===null&&(a.charCodeAt(r)===43?(e="+",r++):(e=null,d('"+"')),e===null&&(a.charCodeAt(r)===36?(e="$",r++):(e=null,d('"$"')))))))),e}function ml(){var e;return e=Wr(),e===null&&(e=Nr()),e}function Nr(){var e,l,u,f,p,m;return m=r,e=rn(),e!==null?(l=H(),l!==null?(u=Pn(),u!==null?(f=H(),f!==null?(p=Ln(),p!==null?e=[e,l,u,f,p]:(e=null,r=m)):(e=null,r=m)):(e=null,r=m)):(e=null,r=m)):(e=null,r=m),e}function Pn(){var e;return e=Ne(),e===null&&(e=kn()),e}function kn(){var e,l,u,f;return f=r,e=Pr(),e!==null?(a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l!==null?(u=Ur(),u===null&&(u=ws()),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e}function Ur(){var e,l,u,f,p;return f=r,e=en(),e===null&&(e=tn()),e!==null?(p=r,a.charCodeAt(r)===63?(l="?",r++):(l=null,d('"?"')),l!==null?(u=Mn(),u!==null?l=[l,u]:(l=null,r=p)):(l=null,r=p),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e}function en(){var e,l,u,f;return f=r,a.substr(r,2)==="//"?(e="//",r+=2):(e=null,d('"//"')),e!==null?(l=kr(),l!==null?(u=tn(),u=u!==null?u:"",u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e}function tn(){var e,l,u;return u=r,a.charCodeAt(r)===47?(e="/",r++):(e=null,d('"/"')),e!==null?(l=sn(),l!==null?e=[e,l]:(e=null,r=u)):(e=null,r=u),e}function ws(){var e,l,u,f;if(f=r,e=xr(),e!==null){for(l=[],u=Os();u!==null;)l.push(u),u=Os();l!==null?e=[e,l]:(e=null,r=f)}else e=null,r=f;return e}function Os(){var e;return e=N(),e===null&&(e=j(),e===null&&(e=ve())),e}function xr(){var e;return e=j(),e===null&&(e=ve(),e===null&&(a.charCodeAt(r)===59?(e=";",r++):(e=null,d('";"')),e===null&&(a.charCodeAt(r)===63?(e="?",r++):(e=null,d('"?"')),e===null&&(a.charCodeAt(r)===58?(e=":",r++):(e=null,d('":"')),e===null&&(a.charCodeAt(r)===64?(e="@",r++):(e=null,d('"@"')),e===null&&(a.charCodeAt(r)===38?(e="&",r++):(e=null,d('"&"')),e===null&&(a.charCodeAt(r)===61?(e="=",r++):(e=null,d('"="')),e===null&&(a.charCodeAt(r)===43?(e="+",r++):(e=null,d('"+"')),e===null&&(a.charCodeAt(r)===36?(e="$",r++):(e=null,d('"$"')),e===null&&(a.charCodeAt(r)===44?(e=",",r++):(e=null,d('","')))))))))))),e}function sn(){var e,l,u,f,p,m;if(p=r,e=Ds(),e!==null){for(l=[],m=r,a.charCodeAt(r)===47?(u="/",r++):(u=null,d('"/"')),u!==null?(f=Ds(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,a.charCodeAt(r)===47?(u="/",r++):(u=null,d('"/"')),u!==null?(f=Ds(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function Ds(){var e,l,u,f,p,m;for(p=r,e=[],l=Ns();l!==null;)e.push(l),l=Ns();if(e!==null){for(l=[],m=r,a.charCodeAt(r)===59?(u=";",r++):(u=null,d('";"')),u!==null?(f=cs(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,a.charCodeAt(r)===59?(u=";",r++):(u=null,d('";"')),u!==null?(f=cs(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function cs(){var e,l;for(e=[],l=Ns();l!==null;)e.push(l),l=Ns();return e}function Ns(){var e;return e=j(),e===null&&(e=ve(),e===null&&(a.charCodeAt(r)===58?(e=":",r++):(e=null,d('":"')),e===null&&(a.charCodeAt(r)===64?(e="@",r++):(e=null,d('"@"')),e===null&&(a.charCodeAt(r)===38?(e="&",r++):(e=null,d('"&"')),e===null&&(a.charCodeAt(r)===61?(e="=",r++):(e=null,d('"="')),e===null&&(a.charCodeAt(r)===43?(e="+",r++):(e=null,d('"+"')),e===null&&(a.charCodeAt(r)===36?(e="$",r++):(e=null,d('"$"')),e===null&&(a.charCodeAt(r)===44?(e=",",r++):(e=null,d('","')))))))))),e}function Pr(){var e,l,u,f,p;if(f=r,p=r,e=E(),e!==null){for(l=[],u=E(),u===null&&(u=T(),u===null&&(a.charCodeAt(r)===43?(u="+",r++):(u=null,d('"+"')),u===null&&(a.charCodeAt(r)===45?(u="-",r++):(u=null,d('"-"')),u===null&&(a.charCodeAt(r)===46?(u=".",r++):(u=null,d('"."'))))));u!==null;)l.push(u),u=E(),u===null&&(u=T(),u===null&&(a.charCodeAt(r)===43?(u="+",r++):(u=null,d('"+"')),u===null&&(a.charCodeAt(r)===45?(u="-",r++):(u=null,d('"-"')),u===null&&(a.charCodeAt(r)===46?(u=".",r++):(u=null,d('"."'))))));l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e!==null&&(e=function(m){w.scheme=a.substring(r,m)}(f)),e===null&&(r=f),e}function kr(){var e;return e=Mr(),e===null&&(e=Lr()),e}function Mr(){var e,l,u,f;return u=r,f=r,e=_t(),e!==null?(a.charCodeAt(r)===64?(l="@",r++):(l=null,d('"@"')),l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e=e!==null?e:"",e!==null?(l=Zt(),l!==null?e=[e,l]:(e=null,r=u)):(e=null,r=u),e=e!==null?e:"",e}function Lr(){var e,l;if(l=j(),l===null&&(l=ve(),l===null&&(a.charCodeAt(r)===36?(l="$",r++):(l=null,d('"$"')),l===null&&(a.charCodeAt(r)===44?(l=",",r++):(l=null,d('","')),l===null&&(a.charCodeAt(r)===59?(l=";",r++):(l=null,d('";"')),l===null&&(a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l===null&&(a.charCodeAt(r)===64?(l="@",r++):(l=null,d('"@"')),l===null&&(a.charCodeAt(r)===38?(l="&",r++):(l=null,d('"&"')),l===null&&(a.charCodeAt(r)===61?(l="=",r++):(l=null,d('"="')),l===null&&(a.charCodeAt(r)===43?(l="+",r++):(l=null,d('"+"'))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=j(),l===null&&(l=ve(),l===null&&(a.charCodeAt(r)===36?(l="$",r++):(l=null,d('"$"')),l===null&&(a.charCodeAt(r)===44?(l=",",r++):(l=null,d('","')),l===null&&(a.charCodeAt(r)===59?(l=";",r++):(l=null,d('";"')),l===null&&(a.charCodeAt(r)===58?(l=":",r++):(l=null,d('":"')),l===null&&(a.charCodeAt(r)===64?(l="@",r++):(l=null,d('"@"')),l===null&&(a.charCodeAt(r)===38?(l="&",r++):(l=null,d('"&"')),l===null&&(a.charCodeAt(r)===61?(l="=",r++):(l=null,d('"="')),l===null&&(a.charCodeAt(r)===43?(l="+",r++):(l=null,d('"+"')))))))))));else e=null;return e}function Mn(){var e,l;for(e=[],l=Os();l!==null;)e.push(l),l=Os();return e}function Ln(){var e,l,u,f,p,m,v,S;if(v=r,S=r,a.substr(r,3).toLowerCase()==="sip"?(e=a.substr(r,3),r+=3):(e=null,d('"SIP"')),e!==null)if(a.charCodeAt(r)===47?(l="/",r++):(l=null,d('"/"')),l!==null){if(f=T(),f!==null)for(u=[];f!==null;)u.push(f),f=T();else u=null;if(u!==null)if(a.charCodeAt(r)===46?(f=".",r++):(f=null,d('"."')),f!==null){if(m=T(),m!==null)for(p=[];m!==null;)p.push(m),m=T();else p=null;p!==null?e=[e,l,u,f,p]:(e=null,r=S)}else e=null,r=S;else e=null,r=S}else e=null,r=S;else e=null,r=S;return e!==null&&(e=function(O){w.sip_version=a.substring(r,O)}(v)),e===null&&(r=v),e}function $r(){var e;return a.substr(r,6)==="INVITE"?(e="INVITE",r+=6):(e=null,d('"INVITE"')),e}function Hr(){var e;return a.substr(r,3)==="ACK"?(e="ACK",r+=3):(e=null,d('"ACK"')),e}function Fr(){var e;return a.substr(r,7)==="OPTIONS"?(e="OPTIONS",r+=7):(e=null,d('"OPTIONS"')),e}function jr(){var e;return a.substr(r,3)==="BYE"?(e="BYE",r+=3):(e=null,d('"BYE"')),e}function Vr(){var e;return a.substr(r,6)==="CANCEL"?(e="CANCEL",r+=6):(e=null,d('"CANCEL"')),e}function qr(){var e;return a.substr(r,8)==="REGISTER"?(e="REGISTER",r+=8):(e=null,d('"REGISTER"')),e}function Br(){var e;return a.substr(r,9)==="SUBSCRIBE"?(e="SUBSCRIBE",r+=9):(e=null,d('"SUBSCRIBE"')),e}function Gr(){var e;return a.substr(r,6)==="NOTIFY"?(e="NOTIFY",r+=6):(e=null,d('"NOTIFY"')),e}function nn(){var e;return a.substr(r,5)==="REFER"?(e="REFER",r+=5):(e=null,d('"REFER"')),e}function rn(){var e,l;return l=r,e=$r(),e===null&&(e=Hr(),e===null&&(e=Fr(),e===null&&(e=jr(),e===null&&(e=Vr(),e===null&&(e=qr(),e===null&&(e=Br(),e===null&&(e=Gr(),e===null&&(e=nn(),e===null&&(e=x()))))))))),e!==null&&(e=function(u){return w.method=a.substring(r,u),w.method}(l)),e===null&&(r=l),e}function Wr(){var e,l,u,f,p,m;return m=r,e=Ln(),e!==null?(l=H(),l!==null?(u=Kr(),u!==null?(f=H(),f!==null?(p=gl(),p!==null?e=[e,l,u,f,p]:(e=null,r=m)):(e=null,r=m)):(e=null,r=m)):(e=null,r=m)):(e=null,r=m),e}function Kr(){var e,l;return l=r,e=Yr(),e!==null&&(e=function(u,f){w.status_code=parseInt(f.join(""))}(l,e)),e===null&&(r=l),e}function Yr(){var e,l,u,f;return f=r,e=T(),e!==null?(l=T(),l!==null?(u=T(),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e}function gl(){var e,l,u;for(u=r,e=[],l=N(),l===null&&(l=j(),l===null&&(l=ve(),l===null&&(l=F(),l===null&&(l=X(),l===null&&(l=H(),l===null&&(l=$()))))));l!==null;)e.push(l),l=N(),l===null&&(l=j(),l===null&&(l=ve(),l===null&&(l=F(),l===null&&(l=X(),l===null&&(l=H(),l===null&&(l=$()))))));return e!==null&&(e=function(f){w.reason_phrase=a.substring(r,f)}(u)),e===null&&(r=u),e}function Ya(){var e,l,u,f,p,m;if(p=r,e=un(),e!==null){for(l=[],m=r,u=le(),u!==null?(f=un(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,u=le(),u!==null?(f=un(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function Ja(){var e,l,u,f,p,m;return f=r,p=r,e=ee(),e!==null?(m=r,a.charCodeAt(r)===64?(l="@",r++):(l=null,d('"@"')),l!==null?(u=ee(),u!==null?l=[l,u]:(l=null,r=m)):(l=null,r=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(v){w=a.substring(r,v)}(f)),e===null&&(r=f),e}function $n(){var e,l,u,f,p,m,v;if(p=r,e=W(),e===null)if(m=r,e=Lt(),e!==null){for(l=[],v=r,u=le(),u!==null?(f=Lt(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);u!==null;)l.push(u),v=r,u=le(),u!==null?(f=Lt(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);l!==null?e=[e,l]:(e=null,r=m)}else e=null,r=m;return e!==null&&(e=function(S){var O,ie;for(ie=w.multi_header.length,O=0;O<ie;O++)if(w.multi_header[O].parsed===null){w=null;break}w!==null?w=w.multi_header:w=-1}()),e===null&&(r=p),e}function Lt(){var e,l,u,f,p,m,v;if(p=r,m=r,e=we(),e===null&&(e=$t()),e!==null){for(l=[],v=r,u=ye(),u!==null?(f=Hn(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);u!==null;)l.push(u),v=r,u=ye(),u!==null?(f=Hn(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);l!==null?e=[e,l]:(e=null,r=m)}else e=null,r=m;return e!==null&&(e=function(S){var O;w.multi_header||(w.multi_header=[]);try{O=new b(w.uri,w.display_name,w.params),delete w.uri,delete w.display_name,delete w.params}catch{O=null}w.multi_header.push({possition:r,offset:S,parsed:O})}(p)),e===null&&(r=p),e}function $t(){var e,l,u,f,p;return p=r,e=Us(),e=e!==null?e:"",e!==null?(l=Ce(),l!==null?(u=Ne(),u!==null?(f=Pe(),f!==null?e=[e,l,u,f]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e}function Us(){var e,l,u,f,p,m,v;if(p=r,m=r,e=x(),e!==null){for(l=[],v=r,u=k(),u!==null?(f=x(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);u!==null;)l.push(u),v=r,u=k(),u!==null?(f=x(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);l!==null?e=[e,l]:(e=null,r=m)}else e=null,r=m;return e===null&&(e=pe()),e!==null&&(e=function(S,O){typeof O=="string"?w.display_name=O:w.display_name=O[1].reduce(function(ie,Ue){return ie+Ue[0]+Ue[1]},O[0])}(p,e)),e===null&&(r=p),e}function Hn(){var e;return e=Jr(),e===null&&(e=es(),e===null&&(e=We())),e}function Jr(){var e,l,u,f,p;return f=r,p=r,a.substr(r,1).toLowerCase()==="q"?(e=a.substr(r,1),r++):(e=null,d('"q"')),e!==null?(l=re(),l!==null?(u=Ge(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){w.params||(w.params={}),w.params.q=v}(f,e[2])),e===null&&(r=f),e}function es(){var e,l,u,f,p;return f=r,p=r,a.substr(r,7).toLowerCase()==="expires"?(e=a.substr(r,7),r+=7):(e=null,d('"expires"')),e!==null?(l=re(),l!==null?(u=ts(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){w.params||(w.params={}),w.params.expires=v}(f,e[2])),e===null&&(r=f),e}function ts(){var e,l,u;if(u=r,l=T(),l!==null)for(e=[];l!==null;)e.push(l),l=T();else e=null;return e!==null&&(e=function(f,p){return parseInt(p.join(""))}(u,e)),e===null&&(r=u),e}function Ge(){var e,l,u,f,p,m,v,S;return m=r,v=r,a.charCodeAt(r)===48?(e="0",r++):(e=null,d('"0"')),e!==null?(S=r,a.charCodeAt(r)===46?(l=".",r++):(l=null,d('"."')),l!==null?(u=T(),u=u!==null?u:"",u!==null?(f=T(),f=f!==null?f:"",f!==null?(p=T(),p=p!==null?p:"",p!==null?l=[l,u,f,p]:(l=null,r=S)):(l=null,r=S)):(l=null,r=S)):(l=null,r=S),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,r=v)):(e=null,r=v),e!==null&&(e=function(O){return parseFloat(a.substring(r,O))}(m)),e===null&&(r=m),e}function We(){var e,l,u,f,p,m;return f=r,p=r,e=x(),e!==null?(m=r,l=re(),l!==null?(u=Tl(),u!==null?l=[l,u]:(l=null,r=m)):(l=null,r=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(v,S,O){w.params||(w.params={}),typeof O>"u"?O=void 0:O=O[1],w.params[S.toLowerCase()]=O}(f,e[0],e[1])),e===null&&(r=f),e}function Tl(){var e;return e=x(),e===null&&(e=us(),e===null&&(e=Oe())),e}function vl(){var e,l,u,f,p,m;if(p=r,e=Fn(),e!==null){for(l=[],m=r,u=ye(),u!==null?(f=jn(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,u=ye(),u!==null?(f=jn(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function Fn(){var e;return a.substr(r,6).toLowerCase()==="render"?(e=a.substr(r,6),r+=6):(e=null,d('"render"')),e===null&&(a.substr(r,7).toLowerCase()==="session"?(e=a.substr(r,7),r+=7):(e=null,d('"session"')),e===null&&(a.substr(r,4).toLowerCase()==="icon"?(e=a.substr(r,4),r+=4):(e=null,d('"icon"')),e===null&&(a.substr(r,5).toLowerCase()==="alert"?(e=a.substr(r,5),r+=5):(e=null,d('"alert"')),e===null&&(e=x())))),e}function jn(){var e;return e=El(),e===null&&(e=We()),e}function El(){var e,l,u,f;return f=r,a.substr(r,8).toLowerCase()==="handling"?(e=a.substr(r,8),r+=8):(e=null,d('"handling"')),e!==null?(l=re(),l!==null?(a.substr(r,8).toLowerCase()==="optional"?(u=a.substr(r,8),r+=8):(u=null,d('"optional"')),u===null&&(a.substr(r,8).toLowerCase()==="required"?(u=a.substr(r,8),r+=8):(u=null,d('"required"')),u===null&&(u=x())),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e}function za(){var e,l,u,f,p,m;if(p=r,e=x(),e!==null){for(l=[],m=r,u=le(),u!==null?(f=x(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,u=le(),u!==null?(f=x(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function Xa(){var e,l,u;if(u=r,l=T(),l!==null)for(e=[];l!==null;)e.push(l),l=T();else e=null;return e!==null&&(e=function(f,p){w=parseInt(p.join(""))}(u,e)),e===null&&(r=u),e}function Sl(){var e,l;return l=r,e=zr(),e!==null&&(e=function(u){w=a.substring(r,u)}(l)),e===null&&(r=l),e}function zr(){var e,l,u,f,p,m,v,S;if(v=r,e=Xr(),e!==null)if(l=G(),l!==null)if(u=Vn(),u!==null){for(f=[],S=r,p=ye(),p!==null?(m=qn(),m!==null?p=[p,m]:(p=null,r=S)):(p=null,r=S);p!==null;)f.push(p),S=r,p=ye(),p!==null?(m=qn(),m!==null?p=[p,m]:(p=null,r=S)):(p=null,r=S);f!==null?e=[e,l,u,f]:(e=null,r=v)}else e=null,r=v;else e=null,r=v;else e=null,r=v;return e}function Xr(){var e;return e=Qr(),e===null&&(e=ln()),e}function Qr(){var e;return a.substr(r,4).toLowerCase()==="text"?(e=a.substr(r,4),r+=4):(e=null,d('"text"')),e===null&&(a.substr(r,5).toLowerCase()==="image"?(e=a.substr(r,5),r+=5):(e=null,d('"image"')),e===null&&(a.substr(r,5).toLowerCase()==="audio"?(e=a.substr(r,5),r+=5):(e=null,d('"audio"')),e===null&&(a.substr(r,5).toLowerCase()==="video"?(e=a.substr(r,5),r+=5):(e=null,d('"video"')),e===null&&(a.substr(r,11).toLowerCase()==="application"?(e=a.substr(r,11),r+=11):(e=null,d('"application"')),e===null&&(e=an()))))),e}function ln(){var e;return a.substr(r,7).toLowerCase()==="message"?(e=a.substr(r,7),r+=7):(e=null,d('"message"')),e===null&&(a.substr(r,9).toLowerCase()==="multipart"?(e=a.substr(r,9),r+=9):(e=null,d('"multipart"')),e===null&&(e=an())),e}function an(){var e;return e=x(),e===null&&(e=Zr()),e}function Zr(){var e,l,u;return u=r,a.substr(r,2).toLowerCase()==="x-"?(e=a.substr(r,2),r+=2):(e=null,d('"x-"')),e!==null?(l=x(),l!==null?e=[e,l]:(e=null,r=u)):(e=null,r=u),e}function Vn(){var e;return e=an(),e===null&&(e=x()),e}function qn(){var e,l,u,f;return f=r,e=x(),e!==null?(l=re(),l!==null?(u=yl(),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e}function yl(){var e;return e=x(),e===null&&(e=Oe()),e}function Al(){var e,l,u,f;return f=r,e=Cl(),e!==null?(l=k(),l!==null?(u=rn(),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e}function Cl(){var e,l,u;if(u=r,l=T(),l!==null)for(e=[];l!==null;)e.push(l),l=T();else e=null;return e!==null&&(e=function(f,p){w.value=parseInt(p.join(""))}(u,e)),e===null&&(r=u),e}function Qa(){var e,l;return l=r,e=ts(),e!==null&&(e=function(u,f){w=f}(l,e)),e===null&&(r=l),e}function on(){var e,l,u,f,p,m,v;if(p=r,m=r,e=un(),e!==null){for(l=[],v=r,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);u!==null;)l.push(u),v=r,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);l!==null?e=[e,l]:(e=null,r=m)}else e=null,r=m;return e!==null&&(e=function(S,O){w.event=O.join("").toLowerCase()}(p,e[0])),e===null&&(r=p),e}function un(){var e,l,u,f,p,m;if(p=r,e=se(),e!==null){for(l=[],m=r,a.charCodeAt(r)===46?(u=".",r++):(u=null,d('"."')),u!==null?(f=se(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,a.charCodeAt(r)===46?(u=".",r++):(u=null,d('"."')),u!==null?(f=se(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function ei(){var e,l,u,f,p,m,v;if(p=r,m=r,e=we(),e===null&&(e=$t()),e!==null){for(l=[],v=r,u=ye(),u!==null?(f=cn(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);u!==null;)l.push(u),v=r,u=ye(),u!==null?(f=cn(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);l!==null?e=[e,l]:(e=null,r=m)}else e=null,r=m;return e!==null&&(e=function(S){var O=w.tag;try{w=new b(w.uri,w.display_name,w.params),O&&w.setParam("tag",O)}catch{w=-1}}()),e===null&&(r=p),e}function cn(){var e;return e=ti(),e===null&&(e=We()),e}function ti(){var e,l,u,f,p;return f=r,p=r,a.substr(r,3).toLowerCase()==="tag"?(e=a.substr(r,3),r+=3):(e=null,d('"tag"')),e!==null?(l=re(),l!==null?(u=x(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){w.tag=v}(f,e[2])),e===null&&(r=f),e}function Za(){var e,l,u;if(u=r,l=T(),l!==null)for(e=[];l!==null;)e.push(l),l=T();else e=null;return e!==null&&(e=function(f,p){w=parseInt(p.join(""))}(u,e)),e===null&&(r=u),e}function eo(){var e,l;return l=r,e=ts(),e!==null&&(e=function(u,f){w=f}(l,e)),e===null&&(r=l),e}function to(){var e,l,u,f,p,m,v,S,O,ie;for(S=r,O=r,e=[],l=Us();l!==null;)e.push(l),l=Us();if(e!==null)if(l=Ce(),l!==null)if(u=Ne(),u!==null)if(f=Pe(),f!==null){for(p=[],ie=r,m=ye(),m!==null?(v=We(),v!==null?m=[m,v]:(m=null,r=ie)):(m=null,r=ie);m!==null;)p.push(m),ie=r,m=ye(),m!==null?(v=We(),v!==null?m=[m,v]:(m=null,r=ie)):(m=null,r=ie);p!==null?e=[e,l,u,f,p]:(e=null,r=O)}else e=null,r=O;else e=null,r=O;else e=null,r=O;else e=null,r=O;return e!==null&&(e=function(Ue){try{w=new b(w.uri,w.display_name,w.params)}catch{w=-1}}()),e===null&&(r=S),e}function si(){var e;return e=Bn(),e}function Bn(){var e,l,u,f,p,m,v,S;if(v=r,a.substr(r,6).toLowerCase()==="digest"?(e=a.substr(r,6),r+=6):(e=null,d('"Digest"')),e!==null)if(l=k(),l!==null)if(u=fn(),u!==null){for(f=[],S=r,p=le(),p!==null?(m=fn(),m!==null?p=[p,m]:(p=null,r=S)):(p=null,r=S);p!==null;)f.push(p),S=r,p=le(),p!==null?(m=fn(),m!==null?p=[p,m]:(p=null,r=S)):(p=null,r=S);f!==null?e=[e,l,u,f]:(e=null,r=v)}else e=null,r=v;else e=null,r=v;else e=null,r=v;return e===null&&(e=xs()),e}function xs(){var e,l,u,f,p,m,v,S;if(v=r,e=x(),e!==null)if(l=k(),l!==null)if(u=ss(),u!==null){for(f=[],S=r,p=le(),p!==null?(m=ss(),m!==null?p=[p,m]:(p=null,r=S)):(p=null,r=S);p!==null;)f.push(p),S=r,p=le(),p!==null?(m=ss(),m!==null?p=[p,m]:(p=null,r=S)):(p=null,r=S);f!==null?e=[e,l,u,f]:(e=null,r=v)}else e=null,r=v;else e=null,r=v;else e=null,r=v;return e}function ss(){var e,l,u,f;return f=r,e=x(),e!==null?(l=re(),l!==null?(u=x(),u===null&&(u=Oe()),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e}function fn(){var e;return e=ni(),e===null&&(e=hn(),e===null&&(e=ii(),e===null&&(e=ai(),e===null&&(e=oi(),e===null&&(e=ui(),e===null&&(e=dn(),e===null&&(e=ss()))))))),e}function ni(){var e,l,u,f;return f=r,a.substr(r,5).toLowerCase()==="realm"?(e=a.substr(r,5),r+=5):(e=null,d('"realm"')),e!==null?(l=re(),l!==null?(u=ri(),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e}function ri(){var e,l;return l=r,e=pe(),e!==null&&(e=function(u,f){w.realm=f}(l,e)),e===null&&(r=l),e}function hn(){var e,l,u,f,p,m,v,S,O;if(S=r,a.substr(r,6).toLowerCase()==="domain"?(e=a.substr(r,6),r+=6):(e=null,d('"domain"')),e!==null)if(l=re(),l!==null)if(u=at(),u!==null)if(f=_n(),f!==null){if(p=[],O=r,v=H(),v!==null)for(m=[];v!==null;)m.push(v),v=H();else m=null;for(m!==null?(v=_n(),v!==null?m=[m,v]:(m=null,r=O)):(m=null,r=O);m!==null;){if(p.push(m),O=r,v=H(),v!==null)for(m=[];v!==null;)m.push(v),v=H();else m=null;m!==null?(v=_n(),v!==null?m=[m,v]:(m=null,r=O)):(m=null,r=O)}p!==null?(m=Ee(),m!==null?e=[e,l,u,f,p,m]:(e=null,r=S)):(e=null,r=S)}else e=null,r=S;else e=null,r=S;else e=null,r=S;else e=null,r=S;return e}function _n(){var e;return e=kn(),e===null&&(e=tn()),e}function ii(){var e,l,u,f;return f=r,a.substr(r,5).toLowerCase()==="nonce"?(e=a.substr(r,5),r+=5):(e=null,d('"nonce"')),e!==null?(l=re(),l!==null?(u=li(),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e}function li(){var e,l;return l=r,e=pe(),e!==null&&(e=function(u,f){w.nonce=f}(l,e)),e===null&&(r=l),e}function ai(){var e,l,u,f,p;return f=r,p=r,a.substr(r,6).toLowerCase()==="opaque"?(e=a.substr(r,6),r+=6):(e=null,d('"opaque"')),e!==null?(l=re(),l!==null?(u=pe(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){w.opaque=v}(f,e[2])),e===null&&(r=f),e}function oi(){var e,l,u,f,p;return f=r,a.substr(r,5).toLowerCase()==="stale"?(e=a.substr(r,5),r+=5):(e=null,d('"stale"')),e!==null?(l=re(),l!==null?(p=r,a.substr(r,4).toLowerCase()==="true"?(u=a.substr(r,4),r+=4):(u=null,d('"true"')),u!==null&&(u=function(m){w.stale=!0}()),u===null&&(r=p),u===null&&(p=r,a.substr(r,5).toLowerCase()==="false"?(u=a.substr(r,5),r+=5):(u=null,d('"false"')),u!==null&&(u=function(m){w.stale=!1}()),u===null&&(r=p)),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e}function ui(){var e,l,u,f,p;return f=r,p=r,a.substr(r,9).toLowerCase()==="algorithm"?(e=a.substr(r,9),r+=9):(e=null,d('"algorithm"')),e!==null?(l=re(),l!==null?(a.substr(r,3).toLowerCase()==="md5"?(u=a.substr(r,3),r+=3):(u=null,d('"MD5"')),u===null&&(a.substr(r,8).toLowerCase()==="md5-sess"?(u=a.substr(r,8),r+=8):(u=null,d('"MD5-sess"')),u===null&&(u=x())),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){w.algorithm=v.toUpperCase()}(f,e[2])),e===null&&(r=f),e}function dn(){var e,l,u,f,p,m,v,S,O,ie;if(S=r,a.substr(r,3).toLowerCase()==="qop"?(e=a.substr(r,3),r+=3):(e=null,d('"qop"')),e!==null)if(l=re(),l!==null)if(u=at(),u!==null){if(O=r,f=Gn(),f!==null){for(p=[],ie=r,a.charCodeAt(r)===44?(m=",",r++):(m=null,d('","')),m!==null?(v=Gn(),v!==null?m=[m,v]:(m=null,r=ie)):(m=null,r=ie);m!==null;)p.push(m),ie=r,a.charCodeAt(r)===44?(m=",",r++):(m=null,d('","')),m!==null?(v=Gn(),v!==null?m=[m,v]:(m=null,r=ie)):(m=null,r=ie);p!==null?f=[f,p]:(f=null,r=O)}else f=null,r=O;f!==null?(p=Ee(),p!==null?e=[e,l,u,f,p]:(e=null,r=S)):(e=null,r=S)}else e=null,r=S;else e=null,r=S;else e=null,r=S;return e}function Gn(){var e,l;return l=r,a.substr(r,8).toLowerCase()==="auth-int"?(e=a.substr(r,8),r+=8):(e=null,d('"auth-int"')),e===null&&(a.substr(r,4).toLowerCase()==="auth"?(e=a.substr(r,4),r+=4):(e=null,d('"auth"')),e===null&&(e=x())),e!==null&&(e=function(u,f){w.qop||(w.qop=[]),w.qop.push(f.toLowerCase())}(l,e)),e===null&&(r=l),e}function so(){var e,l,u,f,p,m;if(p=r,e=x(),e!==null){for(l=[],m=r,u=le(),u!==null?(f=x(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,u=le(),u!==null?(f=x(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function Wn(){var e,l,u,f,p,m,v;if(p=r,m=r,e=Kn(),e!==null){for(l=[],v=r,u=le(),u!==null?(f=Kn(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);u!==null;)l.push(u),v=r,u=le(),u!==null?(f=Kn(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);l!==null?e=[e,l]:(e=null,r=m)}else e=null,r=m;return e!==null&&(e=function(S){var O,ie;for(ie=w.multi_header.length,O=0;O<ie;O++)if(w.multi_header[O].parsed===null){w=null;break}w!==null?w=w.multi_header:w=-1}()),e===null&&(r=p),e}function Kn(){var e,l,u,f,p,m,v;if(p=r,m=r,e=$t(),e!==null){for(l=[],v=r,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);u!==null;)l.push(u),v=r,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);l!==null?e=[e,l]:(e=null,r=m)}else e=null,r=m;return e!==null&&(e=function(S){var O;w.multi_header||(w.multi_header=[]);try{O=new b(w.uri,w.display_name,w.params),delete w.uri,delete w.display_name,delete w.params}catch{O=null}w.multi_header.push({possition:r,offset:S,parsed:O})}(p)),e===null&&(r=p),e}function ci(){var e,l,u,f,p,m,v;if(p=r,m=r,a.substr(r,3).toLowerCase()==="sip"?(e=a.substr(r,3),r+=3):(e=null,d('"SIP"')),e===null&&(e=x()),e!==null){for(l=[],v=r,u=ye(),u!==null?(f=Yn(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);u!==null;)l.push(u),v=r,u=ye(),u!==null?(f=Yn(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);l!==null?e=[e,l]:(e=null,r=m)}else e=null,r=m;return e!==null&&(e=function(S,O){if(w.protocol=O.toLowerCase(),w.params||(w.params={}),w.params.text&&w.params.text[0]==='"'){var ie=w.params.text;w.text=ie.substring(1,ie.length-1),delete w.params.text}}(p,e[0])),e===null&&(r=p),e}function Yn(){var e;return e=Rl(),e===null&&(e=We()),e}function Rl(){var e,l,u,f,p,m;if(p=r,m=r,a.substr(r,5).toLowerCase()==="cause"?(e=a.substr(r,5),r+=5):(e=null,d('"cause"')),e!==null)if(l=re(),l!==null){if(f=T(),f!==null)for(u=[];f!==null;)u.push(f),f=T();else u=null;u!==null?e=[e,l,u]:(e=null,r=m)}else e=null,r=m;else e=null,r=m;return e!==null&&(e=function(v,S){w.cause=parseInt(S.join(""))}(p,e[2])),e===null&&(r=p),e}function no(){var e,l,u,f,p,m;if(p=r,e=x(),e!==null){for(l=[],m=r,u=le(),u!==null?(f=x(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,u=le(),u!==null?(f=x(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function Jn(){var e,l,u,f,p,m;if(p=r,e=zn(),e!==null){for(l=[],m=r,u=le(),u!==null?(f=zn(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,u=le(),u!==null?(f=zn(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function zn(){var e,l,u,f,p,m;if(p=r,e=$t(),e!==null){for(l=[],m=r,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function Il(){var e,l,u,f,p,m;if(p=r,e=Xn(),e!==null){for(l=[],m=r,u=ye(),u!==null?(f=Qn(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,u=ye(),u!==null?(f=Qn(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function Xn(){var e,l;return l=r,a.substr(r,6).toLowerCase()==="active"?(e=a.substr(r,6),r+=6):(e=null,d('"active"')),e===null&&(a.substr(r,7).toLowerCase()==="pending"?(e=a.substr(r,7),r+=7):(e=null,d('"pending"')),e===null&&(a.substr(r,10).toLowerCase()==="terminated"?(e=a.substr(r,10),r+=10):(e=null,d('"terminated"')),e===null&&(e=x()))),e!==null&&(e=function(u){w.state=a.substring(r,u)}(l)),e===null&&(r=l),e}function Qn(){var e,l,u,f,p;return f=r,p=r,a.substr(r,6).toLowerCase()==="reason"?(e=a.substr(r,6),r+=6):(e=null,d('"reason"')),e!==null?(l=re(),l!==null?(u=bl(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){typeof v<"u"&&(w.reason=v)}(f,e[2])),e===null&&(r=f),e===null&&(f=r,p=r,a.substr(r,7).toLowerCase()==="expires"?(e=a.substr(r,7),r+=7):(e=null,d('"expires"')),e!==null?(l=re(),l!==null?(u=ts(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){typeof v<"u"&&(w.expires=v)}(f,e[2])),e===null&&(r=f),e===null&&(f=r,p=r,a.substr(r,11).toLowerCase()==="retry_after"?(e=a.substr(r,11),r+=11):(e=null,d('"retry_after"')),e!==null?(l=re(),l!==null?(u=ts(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){typeof v<"u"&&(w.retry_after=v)}(f,e[2])),e===null&&(r=f),e===null&&(e=We()))),e}function bl(){var e;return a.substr(r,11).toLowerCase()==="deactivated"?(e=a.substr(r,11),r+=11):(e=null,d('"deactivated"')),e===null&&(a.substr(r,9).toLowerCase()==="probation"?(e=a.substr(r,9),r+=9):(e=null,d('"probation"')),e===null&&(a.substr(r,8).toLowerCase()==="rejected"?(e=a.substr(r,8),r+=8):(e=null,d('"rejected"')),e===null&&(a.substr(r,7).toLowerCase()==="timeout"?(e=a.substr(r,7),r+=7):(e=null,d('"timeout"')),e===null&&(a.substr(r,6).toLowerCase()==="giveup"?(e=a.substr(r,6),r+=6):(e=null,d('"giveup"')),e===null&&(a.substr(r,10).toLowerCase()==="noresource"?(e=a.substr(r,10),r+=10):(e=null,d('"noresource"')),e===null&&(a.substr(r,9).toLowerCase()==="invariant"?(e=a.substr(r,9),r+=9):(e=null,d('"invariant"')),e===null&&(e=x()))))))),e}function ro(){var e;return e=q(),e=e!==null?e:"",e}function io(){var e,l,u,f,p,m;if(p=r,e=x(),e!==null){for(l=[],m=r,u=le(),u!==null?(f=x(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,u=le(),u!==null?(f=x(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e=e!==null?e:"",e}function fi(){var e,l,u,f,p,m,v;if(p=r,m=r,e=we(),e===null&&(e=$t()),e!==null){for(l=[],v=r,u=ye(),u!==null?(f=hi(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);u!==null;)l.push(u),v=r,u=ye(),u!==null?(f=hi(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);l!==null?e=[e,l]:(e=null,r=m)}else e=null,r=m;return e!==null&&(e=function(S){var O=w.tag;try{w=new b(w.uri,w.display_name,w.params),O&&w.setParam("tag",O)}catch{w=-1}}()),e===null&&(r=p),e}function hi(){var e;return e=ti(),e===null&&(e=We()),e}function Zn(){var e,l,u,f,p,m;if(p=r,e=Ps(),e!==null){for(l=[],m=r,u=le(),u!==null?(f=Ps(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,u=le(),u!==null?(f=Ps(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function Ps(){var e,l,u,f,p,m,v,S;if(v=r,e=vi(),e!==null)if(l=k(),l!==null)if(u=yi(),u!==null){for(f=[],S=r,p=ye(),p!==null?(m=er(),m!==null?p=[p,m]:(p=null,r=S)):(p=null,r=S);p!==null;)f.push(p),S=r,p=ye(),p!==null?(m=er(),m!==null?p=[p,m]:(p=null,r=S)):(p=null,r=S);f!==null?e=[e,l,u,f]:(e=null,r=v)}else e=null,r=v;else e=null,r=v;else e=null,r=v;return e}function er(){var e;return e=_i(),e===null&&(e=di(),e===null&&(e=pi(),e===null&&(e=mi(),e===null&&(e=gi(),e===null&&(e=We()))))),e}function _i(){var e,l,u,f,p;return f=r,p=r,a.substr(r,3).toLowerCase()==="ttl"?(e=a.substr(r,3),r+=3):(e=null,d('"ttl"')),e!==null?(l=re(),l!==null?(u=Ci(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){w.ttl=v}(f,e[2])),e===null&&(r=f),e}function di(){var e,l,u,f,p;return f=r,p=r,a.substr(r,5).toLowerCase()==="maddr"?(e=a.substr(r,5),r+=5):(e=null,d('"maddr"')),e!==null?(l=re(),l!==null?(u=us(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){w.maddr=v}(f,e[2])),e===null&&(r=f),e}function pi(){var e,l,u,f,p;return f=r,p=r,a.substr(r,8).toLowerCase()==="received"?(e=a.substr(r,8),r+=8):(e=null,d('"received"')),e!==null?(l=re(),l!==null?(u=Gt(),u===null&&(u=me()),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){w.received=v}(f,e[2])),e===null&&(r=f),e}function mi(){var e,l,u,f,p;return f=r,p=r,a.substr(r,6).toLowerCase()==="branch"?(e=a.substr(r,6),r+=6):(e=null,d('"branch"')),e!==null?(l=re(),l!==null?(u=x(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){w.branch=v}(f,e[2])),e===null&&(r=f),e}function gi(){var e,l,u,f,p;return f=r,a.substr(r,5).toLowerCase()==="rport"?(e=a.substr(r,5),r+=5):(e=null,d('"rport"')),e!==null?(p=r,l=re(),l!==null?(u=Ti(),u!==null?l=[l,u]:(l=null,r=p)):(l=null,r=p),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e}function Ti(){var e,l,u,f,p,m,v;return m=r,v=r,e=T(),e=e!==null?e:"",e!==null?(l=T(),l=l!==null?l:"",l!==null?(u=T(),u=u!==null?u:"",u!==null?(f=T(),f=f!==null?f:"",f!==null?(p=T(),p=p!==null?p:"",p!==null?e=[e,l,u,f,p]:(e=null,r=v)):(e=null,r=v)):(e=null,r=v)):(e=null,r=v)):(e=null,r=v),e!==null&&(e=function(S,O){w.rport=parseInt(O.join(""))}(m,e)),e===null&&(r=m),e}function vi(){var e,l,u,f,p,m;return m=r,e=Ei(),e!==null?(l=G(),l!==null?(u=x(),u!==null?(f=G(),f!==null?(p=Si(),p!==null?e=[e,l,u,f,p]:(e=null,r=m)):(e=null,r=m)):(e=null,r=m)):(e=null,r=m)):(e=null,r=m),e}function Ei(){var e,l;return l=r,a.substr(r,3).toLowerCase()==="sip"?(e=a.substr(r,3),r+=3):(e=null,d('"SIP"')),e===null&&(e=x()),e!==null&&(e=function(u,f){w.protocol=f}(l,e)),e===null&&(r=l),e}function Si(){var e,l;return l=r,a.substr(r,3).toLowerCase()==="udp"?(e=a.substr(r,3),r+=3):(e=null,d('"UDP"')),e===null&&(a.substr(r,3).toLowerCase()==="tcp"?(e=a.substr(r,3),r+=3):(e=null,d('"TCP"')),e===null&&(a.substr(r,3).toLowerCase()==="tls"?(e=a.substr(r,3),r+=3):(e=null,d('"TLS"')),e===null&&(a.substr(r,4).toLowerCase()==="sctp"?(e=a.substr(r,4),r+=4):(e=null,d('"SCTP"')),e===null&&(e=x())))),e!==null&&(e=function(u,f){w.transport=f}(l,e)),e===null&&(r=l),e}function yi(){var e,l,u,f,p;return f=r,e=Ai(),e!==null?(p=r,l=st(),l!==null?(u=tr(),u!==null?l=[l,u]:(l=null,r=p)):(l=null,r=p),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,r=f)):(e=null,r=f),e}function Ai(){var e,l;return l=r,e=Gt(),e===null&&(e=zs(),e===null&&(e=Js())),e!==null&&(e=function(u){w.host=a.substring(r,u)}(l)),e===null&&(r=l),e}function tr(){var e,l,u,f,p,m,v;return m=r,v=r,e=T(),e=e!==null?e:"",e!==null?(l=T(),l=l!==null?l:"",l!==null?(u=T(),u=u!==null?u:"",u!==null?(f=T(),f=f!==null?f:"",f!==null?(p=T(),p=p!==null?p:"",p!==null?e=[e,l,u,f,p]:(e=null,r=v)):(e=null,r=v)):(e=null,r=v)):(e=null,r=v)):(e=null,r=v),e!==null&&(e=function(S,O){w.port=parseInt(O.join(""))}(m,e)),e===null&&(r=m),e}function Ci(){var e,l,u,f,p;return f=r,p=r,e=T(),e!==null?(l=T(),l=l!==null?l:"",l!==null?(u=T(),u=u!==null?u:"",u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){return parseInt(v.join(""))}(f,e)),e===null&&(r=f),e}function lo(){var e;return e=Bn(),e}function wl(){var e,l,u,f,p,m;if(p=r,e=sr(),e!==null){for(l=[],m=r,u=ye(),u!==null?(f=nr(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,u=ye(),u!==null?(f=nr(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function sr(){var e,l;return l=r,e=ts(),e!==null&&(e=function(u,f){w.expires=f}(l,e)),e===null&&(r=l),e}function nr(){var e;return e=Ol(),e===null&&(e=We()),e}function Ol(){var e,l,u,f,p;return f=r,p=r,a.substr(r,9).toLowerCase()==="refresher"?(e=a.substr(r,9),r+=9):(e=null,d('"refresher"')),e!==null?(l=re(),l!==null?(a.substr(r,3).toLowerCase()==="uac"?(u=a.substr(r,3),r+=3):(u=null,d('"uac"')),u===null&&(a.substr(r,3).toLowerCase()==="uas"?(u=a.substr(r,3),r+=3):(u=null,d('"uas"'))),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){w.refresher=v.toLowerCase()}(f,e[2])),e===null&&(r=f),e}function Dl(){var e,l,u,f;return f=r,e=x(),e!==null?(l=B(),l!==null?(u=Nl(),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e}function Nl(){var e,l;for(e=[],l=J(),l===null&&(l=X(),l===null&&(l=k()));l!==null;)e.push(l),l=J(),l===null&&(l=X(),l===null&&(l=k()));return e}function ao(){var e,l;for(e=[],l=C();l!==null;)e.push(l),l=C();return e}function Ul(){var e,l,u;return u=r,a.substr(r,5)==="uuid:"?(e="uuid:",r+=5):(e=null,d('"uuid:"')),e!==null?(l=Ht(),l!==null?e=[e,l]:(e=null,r=u)):(e=null,r=u),e}function Ht(){var e,l,u,f,p,m,v,S,O,ie,Ue;return ie=r,Ue=r,e=Ri(),e!==null?(a.charCodeAt(r)===45?(l="-",r++):(l=null,d('"-"')),l!==null?(u=Ft(),u!==null?(a.charCodeAt(r)===45?(f="-",r++):(f=null,d('"-"')),f!==null?(p=Ft(),p!==null?(a.charCodeAt(r)===45?(m="-",r++):(m=null,d('"-"')),m!==null?(v=Ft(),v!==null?(a.charCodeAt(r)===45?(S="-",r++):(S=null,d('"-"')),S!==null?(O=xl(),O!==null?e=[e,l,u,f,p,m,v,S,O]:(e=null,r=Ue)):(e=null,r=Ue)):(e=null,r=Ue)):(e=null,r=Ue)):(e=null,r=Ue)):(e=null,r=Ue)):(e=null,r=Ue)):(e=null,r=Ue)):(e=null,r=Ue),e!==null&&(e=function(wt,ks){w=a.substring(r+5,wt)}(ie,e[0])),e===null&&(r=ie),e}function Ft(){var e,l,u,f,p;return p=r,e=y(),e!==null?(l=y(),l!==null?(u=y(),u!==null?(f=y(),f!==null?e=[e,l,u,f]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e}function Ri(){var e,l,u;return u=r,e=Ft(),e!==null?(l=Ft(),l!==null?e=[e,l]:(e=null,r=u)):(e=null,r=u),e}function xl(){var e,l,u,f;return f=r,e=Ft(),e!==null?(l=Ft(),l!==null?(u=Ft(),u!==null?e=[e,l,u]:(e=null,r=f)):(e=null,r=f)):(e=null,r=f),e}function oo(){var e,l,u,f,p,m,v;if(p=r,m=r,e=we(),e===null&&(e=$t()),e!==null){for(l=[],v=r,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);u!==null;)l.push(u),v=r,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,r=v)):(u=null,r=v);l!==null?e=[e,l]:(e=null,r=m)}else e=null,r=m;return e!==null&&(e=function(S){try{w=new b(w.uri,w.display_name,w.params)}catch{w=-1}}()),e===null&&(r=p),e}function Pl(){var e,l,u,f,p,m;if(p=r,e=rr(),e!==null){for(l=[],m=r,u=ye(),u!==null?(f=ir(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);u!==null;)l.push(u),m=r,u=ye(),u!==null?(f=ir(),f!==null?u=[u,f]:(u=null,r=m)):(u=null,r=m);l!==null?e=[e,l]:(e=null,r=p)}else e=null,r=p;return e}function rr(){var e,l,u,f,p,m;return f=r,p=r,e=ee(),e!==null?(m=r,a.charCodeAt(r)===64?(l="@",r++):(l=null,d('"@"')),l!==null?(u=ee(),u!==null?l=[l,u]:(l=null,r=m)):(l=null,r=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(v){w.call_id=a.substring(r,v)}(f)),e===null&&(r=f),e}function ir(){var e;return e=Ii(),e===null&&(e=bi(),e===null&&(e=kl(),e===null&&(e=We()))),e}function Ii(){var e,l,u,f,p;return f=r,p=r,a.substr(r,6)==="to-tag"?(e="to-tag",r+=6):(e=null,d('"to-tag"')),e!==null?(l=re(),l!==null?(u=x(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){w.to_tag=v}(f,e[2])),e===null&&(r=f),e}function bi(){var e,l,u,f,p;return f=r,p=r,a.substr(r,8)==="from-tag"?(e="from-tag",r+=8):(e=null,d('"from-tag"')),e!==null?(l=re(),l!==null?(u=x(),u!==null?e=[e,l,u]:(e=null,r=p)):(e=null,r=p)):(e=null,r=p),e!==null&&(e=function(m,v){w.from_tag=v}(f,e[2])),e===null&&(r=f),e}function kl(){var e,l;return l=r,a.substr(r,10)==="early-only"?(e="early-only",r+=10):(e=null,d('"early-only"')),e!==null&&(e=function(u){w.early_only=!0}()),e===null&&(r=l),e}function uo(e){e.sort();for(var l=null,u=[],f=0;f<e.length;f++)e[f]!==l&&(u.push(e[f]),l=e[f]);return u}function Ml(){for(var e=1,l=1,u=!1,f=0;f<Math.max(r,_);f++){var p=a.charAt(f);p===`
4
+ `?(u||e++,l=1,u=!1):p==="\r"||p==="\u2028"||p==="\u2029"?(e++,l=1,u=!0):(l++,u=!1)}return{line:e,column:l}}var fs=Ks(),b=Ou(),w={},wi=t[o]();if(wi===null||r!==a.length){var Oi=Math.max(r,_),Ll=Oi<a.length?a.charAt(Oi):null,i=Ml();return new this.SyntaxError(uo(h),Ll,Oi,i.line,i.column),-1}return w},toSource:function(){return this._source}};return s.SyntaxError=function(n,a,o,t,r){function _(h,d){var g,T;switch(h.length){case 0:g="end of input";break;case 1:g=h[0];break;default:g=h.slice(0,h.length-1).join(", ")+" or "+h[h.length-1]}return T=d?c(d):"end of input","Expected "+g+" but "+T+" found."}this.name="SyntaxError",this.expected=n,this.found=a,this.message=_(n,a),this.offset=o,this.line=t,this.column=r},s.SyntaxError.prototype=Error.prototype,s}()),fo}var ho,Yu;function Ks(){if(Yu)return ho;Yu=1;function c(d,g){var T;if(typeof Symbol>"u"||d[Symbol.iterator]==null){if(Array.isArray(d)||(T=s(d))||g&&d&&typeof d.length=="number"){T&&(d=T);var E=0,y=function(){};return{s:y,n:function(){return E>=d.length?{done:!0}:{done:!1,value:d[E++]}},e:function($){throw $},f:y}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
5
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var A=!0,C=!1,I;return{s:function(){T=d[Symbol.iterator]()},n:function(){var $=T.next();return A=$.done,$},e:function($){C=!0,I=$},f:function(){try{!A&&T.return!=null&&T.return()}finally{if(C)throw I}}}}function s(d,g){if(d){if(typeof d=="string")return n(d,g);var T=Object.prototype.toString.call(d).slice(8,-1);if(T==="Object"&&d.constructor&&(T=d.constructor.name),T==="Map"||T==="Set")return Array.from(d);if(T==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(T))return n(d,g)}}function n(d,g){(g==null||g>d.length)&&(g=d.length);for(var T=0,E=new Array(g);T<g;T++)E[T]=d[T];return E}function a(d,g){if(!(d instanceof g))throw new TypeError("Cannot call a class as a function")}function o(d,g){for(var T=0;T<g.length;T++){var E=g[T];E.enumerable=E.enumerable||!1,E.configurable=!0,"value"in E&&(E.writable=!0),Object.defineProperty(d,E.key,E)}}function t(d,g,T){return g&&o(d.prototype,g),T&&o(d,T),d}var r=lt,_=bt(),h=os();return ho=function(){t(d,null,[{key:"parse",value:function(T){if(T=h.parse(T,"SIP_URI"),T!==-1)return T}}]);function d(g,T,E,y){var A=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{},C=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};if(a(this,d),!E)throw new TypeError('missing or invalid "host" parameter');this._parameters={},this._headers={},this._scheme=g||r.SIP,this._user=T,this._host=E,this._port=y;for(var I in A)Object.prototype.hasOwnProperty.call(A,I)&&this.setParam(I,A[I]);for(var H in C)Object.prototype.hasOwnProperty.call(C,H)&&this.setHeader(H,C[H])}return t(d,[{key:"setParam",value:function(T,E){T&&(this._parameters[T.toLowerCase()]=typeof E>"u"||E===null?null:E.toString())}},{key:"getParam",value:function(T){if(T)return this._parameters[T.toLowerCase()]}},{key:"hasParam",value:function(T){if(T)return this._parameters.hasOwnProperty(T.toLowerCase())&&!0||!1}},{key:"deleteParam",value:function(T){if(T=T.toLowerCase(),this._parameters.hasOwnProperty(T)){var E=this._parameters[T];return delete this._parameters[T],E}}},{key:"clearParams",value:function(){this._parameters={}}},{key:"setHeader",value:function(T,E){this._headers[_.headerize(T)]=Array.isArray(E)?E:[E]}},{key:"getHeader",value:function(T){if(T)return this._headers[_.headerize(T)]}},{key:"hasHeader",value:function(T){if(T)return this._headers.hasOwnProperty(_.headerize(T))&&!0||!1}},{key:"deleteHeader",value:function(T){if(T=_.headerize(T),this._headers.hasOwnProperty(T)){var E=this._headers[T];return delete this._headers[T],E}}},{key:"clearHeaders",value:function(){this._headers={}}},{key:"clone",value:function(){return new d(this._scheme,this._user,this._host,this._port,JSON.parse(JSON.stringify(this._parameters)),JSON.parse(JSON.stringify(this._headers)))}},{key:"toString",value:function(){var T=[],E="".concat(this._scheme,":");this._user&&(E+="".concat(_.escapeUser(this._user),"@")),E+=this._host,(this._port||this._port===0)&&(E+=":".concat(this._port));for(var y in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,y)&&(E+=";".concat(y),this._parameters[y]!==null&&(E+="=".concat(this._parameters[y])));for(var A in this._headers)if(Object.prototype.hasOwnProperty.call(this._headers,A)){var C=c(this._headers[A]),I;try{for(C.s();!(I=C.n()).done;){var H=I.value;T.push("".concat(A,"=").concat(H))}}catch($){C.e($)}finally{C.f()}}return T.length>0&&(E+="?".concat(T.join("&"))),E}},{key:"toAor",value:function(T){var E="".concat(this._scheme,":");return this._user&&(E+="".concat(_.escapeUser(this._user),"@")),E+=this._host,T&&(this._port||this._port===0)&&(E+=":".concat(this._port)),E}},{key:"scheme",get:function(){return this._scheme},set:function(T){this._scheme=T.toLowerCase()}},{key:"user",get:function(){return this._user},set:function(T){this._user=T}},{key:"host",get:function(){return this._host},set:function(T){this._host=T.toLowerCase()}},{key:"port",get:function(){return this._port},set:function(T){this._port=T===0?T:parseInt(T,10)||null}}]),d}(),ho}var Ju;function bt(){if(Ju)return Ze;Ju=1;function c(g){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?c=function(E){return typeof E}:c=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},c(g)}function s(g,T){var E;if(typeof Symbol>"u"||g[Symbol.iterator]==null){if(Array.isArray(g)||(E=n(g))||T&&g&&typeof g.length=="number"){E&&(g=E);var y=0,A=function(){};return{s:A,n:function(){return y>=g.length?{done:!0}:{done:!1,value:g[y++]}},e:function(oe){throw oe},f:A}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
6
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var C=!0,I=!1,H;return{s:function(){E=g[Symbol.iterator]()},n:function(){var oe=E.next();return C=oe.done,oe},e:function(oe){I=!0,H=oe},f:function(){try{!C&&E.return!=null&&E.return()}finally{if(I)throw H}}}}function n(g,T){if(g){if(typeof g=="string")return a(g,T);var E=Object.prototype.toString.call(g).slice(8,-1);if(E==="Object"&&g.constructor&&(E=g.constructor.name),E==="Map"||E==="Set")return Array.from(g);if(E==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(E))return a(g,T)}}function a(g,T){(T==null||T>g.length)&&(T=g.length);for(var E=0,y=new Array(T);E<T;E++)y[E]=g[E];return y}var o=lt,t=Ks(),r=os();Ze.str_utf8_length=function(g){return unescape(encodeURIComponent(g)).length};var _=Ze.isFunction=function(g){return g!==void 0?Object.prototype.toString.call(g)==="[object Function]":!1};Ze.isString=function(g){return g!==void 0?Object.prototype.toString.call(g)==="[object String]":!1},Ze.isDecimal=function(g){return!isNaN(g)&&parseFloat(g)===parseInt(g,10)},Ze.isEmpty=function(g){return g===null||g===""||g===void 0||Array.isArray(g)&&g.length===0||typeof g=="number"&&isNaN(g)},Ze.hasMethods=function(g){for(var T=arguments.length,E=new Array(T>1?T-1:0),y=1;y<T;y++)E[y-1]=arguments[y];for(var A=0,C=E;A<C.length;A++){var I=C[A];if(_(g[I]))return!1}return!0};var h=Ze.createRandomToken=function(g){var T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:32,E,y,A="";for(E=0;E<g;E++)y=Math.random()*T|0,A+=y.toString(T);return A};Ze.newTag=function(){return h(10)},Ze.newUUID=function(){var g="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(T){var E=Math.random()*16|0,y=T==="x"?E:E&3|8;return y.toString(16)});return g},Ze.hostType=function(g){if(g){if(g=r.parse(g,"host"),g!==-1)return g.host_type}else return};var d=Ze.escapeUser=function(g){return encodeURIComponent(decodeURIComponent(g)).replace(/%3A/ig,":").replace(/%2B/ig,"+").replace(/%3F/ig,"?").replace(/%2F/ig,"/")};return Ze.normalizeTarget=function(g,T){if(g){if(g instanceof t)return g;if(typeof g=="string"){var E=g.split("@"),y,A;switch(E.length){case 1:if(!T)return;y=g,A=T;break;case 2:y=E[0],A=E[1];break;default:y=E.slice(0,E.length-1).join("@"),A=E[E.length-1]}y=y.replace(/^(sips?|tel):/i,""),/^[-.()]*\+?[0-9\-.()]+$/.test(y)&&(y=y.replace(/[-.()]/g,"")),g="".concat(o.SIP,":").concat(d(y),"@").concat(A);var C;return(C=t.parse(g))?C:void 0}else return}else return},Ze.headerize=function(g){var T={"Call-Id":"Call-ID",Cseq:"CSeq","Www-Authenticate":"WWW-Authenticate"},E=g.toLowerCase().replace(/_/g,"-").split("-"),y="",A=E.length,C;for(C=0;C<A;C++)C!==0&&(y+="-"),y+=E[C].charAt(0).toUpperCase()+E[C].substring(1);return T[y]&&(y=T[y]),y},Ze.sipErrorCause=function(g){for(var T in o.SIP_ERROR_CAUSES)if(o.SIP_ERROR_CAUSES[T].indexOf(g)!==-1)return o.causes[T];return o.causes.SIP_FAILURE_CODE},Ze.getRandomTestNetIP=function(){function g(T,E){return Math.floor(Math.random()*(E-T+1)+T)}return"192.0.2.".concat(g(1,254))},Ze.calculateMD5=function(g){function T(pe,ue){return pe<<ue|pe>>>32-ue}function E(pe,ue){var de=pe&2147483648,we=ue&2147483648,Ne=pe&1073741824,Qe=ue&1073741824,Le=(pe&1073741823)+(ue&1073741823);return Ne&Qe?Le^2147483648^de^we:Ne|Qe?Le&1073741824?Le^3221225472^de^we:Le^1073741824^de^we:Le^de^we}function y(pe,ue,de){return pe&ue|~pe&de}function A(pe,ue,de){return pe&de|ue&~de}function C(pe,ue,de){return pe^ue^de}function I(pe,ue,de){return ue^(pe|~de)}function H(pe,ue,de,we,Ne,Qe,Le){return pe=E(pe,E(E(y(ue,de,we),Ne),Le)),E(T(pe,Qe),ue)}function $(pe,ue,de,we,Ne,Qe,Le){return pe=E(pe,E(E(A(ue,de,we),Ne),Le)),E(T(pe,Qe),ue)}function oe(pe,ue,de,we,Ne,Qe,Le){return pe=E(pe,E(E(C(ue,de,we),Ne),Le)),E(T(pe,Qe),ue)}function N(pe,ue,de,we,Ne,Qe,Le){return pe=E(pe,E(E(I(ue,de,we),Ne),Le)),E(T(pe,Qe),ue)}function j(pe){for(var ue,de=pe.length,we=de+8,Ne=(we-we%64)/64,Qe=(Ne+1)*16,Le=new Array(Qe-1),Mt=0,_t=0;_t<de;)ue=(_t-_t%4)/4,Mt=_t%4*8,Le[ue]=Le[ue]|pe.charCodeAt(_t)<<Mt,_t++;return ue=(_t-_t%4)/4,Mt=_t%4*8,Le[ue]=Le[ue]|128<<Mt,Le[Qe-2]=de<<3,Le[Qe-1]=de>>>29,Le}function Se(pe){var ue="",de="",we,Ne;for(Ne=0;Ne<=3;Ne++)we=pe>>>Ne*8&255,de="0".concat(we.toString(16)),ue=ue+de.substr(de.length-2,2);return ue}function ve(pe){for(var ue="",de=0;de<pe.length;de++){var we=pe.charCodeAt(de);we<128?ue+=String.fromCharCode(we):we>127&&we<2048?(ue+=String.fromCharCode(we>>6|192),ue+=String.fromCharCode(we&63|128)):(ue+=String.fromCharCode(we>>12|224),ue+=String.fromCharCode(we>>6&63|128),ue+=String.fromCharCode(we&63|128))}return ue}var k=[],D,B,q,J,F,X,U,x,se,tt=7,ee=12,W=17,G=22,re=5,ge=9,be=14,Pe=20,Ce=4,le=11,ye=16,st=23,at=6,Ee=10,Ae=15,Ie=21;for(g=ve(g),k=j(g),X=1732584193,U=4023233417,x=2562383102,se=271733878,D=0;D<k.length;D+=16)B=X,q=U,J=x,F=se,X=H(X,U,x,se,k[D+0],tt,3614090360),se=H(se,X,U,x,k[D+1],ee,3905402710),x=H(x,se,X,U,k[D+2],W,606105819),U=H(U,x,se,X,k[D+3],G,3250441966),X=H(X,U,x,se,k[D+4],tt,4118548399),se=H(se,X,U,x,k[D+5],ee,1200080426),x=H(x,se,X,U,k[D+6],W,2821735955),U=H(U,x,se,X,k[D+7],G,4249261313),X=H(X,U,x,se,k[D+8],tt,1770035416),se=H(se,X,U,x,k[D+9],ee,2336552879),x=H(x,se,X,U,k[D+10],W,4294925233),U=H(U,x,se,X,k[D+11],G,2304563134),X=H(X,U,x,se,k[D+12],tt,1804603682),se=H(se,X,U,x,k[D+13],ee,4254626195),x=H(x,se,X,U,k[D+14],W,2792965006),U=H(U,x,se,X,k[D+15],G,1236535329),X=$(X,U,x,se,k[D+1],re,4129170786),se=$(se,X,U,x,k[D+6],ge,3225465664),x=$(x,se,X,U,k[D+11],be,643717713),U=$(U,x,se,X,k[D+0],Pe,3921069994),X=$(X,U,x,se,k[D+5],re,3593408605),se=$(se,X,U,x,k[D+10],ge,38016083),x=$(x,se,X,U,k[D+15],be,3634488961),U=$(U,x,se,X,k[D+4],Pe,3889429448),X=$(X,U,x,se,k[D+9],re,568446438),se=$(se,X,U,x,k[D+14],ge,3275163606),x=$(x,se,X,U,k[D+3],be,4107603335),U=$(U,x,se,X,k[D+8],Pe,1163531501),X=$(X,U,x,se,k[D+13],re,2850285829),se=$(se,X,U,x,k[D+2],ge,4243563512),x=$(x,se,X,U,k[D+7],be,1735328473),U=$(U,x,se,X,k[D+12],Pe,2368359562),X=oe(X,U,x,se,k[D+5],Ce,4294588738),se=oe(se,X,U,x,k[D+8],le,2272392833),x=oe(x,se,X,U,k[D+11],ye,1839030562),U=oe(U,x,se,X,k[D+14],st,4259657740),X=oe(X,U,x,se,k[D+1],Ce,2763975236),se=oe(se,X,U,x,k[D+4],le,1272893353),x=oe(x,se,X,U,k[D+7],ye,4139469664),U=oe(U,x,se,X,k[D+10],st,3200236656),X=oe(X,U,x,se,k[D+13],Ce,681279174),se=oe(se,X,U,x,k[D+0],le,3936430074),x=oe(x,se,X,U,k[D+3],ye,3572445317),U=oe(U,x,se,X,k[D+6],st,76029189),X=oe(X,U,x,se,k[D+9],Ce,3654602809),se=oe(se,X,U,x,k[D+12],le,3873151461),x=oe(x,se,X,U,k[D+15],ye,530742520),U=oe(U,x,se,X,k[D+2],st,3299628645),X=N(X,U,x,se,k[D+0],at,4096336452),se=N(se,X,U,x,k[D+7],Ee,1126891415),x=N(x,se,X,U,k[D+14],Ae,2878612391),U=N(U,x,se,X,k[D+5],Ie,4237533241),X=N(X,U,x,se,k[D+12],at,1700485571),se=N(se,X,U,x,k[D+3],Ee,2399980690),x=N(x,se,X,U,k[D+10],Ae,4293915773),U=N(U,x,se,X,k[D+1],Ie,2240044497),X=N(X,U,x,se,k[D+8],at,1873313359),se=N(se,X,U,x,k[D+15],Ee,4264355552),x=N(x,se,X,U,k[D+6],Ae,2734768916),U=N(U,x,se,X,k[D+13],Ie,1309151649),X=N(X,U,x,se,k[D+4],at,4149444226),se=N(se,X,U,x,k[D+11],Ee,3174756917),x=N(x,se,X,U,k[D+2],Ae,718787259),U=N(U,x,se,X,k[D+9],Ie,3951481745),X=E(X,B),U=E(U,q),x=E(x,J),se=E(se,F);var Oe=Se(X)+Se(U)+Se(x)+Se(se);return Oe.toLowerCase()},Ze.closeMediaStream=function(g){if(g)try{var T;if(g.getTracks){T=g.getTracks();var E=s(T),y;try{for(E.s();!(y=E.n()).done;){var A=y.value;A.stop()}}catch(j){E.e(j)}finally{E.f()}}else{T=g.getAudioTracks();var C=s(T),I;try{for(C.s();!(I=C.n()).done;){var H=I.value;H.stop()}}catch(j){C.e(j)}finally{C.f()}T=g.getVideoTracks();var $=s(T),oe;try{for($.s();!(oe=$.n()).done;){var N=oe.value;N.stop()}}catch(j){$.e(j)}finally{$.f()}}}catch{(typeof g.stop=="function"||c(g.stop)==="object")&&g.stop()}},Ze.cloneArray=function(g){return g&&g.slice()||[]},Ze.cloneObject=function(g){var T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return g&&Object.assign({},g)||T},Ze}var Du={exports:{}},dr=typeof Reflect=="object"?Reflect:null,zu=dr&&typeof dr.apply=="function"?dr.apply:function(s,n,a){return Function.prototype.apply.call(s,n,a)},ma;dr&&typeof dr.ownKeys=="function"?ma=dr.ownKeys:Object.getOwnPropertySymbols?ma=function(s){return Object.getOwnPropertyNames(s).concat(Object.getOwnPropertySymbols(s))}:ma=function(s){return Object.getOwnPropertyNames(s)};function a_(c){console&&console.warn&&console.warn(c)}var qf=Number.isNaN||function(s){return s!==s};function Me(){Me.init.call(this)}Du.exports=Me;Du.exports.once=f_;Me.EventEmitter=Me;Me.prototype._events=void 0;Me.prototype._eventsCount=0;Me.prototype._maxListeners=void 0;var Xu=10;function qa(c){if(typeof c!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof c)}Object.defineProperty(Me,"defaultMaxListeners",{enumerable:!0,get:function(){return Xu},set:function(c){if(typeof c!="number"||c<0||qf(c))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+c+".");Xu=c}});Me.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Me.prototype.setMaxListeners=function(s){if(typeof s!="number"||s<0||qf(s))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+s+".");return this._maxListeners=s,this};function Bf(c){return c._maxListeners===void 0?Me.defaultMaxListeners:c._maxListeners}Me.prototype.getMaxListeners=function(){return Bf(this)};Me.prototype.emit=function(s){for(var n=[],a=1;a<arguments.length;a++)n.push(arguments[a]);var o=s==="error",t=this._events;if(t!==void 0)o=o&&t.error===void 0;else if(!o)return!1;if(o){var r;if(n.length>0&&(r=n[0]),r instanceof Error)throw r;var _=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw _.context=r,_}var h=t[s];if(h===void 0)return!1;if(typeof h=="function")zu(h,this,n);else for(var d=h.length,g=Jf(h,d),a=0;a<d;++a)zu(g[a],this,n);return!0};function Gf(c,s,n,a){var o,t,r;if(qa(n),t=c._events,t===void 0?(t=c._events=Object.create(null),c._eventsCount=0):(t.newListener!==void 0&&(c.emit("newListener",s,n.listener?n.listener:n),t=c._events),r=t[s]),r===void 0)r=t[s]=n,++c._eventsCount;else if(typeof r=="function"?r=t[s]=a?[n,r]:[r,n]:a?r.unshift(n):r.push(n),o=Bf(c),o>0&&r.length>o&&!r.warned){r.warned=!0;var _=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(s)+" listeners added. Use emitter.setMaxListeners() to increase limit");_.name="MaxListenersExceededWarning",_.emitter=c,_.type=s,_.count=r.length,a_(_)}return c}Me.prototype.addListener=function(s,n){return Gf(this,s,n,!1)};Me.prototype.on=Me.prototype.addListener;Me.prototype.prependListener=function(s,n){return Gf(this,s,n,!0)};function o_(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Wf(c,s,n){var a={fired:!1,wrapFn:void 0,target:c,type:s,listener:n},o=o_.bind(a);return o.listener=n,a.wrapFn=o,o}Me.prototype.once=function(s,n){return qa(n),this.on(s,Wf(this,s,n)),this};Me.prototype.prependOnceListener=function(s,n){return qa(n),this.prependListener(s,Wf(this,s,n)),this};Me.prototype.removeListener=function(s,n){var a,o,t,r,_;if(qa(n),o=this._events,o===void 0)return this;if(a=o[s],a===void 0)return this;if(a===n||a.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete o[s],o.removeListener&&this.emit("removeListener",s,a.listener||n));else if(typeof a!="function"){for(t=-1,r=a.length-1;r>=0;r--)if(a[r]===n||a[r].listener===n){_=a[r].listener,t=r;break}if(t<0)return this;t===0?a.shift():u_(a,t),a.length===1&&(o[s]=a[0]),o.removeListener!==void 0&&this.emit("removeListener",s,_||n)}return this};Me.prototype.off=Me.prototype.removeListener;Me.prototype.removeAllListeners=function(s){var n,a,o;if(a=this._events,a===void 0)return this;if(a.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):a[s]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete a[s]),this;if(arguments.length===0){var t=Object.keys(a),r;for(o=0;o<t.length;++o)r=t[o],r!=="removeListener"&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(n=a[s],typeof n=="function")this.removeListener(s,n);else if(n!==void 0)for(o=n.length-1;o>=0;o--)this.removeListener(s,n[o]);return this};function Kf(c,s,n){var a=c._events;if(a===void 0)return[];var o=a[s];return o===void 0?[]:typeof o=="function"?n?[o.listener||o]:[o]:n?c_(o):Jf(o,o.length)}Me.prototype.listeners=function(s){return Kf(this,s,!0)};Me.prototype.rawListeners=function(s){return Kf(this,s,!1)};Me.listenerCount=function(c,s){return typeof c.listenerCount=="function"?c.listenerCount(s):Yf.call(c,s)};Me.prototype.listenerCount=Yf;function Yf(c){var s=this._events;if(s!==void 0){var n=s[c];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}Me.prototype.eventNames=function(){return this._eventsCount>0?ma(this._events):[]};function Jf(c,s){for(var n=new Array(s),a=0;a<s;++a)n[a]=c[a];return n}function u_(c,s){for(;s+1<c.length;s++)c[s]=c[s+1];c.pop()}function c_(c){for(var s=new Array(c.length),n=0;n<s.length;++n)s[n]=c[n].listener||c[n];return s}function f_(c,s){return new Promise(function(n,a){function o(r){c.removeListener(s,t),a(r)}function t(){typeof c.removeListener=="function"&&c.removeListener("error",o),n([].slice.call(arguments))}zf(c,s,t,{once:!0}),s!=="error"&&h_(c,o,{once:!0})})}function h_(c,s,n){typeof c.on=="function"&&zf(c,"error",s,n)}function zf(c,s,n,a){if(typeof c.on=="function")a.once?c.once(s,n):c.on(s,n);else if(typeof c.addEventListener=="function")c.addEventListener(s,function o(t){a.once&&c.removeEventListener(s,o),n(t)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof c)}var ft=Du.exports,uu={exports:{}},_o,Qu;function __(){if(Qu)return _o;Qu=1;var c=1e3,s=c*60,n=s*60,a=n*24,o=a*7,t=a*365.25;_o=function(g,T){T=T||{};var E=typeof g;if(E==="string"&&g.length>0)return r(g);if(E==="number"&&isFinite(g))return T.long?h(g):_(g);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(g))};function r(g){if(g=String(g),!(g.length>100)){var T=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(g);if(T){var E=parseFloat(T[1]),y=(T[2]||"ms").toLowerCase();switch(y){case"years":case"year":case"yrs":case"yr":case"y":return E*t;case"weeks":case"week":case"w":return E*o;case"days":case"day":case"d":return E*a;case"hours":case"hour":case"hrs":case"hr":case"h":return E*n;case"minutes":case"minute":case"mins":case"min":case"m":return E*s;case"seconds":case"second":case"secs":case"sec":case"s":return E*c;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return E;default:return}}}}function _(g){var T=Math.abs(g);return T>=a?Math.round(g/a)+"d":T>=n?Math.round(g/n)+"h":T>=s?Math.round(g/s)+"m":T>=c?Math.round(g/c)+"s":g+"ms"}function h(g){var T=Math.abs(g);return T>=a?d(g,T,a,"day"):T>=n?d(g,T,n,"hour"):T>=s?d(g,T,s,"minute"):T>=c?d(g,T,c,"second"):g+" ms"}function d(g,T,E,y){var A=T>=E*1.5;return Math.round(g/E)+" "+y+(A?"s":"")}return _o}function d_(c){n.debug=n,n.default=n,n.coerce=h,n.disable=t,n.enable=o,n.enabled=r,n.humanize=__(),n.destroy=d,Object.keys(c).forEach(g=>{n[g]=c[g]}),n.names=[],n.skips=[],n.formatters={};function s(g){let T=0;for(let E=0;E<g.length;E++)T=(T<<5)-T+g.charCodeAt(E),T|=0;return n.colors[Math.abs(T)%n.colors.length]}n.selectColor=s;function n(g){let T,E=null,y,A;function C(...I){if(!C.enabled)return;const H=C,$=Number(new Date),oe=$-(T||$);H.diff=oe,H.prev=T,H.curr=$,T=$,I[0]=n.coerce(I[0]),typeof I[0]!="string"&&I.unshift("%O");let N=0;I[0]=I[0].replace(/%([a-zA-Z%])/g,(Se,ve)=>{if(Se==="%%")return"%";N++;const k=n.formatters[ve];if(typeof k=="function"){const D=I[N];Se=k.call(H,D),I.splice(N,1),N--}return Se}),n.formatArgs.call(H,I),(H.log||n.log).apply(H,I)}return C.namespace=g,C.useColors=n.useColors(),C.color=n.selectColor(g),C.extend=a,C.destroy=n.destroy,Object.defineProperty(C,"enabled",{enumerable:!0,configurable:!1,get:()=>E!==null?E:(y!==n.namespaces&&(y=n.namespaces,A=n.enabled(g)),A),set:I=>{E=I}}),typeof n.init=="function"&&n.init(C),C}function a(g,T){const E=n(this.namespace+(typeof T>"u"?":":T)+g);return E.log=this.log,E}function o(g){n.save(g),n.namespaces=g,n.names=[],n.skips=[];let T;const E=(typeof g=="string"?g:"").split(/[\s,]+/),y=E.length;for(T=0;T<y;T++)E[T]&&(g=E[T].replace(/\*/g,".*?"),g[0]==="-"?n.skips.push(new RegExp("^"+g.slice(1)+"$")):n.names.push(new RegExp("^"+g+"$")))}function t(){const g=[...n.names.map(_),...n.skips.map(_).map(T=>"-"+T)].join(",");return n.enable(""),g}function r(g){if(g[g.length-1]==="*")return!0;let T,E;for(T=0,E=n.skips.length;T<E;T++)if(n.skips[T].test(g))return!1;for(T=0,E=n.names.length;T<E;T++)if(n.names[T].test(g))return!0;return!1}function _(g){return g.toString().substring(2,g.toString().length-2).replace(/\.\*\?$/,"*")}function h(g){return g instanceof Error?g.stack||g.message:g}function d(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}var p_=d_;(function(c,s){s.formatArgs=a,s.save=o,s.load=t,s.useColors=n,s.storage=r(),s.destroy=(()=>{let h=!1;return()=>{h||(h=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),s.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function n(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function a(h){if(h[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+h[0]+(this.useColors?"%c ":" ")+"+"+c.exports.humanize(this.diff),!this.useColors)return;const d="color: "+this.color;h.splice(1,0,d,"color: inherit");let g=0,T=0;h[0].replace(/%[a-zA-Z%]/g,E=>{E!=="%%"&&(g++,E==="%c"&&(T=g))}),h.splice(T,0,d)}s.log=console.debug||console.log||(()=>{});function o(h){try{h?s.storage.setItem("debug",h):s.storage.removeItem("debug")}catch{}}function t(){let h;try{h=s.storage.getItem("debug")}catch{}return!h&&typeof process<"u"&&"env"in process&&(h=process.env.DEBUG),h}function r(){try{return localStorage}catch{}}c.exports=p_(s);const{formatters:_}=c.exports;_.j=function(h){try{return JSON.stringify(h)}catch(d){return"[UnexpectedJSONParseError]: "+d.message}}})(uu,uu.exports);var gr=uu.exports;function m_(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Zu(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function g_(c,s,n){return s&&Zu(c.prototype,s),n&&Zu(c,n),c}var lr=gr,ar="JsSIP",ht=function(){function c(s){m_(this,c),s?(this._debug=lr.default("".concat(ar,":").concat(s)),this._warn=lr.default("".concat(ar,":WARN:").concat(s)),this._error=lr.default("".concat(ar,":ERROR:").concat(s))):(this._debug=lr.default(ar),this._warn=lr.default("".concat(ar,":WARN")),this._error=lr.default("".concat(ar,":ERROR"))),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}return g_(c,[{key:"debug",get:function(){return this._debug}},{key:"warn",get:function(){return this._warn}},{key:"error",get:function(){return this._error}}]),c}(),xt={},Xf={},Qf={exports:{}},ec=Qf.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(c){return c.encoding?"rtpmap:%d %s/%s/%s":c.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(c){return c.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(c){return c.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(c){return"extmap:%d"+(c.direction?"/%s":"%v")+(c["encrypt-uri"]?" %s":"%v")+" %s"+(c.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(c){return c.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(c){var s="candidate:%s %d %s %d %s %d typ %s";return s+=c.raddr!=null?" raddr %s rport %d":"%v%v",s+=c.tcptype!=null?" tcptype %s":"%v",c.generation!=null&&(s+=" generation %d"),s+=c["network-id"]!=null?" network-id %d":"%v",s+=c["network-cost"]!=null?" network-cost %d":"%v",s}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(c){var s="ssrc:%d";return c.attribute!=null&&(s+=" %s",c.value!=null&&(s+=":%s")),s}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(c){return c.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(c){return c.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(c){return"imageattr:%s %s %s"+(c.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(c){return"simulcast:%s %s"+(c.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(c){return"ts-refclk:%s"+(c.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(c){var s="mediaclk:";return s+=c.id!=null?"id=%s %s":"%v%s",s+=c.mediaClockValue!=null?"=%s":"",s+=c.rateNumerator!=null?" rate=%s":"",s+=c.rateDenominator!=null?"/%s":"",s}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(ec).forEach(function(c){var s=ec[c];s.forEach(function(n){n.reg||(n.reg=/(.*)/),n.format||(n.format="%s")})});var Zf=Qf.exports;(function(c){var s=function(_){return String(Number(_))===_?Number(_):_},n=function(_,h,d,g){if(g&&!d)h[g]=s(_[1]);else for(var T=0;T<d.length;T+=1)_[T+1]!=null&&(h[d[T]]=s(_[T+1]))},a=function(_,h,d){var g=_.name&&_.names;_.push&&!h[_.push]?h[_.push]=[]:g&&!h[_.name]&&(h[_.name]={});var T=_.push?{}:g?h[_.name]:h;n(d.match(_.reg),T,_.names,_.name),_.push&&h[_.push].push(T)},o=Zf,t=RegExp.prototype.test.bind(/^([a-z])=(.*)/);c.parse=function(_){var h={},d=[],g=h;return _.split(/(\r\n|\r|\n)/).filter(t).forEach(function(T){var E=T[0],y=T.slice(2);E==="m"&&(d.push({rtp:[],fmtp:[]}),g=d[d.length-1]);for(var A=0;A<(o[E]||[]).length;A+=1){var C=o[E][A];if(C.reg.test(y))return a(C,g,y)}}),h.media=d,h};var r=function(_,h){var d=h.split(/=(.+)/,2);return d.length===2?_[d[0]]=s(d[1]):d.length===1&&h.length>1&&(_[d[0]]=void 0),_};c.parseParams=function(_){return _.split(/;\s?/).reduce(r,{})},c.parseFmtpConfig=c.parseParams,c.parsePayloads=function(_){return _.toString().split(" ").map(Number)},c.parseRemoteCandidates=function(_){for(var h=[],d=_.split(" ").map(s),g=0;g<d.length;g+=3)h.push({component:d[g],ip:d[g+1],port:d[g+2]});return h},c.parseImageAttributes=function(_){return _.split(" ").map(function(h){return h.substring(1,h.length-1).split(",").reduce(r,{})})},c.parseSimulcastStreamList=function(_){return _.split(";").map(function(h){return h.split(",").map(function(d){var g,T=!1;return d[0]!=="~"?g=s(d):(g=s(d.substring(1,d.length)),T=!0),{scid:g,paused:T}})})}})(Xf);var po=Zf,T_=/%[sdv%]/g,v_=function(c){var s=1,n=arguments,a=n.length;return c.replace(T_,function(o){if(s>=a)return o;var t=n[s];switch(s+=1,o){case"%%":return"%";case"%s":return String(t);case"%d":return Number(t);case"%v":return""}})},Di=function(c,s,n){var a=s.format instanceof Function?s.format(s.push?n:n[s.name]):s.format,o=[c+"="+a];if(s.names)for(var t=0;t<s.names.length;t+=1){var r=s.names[t];s.name?o.push(n[s.name][r]):o.push(n[s.names[t]])}else o.push(n[s.name]);return v_.apply(null,o)},E_=["v","o","s","i","u","e","p","c","b","t","r","z","a"],S_=["i","c","b","a"],y_=function(c,s){s=s||{},c.version==null&&(c.version=0),c.name==null&&(c.name=" "),c.media.forEach(function(t){t.payloads==null&&(t.payloads="")});var n=s.outerOrder||E_,a=s.innerOrder||S_,o=[];return n.forEach(function(t){po[t].forEach(function(r){r.name in c&&c[r.name]!=null?o.push(Di(t,r,c)):r.push in c&&c[r.push]!=null&&c[r.push].forEach(function(_){o.push(Di(t,r,_))})})}),c.media.forEach(function(t){o.push(Di("m",po.m[0],t)),a.forEach(function(r){po[r].forEach(function(_){_.name in t&&t[_.name]!=null?o.push(Di(r,_,t)):_.push in t&&t[_.push]!=null&&t[_.push].forEach(function(h){o.push(Di(r,_,h))})})})}),o.join(`\r
7
7
  `)+`\r
8
- `},Rn=Jf,Sh=Eh;Pt.write=Sh;Pt.parse=Rn.parse;Pt.parseParams=Rn.parseParams;Pt.parseFmtpConfig=Rn.parseFmtpConfig;Pt.parsePayloads=Rn.parsePayloads;Pt.parseRemoteCandidates=Rn.parseRemoteCandidates;Pt.parseImageAttributes=Rn.parseImageAttributes;Pt.parseSimulcastStreamList=Rn.parseSimulcastStreamList;function pa(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?pa=function(r){return typeof r}:pa=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},pa(c)}function Ou(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&ou(c,s)}function ou(c,s){return ou=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},ou(c,s)}function Du(c){var s=Ch();return function(){var a=Ia(c),o;if(s){var t=Ia(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return yh(this,o)}}function yh(c,s){return s&&(pa(s)==="object"||typeof s=="function")?s:Ah(c)}function Ah(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function Ch(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function Ia(c){return Ia=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Ia(c)}function Vt(c,s){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=Rh(c))||s&&c&&typeof c.length=="number"){r&&(c=r);var a=0,o=function(){};return{s:o,n:function(){return a>=c.length?{done:!0}:{done:!1,value:c[a++]}},e:function(d){throw d},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
9
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var t=!0,n=!1,h;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){n=!0,h=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(n)throw h}}}}function Rh(c,s){if(c){if(typeof c=="string")return Zu(c,s);var r=Object.prototype.toString.call(c).slice(8,-1);if(r==="Object"&&c.constructor&&(r=c.constructor.name),r==="Map"||r==="Set")return Array.from(c);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Zu(c,s)}}function Zu(c,s){(s==null||s>c.length)&&(s=c.length);for(var r=0,a=new Array(s);r<s;r++)a[r]=c[r];return a}function sl(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function ec(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function qa(c,s,r){return s&&ec(c.prototype,s),r&&ec(c,r),c}var Qf=Pt,Ih=_t,Et=it,nt=bt(),tc=bu(),bh=ls(),ho=new Ih("SIPMessage"),Zf=function(){function c(s,r,a,o,t,n){if(sl(this,c),!s||!r||!a)return null;o=o||{},this.ua=a,this.headers={},this.method=s,this.ruri=r,this.body=n,this.extraHeaders=nt.cloneArray(t),this.ua.configuration.extra_headers&&(this.extraHeaders=this.extraHeaders.concat(this.ua.configuration.extra_headers)),o.route_set?this.setHeader("route",o.route_set):a.configuration.use_preloaded_route&&this.setHeader("route","<".concat(a.transport.sip_uri,";lr>")),this.setHeader("via",""),this.setHeader("max-forwards",Et.MAX_FORWARDS);var h=o.to_uri||r,_=o.to_tag?{tag:o.to_tag}:null,d=typeof o.to_display_name<"u"?o.to_display_name:null;this.to=new tc(h,d,_),this.setHeader("to",this.to.toString());var g=o.from_uri||a.configuration.uri,T={tag:o.from_tag||nt.newTag()},E;typeof o.from_display_name<"u"?E=o.from_display_name:a.configuration.display_name?E=a.configuration.display_name:E=null,this.from=new tc(g,E,T),this.setHeader("from",this.from.toString());var y=o.call_id||a.configuration.jssip_id+nt.createRandomToken(15);this.call_id=y,this.setHeader("call-id",y);var A=o.cseq||Math.floor(Math.random()*1e4);this.cseq=A,this.setHeader("cseq","".concat(A," ").concat(s))}return qa(c,[{key:"setHeader",value:function(r,a){for(var o=new RegExp("^\\s*".concat(r,"\\s*:"),"i"),t=0;t<this.extraHeaders.length;t++)o.test(this.extraHeaders[t])&&this.extraHeaders.splice(t,1);this.headers[nt.headerize(r)]=Array.isArray(a)?a:[a]}},{key:"getHeader",value:function(r){var a=this.headers[nt.headerize(r)];if(a){if(a[0])return a[0]}else{var o=new RegExp("^\\s*".concat(r,"\\s*:"),"i"),t=Vt(this.extraHeaders),n;try{for(t.s();!(n=t.n()).done;){var h=n.value;if(o.test(h))return h.substring(h.indexOf(":")+1).trim()}}catch(_){t.e(_)}finally{t.f()}}}},{key:"getHeaders",value:function(r){var a=this.headers[nt.headerize(r)],o=[];if(a){var t=Vt(a),n;try{for(t.s();!(n=t.n()).done;){var h=n.value;o.push(h)}}catch(E){t.e(E)}finally{t.f()}return o}else{var _=new RegExp("^\\s*".concat(r,"\\s*:"),"i"),d=Vt(this.extraHeaders),g;try{for(d.s();!(g=d.n()).done;){var T=g.value;_.test(T)&&o.push(T.substring(T.indexOf(":")+1).trim())}}catch(E){d.e(E)}finally{d.f()}return o}}},{key:"hasHeader",value:function(r){if(this.headers[nt.headerize(r)])return!0;var a=new RegExp("^\\s*".concat(r,"\\s*:"),"i"),o=Vt(this.extraHeaders),t;try{for(o.s();!(t=o.n()).done;){var n=t.value;if(a.test(n))return!0}}catch(h){o.e(h)}finally{o.f()}return!1}},{key:"parseSDP",value:function(r){return!r&&this.sdp?this.sdp:(this.sdp=Qf.parse(this.body||""),this.sdp)}},{key:"toString",value:function(){var r="".concat(this.method," ").concat(this.ruri,` SIP/2.0\r
10
- `);for(var a in this.headers)if(Object.prototype.hasOwnProperty.call(this.headers,a)){var o=Vt(this.headers[a]),t;try{for(o.s();!(t=o.n()).done;){var n=t.value;r+="".concat(a,": ").concat(n,`\r
11
- `)}}catch(y){o.e(y)}finally{o.f()}}var h=Vt(this.extraHeaders),_;try{for(h.s();!(_=h.n()).done;){var d=_.value;r+="".concat(d.trim(),`\r
12
- `)}}catch(y){h.e(y)}finally{h.f()}var g=[];switch(this.method){case Et.REGISTER:g.push("path","gruu");break;case Et.INVITE:this.ua.configuration.session_timers&&g.push("timer"),(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&g.push("gruu"),g.push("ice","replaces");break;case Et.UPDATE:this.ua.configuration.session_timers&&g.push("timer"),g.push("ice");break}g.push("outbound");var T=this.ua.configuration.user_agent||Et.USER_AGENT;if(r+="Allow: ".concat(Et.ALLOWED_METHODS,`\r
13
- `),r+="Supported: ".concat(g,`\r
14
- `),r+="User-Agent: ".concat(T,`\r
15
- `),this.body){var E=nt.str_utf8_length(this.body);r+="Content-Length: ".concat(E,`\r
8
+ `},bn=Xf,A_=y_;xt.write=A_;xt.parse=bn.parse;xt.parseParams=bn.parseParams;xt.parseFmtpConfig=bn.parseFmtpConfig;xt.parsePayloads=bn.parsePayloads;xt.parseRemoteCandidates=bn.parseRemoteCandidates;xt.parseImageAttributes=bn.parseImageAttributes;xt.parseSimulcastStreamList=bn.parseSimulcastStreamList;function ga(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ga=function(n){return typeof n}:ga=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},ga(c)}function Nu(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&cu(c,s)}function cu(c,s){return cu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},cu(c,s)}function Uu(c){var s=I_();return function(){var a=wa(c),o;if(s){var t=wa(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return C_(this,o)}}function C_(c,s){return s&&(ga(s)==="object"||typeof s=="function")?s:R_(c)}function R_(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function I_(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function wa(c){return wa=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},wa(c)}function qt(c,s){var n;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(n=b_(c))||s&&c&&typeof c.length=="number"){n&&(c=n);var a=0,o=function(){};return{s:o,n:function(){return a>=c.length?{done:!0}:{done:!1,value:c[a++]}},e:function(d){throw d},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
9
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var t=!0,r=!1,_;return{s:function(){n=c[Symbol.iterator]()},n:function(){var d=n.next();return t=d.done,d},e:function(d){r=!0,_=d},f:function(){try{!t&&n.return!=null&&n.return()}finally{if(r)throw _}}}}function b_(c,s){if(c){if(typeof c=="string")return tc(c,s);var n=Object.prototype.toString.call(c).slice(8,-1);if(n==="Object"&&c.constructor&&(n=c.constructor.name),n==="Map"||n==="Set")return Array.from(c);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return tc(c,s)}}function tc(c,s){(s==null||s>c.length)&&(s=c.length);for(var n=0,a=new Array(s);n<s;n++)a[n]=c[n];return a}function rl(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function sc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Ba(c,s,n){return s&&sc(c.prototype,s),n&&sc(c,n),c}var eh=xt,w_=ht,Et=lt,rt=bt(),nc=Ou(),O_=os(),mo=new w_("SIPMessage"),th=function(){function c(s,n,a,o,t,r){if(rl(this,c),!s||!n||!a)return null;o=o||{},this.ua=a,this.headers={},this.method=s,this.ruri=n,this.body=r,this.extraHeaders=rt.cloneArray(t),this.ua.configuration.extra_headers&&(this.extraHeaders=this.extraHeaders.concat(this.ua.configuration.extra_headers)),o.route_set?this.setHeader("route",o.route_set):a.configuration.use_preloaded_route&&this.setHeader("route","<".concat(a.transport.sip_uri,";lr>")),this.setHeader("via",""),this.setHeader("max-forwards",Et.MAX_FORWARDS);var _=o.to_uri||n,h=o.to_tag?{tag:o.to_tag}:null,d=typeof o.to_display_name<"u"?o.to_display_name:null;this.to=new nc(_,d,h),this.setHeader("to",this.to.toString());var g=o.from_uri||a.configuration.uri,T={tag:o.from_tag||rt.newTag()},E;typeof o.from_display_name<"u"?E=o.from_display_name:a.configuration.display_name?E=a.configuration.display_name:E=null,this.from=new nc(g,E,T),this.setHeader("from",this.from.toString());var y=o.call_id||a.configuration.jssip_id+rt.createRandomToken(15);this.call_id=y,this.setHeader("call-id",y);var A=o.cseq||Math.floor(Math.random()*1e4);this.cseq=A,this.setHeader("cseq","".concat(A," ").concat(s))}return Ba(c,[{key:"setHeader",value:function(n,a){for(var o=new RegExp("^\\s*".concat(n,"\\s*:"),"i"),t=0;t<this.extraHeaders.length;t++)o.test(this.extraHeaders[t])&&this.extraHeaders.splice(t,1);this.headers[rt.headerize(n)]=Array.isArray(a)?a:[a]}},{key:"getHeader",value:function(n){var a=this.headers[rt.headerize(n)];if(a){if(a[0])return a[0]}else{var o=new RegExp("^\\s*".concat(n,"\\s*:"),"i"),t=qt(this.extraHeaders),r;try{for(t.s();!(r=t.n()).done;){var _=r.value;if(o.test(_))return _.substring(_.indexOf(":")+1).trim()}}catch(h){t.e(h)}finally{t.f()}}}},{key:"getHeaders",value:function(n){var a=this.headers[rt.headerize(n)],o=[];if(a){var t=qt(a),r;try{for(t.s();!(r=t.n()).done;){var _=r.value;o.push(_)}}catch(E){t.e(E)}finally{t.f()}return o}else{var h=new RegExp("^\\s*".concat(n,"\\s*:"),"i"),d=qt(this.extraHeaders),g;try{for(d.s();!(g=d.n()).done;){var T=g.value;h.test(T)&&o.push(T.substring(T.indexOf(":")+1).trim())}}catch(E){d.e(E)}finally{d.f()}return o}}},{key:"hasHeader",value:function(n){if(this.headers[rt.headerize(n)])return!0;var a=new RegExp("^\\s*".concat(n,"\\s*:"),"i"),o=qt(this.extraHeaders),t;try{for(o.s();!(t=o.n()).done;){var r=t.value;if(a.test(r))return!0}}catch(_){o.e(_)}finally{o.f()}return!1}},{key:"parseSDP",value:function(n){return!n&&this.sdp?this.sdp:(this.sdp=eh.parse(this.body||""),this.sdp)}},{key:"toString",value:function(){var n="".concat(this.method," ").concat(this.ruri,` SIP/2.0\r
10
+ `);for(var a in this.headers)if(Object.prototype.hasOwnProperty.call(this.headers,a)){var o=qt(this.headers[a]),t;try{for(o.s();!(t=o.n()).done;){var r=t.value;n+="".concat(a,": ").concat(r,`\r
11
+ `)}}catch(y){o.e(y)}finally{o.f()}}var _=qt(this.extraHeaders),h;try{for(_.s();!(h=_.n()).done;){var d=h.value;n+="".concat(d.trim(),`\r
12
+ `)}}catch(y){_.e(y)}finally{_.f()}var g=[];switch(this.method){case Et.REGISTER:g.push("path","gruu");break;case Et.INVITE:this.ua.configuration.session_timers&&g.push("timer"),(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&g.push("gruu"),g.push("ice","replaces");break;case Et.UPDATE:this.ua.configuration.session_timers&&g.push("timer"),g.push("ice");break}g.push("outbound");var T=this.ua.configuration.user_agent||Et.USER_AGENT;if(n+="Allow: ".concat(Et.ALLOWED_METHODS,`\r
13
+ `),n+="Supported: ".concat(g,`\r
14
+ `),n+="User-Agent: ".concat(T,`\r
15
+ `),this.body){var E=rt.str_utf8_length(this.body);n+="Content-Length: ".concat(E,`\r
16
16
  \r
17
- `),r+=this.body}else r+=`Content-Length: 0\r
17
+ `),n+=this.body}else n+=`Content-Length: 0\r
18
18
  \r
19
- `;return r}},{key:"clone",value:function(){var r=new c(this.method,this.ruri,this.ua);return Object.keys(this.headers).forEach(function(a){r.headers[a]=this.headers[a].slice()},this),r.body=this.body,r.extraHeaders=nt.cloneArray(this.extraHeaders),r.to=this.to,r.from=this.from,r.call_id=this.call_id,r.cseq=this.cseq,r}}]),c}(),wh=function(c){Ou(r,c);var s=Du(r);function r(a,o,t,n,h){var _;return sl(this,r),_=s.call(this,Et.INVITE,a,o,t,n,h),_.transaction=null,_}return qa(r,[{key:"cancel",value:function(o){this.transaction.cancel(o)}},{key:"clone",value:function(){var o=new r(this.ruri,this.ua);return Object.keys(this.headers).forEach(function(t){o.headers[t]=this.headers[t].slice()},this),o.body=this.body,o.extraHeaders=nt.cloneArray(this.extraHeaders),o.to=this.to,o.from=this.from,o.call_id=this.call_id,o.cseq=this.cseq,o.transaction=this.transaction,o}}]),r}(Zf),e_=function(){function c(){sl(this,c),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,this.sdp=null}return qa(c,[{key:"addHeader",value:function(r,a){var o={raw:a};r=nt.headerize(r),this.headers[r]?this.headers[r].push(o):this.headers[r]=[o]}},{key:"getHeader",value:function(r){var a=this.headers[nt.headerize(r)];if(a){if(a[0])return a[0].raw}else return}},{key:"getHeaders",value:function(r){var a=this.headers[nt.headerize(r)],o=[];if(!a)return[];var t=Vt(a),n;try{for(t.s();!(n=t.n()).done;){var h=n.value;o.push(h.raw)}}catch(_){t.e(_)}finally{t.f()}return o}},{key:"hasHeader",value:function(r){return!!this.headers[nt.headerize(r)]}},{key:"parseHeader",value:function(r){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(r=nt.headerize(r),this.headers[r]){if(a>=this.headers[r].length){ho.debug('not so many "'.concat(r,'" headers present'));return}}else{ho.debug('header "'.concat(r,'" not present'));return}var o=this.headers[r][a],t=o.raw;if(o.parsed)return o.parsed;var n=bh.parse(t,r.replace(/-/g,"_"));if(n===-1){this.headers[r].splice(a,1),ho.debug('error parsing "'.concat(r,'" header field with value "').concat(t,'"'));return}else return o.parsed=n,n}},{key:"s",value:function(r,a){return this.parseHeader(r,a)}},{key:"setHeader",value:function(r,a){var o={raw:a};this.headers[nt.headerize(r)]=[o]}},{key:"parseSDP",value:function(r){return!r&&this.sdp?this.sdp:(this.sdp=Qf.parse(this.body||""),this.sdp)}},{key:"toString",value:function(){return this.data}}]),c}(),Oh=function(c){Ou(r,c);var s=Du(r);function r(a){var o;return sl(this,r),o=s.call(this),o.ua=a,o.headers={},o.ruri=null,o.transport=null,o.server_transaction=null,o}return qa(r,[{key:"reply",value:function(o,t,n,h,_,d){var g=[],T=this.getHeader("To");if(o=o||null,t=t||null,!o||o<100||o>699)throw new TypeError("Invalid status_code: ".concat(o));if(t&&typeof t!="string"&&!(t instanceof String))throw new TypeError("Invalid reason_phrase: ".concat(t));t=t||Et.REASON_PHRASE[o]||"",n=nt.cloneArray(n),this.ua.configuration.extra_headers&&(n=n.concat(this.ua.configuration.extra_headers));var E="SIP/2.0 ".concat(o," ").concat(t,`\r
20
- `);if(this.method===Et.INVITE&&o>100&&o<=200){var y=this.getHeaders("record-route"),A=Vt(y),C;try{for(A.s();!(C=A.n()).done;){var I=C.value;E+="Record-Route: ".concat(I,`\r
21
- `)}}catch(D){A.e(D)}finally{A.f()}}var H=this.getHeaders("via"),L=Vt(H),oe;try{for(L.s();!(oe=L.n()).done;){var N=oe.value;E+="Via: ".concat(N,`\r
22
- `)}}catch(D){L.e(D)}finally{L.f()}!this.to_tag&&o>100?T+=";tag=".concat(nt.newTag()):this.to_tag&&!this.s("to").hasParam("tag")&&(T+=";tag=".concat(this.to_tag)),E+="To: ".concat(T,`\r
19
+ `;return n}},{key:"clone",value:function(){var n=new c(this.method,this.ruri,this.ua);return Object.keys(this.headers).forEach(function(a){n.headers[a]=this.headers[a].slice()},this),n.body=this.body,n.extraHeaders=rt.cloneArray(this.extraHeaders),n.to=this.to,n.from=this.from,n.call_id=this.call_id,n.cseq=this.cseq,n}}]),c}(),D_=function(c){Nu(n,c);var s=Uu(n);function n(a,o,t,r,_){var h;return rl(this,n),h=s.call(this,Et.INVITE,a,o,t,r,_),h.transaction=null,h}return Ba(n,[{key:"cancel",value:function(o){this.transaction.cancel(o)}},{key:"clone",value:function(){var o=new n(this.ruri,this.ua);return Object.keys(this.headers).forEach(function(t){o.headers[t]=this.headers[t].slice()},this),o.body=this.body,o.extraHeaders=rt.cloneArray(this.extraHeaders),o.to=this.to,o.from=this.from,o.call_id=this.call_id,o.cseq=this.cseq,o.transaction=this.transaction,o}}]),n}(th),sh=function(){function c(){rl(this,c),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,this.sdp=null}return Ba(c,[{key:"addHeader",value:function(n,a){var o={raw:a};n=rt.headerize(n),this.headers[n]?this.headers[n].push(o):this.headers[n]=[o]}},{key:"getHeader",value:function(n){var a=this.headers[rt.headerize(n)];if(a){if(a[0])return a[0].raw}else return}},{key:"getHeaders",value:function(n){var a=this.headers[rt.headerize(n)],o=[];if(!a)return[];var t=qt(a),r;try{for(t.s();!(r=t.n()).done;){var _=r.value;o.push(_.raw)}}catch(h){t.e(h)}finally{t.f()}return o}},{key:"hasHeader",value:function(n){return!!this.headers[rt.headerize(n)]}},{key:"parseHeader",value:function(n){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(n=rt.headerize(n),this.headers[n]){if(a>=this.headers[n].length){mo.debug('not so many "'.concat(n,'" headers present'));return}}else{mo.debug('header "'.concat(n,'" not present'));return}var o=this.headers[n][a],t=o.raw;if(o.parsed)return o.parsed;var r=O_.parse(t,n.replace(/-/g,"_"));if(r===-1){this.headers[n].splice(a,1),mo.debug('error parsing "'.concat(n,'" header field with value "').concat(t,'"'));return}else return o.parsed=r,r}},{key:"s",value:function(n,a){return this.parseHeader(n,a)}},{key:"setHeader",value:function(n,a){var o={raw:a};this.headers[rt.headerize(n)]=[o]}},{key:"parseSDP",value:function(n){return!n&&this.sdp?this.sdp:(this.sdp=eh.parse(this.body||""),this.sdp)}},{key:"toString",value:function(){return this.data}}]),c}(),N_=function(c){Nu(n,c);var s=Uu(n);function n(a){var o;return rl(this,n),o=s.call(this),o.ua=a,o.headers={},o.ruri=null,o.transport=null,o.server_transaction=null,o}return Ba(n,[{key:"reply",value:function(o,t,r,_,h,d){var g=[],T=this.getHeader("To");if(o=o||null,t=t||null,!o||o<100||o>699)throw new TypeError("Invalid status_code: ".concat(o));if(t&&typeof t!="string"&&!(t instanceof String))throw new TypeError("Invalid reason_phrase: ".concat(t));t=t||Et.REASON_PHRASE[o]||"",r=rt.cloneArray(r),this.ua.configuration.extra_headers&&(r=r.concat(this.ua.configuration.extra_headers));var E="SIP/2.0 ".concat(o," ").concat(t,`\r
20
+ `);if(this.method===Et.INVITE&&o>100&&o<=200){var y=this.getHeaders("record-route"),A=qt(y),C;try{for(A.s();!(C=A.n()).done;){var I=C.value;E+="Record-Route: ".concat(I,`\r
21
+ `)}}catch(D){A.e(D)}finally{A.f()}}var H=this.getHeaders("via"),$=qt(H),oe;try{for($.s();!(oe=$.n()).done;){var N=oe.value;E+="Via: ".concat(N,`\r
22
+ `)}}catch(D){$.e(D)}finally{$.f()}!this.to_tag&&o>100?T+=";tag=".concat(rt.newTag()):this.to_tag&&!this.s("to").hasParam("tag")&&(T+=";tag=".concat(this.to_tag)),E+="To: ".concat(T,`\r
23
23
  `),E+="From: ".concat(this.getHeader("From"),`\r
24
24
  `),E+="Call-ID: ".concat(this.call_id,`\r
25
25
  `),E+="CSeq: ".concat(this.cseq," ").concat(this.method,`\r
26
- `);var j=Vt(n),Se;try{for(j.s();!(Se=j.n()).done;){var ve=Se.value;E+="".concat(ve.trim(),`\r
27
- `)}}catch(D){j.e(D)}finally{j.f()}switch(this.method){case Et.INVITE:this.ua.configuration.session_timers&&g.push("timer"),(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&g.push("gruu"),g.push("ice","replaces");break;case Et.UPDATE:this.ua.configuration.session_timers&&g.push("timer"),h&&g.push("ice"),g.push("replaces")}if(g.push("outbound"),this.method===Et.OPTIONS?(E+="Allow: ".concat(Et.ALLOWED_METHODS,`\r
26
+ `);var j=qt(r),Se;try{for(j.s();!(Se=j.n()).done;){var ve=Se.value;E+="".concat(ve.trim(),`\r
27
+ `)}}catch(D){j.e(D)}finally{j.f()}switch(this.method){case Et.INVITE:this.ua.configuration.session_timers&&g.push("timer"),(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&g.push("gruu"),g.push("ice","replaces");break;case Et.UPDATE:this.ua.configuration.session_timers&&g.push("timer"),_&&g.push("ice"),g.push("replaces")}if(g.push("outbound"),this.method===Et.OPTIONS?(E+="Allow: ".concat(Et.ALLOWED_METHODS,`\r
28
28
  `),E+="Accept: ".concat(Et.ACCEPTED_BODY_TYPES,`\r
29
29
  `)):o===405?E+="Allow: ".concat(Et.ALLOWED_METHODS,`\r
30
30
  `):o===415&&(E+="Accept: ".concat(Et.ACCEPTED_BODY_TYPES,`\r
31
31
  `)),E+="Supported: ".concat(g,`\r
32
- `),h){var M=nt.str_utf8_length(h);E+=`Content-Type: application/sdp\r
33
- `,E+="Content-Length: ".concat(M,`\r
32
+ `),_){var k=rt.str_utf8_length(_);E+=`Content-Type: application/sdp\r
33
+ `,E+="Content-Length: ".concat(k,`\r
34
34
  \r
35
- `),E+=h}else E+="Content-Length: ".concat(0,`\r
35
+ `),E+=_}else E+="Content-Length: ".concat(0,`\r
36
36
  \r
37
- `);this.server_transaction.receiveResponse(o,E,_,d)}},{key:"reply_sl",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,n=this.getHeaders("via");if(!o||o<100||o>699)throw new TypeError("Invalid status_code: ".concat(o));if(t&&typeof t!="string"&&!(t instanceof String))throw new TypeError("Invalid reason_phrase: ".concat(t));t=t||Et.REASON_PHRASE[o]||"";var h="SIP/2.0 ".concat(o," ").concat(t,`\r
38
- `),_=Vt(n),d;try{for(_.s();!(d=_.n()).done;){var g=d.value;h+="Via: ".concat(g,`\r
39
- `)}}catch(C){_.e(C)}finally{_.f()}var T=this.getHeader("To");if(!this.to_tag&&o>100?T+=";tag=".concat(nt.newTag()):this.to_tag&&!this.s("to").hasParam("tag")&&(T+=";tag=".concat(this.to_tag)),h+="To: ".concat(T,`\r
40
- `),h+="From: ".concat(this.getHeader("From"),`\r
41
- `),h+="Call-ID: ".concat(this.call_id,`\r
42
- `),h+="CSeq: ".concat(this.cseq," ").concat(this.method,`\r
43
- `),this.ua.configuration.extra_headers){var E=Vt(this.ua.configuration.extra_headers),y;try{for(E.s();!(y=E.n()).done;){var A=y.value;h+="".concat(A.trim(),`\r
44
- `)}}catch(C){E.e(C)}finally{E.f()}}h+="Content-Length: ".concat(0,`\r
37
+ `);this.server_transaction.receiveResponse(o,E,h,d)}},{key:"reply_sl",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,r=this.getHeaders("via");if(!o||o<100||o>699)throw new TypeError("Invalid status_code: ".concat(o));if(t&&typeof t!="string"&&!(t instanceof String))throw new TypeError("Invalid reason_phrase: ".concat(t));t=t||Et.REASON_PHRASE[o]||"";var _="SIP/2.0 ".concat(o," ").concat(t,`\r
38
+ `),h=qt(r),d;try{for(h.s();!(d=h.n()).done;){var g=d.value;_+="Via: ".concat(g,`\r
39
+ `)}}catch(C){h.e(C)}finally{h.f()}var T=this.getHeader("To");if(!this.to_tag&&o>100?T+=";tag=".concat(rt.newTag()):this.to_tag&&!this.s("to").hasParam("tag")&&(T+=";tag=".concat(this.to_tag)),_+="To: ".concat(T,`\r
40
+ `),_+="From: ".concat(this.getHeader("From"),`\r
41
+ `),_+="Call-ID: ".concat(this.call_id,`\r
42
+ `),_+="CSeq: ".concat(this.cseq," ").concat(this.method,`\r
43
+ `),this.ua.configuration.extra_headers){var E=qt(this.ua.configuration.extra_headers),y;try{for(E.s();!(y=E.n()).done;){var A=y.value;_+="".concat(A.trim(),`\r
44
+ `)}}catch(C){E.e(C)}finally{E.f()}}_+="Content-Length: ".concat(0,`\r
45
45
  \r
46
- `),this.transport.send(h)}}]),r}(e_),Dh=function(c){Ou(r,c);var s=Du(r);function r(){var a;return sl(this,r),a=s.call(this),a.headers={},a.status_code=null,a.reason_phrase=null,a}return r}(e_),vs={OutgoingRequest:Zf,InitialOutgoingInviteRequest:wh,IncomingRequest:Oh,IncomingResponse:Dh};function Nh(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function sc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Uh(c,s,r){return s&&sc(c.prototype,s),r&&sc(c,r),c}var Ph=_t,cs=bt(),Kt=new Ph("DigestAuthentication"),xh=function(){function c(s){Nh(this,c),this._credentials=s,this._cnonce=null,this._nc=0,this._ncHex="00000000",this._algorithm=null,this._realm=null,this._nonce=null,this._opaque=null,this._stale=null,this._qop=null,this._method=null,this._uri=null,this._ha1=null,this._response=null}return Uh(c,[{key:"get",value:function(r){switch(r){case"realm":return this._realm;case"ha1":return this._ha1;default:Kt.warn('get() | cannot get "%s" parameter',r);return}}},{key:"authenticate",value:function(r,a){var o=r.method,t=r.ruri,n=r.body,h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;if(this._algorithm=a.algorithm,this._realm=a.realm,this._nonce=a.nonce,this._opaque=a.opaque,this._stale=a.stale,this._algorithm){if(this._algorithm!=="MD5")return Kt.warn('authenticate() | challenge with Digest algorithm different than "MD5", authentication aborted'),!1}else this._algorithm="MD5";if(!this._nonce)return Kt.warn("authenticate() | challenge without Digest nonce, authentication aborted"),!1;if(!this._realm)return Kt.warn("authenticate() | challenge without Digest realm, authentication aborted"),!1;if(!this._credentials.password){if(!this._credentials.ha1)return Kt.warn("authenticate() | no plain SIP password nor ha1 provided, authentication aborted"),!1;if(this._credentials.realm!==this._realm)return Kt.warn('authenticate() | no plain SIP password, and stored `realm` does not match the given `realm`, cannot authenticate [stored:"%s", given:"%s"]',this._credentials.realm,this._realm),!1}if(a.qop)if(a.qop.indexOf("auth-int")>-1)this._qop="auth-int";else if(a.qop.indexOf("auth")>-1)this._qop="auth";else return Kt.warn('authenticate() | challenge without Digest qop different than "auth" or "auth-int", authentication aborted'),!1;else this._qop=null;this._method=o,this._uri=t,this._cnonce=h||cs.createRandomToken(12),this._nc+=1;var _=Number(this._nc).toString(16);this._ncHex="00000000".substr(0,8-_.length)+_,this._nc===4294967296&&(this._nc=1,this._ncHex="00000001"),this._credentials.password?this._ha1=cs.calculateMD5("".concat(this._credentials.username,":").concat(this._realm,":").concat(this._credentials.password)):this._ha1=this._credentials.ha1;var d,g;return this._qop==="auth"?(d="".concat(this._method,":").concat(this._uri),g=cs.calculateMD5(d),Kt.debug('authenticate() | using qop=auth [a2:"%s"]',d),this._response=cs.calculateMD5("".concat(this._ha1,":").concat(this._nonce,":").concat(this._ncHex,":").concat(this._cnonce,":auth:").concat(g))):this._qop==="auth-int"?(d="".concat(this._method,":").concat(this._uri,":").concat(cs.calculateMD5(n||"")),g=cs.calculateMD5(d),Kt.debug('authenticate() | using qop=auth-int [a2:"%s"]',d),this._response=cs.calculateMD5("".concat(this._ha1,":").concat(this._nonce,":").concat(this._ncHex,":").concat(this._cnonce,":auth-int:").concat(g))):this._qop===null&&(d="".concat(this._method,":").concat(this._uri),g=cs.calculateMD5(d),Kt.debug('authenticate() | using qop=null [a2:"%s"]',d),this._response=cs.calculateMD5("".concat(this._ha1,":").concat(this._nonce,":").concat(g))),Kt.debug("authenticate() | response generated"),!0}},{key:"toString",value:function(){var r=[];if(!this._response)throw new Error("response field does not exist, cannot generate Authorization header");return r.push("algorithm=".concat(this._algorithm)),r.push('username="'.concat(this._credentials.username,'"')),r.push('realm="'.concat(this._realm,'"')),r.push('nonce="'.concat(this._nonce,'"')),r.push('uri="'.concat(this._uri,'"')),r.push('response="'.concat(this._response,'"')),this._opaque&&r.push('opaque="'.concat(this._opaque,'"')),this._qop&&(r.push("qop=".concat(this._qop)),r.push('cnonce="'.concat(this._cnonce,'"')),r.push("nc=".concat(this._ncHex))),"Digest ".concat(r.join(", "))}}]),c}(),fs=500,Mh=4e3,nc=5e3,t_={T1:fs,T2:Mh,T4:nc,TIMER_B:64*fs,TIMER_D:0*fs,TIMER_F:64*fs,TIMER_H:64*fs,TIMER_I:0*fs,TIMER_J:0*fs,TIMER_K:0*nc,TIMER_L:64*fs,TIMER_M:64*fs,PROVISIONAL_RESPONSE_INTERVAL:6e4};function ma(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ma=function(r){return typeof r}:ma=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ma(c)}function nl(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function rc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function rl(c,s,r){return s&&rc(c.prototype,s),r&&rc(c,r),c}function il(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&uu(c,s)}function uu(c,s){return uu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},uu(c,s)}function ll(c){var s=Lh();return function(){var a=ba(c),o;if(s){var t=ba(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return kh(this,o)}}function kh(c,s){return s&&(ma(s)==="object"||typeof s=="function")?s:qs(c)}function qs(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function Lh(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function ba(c){return ba=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},ba(c)}var al=ft.EventEmitter,ol=_t,Yi=it,ic=vs,rs=t_,lc=new ol("NonInviteClientTransaction"),kl=new ol("InviteClientTransaction"),$h=new ol("AckClientTransaction"),ac=new ol("NonInviteServerTransaction"),Ll=new ol("InviteServerTransaction"),_e={STATUS_TRYING:1,STATUS_PROCEEDING:2,STATUS_CALLING:3,STATUS_ACCEPTED:4,STATUS_COMPLETED:5,STATUS_TERMINATED:6,STATUS_CONFIRMED:7,NON_INVITE_CLIENT:"nict",NON_INVITE_SERVER:"nist",INVITE_CLIENT:"ict",INVITE_SERVER:"ist"},Hh=function(c){il(r,c);var s=ll(r);function r(a,o,t,n){var h;nl(this,r),h=s.call(this),h.type=_e.NON_INVITE_CLIENT,h.id="z9hG4bK".concat(Math.floor(Math.random()*1e7)),h.ua=a,h.transport=o,h.request=t,h.eventHandlers=n;var _="SIP/2.0/".concat(o.via_transport);return _+=" ".concat(a.configuration.via_host,";branch=").concat(h.id),h.request.setHeader("via",_),h.ua.newTransaction(qs(h)),h}return rl(r,[{key:"stateChanged",value:function(o){this.state=o,this.emit("stateChanged")}},{key:"send",value:function(){var o=this;this.stateChanged(_e.STATUS_TRYING),this.F=setTimeout(function(){o.timer_F()},rs.TIMER_F),this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){lc.debug("transport error occurred, deleting transaction ".concat(this.id)),clearTimeout(this.F),clearTimeout(this.K),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onTransportError()}},{key:"timer_F",value:function(){lc.debug("Timer F expired for transaction ".concat(this.id)),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onRequestTimeout()}},{key:"timer_K",value:function(){this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"receiveResponse",value:function(o){var t=this,n=o.status_code;if(n<200)switch(this.state){case _e.STATUS_TRYING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(o);break}else switch(this.state){case _e.STATUS_TRYING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_COMPLETED),clearTimeout(this.F),n===408?this.eventHandlers.onRequestTimeout():this.eventHandlers.onReceiveResponse(o),this.K=setTimeout(function(){t.timer_K()},rs.TIMER_K);break;case _e.STATUS_COMPLETED:break}}},{key:"C",get:function(){return _e}}]),r}(al),Fh=function(c){il(r,c);var s=ll(r);function r(a,o,t,n){var h;nl(this,r),h=s.call(this),h.type=_e.INVITE_CLIENT,h.id="z9hG4bK".concat(Math.floor(Math.random()*1e7)),h.ua=a,h.transport=o,h.request=t,h.eventHandlers=n,t.transaction=qs(h);var _="SIP/2.0/".concat(o.via_transport);return _+=" ".concat(a.configuration.via_host,";branch=").concat(h.id),h.request.setHeader("via",_),h.ua.newTransaction(qs(h)),h}return rl(r,[{key:"stateChanged",value:function(o){this.state=o,this.emit("stateChanged")}},{key:"send",value:function(){var o=this;this.stateChanged(_e.STATUS_CALLING),this.B=setTimeout(function(){o.timer_B()},rs.TIMER_B),this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){clearTimeout(this.B),clearTimeout(this.D),clearTimeout(this.M),this.state!==_e.STATUS_ACCEPTED&&(kl.debug("transport error occurred, deleting transaction ".concat(this.id)),this.eventHandlers.onTransportError()),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"timer_M",value:function(){kl.debug("Timer M expired for transaction ".concat(this.id)),this.state===_e.STATUS_ACCEPTED&&(clearTimeout(this.B),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this))}},{key:"timer_B",value:function(){kl.debug("Timer B expired for transaction ".concat(this.id)),this.state===_e.STATUS_CALLING&&(this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onRequestTimeout())}},{key:"timer_D",value:function(){kl.debug("Timer D expired for transaction ".concat(this.id)),clearTimeout(this.B),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"sendACK",value:function(o){var t=this,n=new ic.OutgoingRequest(Yi.ACK,this.request.ruri,this.ua,{route_set:this.request.getHeaders("route"),call_id:this.request.getHeader("call-id"),cseq:this.request.cseq});n.setHeader("from",this.request.getHeader("from")),n.setHeader("via",this.request.getHeader("via")),n.setHeader("to",o.getHeader("to")),this.D=setTimeout(function(){t.timer_D()},rs.TIMER_D),this.transport.send(n)}},{key:"cancel",value:function(o){if(this.state===_e.STATUS_PROCEEDING){var t=new ic.OutgoingRequest(Yi.CANCEL,this.request.ruri,this.ua,{route_set:this.request.getHeaders("route"),call_id:this.request.getHeader("call-id"),cseq:this.request.cseq});t.setHeader("from",this.request.getHeader("from")),t.setHeader("via",this.request.getHeader("via")),t.setHeader("to",this.request.getHeader("to")),o&&t.setHeader("reason",o),this.transport.send(t)}}},{key:"receiveResponse",value:function(o){var t=this,n=o.status_code;if(n>=100&&n<=199)switch(this.state){case _e.STATUS_CALLING:this.stateChanged(_e.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(o);break;case _e.STATUS_PROCEEDING:this.eventHandlers.onReceiveResponse(o);break}else if(n>=200&&n<=299)switch(this.state){case _e.STATUS_CALLING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_ACCEPTED),this.M=setTimeout(function(){t.timer_M()},rs.TIMER_M),this.eventHandlers.onReceiveResponse(o);break;case _e.STATUS_ACCEPTED:this.eventHandlers.onReceiveResponse(o);break}else if(n>=300&&n<=699)switch(this.state){case _e.STATUS_CALLING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_COMPLETED),this.sendACK(o),this.eventHandlers.onReceiveResponse(o);break;case _e.STATUS_COMPLETED:this.sendACK(o);break}}},{key:"C",get:function(){return _e}}]),r}(al),jh=function(c){il(r,c);var s=ll(r);function r(a,o,t,n){var h;nl(this,r),h=s.call(this),h.id="z9hG4bK".concat(Math.floor(Math.random()*1e7)),h.transport=o,h.request=t,h.eventHandlers=n;var _="SIP/2.0/".concat(o.via_transport);return _+=" ".concat(a.configuration.via_host,";branch=").concat(h.id),h.request.setHeader("via",_),h}return rl(r,[{key:"send",value:function(){this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){$h.debug("transport error occurred for transaction ".concat(this.id)),this.eventHandlers.onTransportError()}},{key:"C",get:function(){return _e}}]),r}(al),qh=function(c){il(r,c);var s=ll(r);function r(a,o,t){var n;return nl(this,r),n=s.call(this),n.type=_e.NON_INVITE_SERVER,n.id=t.via_branch,n.ua=a,n.transport=o,n.request=t,n.last_response="",t.server_transaction=qs(n),n.state=_e.STATUS_TRYING,a.newTransaction(qs(n)),n}return rl(r,[{key:"stateChanged",value:function(o){this.state=o,this.emit("stateChanged")}},{key:"timer_J",value:function(){ac.debug("Timer J expired for transaction ".concat(this.id)),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"onTransportError",value:function(){this.transportError||(this.transportError=!0,ac.debug("transport error occurred, deleting transaction ".concat(this.id)),clearTimeout(this.J),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this))}},{key:"receiveResponse",value:function(o,t,n,h){var _=this;if(o===100)switch(this.state){case _e.STATUS_TRYING:this.stateChanged(_e.STATUS_PROCEEDING),this.transport.send(t)||this.onTransportError();break;case _e.STATUS_PROCEEDING:this.last_response=t,this.transport.send(t)?n&&n():(this.onTransportError(),h&&h());break}else if(o>=200&&o<=699)switch(this.state){case _e.STATUS_TRYING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_COMPLETED),this.last_response=t,this.J=setTimeout(function(){_.timer_J()},rs.TIMER_J),this.transport.send(t)?n&&n():(this.onTransportError(),h&&h());break;case _e.STATUS_COMPLETED:break}}},{key:"C",get:function(){return _e}}]),r}(al),Vh=function(c){il(r,c);var s=ll(r);function r(a,o,t){var n;return nl(this,r),n=s.call(this),n.type=_e.INVITE_SERVER,n.id=t.via_branch,n.ua=a,n.transport=o,n.request=t,n.last_response="",t.server_transaction=qs(n),n.state=_e.STATUS_PROCEEDING,a.newTransaction(qs(n)),n.resendProvisionalTimer=null,t.reply(100),n}return rl(r,[{key:"stateChanged",value:function(o){this.state=o,this.emit("stateChanged")}},{key:"timer_H",value:function(){Ll.debug("Timer H expired for transaction ".concat(this.id)),this.state===_e.STATUS_COMPLETED&&Ll.debug("ACK not received, dialog will be terminated"),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"timer_I",value:function(){this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"timer_L",value:function(){Ll.debug("Timer L expired for transaction ".concat(this.id)),this.state===_e.STATUS_ACCEPTED&&(this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this))}},{key:"onTransportError",value:function(){this.transportError||(this.transportError=!0,Ll.debug("transport error occurred, deleting transaction ".concat(this.id)),this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),clearTimeout(this.L),clearTimeout(this.H),clearTimeout(this.I),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this))}},{key:"resend_provisional",value:function(){this.transport.send(this.last_response)||this.onTransportError()}},{key:"receiveResponse",value:function(o,t,n,h){var _=this;if(o>=100&&o<=199)switch(this.state){case _e.STATUS_PROCEEDING:this.transport.send(t)||this.onTransportError(),this.last_response=t;break}if(o>100&&o<=199&&this.state===_e.STATUS_PROCEEDING)this.resendProvisionalTimer===null&&(this.resendProvisionalTimer=setInterval(function(){_.resend_provisional()},rs.PROVISIONAL_RESPONSE_INTERVAL));else if(o>=200&&o<=299)switch(this.state){case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_ACCEPTED),this.last_response=t,this.L=setTimeout(function(){_.timer_L()},rs.TIMER_L),this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null);case _e.STATUS_ACCEPTED:this.transport.send(t)?n&&n():(this.onTransportError(),h&&h());break}else if(o>=300&&o<=699)switch(this.state){case _e.STATUS_PROCEEDING:this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),this.transport.send(t)?(this.stateChanged(_e.STATUS_COMPLETED),this.H=setTimeout(function(){_.timer_H()},rs.TIMER_H),n&&n()):(this.onTransportError(),h&&h());break}}},{key:"C",get:function(){return _e}}]),r}(al);function Bh(c,s){var r=c._transactions,a;switch(s.method){case Yi.INVITE:if(a=r.ist[s.via_branch],a){switch(a.state){case _e.STATUS_PROCEEDING:a.transport.send(a.last_response);break;case _e.STATUS_ACCEPTED:break}return!0}break;case Yi.ACK:if(a=r.ist[s.via_branch],a){if(a.state===_e.STATUS_ACCEPTED)return!1;if(a.state===_e.STATUS_COMPLETED)return a.state=_e.STATUS_CONFIRMED,a.I=setTimeout(function(){a.timer_I()},rs.TIMER_I),!0}else return!1;break;case Yi.CANCEL:return a=r.ist[s.via_branch],a?(s.reply_sl(200),a.state!==_e.STATUS_PROCEEDING):(s.reply_sl(481),!0);default:if(a=r.nist[s.via_branch],a){switch(a.state){case _e.STATUS_TRYING:break;case _e.STATUS_PROCEEDING:case _e.STATUS_COMPLETED:a.transport.send(a.last_response);break}return!0}break}}var ul={C:_e,NonInviteClientTransaction:Hh,InviteClientTransaction:Fh,AckClientTransaction:jh,NonInviteServerTransaction:qh,InviteServerTransaction:Vh,checkTransaction:Bh};function Gh(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function oc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Wh(c,s,r){return s&&oc(c.prototype,s),r&&oc(c,r),c}var Kh=_t,uc=it,Yh=xh,po=ul,Jh=new Kh("RequestSender"),mo={onRequestTimeout:function(){},onTransportError:function(){},onReceiveResponse:function(){},onAuthenticated:function(){}},cl=function(){function c(s,r,a){Gh(this,c),this._ua=s,this._eventHandlers=a,this._method=r.method,this._request=r,this._auth=null,this._challenged=!1,this._staled=!1;for(var o in mo)Object.prototype.hasOwnProperty.call(mo,o)&&(this._eventHandlers[o]||(this._eventHandlers[o]=mo[o]));s.status===s.C.STATUS_USER_CLOSED&&(this._method!==uc.BYE||this._method!==uc.ACK)&&this._eventHandlers.onTransportError()}return Wh(c,[{key:"send",value:function(){var r=this,a={onRequestTimeout:function(){r._eventHandlers.onRequestTimeout()},onTransportError:function(){r._eventHandlers.onTransportError()},onReceiveResponse:function(t){r._receiveResponse(t)}};switch(this._method){case"INVITE":this.clientTransaction=new po.InviteClientTransaction(this._ua,this._ua.transport,this._request,a);break;case"ACK":this.clientTransaction=new po.AckClientTransaction(this._ua,this._ua.transport,this._request,a);break;default:this.clientTransaction=new po.NonInviteClientTransaction(this._ua,this._ua.transport,this._request,a)}this._ua._configuration.authorization_jwt&&this._request.setHeader("Authorization",this._ua._configuration.authorization_jwt),this.clientTransaction.send()}},{key:"_receiveResponse",value:function(r){var a,o,t=r.status_code;if((t===401||t===407)&&(this._ua.configuration.password!==null||this._ua.configuration.ha1!==null)){if(r.status_code===401?(a=r.parseHeader("www-authenticate"),o="authorization"):(a=r.parseHeader("proxy-authenticate"),o="proxy-authorization"),!a){Jh.debug("".concat(r.status_code," with wrong or missing challenge, cannot authenticate")),this._eventHandlers.onReceiveResponse(r);return}if(!this._challenged||!this._staled&&a.stale===!0){if(this._auth||(this._auth=new Yh({username:this._ua.configuration.authorization_user,password:this._ua.configuration.password,realm:this._ua.configuration.realm,ha1:this._ua.configuration.ha1})),!this._auth.authenticate(this._request,a)){this._eventHandlers.onReceiveResponse(r);return}this._challenged=!0,this._ua.set("realm",this._auth.get("realm")),this._ua.set("ha1",this._auth.get("ha1")),a.stale&&(this._staled=!0),this._request=this._request.clone(),this._request.cseq+=1,this._request.setHeader("cseq","".concat(this._request.cseq," ").concat(this._method)),this._request.setHeader(o,this._auth.toString()),this._eventHandlers.onAuthenticated(this._request),this.send()}else this._eventHandlers.onReceiveResponse(r)}else this._eventHandlers.onReceiveResponse(r)}}]),c}();function zh(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function cc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Xh(c,s,r){return s&&cc(c.prototype,s),r&&cc(c,r),c}var Qh=_t,go=bt(),hn=it,fc=vs,_c=cl,Oi=new Qh("Registrator"),$l=10,Zh=function(){function c(s,r){zh(this,c),this._reg_id=1,this._ua=s,this._transport=r,this._registrar=s.configuration.registrar_server,this._expires=s.configuration.register_expires,this._call_id=go.createRandomToken(22),this._cseq=0,this._to_uri=s.configuration.uri,this._registrationTimer=null,this._registering=!1,this._registered=!1,this._contact=this._ua.contact.toString(),this._contact+=";+sip.ice",this._extraHeaders=[],this._extraContactParams="",this._sipInstance='"<urn:uuid:'.concat(this._ua.configuration.instance_id,'>"'),this._contact+=";reg-id=".concat(this._reg_id),this._contact+=";+sip.instance=".concat(this._sipInstance)}return Xh(c,[{key:"setExtraHeaders",value:function(r){Array.isArray(r)||(r=[]),this._extraHeaders=r.slice()}},{key:"setExtraContactParams",value:function(r){r instanceof Object||(r={}),this._extraContactParams="";for(var a in r)if(Object.prototype.hasOwnProperty.call(r,a)){var o=r[a];this._extraContactParams+=";".concat(a),o&&(this._extraContactParams+="=".concat(o))}}},{key:"register",value:function(){var r=this;if(this._registering){Oi.debug("Register request in progress...");return}var a=this._extraHeaders.slice();a.push("Contact: ".concat(this._contact,";expires=").concat(this._expires).concat(this._extraContactParams)),a.push("Expires: ".concat(this._expires));var o=new fc.OutgoingRequest(hn.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},a),t=new _c(this._ua,o,{onRequestTimeout:function(){r._registrationFailure(null,hn.causes.REQUEST_TIMEOUT)},onTransportError:function(){r._registrationFailure(null,hn.causes.CONNECTION_ERROR)},onAuthenticated:function(){r._cseq+=1},onReceiveResponse:function(h){if(h.cseq===r._cseq)switch(r._registrationTimer!==null&&(clearTimeout(r._registrationTimer),r._registrationTimer=null),!0){case/^1[0-9]{2}$/.test(h.status_code):break;case/^2[0-9]{2}$/.test(h.status_code):{if(r._registering=!1,!h.hasHeader("Contact")){Oi.debug("no Contact header in response to REGISTER, response ignored");break}var _=h.headers.Contact.reduce(function(y,A){return y.concat(A.parsed)},[]),d=_.find(function(y){return r._sipInstance===y.getParam("+sip.instance")&&r._reg_id===parseInt(y.getParam("reg-id"))});if(d||(d=_.find(function(y){return y.uri.user===r._ua.contact.uri.user})),!d){Oi.debug("no Contact header pointing to us, response ignored");break}var g=d.getParam("expires");!g&&h.hasHeader("expires")&&(g=h.getHeader("expires")),g||(g=r._expires),g=Number(g),g<$l&&(g=$l);var T=g>64?g*1e3/2+Math.floor((g/2-32)*1e3*Math.random()):g*1e3-5e3;r._registrationTimer=setTimeout(function(){r._registrationTimer=null,r._ua.listeners("registrationExpiring").length===0?r.register():r._ua.emit("registrationExpiring")},T),d.hasParam("temp-gruu")&&(r._ua.contact.temp_gruu=d.getParam("temp-gruu").replace(/"/g,"")),d.hasParam("pub-gruu")&&(r._ua.contact.pub_gruu=d.getParam("pub-gruu").replace(/"/g,"")),r._registered||(r._registered=!0,r._ua.registered({response:h}));break}case/^423$/.test(h.status_code):{h.hasHeader("min-expires")?(r._expires=Number(h.getHeader("min-expires")),r._expires<$l&&(r._expires=$l),r.register()):(Oi.debug("423 response received for REGISTER without Min-Expires"),r._registrationFailure(h,hn.causes.SIP_FAILURE_CODE));break}default:{var E=go.sipErrorCause(h.status_code);r._registrationFailure(h,E)}}}});this._registering=!0,t.send()}},{key:"unregister",value:function(){var r=this,a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this._registered){Oi.debug("already unregistered");return}this._registered=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null);var o=this._extraHeaders.slice();a.all?o.push("Contact: *".concat(this._extraContactParams)):o.push("Contact: ".concat(this._contact,";expires=0").concat(this._extraContactParams)),o.push("Expires: 0");var t=new fc.OutgoingRequest(hn.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},o),n=new _c(this._ua,t,{onRequestTimeout:function(){r._unregistered(null,hn.causes.REQUEST_TIMEOUT)},onTransportError:function(){r._unregistered(null,hn.causes.CONNECTION_ERROR)},onAuthenticated:function(){r._cseq+=1},onReceiveResponse:function(_){switch(!0){case/^1[0-9]{2}$/.test(_.status_code):break;case/^2[0-9]{2}$/.test(_.status_code):r._unregistered(_);break;default:{var d=go.sipErrorCause(_.status_code);r._unregistered(_,d)}}}});n.send()}},{key:"close",value:function(){this._registered&&this.unregister()}},{key:"onTransportClosed",value:function(){this._registering=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),this._registered&&(this._registered=!1,this._ua.unregistered({}))}},{key:"_registrationFailure",value:function(r,a){this._registering=!1,this._ua.registrationFailed({response:r||null,cause:a}),this._registered&&(this._registered=!1,this._ua.unregistered({response:r||null,cause:a}))}},{key:"_unregistered",value:function(r,a){this._registering=!1,this._registered=!1,this._ua.unregistered({response:r||null,cause:a||null})}},{key:"registered",get:function(){return this._registered}}]),c}();function ed(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function hc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function td(c,s,r){return s&&hc(c.prototype,s),r&&hc(c,r),c}var To=it,Hl=ul,sd=cl,vo={onRequestTimeout:function(){},onTransportError:function(){},onSuccessResponse:function(){},onErrorResponse:function(){},onAuthenticated:function(){},onDialogError:function(){}},nd=function(){function c(s,r,a){ed(this,c),this._dialog=s,this._ua=s._ua,this._request=r,this._eventHandlers=a,this._reattempt=!1,this._reattemptTimer=null;for(var o in vo)Object.prototype.hasOwnProperty.call(vo,o)&&(this._eventHandlers[o]||(this._eventHandlers[o]=vo[o]))}return td(c,[{key:"send",value:function(){var r=this,a=new sd(this._ua,this._request,{onRequestTimeout:function(){r._eventHandlers.onRequestTimeout()},onTransportError:function(){r._eventHandlers.onTransportError()},onAuthenticated:function(n){r._eventHandlers.onAuthenticated(n)},onReceiveResponse:function(n){r._receiveResponse(n)}});if(a.send(),(this._request.method===To.INVITE||this._request.method===To.UPDATE&&this._request.body)&&a.clientTransaction.state!==Hl.C.STATUS_TERMINATED){this._dialog.uac_pending_reply=!0;var o=function t(){(a.clientTransaction.state===Hl.C.STATUS_ACCEPTED||a.clientTransaction.state===Hl.C.STATUS_COMPLETED||a.clientTransaction.state===Hl.C.STATUS_TERMINATED)&&(a.clientTransaction.removeListener("stateChanged",t),r._dialog.uac_pending_reply=!1)};a.clientTransaction.on("stateChanged",o)}}},{key:"_receiveResponse",value:function(r){var a=this;r.status_code===408||r.status_code===481?this._eventHandlers.onDialogError(r):r.method===To.INVITE&&r.status_code===491?this._reattempt?r.status_code>=200&&r.status_code<300?this._eventHandlers.onSuccessResponse(r):r.status_code>=300&&this._eventHandlers.onErrorResponse(r):(this._request.cseq=this._dialog.local_seqnum+=1,this._reattemptTimer=setTimeout(function(){a._dialog.isTerminated()||(a._reattempt=!0,a.send())},1e3)):r.status_code>=200&&r.status_code<300?this._eventHandlers.onSuccessResponse(r):r.status_code>=300&&this._eventHandlers.onErrorResponse(r)}},{key:"request",get:function(){return this._request}}]),c}();function rd(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function dc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function pc(c,s,r){return s&&dc(c.prototype,s),r&&dc(c,r),c}var id=_t,mc=vs,xs=it,Di=ul,ld=nd,Eo=bt(),So=new id("Dialog"),Ms={STATUS_EARLY:1,STATUS_CONFIRMED:2,STATUS_TERMINATED:3},ad=function(){pc(c,null,[{key:"C",get:function(){return Ms}}]);function c(s,r,a){var o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Ms.STATUS_CONFIRMED;if(rd(this,c),this._owner=s,this._ua=s._ua,this._uac_pending_reply=!1,this._uas_pending_reply=!1,!r.hasHeader("contact"))return{error:"unable to create a Dialog without Contact header field"};r instanceof mc.IncomingResponse&&(o=r.status_code<200?Ms.STATUS_EARLY:Ms.STATUS_CONFIRMED);var t=r.parseHeader("contact");a==="UAS"?(this._id={call_id:r.call_id,local_tag:r.to_tag,remote_tag:r.from_tag,toString:function(){return this.call_id+this.local_tag+this.remote_tag}},this._state=o,this._remote_seqnum=r.cseq,this._local_uri=r.parseHeader("to").uri,this._remote_uri=r.parseHeader("from").uri,this._remote_target=t.uri,this._route_set=r.getHeaders("record-route"),this._ack_seqnum=this._remote_seqnum):a==="UAC"&&(this._id={call_id:r.call_id,local_tag:r.from_tag,remote_tag:r.to_tag,toString:function(){return this.call_id+this.local_tag+this.remote_tag}},this._state=o,this._local_seqnum=r.cseq,this._local_uri=r.parseHeader("from").uri,this._remote_uri=r.parseHeader("to").uri,this._remote_target=t.uri,this._route_set=r.getHeaders("record-route").reverse(),this._ack_seqnum=null),this._ua.newDialog(this),So.debug("new ".concat(a," dialog created with status ").concat(this._state===Ms.STATUS_EARLY?"EARLY":"CONFIRMED"))}return pc(c,[{key:"isTerminated",value:function(){return this._status===Ms.STATUS_TERMINATED}},{key:"update",value:function(r,a){this._state=Ms.STATUS_CONFIRMED,So.debug("dialog ".concat(this._id.toString()," changed to CONFIRMED state")),a==="UAC"&&(this._route_set=r.getHeaders("record-route").reverse())}},{key:"terminate",value:function(){So.debug("dialog ".concat(this._id.toString()," deleted")),this._ua.destroyDialog(this),this._state=Ms.STATUS_TERMINATED}},{key:"sendRequest",value:function(r){var a=this,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=Eo.cloneArray(o.extraHeaders),n=Eo.cloneObject(o.eventHandlers),h=o.body||null,_=this._createRequest(r,t,h);n.onAuthenticated=function(){a._local_seqnum+=1};var d=new ld(this,_,n);return d.send(),_}},{key:"receiveRequest",value:function(r){this._checkInDialogRequest(r)&&(r.method===xs.ACK&&this._ack_seqnum!==null?this._ack_seqnum=null:r.method===xs.INVITE&&(this._ack_seqnum=r.cseq),this._owner.receiveRequest(r))}},{key:"_createRequest",value:function(r,a,o){a=Eo.cloneArray(a),this._local_seqnum||(this._local_seqnum=Math.floor(Math.random()*1e4));var t=r===xs.CANCEL||r===xs.ACK?this._local_seqnum:this._local_seqnum+=1,n=new mc.OutgoingRequest(r,this._remote_target,this._ua,{cseq:t,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},a,o);return n}},{key:"_checkInDialogRequest",value:function(r){var a=this;if(!this._remote_seqnum)this._remote_seqnum=r.cseq;else if(r.cseq<this._remote_seqnum)if(r.method===xs.ACK){if(this._ack_seqnum===null||r.cseq!==this._ack_seqnum)return!1}else return r.reply(500),!1;else r.cseq>this._remote_seqnum&&(this._remote_seqnum=r.cseq);if(r.method===xs.INVITE||r.method===xs.UPDATE&&r.body){if(this._uac_pending_reply===!0)r.reply(491);else if(this._uas_pending_reply===!0){var o=(Math.random()*10|0)+1;return r.reply(500,null,["Retry-After:".concat(o)]),!1}else{this._uas_pending_reply=!0;var t=function n(){(r.server_transaction.state===Di.C.STATUS_ACCEPTED||r.server_transaction.state===Di.C.STATUS_COMPLETED||r.server_transaction.state===Di.C.STATUS_TERMINATED)&&(r.server_transaction.removeListener("stateChanged",n),a._uas_pending_reply=!1)};r.server_transaction.on("stateChanged",t)}r.hasHeader("contact")&&r.server_transaction.on("stateChanged",function(){r.server_transaction.state===Di.C.STATUS_ACCEPTED&&(a._remote_target=r.parseHeader("contact").uri)})}else r.method===xs.NOTIFY&&r.hasHeader("contact")&&r.server_transaction.on("stateChanged",function(){r.server_transaction.state===Di.C.STATUS_COMPLETED&&(a._remote_target=r.parseHeader("contact").uri)});return!0}},{key:"id",get:function(){return this._id}},{key:"local_seqnum",get:function(){return this._local_seqnum},set:function(r){this._local_seqnum=r}},{key:"owner",get:function(){return this._owner}},{key:"uac_pending_reply",get:function(){return this._uac_pending_reply},set:function(r){this._uac_pending_reply=r}},{key:"uas_pending_reply",get:function(){return this._uas_pending_reply}}]),c}(),Nu={exports:{}};function ga(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ga=function(r){return typeof r}:ga=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ga(c)}function od(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function gc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function ud(c,s,r){return s&&gc(c.prototype,s),r&&gc(c,r),c}function cd(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&cu(c,s)}function cu(c,s){return cu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},cu(c,s)}function fd(c){var s=dd();return function(){var a=wa(c),o;if(s){var t=wa(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return _d(this,o)}}function _d(c,s){return s&&(ga(s)==="object"||typeof s=="function")?s:hd(c)}function hd(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function dd(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function wa(c){return wa=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},wa(c)}var pd=ft.EventEmitter,md=_t,gd=it,Td=Bs,Tc=bt(),vd=new md("RTCSession:DTMF"),s_={MIN_DURATION:70,MAX_DURATION:6e3,DEFAULT_DURATION:100,MIN_INTER_TONE_GAP:50,DEFAULT_INTER_TONE_GAP:500};Nu.exports=function(c){cd(r,c);var s=fd(r);function r(a){var o;return od(this,r),o=s.call(this),o._session=a,o._direction=null,o._tone=null,o._duration=null,o._request=null,o}return ud(r,[{key:"send",value:function(o){var t=this,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(o===void 0)throw new TypeError("Not enough arguments");if(this._direction="outgoing",this._session.status!==this._session.C.STATUS_CONFIRMED&&this._session.status!==this._session.C.STATUS_WAITING_FOR_ACK)throw new Td.InvalidStateError(this._session.status);var h=Tc.cloneArray(n.extraHeaders);if(this.eventHandlers=Tc.cloneObject(n.eventHandlers),typeof o=="string")o=o.toUpperCase();else if(typeof o=="number")o=o.toString();else throw new TypeError("Invalid tone: ".concat(o));if(o.match(/^[0-9A-DR#*]$/))this._tone=o;else throw new TypeError("Invalid tone: ".concat(o));this._duration=n.duration,h.push("Content-Type: application/dtmf-relay");var _="Signal=".concat(this._tone,`\r
47
- `);_+="Duration=".concat(this._duration),this._session.newDTMF({originator:"local",dtmf:this,request:this._request}),this._session.sendRequest(gd.INFO,{extraHeaders:h,eventHandlers:{onSuccessResponse:function(g){t.emit("succeeded",{originator:"remote",response:g})},onErrorResponse:function(g){t.eventHandlers.onFailed&&t.eventHandlers.onFailed(),t.emit("failed",{originator:"remote",response:g})},onRequestTimeout:function(){t._session.onRequestTimeout()},onTransportError:function(){t._session.onTransportError()},onDialogError:function(){t._session.onDialogError()}},body:_})}},{key:"init_incoming",value:function(o){var t=/^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/,n=/^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/;if(this._direction="incoming",this._request=o,o.reply(200),o.body){var h=o.body.split(`
48
- `);h.length>=1&&t.test(h[0])&&(this._tone=h[0].replace(t,"$2")),h.length>=2&&n.test(h[1])&&(this._duration=parseInt(h[1].replace(n,"$2"),10))}this._duration||(this._duration=s_.DEFAULT_DURATION),this._tone?this._session.newDTMF({originator:"remote",dtmf:this,request:o}):vd.debug("invalid INFO DTMF received, discarded")}},{key:"tone",get:function(){return this._tone}},{key:"duration",get:function(){return this._duration}}]),r}(pd);Nu.exports.C=s_;var Ed=Nu.exports;function Ta(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ta=function(r){return typeof r}:Ta=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Ta(c)}function Sd(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function vc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function yd(c,s,r){return s&&vc(c.prototype,s),r&&vc(c,r),c}function Ad(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&fu(c,s)}function fu(c,s){return fu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},fu(c,s)}function Cd(c){var s=bd();return function(){var a=Oa(c),o;if(s){var t=Oa(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return Rd(this,o)}}function Rd(c,s){return s&&(Ta(s)==="object"||typeof s=="function")?s:Id(c)}function Id(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function bd(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function Oa(c){return Oa=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Oa(c)}var wd=ft.EventEmitter,Od=it,Dd=Bs,Nd=bt(),Ud=function(c){Ad(r,c);var s=Cd(r);function r(a){var o;return Sd(this,r),o=s.call(this),o._session=a,o._direction=null,o._contentType=null,o._body=null,o}return yd(r,[{key:"send",value:function(o,t){var n=this,h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(this._direction="outgoing",o===void 0)throw new TypeError("Not enough arguments");if(this._session.status!==this._session.C.STATUS_CONFIRMED&&this._session.status!==this._session.C.STATUS_WAITING_FOR_ACK)throw new Dd.InvalidStateError(this._session.status);this._contentType=o,this._body=t;var _=Nd.cloneArray(h.extraHeaders);_.push("Content-Type: ".concat(o)),this._session.newInfo({originator:"local",info:this,request:this.request}),this._session.sendRequest(Od.INFO,{extraHeaders:_,eventHandlers:{onSuccessResponse:function(g){n.emit("succeeded",{originator:"remote",response:g})},onErrorResponse:function(g){n.emit("failed",{originator:"remote",response:g})},onTransportError:function(){n._session.onTransportError()},onRequestTimeout:function(){n._session.onRequestTimeout()},onDialogError:function(){n._session.onDialogError()}},body:t})}},{key:"init_incoming",value:function(o){this._direction="incoming",this.request=o,o.reply(200),this._contentType=o.hasHeader("Content-Type")?o.getHeader("Content-Type").toLowerCase():void 0,this._body=o.body,this._session.newInfo({originator:"remote",info:this,request:o})}},{key:"contentType",get:function(){return this._contentType}},{key:"body",get:function(){return this._body}}]),r}(wd);function Pd(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Ec(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function xd(c,s,r){return s&&Ec(c.prototype,s),r&&Ec(c,r),c}var Md=_t,Sc=it,kd=new Md("RTCSession:ReferNotifier"),yo={event_type:"refer",body_type:"message/sipfrag;version=2.0",expires:300},Ld=function(){function c(s,r,a){Pd(this,c),this._session=s,this._id=r,this._expires=a||yo.expires,this._active=!0,this.notify(100)}return xd(c,[{key:"notify",value:function(r,a){if(kd.debug("notify()"),this._active!==!1){a=a||Sc.REASON_PHRASE[r]||"";var o;r>=200?o="terminated;reason=noresource":o="active;expires=".concat(this._expires),this._session.sendRequest(Sc.NOTIFY,{extraHeaders:["Event: ".concat(yo.event_type,";id=").concat(this._id),"Subscription-State: ".concat(o),"Content-Type: ".concat(yo.body_type)],body:"SIP/2.0 ".concat(r," ").concat(a),eventHandlers:{onErrorResponse:function(){this._active=!1}}})}}}]),c}();function va(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?va=function(r){return typeof r}:va=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},va(c)}function $d(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function yc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Hd(c,s,r){return s&&yc(c.prototype,s),r&&yc(c,r),c}function Fd(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&_u(c,s)}function _u(c,s){return _u=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},_u(c,s)}function jd(c){var s=Bd();return function(){var a=Da(c),o;if(s){var t=Da(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return qd(this,o)}}function qd(c,s){return s&&(va(s)==="object"||typeof s=="function")?s:Vd(c)}function Vd(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function Bd(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function Da(c){return Da=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Da(c)}var Gd=ft.EventEmitter,Wd=_t,Ni=it,Kd=ls(),Ac=bt(),dn=new Wd("RTCSession:ReferSubscriber"),Yd=function(c){Fd(r,c);var s=jd(r);function r(a){var o;return $d(this,r),o=s.call(this),o._id=null,o._session=a,o}return Hd(r,[{key:"sendRefer",value:function(o){var t=this,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};dn.debug("sendRefer()");var h=Ac.cloneArray(n.extraHeaders),_=Ac.cloneObject(n.eventHandlers);for(var d in _)Object.prototype.hasOwnProperty.call(_,d)&&this.on(d,_[d]);var g=null;n.replaces&&(g=n.replaces._request.call_id,g+=";to-tag=".concat(n.replaces._to_tag),g+=";from-tag=".concat(n.replaces._from_tag),g=encodeURIComponent(g));var T="Refer-To: <".concat(o).concat(g?"?Replaces=".concat(g):"",">");if(h.push(T),!h.some(function(A){return A.toLowerCase().startsWith("referred-by:")})){var E="Referred-By: <".concat(this._session._ua._configuration.uri._scheme,":").concat(this._session._ua._configuration.uri._user,"@").concat(this._session._ua._configuration.uri._host,">");h.push(E)}h.push("Contact: ".concat(this._session.contact));var y=this._session.sendRequest(Ni.REFER,{extraHeaders:h,eventHandlers:{onSuccessResponse:function(C){t._requestSucceeded(C)},onErrorResponse:function(C){t._requestFailed(C,Ni.causes.REJECTED)},onTransportError:function(){t._requestFailed(null,Ni.causes.CONNECTION_ERROR)},onRequestTimeout:function(){t._requestFailed(null,Ni.causes.REQUEST_TIMEOUT)},onDialogError:function(){t._requestFailed(null,Ni.causes.DIALOG_ERROR)}}});this._id=y.cseq}},{key:"receiveNotify",value:function(o){if(dn.debug("receiveNotify()"),!!o.body){var t=Kd.parse(o.body.trim().split(`\r
49
- `,1)[0],"Status_Line");if(t===-1){dn.debug('receiveNotify() | error parsing NOTIFY body: "'.concat(o.body,'"'));return}switch(!0){case/^100$/.test(t.status_code):this.emit("trying",{request:o,status_line:t});break;case/^1[0-9]{2}$/.test(t.status_code):this.emit("progress",{request:o,status_line:t});break;case/^2[0-9]{2}$/.test(t.status_code):this.emit("accepted",{request:o,status_line:t});break;default:this.emit("failed",{request:o,status_line:t});break}}}},{key:"_requestSucceeded",value:function(o){dn.debug("REFER succeeded"),dn.debug('emit "requestSucceeded"'),this.emit("requestSucceeded",{response:o})}},{key:"_requestFailed",value:function(o,t){dn.debug("REFER failed"),dn.debug('emit "requestFailed"'),this.emit("requestFailed",{response:o||null,cause:t})}},{key:"id",get:function(){return this._id}}]),r}(Gd);function Ea(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ea=function(r){return typeof r}:Ea=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Ea(c)}function _s(c,s){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=Jd(c))||s&&c&&typeof c.length=="number"){r&&(c=r);var a=0,o=function(){};return{s:o,n:function(){return a>=c.length?{done:!0}:{done:!1,value:c[a++]}},e:function(d){throw d},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
50
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var t=!0,n=!1,h;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){n=!0,h=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(n)throw h}}}}function Jd(c,s){if(c){if(typeof c=="string")return Cc(c,s);var r=Object.prototype.toString.call(c).slice(8,-1);if(r==="Object"&&c.constructor&&(r=c.constructor.name),r==="Map"||r==="Set")return Array.from(c);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Cc(c,s)}}function Cc(c,s){(s==null||s>c.length)&&(s=c.length);for(var r=0,a=new Array(s);r<s;r++)a[r]=c[r];return a}function zd(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Rc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Ic(c,s,r){return s&&Rc(c.prototype,s),r&&Rc(c,r),c}function Xd(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&hu(c,s)}function hu(c,s){return hu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},hu(c,s)}function Qd(c){var s=tp();return function(){var a=Na(c),o;if(s){var t=Na(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return Zd(this,o)}}function Zd(c,s){return s&&(Ea(s)==="object"||typeof s=="function")?s:ep(c)}function ep(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function tp(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function Na(c){return Na=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Na(c)}var sp=ft.EventEmitter,bc=Pt,np=_t,ce=it,pn=Bs,wc=ul,Ve=bt(),Ui=t_,rp=vs,Fl=ad,ip=cl,xt=Ed,Oc=Ud,lp=Ld,ap=Yd,Dc=Gs(),K=new np("RTCSession"),Q={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_ACK:6,STATUS_CANCELED:7,STATUS_TERMINATED:8,STATUS_CONFIRMED:9},jl=["audio","video"],op=function(c){Xd(r,c);var s=Qd(r);Ic(r,null,[{key:"C",get:function(){return Q}}]);function r(a){var o;return zd(this,r),K.debug("new"),o=s.call(this),o._id=null,o._ua=a,o._status=Q.STATUS_NULL,o._dialog=null,o._earlyDialogs={},o._contact=null,o._from_tag=null,o._to_tag=null,o._connection=null,o._connectionPromiseQueue=Promise.resolve(),o._request=null,o._is_canceled=!1,o._cancel_reason="",o._is_confirmed=!1,o._late_sdp=!1,o._rtcOfferConstraints=null,o._rtcAnswerConstraints=null,o._localMediaStream=null,o._localMediaStreamLocallyGenerated=!1,o._rtcReady=!0,o._iceReady=!1,o._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},o._direction=null,o._local_identity=null,o._remote_identity=null,o._start_time=null,o._end_time=null,o._tones=null,o._audioMuted=!1,o._videoMuted=!1,o._localHold=!1,o._remoteHold=!1,o._sessionTimers={enabled:o._ua.configuration.session_timers,refreshMethod:o._ua.configuration.session_timers_refresh_method,defaultExpires:ce.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},o._referSubscribers={},o._data={},o}return Ic(r,[{key:"isInProgress",value:function(){switch(this._status){case Q.STATUS_NULL:case Q.STATUS_INVITE_SENT:case Q.STATUS_1XX_RECEIVED:case Q.STATUS_INVITE_RECEIVED:case Q.STATUS_WAITING_FOR_ANSWER:return!0;default:return!1}}},{key:"isEstablished",value:function(){switch(this._status){case Q.STATUS_ANSWERED:case Q.STATUS_WAITING_FOR_ACK:case Q.STATUS_CONFIRMED:return!0;default:return!1}}},{key:"isEnded",value:function(){switch(this._status){case Q.STATUS_CANCELED:case Q.STATUS_TERMINATED:return!0;default:return!1}}},{key:"isMuted",value:function(){return{audio:this._audioMuted,video:this._videoMuted}}},{key:"isOnHold",value:function(){return{local:this._localHold,remote:this._remoteHold}}},{key:"connect",value:function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;K.debug("connect()");var h=o,_=Ve.cloneObject(t.eventHandlers),d=Ve.cloneArray(t.extraHeaders),g=Ve.cloneObject(t.mediaConstraints,{audio:!0,video:!0}),T=t.mediaStream||null,E=Ve.cloneObject(t.pcConfig,{iceServers:[]}),y=t.rtcConstraints||null,A=t.rtcOfferConstraints||null;if(this._rtcOfferConstraints=A,this._rtcAnswerConstraints=t.rtcAnswerConstraints||null,this._data=t.data||this._data,o===void 0)throw new TypeError("Not enough arguments");if(this._status!==Q.STATUS_NULL)throw new pn.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new pn.NotSupportedError("WebRTC not supported");if(o=this._ua.normalizeTarget(o),!o)throw new TypeError("Invalid target: ".concat(h));this._sessionTimers.enabled&&Ve.isDecimal(t.sessionTimersExpires)&&(t.sessionTimersExpires>=ce.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=t.sessionTimersExpires:this._sessionTimers.defaultExpires=ce.SESSION_EXPIRES);for(var C in _)Object.prototype.hasOwnProperty.call(_,C)&&this.on(C,_[C]);this._from_tag=Ve.newTag();var I=t.anonymous||!1,H={from_tag:this._from_tag};this._contact=this._ua.contact.toString({anonymous:I,outbound:!0}),I?(H.from_display_name="Anonymous",H.from_uri=new Dc("sip","anonymous","anonymous.invalid"),d.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString())),d.push("Privacy: id")):t.fromUserName&&(H.from_uri=new Dc("sip",t.fromUserName,this._ua.configuration.uri.host),d.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString()))),t.fromDisplayName&&(H.from_display_name=t.fromDisplayName),d.push("Contact: ".concat(this._contact)),d.push("Content-Type: application/sdp"),this._sessionTimers.enabled&&d.push("Session-Expires: ".concat(this._sessionTimers.defaultExpires).concat(this._ua.configuration.session_timers_force_refresher?";refresher=uac":"")),this._request=new rp.InitialOutgoingInviteRequest(o,this._ua,H,d),this._id=this._request.call_id+this._from_tag,this._createRTCConnection(E,y),this._direction="outgoing",this._local_identity=this._request.from,this._remote_identity=this._request.to,n&&n(this),this._newRTCSession("local",this._request),this._sendInitialRequest(g,A,T)}},{key:"init_incoming",value:function(o,t){var n=this;K.debug("init_incoming()");var h,_=o.hasHeader("Content-Type")?o.getHeader("Content-Type").toLowerCase():void 0;if(o.body&&_!=="application/sdp"){o.reply(415);return}if(this._status=Q.STATUS_INVITE_RECEIVED,this._from_tag=o.from_tag,this._id=o.call_id+this._from_tag,this._request=o,this._contact=this._ua.contact.toString(),o.hasHeader("expires")&&(h=o.getHeader("expires")*1e3),o.to_tag=Ve.newTag(),!this._createDialog(o,"UAS",!0)){o.reply(500,"Missing Contact header field");return}o.body?this._late_sdp=!1:this._late_sdp=!0,this._status=Q.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(function(){o.reply(408),n._failed("local",null,ce.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),h&&(this._timers.expiresTimer=setTimeout(function(){n._status===Q.STATUS_WAITING_FOR_ANSWER&&(o.reply(487),n._failed("system",null,ce.causes.EXPIRES))},h)),this._direction="incoming",this._local_identity=o.to,this._remote_identity=o.from,t&&t(this),this._newRTCSession("remote",o),this._status!==Q.STATUS_TERMINATED&&(o.reply(180,null,["Contact: ".concat(this._contact)]),this._progress("local",null))}},{key:"answer",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("answer()");var n=this._request,h=Ve.cloneArray(t.extraHeaders),_=Ve.cloneObject(t.mediaConstraints),d=t.mediaStream||null,g=Ve.cloneObject(t.pcConfig,{iceServers:[]}),T=t.rtcConstraints||null,E=t.rtcAnswerConstraints||null,y=Ve.cloneObject(t.rtcOfferConstraints),A,C=!1,I=!1,H=!1,L=!1;if(this._rtcAnswerConstraints=E,this._rtcOfferConstraints=t.rtcOfferConstraints||null,this._data=t.data||this._data,this._direction!=="incoming")throw new pn.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==Q.STATUS_WAITING_FOR_ANSWER)throw new pn.InvalidStateError(this._status);if(this._sessionTimers.enabled&&Ve.isDecimal(t.sessionTimersExpires)&&(t.sessionTimersExpires>=ce.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=t.sessionTimersExpires:this._sessionTimers.defaultExpires=ce.SESSION_EXPIRES),this._status=Q.STATUS_ANSWERED,!this._createDialog(n,"UAS")){n.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),h.unshift("Contact: ".concat(this._contact));var oe=n.parseSDP();Array.isArray(oe.media)||(oe.media=[oe.media]);var N=_s(oe.media),j;try{for(N.s();!(j=N.n()).done;){var Se=j.value;Se.type==="audio"&&(C=!0,(!Se.direction||Se.direction==="sendrecv")&&(H=!0)),Se.type==="video"&&(I=!0,(!Se.direction||Se.direction==="sendrecv")&&(L=!0))}}catch(F){N.e(F)}finally{N.f()}if(d&&_.audio===!1){A=d.getAudioTracks();var ve=_s(A),M;try{for(ve.s();!(M=ve.n()).done;){var D=M.value;d.removeTrack(D)}}catch(F){ve.e(F)}finally{ve.f()}}if(d&&_.video===!1){A=d.getVideoTracks();var B=_s(A),V;try{for(B.s();!(V=B.n()).done;){var J=V.value;d.removeTrack(J)}}catch(F){B.e(F)}finally{B.f()}}!d&&_.audio===void 0&&(_.audio=H),!d&&_.video===void 0&&(_.video=L),!d&&!C&&!y.offerToReceiveAudio&&(_.audio=!1),!d&&!I&&!y.offerToReceiveVideo&&(_.video=!1),this._createRTCConnection(g,T),Promise.resolve().then(function(){if(d)return d;if(_.audio||_.video)return o._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(_).catch(function(F){throw o._status===Q.STATUS_TERMINATED?new Error("terminated"):(n.reply(480),o._failed("local",null,ce.causes.USER_DENIED_MEDIA_ACCESS),K.warn('emit "getusermediafailed" [error:%o]',F),o.emit("getusermediafailed",F),new Error("getUserMedia() failed"))})}).then(function(F){if(o._status===Q.STATUS_TERMINATED)throw new Error("terminated");o._localMediaStream=F,F&&F.getTracks().forEach(function(X){o._connection.addTrack(X,F)})}).then(function(){if(!o._late_sdp){var F={originator:"remote",type:"offer",sdp:n.body};K.debug('emit "sdp"'),o.emit("sdp",F);var X=new RTCSessionDescription({type:"offer",sdp:F.sdp});return o._connectionPromiseQueue=o._connectionPromiseQueue.then(function(){return o._connection.setRemoteDescription(X)}).catch(function(U){throw n.reply(488),o._failed("system",null,ce.causes.WEBRTC_ERROR),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',U),o.emit("peerconnection:setremotedescriptionfailed",U),new Error("peerconnection.setRemoteDescription() failed")}),o._connectionPromiseQueue}}).then(function(){if(o._status===Q.STATUS_TERMINATED)throw new Error("terminated");return o._connecting(n),o._late_sdp?o._createLocalDescription("offer",o._rtcOfferConstraints).catch(function(){throw n.reply(500),new Error("_createLocalDescription() failed")}):o._createLocalDescription("answer",E).catch(function(){throw n.reply(500),new Error("_createLocalDescription() failed")})}).then(function(F){if(o._status===Q.STATUS_TERMINATED)throw new Error("terminated");o._handleSessionTimersInIncomingRequest(n,h),n.reply(200,null,h,F,function(){o._status=Q.STATUS_WAITING_FOR_ACK,o._setInvite2xxTimer(n,F),o._setACKTimer(),o._accepted("local")},function(){o._failed("system",null,ce.causes.CONNECTION_ERROR)})}).catch(function(F){o._status!==Q.STATUS_TERMINATED&&K.warn(F)})}},{key:"terminate",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("terminate()");var n=t.cause||ce.causes.BYE,h=Ve.cloneArray(t.extraHeaders),_=t.body,d,g=t.status_code,T=t.reason_phrase;if(this._status===Q.STATUS_TERMINATED)throw new pn.InvalidStateError(this._status);switch(this._status){case Q.STATUS_NULL:case Q.STATUS_INVITE_SENT:case Q.STATUS_1XX_RECEIVED:if(K.debug("canceling session"),g&&(g<200||g>=700))throw new TypeError("Invalid status_code: ".concat(g));g&&(T=T||ce.REASON_PHRASE[g]||"",d="SIP ;cause=".concat(g,' ;text="').concat(T,'"')),this._status===Q.STATUS_NULL||this._status===Q.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=d):this._status===Q.STATUS_1XX_RECEIVED&&this._request.cancel(d),this._status=Q.STATUS_CANCELED,this._failed("local",null,ce.causes.CANCELED);break;case Q.STATUS_WAITING_FOR_ANSWER:case Q.STATUS_ANSWERED:if(K.debug("rejecting session"),g=g||480,g<300||g>=700)throw new TypeError("Invalid status_code: ".concat(g));this._request.reply(g,T,h,_),this._failed("local",null,ce.causes.REJECTED);break;case Q.STATUS_WAITING_FOR_ACK:case Q.STATUS_CONFIRMED:if(K.debug("terminating session"),T=t.reason_phrase||ce.REASON_PHRASE[g]||"",g&&(g<200||g>=700))throw new TypeError("Invalid status_code: ".concat(g));if(g&&h.push("Reason: SIP ;cause=".concat(g,'; text="').concat(T,'"')),this._status===Q.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==wc.C.STATUS_TERMINATED){var E=this._dialog;this.receiveRequest=function(y){var A=y.method;A===ce.ACK&&(o.sendRequest(ce.BYE,{extraHeaders:h,body:_}),E.terminate())},this._request.server_transaction.on("stateChanged",function(){o._request.server_transaction.state===wc.C.STATUS_TERMINATED&&(o.sendRequest(ce.BYE,{extraHeaders:h,body:_}),E.terminate())}),this._ended("local",null,n),this._dialog=E,this._ua.newDialog(E)}else this.sendRequest(ce.BYE,{extraHeaders:h,body:_}),this._ended("local",null,n)}}},{key:"sendDTMF",value:function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};K.debug("sendDTMF() | tones: %s",o);var n=0,h=t.duration||null,_=t.interToneGap||null,d=t.transportType||ce.DTMF_TRANSPORT.INFO;if(o===void 0)throw new TypeError("Not enough arguments");if(this._status!==Q.STATUS_CONFIRMED&&this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_1XX_RECEIVED)throw new pn.InvalidStateError(this._status);if(d!==ce.DTMF_TRANSPORT.INFO&&d!==ce.DTMF_TRANSPORT.RFC2833)throw new TypeError("invalid transportType: ".concat(d));if(typeof o=="number"&&(o=o.toString()),!o||typeof o!="string"||!o.match(/^[0-9A-DR#*,]+$/i))throw new TypeError("Invalid tones: ".concat(o));if(h&&!Ve.isDecimal(h))throw new TypeError("Invalid tone duration: ".concat(h));if(h?h<xt.C.MIN_DURATION?(K.debug('"duration" value is lower than the minimum allowed, setting it to '.concat(xt.C.MIN_DURATION," milliseconds")),h=xt.C.MIN_DURATION):h>xt.C.MAX_DURATION?(K.debug('"duration" value is greater than the maximum allowed, setting it to '.concat(xt.C.MAX_DURATION," milliseconds")),h=xt.C.MAX_DURATION):h=Math.abs(h):h=xt.C.DEFAULT_DURATION,t.duration=h,_&&!Ve.isDecimal(_))throw new TypeError("Invalid interToneGap: ".concat(_));if(_?_<xt.C.MIN_INTER_TONE_GAP?(K.debug('"interToneGap" value is lower than the minimum allowed, setting it to '.concat(xt.C.MIN_INTER_TONE_GAP," milliseconds")),_=xt.C.MIN_INTER_TONE_GAP):_=Math.abs(_):_=xt.C.DEFAULT_INTER_TONE_GAP,d===ce.DTMF_TRANSPORT.RFC2833){var g=this._getDTMFRTPSender();g&&(o=g.toneBuffer+o,g.insertDTMF(o,h,_));return}if(this._tones){this._tones+=o;return}this._tones=o,T.call(this);function T(){var E=this,y;if(this._status===Q.STATUS_TERMINATED||!this._tones||n>=this._tones.length){this._tones=null;return}var A=this._tones[n];if(n+=1,A===",")y=2e3;else{var C=new xt(this);t.eventHandlers={onFailed:function(){E._tones=null}},C.send(A,t),y=h+_}setTimeout(T.bind(this),y)}}},{key:"sendInfo",value:function(o,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(K.debug("sendInfo()"),this._status!==Q.STATUS_CONFIRMED&&this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_1XX_RECEIVED)throw new pn.InvalidStateError(this._status);var h=new Oc(this);h.send(o,t,n)}},{key:"mute",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{audio:!0,video:!1};K.debug("mute()");var t=!1,n=!1;this._audioMuted===!1&&o.audio&&(t=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&o.video&&(n=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(t===!0||n===!0)&&this._onmute({audio:t,video:n})}},{key:"unmute",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{audio:!0,video:!0};K.debug("unmute()");var t=!1,n=!1;this._audioMuted===!0&&o.audio&&(t=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&o.video&&(n=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(t===!0||n===!0)&&this._onunmute({audio:t,video:n})}},{key:"hold",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(K.debug("hold()"),this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED||this._localHold===!0||!this._isReadyToReOffer())return!1;this._localHold=!0,this._onhold("local");var h={succeeded:function(){n&&n()},failed:function(){o.terminate({cause:ce.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:h,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:h,extraHeaders:t.extraHeaders}),!0}},{key:"unhold",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(K.debug("unhold()"),this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED||this._localHold===!1||!this._isReadyToReOffer())return!1;this._localHold=!1,this._onunhold("local");var h={succeeded:function(){n&&n()},failed:function(){o.terminate({cause:ce.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:h,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:h,extraHeaders:t.extraHeaders}),!0}},{key:"renegotiate",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;K.debug("renegotiate()");var h=t.rtcOfferConstraints||null;if(this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;var _={succeeded:function(){n&&n()},failed:function(){o.terminate({cause:ce.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Media Renegotiation Failed"})}};return this._setLocalMediaStatus(),t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:_,rtcOfferConstraints:h,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:_,rtcOfferConstraints:h,extraHeaders:t.extraHeaders}),!0}},{key:"refer",value:function(o,t){var n=this;K.debug("refer()");var h=o;if(this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED)return!1;if(o=this._ua.normalizeTarget(o),!o)throw new TypeError("Invalid target: ".concat(h));var _=new ap(this);_.sendRefer(o,t);var d=_.id;return this._referSubscribers[d]=_,_.on("requestFailed",function(){delete n._referSubscribers[d]}),_.on("accepted",function(){delete n._referSubscribers[d]}),_.on("failed",function(){delete n._referSubscribers[d]}),_}},{key:"sendRequest",value:function(o,t){return K.debug("sendRequest()"),this._dialog.sendRequest(o,t)}},{key:"receiveRequest",value:function(o){var t=this;if(K.debug("receiveRequest()"),o.method===ce.CANCEL)(this._status===Q.STATUS_WAITING_FOR_ANSWER||this._status===Q.STATUS_ANSWERED)&&(this._status=Q.STATUS_CANCELED,this._request.reply(487),this._failed("remote",o,ce.causes.CANCELED));else switch(o.method){case ce.ACK:if(this._status!==Q.STATUS_WAITING_FOR_ACK)return;if(this._status=Q.STATUS_CONFIRMED,clearTimeout(this._timers.ackTimer),clearTimeout(this._timers.invite2xxTimer),this._late_sdp){if(!o.body){this.terminate({cause:ce.causes.MISSING_SDP,status_code:400});break}var n={originator:"remote",type:"answer",sdp:o.body};K.debug('emit "sdp"'),this.emit("sdp",n);var h=new RTCSessionDescription({type:"answer",sdp:n.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return t._connection.setRemoteDescription(h)}).then(function(){t._is_confirmed||t._confirmed("remote",o)}).catch(function(d){t.terminate({cause:ce.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',d),t.emit("peerconnection:setremotedescriptionfailed",d)})}else this._is_confirmed||this._confirmed("remote",o);break;case ce.BYE:this._status===Q.STATUS_CONFIRMED||this._status===Q.STATUS_WAITING_FOR_ACK?(o.reply(200),this._ended("remote",o,ce.causes.BYE)):this._status===Q.STATUS_INVITE_RECEIVED||this._status===Q.STATUS_WAITING_FOR_ANSWER?(o.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",o,ce.causes.BYE)):o.reply(403,"Wrong Status");break;case ce.INVITE:this._status===Q.STATUS_CONFIRMED?o.hasHeader("replaces")?this._receiveReplaces(o):this._receiveReinvite(o):o.reply(403,"Wrong Status");break;case ce.INFO:if(this._status===Q.STATUS_1XX_RECEIVED||this._status===Q.STATUS_WAITING_FOR_ANSWER||this._status===Q.STATUS_ANSWERED||this._status===Q.STATUS_WAITING_FOR_ACK||this._status===Q.STATUS_CONFIRMED){var _=o.hasHeader("Content-Type")?o.getHeader("Content-Type").toLowerCase():void 0;_&&_.match(/^application\/dtmf-relay/i)?new xt(this).init_incoming(o):_!==void 0?new Oc(this).init_incoming(o):o.reply(415)}else o.reply(403,"Wrong Status");break;case ce.UPDATE:this._status===Q.STATUS_CONFIRMED?this._receiveUpdate(o):o.reply(403,"Wrong Status");break;case ce.REFER:this._status===Q.STATUS_CONFIRMED?this._receiveRefer(o):o.reply(403,"Wrong Status");break;case ce.NOTIFY:this._status===Q.STATUS_CONFIRMED?this._receiveNotify(o):o.reply(403,"Wrong Status");break;default:o.reply(501)}}},{key:"onTransportError",value:function(){K.warn("onTransportError()"),this._status!==Q.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:ce.causes.CONNECTION_ERROR,cause:ce.causes.CONNECTION_ERROR})}},{key:"onRequestTimeout",value:function(){K.warn("onRequestTimeout()"),this._status!==Q.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:ce.causes.REQUEST_TIMEOUT,cause:ce.causes.REQUEST_TIMEOUT})}},{key:"onDialogError",value:function(){K.warn("onDialogError()"),this._status!==Q.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:ce.causes.DIALOG_ERROR,cause:ce.causes.DIALOG_ERROR})}},{key:"newDTMF",value:function(o){K.debug("newDTMF()"),this.emit("newDTMF",o)}},{key:"newInfo",value:function(o){K.debug("newInfo()"),this.emit("newInfo",o)}},{key:"_isReadyToReOffer",value:function(){return this._rtcReady?this._dialog?this._dialog.uac_pending_reply===!0||this._dialog.uas_pending_reply===!0?(K.debug("_isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress"),!1):!0:(K.debug("_isReadyToReOffer() | session not established yet"),!1):(K.debug("_isReadyToReOffer() | internal WebRTC status not ready"),!1)}},{key:"_close",value:function(){if(K.debug("close()"),this._localMediaStream&&this._localMediaStreamLocallyGenerated&&(K.debug("close() | closing local MediaStream"),Ve.closeMediaStream(this._localMediaStream)),this._status!==Q.STATUS_TERMINATED){if(this._status=Q.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(h){K.warn("close() | error closing the RTCPeerConnection: %o",h)}for(var o in this._timers)Object.prototype.hasOwnProperty.call(this._timers,o)&&clearTimeout(this._timers[o]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(var t in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,t)&&(this._earlyDialogs[t].terminate(),delete this._earlyDialogs[t]);for(var n in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,n)&&delete this._referSubscribers[n];this._ua.destroyRTCSession(this)}}},{key:"_setInvite2xxTimer",value:function(o,t){var n=Ui.T1;function h(){this._status===Q.STATUS_WAITING_FOR_ACK&&(o.reply(200,null,["Contact: ".concat(this._contact)],t),n<Ui.T2&&(n=n*2,n>Ui.T2&&(n=Ui.T2)),this._timers.invite2xxTimer=setTimeout(h.bind(this),n))}this._timers.invite2xxTimer=setTimeout(h.bind(this),n)}},{key:"_setACKTimer",value:function(){var o=this;this._timers.ackTimer=setTimeout(function(){o._status===Q.STATUS_WAITING_FOR_ACK&&(K.debug("no ACK received, terminating the session"),clearTimeout(o._timers.invite2xxTimer),o.sendRequest(ce.BYE),o._ended("remote",null,ce.causes.NO_ACK))},Ui.TIMER_H)}},{key:"_createRTCConnection",value:function(o,t){var n=this;this._connection=new RTCPeerConnection(o,t),this._connection.addEventListener("iceconnectionstatechange",function(){var h=n._connection.iceConnectionState;h==="failed"&&n.terminate({cause:ce.causes.RTP_TIMEOUT,status_code:408,reason_phrase:ce.causes.RTP_TIMEOUT})}),K.debug('emit "peerconnection"'),this.emit("peerconnection",{peerconnection:this._connection})}},{key:"_createLocalDescription",value:function(o,t){var n=this;if(K.debug("createLocalDescription()"),o!=="offer"&&o!=="answer")throw new Error('createLocalDescription() | invalid type "'.concat(o,'"'));var h=this._connection;return this._rtcReady=!1,Promise.resolve().then(function(){return o==="offer"?h.createOffer(t).catch(function(_){return K.warn('emit "peerconnection:createofferfailed" [error:%o]',_),n.emit("peerconnection:createofferfailed",_),Promise.reject(_)}):h.createAnswer(t).catch(function(_){return K.warn('emit "peerconnection:createanswerfailed" [error:%o]',_),n.emit("peerconnection:createanswerfailed",_),Promise.reject(_)})}).then(function(_){return h.setLocalDescription(_).catch(function(d){return n._rtcReady=!0,K.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',d),n.emit("peerconnection:setlocaldescriptionfailed",d),Promise.reject(d)})}).then(function(){var _=t&&t.iceRestart;if(h.iceGatheringState==="complete"&&!_||h.iceGatheringState==="gathering"&&n._iceReady){n._rtcReady=!0;var d={originator:"local",type:o,sdp:h.localDescription.sdp};return K.debug('emit "sdp"'),n.emit("sdp",d),Promise.resolve(d.sdp)}return new Promise(function(g){var T=!1,E,y;n._iceReady=!1;var A=function(){h.removeEventListener("icecandidate",E),h.removeEventListener("icegatheringstatechange",y),T=!0,n._rtcReady=!0,n._iceReady=!0;var I={originator:"local",type:o,sdp:h.localDescription.sdp};K.debug('emit "sdp"'),n.emit("sdp",I),g(I.sdp)};h.addEventListener("icecandidate",E=function(I){var H=I.candidate;H?n.emit("icecandidate",{candidate:H,ready:A}):T||A()}),h.addEventListener("icegatheringstatechange",y=function(){h.iceGatheringState==="complete"&&!T&&A()})})})}},{key:"_createDialog",value:function(o,t,n){var h=t==="UAS"?o.to_tag:o.from_tag,_=t==="UAS"?o.from_tag:o.to_tag,d=o.call_id+h+_,g=this._earlyDialogs[d];if(n)return g?!0:(g=new Fl(this,o,t,Fl.C.STATUS_EARLY),g.error?(K.debug(g.error),this._failed("remote",o,ce.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[d]=g,!0));if(this._from_tag=o.from_tag,this._to_tag=o.to_tag,g)return g.update(o,t),this._dialog=g,delete this._earlyDialogs[d],!0;var T=new Fl(this,o,t);return T.error?(K.debug(T.error),this._failed("remote",o,ce.causes.INTERNAL_ERROR),!1):(this._dialog=T,!0)}},{key:"_receiveReinvite",value:function(o){var t=this;K.debug("receiveReinvite()");var n=o.hasHeader("Content-Type")?o.getHeader("Content-Type").toLowerCase():void 0,h={request:o,callback:void 0,reject:d.bind(this)},_=!1;function d(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};_=!0;var E=T.status_code||403,y=T.reason_phrase||"",A=Ve.cloneArray(T.extraHeaders);if(this._status!==Q.STATUS_CONFIRMED)return!1;if(E<300||E>=700)throw new TypeError("Invalid status_code: ".concat(E));o.reply(E,y,A)}if(this.emit("reinvite",h),_)return;if(this._late_sdp=!1,!o.body){this._late_sdp=!0,this._remoteHold&&(this._remoteHold=!1,this._onunhold("remote")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return t._createLocalDescription("offer",t._rtcOfferConstraints)}).then(function(T){g.call(t,T)}).catch(function(){o.reply(500)});return}if(n!=="application/sdp"){K.debug("invalid Content-Type"),o.reply(415);return}this._processInDialogSdpOffer(o).then(function(T){t._status!==Q.STATUS_TERMINATED&&g.call(t,T)}).catch(function(T){K.warn(T)});function g(T){var E=this,y=["Contact: ".concat(this._contact)];this._handleSessionTimersInIncomingRequest(o,y),this._late_sdp&&(T=this._mangleOffer(T)),o.reply(200,null,y,T,function(){E._status=Q.STATUS_WAITING_FOR_ACK,E._setInvite2xxTimer(o,T),E._setACKTimer()}),typeof h.callback=="function"&&h.callback()}}},{key:"_receiveUpdate",value:function(o){var t=this;K.debug("receiveUpdate()");var n=o.hasHeader("Content-Type")?o.getHeader("Content-Type").toLowerCase():void 0,h={request:o,callback:void 0,reject:d.bind(this)},_=!1;function d(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};_=!0;var E=T.status_code||403,y=T.reason_phrase||"",A=Ve.cloneArray(T.extraHeaders);if(this._status!==Q.STATUS_CONFIRMED)return!1;if(E<300||E>=700)throw new TypeError("Invalid status_code: ".concat(E));o.reply(E,y,A)}if(this.emit("update",h),_)return;if(!o.body){g.call(this,null);return}if(n!=="application/sdp"){K.debug("invalid Content-Type"),o.reply(415);return}this._processInDialogSdpOffer(o).then(function(T){t._status!==Q.STATUS_TERMINATED&&g.call(t,T)}).catch(function(T){K.warn(T)});function g(T){var E=["Contact: ".concat(this._contact)];this._handleSessionTimersInIncomingRequest(o,E),o.reply(200,null,E,T),typeof h.callback=="function"&&h.callback()}}},{key:"_processInDialogSdpOffer",value:function(o){var t=this;K.debug("_processInDialogSdpOffer()");var n=o.parseSDP(),h=!1,_=_s(n.media),d;try{for(_.s();!(d=_.n()).done;){var g=d.value;if(jl.indexOf(g.type)!==-1){var T=g.direction||n.direction||"sendrecv";if(T==="sendonly"||T==="inactive")h=!0;else{h=!1;break}}}}catch(A){_.e(A)}finally{_.f()}var E={originator:"remote",type:"offer",sdp:o.body};K.debug('emit "sdp"'),this.emit("sdp",E);var y=new RTCSessionDescription({type:"offer",sdp:E.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){if(t._status===Q.STATUS_TERMINATED)throw new Error("terminated");return t._connection.setRemoteDescription(y).catch(function(A){throw o.reply(488),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',A),t.emit("peerconnection:setremotedescriptionfailed",A),A})}).then(function(){if(t._status===Q.STATUS_TERMINATED)throw new Error("terminated");t._remoteHold===!0&&h===!1?(t._remoteHold=!1,t._onunhold("remote")):t._remoteHold===!1&&h===!0&&(t._remoteHold=!0,t._onhold("remote"))}).then(function(){if(t._status===Q.STATUS_TERMINATED)throw new Error("terminated");return t._createLocalDescription("answer",t._rtcAnswerConstraints).catch(function(A){throw o.reply(500),K.warn('emit "peerconnection:createtelocaldescriptionfailed" [error:%o]',A),A})}).catch(function(A){K.warn("_processInDialogSdpOffer() failed [error: %o]",A)}),this._connectionPromiseQueue}},{key:"_receiveRefer",value:function(o){var t=this;if(K.debug("receiveRefer()"),!o.refer_to){K.debug("no Refer-To header field present in REFER"),o.reply(400);return}if(o.refer_to.uri.scheme!==ce.SIP){K.debug("Refer-To header field points to a non-SIP URI scheme"),o.reply(416);return}o.reply(202);var n=new lp(this,o.cseq);K.debug('emit "refer"'),this.emit("refer",{request:o,accept:function(g,T){h.call(t,g,T)},reject:function(){_.call(t)}});function h(d){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(d=typeof d=="function"?d:null,this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED)return!1;var T=new r(this._ua);if(T.on("progress",function(y){var A=y.response;n.notify(A.status_code,A.reason_phrase)}),T.on("accepted",function(y){var A=y.response;n.notify(A.status_code,A.reason_phrase)}),T.on("_failed",function(y){var A=y.message,C=y.cause;A?n.notify(A.status_code,A.reason_phrase):n.notify(487,C)}),o.refer_to.uri.hasHeader("replaces")){var E=decodeURIComponent(o.refer_to.uri.getHeader("replaces"));g.extraHeaders=Ve.cloneArray(g.extraHeaders),g.extraHeaders.push("Replaces: ".concat(E))}T.connect(o.refer_to.uri.toAor(),g,d)}function _(){n.notify(603)}}},{key:"_receiveNotify",value:function(o){switch(K.debug("receiveNotify()"),o.event||o.reply(400),o.event.event){case"refer":{var t,n;if(o.event.params&&o.event.params.id)t=o.event.params.id,n=this._referSubscribers[t];else if(Object.keys(this._referSubscribers).length===1)n=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{o.reply(400,"Missing event id parameter");return}if(!n){o.reply(481,"Subscription does not exist");return}n.receiveNotify(o),o.reply(200);break}default:o.reply(489)}}},{key:"_receiveReplaces",value:function(o){var t=this;K.debug("receiveReplaces()");function n(_){var d=this;if(this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED)return!1;var g=new r(this._ua);g.on("confirmed",function(){d.terminate()}),g.init_incoming(o,_)}function h(){K.debug("Replaced INVITE rejected by the user"),o.reply(486)}this.emit("replaces",{request:o,accept:function(d){n.call(t,d)},reject:function(){h.call(t)}})}},{key:"_sendInitialRequest",value:function(o,t,n){var h=this,_=new ip(this._ua,this._request,{onRequestTimeout:function(){h.onRequestTimeout()},onTransportError:function(){h.onTransportError()},onAuthenticated:function(g){h._request=g},onReceiveResponse:function(g){h._receiveInviteResponse(g)}});Promise.resolve().then(function(){if(n)return n;if(o.audio||o.video)return h._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(o).catch(function(d){throw h._status===Q.STATUS_TERMINATED?new Error("terminated"):(h._failed("local",null,ce.causes.USER_DENIED_MEDIA_ACCESS),K.warn('emit "getusermediafailed" [error:%o]',d),h.emit("getusermediafailed",d),d)})}).then(function(d){if(h._status===Q.STATUS_TERMINATED)throw new Error("terminated");return h._localMediaStream=d,d&&d.getTracks().forEach(function(g){h._connection.addTrack(g,d)}),h._connecting(h._request),h._createLocalDescription("offer",t).catch(function(g){throw h._failed("local",null,ce.causes.WEBRTC_ERROR),g})}).then(function(d){if(h._is_canceled||h._status===Q.STATUS_TERMINATED)throw new Error("terminated");h._request.body=d,h._status=Q.STATUS_INVITE_SENT,K.debug('emit "sending" [request:%o]',h._request),h.emit("sending",{request:h._request}),_.send()}).catch(function(d){h._status!==Q.STATUS_TERMINATED&&K.warn(d)})}},{key:"_getDTMFRTPSender",value:function(){var o=this._connection.getSenders().find(function(t){return t.track&&t.track.kind==="audio"});if(!(o&&o.dtmf)){K.warn("sendDTMF() | no local audio track to send DTMF with");return}return o.dtmf}},{key:"_receiveInviteResponse",value:function(o){var t=this;if(K.debug("receiveInviteResponse()"),this._dialog&&o.status_code>=200&&o.status_code<=299)if(this._dialog.id.call_id===o.call_id&&this._dialog.id.local_tag===o.from_tag&&this._dialog.id.remote_tag===o.to_tag){this.sendRequest(ce.ACK);return}else{var n=new Fl(this,o,"UAC");if(n.error!==void 0){K.debug(n.error);return}this.sendRequest(ce.ACK),this.sendRequest(ce.BYE);return}if(this._is_canceled){o.status_code>=100&&o.status_code<200?this._request.cancel(this._cancel_reason):o.status_code>=200&&o.status_code<299&&this._acceptAndTerminate(o);return}if(!(this._status!==Q.STATUS_INVITE_SENT&&this._status!==Q.STATUS_1XX_RECEIVED))switch(!0){case/^100$/.test(o.status_code):this._status=Q.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(o.status_code):{if(!o.to_tag){K.debug("1xx response received without to tag");break}if(o.hasHeader("contact")&&!this._createDialog(o,"UAC",!0))break;if(this._status=Q.STATUS_1XX_RECEIVED,!o.body){this._progress("remote",o);break}var h={originator:"remote",type:"answer",sdp:o.body};K.debug('emit "sdp"'),this.emit("sdp",h);var _=new RTCSessionDescription({type:"answer",sdp:h.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return t._connection.setRemoteDescription(_)}).then(function(){return t._progress("remote",o)}).catch(function(E){K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),t.emit("peerconnection:setremotedescriptionfailed",E)});break}case/^2[0-9]{2}$/.test(o.status_code):{if(this._status=Q.STATUS_CONFIRMED,!o.body){this._acceptAndTerminate(o,400,ce.causes.MISSING_SDP),this._failed("remote",o,ce.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(o,"UAC"))break;var d={originator:"remote",type:"answer",sdp:o.body};K.debug('emit "sdp"'),this.emit("sdp",d);var g=new RTCSessionDescription({type:"answer",sdp:d.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){if(t._connection.signalingState==="stable")return t._connection.createOffer(t._rtcOfferConstraints).then(function(E){return t._connection.setLocalDescription(E)}).catch(function(E){t._acceptAndTerminate(o,500,E.toString()),t._failed("local",o,ce.causes.WEBRTC_ERROR)})}).then(function(){t._connection.setRemoteDescription(g).then(function(){t._handleSessionTimersInIncomingResponse(o),t._accepted("remote",o),t.sendRequest(ce.ACK),t._confirmed("local",null)}).catch(function(E){t._acceptAndTerminate(o,488,"Not Acceptable Here"),t._failed("remote",o,ce.causes.BAD_MEDIA_DESCRIPTION),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),t.emit("peerconnection:setremotedescriptionfailed",E)})});break}default:{var T=Ve.sipErrorCause(o.status_code);this._failed("remote",o,T)}}}},{key:"_sendReinvite",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("sendReinvite()");var n=Ve.cloneArray(t.extraHeaders),h=Ve.cloneObject(t.eventHandlers),_=t.rtcOfferConstraints||this._rtcOfferConstraints||null,d=!1;n.push("Contact: ".concat(this._contact)),n.push("Content-Type: application/sdp"),this._sessionTimers.running&&n.push("Session-Expires: ".concat(this._sessionTimers.currentExpires,";refresher=").concat(this._sessionTimers.refresher?"uac":"uas")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return o._createLocalDescription("offer",_)}).then(function(E){E=o._mangleOffer(E);var y={originator:"local",type:"offer",sdp:E};K.debug('emit "sdp"'),o.emit("sdp",y),o.sendRequest(ce.INVITE,{extraHeaders:n,body:E,eventHandlers:{onSuccessResponse:function(C){g.call(o,C),d=!0},onErrorResponse:function(C){T.call(o,C)},onTransportError:function(){o.onTransportError()},onRequestTimeout:function(){o.onRequestTimeout()},onDialogError:function(){o.onDialogError()}}})}).catch(function(){T()});function g(E){var y=this;if(this._status!==Q.STATUS_TERMINATED&&(this.sendRequest(ce.ACK),!d)){if(this._handleSessionTimersInIncomingResponse(E),E.body){if(!E.hasHeader("Content-Type")||E.getHeader("Content-Type").toLowerCase()!=="application/sdp"){T.call(this);return}}else{T.call(this);return}var A={originator:"remote",type:"answer",sdp:E.body};K.debug('emit "sdp"'),this.emit("sdp",A);var C=new RTCSessionDescription({type:"answer",sdp:A.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return y._connection.setRemoteDescription(C)}).then(function(){h.succeeded&&h.succeeded(E)}).catch(function(I){T.call(y),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',I),y.emit("peerconnection:setremotedescriptionfailed",I)})}}function T(E){h.failed&&h.failed(E)}}},{key:"_sendUpdate",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("sendUpdate()");var n=Ve.cloneArray(t.extraHeaders),h=Ve.cloneObject(t.eventHandlers),_=t.rtcOfferConstraints||this._rtcOfferConstraints||null,d=t.sdpOffer||!1,g=!1;n.push("Contact: ".concat(this._contact)),this._sessionTimers.running&&n.push("Session-Expires: ".concat(this._sessionTimers.currentExpires,";refresher=").concat(this._sessionTimers.refresher?"uac":"uas")),d?(n.push("Content-Type: application/sdp"),this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return o._createLocalDescription("offer",_)}).then(function(y){y=o._mangleOffer(y);var A={originator:"local",type:"offer",sdp:y};K.debug('emit "sdp"'),o.emit("sdp",A),o.sendRequest(ce.UPDATE,{extraHeaders:n,body:y,eventHandlers:{onSuccessResponse:function(I){T.call(o,I),g=!0},onErrorResponse:function(I){E.call(o,I)},onTransportError:function(){o.onTransportError()},onRequestTimeout:function(){o.onRequestTimeout()},onDialogError:function(){o.onDialogError()}}})}).catch(function(){E.call(o)})):this.sendRequest(ce.UPDATE,{extraHeaders:n,eventHandlers:{onSuccessResponse:function(A){T.call(o,A)},onErrorResponse:function(A){E.call(o,A)},onTransportError:function(){o.onTransportError()},onRequestTimeout:function(){o.onRequestTimeout()},onDialogError:function(){o.onDialogError()}}});function T(y){var A=this;if(this._status!==Q.STATUS_TERMINATED&&!g)if(this._handleSessionTimersInIncomingResponse(y),d){if(y.body){if(!y.hasHeader("Content-Type")||y.getHeader("Content-Type").toLowerCase()!=="application/sdp"){E.call(this);return}}else{E.call(this);return}var C={originator:"remote",type:"answer",sdp:y.body};K.debug('emit "sdp"'),this.emit("sdp",C);var I=new RTCSessionDescription({type:"answer",sdp:C.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return A._connection.setRemoteDescription(I)}).then(function(){h.succeeded&&h.succeeded(y)}).catch(function(H){E.call(A),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',H),A.emit("peerconnection:setremotedescriptionfailed",H)})}else h.succeeded&&h.succeeded(y)}function E(y){h.failed&&h.failed(y)}}},{key:"_acceptAndTerminate",value:function(o,t,n){K.debug("acceptAndTerminate()");var h=[];t&&(n=n||ce.REASON_PHRASE[t]||"",h.push("Reason: SIP ;cause=".concat(t,'; text="').concat(n,'"'))),(this._dialog||this._createDialog(o,"UAC"))&&(this.sendRequest(ce.ACK),this.sendRequest(ce.BYE,{extraHeaders:h})),this._status=Q.STATUS_TERMINATED}},{key:"_mangleOffer",value:function(o){if(!this._localHold&&!this._remoteHold)return o;if(o=bc.parse(o),this._localHold&&!this._remoteHold){K.debug("mangleOffer() | me on hold, mangling offer");var t=_s(o.media),n;try{for(t.s();!(n=t.n()).done;){var h=n.value;jl.indexOf(h.type)!==-1&&(h.direction?h.direction==="sendrecv"?h.direction="sendonly":h.direction==="recvonly"&&(h.direction="inactive"):h.direction="sendonly")}}catch(A){t.e(A)}finally{t.f()}}else if(this._localHold&&this._remoteHold){K.debug("mangleOffer() | both on hold, mangling offer");var _=_s(o.media),d;try{for(_.s();!(d=_.n()).done;){var g=d.value;jl.indexOf(g.type)!==-1&&(g.direction="inactive")}}catch(A){_.e(A)}finally{_.f()}}else if(this._remoteHold){K.debug("mangleOffer() | remote on hold, mangling offer");var T=_s(o.media),E;try{for(T.s();!(E=T.n()).done;){var y=E.value;jl.indexOf(y.type)!==-1&&(y.direction?y.direction==="sendrecv"?y.direction="recvonly":y.direction==="recvonly"&&(y.direction="inactive"):y.direction="recvonly")}}catch(A){T.e(A)}finally{T.f()}}return bc.write(o)}},{key:"_setLocalMediaStatus",value:function(){var o=!0,t=!0;(this._localHold||this._remoteHold)&&(o=!1,t=!1),this._audioMuted&&(o=!1),this._videoMuted&&(t=!1),this._toggleMuteAudio(!o),this._toggleMuteVideo(!t)}},{key:"_handleSessionTimersInIncomingRequest",value:function(o,t){if(this._sessionTimers.enabled){var n;o.session_expires&&o.session_expires>=ce.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=o.session_expires,n=o.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,n="uas"),t.push("Session-Expires: ".concat(this._sessionTimers.currentExpires,";refresher=").concat(n)),this._sessionTimers.refresher=n==="uas",this._runSessionTimer()}}},{key:"_handleSessionTimersInIncomingResponse",value:function(o){if(this._sessionTimers.enabled){var t;o.session_expires&&o.session_expires>=ce.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=o.session_expires,t=o.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,t="uac"),this._sessionTimers.refresher=t==="uac",this._runSessionTimer()}}},{key:"_runSessionTimer",value:function(){var o=this,t=this._sessionTimers.currentExpires;this._sessionTimers.running=!0,clearTimeout(this._sessionTimers.timer),this._sessionTimers.refresher?this._sessionTimers.timer=setTimeout(function(){o._status!==Q.STATUS_TERMINATED&&o._isReadyToReOffer()&&(K.debug("runSessionTimer() | sending session refresh request"),o._sessionTimers.refreshMethod===ce.UPDATE?o._sendUpdate():o._sendReinvite())},t*500):this._sessionTimers.timer=setTimeout(function(){o._status!==Q.STATUS_TERMINATED&&(K.warn("runSessionTimer() | timer expired, terminating the session"),o.terminate({cause:ce.causes.REQUEST_TIMEOUT,status_code:408,reason_phrase:"Session Timer Expired"}))},t*1100)}},{key:"_toggleMuteAudio",value:function(o){var t=this._connection.getSenders().filter(function(d){return d.track&&d.track.kind==="audio"}),n=_s(t),h;try{for(n.s();!(h=n.n()).done;){var _=h.value;_.track.enabled=!o}}catch(d){n.e(d)}finally{n.f()}}},{key:"_toggleMuteVideo",value:function(o){var t=this._connection.getSenders().filter(function(d){return d.track&&d.track.kind==="video"}),n=_s(t),h;try{for(n.s();!(h=n.n()).done;){var _=h.value;_.track.enabled=!o}}catch(d){n.e(d)}finally{n.f()}}},{key:"_newRTCSession",value:function(o,t){K.debug("newRTCSession()"),this._ua.newRTCSession(this,{originator:o,session:this,request:t})}},{key:"_connecting",value:function(o){K.debug("session connecting"),K.debug('emit "connecting"'),this.emit("connecting",{request:o})}},{key:"_progress",value:function(o,t){K.debug("session progress"),K.debug('emit "progress"'),this.emit("progress",{originator:o,response:t||null})}},{key:"_accepted",value:function(o,t){K.debug("session accepted"),this._start_time=new Date,K.debug('emit "accepted"'),this.emit("accepted",{originator:o,response:t||null})}},{key:"_confirmed",value:function(o,t){K.debug("session confirmed"),this._is_confirmed=!0,K.debug('emit "confirmed"'),this.emit("confirmed",{originator:o,ack:t||null})}},{key:"_ended",value:function(o,t,n){K.debug("session ended"),this._end_time=new Date,this._close(),K.debug('emit "ended"'),this.emit("ended",{originator:o,message:t||null,cause:n})}},{key:"_failed",value:function(o,t,n){K.debug("session failed"),K.debug('emit "_failed"'),this.emit("_failed",{originator:o,message:t||null,cause:n}),this._close(),K.debug('emit "failed"'),this.emit("failed",{originator:o,message:t||null,cause:n})}},{key:"_onhold",value:function(o){K.debug("session onhold"),this._setLocalMediaStatus(),K.debug('emit "hold"'),this.emit("hold",{originator:o})}},{key:"_onunhold",value:function(o){K.debug("session onunhold"),this._setLocalMediaStatus(),K.debug('emit "unhold"'),this.emit("unhold",{originator:o})}},{key:"_onmute",value:function(o){var t=o.audio,n=o.video;K.debug("session onmute"),this._setLocalMediaStatus(),K.debug('emit "muted"'),this.emit("muted",{audio:t,video:n})}},{key:"_onunmute",value:function(o){var t=o.audio,n=o.video;K.debug("session onunmute"),this._setLocalMediaStatus(),K.debug('emit "unmuted"'),this.emit("unmuted",{audio:t,video:n})}},{key:"C",get:function(){return Q}},{key:"causes",get:function(){return ce.causes}},{key:"id",get:function(){return this._id}},{key:"connection",get:function(){return this._connection}},{key:"contact",get:function(){return this._contact}},{key:"direction",get:function(){return this._direction}},{key:"local_identity",get:function(){return this._local_identity}},{key:"remote_identity",get:function(){return this._remote_identity}},{key:"start_time",get:function(){return this._start_time}},{key:"end_time",get:function(){return this._end_time}},{key:"data",get:function(){return this._data},set:function(o){this._data=o}},{key:"status",get:function(){return this._status}}]),r}(sp);function Sa(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Sa=function(r){return typeof r}:Sa=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Sa(c)}function up(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Nc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function cp(c,s,r){return s&&Nc(c.prototype,s),r&&Nc(c,r),c}function fp(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&du(c,s)}function du(c,s){return du=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},du(c,s)}function _p(c){var s=pp();return function(){var a=Ua(c),o;if(s){var t=Ua(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return hp(this,o)}}function hp(c,s){return s&&(Sa(s)==="object"||typeof s=="function")?s:dp(c)}function dp(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function pp(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function Ua(c){return Ua=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Ua(c)}var mp=ft.EventEmitter,gp=_t,Ao=it,Tp=vs,Pi=bt(),vp=cl,Uc=Bs,Ep=Gs(),ql=new gp("Message"),Sp=function(c){fp(r,c);var s=_p(r);function r(a){var o;return up(this,r),o=s.call(this),o._ua=a,o._request=null,o._closed=!1,o._direction=null,o._local_identity=null,o._remote_identity=null,o._is_replied=!1,o._data={},o}return cp(r,[{key:"send",value:function(o,t){var n=this,h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},_=o;if(o===void 0||t===void 0)throw new TypeError("Not enough arguments");if(o=this._ua.normalizeTarget(o),!o)throw new TypeError("Invalid target: ".concat(_));var d=Pi.cloneArray(h.extraHeaders),g=Pi.cloneObject(h.eventHandlers),T=h.contentType||"text/plain",E={};h.fromUserName&&(E.from_uri=new Ep("sip",h.fromUserName,this._ua.configuration.uri.host),d.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString()))),h.fromDisplayName&&(E.from_display_name=h.fromDisplayName);for(var y in g)Object.prototype.hasOwnProperty.call(g,y)&&this.on(y,g[y]);d.push("Content-Type: ".concat(T)),this._request=new Tp.OutgoingRequest(Ao.MESSAGE,o,this._ua,E,d),t&&(this._request.body=t);var A=new vp(this._ua,this._request,{onRequestTimeout:function(){n._onRequestTimeout()},onTransportError:function(){n._onTransportError()},onReceiveResponse:function(I){n._receiveResponse(I)}});this._newMessage("local",this._request),A.send()}},{key:"init_incoming",value:function(o){this._request=o,this._newMessage("remote",o),this._is_replied||(this._is_replied=!0,o.reply(200)),this._close()}},{key:"accept",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=Pi.cloneArray(o.extraHeaders),n=o.body;if(this._direction!=="incoming")throw new Uc.NotSupportedError('"accept" not supported for outgoing Message');if(this._is_replied)throw new Error("incoming Message already replied");this._is_replied=!0,this._request.reply(200,null,t,n)}},{key:"reject",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=o.status_code||480,n=o.reason_phrase,h=Pi.cloneArray(o.extraHeaders),_=o.body;if(this._direction!=="incoming")throw new Uc.NotSupportedError('"reject" not supported for outgoing Message');if(this._is_replied)throw new Error("incoming Message already replied");if(t<300||t>=700)throw new TypeError("Invalid status_code: ".concat(t));this._is_replied=!0,this._request.reply(t,n,h,_)}},{key:"_receiveResponse",value:function(o){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(o.status_code):break;case/^2[0-9]{2}$/.test(o.status_code):this._succeeded("remote",o);break;default:{var t=Pi.sipErrorCause(o.status_code);this._failed("remote",o,t);break}}}},{key:"_onRequestTimeout",value:function(){this._closed||this._failed("system",null,Ao.causes.REQUEST_TIMEOUT)}},{key:"_onTransportError",value:function(){this._closed||this._failed("system",null,Ao.causes.CONNECTION_ERROR)}},{key:"_close",value:function(){this._closed=!0,this._ua.destroyMessage(this)}},{key:"_newMessage",value:function(o,t){o==="remote"?(this._direction="incoming",this._local_identity=t.to,this._remote_identity=t.from):o==="local"&&(this._direction="outgoing",this._local_identity=t.from,this._remote_identity=t.to),this._ua.newMessage(this,{originator:o,message:this,request:t})}},{key:"_failed",value:function(o,t,n){ql.debug("MESSAGE failed"),this._close(),ql.debug('emit "failed"'),this.emit("failed",{originator:o,response:t||null,cause:n})}},{key:"_succeeded",value:function(o,t){ql.debug("MESSAGE succeeded"),this._close(),ql.debug('emit "succeeded"'),this.emit("succeeded",{originator:o,response:t})}},{key:"direction",get:function(){return this._direction}},{key:"local_identity",get:function(){return this._local_identity}},{key:"remote_identity",get:function(){return this._remote_identity}}]),r}(mp);function ya(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ya=function(r){return typeof r}:ya=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ya(c)}function yp(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Pc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Ap(c,s,r){return s&&Pc(c.prototype,s),r&&Pc(c,r),c}function Cp(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&pu(c,s)}function pu(c,s){return pu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},pu(c,s)}function Rp(c){var s=wp();return function(){var a=Pa(c),o;if(s){var t=Pa(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return Ip(this,o)}}function Ip(c,s){return s&&(ya(s)==="object"||typeof s=="function")?s:bp(c)}function bp(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function wp(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function Pa(c){return Pa=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Pa(c)}var Op=ft.EventEmitter,Dp=_t,Co=it,Np=vs,xi=bt(),Up=cl,xc=Bs,Vl=new Dp("Options"),Pp=function(c){Cp(r,c);var s=Rp(r);function r(a){var o;return yp(this,r),o=s.call(this),o._ua=a,o._request=null,o._closed=!1,o._direction=null,o._local_identity=null,o._remote_identity=null,o._is_replied=!1,o._data={},o}return Ap(r,[{key:"send",value:function(o,t){var n=this,h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},_=o;if(o===void 0)throw new TypeError("A target is required for OPTIONS");if(o=this._ua.normalizeTarget(o),!o)throw new TypeError("Invalid target: ".concat(_));var d=xi.cloneArray(h.extraHeaders),g=xi.cloneObject(h.eventHandlers),T=h.contentType||"application/sdp";for(var E in g)Object.prototype.hasOwnProperty.call(g,E)&&this.on(E,g[E]);d.push("Content-Type: ".concat(T)),this._request=new Np.OutgoingRequest(Co.OPTIONS,o,this._ua,null,d),t&&(this._request.body=t);var y=new Up(this._ua,this._request,{onRequestTimeout:function(){n._onRequestTimeout()},onTransportError:function(){n._onTransportError()},onReceiveResponse:function(C){n._receiveResponse(C)}});this._newOptions("local",this._request),y.send()}},{key:"init_incoming",value:function(o){this._request=o,this._newOptions("remote",o),this._is_replied||(this._is_replied=!0,o.reply(200)),this._close()}},{key:"accept",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=xi.cloneArray(o.extraHeaders),n=o.body;if(this._direction!=="incoming")throw new xc.NotSupportedError('"accept" not supported for outgoing Options');if(this._is_replied)throw new Error("incoming Options already replied");this._is_replied=!0,this._request.reply(200,null,t,n)}},{key:"reject",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=o.status_code||480,n=o.reason_phrase,h=xi.cloneArray(o.extraHeaders),_=o.body;if(this._direction!=="incoming")throw new xc.NotSupportedError('"reject" not supported for outgoing Options');if(this._is_replied)throw new Error("incoming Options already replied");if(t<300||t>=700)throw new TypeError("Invalid status_code: ".concat(t));this._is_replied=!0,this._request.reply(t,n,h,_)}},{key:"_receiveResponse",value:function(o){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(o.status_code):break;case/^2[0-9]{2}$/.test(o.status_code):this._succeeded("remote",o);break;default:{var t=xi.sipErrorCause(o.status_code);this._failed("remote",o,t);break}}}},{key:"_onRequestTimeout",value:function(){this._closed||this._failed("system",null,Co.causes.REQUEST_TIMEOUT)}},{key:"_onTransportError",value:function(){this._closed||this._failed("system",null,Co.causes.CONNECTION_ERROR)}},{key:"_close",value:function(){this._closed=!0,this._ua.destroyMessage(this)}},{key:"_newOptions",value:function(o,t){o==="remote"?(this._direction="incoming",this._local_identity=t.to,this._remote_identity=t.from):o==="local"&&(this._direction="outgoing",this._local_identity=t.from,this._remote_identity=t.to),this._ua.newOptions(this,{originator:o,message:this,request:t})}},{key:"_failed",value:function(o,t,n){Vl.debug("OPTIONS failed"),this._close(),Vl.debug('emit "failed"'),this.emit("failed",{originator:o,response:t||null,cause:n})}},{key:"_succeeded",value:function(o,t){Vl.debug("OPTIONS succeeded"),this._close(),Vl.debug('emit "succeeded"'),this.emit("succeeded",{originator:o,response:t})}},{key:"direction",get:function(){return this._direction}},{key:"local_identity",get:function(){return this._local_identity}},{key:"remote_identity",get:function(){return this._remote_identity}}]),r}(Op),Uu={},xp=_t,Ro=bt(),Mp=ls(),Mi=new xp("Socket");Uu.isSocket=function(c){if(Array.isArray(c))return!1;if(typeof c>"u")return Mi.warn("undefined JsSIP.Socket instance"),!1;try{if(!Ro.isString(c.url))throw Mi.warn("missing or invalid JsSIP.Socket url property"),new Error("Missing or invalid JsSIP.Socket url property");if(!Ro.isString(c.via_transport))throw Mi.warn("missing or invalid JsSIP.Socket via_transport property"),new Error("Missing or invalid JsSIP.Socket via_transport property");if(Mp.parse(c.sip_uri,"SIP_URI")===-1)throw Mi.warn("missing or invalid JsSIP.Socket sip_uri property"),new Error("missing or invalid JsSIP.Socket sip_uri property")}catch{return!1}try{["connect","disconnect","send"].forEach(function(s){if(!Ro.isFunction(c[s]))throw Mi.warn("missing or invalid JsSIP.Socket method: ".concat(s)),new Error("Missing or invalid JsSIP.Socket method: ".concat(s))})}catch{return!1}return!0};function kp(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Mc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Lp(c,s,r){return s&&Mc(c.prototype,s),r&&Mc(c,r),c}var $p=_t,Hp=Uu,kc=it,Nt=new $p("Transport"),jt={STATUS_CONNECTED:0,STATUS_CONNECTING:1,STATUS_DISCONNECTED:2,SOCKET_STATUS_READY:0,SOCKET_STATUS_ERROR:1,recovery_options:{min_interval:kc.CONNECTION_RECOVERY_MIN_INTERVAL,max_interval:kc.CONNECTION_RECOVERY_MAX_INTERVAL}},Fp=function(){function c(s){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:jt.recovery_options;kp(this,c),Nt.debug("new()"),this.status=jt.STATUS_DISCONNECTED,this.socket=null,this.sockets=[],this.recovery_options=r,this.recover_attempts=0,this.recovery_timer=null,this.close_requested=!1;try{this.textDecoder=new TextDecoder("utf8")}catch(a){Nt.warn("cannot use TextDecoder: ".concat(a))}if(typeof s>"u")throw new TypeError("Invalid argument. undefined 'sockets' argument");s instanceof Array||(s=[s]),s.forEach(function(a){if(!Hp.isSocket(a.socket))throw new TypeError("Invalid argument. invalid 'JsSIP.Socket' instance");if(a.weight&&!Number(a.weight))throw new TypeError("Invalid argument. 'weight' attribute is not a number");this.sockets.push({socket:a.socket,weight:a.weight||0,status:jt.SOCKET_STATUS_READY})},this),this._getSocket()}return Lp(c,[{key:"connect",value:function(){if(Nt.debug("connect()"),this.isConnected()){Nt.debug("Transport is already connected");return}else if(this.isConnecting()){Nt.debug("Transport is connecting");return}this.close_requested=!1,this.status=jt.STATUS_CONNECTING,this.onconnecting({socket:this.socket,attempts:this.recover_attempts}),this.close_requested||(this.socket.onconnect=this._onConnect.bind(this),this.socket.ondisconnect=this._onDisconnect.bind(this),this.socket.ondata=this._onData.bind(this),this.socket.connect())}},{key:"disconnect",value:function(){Nt.debug("close()"),this.close_requested=!0,this.recover_attempts=0,this.status=jt.STATUS_DISCONNECTED,this.recovery_timer!==null&&(clearTimeout(this.recovery_timer),this.recovery_timer=null),this.socket.onconnect=function(){},this.socket.ondisconnect=function(){},this.socket.ondata=function(){},this.socket.disconnect(),this.ondisconnect({socket:this.socket,error:!1})}},{key:"send",value:function(r){if(Nt.debug("send()"),!this.isConnected())return Nt.warn("unable to send message, transport is not connected"),!1;var a=r.toString();return Nt.debug(`sending message:
46
+ `),this.transport.send(_)}}]),n}(sh),U_=function(c){Nu(n,c);var s=Uu(n);function n(){var a;return rl(this,n),a=s.call(this),a.headers={},a.status_code=null,a.reason_phrase=null,a}return n}(sh),Ss={OutgoingRequest:th,InitialOutgoingInviteRequest:D_,IncomingRequest:N_,IncomingResponse:U_};function x_(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function rc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function P_(c,s,n){return s&&rc(c.prototype,s),n&&rc(c,n),c}var k_=ht,hs=bt(),Kt=new k_("DigestAuthentication"),M_=function(){function c(s){x_(this,c),this._credentials=s,this._cnonce=null,this._nc=0,this._ncHex="00000000",this._algorithm=null,this._realm=null,this._nonce=null,this._opaque=null,this._stale=null,this._qop=null,this._method=null,this._uri=null,this._ha1=null,this._response=null}return P_(c,[{key:"get",value:function(n){switch(n){case"realm":return this._realm;case"ha1":return this._ha1;default:Kt.warn('get() | cannot get "%s" parameter',n);return}}},{key:"authenticate",value:function(n,a){var o=n.method,t=n.ruri,r=n.body,_=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null;if(this._algorithm=a.algorithm,this._realm=a.realm,this._nonce=a.nonce,this._opaque=a.opaque,this._stale=a.stale,this._algorithm){if(this._algorithm!=="MD5")return Kt.warn('authenticate() | challenge with Digest algorithm different than "MD5", authentication aborted'),!1}else this._algorithm="MD5";if(!this._nonce)return Kt.warn("authenticate() | challenge without Digest nonce, authentication aborted"),!1;if(!this._realm)return Kt.warn("authenticate() | challenge without Digest realm, authentication aborted"),!1;if(!this._credentials.password){if(!this._credentials.ha1)return Kt.warn("authenticate() | no plain SIP password nor ha1 provided, authentication aborted"),!1;if(this._credentials.realm!==this._realm)return Kt.warn('authenticate() | no plain SIP password, and stored `realm` does not match the given `realm`, cannot authenticate [stored:"%s", given:"%s"]',this._credentials.realm,this._realm),!1}if(a.qop)if(a.qop.indexOf("auth-int")>-1)this._qop="auth-int";else if(a.qop.indexOf("auth")>-1)this._qop="auth";else return Kt.warn('authenticate() | challenge without Digest qop different than "auth" or "auth-int", authentication aborted'),!1;else this._qop=null;this._method=o,this._uri=t,this._cnonce=_||hs.createRandomToken(12),this._nc+=1;var h=Number(this._nc).toString(16);this._ncHex="00000000".substr(0,8-h.length)+h,this._nc===4294967296&&(this._nc=1,this._ncHex="00000001"),this._credentials.password?this._ha1=hs.calculateMD5("".concat(this._credentials.username,":").concat(this._realm,":").concat(this._credentials.password)):this._ha1=this._credentials.ha1;var d,g;return this._qop==="auth"?(d="".concat(this._method,":").concat(this._uri),g=hs.calculateMD5(d),Kt.debug('authenticate() | using qop=auth [a2:"%s"]',d),this._response=hs.calculateMD5("".concat(this._ha1,":").concat(this._nonce,":").concat(this._ncHex,":").concat(this._cnonce,":auth:").concat(g))):this._qop==="auth-int"?(d="".concat(this._method,":").concat(this._uri,":").concat(hs.calculateMD5(r||"")),g=hs.calculateMD5(d),Kt.debug('authenticate() | using qop=auth-int [a2:"%s"]',d),this._response=hs.calculateMD5("".concat(this._ha1,":").concat(this._nonce,":").concat(this._ncHex,":").concat(this._cnonce,":auth-int:").concat(g))):this._qop===null&&(d="".concat(this._method,":").concat(this._uri),g=hs.calculateMD5(d),Kt.debug('authenticate() | using qop=null [a2:"%s"]',d),this._response=hs.calculateMD5("".concat(this._ha1,":").concat(this._nonce,":").concat(g))),Kt.debug("authenticate() | response generated"),!0}},{key:"toString",value:function(){var n=[];if(!this._response)throw new Error("response field does not exist, cannot generate Authorization header");return n.push("algorithm=".concat(this._algorithm)),n.push('username="'.concat(this._credentials.username,'"')),n.push('realm="'.concat(this._realm,'"')),n.push('nonce="'.concat(this._nonce,'"')),n.push('uri="'.concat(this._uri,'"')),n.push('response="'.concat(this._response,'"')),this._opaque&&n.push('opaque="'.concat(this._opaque,'"')),this._qop&&(n.push("qop=".concat(this._qop)),n.push('cnonce="'.concat(this._cnonce,'"')),n.push("nc=".concat(this._ncHex))),"Digest ".concat(n.join(", "))}}]),c}(),_s=500,L_=4e3,ic=5e3,nh={T1:_s,T2:L_,T4:ic,TIMER_B:64*_s,TIMER_D:0*_s,TIMER_F:64*_s,TIMER_H:64*_s,TIMER_I:0*_s,TIMER_J:0*_s,TIMER_K:0*ic,TIMER_L:64*_s,TIMER_M:64*_s,PROVISIONAL_RESPONSE_INTERVAL:6e4};function Ta(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ta=function(n){return typeof n}:Ta=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Ta(c)}function il(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function lc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function ll(c,s,n){return s&&lc(c.prototype,s),n&&lc(c,n),c}function al(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&fu(c,s)}function fu(c,s){return fu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},fu(c,s)}function ol(c){var s=H_();return function(){var a=Oa(c),o;if(s){var t=Oa(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return $_(this,o)}}function $_(c,s){return s&&(Ta(s)==="object"||typeof s=="function")?s:Bs(c)}function Bs(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function H_(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function Oa(c){return Oa=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},Oa(c)}var ul=ft.EventEmitter,cl=ht,zi=lt,ac=Ss,ls=nh,oc=new cl("NonInviteClientTransaction"),$l=new cl("InviteClientTransaction"),F_=new cl("AckClientTransaction"),uc=new cl("NonInviteServerTransaction"),Hl=new cl("InviteServerTransaction"),he={STATUS_TRYING:1,STATUS_PROCEEDING:2,STATUS_CALLING:3,STATUS_ACCEPTED:4,STATUS_COMPLETED:5,STATUS_TERMINATED:6,STATUS_CONFIRMED:7,NON_INVITE_CLIENT:"nict",NON_INVITE_SERVER:"nist",INVITE_CLIENT:"ict",INVITE_SERVER:"ist"},j_=function(c){al(n,c);var s=ol(n);function n(a,o,t,r){var _;il(this,n),_=s.call(this),_.type=he.NON_INVITE_CLIENT,_.id="z9hG4bK".concat(Math.floor(Math.random()*1e7)),_.ua=a,_.transport=o,_.request=t,_.eventHandlers=r;var h="SIP/2.0/".concat(o.via_transport);return h+=" ".concat(a.configuration.via_host,";branch=").concat(_.id),_.request.setHeader("via",h),_.ua.newTransaction(Bs(_)),_}return ll(n,[{key:"stateChanged",value:function(o){this.state=o,this.emit("stateChanged")}},{key:"send",value:function(){var o=this;this.stateChanged(he.STATUS_TRYING),this.F=setTimeout(function(){o.timer_F()},ls.TIMER_F),this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){oc.debug("transport error occurred, deleting transaction ".concat(this.id)),clearTimeout(this.F),clearTimeout(this.K),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onTransportError()}},{key:"timer_F",value:function(){oc.debug("Timer F expired for transaction ".concat(this.id)),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onRequestTimeout()}},{key:"timer_K",value:function(){this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"receiveResponse",value:function(o){var t=this,r=o.status_code;if(r<200)switch(this.state){case he.STATUS_TRYING:case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(o);break}else switch(this.state){case he.STATUS_TRYING:case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_COMPLETED),clearTimeout(this.F),r===408?this.eventHandlers.onRequestTimeout():this.eventHandlers.onReceiveResponse(o),this.K=setTimeout(function(){t.timer_K()},ls.TIMER_K);break;case he.STATUS_COMPLETED:break}}},{key:"C",get:function(){return he}}]),n}(ul),V_=function(c){al(n,c);var s=ol(n);function n(a,o,t,r){var _;il(this,n),_=s.call(this),_.type=he.INVITE_CLIENT,_.id="z9hG4bK".concat(Math.floor(Math.random()*1e7)),_.ua=a,_.transport=o,_.request=t,_.eventHandlers=r,t.transaction=Bs(_);var h="SIP/2.0/".concat(o.via_transport);return h+=" ".concat(a.configuration.via_host,";branch=").concat(_.id),_.request.setHeader("via",h),_.ua.newTransaction(Bs(_)),_}return ll(n,[{key:"stateChanged",value:function(o){this.state=o,this.emit("stateChanged")}},{key:"send",value:function(){var o=this;this.stateChanged(he.STATUS_CALLING),this.B=setTimeout(function(){o.timer_B()},ls.TIMER_B),this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){clearTimeout(this.B),clearTimeout(this.D),clearTimeout(this.M),this.state!==he.STATUS_ACCEPTED&&($l.debug("transport error occurred, deleting transaction ".concat(this.id)),this.eventHandlers.onTransportError()),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"timer_M",value:function(){$l.debug("Timer M expired for transaction ".concat(this.id)),this.state===he.STATUS_ACCEPTED&&(clearTimeout(this.B),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this))}},{key:"timer_B",value:function(){$l.debug("Timer B expired for transaction ".concat(this.id)),this.state===he.STATUS_CALLING&&(this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onRequestTimeout())}},{key:"timer_D",value:function(){$l.debug("Timer D expired for transaction ".concat(this.id)),clearTimeout(this.B),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"sendACK",value:function(o){var t=this,r=new ac.OutgoingRequest(zi.ACK,this.request.ruri,this.ua,{route_set:this.request.getHeaders("route"),call_id:this.request.getHeader("call-id"),cseq:this.request.cseq});r.setHeader("from",this.request.getHeader("from")),r.setHeader("via",this.request.getHeader("via")),r.setHeader("to",o.getHeader("to")),this.D=setTimeout(function(){t.timer_D()},ls.TIMER_D),this.transport.send(r)}},{key:"cancel",value:function(o){if(this.state===he.STATUS_PROCEEDING){var t=new ac.OutgoingRequest(zi.CANCEL,this.request.ruri,this.ua,{route_set:this.request.getHeaders("route"),call_id:this.request.getHeader("call-id"),cseq:this.request.cseq});t.setHeader("from",this.request.getHeader("from")),t.setHeader("via",this.request.getHeader("via")),t.setHeader("to",this.request.getHeader("to")),o&&t.setHeader("reason",o),this.transport.send(t)}}},{key:"receiveResponse",value:function(o){var t=this,r=o.status_code;if(r>=100&&r<=199)switch(this.state){case he.STATUS_CALLING:this.stateChanged(he.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(o);break;case he.STATUS_PROCEEDING:this.eventHandlers.onReceiveResponse(o);break}else if(r>=200&&r<=299)switch(this.state){case he.STATUS_CALLING:case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_ACCEPTED),this.M=setTimeout(function(){t.timer_M()},ls.TIMER_M),this.eventHandlers.onReceiveResponse(o);break;case he.STATUS_ACCEPTED:this.eventHandlers.onReceiveResponse(o);break}else if(r>=300&&r<=699)switch(this.state){case he.STATUS_CALLING:case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_COMPLETED),this.sendACK(o),this.eventHandlers.onReceiveResponse(o);break;case he.STATUS_COMPLETED:this.sendACK(o);break}}},{key:"C",get:function(){return he}}]),n}(ul),q_=function(c){al(n,c);var s=ol(n);function n(a,o,t,r){var _;il(this,n),_=s.call(this),_.id="z9hG4bK".concat(Math.floor(Math.random()*1e7)),_.transport=o,_.request=t,_.eventHandlers=r;var h="SIP/2.0/".concat(o.via_transport);return h+=" ".concat(a.configuration.via_host,";branch=").concat(_.id),_.request.setHeader("via",h),_}return ll(n,[{key:"send",value:function(){this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){F_.debug("transport error occurred for transaction ".concat(this.id)),this.eventHandlers.onTransportError()}},{key:"C",get:function(){return he}}]),n}(ul),B_=function(c){al(n,c);var s=ol(n);function n(a,o,t){var r;return il(this,n),r=s.call(this),r.type=he.NON_INVITE_SERVER,r.id=t.via_branch,r.ua=a,r.transport=o,r.request=t,r.last_response="",t.server_transaction=Bs(r),r.state=he.STATUS_TRYING,a.newTransaction(Bs(r)),r}return ll(n,[{key:"stateChanged",value:function(o){this.state=o,this.emit("stateChanged")}},{key:"timer_J",value:function(){uc.debug("Timer J expired for transaction ".concat(this.id)),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"onTransportError",value:function(){this.transportError||(this.transportError=!0,uc.debug("transport error occurred, deleting transaction ".concat(this.id)),clearTimeout(this.J),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this))}},{key:"receiveResponse",value:function(o,t,r,_){var h=this;if(o===100)switch(this.state){case he.STATUS_TRYING:this.stateChanged(he.STATUS_PROCEEDING),this.transport.send(t)||this.onTransportError();break;case he.STATUS_PROCEEDING:this.last_response=t,this.transport.send(t)?r&&r():(this.onTransportError(),_&&_());break}else if(o>=200&&o<=699)switch(this.state){case he.STATUS_TRYING:case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_COMPLETED),this.last_response=t,this.J=setTimeout(function(){h.timer_J()},ls.TIMER_J),this.transport.send(t)?r&&r():(this.onTransportError(),_&&_());break;case he.STATUS_COMPLETED:break}}},{key:"C",get:function(){return he}}]),n}(ul),G_=function(c){al(n,c);var s=ol(n);function n(a,o,t){var r;return il(this,n),r=s.call(this),r.type=he.INVITE_SERVER,r.id=t.via_branch,r.ua=a,r.transport=o,r.request=t,r.last_response="",t.server_transaction=Bs(r),r.state=he.STATUS_PROCEEDING,a.newTransaction(Bs(r)),r.resendProvisionalTimer=null,t.reply(100),r}return ll(n,[{key:"stateChanged",value:function(o){this.state=o,this.emit("stateChanged")}},{key:"timer_H",value:function(){Hl.debug("Timer H expired for transaction ".concat(this.id)),this.state===he.STATUS_COMPLETED&&Hl.debug("ACK not received, dialog will be terminated"),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"timer_I",value:function(){this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"timer_L",value:function(){Hl.debug("Timer L expired for transaction ".concat(this.id)),this.state===he.STATUS_ACCEPTED&&(this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this))}},{key:"onTransportError",value:function(){this.transportError||(this.transportError=!0,Hl.debug("transport error occurred, deleting transaction ".concat(this.id)),this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),clearTimeout(this.L),clearTimeout(this.H),clearTimeout(this.I),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this))}},{key:"resend_provisional",value:function(){this.transport.send(this.last_response)||this.onTransportError()}},{key:"receiveResponse",value:function(o,t,r,_){var h=this;if(o>=100&&o<=199)switch(this.state){case he.STATUS_PROCEEDING:this.transport.send(t)||this.onTransportError(),this.last_response=t;break}if(o>100&&o<=199&&this.state===he.STATUS_PROCEEDING)this.resendProvisionalTimer===null&&(this.resendProvisionalTimer=setInterval(function(){h.resend_provisional()},ls.PROVISIONAL_RESPONSE_INTERVAL));else if(o>=200&&o<=299)switch(this.state){case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_ACCEPTED),this.last_response=t,this.L=setTimeout(function(){h.timer_L()},ls.TIMER_L),this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null);case he.STATUS_ACCEPTED:this.transport.send(t)?r&&r():(this.onTransportError(),_&&_());break}else if(o>=300&&o<=699)switch(this.state){case he.STATUS_PROCEEDING:this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),this.transport.send(t)?(this.stateChanged(he.STATUS_COMPLETED),this.H=setTimeout(function(){h.timer_H()},ls.TIMER_H),r&&r()):(this.onTransportError(),_&&_());break}}},{key:"C",get:function(){return he}}]),n}(ul);function W_(c,s){var n=c._transactions,a;switch(s.method){case zi.INVITE:if(a=n.ist[s.via_branch],a){switch(a.state){case he.STATUS_PROCEEDING:a.transport.send(a.last_response);break;case he.STATUS_ACCEPTED:break}return!0}break;case zi.ACK:if(a=n.ist[s.via_branch],a){if(a.state===he.STATUS_ACCEPTED)return!1;if(a.state===he.STATUS_COMPLETED)return a.state=he.STATUS_CONFIRMED,a.I=setTimeout(function(){a.timer_I()},ls.TIMER_I),!0}else return!1;break;case zi.CANCEL:return a=n.ist[s.via_branch],a?(s.reply_sl(200),a.state!==he.STATUS_PROCEEDING):(s.reply_sl(481),!0);default:if(a=n.nist[s.via_branch],a){switch(a.state){case he.STATUS_TRYING:break;case he.STATUS_PROCEEDING:case he.STATUS_COMPLETED:a.transport.send(a.last_response);break}return!0}break}}var fl={C:he,NonInviteClientTransaction:j_,InviteClientTransaction:V_,AckClientTransaction:q_,NonInviteServerTransaction:B_,InviteServerTransaction:G_,checkTransaction:W_};function K_(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function cc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Y_(c,s,n){return s&&cc(c.prototype,s),n&&cc(c,n),c}var J_=ht,fc=lt,z_=M_,go=fl,X_=new J_("RequestSender"),To={onRequestTimeout:function(){},onTransportError:function(){},onReceiveResponse:function(){},onAuthenticated:function(){}},hl=function(){function c(s,n,a){K_(this,c),this._ua=s,this._eventHandlers=a,this._method=n.method,this._request=n,this._auth=null,this._challenged=!1,this._staled=!1;for(var o in To)Object.prototype.hasOwnProperty.call(To,o)&&(this._eventHandlers[o]||(this._eventHandlers[o]=To[o]));s.status===s.C.STATUS_USER_CLOSED&&(this._method!==fc.BYE||this._method!==fc.ACK)&&this._eventHandlers.onTransportError()}return Y_(c,[{key:"send",value:function(){var n=this,a={onRequestTimeout:function(){n._eventHandlers.onRequestTimeout()},onTransportError:function(){n._eventHandlers.onTransportError()},onReceiveResponse:function(t){n._receiveResponse(t)}};switch(this._method){case"INVITE":this.clientTransaction=new go.InviteClientTransaction(this._ua,this._ua.transport,this._request,a);break;case"ACK":this.clientTransaction=new go.AckClientTransaction(this._ua,this._ua.transport,this._request,a);break;default:this.clientTransaction=new go.NonInviteClientTransaction(this._ua,this._ua.transport,this._request,a)}this._ua._configuration.authorization_jwt&&this._request.setHeader("Authorization",this._ua._configuration.authorization_jwt),this.clientTransaction.send()}},{key:"_receiveResponse",value:function(n){var a,o,t=n.status_code;if((t===401||t===407)&&(this._ua.configuration.password!==null||this._ua.configuration.ha1!==null)){if(n.status_code===401?(a=n.parseHeader("www-authenticate"),o="authorization"):(a=n.parseHeader("proxy-authenticate"),o="proxy-authorization"),!a){X_.debug("".concat(n.status_code," with wrong or missing challenge, cannot authenticate")),this._eventHandlers.onReceiveResponse(n);return}if(!this._challenged||!this._staled&&a.stale===!0){if(this._auth||(this._auth=new z_({username:this._ua.configuration.authorization_user,password:this._ua.configuration.password,realm:this._ua.configuration.realm,ha1:this._ua.configuration.ha1})),!this._auth.authenticate(this._request,a)){this._eventHandlers.onReceiveResponse(n);return}this._challenged=!0,this._ua.set("realm",this._auth.get("realm")),this._ua.set("ha1",this._auth.get("ha1")),a.stale&&(this._staled=!0),this._request=this._request.clone(),this._request.cseq+=1,this._request.setHeader("cseq","".concat(this._request.cseq," ").concat(this._method)),this._request.setHeader(o,this._auth.toString()),this._eventHandlers.onAuthenticated(this._request),this.send()}else this._eventHandlers.onReceiveResponse(n)}else this._eventHandlers.onReceiveResponse(n)}}]),c}();function Q_(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function hc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Z_(c,s,n){return s&&hc(c.prototype,s),n&&hc(c,n),c}var ed=ht,vo=bt(),pn=lt,_c=Ss,dc=hl,Ni=new ed("Registrator"),Fl=10,td=function(){function c(s,n){Q_(this,c),this._reg_id=1,this._ua=s,this._transport=n,this._registrar=s.configuration.registrar_server,this._expires=s.configuration.register_expires,this._call_id=vo.createRandomToken(22),this._cseq=0,this._to_uri=s.configuration.uri,this._registrationTimer=null,this._registering=!1,this._registered=!1,this._contact=this._ua.contact.toString(),this._contact+=";+sip.ice",this._extraHeaders=[],this._extraContactParams="",this._sipInstance='"<urn:uuid:'.concat(this._ua.configuration.instance_id,'>"'),this._contact+=";reg-id=".concat(this._reg_id),this._contact+=";+sip.instance=".concat(this._sipInstance)}return Z_(c,[{key:"setExtraHeaders",value:function(n){Array.isArray(n)||(n=[]),this._extraHeaders=n.slice()}},{key:"setExtraContactParams",value:function(n){n instanceof Object||(n={}),this._extraContactParams="";for(var a in n)if(Object.prototype.hasOwnProperty.call(n,a)){var o=n[a];this._extraContactParams+=";".concat(a),o&&(this._extraContactParams+="=".concat(o))}}},{key:"register",value:function(){var n=this;if(this._registering){Ni.debug("Register request in progress...");return}var a=this._extraHeaders.slice();a.push("Contact: ".concat(this._contact,";expires=").concat(this._expires).concat(this._extraContactParams)),a.push("Expires: ".concat(this._expires));var o=new _c.OutgoingRequest(pn.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},a),t=new dc(this._ua,o,{onRequestTimeout:function(){n._registrationFailure(null,pn.causes.REQUEST_TIMEOUT)},onTransportError:function(){n._registrationFailure(null,pn.causes.CONNECTION_ERROR)},onAuthenticated:function(){n._cseq+=1},onReceiveResponse:function(_){if(_.cseq===n._cseq)switch(n._registrationTimer!==null&&(clearTimeout(n._registrationTimer),n._registrationTimer=null),!0){case/^1[0-9]{2}$/.test(_.status_code):break;case/^2[0-9]{2}$/.test(_.status_code):{if(n._registering=!1,!_.hasHeader("Contact")){Ni.debug("no Contact header in response to REGISTER, response ignored");break}var h=_.headers.Contact.reduce(function(y,A){return y.concat(A.parsed)},[]),d=h.find(function(y){return n._sipInstance===y.getParam("+sip.instance")&&n._reg_id===parseInt(y.getParam("reg-id"))});if(d||(d=h.find(function(y){return y.uri.user===n._ua.contact.uri.user})),!d){Ni.debug("no Contact header pointing to us, response ignored");break}var g=d.getParam("expires");!g&&_.hasHeader("expires")&&(g=_.getHeader("expires")),g||(g=n._expires),g=Number(g),g<Fl&&(g=Fl);var T=g>64?g*1e3/2+Math.floor((g/2-32)*1e3*Math.random()):g*1e3-5e3;n._registrationTimer=setTimeout(function(){n._registrationTimer=null,n._ua.listeners("registrationExpiring").length===0?n.register():n._ua.emit("registrationExpiring")},T),d.hasParam("temp-gruu")&&(n._ua.contact.temp_gruu=d.getParam("temp-gruu").replace(/"/g,"")),d.hasParam("pub-gruu")&&(n._ua.contact.pub_gruu=d.getParam("pub-gruu").replace(/"/g,"")),n._registered||(n._registered=!0,n._ua.registered({response:_}));break}case/^423$/.test(_.status_code):{_.hasHeader("min-expires")?(n._expires=Number(_.getHeader("min-expires")),n._expires<Fl&&(n._expires=Fl),n.register()):(Ni.debug("423 response received for REGISTER without Min-Expires"),n._registrationFailure(_,pn.causes.SIP_FAILURE_CODE));break}default:{var E=vo.sipErrorCause(_.status_code);n._registrationFailure(_,E)}}}});this._registering=!0,t.send()}},{key:"unregister",value:function(){var n=this,a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this._registered){Ni.debug("already unregistered");return}this._registered=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null);var o=this._extraHeaders.slice();a.all?o.push("Contact: *".concat(this._extraContactParams)):o.push("Contact: ".concat(this._contact,";expires=0").concat(this._extraContactParams)),o.push("Expires: 0");var t=new _c.OutgoingRequest(pn.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},o),r=new dc(this._ua,t,{onRequestTimeout:function(){n._unregistered(null,pn.causes.REQUEST_TIMEOUT)},onTransportError:function(){n._unregistered(null,pn.causes.CONNECTION_ERROR)},onAuthenticated:function(){n._cseq+=1},onReceiveResponse:function(h){switch(!0){case/^1[0-9]{2}$/.test(h.status_code):break;case/^2[0-9]{2}$/.test(h.status_code):n._unregistered(h);break;default:{var d=vo.sipErrorCause(h.status_code);n._unregistered(h,d)}}}});r.send()}},{key:"close",value:function(){this._registered&&this.unregister()}},{key:"onTransportClosed",value:function(){this._registering=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),this._registered&&(this._registered=!1,this._ua.unregistered({}))}},{key:"_registrationFailure",value:function(n,a){this._registering=!1,this._ua.registrationFailed({response:n||null,cause:a}),this._registered&&(this._registered=!1,this._ua.unregistered({response:n||null,cause:a}))}},{key:"_unregistered",value:function(n,a){this._registering=!1,this._registered=!1,this._ua.unregistered({response:n||null,cause:a||null})}},{key:"registered",get:function(){return this._registered}}]),c}();function sd(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function pc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function nd(c,s,n){return s&&pc(c.prototype,s),n&&pc(c,n),c}var Eo=lt,jl=fl,rd=hl,So={onRequestTimeout:function(){},onTransportError:function(){},onSuccessResponse:function(){},onErrorResponse:function(){},onAuthenticated:function(){},onDialogError:function(){}},id=function(){function c(s,n,a){sd(this,c),this._dialog=s,this._ua=s._ua,this._request=n,this._eventHandlers=a,this._reattempt=!1,this._reattemptTimer=null;for(var o in So)Object.prototype.hasOwnProperty.call(So,o)&&(this._eventHandlers[o]||(this._eventHandlers[o]=So[o]))}return nd(c,[{key:"send",value:function(){var n=this,a=new rd(this._ua,this._request,{onRequestTimeout:function(){n._eventHandlers.onRequestTimeout()},onTransportError:function(){n._eventHandlers.onTransportError()},onAuthenticated:function(r){n._eventHandlers.onAuthenticated(r)},onReceiveResponse:function(r){n._receiveResponse(r)}});if(a.send(),(this._request.method===Eo.INVITE||this._request.method===Eo.UPDATE&&this._request.body)&&a.clientTransaction.state!==jl.C.STATUS_TERMINATED){this._dialog.uac_pending_reply=!0;var o=function t(){(a.clientTransaction.state===jl.C.STATUS_ACCEPTED||a.clientTransaction.state===jl.C.STATUS_COMPLETED||a.clientTransaction.state===jl.C.STATUS_TERMINATED)&&(a.clientTransaction.removeListener("stateChanged",t),n._dialog.uac_pending_reply=!1)};a.clientTransaction.on("stateChanged",o)}}},{key:"_receiveResponse",value:function(n){var a=this;n.status_code===408||n.status_code===481?this._eventHandlers.onDialogError(n):n.method===Eo.INVITE&&n.status_code===491?this._reattempt?n.status_code>=200&&n.status_code<300?this._eventHandlers.onSuccessResponse(n):n.status_code>=300&&this._eventHandlers.onErrorResponse(n):(this._request.cseq=this._dialog.local_seqnum+=1,this._reattemptTimer=setTimeout(function(){a._dialog.isTerminated()||(a._reattempt=!0,a.send())},1e3)):n.status_code>=200&&n.status_code<300?this._eventHandlers.onSuccessResponse(n):n.status_code>=300&&this._eventHandlers.onErrorResponse(n)}},{key:"request",get:function(){return this._request}}]),c}();function ld(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function mc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function gc(c,s,n){return s&&mc(c.prototype,s),n&&mc(c,n),c}var ad=ht,Tc=Ss,Ms=lt,Ui=fl,od=id,yo=bt(),Ao=new ad("Dialog"),Ls={STATUS_EARLY:1,STATUS_CONFIRMED:2,STATUS_TERMINATED:3},ud=function(){gc(c,null,[{key:"C",get:function(){return Ls}}]);function c(s,n,a){var o=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Ls.STATUS_CONFIRMED;if(ld(this,c),this._owner=s,this._ua=s._ua,this._uac_pending_reply=!1,this._uas_pending_reply=!1,!n.hasHeader("contact"))return{error:"unable to create a Dialog without Contact header field"};n instanceof Tc.IncomingResponse&&(o=n.status_code<200?Ls.STATUS_EARLY:Ls.STATUS_CONFIRMED);var t=n.parseHeader("contact");a==="UAS"?(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=o,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._ack_seqnum=this._remote_seqnum):a==="UAC"&&(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=o,this._local_seqnum=n.cseq,this._local_uri=n.parseHeader("from").uri,this._remote_uri=n.parseHeader("to").uri,this._remote_target=t.uri,this._route_set=n.getHeaders("record-route").reverse(),this._ack_seqnum=null),this._ua.newDialog(this),Ao.debug("new ".concat(a," dialog created with status ").concat(this._state===Ls.STATUS_EARLY?"EARLY":"CONFIRMED"))}return gc(c,[{key:"isTerminated",value:function(){return this._status===Ls.STATUS_TERMINATED}},{key:"update",value:function(n,a){this._state=Ls.STATUS_CONFIRMED,Ao.debug("dialog ".concat(this._id.toString()," changed to CONFIRMED state")),a==="UAC"&&(this._route_set=n.getHeaders("record-route").reverse())}},{key:"terminate",value:function(){Ao.debug("dialog ".concat(this._id.toString()," deleted")),this._ua.destroyDialog(this),this._state=Ls.STATUS_TERMINATED}},{key:"sendRequest",value:function(n){var a=this,o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=yo.cloneArray(o.extraHeaders),r=yo.cloneObject(o.eventHandlers),_=o.body||null,h=this._createRequest(n,t,_);r.onAuthenticated=function(){a._local_seqnum+=1};var d=new od(this,h,r);return d.send(),h}},{key:"receiveRequest",value:function(n){this._checkInDialogRequest(n)&&(n.method===Ms.ACK&&this._ack_seqnum!==null?this._ack_seqnum=null:n.method===Ms.INVITE&&(this._ack_seqnum=n.cseq),this._owner.receiveRequest(n))}},{key:"_createRequest",value:function(n,a,o){a=yo.cloneArray(a),this._local_seqnum||(this._local_seqnum=Math.floor(Math.random()*1e4));var t=n===Ms.CANCEL||n===Ms.ACK?this._local_seqnum:this._local_seqnum+=1,r=new Tc.OutgoingRequest(n,this._remote_target,this._ua,{cseq:t,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},a,o);return r}},{key:"_checkInDialogRequest",value:function(n){var a=this;if(!this._remote_seqnum)this._remote_seqnum=n.cseq;else if(n.cseq<this._remote_seqnum)if(n.method===Ms.ACK){if(this._ack_seqnum===null||n.cseq!==this._ack_seqnum)return!1}else return n.reply(500),!1;else n.cseq>this._remote_seqnum&&(this._remote_seqnum=n.cseq);if(n.method===Ms.INVITE||n.method===Ms.UPDATE&&n.body){if(this._uac_pending_reply===!0)n.reply(491);else if(this._uas_pending_reply===!0){var o=(Math.random()*10|0)+1;return n.reply(500,null,["Retry-After:".concat(o)]),!1}else{this._uas_pending_reply=!0;var t=function r(){(n.server_transaction.state===Ui.C.STATUS_ACCEPTED||n.server_transaction.state===Ui.C.STATUS_COMPLETED||n.server_transaction.state===Ui.C.STATUS_TERMINATED)&&(n.server_transaction.removeListener("stateChanged",r),a._uas_pending_reply=!1)};n.server_transaction.on("stateChanged",t)}n.hasHeader("contact")&&n.server_transaction.on("stateChanged",function(){n.server_transaction.state===Ui.C.STATUS_ACCEPTED&&(a._remote_target=n.parseHeader("contact").uri)})}else n.method===Ms.NOTIFY&&n.hasHeader("contact")&&n.server_transaction.on("stateChanged",function(){n.server_transaction.state===Ui.C.STATUS_COMPLETED&&(a._remote_target=n.parseHeader("contact").uri)});return!0}},{key:"id",get:function(){return this._id}},{key:"local_seqnum",get:function(){return this._local_seqnum},set:function(n){this._local_seqnum=n}},{key:"owner",get:function(){return this._owner}},{key:"uac_pending_reply",get:function(){return this._uac_pending_reply},set:function(n){this._uac_pending_reply=n}},{key:"uas_pending_reply",get:function(){return this._uas_pending_reply}}]),c}(),xu={exports:{}};function va(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?va=function(n){return typeof n}:va=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},va(c)}function cd(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function vc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function fd(c,s,n){return s&&vc(c.prototype,s),n&&vc(c,n),c}function hd(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&hu(c,s)}function hu(c,s){return hu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},hu(c,s)}function _d(c){var s=md();return function(){var a=Da(c),o;if(s){var t=Da(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return dd(this,o)}}function dd(c,s){return s&&(va(s)==="object"||typeof s=="function")?s:pd(c)}function pd(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function md(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function Da(c){return Da=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},Da(c)}var gd=ft.EventEmitter,Td=ht,vd=lt,Ed=Ws,Ec=bt(),Sd=new Td("RTCSession:DTMF"),rh={MIN_DURATION:70,MAX_DURATION:6e3,DEFAULT_DURATION:100,MIN_INTER_TONE_GAP:50,DEFAULT_INTER_TONE_GAP:500};xu.exports=function(c){hd(n,c);var s=_d(n);function n(a){var o;return cd(this,n),o=s.call(this),o._session=a,o._direction=null,o._tone=null,o._duration=null,o._request=null,o}return fd(n,[{key:"send",value:function(o){var t=this,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(o===void 0)throw new TypeError("Not enough arguments");if(this._direction="outgoing",this._session.status!==this._session.C.STATUS_CONFIRMED&&this._session.status!==this._session.C.STATUS_WAITING_FOR_ACK)throw new Ed.InvalidStateError(this._session.status);var _=Ec.cloneArray(r.extraHeaders);if(this.eventHandlers=Ec.cloneObject(r.eventHandlers),typeof o=="string")o=o.toUpperCase();else if(typeof o=="number")o=o.toString();else throw new TypeError("Invalid tone: ".concat(o));if(o.match(/^[0-9A-DR#*]$/))this._tone=o;else throw new TypeError("Invalid tone: ".concat(o));this._duration=r.duration,_.push("Content-Type: application/dtmf-relay");var h="Signal=".concat(this._tone,`\r
47
+ `);h+="Duration=".concat(this._duration),this._session.newDTMF({originator:"local",dtmf:this,request:this._request}),this._session.sendRequest(vd.INFO,{extraHeaders:_,eventHandlers:{onSuccessResponse:function(g){t.emit("succeeded",{originator:"remote",response:g})},onErrorResponse:function(g){t.eventHandlers.onFailed&&t.eventHandlers.onFailed(),t.emit("failed",{originator:"remote",response:g})},onRequestTimeout:function(){t._session.onRequestTimeout()},onTransportError:function(){t._session.onTransportError()},onDialogError:function(){t._session.onDialogError()}},body:h})}},{key:"init_incoming",value:function(o){var t=/^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/,r=/^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/;if(this._direction="incoming",this._request=o,o.reply(200),o.body){var _=o.body.split(`
48
+ `);_.length>=1&&t.test(_[0])&&(this._tone=_[0].replace(t,"$2")),_.length>=2&&r.test(_[1])&&(this._duration=parseInt(_[1].replace(r,"$2"),10))}this._duration||(this._duration=rh.DEFAULT_DURATION),this._tone?this._session.newDTMF({originator:"remote",dtmf:this,request:o}):Sd.debug("invalid INFO DTMF received, discarded")}},{key:"tone",get:function(){return this._tone}},{key:"duration",get:function(){return this._duration}}]),n}(gd);xu.exports.C=rh;var yd=xu.exports;function Ea(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ea=function(n){return typeof n}:Ea=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Ea(c)}function Ad(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Sc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Cd(c,s,n){return s&&Sc(c.prototype,s),n&&Sc(c,n),c}function Rd(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&_u(c,s)}function _u(c,s){return _u=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},_u(c,s)}function Id(c){var s=Od();return function(){var a=Na(c),o;if(s){var t=Na(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return bd(this,o)}}function bd(c,s){return s&&(Ea(s)==="object"||typeof s=="function")?s:wd(c)}function wd(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function Od(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function Na(c){return Na=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},Na(c)}var Dd=ft.EventEmitter,Nd=lt,Ud=Ws,xd=bt(),Pd=function(c){Rd(n,c);var s=Id(n);function n(a){var o;return Ad(this,n),o=s.call(this),o._session=a,o._direction=null,o._contentType=null,o._body=null,o}return Cd(n,[{key:"send",value:function(o,t){var r=this,_=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(this._direction="outgoing",o===void 0)throw new TypeError("Not enough arguments");if(this._session.status!==this._session.C.STATUS_CONFIRMED&&this._session.status!==this._session.C.STATUS_WAITING_FOR_ACK)throw new Ud.InvalidStateError(this._session.status);this._contentType=o,this._body=t;var h=xd.cloneArray(_.extraHeaders);h.push("Content-Type: ".concat(o)),this._session.newInfo({originator:"local",info:this,request:this.request}),this._session.sendRequest(Nd.INFO,{extraHeaders:h,eventHandlers:{onSuccessResponse:function(g){r.emit("succeeded",{originator:"remote",response:g})},onErrorResponse:function(g){r.emit("failed",{originator:"remote",response:g})},onTransportError:function(){r._session.onTransportError()},onRequestTimeout:function(){r._session.onRequestTimeout()},onDialogError:function(){r._session.onDialogError()}},body:t})}},{key:"init_incoming",value:function(o){this._direction="incoming",this.request=o,o.reply(200),this._contentType=o.hasHeader("Content-Type")?o.getHeader("Content-Type").toLowerCase():void 0,this._body=o.body,this._session.newInfo({originator:"remote",info:this,request:o})}},{key:"contentType",get:function(){return this._contentType}},{key:"body",get:function(){return this._body}}]),n}(Dd);function kd(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function yc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Md(c,s,n){return s&&yc(c.prototype,s),n&&yc(c,n),c}var Ld=ht,Ac=lt,$d=new Ld("RTCSession:ReferNotifier"),Co={event_type:"refer",body_type:"message/sipfrag;version=2.0",expires:300},Hd=function(){function c(s,n,a){kd(this,c),this._session=s,this._id=n,this._expires=a||Co.expires,this._active=!0,this.notify(100)}return Md(c,[{key:"notify",value:function(n,a){if($d.debug("notify()"),this._active!==!1){a=a||Ac.REASON_PHRASE[n]||"";var o;n>=200?o="terminated;reason=noresource":o="active;expires=".concat(this._expires),this._session.sendRequest(Ac.NOTIFY,{extraHeaders:["Event: ".concat(Co.event_type,";id=").concat(this._id),"Subscription-State: ".concat(o),"Content-Type: ".concat(Co.body_type)],body:"SIP/2.0 ".concat(n," ").concat(a),eventHandlers:{onErrorResponse:function(){this._active=!1}}})}}}]),c}();function Sa(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Sa=function(n){return typeof n}:Sa=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Sa(c)}function Fd(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Cc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function jd(c,s,n){return s&&Cc(c.prototype,s),n&&Cc(c,n),c}function Vd(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&du(c,s)}function du(c,s){return du=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},du(c,s)}function qd(c){var s=Wd();return function(){var a=Ua(c),o;if(s){var t=Ua(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return Bd(this,o)}}function Bd(c,s){return s&&(Sa(s)==="object"||typeof s=="function")?s:Gd(c)}function Gd(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function Wd(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function Ua(c){return Ua=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},Ua(c)}var Kd=ft.EventEmitter,Yd=ht,xi=lt,Jd=os(),Rc=bt(),mn=new Yd("RTCSession:ReferSubscriber"),zd=function(c){Vd(n,c);var s=qd(n);function n(a){var o;return Fd(this,n),o=s.call(this),o._id=null,o._session=a,o}return jd(n,[{key:"sendRefer",value:function(o){var t=this,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};mn.debug("sendRefer()");var _=Rc.cloneArray(r.extraHeaders),h=Rc.cloneObject(r.eventHandlers);for(var d in h)Object.prototype.hasOwnProperty.call(h,d)&&this.on(d,h[d]);var g=null;r.replaces&&(g=r.replaces._request.call_id,g+=";to-tag=".concat(r.replaces._to_tag),g+=";from-tag=".concat(r.replaces._from_tag),g=encodeURIComponent(g));var T="Refer-To: <".concat(o).concat(g?"?Replaces=".concat(g):"",">");if(_.push(T),!_.some(function(A){return A.toLowerCase().startsWith("referred-by:")})){var E="Referred-By: <".concat(this._session._ua._configuration.uri._scheme,":").concat(this._session._ua._configuration.uri._user,"@").concat(this._session._ua._configuration.uri._host,">");_.push(E)}_.push("Contact: ".concat(this._session.contact));var y=this._session.sendRequest(xi.REFER,{extraHeaders:_,eventHandlers:{onSuccessResponse:function(C){t._requestSucceeded(C)},onErrorResponse:function(C){t._requestFailed(C,xi.causes.REJECTED)},onTransportError:function(){t._requestFailed(null,xi.causes.CONNECTION_ERROR)},onRequestTimeout:function(){t._requestFailed(null,xi.causes.REQUEST_TIMEOUT)},onDialogError:function(){t._requestFailed(null,xi.causes.DIALOG_ERROR)}}});this._id=y.cseq}},{key:"receiveNotify",value:function(o){if(mn.debug("receiveNotify()"),!!o.body){var t=Jd.parse(o.body.trim().split(`\r
49
+ `,1)[0],"Status_Line");if(t===-1){mn.debug('receiveNotify() | error parsing NOTIFY body: "'.concat(o.body,'"'));return}switch(!0){case/^100$/.test(t.status_code):this.emit("trying",{request:o,status_line:t});break;case/^1[0-9]{2}$/.test(t.status_code):this.emit("progress",{request:o,status_line:t});break;case/^2[0-9]{2}$/.test(t.status_code):this.emit("accepted",{request:o,status_line:t});break;default:this.emit("failed",{request:o,status_line:t});break}}}},{key:"_requestSucceeded",value:function(o){mn.debug("REFER succeeded"),mn.debug('emit "requestSucceeded"'),this.emit("requestSucceeded",{response:o})}},{key:"_requestFailed",value:function(o,t){mn.debug("REFER failed"),mn.debug('emit "requestFailed"'),this.emit("requestFailed",{response:o||null,cause:t})}},{key:"id",get:function(){return this._id}}]),n}(Kd);function ya(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ya=function(n){return typeof n}:ya=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},ya(c)}function ds(c,s){var n;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(n=Xd(c))||s&&c&&typeof c.length=="number"){n&&(c=n);var a=0,o=function(){};return{s:o,n:function(){return a>=c.length?{done:!0}:{done:!1,value:c[a++]}},e:function(d){throw d},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
50
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var t=!0,r=!1,_;return{s:function(){n=c[Symbol.iterator]()},n:function(){var d=n.next();return t=d.done,d},e:function(d){r=!0,_=d},f:function(){try{!t&&n.return!=null&&n.return()}finally{if(r)throw _}}}}function Xd(c,s){if(c){if(typeof c=="string")return Ic(c,s);var n=Object.prototype.toString.call(c).slice(8,-1);if(n==="Object"&&c.constructor&&(n=c.constructor.name),n==="Map"||n==="Set")return Array.from(c);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Ic(c,s)}}function Ic(c,s){(s==null||s>c.length)&&(s=c.length);for(var n=0,a=new Array(s);n<s;n++)a[n]=c[n];return a}function Qd(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function bc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function wc(c,s,n){return s&&bc(c.prototype,s),n&&bc(c,n),c}function Zd(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&pu(c,s)}function pu(c,s){return pu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},pu(c,s)}function ep(c){var s=np();return function(){var a=xa(c),o;if(s){var t=xa(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return tp(this,o)}}function tp(c,s){return s&&(ya(s)==="object"||typeof s=="function")?s:sp(c)}function sp(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function np(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function xa(c){return xa=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},xa(c)}var rp=ft.EventEmitter,Oc=xt,ip=ht,ce=lt,gn=Ws,Dc=fl,qe=bt(),Pi=nh,lp=Ss,Vl=ud,ap=hl,Pt=yd,Nc=Pd,op=Hd,up=zd,Uc=Ks(),K=new ip("RTCSession"),Q={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_ACK:6,STATUS_CANCELED:7,STATUS_TERMINATED:8,STATUS_CONFIRMED:9},ql=["audio","video"],cp=function(c){Zd(n,c);var s=ep(n);wc(n,null,[{key:"C",get:function(){return Q}}]);function n(a){var o;return Qd(this,n),K.debug("new"),o=s.call(this),o._id=null,o._ua=a,o._status=Q.STATUS_NULL,o._dialog=null,o._earlyDialogs={},o._contact=null,o._from_tag=null,o._to_tag=null,o._connection=null,o._connectionPromiseQueue=Promise.resolve(),o._request=null,o._is_canceled=!1,o._cancel_reason="",o._is_confirmed=!1,o._late_sdp=!1,o._rtcOfferConstraints=null,o._rtcAnswerConstraints=null,o._localMediaStream=null,o._localMediaStreamLocallyGenerated=!1,o._rtcReady=!0,o._iceReady=!1,o._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},o._direction=null,o._local_identity=null,o._remote_identity=null,o._start_time=null,o._end_time=null,o._tones=null,o._audioMuted=!1,o._videoMuted=!1,o._localHold=!1,o._remoteHold=!1,o._sessionTimers={enabled:o._ua.configuration.session_timers,refreshMethod:o._ua.configuration.session_timers_refresh_method,defaultExpires:ce.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},o._referSubscribers={},o._data={},o}return wc(n,[{key:"isInProgress",value:function(){switch(this._status){case Q.STATUS_NULL:case Q.STATUS_INVITE_SENT:case Q.STATUS_1XX_RECEIVED:case Q.STATUS_INVITE_RECEIVED:case Q.STATUS_WAITING_FOR_ANSWER:return!0;default:return!1}}},{key:"isEstablished",value:function(){switch(this._status){case Q.STATUS_ANSWERED:case Q.STATUS_WAITING_FOR_ACK:case Q.STATUS_CONFIRMED:return!0;default:return!1}}},{key:"isEnded",value:function(){switch(this._status){case Q.STATUS_CANCELED:case Q.STATUS_TERMINATED:return!0;default:return!1}}},{key:"isMuted",value:function(){return{audio:this._audioMuted,video:this._videoMuted}}},{key:"isOnHold",value:function(){return{local:this._localHold,remote:this._remoteHold}}},{key:"connect",value:function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0;K.debug("connect()");var _=o,h=qe.cloneObject(t.eventHandlers),d=qe.cloneArray(t.extraHeaders),g=qe.cloneObject(t.mediaConstraints,{audio:!0,video:!0}),T=t.mediaStream||null,E=qe.cloneObject(t.pcConfig,{iceServers:[]}),y=t.rtcConstraints||null,A=t.rtcOfferConstraints||null;if(this._rtcOfferConstraints=A,this._rtcAnswerConstraints=t.rtcAnswerConstraints||null,this._data=t.data||this._data,o===void 0)throw new TypeError("Not enough arguments");if(this._status!==Q.STATUS_NULL)throw new gn.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new gn.NotSupportedError("WebRTC not supported");if(o=this._ua.normalizeTarget(o),!o)throw new TypeError("Invalid target: ".concat(_));this._sessionTimers.enabled&&qe.isDecimal(t.sessionTimersExpires)&&(t.sessionTimersExpires>=ce.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=t.sessionTimersExpires:this._sessionTimers.defaultExpires=ce.SESSION_EXPIRES);for(var C in h)Object.prototype.hasOwnProperty.call(h,C)&&this.on(C,h[C]);this._from_tag=qe.newTag();var I=t.anonymous||!1,H={from_tag:this._from_tag};this._contact=this._ua.contact.toString({anonymous:I,outbound:!0}),I?(H.from_display_name="Anonymous",H.from_uri=new Uc("sip","anonymous","anonymous.invalid"),d.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString())),d.push("Privacy: id")):t.fromUserName&&(H.from_uri=new Uc("sip",t.fromUserName,this._ua.configuration.uri.host),d.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString()))),t.fromDisplayName&&(H.from_display_name=t.fromDisplayName),d.push("Contact: ".concat(this._contact)),d.push("Content-Type: application/sdp"),this._sessionTimers.enabled&&d.push("Session-Expires: ".concat(this._sessionTimers.defaultExpires).concat(this._ua.configuration.session_timers_force_refresher?";refresher=uac":"")),this._request=new lp.InitialOutgoingInviteRequest(o,this._ua,H,d),this._id=this._request.call_id+this._from_tag,this._createRTCConnection(E,y),this._direction="outgoing",this._local_identity=this._request.from,this._remote_identity=this._request.to,r&&r(this),this._newRTCSession("local",this._request),this._sendInitialRequest(g,A,T)}},{key:"init_incoming",value:function(o,t){var r=this;K.debug("init_incoming()");var _,h=o.hasHeader("Content-Type")?o.getHeader("Content-Type").toLowerCase():void 0;if(o.body&&h!=="application/sdp"){o.reply(415);return}if(this._status=Q.STATUS_INVITE_RECEIVED,this._from_tag=o.from_tag,this._id=o.call_id+this._from_tag,this._request=o,this._contact=this._ua.contact.toString(),o.hasHeader("expires")&&(_=o.getHeader("expires")*1e3),o.to_tag=qe.newTag(),!this._createDialog(o,"UAS",!0)){o.reply(500,"Missing Contact header field");return}o.body?this._late_sdp=!1:this._late_sdp=!0,this._status=Q.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(function(){o.reply(408),r._failed("local",null,ce.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),_&&(this._timers.expiresTimer=setTimeout(function(){r._status===Q.STATUS_WAITING_FOR_ANSWER&&(o.reply(487),r._failed("system",null,ce.causes.EXPIRES))},_)),this._direction="incoming",this._local_identity=o.to,this._remote_identity=o.from,t&&t(this),this._newRTCSession("remote",o),this._status!==Q.STATUS_TERMINATED&&(o.reply(180,null,["Contact: ".concat(this._contact)]),this._progress("local",null))}},{key:"answer",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("answer()");var r=this._request,_=qe.cloneArray(t.extraHeaders),h=qe.cloneObject(t.mediaConstraints),d=t.mediaStream||null,g=qe.cloneObject(t.pcConfig,{iceServers:[]}),T=t.rtcConstraints||null,E=t.rtcAnswerConstraints||null,y=qe.cloneObject(t.rtcOfferConstraints),A,C=!1,I=!1,H=!1,$=!1;if(this._rtcAnswerConstraints=E,this._rtcOfferConstraints=t.rtcOfferConstraints||null,this._data=t.data||this._data,this._direction!=="incoming")throw new gn.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==Q.STATUS_WAITING_FOR_ANSWER)throw new gn.InvalidStateError(this._status);if(this._sessionTimers.enabled&&qe.isDecimal(t.sessionTimersExpires)&&(t.sessionTimersExpires>=ce.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=t.sessionTimersExpires:this._sessionTimers.defaultExpires=ce.SESSION_EXPIRES),this._status=Q.STATUS_ANSWERED,!this._createDialog(r,"UAS")){r.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),_.unshift("Contact: ".concat(this._contact));var oe=r.parseSDP();Array.isArray(oe.media)||(oe.media=[oe.media]);var N=ds(oe.media),j;try{for(N.s();!(j=N.n()).done;){var Se=j.value;Se.type==="audio"&&(C=!0,(!Se.direction||Se.direction==="sendrecv")&&(H=!0)),Se.type==="video"&&(I=!0,(!Se.direction||Se.direction==="sendrecv")&&($=!0))}}catch(F){N.e(F)}finally{N.f()}if(d&&h.audio===!1){A=d.getAudioTracks();var ve=ds(A),k;try{for(ve.s();!(k=ve.n()).done;){var D=k.value;d.removeTrack(D)}}catch(F){ve.e(F)}finally{ve.f()}}if(d&&h.video===!1){A=d.getVideoTracks();var B=ds(A),q;try{for(B.s();!(q=B.n()).done;){var J=q.value;d.removeTrack(J)}}catch(F){B.e(F)}finally{B.f()}}!d&&h.audio===void 0&&(h.audio=H),!d&&h.video===void 0&&(h.video=$),!d&&!C&&!y.offerToReceiveAudio&&(h.audio=!1),!d&&!I&&!y.offerToReceiveVideo&&(h.video=!1),this._createRTCConnection(g,T),Promise.resolve().then(function(){if(d)return d;if(h.audio||h.video)return o._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(h).catch(function(F){throw o._status===Q.STATUS_TERMINATED?new Error("terminated"):(r.reply(480),o._failed("local",null,ce.causes.USER_DENIED_MEDIA_ACCESS),K.warn('emit "getusermediafailed" [error:%o]',F),o.emit("getusermediafailed",F),new Error("getUserMedia() failed"))})}).then(function(F){if(o._status===Q.STATUS_TERMINATED)throw new Error("terminated");o._localMediaStream=F,F&&F.getTracks().forEach(function(X){o._connection.addTrack(X,F)})}).then(function(){if(!o._late_sdp){var F={originator:"remote",type:"offer",sdp:r.body};K.debug('emit "sdp"'),o.emit("sdp",F);var X=new RTCSessionDescription({type:"offer",sdp:F.sdp});return o._connectionPromiseQueue=o._connectionPromiseQueue.then(function(){return o._connection.setRemoteDescription(X)}).catch(function(U){throw r.reply(488),o._failed("system",null,ce.causes.WEBRTC_ERROR),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',U),o.emit("peerconnection:setremotedescriptionfailed",U),new Error("peerconnection.setRemoteDescription() failed")}),o._connectionPromiseQueue}}).then(function(){if(o._status===Q.STATUS_TERMINATED)throw new Error("terminated");return o._connecting(r),o._late_sdp?o._createLocalDescription("offer",o._rtcOfferConstraints).catch(function(){throw r.reply(500),new Error("_createLocalDescription() failed")}):o._createLocalDescription("answer",E).catch(function(){throw r.reply(500),new Error("_createLocalDescription() failed")})}).then(function(F){if(o._status===Q.STATUS_TERMINATED)throw new Error("terminated");o._handleSessionTimersInIncomingRequest(r,_),r.reply(200,null,_,F,function(){o._status=Q.STATUS_WAITING_FOR_ACK,o._setInvite2xxTimer(r,F),o._setACKTimer(),o._accepted("local")},function(){o._failed("system",null,ce.causes.CONNECTION_ERROR)})}).catch(function(F){o._status!==Q.STATUS_TERMINATED&&K.warn(F)})}},{key:"terminate",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("terminate()");var r=t.cause||ce.causes.BYE,_=qe.cloneArray(t.extraHeaders),h=t.body,d,g=t.status_code,T=t.reason_phrase;if(this._status===Q.STATUS_TERMINATED)throw new gn.InvalidStateError(this._status);switch(this._status){case Q.STATUS_NULL:case Q.STATUS_INVITE_SENT:case Q.STATUS_1XX_RECEIVED:if(K.debug("canceling session"),g&&(g<200||g>=700))throw new TypeError("Invalid status_code: ".concat(g));g&&(T=T||ce.REASON_PHRASE[g]||"",d="SIP ;cause=".concat(g,' ;text="').concat(T,'"')),this._status===Q.STATUS_NULL||this._status===Q.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=d):this._status===Q.STATUS_1XX_RECEIVED&&this._request.cancel(d),this._status=Q.STATUS_CANCELED,this._failed("local",null,ce.causes.CANCELED);break;case Q.STATUS_WAITING_FOR_ANSWER:case Q.STATUS_ANSWERED:if(K.debug("rejecting session"),g=g||480,g<300||g>=700)throw new TypeError("Invalid status_code: ".concat(g));this._request.reply(g,T,_,h),this._failed("local",null,ce.causes.REJECTED);break;case Q.STATUS_WAITING_FOR_ACK:case Q.STATUS_CONFIRMED:if(K.debug("terminating session"),T=t.reason_phrase||ce.REASON_PHRASE[g]||"",g&&(g<200||g>=700))throw new TypeError("Invalid status_code: ".concat(g));if(g&&_.push("Reason: SIP ;cause=".concat(g,'; text="').concat(T,'"')),this._status===Q.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==Dc.C.STATUS_TERMINATED){var E=this._dialog;this.receiveRequest=function(y){var A=y.method;A===ce.ACK&&(o.sendRequest(ce.BYE,{extraHeaders:_,body:h}),E.terminate())},this._request.server_transaction.on("stateChanged",function(){o._request.server_transaction.state===Dc.C.STATUS_TERMINATED&&(o.sendRequest(ce.BYE,{extraHeaders:_,body:h}),E.terminate())}),this._ended("local",null,r),this._dialog=E,this._ua.newDialog(E)}else this.sendRequest(ce.BYE,{extraHeaders:_,body:h}),this._ended("local",null,r)}}},{key:"sendDTMF",value:function(o){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};K.debug("sendDTMF() | tones: %s",o);var r=0,_=t.duration||null,h=t.interToneGap||null,d=t.transportType||ce.DTMF_TRANSPORT.INFO;if(o===void 0)throw new TypeError("Not enough arguments");if(this._status!==Q.STATUS_CONFIRMED&&this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_1XX_RECEIVED)throw new gn.InvalidStateError(this._status);if(d!==ce.DTMF_TRANSPORT.INFO&&d!==ce.DTMF_TRANSPORT.RFC2833)throw new TypeError("invalid transportType: ".concat(d));if(typeof o=="number"&&(o=o.toString()),!o||typeof o!="string"||!o.match(/^[0-9A-DR#*,]+$/i))throw new TypeError("Invalid tones: ".concat(o));if(_&&!qe.isDecimal(_))throw new TypeError("Invalid tone duration: ".concat(_));if(_?_<Pt.C.MIN_DURATION?(K.debug('"duration" value is lower than the minimum allowed, setting it to '.concat(Pt.C.MIN_DURATION," milliseconds")),_=Pt.C.MIN_DURATION):_>Pt.C.MAX_DURATION?(K.debug('"duration" value is greater than the maximum allowed, setting it to '.concat(Pt.C.MAX_DURATION," milliseconds")),_=Pt.C.MAX_DURATION):_=Math.abs(_):_=Pt.C.DEFAULT_DURATION,t.duration=_,h&&!qe.isDecimal(h))throw new TypeError("Invalid interToneGap: ".concat(h));if(h?h<Pt.C.MIN_INTER_TONE_GAP?(K.debug('"interToneGap" value is lower than the minimum allowed, setting it to '.concat(Pt.C.MIN_INTER_TONE_GAP," milliseconds")),h=Pt.C.MIN_INTER_TONE_GAP):h=Math.abs(h):h=Pt.C.DEFAULT_INTER_TONE_GAP,d===ce.DTMF_TRANSPORT.RFC2833){var g=this._getDTMFRTPSender();g&&(o=g.toneBuffer+o,g.insertDTMF(o,_,h));return}if(this._tones){this._tones+=o;return}this._tones=o,T.call(this);function T(){var E=this,y;if(this._status===Q.STATUS_TERMINATED||!this._tones||r>=this._tones.length){this._tones=null;return}var A=this._tones[r];if(r+=1,A===",")y=2e3;else{var C=new Pt(this);t.eventHandlers={onFailed:function(){E._tones=null}},C.send(A,t),y=_+h}setTimeout(T.bind(this),y)}}},{key:"sendInfo",value:function(o,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(K.debug("sendInfo()"),this._status!==Q.STATUS_CONFIRMED&&this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_1XX_RECEIVED)throw new gn.InvalidStateError(this._status);var _=new Nc(this);_.send(o,t,r)}},{key:"mute",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{audio:!0,video:!1};K.debug("mute()");var t=!1,r=!1;this._audioMuted===!1&&o.audio&&(t=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&o.video&&(r=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(t===!0||r===!0)&&this._onmute({audio:t,video:r})}},{key:"unmute",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{audio:!0,video:!0};K.debug("unmute()");var t=!1,r=!1;this._audioMuted===!0&&o.audio&&(t=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&o.video&&(r=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(t===!0||r===!0)&&this._onunmute({audio:t,video:r})}},{key:"hold",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;if(K.debug("hold()"),this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED||this._localHold===!0||!this._isReadyToReOffer())return!1;this._localHold=!0,this._onhold("local");var _={succeeded:function(){r&&r()},failed:function(){o.terminate({cause:ce.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:_,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:_,extraHeaders:t.extraHeaders}),!0}},{key:"unhold",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;if(K.debug("unhold()"),this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED||this._localHold===!1||!this._isReadyToReOffer())return!1;this._localHold=!1,this._onunhold("local");var _={succeeded:function(){r&&r()},failed:function(){o.terminate({cause:ce.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:_,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:_,extraHeaders:t.extraHeaders}),!0}},{key:"renegotiate",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;K.debug("renegotiate()");var _=t.rtcOfferConstraints||null;if(this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;var h={succeeded:function(){r&&r()},failed:function(){o.terminate({cause:ce.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Media Renegotiation Failed"})}};return this._setLocalMediaStatus(),t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:h,rtcOfferConstraints:_,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:h,rtcOfferConstraints:_,extraHeaders:t.extraHeaders}),!0}},{key:"refer",value:function(o,t){var r=this;K.debug("refer()");var _=o;if(this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED)return!1;if(o=this._ua.normalizeTarget(o),!o)throw new TypeError("Invalid target: ".concat(_));var h=new up(this);h.sendRefer(o,t);var d=h.id;return this._referSubscribers[d]=h,h.on("requestFailed",function(){delete r._referSubscribers[d]}),h.on("accepted",function(){delete r._referSubscribers[d]}),h.on("failed",function(){delete r._referSubscribers[d]}),h}},{key:"sendRequest",value:function(o,t){return K.debug("sendRequest()"),this._dialog.sendRequest(o,t)}},{key:"receiveRequest",value:function(o){var t=this;if(K.debug("receiveRequest()"),o.method===ce.CANCEL)(this._status===Q.STATUS_WAITING_FOR_ANSWER||this._status===Q.STATUS_ANSWERED)&&(this._status=Q.STATUS_CANCELED,this._request.reply(487),this._failed("remote",o,ce.causes.CANCELED));else switch(o.method){case ce.ACK:if(this._status!==Q.STATUS_WAITING_FOR_ACK)return;if(this._status=Q.STATUS_CONFIRMED,clearTimeout(this._timers.ackTimer),clearTimeout(this._timers.invite2xxTimer),this._late_sdp){if(!o.body){this.terminate({cause:ce.causes.MISSING_SDP,status_code:400});break}var r={originator:"remote",type:"answer",sdp:o.body};K.debug('emit "sdp"'),this.emit("sdp",r);var _=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return t._connection.setRemoteDescription(_)}).then(function(){t._is_confirmed||t._confirmed("remote",o)}).catch(function(d){t.terminate({cause:ce.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',d),t.emit("peerconnection:setremotedescriptionfailed",d)})}else this._is_confirmed||this._confirmed("remote",o);break;case ce.BYE:this._status===Q.STATUS_CONFIRMED||this._status===Q.STATUS_WAITING_FOR_ACK?(o.reply(200),this._ended("remote",o,ce.causes.BYE)):this._status===Q.STATUS_INVITE_RECEIVED||this._status===Q.STATUS_WAITING_FOR_ANSWER?(o.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",o,ce.causes.BYE)):o.reply(403,"Wrong Status");break;case ce.INVITE:this._status===Q.STATUS_CONFIRMED?o.hasHeader("replaces")?this._receiveReplaces(o):this._receiveReinvite(o):o.reply(403,"Wrong Status");break;case ce.INFO:if(this._status===Q.STATUS_1XX_RECEIVED||this._status===Q.STATUS_WAITING_FOR_ANSWER||this._status===Q.STATUS_ANSWERED||this._status===Q.STATUS_WAITING_FOR_ACK||this._status===Q.STATUS_CONFIRMED){var h=o.hasHeader("Content-Type")?o.getHeader("Content-Type").toLowerCase():void 0;h&&h.match(/^application\/dtmf-relay/i)?new Pt(this).init_incoming(o):h!==void 0?new Nc(this).init_incoming(o):o.reply(415)}else o.reply(403,"Wrong Status");break;case ce.UPDATE:this._status===Q.STATUS_CONFIRMED?this._receiveUpdate(o):o.reply(403,"Wrong Status");break;case ce.REFER:this._status===Q.STATUS_CONFIRMED?this._receiveRefer(o):o.reply(403,"Wrong Status");break;case ce.NOTIFY:this._status===Q.STATUS_CONFIRMED?this._receiveNotify(o):o.reply(403,"Wrong Status");break;default:o.reply(501)}}},{key:"onTransportError",value:function(){K.warn("onTransportError()"),this._status!==Q.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:ce.causes.CONNECTION_ERROR,cause:ce.causes.CONNECTION_ERROR})}},{key:"onRequestTimeout",value:function(){K.warn("onRequestTimeout()"),this._status!==Q.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:ce.causes.REQUEST_TIMEOUT,cause:ce.causes.REQUEST_TIMEOUT})}},{key:"onDialogError",value:function(){K.warn("onDialogError()"),this._status!==Q.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:ce.causes.DIALOG_ERROR,cause:ce.causes.DIALOG_ERROR})}},{key:"newDTMF",value:function(o){K.debug("newDTMF()"),this.emit("newDTMF",o)}},{key:"newInfo",value:function(o){K.debug("newInfo()"),this.emit("newInfo",o)}},{key:"_isReadyToReOffer",value:function(){return this._rtcReady?this._dialog?this._dialog.uac_pending_reply===!0||this._dialog.uas_pending_reply===!0?(K.debug("_isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress"),!1):!0:(K.debug("_isReadyToReOffer() | session not established yet"),!1):(K.debug("_isReadyToReOffer() | internal WebRTC status not ready"),!1)}},{key:"_close",value:function(){if(K.debug("close()"),this._localMediaStream&&this._localMediaStreamLocallyGenerated&&(K.debug("close() | closing local MediaStream"),qe.closeMediaStream(this._localMediaStream)),this._status!==Q.STATUS_TERMINATED){if(this._status=Q.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(_){K.warn("close() | error closing the RTCPeerConnection: %o",_)}for(var o in this._timers)Object.prototype.hasOwnProperty.call(this._timers,o)&&clearTimeout(this._timers[o]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(var t in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,t)&&(this._earlyDialogs[t].terminate(),delete this._earlyDialogs[t]);for(var r in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,r)&&delete this._referSubscribers[r];this._ua.destroyRTCSession(this)}}},{key:"_setInvite2xxTimer",value:function(o,t){var r=Pi.T1;function _(){this._status===Q.STATUS_WAITING_FOR_ACK&&(o.reply(200,null,["Contact: ".concat(this._contact)],t),r<Pi.T2&&(r=r*2,r>Pi.T2&&(r=Pi.T2)),this._timers.invite2xxTimer=setTimeout(_.bind(this),r))}this._timers.invite2xxTimer=setTimeout(_.bind(this),r)}},{key:"_setACKTimer",value:function(){var o=this;this._timers.ackTimer=setTimeout(function(){o._status===Q.STATUS_WAITING_FOR_ACK&&(K.debug("no ACK received, terminating the session"),clearTimeout(o._timers.invite2xxTimer),o.sendRequest(ce.BYE),o._ended("remote",null,ce.causes.NO_ACK))},Pi.TIMER_H)}},{key:"_createRTCConnection",value:function(o,t){var r=this;this._connection=new RTCPeerConnection(o,t),this._connection.addEventListener("iceconnectionstatechange",function(){var _=r._connection.iceConnectionState;_==="failed"&&r.terminate({cause:ce.causes.RTP_TIMEOUT,status_code:408,reason_phrase:ce.causes.RTP_TIMEOUT})}),K.debug('emit "peerconnection"'),this.emit("peerconnection",{peerconnection:this._connection})}},{key:"_createLocalDescription",value:function(o,t){var r=this;if(K.debug("createLocalDescription()"),o!=="offer"&&o!=="answer")throw new Error('createLocalDescription() | invalid type "'.concat(o,'"'));var _=this._connection;return this._rtcReady=!1,Promise.resolve().then(function(){return o==="offer"?_.createOffer(t).catch(function(h){return K.warn('emit "peerconnection:createofferfailed" [error:%o]',h),r.emit("peerconnection:createofferfailed",h),Promise.reject(h)}):_.createAnswer(t).catch(function(h){return K.warn('emit "peerconnection:createanswerfailed" [error:%o]',h),r.emit("peerconnection:createanswerfailed",h),Promise.reject(h)})}).then(function(h){return _.setLocalDescription(h).catch(function(d){return r._rtcReady=!0,K.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',d),r.emit("peerconnection:setlocaldescriptionfailed",d),Promise.reject(d)})}).then(function(){var h=t&&t.iceRestart;if(_.iceGatheringState==="complete"&&!h||_.iceGatheringState==="gathering"&&r._iceReady){r._rtcReady=!0;var d={originator:"local",type:o,sdp:_.localDescription.sdp};return K.debug('emit "sdp"'),r.emit("sdp",d),Promise.resolve(d.sdp)}return new Promise(function(g){var T=!1,E,y;r._iceReady=!1;var A=function(){_.removeEventListener("icecandidate",E),_.removeEventListener("icegatheringstatechange",y),T=!0,r._rtcReady=!0,r._iceReady=!0;var I={originator:"local",type:o,sdp:_.localDescription.sdp};K.debug('emit "sdp"'),r.emit("sdp",I),g(I.sdp)};_.addEventListener("icecandidate",E=function(I){var H=I.candidate;H?r.emit("icecandidate",{candidate:H,ready:A}):T||A()}),_.addEventListener("icegatheringstatechange",y=function(){_.iceGatheringState==="complete"&&!T&&A()})})})}},{key:"_createDialog",value:function(o,t,r){var _=t==="UAS"?o.to_tag:o.from_tag,h=t==="UAS"?o.from_tag:o.to_tag,d=o.call_id+_+h,g=this._earlyDialogs[d];if(r)return g?!0:(g=new Vl(this,o,t,Vl.C.STATUS_EARLY),g.error?(K.debug(g.error),this._failed("remote",o,ce.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[d]=g,!0));if(this._from_tag=o.from_tag,this._to_tag=o.to_tag,g)return g.update(o,t),this._dialog=g,delete this._earlyDialogs[d],!0;var T=new Vl(this,o,t);return T.error?(K.debug(T.error),this._failed("remote",o,ce.causes.INTERNAL_ERROR),!1):(this._dialog=T,!0)}},{key:"_receiveReinvite",value:function(o){var t=this;K.debug("receiveReinvite()");var r=o.hasHeader("Content-Type")?o.getHeader("Content-Type").toLowerCase():void 0,_={request:o,callback:void 0,reject:d.bind(this)},h=!1;function d(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};h=!0;var E=T.status_code||403,y=T.reason_phrase||"",A=qe.cloneArray(T.extraHeaders);if(this._status!==Q.STATUS_CONFIRMED)return!1;if(E<300||E>=700)throw new TypeError("Invalid status_code: ".concat(E));o.reply(E,y,A)}if(this.emit("reinvite",_),h)return;if(this._late_sdp=!1,!o.body){this._late_sdp=!0,this._remoteHold&&(this._remoteHold=!1,this._onunhold("remote")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return t._createLocalDescription("offer",t._rtcOfferConstraints)}).then(function(T){g.call(t,T)}).catch(function(){o.reply(500)});return}if(r!=="application/sdp"){K.debug("invalid Content-Type"),o.reply(415);return}this._processInDialogSdpOffer(o).then(function(T){t._status!==Q.STATUS_TERMINATED&&g.call(t,T)}).catch(function(T){K.warn(T)});function g(T){var E=this,y=["Contact: ".concat(this._contact)];this._handleSessionTimersInIncomingRequest(o,y),this._late_sdp&&(T=this._mangleOffer(T)),o.reply(200,null,y,T,function(){E._status=Q.STATUS_WAITING_FOR_ACK,E._setInvite2xxTimer(o,T),E._setACKTimer()}),typeof _.callback=="function"&&_.callback()}}},{key:"_receiveUpdate",value:function(o){var t=this;K.debug("receiveUpdate()");var r=o.hasHeader("Content-Type")?o.getHeader("Content-Type").toLowerCase():void 0,_={request:o,callback:void 0,reject:d.bind(this)},h=!1;function d(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};h=!0;var E=T.status_code||403,y=T.reason_phrase||"",A=qe.cloneArray(T.extraHeaders);if(this._status!==Q.STATUS_CONFIRMED)return!1;if(E<300||E>=700)throw new TypeError("Invalid status_code: ".concat(E));o.reply(E,y,A)}if(this.emit("update",_),h)return;if(!o.body){g.call(this,null);return}if(r!=="application/sdp"){K.debug("invalid Content-Type"),o.reply(415);return}this._processInDialogSdpOffer(o).then(function(T){t._status!==Q.STATUS_TERMINATED&&g.call(t,T)}).catch(function(T){K.warn(T)});function g(T){var E=["Contact: ".concat(this._contact)];this._handleSessionTimersInIncomingRequest(o,E),o.reply(200,null,E,T),typeof _.callback=="function"&&_.callback()}}},{key:"_processInDialogSdpOffer",value:function(o){var t=this;K.debug("_processInDialogSdpOffer()");var r=o.parseSDP(),_=!1,h=ds(r.media),d;try{for(h.s();!(d=h.n()).done;){var g=d.value;if(ql.indexOf(g.type)!==-1){var T=g.direction||r.direction||"sendrecv";if(T==="sendonly"||T==="inactive")_=!0;else{_=!1;break}}}}catch(A){h.e(A)}finally{h.f()}var E={originator:"remote",type:"offer",sdp:o.body};K.debug('emit "sdp"'),this.emit("sdp",E);var y=new RTCSessionDescription({type:"offer",sdp:E.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){if(t._status===Q.STATUS_TERMINATED)throw new Error("terminated");return t._connection.setRemoteDescription(y).catch(function(A){throw o.reply(488),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',A),t.emit("peerconnection:setremotedescriptionfailed",A),A})}).then(function(){if(t._status===Q.STATUS_TERMINATED)throw new Error("terminated");t._remoteHold===!0&&_===!1?(t._remoteHold=!1,t._onunhold("remote")):t._remoteHold===!1&&_===!0&&(t._remoteHold=!0,t._onhold("remote"))}).then(function(){if(t._status===Q.STATUS_TERMINATED)throw new Error("terminated");return t._createLocalDescription("answer",t._rtcAnswerConstraints).catch(function(A){throw o.reply(500),K.warn('emit "peerconnection:createtelocaldescriptionfailed" [error:%o]',A),A})}).catch(function(A){K.warn("_processInDialogSdpOffer() failed [error: %o]",A)}),this._connectionPromiseQueue}},{key:"_receiveRefer",value:function(o){var t=this;if(K.debug("receiveRefer()"),!o.refer_to){K.debug("no Refer-To header field present in REFER"),o.reply(400);return}if(o.refer_to.uri.scheme!==ce.SIP){K.debug("Refer-To header field points to a non-SIP URI scheme"),o.reply(416);return}o.reply(202);var r=new op(this,o.cseq);K.debug('emit "refer"'),this.emit("refer",{request:o,accept:function(g,T){_.call(t,g,T)},reject:function(){h.call(t)}});function _(d){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(d=typeof d=="function"?d:null,this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED)return!1;var T=new n(this._ua);if(T.on("progress",function(y){var A=y.response;r.notify(A.status_code,A.reason_phrase)}),T.on("accepted",function(y){var A=y.response;r.notify(A.status_code,A.reason_phrase)}),T.on("_failed",function(y){var A=y.message,C=y.cause;A?r.notify(A.status_code,A.reason_phrase):r.notify(487,C)}),o.refer_to.uri.hasHeader("replaces")){var E=decodeURIComponent(o.refer_to.uri.getHeader("replaces"));g.extraHeaders=qe.cloneArray(g.extraHeaders),g.extraHeaders.push("Replaces: ".concat(E))}T.connect(o.refer_to.uri.toAor(),g,d)}function h(){r.notify(603)}}},{key:"_receiveNotify",value:function(o){switch(K.debug("receiveNotify()"),o.event||o.reply(400),o.event.event){case"refer":{var t,r;if(o.event.params&&o.event.params.id)t=o.event.params.id,r=this._referSubscribers[t];else if(Object.keys(this._referSubscribers).length===1)r=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{o.reply(400,"Missing event id parameter");return}if(!r){o.reply(481,"Subscription does not exist");return}r.receiveNotify(o),o.reply(200);break}default:o.reply(489)}}},{key:"_receiveReplaces",value:function(o){var t=this;K.debug("receiveReplaces()");function r(h){var d=this;if(this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED)return!1;var g=new n(this._ua);g.on("confirmed",function(){d.terminate()}),g.init_incoming(o,h)}function _(){K.debug("Replaced INVITE rejected by the user"),o.reply(486)}this.emit("replaces",{request:o,accept:function(d){r.call(t,d)},reject:function(){_.call(t)}})}},{key:"_sendInitialRequest",value:function(o,t,r){var _=this,h=new ap(this._ua,this._request,{onRequestTimeout:function(){_.onRequestTimeout()},onTransportError:function(){_.onTransportError()},onAuthenticated:function(g){_._request=g},onReceiveResponse:function(g){_._receiveInviteResponse(g)}});Promise.resolve().then(function(){if(r)return r;if(o.audio||o.video)return _._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(o).catch(function(d){throw _._status===Q.STATUS_TERMINATED?new Error("terminated"):(_._failed("local",null,ce.causes.USER_DENIED_MEDIA_ACCESS),K.warn('emit "getusermediafailed" [error:%o]',d),_.emit("getusermediafailed",d),d)})}).then(function(d){if(_._status===Q.STATUS_TERMINATED)throw new Error("terminated");return _._localMediaStream=d,d&&d.getTracks().forEach(function(g){_._connection.addTrack(g,d)}),_._connecting(_._request),_._createLocalDescription("offer",t).catch(function(g){throw _._failed("local",null,ce.causes.WEBRTC_ERROR),g})}).then(function(d){if(_._is_canceled||_._status===Q.STATUS_TERMINATED)throw new Error("terminated");_._request.body=d,_._status=Q.STATUS_INVITE_SENT,K.debug('emit "sending" [request:%o]',_._request),_.emit("sending",{request:_._request}),h.send()}).catch(function(d){_._status!==Q.STATUS_TERMINATED&&K.warn(d)})}},{key:"_getDTMFRTPSender",value:function(){var o=this._connection.getSenders().find(function(t){return t.track&&t.track.kind==="audio"});if(!(o&&o.dtmf)){K.warn("sendDTMF() | no local audio track to send DTMF with");return}return o.dtmf}},{key:"_receiveInviteResponse",value:function(o){var t=this;if(K.debug("receiveInviteResponse()"),this._dialog&&o.status_code>=200&&o.status_code<=299)if(this._dialog.id.call_id===o.call_id&&this._dialog.id.local_tag===o.from_tag&&this._dialog.id.remote_tag===o.to_tag){this.sendRequest(ce.ACK);return}else{var r=new Vl(this,o,"UAC");if(r.error!==void 0){K.debug(r.error);return}this.sendRequest(ce.ACK),this.sendRequest(ce.BYE);return}if(this._is_canceled){o.status_code>=100&&o.status_code<200?this._request.cancel(this._cancel_reason):o.status_code>=200&&o.status_code<299&&this._acceptAndTerminate(o);return}if(!(this._status!==Q.STATUS_INVITE_SENT&&this._status!==Q.STATUS_1XX_RECEIVED))switch(!0){case/^100$/.test(o.status_code):this._status=Q.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(o.status_code):{if(!o.to_tag){K.debug("1xx response received without to tag");break}if(o.hasHeader("contact")&&!this._createDialog(o,"UAC",!0))break;if(this._status=Q.STATUS_1XX_RECEIVED,!o.body){this._progress("remote",o);break}var _={originator:"remote",type:"answer",sdp:o.body};K.debug('emit "sdp"'),this.emit("sdp",_);var h=new RTCSessionDescription({type:"answer",sdp:_.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return t._connection.setRemoteDescription(h)}).then(function(){return t._progress("remote",o)}).catch(function(E){K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),t.emit("peerconnection:setremotedescriptionfailed",E)});break}case/^2[0-9]{2}$/.test(o.status_code):{if(this._status=Q.STATUS_CONFIRMED,!o.body){this._acceptAndTerminate(o,400,ce.causes.MISSING_SDP),this._failed("remote",o,ce.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(o,"UAC"))break;var d={originator:"remote",type:"answer",sdp:o.body};K.debug('emit "sdp"'),this.emit("sdp",d);var g=new RTCSessionDescription({type:"answer",sdp:d.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){if(t._connection.signalingState==="stable")return t._connection.createOffer(t._rtcOfferConstraints).then(function(E){return t._connection.setLocalDescription(E)}).catch(function(E){t._acceptAndTerminate(o,500,E.toString()),t._failed("local",o,ce.causes.WEBRTC_ERROR)})}).then(function(){t._connection.setRemoteDescription(g).then(function(){t._handleSessionTimersInIncomingResponse(o),t._accepted("remote",o),t.sendRequest(ce.ACK),t._confirmed("local",null)}).catch(function(E){t._acceptAndTerminate(o,488,"Not Acceptable Here"),t._failed("remote",o,ce.causes.BAD_MEDIA_DESCRIPTION),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),t.emit("peerconnection:setremotedescriptionfailed",E)})});break}default:{var T=qe.sipErrorCause(o.status_code);this._failed("remote",o,T)}}}},{key:"_sendReinvite",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("sendReinvite()");var r=qe.cloneArray(t.extraHeaders),_=qe.cloneObject(t.eventHandlers),h=t.rtcOfferConstraints||this._rtcOfferConstraints||null,d=!1;r.push("Contact: ".concat(this._contact)),r.push("Content-Type: application/sdp"),this._sessionTimers.running&&r.push("Session-Expires: ".concat(this._sessionTimers.currentExpires,";refresher=").concat(this._sessionTimers.refresher?"uac":"uas")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return o._createLocalDescription("offer",h)}).then(function(E){E=o._mangleOffer(E);var y={originator:"local",type:"offer",sdp:E};K.debug('emit "sdp"'),o.emit("sdp",y),o.sendRequest(ce.INVITE,{extraHeaders:r,body:E,eventHandlers:{onSuccessResponse:function(C){g.call(o,C),d=!0},onErrorResponse:function(C){T.call(o,C)},onTransportError:function(){o.onTransportError()},onRequestTimeout:function(){o.onRequestTimeout()},onDialogError:function(){o.onDialogError()}}})}).catch(function(){T()});function g(E){var y=this;if(this._status!==Q.STATUS_TERMINATED&&(this.sendRequest(ce.ACK),!d)){if(this._handleSessionTimersInIncomingResponse(E),E.body){if(!E.hasHeader("Content-Type")||E.getHeader("Content-Type").toLowerCase()!=="application/sdp"){T.call(this);return}}else{T.call(this);return}var A={originator:"remote",type:"answer",sdp:E.body};K.debug('emit "sdp"'),this.emit("sdp",A);var C=new RTCSessionDescription({type:"answer",sdp:A.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return y._connection.setRemoteDescription(C)}).then(function(){_.succeeded&&_.succeeded(E)}).catch(function(I){T.call(y),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',I),y.emit("peerconnection:setremotedescriptionfailed",I)})}}function T(E){_.failed&&_.failed(E)}}},{key:"_sendUpdate",value:function(){var o=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("sendUpdate()");var r=qe.cloneArray(t.extraHeaders),_=qe.cloneObject(t.eventHandlers),h=t.rtcOfferConstraints||this._rtcOfferConstraints||null,d=t.sdpOffer||!1,g=!1;r.push("Contact: ".concat(this._contact)),this._sessionTimers.running&&r.push("Session-Expires: ".concat(this._sessionTimers.currentExpires,";refresher=").concat(this._sessionTimers.refresher?"uac":"uas")),d?(r.push("Content-Type: application/sdp"),this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return o._createLocalDescription("offer",h)}).then(function(y){y=o._mangleOffer(y);var A={originator:"local",type:"offer",sdp:y};K.debug('emit "sdp"'),o.emit("sdp",A),o.sendRequest(ce.UPDATE,{extraHeaders:r,body:y,eventHandlers:{onSuccessResponse:function(I){T.call(o,I),g=!0},onErrorResponse:function(I){E.call(o,I)},onTransportError:function(){o.onTransportError()},onRequestTimeout:function(){o.onRequestTimeout()},onDialogError:function(){o.onDialogError()}}})}).catch(function(){E.call(o)})):this.sendRequest(ce.UPDATE,{extraHeaders:r,eventHandlers:{onSuccessResponse:function(A){T.call(o,A)},onErrorResponse:function(A){E.call(o,A)},onTransportError:function(){o.onTransportError()},onRequestTimeout:function(){o.onRequestTimeout()},onDialogError:function(){o.onDialogError()}}});function T(y){var A=this;if(this._status!==Q.STATUS_TERMINATED&&!g)if(this._handleSessionTimersInIncomingResponse(y),d){if(y.body){if(!y.hasHeader("Content-Type")||y.getHeader("Content-Type").toLowerCase()!=="application/sdp"){E.call(this);return}}else{E.call(this);return}var C={originator:"remote",type:"answer",sdp:y.body};K.debug('emit "sdp"'),this.emit("sdp",C);var I=new RTCSessionDescription({type:"answer",sdp:C.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return A._connection.setRemoteDescription(I)}).then(function(){_.succeeded&&_.succeeded(y)}).catch(function(H){E.call(A),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',H),A.emit("peerconnection:setremotedescriptionfailed",H)})}else _.succeeded&&_.succeeded(y)}function E(y){_.failed&&_.failed(y)}}},{key:"_acceptAndTerminate",value:function(o,t,r){K.debug("acceptAndTerminate()");var _=[];t&&(r=r||ce.REASON_PHRASE[t]||"",_.push("Reason: SIP ;cause=".concat(t,'; text="').concat(r,'"'))),(this._dialog||this._createDialog(o,"UAC"))&&(this.sendRequest(ce.ACK),this.sendRequest(ce.BYE,{extraHeaders:_})),this._status=Q.STATUS_TERMINATED}},{key:"_mangleOffer",value:function(o){if(!this._localHold&&!this._remoteHold)return o;if(o=Oc.parse(o),this._localHold&&!this._remoteHold){K.debug("mangleOffer() | me on hold, mangling offer");var t=ds(o.media),r;try{for(t.s();!(r=t.n()).done;){var _=r.value;ql.indexOf(_.type)!==-1&&(_.direction?_.direction==="sendrecv"?_.direction="sendonly":_.direction==="recvonly"&&(_.direction="inactive"):_.direction="sendonly")}}catch(A){t.e(A)}finally{t.f()}}else if(this._localHold&&this._remoteHold){K.debug("mangleOffer() | both on hold, mangling offer");var h=ds(o.media),d;try{for(h.s();!(d=h.n()).done;){var g=d.value;ql.indexOf(g.type)!==-1&&(g.direction="inactive")}}catch(A){h.e(A)}finally{h.f()}}else if(this._remoteHold){K.debug("mangleOffer() | remote on hold, mangling offer");var T=ds(o.media),E;try{for(T.s();!(E=T.n()).done;){var y=E.value;ql.indexOf(y.type)!==-1&&(y.direction?y.direction==="sendrecv"?y.direction="recvonly":y.direction==="recvonly"&&(y.direction="inactive"):y.direction="recvonly")}}catch(A){T.e(A)}finally{T.f()}}return Oc.write(o)}},{key:"_setLocalMediaStatus",value:function(){var o=!0,t=!0;(this._localHold||this._remoteHold)&&(o=!1,t=!1),this._audioMuted&&(o=!1),this._videoMuted&&(t=!1),this._toggleMuteAudio(!o),this._toggleMuteVideo(!t)}},{key:"_handleSessionTimersInIncomingRequest",value:function(o,t){if(this._sessionTimers.enabled){var r;o.session_expires&&o.session_expires>=ce.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=o.session_expires,r=o.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,r="uas"),t.push("Session-Expires: ".concat(this._sessionTimers.currentExpires,";refresher=").concat(r)),this._sessionTimers.refresher=r==="uas",this._runSessionTimer()}}},{key:"_handleSessionTimersInIncomingResponse",value:function(o){if(this._sessionTimers.enabled){var t;o.session_expires&&o.session_expires>=ce.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=o.session_expires,t=o.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,t="uac"),this._sessionTimers.refresher=t==="uac",this._runSessionTimer()}}},{key:"_runSessionTimer",value:function(){var o=this,t=this._sessionTimers.currentExpires;this._sessionTimers.running=!0,clearTimeout(this._sessionTimers.timer),this._sessionTimers.refresher?this._sessionTimers.timer=setTimeout(function(){o._status!==Q.STATUS_TERMINATED&&o._isReadyToReOffer()&&(K.debug("runSessionTimer() | sending session refresh request"),o._sessionTimers.refreshMethod===ce.UPDATE?o._sendUpdate():o._sendReinvite())},t*500):this._sessionTimers.timer=setTimeout(function(){o._status!==Q.STATUS_TERMINATED&&(K.warn("runSessionTimer() | timer expired, terminating the session"),o.terminate({cause:ce.causes.REQUEST_TIMEOUT,status_code:408,reason_phrase:"Session Timer Expired"}))},t*1100)}},{key:"_toggleMuteAudio",value:function(o){var t=this._connection.getSenders().filter(function(d){return d.track&&d.track.kind==="audio"}),r=ds(t),_;try{for(r.s();!(_=r.n()).done;){var h=_.value;h.track.enabled=!o}}catch(d){r.e(d)}finally{r.f()}}},{key:"_toggleMuteVideo",value:function(o){var t=this._connection.getSenders().filter(function(d){return d.track&&d.track.kind==="video"}),r=ds(t),_;try{for(r.s();!(_=r.n()).done;){var h=_.value;h.track.enabled=!o}}catch(d){r.e(d)}finally{r.f()}}},{key:"_newRTCSession",value:function(o,t){K.debug("newRTCSession()"),this._ua.newRTCSession(this,{originator:o,session:this,request:t})}},{key:"_connecting",value:function(o){K.debug("session connecting"),K.debug('emit "connecting"'),this.emit("connecting",{request:o})}},{key:"_progress",value:function(o,t){K.debug("session progress"),K.debug('emit "progress"'),this.emit("progress",{originator:o,response:t||null})}},{key:"_accepted",value:function(o,t){K.debug("session accepted"),this._start_time=new Date,K.debug('emit "accepted"'),this.emit("accepted",{originator:o,response:t||null})}},{key:"_confirmed",value:function(o,t){K.debug("session confirmed"),this._is_confirmed=!0,K.debug('emit "confirmed"'),this.emit("confirmed",{originator:o,ack:t||null})}},{key:"_ended",value:function(o,t,r){K.debug("session ended"),this._end_time=new Date,this._close(),K.debug('emit "ended"'),this.emit("ended",{originator:o,message:t||null,cause:r})}},{key:"_failed",value:function(o,t,r){K.debug("session failed"),K.debug('emit "_failed"'),this.emit("_failed",{originator:o,message:t||null,cause:r}),this._close(),K.debug('emit "failed"'),this.emit("failed",{originator:o,message:t||null,cause:r})}},{key:"_onhold",value:function(o){K.debug("session onhold"),this._setLocalMediaStatus(),K.debug('emit "hold"'),this.emit("hold",{originator:o})}},{key:"_onunhold",value:function(o){K.debug("session onunhold"),this._setLocalMediaStatus(),K.debug('emit "unhold"'),this.emit("unhold",{originator:o})}},{key:"_onmute",value:function(o){var t=o.audio,r=o.video;K.debug("session onmute"),this._setLocalMediaStatus(),K.debug('emit "muted"'),this.emit("muted",{audio:t,video:r})}},{key:"_onunmute",value:function(o){var t=o.audio,r=o.video;K.debug("session onunmute"),this._setLocalMediaStatus(),K.debug('emit "unmuted"'),this.emit("unmuted",{audio:t,video:r})}},{key:"C",get:function(){return Q}},{key:"causes",get:function(){return ce.causes}},{key:"id",get:function(){return this._id}},{key:"connection",get:function(){return this._connection}},{key:"contact",get:function(){return this._contact}},{key:"direction",get:function(){return this._direction}},{key:"local_identity",get:function(){return this._local_identity}},{key:"remote_identity",get:function(){return this._remote_identity}},{key:"start_time",get:function(){return this._start_time}},{key:"end_time",get:function(){return this._end_time}},{key:"data",get:function(){return this._data},set:function(o){this._data=o}},{key:"status",get:function(){return this._status}}]),n}(rp);function Aa(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Aa=function(n){return typeof n}:Aa=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Aa(c)}function fp(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function xc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function hp(c,s,n){return s&&xc(c.prototype,s),n&&xc(c,n),c}function _p(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&mu(c,s)}function mu(c,s){return mu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},mu(c,s)}function dp(c){var s=gp();return function(){var a=Pa(c),o;if(s){var t=Pa(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return pp(this,o)}}function pp(c,s){return s&&(Aa(s)==="object"||typeof s=="function")?s:mp(c)}function mp(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function gp(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function Pa(c){return Pa=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},Pa(c)}var Tp=ft.EventEmitter,vp=ht,Ro=lt,Ep=Ss,ki=bt(),Sp=hl,Pc=Ws,yp=Ks(),Bl=new vp("Message"),Ap=function(c){_p(n,c);var s=dp(n);function n(a){var o;return fp(this,n),o=s.call(this),o._ua=a,o._request=null,o._closed=!1,o._direction=null,o._local_identity=null,o._remote_identity=null,o._is_replied=!1,o._data={},o}return hp(n,[{key:"send",value:function(o,t){var r=this,_=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},h=o;if(o===void 0||t===void 0)throw new TypeError("Not enough arguments");if(o=this._ua.normalizeTarget(o),!o)throw new TypeError("Invalid target: ".concat(h));var d=ki.cloneArray(_.extraHeaders),g=ki.cloneObject(_.eventHandlers),T=_.contentType||"text/plain",E={};_.fromUserName&&(E.from_uri=new yp("sip",_.fromUserName,this._ua.configuration.uri.host),d.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString()))),_.fromDisplayName&&(E.from_display_name=_.fromDisplayName);for(var y in g)Object.prototype.hasOwnProperty.call(g,y)&&this.on(y,g[y]);d.push("Content-Type: ".concat(T)),this._request=new Ep.OutgoingRequest(Ro.MESSAGE,o,this._ua,E,d),t&&(this._request.body=t);var A=new Sp(this._ua,this._request,{onRequestTimeout:function(){r._onRequestTimeout()},onTransportError:function(){r._onTransportError()},onReceiveResponse:function(I){r._receiveResponse(I)}});this._newMessage("local",this._request),A.send()}},{key:"init_incoming",value:function(o){this._request=o,this._newMessage("remote",o),this._is_replied||(this._is_replied=!0,o.reply(200)),this._close()}},{key:"accept",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=ki.cloneArray(o.extraHeaders),r=o.body;if(this._direction!=="incoming")throw new Pc.NotSupportedError('"accept" not supported for outgoing Message');if(this._is_replied)throw new Error("incoming Message already replied");this._is_replied=!0,this._request.reply(200,null,t,r)}},{key:"reject",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=o.status_code||480,r=o.reason_phrase,_=ki.cloneArray(o.extraHeaders),h=o.body;if(this._direction!=="incoming")throw new Pc.NotSupportedError('"reject" not supported for outgoing Message');if(this._is_replied)throw new Error("incoming Message already replied");if(t<300||t>=700)throw new TypeError("Invalid status_code: ".concat(t));this._is_replied=!0,this._request.reply(t,r,_,h)}},{key:"_receiveResponse",value:function(o){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(o.status_code):break;case/^2[0-9]{2}$/.test(o.status_code):this._succeeded("remote",o);break;default:{var t=ki.sipErrorCause(o.status_code);this._failed("remote",o,t);break}}}},{key:"_onRequestTimeout",value:function(){this._closed||this._failed("system",null,Ro.causes.REQUEST_TIMEOUT)}},{key:"_onTransportError",value:function(){this._closed||this._failed("system",null,Ro.causes.CONNECTION_ERROR)}},{key:"_close",value:function(){this._closed=!0,this._ua.destroyMessage(this)}},{key:"_newMessage",value:function(o,t){o==="remote"?(this._direction="incoming",this._local_identity=t.to,this._remote_identity=t.from):o==="local"&&(this._direction="outgoing",this._local_identity=t.from,this._remote_identity=t.to),this._ua.newMessage(this,{originator:o,message:this,request:t})}},{key:"_failed",value:function(o,t,r){Bl.debug("MESSAGE failed"),this._close(),Bl.debug('emit "failed"'),this.emit("failed",{originator:o,response:t||null,cause:r})}},{key:"_succeeded",value:function(o,t){Bl.debug("MESSAGE succeeded"),this._close(),Bl.debug('emit "succeeded"'),this.emit("succeeded",{originator:o,response:t})}},{key:"direction",get:function(){return this._direction}},{key:"local_identity",get:function(){return this._local_identity}},{key:"remote_identity",get:function(){return this._remote_identity}}]),n}(Tp);function Ca(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ca=function(n){return typeof n}:Ca=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Ca(c)}function Cp(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function kc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Rp(c,s,n){return s&&kc(c.prototype,s),n&&kc(c,n),c}function Ip(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&gu(c,s)}function gu(c,s){return gu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},gu(c,s)}function bp(c){var s=Dp();return function(){var a=ka(c),o;if(s){var t=ka(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return wp(this,o)}}function wp(c,s){return s&&(Ca(s)==="object"||typeof s=="function")?s:Op(c)}function Op(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function Dp(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function ka(c){return ka=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},ka(c)}var Np=ft.EventEmitter,Up=ht,Io=lt,xp=Ss,Mi=bt(),Pp=hl,Mc=Ws,Gl=new Up("Options"),kp=function(c){Ip(n,c);var s=bp(n);function n(a){var o;return Cp(this,n),o=s.call(this),o._ua=a,o._request=null,o._closed=!1,o._direction=null,o._local_identity=null,o._remote_identity=null,o._is_replied=!1,o._data={},o}return Rp(n,[{key:"send",value:function(o,t){var r=this,_=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},h=o;if(o===void 0)throw new TypeError("A target is required for OPTIONS");if(o=this._ua.normalizeTarget(o),!o)throw new TypeError("Invalid target: ".concat(h));var d=Mi.cloneArray(_.extraHeaders),g=Mi.cloneObject(_.eventHandlers),T=_.contentType||"application/sdp";for(var E in g)Object.prototype.hasOwnProperty.call(g,E)&&this.on(E,g[E]);d.push("Content-Type: ".concat(T)),this._request=new xp.OutgoingRequest(Io.OPTIONS,o,this._ua,null,d),t&&(this._request.body=t);var y=new Pp(this._ua,this._request,{onRequestTimeout:function(){r._onRequestTimeout()},onTransportError:function(){r._onTransportError()},onReceiveResponse:function(C){r._receiveResponse(C)}});this._newOptions("local",this._request),y.send()}},{key:"init_incoming",value:function(o){this._request=o,this._newOptions("remote",o),this._is_replied||(this._is_replied=!0,o.reply(200)),this._close()}},{key:"accept",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=Mi.cloneArray(o.extraHeaders),r=o.body;if(this._direction!=="incoming")throw new Mc.NotSupportedError('"accept" not supported for outgoing Options');if(this._is_replied)throw new Error("incoming Options already replied");this._is_replied=!0,this._request.reply(200,null,t,r)}},{key:"reject",value:function(){var o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=o.status_code||480,r=o.reason_phrase,_=Mi.cloneArray(o.extraHeaders),h=o.body;if(this._direction!=="incoming")throw new Mc.NotSupportedError('"reject" not supported for outgoing Options');if(this._is_replied)throw new Error("incoming Options already replied");if(t<300||t>=700)throw new TypeError("Invalid status_code: ".concat(t));this._is_replied=!0,this._request.reply(t,r,_,h)}},{key:"_receiveResponse",value:function(o){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(o.status_code):break;case/^2[0-9]{2}$/.test(o.status_code):this._succeeded("remote",o);break;default:{var t=Mi.sipErrorCause(o.status_code);this._failed("remote",o,t);break}}}},{key:"_onRequestTimeout",value:function(){this._closed||this._failed("system",null,Io.causes.REQUEST_TIMEOUT)}},{key:"_onTransportError",value:function(){this._closed||this._failed("system",null,Io.causes.CONNECTION_ERROR)}},{key:"_close",value:function(){this._closed=!0,this._ua.destroyMessage(this)}},{key:"_newOptions",value:function(o,t){o==="remote"?(this._direction="incoming",this._local_identity=t.to,this._remote_identity=t.from):o==="local"&&(this._direction="outgoing",this._local_identity=t.from,this._remote_identity=t.to),this._ua.newOptions(this,{originator:o,message:this,request:t})}},{key:"_failed",value:function(o,t,r){Gl.debug("OPTIONS failed"),this._close(),Gl.debug('emit "failed"'),this.emit("failed",{originator:o,response:t||null,cause:r})}},{key:"_succeeded",value:function(o,t){Gl.debug("OPTIONS succeeded"),this._close(),Gl.debug('emit "succeeded"'),this.emit("succeeded",{originator:o,response:t})}},{key:"direction",get:function(){return this._direction}},{key:"local_identity",get:function(){return this._local_identity}},{key:"remote_identity",get:function(){return this._remote_identity}}]),n}(Np),Pu={},Mp=ht,bo=bt(),Lp=os(),Li=new Mp("Socket");Pu.isSocket=function(c){if(Array.isArray(c))return!1;if(typeof c>"u")return Li.warn("undefined JsSIP.Socket instance"),!1;try{if(!bo.isString(c.url))throw Li.warn("missing or invalid JsSIP.Socket url property"),new Error("Missing or invalid JsSIP.Socket url property");if(!bo.isString(c.via_transport))throw Li.warn("missing or invalid JsSIP.Socket via_transport property"),new Error("Missing or invalid JsSIP.Socket via_transport property");if(Lp.parse(c.sip_uri,"SIP_URI")===-1)throw Li.warn("missing or invalid JsSIP.Socket sip_uri property"),new Error("missing or invalid JsSIP.Socket sip_uri property")}catch{return!1}try{["connect","disconnect","send"].forEach(function(s){if(!bo.isFunction(c[s]))throw Li.warn("missing or invalid JsSIP.Socket method: ".concat(s)),new Error("Missing or invalid JsSIP.Socket method: ".concat(s))})}catch{return!1}return!0};function $p(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Lc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Hp(c,s,n){return s&&Lc(c.prototype,s),n&&Lc(c,n),c}var Fp=ht,jp=Pu,$c=lt,Nt=new Fp("Transport"),jt={STATUS_CONNECTED:0,STATUS_CONNECTING:1,STATUS_DISCONNECTED:2,SOCKET_STATUS_READY:0,SOCKET_STATUS_ERROR:1,recovery_options:{min_interval:$c.CONNECTION_RECOVERY_MIN_INTERVAL,max_interval:$c.CONNECTION_RECOVERY_MAX_INTERVAL}},Vp=function(){function c(s){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:jt.recovery_options;$p(this,c),Nt.debug("new()"),this.status=jt.STATUS_DISCONNECTED,this.socket=null,this.sockets=[],this.recovery_options=n,this.recover_attempts=0,this.recovery_timer=null,this.close_requested=!1;try{this.textDecoder=new TextDecoder("utf8")}catch(a){Nt.warn("cannot use TextDecoder: ".concat(a))}if(typeof s>"u")throw new TypeError("Invalid argument. undefined 'sockets' argument");s instanceof Array||(s=[s]),s.forEach(function(a){if(!jp.isSocket(a.socket))throw new TypeError("Invalid argument. invalid 'JsSIP.Socket' instance");if(a.weight&&!Number(a.weight))throw new TypeError("Invalid argument. 'weight' attribute is not a number");this.sockets.push({socket:a.socket,weight:a.weight||0,status:jt.SOCKET_STATUS_READY})},this),this._getSocket()}return Hp(c,[{key:"connect",value:function(){if(Nt.debug("connect()"),this.isConnected()){Nt.debug("Transport is already connected");return}else if(this.isConnecting()){Nt.debug("Transport is connecting");return}this.close_requested=!1,this.status=jt.STATUS_CONNECTING,this.onconnecting({socket:this.socket,attempts:this.recover_attempts}),this.close_requested||(this.socket.onconnect=this._onConnect.bind(this),this.socket.ondisconnect=this._onDisconnect.bind(this),this.socket.ondata=this._onData.bind(this),this.socket.connect())}},{key:"disconnect",value:function(){Nt.debug("close()"),this.close_requested=!0,this.recover_attempts=0,this.status=jt.STATUS_DISCONNECTED,this.recovery_timer!==null&&(clearTimeout(this.recovery_timer),this.recovery_timer=null),this.socket.onconnect=function(){},this.socket.ondisconnect=function(){},this.socket.ondata=function(){},this.socket.disconnect(),this.ondisconnect({socket:this.socket,error:!1})}},{key:"send",value:function(n){if(Nt.debug("send()"),!this.isConnected())return Nt.warn("unable to send message, transport is not connected"),!1;var a=n.toString();return Nt.debug(`sending message:
51
51
 
52
52
  `.concat(a,`
53
- `)),this.socket.send(a)}},{key:"isConnected",value:function(){return this.status===jt.STATUS_CONNECTED}},{key:"isConnecting",value:function(){return this.status===jt.STATUS_CONNECTING}},{key:"_reconnect",value:function(){var r=this;this.recover_attempts+=1;var a=Math.floor(Math.random()*Math.pow(2,this.recover_attempts)+1);a<this.recovery_options.min_interval?a=this.recovery_options.min_interval:a>this.recovery_options.max_interval&&(a=this.recovery_options.max_interval),Nt.debug("reconnection attempt: ".concat(this.recover_attempts,". next connection attempt in ").concat(a," seconds")),this.recovery_timer=setTimeout(function(){!r.close_requested&&!(r.isConnected()||r.isConnecting())&&(r._getSocket(),r.connect())},a*1e3)}},{key:"_getSocket",value:function(){var r=[];if(this.sockets.forEach(function(o){o.status!==jt.SOCKET_STATUS_ERROR&&(r.length===0?r.push(o):o.weight>r[0].weight?r=[o]:o.weight===r[0].weight&&r.push(o))}),r.length===0){this.sockets.forEach(function(o){o.status=jt.SOCKET_STATUS_READY}),this._getSocket();return}var a=Math.floor(Math.random()*r.length);this.socket=r[a].socket}},{key:"_onConnect",value:function(){this.recover_attempts=0,this.status=jt.STATUS_CONNECTED,this.recovery_timer!==null&&(clearTimeout(this.recovery_timer),this.recovery_timer=null),this.onconnect({socket:this})}},{key:"_onDisconnect",value:function(r,a,o){this.status=jt.STATUS_DISCONNECTED,this.ondisconnect({socket:this.socket,error:r,code:a,reason:o}),!this.close_requested&&(this.sockets.forEach(function(t){this.socket===t.socket&&(t.status=jt.SOCKET_STATUS_ERROR)},this),this._reconnect(r))}},{key:"_onData",value:function(r){if(r===`\r
54
- `){Nt.debug("received message with CRLF Keep Alive response");return}else if(typeof r!="string"){try{this.textDecoder?r=this.textDecoder.decode(r):r=String.fromCharCode.apply(null,new Uint8Array(r))}catch{Nt.debug("received binary message failed to be converted into string, message discarded");return}Nt.debug(`received binary message:
53
+ `)),this.socket.send(a)}},{key:"isConnected",value:function(){return this.status===jt.STATUS_CONNECTED}},{key:"isConnecting",value:function(){return this.status===jt.STATUS_CONNECTING}},{key:"_reconnect",value:function(){var n=this;this.recover_attempts+=1;var a=Math.floor(Math.random()*Math.pow(2,this.recover_attempts)+1);a<this.recovery_options.min_interval?a=this.recovery_options.min_interval:a>this.recovery_options.max_interval&&(a=this.recovery_options.max_interval),Nt.debug("reconnection attempt: ".concat(this.recover_attempts,". next connection attempt in ").concat(a," seconds")),this.recovery_timer=setTimeout(function(){!n.close_requested&&!(n.isConnected()||n.isConnecting())&&(n._getSocket(),n.connect())},a*1e3)}},{key:"_getSocket",value:function(){var n=[];if(this.sockets.forEach(function(o){o.status!==jt.SOCKET_STATUS_ERROR&&(n.length===0?n.push(o):o.weight>n[0].weight?n=[o]:o.weight===n[0].weight&&n.push(o))}),n.length===0){this.sockets.forEach(function(o){o.status=jt.SOCKET_STATUS_READY}),this._getSocket();return}var a=Math.floor(Math.random()*n.length);this.socket=n[a].socket}},{key:"_onConnect",value:function(){this.recover_attempts=0,this.status=jt.STATUS_CONNECTED,this.recovery_timer!==null&&(clearTimeout(this.recovery_timer),this.recovery_timer=null),this.onconnect({socket:this})}},{key:"_onDisconnect",value:function(n,a,o){this.status=jt.STATUS_DISCONNECTED,this.ondisconnect({socket:this.socket,error:n,code:a,reason:o}),!this.close_requested&&(this.sockets.forEach(function(t){this.socket===t.socket&&(t.status=jt.SOCKET_STATUS_ERROR)},this),this._reconnect(n))}},{key:"_onData",value:function(n){if(n===`\r
54
+ `){Nt.debug("received message with CRLF Keep Alive response");return}else if(typeof n!="string"){try{this.textDecoder?n=this.textDecoder.decode(n):n=String.fromCharCode.apply(null,new Uint8Array(n))}catch{Nt.debug("received binary message failed to be converted into string, message discarded");return}Nt.debug(`received binary message:
55
55
 
56
- `.concat(r,`
56
+ `.concat(n,`
57
57
  `))}else Nt.debug(`received text message:
58
58
 
59
- `.concat(r,`
60
- `));this.ondata({transport:this,message:r})}},{key:"via_transport",get:function(){return this.socket.via_transport}},{key:"url",get:function(){return this.socket.url}},{key:"sip_uri",get:function(){return this.socket.sip_uri}}]),c}(),n_={};function Lc(c,s){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=jp(c))||s&&c&&typeof c.length=="number"){r&&(c=r);var a=0,o=function(){};return{s:o,n:function(){return a>=c.length?{done:!0}:{done:!1,value:c[a++]}},e:function(d){throw d},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
61
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var t=!0,n=!1,h;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){n=!0,h=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(n)throw h}}}}function jp(c,s){if(c){if(typeof c=="string")return $c(c,s);var r=Object.prototype.toString.call(c).slice(8,-1);if(r==="Object"&&c.constructor&&(r=c.constructor.name),r==="Map"||r==="Set")return Array.from(c);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return $c(c,s)}}function $c(c,s){(s==null||s>c.length)&&(s=c.length);for(var r=0,a=new Array(s);r<s;r++)a[r]=c[r];return a}var qp=_t,mu=ls(),gu=vs,Bl=new qp("Parser");n_.parseMessage=function(c,s){var r,a,o=c.indexOf(`\r
62
- `);if(o===-1){Bl.warn("parseMessage() | no CRLF found, not a SIP message");return}var t=c.substring(0,o),n=mu.parse(t,"Request_Response");if(n===-1){Bl.warn('parseMessage() | error parsing first line of SIP message: "'.concat(t,'"'));return}else n.status_code?(r=new gu.IncomingResponse,r.status_code=n.status_code,r.reason_phrase=n.reason_phrase):(r=new gu.IncomingRequest(s),r.method=n.method,r.ruri=n.uri);r.data=c;for(var h=o+2;;){if(o=Vp(c,h),o===-2){a=h+2;break}else if(o===-1){Bl.warn("parseMessage() | malformed message");return}if(n=Bp(r,c,h,o),n!==!0){Bl.warn("parseMessage() |",n.error);return}h=o+2}if(r.hasHeader("content-length")){var _=r.getHeader("content-length");r.body=c.substr(a,_)}else r.body=c.substring(a);return r};function Vp(c,s){var r=s,a=0,o=0;if(c.substring(r,r+2).match(/(^\r\n)/))return-2;for(;a===0;){if(o=c.indexOf(`\r
63
- `,r),o===-1)return o;!c.substring(o+2,o+4).match(/(^\r\n)/)&&c.charAt(o+2).match(/(^\s+)/)?r=o+2:a=o}return a}function Bp(c,s,r,a){var o,t=s.indexOf(":",r),n=s.substring(r,t).trim(),h=s.substring(t+1,a).trim();switch(n.toLowerCase()){case"via":case"v":c.addHeader("via",h),c.getHeaders("via").length===1?(o=c.parseHeader("Via"),o&&(c.via=o,c.via_branch=o.branch)):o=0;break;case"from":case"f":c.setHeader("from",h),o=c.parseHeader("from"),o&&(c.from=o,c.from_tag=o.getParam("tag"));break;case"to":case"t":c.setHeader("to",h),o=c.parseHeader("to"),o&&(c.to=o,c.to_tag=o.getParam("tag"));break;case"record-route":if(o=mu.parse(h,"Record_Route"),o===-1)o=void 0;else{var _=Lc(o),d;try{for(_.s();!(d=_.n()).done;){var g=d.value;c.addHeader("record-route",h.substring(g.possition,g.offset)),c.headers["Record-Route"][c.getHeaders("record-route").length-1].parsed=g.parsed}}catch(A){_.e(A)}finally{_.f()}}break;case"call-id":case"i":c.setHeader("call-id",h),o=c.parseHeader("call-id"),o&&(c.call_id=h);break;case"contact":case"m":if(o=mu.parse(h,"Contact"),o===-1)o=void 0;else{var T=Lc(o),E;try{for(T.s();!(E=T.n()).done;){var y=E.value;c.addHeader("contact",h.substring(y.possition,y.offset)),c.headers.Contact[c.getHeaders("contact").length-1].parsed=y.parsed}}catch(A){T.e(A)}finally{T.f()}}break;case"content-length":case"l":c.setHeader("content-length",h),o=c.parseHeader("content-length");break;case"content-type":case"c":c.setHeader("content-type",h),o=c.parseHeader("content-type");break;case"cseq":c.setHeader("cseq",h),o=c.parseHeader("cseq"),o&&(c.cseq=o.value),c instanceof gu.IncomingResponse&&(c.method=o.method);break;case"max-forwards":c.setHeader("max-forwards",h),o=c.parseHeader("max-forwards");break;case"www-authenticate":c.setHeader("www-authenticate",h),o=c.parseHeader("www-authenticate");break;case"proxy-authenticate":c.setHeader("proxy-authenticate",h),o=c.parseHeader("proxy-authenticate");break;case"session-expires":case"x":c.setHeader("session-expires",h),o=c.parseHeader("session-expires"),o&&(c.session_expires=o.expires,c.session_expires_refresher=o.refresher);break;case"refer-to":case"r":c.setHeader("refer-to",h),o=c.parseHeader("refer-to"),o&&(c.refer_to=o);break;case"replaces":c.setHeader("replaces",h),o=c.parseHeader("replaces"),o&&(c.replaces=o);break;case"event":case"o":c.setHeader("event",h),o=c.parseHeader("event"),o&&(c.event=o);break;default:c.addHeader(n,h),o=0}return o===void 0?{error:'error parsing header "'.concat(n,'"')}:!0}function Aa(c,s){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=Gp(c))||s&&c&&typeof c.length=="number"){r&&(c=r);var a=0,o=function(){};return{s:o,n:function(){return a>=c.length?{done:!0}:{done:!1,value:c[a++]}},e:function(d){throw d},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
64
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var t=!0,n=!1,h;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){n=!0,h=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(n)throw h}}}}function Gp(c,s){if(c){if(typeof c=="string")return Hc(c,s);var r=Object.prototype.toString.call(c).slice(8,-1);if(r==="Object"&&c.constructor&&(r=c.constructor.name),r==="Map"||r==="Set")return Array.from(c);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Hc(c,s)}}function Hc(c,s){(s==null||s>c.length)&&(s=c.length);for(var r=0,a=new Array(s);r<s;r++)a[r]=c[r];return a}var Wp=_t,r_=it,Fc=vs,Pu=bt(),xu=new Wp("sanityCheck"),Kp=[nm],Yp=[Xp,Qp,Zp,em],Jp=[tm,sm],He,ss,i_,zp=function(c,s,r){He=c,ss=s,i_=r;var a=Aa(Kp),o;try{for(a.s();!(o=a.n()).done;){var t=o.value;if(t()===!1)return!1}}catch(E){a.e(E)}finally{a.f()}if(He instanceof Fc.IncomingRequest){var n=Aa(Yp),h;try{for(n.s();!(h=n.n()).done;){var _=h.value;if(_()===!1)return!1}}catch(E){n.e(E)}finally{n.f()}}else if(He instanceof Fc.IncomingResponse){var d=Aa(Jp),g;try{for(d.s();!(g=d.n()).done;){var T=g.value;if(T()===!1)return!1}}catch(E){d.e(E)}finally{d.f()}}return!0};function Xp(){if(He.s("to").uri.scheme!=="sip")return Zi(416),!1}function Qp(){if(!He.to_tag&&He.call_id.substr(0,5)===ss.configuration.jssip_id)return Zi(482),!1}function Zp(){var c=Pu.str_utf8_length(He.body),s=He.getHeader("content-length");if(c<s)return Zi(400),!1}function em(){var c=He.from_tag,s=He.call_id,r=He.cseq,a;if(!He.to_tag)if(He.method===r_.INVITE){if(ss._transactions.ist[He.via_branch])return!1;for(var o in ss._transactions.ist)if(Object.prototype.hasOwnProperty.call(ss._transactions.ist,o)&&(a=ss._transactions.ist[o],a.request.from_tag===c&&a.request.call_id===s&&a.request.cseq===r))return Zi(482),!1}else{if(ss._transactions.nist[He.via_branch])return!1;for(var t in ss._transactions.nist)if(Object.prototype.hasOwnProperty.call(ss._transactions.nist,t)&&(a=ss._transactions.nist[t],a.request.from_tag===c&&a.request.call_id===s&&a.request.cseq===r))return Zi(482),!1}}function tm(){if(He.getHeaders("via").length>1)return xu.debug("more than one Via header field present in the response, dropping the response"),!1}function sm(){var c=Pu.str_utf8_length(He.body),s=He.getHeader("content-length");if(c<s)return xu.debug("message body length is lower than the value in Content-Length header field, dropping the response"),!1}function nm(){for(var c=["from","to","call_id","cseq","via"],s=0,r=c;s<r.length;s++){var a=r[s];if(!He.hasHeader(a))return xu.debug("missing mandatory header field : ".concat(a,", dropping the response")),!1}}function Zi(c){var s=He.getHeaders("via"),r,a="SIP/2.0 ".concat(c," ").concat(r_.REASON_PHRASE[c],`\r
65
- `),o=Aa(s),t;try{for(o.s();!(t=o.n()).done;){var n=t.value;a+="Via: ".concat(n,`\r
66
- `)}}catch(h){o.e(h)}finally{o.f()}r=He.getHeader("To"),He.to_tag||(r+=";tag=".concat(Pu.newTag())),a+="To: ".concat(r,`\r
59
+ `.concat(n,`
60
+ `));this.ondata({transport:this,message:n})}},{key:"via_transport",get:function(){return this.socket.via_transport}},{key:"url",get:function(){return this.socket.url}},{key:"sip_uri",get:function(){return this.socket.sip_uri}}]),c}(),ih={};function Hc(c,s){var n;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(n=qp(c))||s&&c&&typeof c.length=="number"){n&&(c=n);var a=0,o=function(){};return{s:o,n:function(){return a>=c.length?{done:!0}:{done:!1,value:c[a++]}},e:function(d){throw d},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
61
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var t=!0,r=!1,_;return{s:function(){n=c[Symbol.iterator]()},n:function(){var d=n.next();return t=d.done,d},e:function(d){r=!0,_=d},f:function(){try{!t&&n.return!=null&&n.return()}finally{if(r)throw _}}}}function qp(c,s){if(c){if(typeof c=="string")return Fc(c,s);var n=Object.prototype.toString.call(c).slice(8,-1);if(n==="Object"&&c.constructor&&(n=c.constructor.name),n==="Map"||n==="Set")return Array.from(c);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Fc(c,s)}}function Fc(c,s){(s==null||s>c.length)&&(s=c.length);for(var n=0,a=new Array(s);n<s;n++)a[n]=c[n];return a}var Bp=ht,Tu=os(),vu=Ss,Wl=new Bp("Parser");ih.parseMessage=function(c,s){var n,a,o=c.indexOf(`\r
62
+ `);if(o===-1){Wl.warn("parseMessage() | no CRLF found, not a SIP message");return}var t=c.substring(0,o),r=Tu.parse(t,"Request_Response");if(r===-1){Wl.warn('parseMessage() | error parsing first line of SIP message: "'.concat(t,'"'));return}else r.status_code?(n=new vu.IncomingResponse,n.status_code=r.status_code,n.reason_phrase=r.reason_phrase):(n=new vu.IncomingRequest(s),n.method=r.method,n.ruri=r.uri);n.data=c;for(var _=o+2;;){if(o=Gp(c,_),o===-2){a=_+2;break}else if(o===-1){Wl.warn("parseMessage() | malformed message");return}if(r=Wp(n,c,_,o),r!==!0){Wl.warn("parseMessage() |",r.error);return}_=o+2}if(n.hasHeader("content-length")){var h=n.getHeader("content-length");n.body=c.substr(a,h)}else n.body=c.substring(a);return n};function Gp(c,s){var n=s,a=0,o=0;if(c.substring(n,n+2).match(/(^\r\n)/))return-2;for(;a===0;){if(o=c.indexOf(`\r
63
+ `,n),o===-1)return o;!c.substring(o+2,o+4).match(/(^\r\n)/)&&c.charAt(o+2).match(/(^\s+)/)?n=o+2:a=o}return a}function Wp(c,s,n,a){var o,t=s.indexOf(":",n),r=s.substring(n,t).trim(),_=s.substring(t+1,a).trim();switch(r.toLowerCase()){case"via":case"v":c.addHeader("via",_),c.getHeaders("via").length===1?(o=c.parseHeader("Via"),o&&(c.via=o,c.via_branch=o.branch)):o=0;break;case"from":case"f":c.setHeader("from",_),o=c.parseHeader("from"),o&&(c.from=o,c.from_tag=o.getParam("tag"));break;case"to":case"t":c.setHeader("to",_),o=c.parseHeader("to"),o&&(c.to=o,c.to_tag=o.getParam("tag"));break;case"record-route":if(o=Tu.parse(_,"Record_Route"),o===-1)o=void 0;else{var h=Hc(o),d;try{for(h.s();!(d=h.n()).done;){var g=d.value;c.addHeader("record-route",_.substring(g.possition,g.offset)),c.headers["Record-Route"][c.getHeaders("record-route").length-1].parsed=g.parsed}}catch(A){h.e(A)}finally{h.f()}}break;case"call-id":case"i":c.setHeader("call-id",_),o=c.parseHeader("call-id"),o&&(c.call_id=_);break;case"contact":case"m":if(o=Tu.parse(_,"Contact"),o===-1)o=void 0;else{var T=Hc(o),E;try{for(T.s();!(E=T.n()).done;){var y=E.value;c.addHeader("contact",_.substring(y.possition,y.offset)),c.headers.Contact[c.getHeaders("contact").length-1].parsed=y.parsed}}catch(A){T.e(A)}finally{T.f()}}break;case"content-length":case"l":c.setHeader("content-length",_),o=c.parseHeader("content-length");break;case"content-type":case"c":c.setHeader("content-type",_),o=c.parseHeader("content-type");break;case"cseq":c.setHeader("cseq",_),o=c.parseHeader("cseq"),o&&(c.cseq=o.value),c instanceof vu.IncomingResponse&&(c.method=o.method);break;case"max-forwards":c.setHeader("max-forwards",_),o=c.parseHeader("max-forwards");break;case"www-authenticate":c.setHeader("www-authenticate",_),o=c.parseHeader("www-authenticate");break;case"proxy-authenticate":c.setHeader("proxy-authenticate",_),o=c.parseHeader("proxy-authenticate");break;case"session-expires":case"x":c.setHeader("session-expires",_),o=c.parseHeader("session-expires"),o&&(c.session_expires=o.expires,c.session_expires_refresher=o.refresher);break;case"refer-to":case"r":c.setHeader("refer-to",_),o=c.parseHeader("refer-to"),o&&(c.refer_to=o);break;case"replaces":c.setHeader("replaces",_),o=c.parseHeader("replaces"),o&&(c.replaces=o);break;case"event":case"o":c.setHeader("event",_),o=c.parseHeader("event"),o&&(c.event=o);break;default:c.addHeader(r,_),o=0}return o===void 0?{error:'error parsing header "'.concat(r,'"')}:!0}function Ra(c,s){var n;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(n=Kp(c))||s&&c&&typeof c.length=="number"){n&&(c=n);var a=0,o=function(){};return{s:o,n:function(){return a>=c.length?{done:!0}:{done:!1,value:c[a++]}},e:function(d){throw d},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
64
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var t=!0,r=!1,_;return{s:function(){n=c[Symbol.iterator]()},n:function(){var d=n.next();return t=d.done,d},e:function(d){r=!0,_=d},f:function(){try{!t&&n.return!=null&&n.return()}finally{if(r)throw _}}}}function Kp(c,s){if(c){if(typeof c=="string")return jc(c,s);var n=Object.prototype.toString.call(c).slice(8,-1);if(n==="Object"&&c.constructor&&(n=c.constructor.name),n==="Map"||n==="Set")return Array.from(c);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return jc(c,s)}}function jc(c,s){(s==null||s>c.length)&&(s=c.length);for(var n=0,a=new Array(s);n<s;n++)a[n]=c[n];return a}var Yp=ht,lh=lt,Vc=Ss,ku=bt(),Mu=new Yp("sanityCheck"),Jp=[im],zp=[Zp,em,tm,sm],Xp=[nm,rm],He,ns,ah,Qp=function(c,s,n){He=c,ns=s,ah=n;var a=Ra(Jp),o;try{for(a.s();!(o=a.n()).done;){var t=o.value;if(t()===!1)return!1}}catch(E){a.e(E)}finally{a.f()}if(He instanceof Vc.IncomingRequest){var r=Ra(zp),_;try{for(r.s();!(_=r.n()).done;){var h=_.value;if(h()===!1)return!1}}catch(E){r.e(E)}finally{r.f()}}else if(He instanceof Vc.IncomingResponse){var d=Ra(Xp),g;try{for(d.s();!(g=d.n()).done;){var T=g.value;if(T()===!1)return!1}}catch(E){d.e(E)}finally{d.f()}}return!0};function Zp(){if(He.s("to").uri.scheme!=="sip")return tl(416),!1}function em(){if(!He.to_tag&&He.call_id.substr(0,5)===ns.configuration.jssip_id)return tl(482),!1}function tm(){var c=ku.str_utf8_length(He.body),s=He.getHeader("content-length");if(c<s)return tl(400),!1}function sm(){var c=He.from_tag,s=He.call_id,n=He.cseq,a;if(!He.to_tag)if(He.method===lh.INVITE){if(ns._transactions.ist[He.via_branch])return!1;for(var o in ns._transactions.ist)if(Object.prototype.hasOwnProperty.call(ns._transactions.ist,o)&&(a=ns._transactions.ist[o],a.request.from_tag===c&&a.request.call_id===s&&a.request.cseq===n))return tl(482),!1}else{if(ns._transactions.nist[He.via_branch])return!1;for(var t in ns._transactions.nist)if(Object.prototype.hasOwnProperty.call(ns._transactions.nist,t)&&(a=ns._transactions.nist[t],a.request.from_tag===c&&a.request.call_id===s&&a.request.cseq===n))return tl(482),!1}}function nm(){if(He.getHeaders("via").length>1)return Mu.debug("more than one Via header field present in the response, dropping the response"),!1}function rm(){var c=ku.str_utf8_length(He.body),s=He.getHeader("content-length");if(c<s)return Mu.debug("message body length is lower than the value in Content-Length header field, dropping the response"),!1}function im(){for(var c=["from","to","call_id","cseq","via"],s=0,n=c;s<n.length;s++){var a=n[s];if(!He.hasHeader(a))return Mu.debug("missing mandatory header field : ".concat(a,", dropping the response")),!1}}function tl(c){var s=He.getHeaders("via"),n,a="SIP/2.0 ".concat(c," ").concat(lh.REASON_PHRASE[c],`\r
65
+ `),o=Ra(s),t;try{for(o.s();!(t=o.n()).done;){var r=t.value;a+="Via: ".concat(r,`\r
66
+ `)}}catch(_){o.e(_)}finally{o.f()}n=He.getHeader("To"),He.to_tag||(n+=";tag=".concat(ku.newTag())),a+="To: ".concat(n,`\r
67
67
  `),a+="From: ".concat(He.getHeader("From"),`\r
68
68
  `),a+="Call-ID: ".concat(He.call_id,`\r
69
69
  `),a+="CSeq: ".concat(He.cseq," ").concat(He.method,`\r
70
70
  `),a+=`\r
71
- `,i_.send(a)}var Mu={};function jc(c,s){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=rm(c))||s&&c&&typeof c.length=="number"){r&&(c=r);var a=0,o=function(){};return{s:o,n:function(){return a>=c.length?{done:!0}:{done:!1,value:c[a++]}},e:function(d){throw d},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
72
- In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var t=!0,n=!1,h;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){n=!0,h=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(n)throw h}}}}function rm(c,s){if(c){if(typeof c=="string")return qc(c,s);var r=Object.prototype.toString.call(c).slice(8,-1);if(r==="Object"&&c.constructor&&(r=c.constructor.name),r==="Map"||r==="Set")return Array.from(c);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return qc(c,s)}}function qc(c,s){(s==null||s>c.length)&&(s=c.length);for(var r=0,a=new Array(s);r<s;r++)a[r]=c[r];return a}var ur=bt(),En=it,Io=ls(),Vc=Gs(),bo=Uu,wo=Bs;Mu.settings={authorization_user:null,password:null,realm:null,ha1:null,authorization_jwt:null,display_name:null,uri:null,contact_uri:null,instance_id:null,use_preloaded_route:!1,session_timers:!0,session_timers_refresh_method:En.UPDATE,session_timers_force_refresher:!1,no_answer_timeout:60,register:!0,register_expires:600,registrar_server:null,sockets:null,connection_recovery_max_interval:En.CONNECTION_RECOVERY_MAX_INTERVAL,connection_recovery_min_interval:En.CONNECTION_RECOVERY_MIN_INTERVAL,extra_headers:null,via_host:"".concat(ur.createRandomToken(12),".invalid")};var Gl={mandatory:{sockets:function(s){var r=[];if(bo.isSocket(s))r.push({socket:s});else if(Array.isArray(s)&&s.length){var a=jc(s),o;try{for(a.s();!(o=a.n()).done;){var t=o.value;Object.prototype.hasOwnProperty.call(t,"socket")&&bo.isSocket(t.socket)?r.push(t):bo.isSocket(t)&&r.push({socket:t})}}catch(n){a.e(n)}finally{a.f()}}else return;return r},uri:function(s){/^sip:/i.test(s)||(s="".concat(En.SIP,":").concat(s));var r=Vc.parse(s);if(r)return r.user?r:void 0}},optional:{authorization_user:function(s){if(Io.parse('"'.concat(s,'"'),"quoted_string")!==-1)return s},authorization_jwt:function(s){if(typeof s=="string")return s},user_agent:function(s){if(typeof s=="string")return s},connection_recovery_max_interval:function(s){if(ur.isDecimal(s)){var r=Number(s);if(r>0)return r}},connection_recovery_min_interval:function(s){if(ur.isDecimal(s)){var r=Number(s);if(r>0)return r}},contact_uri:function(s){if(typeof s=="string"){var r=Io.parse(s,"SIP_URI");if(r!==-1)return r}},display_name:function(s){return s},instance_id:function(s){if(/^uuid:/i.test(s)&&(s=s.substr(5)),Io.parse(s,"uuid")!==-1)return s},no_answer_timeout:function(s){if(ur.isDecimal(s)){var r=Number(s);if(r>0)return r}},session_timers:function(s){if(typeof s=="boolean")return s},session_timers_refresh_method:function(s){if(typeof s=="string"&&(s=s.toUpperCase(),s===En.INVITE||s===En.UPDATE))return s},session_timers_force_refresher:function(s){if(typeof s=="boolean")return s},password:function(s){return String(s)},realm:function(s){return String(s)},ha1:function(s){return String(s)},register:function(s){if(typeof s=="boolean")return s},register_expires:function(s){if(ur.isDecimal(s)){var r=Number(s);if(r>0)return r}},registrar_server:function(s){/^sip:/i.test(s)||(s="".concat(En.SIP,":").concat(s));var r=Vc.parse(s);if(r)return r.user?void 0:r},use_preloaded_route:function(s){if(typeof s=="boolean")return s},extra_headers:function(s){var r=[];if(Array.isArray(s)&&s.length){var a=jc(s),o;try{for(a.s();!(o=a.n()).done;){var t=o.value;typeof t=="string"&&r.push(t)}}catch(n){a.e(n)}finally{a.f()}}else return;return r}}};Mu.load=function(c,s){for(var r in Gl.mandatory)if(s.hasOwnProperty(r)){var a=s[r],o=Gl.mandatory[r](a);if(o!==void 0)c[r]=o;else throw new wo.ConfigurationError(r,a)}else throw new wo.ConfigurationError(r);for(var t in Gl.optional)if(s.hasOwnProperty(t)){var n=s[t];if(ur.isEmpty(n))continue;var h=Gl.optional[t](n);if(h!==void 0)c[t]=h;else throw new wo.ConfigurationError(t,n)}};function Ca(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ca=function(r){return typeof r}:Ca=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},Ca(c)}function im(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Bc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Gc(c,s,r){return s&&Bc(c.prototype,s),r&&Bc(c,r),c}function lm(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&Tu(c,s)}function Tu(c,s){return Tu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},Tu(c,s)}function am(c){var s=um();return function(){var a=xa(c),o;if(s){var t=xa(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return om(this,o)}}function om(c,s){return s&&(Ca(s)==="object"||typeof s=="function")?s:l_(c)}function l_(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function um(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function xa(c){return xa=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},xa(c)}var cm=ft.EventEmitter,fm=_t,pt=it,_m=Zh,Wc=op,Kc=Sp,Yc=Pp,Oo=ul,hm=Fp,Wl=bt(),dm=Bs,pm=Gs(),mm=n_,Do=vs,gm=zp,No=Mu,je=new fm("UA"),Tt={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2},Tm=function(c){lm(r,c);var s=am(r);Gc(r,null,[{key:"C",get:function(){return Tt}}]);function r(a){var o;if(im(this,r),je.debug("new() [configuration:%o]",a),o=s.call(this),o._cache={credentials:{}},o._configuration=Object.assign({},No.settings),o._dynConfiguration={},o._dialogs={},o._applicants={},o._sessions={},o._transport=null,o._contact=null,o._status=Tt.STATUS_INIT,o._error=null,o._transactions={nist:{},nict:{},ist:{},ict:{}},o._data={},o._closeTimer=null,a===void 0)throw new TypeError("Not enough arguments");try{o._loadConfig(a)}catch(t){throw o._status=Tt.STATUS_NOT_READY,o._error=Tt.CONFIGURATION_ERROR,t}return o._registrator=new _m(l_(o)),o}return Gc(r,[{key:"start",value:function(){je.debug("start()"),this._status===Tt.STATUS_INIT?this._transport.connect():this._status===Tt.STATUS_USER_CLOSED?(je.debug("restarting UA"),this._closeTimer!==null&&(clearTimeout(this._closeTimer),this._closeTimer=null,this._transport.disconnect()),this._status=Tt.STATUS_INIT,this._transport.connect()):this._status===Tt.STATUS_READY?je.debug("UA is in READY status, not restarted"):je.debug("ERROR: connection is down, Auto-Recovery system is trying to reconnect"),this._dynConfiguration.register=this._configuration.register}},{key:"register",value:function(){je.debug("register()"),this._dynConfiguration.register=!0,this._registrator.register()}},{key:"unregister",value:function(o){je.debug("unregister()"),this._dynConfiguration.register=!1,this._registrator.unregister(o)}},{key:"registrator",value:function(){return this._registrator}},{key:"isRegistered",value:function(){return this._registrator.registered}},{key:"isConnected",value:function(){return this._transport.isConnected()}},{key:"call",value:function(o,t){je.debug("call()");var n=new Wc(this);return n.connect(o,t),n}},{key:"sendMessage",value:function(o,t,n){je.debug("sendMessage()");var h=new Kc(this);return h.send(o,t,n),h}},{key:"sendOptions",value:function(o,t,n){je.debug("sendOptions()");var h=new Yc(this);return h.send(o,t,n),h}},{key:"terminateSessions",value:function(o){je.debug("terminateSessions()");for(var t in this._sessions)this._sessions[t].isEnded()||this._sessions[t].terminate(o)}},{key:"stop",value:function(){var o=this;if(je.debug("stop()"),this._dynConfiguration={},this._status===Tt.STATUS_USER_CLOSED){je.debug("UA already closed");return}this._registrator.close();var t=Object.keys(this._sessions).length;for(var n in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,n)){je.debug("closing session ".concat(n));try{this._sessions[n].terminate()}catch{}}for(var h in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,h))try{this._applicants[h].close()}catch{}this._status=Tt.STATUS_USER_CLOSED;var _=Object.keys(this._transactions.nict).length+Object.keys(this._transactions.nist).length+Object.keys(this._transactions.ict).length+Object.keys(this._transactions.ist).length;_===0&&t===0?this._transport.disconnect():this._closeTimer=setTimeout(function(){o._closeTimer=null,o._transport.disconnect()},2e3)}},{key:"normalizeTarget",value:function(o){return Wl.normalizeTarget(o,this._configuration.hostport_params)}},{key:"get",value:function(o){switch(o){case"authorization_user":return this._configuration.authorization_user;case"realm":return this._configuration.realm;case"ha1":return this._configuration.ha1;case"authorization_jwt":return this._configuration.authorization_jwt;default:je.warn('get() | cannot get "%s" parameter in runtime',o);return}}},{key:"set",value:function(o,t){switch(o){case"authorization_user":{this._configuration.authorization_user=String(t);break}case"password":{this._configuration.password=String(t);break}case"realm":{this._configuration.realm=String(t);break}case"ha1":{this._configuration.ha1=String(t),this._configuration.password=null;break}case"authorization_jwt":{this._configuration.authorization_jwt=String(t);break}case"display_name":{this._configuration.display_name=t;break}default:return je.warn('set() | cannot set "%s" parameter in runtime',o),!1}return!0}},{key:"newTransaction",value:function(o){this._transactions[o.type][o.id]=o,this.emit("newTransaction",{transaction:o})}},{key:"destroyTransaction",value:function(o){delete this._transactions[o.type][o.id],this.emit("transactionDestroyed",{transaction:o})}},{key:"newDialog",value:function(o){this._dialogs[o.id]=o}},{key:"destroyDialog",value:function(o){delete this._dialogs[o.id]}},{key:"newMessage",value:function(o,t){this._applicants[o]=o,this.emit("newMessage",t)}},{key:"newOptions",value:function(o,t){this._applicants[o]=o,this.emit("newOptions",t)}},{key:"destroyMessage",value:function(o){delete this._applicants[o]}},{key:"newRTCSession",value:function(o,t){this._sessions[o.id]=o,this.emit("newRTCSession",t)}},{key:"destroyRTCSession",value:function(o){delete this._sessions[o.id]}},{key:"registered",value:function(o){this.emit("registered",o)}},{key:"unregistered",value:function(o){this.emit("unregistered",o)}},{key:"registrationFailed",value:function(o){this.emit("registrationFailed",o)}},{key:"receiveRequest",value:function(o){var t=o.method;if(o.ruri.user!==this._configuration.uri.user&&o.ruri.user!==this._contact.uri.user){je.debug("Request-URI does not point to us"),o.method!==pt.ACK&&o.reply_sl(404);return}if(o.ruri.scheme===pt.SIPS){o.reply_sl(416);return}if(!Oo.checkTransaction(this,o)){if(t===pt.INVITE?new Oo.InviteServerTransaction(this,this._transport,o):t!==pt.ACK&&t!==pt.CANCEL&&new Oo.NonInviteServerTransaction(this,this._transport,o),t===pt.OPTIONS){if(this.listeners("newOptions").length===0){o.reply(200);return}var n=new Yc(this);n.init_incoming(o)}else if(t===pt.MESSAGE){if(this.listeners("newMessage").length===0){o.reply(405);return}var h=new Kc(this);h.init_incoming(o)}else if(t===pt.INVITE&&!o.to_tag&&this.listeners("newRTCSession").length===0){o.reply(405);return}var _,d;if(o.to_tag)_=this._findDialog(o.call_id,o.from_tag,o.to_tag),_?_.receiveRequest(o):t===pt.NOTIFY?(d=this._findSession(o),d?d.receiveRequest(o):(je.debug("received NOTIFY request for a non existent subscription"),o.reply(481,"Subscription does not exist"))):t!==pt.ACK&&o.reply(481);else switch(t){case pt.INVITE:if(window.RTCPeerConnection)if(o.hasHeader("replaces")){var g=o.replaces;_=this._findDialog(g.call_id,g.from_tag,g.to_tag),_?(d=_.owner,d.isEnded()?o.reply(603):d.receiveRequest(o)):o.reply(481)}else d=new Wc(this),d.init_incoming(o);else je.warn("INVITE received but WebRTC is not supported"),o.reply(488);break;case pt.BYE:o.reply(481);break;case pt.CANCEL:d=this._findSession(o),d?d.receiveRequest(o):je.debug("received CANCEL request for a non existent session");break;case pt.ACK:break;case pt.NOTIFY:this.emit("sipEvent",{event:o.event,request:o}),o.reply(200);break;default:o.reply(405);break}}}},{key:"_findSession",value:function(o){var t=o.call_id,n=o.from_tag,h=o.to_tag,_=t+n,d=this._sessions[_],g=t+h,T=this._sessions[g];return d||T||null}},{key:"_findDialog",value:function(o,t,n){var h=o+t+n,_=this._dialogs[h];return _||(h=o+n+t,_=this._dialogs[h],_||null)}},{key:"_loadConfig",value:function(o){try{No.load(this._configuration,o)}catch(g){throw g}this._configuration.display_name===0&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=Wl.newUUID()),this._configuration.jssip_id=Wl.createRandomToken(5);var t=this._configuration.uri.clone();t.user=null,this._configuration.hostport_params=t.toString().replace(/^sip:/i,"");try{this._transport=new hm(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=vm.bind(this),this._transport.onconnect=Em.bind(this),this._transport.ondisconnect=Sm.bind(this),this._transport.ondata=ym.bind(this)}catch(g){throw je.warn(g),new dm.ConfigurationError("sockets",this._configuration.sockets)}if(delete this._configuration.sockets,this._configuration.authorization_user||(this._configuration.authorization_user=this._configuration.uri.user),!this._configuration.registrar_server){var n=this._configuration.uri.clone();n.user=null,n.clearParams(),n.clearHeaders(),this._configuration.registrar_server=n}this._configuration.no_answer_timeout*=1e3,this._configuration.contact_uri?this._configuration.via_host=this._configuration.contact_uri.host:this._configuration.contact_uri=new pm("sip",Wl.createRandomToken(8),this._configuration.via_host,null,{transport:"ws"}),this._contact={pub_gruu:null,temp_gruu:null,uri:this._configuration.contact_uri,toString:function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=T.anonymous||null,y=T.outbound||null,A="<";return E?A+=this.temp_gruu||"sip:anonymous@anonymous.invalid;transport=ws":A+=this.pub_gruu||this.uri.toString(),y&&(E?!this.temp_gruu:!this.pub_gruu)&&(A+=";ob"),A+=">",A}};var h=["authorization_user","password","realm","ha1","authorization_jwt","display_name","register"];for(var _ in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,_)&&(h.indexOf(_)!==-1?Object.defineProperty(this._configuration,_,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,_,{writable:!1,configurable:!1}));je.debug("configuration parameters after validation:");for(var d in this._configuration)if(Object.prototype.hasOwnProperty.call(No.settings,d))switch(d){case"uri":case"registrar_server":je.debug("- ".concat(d,": ").concat(this._configuration[d]));break;case"password":case"ha1":case"authorization_jwt":je.debug("- ".concat(d,": NOT SHOWN"));break;default:je.debug("- ".concat(d,": ").concat(JSON.stringify(this._configuration[d])))}}},{key:"C",get:function(){return Tt}},{key:"status",get:function(){return this._status}},{key:"contact",get:function(){return this._contact}},{key:"configuration",get:function(){return this._configuration}},{key:"transport",get:function(){return this._transport}}]),r}(cm);function vm(c){this.emit("connecting",c)}function Em(c){this._status!==Tt.STATUS_USER_CLOSED&&(this._status=Tt.STATUS_READY,this._error=null,this.emit("connected",c),this._dynConfiguration.register&&this._registrator.register())}function Sm(c){for(var s=["nict","ict","nist","ist"],r=0,a=s;r<a.length;r++){var o=a[r];for(var t in this._transactions[o])Object.prototype.hasOwnProperty.call(this._transactions[o],t)&&this._transactions[o][t].onTransportError()}this.emit("disconnected",c),this._registrator.onTransportClosed(),this._status!==Tt.STATUS_USER_CLOSED&&(this._status=Tt.STATUS_NOT_READY,this._error=Tt.NETWORK_ERROR)}function ym(c){var s=c.transport,r=c.message;if(r=mm.parseMessage(r,this),!!r&&!(this._status===Tt.STATUS_USER_CLOSED&&r instanceof Do.IncomingRequest)&&gm(r,this,s)){if(r instanceof Do.IncomingRequest)r.transport=s,this.receiveRequest(r);else if(r instanceof Do.IncomingResponse){var a;switch(r.method){case pt.INVITE:a=this._transactions.ict[r.via_branch],a&&a.receiveResponse(r);break;case pt.ACK:break;default:a=this._transactions.nict[r.via_branch],a&&a.receiveResponse(r);break}}}}function Am(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Jc(c,s){for(var r=0;r<s.length;r++){var a=s[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Cm(c,s,r){return s&&Jc(c.prototype,s),r&&Jc(c,r),c}var Rm=_t,Im=ls(),Ot=new Rm("WebSocketInterface"),bm=function(){function c(s){Am(this,c),Ot.debug('new() [url:"%s"]',s),this._url=s,this._sip_uri=null,this._via_transport=null,this._ws=null;var r=Im.parse(s,"absoluteURI");if(r===-1)throw Ot.warn("invalid WebSocket URI: ".concat(s)),new TypeError("Invalid argument: ".concat(s));if(r.scheme!=="wss"&&r.scheme!=="ws")throw Ot.warn("invalid WebSocket URI scheme: ".concat(r.scheme)),new TypeError("Invalid argument: ".concat(s));this._sip_uri="sip:".concat(r.host).concat(r.port?":".concat(r.port):"",";transport=ws"),this._via_transport=r.scheme.toUpperCase()}return Cm(c,[{key:"connect",value:function(){if(Ot.debug("connect()"),this.isConnected()){Ot.debug("WebSocket ".concat(this._url," is already connected"));return}else if(this.isConnecting()){Ot.debug("WebSocket ".concat(this._url," is connecting"));return}this._ws&&this.disconnect(),Ot.debug("connecting to WebSocket ".concat(this._url));try{this._ws=new WebSocket(this._url,"sip"),this._ws.binaryType="arraybuffer",this._ws.onopen=this._onOpen.bind(this),this._ws.onclose=this._onClose.bind(this),this._ws.onmessage=this._onMessage.bind(this),this._ws.onerror=this._onError.bind(this)}catch(r){this._onError(r)}}},{key:"disconnect",value:function(){Ot.debug("disconnect()"),this._ws&&(this._ws.onopen=function(){},this._ws.onclose=function(){},this._ws.onmessage=function(){},this._ws.onerror=function(){},this._ws.close(),this._ws=null)}},{key:"send",value:function(r){return Ot.debug("send()"),this.isConnected()?(this._ws.send(r),!0):(Ot.warn("unable to send message, WebSocket is not open"),!1)}},{key:"isConnected",value:function(){return this._ws&&this._ws.readyState===this._ws.OPEN}},{key:"isConnecting",value:function(){return this._ws&&this._ws.readyState===this._ws.CONNECTING}},{key:"_onOpen",value:function(){Ot.debug("WebSocket ".concat(this._url," connected")),this.onconnect()}},{key:"_onClose",value:function(r){var a=r.wasClean,o=r.code,t=r.reason;Ot.debug("WebSocket ".concat(this._url," closed")),a===!1&&Ot.debug("WebSocket abrupt disconnection"),this.ondisconnect(!a,o,t)}},{key:"_onMessage",value:function(r){var a=r.data;Ot.debug("received WebSocket message"),this.ondata(a)}},{key:"_onError",value:function(r){Ot.warn("WebSocket ".concat(this._url," error: "),r)}},{key:"via_transport",get:function(){return this._via_transport},set:function(r){this._via_transport=r.toUpperCase()}},{key:"sip_uri",get:function(){return this._sip_uri}},{key:"url",get:function(){return this._url}}]),c}(),vu=La,wm=it,Om=Bs,Dm=bt(),Nm=Tm,Um=Gs(),Pm=bu(),xm=ls(),Mm=bm,km=pr("JsSIP");km("version %s",vu.version);var zc={C:wm,Exceptions:Om,Utils:Dm,UA:Nm,URI:Um,NameAddrHeader:Pm,WebSocketInterface:Mm,Grammar:xm,debug:pr,get name(){return vu.title},get version(){return vu.version}};const lr=pr,ar="JsSIP";var ot=class{constructor(s){s?(this._debug=lr.default(`${ar}:${s}`),this._warn=lr.default(`${ar}:WARN:${s}`),this._error=lr.default(`${ar}:ERROR:${s}`)):(this._debug=lr.default(ar),this._warn=lr.default(`${ar}:WARN`),this._error=lr.default(`${ar}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}};const Va=ze(ot),Xc=La;var De={USER_AGENT:`${Xc.title} ${Xc.version}`,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",MISSING_SDP:"Missing SDP",AUTHENTICATION_ERROR:"Authentication Error",BYE:"Terminated",WEBRTC_ERROR:"WebRTC Error",CANCELED:"Canceled",NO_ANSWER:"No Answer",EXPIRES:"Expires",NO_ACK:"No ACK",DIALOG_ERROR:"Dialog Error",USER_DENIED_MEDIA_ACCESS:"User Denied Media Access",BAD_MEDIA_DESCRIPTION:"Bad Media Description",RTP_TIMEOUT:"RTP Timeout"},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,424],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",REFER:"REFER",UPDATE:"UPDATE",SUBSCRIBE:"SUBSCRIBE",DTMF_TRANSPORT:{INFO:"INFO",RFC2833:"RFC2833"},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",424:"Bad Location Information",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:"JsSIP Internal 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"},ALLOWED_METHODS:"INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY",ACCEPTED_BODY_TYPES:"application/sdp, application/dtmf-relay",MAX_FORWARDS:69,SESSION_EXPIRES:90,MIN_SESSION_EXPIRES:60,CONNECTION_RECOVERY_MAX_INTERVAL:30,CONNECTION_RECOVERY_MIN_INTERVAL:2};const $=ze(De);var et={},Uo,Qc;function ku(){if(Qc)return Uo;Qc=1;const c=Es(),s=Xt();return Uo=class a_{static parse(a){if(a=s.parse(a,"Name_Addr_Header"),a!==-1)return a}constructor(a,o,t){if(!a||!(a instanceof c))throw new TypeError('missing or invalid "uri" parameter');this._uri=a,this._parameters={},this.display_name=o;for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&this.setParam(n,t[n])}get uri(){return this._uri}get display_name(){return this._display_name}set display_name(a){this._display_name=a===0?"0":a}setParam(a,o){a&&(this._parameters[a.toLowerCase()]=typeof o>"u"||o===null?null:o.toString())}getParam(a){if(a)return this._parameters[a.toLowerCase()]}hasParam(a){if(a)return this._parameters.hasOwnProperty(a.toLowerCase())&&!0||!1}deleteParam(a){if(a=a.toLowerCase(),this._parameters.hasOwnProperty(a)){const o=this._parameters[a];return delete this._parameters[a],o}}clearParams(){this._parameters={}}clone(){return new a_(this._uri.clone(),this._display_name,JSON.parse(JSON.stringify(this._parameters)))}_quote(a){return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}toString(){let a=this._display_name?`"${this._quote(this._display_name)}" `:"";a+=`<${this._uri.toString()}>`;for(const o in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,o)&&(a+=`;${o}`,this._parameters[o]!==null&&(a+=`=${this._parameters[o]}`));return a}},Uo}var Po,Zc;function Xt(){return Zc||(Zc=1,Po=function(){function c(r){return'"'+r.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g,escape)+'"'}var s={parse:function(r,a){var o={CRLF:d,DIGIT:g,ALPHA:T,HEXDIG:E,WSP:y,OCTET:A,DQUOTE:C,SP:I,HTAB:H,alphanum:L,reserved:oe,unreserved:N,mark:j,escaped:Se,LWS:ve,SWS:M,HCOLON:D,TEXT_UTF8_TRIM:B,TEXT_UTF8char:V,UTF8_NONASCII:J,UTF8_CONT:F,LHEX:X,token:U,token_nodot:P,separators:se,word:tt,STAR:ee,SLASH:W,EQUAL:G,LPAREN:re,RPAREN:ge,RAQUOT:be,LAQUOT:xe,COMMA:Ce,SEMI:le,COLON:ye,LDQUOT:st,RDQUOT:lt,comment:Ee,ctext:Ae,quoted_string:Ie,quoted_string_clean:Oe,qdtext:pe,quoted_pair:ue,SIP_URI_noparams:de,SIP_URI:we,uri_scheme:Ne,uri_scheme_sips:Qe,uri_scheme_sip:Le,userinfo:kt,user:ht,user_unreserved:In,password:bn,hostport:Ws,host:Qt,hostname:as,domainlabel:Ks,toplabel:wn,IPv6reference:On,IPv6address:Ys,h16:me,ls32:ae,IPv4address:at,dec_octet:Gt,port:ys,uri_parameters:Tr,uri_parameter:Dn,transport_param:Nn,user_param:vr,method_param:Er,ttl_param:Sr,maddr_param:yr,lr_param:Ar,other_param:Cr,pname:Rr,pvalue:Ir,paramchar:As,param_unreserved:Cs,headers:br,header:Js,hname:zs,hvalue:wr,hnv_unreserved:Rs,Request_Response:Xs,Request_Line:dl,Request_URI:Or,absoluteURI:Un,hier_part:Pn,net_path:Dr,abs_path:Qs,opaque_part:Zs,uric:Is,uric_no_slash:bs,path_segments:Nr,segment:en,param:ws,pchar:os,scheme:Os,authority:Ur,srvr:Pr,reg_name:xr,query:Mr,SIP_Version:xn,INVITEm:Mn,ACKm:kr,OPTIONSm:Lr,BYEm:$r,CANCELm:Hr,REGISTERm:Fr,SUBSCRIBEm:jr,NOTIFYm:qr,REFERm:Vr,Method:tn,Status_Line:sn,Status_Code:Br,extension_code:Gr,Reason_Phrase:Wr,Allow_Events:pl,Call_ID:Wa,Contact:Ka,contact_param:kn,name_addr:Lt,display_name:$t,contact_params:Ds,c_p_q:Ln,c_p_expires:Kr,delta_seconds:Zt,qvalue:es,generic_param:Ge,gen_value:We,Content_Disposition:ml,disp_type:gl,disp_param:$n,handling_param:Hn,Content_Encoding:Tl,Content_Length:Ya,Content_Type:Ja,media_type:vl,m_type:Yr,discrete_type:Jr,composite_type:zr,extension_token:nn,x_token:rn,m_subtype:Xr,m_parameter:Fn,m_value:jn,CSeq:El,CSeq_value:Sl,Expires:yl,Event:za,event_type:ln,From:an,from_param:Qr,tag_param:on,Max_Forwards:Zr,Min_Expires:Xa,Name_Addr_Header:Qa,Proxy_Authenticate:Za,challenge:ei,other_challenge:qn,auth_param:Ns,digest_cln:ts,realm:un,realm_value:ti,domain:si,URI:cn,nonce:fn,nonce_value:ni,opaque:ri,stale:ii,algorithm:li,qop_options:ai,qop_value:_n,Proxy_Require:Vn,Record_Route:eo,rec_route:Bn,Reason:Gn,reason_param:oi,reason_cause:Wn,Require:Al,Route:to,route_param:Kn,Subscription_State:Yn,substate_value:Cl,subexp_params:Jn,event_reason_value:zn,Subject:Rl,Supported:so,To:no,to_param:ui,Via:ci,via_param:Xn,via_params:Us,via_ttl:Qn,via_maddr:fi,via_received:_i,via_branch:hi,response_port:di,rport:pi,sent_protocol:mi,protocol_name:gi,transport:Ti,sent_by:vi,via_host:Ei,via_port:Si,ttl:Zn,WWW_Authenticate:yi,Session_Expires:ro,s_e_expires:Il,s_e_params:er,s_e_refresher:tr,extension_header:bl,header_value:wl,message_body:Ol,uuid_URI:io,uuid:Dl,hex4:Ht,hex8:Ft,hex12:Ai,Refer_To:Nl,Replaces:lo,call_id:Ul,replaces_param:sr,to_tag:nr,from_tag:Ci,early_flag:Ri};if(a!==void 0){if(o[a]===void 0)throw new Error("Invalid rule name: "+c(a)+".")}else a="CRLF";var t=0,n=0,h=[];function _(i){t<n||(t>n&&(n=t,h=[]),h.push(i))}function d(){var i;return r.substr(t,2)===`\r
71
+ `,ah.send(a)}var Lu={};function qc(c,s){var n;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(n=lm(c))||s&&c&&typeof c.length=="number"){n&&(c=n);var a=0,o=function(){};return{s:o,n:function(){return a>=c.length?{done:!0}:{done:!1,value:c[a++]}},e:function(d){throw d},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
72
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var t=!0,r=!1,_;return{s:function(){n=c[Symbol.iterator]()},n:function(){var d=n.next();return t=d.done,d},e:function(d){r=!0,_=d},f:function(){try{!t&&n.return!=null&&n.return()}finally{if(r)throw _}}}}function lm(c,s){if(c){if(typeof c=="string")return Bc(c,s);var n=Object.prototype.toString.call(c).slice(8,-1);if(n==="Object"&&c.constructor&&(n=c.constructor.name),n==="Map"||n==="Set")return Array.from(c);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Bc(c,s)}}function Bc(c,s){(s==null||s>c.length)&&(s=c.length);for(var n=0,a=new Array(s);n<s;n++)a[n]=c[n];return a}var fr=bt(),yn=lt,wo=os(),Gc=Ks(),Oo=Pu,Do=Ws;Lu.settings={authorization_user:null,password:null,realm:null,ha1:null,authorization_jwt:null,display_name:null,uri:null,contact_uri:null,instance_id:null,use_preloaded_route:!1,session_timers:!0,session_timers_refresh_method:yn.UPDATE,session_timers_force_refresher:!1,no_answer_timeout:60,register:!0,register_expires:600,registrar_server:null,sockets:null,connection_recovery_max_interval:yn.CONNECTION_RECOVERY_MAX_INTERVAL,connection_recovery_min_interval:yn.CONNECTION_RECOVERY_MIN_INTERVAL,extra_headers:null,via_host:"".concat(fr.createRandomToken(12),".invalid")};var Kl={mandatory:{sockets:function(s){var n=[];if(Oo.isSocket(s))n.push({socket:s});else if(Array.isArray(s)&&s.length){var a=qc(s),o;try{for(a.s();!(o=a.n()).done;){var t=o.value;Object.prototype.hasOwnProperty.call(t,"socket")&&Oo.isSocket(t.socket)?n.push(t):Oo.isSocket(t)&&n.push({socket:t})}}catch(r){a.e(r)}finally{a.f()}}else return;return n},uri:function(s){/^sip:/i.test(s)||(s="".concat(yn.SIP,":").concat(s));var n=Gc.parse(s);if(n)return n.user?n:void 0}},optional:{authorization_user:function(s){if(wo.parse('"'.concat(s,'"'),"quoted_string")!==-1)return s},authorization_jwt:function(s){if(typeof s=="string")return s},user_agent:function(s){if(typeof s=="string")return s},connection_recovery_max_interval:function(s){if(fr.isDecimal(s)){var n=Number(s);if(n>0)return n}},connection_recovery_min_interval:function(s){if(fr.isDecimal(s)){var n=Number(s);if(n>0)return n}},contact_uri:function(s){if(typeof s=="string"){var n=wo.parse(s,"SIP_URI");if(n!==-1)return n}},display_name:function(s){return s},instance_id:function(s){if(/^uuid:/i.test(s)&&(s=s.substr(5)),wo.parse(s,"uuid")!==-1)return s},no_answer_timeout:function(s){if(fr.isDecimal(s)){var n=Number(s);if(n>0)return n}},session_timers:function(s){if(typeof s=="boolean")return s},session_timers_refresh_method:function(s){if(typeof s=="string"&&(s=s.toUpperCase(),s===yn.INVITE||s===yn.UPDATE))return s},session_timers_force_refresher:function(s){if(typeof s=="boolean")return s},password:function(s){return String(s)},realm:function(s){return String(s)},ha1:function(s){return String(s)},register:function(s){if(typeof s=="boolean")return s},register_expires:function(s){if(fr.isDecimal(s)){var n=Number(s);if(n>0)return n}},registrar_server:function(s){/^sip:/i.test(s)||(s="".concat(yn.SIP,":").concat(s));var n=Gc.parse(s);if(n)return n.user?void 0:n},use_preloaded_route:function(s){if(typeof s=="boolean")return s},extra_headers:function(s){var n=[];if(Array.isArray(s)&&s.length){var a=qc(s),o;try{for(a.s();!(o=a.n()).done;){var t=o.value;typeof t=="string"&&n.push(t)}}catch(r){a.e(r)}finally{a.f()}}else return;return n}}};Lu.load=function(c,s){for(var n in Kl.mandatory)if(s.hasOwnProperty(n)){var a=s[n],o=Kl.mandatory[n](a);if(o!==void 0)c[n]=o;else throw new Do.ConfigurationError(n,a)}else throw new Do.ConfigurationError(n);for(var t in Kl.optional)if(s.hasOwnProperty(t)){var r=s[t];if(fr.isEmpty(r))continue;var _=Kl.optional[t](r);if(_!==void 0)c[t]=_;else throw new Do.ConfigurationError(t,r)}};function Ia(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ia=function(n){return typeof n}:Ia=function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},Ia(c)}function am(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Wc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Kc(c,s,n){return s&&Wc(c.prototype,s),n&&Wc(c,n),c}function om(c,s){if(typeof s!="function"&&s!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(s&&s.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),s&&Eu(c,s)}function Eu(c,s){return Eu=Object.setPrototypeOf||function(a,o){return a.__proto__=o,a},Eu(c,s)}function um(c){var s=fm();return function(){var a=Ma(c),o;if(s){var t=Ma(this).constructor;o=Reflect.construct(a,arguments,t)}else o=a.apply(this,arguments);return cm(this,o)}}function cm(c,s){return s&&(Ia(s)==="object"||typeof s=="function")?s:oh(c)}function oh(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function fm(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch{return!1}}function Ma(c){return Ma=Object.setPrototypeOf?Object.getPrototypeOf:function(n){return n.__proto__||Object.getPrototypeOf(n)},Ma(c)}var hm=ft.EventEmitter,_m=ht,pt=lt,dm=td,Yc=cp,Jc=Ap,zc=kp,No=fl,pm=Vp,Yl=bt(),mm=Ws,gm=Ks(),Tm=ih,Uo=Ss,vm=Qp,xo=Lu,je=new _m("UA"),Tt={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2},Em=function(c){om(n,c);var s=um(n);Kc(n,null,[{key:"C",get:function(){return Tt}}]);function n(a){var o;if(am(this,n),je.debug("new() [configuration:%o]",a),o=s.call(this),o._cache={credentials:{}},o._configuration=Object.assign({},xo.settings),o._dynConfiguration={},o._dialogs={},o._applicants={},o._sessions={},o._transport=null,o._contact=null,o._status=Tt.STATUS_INIT,o._error=null,o._transactions={nist:{},nict:{},ist:{},ict:{}},o._data={},o._closeTimer=null,a===void 0)throw new TypeError("Not enough arguments");try{o._loadConfig(a)}catch(t){throw o._status=Tt.STATUS_NOT_READY,o._error=Tt.CONFIGURATION_ERROR,t}return o._registrator=new dm(oh(o)),o}return Kc(n,[{key:"start",value:function(){je.debug("start()"),this._status===Tt.STATUS_INIT?this._transport.connect():this._status===Tt.STATUS_USER_CLOSED?(je.debug("restarting UA"),this._closeTimer!==null&&(clearTimeout(this._closeTimer),this._closeTimer=null,this._transport.disconnect()),this._status=Tt.STATUS_INIT,this._transport.connect()):this._status===Tt.STATUS_READY?je.debug("UA is in READY status, not restarted"):je.debug("ERROR: connection is down, Auto-Recovery system is trying to reconnect"),this._dynConfiguration.register=this._configuration.register}},{key:"register",value:function(){je.debug("register()"),this._dynConfiguration.register=!0,this._registrator.register()}},{key:"unregister",value:function(o){je.debug("unregister()"),this._dynConfiguration.register=!1,this._registrator.unregister(o)}},{key:"registrator",value:function(){return this._registrator}},{key:"isRegistered",value:function(){return this._registrator.registered}},{key:"isConnected",value:function(){return this._transport.isConnected()}},{key:"call",value:function(o,t){je.debug("call()");var r=new Yc(this);return r.connect(o,t),r}},{key:"sendMessage",value:function(o,t,r){je.debug("sendMessage()");var _=new Jc(this);return _.send(o,t,r),_}},{key:"sendOptions",value:function(o,t,r){je.debug("sendOptions()");var _=new zc(this);return _.send(o,t,r),_}},{key:"terminateSessions",value:function(o){je.debug("terminateSessions()");for(var t in this._sessions)this._sessions[t].isEnded()||this._sessions[t].terminate(o)}},{key:"stop",value:function(){var o=this;if(je.debug("stop()"),this._dynConfiguration={},this._status===Tt.STATUS_USER_CLOSED){je.debug("UA already closed");return}this._registrator.close();var t=Object.keys(this._sessions).length;for(var r in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,r)){je.debug("closing session ".concat(r));try{this._sessions[r].terminate()}catch{}}for(var _ in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,_))try{this._applicants[_].close()}catch{}this._status=Tt.STATUS_USER_CLOSED;var h=Object.keys(this._transactions.nict).length+Object.keys(this._transactions.nist).length+Object.keys(this._transactions.ict).length+Object.keys(this._transactions.ist).length;h===0&&t===0?this._transport.disconnect():this._closeTimer=setTimeout(function(){o._closeTimer=null,o._transport.disconnect()},2e3)}},{key:"normalizeTarget",value:function(o){return Yl.normalizeTarget(o,this._configuration.hostport_params)}},{key:"get",value:function(o){switch(o){case"authorization_user":return this._configuration.authorization_user;case"realm":return this._configuration.realm;case"ha1":return this._configuration.ha1;case"authorization_jwt":return this._configuration.authorization_jwt;default:je.warn('get() | cannot get "%s" parameter in runtime',o);return}}},{key:"set",value:function(o,t){switch(o){case"authorization_user":{this._configuration.authorization_user=String(t);break}case"password":{this._configuration.password=String(t);break}case"realm":{this._configuration.realm=String(t);break}case"ha1":{this._configuration.ha1=String(t),this._configuration.password=null;break}case"authorization_jwt":{this._configuration.authorization_jwt=String(t);break}case"display_name":{this._configuration.display_name=t;break}default:return je.warn('set() | cannot set "%s" parameter in runtime',o),!1}return!0}},{key:"newTransaction",value:function(o){this._transactions[o.type][o.id]=o,this.emit("newTransaction",{transaction:o})}},{key:"destroyTransaction",value:function(o){delete this._transactions[o.type][o.id],this.emit("transactionDestroyed",{transaction:o})}},{key:"newDialog",value:function(o){this._dialogs[o.id]=o}},{key:"destroyDialog",value:function(o){delete this._dialogs[o.id]}},{key:"newMessage",value:function(o,t){this._applicants[o]=o,this.emit("newMessage",t)}},{key:"newOptions",value:function(o,t){this._applicants[o]=o,this.emit("newOptions",t)}},{key:"destroyMessage",value:function(o){delete this._applicants[o]}},{key:"newRTCSession",value:function(o,t){this._sessions[o.id]=o,this.emit("newRTCSession",t)}},{key:"destroyRTCSession",value:function(o){delete this._sessions[o.id]}},{key:"registered",value:function(o){this.emit("registered",o)}},{key:"unregistered",value:function(o){this.emit("unregistered",o)}},{key:"registrationFailed",value:function(o){this.emit("registrationFailed",o)}},{key:"receiveRequest",value:function(o){var t=o.method;if(o.ruri.user!==this._configuration.uri.user&&o.ruri.user!==this._contact.uri.user){je.debug("Request-URI does not point to us"),o.method!==pt.ACK&&o.reply_sl(404);return}if(o.ruri.scheme===pt.SIPS){o.reply_sl(416);return}if(!No.checkTransaction(this,o)){if(t===pt.INVITE?new No.InviteServerTransaction(this,this._transport,o):t!==pt.ACK&&t!==pt.CANCEL&&new No.NonInviteServerTransaction(this,this._transport,o),t===pt.OPTIONS){if(this.listeners("newOptions").length===0){o.reply(200);return}var r=new zc(this);r.init_incoming(o)}else if(t===pt.MESSAGE){if(this.listeners("newMessage").length===0){o.reply(405);return}var _=new Jc(this);_.init_incoming(o)}else if(t===pt.INVITE&&!o.to_tag&&this.listeners("newRTCSession").length===0){o.reply(405);return}var h,d;if(o.to_tag)h=this._findDialog(o.call_id,o.from_tag,o.to_tag),h?h.receiveRequest(o):t===pt.NOTIFY?(d=this._findSession(o),d?d.receiveRequest(o):(je.debug("received NOTIFY request for a non existent subscription"),o.reply(481,"Subscription does not exist"))):t!==pt.ACK&&o.reply(481);else switch(t){case pt.INVITE:if(window.RTCPeerConnection)if(o.hasHeader("replaces")){var g=o.replaces;h=this._findDialog(g.call_id,g.from_tag,g.to_tag),h?(d=h.owner,d.isEnded()?o.reply(603):d.receiveRequest(o)):o.reply(481)}else d=new Yc(this),d.init_incoming(o);else je.warn("INVITE received but WebRTC is not supported"),o.reply(488);break;case pt.BYE:o.reply(481);break;case pt.CANCEL:d=this._findSession(o),d?d.receiveRequest(o):je.debug("received CANCEL request for a non existent session");break;case pt.ACK:break;case pt.NOTIFY:this.emit("sipEvent",{event:o.event,request:o}),o.reply(200);break;default:o.reply(405);break}}}},{key:"_findSession",value:function(o){var t=o.call_id,r=o.from_tag,_=o.to_tag,h=t+r,d=this._sessions[h],g=t+_,T=this._sessions[g];return d||T||null}},{key:"_findDialog",value:function(o,t,r){var _=o+t+r,h=this._dialogs[_];return h||(_=o+r+t,h=this._dialogs[_],h||null)}},{key:"_loadConfig",value:function(o){try{xo.load(this._configuration,o)}catch(g){throw g}this._configuration.display_name===0&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=Yl.newUUID()),this._configuration.jssip_id=Yl.createRandomToken(5);var t=this._configuration.uri.clone();t.user=null,this._configuration.hostport_params=t.toString().replace(/^sip:/i,"");try{this._transport=new pm(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=Sm.bind(this),this._transport.onconnect=ym.bind(this),this._transport.ondisconnect=Am.bind(this),this._transport.ondata=Cm.bind(this)}catch(g){throw je.warn(g),new mm.ConfigurationError("sockets",this._configuration.sockets)}if(delete this._configuration.sockets,this._configuration.authorization_user||(this._configuration.authorization_user=this._configuration.uri.user),!this._configuration.registrar_server){var r=this._configuration.uri.clone();r.user=null,r.clearParams(),r.clearHeaders(),this._configuration.registrar_server=r}this._configuration.no_answer_timeout*=1e3,this._configuration.contact_uri?this._configuration.via_host=this._configuration.contact_uri.host:this._configuration.contact_uri=new gm("sip",Yl.createRandomToken(8),this._configuration.via_host,null,{transport:"ws"}),this._contact={pub_gruu:null,temp_gruu:null,uri:this._configuration.contact_uri,toString:function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=T.anonymous||null,y=T.outbound||null,A="<";return E?A+=this.temp_gruu||"sip:anonymous@anonymous.invalid;transport=ws":A+=this.pub_gruu||this.uri.toString(),y&&(E?!this.temp_gruu:!this.pub_gruu)&&(A+=";ob"),A+=">",A}};var _=["authorization_user","password","realm","ha1","authorization_jwt","display_name","register"];for(var h in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,h)&&(_.indexOf(h)!==-1?Object.defineProperty(this._configuration,h,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,h,{writable:!1,configurable:!1}));je.debug("configuration parameters after validation:");for(var d in this._configuration)if(Object.prototype.hasOwnProperty.call(xo.settings,d))switch(d){case"uri":case"registrar_server":je.debug("- ".concat(d,": ").concat(this._configuration[d]));break;case"password":case"ha1":case"authorization_jwt":je.debug("- ".concat(d,": NOT SHOWN"));break;default:je.debug("- ".concat(d,": ").concat(JSON.stringify(this._configuration[d])))}}},{key:"C",get:function(){return Tt}},{key:"status",get:function(){return this._status}},{key:"contact",get:function(){return this._contact}},{key:"configuration",get:function(){return this._configuration}},{key:"transport",get:function(){return this._transport}}]),n}(hm);function Sm(c){this.emit("connecting",c)}function ym(c){this._status!==Tt.STATUS_USER_CLOSED&&(this._status=Tt.STATUS_READY,this._error=null,this.emit("connected",c),this._dynConfiguration.register&&this._registrator.register())}function Am(c){for(var s=["nict","ict","nist","ist"],n=0,a=s;n<a.length;n++){var o=a[n];for(var t in this._transactions[o])Object.prototype.hasOwnProperty.call(this._transactions[o],t)&&this._transactions[o][t].onTransportError()}this.emit("disconnected",c),this._registrator.onTransportClosed(),this._status!==Tt.STATUS_USER_CLOSED&&(this._status=Tt.STATUS_NOT_READY,this._error=Tt.NETWORK_ERROR)}function Cm(c){var s=c.transport,n=c.message;if(n=Tm.parseMessage(n,this),!!n&&!(this._status===Tt.STATUS_USER_CLOSED&&n instanceof Uo.IncomingRequest)&&vm(n,this,s)){if(n instanceof Uo.IncomingRequest)n.transport=s,this.receiveRequest(n);else if(n instanceof Uo.IncomingResponse){var a;switch(n.method){case pt.INVITE:a=this._transactions.ict[n.via_branch],a&&a.receiveResponse(n);break;case pt.ACK:break;default:a=this._transactions.nict[n.via_branch],a&&a.receiveResponse(n);break}}}}function Rm(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Xc(c,s){for(var n=0;n<s.length;n++){var a=s[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(c,a.key,a)}}function Im(c,s,n){return s&&Xc(c.prototype,s),n&&Xc(c,n),c}var bm=ht,wm=os(),Ot=new bm("WebSocketInterface"),Om=function(){function c(s){Rm(this,c),Ot.debug('new() [url:"%s"]',s),this._url=s,this._sip_uri=null,this._via_transport=null,this._ws=null;var n=wm.parse(s,"absoluteURI");if(n===-1)throw Ot.warn("invalid WebSocket URI: ".concat(s)),new TypeError("Invalid argument: ".concat(s));if(n.scheme!=="wss"&&n.scheme!=="ws")throw Ot.warn("invalid WebSocket URI scheme: ".concat(n.scheme)),new TypeError("Invalid argument: ".concat(s));this._sip_uri="sip:".concat(n.host).concat(n.port?":".concat(n.port):"",";transport=ws"),this._via_transport=n.scheme.toUpperCase()}return Im(c,[{key:"connect",value:function(){if(Ot.debug("connect()"),this.isConnected()){Ot.debug("WebSocket ".concat(this._url," is already connected"));return}else if(this.isConnecting()){Ot.debug("WebSocket ".concat(this._url," is connecting"));return}this._ws&&this.disconnect(),Ot.debug("connecting to WebSocket ".concat(this._url));try{this._ws=new WebSocket(this._url,"sip"),this._ws.binaryType="arraybuffer",this._ws.onopen=this._onOpen.bind(this),this._ws.onclose=this._onClose.bind(this),this._ws.onmessage=this._onMessage.bind(this),this._ws.onerror=this._onError.bind(this)}catch(n){this._onError(n)}}},{key:"disconnect",value:function(){Ot.debug("disconnect()"),this._ws&&(this._ws.onopen=function(){},this._ws.onclose=function(){},this._ws.onmessage=function(){},this._ws.onerror=function(){},this._ws.close(),this._ws=null)}},{key:"send",value:function(n){return Ot.debug("send()"),this.isConnected()?(this._ws.send(n),!0):(Ot.warn("unable to send message, WebSocket is not open"),!1)}},{key:"isConnected",value:function(){return this._ws&&this._ws.readyState===this._ws.OPEN}},{key:"isConnecting",value:function(){return this._ws&&this._ws.readyState===this._ws.CONNECTING}},{key:"_onOpen",value:function(){Ot.debug("WebSocket ".concat(this._url," connected")),this.onconnect()}},{key:"_onClose",value:function(n){var a=n.wasClean,o=n.code,t=n.reason;Ot.debug("WebSocket ".concat(this._url," closed")),a===!1&&Ot.debug("WebSocket abrupt disconnection"),this.ondisconnect(!a,o,t)}},{key:"_onMessage",value:function(n){var a=n.data;Ot.debug("received WebSocket message"),this.ondata(a)}},{key:"_onError",value:function(n){Ot.warn("WebSocket ".concat(this._url," error: "),n)}},{key:"via_transport",get:function(){return this._via_transport},set:function(n){this._via_transport=n.toUpperCase()}},{key:"sip_uri",get:function(){return this._sip_uri}},{key:"url",get:function(){return this._url}}]),c}(),Su=Ha,Dm=lt,Nm=Ws,Um=bt(),xm=Em,Pm=Ks(),km=Ou(),Mm=os(),Lm=Om,$m=gr("JsSIP");$m("version %s",Su.version);var Qc={C:Dm,Exceptions:Nm,Utils:Um,UA:xm,URI:Pm,NameAddrHeader:km,WebSocketInterface:Lm,Grammar:Mm,debug:gr,get name(){return Su.title},get version(){return Su.version}};const or=gr,ur="JsSIP";var ut=class{constructor(s){s?(this._debug=or.default(`${ur}:${s}`),this._warn=or.default(`${ur}:WARN:${s}`),this._error=or.default(`${ur}:ERROR:${s}`)):(this._debug=or.default(ur),this._warn=or.default(`${ur}:WARN`),this._error=or.default(`${ur}:ERROR`)),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}get debug(){return this._debug}get warn(){return this._warn}get error(){return this._error}};const Ga=ze(ut),Zc=Ha;var De={USER_AGENT:`${Zc.title} ${Zc.version}`,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",MISSING_SDP:"Missing SDP",AUTHENTICATION_ERROR:"Authentication Error",BYE:"Terminated",WEBRTC_ERROR:"WebRTC Error",CANCELED:"Canceled",NO_ANSWER:"No Answer",EXPIRES:"Expires",NO_ACK:"No ACK",DIALOG_ERROR:"Dialog Error",USER_DENIED_MEDIA_ACCESS:"User Denied Media Access",BAD_MEDIA_DESCRIPTION:"Bad Media Description",RTP_TIMEOUT:"RTP Timeout"},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,424],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",REFER:"REFER",UPDATE:"UPDATE",SUBSCRIBE:"SUBSCRIBE",DTMF_TRANSPORT:{INFO:"INFO",RFC2833:"RFC2833"},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",424:"Bad Location Information",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:"JsSIP Internal 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"},ALLOWED_METHODS:"INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY",ACCEPTED_BODY_TYPES:"application/sdp, application/dtmf-relay",MAX_FORWARDS:69,SESSION_EXPIRES:90,MIN_SESSION_EXPIRES:60,CONNECTION_RECOVERY_MAX_INTERVAL:30,CONNECTION_RECOVERY_MIN_INTERVAL:2};const L=ze(De);var et={},Po,ef;function $u(){if(ef)return Po;ef=1;const c=ys(),s=Qt();return Po=class uh{static parse(a){if(a=s.parse(a,"Name_Addr_Header"),a!==-1)return a}constructor(a,o,t){if(!a||!(a instanceof c))throw new TypeError('missing or invalid "uri" parameter');this._uri=a,this._parameters={},this.display_name=o;for(const r in t)Object.prototype.hasOwnProperty.call(t,r)&&this.setParam(r,t[r])}get uri(){return this._uri}get display_name(){return this._display_name}set display_name(a){this._display_name=a===0?"0":a}setParam(a,o){a&&(this._parameters[a.toLowerCase()]=typeof o>"u"||o===null?null:o.toString())}getParam(a){if(a)return this._parameters[a.toLowerCase()]}hasParam(a){if(a)return this._parameters.hasOwnProperty(a.toLowerCase())&&!0||!1}deleteParam(a){if(a=a.toLowerCase(),this._parameters.hasOwnProperty(a)){const o=this._parameters[a];return delete this._parameters[a],o}}clearParams(){this._parameters={}}clone(){return new uh(this._uri.clone(),this._display_name,JSON.parse(JSON.stringify(this._parameters)))}_quote(a){return a.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}toString(){let a=this._display_name?`"${this._quote(this._display_name)}" `:"";a+=`<${this._uri.toString()}>`;for(const o in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,o)&&(a+=`;${o}`,this._parameters[o]!==null&&(a+=`=${this._parameters[o]}`));return a}},Po}var ko,tf;function Qt(){return tf||(tf=1,ko=function(){function c(n){return'"'+n.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g,escape)+'"'}var s={parse:function(n,a){var o={CRLF:d,DIGIT:g,ALPHA:T,HEXDIG:E,WSP:y,OCTET:A,DQUOTE:C,SP:I,HTAB:H,alphanum:$,reserved:oe,unreserved:N,mark:j,escaped:Se,LWS:ve,SWS:k,HCOLON:D,TEXT_UTF8_TRIM:B,TEXT_UTF8char:q,UTF8_NONASCII:J,UTF8_CONT:F,LHEX:X,token:U,token_nodot:x,separators:se,word:tt,STAR:ee,SLASH:W,EQUAL:G,LPAREN:re,RPAREN:ge,RAQUOT:be,LAQUOT:Pe,COMMA:Ce,SEMI:le,COLON:ye,LDQUOT:st,RDQUOT:at,comment:Ee,ctext:Ae,quoted_string:Ie,quoted_string_clean:Oe,qdtext:pe,quoted_pair:ue,SIP_URI_noparams:de,SIP_URI:we,uri_scheme:Ne,uri_scheme_sips:Qe,uri_scheme_sip:Le,userinfo:Mt,user:_t,user_unreserved:wn,password:On,hostport:Ys,host:Zt,hostname:us,domainlabel:Js,toplabel:Dn,IPv6reference:Nn,IPv6address:zs,h16:me,ls32:ae,IPv4address:ot,dec_octet:Gt,port:Cs,uri_parameters:Er,uri_parameter:Un,transport_param:xn,user_param:Sr,method_param:yr,ttl_param:Ar,maddr_param:Cr,lr_param:Rr,other_param:Ir,pname:br,pvalue:wr,paramchar:Rs,param_unreserved:Is,headers:Or,header:Xs,hname:Qs,hvalue:Dr,hnv_unreserved:bs,Request_Response:Zs,Request_Line:ml,Request_URI:Nr,absoluteURI:Pn,hier_part:kn,net_path:Ur,abs_path:en,opaque_part:tn,uric:ws,uric_no_slash:Os,path_segments:xr,segment:sn,param:Ds,pchar:cs,scheme:Ns,authority:Pr,srvr:kr,reg_name:Mr,query:Lr,SIP_Version:Mn,INVITEm:Ln,ACKm:$r,OPTIONSm:Hr,BYEm:Fr,CANCELm:jr,REGISTERm:Vr,SUBSCRIBEm:qr,NOTIFYm:Br,REFERm:Gr,Method:nn,Status_Line:rn,Status_Code:Wr,extension_code:Kr,Reason_Phrase:Yr,Allow_Events:gl,Call_ID:Ya,Contact:Ja,contact_param:$n,name_addr:Lt,display_name:$t,contact_params:Us,c_p_q:Hn,c_p_expires:Jr,delta_seconds:es,qvalue:ts,generic_param:Ge,gen_value:We,Content_Disposition:Tl,disp_type:vl,disp_param:Fn,handling_param:jn,Content_Encoding:El,Content_Length:za,Content_Type:Xa,media_type:Sl,m_type:zr,discrete_type:Xr,composite_type:Qr,extension_token:ln,x_token:an,m_subtype:Zr,m_parameter:Vn,m_value:qn,CSeq:yl,CSeq_value:Al,Expires:Cl,Event:Qa,event_type:on,From:un,from_param:ei,tag_param:cn,Max_Forwards:ti,Min_Expires:Za,Name_Addr_Header:eo,Proxy_Authenticate:to,challenge:si,other_challenge:Bn,auth_param:xs,digest_cln:ss,realm:fn,realm_value:ni,domain:ri,URI:hn,nonce:_n,nonce_value:ii,opaque:li,stale:ai,algorithm:oi,qop_options:ui,qop_value:dn,Proxy_Require:Gn,Record_Route:so,rec_route:Wn,Reason:Kn,reason_param:ci,reason_cause:Yn,Require:Rl,Route:no,route_param:Jn,Subscription_State:zn,substate_value:Il,subexp_params:Xn,event_reason_value:Qn,Subject:bl,Supported:ro,To:io,to_param:fi,Via:hi,via_param:Zn,via_params:Ps,via_ttl:er,via_maddr:_i,via_received:di,via_branch:pi,response_port:mi,rport:gi,sent_protocol:Ti,protocol_name:vi,transport:Ei,sent_by:Si,via_host:yi,via_port:Ai,ttl:tr,WWW_Authenticate:Ci,Session_Expires:lo,s_e_expires:wl,s_e_params:sr,s_e_refresher:nr,extension_header:Ol,header_value:Dl,message_body:Nl,uuid_URI:ao,uuid:Ul,hex4:Ht,hex8:Ft,hex12:Ri,Refer_To:xl,Replaces:oo,call_id:Pl,replaces_param:rr,to_tag:ir,from_tag:Ii,early_flag:bi};if(a!==void 0){if(o[a]===void 0)throw new Error("Invalid rule name: "+c(a)+".")}else a="CRLF";var t=0,r=0,_=[];function h(i){t<r||(t>r&&(r=t,_=[]),_.push(i))}function d(){var i;return n.substr(t,2)===`\r
73
73
  `?(i=`\r
74
- `,t+=2):(i=null,_('"\\r\\n"')),i}function g(){var i;return/^[0-9]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[0-9]")),i}function T(){var i;return/^[a-zA-Z]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[a-zA-Z]")),i}function E(){var i;return/^[0-9a-fA-F]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[0-9a-fA-F]")),i}function y(){var i;return i=I(),i===null&&(i=H()),i}function A(){var i;return/^[\0-\xFF]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[\\0-\\xFF]")),i}function C(){var i;return/^["]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_('["]')),i}function I(){var i;return r.charCodeAt(t)===32?(i=" ",t++):(i=null,_('" "')),i}function H(){var i;return r.charCodeAt(t)===9?(i=" ",t++):(i=null,_('"\\t"')),i}function L(){var i;return/^[a-zA-Z0-9]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[a-zA-Z0-9]")),i}function oe(){var i;return r.charCodeAt(t)===59?(i=";",t++):(i=null,_('";"')),i===null&&(r.charCodeAt(t)===47?(i="/",t++):(i=null,_('"/"')),i===null&&(r.charCodeAt(t)===63?(i="?",t++):(i=null,_('"?"')),i===null&&(r.charCodeAt(t)===58?(i=":",t++):(i=null,_('":"')),i===null&&(r.charCodeAt(t)===64?(i="@",t++):(i=null,_('"@"')),i===null&&(r.charCodeAt(t)===38?(i="&",t++):(i=null,_('"&"')),i===null&&(r.charCodeAt(t)===61?(i="=",t++):(i=null,_('"="')),i===null&&(r.charCodeAt(t)===43?(i="+",t++):(i=null,_('"+"')),i===null&&(r.charCodeAt(t)===36?(i="$",t++):(i=null,_('"$"')),i===null&&(r.charCodeAt(t)===44?(i=",",t++):(i=null,_('","'))))))))))),i}function N(){var i;return i=L(),i===null&&(i=j()),i}function j(){var i;return r.charCodeAt(t)===45?(i="-",t++):(i=null,_('"-"')),i===null&&(r.charCodeAt(t)===95?(i="_",t++):(i=null,_('"_"')),i===null&&(r.charCodeAt(t)===46?(i=".",t++):(i=null,_('"."')),i===null&&(r.charCodeAt(t)===33?(i="!",t++):(i=null,_('"!"')),i===null&&(r.charCodeAt(t)===126?(i="~",t++):(i=null,_('"~"')),i===null&&(r.charCodeAt(t)===42?(i="*",t++):(i=null,_('"*"')),i===null&&(r.charCodeAt(t)===39?(i="'",t++):(i=null,_(`"'"`)),i===null&&(r.charCodeAt(t)===40?(i="(",t++):(i=null,_('"("')),i===null&&(r.charCodeAt(t)===41?(i=")",t++):(i=null,_('")"')))))))))),i}function Se(){var i,e,l,u,f;return u=t,f=t,r.charCodeAt(t)===37?(i="%",t++):(i=null,_('"%"')),i!==null?(e=E(),e!==null?(l=E(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){return m.join("")}(u,i)),i===null&&(t=u),i}function ve(){var i,e,l,u,f,p;for(u=t,f=t,p=t,i=[],e=y();e!==null;)i.push(e),e=y();if(i!==null?(e=d(),e!==null?i=[i,e]:(i=null,t=p)):(i=null,t=p),i=i!==null?i:"",i!==null){if(l=y(),l!==null)for(e=[];l!==null;)e.push(l),l=y();else e=null;e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i!==null&&(i=function(m){return" "}()),i===null&&(t=u),i}function M(){var i;return i=ve(),i=i!==null?i:"",i}function D(){var i,e,l,u,f;for(u=t,f=t,i=[],e=I(),e===null&&(e=H());e!==null;)i.push(e),e=I(),e===null&&(e=H());return i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=M(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return":"}()),i===null&&(t=u),i}function B(){var i,e,l,u,f,p,m;if(f=t,p=t,e=V(),e!==null)for(i=[];e!==null;)i.push(e),e=V();else i=null;if(i!==null){for(e=[],m=t,l=[],u=ve();u!==null;)l.push(u),u=ve();for(l!==null?(u=V(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;){for(e.push(l),m=t,l=[],u=ve();u!==null;)l.push(u),u=ve();l!==null?(u=V(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m)}e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){return r.substring(t,v)}(f)),i===null&&(t=f),i}function V(){var i;return/^[!-~]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[!-~]")),i===null&&(i=J()),i}function J(){var i;return/^[\x80-\uFFFF]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[\\x80-\\uFFFF]")),i}function F(){var i;return/^[\x80-\xBF]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[\\x80-\\xBF]")),i}function X(){var i;return i=g(),i===null&&(/^[a-f]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[a-f]"))),i}function U(){var i,e,l;if(l=t,e=L(),e===null&&(r.charCodeAt(t)===45?(e="-",t++):(e=null,_('"-"')),e===null&&(r.charCodeAt(t)===46?(e=".",t++):(e=null,_('"."')),e===null&&(r.charCodeAt(t)===33?(e="!",t++):(e=null,_('"!"')),e===null&&(r.charCodeAt(t)===37?(e="%",t++):(e=null,_('"%"')),e===null&&(r.charCodeAt(t)===42?(e="*",t++):(e=null,_('"*"')),e===null&&(r.charCodeAt(t)===95?(e="_",t++):(e=null,_('"_"')),e===null&&(r.charCodeAt(t)===43?(e="+",t++):(e=null,_('"+"')),e===null&&(r.charCodeAt(t)===96?(e="`",t++):(e=null,_('"`"')),e===null&&(r.charCodeAt(t)===39?(e="'",t++):(e=null,_(`"'"`)),e===null&&(r.charCodeAt(t)===126?(e="~",t++):(e=null,_('"~"')))))))))))),e!==null)for(i=[];e!==null;)i.push(e),e=L(),e===null&&(r.charCodeAt(t)===45?(e="-",t++):(e=null,_('"-"')),e===null&&(r.charCodeAt(t)===46?(e=".",t++):(e=null,_('"."')),e===null&&(r.charCodeAt(t)===33?(e="!",t++):(e=null,_('"!"')),e===null&&(r.charCodeAt(t)===37?(e="%",t++):(e=null,_('"%"')),e===null&&(r.charCodeAt(t)===42?(e="*",t++):(e=null,_('"*"')),e===null&&(r.charCodeAt(t)===95?(e="_",t++):(e=null,_('"_"')),e===null&&(r.charCodeAt(t)===43?(e="+",t++):(e=null,_('"+"')),e===null&&(r.charCodeAt(t)===96?(e="`",t++):(e=null,_('"`"')),e===null&&(r.charCodeAt(t)===39?(e="'",t++):(e=null,_(`"'"`)),e===null&&(r.charCodeAt(t)===126?(e="~",t++):(e=null,_('"~"'))))))))))));else i=null;return i!==null&&(i=function(u){return r.substring(t,u)}(l)),i===null&&(t=l),i}function P(){var i,e,l;if(l=t,e=L(),e===null&&(r.charCodeAt(t)===45?(e="-",t++):(e=null,_('"-"')),e===null&&(r.charCodeAt(t)===33?(e="!",t++):(e=null,_('"!"')),e===null&&(r.charCodeAt(t)===37?(e="%",t++):(e=null,_('"%"')),e===null&&(r.charCodeAt(t)===42?(e="*",t++):(e=null,_('"*"')),e===null&&(r.charCodeAt(t)===95?(e="_",t++):(e=null,_('"_"')),e===null&&(r.charCodeAt(t)===43?(e="+",t++):(e=null,_('"+"')),e===null&&(r.charCodeAt(t)===96?(e="`",t++):(e=null,_('"`"')),e===null&&(r.charCodeAt(t)===39?(e="'",t++):(e=null,_(`"'"`)),e===null&&(r.charCodeAt(t)===126?(e="~",t++):(e=null,_('"~"'))))))))))),e!==null)for(i=[];e!==null;)i.push(e),e=L(),e===null&&(r.charCodeAt(t)===45?(e="-",t++):(e=null,_('"-"')),e===null&&(r.charCodeAt(t)===33?(e="!",t++):(e=null,_('"!"')),e===null&&(r.charCodeAt(t)===37?(e="%",t++):(e=null,_('"%"')),e===null&&(r.charCodeAt(t)===42?(e="*",t++):(e=null,_('"*"')),e===null&&(r.charCodeAt(t)===95?(e="_",t++):(e=null,_('"_"')),e===null&&(r.charCodeAt(t)===43?(e="+",t++):(e=null,_('"+"')),e===null&&(r.charCodeAt(t)===96?(e="`",t++):(e=null,_('"`"')),e===null&&(r.charCodeAt(t)===39?(e="'",t++):(e=null,_(`"'"`)),e===null&&(r.charCodeAt(t)===126?(e="~",t++):(e=null,_('"~"')))))))))));else i=null;return i!==null&&(i=function(u){return r.substring(t,u)}(l)),i===null&&(t=l),i}function se(){var i;return r.charCodeAt(t)===40?(i="(",t++):(i=null,_('"("')),i===null&&(r.charCodeAt(t)===41?(i=")",t++):(i=null,_('")"')),i===null&&(r.charCodeAt(t)===60?(i="<",t++):(i=null,_('"<"')),i===null&&(r.charCodeAt(t)===62?(i=">",t++):(i=null,_('">"')),i===null&&(r.charCodeAt(t)===64?(i="@",t++):(i=null,_('"@"')),i===null&&(r.charCodeAt(t)===44?(i=",",t++):(i=null,_('","')),i===null&&(r.charCodeAt(t)===59?(i=";",t++):(i=null,_('";"')),i===null&&(r.charCodeAt(t)===58?(i=":",t++):(i=null,_('":"')),i===null&&(r.charCodeAt(t)===92?(i="\\",t++):(i=null,_('"\\\\"')),i===null&&(i=C(),i===null&&(r.charCodeAt(t)===47?(i="/",t++):(i=null,_('"/"')),i===null&&(r.charCodeAt(t)===91?(i="[",t++):(i=null,_('"["')),i===null&&(r.charCodeAt(t)===93?(i="]",t++):(i=null,_('"]"')),i===null&&(r.charCodeAt(t)===63?(i="?",t++):(i=null,_('"?"')),i===null&&(r.charCodeAt(t)===61?(i="=",t++):(i=null,_('"="')),i===null&&(r.charCodeAt(t)===123?(i="{",t++):(i=null,_('"{"')),i===null&&(r.charCodeAt(t)===125?(i="}",t++):(i=null,_('"}"')),i===null&&(i=I(),i===null&&(i=H())))))))))))))))))),i}function tt(){var i,e,l;if(l=t,e=L(),e===null&&(r.charCodeAt(t)===45?(e="-",t++):(e=null,_('"-"')),e===null&&(r.charCodeAt(t)===46?(e=".",t++):(e=null,_('"."')),e===null&&(r.charCodeAt(t)===33?(e="!",t++):(e=null,_('"!"')),e===null&&(r.charCodeAt(t)===37?(e="%",t++):(e=null,_('"%"')),e===null&&(r.charCodeAt(t)===42?(e="*",t++):(e=null,_('"*"')),e===null&&(r.charCodeAt(t)===95?(e="_",t++):(e=null,_('"_"')),e===null&&(r.charCodeAt(t)===43?(e="+",t++):(e=null,_('"+"')),e===null&&(r.charCodeAt(t)===96?(e="`",t++):(e=null,_('"`"')),e===null&&(r.charCodeAt(t)===39?(e="'",t++):(e=null,_(`"'"`)),e===null&&(r.charCodeAt(t)===126?(e="~",t++):(e=null,_('"~"')),e===null&&(r.charCodeAt(t)===40?(e="(",t++):(e=null,_('"("')),e===null&&(r.charCodeAt(t)===41?(e=")",t++):(e=null,_('")"')),e===null&&(r.charCodeAt(t)===60?(e="<",t++):(e=null,_('"<"')),e===null&&(r.charCodeAt(t)===62?(e=">",t++):(e=null,_('">"')),e===null&&(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e===null&&(r.charCodeAt(t)===92?(e="\\",t++):(e=null,_('"\\\\"')),e===null&&(e=C(),e===null&&(r.charCodeAt(t)===47?(e="/",t++):(e=null,_('"/"')),e===null&&(r.charCodeAt(t)===91?(e="[",t++):(e=null,_('"["')),e===null&&(r.charCodeAt(t)===93?(e="]",t++):(e=null,_('"]"')),e===null&&(r.charCodeAt(t)===63?(e="?",t++):(e=null,_('"?"')),e===null&&(r.charCodeAt(t)===123?(e="{",t++):(e=null,_('"{"')),e===null&&(r.charCodeAt(t)===125?(e="}",t++):(e=null,_('"}"'))))))))))))))))))))))))),e!==null)for(i=[];e!==null;)i.push(e),e=L(),e===null&&(r.charCodeAt(t)===45?(e="-",t++):(e=null,_('"-"')),e===null&&(r.charCodeAt(t)===46?(e=".",t++):(e=null,_('"."')),e===null&&(r.charCodeAt(t)===33?(e="!",t++):(e=null,_('"!"')),e===null&&(r.charCodeAt(t)===37?(e="%",t++):(e=null,_('"%"')),e===null&&(r.charCodeAt(t)===42?(e="*",t++):(e=null,_('"*"')),e===null&&(r.charCodeAt(t)===95?(e="_",t++):(e=null,_('"_"')),e===null&&(r.charCodeAt(t)===43?(e="+",t++):(e=null,_('"+"')),e===null&&(r.charCodeAt(t)===96?(e="`",t++):(e=null,_('"`"')),e===null&&(r.charCodeAt(t)===39?(e="'",t++):(e=null,_(`"'"`)),e===null&&(r.charCodeAt(t)===126?(e="~",t++):(e=null,_('"~"')),e===null&&(r.charCodeAt(t)===40?(e="(",t++):(e=null,_('"("')),e===null&&(r.charCodeAt(t)===41?(e=")",t++):(e=null,_('")"')),e===null&&(r.charCodeAt(t)===60?(e="<",t++):(e=null,_('"<"')),e===null&&(r.charCodeAt(t)===62?(e=">",t++):(e=null,_('">"')),e===null&&(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e===null&&(r.charCodeAt(t)===92?(e="\\",t++):(e=null,_('"\\\\"')),e===null&&(e=C(),e===null&&(r.charCodeAt(t)===47?(e="/",t++):(e=null,_('"/"')),e===null&&(r.charCodeAt(t)===91?(e="[",t++):(e=null,_('"["')),e===null&&(r.charCodeAt(t)===93?(e="]",t++):(e=null,_('"]"')),e===null&&(r.charCodeAt(t)===63?(e="?",t++):(e=null,_('"?"')),e===null&&(r.charCodeAt(t)===123?(e="{",t++):(e=null,_('"{"')),e===null&&(r.charCodeAt(t)===125?(e="}",t++):(e=null,_('"}"')))))))))))))))))))))))));else i=null;return i!==null&&(i=function(u){return r.substring(t,u)}(l)),i===null&&(t=l),i}function ee(){var i,e,l,u,f;return u=t,f=t,i=M(),i!==null?(r.charCodeAt(t)===42?(e="*",t++):(e=null,_('"*"')),e!==null?(l=M(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return"*"}()),i===null&&(t=u),i}function W(){var i,e,l,u,f;return u=t,f=t,i=M(),i!==null?(r.charCodeAt(t)===47?(e="/",t++):(e=null,_('"/"')),e!==null?(l=M(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return"/"}()),i===null&&(t=u),i}function G(){var i,e,l,u,f;return u=t,f=t,i=M(),i!==null?(r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e!==null?(l=M(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return"="}()),i===null&&(t=u),i}function re(){var i,e,l,u,f;return u=t,f=t,i=M(),i!==null?(r.charCodeAt(t)===40?(e="(",t++):(e=null,_('"("')),e!==null?(l=M(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return"("}()),i===null&&(t=u),i}function ge(){var i,e,l,u,f;return u=t,f=t,i=M(),i!==null?(r.charCodeAt(t)===41?(e=")",t++):(e=null,_('")"')),e!==null?(l=M(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return")"}()),i===null&&(t=u),i}function be(){var i,e,l,u;return l=t,u=t,r.charCodeAt(t)===62?(i=">",t++):(i=null,_('">"')),i!==null?(e=M(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f){return">"}()),i===null&&(t=l),i}function xe(){var i,e,l,u;return l=t,u=t,i=M(),i!==null?(r.charCodeAt(t)===60?(e="<",t++):(e=null,_('"<"')),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f){return"<"}()),i===null&&(t=l),i}function Ce(){var i,e,l,u,f;return u=t,f=t,i=M(),i!==null?(r.charCodeAt(t)===44?(e=",",t++):(e=null,_('","')),e!==null?(l=M(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return","}()),i===null&&(t=u),i}function le(){var i,e,l,u,f;return u=t,f=t,i=M(),i!==null?(r.charCodeAt(t)===59?(e=";",t++):(e=null,_('";"')),e!==null?(l=M(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return";"}()),i===null&&(t=u),i}function ye(){var i,e,l,u,f;return u=t,f=t,i=M(),i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=M(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return":"}()),i===null&&(t=u),i}function st(){var i,e,l,u;return l=t,u=t,i=M(),i!==null?(e=C(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f){return'"'}()),i===null&&(t=l),i}function lt(){var i,e,l,u;return l=t,u=t,i=C(),i!==null?(e=M(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f){return'"'}()),i===null&&(t=l),i}function Ee(){var i,e,l,u;if(u=t,i=re(),i!==null){for(e=[],l=Ae(),l===null&&(l=ue(),l===null&&(l=Ee()));l!==null;)e.push(l),l=Ae(),l===null&&(l=ue(),l===null&&(l=Ee()));e!==null?(l=ge(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)}else i=null,t=u;return i}function Ae(){var i;return/^[!-']/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[!-']")),i===null&&(/^[*-[]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[*-[]")),i===null&&(/^[\]-~]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[\\]-~]")),i===null&&(i=J(),i===null&&(i=ve())))),i}function Ie(){var i,e,l,u,f,p;if(f=t,p=t,i=M(),i!==null)if(e=C(),e!==null){for(l=[],u=pe(),u===null&&(u=ue());u!==null;)l.push(u),u=pe(),u===null&&(u=ue());l!==null?(u=C(),u!==null?i=[i,e,l,u]:(i=null,t=p)):(i=null,t=p)}else i=null,t=p;else i=null,t=p;return i!==null&&(i=function(m){return r.substring(t,m)}(f)),i===null&&(t=f),i}function Oe(){var i,e,l,u,f,p;if(f=t,p=t,i=M(),i!==null)if(e=C(),e!==null){for(l=[],u=pe(),u===null&&(u=ue());u!==null;)l.push(u),u=pe(),u===null&&(u=ue());l!==null?(u=C(),u!==null?i=[i,e,l,u]:(i=null,t=p)):(i=null,t=p)}else i=null,t=p;else i=null,t=p;return i!==null&&(i=function(m){var v=r.substring(t,m).trim();return v.substring(1,v.length-1).replace(/\\([\x00-\x09\x0b-\x0c\x0e-\x7f])/g,"$1")}(f)),i===null&&(t=f),i}function pe(){var i;return i=ve(),i===null&&(r.charCodeAt(t)===33?(i="!",t++):(i=null,_('"!"')),i===null&&(/^[#-[]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[#-[]")),i===null&&(/^[\]-~]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[\\]-~]")),i===null&&(i=J())))),i}function ue(){var i,e,l;return l=t,r.charCodeAt(t)===92?(i="\\",t++):(i=null,_('"\\\\"')),i!==null?(/^[\0-\t]/.test(r.charAt(t))?(e=r.charAt(t),t++):(e=null,_("[\\0-\\t]")),e===null&&(/^[\x0B-\f]/.test(r.charAt(t))?(e=r.charAt(t),t++):(e=null,_("[\\x0B-\\f]")),e===null&&(/^[\x0E-]/.test(r.charAt(t))?(e=r.charAt(t),t++):(e=null,_("[\\x0E-]")))),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function de(){var i,e,l,u,f,p;return f=t,p=t,i=Ne(),i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=kt(),l=l!==null?l:"",l!==null?(u=Ws(),u!==null?i=[i,e,l,u]:(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p),i!==null&&(i=function(m){try{b.uri=new xl(b.scheme,b.user,b.host,b.port),delete b.scheme,delete b.user,delete b.host,delete b.host_type,delete b.port}catch{b=-1}}()),i===null&&(t=f),i}function we(){var i,e,l,u,f,p,m,v;return m=t,v=t,i=Ne(),i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=kt(),l=l!==null?l:"",l!==null?(u=Ws(),u!==null?(f=Tr(),f!==null?(p=br(),p=p!==null?p:"",p!==null?i=[i,e,l,u,f,p]:(i=null,t=v)):(i=null,t=v)):(i=null,t=v)):(i=null,t=v)):(i=null,t=v)):(i=null,t=v),i!==null&&(i=function(S){try{b.uri=new xl(b.scheme,b.user,b.host,b.port,b.uri_params,b.uri_headers),delete b.scheme,delete b.user,delete b.host,delete b.host_type,delete b.port,delete b.uri_params,a==="SIP_URI"&&(b=b.uri)}catch{b=-1}}()),i===null&&(t=m),i}function Ne(){var i;return i=Qe(),i===null&&(i=Le()),i}function Qe(){var i,e;return e=t,r.substr(t,4).toLowerCase()==="sips"?(i=r.substr(t,4),t+=4):(i=null,_('"sips"')),i!==null&&(i=function(l,u){b.scheme=u.toLowerCase()}(e,i)),i===null&&(t=e),i}function Le(){var i,e;return e=t,r.substr(t,3).toLowerCase()==="sip"?(i=r.substr(t,3),t+=3):(i=null,_('"sip"')),i!==null&&(i=function(l,u){b.scheme=u.toLowerCase()}(e,i)),i===null&&(t=e),i}function kt(){var i,e,l,u,f,p;return u=t,f=t,i=ht(),i!==null?(p=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=bn(),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p),e=e!==null?e:"",e!==null?(r.charCodeAt(t)===64?(l="@",t++):(l=null,_('"@"')),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m){b.user=decodeURIComponent(r.substring(t-1,m))}(u)),i===null&&(t=u),i}function ht(){var i,e;if(e=N(),e===null&&(e=Se(),e===null&&(e=In())),e!==null)for(i=[];e!==null;)i.push(e),e=N(),e===null&&(e=Se(),e===null&&(e=In()));else i=null;return i}function In(){var i;return r.charCodeAt(t)===38?(i="&",t++):(i=null,_('"&"')),i===null&&(r.charCodeAt(t)===61?(i="=",t++):(i=null,_('"="')),i===null&&(r.charCodeAt(t)===43?(i="+",t++):(i=null,_('"+"')),i===null&&(r.charCodeAt(t)===36?(i="$",t++):(i=null,_('"$"')),i===null&&(r.charCodeAt(t)===44?(i=",",t++):(i=null,_('","')),i===null&&(r.charCodeAt(t)===59?(i=";",t++):(i=null,_('";"')),i===null&&(r.charCodeAt(t)===63?(i="?",t++):(i=null,_('"?"')),i===null&&(r.charCodeAt(t)===47?(i="/",t++):(i=null,_('"/"'))))))))),i}function bn(){var i,e,l;for(l=t,i=[],e=N(),e===null&&(e=Se(),e===null&&(r.charCodeAt(t)===38?(e="&",t++):(e=null,_('"&"')),e===null&&(r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e===null&&(r.charCodeAt(t)===43?(e="+",t++):(e=null,_('"+"')),e===null&&(r.charCodeAt(t)===36?(e="$",t++):(e=null,_('"$"')),e===null&&(r.charCodeAt(t)===44?(e=",",t++):(e=null,_('","'))))))));e!==null;)i.push(e),e=N(),e===null&&(e=Se(),e===null&&(r.charCodeAt(t)===38?(e="&",t++):(e=null,_('"&"')),e===null&&(r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e===null&&(r.charCodeAt(t)===43?(e="+",t++):(e=null,_('"+"')),e===null&&(r.charCodeAt(t)===36?(e="$",t++):(e=null,_('"$"')),e===null&&(r.charCodeAt(t)===44?(e=",",t++):(e=null,_('","'))))))));return i!==null&&(i=function(u){b.password=r.substring(t,u)}(l)),i===null&&(t=l),i}function Ws(){var i,e,l,u,f;return u=t,i=Qt(),i!==null?(f=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=ys(),l!==null?e=[e,l]:(e=null,t=f)):(e=null,t=f),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i}function Qt(){var i,e;return e=t,i=as(),i===null&&(i=at(),i===null&&(i=On())),i!==null&&(i=function(l){return b.host=r.substring(t,l).toLowerCase(),b.host}(e)),i===null&&(t=e),i}function as(){var i,e,l,u,f,p;for(u=t,f=t,i=[],p=t,e=Ks(),e!==null?(r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p);e!==null;)i.push(e),p=t,e=Ks(),e!==null?(r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p);return i!==null?(e=wn(),e!==null?(r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l=l!==null?l:"",l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m){return b.host_type="domain",r.substring(t,m)}(u)),i===null&&(t=u),i}function Ks(){var i,e,l,u;if(u=t,i=L(),i!==null){for(e=[],l=L(),l===null&&(r.charCodeAt(t)===45?(l="-",t++):(l=null,_('"-"')),l===null&&(r.charCodeAt(t)===95?(l="_",t++):(l=null,_('"_"'))));l!==null;)e.push(l),l=L(),l===null&&(r.charCodeAt(t)===45?(l="-",t++):(l=null,_('"-"')),l===null&&(r.charCodeAt(t)===95?(l="_",t++):(l=null,_('"_"'))));e!==null?i=[i,e]:(i=null,t=u)}else i=null,t=u;return i}function wn(){var i,e,l,u;if(u=t,i=T(),i!==null){for(e=[],l=L(),l===null&&(r.charCodeAt(t)===45?(l="-",t++):(l=null,_('"-"')),l===null&&(r.charCodeAt(t)===95?(l="_",t++):(l=null,_('"_"'))));l!==null;)e.push(l),l=L(),l===null&&(r.charCodeAt(t)===45?(l="-",t++):(l=null,_('"-"')),l===null&&(r.charCodeAt(t)===95?(l="_",t++):(l=null,_('"_"'))));e!==null?i=[i,e]:(i=null,t=u)}else i=null,t=u;return i}function On(){var i,e,l,u,f;return u=t,f=t,r.charCodeAt(t)===91?(i="[",t++):(i=null,_('"["')),i!==null?(e=Ys(),e!==null?(r.charCodeAt(t)===93?(l="]",t++):(l=null,_('"]"')),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return b.host_type="IPv6",r.substring(t,p)}(u)),i===null&&(t=u),i}function Ys(){var i,e,l,u,f,p,m,v,S,O,ie,Ue,wt,Ps,k,R;return Ps=t,k=t,i=me(),i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?(r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?(r.charCodeAt(t)===58?(p=":",t++):(p=null,_('":"')),p!==null?(m=me(),m!==null?(r.charCodeAt(t)===58?(v=":",t++):(v=null,_('":"')),v!==null?(S=me(),S!==null?(r.charCodeAt(t)===58?(O=":",t++):(O=null,_('":"')),O!==null?(ie=me(),ie!==null?(r.charCodeAt(t)===58?(Ue=":",t++):(Ue=null,_('":"')),Ue!==null?(wt=ae(),wt!==null?i=[i,e,l,u,f,p,m,v,S,O,ie,Ue,wt]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k),i===null&&(k=t,r.substr(t,2)==="::"?(i="::",t+=2):(i=null,_('"::"')),i!==null?(e=me(),e!==null?(r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?(r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(p=me(),p!==null?(r.charCodeAt(t)===58?(m=":",t++):(m=null,_('":"')),m!==null?(v=me(),v!==null?(r.charCodeAt(t)===58?(S=":",t++):(S=null,_('":"')),S!==null?(O=me(),O!==null?(r.charCodeAt(t)===58?(ie=":",t++):(ie=null,_('":"')),ie!==null?(Ue=ae(),Ue!==null?i=[i,e,l,u,f,p,m,v,S,O,ie,Ue]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k),i===null&&(k=t,r.substr(t,2)==="::"?(i="::",t+=2):(i=null,_('"::"')),i!==null?(e=me(),e!==null?(r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?(r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(p=me(),p!==null?(r.charCodeAt(t)===58?(m=":",t++):(m=null,_('":"')),m!==null?(v=me(),v!==null?(r.charCodeAt(t)===58?(S=":",t++):(S=null,_('":"')),S!==null?(O=ae(),O!==null?i=[i,e,l,u,f,p,m,v,S,O]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k),i===null&&(k=t,r.substr(t,2)==="::"?(i="::",t+=2):(i=null,_('"::"')),i!==null?(e=me(),e!==null?(r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?(r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(p=me(),p!==null?(r.charCodeAt(t)===58?(m=":",t++):(m=null,_('":"')),m!==null?(v=ae(),v!==null?i=[i,e,l,u,f,p,m,v]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k),i===null&&(k=t,r.substr(t,2)==="::"?(i="::",t+=2):(i=null,_('"::"')),i!==null?(e=me(),e!==null?(r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?(r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(p=ae(),p!==null?i=[i,e,l,u,f,p]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k),i===null&&(k=t,r.substr(t,2)==="::"?(i="::",t+=2):(i=null,_('"::"')),i!==null?(e=me(),e!==null?(r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=ae(),u!==null?i=[i,e,l,u]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k),i===null&&(k=t,r.substr(t,2)==="::"?(i="::",t+=2):(i=null,_('"::"')),i!==null?(e=ae(),e!==null?i=[i,e]:(i=null,t=k)):(i=null,t=k),i===null&&(k=t,r.substr(t,2)==="::"?(i="::",t+=2):(i=null,_('"::"')),i!==null?(e=me(),e!==null?i=[i,e]:(i=null,t=k)):(i=null,t=k),i===null&&(k=t,i=me(),i!==null?(r.substr(t,2)==="::"?(e="::",t+=2):(e=null,_('"::"')),e!==null?(l=me(),l!==null?(r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?(r.charCodeAt(t)===58?(p=":",t++):(p=null,_('":"')),p!==null?(m=me(),m!==null?(r.charCodeAt(t)===58?(v=":",t++):(v=null,_('":"')),v!==null?(S=me(),S!==null?(r.charCodeAt(t)===58?(O=":",t++):(O=null,_('":"')),O!==null?(ie=ae(),ie!==null?i=[i,e,l,u,f,p,m,v,S,O,ie]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k),i===null&&(k=t,i=me(),i!==null?(R=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=R)):(e=null,t=R),e=e!==null?e:"",e!==null?(r.substr(t,2)==="::"?(l="::",t+=2):(l=null,_('"::"')),l!==null?(u=me(),u!==null?(r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(p=me(),p!==null?(r.charCodeAt(t)===58?(m=":",t++):(m=null,_('":"')),m!==null?(v=me(),v!==null?(r.charCodeAt(t)===58?(S=":",t++):(S=null,_('":"')),S!==null?(O=ae(),O!==null?i=[i,e,l,u,f,p,m,v,S,O]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k),i===null&&(k=t,i=me(),i!==null?(R=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=R)):(e=null,t=R),e=e!==null?e:"",e!==null?(R=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=R)):(l=null,t=R),l=l!==null?l:"",l!==null?(r.substr(t,2)==="::"?(u="::",t+=2):(u=null,_('"::"')),u!==null?(f=me(),f!==null?(r.charCodeAt(t)===58?(p=":",t++):(p=null,_('":"')),p!==null?(m=me(),m!==null?(r.charCodeAt(t)===58?(v=":",t++):(v=null,_('":"')),v!==null?(S=ae(),S!==null?i=[i,e,l,u,f,p,m,v,S]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k),i===null&&(k=t,i=me(),i!==null?(R=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=R)):(e=null,t=R),e=e!==null?e:"",e!==null?(R=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=R)):(l=null,t=R),l=l!==null?l:"",l!==null?(R=t,r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=R)):(u=null,t=R),u=u!==null?u:"",u!==null?(r.substr(t,2)==="::"?(f="::",t+=2):(f=null,_('"::"')),f!==null?(p=me(),p!==null?(r.charCodeAt(t)===58?(m=":",t++):(m=null,_('":"')),m!==null?(v=ae(),v!==null?i=[i,e,l,u,f,p,m,v]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k),i===null&&(k=t,i=me(),i!==null?(R=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=R)):(e=null,t=R),e=e!==null?e:"",e!==null?(R=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=R)):(l=null,t=R),l=l!==null?l:"",l!==null?(R=t,r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=R)):(u=null,t=R),u=u!==null?u:"",u!==null?(R=t,r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(p=me(),p!==null?f=[f,p]:(f=null,t=R)):(f=null,t=R),f=f!==null?f:"",f!==null?(r.substr(t,2)==="::"?(p="::",t+=2):(p=null,_('"::"')),p!==null?(m=ae(),m!==null?i=[i,e,l,u,f,p,m]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k),i===null&&(k=t,i=me(),i!==null?(R=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=R)):(e=null,t=R),e=e!==null?e:"",e!==null?(R=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=R)):(l=null,t=R),l=l!==null?l:"",l!==null?(R=t,r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=R)):(u=null,t=R),u=u!==null?u:"",u!==null?(R=t,r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(p=me(),p!==null?f=[f,p]:(f=null,t=R)):(f=null,t=R),f=f!==null?f:"",f!==null?(R=t,r.charCodeAt(t)===58?(p=":",t++):(p=null,_('":"')),p!==null?(m=me(),m!==null?p=[p,m]:(p=null,t=R)):(p=null,t=R),p=p!==null?p:"",p!==null?(r.substr(t,2)==="::"?(m="::",t+=2):(m=null,_('"::"')),m!==null?(v=me(),v!==null?i=[i,e,l,u,f,p,m,v]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k),i===null&&(k=t,i=me(),i!==null?(R=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=R)):(e=null,t=R),e=e!==null?e:"",e!==null?(R=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=R)):(l=null,t=R),l=l!==null?l:"",l!==null?(R=t,r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=R)):(u=null,t=R),u=u!==null?u:"",u!==null?(R=t,r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(p=me(),p!==null?f=[f,p]:(f=null,t=R)):(f=null,t=R),f=f!==null?f:"",f!==null?(R=t,r.charCodeAt(t)===58?(p=":",t++):(p=null,_('":"')),p!==null?(m=me(),m!==null?p=[p,m]:(p=null,t=R)):(p=null,t=R),p=p!==null?p:"",p!==null?(R=t,r.charCodeAt(t)===58?(m=":",t++):(m=null,_('":"')),m!==null?(v=me(),v!==null?m=[m,v]:(m=null,t=R)):(m=null,t=R),m=m!==null?m:"",m!==null?(r.substr(t,2)==="::"?(v="::",t+=2):(v=null,_('"::"')),v!==null?i=[i,e,l,u,f,p,m,v]:(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k)):(i=null,t=k))))))))))))))),i!==null&&(i=function(Te){return b.host_type="IPv6",r.substring(t,Te)}(Ps)),i===null&&(t=Ps),i}function me(){var i,e,l,u,f;return f=t,i=E(),i!==null?(e=E(),e=e!==null?e:"",e!==null?(l=E(),l=l!==null?l:"",l!==null?(u=E(),u=u!==null?u:"",u!==null?i=[i,e,l,u]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i}function ae(){var i,e,l,u;return u=t,i=me(),i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i===null&&(i=at()),i}function at(){var i,e,l,u,f,p,m,v,S;return v=t,S=t,i=Gt(),i!==null?(r.charCodeAt(t)===46?(e=".",t++):(e=null,_('"."')),e!==null?(l=Gt(),l!==null?(r.charCodeAt(t)===46?(u=".",t++):(u=null,_('"."')),u!==null?(f=Gt(),f!==null?(r.charCodeAt(t)===46?(p=".",t++):(p=null,_('"."')),p!==null?(m=Gt(),m!==null?i=[i,e,l,u,f,p,m]:(i=null,t=S)):(i=null,t=S)):(i=null,t=S)):(i=null,t=S)):(i=null,t=S)):(i=null,t=S)):(i=null,t=S),i!==null&&(i=function(O){return b.host_type="IPv4",r.substring(t,O)}(v)),i===null&&(t=v),i}function Gt(){var i,e,l,u;return u=t,r.substr(t,2)==="25"?(i="25",t+=2):(i=null,_('"25"')),i!==null?(/^[0-5]/.test(r.charAt(t))?(e=r.charAt(t),t++):(e=null,_("[0-5]")),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i===null&&(u=t,r.charCodeAt(t)===50?(i="2",t++):(i=null,_('"2"')),i!==null?(/^[0-4]/.test(r.charAt(t))?(e=r.charAt(t),t++):(e=null,_("[0-4]")),e!==null?(l=g(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i===null&&(u=t,r.charCodeAt(t)===49?(i="1",t++):(i=null,_('"1"')),i!==null?(e=g(),e!==null?(l=g(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i===null&&(u=t,/^[1-9]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[1-9]")),i!==null?(e=g(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i===null&&(i=g())))),i}function ys(){var i,e,l,u,f,p,m;return p=t,m=t,i=g(),i=i!==null?i:"",i!==null?(e=g(),e=e!==null?e:"",e!==null?(l=g(),l=l!==null?l:"",l!==null?(u=g(),u=u!==null?u:"",u!==null?(f=g(),f=f!==null?f:"",f!==null?i=[i,e,l,u,f]:(i=null,t=m)):(i=null,t=m)):(i=null,t=m)):(i=null,t=m)):(i=null,t=m),i!==null&&(i=function(v,S){return S=parseInt(S.join("")),b.port=S,S}(p,i)),i===null&&(t=p),i}function Tr(){var i,e,l,u;for(i=[],u=t,r.charCodeAt(t)===59?(e=";",t++):(e=null,_('";"')),e!==null?(l=Dn(),l!==null?e=[e,l]:(e=null,t=u)):(e=null,t=u);e!==null;)i.push(e),u=t,r.charCodeAt(t)===59?(e=";",t++):(e=null,_('";"')),e!==null?(l=Dn(),l!==null?e=[e,l]:(e=null,t=u)):(e=null,t=u);return i}function Dn(){var i;return i=Nn(),i===null&&(i=vr(),i===null&&(i=Er(),i===null&&(i=Sr(),i===null&&(i=yr(),i===null&&(i=Ar(),i===null&&(i=Cr())))))),i}function Nn(){var i,e,l,u;return l=t,u=t,r.substr(t,10).toLowerCase()==="transport="?(i=r.substr(t,10),t+=10):(i=null,_('"transport="')),i!==null?(r.substr(t,3).toLowerCase()==="udp"?(e=r.substr(t,3),t+=3):(e=null,_('"udp"')),e===null&&(r.substr(t,3).toLowerCase()==="tcp"?(e=r.substr(t,3),t+=3):(e=null,_('"tcp"')),e===null&&(r.substr(t,4).toLowerCase()==="sctp"?(e=r.substr(t,4),t+=4):(e=null,_('"sctp"')),e===null&&(r.substr(t,3).toLowerCase()==="tls"?(e=r.substr(t,3),t+=3):(e=null,_('"tls"')),e===null&&(e=U())))),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,p){b.uri_params||(b.uri_params={}),b.uri_params.transport=p.toLowerCase()}(l,i[1])),i===null&&(t=l),i}function vr(){var i,e,l,u;return l=t,u=t,r.substr(t,5).toLowerCase()==="user="?(i=r.substr(t,5),t+=5):(i=null,_('"user="')),i!==null?(r.substr(t,5).toLowerCase()==="phone"?(e=r.substr(t,5),t+=5):(e=null,_('"phone"')),e===null&&(r.substr(t,2).toLowerCase()==="ip"?(e=r.substr(t,2),t+=2):(e=null,_('"ip"')),e===null&&(e=U())),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,p){b.uri_params||(b.uri_params={}),b.uri_params.user=p.toLowerCase()}(l,i[1])),i===null&&(t=l),i}function Er(){var i,e,l,u;return l=t,u=t,r.substr(t,7).toLowerCase()==="method="?(i=r.substr(t,7),t+=7):(i=null,_('"method="')),i!==null?(e=tn(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,p){b.uri_params||(b.uri_params={}),b.uri_params.method=p}(l,i[1])),i===null&&(t=l),i}function Sr(){var i,e,l,u;return l=t,u=t,r.substr(t,4).toLowerCase()==="ttl="?(i=r.substr(t,4),t+=4):(i=null,_('"ttl="')),i!==null?(e=Zn(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,p){b.params||(b.params={}),b.params.ttl=p}(l,i[1])),i===null&&(t=l),i}function yr(){var i,e,l,u;return l=t,u=t,r.substr(t,6).toLowerCase()==="maddr="?(i=r.substr(t,6),t+=6):(i=null,_('"maddr="')),i!==null?(e=Qt(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,p){b.uri_params||(b.uri_params={}),b.uri_params.maddr=p}(l,i[1])),i===null&&(t=l),i}function Ar(){var i,e,l,u,f,p;return u=t,f=t,r.substr(t,2).toLowerCase()==="lr"?(i=r.substr(t,2),t+=2):(i=null,_('"lr"')),i!==null?(p=t,r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e!==null?(l=U(),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m){b.uri_params||(b.uri_params={}),b.uri_params.lr=void 0}()),i===null&&(t=u),i}function Cr(){var i,e,l,u,f,p;return u=t,f=t,i=Rr(),i!==null?(p=t,r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e!==null?(l=Ir(),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m,v,S){b.uri_params||(b.uri_params={}),typeof S>"u"?S=void 0:S=S[1],b.uri_params[v.toLowerCase()]=S}(u,i[0],i[1])),i===null&&(t=u),i}function Rr(){var i,e,l;if(l=t,e=As(),e!==null)for(i=[];e!==null;)i.push(e),e=As();else i=null;return i!==null&&(i=function(u,f){return f.join("")}(l,i)),i===null&&(t=l),i}function Ir(){var i,e,l;if(l=t,e=As(),e!==null)for(i=[];e!==null;)i.push(e),e=As();else i=null;return i!==null&&(i=function(u,f){return f.join("")}(l,i)),i===null&&(t=l),i}function As(){var i;return i=Cs(),i===null&&(i=N(),i===null&&(i=Se())),i}function Cs(){var i;return r.charCodeAt(t)===91?(i="[",t++):(i=null,_('"["')),i===null&&(r.charCodeAt(t)===93?(i="]",t++):(i=null,_('"]"')),i===null&&(r.charCodeAt(t)===47?(i="/",t++):(i=null,_('"/"')),i===null&&(r.charCodeAt(t)===58?(i=":",t++):(i=null,_('":"')),i===null&&(r.charCodeAt(t)===38?(i="&",t++):(i=null,_('"&"')),i===null&&(r.charCodeAt(t)===43?(i="+",t++):(i=null,_('"+"')),i===null&&(r.charCodeAt(t)===36?(i="$",t++):(i=null,_('"$"')))))))),i}function br(){var i,e,l,u,f,p,m;if(p=t,r.charCodeAt(t)===63?(i="?",t++):(i=null,_('"?"')),i!==null)if(e=Js(),e!==null){for(l=[],m=t,r.charCodeAt(t)===38?(u="&",t++):(u=null,_('"&"')),u!==null?(f=Js(),f!==null?u=[u,f]:(u=null,t=m)):(u=null,t=m);u!==null;)l.push(u),m=t,r.charCodeAt(t)===38?(u="&",t++):(u=null,_('"&"')),u!==null?(f=Js(),f!==null?u=[u,f]:(u=null,t=m)):(u=null,t=m);l!==null?i=[i,e,l]:(i=null,t=p)}else i=null,t=p;else i=null,t=p;return i}function Js(){var i,e,l,u,f;return u=t,f=t,i=zs(),i!==null?(r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e!==null?(l=wr(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m,v){m=m.join("").toLowerCase(),v=v.join(""),b.uri_headers||(b.uri_headers={}),b.uri_headers[m]?b.uri_headers[m].push(v):b.uri_headers[m]=[v]}(u,i[0],i[2])),i===null&&(t=u),i}function zs(){var i,e;if(e=Rs(),e===null&&(e=N(),e===null&&(e=Se())),e!==null)for(i=[];e!==null;)i.push(e),e=Rs(),e===null&&(e=N(),e===null&&(e=Se()));else i=null;return i}function wr(){var i,e;for(i=[],e=Rs(),e===null&&(e=N(),e===null&&(e=Se()));e!==null;)i.push(e),e=Rs(),e===null&&(e=N(),e===null&&(e=Se()));return i}function Rs(){var i;return r.charCodeAt(t)===91?(i="[",t++):(i=null,_('"["')),i===null&&(r.charCodeAt(t)===93?(i="]",t++):(i=null,_('"]"')),i===null&&(r.charCodeAt(t)===47?(i="/",t++):(i=null,_('"/"')),i===null&&(r.charCodeAt(t)===63?(i="?",t++):(i=null,_('"?"')),i===null&&(r.charCodeAt(t)===58?(i=":",t++):(i=null,_('":"')),i===null&&(r.charCodeAt(t)===43?(i="+",t++):(i=null,_('"+"')),i===null&&(r.charCodeAt(t)===36?(i="$",t++):(i=null,_('"$"')))))))),i}function Xs(){var i;return i=sn(),i===null&&(i=dl()),i}function dl(){var i,e,l,u,f,p;return p=t,i=tn(),i!==null?(e=I(),e!==null?(l=Or(),l!==null?(u=I(),u!==null?(f=xn(),f!==null?i=[i,e,l,u,f]:(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p),i}function Or(){var i;return i=we(),i===null&&(i=Un()),i}function Un(){var i,e,l,u;return u=t,i=Os(),i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=Pn(),l===null&&(l=Zs()),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Pn(){var i,e,l,u,f;return u=t,i=Dr(),i===null&&(i=Qs()),i!==null?(f=t,r.charCodeAt(t)===63?(e="?",t++):(e=null,_('"?"')),e!==null?(l=Mr(),l!==null?e=[e,l]:(e=null,t=f)):(e=null,t=f),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i}function Dr(){var i,e,l,u;return u=t,r.substr(t,2)==="//"?(i="//",t+=2):(i=null,_('"//"')),i!==null?(e=Ur(),e!==null?(l=Qs(),l=l!==null?l:"",l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Qs(){var i,e,l;return l=t,r.charCodeAt(t)===47?(i="/",t++):(i=null,_('"/"')),i!==null?(e=Nr(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function Zs(){var i,e,l,u;if(u=t,i=bs(),i!==null){for(e=[],l=Is();l!==null;)e.push(l),l=Is();e!==null?i=[i,e]:(i=null,t=u)}else i=null,t=u;return i}function Is(){var i;return i=oe(),i===null&&(i=N(),i===null&&(i=Se())),i}function bs(){var i;return i=N(),i===null&&(i=Se(),i===null&&(r.charCodeAt(t)===59?(i=";",t++):(i=null,_('";"')),i===null&&(r.charCodeAt(t)===63?(i="?",t++):(i=null,_('"?"')),i===null&&(r.charCodeAt(t)===58?(i=":",t++):(i=null,_('":"')),i===null&&(r.charCodeAt(t)===64?(i="@",t++):(i=null,_('"@"')),i===null&&(r.charCodeAt(t)===38?(i="&",t++):(i=null,_('"&"')),i===null&&(r.charCodeAt(t)===61?(i="=",t++):(i=null,_('"="')),i===null&&(r.charCodeAt(t)===43?(i="+",t++):(i=null,_('"+"')),i===null&&(r.charCodeAt(t)===36?(i="$",t++):(i=null,_('"$"')),i===null&&(r.charCodeAt(t)===44?(i=",",t++):(i=null,_('","')))))))))))),i}function Nr(){var i,e,l,u,f,p;if(f=t,i=en(),i!==null){for(e=[],p=t,r.charCodeAt(t)===47?(l="/",t++):(l=null,_('"/"')),l!==null?(u=en(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,r.charCodeAt(t)===47?(l="/",t++):(l=null,_('"/"')),l!==null?(u=en(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function en(){var i,e,l,u,f,p;for(f=t,i=[],e=os();e!==null;)i.push(e),e=os();if(i!==null){for(e=[],p=t,r.charCodeAt(t)===59?(l=";",t++):(l=null,_('";"')),l!==null?(u=ws(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,r.charCodeAt(t)===59?(l=";",t++):(l=null,_('";"')),l!==null?(u=ws(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function ws(){var i,e;for(i=[],e=os();e!==null;)i.push(e),e=os();return i}function os(){var i;return i=N(),i===null&&(i=Se(),i===null&&(r.charCodeAt(t)===58?(i=":",t++):(i=null,_('":"')),i===null&&(r.charCodeAt(t)===64?(i="@",t++):(i=null,_('"@"')),i===null&&(r.charCodeAt(t)===38?(i="&",t++):(i=null,_('"&"')),i===null&&(r.charCodeAt(t)===61?(i="=",t++):(i=null,_('"="')),i===null&&(r.charCodeAt(t)===43?(i="+",t++):(i=null,_('"+"')),i===null&&(r.charCodeAt(t)===36?(i="$",t++):(i=null,_('"$"')),i===null&&(r.charCodeAt(t)===44?(i=",",t++):(i=null,_('","')))))))))),i}function Os(){var i,e,l,u,f;if(u=t,f=t,i=T(),i!==null){for(e=[],l=T(),l===null&&(l=g(),l===null&&(r.charCodeAt(t)===43?(l="+",t++):(l=null,_('"+"')),l===null&&(r.charCodeAt(t)===45?(l="-",t++):(l=null,_('"-"')),l===null&&(r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."'))))));l!==null;)e.push(l),l=T(),l===null&&(l=g(),l===null&&(r.charCodeAt(t)===43?(l="+",t++):(l=null,_('"+"')),l===null&&(r.charCodeAt(t)===45?(l="-",t++):(l=null,_('"-"')),l===null&&(r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."'))))));e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i!==null&&(i=function(p){b.scheme=r.substring(t,p)}(u)),i===null&&(t=u),i}function Ur(){var i;return i=Pr(),i===null&&(i=xr()),i}function Pr(){var i,e,l,u;return l=t,u=t,i=kt(),i!==null?(r.charCodeAt(t)===64?(e="@",t++):(e=null,_('"@"')),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i=i!==null?i:"",i!==null?(e=Ws(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i=i!==null?i:"",i}function xr(){var i,e;if(e=N(),e===null&&(e=Se(),e===null&&(r.charCodeAt(t)===36?(e="$",t++):(e=null,_('"$"')),e===null&&(r.charCodeAt(t)===44?(e=",",t++):(e=null,_('","')),e===null&&(r.charCodeAt(t)===59?(e=";",t++):(e=null,_('";"')),e===null&&(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e===null&&(r.charCodeAt(t)===64?(e="@",t++):(e=null,_('"@"')),e===null&&(r.charCodeAt(t)===38?(e="&",t++):(e=null,_('"&"')),e===null&&(r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e===null&&(r.charCodeAt(t)===43?(e="+",t++):(e=null,_('"+"'))))))))))),e!==null)for(i=[];e!==null;)i.push(e),e=N(),e===null&&(e=Se(),e===null&&(r.charCodeAt(t)===36?(e="$",t++):(e=null,_('"$"')),e===null&&(r.charCodeAt(t)===44?(e=",",t++):(e=null,_('","')),e===null&&(r.charCodeAt(t)===59?(e=";",t++):(e=null,_('";"')),e===null&&(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e===null&&(r.charCodeAt(t)===64?(e="@",t++):(e=null,_('"@"')),e===null&&(r.charCodeAt(t)===38?(e="&",t++):(e=null,_('"&"')),e===null&&(r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e===null&&(r.charCodeAt(t)===43?(e="+",t++):(e=null,_('"+"')))))))))));else i=null;return i}function Mr(){var i,e;for(i=[],e=Is();e!==null;)i.push(e),e=Is();return i}function xn(){var i,e,l,u,f,p,m,v;if(m=t,v=t,r.substr(t,3).toLowerCase()==="sip"?(i=r.substr(t,3),t+=3):(i=null,_('"SIP"')),i!==null)if(r.charCodeAt(t)===47?(e="/",t++):(e=null,_('"/"')),e!==null){if(u=g(),u!==null)for(l=[];u!==null;)l.push(u),u=g();else l=null;if(l!==null)if(r.charCodeAt(t)===46?(u=".",t++):(u=null,_('"."')),u!==null){if(p=g(),p!==null)for(f=[];p!==null;)f.push(p),p=g();else f=null;f!==null?i=[i,e,l,u,f]:(i=null,t=v)}else i=null,t=v;else i=null,t=v}else i=null,t=v;else i=null,t=v;return i!==null&&(i=function(S){b.sip_version=r.substring(t,S)}(m)),i===null&&(t=m),i}function Mn(){var i;return r.substr(t,6)==="INVITE"?(i="INVITE",t+=6):(i=null,_('"INVITE"')),i}function kr(){var i;return r.substr(t,3)==="ACK"?(i="ACK",t+=3):(i=null,_('"ACK"')),i}function Lr(){var i;return r.substr(t,7)==="OPTIONS"?(i="OPTIONS",t+=7):(i=null,_('"OPTIONS"')),i}function $r(){var i;return r.substr(t,3)==="BYE"?(i="BYE",t+=3):(i=null,_('"BYE"')),i}function Hr(){var i;return r.substr(t,6)==="CANCEL"?(i="CANCEL",t+=6):(i=null,_('"CANCEL"')),i}function Fr(){var i;return r.substr(t,8)==="REGISTER"?(i="REGISTER",t+=8):(i=null,_('"REGISTER"')),i}function jr(){var i;return r.substr(t,9)==="SUBSCRIBE"?(i="SUBSCRIBE",t+=9):(i=null,_('"SUBSCRIBE"')),i}function qr(){var i;return r.substr(t,6)==="NOTIFY"?(i="NOTIFY",t+=6):(i=null,_('"NOTIFY"')),i}function Vr(){var i;return r.substr(t,5)==="REFER"?(i="REFER",t+=5):(i=null,_('"REFER"')),i}function tn(){var i,e;return e=t,i=Mn(),i===null&&(i=kr(),i===null&&(i=Lr(),i===null&&(i=$r(),i===null&&(i=Hr(),i===null&&(i=Fr(),i===null&&(i=jr(),i===null&&(i=qr(),i===null&&(i=Vr(),i===null&&(i=U()))))))))),i!==null&&(i=function(l){return b.method=r.substring(t,l),b.method}(e)),i===null&&(t=e),i}function sn(){var i,e,l,u,f,p;return p=t,i=xn(),i!==null?(e=I(),e!==null?(l=Br(),l!==null?(u=I(),u!==null?(f=Wr(),f!==null?i=[i,e,l,u,f]:(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p),i}function Br(){var i,e;return e=t,i=Gr(),i!==null&&(i=function(l,u){b.status_code=parseInt(u.join(""))}(e,i)),i===null&&(t=e),i}function Gr(){var i,e,l,u;return u=t,i=g(),i!==null?(e=g(),e!==null?(l=g(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Wr(){var i,e,l;for(l=t,i=[],e=oe(),e===null&&(e=N(),e===null&&(e=Se(),e===null&&(e=J(),e===null&&(e=F(),e===null&&(e=I(),e===null&&(e=H()))))));e!==null;)i.push(e),e=oe(),e===null&&(e=N(),e===null&&(e=Se(),e===null&&(e=J(),e===null&&(e=F(),e===null&&(e=I(),e===null&&(e=H()))))));return i!==null&&(i=function(u){b.reason_phrase=r.substring(t,u)}(l)),i===null&&(t=l),i}function pl(){var i,e,l,u,f,p;if(f=t,i=ln(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=ln(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=ln(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Wa(){var i,e,l,u,f,p;return u=t,f=t,i=tt(),i!==null?(p=t,r.charCodeAt(t)===64?(e="@",t++):(e=null,_('"@"')),e!==null?(l=tt(),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m){b=r.substring(t,m)}(u)),i===null&&(t=u),i}function Ka(){var i,e,l,u,f,p,m;if(f=t,i=ee(),i===null)if(p=t,i=kn(),i!==null){for(e=[],m=t,l=Ce(),l!==null?(u=kn(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=Ce(),l!==null?(u=kn(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){var S,O;for(O=b.multi_header.length,S=0;S<O;S++)if(b.multi_header[S].parsed===null){b=null;break}b!==null?b=b.multi_header:b=-1}()),i===null&&(t=f),i}function kn(){var i,e,l,u,f,p,m;if(f=t,p=t,i=de(),i===null&&(i=Lt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=Ds(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=Ds(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){var S;b.multi_header||(b.multi_header=[]);try{S=new us(b.uri,b.display_name,b.params),delete b.uri,delete b.display_name,delete b.params}catch{S=null}b.multi_header.push({possition:t,offset:v,parsed:S})}(f)),i===null&&(t=f),i}function Lt(){var i,e,l,u,f;return f=t,i=$t(),i=i!==null?i:"",i!==null?(e=xe(),e!==null?(l=we(),l!==null?(u=be(),u!==null?i=[i,e,l,u]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i}function $t(){var i,e,l,u,f,p,m;if(f=t,p=t,i=U(),i!==null){for(e=[],m=t,l=ve(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=ve(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i===null&&(i=Oe()),i!==null&&(i=function(v,S){typeof S=="string"?b.display_name=S:b.display_name=S[1].reduce(function(O,ie){return O+ie[0]+ie[1]},S[0])}(f,i)),i===null&&(t=f),i}function Ds(){var i;return i=Ln(),i===null&&(i=Kr(),i===null&&(i=Ge())),i}function Ln(){var i,e,l,u,f;return u=t,f=t,r.substr(t,1).toLowerCase()==="q"?(i=r.substr(t,1),t++):(i=null,_('"q"')),i!==null?(e=G(),e!==null?(l=es(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.params||(b.params={}),b.params.q=m}(u,i[2])),i===null&&(t=u),i}function Kr(){var i,e,l,u,f;return u=t,f=t,r.substr(t,7).toLowerCase()==="expires"?(i=r.substr(t,7),t+=7):(i=null,_('"expires"')),i!==null?(e=G(),e!==null?(l=Zt(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.params||(b.params={}),b.params.expires=m}(u,i[2])),i===null&&(t=u),i}function Zt(){var i,e,l;if(l=t,e=g(),e!==null)for(i=[];e!==null;)i.push(e),e=g();else i=null;return i!==null&&(i=function(u,f){return parseInt(f.join(""))}(l,i)),i===null&&(t=l),i}function es(){var i,e,l,u,f,p,m,v;return p=t,m=t,r.charCodeAt(t)===48?(i="0",t++):(i=null,_('"0"')),i!==null?(v=t,r.charCodeAt(t)===46?(e=".",t++):(e=null,_('"."')),e!==null?(l=g(),l=l!==null?l:"",l!==null?(u=g(),u=u!==null?u:"",u!==null?(f=g(),f=f!==null?f:"",f!==null?e=[e,l,u,f]:(e=null,t=v)):(e=null,t=v)):(e=null,t=v)):(e=null,t=v),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=m)):(i=null,t=m),i!==null&&(i=function(S){return parseFloat(r.substring(t,S))}(p)),i===null&&(t=p),i}function Ge(){var i,e,l,u,f,p;return u=t,f=t,i=U(),i!==null?(p=t,e=G(),e!==null?(l=We(),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m,v,S){b.params||(b.params={}),typeof S>"u"?S=void 0:S=S[1],b.params[v.toLowerCase()]=S}(u,i[0],i[1])),i===null&&(t=u),i}function We(){var i;return i=U(),i===null&&(i=Qt(),i===null&&(i=Ie())),i}function ml(){var i,e,l,u,f,p;if(f=t,i=gl(),i!==null){for(e=[],p=t,l=le(),l!==null?(u=$n(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=le(),l!==null?(u=$n(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function gl(){var i;return r.substr(t,6).toLowerCase()==="render"?(i=r.substr(t,6),t+=6):(i=null,_('"render"')),i===null&&(r.substr(t,7).toLowerCase()==="session"?(i=r.substr(t,7),t+=7):(i=null,_('"session"')),i===null&&(r.substr(t,4).toLowerCase()==="icon"?(i=r.substr(t,4),t+=4):(i=null,_('"icon"')),i===null&&(r.substr(t,5).toLowerCase()==="alert"?(i=r.substr(t,5),t+=5):(i=null,_('"alert"')),i===null&&(i=U())))),i}function $n(){var i;return i=Hn(),i===null&&(i=Ge()),i}function Hn(){var i,e,l,u;return u=t,r.substr(t,8).toLowerCase()==="handling"?(i=r.substr(t,8),t+=8):(i=null,_('"handling"')),i!==null?(e=G(),e!==null?(r.substr(t,8).toLowerCase()==="optional"?(l=r.substr(t,8),t+=8):(l=null,_('"optional"')),l===null&&(r.substr(t,8).toLowerCase()==="required"?(l=r.substr(t,8),t+=8):(l=null,_('"required"')),l===null&&(l=U())),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Tl(){var i,e,l,u,f,p;if(f=t,i=U(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Ya(){var i,e,l;if(l=t,e=g(),e!==null)for(i=[];e!==null;)i.push(e),e=g();else i=null;return i!==null&&(i=function(u,f){b=parseInt(f.join(""))}(l,i)),i===null&&(t=l),i}function Ja(){var i,e;return e=t,i=vl(),i!==null&&(i=function(l){b=r.substring(t,l)}(e)),i===null&&(t=e),i}function vl(){var i,e,l,u,f,p,m,v;if(m=t,i=Yr(),i!==null)if(e=W(),e!==null)if(l=Xr(),l!==null){for(u=[],v=t,f=le(),f!==null?(p=Fn(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=le(),f!==null?(p=Fn(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);u!==null?i=[i,e,l,u]:(i=null,t=m)}else i=null,t=m;else i=null,t=m;else i=null,t=m;return i}function Yr(){var i;return i=Jr(),i===null&&(i=zr()),i}function Jr(){var i;return r.substr(t,4).toLowerCase()==="text"?(i=r.substr(t,4),t+=4):(i=null,_('"text"')),i===null&&(r.substr(t,5).toLowerCase()==="image"?(i=r.substr(t,5),t+=5):(i=null,_('"image"')),i===null&&(r.substr(t,5).toLowerCase()==="audio"?(i=r.substr(t,5),t+=5):(i=null,_('"audio"')),i===null&&(r.substr(t,5).toLowerCase()==="video"?(i=r.substr(t,5),t+=5):(i=null,_('"video"')),i===null&&(r.substr(t,11).toLowerCase()==="application"?(i=r.substr(t,11),t+=11):(i=null,_('"application"')),i===null&&(i=nn()))))),i}function zr(){var i;return r.substr(t,7).toLowerCase()==="message"?(i=r.substr(t,7),t+=7):(i=null,_('"message"')),i===null&&(r.substr(t,9).toLowerCase()==="multipart"?(i=r.substr(t,9),t+=9):(i=null,_('"multipart"')),i===null&&(i=nn())),i}function nn(){var i;return i=U(),i===null&&(i=rn()),i}function rn(){var i,e,l;return l=t,r.substr(t,2).toLowerCase()==="x-"?(i=r.substr(t,2),t+=2):(i=null,_('"x-"')),i!==null?(e=U(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function Xr(){var i;return i=nn(),i===null&&(i=U()),i}function Fn(){var i,e,l,u;return u=t,i=U(),i!==null?(e=G(),e!==null?(l=jn(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function jn(){var i;return i=U(),i===null&&(i=Ie()),i}function El(){var i,e,l,u;return u=t,i=Sl(),i!==null?(e=ve(),e!==null?(l=tn(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Sl(){var i,e,l;if(l=t,e=g(),e!==null)for(i=[];e!==null;)i.push(e),e=g();else i=null;return i!==null&&(i=function(u,f){b.value=parseInt(f.join(""))}(l,i)),i===null&&(t=l),i}function yl(){var i,e;return e=t,i=Zt(),i!==null&&(i=function(l,u){b=u}(e,i)),i===null&&(t=e),i}function za(){var i,e,l,u,f,p,m;if(f=t,p=t,i=ln(),i!==null){for(e=[],m=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v,S){b.event=S.join("").toLowerCase()}(f,i[0])),i===null&&(t=f),i}function ln(){var i,e,l,u,f,p;if(f=t,i=P(),i!==null){for(e=[],p=t,r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l!==null?(u=P(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l!==null?(u=P(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function an(){var i,e,l,u,f,p,m;if(f=t,p=t,i=de(),i===null&&(i=Lt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=Qr(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=Qr(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){var S=b.tag;try{b=new us(b.uri,b.display_name,b.params),S&&b.setParam("tag",S)}catch{b=-1}}()),i===null&&(t=f),i}function Qr(){var i;return i=on(),i===null&&(i=Ge()),i}function on(){var i,e,l,u,f;return u=t,f=t,r.substr(t,3).toLowerCase()==="tag"?(i=r.substr(t,3),t+=3):(i=null,_('"tag"')),i!==null?(e=G(),e!==null?(l=U(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.tag=m}(u,i[2])),i===null&&(t=u),i}function Zr(){var i,e,l;if(l=t,e=g(),e!==null)for(i=[];e!==null;)i.push(e),e=g();else i=null;return i!==null&&(i=function(u,f){b=parseInt(f.join(""))}(l,i)),i===null&&(t=l),i}function Xa(){var i,e;return e=t,i=Zt(),i!==null&&(i=function(l,u){b=u}(e,i)),i===null&&(t=e),i}function Qa(){var i,e,l,u,f,p,m,v,S,O;for(v=t,S=t,i=[],e=$t();e!==null;)i.push(e),e=$t();if(i!==null)if(e=xe(),e!==null)if(l=we(),l!==null)if(u=be(),u!==null){for(f=[],O=t,p=le(),p!==null?(m=Ge(),m!==null?p=[p,m]:(p=null,t=O)):(p=null,t=O);p!==null;)f.push(p),O=t,p=le(),p!==null?(m=Ge(),m!==null?p=[p,m]:(p=null,t=O)):(p=null,t=O);f!==null?i=[i,e,l,u,f]:(i=null,t=S)}else i=null,t=S;else i=null,t=S;else i=null,t=S;else i=null,t=S;return i!==null&&(i=function(ie){try{b=new us(b.uri,b.display_name,b.params)}catch{b=-1}}()),i===null&&(t=v),i}function Za(){var i;return i=ei(),i}function ei(){var i,e,l,u,f,p,m,v;if(m=t,r.substr(t,6).toLowerCase()==="digest"?(i=r.substr(t,6),t+=6):(i=null,_('"Digest"')),i!==null)if(e=ve(),e!==null)if(l=ts(),l!==null){for(u=[],v=t,f=Ce(),f!==null?(p=ts(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=Ce(),f!==null?(p=ts(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);u!==null?i=[i,e,l,u]:(i=null,t=m)}else i=null,t=m;else i=null,t=m;else i=null,t=m;return i===null&&(i=qn()),i}function qn(){var i,e,l,u,f,p,m,v;if(m=t,i=U(),i!==null)if(e=ve(),e!==null)if(l=Ns(),l!==null){for(u=[],v=t,f=Ce(),f!==null?(p=Ns(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=Ce(),f!==null?(p=Ns(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);u!==null?i=[i,e,l,u]:(i=null,t=m)}else i=null,t=m;else i=null,t=m;else i=null,t=m;return i}function Ns(){var i,e,l,u;return u=t,i=U(),i!==null?(e=G(),e!==null?(l=U(),l===null&&(l=Ie()),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function ts(){var i;return i=un(),i===null&&(i=si(),i===null&&(i=fn(),i===null&&(i=ri(),i===null&&(i=ii(),i===null&&(i=li(),i===null&&(i=ai(),i===null&&(i=Ns()))))))),i}function un(){var i,e,l,u;return u=t,r.substr(t,5).toLowerCase()==="realm"?(i=r.substr(t,5),t+=5):(i=null,_('"realm"')),i!==null?(e=G(),e!==null?(l=ti(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function ti(){var i,e;return e=t,i=Oe(),i!==null&&(i=function(l,u){b.realm=u}(e,i)),i===null&&(t=e),i}function si(){var i,e,l,u,f,p,m,v,S;if(v=t,r.substr(t,6).toLowerCase()==="domain"?(i=r.substr(t,6),t+=6):(i=null,_('"domain"')),i!==null)if(e=G(),e!==null)if(l=st(),l!==null)if(u=cn(),u!==null){if(f=[],S=t,m=I(),m!==null)for(p=[];m!==null;)p.push(m),m=I();else p=null;for(p!==null?(m=cn(),m!==null?p=[p,m]:(p=null,t=S)):(p=null,t=S);p!==null;){if(f.push(p),S=t,m=I(),m!==null)for(p=[];m!==null;)p.push(m),m=I();else p=null;p!==null?(m=cn(),m!==null?p=[p,m]:(p=null,t=S)):(p=null,t=S)}f!==null?(p=lt(),p!==null?i=[i,e,l,u,f,p]:(i=null,t=v)):(i=null,t=v)}else i=null,t=v;else i=null,t=v;else i=null,t=v;else i=null,t=v;return i}function cn(){var i;return i=Un(),i===null&&(i=Qs()),i}function fn(){var i,e,l,u;return u=t,r.substr(t,5).toLowerCase()==="nonce"?(i=r.substr(t,5),t+=5):(i=null,_('"nonce"')),i!==null?(e=G(),e!==null?(l=ni(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function ni(){var i,e;return e=t,i=Oe(),i!==null&&(i=function(l,u){b.nonce=u}(e,i)),i===null&&(t=e),i}function ri(){var i,e,l,u,f;return u=t,f=t,r.substr(t,6).toLowerCase()==="opaque"?(i=r.substr(t,6),t+=6):(i=null,_('"opaque"')),i!==null?(e=G(),e!==null?(l=Oe(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.opaque=m}(u,i[2])),i===null&&(t=u),i}function ii(){var i,e,l,u,f;return u=t,r.substr(t,5).toLowerCase()==="stale"?(i=r.substr(t,5),t+=5):(i=null,_('"stale"')),i!==null?(e=G(),e!==null?(f=t,r.substr(t,4).toLowerCase()==="true"?(l=r.substr(t,4),t+=4):(l=null,_('"true"')),l!==null&&(l=function(p){b.stale=!0}()),l===null&&(t=f),l===null&&(f=t,r.substr(t,5).toLowerCase()==="false"?(l=r.substr(t,5),t+=5):(l=null,_('"false"')),l!==null&&(l=function(p){b.stale=!1}()),l===null&&(t=f)),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function li(){var i,e,l,u,f;return u=t,f=t,r.substr(t,9).toLowerCase()==="algorithm"?(i=r.substr(t,9),t+=9):(i=null,_('"algorithm"')),i!==null?(e=G(),e!==null?(r.substr(t,3).toLowerCase()==="md5"?(l=r.substr(t,3),t+=3):(l=null,_('"MD5"')),l===null&&(r.substr(t,8).toLowerCase()==="md5-sess"?(l=r.substr(t,8),t+=8):(l=null,_('"MD5-sess"')),l===null&&(l=U())),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.algorithm=m.toUpperCase()}(u,i[2])),i===null&&(t=u),i}function ai(){var i,e,l,u,f,p,m,v,S,O;if(v=t,r.substr(t,3).toLowerCase()==="qop"?(i=r.substr(t,3),t+=3):(i=null,_('"qop"')),i!==null)if(e=G(),e!==null)if(l=st(),l!==null){if(S=t,u=_n(),u!==null){for(f=[],O=t,r.charCodeAt(t)===44?(p=",",t++):(p=null,_('","')),p!==null?(m=_n(),m!==null?p=[p,m]:(p=null,t=O)):(p=null,t=O);p!==null;)f.push(p),O=t,r.charCodeAt(t)===44?(p=",",t++):(p=null,_('","')),p!==null?(m=_n(),m!==null?p=[p,m]:(p=null,t=O)):(p=null,t=O);f!==null?u=[u,f]:(u=null,t=S)}else u=null,t=S;u!==null?(f=lt(),f!==null?i=[i,e,l,u,f]:(i=null,t=v)):(i=null,t=v)}else i=null,t=v;else i=null,t=v;else i=null,t=v;return i}function _n(){var i,e;return e=t,r.substr(t,8).toLowerCase()==="auth-int"?(i=r.substr(t,8),t+=8):(i=null,_('"auth-int"')),i===null&&(r.substr(t,4).toLowerCase()==="auth"?(i=r.substr(t,4),t+=4):(i=null,_('"auth"')),i===null&&(i=U())),i!==null&&(i=function(l,u){b.qop||(b.qop=[]),b.qop.push(u.toLowerCase())}(e,i)),i===null&&(t=e),i}function Vn(){var i,e,l,u,f,p;if(f=t,i=U(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function eo(){var i,e,l,u,f,p,m;if(f=t,p=t,i=Bn(),i!==null){for(e=[],m=t,l=Ce(),l!==null?(u=Bn(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=Ce(),l!==null?(u=Bn(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){var S,O;for(O=b.multi_header.length,S=0;S<O;S++)if(b.multi_header[S].parsed===null){b=null;break}b!==null?b=b.multi_header:b=-1}()),i===null&&(t=f),i}function Bn(){var i,e,l,u,f,p,m;if(f=t,p=t,i=Lt(),i!==null){for(e=[],m=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){var S;b.multi_header||(b.multi_header=[]);try{S=new us(b.uri,b.display_name,b.params),delete b.uri,delete b.display_name,delete b.params}catch{S=null}b.multi_header.push({possition:t,offset:v,parsed:S})}(f)),i===null&&(t=f),i}function Gn(){var i,e,l,u,f,p,m;if(f=t,p=t,r.substr(t,3).toLowerCase()==="sip"?(i=r.substr(t,3),t+=3):(i=null,_('"SIP"')),i===null&&(i=U()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=oi(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=oi(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v,S){if(b.protocol=S.toLowerCase(),b.params||(b.params={}),b.params.text&&b.params.text[0]==='"'){var O=b.params.text;b.text=O.substring(1,O.length-1),delete b.params.text}}(f,i[0])),i===null&&(t=f),i}function oi(){var i;return i=Wn(),i===null&&(i=Ge()),i}function Wn(){var i,e,l,u,f,p;if(f=t,p=t,r.substr(t,5).toLowerCase()==="cause"?(i=r.substr(t,5),t+=5):(i=null,_('"cause"')),i!==null)if(e=G(),e!==null){if(u=g(),u!==null)for(l=[];u!==null;)l.push(u),u=g();else l=null;l!==null?i=[i,e,l]:(i=null,t=p)}else i=null,t=p;else i=null,t=p;return i!==null&&(i=function(m,v){b.cause=parseInt(v.join(""))}(f,i[2])),i===null&&(t=f),i}function Al(){var i,e,l,u,f,p;if(f=t,i=U(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function to(){var i,e,l,u,f,p;if(f=t,i=Kn(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=Kn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=Kn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Kn(){var i,e,l,u,f,p;if(f=t,i=Lt(),i!==null){for(e=[],p=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Yn(){var i,e,l,u,f,p;if(f=t,i=Cl(),i!==null){for(e=[],p=t,l=le(),l!==null?(u=Jn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=le(),l!==null?(u=Jn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Cl(){var i,e;return e=t,r.substr(t,6).toLowerCase()==="active"?(i=r.substr(t,6),t+=6):(i=null,_('"active"')),i===null&&(r.substr(t,7).toLowerCase()==="pending"?(i=r.substr(t,7),t+=7):(i=null,_('"pending"')),i===null&&(r.substr(t,10).toLowerCase()==="terminated"?(i=r.substr(t,10),t+=10):(i=null,_('"terminated"')),i===null&&(i=U()))),i!==null&&(i=function(l){b.state=r.substring(t,l)}(e)),i===null&&(t=e),i}function Jn(){var i,e,l,u,f;return u=t,f=t,r.substr(t,6).toLowerCase()==="reason"?(i=r.substr(t,6),t+=6):(i=null,_('"reason"')),i!==null?(e=G(),e!==null?(l=zn(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){typeof m<"u"&&(b.reason=m)}(u,i[2])),i===null&&(t=u),i===null&&(u=t,f=t,r.substr(t,7).toLowerCase()==="expires"?(i=r.substr(t,7),t+=7):(i=null,_('"expires"')),i!==null?(e=G(),e!==null?(l=Zt(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){typeof m<"u"&&(b.expires=m)}(u,i[2])),i===null&&(t=u),i===null&&(u=t,f=t,r.substr(t,11).toLowerCase()==="retry_after"?(i=r.substr(t,11),t+=11):(i=null,_('"retry_after"')),i!==null?(e=G(),e!==null?(l=Zt(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){typeof m<"u"&&(b.retry_after=m)}(u,i[2])),i===null&&(t=u),i===null&&(i=Ge()))),i}function zn(){var i;return r.substr(t,11).toLowerCase()==="deactivated"?(i=r.substr(t,11),t+=11):(i=null,_('"deactivated"')),i===null&&(r.substr(t,9).toLowerCase()==="probation"?(i=r.substr(t,9),t+=9):(i=null,_('"probation"')),i===null&&(r.substr(t,8).toLowerCase()==="rejected"?(i=r.substr(t,8),t+=8):(i=null,_('"rejected"')),i===null&&(r.substr(t,7).toLowerCase()==="timeout"?(i=r.substr(t,7),t+=7):(i=null,_('"timeout"')),i===null&&(r.substr(t,6).toLowerCase()==="giveup"?(i=r.substr(t,6),t+=6):(i=null,_('"giveup"')),i===null&&(r.substr(t,10).toLowerCase()==="noresource"?(i=r.substr(t,10),t+=10):(i=null,_('"noresource"')),i===null&&(r.substr(t,9).toLowerCase()==="invariant"?(i=r.substr(t,9),t+=9):(i=null,_('"invariant"')),i===null&&(i=U()))))))),i}function Rl(){var i;return i=B(),i=i!==null?i:"",i}function so(){var i,e,l,u,f,p;if(f=t,i=U(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i=i!==null?i:"",i}function no(){var i,e,l,u,f,p,m;if(f=t,p=t,i=de(),i===null&&(i=Lt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=ui(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=ui(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){var S=b.tag;try{b=new us(b.uri,b.display_name,b.params),S&&b.setParam("tag",S)}catch{b=-1}}()),i===null&&(t=f),i}function ui(){var i;return i=on(),i===null&&(i=Ge()),i}function ci(){var i,e,l,u,f,p;if(f=t,i=Xn(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=Xn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=Xn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Xn(){var i,e,l,u,f,p,m,v;if(m=t,i=mi(),i!==null)if(e=ve(),e!==null)if(l=vi(),l!==null){for(u=[],v=t,f=le(),f!==null?(p=Us(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=le(),f!==null?(p=Us(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);u!==null?i=[i,e,l,u]:(i=null,t=m)}else i=null,t=m;else i=null,t=m;else i=null,t=m;return i}function Us(){var i;return i=Qn(),i===null&&(i=fi(),i===null&&(i=_i(),i===null&&(i=hi(),i===null&&(i=di(),i===null&&(i=Ge()))))),i}function Qn(){var i,e,l,u,f;return u=t,f=t,r.substr(t,3).toLowerCase()==="ttl"?(i=r.substr(t,3),t+=3):(i=null,_('"ttl"')),i!==null?(e=G(),e!==null?(l=Zn(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.ttl=m}(u,i[2])),i===null&&(t=u),i}function fi(){var i,e,l,u,f;return u=t,f=t,r.substr(t,5).toLowerCase()==="maddr"?(i=r.substr(t,5),t+=5):(i=null,_('"maddr"')),i!==null?(e=G(),e!==null?(l=Qt(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.maddr=m}(u,i[2])),i===null&&(t=u),i}function _i(){var i,e,l,u,f;return u=t,f=t,r.substr(t,8).toLowerCase()==="received"?(i=r.substr(t,8),t+=8):(i=null,_('"received"')),i!==null?(e=G(),e!==null?(l=at(),l===null&&(l=Ys()),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.received=m}(u,i[2])),i===null&&(t=u),i}function hi(){var i,e,l,u,f;return u=t,f=t,r.substr(t,6).toLowerCase()==="branch"?(i=r.substr(t,6),t+=6):(i=null,_('"branch"')),i!==null?(e=G(),e!==null?(l=U(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.branch=m}(u,i[2])),i===null&&(t=u),i}function di(){var i,e,l,u,f;return u=t,r.substr(t,5).toLowerCase()==="rport"?(i=r.substr(t,5),t+=5):(i=null,_('"rport"')),i!==null?(f=t,e=G(),e!==null?(l=pi(),l!==null?e=[e,l]:(e=null,t=f)):(e=null,t=f),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i}function pi(){var i,e,l,u,f,p,m;return p=t,m=t,i=g(),i=i!==null?i:"",i!==null?(e=g(),e=e!==null?e:"",e!==null?(l=g(),l=l!==null?l:"",l!==null?(u=g(),u=u!==null?u:"",u!==null?(f=g(),f=f!==null?f:"",f!==null?i=[i,e,l,u,f]:(i=null,t=m)):(i=null,t=m)):(i=null,t=m)):(i=null,t=m)):(i=null,t=m),i!==null&&(i=function(v,S){b.rport=parseInt(S.join(""))}(p,i)),i===null&&(t=p),i}function mi(){var i,e,l,u,f,p;return p=t,i=gi(),i!==null?(e=W(),e!==null?(l=U(),l!==null?(u=W(),u!==null?(f=Ti(),f!==null?i=[i,e,l,u,f]:(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p),i}function gi(){var i,e;return e=t,r.substr(t,3).toLowerCase()==="sip"?(i=r.substr(t,3),t+=3):(i=null,_('"SIP"')),i===null&&(i=U()),i!==null&&(i=function(l,u){b.protocol=u}(e,i)),i===null&&(t=e),i}function Ti(){var i,e;return e=t,r.substr(t,3).toLowerCase()==="udp"?(i=r.substr(t,3),t+=3):(i=null,_('"UDP"')),i===null&&(r.substr(t,3).toLowerCase()==="tcp"?(i=r.substr(t,3),t+=3):(i=null,_('"TCP"')),i===null&&(r.substr(t,3).toLowerCase()==="tls"?(i=r.substr(t,3),t+=3):(i=null,_('"TLS"')),i===null&&(r.substr(t,4).toLowerCase()==="sctp"?(i=r.substr(t,4),t+=4):(i=null,_('"SCTP"')),i===null&&(i=U())))),i!==null&&(i=function(l,u){b.transport=u}(e,i)),i===null&&(t=e),i}function vi(){var i,e,l,u,f;return u=t,i=Ei(),i!==null?(f=t,e=ye(),e!==null?(l=Si(),l!==null?e=[e,l]:(e=null,t=f)):(e=null,t=f),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i}function Ei(){var i,e;return e=t,i=at(),i===null&&(i=On(),i===null&&(i=as())),i!==null&&(i=function(l){b.host=r.substring(t,l)}(e)),i===null&&(t=e),i}function Si(){var i,e,l,u,f,p,m;return p=t,m=t,i=g(),i=i!==null?i:"",i!==null?(e=g(),e=e!==null?e:"",e!==null?(l=g(),l=l!==null?l:"",l!==null?(u=g(),u=u!==null?u:"",u!==null?(f=g(),f=f!==null?f:"",f!==null?i=[i,e,l,u,f]:(i=null,t=m)):(i=null,t=m)):(i=null,t=m)):(i=null,t=m)):(i=null,t=m),i!==null&&(i=function(v,S){b.port=parseInt(S.join(""))}(p,i)),i===null&&(t=p),i}function Zn(){var i,e,l,u,f;return u=t,f=t,i=g(),i!==null?(e=g(),e=e!==null?e:"",e!==null?(l=g(),l=l!==null?l:"",l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){return parseInt(m.join(""))}(u,i)),i===null&&(t=u),i}function yi(){var i;return i=ei(),i}function ro(){var i,e,l,u,f,p;if(f=t,i=Il(),i!==null){for(e=[],p=t,l=le(),l!==null?(u=er(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=le(),l!==null?(u=er(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Il(){var i,e;return e=t,i=Zt(),i!==null&&(i=function(l,u){b.expires=u}(e,i)),i===null&&(t=e),i}function er(){var i;return i=tr(),i===null&&(i=Ge()),i}function tr(){var i,e,l,u,f;return u=t,f=t,r.substr(t,9).toLowerCase()==="refresher"?(i=r.substr(t,9),t+=9):(i=null,_('"refresher"')),i!==null?(e=G(),e!==null?(r.substr(t,3).toLowerCase()==="uac"?(l=r.substr(t,3),t+=3):(l=null,_('"uac"')),l===null&&(r.substr(t,3).toLowerCase()==="uas"?(l=r.substr(t,3),t+=3):(l=null,_('"uas"'))),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.refresher=m.toLowerCase()}(u,i[2])),i===null&&(t=u),i}function bl(){var i,e,l,u;return u=t,i=U(),i!==null?(e=D(),e!==null?(l=wl(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function wl(){var i,e;for(i=[],e=V(),e===null&&(e=F(),e===null&&(e=ve()));e!==null;)i.push(e),e=V(),e===null&&(e=F(),e===null&&(e=ve()));return i}function Ol(){var i,e;for(i=[],e=A();e!==null;)i.push(e),e=A();return i}function io(){var i,e,l;return l=t,r.substr(t,5)==="uuid:"?(i="uuid:",t+=5):(i=null,_('"uuid:"')),i!==null?(e=Dl(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function Dl(){var i,e,l,u,f,p,m,v,S,O,ie;return O=t,ie=t,i=Ft(),i!==null?(r.charCodeAt(t)===45?(e="-",t++):(e=null,_('"-"')),e!==null?(l=Ht(),l!==null?(r.charCodeAt(t)===45?(u="-",t++):(u=null,_('"-"')),u!==null?(f=Ht(),f!==null?(r.charCodeAt(t)===45?(p="-",t++):(p=null,_('"-"')),p!==null?(m=Ht(),m!==null?(r.charCodeAt(t)===45?(v="-",t++):(v=null,_('"-"')),v!==null?(S=Ai(),S!==null?i=[i,e,l,u,f,p,m,v,S]:(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie),i!==null&&(i=function(Ue,wt){b=r.substring(t+5,Ue)}(O,i[0])),i===null&&(t=O),i}function Ht(){var i,e,l,u,f;return f=t,i=E(),i!==null?(e=E(),e!==null?(l=E(),l!==null?(u=E(),u!==null?i=[i,e,l,u]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i}function Ft(){var i,e,l;return l=t,i=Ht(),i!==null?(e=Ht(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function Ai(){var i,e,l,u;return u=t,i=Ht(),i!==null?(e=Ht(),e!==null?(l=Ht(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Nl(){var i,e,l,u,f,p,m;if(f=t,p=t,i=de(),i===null&&(i=Lt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){try{b=new us(b.uri,b.display_name,b.params)}catch{b=-1}}()),i===null&&(t=f),i}function lo(){var i,e,l,u,f,p;if(f=t,i=Ul(),i!==null){for(e=[],p=t,l=le(),l!==null?(u=sr(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=le(),l!==null?(u=sr(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Ul(){var i,e,l,u,f,p;return u=t,f=t,i=tt(),i!==null?(p=t,r.charCodeAt(t)===64?(e="@",t++):(e=null,_('"@"')),e!==null?(l=tt(),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m){b.call_id=r.substring(t,m)}(u)),i===null&&(t=u),i}function sr(){var i;return i=nr(),i===null&&(i=Ci(),i===null&&(i=Ri(),i===null&&(i=Ge()))),i}function nr(){var i,e,l,u,f;return u=t,f=t,r.substr(t,6)==="to-tag"?(i="to-tag",t+=6):(i=null,_('"to-tag"')),i!==null?(e=G(),e!==null?(l=U(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.to_tag=m}(u,i[2])),i===null&&(t=u),i}function Ci(){var i,e,l,u,f;return u=t,f=t,r.substr(t,8)==="from-tag"?(i="from-tag",t+=8):(i=null,_('"from-tag"')),i!==null?(e=G(),e!==null?(l=U(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.from_tag=m}(u,i[2])),i===null&&(t=u),i}function Ri(){var i,e;return e=t,r.substr(t,10)==="early-only"?(i="early-only",t+=10):(i=null,_('"early-only"')),i!==null&&(i=function(l){b.early_only=!0}()),i===null&&(t=e),i}function Pl(i){i.sort();for(var e=null,l=[],u=0;u<i.length;u++)i[u]!==e&&(l.push(i[u]),e=i[u]);return l}function ao(){for(var i=1,e=1,l=!1,u=0;u<Math.max(t,n);u++){var f=r.charAt(u);f===`
75
- `?(l||i++,e=1,l=!1):f==="\r"||f==="\u2028"||f==="\u2029"?(i++,e=1,l=!0):(e++,l=!1)}return{line:i,column:e}}var xl=Es(),us=ku(),b={},w=o[a]();if(w===null||t!==r.length){var Ii=Math.max(t,n),bi=Ii<r.length?r.charAt(Ii):null,Ml=ao();return new this.SyntaxError(Pl(h),bi,Ii,Ml.line,Ml.column),-1}return b},toSource:function(){return this._source}};return s.SyntaxError=function(r,a,o,t,n){function h(_,d){var g,T;switch(_.length){case 0:g="end of input";break;case 1:g=_[0];break;default:g=_.slice(0,_.length-1).join(", ")+" or "+_[_.length-1]}return T=d?c(d):"end of input","Expected "+g+" but "+T+" found."}this.name="SyntaxError",this.expected=r,this.found=a,this.message=h(r,a),this.offset=o,this.line=t,this.column=n},s.SyntaxError.prototype=Error.prototype,s}()),Po}var xo,ef;function Es(){if(ef)return xo;ef=1;const c=De,s=yt(),r=Xt();return xo=class o_{static parse(o){if(o=r.parse(o,"SIP_URI"),o!==-1)return o}constructor(o,t,n,h,_={},d={}){if(!n)throw new TypeError('missing or invalid "host" parameter');this._parameters={},this._headers={},this._scheme=o||c.SIP,this._user=t,this._host=n,this._port=h;for(const g in _)Object.prototype.hasOwnProperty.call(_,g)&&this.setParam(g,_[g]);for(const g in d)Object.prototype.hasOwnProperty.call(d,g)&&this.setHeader(g,d[g])}get scheme(){return this._scheme}set scheme(o){this._scheme=o.toLowerCase()}get user(){return this._user}set user(o){this._user=o}get host(){return this._host}set host(o){this._host=o.toLowerCase()}get port(){return this._port}set port(o){this._port=o===0?o:parseInt(o,10)||null}setParam(o,t){o&&(this._parameters[o.toLowerCase()]=typeof t>"u"||t===null?null:t.toString())}getParam(o){if(o)return this._parameters[o.toLowerCase()]}hasParam(o){if(o)return this._parameters.hasOwnProperty(o.toLowerCase())&&!0||!1}deleteParam(o){if(o=o.toLowerCase(),this._parameters.hasOwnProperty(o)){const t=this._parameters[o];return delete this._parameters[o],t}}clearParams(){this._parameters={}}setHeader(o,t){this._headers[s.headerize(o)]=Array.isArray(t)?t:[t]}getHeader(o){if(o)return this._headers[s.headerize(o)]}hasHeader(o){if(o)return this._headers.hasOwnProperty(s.headerize(o))&&!0||!1}deleteHeader(o){if(o=s.headerize(o),this._headers.hasOwnProperty(o)){const t=this._headers[o];return delete this._headers[o],t}}clearHeaders(){this._headers={}}clone(){return new o_(this._scheme,this._user,this._host,this._port,JSON.parse(JSON.stringify(this._parameters)),JSON.parse(JSON.stringify(this._headers)))}toString(){const o=[];let t=`${this._scheme}:`;this._user&&(t+=`${s.escapeUser(this._user)}@`),t+=this._host,(this._port||this._port===0)&&(t+=`:${this._port}`);for(const n in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,n)&&(t+=`;${n}`,this._parameters[n]!==null&&(t+=`=${this._parameters[n]}`));for(const n in this._headers)if(Object.prototype.hasOwnProperty.call(this._headers,n))for(const h of this._headers[n])o.push(`${n}=${h}`);return o.length>0&&(t+=`?${o.join("&")}`),t}toAor(o){let t=`${this._scheme}:`;return this._user&&(t+=`${s.escapeUser(this._user)}@`),t+=this._host,o&&(this._port||this._port===0)&&(t+=`:${this._port}`),t}},xo}var tf;function yt(){if(tf)return et;tf=1;const c=De,s=Es(),r=Xt();et.str_utf8_length=n=>unescape(encodeURIComponent(n)).length;const a=et.isFunction=n=>n!==void 0?Object.prototype.toString.call(n)==="[object Function]":!1;et.isString=n=>n!==void 0?Object.prototype.toString.call(n)==="[object String]":!1,et.isDecimal=n=>!isNaN(n)&&parseFloat(n)===parseInt(n,10),et.isEmpty=n=>n===null||n===""||n===void 0||Array.isArray(n)&&n.length===0||typeof n=="number"&&isNaN(n),et.hasMethods=function(n,...h){for(const _ of h)if(a(n[_]))return!1;return!0};const o=et.createRandomToken=(n,h=32)=>{let _,d,g="";for(_=0;_<n;_++)d=Math.random()*h|0,g+=d.toString(h);return g};et.newTag=()=>o(10),et.newUUID=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,h=>{const _=Math.random()*16|0;return(h==="x"?_:_&3|8).toString(16)}),et.hostType=n=>{if(n){if(n=r.parse(n,"host"),n!==-1)return n.host_type}else return};const t=et.escapeUser=n=>encodeURIComponent(decodeURIComponent(n)).replace(/%3A/ig,":").replace(/%2B/ig,"+").replace(/%3F/ig,"?").replace(/%2F/ig,"/");return et.normalizeTarget=(n,h)=>{if(n){if(n instanceof s)return n;if(typeof n=="string"){const _=n.split("@");let d,g;switch(_.length){case 1:if(!h)return;d=n,g=h;break;case 2:d=_[0],g=_[1];break;default:d=_.slice(0,_.length-1).join("@"),g=_[_.length-1]}d=d.replace(/^(sips?|tel):/i,""),/^[-.()]*\+?[0-9\-.()]+$/.test(d)&&(d=d.replace(/[-.()]/g,"")),n=`${c.SIP}:${t(d)}@${g}`;let T;return(T=s.parse(n))?T:void 0}else return}else return},et.headerize=n=>{const h={"Call-Id":"Call-ID",Cseq:"CSeq","Www-Authenticate":"WWW-Authenticate"},_=n.toLowerCase().replace(/_/g,"-").split("-");let d="";const g=_.length;let T;for(T=0;T<g;T++)T!==0&&(d+="-"),d+=_[T].charAt(0).toUpperCase()+_[T].substring(1);return h[d]&&(d=h[d]),d},et.sipErrorCause=n=>{for(const h in c.SIP_ERROR_CAUSES)if(c.SIP_ERROR_CAUSES[h].indexOf(n)!==-1)return c.causes[h];return c.causes.SIP_FAILURE_CODE},et.getRandomTestNetIP=()=>{function n(h,_){return Math.floor(Math.random()*(_-h+1)+h)}return`192.0.2.${n(1,254)}`},et.calculateMD5=n=>{function h(Ee,Ae){return Ee<<Ae|Ee>>>32-Ae}function _(Ee,Ae){const Ie=Ee&2147483648,Oe=Ae&2147483648,pe=Ee&1073741824,ue=Ae&1073741824,de=(Ee&1073741823)+(Ae&1073741823);return pe&ue?de^2147483648^Ie^Oe:pe|ue?de&1073741824?de^3221225472^Ie^Oe:de^1073741824^Ie^Oe:de^Ie^Oe}function d(Ee,Ae,Ie){return Ee&Ae|~Ee&Ie}function g(Ee,Ae,Ie){return Ee&Ie|Ae&~Ie}function T(Ee,Ae,Ie){return Ee^Ae^Ie}function E(Ee,Ae,Ie){return Ae^(Ee|~Ie)}function y(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=_(Ee,_(_(d(Ae,Ie,Oe),pe),de)),_(h(Ee,ue),Ae)}function A(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=_(Ee,_(_(g(Ae,Ie,Oe),pe),de)),_(h(Ee,ue),Ae)}function C(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=_(Ee,_(_(T(Ae,Ie,Oe),pe),de)),_(h(Ee,ue),Ae)}function I(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=_(Ee,_(_(E(Ae,Ie,Oe),pe),de)),_(h(Ee,ue),Ae)}function H(Ee){let Ae;const Ie=Ee.length,Oe=Ie+8,ue=((Oe-Oe%64)/64+1)*16,de=new Array(ue-1);let we=0,Ne=0;for(;Ne<Ie;)Ae=(Ne-Ne%4)/4,we=Ne%4*8,de[Ae]=de[Ae]|Ee.charCodeAt(Ne)<<we,Ne++;return Ae=(Ne-Ne%4)/4,we=Ne%4*8,de[Ae]=de[Ae]|128<<we,de[ue-2]=Ie<<3,de[ue-1]=Ie>>>29,de}function L(Ee){let Ae="",Ie="",Oe,pe;for(pe=0;pe<=3;pe++)Oe=Ee>>>pe*8&255,Ie=`0${Oe.toString(16)}`,Ae=Ae+Ie.substr(Ie.length-2,2);return Ae}function oe(Ee){let Ae="";for(let Ie=0;Ie<Ee.length;Ie++){const Oe=Ee.charCodeAt(Ie);Oe<128?Ae+=String.fromCharCode(Oe):Oe>127&&Oe<2048?(Ae+=String.fromCharCode(Oe>>6|192),Ae+=String.fromCharCode(Oe&63|128)):(Ae+=String.fromCharCode(Oe>>12|224),Ae+=String.fromCharCode(Oe>>6&63|128),Ae+=String.fromCharCode(Oe&63|128))}return Ae}let N=[],j,Se,ve,M,D,B,V,J,F;const X=7,U=12,P=17,se=22,tt=5,ee=9,W=14,G=20,re=4,ge=11,be=16,xe=23,Ce=6,le=10,ye=15,st=21;for(n=oe(n),N=H(n),B=1732584193,V=4023233417,J=2562383102,F=271733878,j=0;j<N.length;j+=16)Se=B,ve=V,M=J,D=F,B=y(B,V,J,F,N[j+0],X,3614090360),F=y(F,B,V,J,N[j+1],U,3905402710),J=y(J,F,B,V,N[j+2],P,606105819),V=y(V,J,F,B,N[j+3],se,3250441966),B=y(B,V,J,F,N[j+4],X,4118548399),F=y(F,B,V,J,N[j+5],U,1200080426),J=y(J,F,B,V,N[j+6],P,2821735955),V=y(V,J,F,B,N[j+7],se,4249261313),B=y(B,V,J,F,N[j+8],X,1770035416),F=y(F,B,V,J,N[j+9],U,2336552879),J=y(J,F,B,V,N[j+10],P,4294925233),V=y(V,J,F,B,N[j+11],se,2304563134),B=y(B,V,J,F,N[j+12],X,1804603682),F=y(F,B,V,J,N[j+13],U,4254626195),J=y(J,F,B,V,N[j+14],P,2792965006),V=y(V,J,F,B,N[j+15],se,1236535329),B=A(B,V,J,F,N[j+1],tt,4129170786),F=A(F,B,V,J,N[j+6],ee,3225465664),J=A(J,F,B,V,N[j+11],W,643717713),V=A(V,J,F,B,N[j+0],G,3921069994),B=A(B,V,J,F,N[j+5],tt,3593408605),F=A(F,B,V,J,N[j+10],ee,38016083),J=A(J,F,B,V,N[j+15],W,3634488961),V=A(V,J,F,B,N[j+4],G,3889429448),B=A(B,V,J,F,N[j+9],tt,568446438),F=A(F,B,V,J,N[j+14],ee,3275163606),J=A(J,F,B,V,N[j+3],W,4107603335),V=A(V,J,F,B,N[j+8],G,1163531501),B=A(B,V,J,F,N[j+13],tt,2850285829),F=A(F,B,V,J,N[j+2],ee,4243563512),J=A(J,F,B,V,N[j+7],W,1735328473),V=A(V,J,F,B,N[j+12],G,2368359562),B=C(B,V,J,F,N[j+5],re,4294588738),F=C(F,B,V,J,N[j+8],ge,2272392833),J=C(J,F,B,V,N[j+11],be,1839030562),V=C(V,J,F,B,N[j+14],xe,4259657740),B=C(B,V,J,F,N[j+1],re,2763975236),F=C(F,B,V,J,N[j+4],ge,1272893353),J=C(J,F,B,V,N[j+7],be,4139469664),V=C(V,J,F,B,N[j+10],xe,3200236656),B=C(B,V,J,F,N[j+13],re,681279174),F=C(F,B,V,J,N[j+0],ge,3936430074),J=C(J,F,B,V,N[j+3],be,3572445317),V=C(V,J,F,B,N[j+6],xe,76029189),B=C(B,V,J,F,N[j+9],re,3654602809),F=C(F,B,V,J,N[j+12],ge,3873151461),J=C(J,F,B,V,N[j+15],be,530742520),V=C(V,J,F,B,N[j+2],xe,3299628645),B=I(B,V,J,F,N[j+0],Ce,4096336452),F=I(F,B,V,J,N[j+7],le,1126891415),J=I(J,F,B,V,N[j+14],ye,2878612391),V=I(V,J,F,B,N[j+5],st,4237533241),B=I(B,V,J,F,N[j+12],Ce,1700485571),F=I(F,B,V,J,N[j+3],le,2399980690),J=I(J,F,B,V,N[j+10],ye,4293915773),V=I(V,J,F,B,N[j+1],st,2240044497),B=I(B,V,J,F,N[j+8],Ce,1873313359),F=I(F,B,V,J,N[j+15],le,4264355552),J=I(J,F,B,V,N[j+6],ye,2734768916),V=I(V,J,F,B,N[j+13],st,1309151649),B=I(B,V,J,F,N[j+4],Ce,4149444226),F=I(F,B,V,J,N[j+11],le,3174756917),J=I(J,F,B,V,N[j+2],ye,718787259),V=I(V,J,F,B,N[j+9],st,3951481745),B=_(B,Se),V=_(V,ve),J=_(J,M),F=_(F,D);return(L(B)+L(V)+L(J)+L(F)).toLowerCase()},et.closeMediaStream=n=>{if(n)try{let h;if(n.getTracks){h=n.getTracks();for(const _ of h)_.stop()}else{h=n.getAudioTracks();for(const _ of h)_.stop();h=n.getVideoTracks();for(const _ of h)_.stop()}}catch{(typeof n.stop=="function"||typeof n.stop=="object")&&n.stop()}},et.cloneArray=n=>n&&n.slice()||[],et.cloneObject=(n,h={})=>n&&Object.assign({},n)||h,et}const u_=Pt,Lm=ot,St=De,rt=yt(),sf=ku(),$m=Xt(),Mo=new Lm("SIPMessage");class Ba{constructor(s,r,a,o,t,n){if(!s||!r||!a)return null;o=o||{},this.ua=a,this.headers={},this.method=s,this.ruri=r,this.body=n,this.extraHeaders=rt.cloneArray(t),this.ua.configuration.extra_headers&&(this.extraHeaders=this.extraHeaders.concat(this.ua.configuration.extra_headers)),o.route_set?this.setHeader("route",o.route_set):a.configuration.use_preloaded_route&&this.setHeader("route",`<${a.transport.sip_uri};lr>`),this.setHeader("via",""),this.setHeader("max-forwards",St.MAX_FORWARDS);const h=o.to_uri||r,_=o.to_tag?{tag:o.to_tag}:null,d=typeof o.to_display_name<"u"?o.to_display_name:null;this.to=new sf(h,d,_),this.setHeader("to",this.to.toString());const g=o.from_uri||a.configuration.uri,T={tag:o.from_tag||rt.newTag()};let E;typeof o.from_display_name<"u"?E=o.from_display_name:a.configuration.display_name?E=a.configuration.display_name:E=null,this.from=new sf(g,E,T),this.setHeader("from",this.from.toString());const y=o.call_id||a.configuration.jssip_id+rt.createRandomToken(15);this.call_id=y,this.setHeader("call-id",y);const A=o.cseq||Math.floor(Math.random()*1e4);this.cseq=A,this.setHeader("cseq",`${A} ${s}`)}setHeader(s,r){const a=new RegExp(`^\\s*${s}\\s*:`,"i");for(let o=0;o<this.extraHeaders.length;o++)a.test(this.extraHeaders[o])&&this.extraHeaders.splice(o,1);this.headers[rt.headerize(s)]=Array.isArray(r)?r:[r]}getHeader(s){const r=this.headers[rt.headerize(s)];if(r){if(r[0])return r[0]}else{const a=new RegExp(`^\\s*${s}\\s*:`,"i");for(const o of this.extraHeaders)if(a.test(o))return o.substring(o.indexOf(":")+1).trim()}}getHeaders(s){const r=this.headers[rt.headerize(s)],a=[];if(r){for(const o of r)a.push(o);return a}else{const o=new RegExp(`^\\s*${s}\\s*:`,"i");for(const t of this.extraHeaders)o.test(t)&&a.push(t.substring(t.indexOf(":")+1).trim());return a}}hasHeader(s){if(this.headers[rt.headerize(s)])return!0;{const r=new RegExp(`^\\s*${s}\\s*:`,"i");for(const a of this.extraHeaders)if(r.test(a))return!0}return!1}parseSDP(s){return!s&&this.sdp?this.sdp:(this.sdp=u_.parse(this.body||""),this.sdp)}toString(){let s=`${this.method} ${this.ruri} SIP/2.0\r
74
+ `,t+=2):(i=null,h('"\\r\\n"')),i}function g(){var i;return/^[0-9]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[0-9]")),i}function T(){var i;return/^[a-zA-Z]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[a-zA-Z]")),i}function E(){var i;return/^[0-9a-fA-F]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[0-9a-fA-F]")),i}function y(){var i;return i=I(),i===null&&(i=H()),i}function A(){var i;return/^[\0-\xFF]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[\\0-\\xFF]")),i}function C(){var i;return/^["]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h('["]')),i}function I(){var i;return n.charCodeAt(t)===32?(i=" ",t++):(i=null,h('" "')),i}function H(){var i;return n.charCodeAt(t)===9?(i=" ",t++):(i=null,h('"\\t"')),i}function $(){var i;return/^[a-zA-Z0-9]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[a-zA-Z0-9]")),i}function oe(){var i;return n.charCodeAt(t)===59?(i=";",t++):(i=null,h('";"')),i===null&&(n.charCodeAt(t)===47?(i="/",t++):(i=null,h('"/"')),i===null&&(n.charCodeAt(t)===63?(i="?",t++):(i=null,h('"?"')),i===null&&(n.charCodeAt(t)===58?(i=":",t++):(i=null,h('":"')),i===null&&(n.charCodeAt(t)===64?(i="@",t++):(i=null,h('"@"')),i===null&&(n.charCodeAt(t)===38?(i="&",t++):(i=null,h('"&"')),i===null&&(n.charCodeAt(t)===61?(i="=",t++):(i=null,h('"="')),i===null&&(n.charCodeAt(t)===43?(i="+",t++):(i=null,h('"+"')),i===null&&(n.charCodeAt(t)===36?(i="$",t++):(i=null,h('"$"')),i===null&&(n.charCodeAt(t)===44?(i=",",t++):(i=null,h('","'))))))))))),i}function N(){var i;return i=$(),i===null&&(i=j()),i}function j(){var i;return n.charCodeAt(t)===45?(i="-",t++):(i=null,h('"-"')),i===null&&(n.charCodeAt(t)===95?(i="_",t++):(i=null,h('"_"')),i===null&&(n.charCodeAt(t)===46?(i=".",t++):(i=null,h('"."')),i===null&&(n.charCodeAt(t)===33?(i="!",t++):(i=null,h('"!"')),i===null&&(n.charCodeAt(t)===126?(i="~",t++):(i=null,h('"~"')),i===null&&(n.charCodeAt(t)===42?(i="*",t++):(i=null,h('"*"')),i===null&&(n.charCodeAt(t)===39?(i="'",t++):(i=null,h(`"'"`)),i===null&&(n.charCodeAt(t)===40?(i="(",t++):(i=null,h('"("')),i===null&&(n.charCodeAt(t)===41?(i=")",t++):(i=null,h('")"')))))))))),i}function Se(){var i,e,l,u,f;return u=t,f=t,n.charCodeAt(t)===37?(i="%",t++):(i=null,h('"%"')),i!==null?(e=E(),e!==null?(l=E(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){return m.join("")}(u,i)),i===null&&(t=u),i}function ve(){var i,e,l,u,f,p;for(u=t,f=t,p=t,i=[],e=y();e!==null;)i.push(e),e=y();if(i!==null?(e=d(),e!==null?i=[i,e]:(i=null,t=p)):(i=null,t=p),i=i!==null?i:"",i!==null){if(l=y(),l!==null)for(e=[];l!==null;)e.push(l),l=y();else e=null;e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i!==null&&(i=function(m){return" "}()),i===null&&(t=u),i}function k(){var i;return i=ve(),i=i!==null?i:"",i}function D(){var i,e,l,u,f;for(u=t,f=t,i=[],e=I(),e===null&&(e=H());e!==null;)i.push(e),e=I(),e===null&&(e=H());return i!==null?(n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=k(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return":"}()),i===null&&(t=u),i}function B(){var i,e,l,u,f,p,m;if(f=t,p=t,e=q(),e!==null)for(i=[];e!==null;)i.push(e),e=q();else i=null;if(i!==null){for(e=[],m=t,l=[],u=ve();u!==null;)l.push(u),u=ve();for(l!==null?(u=q(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;){for(e.push(l),m=t,l=[],u=ve();u!==null;)l.push(u),u=ve();l!==null?(u=q(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m)}e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){return n.substring(t,v)}(f)),i===null&&(t=f),i}function q(){var i;return/^[!-~]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[!-~]")),i===null&&(i=J()),i}function J(){var i;return/^[\x80-\uFFFF]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[\\x80-\\uFFFF]")),i}function F(){var i;return/^[\x80-\xBF]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[\\x80-\\xBF]")),i}function X(){var i;return i=g(),i===null&&(/^[a-f]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[a-f]"))),i}function U(){var i,e,l;if(l=t,e=$(),e===null&&(n.charCodeAt(t)===45?(e="-",t++):(e=null,h('"-"')),e===null&&(n.charCodeAt(t)===46?(e=".",t++):(e=null,h('"."')),e===null&&(n.charCodeAt(t)===33?(e="!",t++):(e=null,h('"!"')),e===null&&(n.charCodeAt(t)===37?(e="%",t++):(e=null,h('"%"')),e===null&&(n.charCodeAt(t)===42?(e="*",t++):(e=null,h('"*"')),e===null&&(n.charCodeAt(t)===95?(e="_",t++):(e=null,h('"_"')),e===null&&(n.charCodeAt(t)===43?(e="+",t++):(e=null,h('"+"')),e===null&&(n.charCodeAt(t)===96?(e="`",t++):(e=null,h('"`"')),e===null&&(n.charCodeAt(t)===39?(e="'",t++):(e=null,h(`"'"`)),e===null&&(n.charCodeAt(t)===126?(e="~",t++):(e=null,h('"~"')))))))))))),e!==null)for(i=[];e!==null;)i.push(e),e=$(),e===null&&(n.charCodeAt(t)===45?(e="-",t++):(e=null,h('"-"')),e===null&&(n.charCodeAt(t)===46?(e=".",t++):(e=null,h('"."')),e===null&&(n.charCodeAt(t)===33?(e="!",t++):(e=null,h('"!"')),e===null&&(n.charCodeAt(t)===37?(e="%",t++):(e=null,h('"%"')),e===null&&(n.charCodeAt(t)===42?(e="*",t++):(e=null,h('"*"')),e===null&&(n.charCodeAt(t)===95?(e="_",t++):(e=null,h('"_"')),e===null&&(n.charCodeAt(t)===43?(e="+",t++):(e=null,h('"+"')),e===null&&(n.charCodeAt(t)===96?(e="`",t++):(e=null,h('"`"')),e===null&&(n.charCodeAt(t)===39?(e="'",t++):(e=null,h(`"'"`)),e===null&&(n.charCodeAt(t)===126?(e="~",t++):(e=null,h('"~"'))))))))))));else i=null;return i!==null&&(i=function(u){return n.substring(t,u)}(l)),i===null&&(t=l),i}function x(){var i,e,l;if(l=t,e=$(),e===null&&(n.charCodeAt(t)===45?(e="-",t++):(e=null,h('"-"')),e===null&&(n.charCodeAt(t)===33?(e="!",t++):(e=null,h('"!"')),e===null&&(n.charCodeAt(t)===37?(e="%",t++):(e=null,h('"%"')),e===null&&(n.charCodeAt(t)===42?(e="*",t++):(e=null,h('"*"')),e===null&&(n.charCodeAt(t)===95?(e="_",t++):(e=null,h('"_"')),e===null&&(n.charCodeAt(t)===43?(e="+",t++):(e=null,h('"+"')),e===null&&(n.charCodeAt(t)===96?(e="`",t++):(e=null,h('"`"')),e===null&&(n.charCodeAt(t)===39?(e="'",t++):(e=null,h(`"'"`)),e===null&&(n.charCodeAt(t)===126?(e="~",t++):(e=null,h('"~"'))))))))))),e!==null)for(i=[];e!==null;)i.push(e),e=$(),e===null&&(n.charCodeAt(t)===45?(e="-",t++):(e=null,h('"-"')),e===null&&(n.charCodeAt(t)===33?(e="!",t++):(e=null,h('"!"')),e===null&&(n.charCodeAt(t)===37?(e="%",t++):(e=null,h('"%"')),e===null&&(n.charCodeAt(t)===42?(e="*",t++):(e=null,h('"*"')),e===null&&(n.charCodeAt(t)===95?(e="_",t++):(e=null,h('"_"')),e===null&&(n.charCodeAt(t)===43?(e="+",t++):(e=null,h('"+"')),e===null&&(n.charCodeAt(t)===96?(e="`",t++):(e=null,h('"`"')),e===null&&(n.charCodeAt(t)===39?(e="'",t++):(e=null,h(`"'"`)),e===null&&(n.charCodeAt(t)===126?(e="~",t++):(e=null,h('"~"')))))))))));else i=null;return i!==null&&(i=function(u){return n.substring(t,u)}(l)),i===null&&(t=l),i}function se(){var i;return n.charCodeAt(t)===40?(i="(",t++):(i=null,h('"("')),i===null&&(n.charCodeAt(t)===41?(i=")",t++):(i=null,h('")"')),i===null&&(n.charCodeAt(t)===60?(i="<",t++):(i=null,h('"<"')),i===null&&(n.charCodeAt(t)===62?(i=">",t++):(i=null,h('">"')),i===null&&(n.charCodeAt(t)===64?(i="@",t++):(i=null,h('"@"')),i===null&&(n.charCodeAt(t)===44?(i=",",t++):(i=null,h('","')),i===null&&(n.charCodeAt(t)===59?(i=";",t++):(i=null,h('";"')),i===null&&(n.charCodeAt(t)===58?(i=":",t++):(i=null,h('":"')),i===null&&(n.charCodeAt(t)===92?(i="\\",t++):(i=null,h('"\\\\"')),i===null&&(i=C(),i===null&&(n.charCodeAt(t)===47?(i="/",t++):(i=null,h('"/"')),i===null&&(n.charCodeAt(t)===91?(i="[",t++):(i=null,h('"["')),i===null&&(n.charCodeAt(t)===93?(i="]",t++):(i=null,h('"]"')),i===null&&(n.charCodeAt(t)===63?(i="?",t++):(i=null,h('"?"')),i===null&&(n.charCodeAt(t)===61?(i="=",t++):(i=null,h('"="')),i===null&&(n.charCodeAt(t)===123?(i="{",t++):(i=null,h('"{"')),i===null&&(n.charCodeAt(t)===125?(i="}",t++):(i=null,h('"}"')),i===null&&(i=I(),i===null&&(i=H())))))))))))))))))),i}function tt(){var i,e,l;if(l=t,e=$(),e===null&&(n.charCodeAt(t)===45?(e="-",t++):(e=null,h('"-"')),e===null&&(n.charCodeAt(t)===46?(e=".",t++):(e=null,h('"."')),e===null&&(n.charCodeAt(t)===33?(e="!",t++):(e=null,h('"!"')),e===null&&(n.charCodeAt(t)===37?(e="%",t++):(e=null,h('"%"')),e===null&&(n.charCodeAt(t)===42?(e="*",t++):(e=null,h('"*"')),e===null&&(n.charCodeAt(t)===95?(e="_",t++):(e=null,h('"_"')),e===null&&(n.charCodeAt(t)===43?(e="+",t++):(e=null,h('"+"')),e===null&&(n.charCodeAt(t)===96?(e="`",t++):(e=null,h('"`"')),e===null&&(n.charCodeAt(t)===39?(e="'",t++):(e=null,h(`"'"`)),e===null&&(n.charCodeAt(t)===126?(e="~",t++):(e=null,h('"~"')),e===null&&(n.charCodeAt(t)===40?(e="(",t++):(e=null,h('"("')),e===null&&(n.charCodeAt(t)===41?(e=")",t++):(e=null,h('")"')),e===null&&(n.charCodeAt(t)===60?(e="<",t++):(e=null,h('"<"')),e===null&&(n.charCodeAt(t)===62?(e=">",t++):(e=null,h('">"')),e===null&&(n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e===null&&(n.charCodeAt(t)===92?(e="\\",t++):(e=null,h('"\\\\"')),e===null&&(e=C(),e===null&&(n.charCodeAt(t)===47?(e="/",t++):(e=null,h('"/"')),e===null&&(n.charCodeAt(t)===91?(e="[",t++):(e=null,h('"["')),e===null&&(n.charCodeAt(t)===93?(e="]",t++):(e=null,h('"]"')),e===null&&(n.charCodeAt(t)===63?(e="?",t++):(e=null,h('"?"')),e===null&&(n.charCodeAt(t)===123?(e="{",t++):(e=null,h('"{"')),e===null&&(n.charCodeAt(t)===125?(e="}",t++):(e=null,h('"}"'))))))))))))))))))))))))),e!==null)for(i=[];e!==null;)i.push(e),e=$(),e===null&&(n.charCodeAt(t)===45?(e="-",t++):(e=null,h('"-"')),e===null&&(n.charCodeAt(t)===46?(e=".",t++):(e=null,h('"."')),e===null&&(n.charCodeAt(t)===33?(e="!",t++):(e=null,h('"!"')),e===null&&(n.charCodeAt(t)===37?(e="%",t++):(e=null,h('"%"')),e===null&&(n.charCodeAt(t)===42?(e="*",t++):(e=null,h('"*"')),e===null&&(n.charCodeAt(t)===95?(e="_",t++):(e=null,h('"_"')),e===null&&(n.charCodeAt(t)===43?(e="+",t++):(e=null,h('"+"')),e===null&&(n.charCodeAt(t)===96?(e="`",t++):(e=null,h('"`"')),e===null&&(n.charCodeAt(t)===39?(e="'",t++):(e=null,h(`"'"`)),e===null&&(n.charCodeAt(t)===126?(e="~",t++):(e=null,h('"~"')),e===null&&(n.charCodeAt(t)===40?(e="(",t++):(e=null,h('"("')),e===null&&(n.charCodeAt(t)===41?(e=")",t++):(e=null,h('")"')),e===null&&(n.charCodeAt(t)===60?(e="<",t++):(e=null,h('"<"')),e===null&&(n.charCodeAt(t)===62?(e=">",t++):(e=null,h('">"')),e===null&&(n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e===null&&(n.charCodeAt(t)===92?(e="\\",t++):(e=null,h('"\\\\"')),e===null&&(e=C(),e===null&&(n.charCodeAt(t)===47?(e="/",t++):(e=null,h('"/"')),e===null&&(n.charCodeAt(t)===91?(e="[",t++):(e=null,h('"["')),e===null&&(n.charCodeAt(t)===93?(e="]",t++):(e=null,h('"]"')),e===null&&(n.charCodeAt(t)===63?(e="?",t++):(e=null,h('"?"')),e===null&&(n.charCodeAt(t)===123?(e="{",t++):(e=null,h('"{"')),e===null&&(n.charCodeAt(t)===125?(e="}",t++):(e=null,h('"}"')))))))))))))))))))))))));else i=null;return i!==null&&(i=function(u){return n.substring(t,u)}(l)),i===null&&(t=l),i}function ee(){var i,e,l,u,f;return u=t,f=t,i=k(),i!==null?(n.charCodeAt(t)===42?(e="*",t++):(e=null,h('"*"')),e!==null?(l=k(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return"*"}()),i===null&&(t=u),i}function W(){var i,e,l,u,f;return u=t,f=t,i=k(),i!==null?(n.charCodeAt(t)===47?(e="/",t++):(e=null,h('"/"')),e!==null?(l=k(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return"/"}()),i===null&&(t=u),i}function G(){var i,e,l,u,f;return u=t,f=t,i=k(),i!==null?(n.charCodeAt(t)===61?(e="=",t++):(e=null,h('"="')),e!==null?(l=k(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return"="}()),i===null&&(t=u),i}function re(){var i,e,l,u,f;return u=t,f=t,i=k(),i!==null?(n.charCodeAt(t)===40?(e="(",t++):(e=null,h('"("')),e!==null?(l=k(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return"("}()),i===null&&(t=u),i}function ge(){var i,e,l,u,f;return u=t,f=t,i=k(),i!==null?(n.charCodeAt(t)===41?(e=")",t++):(e=null,h('")"')),e!==null?(l=k(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return")"}()),i===null&&(t=u),i}function be(){var i,e,l,u;return l=t,u=t,n.charCodeAt(t)===62?(i=">",t++):(i=null,h('">"')),i!==null?(e=k(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f){return">"}()),i===null&&(t=l),i}function Pe(){var i,e,l,u;return l=t,u=t,i=k(),i!==null?(n.charCodeAt(t)===60?(e="<",t++):(e=null,h('"<"')),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f){return"<"}()),i===null&&(t=l),i}function Ce(){var i,e,l,u,f;return u=t,f=t,i=k(),i!==null?(n.charCodeAt(t)===44?(e=",",t++):(e=null,h('","')),e!==null?(l=k(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return","}()),i===null&&(t=u),i}function le(){var i,e,l,u,f;return u=t,f=t,i=k(),i!==null?(n.charCodeAt(t)===59?(e=";",t++):(e=null,h('";"')),e!==null?(l=k(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return";"}()),i===null&&(t=u),i}function ye(){var i,e,l,u,f;return u=t,f=t,i=k(),i!==null?(n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=k(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return":"}()),i===null&&(t=u),i}function st(){var i,e,l,u;return l=t,u=t,i=k(),i!==null?(e=C(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f){return'"'}()),i===null&&(t=l),i}function at(){var i,e,l,u;return l=t,u=t,i=C(),i!==null?(e=k(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f){return'"'}()),i===null&&(t=l),i}function Ee(){var i,e,l,u;if(u=t,i=re(),i!==null){for(e=[],l=Ae(),l===null&&(l=ue(),l===null&&(l=Ee()));l!==null;)e.push(l),l=Ae(),l===null&&(l=ue(),l===null&&(l=Ee()));e!==null?(l=ge(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)}else i=null,t=u;return i}function Ae(){var i;return/^[!-']/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[!-']")),i===null&&(/^[*-[]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[*-[]")),i===null&&(/^[\]-~]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[\\]-~]")),i===null&&(i=J(),i===null&&(i=ve())))),i}function Ie(){var i,e,l,u,f,p;if(f=t,p=t,i=k(),i!==null)if(e=C(),e!==null){for(l=[],u=pe(),u===null&&(u=ue());u!==null;)l.push(u),u=pe(),u===null&&(u=ue());l!==null?(u=C(),u!==null?i=[i,e,l,u]:(i=null,t=p)):(i=null,t=p)}else i=null,t=p;else i=null,t=p;return i!==null&&(i=function(m){return n.substring(t,m)}(f)),i===null&&(t=f),i}function Oe(){var i,e,l,u,f,p;if(f=t,p=t,i=k(),i!==null)if(e=C(),e!==null){for(l=[],u=pe(),u===null&&(u=ue());u!==null;)l.push(u),u=pe(),u===null&&(u=ue());l!==null?(u=C(),u!==null?i=[i,e,l,u]:(i=null,t=p)):(i=null,t=p)}else i=null,t=p;else i=null,t=p;return i!==null&&(i=function(m){var v=n.substring(t,m).trim();return v.substring(1,v.length-1).replace(/\\([\x00-\x09\x0b-\x0c\x0e-\x7f])/g,"$1")}(f)),i===null&&(t=f),i}function pe(){var i;return i=ve(),i===null&&(n.charCodeAt(t)===33?(i="!",t++):(i=null,h('"!"')),i===null&&(/^[#-[]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[#-[]")),i===null&&(/^[\]-~]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[\\]-~]")),i===null&&(i=J())))),i}function ue(){var i,e,l;return l=t,n.charCodeAt(t)===92?(i="\\",t++):(i=null,h('"\\\\"')),i!==null?(/^[\0-\t]/.test(n.charAt(t))?(e=n.charAt(t),t++):(e=null,h("[\\0-\\t]")),e===null&&(/^[\x0B-\f]/.test(n.charAt(t))?(e=n.charAt(t),t++):(e=null,h("[\\x0B-\\f]")),e===null&&(/^[\x0E-]/.test(n.charAt(t))?(e=n.charAt(t),t++):(e=null,h("[\\x0E-]")))),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function de(){var i,e,l,u,f,p;return f=t,p=t,i=Ne(),i!==null?(n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=Mt(),l=l!==null?l:"",l!==null?(u=Ys(),u!==null?i=[i,e,l,u]:(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p),i!==null&&(i=function(m){try{b.uri=new Ml(b.scheme,b.user,b.host,b.port),delete b.scheme,delete b.user,delete b.host,delete b.host_type,delete b.port}catch{b=-1}}()),i===null&&(t=f),i}function we(){var i,e,l,u,f,p,m,v;return m=t,v=t,i=Ne(),i!==null?(n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=Mt(),l=l!==null?l:"",l!==null?(u=Ys(),u!==null?(f=Er(),f!==null?(p=Or(),p=p!==null?p:"",p!==null?i=[i,e,l,u,f,p]:(i=null,t=v)):(i=null,t=v)):(i=null,t=v)):(i=null,t=v)):(i=null,t=v)):(i=null,t=v),i!==null&&(i=function(S){try{b.uri=new Ml(b.scheme,b.user,b.host,b.port,b.uri_params,b.uri_headers),delete b.scheme,delete b.user,delete b.host,delete b.host_type,delete b.port,delete b.uri_params,a==="SIP_URI"&&(b=b.uri)}catch{b=-1}}()),i===null&&(t=m),i}function Ne(){var i;return i=Qe(),i===null&&(i=Le()),i}function Qe(){var i,e;return e=t,n.substr(t,4).toLowerCase()==="sips"?(i=n.substr(t,4),t+=4):(i=null,h('"sips"')),i!==null&&(i=function(l,u){b.scheme=u.toLowerCase()}(e,i)),i===null&&(t=e),i}function Le(){var i,e;return e=t,n.substr(t,3).toLowerCase()==="sip"?(i=n.substr(t,3),t+=3):(i=null,h('"sip"')),i!==null&&(i=function(l,u){b.scheme=u.toLowerCase()}(e,i)),i===null&&(t=e),i}function Mt(){var i,e,l,u,f,p;return u=t,f=t,i=_t(),i!==null?(p=t,n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=On(),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p),e=e!==null?e:"",e!==null?(n.charCodeAt(t)===64?(l="@",t++):(l=null,h('"@"')),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m){b.user=decodeURIComponent(n.substring(t-1,m))}(u)),i===null&&(t=u),i}function _t(){var i,e;if(e=N(),e===null&&(e=Se(),e===null&&(e=wn())),e!==null)for(i=[];e!==null;)i.push(e),e=N(),e===null&&(e=Se(),e===null&&(e=wn()));else i=null;return i}function wn(){var i;return n.charCodeAt(t)===38?(i="&",t++):(i=null,h('"&"')),i===null&&(n.charCodeAt(t)===61?(i="=",t++):(i=null,h('"="')),i===null&&(n.charCodeAt(t)===43?(i="+",t++):(i=null,h('"+"')),i===null&&(n.charCodeAt(t)===36?(i="$",t++):(i=null,h('"$"')),i===null&&(n.charCodeAt(t)===44?(i=",",t++):(i=null,h('","')),i===null&&(n.charCodeAt(t)===59?(i=";",t++):(i=null,h('";"')),i===null&&(n.charCodeAt(t)===63?(i="?",t++):(i=null,h('"?"')),i===null&&(n.charCodeAt(t)===47?(i="/",t++):(i=null,h('"/"'))))))))),i}function On(){var i,e,l;for(l=t,i=[],e=N(),e===null&&(e=Se(),e===null&&(n.charCodeAt(t)===38?(e="&",t++):(e=null,h('"&"')),e===null&&(n.charCodeAt(t)===61?(e="=",t++):(e=null,h('"="')),e===null&&(n.charCodeAt(t)===43?(e="+",t++):(e=null,h('"+"')),e===null&&(n.charCodeAt(t)===36?(e="$",t++):(e=null,h('"$"')),e===null&&(n.charCodeAt(t)===44?(e=",",t++):(e=null,h('","'))))))));e!==null;)i.push(e),e=N(),e===null&&(e=Se(),e===null&&(n.charCodeAt(t)===38?(e="&",t++):(e=null,h('"&"')),e===null&&(n.charCodeAt(t)===61?(e="=",t++):(e=null,h('"="')),e===null&&(n.charCodeAt(t)===43?(e="+",t++):(e=null,h('"+"')),e===null&&(n.charCodeAt(t)===36?(e="$",t++):(e=null,h('"$"')),e===null&&(n.charCodeAt(t)===44?(e=",",t++):(e=null,h('","'))))))));return i!==null&&(i=function(u){b.password=n.substring(t,u)}(l)),i===null&&(t=l),i}function Ys(){var i,e,l,u,f;return u=t,i=Zt(),i!==null?(f=t,n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=Cs(),l!==null?e=[e,l]:(e=null,t=f)):(e=null,t=f),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i}function Zt(){var i,e;return e=t,i=us(),i===null&&(i=ot(),i===null&&(i=Nn())),i!==null&&(i=function(l){return b.host=n.substring(t,l).toLowerCase(),b.host}(e)),i===null&&(t=e),i}function us(){var i,e,l,u,f,p;for(u=t,f=t,i=[],p=t,e=Js(),e!==null?(n.charCodeAt(t)===46?(l=".",t++):(l=null,h('"."')),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p);e!==null;)i.push(e),p=t,e=Js(),e!==null?(n.charCodeAt(t)===46?(l=".",t++):(l=null,h('"."')),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p);return i!==null?(e=Dn(),e!==null?(n.charCodeAt(t)===46?(l=".",t++):(l=null,h('"."')),l=l!==null?l:"",l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m){return b.host_type="domain",n.substring(t,m)}(u)),i===null&&(t=u),i}function Js(){var i,e,l,u;if(u=t,i=$(),i!==null){for(e=[],l=$(),l===null&&(n.charCodeAt(t)===45?(l="-",t++):(l=null,h('"-"')),l===null&&(n.charCodeAt(t)===95?(l="_",t++):(l=null,h('"_"'))));l!==null;)e.push(l),l=$(),l===null&&(n.charCodeAt(t)===45?(l="-",t++):(l=null,h('"-"')),l===null&&(n.charCodeAt(t)===95?(l="_",t++):(l=null,h('"_"'))));e!==null?i=[i,e]:(i=null,t=u)}else i=null,t=u;return i}function Dn(){var i,e,l,u;if(u=t,i=T(),i!==null){for(e=[],l=$(),l===null&&(n.charCodeAt(t)===45?(l="-",t++):(l=null,h('"-"')),l===null&&(n.charCodeAt(t)===95?(l="_",t++):(l=null,h('"_"'))));l!==null;)e.push(l),l=$(),l===null&&(n.charCodeAt(t)===45?(l="-",t++):(l=null,h('"-"')),l===null&&(n.charCodeAt(t)===95?(l="_",t++):(l=null,h('"_"'))));e!==null?i=[i,e]:(i=null,t=u)}else i=null,t=u;return i}function Nn(){var i,e,l,u,f;return u=t,f=t,n.charCodeAt(t)===91?(i="[",t++):(i=null,h('"["')),i!==null?(e=zs(),e!==null?(n.charCodeAt(t)===93?(l="]",t++):(l=null,h('"]"')),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p){return b.host_type="IPv6",n.substring(t,p)}(u)),i===null&&(t=u),i}function zs(){var i,e,l,u,f,p,m,v,S,O,ie,Ue,wt,ks,M,R;return ks=t,M=t,i=me(),i!==null?(n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=me(),l!==null?(n.charCodeAt(t)===58?(u=":",t++):(u=null,h('":"')),u!==null?(f=me(),f!==null?(n.charCodeAt(t)===58?(p=":",t++):(p=null,h('":"')),p!==null?(m=me(),m!==null?(n.charCodeAt(t)===58?(v=":",t++):(v=null,h('":"')),v!==null?(S=me(),S!==null?(n.charCodeAt(t)===58?(O=":",t++):(O=null,h('":"')),O!==null?(ie=me(),ie!==null?(n.charCodeAt(t)===58?(Ue=":",t++):(Ue=null,h('":"')),Ue!==null?(wt=ae(),wt!==null?i=[i,e,l,u,f,p,m,v,S,O,ie,Ue,wt]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M),i===null&&(M=t,n.substr(t,2)==="::"?(i="::",t+=2):(i=null,h('"::"')),i!==null?(e=me(),e!==null?(n.charCodeAt(t)===58?(l=":",t++):(l=null,h('":"')),l!==null?(u=me(),u!==null?(n.charCodeAt(t)===58?(f=":",t++):(f=null,h('":"')),f!==null?(p=me(),p!==null?(n.charCodeAt(t)===58?(m=":",t++):(m=null,h('":"')),m!==null?(v=me(),v!==null?(n.charCodeAt(t)===58?(S=":",t++):(S=null,h('":"')),S!==null?(O=me(),O!==null?(n.charCodeAt(t)===58?(ie=":",t++):(ie=null,h('":"')),ie!==null?(Ue=ae(),Ue!==null?i=[i,e,l,u,f,p,m,v,S,O,ie,Ue]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M),i===null&&(M=t,n.substr(t,2)==="::"?(i="::",t+=2):(i=null,h('"::"')),i!==null?(e=me(),e!==null?(n.charCodeAt(t)===58?(l=":",t++):(l=null,h('":"')),l!==null?(u=me(),u!==null?(n.charCodeAt(t)===58?(f=":",t++):(f=null,h('":"')),f!==null?(p=me(),p!==null?(n.charCodeAt(t)===58?(m=":",t++):(m=null,h('":"')),m!==null?(v=me(),v!==null?(n.charCodeAt(t)===58?(S=":",t++):(S=null,h('":"')),S!==null?(O=ae(),O!==null?i=[i,e,l,u,f,p,m,v,S,O]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M),i===null&&(M=t,n.substr(t,2)==="::"?(i="::",t+=2):(i=null,h('"::"')),i!==null?(e=me(),e!==null?(n.charCodeAt(t)===58?(l=":",t++):(l=null,h('":"')),l!==null?(u=me(),u!==null?(n.charCodeAt(t)===58?(f=":",t++):(f=null,h('":"')),f!==null?(p=me(),p!==null?(n.charCodeAt(t)===58?(m=":",t++):(m=null,h('":"')),m!==null?(v=ae(),v!==null?i=[i,e,l,u,f,p,m,v]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M),i===null&&(M=t,n.substr(t,2)==="::"?(i="::",t+=2):(i=null,h('"::"')),i!==null?(e=me(),e!==null?(n.charCodeAt(t)===58?(l=":",t++):(l=null,h('":"')),l!==null?(u=me(),u!==null?(n.charCodeAt(t)===58?(f=":",t++):(f=null,h('":"')),f!==null?(p=ae(),p!==null?i=[i,e,l,u,f,p]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M),i===null&&(M=t,n.substr(t,2)==="::"?(i="::",t+=2):(i=null,h('"::"')),i!==null?(e=me(),e!==null?(n.charCodeAt(t)===58?(l=":",t++):(l=null,h('":"')),l!==null?(u=ae(),u!==null?i=[i,e,l,u]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M),i===null&&(M=t,n.substr(t,2)==="::"?(i="::",t+=2):(i=null,h('"::"')),i!==null?(e=ae(),e!==null?i=[i,e]:(i=null,t=M)):(i=null,t=M),i===null&&(M=t,n.substr(t,2)==="::"?(i="::",t+=2):(i=null,h('"::"')),i!==null?(e=me(),e!==null?i=[i,e]:(i=null,t=M)):(i=null,t=M),i===null&&(M=t,i=me(),i!==null?(n.substr(t,2)==="::"?(e="::",t+=2):(e=null,h('"::"')),e!==null?(l=me(),l!==null?(n.charCodeAt(t)===58?(u=":",t++):(u=null,h('":"')),u!==null?(f=me(),f!==null?(n.charCodeAt(t)===58?(p=":",t++):(p=null,h('":"')),p!==null?(m=me(),m!==null?(n.charCodeAt(t)===58?(v=":",t++):(v=null,h('":"')),v!==null?(S=me(),S!==null?(n.charCodeAt(t)===58?(O=":",t++):(O=null,h('":"')),O!==null?(ie=ae(),ie!==null?i=[i,e,l,u,f,p,m,v,S,O,ie]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M),i===null&&(M=t,i=me(),i!==null?(R=t,n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=R)):(e=null,t=R),e=e!==null?e:"",e!==null?(n.substr(t,2)==="::"?(l="::",t+=2):(l=null,h('"::"')),l!==null?(u=me(),u!==null?(n.charCodeAt(t)===58?(f=":",t++):(f=null,h('":"')),f!==null?(p=me(),p!==null?(n.charCodeAt(t)===58?(m=":",t++):(m=null,h('":"')),m!==null?(v=me(),v!==null?(n.charCodeAt(t)===58?(S=":",t++):(S=null,h('":"')),S!==null?(O=ae(),O!==null?i=[i,e,l,u,f,p,m,v,S,O]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M),i===null&&(M=t,i=me(),i!==null?(R=t,n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=R)):(e=null,t=R),e=e!==null?e:"",e!==null?(R=t,n.charCodeAt(t)===58?(l=":",t++):(l=null,h('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=R)):(l=null,t=R),l=l!==null?l:"",l!==null?(n.substr(t,2)==="::"?(u="::",t+=2):(u=null,h('"::"')),u!==null?(f=me(),f!==null?(n.charCodeAt(t)===58?(p=":",t++):(p=null,h('":"')),p!==null?(m=me(),m!==null?(n.charCodeAt(t)===58?(v=":",t++):(v=null,h('":"')),v!==null?(S=ae(),S!==null?i=[i,e,l,u,f,p,m,v,S]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M),i===null&&(M=t,i=me(),i!==null?(R=t,n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=R)):(e=null,t=R),e=e!==null?e:"",e!==null?(R=t,n.charCodeAt(t)===58?(l=":",t++):(l=null,h('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=R)):(l=null,t=R),l=l!==null?l:"",l!==null?(R=t,n.charCodeAt(t)===58?(u=":",t++):(u=null,h('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=R)):(u=null,t=R),u=u!==null?u:"",u!==null?(n.substr(t,2)==="::"?(f="::",t+=2):(f=null,h('"::"')),f!==null?(p=me(),p!==null?(n.charCodeAt(t)===58?(m=":",t++):(m=null,h('":"')),m!==null?(v=ae(),v!==null?i=[i,e,l,u,f,p,m,v]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M),i===null&&(M=t,i=me(),i!==null?(R=t,n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=R)):(e=null,t=R),e=e!==null?e:"",e!==null?(R=t,n.charCodeAt(t)===58?(l=":",t++):(l=null,h('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=R)):(l=null,t=R),l=l!==null?l:"",l!==null?(R=t,n.charCodeAt(t)===58?(u=":",t++):(u=null,h('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=R)):(u=null,t=R),u=u!==null?u:"",u!==null?(R=t,n.charCodeAt(t)===58?(f=":",t++):(f=null,h('":"')),f!==null?(p=me(),p!==null?f=[f,p]:(f=null,t=R)):(f=null,t=R),f=f!==null?f:"",f!==null?(n.substr(t,2)==="::"?(p="::",t+=2):(p=null,h('"::"')),p!==null?(m=ae(),m!==null?i=[i,e,l,u,f,p,m]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M),i===null&&(M=t,i=me(),i!==null?(R=t,n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=R)):(e=null,t=R),e=e!==null?e:"",e!==null?(R=t,n.charCodeAt(t)===58?(l=":",t++):(l=null,h('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=R)):(l=null,t=R),l=l!==null?l:"",l!==null?(R=t,n.charCodeAt(t)===58?(u=":",t++):(u=null,h('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=R)):(u=null,t=R),u=u!==null?u:"",u!==null?(R=t,n.charCodeAt(t)===58?(f=":",t++):(f=null,h('":"')),f!==null?(p=me(),p!==null?f=[f,p]:(f=null,t=R)):(f=null,t=R),f=f!==null?f:"",f!==null?(R=t,n.charCodeAt(t)===58?(p=":",t++):(p=null,h('":"')),p!==null?(m=me(),m!==null?p=[p,m]:(p=null,t=R)):(p=null,t=R),p=p!==null?p:"",p!==null?(n.substr(t,2)==="::"?(m="::",t+=2):(m=null,h('"::"')),m!==null?(v=me(),v!==null?i=[i,e,l,u,f,p,m,v]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M),i===null&&(M=t,i=me(),i!==null?(R=t,n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=R)):(e=null,t=R),e=e!==null?e:"",e!==null?(R=t,n.charCodeAt(t)===58?(l=":",t++):(l=null,h('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=R)):(l=null,t=R),l=l!==null?l:"",l!==null?(R=t,n.charCodeAt(t)===58?(u=":",t++):(u=null,h('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=R)):(u=null,t=R),u=u!==null?u:"",u!==null?(R=t,n.charCodeAt(t)===58?(f=":",t++):(f=null,h('":"')),f!==null?(p=me(),p!==null?f=[f,p]:(f=null,t=R)):(f=null,t=R),f=f!==null?f:"",f!==null?(R=t,n.charCodeAt(t)===58?(p=":",t++):(p=null,h('":"')),p!==null?(m=me(),m!==null?p=[p,m]:(p=null,t=R)):(p=null,t=R),p=p!==null?p:"",p!==null?(R=t,n.charCodeAt(t)===58?(m=":",t++):(m=null,h('":"')),m!==null?(v=me(),v!==null?m=[m,v]:(m=null,t=R)):(m=null,t=R),m=m!==null?m:"",m!==null?(n.substr(t,2)==="::"?(v="::",t+=2):(v=null,h('"::"')),v!==null?i=[i,e,l,u,f,p,m,v]:(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M)):(i=null,t=M))))))))))))))),i!==null&&(i=function(Te){return b.host_type="IPv6",n.substring(t,Te)}(ks)),i===null&&(t=ks),i}function me(){var i,e,l,u,f;return f=t,i=E(),i!==null?(e=E(),e=e!==null?e:"",e!==null?(l=E(),l=l!==null?l:"",l!==null?(u=E(),u=u!==null?u:"",u!==null?i=[i,e,l,u]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i}function ae(){var i,e,l,u;return u=t,i=me(),i!==null?(n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=me(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i===null&&(i=ot()),i}function ot(){var i,e,l,u,f,p,m,v,S;return v=t,S=t,i=Gt(),i!==null?(n.charCodeAt(t)===46?(e=".",t++):(e=null,h('"."')),e!==null?(l=Gt(),l!==null?(n.charCodeAt(t)===46?(u=".",t++):(u=null,h('"."')),u!==null?(f=Gt(),f!==null?(n.charCodeAt(t)===46?(p=".",t++):(p=null,h('"."')),p!==null?(m=Gt(),m!==null?i=[i,e,l,u,f,p,m]:(i=null,t=S)):(i=null,t=S)):(i=null,t=S)):(i=null,t=S)):(i=null,t=S)):(i=null,t=S)):(i=null,t=S),i!==null&&(i=function(O){return b.host_type="IPv4",n.substring(t,O)}(v)),i===null&&(t=v),i}function Gt(){var i,e,l,u;return u=t,n.substr(t,2)==="25"?(i="25",t+=2):(i=null,h('"25"')),i!==null?(/^[0-5]/.test(n.charAt(t))?(e=n.charAt(t),t++):(e=null,h("[0-5]")),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i===null&&(u=t,n.charCodeAt(t)===50?(i="2",t++):(i=null,h('"2"')),i!==null?(/^[0-4]/.test(n.charAt(t))?(e=n.charAt(t),t++):(e=null,h("[0-4]")),e!==null?(l=g(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i===null&&(u=t,n.charCodeAt(t)===49?(i="1",t++):(i=null,h('"1"')),i!==null?(e=g(),e!==null?(l=g(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i===null&&(u=t,/^[1-9]/.test(n.charAt(t))?(i=n.charAt(t),t++):(i=null,h("[1-9]")),i!==null?(e=g(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i===null&&(i=g())))),i}function Cs(){var i,e,l,u,f,p,m;return p=t,m=t,i=g(),i=i!==null?i:"",i!==null?(e=g(),e=e!==null?e:"",e!==null?(l=g(),l=l!==null?l:"",l!==null?(u=g(),u=u!==null?u:"",u!==null?(f=g(),f=f!==null?f:"",f!==null?i=[i,e,l,u,f]:(i=null,t=m)):(i=null,t=m)):(i=null,t=m)):(i=null,t=m)):(i=null,t=m),i!==null&&(i=function(v,S){return S=parseInt(S.join("")),b.port=S,S}(p,i)),i===null&&(t=p),i}function Er(){var i,e,l,u;for(i=[],u=t,n.charCodeAt(t)===59?(e=";",t++):(e=null,h('";"')),e!==null?(l=Un(),l!==null?e=[e,l]:(e=null,t=u)):(e=null,t=u);e!==null;)i.push(e),u=t,n.charCodeAt(t)===59?(e=";",t++):(e=null,h('";"')),e!==null?(l=Un(),l!==null?e=[e,l]:(e=null,t=u)):(e=null,t=u);return i}function Un(){var i;return i=xn(),i===null&&(i=Sr(),i===null&&(i=yr(),i===null&&(i=Ar(),i===null&&(i=Cr(),i===null&&(i=Rr(),i===null&&(i=Ir())))))),i}function xn(){var i,e,l,u;return l=t,u=t,n.substr(t,10).toLowerCase()==="transport="?(i=n.substr(t,10),t+=10):(i=null,h('"transport="')),i!==null?(n.substr(t,3).toLowerCase()==="udp"?(e=n.substr(t,3),t+=3):(e=null,h('"udp"')),e===null&&(n.substr(t,3).toLowerCase()==="tcp"?(e=n.substr(t,3),t+=3):(e=null,h('"tcp"')),e===null&&(n.substr(t,4).toLowerCase()==="sctp"?(e=n.substr(t,4),t+=4):(e=null,h('"sctp"')),e===null&&(n.substr(t,3).toLowerCase()==="tls"?(e=n.substr(t,3),t+=3):(e=null,h('"tls"')),e===null&&(e=U())))),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,p){b.uri_params||(b.uri_params={}),b.uri_params.transport=p.toLowerCase()}(l,i[1])),i===null&&(t=l),i}function Sr(){var i,e,l,u;return l=t,u=t,n.substr(t,5).toLowerCase()==="user="?(i=n.substr(t,5),t+=5):(i=null,h('"user="')),i!==null?(n.substr(t,5).toLowerCase()==="phone"?(e=n.substr(t,5),t+=5):(e=null,h('"phone"')),e===null&&(n.substr(t,2).toLowerCase()==="ip"?(e=n.substr(t,2),t+=2):(e=null,h('"ip"')),e===null&&(e=U())),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,p){b.uri_params||(b.uri_params={}),b.uri_params.user=p.toLowerCase()}(l,i[1])),i===null&&(t=l),i}function yr(){var i,e,l,u;return l=t,u=t,n.substr(t,7).toLowerCase()==="method="?(i=n.substr(t,7),t+=7):(i=null,h('"method="')),i!==null?(e=nn(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,p){b.uri_params||(b.uri_params={}),b.uri_params.method=p}(l,i[1])),i===null&&(t=l),i}function Ar(){var i,e,l,u;return l=t,u=t,n.substr(t,4).toLowerCase()==="ttl="?(i=n.substr(t,4),t+=4):(i=null,h('"ttl="')),i!==null?(e=tr(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,p){b.params||(b.params={}),b.params.ttl=p}(l,i[1])),i===null&&(t=l),i}function Cr(){var i,e,l,u;return l=t,u=t,n.substr(t,6).toLowerCase()==="maddr="?(i=n.substr(t,6),t+=6):(i=null,h('"maddr="')),i!==null?(e=Zt(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,p){b.uri_params||(b.uri_params={}),b.uri_params.maddr=p}(l,i[1])),i===null&&(t=l),i}function Rr(){var i,e,l,u,f,p;return u=t,f=t,n.substr(t,2).toLowerCase()==="lr"?(i=n.substr(t,2),t+=2):(i=null,h('"lr"')),i!==null?(p=t,n.charCodeAt(t)===61?(e="=",t++):(e=null,h('"="')),e!==null?(l=U(),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m){b.uri_params||(b.uri_params={}),b.uri_params.lr=void 0}()),i===null&&(t=u),i}function Ir(){var i,e,l,u,f,p;return u=t,f=t,i=br(),i!==null?(p=t,n.charCodeAt(t)===61?(e="=",t++):(e=null,h('"="')),e!==null?(l=wr(),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m,v,S){b.uri_params||(b.uri_params={}),typeof S>"u"?S=void 0:S=S[1],b.uri_params[v.toLowerCase()]=S}(u,i[0],i[1])),i===null&&(t=u),i}function br(){var i,e,l;if(l=t,e=Rs(),e!==null)for(i=[];e!==null;)i.push(e),e=Rs();else i=null;return i!==null&&(i=function(u,f){return f.join("")}(l,i)),i===null&&(t=l),i}function wr(){var i,e,l;if(l=t,e=Rs(),e!==null)for(i=[];e!==null;)i.push(e),e=Rs();else i=null;return i!==null&&(i=function(u,f){return f.join("")}(l,i)),i===null&&(t=l),i}function Rs(){var i;return i=Is(),i===null&&(i=N(),i===null&&(i=Se())),i}function Is(){var i;return n.charCodeAt(t)===91?(i="[",t++):(i=null,h('"["')),i===null&&(n.charCodeAt(t)===93?(i="]",t++):(i=null,h('"]"')),i===null&&(n.charCodeAt(t)===47?(i="/",t++):(i=null,h('"/"')),i===null&&(n.charCodeAt(t)===58?(i=":",t++):(i=null,h('":"')),i===null&&(n.charCodeAt(t)===38?(i="&",t++):(i=null,h('"&"')),i===null&&(n.charCodeAt(t)===43?(i="+",t++):(i=null,h('"+"')),i===null&&(n.charCodeAt(t)===36?(i="$",t++):(i=null,h('"$"')))))))),i}function Or(){var i,e,l,u,f,p,m;if(p=t,n.charCodeAt(t)===63?(i="?",t++):(i=null,h('"?"')),i!==null)if(e=Xs(),e!==null){for(l=[],m=t,n.charCodeAt(t)===38?(u="&",t++):(u=null,h('"&"')),u!==null?(f=Xs(),f!==null?u=[u,f]:(u=null,t=m)):(u=null,t=m);u!==null;)l.push(u),m=t,n.charCodeAt(t)===38?(u="&",t++):(u=null,h('"&"')),u!==null?(f=Xs(),f!==null?u=[u,f]:(u=null,t=m)):(u=null,t=m);l!==null?i=[i,e,l]:(i=null,t=p)}else i=null,t=p;else i=null,t=p;return i}function Xs(){var i,e,l,u,f;return u=t,f=t,i=Qs(),i!==null?(n.charCodeAt(t)===61?(e="=",t++):(e=null,h('"="')),e!==null?(l=Dr(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m,v){m=m.join("").toLowerCase(),v=v.join(""),b.uri_headers||(b.uri_headers={}),b.uri_headers[m]?b.uri_headers[m].push(v):b.uri_headers[m]=[v]}(u,i[0],i[2])),i===null&&(t=u),i}function Qs(){var i,e;if(e=bs(),e===null&&(e=N(),e===null&&(e=Se())),e!==null)for(i=[];e!==null;)i.push(e),e=bs(),e===null&&(e=N(),e===null&&(e=Se()));else i=null;return i}function Dr(){var i,e;for(i=[],e=bs(),e===null&&(e=N(),e===null&&(e=Se()));e!==null;)i.push(e),e=bs(),e===null&&(e=N(),e===null&&(e=Se()));return i}function bs(){var i;return n.charCodeAt(t)===91?(i="[",t++):(i=null,h('"["')),i===null&&(n.charCodeAt(t)===93?(i="]",t++):(i=null,h('"]"')),i===null&&(n.charCodeAt(t)===47?(i="/",t++):(i=null,h('"/"')),i===null&&(n.charCodeAt(t)===63?(i="?",t++):(i=null,h('"?"')),i===null&&(n.charCodeAt(t)===58?(i=":",t++):(i=null,h('":"')),i===null&&(n.charCodeAt(t)===43?(i="+",t++):(i=null,h('"+"')),i===null&&(n.charCodeAt(t)===36?(i="$",t++):(i=null,h('"$"')))))))),i}function Zs(){var i;return i=rn(),i===null&&(i=ml()),i}function ml(){var i,e,l,u,f,p;return p=t,i=nn(),i!==null?(e=I(),e!==null?(l=Nr(),l!==null?(u=I(),u!==null?(f=Mn(),f!==null?i=[i,e,l,u,f]:(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p),i}function Nr(){var i;return i=we(),i===null&&(i=Pn()),i}function Pn(){var i,e,l,u;return u=t,i=Ns(),i!==null?(n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e!==null?(l=kn(),l===null&&(l=tn()),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function kn(){var i,e,l,u,f;return u=t,i=Ur(),i===null&&(i=en()),i!==null?(f=t,n.charCodeAt(t)===63?(e="?",t++):(e=null,h('"?"')),e!==null?(l=Lr(),l!==null?e=[e,l]:(e=null,t=f)):(e=null,t=f),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i}function Ur(){var i,e,l,u;return u=t,n.substr(t,2)==="//"?(i="//",t+=2):(i=null,h('"//"')),i!==null?(e=Pr(),e!==null?(l=en(),l=l!==null?l:"",l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function en(){var i,e,l;return l=t,n.charCodeAt(t)===47?(i="/",t++):(i=null,h('"/"')),i!==null?(e=xr(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function tn(){var i,e,l,u;if(u=t,i=Os(),i!==null){for(e=[],l=ws();l!==null;)e.push(l),l=ws();e!==null?i=[i,e]:(i=null,t=u)}else i=null,t=u;return i}function ws(){var i;return i=oe(),i===null&&(i=N(),i===null&&(i=Se())),i}function Os(){var i;return i=N(),i===null&&(i=Se(),i===null&&(n.charCodeAt(t)===59?(i=";",t++):(i=null,h('";"')),i===null&&(n.charCodeAt(t)===63?(i="?",t++):(i=null,h('"?"')),i===null&&(n.charCodeAt(t)===58?(i=":",t++):(i=null,h('":"')),i===null&&(n.charCodeAt(t)===64?(i="@",t++):(i=null,h('"@"')),i===null&&(n.charCodeAt(t)===38?(i="&",t++):(i=null,h('"&"')),i===null&&(n.charCodeAt(t)===61?(i="=",t++):(i=null,h('"="')),i===null&&(n.charCodeAt(t)===43?(i="+",t++):(i=null,h('"+"')),i===null&&(n.charCodeAt(t)===36?(i="$",t++):(i=null,h('"$"')),i===null&&(n.charCodeAt(t)===44?(i=",",t++):(i=null,h('","')))))))))))),i}function xr(){var i,e,l,u,f,p;if(f=t,i=sn(),i!==null){for(e=[],p=t,n.charCodeAt(t)===47?(l="/",t++):(l=null,h('"/"')),l!==null?(u=sn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,n.charCodeAt(t)===47?(l="/",t++):(l=null,h('"/"')),l!==null?(u=sn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function sn(){var i,e,l,u,f,p;for(f=t,i=[],e=cs();e!==null;)i.push(e),e=cs();if(i!==null){for(e=[],p=t,n.charCodeAt(t)===59?(l=";",t++):(l=null,h('";"')),l!==null?(u=Ds(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,n.charCodeAt(t)===59?(l=";",t++):(l=null,h('";"')),l!==null?(u=Ds(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Ds(){var i,e;for(i=[],e=cs();e!==null;)i.push(e),e=cs();return i}function cs(){var i;return i=N(),i===null&&(i=Se(),i===null&&(n.charCodeAt(t)===58?(i=":",t++):(i=null,h('":"')),i===null&&(n.charCodeAt(t)===64?(i="@",t++):(i=null,h('"@"')),i===null&&(n.charCodeAt(t)===38?(i="&",t++):(i=null,h('"&"')),i===null&&(n.charCodeAt(t)===61?(i="=",t++):(i=null,h('"="')),i===null&&(n.charCodeAt(t)===43?(i="+",t++):(i=null,h('"+"')),i===null&&(n.charCodeAt(t)===36?(i="$",t++):(i=null,h('"$"')),i===null&&(n.charCodeAt(t)===44?(i=",",t++):(i=null,h('","')))))))))),i}function Ns(){var i,e,l,u,f;if(u=t,f=t,i=T(),i!==null){for(e=[],l=T(),l===null&&(l=g(),l===null&&(n.charCodeAt(t)===43?(l="+",t++):(l=null,h('"+"')),l===null&&(n.charCodeAt(t)===45?(l="-",t++):(l=null,h('"-"')),l===null&&(n.charCodeAt(t)===46?(l=".",t++):(l=null,h('"."'))))));l!==null;)e.push(l),l=T(),l===null&&(l=g(),l===null&&(n.charCodeAt(t)===43?(l="+",t++):(l=null,h('"+"')),l===null&&(n.charCodeAt(t)===45?(l="-",t++):(l=null,h('"-"')),l===null&&(n.charCodeAt(t)===46?(l=".",t++):(l=null,h('"."'))))));e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i!==null&&(i=function(p){b.scheme=n.substring(t,p)}(u)),i===null&&(t=u),i}function Pr(){var i;return i=kr(),i===null&&(i=Mr()),i}function kr(){var i,e,l,u;return l=t,u=t,i=Mt(),i!==null?(n.charCodeAt(t)===64?(e="@",t++):(e=null,h('"@"')),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i=i!==null?i:"",i!==null?(e=Ys(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i=i!==null?i:"",i}function Mr(){var i,e;if(e=N(),e===null&&(e=Se(),e===null&&(n.charCodeAt(t)===36?(e="$",t++):(e=null,h('"$"')),e===null&&(n.charCodeAt(t)===44?(e=",",t++):(e=null,h('","')),e===null&&(n.charCodeAt(t)===59?(e=";",t++):(e=null,h('";"')),e===null&&(n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e===null&&(n.charCodeAt(t)===64?(e="@",t++):(e=null,h('"@"')),e===null&&(n.charCodeAt(t)===38?(e="&",t++):(e=null,h('"&"')),e===null&&(n.charCodeAt(t)===61?(e="=",t++):(e=null,h('"="')),e===null&&(n.charCodeAt(t)===43?(e="+",t++):(e=null,h('"+"'))))))))))),e!==null)for(i=[];e!==null;)i.push(e),e=N(),e===null&&(e=Se(),e===null&&(n.charCodeAt(t)===36?(e="$",t++):(e=null,h('"$"')),e===null&&(n.charCodeAt(t)===44?(e=",",t++):(e=null,h('","')),e===null&&(n.charCodeAt(t)===59?(e=";",t++):(e=null,h('";"')),e===null&&(n.charCodeAt(t)===58?(e=":",t++):(e=null,h('":"')),e===null&&(n.charCodeAt(t)===64?(e="@",t++):(e=null,h('"@"')),e===null&&(n.charCodeAt(t)===38?(e="&",t++):(e=null,h('"&"')),e===null&&(n.charCodeAt(t)===61?(e="=",t++):(e=null,h('"="')),e===null&&(n.charCodeAt(t)===43?(e="+",t++):(e=null,h('"+"')))))))))));else i=null;return i}function Lr(){var i,e;for(i=[],e=ws();e!==null;)i.push(e),e=ws();return i}function Mn(){var i,e,l,u,f,p,m,v;if(m=t,v=t,n.substr(t,3).toLowerCase()==="sip"?(i=n.substr(t,3),t+=3):(i=null,h('"SIP"')),i!==null)if(n.charCodeAt(t)===47?(e="/",t++):(e=null,h('"/"')),e!==null){if(u=g(),u!==null)for(l=[];u!==null;)l.push(u),u=g();else l=null;if(l!==null)if(n.charCodeAt(t)===46?(u=".",t++):(u=null,h('"."')),u!==null){if(p=g(),p!==null)for(f=[];p!==null;)f.push(p),p=g();else f=null;f!==null?i=[i,e,l,u,f]:(i=null,t=v)}else i=null,t=v;else i=null,t=v}else i=null,t=v;else i=null,t=v;return i!==null&&(i=function(S){b.sip_version=n.substring(t,S)}(m)),i===null&&(t=m),i}function Ln(){var i;return n.substr(t,6)==="INVITE"?(i="INVITE",t+=6):(i=null,h('"INVITE"')),i}function $r(){var i;return n.substr(t,3)==="ACK"?(i="ACK",t+=3):(i=null,h('"ACK"')),i}function Hr(){var i;return n.substr(t,7)==="OPTIONS"?(i="OPTIONS",t+=7):(i=null,h('"OPTIONS"')),i}function Fr(){var i;return n.substr(t,3)==="BYE"?(i="BYE",t+=3):(i=null,h('"BYE"')),i}function jr(){var i;return n.substr(t,6)==="CANCEL"?(i="CANCEL",t+=6):(i=null,h('"CANCEL"')),i}function Vr(){var i;return n.substr(t,8)==="REGISTER"?(i="REGISTER",t+=8):(i=null,h('"REGISTER"')),i}function qr(){var i;return n.substr(t,9)==="SUBSCRIBE"?(i="SUBSCRIBE",t+=9):(i=null,h('"SUBSCRIBE"')),i}function Br(){var i;return n.substr(t,6)==="NOTIFY"?(i="NOTIFY",t+=6):(i=null,h('"NOTIFY"')),i}function Gr(){var i;return n.substr(t,5)==="REFER"?(i="REFER",t+=5):(i=null,h('"REFER"')),i}function nn(){var i,e;return e=t,i=Ln(),i===null&&(i=$r(),i===null&&(i=Hr(),i===null&&(i=Fr(),i===null&&(i=jr(),i===null&&(i=Vr(),i===null&&(i=qr(),i===null&&(i=Br(),i===null&&(i=Gr(),i===null&&(i=U()))))))))),i!==null&&(i=function(l){return b.method=n.substring(t,l),b.method}(e)),i===null&&(t=e),i}function rn(){var i,e,l,u,f,p;return p=t,i=Mn(),i!==null?(e=I(),e!==null?(l=Wr(),l!==null?(u=I(),u!==null?(f=Yr(),f!==null?i=[i,e,l,u,f]:(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p),i}function Wr(){var i,e;return e=t,i=Kr(),i!==null&&(i=function(l,u){b.status_code=parseInt(u.join(""))}(e,i)),i===null&&(t=e),i}function Kr(){var i,e,l,u;return u=t,i=g(),i!==null?(e=g(),e!==null?(l=g(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Yr(){var i,e,l;for(l=t,i=[],e=oe(),e===null&&(e=N(),e===null&&(e=Se(),e===null&&(e=J(),e===null&&(e=F(),e===null&&(e=I(),e===null&&(e=H()))))));e!==null;)i.push(e),e=oe(),e===null&&(e=N(),e===null&&(e=Se(),e===null&&(e=J(),e===null&&(e=F(),e===null&&(e=I(),e===null&&(e=H()))))));return i!==null&&(i=function(u){b.reason_phrase=n.substring(t,u)}(l)),i===null&&(t=l),i}function gl(){var i,e,l,u,f,p;if(f=t,i=on(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=on(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=on(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Ya(){var i,e,l,u,f,p;return u=t,f=t,i=tt(),i!==null?(p=t,n.charCodeAt(t)===64?(e="@",t++):(e=null,h('"@"')),e!==null?(l=tt(),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m){b=n.substring(t,m)}(u)),i===null&&(t=u),i}function Ja(){var i,e,l,u,f,p,m;if(f=t,i=ee(),i===null)if(p=t,i=$n(),i!==null){for(e=[],m=t,l=Ce(),l!==null?(u=$n(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=Ce(),l!==null?(u=$n(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){var S,O;for(O=b.multi_header.length,S=0;S<O;S++)if(b.multi_header[S].parsed===null){b=null;break}b!==null?b=b.multi_header:b=-1}()),i===null&&(t=f),i}function $n(){var i,e,l,u,f,p,m;if(f=t,p=t,i=de(),i===null&&(i=Lt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=Us(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=Us(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){var S;b.multi_header||(b.multi_header=[]);try{S=new fs(b.uri,b.display_name,b.params),delete b.uri,delete b.display_name,delete b.params}catch{S=null}b.multi_header.push({possition:t,offset:v,parsed:S})}(f)),i===null&&(t=f),i}function Lt(){var i,e,l,u,f;return f=t,i=$t(),i=i!==null?i:"",i!==null?(e=Pe(),e!==null?(l=we(),l!==null?(u=be(),u!==null?i=[i,e,l,u]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i}function $t(){var i,e,l,u,f,p,m;if(f=t,p=t,i=U(),i!==null){for(e=[],m=t,l=ve(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=ve(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i===null&&(i=Oe()),i!==null&&(i=function(v,S){typeof S=="string"?b.display_name=S:b.display_name=S[1].reduce(function(O,ie){return O+ie[0]+ie[1]},S[0])}(f,i)),i===null&&(t=f),i}function Us(){var i;return i=Hn(),i===null&&(i=Jr(),i===null&&(i=Ge())),i}function Hn(){var i,e,l,u,f;return u=t,f=t,n.substr(t,1).toLowerCase()==="q"?(i=n.substr(t,1),t++):(i=null,h('"q"')),i!==null?(e=G(),e!==null?(l=ts(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.params||(b.params={}),b.params.q=m}(u,i[2])),i===null&&(t=u),i}function Jr(){var i,e,l,u,f;return u=t,f=t,n.substr(t,7).toLowerCase()==="expires"?(i=n.substr(t,7),t+=7):(i=null,h('"expires"')),i!==null?(e=G(),e!==null?(l=es(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.params||(b.params={}),b.params.expires=m}(u,i[2])),i===null&&(t=u),i}function es(){var i,e,l;if(l=t,e=g(),e!==null)for(i=[];e!==null;)i.push(e),e=g();else i=null;return i!==null&&(i=function(u,f){return parseInt(f.join(""))}(l,i)),i===null&&(t=l),i}function ts(){var i,e,l,u,f,p,m,v;return p=t,m=t,n.charCodeAt(t)===48?(i="0",t++):(i=null,h('"0"')),i!==null?(v=t,n.charCodeAt(t)===46?(e=".",t++):(e=null,h('"."')),e!==null?(l=g(),l=l!==null?l:"",l!==null?(u=g(),u=u!==null?u:"",u!==null?(f=g(),f=f!==null?f:"",f!==null?e=[e,l,u,f]:(e=null,t=v)):(e=null,t=v)):(e=null,t=v)):(e=null,t=v),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=m)):(i=null,t=m),i!==null&&(i=function(S){return parseFloat(n.substring(t,S))}(p)),i===null&&(t=p),i}function Ge(){var i,e,l,u,f,p;return u=t,f=t,i=U(),i!==null?(p=t,e=G(),e!==null?(l=We(),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m,v,S){b.params||(b.params={}),typeof S>"u"?S=void 0:S=S[1],b.params[v.toLowerCase()]=S}(u,i[0],i[1])),i===null&&(t=u),i}function We(){var i;return i=U(),i===null&&(i=Zt(),i===null&&(i=Ie())),i}function Tl(){var i,e,l,u,f,p;if(f=t,i=vl(),i!==null){for(e=[],p=t,l=le(),l!==null?(u=Fn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=le(),l!==null?(u=Fn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function vl(){var i;return n.substr(t,6).toLowerCase()==="render"?(i=n.substr(t,6),t+=6):(i=null,h('"render"')),i===null&&(n.substr(t,7).toLowerCase()==="session"?(i=n.substr(t,7),t+=7):(i=null,h('"session"')),i===null&&(n.substr(t,4).toLowerCase()==="icon"?(i=n.substr(t,4),t+=4):(i=null,h('"icon"')),i===null&&(n.substr(t,5).toLowerCase()==="alert"?(i=n.substr(t,5),t+=5):(i=null,h('"alert"')),i===null&&(i=U())))),i}function Fn(){var i;return i=jn(),i===null&&(i=Ge()),i}function jn(){var i,e,l,u;return u=t,n.substr(t,8).toLowerCase()==="handling"?(i=n.substr(t,8),t+=8):(i=null,h('"handling"')),i!==null?(e=G(),e!==null?(n.substr(t,8).toLowerCase()==="optional"?(l=n.substr(t,8),t+=8):(l=null,h('"optional"')),l===null&&(n.substr(t,8).toLowerCase()==="required"?(l=n.substr(t,8),t+=8):(l=null,h('"required"')),l===null&&(l=U())),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function El(){var i,e,l,u,f,p;if(f=t,i=U(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function za(){var i,e,l;if(l=t,e=g(),e!==null)for(i=[];e!==null;)i.push(e),e=g();else i=null;return i!==null&&(i=function(u,f){b=parseInt(f.join(""))}(l,i)),i===null&&(t=l),i}function Xa(){var i,e;return e=t,i=Sl(),i!==null&&(i=function(l){b=n.substring(t,l)}(e)),i===null&&(t=e),i}function Sl(){var i,e,l,u,f,p,m,v;if(m=t,i=zr(),i!==null)if(e=W(),e!==null)if(l=Zr(),l!==null){for(u=[],v=t,f=le(),f!==null?(p=Vn(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=le(),f!==null?(p=Vn(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);u!==null?i=[i,e,l,u]:(i=null,t=m)}else i=null,t=m;else i=null,t=m;else i=null,t=m;return i}function zr(){var i;return i=Xr(),i===null&&(i=Qr()),i}function Xr(){var i;return n.substr(t,4).toLowerCase()==="text"?(i=n.substr(t,4),t+=4):(i=null,h('"text"')),i===null&&(n.substr(t,5).toLowerCase()==="image"?(i=n.substr(t,5),t+=5):(i=null,h('"image"')),i===null&&(n.substr(t,5).toLowerCase()==="audio"?(i=n.substr(t,5),t+=5):(i=null,h('"audio"')),i===null&&(n.substr(t,5).toLowerCase()==="video"?(i=n.substr(t,5),t+=5):(i=null,h('"video"')),i===null&&(n.substr(t,11).toLowerCase()==="application"?(i=n.substr(t,11),t+=11):(i=null,h('"application"')),i===null&&(i=ln()))))),i}function Qr(){var i;return n.substr(t,7).toLowerCase()==="message"?(i=n.substr(t,7),t+=7):(i=null,h('"message"')),i===null&&(n.substr(t,9).toLowerCase()==="multipart"?(i=n.substr(t,9),t+=9):(i=null,h('"multipart"')),i===null&&(i=ln())),i}function ln(){var i;return i=U(),i===null&&(i=an()),i}function an(){var i,e,l;return l=t,n.substr(t,2).toLowerCase()==="x-"?(i=n.substr(t,2),t+=2):(i=null,h('"x-"')),i!==null?(e=U(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function Zr(){var i;return i=ln(),i===null&&(i=U()),i}function Vn(){var i,e,l,u;return u=t,i=U(),i!==null?(e=G(),e!==null?(l=qn(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function qn(){var i;return i=U(),i===null&&(i=Ie()),i}function yl(){var i,e,l,u;return u=t,i=Al(),i!==null?(e=ve(),e!==null?(l=nn(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Al(){var i,e,l;if(l=t,e=g(),e!==null)for(i=[];e!==null;)i.push(e),e=g();else i=null;return i!==null&&(i=function(u,f){b.value=parseInt(f.join(""))}(l,i)),i===null&&(t=l),i}function Cl(){var i,e;return e=t,i=es(),i!==null&&(i=function(l,u){b=u}(e,i)),i===null&&(t=e),i}function Qa(){var i,e,l,u,f,p,m;if(f=t,p=t,i=on(),i!==null){for(e=[],m=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v,S){b.event=S.join("").toLowerCase()}(f,i[0])),i===null&&(t=f),i}function on(){var i,e,l,u,f,p;if(f=t,i=x(),i!==null){for(e=[],p=t,n.charCodeAt(t)===46?(l=".",t++):(l=null,h('"."')),l!==null?(u=x(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,n.charCodeAt(t)===46?(l=".",t++):(l=null,h('"."')),l!==null?(u=x(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function un(){var i,e,l,u,f,p,m;if(f=t,p=t,i=de(),i===null&&(i=Lt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=ei(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=ei(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){var S=b.tag;try{b=new fs(b.uri,b.display_name,b.params),S&&b.setParam("tag",S)}catch{b=-1}}()),i===null&&(t=f),i}function ei(){var i;return i=cn(),i===null&&(i=Ge()),i}function cn(){var i,e,l,u,f;return u=t,f=t,n.substr(t,3).toLowerCase()==="tag"?(i=n.substr(t,3),t+=3):(i=null,h('"tag"')),i!==null?(e=G(),e!==null?(l=U(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.tag=m}(u,i[2])),i===null&&(t=u),i}function ti(){var i,e,l;if(l=t,e=g(),e!==null)for(i=[];e!==null;)i.push(e),e=g();else i=null;return i!==null&&(i=function(u,f){b=parseInt(f.join(""))}(l,i)),i===null&&(t=l),i}function Za(){var i,e;return e=t,i=es(),i!==null&&(i=function(l,u){b=u}(e,i)),i===null&&(t=e),i}function eo(){var i,e,l,u,f,p,m,v,S,O;for(v=t,S=t,i=[],e=$t();e!==null;)i.push(e),e=$t();if(i!==null)if(e=Pe(),e!==null)if(l=we(),l!==null)if(u=be(),u!==null){for(f=[],O=t,p=le(),p!==null?(m=Ge(),m!==null?p=[p,m]:(p=null,t=O)):(p=null,t=O);p!==null;)f.push(p),O=t,p=le(),p!==null?(m=Ge(),m!==null?p=[p,m]:(p=null,t=O)):(p=null,t=O);f!==null?i=[i,e,l,u,f]:(i=null,t=S)}else i=null,t=S;else i=null,t=S;else i=null,t=S;else i=null,t=S;return i!==null&&(i=function(ie){try{b=new fs(b.uri,b.display_name,b.params)}catch{b=-1}}()),i===null&&(t=v),i}function to(){var i;return i=si(),i}function si(){var i,e,l,u,f,p,m,v;if(m=t,n.substr(t,6).toLowerCase()==="digest"?(i=n.substr(t,6),t+=6):(i=null,h('"Digest"')),i!==null)if(e=ve(),e!==null)if(l=ss(),l!==null){for(u=[],v=t,f=Ce(),f!==null?(p=ss(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=Ce(),f!==null?(p=ss(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);u!==null?i=[i,e,l,u]:(i=null,t=m)}else i=null,t=m;else i=null,t=m;else i=null,t=m;return i===null&&(i=Bn()),i}function Bn(){var i,e,l,u,f,p,m,v;if(m=t,i=U(),i!==null)if(e=ve(),e!==null)if(l=xs(),l!==null){for(u=[],v=t,f=Ce(),f!==null?(p=xs(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=Ce(),f!==null?(p=xs(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);u!==null?i=[i,e,l,u]:(i=null,t=m)}else i=null,t=m;else i=null,t=m;else i=null,t=m;return i}function xs(){var i,e,l,u;return u=t,i=U(),i!==null?(e=G(),e!==null?(l=U(),l===null&&(l=Ie()),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function ss(){var i;return i=fn(),i===null&&(i=ri(),i===null&&(i=_n(),i===null&&(i=li(),i===null&&(i=ai(),i===null&&(i=oi(),i===null&&(i=ui(),i===null&&(i=xs()))))))),i}function fn(){var i,e,l,u;return u=t,n.substr(t,5).toLowerCase()==="realm"?(i=n.substr(t,5),t+=5):(i=null,h('"realm"')),i!==null?(e=G(),e!==null?(l=ni(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function ni(){var i,e;return e=t,i=Oe(),i!==null&&(i=function(l,u){b.realm=u}(e,i)),i===null&&(t=e),i}function ri(){var i,e,l,u,f,p,m,v,S;if(v=t,n.substr(t,6).toLowerCase()==="domain"?(i=n.substr(t,6),t+=6):(i=null,h('"domain"')),i!==null)if(e=G(),e!==null)if(l=st(),l!==null)if(u=hn(),u!==null){if(f=[],S=t,m=I(),m!==null)for(p=[];m!==null;)p.push(m),m=I();else p=null;for(p!==null?(m=hn(),m!==null?p=[p,m]:(p=null,t=S)):(p=null,t=S);p!==null;){if(f.push(p),S=t,m=I(),m!==null)for(p=[];m!==null;)p.push(m),m=I();else p=null;p!==null?(m=hn(),m!==null?p=[p,m]:(p=null,t=S)):(p=null,t=S)}f!==null?(p=at(),p!==null?i=[i,e,l,u,f,p]:(i=null,t=v)):(i=null,t=v)}else i=null,t=v;else i=null,t=v;else i=null,t=v;else i=null,t=v;return i}function hn(){var i;return i=Pn(),i===null&&(i=en()),i}function _n(){var i,e,l,u;return u=t,n.substr(t,5).toLowerCase()==="nonce"?(i=n.substr(t,5),t+=5):(i=null,h('"nonce"')),i!==null?(e=G(),e!==null?(l=ii(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function ii(){var i,e;return e=t,i=Oe(),i!==null&&(i=function(l,u){b.nonce=u}(e,i)),i===null&&(t=e),i}function li(){var i,e,l,u,f;return u=t,f=t,n.substr(t,6).toLowerCase()==="opaque"?(i=n.substr(t,6),t+=6):(i=null,h('"opaque"')),i!==null?(e=G(),e!==null?(l=Oe(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.opaque=m}(u,i[2])),i===null&&(t=u),i}function ai(){var i,e,l,u,f;return u=t,n.substr(t,5).toLowerCase()==="stale"?(i=n.substr(t,5),t+=5):(i=null,h('"stale"')),i!==null?(e=G(),e!==null?(f=t,n.substr(t,4).toLowerCase()==="true"?(l=n.substr(t,4),t+=4):(l=null,h('"true"')),l!==null&&(l=function(p){b.stale=!0}()),l===null&&(t=f),l===null&&(f=t,n.substr(t,5).toLowerCase()==="false"?(l=n.substr(t,5),t+=5):(l=null,h('"false"')),l!==null&&(l=function(p){b.stale=!1}()),l===null&&(t=f)),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function oi(){var i,e,l,u,f;return u=t,f=t,n.substr(t,9).toLowerCase()==="algorithm"?(i=n.substr(t,9),t+=9):(i=null,h('"algorithm"')),i!==null?(e=G(),e!==null?(n.substr(t,3).toLowerCase()==="md5"?(l=n.substr(t,3),t+=3):(l=null,h('"MD5"')),l===null&&(n.substr(t,8).toLowerCase()==="md5-sess"?(l=n.substr(t,8),t+=8):(l=null,h('"MD5-sess"')),l===null&&(l=U())),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.algorithm=m.toUpperCase()}(u,i[2])),i===null&&(t=u),i}function ui(){var i,e,l,u,f,p,m,v,S,O;if(v=t,n.substr(t,3).toLowerCase()==="qop"?(i=n.substr(t,3),t+=3):(i=null,h('"qop"')),i!==null)if(e=G(),e!==null)if(l=st(),l!==null){if(S=t,u=dn(),u!==null){for(f=[],O=t,n.charCodeAt(t)===44?(p=",",t++):(p=null,h('","')),p!==null?(m=dn(),m!==null?p=[p,m]:(p=null,t=O)):(p=null,t=O);p!==null;)f.push(p),O=t,n.charCodeAt(t)===44?(p=",",t++):(p=null,h('","')),p!==null?(m=dn(),m!==null?p=[p,m]:(p=null,t=O)):(p=null,t=O);f!==null?u=[u,f]:(u=null,t=S)}else u=null,t=S;u!==null?(f=at(),f!==null?i=[i,e,l,u,f]:(i=null,t=v)):(i=null,t=v)}else i=null,t=v;else i=null,t=v;else i=null,t=v;return i}function dn(){var i,e;return e=t,n.substr(t,8).toLowerCase()==="auth-int"?(i=n.substr(t,8),t+=8):(i=null,h('"auth-int"')),i===null&&(n.substr(t,4).toLowerCase()==="auth"?(i=n.substr(t,4),t+=4):(i=null,h('"auth"')),i===null&&(i=U())),i!==null&&(i=function(l,u){b.qop||(b.qop=[]),b.qop.push(u.toLowerCase())}(e,i)),i===null&&(t=e),i}function Gn(){var i,e,l,u,f,p;if(f=t,i=U(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function so(){var i,e,l,u,f,p,m;if(f=t,p=t,i=Wn(),i!==null){for(e=[],m=t,l=Ce(),l!==null?(u=Wn(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=Ce(),l!==null?(u=Wn(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){var S,O;for(O=b.multi_header.length,S=0;S<O;S++)if(b.multi_header[S].parsed===null){b=null;break}b!==null?b=b.multi_header:b=-1}()),i===null&&(t=f),i}function Wn(){var i,e,l,u,f,p,m;if(f=t,p=t,i=Lt(),i!==null){for(e=[],m=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){var S;b.multi_header||(b.multi_header=[]);try{S=new fs(b.uri,b.display_name,b.params),delete b.uri,delete b.display_name,delete b.params}catch{S=null}b.multi_header.push({possition:t,offset:v,parsed:S})}(f)),i===null&&(t=f),i}function Kn(){var i,e,l,u,f,p,m;if(f=t,p=t,n.substr(t,3).toLowerCase()==="sip"?(i=n.substr(t,3),t+=3):(i=null,h('"SIP"')),i===null&&(i=U()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=ci(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=ci(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v,S){if(b.protocol=S.toLowerCase(),b.params||(b.params={}),b.params.text&&b.params.text[0]==='"'){var O=b.params.text;b.text=O.substring(1,O.length-1),delete b.params.text}}(f,i[0])),i===null&&(t=f),i}function ci(){var i;return i=Yn(),i===null&&(i=Ge()),i}function Yn(){var i,e,l,u,f,p;if(f=t,p=t,n.substr(t,5).toLowerCase()==="cause"?(i=n.substr(t,5),t+=5):(i=null,h('"cause"')),i!==null)if(e=G(),e!==null){if(u=g(),u!==null)for(l=[];u!==null;)l.push(u),u=g();else l=null;l!==null?i=[i,e,l]:(i=null,t=p)}else i=null,t=p;else i=null,t=p;return i!==null&&(i=function(m,v){b.cause=parseInt(v.join(""))}(f,i[2])),i===null&&(t=f),i}function Rl(){var i,e,l,u,f,p;if(f=t,i=U(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function no(){var i,e,l,u,f,p;if(f=t,i=Jn(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=Jn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=Jn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Jn(){var i,e,l,u,f,p;if(f=t,i=Lt(),i!==null){for(e=[],p=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function zn(){var i,e,l,u,f,p;if(f=t,i=Il(),i!==null){for(e=[],p=t,l=le(),l!==null?(u=Xn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=le(),l!==null?(u=Xn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Il(){var i,e;return e=t,n.substr(t,6).toLowerCase()==="active"?(i=n.substr(t,6),t+=6):(i=null,h('"active"')),i===null&&(n.substr(t,7).toLowerCase()==="pending"?(i=n.substr(t,7),t+=7):(i=null,h('"pending"')),i===null&&(n.substr(t,10).toLowerCase()==="terminated"?(i=n.substr(t,10),t+=10):(i=null,h('"terminated"')),i===null&&(i=U()))),i!==null&&(i=function(l){b.state=n.substring(t,l)}(e)),i===null&&(t=e),i}function Xn(){var i,e,l,u,f;return u=t,f=t,n.substr(t,6).toLowerCase()==="reason"?(i=n.substr(t,6),t+=6):(i=null,h('"reason"')),i!==null?(e=G(),e!==null?(l=Qn(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){typeof m<"u"&&(b.reason=m)}(u,i[2])),i===null&&(t=u),i===null&&(u=t,f=t,n.substr(t,7).toLowerCase()==="expires"?(i=n.substr(t,7),t+=7):(i=null,h('"expires"')),i!==null?(e=G(),e!==null?(l=es(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){typeof m<"u"&&(b.expires=m)}(u,i[2])),i===null&&(t=u),i===null&&(u=t,f=t,n.substr(t,11).toLowerCase()==="retry_after"?(i=n.substr(t,11),t+=11):(i=null,h('"retry_after"')),i!==null?(e=G(),e!==null?(l=es(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){typeof m<"u"&&(b.retry_after=m)}(u,i[2])),i===null&&(t=u),i===null&&(i=Ge()))),i}function Qn(){var i;return n.substr(t,11).toLowerCase()==="deactivated"?(i=n.substr(t,11),t+=11):(i=null,h('"deactivated"')),i===null&&(n.substr(t,9).toLowerCase()==="probation"?(i=n.substr(t,9),t+=9):(i=null,h('"probation"')),i===null&&(n.substr(t,8).toLowerCase()==="rejected"?(i=n.substr(t,8),t+=8):(i=null,h('"rejected"')),i===null&&(n.substr(t,7).toLowerCase()==="timeout"?(i=n.substr(t,7),t+=7):(i=null,h('"timeout"')),i===null&&(n.substr(t,6).toLowerCase()==="giveup"?(i=n.substr(t,6),t+=6):(i=null,h('"giveup"')),i===null&&(n.substr(t,10).toLowerCase()==="noresource"?(i=n.substr(t,10),t+=10):(i=null,h('"noresource"')),i===null&&(n.substr(t,9).toLowerCase()==="invariant"?(i=n.substr(t,9),t+=9):(i=null,h('"invariant"')),i===null&&(i=U()))))))),i}function bl(){var i;return i=B(),i=i!==null?i:"",i}function ro(){var i,e,l,u,f,p;if(f=t,i=U(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i=i!==null?i:"",i}function io(){var i,e,l,u,f,p,m;if(f=t,p=t,i=de(),i===null&&(i=Lt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=fi(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=fi(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){var S=b.tag;try{b=new fs(b.uri,b.display_name,b.params),S&&b.setParam("tag",S)}catch{b=-1}}()),i===null&&(t=f),i}function fi(){var i;return i=cn(),i===null&&(i=Ge()),i}function hi(){var i,e,l,u,f,p;if(f=t,i=Zn(),i!==null){for(e=[],p=t,l=Ce(),l!==null?(u=Zn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=Ce(),l!==null?(u=Zn(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Zn(){var i,e,l,u,f,p,m,v;if(m=t,i=Ti(),i!==null)if(e=ve(),e!==null)if(l=Si(),l!==null){for(u=[],v=t,f=le(),f!==null?(p=Ps(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=le(),f!==null?(p=Ps(),p!==null?f=[f,p]:(f=null,t=v)):(f=null,t=v);u!==null?i=[i,e,l,u]:(i=null,t=m)}else i=null,t=m;else i=null,t=m;else i=null,t=m;return i}function Ps(){var i;return i=er(),i===null&&(i=_i(),i===null&&(i=di(),i===null&&(i=pi(),i===null&&(i=mi(),i===null&&(i=Ge()))))),i}function er(){var i,e,l,u,f;return u=t,f=t,n.substr(t,3).toLowerCase()==="ttl"?(i=n.substr(t,3),t+=3):(i=null,h('"ttl"')),i!==null?(e=G(),e!==null?(l=tr(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.ttl=m}(u,i[2])),i===null&&(t=u),i}function _i(){var i,e,l,u,f;return u=t,f=t,n.substr(t,5).toLowerCase()==="maddr"?(i=n.substr(t,5),t+=5):(i=null,h('"maddr"')),i!==null?(e=G(),e!==null?(l=Zt(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.maddr=m}(u,i[2])),i===null&&(t=u),i}function di(){var i,e,l,u,f;return u=t,f=t,n.substr(t,8).toLowerCase()==="received"?(i=n.substr(t,8),t+=8):(i=null,h('"received"')),i!==null?(e=G(),e!==null?(l=ot(),l===null&&(l=zs()),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.received=m}(u,i[2])),i===null&&(t=u),i}function pi(){var i,e,l,u,f;return u=t,f=t,n.substr(t,6).toLowerCase()==="branch"?(i=n.substr(t,6),t+=6):(i=null,h('"branch"')),i!==null?(e=G(),e!==null?(l=U(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.branch=m}(u,i[2])),i===null&&(t=u),i}function mi(){var i,e,l,u,f;return u=t,n.substr(t,5).toLowerCase()==="rport"?(i=n.substr(t,5),t+=5):(i=null,h('"rport"')),i!==null?(f=t,e=G(),e!==null?(l=gi(),l!==null?e=[e,l]:(e=null,t=f)):(e=null,t=f),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i}function gi(){var i,e,l,u,f,p,m;return p=t,m=t,i=g(),i=i!==null?i:"",i!==null?(e=g(),e=e!==null?e:"",e!==null?(l=g(),l=l!==null?l:"",l!==null?(u=g(),u=u!==null?u:"",u!==null?(f=g(),f=f!==null?f:"",f!==null?i=[i,e,l,u,f]:(i=null,t=m)):(i=null,t=m)):(i=null,t=m)):(i=null,t=m)):(i=null,t=m),i!==null&&(i=function(v,S){b.rport=parseInt(S.join(""))}(p,i)),i===null&&(t=p),i}function Ti(){var i,e,l,u,f,p;return p=t,i=vi(),i!==null?(e=W(),e!==null?(l=U(),l!==null?(u=W(),u!==null?(f=Ei(),f!==null?i=[i,e,l,u,f]:(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p)):(i=null,t=p),i}function vi(){var i,e;return e=t,n.substr(t,3).toLowerCase()==="sip"?(i=n.substr(t,3),t+=3):(i=null,h('"SIP"')),i===null&&(i=U()),i!==null&&(i=function(l,u){b.protocol=u}(e,i)),i===null&&(t=e),i}function Ei(){var i,e;return e=t,n.substr(t,3).toLowerCase()==="udp"?(i=n.substr(t,3),t+=3):(i=null,h('"UDP"')),i===null&&(n.substr(t,3).toLowerCase()==="tcp"?(i=n.substr(t,3),t+=3):(i=null,h('"TCP"')),i===null&&(n.substr(t,3).toLowerCase()==="tls"?(i=n.substr(t,3),t+=3):(i=null,h('"TLS"')),i===null&&(n.substr(t,4).toLowerCase()==="sctp"?(i=n.substr(t,4),t+=4):(i=null,h('"SCTP"')),i===null&&(i=U())))),i!==null&&(i=function(l,u){b.transport=u}(e,i)),i===null&&(t=e),i}function Si(){var i,e,l,u,f;return u=t,i=yi(),i!==null?(f=t,e=ye(),e!==null?(l=Ai(),l!==null?e=[e,l]:(e=null,t=f)):(e=null,t=f),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i}function yi(){var i,e;return e=t,i=ot(),i===null&&(i=Nn(),i===null&&(i=us())),i!==null&&(i=function(l){b.host=n.substring(t,l)}(e)),i===null&&(t=e),i}function Ai(){var i,e,l,u,f,p,m;return p=t,m=t,i=g(),i=i!==null?i:"",i!==null?(e=g(),e=e!==null?e:"",e!==null?(l=g(),l=l!==null?l:"",l!==null?(u=g(),u=u!==null?u:"",u!==null?(f=g(),f=f!==null?f:"",f!==null?i=[i,e,l,u,f]:(i=null,t=m)):(i=null,t=m)):(i=null,t=m)):(i=null,t=m)):(i=null,t=m),i!==null&&(i=function(v,S){b.port=parseInt(S.join(""))}(p,i)),i===null&&(t=p),i}function tr(){var i,e,l,u,f;return u=t,f=t,i=g(),i!==null?(e=g(),e=e!==null?e:"",e!==null?(l=g(),l=l!==null?l:"",l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){return parseInt(m.join(""))}(u,i)),i===null&&(t=u),i}function Ci(){var i;return i=si(),i}function lo(){var i,e,l,u,f,p;if(f=t,i=wl(),i!==null){for(e=[],p=t,l=le(),l!==null?(u=sr(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=le(),l!==null?(u=sr(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function wl(){var i,e;return e=t,i=es(),i!==null&&(i=function(l,u){b.expires=u}(e,i)),i===null&&(t=e),i}function sr(){var i;return i=nr(),i===null&&(i=Ge()),i}function nr(){var i,e,l,u,f;return u=t,f=t,n.substr(t,9).toLowerCase()==="refresher"?(i=n.substr(t,9),t+=9):(i=null,h('"refresher"')),i!==null?(e=G(),e!==null?(n.substr(t,3).toLowerCase()==="uac"?(l=n.substr(t,3),t+=3):(l=null,h('"uac"')),l===null&&(n.substr(t,3).toLowerCase()==="uas"?(l=n.substr(t,3),t+=3):(l=null,h('"uas"'))),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.refresher=m.toLowerCase()}(u,i[2])),i===null&&(t=u),i}function Ol(){var i,e,l,u;return u=t,i=U(),i!==null?(e=D(),e!==null?(l=Dl(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Dl(){var i,e;for(i=[],e=q(),e===null&&(e=F(),e===null&&(e=ve()));e!==null;)i.push(e),e=q(),e===null&&(e=F(),e===null&&(e=ve()));return i}function Nl(){var i,e;for(i=[],e=A();e!==null;)i.push(e),e=A();return i}function ao(){var i,e,l;return l=t,n.substr(t,5)==="uuid:"?(i="uuid:",t+=5):(i=null,h('"uuid:"')),i!==null?(e=Ul(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function Ul(){var i,e,l,u,f,p,m,v,S,O,ie;return O=t,ie=t,i=Ft(),i!==null?(n.charCodeAt(t)===45?(e="-",t++):(e=null,h('"-"')),e!==null?(l=Ht(),l!==null?(n.charCodeAt(t)===45?(u="-",t++):(u=null,h('"-"')),u!==null?(f=Ht(),f!==null?(n.charCodeAt(t)===45?(p="-",t++):(p=null,h('"-"')),p!==null?(m=Ht(),m!==null?(n.charCodeAt(t)===45?(v="-",t++):(v=null,h('"-"')),v!==null?(S=Ri(),S!==null?i=[i,e,l,u,f,p,m,v,S]:(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie)):(i=null,t=ie),i!==null&&(i=function(Ue,wt){b=n.substring(t+5,Ue)}(O,i[0])),i===null&&(t=O),i}function Ht(){var i,e,l,u,f;return f=t,i=E(),i!==null?(e=E(),e!==null?(l=E(),l!==null?(u=E(),u!==null?i=[i,e,l,u]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i}function Ft(){var i,e,l;return l=t,i=Ht(),i!==null?(e=Ht(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function Ri(){var i,e,l,u;return u=t,i=Ht(),i!==null?(e=Ht(),e!==null?(l=Ht(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function xl(){var i,e,l,u,f,p,m;if(f=t,p=t,i=de(),i===null&&(i=Lt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);l!==null;)e.push(l),m=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=p)}else i=null,t=p;return i!==null&&(i=function(v){try{b=new fs(b.uri,b.display_name,b.params)}catch{b=-1}}()),i===null&&(t=f),i}function oo(){var i,e,l,u,f,p;if(f=t,i=Pl(),i!==null){for(e=[],p=t,l=le(),l!==null?(u=rr(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);l!==null;)e.push(l),p=t,l=le(),l!==null?(u=rr(),u!==null?l=[l,u]:(l=null,t=p)):(l=null,t=p);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Pl(){var i,e,l,u,f,p;return u=t,f=t,i=tt(),i!==null?(p=t,n.charCodeAt(t)===64?(e="@",t++):(e=null,h('"@"')),e!==null?(l=tt(),l!==null?e=[e,l]:(e=null,t=p)):(e=null,t=p),e=e!==null?e:"",e!==null?i=[i,e]:(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(m){b.call_id=n.substring(t,m)}(u)),i===null&&(t=u),i}function rr(){var i;return i=ir(),i===null&&(i=Ii(),i===null&&(i=bi(),i===null&&(i=Ge()))),i}function ir(){var i,e,l,u,f;return u=t,f=t,n.substr(t,6)==="to-tag"?(i="to-tag",t+=6):(i=null,h('"to-tag"')),i!==null?(e=G(),e!==null?(l=U(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.to_tag=m}(u,i[2])),i===null&&(t=u),i}function Ii(){var i,e,l,u,f;return u=t,f=t,n.substr(t,8)==="from-tag"?(i="from-tag",t+=8):(i=null,h('"from-tag"')),i!==null?(e=G(),e!==null?(l=U(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(p,m){b.from_tag=m}(u,i[2])),i===null&&(t=u),i}function bi(){var i,e;return e=t,n.substr(t,10)==="early-only"?(i="early-only",t+=10):(i=null,h('"early-only"')),i!==null&&(i=function(l){b.early_only=!0}()),i===null&&(t=e),i}function kl(i){i.sort();for(var e=null,l=[],u=0;u<i.length;u++)i[u]!==e&&(l.push(i[u]),e=i[u]);return l}function uo(){for(var i=1,e=1,l=!1,u=0;u<Math.max(t,r);u++){var f=n.charAt(u);f===`
75
+ `?(l||i++,e=1,l=!1):f==="\r"||f==="\u2028"||f==="\u2029"?(i++,e=1,l=!0):(e++,l=!1)}return{line:i,column:e}}var Ml=ys(),fs=$u(),b={},w=o[a]();if(w===null||t!==n.length){var wi=Math.max(t,r),Oi=wi<n.length?n.charAt(wi):null,Ll=uo();return new this.SyntaxError(kl(_),Oi,wi,Ll.line,Ll.column),-1}return b},toSource:function(){return this._source}};return s.SyntaxError=function(n,a,o,t,r){function _(h,d){var g,T;switch(h.length){case 0:g="end of input";break;case 1:g=h[0];break;default:g=h.slice(0,h.length-1).join(", ")+" or "+h[h.length-1]}return T=d?c(d):"end of input","Expected "+g+" but "+T+" found."}this.name="SyntaxError",this.expected=n,this.found=a,this.message=_(n,a),this.offset=o,this.line=t,this.column=r},s.SyntaxError.prototype=Error.prototype,s}()),ko}var Mo,sf;function ys(){if(sf)return Mo;sf=1;const c=De,s=yt(),n=Qt();return Mo=class ch{static parse(o){if(o=n.parse(o,"SIP_URI"),o!==-1)return o}constructor(o,t,r,_,h={},d={}){if(!r)throw new TypeError('missing or invalid "host" parameter');this._parameters={},this._headers={},this._scheme=o||c.SIP,this._user=t,this._host=r,this._port=_;for(const g in h)Object.prototype.hasOwnProperty.call(h,g)&&this.setParam(g,h[g]);for(const g in d)Object.prototype.hasOwnProperty.call(d,g)&&this.setHeader(g,d[g])}get scheme(){return this._scheme}set scheme(o){this._scheme=o.toLowerCase()}get user(){return this._user}set user(o){this._user=o}get host(){return this._host}set host(o){this._host=o.toLowerCase()}get port(){return this._port}set port(o){this._port=o===0?o:parseInt(o,10)||null}setParam(o,t){o&&(this._parameters[o.toLowerCase()]=typeof t>"u"||t===null?null:t.toString())}getParam(o){if(o)return this._parameters[o.toLowerCase()]}hasParam(o){if(o)return this._parameters.hasOwnProperty(o.toLowerCase())&&!0||!1}deleteParam(o){if(o=o.toLowerCase(),this._parameters.hasOwnProperty(o)){const t=this._parameters[o];return delete this._parameters[o],t}}clearParams(){this._parameters={}}setHeader(o,t){this._headers[s.headerize(o)]=Array.isArray(t)?t:[t]}getHeader(o){if(o)return this._headers[s.headerize(o)]}hasHeader(o){if(o)return this._headers.hasOwnProperty(s.headerize(o))&&!0||!1}deleteHeader(o){if(o=s.headerize(o),this._headers.hasOwnProperty(o)){const t=this._headers[o];return delete this._headers[o],t}}clearHeaders(){this._headers={}}clone(){return new ch(this._scheme,this._user,this._host,this._port,JSON.parse(JSON.stringify(this._parameters)),JSON.parse(JSON.stringify(this._headers)))}toString(){const o=[];let t=`${this._scheme}:`;this._user&&(t+=`${s.escapeUser(this._user)}@`),t+=this._host,(this._port||this._port===0)&&(t+=`:${this._port}`);for(const r in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,r)&&(t+=`;${r}`,this._parameters[r]!==null&&(t+=`=${this._parameters[r]}`));for(const r in this._headers)if(Object.prototype.hasOwnProperty.call(this._headers,r))for(const _ of this._headers[r])o.push(`${r}=${_}`);return o.length>0&&(t+=`?${o.join("&")}`),t}toAor(o){let t=`${this._scheme}:`;return this._user&&(t+=`${s.escapeUser(this._user)}@`),t+=this._host,o&&(this._port||this._port===0)&&(t+=`:${this._port}`),t}},Mo}var nf;function yt(){if(nf)return et;nf=1;const c=De,s=ys(),n=Qt();et.str_utf8_length=r=>unescape(encodeURIComponent(r)).length;const a=et.isFunction=r=>r!==void 0?Object.prototype.toString.call(r)==="[object Function]":!1;et.isString=r=>r!==void 0?Object.prototype.toString.call(r)==="[object String]":!1,et.isDecimal=r=>!isNaN(r)&&parseFloat(r)===parseInt(r,10),et.isEmpty=r=>r===null||r===""||r===void 0||Array.isArray(r)&&r.length===0||typeof r=="number"&&isNaN(r),et.hasMethods=function(r,..._){for(const h of _)if(a(r[h]))return!1;return!0};const o=et.createRandomToken=(r,_=32)=>{let h,d,g="";for(h=0;h<r;h++)d=Math.random()*_|0,g+=d.toString(_);return g};et.newTag=()=>o(10),et.newUUID=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,_=>{const h=Math.random()*16|0;return(_==="x"?h:h&3|8).toString(16)}),et.hostType=r=>{if(r){if(r=n.parse(r,"host"),r!==-1)return r.host_type}else return};const t=et.escapeUser=r=>encodeURIComponent(decodeURIComponent(r)).replace(/%3A/ig,":").replace(/%2B/ig,"+").replace(/%3F/ig,"?").replace(/%2F/ig,"/");return et.normalizeTarget=(r,_)=>{if(r){if(r instanceof s)return r;if(typeof r=="string"){const h=r.split("@");let d,g;switch(h.length){case 1:if(!_)return;d=r,g=_;break;case 2:d=h[0],g=h[1];break;default:d=h.slice(0,h.length-1).join("@"),g=h[h.length-1]}d=d.replace(/^(sips?|tel):/i,""),/^[-.()]*\+?[0-9\-.()]+$/.test(d)&&(d=d.replace(/[-.()]/g,"")),r=`${c.SIP}:${t(d)}@${g}`;let T;return(T=s.parse(r))?T:void 0}else return}else return},et.headerize=r=>{const _={"Call-Id":"Call-ID",Cseq:"CSeq","Www-Authenticate":"WWW-Authenticate"},h=r.toLowerCase().replace(/_/g,"-").split("-");let d="";const g=h.length;let T;for(T=0;T<g;T++)T!==0&&(d+="-"),d+=h[T].charAt(0).toUpperCase()+h[T].substring(1);return _[d]&&(d=_[d]),d},et.sipErrorCause=r=>{for(const _ in c.SIP_ERROR_CAUSES)if(c.SIP_ERROR_CAUSES[_].indexOf(r)!==-1)return c.causes[_];return c.causes.SIP_FAILURE_CODE},et.getRandomTestNetIP=()=>{function r(_,h){return Math.floor(Math.random()*(h-_+1)+_)}return`192.0.2.${r(1,254)}`},et.calculateMD5=r=>{function _(Ee,Ae){return Ee<<Ae|Ee>>>32-Ae}function h(Ee,Ae){const Ie=Ee&2147483648,Oe=Ae&2147483648,pe=Ee&1073741824,ue=Ae&1073741824,de=(Ee&1073741823)+(Ae&1073741823);return pe&ue?de^2147483648^Ie^Oe:pe|ue?de&1073741824?de^3221225472^Ie^Oe:de^1073741824^Ie^Oe:de^Ie^Oe}function d(Ee,Ae,Ie){return Ee&Ae|~Ee&Ie}function g(Ee,Ae,Ie){return Ee&Ie|Ae&~Ie}function T(Ee,Ae,Ie){return Ee^Ae^Ie}function E(Ee,Ae,Ie){return Ae^(Ee|~Ie)}function y(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=h(Ee,h(h(d(Ae,Ie,Oe),pe),de)),h(_(Ee,ue),Ae)}function A(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=h(Ee,h(h(g(Ae,Ie,Oe),pe),de)),h(_(Ee,ue),Ae)}function C(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=h(Ee,h(h(T(Ae,Ie,Oe),pe),de)),h(_(Ee,ue),Ae)}function I(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=h(Ee,h(h(E(Ae,Ie,Oe),pe),de)),h(_(Ee,ue),Ae)}function H(Ee){let Ae;const Ie=Ee.length,Oe=Ie+8,ue=((Oe-Oe%64)/64+1)*16,de=new Array(ue-1);let we=0,Ne=0;for(;Ne<Ie;)Ae=(Ne-Ne%4)/4,we=Ne%4*8,de[Ae]=de[Ae]|Ee.charCodeAt(Ne)<<we,Ne++;return Ae=(Ne-Ne%4)/4,we=Ne%4*8,de[Ae]=de[Ae]|128<<we,de[ue-2]=Ie<<3,de[ue-1]=Ie>>>29,de}function $(Ee){let Ae="",Ie="",Oe,pe;for(pe=0;pe<=3;pe++)Oe=Ee>>>pe*8&255,Ie=`0${Oe.toString(16)}`,Ae=Ae+Ie.substr(Ie.length-2,2);return Ae}function oe(Ee){let Ae="";for(let Ie=0;Ie<Ee.length;Ie++){const Oe=Ee.charCodeAt(Ie);Oe<128?Ae+=String.fromCharCode(Oe):Oe>127&&Oe<2048?(Ae+=String.fromCharCode(Oe>>6|192),Ae+=String.fromCharCode(Oe&63|128)):(Ae+=String.fromCharCode(Oe>>12|224),Ae+=String.fromCharCode(Oe>>6&63|128),Ae+=String.fromCharCode(Oe&63|128))}return Ae}let N=[],j,Se,ve,k,D,B,q,J,F;const X=7,U=12,x=17,se=22,tt=5,ee=9,W=14,G=20,re=4,ge=11,be=16,Pe=23,Ce=6,le=10,ye=15,st=21;for(r=oe(r),N=H(r),B=1732584193,q=4023233417,J=2562383102,F=271733878,j=0;j<N.length;j+=16)Se=B,ve=q,k=J,D=F,B=y(B,q,J,F,N[j+0],X,3614090360),F=y(F,B,q,J,N[j+1],U,3905402710),J=y(J,F,B,q,N[j+2],x,606105819),q=y(q,J,F,B,N[j+3],se,3250441966),B=y(B,q,J,F,N[j+4],X,4118548399),F=y(F,B,q,J,N[j+5],U,1200080426),J=y(J,F,B,q,N[j+6],x,2821735955),q=y(q,J,F,B,N[j+7],se,4249261313),B=y(B,q,J,F,N[j+8],X,1770035416),F=y(F,B,q,J,N[j+9],U,2336552879),J=y(J,F,B,q,N[j+10],x,4294925233),q=y(q,J,F,B,N[j+11],se,2304563134),B=y(B,q,J,F,N[j+12],X,1804603682),F=y(F,B,q,J,N[j+13],U,4254626195),J=y(J,F,B,q,N[j+14],x,2792965006),q=y(q,J,F,B,N[j+15],se,1236535329),B=A(B,q,J,F,N[j+1],tt,4129170786),F=A(F,B,q,J,N[j+6],ee,3225465664),J=A(J,F,B,q,N[j+11],W,643717713),q=A(q,J,F,B,N[j+0],G,3921069994),B=A(B,q,J,F,N[j+5],tt,3593408605),F=A(F,B,q,J,N[j+10],ee,38016083),J=A(J,F,B,q,N[j+15],W,3634488961),q=A(q,J,F,B,N[j+4],G,3889429448),B=A(B,q,J,F,N[j+9],tt,568446438),F=A(F,B,q,J,N[j+14],ee,3275163606),J=A(J,F,B,q,N[j+3],W,4107603335),q=A(q,J,F,B,N[j+8],G,1163531501),B=A(B,q,J,F,N[j+13],tt,2850285829),F=A(F,B,q,J,N[j+2],ee,4243563512),J=A(J,F,B,q,N[j+7],W,1735328473),q=A(q,J,F,B,N[j+12],G,2368359562),B=C(B,q,J,F,N[j+5],re,4294588738),F=C(F,B,q,J,N[j+8],ge,2272392833),J=C(J,F,B,q,N[j+11],be,1839030562),q=C(q,J,F,B,N[j+14],Pe,4259657740),B=C(B,q,J,F,N[j+1],re,2763975236),F=C(F,B,q,J,N[j+4],ge,1272893353),J=C(J,F,B,q,N[j+7],be,4139469664),q=C(q,J,F,B,N[j+10],Pe,3200236656),B=C(B,q,J,F,N[j+13],re,681279174),F=C(F,B,q,J,N[j+0],ge,3936430074),J=C(J,F,B,q,N[j+3],be,3572445317),q=C(q,J,F,B,N[j+6],Pe,76029189),B=C(B,q,J,F,N[j+9],re,3654602809),F=C(F,B,q,J,N[j+12],ge,3873151461),J=C(J,F,B,q,N[j+15],be,530742520),q=C(q,J,F,B,N[j+2],Pe,3299628645),B=I(B,q,J,F,N[j+0],Ce,4096336452),F=I(F,B,q,J,N[j+7],le,1126891415),J=I(J,F,B,q,N[j+14],ye,2878612391),q=I(q,J,F,B,N[j+5],st,4237533241),B=I(B,q,J,F,N[j+12],Ce,1700485571),F=I(F,B,q,J,N[j+3],le,2399980690),J=I(J,F,B,q,N[j+10],ye,4293915773),q=I(q,J,F,B,N[j+1],st,2240044497),B=I(B,q,J,F,N[j+8],Ce,1873313359),F=I(F,B,q,J,N[j+15],le,4264355552),J=I(J,F,B,q,N[j+6],ye,2734768916),q=I(q,J,F,B,N[j+13],st,1309151649),B=I(B,q,J,F,N[j+4],Ce,4149444226),F=I(F,B,q,J,N[j+11],le,3174756917),J=I(J,F,B,q,N[j+2],ye,718787259),q=I(q,J,F,B,N[j+9],st,3951481745),B=h(B,Se),q=h(q,ve),J=h(J,k),F=h(F,D);return($(B)+$(q)+$(J)+$(F)).toLowerCase()},et.closeMediaStream=r=>{if(r)try{let _;if(r.getTracks){_=r.getTracks();for(const h of _)h.stop()}else{_=r.getAudioTracks();for(const h of _)h.stop();_=r.getVideoTracks();for(const h of _)h.stop()}}catch{(typeof r.stop=="function"||typeof r.stop=="object")&&r.stop()}},et.cloneArray=r=>r&&r.slice()||[],et.cloneObject=(r,_={})=>r&&Object.assign({},r)||_,et}const fh=xt,Hm=ut,St=De,it=yt(),rf=$u(),Fm=Qt(),Lo=new Hm("SIPMessage");class Wa{constructor(s,n,a,o,t,r){if(!s||!n||!a)return null;o=o||{},this.ua=a,this.headers={},this.method=s,this.ruri=n,this.body=r,this.extraHeaders=it.cloneArray(t),this.ua.configuration.extra_headers&&(this.extraHeaders=this.extraHeaders.concat(this.ua.configuration.extra_headers)),o.route_set?this.setHeader("route",o.route_set):a.configuration.use_preloaded_route&&this.setHeader("route",`<${a.transport.sip_uri};lr>`),this.setHeader("via",""),this.setHeader("max-forwards",St.MAX_FORWARDS);const _=o.to_uri||n,h=o.to_tag?{tag:o.to_tag}:null,d=typeof o.to_display_name<"u"?o.to_display_name:null;this.to=new rf(_,d,h),this.setHeader("to",this.to.toString());const g=o.from_uri||a.configuration.uri,T={tag:o.from_tag||it.newTag()};let E;typeof o.from_display_name<"u"?E=o.from_display_name:a.configuration.display_name?E=a.configuration.display_name:E=null,this.from=new rf(g,E,T),this.setHeader("from",this.from.toString());const y=o.call_id||a.configuration.jssip_id+it.createRandomToken(15);this.call_id=y,this.setHeader("call-id",y);const A=o.cseq||Math.floor(Math.random()*1e4);this.cseq=A,this.setHeader("cseq",`${A} ${s}`)}setHeader(s,n){const a=new RegExp(`^\\s*${s}\\s*:`,"i");for(let o=0;o<this.extraHeaders.length;o++)a.test(this.extraHeaders[o])&&this.extraHeaders.splice(o,1);this.headers[it.headerize(s)]=Array.isArray(n)?n:[n]}getHeader(s){const n=this.headers[it.headerize(s)];if(n){if(n[0])return n[0]}else{const a=new RegExp(`^\\s*${s}\\s*:`,"i");for(const o of this.extraHeaders)if(a.test(o))return o.substring(o.indexOf(":")+1).trim()}}getHeaders(s){const n=this.headers[it.headerize(s)],a=[];if(n){for(const o of n)a.push(o);return a}else{const o=new RegExp(`^\\s*${s}\\s*:`,"i");for(const t of this.extraHeaders)o.test(t)&&a.push(t.substring(t.indexOf(":")+1).trim());return a}}hasHeader(s){if(this.headers[it.headerize(s)])return!0;{const n=new RegExp(`^\\s*${s}\\s*:`,"i");for(const a of this.extraHeaders)if(n.test(a))return!0}return!1}parseSDP(s){return!s&&this.sdp?this.sdp:(this.sdp=fh.parse(this.body||""),this.sdp)}toString(){let s=`${this.method} ${this.ruri} SIP/2.0\r
76
76
  `;for(const o in this.headers)if(Object.prototype.hasOwnProperty.call(this.headers,o))for(const t of this.headers[o])s+=`${o}: ${t}\r
77
77
  `;for(const o of this.extraHeaders)s+=`${o.trim()}\r
78
- `;const r=[];switch(this.method){case St.REGISTER:r.push("path","gruu");break;case St.INVITE:this.ua.configuration.session_timers&&r.push("timer"),(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&r.push("gruu"),r.push("ice","replaces");break;case St.UPDATE:this.ua.configuration.session_timers&&r.push("timer"),r.push("ice");break}r.push("outbound");const a=this.ua.configuration.user_agent||St.USER_AGENT;if(s+=`Allow: ${St.ALLOWED_METHODS}\r
79
- `,s+=`Supported: ${r}\r
78
+ `;const n=[];switch(this.method){case St.REGISTER:n.push("path","gruu");break;case St.INVITE:this.ua.configuration.session_timers&&n.push("timer"),(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&n.push("gruu"),n.push("ice","replaces");break;case St.UPDATE:this.ua.configuration.session_timers&&n.push("timer"),n.push("ice");break}n.push("outbound");const a=this.ua.configuration.user_agent||St.USER_AGENT;if(s+=`Allow: ${St.ALLOWED_METHODS}\r
79
+ `,s+=`Supported: ${n}\r
80
80
  `,s+=`User-Agent: ${a}\r
81
- `,this.body){const o=rt.str_utf8_length(this.body);s+=`Content-Length: ${o}\r
81
+ `,this.body){const o=it.str_utf8_length(this.body);s+=`Content-Length: ${o}\r
82
82
  \r
83
83
  `,s+=this.body}else s+=`Content-Length: 0\r
84
84
  \r
85
- `;return s}clone(){const s=new Ba(this.method,this.ruri,this.ua);return Object.keys(this.headers).forEach(function(r){s.headers[r]=this.headers[r].slice()},this),s.body=this.body,s.extraHeaders=rt.cloneArray(this.extraHeaders),s.to=this.to,s.from=this.from,s.call_id=this.call_id,s.cseq=this.cseq,s}}class Lu extends Ba{constructor(s,r,a,o,t){super(St.INVITE,s,r,a,o,t),this.transaction=null}cancel(s){this.transaction.cancel(s)}clone(){const s=new Lu(this.ruri,this.ua);return Object.keys(this.headers).forEach(function(r){s.headers[r]=this.headers[r].slice()},this),s.body=this.body,s.extraHeaders=rt.cloneArray(this.extraHeaders),s.to=this.to,s.from=this.from,s.call_id=this.call_id,s.cseq=this.cseq,s.transaction=this.transaction,s}}class c_{constructor(){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,this.sdp=null}addHeader(s,r){const a={raw:r};s=rt.headerize(s),this.headers[s]?this.headers[s].push(a):this.headers[s]=[a]}getHeader(s){const r=this.headers[rt.headerize(s)];if(r){if(r[0])return r[0].raw}else return}getHeaders(s){const r=this.headers[rt.headerize(s)],a=[];if(!r)return[];for(const o of r)a.push(o.raw);return a}hasHeader(s){return!!this.headers[rt.headerize(s)]}parseHeader(s,r=0){if(s=rt.headerize(s),this.headers[s]){if(r>=this.headers[s].length){Mo.debug(`not so many "${s}" headers present`);return}}else{Mo.debug(`header "${s}" not present`);return}const a=this.headers[s][r],o=a.raw;if(a.parsed)return a.parsed;const t=$m.parse(o,s.replace(/-/g,"_"));if(t===-1){this.headers[s].splice(r,1),Mo.debug(`error parsing "${s}" header field with value "${o}"`);return}else return a.parsed=t,t}s(s,r){return this.parseHeader(s,r)}setHeader(s,r){const a={raw:r};this.headers[rt.headerize(s)]=[a]}parseSDP(s){return!s&&this.sdp?this.sdp:(this.sdp=u_.parse(this.body||""),this.sdp)}toString(){return this.data}}class Hm extends c_{constructor(s){super(),this.ua=s,this.headers={},this.ruri=null,this.transport=null,this.server_transaction=null}reply(s,r,a,o,t,n){const h=[];let _=this.getHeader("To");if(s=s||null,r=r||null,!s||s<100||s>699)throw new TypeError(`Invalid status_code: ${s}`);if(r&&typeof r!="string"&&!(r instanceof String))throw new TypeError(`Invalid reason_phrase: ${r}`);r=r||St.REASON_PHRASE[s]||"",a=rt.cloneArray(a),this.ua.configuration.extra_headers&&(a=a.concat(this.ua.configuration.extra_headers));let d=`SIP/2.0 ${s} ${r}\r
85
+ `;return s}clone(){const s=new Wa(this.method,this.ruri,this.ua);return Object.keys(this.headers).forEach(function(n){s.headers[n]=this.headers[n].slice()},this),s.body=this.body,s.extraHeaders=it.cloneArray(this.extraHeaders),s.to=this.to,s.from=this.from,s.call_id=this.call_id,s.cseq=this.cseq,s}}class Hu extends Wa{constructor(s,n,a,o,t){super(St.INVITE,s,n,a,o,t),this.transaction=null}cancel(s){this.transaction.cancel(s)}clone(){const s=new Hu(this.ruri,this.ua);return Object.keys(this.headers).forEach(function(n){s.headers[n]=this.headers[n].slice()},this),s.body=this.body,s.extraHeaders=it.cloneArray(this.extraHeaders),s.to=this.to,s.from=this.from,s.call_id=this.call_id,s.cseq=this.cseq,s.transaction=this.transaction,s}}class hh{constructor(){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,this.sdp=null}addHeader(s,n){const a={raw:n};s=it.headerize(s),this.headers[s]?this.headers[s].push(a):this.headers[s]=[a]}getHeader(s){const n=this.headers[it.headerize(s)];if(n){if(n[0])return n[0].raw}else return}getHeaders(s){const n=this.headers[it.headerize(s)],a=[];if(!n)return[];for(const o of n)a.push(o.raw);return a}hasHeader(s){return!!this.headers[it.headerize(s)]}parseHeader(s,n=0){if(s=it.headerize(s),this.headers[s]){if(n>=this.headers[s].length){Lo.debug(`not so many "${s}" headers present`);return}}else{Lo.debug(`header "${s}" not present`);return}const a=this.headers[s][n],o=a.raw;if(a.parsed)return a.parsed;const t=Fm.parse(o,s.replace(/-/g,"_"));if(t===-1){this.headers[s].splice(n,1),Lo.debug(`error parsing "${s}" header field with value "${o}"`);return}else return a.parsed=t,t}s(s,n){return this.parseHeader(s,n)}setHeader(s,n){const a={raw:n};this.headers[it.headerize(s)]=[a]}parseSDP(s){return!s&&this.sdp?this.sdp:(this.sdp=fh.parse(this.body||""),this.sdp)}toString(){return this.data}}class jm extends hh{constructor(s){super(),this.ua=s,this.headers={},this.ruri=null,this.transport=null,this.server_transaction=null}reply(s,n,a,o,t,r){const _=[];let h=this.getHeader("To");if(s=s||null,n=n||null,!s||s<100||s>699)throw new TypeError(`Invalid status_code: ${s}`);if(n&&typeof n!="string"&&!(n instanceof String))throw new TypeError(`Invalid reason_phrase: ${n}`);n=n||St.REASON_PHRASE[s]||"",a=it.cloneArray(a),this.ua.configuration.extra_headers&&(a=a.concat(this.ua.configuration.extra_headers));let d=`SIP/2.0 ${s} ${n}\r
86
86
  `;if(this.method===St.INVITE&&s>100&&s<=200){const T=this.getHeaders("record-route");for(const E of T)d+=`Record-Route: ${E}\r
87
87
  `}const g=this.getHeaders("via");for(const T of g)d+=`Via: ${T}\r
88
- `;!this.to_tag&&s>100?_+=`;tag=${rt.newTag()}`:this.to_tag&&!this.s("to").hasParam("tag")&&(_+=`;tag=${this.to_tag}`),d+=`To: ${_}\r
88
+ `;!this.to_tag&&s>100?h+=`;tag=${it.newTag()}`:this.to_tag&&!this.s("to").hasParam("tag")&&(h+=`;tag=${this.to_tag}`),d+=`To: ${h}\r
89
89
  `,d+=`From: ${this.getHeader("From")}\r
90
90
  `,d+=`Call-ID: ${this.call_id}\r
91
91
  `,d+=`CSeq: ${this.cseq} ${this.method}\r
92
92
  `;for(const T of a)d+=`${T.trim()}\r
93
- `;switch(this.method){case St.INVITE:this.ua.configuration.session_timers&&h.push("timer"),(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&h.push("gruu"),h.push("ice","replaces");break;case St.UPDATE:this.ua.configuration.session_timers&&h.push("timer"),o&&h.push("ice"),h.push("replaces")}if(h.push("outbound"),this.method===St.OPTIONS?(d+=`Allow: ${St.ALLOWED_METHODS}\r
93
+ `;switch(this.method){case St.INVITE:this.ua.configuration.session_timers&&_.push("timer"),(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&_.push("gruu"),_.push("ice","replaces");break;case St.UPDATE:this.ua.configuration.session_timers&&_.push("timer"),o&&_.push("ice"),_.push("replaces")}if(_.push("outbound"),this.method===St.OPTIONS?(d+=`Allow: ${St.ALLOWED_METHODS}\r
94
94
  `,d+=`Accept: ${St.ACCEPTED_BODY_TYPES}\r
95
95
  `):s===405?d+=`Allow: ${St.ALLOWED_METHODS}\r
96
96
  `:s===415&&(d+=`Accept: ${St.ACCEPTED_BODY_TYPES}\r
97
- `),d+=`Supported: ${h}\r
98
- `,o){const T=rt.str_utf8_length(o);d+=`Content-Type: application/sdp\r
97
+ `),d+=`Supported: ${_}\r
98
+ `,o){const T=it.str_utf8_length(o);d+=`Content-Type: application/sdp\r
99
99
  `,d+=`Content-Length: ${T}\r
100
100
  \r
101
101
  `,d+=o}else d+=`Content-Length: 0\r
102
102
  \r
103
- `;this.server_transaction.receiveResponse(s,d,t,n)}reply_sl(s=null,r=null){const a=this.getHeaders("via");if(!s||s<100||s>699)throw new TypeError(`Invalid status_code: ${s}`);if(r&&typeof r!="string"&&!(r instanceof String))throw new TypeError(`Invalid reason_phrase: ${r}`);r=r||St.REASON_PHRASE[s]||"";let o=`SIP/2.0 ${s} ${r}\r
104
- `;for(const n of a)o+=`Via: ${n}\r
105
- `;let t=this.getHeader("To");if(!this.to_tag&&s>100?t+=`;tag=${rt.newTag()}`:this.to_tag&&!this.s("to").hasParam("tag")&&(t+=`;tag=${this.to_tag}`),o+=`To: ${t}\r
103
+ `;this.server_transaction.receiveResponse(s,d,t,r)}reply_sl(s=null,n=null){const a=this.getHeaders("via");if(!s||s<100||s>699)throw new TypeError(`Invalid status_code: ${s}`);if(n&&typeof n!="string"&&!(n instanceof String))throw new TypeError(`Invalid reason_phrase: ${n}`);n=n||St.REASON_PHRASE[s]||"";let o=`SIP/2.0 ${s} ${n}\r
104
+ `;for(const r of a)o+=`Via: ${r}\r
105
+ `;let t=this.getHeader("To");if(!this.to_tag&&s>100?t+=`;tag=${it.newTag()}`:this.to_tag&&!this.s("to").hasParam("tag")&&(t+=`;tag=${this.to_tag}`),o+=`To: ${t}\r
106
106
  `,o+=`From: ${this.getHeader("From")}\r
107
107
  `,o+=`Call-ID: ${this.call_id}\r
108
108
  `,o+=`CSeq: ${this.cseq} ${this.method}\r
109
- `,this.ua.configuration.extra_headers)for(const n of this.ua.configuration.extra_headers)o+=`${n.trim()}\r
109
+ `,this.ua.configuration.extra_headers)for(const r of this.ua.configuration.extra_headers)o+=`${r.trim()}\r
110
110
  `;o+=`Content-Length: 0\r
111
111
  \r
112
- `,this.transport.send(o)}}class Fm extends c_{constructor(){super(),this.headers={},this.status_code=null,this.reason_phrase=null}}var It={OutgoingRequest:Ba,InitialOutgoingInviteRequest:Lu,IncomingRequest:Hm,IncomingResponse:Fm};const Sn=ze(It),jm=ot,hs=yt(),Yt=new jm("DigestAuthentication");var f_=class{constructor(s){this._credentials=s,this._cnonce=null,this._nc=0,this._ncHex="00000000",this._algorithm=null,this._realm=null,this._nonce=null,this._opaque=null,this._stale=null,this._qop=null,this._method=null,this._uri=null,this._ha1=null,this._response=null}get(s){switch(s){case"realm":return this._realm;case"ha1":return this._ha1;default:Yt.warn('get() | cannot get "%s" parameter',s);return}}authenticate({method:s,ruri:r,body:a},o,t=null){if(this._algorithm=o.algorithm,this._realm=o.realm,this._nonce=o.nonce,this._opaque=o.opaque,this._stale=o.stale,this._algorithm){if(this._algorithm!=="MD5")return Yt.warn('authenticate() | challenge with Digest algorithm different than "MD5", authentication aborted'),!1}else this._algorithm="MD5";if(!this._nonce)return Yt.warn("authenticate() | challenge without Digest nonce, authentication aborted"),!1;if(!this._realm)return Yt.warn("authenticate() | challenge without Digest realm, authentication aborted"),!1;if(!this._credentials.password){if(!this._credentials.ha1)return Yt.warn("authenticate() | no plain SIP password nor ha1 provided, authentication aborted"),!1;if(this._credentials.realm!==this._realm)return Yt.warn('authenticate() | no plain SIP password, and stored `realm` does not match the given `realm`, cannot authenticate [stored:"%s", given:"%s"]',this._credentials.realm,this._realm),!1}if(o.qop)if(o.qop.indexOf("auth-int")>-1)this._qop="auth-int";else if(o.qop.indexOf("auth")>-1)this._qop="auth";else return Yt.warn('authenticate() | challenge without Digest qop different than "auth" or "auth-int", authentication aborted'),!1;else this._qop=null;this._method=s,this._uri=r,this._cnonce=t||hs.createRandomToken(12),this._nc+=1;const n=Number(this._nc).toString(16);this._ncHex="00000000".substr(0,8-n.length)+n,this._nc===4294967296&&(this._nc=1,this._ncHex="00000001"),this._credentials.password?this._ha1=hs.calculateMD5(`${this._credentials.username}:${this._realm}:${this._credentials.password}`):this._ha1=this._credentials.ha1;let h,_;return this._qop==="auth"?(h=`${this._method}:${this._uri}`,_=hs.calculateMD5(h),Yt.debug('authenticate() | using qop=auth [a2:"%s"]',h),this._response=hs.calculateMD5(`${this._ha1}:${this._nonce}:${this._ncHex}:${this._cnonce}:auth:${_}`)):this._qop==="auth-int"?(h=`${this._method}:${this._uri}:${hs.calculateMD5(a||"")}`,_=hs.calculateMD5(h),Yt.debug('authenticate() | using qop=auth-int [a2:"%s"]',h),this._response=hs.calculateMD5(`${this._ha1}:${this._nonce}:${this._ncHex}:${this._cnonce}:auth-int:${_}`)):this._qop===null&&(h=`${this._method}:${this._uri}`,_=hs.calculateMD5(h),Yt.debug('authenticate() | using qop=null [a2:"%s"]',h),this._response=hs.calculateMD5(`${this._ha1}:${this._nonce}:${_}`)),Yt.debug("authenticate() | response generated"),!0}toString(){const s=[];if(!this._response)throw new Error("response field does not exist, cannot generate Authorization header");return s.push(`algorithm=${this._algorithm}`),s.push(`username="${this._credentials.username}"`),s.push(`realm="${this._realm}"`),s.push(`nonce="${this._nonce}"`),s.push(`uri="${this._uri}"`),s.push(`response="${this._response}"`),this._opaque&&s.push(`opaque="${this._opaque}"`),this._qop&&(s.push(`qop=${this._qop}`),s.push(`cnonce="${this._cnonce}"`),s.push(`nc=${this._ncHex}`)),`Digest ${s.join(", ")}`}};const qm=ze(f_),ds=500,Vm=4e3,nf=5e3;var $u={T1:ds,T2:Vm,T4:nf,TIMER_B:64*ds,TIMER_D:0*ds,TIMER_F:64*ds,TIMER_H:64*ds,TIMER_I:0*ds,TIMER_J:0*ds,TIMER_K:0*nf,TIMER_L:64*ds,TIMER_M:64*ds,PROVISIONAL_RESPONSE_INTERVAL:6e4};const ki=ze($u),fl=ft.EventEmitter,_l=ot,Ji=De,rf=It,is=$u,lf=new _l("NonInviteClientTransaction"),Kl=new _l("InviteClientTransaction"),Bm=new _l("AckClientTransaction"),af=new _l("NonInviteServerTransaction"),Yl=new _l("InviteServerTransaction"),he={STATUS_TRYING:1,STATUS_PROCEEDING:2,STATUS_CALLING:3,STATUS_ACCEPTED:4,STATUS_COMPLETED:5,STATUS_TERMINATED:6,STATUS_CONFIRMED:7,NON_INVITE_CLIENT:"nict",NON_INVITE_SERVER:"nist",INVITE_CLIENT:"ict",INVITE_SERVER:"ist"};class Gm extends fl{constructor(s,r,a,o){super(),this.type=he.NON_INVITE_CLIENT,this.id=`z9hG4bK${Math.floor(Math.random()*1e7)}`,this.ua=s,this.transport=r,this.request=a,this.eventHandlers=o;let t=`SIP/2.0/${r.via_transport}`;t+=` ${s.configuration.via_host};branch=${this.id}`,this.request.setHeader("via",t),this.ua.newTransaction(this)}get C(){return he}stateChanged(s){this.state=s,this.emit("stateChanged")}send(){this.stateChanged(he.STATUS_TRYING),this.F=setTimeout(()=>{this.timer_F()},is.TIMER_F),this.transport.send(this.request)||this.onTransportError()}onTransportError(){lf.debug(`transport error occurred, deleting transaction ${this.id}`),clearTimeout(this.F),clearTimeout(this.K),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onTransportError()}timer_F(){lf.debug(`Timer F expired for transaction ${this.id}`),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onRequestTimeout()}timer_K(){this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}receiveResponse(s){const r=s.status_code;if(r<200)switch(this.state){case he.STATUS_TRYING:case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(s);break}else switch(this.state){case he.STATUS_TRYING:case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_COMPLETED),clearTimeout(this.F),r===408?this.eventHandlers.onRequestTimeout():this.eventHandlers.onReceiveResponse(s),this.K=setTimeout(()=>{this.timer_K()},is.TIMER_K);break;case he.STATUS_COMPLETED:break}}}class Wm extends fl{constructor(s,r,a,o){super(),this.type=he.INVITE_CLIENT,this.id=`z9hG4bK${Math.floor(Math.random()*1e7)}`,this.ua=s,this.transport=r,this.request=a,this.eventHandlers=o,a.transaction=this;let t=`SIP/2.0/${r.via_transport}`;t+=` ${s.configuration.via_host};branch=${this.id}`,this.request.setHeader("via",t),this.ua.newTransaction(this)}get C(){return he}stateChanged(s){this.state=s,this.emit("stateChanged")}send(){this.stateChanged(he.STATUS_CALLING),this.B=setTimeout(()=>{this.timer_B()},is.TIMER_B),this.transport.send(this.request)||this.onTransportError()}onTransportError(){clearTimeout(this.B),clearTimeout(this.D),clearTimeout(this.M),this.state!==he.STATUS_ACCEPTED&&(Kl.debug(`transport error occurred, deleting transaction ${this.id}`),this.eventHandlers.onTransportError()),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}timer_M(){Kl.debug(`Timer M expired for transaction ${this.id}`),this.state===he.STATUS_ACCEPTED&&(clearTimeout(this.B),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this))}timer_B(){Kl.debug(`Timer B expired for transaction ${this.id}`),this.state===he.STATUS_CALLING&&(this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onRequestTimeout())}timer_D(){Kl.debug(`Timer D expired for transaction ${this.id}`),clearTimeout(this.B),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}sendACK(s){const r=new rf.OutgoingRequest(Ji.ACK,this.request.ruri,this.ua,{route_set:this.request.getHeaders("route"),call_id:this.request.getHeader("call-id"),cseq:this.request.cseq});r.setHeader("from",this.request.getHeader("from")),r.setHeader("via",this.request.getHeader("via")),r.setHeader("to",s.getHeader("to")),this.D=setTimeout(()=>{this.timer_D()},is.TIMER_D),this.transport.send(r)}cancel(s){if(this.state!==he.STATUS_PROCEEDING)return;const r=new rf.OutgoingRequest(Ji.CANCEL,this.request.ruri,this.ua,{route_set:this.request.getHeaders("route"),call_id:this.request.getHeader("call-id"),cseq:this.request.cseq});r.setHeader("from",this.request.getHeader("from")),r.setHeader("via",this.request.getHeader("via")),r.setHeader("to",this.request.getHeader("to")),s&&r.setHeader("reason",s),this.transport.send(r)}receiveResponse(s){const r=s.status_code;if(r>=100&&r<=199)switch(this.state){case he.STATUS_CALLING:this.stateChanged(he.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(s);break;case he.STATUS_PROCEEDING:this.eventHandlers.onReceiveResponse(s);break}else if(r>=200&&r<=299)switch(this.state){case he.STATUS_CALLING:case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_ACCEPTED),this.M=setTimeout(()=>{this.timer_M()},is.TIMER_M),this.eventHandlers.onReceiveResponse(s);break;case he.STATUS_ACCEPTED:this.eventHandlers.onReceiveResponse(s);break}else if(r>=300&&r<=699)switch(this.state){case he.STATUS_CALLING:case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_COMPLETED),this.sendACK(s),this.eventHandlers.onReceiveResponse(s);break;case he.STATUS_COMPLETED:this.sendACK(s);break}}}class Km extends fl{constructor(s,r,a,o){super(),this.id=`z9hG4bK${Math.floor(Math.random()*1e7)}`,this.transport=r,this.request=a,this.eventHandlers=o;let t=`SIP/2.0/${r.via_transport}`;t+=` ${s.configuration.via_host};branch=${this.id}`,this.request.setHeader("via",t)}get C(){return he}send(){this.transport.send(this.request)||this.onTransportError()}onTransportError(){Bm.debug(`transport error occurred for transaction ${this.id}`),this.eventHandlers.onTransportError()}}class Ym extends fl{constructor(s,r,a){super(),this.type=he.NON_INVITE_SERVER,this.id=a.via_branch,this.ua=s,this.transport=r,this.request=a,this.last_response="",a.server_transaction=this,this.state=he.STATUS_TRYING,s.newTransaction(this)}get C(){return he}stateChanged(s){this.state=s,this.emit("stateChanged")}timer_J(){af.debug(`Timer J expired for transaction ${this.id}`),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}onTransportError(){this.transportError||(this.transportError=!0,af.debug(`transport error occurred, deleting transaction ${this.id}`),clearTimeout(this.J),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this))}receiveResponse(s,r,a,o){if(s===100)switch(this.state){case he.STATUS_TRYING:this.stateChanged(he.STATUS_PROCEEDING),this.transport.send(r)||this.onTransportError();break;case he.STATUS_PROCEEDING:this.last_response=r,this.transport.send(r)?a&&a():(this.onTransportError(),o&&o());break}else if(s>=200&&s<=699)switch(this.state){case he.STATUS_TRYING:case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_COMPLETED),this.last_response=r,this.J=setTimeout(()=>{this.timer_J()},is.TIMER_J),this.transport.send(r)?a&&a():(this.onTransportError(),o&&o());break;case he.STATUS_COMPLETED:break}}}class Jm extends fl{constructor(s,r,a){super(),this.type=he.INVITE_SERVER,this.id=a.via_branch,this.ua=s,this.transport=r,this.request=a,this.last_response="",a.server_transaction=this,this.state=he.STATUS_PROCEEDING,s.newTransaction(this),this.resendProvisionalTimer=null,a.reply(100)}get C(){return he}stateChanged(s){this.state=s,this.emit("stateChanged")}timer_H(){Yl.debug(`Timer H expired for transaction ${this.id}`),this.state===he.STATUS_COMPLETED&&Yl.debug("ACK not received, dialog will be terminated"),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}timer_I(){this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}timer_L(){Yl.debug(`Timer L expired for transaction ${this.id}`),this.state===he.STATUS_ACCEPTED&&(this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this))}onTransportError(){this.transportError||(this.transportError=!0,Yl.debug(`transport error occurred, deleting transaction ${this.id}`),this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),clearTimeout(this.L),clearTimeout(this.H),clearTimeout(this.I),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this))}resend_provisional(){this.transport.send(this.last_response)||this.onTransportError()}receiveResponse(s,r,a,o){if(s>=100&&s<=199)switch(this.state){case he.STATUS_PROCEEDING:this.transport.send(r)||this.onTransportError(),this.last_response=r;break}if(s>100&&s<=199&&this.state===he.STATUS_PROCEEDING)this.resendProvisionalTimer===null&&(this.resendProvisionalTimer=setInterval(()=>{this.resend_provisional()},is.PROVISIONAL_RESPONSE_INTERVAL));else if(s>=200&&s<=299)switch(this.state){case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_ACCEPTED),this.last_response=r,this.L=setTimeout(()=>{this.timer_L()},is.TIMER_L),this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null);case he.STATUS_ACCEPTED:this.transport.send(r)?a&&a():(this.onTransportError(),o&&o());break}else if(s>=300&&s<=699)switch(this.state){case he.STATUS_PROCEEDING:this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),this.transport.send(r)?(this.stateChanged(he.STATUS_COMPLETED),this.H=setTimeout(()=>{this.timer_H()},is.TIMER_H),a&&a()):(this.onTransportError(),o&&o());break}}}function zm({_transactions:c},s){let r;switch(s.method){case Ji.INVITE:if(r=c.ist[s.via_branch],r){switch(r.state){case he.STATUS_PROCEEDING:r.transport.send(r.last_response);break;case he.STATUS_ACCEPTED:break}return!0}break;case Ji.ACK:if(r=c.ist[s.via_branch],r){if(r.state===he.STATUS_ACCEPTED)return!1;if(r.state===he.STATUS_COMPLETED)return r.state=he.STATUS_CONFIRMED,r.I=setTimeout(()=>{r.timer_I()},is.TIMER_I),!0}else return!1;break;case Ji.CANCEL:return r=c.ist[s.via_branch],r?(s.reply_sl(200),r.state!==he.STATUS_PROCEEDING):(s.reply_sl(481),!0);default:if(r=c.nist[s.via_branch],r){switch(r.state){case he.STATUS_TRYING:break;case he.STATUS_PROCEEDING:case he.STATUS_COMPLETED:r.transport.send(r.last_response);break}return!0}break}}var mr={C:he,NonInviteClientTransaction:Gm,InviteClientTransaction:Wm,AckClientTransaction:Km,NonInviteServerTransaction:Ym,InviteServerTransaction:Jm,checkTransaction:zm};const Bt=ze(mr),Xm=ot,of=De,Qm=f_,ko=mr,Zm=new Xm("RequestSender"),Lo={onRequestTimeout:()=>{},onTransportError:()=>{},onReceiveResponse:()=>{},onAuthenticated:()=>{}};var gr=class{constructor(s,r,a){this._ua=s,this._eventHandlers=a,this._method=r.method,this._request=r,this._auth=null,this._challenged=!1,this._staled=!1;for(const o in Lo)Object.prototype.hasOwnProperty.call(Lo,o)&&(this._eventHandlers[o]||(this._eventHandlers[o]=Lo[o]));s.status===s.C.STATUS_USER_CLOSED&&(this._method!==of.BYE||this._method!==of.ACK)&&this._eventHandlers.onTransportError()}send(){const s={onRequestTimeout:()=>{this._eventHandlers.onRequestTimeout()},onTransportError:()=>{this._eventHandlers.onTransportError()},onReceiveResponse:r=>{this._receiveResponse(r)}};switch(this._method){case"INVITE":this.clientTransaction=new ko.InviteClientTransaction(this._ua,this._ua.transport,this._request,s);break;case"ACK":this.clientTransaction=new ko.AckClientTransaction(this._ua,this._ua.transport,this._request,s);break;default:this.clientTransaction=new ko.NonInviteClientTransaction(this._ua,this._ua.transport,this._request,s)}this._ua._configuration.authorization_jwt&&this._request.setHeader("Authorization",this._ua._configuration.authorization_jwt),this.clientTransaction.send()}_receiveResponse(s){let r,a;const o=s.status_code;if((o===401||o===407)&&(this._ua.configuration.password!==null||this._ua.configuration.ha1!==null)){if(s.status_code===401?(r=s.parseHeader("www-authenticate"),a="authorization"):(r=s.parseHeader("proxy-authenticate"),a="proxy-authorization"),!r){Zm.debug(`${s.status_code} with wrong or missing challenge, cannot authenticate`),this._eventHandlers.onReceiveResponse(s);return}if(!this._challenged||!this._staled&&r.stale===!0){if(this._auth||(this._auth=new Qm({username:this._ua.configuration.authorization_user,password:this._ua.configuration.password,realm:this._ua.configuration.realm,ha1:this._ua.configuration.ha1})),!this._auth.authenticate(this._request,r)){this._eventHandlers.onReceiveResponse(s);return}this._challenged=!0,this._ua.set("realm",this._auth.get("realm")),this._ua.set("ha1",this._auth.get("ha1")),r.stale&&(this._staled=!0),this._request=this._request.clone(),this._request.cseq+=1,this._request.setHeader("cseq",`${this._request.cseq} ${this._method}`),this._request.setHeader(a,this._auth.toString()),this._eventHandlers.onAuthenticated(this._request),this.send()}else this._eventHandlers.onReceiveResponse(s)}else this._eventHandlers.onReceiveResponse(s)}};const Ma=ze(gr),eg=ot,$o=yt(),mn=De,uf=It,cf=gr,Li=new eg("Registrator"),Jl=10;var tg=class{constructor(s,r){this._reg_id=1,this._ua=s,this._transport=r,this._registrar=s.configuration.registrar_server,this._expires=s.configuration.register_expires,this._call_id=$o.createRandomToken(22),this._cseq=0,this._to_uri=s.configuration.uri,this._registrationTimer=null,this._registering=!1,this._registered=!1,this._contact=this._ua.contact.toString(),this._contact+=";+sip.ice",this._extraHeaders=[],this._extraContactParams="",this._sipInstance=`"<urn:uuid:${this._ua.configuration.instance_id}>"`,this._contact+=`;reg-id=${this._reg_id}`,this._contact+=`;+sip.instance=${this._sipInstance}`}get registered(){return this._registered}setExtraHeaders(s){Array.isArray(s)||(s=[]),this._extraHeaders=s.slice()}setExtraContactParams(s){s instanceof Object||(s={}),this._extraContactParams="";for(const r in s)if(Object.prototype.hasOwnProperty.call(s,r)){const a=s[r];this._extraContactParams+=`;${r}`,a&&(this._extraContactParams+=`=${a}`)}}register(){if(this._registering){Li.debug("Register request in progress...");return}const s=this._extraHeaders.slice();s.push(`Contact: ${this._contact};expires=${this._expires}${this._extraContactParams}`),s.push(`Expires: ${this._expires}`);const r=new uf.OutgoingRequest(mn.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},s),a=new cf(this._ua,r,{onRequestTimeout:()=>{this._registrationFailure(null,mn.causes.REQUEST_TIMEOUT)},onTransportError:()=>{this._registrationFailure(null,mn.causes.CONNECTION_ERROR)},onAuthenticated:()=>{this._cseq+=1},onReceiveResponse:o=>{if(o.cseq===this._cseq)switch(this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),!0){case/^1[0-9]{2}$/.test(o.status_code):break;case/^2[0-9]{2}$/.test(o.status_code):{if(this._registering=!1,!o.hasHeader("Contact")){Li.debug("no Contact header in response to REGISTER, response ignored");break}const t=o.headers.Contact.reduce((d,g)=>d.concat(g.parsed),[]);let n=t.find(d=>this._sipInstance===d.getParam("+sip.instance")&&this._reg_id===parseInt(d.getParam("reg-id")));if(n||(n=t.find(d=>d.uri.user===this._ua.contact.uri.user)),!n){Li.debug("no Contact header pointing to us, response ignored");break}let h=n.getParam("expires");!h&&o.hasHeader("expires")&&(h=o.getHeader("expires")),h||(h=this._expires),h=Number(h),h<Jl&&(h=Jl);const _=h>64?h*1e3/2+Math.floor((h/2-32)*1e3*Math.random()):h*1e3-5e3;this._registrationTimer=setTimeout(()=>{this._registrationTimer=null,this._ua.listeners("registrationExpiring").length===0?this.register():this._ua.emit("registrationExpiring")},_),n.hasParam("temp-gruu")&&(this._ua.contact.temp_gruu=n.getParam("temp-gruu").replace(/"/g,"")),n.hasParam("pub-gruu")&&(this._ua.contact.pub_gruu=n.getParam("pub-gruu").replace(/"/g,"")),this._registered||(this._registered=!0,this._ua.registered({response:o}));break}case/^423$/.test(o.status_code):{o.hasHeader("min-expires")?(this._expires=Number(o.getHeader("min-expires")),this._expires<Jl&&(this._expires=Jl),this.register()):(Li.debug("423 response received for REGISTER without Min-Expires"),this._registrationFailure(o,mn.causes.SIP_FAILURE_CODE));break}default:{const t=$o.sipErrorCause(o.status_code);this._registrationFailure(o,t)}}}});this._registering=!0,a.send()}unregister(s={}){if(!this._registered){Li.debug("already unregistered");return}this._registered=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null);const r=this._extraHeaders.slice();s.all?r.push(`Contact: *${this._extraContactParams}`):r.push(`Contact: ${this._contact};expires=0${this._extraContactParams}`),r.push("Expires: 0");const a=new uf.OutgoingRequest(mn.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},r);new cf(this._ua,a,{onRequestTimeout:()=>{this._unregistered(null,mn.causes.REQUEST_TIMEOUT)},onTransportError:()=>{this._unregistered(null,mn.causes.CONNECTION_ERROR)},onAuthenticated:()=>{this._cseq+=1},onReceiveResponse:t=>{switch(!0){case/^1[0-9]{2}$/.test(t.status_code):break;case/^2[0-9]{2}$/.test(t.status_code):this._unregistered(t);break;default:{const n=$o.sipErrorCause(t.status_code);this._unregistered(t,n)}}}}).send()}close(){this._registered&&this.unregister()}onTransportClosed(){this._registering=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),this._registered&&(this._registered=!1,this._ua.unregistered({}))}_registrationFailure(s,r){this._registering=!1,this._ua.registrationFailed({response:s||null,cause:r}),this._registered&&(this._registered=!1,this._ua.unregistered({response:s||null,cause:r}))}_unregistered(s,r){this._registering=!1,this._registered=!1,this._ua.unregistered({response:s||null,cause:r||null})}};class sg extends Error{constructor(s,r){super(),this.code=1,this.name="CONFIGURATION_ERROR",this.parameter=s,this.value=r,this.message=this.value?`Invalid value ${JSON.stringify(this.value)} for parameter "${this.parameter}"`:`Missing parameter: ${this.parameter}`}}class ng extends Error{constructor(s){super(),this.code=2,this.name="INVALID_STATE_ERROR",this.status=s,this.message=`Invalid status: ${s}`}}class rg extends Error{constructor(s){super(),this.code=3,this.name="NOT_SUPPORTED_ERROR",this.message=s}}class ig extends Error{constructor(s){super(),this.code=4,this.name="NOT_READY_ERROR",this.message=s}}var Ss={ConfigurationError:sg,InvalidStateError:ng,NotSupportedError:rg,NotReadyError:ig};const Fs=ze(Ss),Ho=De,zl=mr,lg=gr,Fo={onRequestTimeout:()=>{},onTransportError:()=>{},onSuccessResponse:()=>{},onErrorResponse:()=>{},onAuthenticated:()=>{},onDialogError:()=>{}};var __=class{constructor(s,r,a){this._dialog=s,this._ua=s._ua,this._request=r,this._eventHandlers=a,this._reattempt=!1,this._reattemptTimer=null;for(const o in Fo)Object.prototype.hasOwnProperty.call(Fo,o)&&(this._eventHandlers[o]||(this._eventHandlers[o]=Fo[o]))}get request(){return this._request}send(){const s=new lg(this._ua,this._request,{onRequestTimeout:()=>{this._eventHandlers.onRequestTimeout()},onTransportError:()=>{this._eventHandlers.onTransportError()},onAuthenticated:r=>{this._eventHandlers.onAuthenticated(r)},onReceiveResponse:r=>{this._receiveResponse(r)}});if(s.send(),(this._request.method===Ho.INVITE||this._request.method===Ho.UPDATE&&this._request.body)&&s.clientTransaction.state!==zl.C.STATUS_TERMINATED){this._dialog.uac_pending_reply=!0;const r=()=>{(s.clientTransaction.state===zl.C.STATUS_ACCEPTED||s.clientTransaction.state===zl.C.STATUS_COMPLETED||s.clientTransaction.state===zl.C.STATUS_TERMINATED)&&(s.clientTransaction.removeListener("stateChanged",r),this._dialog.uac_pending_reply=!1)};s.clientTransaction.on("stateChanged",r)}}_receiveResponse(s){s.status_code===408||s.status_code===481?this._eventHandlers.onDialogError(s):s.method===Ho.INVITE&&s.status_code===491?this._reattempt?s.status_code>=200&&s.status_code<300?this._eventHandlers.onSuccessResponse(s):s.status_code>=300&&this._eventHandlers.onErrorResponse(s):(this._request.cseq=this._dialog.local_seqnum+=1,this._reattemptTimer=setTimeout(()=>{this._dialog.isTerminated()||(this._reattempt=!0,this.send())},1e3)):s.status_code>=200&&s.status_code<300?this._eventHandlers.onSuccessResponse(s):s.status_code>=300&&this._eventHandlers.onErrorResponse(s)}};const ag=ze(__),og=ot,ff=It,ks=De,$i=mr,ug=__,jo=yt(),qo=new og("Dialog"),Ls={STATUS_EARLY:1,STATUS_CONFIRMED:2,STATUS_TERMINATED:3};var h_=class{static get C(){return Ls}constructor(s,r,a,o=Ls.STATUS_CONFIRMED){if(this._owner=s,this._ua=s._ua,this._uac_pending_reply=!1,this._uas_pending_reply=!1,!r.hasHeader("contact"))return{error:"unable to create a Dialog without Contact header field"};r instanceof ff.IncomingResponse&&(o=r.status_code<200?Ls.STATUS_EARLY:Ls.STATUS_CONFIRMED);const t=r.parseHeader("contact");a==="UAS"?(this._id={call_id:r.call_id,local_tag:r.to_tag,remote_tag:r.from_tag,toString(){return this.call_id+this.local_tag+this.remote_tag}},this._state=o,this._remote_seqnum=r.cseq,this._local_uri=r.parseHeader("to").uri,this._remote_uri=r.parseHeader("from").uri,this._remote_target=t.uri,this._route_set=r.getHeaders("record-route"),this._ack_seqnum=this._remote_seqnum):a==="UAC"&&(this._id={call_id:r.call_id,local_tag:r.from_tag,remote_tag:r.to_tag,toString(){return this.call_id+this.local_tag+this.remote_tag}},this._state=o,this._local_seqnum=r.cseq,this._local_uri=r.parseHeader("from").uri,this._remote_uri=r.parseHeader("to").uri,this._remote_target=t.uri,this._route_set=r.getHeaders("record-route").reverse(),this._ack_seqnum=null),this._ua.newDialog(this),qo.debug(`new ${a} dialog created with status ${this._state===Ls.STATUS_EARLY?"EARLY":"CONFIRMED"}`)}get id(){return this._id}get local_seqnum(){return this._local_seqnum}set local_seqnum(s){this._local_seqnum=s}get owner(){return this._owner}get uac_pending_reply(){return this._uac_pending_reply}set uac_pending_reply(s){this._uac_pending_reply=s}get uas_pending_reply(){return this._uas_pending_reply}isTerminated(){return this._status===Ls.STATUS_TERMINATED}update(s,r){this._state=Ls.STATUS_CONFIRMED,qo.debug(`dialog ${this._id.toString()} changed to CONFIRMED state`),r==="UAC"&&(this._route_set=s.getHeaders("record-route").reverse())}terminate(){qo.debug(`dialog ${this._id.toString()} deleted`),this._ua.destroyDialog(this),this._state=Ls.STATUS_TERMINATED}sendRequest(s,r={}){const a=jo.cloneArray(r.extraHeaders),o=jo.cloneObject(r.eventHandlers),t=r.body||null,n=this._createRequest(s,a,t);return o.onAuthenticated=()=>{this._local_seqnum+=1},new ug(this,n,o).send(),n}receiveRequest(s){this._checkInDialogRequest(s)&&(s.method===ks.ACK&&this._ack_seqnum!==null?this._ack_seqnum=null:s.method===ks.INVITE&&(this._ack_seqnum=s.cseq),this._owner.receiveRequest(s))}_createRequest(s,r,a){r=jo.cloneArray(r),this._local_seqnum||(this._local_seqnum=Math.floor(Math.random()*1e4));const o=s===ks.CANCEL||s===ks.ACK?this._local_seqnum:this._local_seqnum+=1;return new ff.OutgoingRequest(s,this._remote_target,this._ua,{cseq:o,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},r,a)}_checkInDialogRequest(s){if(!this._remote_seqnum)this._remote_seqnum=s.cseq;else if(s.cseq<this._remote_seqnum)if(s.method===ks.ACK){if(this._ack_seqnum===null||s.cseq!==this._ack_seqnum)return!1}else return s.reply(500),!1;else s.cseq>this._remote_seqnum&&(this._remote_seqnum=s.cseq);if(s.method===ks.INVITE||s.method===ks.UPDATE&&s.body){if(this._uac_pending_reply===!0)s.reply(491);else if(this._uas_pending_reply===!0){const r=(Math.random()*10|0)+1;return s.reply(500,null,[`Retry-After:${r}`]),!1}else{this._uas_pending_reply=!0;const r=()=>{(s.server_transaction.state===$i.C.STATUS_ACCEPTED||s.server_transaction.state===$i.C.STATUS_COMPLETED||s.server_transaction.state===$i.C.STATUS_TERMINATED)&&(s.server_transaction.removeListener("stateChanged",r),this._uas_pending_reply=!1)};s.server_transaction.on("stateChanged",r)}s.hasHeader("contact")&&s.server_transaction.on("stateChanged",()=>{s.server_transaction.state===$i.C.STATUS_ACCEPTED&&(this._remote_target=s.parseHeader("contact").uri)})}else s.method===ks.NOTIFY&&s.hasHeader("contact")&&s.server_transaction.on("stateChanged",()=>{s.server_transaction.state===$i.C.STATUS_COMPLETED&&(this._remote_target=s.parseHeader("contact").uri)});return!0}};const Xl=ze(h_);var Hu={exports:{}};const cg=ft.EventEmitter,fg=ot,_g=De,hg=Ss,_f=yt(),dg=new fg("RTCSession:DTMF"),d_={MIN_DURATION:70,MAX_DURATION:6e3,DEFAULT_DURATION:100,MIN_INTER_TONE_GAP:50,DEFAULT_INTER_TONE_GAP:500};Hu.exports=class extends cg{constructor(s){super(),this._session=s,this._direction=null,this._tone=null,this._duration=null,this._request=null}get tone(){return this._tone}get duration(){return this._duration}send(s,r={}){if(s===void 0)throw new TypeError("Not enough arguments");if(this._direction="outgoing",this._session.status!==this._session.C.STATUS_CONFIRMED&&this._session.status!==this._session.C.STATUS_WAITING_FOR_ACK)throw new hg.InvalidStateError(this._session.status);const a=_f.cloneArray(r.extraHeaders);if(this.eventHandlers=_f.cloneObject(r.eventHandlers),typeof s=="string")s=s.toUpperCase();else if(typeof s=="number")s=s.toString();else throw new TypeError(`Invalid tone: ${s}`);if(s.match(/^[0-9A-DR#*]$/))this._tone=s;else throw new TypeError(`Invalid tone: ${s}`);this._duration=r.duration,a.push("Content-Type: application/dtmf-relay");let o=`Signal=${this._tone}\r
113
- `;o+=`Duration=${this._duration}`,this._session.newDTMF({originator:"local",dtmf:this,request:this._request}),this._session.sendRequest(_g.INFO,{extraHeaders:a,eventHandlers:{onSuccessResponse:t=>{this.emit("succeeded",{originator:"remote",response:t})},onErrorResponse:t=>{this.eventHandlers.onFailed&&this.eventHandlers.onFailed(),this.emit("failed",{originator:"remote",response:t})},onRequestTimeout:()=>{this._session.onRequestTimeout()},onTransportError:()=>{this._session.onTransportError()},onDialogError:()=>{this._session.onDialogError()}},body:o})}init_incoming(s){const r=/^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/,a=/^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/;if(this._direction="incoming",this._request=s,s.reply(200),s.body){const o=s.body.split(`
114
- `);o.length>=1&&r.test(o[0])&&(this._tone=o[0].replace(r,"$2")),o.length>=2&&a.test(o[1])&&(this._duration=parseInt(o[1].replace(a,"$2"),10))}this._duration||(this._duration=d_.DEFAULT_DURATION),this._tone?this._session.newDTMF({originator:"remote",dtmf:this,request:s}):dg.debug("invalid INFO DTMF received, discarded")}};Hu.exports.C=d_;var p_=Hu.exports;const pg=ze(p_),mg=ft.EventEmitter,gg=De,Tg=Ss,vg=yt();var m_=class extends mg{constructor(s){super(),this._session=s,this._direction=null,this._contentType=null,this._body=null}get contentType(){return this._contentType}get body(){return this._body}send(s,r,a={}){if(this._direction="outgoing",s===void 0)throw new TypeError("Not enough arguments");if(this._session.status!==this._session.C.STATUS_CONFIRMED&&this._session.status!==this._session.C.STATUS_WAITING_FOR_ACK)throw new Tg.InvalidStateError(this._session.status);this._contentType=s,this._body=r;const o=vg.cloneArray(a.extraHeaders);o.push(`Content-Type: ${s}`),this._session.newInfo({originator:"local",info:this,request:this.request}),this._session.sendRequest(gg.INFO,{extraHeaders:o,eventHandlers:{onSuccessResponse:t=>{this.emit("succeeded",{originator:"remote",response:t})},onErrorResponse:t=>{this.emit("failed",{originator:"remote",response:t})},onTransportError:()=>{this._session.onTransportError()},onRequestTimeout:()=>{this._session.onRequestTimeout()},onDialogError:()=>{this._session.onDialogError()}},body:r})}init_incoming(s){this._direction="incoming",this.request=s,s.reply(200),this._contentType=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,this._body=s.body,this._session.newInfo({originator:"remote",info:this,request:s})}};const Eu=ze(m_),Eg=ot,hf=De,Sg=new Eg("RTCSession:ReferNotifier"),Vo={event_type:"refer",body_type:"message/sipfrag;version=2.0",expires:300};var g_=class{constructor(s,r,a){this._session=s,this._id=r,this._expires=a||Vo.expires,this._active=!0,this.notify(100)}notify(s,r){if(Sg.debug("notify()"),this._active===!1)return;r=r||hf.REASON_PHRASE[s]||"";let a;s>=200?a="terminated;reason=noresource":a=`active;expires=${this._expires}`,this._session.sendRequest(hf.NOTIFY,{extraHeaders:[`Event: ${Vo.event_type};id=${this._id}`,`Subscription-State: ${a}`,`Content-Type: ${Vo.body_type}`],body:`SIP/2.0 ${s} ${r}`,eventHandlers:{onErrorResponse(){this._active=!1}}})}};const yg=ze(g_),Ag=ft.EventEmitter,Cg=ot,Hi=De,Rg=Xt(),df=yt(),gn=new Cg("RTCSession:ReferSubscriber");var T_=class extends Ag{constructor(s){super(),this._id=null,this._session=s}get id(){return this._id}sendRefer(s,r={}){gn.debug("sendRefer()");const a=df.cloneArray(r.extraHeaders),o=df.cloneObject(r.eventHandlers);for(const _ in o)Object.prototype.hasOwnProperty.call(o,_)&&this.on(_,o[_]);let t=null;r.replaces&&(t=r.replaces._request.call_id,t+=`;to-tag=${r.replaces._to_tag}`,t+=`;from-tag=${r.replaces._from_tag}`,t=encodeURIComponent(t));const n=`Refer-To: <${s}${t?`?Replaces=${t}`:""}>`;if(a.push(n),!a.some(_=>_.toLowerCase().startsWith("referred-by:"))){const _=`Referred-By: <${this._session._ua._configuration.uri._scheme}:${this._session._ua._configuration.uri._user}@${this._session._ua._configuration.uri._host}>`;a.push(_)}a.push(`Contact: ${this._session.contact}`);const h=this._session.sendRequest(Hi.REFER,{extraHeaders:a,eventHandlers:{onSuccessResponse:_=>{this._requestSucceeded(_)},onErrorResponse:_=>{this._requestFailed(_,Hi.causes.REJECTED)},onTransportError:()=>{this._requestFailed(null,Hi.causes.CONNECTION_ERROR)},onRequestTimeout:()=>{this._requestFailed(null,Hi.causes.REQUEST_TIMEOUT)},onDialogError:()=>{this._requestFailed(null,Hi.causes.DIALOG_ERROR)}}});this._id=h.cseq}receiveNotify(s){if(gn.debug("receiveNotify()"),!s.body)return;const r=Rg.parse(s.body.trim().split(`\r
115
- `,1)[0],"Status_Line");if(r===-1){gn.debug(`receiveNotify() | error parsing NOTIFY body: "${s.body}"`);return}switch(!0){case/^100$/.test(r.status_code):this.emit("trying",{request:s,status_line:r});break;case/^1[0-9]{2}$/.test(r.status_code):this.emit("progress",{request:s,status_line:r});break;case/^2[0-9]{2}$/.test(r.status_code):this.emit("accepted",{request:s,status_line:r});break;default:this.emit("failed",{request:s,status_line:r});break}}_requestSucceeded(s){gn.debug("REFER succeeded"),gn.debug('emit "requestSucceeded"'),this.emit("requestSucceeded",{response:s})}_requestFailed(s,r){gn.debug("REFER failed"),gn.debug('emit "requestFailed"'),this.emit("requestFailed",{response:s||null,cause:r})}};const Ig=ze(T_),bg=ft.EventEmitter,pf=Pt,wg=ot,fe=De,Tn=Ss,mf=mr,Be=yt(),Fi=$u,Og=It,Ql=h_,Dg=gr,Mt=p_,gf=m_,Ng=g_,Ug=T_,Tf=Es(),Y=new wg("RTCSession"),Z={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_ACK:6,STATUS_CANCELED:7,STATUS_TERMINATED:8,STATUS_CONFIRMED:9},Zl=["audio","video"];var v_=class Su extends bg{static get C(){return Z}constructor(s){Y.debug("new"),super(),this._id=null,this._ua=s,this._status=Z.STATUS_NULL,this._dialog=null,this._earlyDialogs={},this._contact=null,this._from_tag=null,this._to_tag=null,this._connection=null,this._connectionPromiseQueue=Promise.resolve(),this._request=null,this._is_canceled=!1,this._cancel_reason="",this._is_confirmed=!1,this._late_sdp=!1,this._rtcOfferConstraints=null,this._rtcAnswerConstraints=null,this._localMediaStream=null,this._localMediaStreamLocallyGenerated=!1,this._rtcReady=!0,this._iceReady=!1,this._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},this._direction=null,this._local_identity=null,this._remote_identity=null,this._start_time=null,this._end_time=null,this._tones=null,this._audioMuted=!1,this._videoMuted=!1,this._localHold=!1,this._remoteHold=!1,this._sessionTimers={enabled:this._ua.configuration.session_timers,refreshMethod:this._ua.configuration.session_timers_refresh_method,defaultExpires:fe.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},this._referSubscribers={},this._data={}}get C(){return Z}get causes(){return fe.causes}get id(){return this._id}get connection(){return this._connection}get contact(){return this._contact}get direction(){return this._direction}get local_identity(){return this._local_identity}get remote_identity(){return this._remote_identity}get start_time(){return this._start_time}get end_time(){return this._end_time}get data(){return this._data}set data(s){this._data=s}get status(){return this._status}isInProgress(){switch(this._status){case Z.STATUS_NULL:case Z.STATUS_INVITE_SENT:case Z.STATUS_1XX_RECEIVED:case Z.STATUS_INVITE_RECEIVED:case Z.STATUS_WAITING_FOR_ANSWER:return!0;default:return!1}}isEstablished(){switch(this._status){case Z.STATUS_ANSWERED:case Z.STATUS_WAITING_FOR_ACK:case Z.STATUS_CONFIRMED:return!0;default:return!1}}isEnded(){switch(this._status){case Z.STATUS_CANCELED:case Z.STATUS_TERMINATED:return!0;default:return!1}}isMuted(){return{audio:this._audioMuted,video:this._videoMuted}}isOnHold(){return{local:this._localHold,remote:this._remoteHold}}connect(s,r={},a){Y.debug("connect()");const o=s,t=Be.cloneObject(r.eventHandlers),n=Be.cloneArray(r.extraHeaders),h=Be.cloneObject(r.mediaConstraints,{audio:!0,video:!0}),_=r.mediaStream||null,d=Be.cloneObject(r.pcConfig,{iceServers:[]}),g=r.rtcConstraints||null,T=r.rtcOfferConstraints||null;if(this._rtcOfferConstraints=T,this._rtcAnswerConstraints=r.rtcAnswerConstraints||null,this._data=r.data||this._data,s===void 0)throw new TypeError("Not enough arguments");if(this._status!==Z.STATUS_NULL)throw new Tn.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new Tn.NotSupportedError("WebRTC not supported");if(s=this._ua.normalizeTarget(s),!s)throw new TypeError(`Invalid target: ${o}`);this._sessionTimers.enabled&&Be.isDecimal(r.sessionTimersExpires)&&(r.sessionTimersExpires>=fe.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=r.sessionTimersExpires:this._sessionTimers.defaultExpires=fe.SESSION_EXPIRES);for(const A in t)Object.prototype.hasOwnProperty.call(t,A)&&this.on(A,t[A]);this._from_tag=Be.newTag();const E=r.anonymous||!1,y={from_tag:this._from_tag};this._contact=this._ua.contact.toString({anonymous:E,outbound:!0}),E?(y.from_display_name="Anonymous",y.from_uri=new Tf("sip","anonymous","anonymous.invalid"),n.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`),n.push("Privacy: id")):r.fromUserName&&(y.from_uri=new Tf("sip",r.fromUserName,this._ua.configuration.uri.host),n.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`)),r.fromDisplayName&&(y.from_display_name=r.fromDisplayName),n.push(`Contact: ${this._contact}`),n.push("Content-Type: application/sdp"),this._sessionTimers.enabled&&n.push(`Session-Expires: ${this._sessionTimers.defaultExpires}${this._ua.configuration.session_timers_force_refresher?";refresher=uac":""}`),this._request=new Og.InitialOutgoingInviteRequest(s,this._ua,y,n),this._id=this._request.call_id+this._from_tag,this._createRTCConnection(d,g),this._direction="outgoing",this._local_identity=this._request.from,this._remote_identity=this._request.to,a&&a(this),this._newRTCSession("local",this._request),this._sendInitialRequest(h,T,_)}init_incoming(s,r){Y.debug("init_incoming()");let a;const o=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;if(s.body&&o!=="application/sdp"){s.reply(415);return}if(this._status=Z.STATUS_INVITE_RECEIVED,this._from_tag=s.from_tag,this._id=s.call_id+this._from_tag,this._request=s,this._contact=this._ua.contact.toString(),s.hasHeader("expires")&&(a=s.getHeader("expires")*1e3),s.to_tag=Be.newTag(),!this._createDialog(s,"UAS",!0)){s.reply(500,"Missing Contact header field");return}s.body?this._late_sdp=!1:this._late_sdp=!0,this._status=Z.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(()=>{s.reply(408),this._failed("local",null,fe.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),a&&(this._timers.expiresTimer=setTimeout(()=>{this._status===Z.STATUS_WAITING_FOR_ANSWER&&(s.reply(487),this._failed("system",null,fe.causes.EXPIRES))},a)),this._direction="incoming",this._local_identity=s.to,this._remote_identity=s.from,r&&r(this),this._newRTCSession("remote",s),this._status!==Z.STATUS_TERMINATED&&(s.reply(180,null,[`Contact: ${this._contact}`]),this._progress("local",null))}answer(s={}){Y.debug("answer()");const r=this._request,a=Be.cloneArray(s.extraHeaders),o=Be.cloneObject(s.mediaConstraints),t=s.mediaStream||null,n=Be.cloneObject(s.pcConfig,{iceServers:[]}),h=s.rtcConstraints||null,_=s.rtcAnswerConstraints||null,d=Be.cloneObject(s.rtcOfferConstraints);let g,T=!1,E=!1,y=!1,A=!1;if(this._rtcAnswerConstraints=_,this._rtcOfferConstraints=s.rtcOfferConstraints||null,this._data=s.data||this._data,this._direction!=="incoming")throw new Tn.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==Z.STATUS_WAITING_FOR_ANSWER)throw new Tn.InvalidStateError(this._status);if(this._sessionTimers.enabled&&Be.isDecimal(s.sessionTimersExpires)&&(s.sessionTimersExpires>=fe.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=s.sessionTimersExpires:this._sessionTimers.defaultExpires=fe.SESSION_EXPIRES),this._status=Z.STATUS_ANSWERED,!this._createDialog(r,"UAS")){r.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),a.unshift(`Contact: ${this._contact}`);const C=r.parseSDP();Array.isArray(C.media)||(C.media=[C.media]);for(const I of C.media)I.type==="audio"&&(T=!0,(!I.direction||I.direction==="sendrecv")&&(y=!0)),I.type==="video"&&(E=!0,(!I.direction||I.direction==="sendrecv")&&(A=!0));if(t&&o.audio===!1){g=t.getAudioTracks();for(const I of g)t.removeTrack(I)}if(t&&o.video===!1){g=t.getVideoTracks();for(const I of g)t.removeTrack(I)}!t&&o.audio===void 0&&(o.audio=y),!t&&o.video===void 0&&(o.video=A),!t&&!T&&!d.offerToReceiveAudio&&(o.audio=!1),!t&&!E&&!d.offerToReceiveVideo&&(o.video=!1),this._createRTCConnection(n,h),Promise.resolve().then(()=>{if(t)return t;if(o.audio||o.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(o).catch(I=>{throw this._status===Z.STATUS_TERMINATED?new Error("terminated"):(r.reply(480),this._failed("local",null,fe.causes.USER_DENIED_MEDIA_ACCESS),Y.warn('emit "getusermediafailed" [error:%o]',I),this.emit("getusermediafailed",I),new Error("getUserMedia() failed"))})}).then(I=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");this._localMediaStream=I,I&&I.getTracks().forEach(H=>{this._connection.addTrack(H,I)})}).then(()=>{if(this._late_sdp)return;const I={originator:"remote",type:"offer",sdp:r.body};Y.debug('emit "sdp"'),this.emit("sdp",I);const H=new RTCSessionDescription({type:"offer",sdp:I.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(H)).catch(L=>{throw r.reply(488),this._failed("system",null,fe.causes.WEBRTC_ERROR),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',L),this.emit("peerconnection:setremotedescriptionfailed",L),new Error("peerconnection.setRemoteDescription() failed")}),this._connectionPromiseQueue}).then(()=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");return this._connecting(r),this._late_sdp?this._createLocalDescription("offer",this._rtcOfferConstraints).catch(()=>{throw r.reply(500),new Error("_createLocalDescription() failed")}):this._createLocalDescription("answer",_).catch(()=>{throw r.reply(500),new Error("_createLocalDescription() failed")})}).then(I=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");this._handleSessionTimersInIncomingRequest(r,a),r.reply(200,null,a,I,()=>{this._status=Z.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(r,I),this._setACKTimer(),this._accepted("local")},()=>{this._failed("system",null,fe.causes.CONNECTION_ERROR)})}).catch(I=>{this._status!==Z.STATUS_TERMINATED&&Y.warn(I)})}terminate(s={}){Y.debug("terminate()");const r=s.cause||fe.causes.BYE,a=Be.cloneArray(s.extraHeaders),o=s.body;let t,n=s.status_code,h=s.reason_phrase;if(this._status===Z.STATUS_TERMINATED)throw new Tn.InvalidStateError(this._status);switch(this._status){case Z.STATUS_NULL:case Z.STATUS_INVITE_SENT:case Z.STATUS_1XX_RECEIVED:if(Y.debug("canceling session"),n&&(n<200||n>=700))throw new TypeError(`Invalid status_code: ${n}`);n&&(h=h||fe.REASON_PHRASE[n]||"",t=`SIP ;cause=${n} ;text="${h}"`),this._status===Z.STATUS_NULL||this._status===Z.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=t):this._status===Z.STATUS_1XX_RECEIVED&&this._request.cancel(t),this._status=Z.STATUS_CANCELED,this._failed("local",null,fe.causes.CANCELED);break;case Z.STATUS_WAITING_FOR_ANSWER:case Z.STATUS_ANSWERED:if(Y.debug("rejecting session"),n=n||480,n<300||n>=700)throw new TypeError(`Invalid status_code: ${n}`);this._request.reply(n,h,a,o),this._failed("local",null,fe.causes.REJECTED);break;case Z.STATUS_WAITING_FOR_ACK:case Z.STATUS_CONFIRMED:if(Y.debug("terminating session"),h=s.reason_phrase||fe.REASON_PHRASE[n]||"",n&&(n<200||n>=700))throw new TypeError(`Invalid status_code: ${n}`);if(n&&a.push(`Reason: SIP ;cause=${n}; text="${h}"`),this._status===Z.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==mf.C.STATUS_TERMINATED){const _=this._dialog;this.receiveRequest=({method:d})=>{d===fe.ACK&&(this.sendRequest(fe.BYE,{extraHeaders:a,body:o}),_.terminate())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===mf.C.STATUS_TERMINATED&&(this.sendRequest(fe.BYE,{extraHeaders:a,body:o}),_.terminate())}),this._ended("local",null,r),this._dialog=_,this._ua.newDialog(_)}else this.sendRequest(fe.BYE,{extraHeaders:a,body:o}),this._ended("local",null,r)}}sendDTMF(s,r={}){Y.debug("sendDTMF() | tones: %s",s);let a=0,o=r.duration||null,t=r.interToneGap||null;const n=r.transportType||fe.DTMF_TRANSPORT.INFO;if(s===void 0)throw new TypeError("Not enough arguments");if(this._status!==Z.STATUS_CONFIRMED&&this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_1XX_RECEIVED)throw new Tn.InvalidStateError(this._status);if(n!==fe.DTMF_TRANSPORT.INFO&&n!==fe.DTMF_TRANSPORT.RFC2833)throw new TypeError(`invalid transportType: ${n}`);if(typeof s=="number"&&(s=s.toString()),!s||typeof s!="string"||!s.match(/^[0-9A-DR#*,]+$/i))throw new TypeError(`Invalid tones: ${s}`);if(o&&!Be.isDecimal(o))throw new TypeError(`Invalid tone duration: ${o}`);if(o?o<Mt.C.MIN_DURATION?(Y.debug(`"duration" value is lower than the minimum allowed, setting it to ${Mt.C.MIN_DURATION} milliseconds`),o=Mt.C.MIN_DURATION):o>Mt.C.MAX_DURATION?(Y.debug(`"duration" value is greater than the maximum allowed, setting it to ${Mt.C.MAX_DURATION} milliseconds`),o=Mt.C.MAX_DURATION):o=Math.abs(o):o=Mt.C.DEFAULT_DURATION,r.duration=o,t&&!Be.isDecimal(t))throw new TypeError(`Invalid interToneGap: ${t}`);if(t?t<Mt.C.MIN_INTER_TONE_GAP?(Y.debug(`"interToneGap" value is lower than the minimum allowed, setting it to ${Mt.C.MIN_INTER_TONE_GAP} milliseconds`),t=Mt.C.MIN_INTER_TONE_GAP):t=Math.abs(t):t=Mt.C.DEFAULT_INTER_TONE_GAP,n===fe.DTMF_TRANSPORT.RFC2833){const _=this._getDTMFRTPSender();_&&(s=_.toneBuffer+s,_.insertDTMF(s,o,t));return}if(this._tones){this._tones+=s;return}this._tones=s,h.call(this);function h(){let _;if(this._status===Z.STATUS_TERMINATED||!this._tones||a>=this._tones.length){this._tones=null;return}const d=this._tones[a];if(a+=1,d===",")_=2e3;else{const g=new Mt(this);r.eventHandlers={onFailed:()=>{this._tones=null}},g.send(d,r),_=o+t}setTimeout(h.bind(this),_)}}sendInfo(s,r,a={}){if(Y.debug("sendInfo()"),this._status!==Z.STATUS_CONFIRMED&&this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_1XX_RECEIVED)throw new Tn.InvalidStateError(this._status);new gf(this).send(s,r,a)}mute(s={audio:!0,video:!1}){Y.debug("mute()");let r=!1,a=!1;this._audioMuted===!1&&s.audio&&(r=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&s.video&&(a=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(r===!0||a===!0)&&this._onmute({audio:r,video:a})}unmute(s={audio:!0,video:!0}){Y.debug("unmute()");let r=!1,a=!1;this._audioMuted===!0&&s.audio&&(r=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&s.video&&(a=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(r===!0||a===!0)&&this._onunmute({audio:r,video:a})}hold(s={},r){if(Y.debug("hold()"),this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED||this._localHold===!0||!this._isReadyToReOffer())return!1;this._localHold=!0,this._onhold("local");const a={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:fe.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:a,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:a,extraHeaders:s.extraHeaders}),!0}unhold(s={},r){if(Y.debug("unhold()"),this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED||this._localHold===!1||!this._isReadyToReOffer())return!1;this._localHold=!1,this._onunhold("local");const a={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:fe.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:a,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:a,extraHeaders:s.extraHeaders}),!0}renegotiate(s={},r){Y.debug("renegotiate()");const a=s.rtcOfferConstraints||null;if(this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;const o={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:fe.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Media Renegotiation Failed"})}};return this._setLocalMediaStatus(),s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:o,rtcOfferConstraints:a,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:o,rtcOfferConstraints:a,extraHeaders:s.extraHeaders}),!0}refer(s,r){Y.debug("refer()");const a=s;if(this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED)return!1;if(s=this._ua.normalizeTarget(s),!s)throw new TypeError(`Invalid target: ${a}`);const o=new Ug(this);o.sendRefer(s,r);const t=o.id;return this._referSubscribers[t]=o,o.on("requestFailed",()=>{delete this._referSubscribers[t]}),o.on("accepted",()=>{delete this._referSubscribers[t]}),o.on("failed",()=>{delete this._referSubscribers[t]}),o}sendRequest(s,r){return Y.debug("sendRequest()"),this._dialog.sendRequest(s,r)}receiveRequest(s){if(Y.debug("receiveRequest()"),s.method===fe.CANCEL)(this._status===Z.STATUS_WAITING_FOR_ANSWER||this._status===Z.STATUS_ANSWERED)&&(this._status=Z.STATUS_CANCELED,this._request.reply(487),this._failed("remote",s,fe.causes.CANCELED));else switch(s.method){case fe.ACK:if(this._status!==Z.STATUS_WAITING_FOR_ACK)return;if(this._status=Z.STATUS_CONFIRMED,clearTimeout(this._timers.ackTimer),clearTimeout(this._timers.invite2xxTimer),this._late_sdp){if(!s.body){this.terminate({cause:fe.causes.MISSING_SDP,status_code:400});break}const r={originator:"remote",type:"answer",sdp:s.body};Y.debug('emit "sdp"'),this.emit("sdp",r);const a=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(a)).then(()=>{this._is_confirmed||this._confirmed("remote",s)}).catch(o=>{this.terminate({cause:fe.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)})}else this._is_confirmed||this._confirmed("remote",s);break;case fe.BYE:this._status===Z.STATUS_CONFIRMED||this._status===Z.STATUS_WAITING_FOR_ACK?(s.reply(200),this._ended("remote",s,fe.causes.BYE)):this._status===Z.STATUS_INVITE_RECEIVED||this._status===Z.STATUS_WAITING_FOR_ANSWER?(s.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",s,fe.causes.BYE)):s.reply(403,"Wrong Status");break;case fe.INVITE:this._status===Z.STATUS_CONFIRMED?s.hasHeader("replaces")?this._receiveReplaces(s):this._receiveReinvite(s):s.reply(403,"Wrong Status");break;case fe.INFO:if(this._status===Z.STATUS_1XX_RECEIVED||this._status===Z.STATUS_WAITING_FOR_ANSWER||this._status===Z.STATUS_ANSWERED||this._status===Z.STATUS_WAITING_FOR_ACK||this._status===Z.STATUS_CONFIRMED){const r=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;r&&r.match(/^application\/dtmf-relay/i)?new Mt(this).init_incoming(s):r!==void 0?new gf(this).init_incoming(s):s.reply(415)}else s.reply(403,"Wrong Status");break;case fe.UPDATE:this._status===Z.STATUS_CONFIRMED?this._receiveUpdate(s):s.reply(403,"Wrong Status");break;case fe.REFER:this._status===Z.STATUS_CONFIRMED?this._receiveRefer(s):s.reply(403,"Wrong Status");break;case fe.NOTIFY:this._status===Z.STATUS_CONFIRMED?this._receiveNotify(s):s.reply(403,"Wrong Status");break;default:s.reply(501)}}onTransportError(){Y.warn("onTransportError()"),this._status!==Z.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:fe.causes.CONNECTION_ERROR,cause:fe.causes.CONNECTION_ERROR})}onRequestTimeout(){Y.warn("onRequestTimeout()"),this._status!==Z.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:fe.causes.REQUEST_TIMEOUT,cause:fe.causes.REQUEST_TIMEOUT})}onDialogError(){Y.warn("onDialogError()"),this._status!==Z.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:fe.causes.DIALOG_ERROR,cause:fe.causes.DIALOG_ERROR})}newDTMF(s){Y.debug("newDTMF()"),this.emit("newDTMF",s)}newInfo(s){Y.debug("newInfo()"),this.emit("newInfo",s)}_isReadyToReOffer(){return this._rtcReady?this._dialog?this._dialog.uac_pending_reply===!0||this._dialog.uas_pending_reply===!0?(Y.debug("_isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress"),!1):!0:(Y.debug("_isReadyToReOffer() | session not established yet"),!1):(Y.debug("_isReadyToReOffer() | internal WebRTC status not ready"),!1)}_close(){if(Y.debug("close()"),this._localMediaStream&&this._localMediaStreamLocallyGenerated&&(Y.debug("close() | closing local MediaStream"),Be.closeMediaStream(this._localMediaStream)),this._status!==Z.STATUS_TERMINATED){if(this._status=Z.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(s){Y.warn("close() | error closing the RTCPeerConnection: %o",s)}for(const s in this._timers)Object.prototype.hasOwnProperty.call(this._timers,s)&&clearTimeout(this._timers[s]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(const s in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,s)&&(this._earlyDialogs[s].terminate(),delete this._earlyDialogs[s]);for(const s in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,s)&&delete this._referSubscribers[s];this._ua.destroyRTCSession(this)}}_setInvite2xxTimer(s,r){let a=Fi.T1;function o(){this._status===Z.STATUS_WAITING_FOR_ACK&&(s.reply(200,null,[`Contact: ${this._contact}`],r),a<Fi.T2&&(a=a*2,a>Fi.T2&&(a=Fi.T2)),this._timers.invite2xxTimer=setTimeout(o.bind(this),a))}this._timers.invite2xxTimer=setTimeout(o.bind(this),a)}_setACKTimer(){this._timers.ackTimer=setTimeout(()=>{this._status===Z.STATUS_WAITING_FOR_ACK&&(Y.debug("no ACK received, terminating the session"),clearTimeout(this._timers.invite2xxTimer),this.sendRequest(fe.BYE),this._ended("remote",null,fe.causes.NO_ACK))},Fi.TIMER_H)}_createRTCConnection(s,r){this._connection=new RTCPeerConnection(s,r),this._connection.addEventListener("iceconnectionstatechange",()=>{this._connection.iceConnectionState==="failed"&&this.terminate({cause:fe.causes.RTP_TIMEOUT,status_code:408,reason_phrase:fe.causes.RTP_TIMEOUT})}),Y.debug('emit "peerconnection"'),this.emit("peerconnection",{peerconnection:this._connection})}_createLocalDescription(s,r){if(Y.debug("createLocalDescription()"),s!=="offer"&&s!=="answer")throw new Error(`createLocalDescription() | invalid type "${s}"`);const a=this._connection;return this._rtcReady=!1,Promise.resolve().then(()=>s==="offer"?a.createOffer(r).catch(o=>(Y.warn('emit "peerconnection:createofferfailed" [error:%o]',o),this.emit("peerconnection:createofferfailed",o),Promise.reject(o))):a.createAnswer(r).catch(o=>(Y.warn('emit "peerconnection:createanswerfailed" [error:%o]',o),this.emit("peerconnection:createanswerfailed",o),Promise.reject(o)))).then(o=>a.setLocalDescription(o).catch(t=>(this._rtcReady=!0,Y.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',t),this.emit("peerconnection:setlocaldescriptionfailed",t),Promise.reject(t)))).then(()=>{const o=r&&r.iceRestart;if(a.iceGatheringState==="complete"&&!o||a.iceGatheringState==="gathering"&&this._iceReady){this._rtcReady=!0;const t={originator:"local",type:s,sdp:a.localDescription.sdp};return Y.debug('emit "sdp"'),this.emit("sdp",t),Promise.resolve(t.sdp)}return new Promise(t=>{let n=!1,h,_;this._iceReady=!1;const d=()=>{a.removeEventListener("icecandidate",h),a.removeEventListener("icegatheringstatechange",_),n=!0,this._rtcReady=!0,this._iceReady=!0;const g={originator:"local",type:s,sdp:a.localDescription.sdp};Y.debug('emit "sdp"'),this.emit("sdp",g),t(g.sdp)};a.addEventListener("icecandidate",h=g=>{const T=g.candidate;T?this.emit("icecandidate",{candidate:T,ready:d}):n||d()}),a.addEventListener("icegatheringstatechange",_=()=>{a.iceGatheringState==="complete"&&!n&&d()})})})}_createDialog(s,r,a){const o=r==="UAS"?s.to_tag:s.from_tag,t=r==="UAS"?s.from_tag:s.to_tag,n=s.call_id+o+t;let h=this._earlyDialogs[n];if(a)return h?!0:(h=new Ql(this,s,r,Ql.C.STATUS_EARLY),h.error?(Y.debug(h.error),this._failed("remote",s,fe.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[n]=h,!0));{if(this._from_tag=s.from_tag,this._to_tag=s.to_tag,h)return h.update(s,r),this._dialog=h,delete this._earlyDialogs[n],!0;const _=new Ql(this,s,r);return _.error?(Y.debug(_.error),this._failed("remote",s,fe.causes.INTERNAL_ERROR),!1):(this._dialog=_,!0)}}_receiveReinvite(s){Y.debug("receiveReinvite()");const r=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,a={request:s,callback:void 0,reject:t.bind(this)};let o=!1;function t(h={}){o=!0;const _=h.status_code||403,d=h.reason_phrase||"",g=Be.cloneArray(h.extraHeaders);if(this._status!==Z.STATUS_CONFIRMED)return!1;if(_<300||_>=700)throw new TypeError(`Invalid status_code: ${_}`);s.reply(_,d,g)}if(this.emit("reinvite",a),o)return;if(this._late_sdp=!1,!s.body){this._late_sdp=!0,this._remoteHold&&(this._remoteHold=!1,this._onunhold("remote")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",this._rtcOfferConstraints)).then(h=>{n.call(this,h)}).catch(()=>{s.reply(500)});return}if(r!=="application/sdp"){Y.debug("invalid Content-Type"),s.reply(415);return}this._processInDialogSdpOffer(s).then(h=>{this._status!==Z.STATUS_TERMINATED&&n.call(this,h)}).catch(h=>{Y.warn(h)});function n(h){const _=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(s,_),this._late_sdp&&(h=this._mangleOffer(h)),s.reply(200,null,_,h,()=>{this._status=Z.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(s,h),this._setACKTimer()}),typeof a.callback=="function"&&a.callback()}}_receiveUpdate(s){Y.debug("receiveUpdate()");const r=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,a={request:s,callback:void 0,reject:t.bind(this)};let o=!1;function t(h={}){o=!0;const _=h.status_code||403,d=h.reason_phrase||"",g=Be.cloneArray(h.extraHeaders);if(this._status!==Z.STATUS_CONFIRMED)return!1;if(_<300||_>=700)throw new TypeError(`Invalid status_code: ${_}`);s.reply(_,d,g)}if(this.emit("update",a),o)return;if(!s.body){n.call(this,null);return}if(r!=="application/sdp"){Y.debug("invalid Content-Type"),s.reply(415);return}this._processInDialogSdpOffer(s).then(h=>{this._status!==Z.STATUS_TERMINATED&&n.call(this,h)}).catch(h=>{Y.warn(h)});function n(h){const _=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(s,_),s.reply(200,null,_,h),typeof a.callback=="function"&&a.callback()}}_processInDialogSdpOffer(s){Y.debug("_processInDialogSdpOffer()");const r=s.parseSDP();let a=!1;for(const n of r.media){if(Zl.indexOf(n.type)===-1)continue;const h=n.direction||r.direction||"sendrecv";if(h==="sendonly"||h==="inactive")a=!0;else{a=!1;break}}const o={originator:"remote",type:"offer",sdp:s.body};Y.debug('emit "sdp"'),this.emit("sdp",o);const t=new RTCSessionDescription({type:"offer",sdp:o.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");return this._connection.setRemoteDescription(t).catch(n=>{throw s.reply(488),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',n),this.emit("peerconnection:setremotedescriptionfailed",n),n})}).then(()=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");this._remoteHold===!0&&a===!1?(this._remoteHold=!1,this._onunhold("remote")):this._remoteHold===!1&&a===!0&&(this._remoteHold=!0,this._onhold("remote"))}).then(()=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");return this._createLocalDescription("answer",this._rtcAnswerConstraints).catch(n=>{throw s.reply(500),Y.warn('emit "peerconnection:createtelocaldescriptionfailed" [error:%o]',n),n})}).catch(n=>{Y.warn("_processInDialogSdpOffer() failed [error: %o]",n)}),this._connectionPromiseQueue}_receiveRefer(s){if(Y.debug("receiveRefer()"),!s.refer_to){Y.debug("no Refer-To header field present in REFER"),s.reply(400);return}if(s.refer_to.uri.scheme!==fe.SIP){Y.debug("Refer-To header field points to a non-SIP URI scheme"),s.reply(416);return}s.reply(202);const r=new Ng(this,s.cseq);Y.debug('emit "refer"'),this.emit("refer",{request:s,accept:(t,n)=>{a.call(this,t,n)},reject:()=>{o.call(this)}});function a(t,n={}){if(t=typeof t=="function"?t:null,this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED)return!1;const h=new Su(this._ua);if(h.on("progress",({response:_})=>{r.notify(_.status_code,_.reason_phrase)}),h.on("accepted",({response:_})=>{r.notify(_.status_code,_.reason_phrase)}),h.on("_failed",({message:_,cause:d})=>{_?r.notify(_.status_code,_.reason_phrase):r.notify(487,d)}),s.refer_to.uri.hasHeader("replaces")){const _=decodeURIComponent(s.refer_to.uri.getHeader("replaces"));n.extraHeaders=Be.cloneArray(n.extraHeaders),n.extraHeaders.push(`Replaces: ${_}`)}h.connect(s.refer_to.uri.toAor(),n,t)}function o(){r.notify(603)}}_receiveNotify(s){switch(Y.debug("receiveNotify()"),s.event||s.reply(400),s.event.event){case"refer":{let r,a;if(s.event.params&&s.event.params.id)r=s.event.params.id,a=this._referSubscribers[r];else if(Object.keys(this._referSubscribers).length===1)a=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{s.reply(400,"Missing event id parameter");return}if(!a){s.reply(481,"Subscription does not exist");return}a.receiveNotify(s),s.reply(200);break}default:s.reply(489)}}_receiveReplaces(s){Y.debug("receiveReplaces()");function r(o){if(this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED)return!1;const t=new Su(this._ua);t.on("confirmed",()=>{this.terminate()}),t.init_incoming(s,o)}function a(){Y.debug("Replaced INVITE rejected by the user"),s.reply(486)}this.emit("replaces",{request:s,accept:o=>{r.call(this,o)},reject:()=>{a.call(this)}})}_sendInitialRequest(s,r,a){const o=new Dg(this._ua,this._request,{onRequestTimeout:()=>{this.onRequestTimeout()},onTransportError:()=>{this.onTransportError()},onAuthenticated:t=>{this._request=t},onReceiveResponse:t=>{this._receiveInviteResponse(t)}});Promise.resolve().then(()=>{if(a)return a;if(s.audio||s.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(s).catch(t=>{throw this._status===Z.STATUS_TERMINATED?new Error("terminated"):(this._failed("local",null,fe.causes.USER_DENIED_MEDIA_ACCESS),Y.warn('emit "getusermediafailed" [error:%o]',t),this.emit("getusermediafailed",t),t)})}).then(t=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");return this._localMediaStream=t,t&&t.getTracks().forEach(n=>{this._connection.addTrack(n,t)}),this._connecting(this._request),this._createLocalDescription("offer",r).catch(n=>{throw this._failed("local",null,fe.causes.WEBRTC_ERROR),n})}).then(t=>{if(this._is_canceled||this._status===Z.STATUS_TERMINATED)throw new Error("terminated");this._request.body=t,this._status=Z.STATUS_INVITE_SENT,Y.debug('emit "sending" [request:%o]',this._request),this.emit("sending",{request:this._request}),o.send()}).catch(t=>{this._status!==Z.STATUS_TERMINATED&&Y.warn(t)})}_getDTMFRTPSender(){const s=this._connection.getSenders().find(r=>r.track&&r.track.kind==="audio");if(!(s&&s.dtmf)){Y.warn("sendDTMF() | no local audio track to send DTMF with");return}return s.dtmf}_receiveInviteResponse(s){if(Y.debug("receiveInviteResponse()"),this._dialog&&s.status_code>=200&&s.status_code<=299)if(this._dialog.id.call_id===s.call_id&&this._dialog.id.local_tag===s.from_tag&&this._dialog.id.remote_tag===s.to_tag){this.sendRequest(fe.ACK);return}else{const r=new Ql(this,s,"UAC");if(r.error!==void 0){Y.debug(r.error);return}this.sendRequest(fe.ACK),this.sendRequest(fe.BYE);return}if(this._is_canceled){s.status_code>=100&&s.status_code<200?this._request.cancel(this._cancel_reason):s.status_code>=200&&s.status_code<299&&this._acceptAndTerminate(s);return}if(!(this._status!==Z.STATUS_INVITE_SENT&&this._status!==Z.STATUS_1XX_RECEIVED))switch(!0){case/^100$/.test(s.status_code):this._status=Z.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(s.status_code):{if(!s.to_tag){Y.debug("1xx response received without to tag");break}if(s.hasHeader("contact")&&!this._createDialog(s,"UAC",!0))break;if(this._status=Z.STATUS_1XX_RECEIVED,!s.body){this._progress("remote",s);break}const r={originator:"remote",type:"answer",sdp:s.body};Y.debug('emit "sdp"'),this.emit("sdp",r);const a=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(a)).then(()=>this._progress("remote",s)).catch(o=>{Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)});break}case/^2[0-9]{2}$/.test(s.status_code):{if(this._status=Z.STATUS_CONFIRMED,!s.body){this._acceptAndTerminate(s,400,fe.causes.MISSING_SDP),this._failed("remote",s,fe.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(s,"UAC"))break;const r={originator:"remote",type:"answer",sdp:s.body};Y.debug('emit "sdp"'),this.emit("sdp",r);const a=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>{if(this._connection.signalingState==="stable")return this._connection.createOffer(this._rtcOfferConstraints).then(o=>this._connection.setLocalDescription(o)).catch(o=>{this._acceptAndTerminate(s,500,o.toString()),this._failed("local",s,fe.causes.WEBRTC_ERROR)})}).then(()=>{this._connection.setRemoteDescription(a).then(()=>{this._handleSessionTimersInIncomingResponse(s),this._accepted("remote",s),this.sendRequest(fe.ACK),this._confirmed("local",null)}).catch(o=>{this._acceptAndTerminate(s,488,"Not Acceptable Here"),this._failed("remote",s,fe.causes.BAD_MEDIA_DESCRIPTION),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)})});break}default:{const r=Be.sipErrorCause(s.status_code);this._failed("remote",s,r)}}}_sendReinvite(s={}){Y.debug("sendReinvite()");const r=Be.cloneArray(s.extraHeaders),a=Be.cloneObject(s.eventHandlers),o=s.rtcOfferConstraints||this._rtcOfferConstraints||null;let t=!1;r.push(`Contact: ${this._contact}`),r.push("Content-Type: application/sdp"),this._sessionTimers.running&&r.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher?"uac":"uas"}`),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",o)).then(_=>{_=this._mangleOffer(_);const d={originator:"local",type:"offer",sdp:_};Y.debug('emit "sdp"'),this.emit("sdp",d),this.sendRequest(fe.INVITE,{extraHeaders:r,body:_,eventHandlers:{onSuccessResponse:g=>{n.call(this,g),t=!0},onErrorResponse:g=>{h.call(this,g)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{h()});function n(_){if(this._status===Z.STATUS_TERMINATED||(this.sendRequest(fe.ACK),t))return;if(this._handleSessionTimersInIncomingResponse(_),_.body){if(!_.hasHeader("Content-Type")||_.getHeader("Content-Type").toLowerCase()!=="application/sdp"){h.call(this);return}}else{h.call(this);return}const d={originator:"remote",type:"answer",sdp:_.body};Y.debug('emit "sdp"'),this.emit("sdp",d);const g=new RTCSessionDescription({type:"answer",sdp:d.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(g)).then(()=>{a.succeeded&&a.succeeded(_)}).catch(T=>{h.call(this),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',T),this.emit("peerconnection:setremotedescriptionfailed",T)})}function h(_){a.failed&&a.failed(_)}}_sendUpdate(s={}){Y.debug("sendUpdate()");const r=Be.cloneArray(s.extraHeaders),a=Be.cloneObject(s.eventHandlers),o=s.rtcOfferConstraints||this._rtcOfferConstraints||null,t=s.sdpOffer||!1;let n=!1;r.push(`Contact: ${this._contact}`),this._sessionTimers.running&&r.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher?"uac":"uas"}`),t?(r.push("Content-Type: application/sdp"),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",o)).then(d=>{d=this._mangleOffer(d);const g={originator:"local",type:"offer",sdp:d};Y.debug('emit "sdp"'),this.emit("sdp",g),this.sendRequest(fe.UPDATE,{extraHeaders:r,body:d,eventHandlers:{onSuccessResponse:T=>{h.call(this,T),n=!0},onErrorResponse:T=>{_.call(this,T)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{_.call(this)})):this.sendRequest(fe.UPDATE,{extraHeaders:r,eventHandlers:{onSuccessResponse:d=>{h.call(this,d)},onErrorResponse:d=>{_.call(this,d)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}});function h(d){if(this._status!==Z.STATUS_TERMINATED&&!n)if(this._handleSessionTimersInIncomingResponse(d),t){if(d.body){if(!d.hasHeader("Content-Type")||d.getHeader("Content-Type").toLowerCase()!=="application/sdp"){_.call(this);return}}else{_.call(this);return}const g={originator:"remote",type:"answer",sdp:d.body};Y.debug('emit "sdp"'),this.emit("sdp",g);const T=new RTCSessionDescription({type:"answer",sdp:g.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(T)).then(()=>{a.succeeded&&a.succeeded(d)}).catch(E=>{_.call(this),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),this.emit("peerconnection:setremotedescriptionfailed",E)})}else a.succeeded&&a.succeeded(d)}function _(d){a.failed&&a.failed(d)}}_acceptAndTerminate(s,r,a){Y.debug("acceptAndTerminate()");const o=[];r&&(a=a||fe.REASON_PHRASE[r]||"",o.push(`Reason: SIP ;cause=${r}; text="${a}"`)),(this._dialog||this._createDialog(s,"UAC"))&&(this.sendRequest(fe.ACK),this.sendRequest(fe.BYE,{extraHeaders:o})),this._status=Z.STATUS_TERMINATED}_mangleOffer(s){if(!this._localHold&&!this._remoteHold)return s;if(s=pf.parse(s),this._localHold&&!this._remoteHold){Y.debug("mangleOffer() | me on hold, mangling offer");for(const r of s.media)Zl.indexOf(r.type)!==-1&&(r.direction?r.direction==="sendrecv"?r.direction="sendonly":r.direction==="recvonly"&&(r.direction="inactive"):r.direction="sendonly")}else if(this._localHold&&this._remoteHold){Y.debug("mangleOffer() | both on hold, mangling offer");for(const r of s.media)Zl.indexOf(r.type)!==-1&&(r.direction="inactive")}else if(this._remoteHold){Y.debug("mangleOffer() | remote on hold, mangling offer");for(const r of s.media)Zl.indexOf(r.type)!==-1&&(r.direction?r.direction==="sendrecv"?r.direction="recvonly":r.direction==="recvonly"&&(r.direction="inactive"):r.direction="recvonly")}return pf.write(s)}_setLocalMediaStatus(){let s=!0,r=!0;(this._localHold||this._remoteHold)&&(s=!1,r=!1),this._audioMuted&&(s=!1),this._videoMuted&&(r=!1),this._toggleMuteAudio(!s),this._toggleMuteVideo(!r)}_handleSessionTimersInIncomingRequest(s,r){if(!this._sessionTimers.enabled)return;let a;s.session_expires&&s.session_expires>=fe.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=s.session_expires,a=s.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,a="uas"),r.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${a}`),this._sessionTimers.refresher=a==="uas",this._runSessionTimer()}_handleSessionTimersInIncomingResponse(s){if(!this._sessionTimers.enabled)return;let r;s.session_expires&&s.session_expires>=fe.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=s.session_expires,r=s.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,r="uac"),this._sessionTimers.refresher=r==="uac",this._runSessionTimer()}_runSessionTimer(){const s=this._sessionTimers.currentExpires;this._sessionTimers.running=!0,clearTimeout(this._sessionTimers.timer),this._sessionTimers.refresher?this._sessionTimers.timer=setTimeout(()=>{this._status!==Z.STATUS_TERMINATED&&this._isReadyToReOffer()&&(Y.debug("runSessionTimer() | sending session refresh request"),this._sessionTimers.refreshMethod===fe.UPDATE?this._sendUpdate():this._sendReinvite())},s*500):this._sessionTimers.timer=setTimeout(()=>{this._status!==Z.STATUS_TERMINATED&&(Y.warn("runSessionTimer() | timer expired, terminating the session"),this.terminate({cause:fe.causes.REQUEST_TIMEOUT,status_code:408,reason_phrase:"Session Timer Expired"}))},s*1100)}_toggleMuteAudio(s){const r=this._connection.getSenders().filter(a=>a.track&&a.track.kind==="audio");for(const a of r)a.track.enabled=!s}_toggleMuteVideo(s){const r=this._connection.getSenders().filter(a=>a.track&&a.track.kind==="video");for(const a of r)a.track.enabled=!s}_newRTCSession(s,r){Y.debug("newRTCSession()"),this._ua.newRTCSession(this,{originator:s,session:this,request:r})}_connecting(s){Y.debug("session connecting"),Y.debug('emit "connecting"'),this.emit("connecting",{request:s})}_progress(s,r){Y.debug("session progress"),Y.debug('emit "progress"'),this.emit("progress",{originator:s,response:r||null})}_accepted(s,r){Y.debug("session accepted"),this._start_time=new Date,Y.debug('emit "accepted"'),this.emit("accepted",{originator:s,response:r||null})}_confirmed(s,r){Y.debug("session confirmed"),this._is_confirmed=!0,Y.debug('emit "confirmed"'),this.emit("confirmed",{originator:s,ack:r||null})}_ended(s,r,a){Y.debug("session ended"),this._end_time=new Date,this._close(),Y.debug('emit "ended"'),this.emit("ended",{originator:s,message:r||null,cause:a})}_failed(s,r,a){Y.debug("session failed"),Y.debug('emit "_failed"'),this.emit("_failed",{originator:s,message:r||null,cause:a}),this._close(),Y.debug('emit "failed"'),this.emit("failed",{originator:s,message:r||null,cause:a})}_onhold(s){Y.debug("session onhold"),this._setLocalMediaStatus(),Y.debug('emit "hold"'),this.emit("hold",{originator:s})}_onunhold(s){Y.debug("session onunhold"),this._setLocalMediaStatus(),Y.debug('emit "unhold"'),this.emit("unhold",{originator:s})}_onmute({audio:s,video:r}){Y.debug("session onmute"),this._setLocalMediaStatus(),Y.debug('emit "muted"'),this.emit("muted",{audio:s,video:r})}_onunmute({audio:s,video:r}){Y.debug("session onunmute"),this._setLocalMediaStatus(),Y.debug('emit "unmuted"'),this.emit("unmuted",{audio:s,video:r})}};const Pg=ze(v_),xg=ft.EventEmitter,Mg=ot,Bo=De,kg=It,ji=yt(),Lg=gr,vf=Ss,$g=Es(),ea=new Mg("Message");var Hg=class extends xg{constructor(s){super(),this._ua=s,this._request=null,this._closed=!1,this._direction=null,this._local_identity=null,this._remote_identity=null,this._is_replied=!1,this._data={}}get direction(){return this._direction}get local_identity(){return this._local_identity}get remote_identity(){return this._remote_identity}send(s,r,a={}){const o=s;if(s===void 0||r===void 0)throw new TypeError("Not enough arguments");if(s=this._ua.normalizeTarget(s),!s)throw new TypeError(`Invalid target: ${o}`);const t=ji.cloneArray(a.extraHeaders),n=ji.cloneObject(a.eventHandlers),h=a.contentType||"text/plain",_={};a.fromUserName&&(_.from_uri=new $g("sip",a.fromUserName,this._ua.configuration.uri.host),t.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`)),a.fromDisplayName&&(_.from_display_name=a.fromDisplayName);for(const g in n)Object.prototype.hasOwnProperty.call(n,g)&&this.on(g,n[g]);t.push(`Content-Type: ${h}`),this._request=new kg.OutgoingRequest(Bo.MESSAGE,s,this._ua,_,t),r&&(this._request.body=r);const d=new Lg(this._ua,this._request,{onRequestTimeout:()=>{this._onRequestTimeout()},onTransportError:()=>{this._onTransportError()},onReceiveResponse:g=>{this._receiveResponse(g)}});this._newMessage("local",this._request),d.send()}init_incoming(s){this._request=s,this._newMessage("remote",s),this._is_replied||(this._is_replied=!0,s.reply(200)),this._close()}accept(s={}){const r=ji.cloneArray(s.extraHeaders),a=s.body;if(this._direction!=="incoming")throw new vf.NotSupportedError('"accept" not supported for outgoing Message');if(this._is_replied)throw new Error("incoming Message already replied");this._is_replied=!0,this._request.reply(200,null,r,a)}reject(s={}){const r=s.status_code||480,a=s.reason_phrase,o=ji.cloneArray(s.extraHeaders),t=s.body;if(this._direction!=="incoming")throw new vf.NotSupportedError('"reject" not supported for outgoing Message');if(this._is_replied)throw new Error("incoming Message already replied");if(r<300||r>=700)throw new TypeError(`Invalid status_code: ${r}`);this._is_replied=!0,this._request.reply(r,a,o,t)}_receiveResponse(s){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(s.status_code):break;case/^2[0-9]{2}$/.test(s.status_code):this._succeeded("remote",s);break;default:{const r=ji.sipErrorCause(s.status_code);this._failed("remote",s,r);break}}}_onRequestTimeout(){this._closed||this._failed("system",null,Bo.causes.REQUEST_TIMEOUT)}_onTransportError(){this._closed||this._failed("system",null,Bo.causes.CONNECTION_ERROR)}_close(){this._closed=!0,this._ua.destroyMessage(this)}_newMessage(s,r){s==="remote"?(this._direction="incoming",this._local_identity=r.to,this._remote_identity=r.from):s==="local"&&(this._direction="outgoing",this._local_identity=r.from,this._remote_identity=r.to),this._ua.newMessage(this,{originator:s,message:this,request:r})}_failed(s,r,a){ea.debug("MESSAGE failed"),this._close(),ea.debug('emit "failed"'),this.emit("failed",{originator:s,response:r||null,cause:a})}_succeeded(s,r){ea.debug("MESSAGE succeeded"),this._close(),ea.debug('emit "succeeded"'),this.emit("succeeded",{originator:s,response:r})}};const Fg=ft.EventEmitter,jg=ot,Go=De,qg=It,qi=yt(),Vg=gr,Ef=Ss,ta=new jg("Options");var Bg=class extends Fg{constructor(s){super(),this._ua=s,this._request=null,this._closed=!1,this._direction=null,this._local_identity=null,this._remote_identity=null,this._is_replied=!1,this._data={}}get direction(){return this._direction}get local_identity(){return this._local_identity}get remote_identity(){return this._remote_identity}send(s,r,a={}){const o=s;if(s===void 0)throw new TypeError("A target is required for OPTIONS");if(s=this._ua.normalizeTarget(s),!s)throw new TypeError(`Invalid target: ${o}`);const t=qi.cloneArray(a.extraHeaders),n=qi.cloneObject(a.eventHandlers),h=a.contentType||"application/sdp";for(const d in n)Object.prototype.hasOwnProperty.call(n,d)&&this.on(d,n[d]);t.push(`Content-Type: ${h}`),this._request=new qg.OutgoingRequest(Go.OPTIONS,s,this._ua,null,t),r&&(this._request.body=r);const _=new Vg(this._ua,this._request,{onRequestTimeout:()=>{this._onRequestTimeout()},onTransportError:()=>{this._onTransportError()},onReceiveResponse:d=>{this._receiveResponse(d)}});this._newOptions("local",this._request),_.send()}init_incoming(s){this._request=s,this._newOptions("remote",s),this._is_replied||(this._is_replied=!0,s.reply(200)),this._close()}accept(s={}){const r=qi.cloneArray(s.extraHeaders),a=s.body;if(this._direction!=="incoming")throw new Ef.NotSupportedError('"accept" not supported for outgoing Options');if(this._is_replied)throw new Error("incoming Options already replied");this._is_replied=!0,this._request.reply(200,null,r,a)}reject(s={}){const r=s.status_code||480,a=s.reason_phrase,o=qi.cloneArray(s.extraHeaders),t=s.body;if(this._direction!=="incoming")throw new Ef.NotSupportedError('"reject" not supported for outgoing Options');if(this._is_replied)throw new Error("incoming Options already replied");if(r<300||r>=700)throw new TypeError(`Invalid status_code: ${r}`);this._is_replied=!0,this._request.reply(r,a,o,t)}_receiveResponse(s){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(s.status_code):break;case/^2[0-9]{2}$/.test(s.status_code):this._succeeded("remote",s);break;default:{const r=qi.sipErrorCause(s.status_code);this._failed("remote",s,r);break}}}_onRequestTimeout(){this._closed||this._failed("system",null,Go.causes.REQUEST_TIMEOUT)}_onTransportError(){this._closed||this._failed("system",null,Go.causes.CONNECTION_ERROR)}_close(){this._closed=!0,this._ua.destroyMessage(this)}_newOptions(s,r){s==="remote"?(this._direction="incoming",this._local_identity=r.to,this._remote_identity=r.from):s==="local"&&(this._direction="outgoing",this._local_identity=r.from,this._remote_identity=r.to),this._ua.newOptions(this,{originator:s,message:this,request:r})}_failed(s,r,a){ta.debug("OPTIONS failed"),this._close(),ta.debug('emit "failed"'),this.emit("failed",{originator:s,response:r||null,cause:a})}_succeeded(s,r){ta.debug("OPTIONS succeeded"),this._close(),ta.debug('emit "succeeded"'),this.emit("succeeded",{originator:s,response:r})}},Fu={};const Gg=ot,Wo=yt(),Wg=Xt(),Vi=new Gg("Socket");Fu.isSocket=c=>{if(Array.isArray(c))return!1;if(typeof c>"u")return Vi.warn("undefined JsSIP.Socket instance"),!1;try{if(!Wo.isString(c.url))throw Vi.warn("missing or invalid JsSIP.Socket url property"),new Error("Missing or invalid JsSIP.Socket url property");if(!Wo.isString(c.via_transport))throw Vi.warn("missing or invalid JsSIP.Socket via_transport property"),new Error("Missing or invalid JsSIP.Socket via_transport property");if(Wg.parse(c.sip_uri,"SIP_URI")===-1)throw Vi.warn("missing or invalid JsSIP.Socket sip_uri property"),new Error("missing or invalid JsSIP.Socket sip_uri property")}catch{return!1}try{["connect","disconnect","send"].forEach(s=>{if(!Wo.isFunction(c[s]))throw Vi.warn(`missing or invalid JsSIP.Socket method: ${s}`),new Error(`Missing or invalid JsSIP.Socket method: ${s}`)})}catch{return!1}return!0};const Kg=ot,Yg=Fu,Sf=De,Ut=new Kg("Transport"),qt={STATUS_CONNECTED:0,STATUS_CONNECTING:1,STATUS_DISCONNECTED:2,SOCKET_STATUS_READY:0,SOCKET_STATUS_ERROR:1,recovery_options:{min_interval:Sf.CONNECTION_RECOVERY_MIN_INTERVAL,max_interval:Sf.CONNECTION_RECOVERY_MAX_INTERVAL}};var E_=class{constructor(s,r=qt.recovery_options){Ut.debug("new()"),this.status=qt.STATUS_DISCONNECTED,this.socket=null,this.sockets=[],this.recovery_options=r,this.recover_attempts=0,this.recovery_timer=null,this.close_requested=!1;try{this.textDecoder=new TextDecoder("utf8")}catch(a){Ut.warn(`cannot use TextDecoder: ${a}`)}if(typeof s>"u")throw new TypeError("Invalid argument. undefined 'sockets' argument");s instanceof Array||(s=[s]),s.forEach(function(a){if(!Yg.isSocket(a.socket))throw new TypeError("Invalid argument. invalid 'JsSIP.Socket' instance");if(a.weight&&!Number(a.weight))throw new TypeError("Invalid argument. 'weight' attribute is not a number");this.sockets.push({socket:a.socket,weight:a.weight||0,status:qt.SOCKET_STATUS_READY})},this),this._getSocket()}get via_transport(){return this.socket.via_transport}get url(){return this.socket.url}get sip_uri(){return this.socket.sip_uri}connect(){if(Ut.debug("connect()"),this.isConnected()){Ut.debug("Transport is already connected");return}else if(this.isConnecting()){Ut.debug("Transport is connecting");return}this.close_requested=!1,this.status=qt.STATUS_CONNECTING,this.onconnecting({socket:this.socket,attempts:this.recover_attempts}),this.close_requested||(this.socket.onconnect=this._onConnect.bind(this),this.socket.ondisconnect=this._onDisconnect.bind(this),this.socket.ondata=this._onData.bind(this),this.socket.connect())}disconnect(){Ut.debug("close()"),this.close_requested=!0,this.recover_attempts=0,this.status=qt.STATUS_DISCONNECTED,this.recovery_timer!==null&&(clearTimeout(this.recovery_timer),this.recovery_timer=null),this.socket.onconnect=()=>{},this.socket.ondisconnect=()=>{},this.socket.ondata=()=>{},this.socket.disconnect(),this.ondisconnect({socket:this.socket,error:!1})}send(s){if(Ut.debug("send()"),!this.isConnected())return Ut.warn("unable to send message, transport is not connected"),!1;const r=s.toString();return Ut.debug(`sending message:
112
+ `,this.transport.send(o)}}class Vm extends hh{constructor(){super(),this.headers={},this.status_code=null,this.reason_phrase=null}}var It={OutgoingRequest:Wa,InitialOutgoingInviteRequest:Hu,IncomingRequest:jm,IncomingResponse:Vm};const An=ze(It),qm=ut,ps=yt(),Yt=new qm("DigestAuthentication");var _h=class{constructor(s){this._credentials=s,this._cnonce=null,this._nc=0,this._ncHex="00000000",this._algorithm=null,this._realm=null,this._nonce=null,this._opaque=null,this._stale=null,this._qop=null,this._method=null,this._uri=null,this._ha1=null,this._response=null}get(s){switch(s){case"realm":return this._realm;case"ha1":return this._ha1;default:Yt.warn('get() | cannot get "%s" parameter',s);return}}authenticate({method:s,ruri:n,body:a},o,t=null){if(this._algorithm=o.algorithm,this._realm=o.realm,this._nonce=o.nonce,this._opaque=o.opaque,this._stale=o.stale,this._algorithm){if(this._algorithm!=="MD5")return Yt.warn('authenticate() | challenge with Digest algorithm different than "MD5", authentication aborted'),!1}else this._algorithm="MD5";if(!this._nonce)return Yt.warn("authenticate() | challenge without Digest nonce, authentication aborted"),!1;if(!this._realm)return Yt.warn("authenticate() | challenge without Digest realm, authentication aborted"),!1;if(!this._credentials.password){if(!this._credentials.ha1)return Yt.warn("authenticate() | no plain SIP password nor ha1 provided, authentication aborted"),!1;if(this._credentials.realm!==this._realm)return Yt.warn('authenticate() | no plain SIP password, and stored `realm` does not match the given `realm`, cannot authenticate [stored:"%s", given:"%s"]',this._credentials.realm,this._realm),!1}if(o.qop)if(o.qop.indexOf("auth-int")>-1)this._qop="auth-int";else if(o.qop.indexOf("auth")>-1)this._qop="auth";else return Yt.warn('authenticate() | challenge without Digest qop different than "auth" or "auth-int", authentication aborted'),!1;else this._qop=null;this._method=s,this._uri=n,this._cnonce=t||ps.createRandomToken(12),this._nc+=1;const r=Number(this._nc).toString(16);this._ncHex="00000000".substr(0,8-r.length)+r,this._nc===4294967296&&(this._nc=1,this._ncHex="00000001"),this._credentials.password?this._ha1=ps.calculateMD5(`${this._credentials.username}:${this._realm}:${this._credentials.password}`):this._ha1=this._credentials.ha1;let _,h;return this._qop==="auth"?(_=`${this._method}:${this._uri}`,h=ps.calculateMD5(_),Yt.debug('authenticate() | using qop=auth [a2:"%s"]',_),this._response=ps.calculateMD5(`${this._ha1}:${this._nonce}:${this._ncHex}:${this._cnonce}:auth:${h}`)):this._qop==="auth-int"?(_=`${this._method}:${this._uri}:${ps.calculateMD5(a||"")}`,h=ps.calculateMD5(_),Yt.debug('authenticate() | using qop=auth-int [a2:"%s"]',_),this._response=ps.calculateMD5(`${this._ha1}:${this._nonce}:${this._ncHex}:${this._cnonce}:auth-int:${h}`)):this._qop===null&&(_=`${this._method}:${this._uri}`,h=ps.calculateMD5(_),Yt.debug('authenticate() | using qop=null [a2:"%s"]',_),this._response=ps.calculateMD5(`${this._ha1}:${this._nonce}:${h}`)),Yt.debug("authenticate() | response generated"),!0}toString(){const s=[];if(!this._response)throw new Error("response field does not exist, cannot generate Authorization header");return s.push(`algorithm=${this._algorithm}`),s.push(`username="${this._credentials.username}"`),s.push(`realm="${this._realm}"`),s.push(`nonce="${this._nonce}"`),s.push(`uri="${this._uri}"`),s.push(`response="${this._response}"`),this._opaque&&s.push(`opaque="${this._opaque}"`),this._qop&&(s.push(`qop=${this._qop}`),s.push(`cnonce="${this._cnonce}"`),s.push(`nc=${this._ncHex}`)),`Digest ${s.join(", ")}`}};const Bm=ze(_h),ms=500,Gm=4e3,lf=5e3;var Fu={T1:ms,T2:Gm,T4:lf,TIMER_B:64*ms,TIMER_D:0*ms,TIMER_F:64*ms,TIMER_H:64*ms,TIMER_I:0*ms,TIMER_J:0*ms,TIMER_K:0*lf,TIMER_L:64*ms,TIMER_M:64*ms,PROVISIONAL_RESPONSE_INTERVAL:6e4};const $i=ze(Fu),_l=ft.EventEmitter,dl=ut,Xi=De,af=It,as=Fu,of=new dl("NonInviteClientTransaction"),Jl=new dl("InviteClientTransaction"),Wm=new dl("AckClientTransaction"),uf=new dl("NonInviteServerTransaction"),zl=new dl("InviteServerTransaction"),_e={STATUS_TRYING:1,STATUS_PROCEEDING:2,STATUS_CALLING:3,STATUS_ACCEPTED:4,STATUS_COMPLETED:5,STATUS_TERMINATED:6,STATUS_CONFIRMED:7,NON_INVITE_CLIENT:"nict",NON_INVITE_SERVER:"nist",INVITE_CLIENT:"ict",INVITE_SERVER:"ist"};class Km extends _l{constructor(s,n,a,o){super(),this.type=_e.NON_INVITE_CLIENT,this.id=`z9hG4bK${Math.floor(Math.random()*1e7)}`,this.ua=s,this.transport=n,this.request=a,this.eventHandlers=o;let t=`SIP/2.0/${n.via_transport}`;t+=` ${s.configuration.via_host};branch=${this.id}`,this.request.setHeader("via",t),this.ua.newTransaction(this)}get C(){return _e}stateChanged(s){this.state=s,this.emit("stateChanged")}send(){this.stateChanged(_e.STATUS_TRYING),this.F=setTimeout(()=>{this.timer_F()},as.TIMER_F),this.transport.send(this.request)||this.onTransportError()}onTransportError(){of.debug(`transport error occurred, deleting transaction ${this.id}`),clearTimeout(this.F),clearTimeout(this.K),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onTransportError()}timer_F(){of.debug(`Timer F expired for transaction ${this.id}`),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onRequestTimeout()}timer_K(){this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this)}receiveResponse(s){const n=s.status_code;if(n<200)switch(this.state){case _e.STATUS_TRYING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(s);break}else switch(this.state){case _e.STATUS_TRYING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_COMPLETED),clearTimeout(this.F),n===408?this.eventHandlers.onRequestTimeout():this.eventHandlers.onReceiveResponse(s),this.K=setTimeout(()=>{this.timer_K()},as.TIMER_K);break;case _e.STATUS_COMPLETED:break}}}class Ym extends _l{constructor(s,n,a,o){super(),this.type=_e.INVITE_CLIENT,this.id=`z9hG4bK${Math.floor(Math.random()*1e7)}`,this.ua=s,this.transport=n,this.request=a,this.eventHandlers=o,a.transaction=this;let t=`SIP/2.0/${n.via_transport}`;t+=` ${s.configuration.via_host};branch=${this.id}`,this.request.setHeader("via",t),this.ua.newTransaction(this)}get C(){return _e}stateChanged(s){this.state=s,this.emit("stateChanged")}send(){this.stateChanged(_e.STATUS_CALLING),this.B=setTimeout(()=>{this.timer_B()},as.TIMER_B),this.transport.send(this.request)||this.onTransportError()}onTransportError(){clearTimeout(this.B),clearTimeout(this.D),clearTimeout(this.M),this.state!==_e.STATUS_ACCEPTED&&(Jl.debug(`transport error occurred, deleting transaction ${this.id}`),this.eventHandlers.onTransportError()),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this)}timer_M(){Jl.debug(`Timer M expired for transaction ${this.id}`),this.state===_e.STATUS_ACCEPTED&&(clearTimeout(this.B),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this))}timer_B(){Jl.debug(`Timer B expired for transaction ${this.id}`),this.state===_e.STATUS_CALLING&&(this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onRequestTimeout())}timer_D(){Jl.debug(`Timer D expired for transaction ${this.id}`),clearTimeout(this.B),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this)}sendACK(s){const n=new af.OutgoingRequest(Xi.ACK,this.request.ruri,this.ua,{route_set:this.request.getHeaders("route"),call_id:this.request.getHeader("call-id"),cseq:this.request.cseq});n.setHeader("from",this.request.getHeader("from")),n.setHeader("via",this.request.getHeader("via")),n.setHeader("to",s.getHeader("to")),this.D=setTimeout(()=>{this.timer_D()},as.TIMER_D),this.transport.send(n)}cancel(s){if(this.state!==_e.STATUS_PROCEEDING)return;const n=new af.OutgoingRequest(Xi.CANCEL,this.request.ruri,this.ua,{route_set:this.request.getHeaders("route"),call_id:this.request.getHeader("call-id"),cseq:this.request.cseq});n.setHeader("from",this.request.getHeader("from")),n.setHeader("via",this.request.getHeader("via")),n.setHeader("to",this.request.getHeader("to")),s&&n.setHeader("reason",s),this.transport.send(n)}receiveResponse(s){const n=s.status_code;if(n>=100&&n<=199)switch(this.state){case _e.STATUS_CALLING:this.stateChanged(_e.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(s);break;case _e.STATUS_PROCEEDING:this.eventHandlers.onReceiveResponse(s);break}else if(n>=200&&n<=299)switch(this.state){case _e.STATUS_CALLING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_ACCEPTED),this.M=setTimeout(()=>{this.timer_M()},as.TIMER_M),this.eventHandlers.onReceiveResponse(s);break;case _e.STATUS_ACCEPTED:this.eventHandlers.onReceiveResponse(s);break}else if(n>=300&&n<=699)switch(this.state){case _e.STATUS_CALLING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_COMPLETED),this.sendACK(s),this.eventHandlers.onReceiveResponse(s);break;case _e.STATUS_COMPLETED:this.sendACK(s);break}}}class Jm extends _l{constructor(s,n,a,o){super(),this.id=`z9hG4bK${Math.floor(Math.random()*1e7)}`,this.transport=n,this.request=a,this.eventHandlers=o;let t=`SIP/2.0/${n.via_transport}`;t+=` ${s.configuration.via_host};branch=${this.id}`,this.request.setHeader("via",t)}get C(){return _e}send(){this.transport.send(this.request)||this.onTransportError()}onTransportError(){Wm.debug(`transport error occurred for transaction ${this.id}`),this.eventHandlers.onTransportError()}}class zm extends _l{constructor(s,n,a){super(),this.type=_e.NON_INVITE_SERVER,this.id=a.via_branch,this.ua=s,this.transport=n,this.request=a,this.last_response="",a.server_transaction=this,this.state=_e.STATUS_TRYING,s.newTransaction(this)}get C(){return _e}stateChanged(s){this.state=s,this.emit("stateChanged")}timer_J(){uf.debug(`Timer J expired for transaction ${this.id}`),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this)}onTransportError(){this.transportError||(this.transportError=!0,uf.debug(`transport error occurred, deleting transaction ${this.id}`),clearTimeout(this.J),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this))}receiveResponse(s,n,a,o){if(s===100)switch(this.state){case _e.STATUS_TRYING:this.stateChanged(_e.STATUS_PROCEEDING),this.transport.send(n)||this.onTransportError();break;case _e.STATUS_PROCEEDING:this.last_response=n,this.transport.send(n)?a&&a():(this.onTransportError(),o&&o());break}else if(s>=200&&s<=699)switch(this.state){case _e.STATUS_TRYING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_COMPLETED),this.last_response=n,this.J=setTimeout(()=>{this.timer_J()},as.TIMER_J),this.transport.send(n)?a&&a():(this.onTransportError(),o&&o());break;case _e.STATUS_COMPLETED:break}}}class Xm extends _l{constructor(s,n,a){super(),this.type=_e.INVITE_SERVER,this.id=a.via_branch,this.ua=s,this.transport=n,this.request=a,this.last_response="",a.server_transaction=this,this.state=_e.STATUS_PROCEEDING,s.newTransaction(this),this.resendProvisionalTimer=null,a.reply(100)}get C(){return _e}stateChanged(s){this.state=s,this.emit("stateChanged")}timer_H(){zl.debug(`Timer H expired for transaction ${this.id}`),this.state===_e.STATUS_COMPLETED&&zl.debug("ACK not received, dialog will be terminated"),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this)}timer_I(){this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this)}timer_L(){zl.debug(`Timer L expired for transaction ${this.id}`),this.state===_e.STATUS_ACCEPTED&&(this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this))}onTransportError(){this.transportError||(this.transportError=!0,zl.debug(`transport error occurred, deleting transaction ${this.id}`),this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),clearTimeout(this.L),clearTimeout(this.H),clearTimeout(this.I),this.stateChanged(_e.STATUS_TERMINATED),this.ua.destroyTransaction(this))}resend_provisional(){this.transport.send(this.last_response)||this.onTransportError()}receiveResponse(s,n,a,o){if(s>=100&&s<=199)switch(this.state){case _e.STATUS_PROCEEDING:this.transport.send(n)||this.onTransportError(),this.last_response=n;break}if(s>100&&s<=199&&this.state===_e.STATUS_PROCEEDING)this.resendProvisionalTimer===null&&(this.resendProvisionalTimer=setInterval(()=>{this.resend_provisional()},as.PROVISIONAL_RESPONSE_INTERVAL));else if(s>=200&&s<=299)switch(this.state){case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_ACCEPTED),this.last_response=n,this.L=setTimeout(()=>{this.timer_L()},as.TIMER_L),this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null);case _e.STATUS_ACCEPTED:this.transport.send(n)?a&&a():(this.onTransportError(),o&&o());break}else if(s>=300&&s<=699)switch(this.state){case _e.STATUS_PROCEEDING:this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),this.transport.send(n)?(this.stateChanged(_e.STATUS_COMPLETED),this.H=setTimeout(()=>{this.timer_H()},as.TIMER_H),a&&a()):(this.onTransportError(),o&&o());break}}}function Qm({_transactions:c},s){let n;switch(s.method){case Xi.INVITE:if(n=c.ist[s.via_branch],n){switch(n.state){case _e.STATUS_PROCEEDING:n.transport.send(n.last_response);break;case _e.STATUS_ACCEPTED:break}return!0}break;case Xi.ACK:if(n=c.ist[s.via_branch],n){if(n.state===_e.STATUS_ACCEPTED)return!1;if(n.state===_e.STATUS_COMPLETED)return n.state=_e.STATUS_CONFIRMED,n.I=setTimeout(()=>{n.timer_I()},as.TIMER_I),!0}else return!1;break;case Xi.CANCEL:return n=c.ist[s.via_branch],n?(s.reply_sl(200),n.state!==_e.STATUS_PROCEEDING):(s.reply_sl(481),!0);default:if(n=c.nist[s.via_branch],n){switch(n.state){case _e.STATUS_TRYING:break;case _e.STATUS_PROCEEDING:case _e.STATUS_COMPLETED:n.transport.send(n.last_response);break}return!0}break}}var Tr={C:_e,NonInviteClientTransaction:Km,InviteClientTransaction:Ym,AckClientTransaction:Jm,NonInviteServerTransaction:zm,InviteServerTransaction:Xm,checkTransaction:Qm};const Bt=ze(Tr),Zm=ut,cf=De,eg=_h,$o=Tr,tg=new Zm("RequestSender"),Ho={onRequestTimeout:()=>{},onTransportError:()=>{},onReceiveResponse:()=>{},onAuthenticated:()=>{}};var vr=class{constructor(s,n,a){this._ua=s,this._eventHandlers=a,this._method=n.method,this._request=n,this._auth=null,this._challenged=!1,this._staled=!1;for(const o in Ho)Object.prototype.hasOwnProperty.call(Ho,o)&&(this._eventHandlers[o]||(this._eventHandlers[o]=Ho[o]));s.status===s.C.STATUS_USER_CLOSED&&(this._method!==cf.BYE||this._method!==cf.ACK)&&this._eventHandlers.onTransportError()}send(){const s={onRequestTimeout:()=>{this._eventHandlers.onRequestTimeout()},onTransportError:()=>{this._eventHandlers.onTransportError()},onReceiveResponse:n=>{this._receiveResponse(n)}};switch(this._method){case"INVITE":this.clientTransaction=new $o.InviteClientTransaction(this._ua,this._ua.transport,this._request,s);break;case"ACK":this.clientTransaction=new $o.AckClientTransaction(this._ua,this._ua.transport,this._request,s);break;default:this.clientTransaction=new $o.NonInviteClientTransaction(this._ua,this._ua.transport,this._request,s)}this._ua._configuration.authorization_jwt&&this._request.setHeader("Authorization",this._ua._configuration.authorization_jwt),this.clientTransaction.send()}_receiveResponse(s){let n,a;const o=s.status_code;if((o===401||o===407)&&(this._ua.configuration.password!==null||this._ua.configuration.ha1!==null)){if(s.status_code===401?(n=s.parseHeader("www-authenticate"),a="authorization"):(n=s.parseHeader("proxy-authenticate"),a="proxy-authorization"),!n){tg.debug(`${s.status_code} with wrong or missing challenge, cannot authenticate`),this._eventHandlers.onReceiveResponse(s);return}if(!this._challenged||!this._staled&&n.stale===!0){if(this._auth||(this._auth=new eg({username:this._ua.configuration.authorization_user,password:this._ua.configuration.password,realm:this._ua.configuration.realm,ha1:this._ua.configuration.ha1})),!this._auth.authenticate(this._request,n)){this._eventHandlers.onReceiveResponse(s);return}this._challenged=!0,this._ua.set("realm",this._auth.get("realm")),this._ua.set("ha1",this._auth.get("ha1")),n.stale&&(this._staled=!0),this._request=this._request.clone(),this._request.cseq+=1,this._request.setHeader("cseq",`${this._request.cseq} ${this._method}`),this._request.setHeader(a,this._auth.toString()),this._eventHandlers.onAuthenticated(this._request),this.send()}else this._eventHandlers.onReceiveResponse(s)}else this._eventHandlers.onReceiveResponse(s)}};const La=ze(vr),sg=ut,Fo=yt(),Tn=De,ff=It,hf=vr,Hi=new sg("Registrator"),Xl=10;var ng=class{constructor(s,n){this._reg_id=1,this._ua=s,this._transport=n,this._registrar=s.configuration.registrar_server,this._expires=s.configuration.register_expires,this._call_id=Fo.createRandomToken(22),this._cseq=0,this._to_uri=s.configuration.uri,this._registrationTimer=null,this._registering=!1,this._registered=!1,this._contact=this._ua.contact.toString(),this._contact+=";+sip.ice",this._extraHeaders=[],this._extraContactParams="",this._sipInstance=`"<urn:uuid:${this._ua.configuration.instance_id}>"`,this._contact+=`;reg-id=${this._reg_id}`,this._contact+=`;+sip.instance=${this._sipInstance}`}get registered(){return this._registered}setExtraHeaders(s){Array.isArray(s)||(s=[]),this._extraHeaders=s.slice()}setExtraContactParams(s){s instanceof Object||(s={}),this._extraContactParams="";for(const n in s)if(Object.prototype.hasOwnProperty.call(s,n)){const a=s[n];this._extraContactParams+=`;${n}`,a&&(this._extraContactParams+=`=${a}`)}}register(){if(this._registering){Hi.debug("Register request in progress...");return}const s=this._extraHeaders.slice();s.push(`Contact: ${this._contact};expires=${this._expires}${this._extraContactParams}`),s.push(`Expires: ${this._expires}`);const n=new ff.OutgoingRequest(Tn.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},s),a=new hf(this._ua,n,{onRequestTimeout:()=>{this._registrationFailure(null,Tn.causes.REQUEST_TIMEOUT)},onTransportError:()=>{this._registrationFailure(null,Tn.causes.CONNECTION_ERROR)},onAuthenticated:()=>{this._cseq+=1},onReceiveResponse:o=>{if(o.cseq===this._cseq)switch(this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),!0){case/^1[0-9]{2}$/.test(o.status_code):break;case/^2[0-9]{2}$/.test(o.status_code):{if(this._registering=!1,!o.hasHeader("Contact")){Hi.debug("no Contact header in response to REGISTER, response ignored");break}const t=o.headers.Contact.reduce((d,g)=>d.concat(g.parsed),[]);let r=t.find(d=>this._sipInstance===d.getParam("+sip.instance")&&this._reg_id===parseInt(d.getParam("reg-id")));if(r||(r=t.find(d=>d.uri.user===this._ua.contact.uri.user)),!r){Hi.debug("no Contact header pointing to us, response ignored");break}let _=r.getParam("expires");!_&&o.hasHeader("expires")&&(_=o.getHeader("expires")),_||(_=this._expires),_=Number(_),_<Xl&&(_=Xl);const h=_>64?_*1e3/2+Math.floor((_/2-32)*1e3*Math.random()):_*1e3-5e3;this._registrationTimer=setTimeout(()=>{this._registrationTimer=null,this._ua.listeners("registrationExpiring").length===0?this.register():this._ua.emit("registrationExpiring")},h),r.hasParam("temp-gruu")&&(this._ua.contact.temp_gruu=r.getParam("temp-gruu").replace(/"/g,"")),r.hasParam("pub-gruu")&&(this._ua.contact.pub_gruu=r.getParam("pub-gruu").replace(/"/g,"")),this._registered||(this._registered=!0,this._ua.registered({response:o}));break}case/^423$/.test(o.status_code):{o.hasHeader("min-expires")?(this._expires=Number(o.getHeader("min-expires")),this._expires<Xl&&(this._expires=Xl),this.register()):(Hi.debug("423 response received for REGISTER without Min-Expires"),this._registrationFailure(o,Tn.causes.SIP_FAILURE_CODE));break}default:{const t=Fo.sipErrorCause(o.status_code);this._registrationFailure(o,t)}}}});this._registering=!0,a.send()}unregister(s={}){if(!this._registered){Hi.debug("already unregistered");return}this._registered=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null);const n=this._extraHeaders.slice();s.all?n.push(`Contact: *${this._extraContactParams}`):n.push(`Contact: ${this._contact};expires=0${this._extraContactParams}`),n.push("Expires: 0");const a=new ff.OutgoingRequest(Tn.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},n);new hf(this._ua,a,{onRequestTimeout:()=>{this._unregistered(null,Tn.causes.REQUEST_TIMEOUT)},onTransportError:()=>{this._unregistered(null,Tn.causes.CONNECTION_ERROR)},onAuthenticated:()=>{this._cseq+=1},onReceiveResponse:t=>{switch(!0){case/^1[0-9]{2}$/.test(t.status_code):break;case/^2[0-9]{2}$/.test(t.status_code):this._unregistered(t);break;default:{const r=Fo.sipErrorCause(t.status_code);this._unregistered(t,r)}}}}).send()}close(){this._registered&&this.unregister()}onTransportClosed(){this._registering=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),this._registered&&(this._registered=!1,this._ua.unregistered({}))}_registrationFailure(s,n){this._registering=!1,this._ua.registrationFailed({response:s||null,cause:n}),this._registered&&(this._registered=!1,this._ua.unregistered({response:s||null,cause:n}))}_unregistered(s,n){this._registering=!1,this._registered=!1,this._ua.unregistered({response:s||null,cause:n||null})}};class rg extends Error{constructor(s,n){super(),this.code=1,this.name="CONFIGURATION_ERROR",this.parameter=s,this.value=n,this.message=this.value?`Invalid value ${JSON.stringify(this.value)} for parameter "${this.parameter}"`:`Missing parameter: ${this.parameter}`}}class ig extends Error{constructor(s){super(),this.code=2,this.name="INVALID_STATE_ERROR",this.status=s,this.message=`Invalid status: ${s}`}}class lg extends Error{constructor(s){super(),this.code=3,this.name="NOT_SUPPORTED_ERROR",this.message=s}}class ag extends Error{constructor(s){super(),this.code=4,this.name="NOT_READY_ERROR",this.message=s}}var As={ConfigurationError:rg,InvalidStateError:ig,NotSupportedError:lg,NotReadyError:ag};const Vs=ze(As),jo=De,Ql=Tr,og=vr,Vo={onRequestTimeout:()=>{},onTransportError:()=>{},onSuccessResponse:()=>{},onErrorResponse:()=>{},onAuthenticated:()=>{},onDialogError:()=>{}};var dh=class{constructor(s,n,a){this._dialog=s,this._ua=s._ua,this._request=n,this._eventHandlers=a,this._reattempt=!1,this._reattemptTimer=null;for(const o in Vo)Object.prototype.hasOwnProperty.call(Vo,o)&&(this._eventHandlers[o]||(this._eventHandlers[o]=Vo[o]))}get request(){return this._request}send(){const s=new og(this._ua,this._request,{onRequestTimeout:()=>{this._eventHandlers.onRequestTimeout()},onTransportError:()=>{this._eventHandlers.onTransportError()},onAuthenticated:n=>{this._eventHandlers.onAuthenticated(n)},onReceiveResponse:n=>{this._receiveResponse(n)}});if(s.send(),(this._request.method===jo.INVITE||this._request.method===jo.UPDATE&&this._request.body)&&s.clientTransaction.state!==Ql.C.STATUS_TERMINATED){this._dialog.uac_pending_reply=!0;const n=()=>{(s.clientTransaction.state===Ql.C.STATUS_ACCEPTED||s.clientTransaction.state===Ql.C.STATUS_COMPLETED||s.clientTransaction.state===Ql.C.STATUS_TERMINATED)&&(s.clientTransaction.removeListener("stateChanged",n),this._dialog.uac_pending_reply=!1)};s.clientTransaction.on("stateChanged",n)}}_receiveResponse(s){s.status_code===408||s.status_code===481?this._eventHandlers.onDialogError(s):s.method===jo.INVITE&&s.status_code===491?this._reattempt?s.status_code>=200&&s.status_code<300?this._eventHandlers.onSuccessResponse(s):s.status_code>=300&&this._eventHandlers.onErrorResponse(s):(this._request.cseq=this._dialog.local_seqnum+=1,this._reattemptTimer=setTimeout(()=>{this._dialog.isTerminated()||(this._reattempt=!0,this.send())},1e3)):s.status_code>=200&&s.status_code<300?this._eventHandlers.onSuccessResponse(s):s.status_code>=300&&this._eventHandlers.onErrorResponse(s)}};const ug=ze(dh),cg=ut,_f=It,$s=De,Fi=Tr,fg=dh,qo=yt(),Bo=new cg("Dialog"),Hs={STATUS_EARLY:1,STATUS_CONFIRMED:2,STATUS_TERMINATED:3};var ph=class{static get C(){return Hs}constructor(s,n,a,o=Hs.STATUS_CONFIRMED){if(this._owner=s,this._ua=s._ua,this._uac_pending_reply=!1,this._uas_pending_reply=!1,!n.hasHeader("contact"))return{error:"unable to create a Dialog without Contact header field"};n instanceof _f.IncomingResponse&&(o=n.status_code<200?Hs.STATUS_EARLY:Hs.STATUS_CONFIRMED);const t=n.parseHeader("contact");a==="UAS"?(this._id={call_id:n.call_id,local_tag:n.to_tag,remote_tag:n.from_tag,toString(){return this.call_id+this.local_tag+this.remote_tag}},this._state=o,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._ack_seqnum=this._remote_seqnum):a==="UAC"&&(this._id={call_id:n.call_id,local_tag:n.from_tag,remote_tag:n.to_tag,toString(){return this.call_id+this.local_tag+this.remote_tag}},this._state=o,this._local_seqnum=n.cseq,this._local_uri=n.parseHeader("from").uri,this._remote_uri=n.parseHeader("to").uri,this._remote_target=t.uri,this._route_set=n.getHeaders("record-route").reverse(),this._ack_seqnum=null),this._ua.newDialog(this),Bo.debug(`new ${a} dialog created with status ${this._state===Hs.STATUS_EARLY?"EARLY":"CONFIRMED"}`)}get id(){return this._id}get local_seqnum(){return this._local_seqnum}set local_seqnum(s){this._local_seqnum=s}get owner(){return this._owner}get uac_pending_reply(){return this._uac_pending_reply}set uac_pending_reply(s){this._uac_pending_reply=s}get uas_pending_reply(){return this._uas_pending_reply}isTerminated(){return this._status===Hs.STATUS_TERMINATED}update(s,n){this._state=Hs.STATUS_CONFIRMED,Bo.debug(`dialog ${this._id.toString()} changed to CONFIRMED state`),n==="UAC"&&(this._route_set=s.getHeaders("record-route").reverse())}terminate(){Bo.debug(`dialog ${this._id.toString()} deleted`),this._ua.destroyDialog(this),this._state=Hs.STATUS_TERMINATED}sendRequest(s,n={}){const a=qo.cloneArray(n.extraHeaders),o=qo.cloneObject(n.eventHandlers),t=n.body||null,r=this._createRequest(s,a,t);return o.onAuthenticated=()=>{this._local_seqnum+=1},new fg(this,r,o).send(),r}receiveRequest(s){this._checkInDialogRequest(s)&&(s.method===$s.ACK&&this._ack_seqnum!==null?this._ack_seqnum=null:s.method===$s.INVITE&&(this._ack_seqnum=s.cseq),this._owner.receiveRequest(s))}_createRequest(s,n,a){n=qo.cloneArray(n),this._local_seqnum||(this._local_seqnum=Math.floor(Math.random()*1e4));const o=s===$s.CANCEL||s===$s.ACK?this._local_seqnum:this._local_seqnum+=1;return new _f.OutgoingRequest(s,this._remote_target,this._ua,{cseq:o,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,a)}_checkInDialogRequest(s){if(!this._remote_seqnum)this._remote_seqnum=s.cseq;else if(s.cseq<this._remote_seqnum)if(s.method===$s.ACK){if(this._ack_seqnum===null||s.cseq!==this._ack_seqnum)return!1}else return s.reply(500),!1;else s.cseq>this._remote_seqnum&&(this._remote_seqnum=s.cseq);if(s.method===$s.INVITE||s.method===$s.UPDATE&&s.body){if(this._uac_pending_reply===!0)s.reply(491);else if(this._uas_pending_reply===!0){const n=(Math.random()*10|0)+1;return s.reply(500,null,[`Retry-After:${n}`]),!1}else{this._uas_pending_reply=!0;const n=()=>{(s.server_transaction.state===Fi.C.STATUS_ACCEPTED||s.server_transaction.state===Fi.C.STATUS_COMPLETED||s.server_transaction.state===Fi.C.STATUS_TERMINATED)&&(s.server_transaction.removeListener("stateChanged",n),this._uas_pending_reply=!1)};s.server_transaction.on("stateChanged",n)}s.hasHeader("contact")&&s.server_transaction.on("stateChanged",()=>{s.server_transaction.state===Fi.C.STATUS_ACCEPTED&&(this._remote_target=s.parseHeader("contact").uri)})}else s.method===$s.NOTIFY&&s.hasHeader("contact")&&s.server_transaction.on("stateChanged",()=>{s.server_transaction.state===Fi.C.STATUS_COMPLETED&&(this._remote_target=s.parseHeader("contact").uri)});return!0}};const Zl=ze(ph);var ju={exports:{}};const hg=ft.EventEmitter,_g=ut,dg=De,pg=As,df=yt(),mg=new _g("RTCSession:DTMF"),mh={MIN_DURATION:70,MAX_DURATION:6e3,DEFAULT_DURATION:100,MIN_INTER_TONE_GAP:50,DEFAULT_INTER_TONE_GAP:500};ju.exports=class extends hg{constructor(s){super(),this._session=s,this._direction=null,this._tone=null,this._duration=null,this._request=null}get tone(){return this._tone}get duration(){return this._duration}send(s,n={}){if(s===void 0)throw new TypeError("Not enough arguments");if(this._direction="outgoing",this._session.status!==this._session.C.STATUS_CONFIRMED&&this._session.status!==this._session.C.STATUS_WAITING_FOR_ACK)throw new pg.InvalidStateError(this._session.status);const a=df.cloneArray(n.extraHeaders);if(this.eventHandlers=df.cloneObject(n.eventHandlers),typeof s=="string")s=s.toUpperCase();else if(typeof s=="number")s=s.toString();else throw new TypeError(`Invalid tone: ${s}`);if(s.match(/^[0-9A-DR#*]$/))this._tone=s;else throw new TypeError(`Invalid tone: ${s}`);this._duration=n.duration,a.push("Content-Type: application/dtmf-relay");let o=`Signal=${this._tone}\r
113
+ `;o+=`Duration=${this._duration}`,this._session.newDTMF({originator:"local",dtmf:this,request:this._request}),this._session.sendRequest(dg.INFO,{extraHeaders:a,eventHandlers:{onSuccessResponse:t=>{this.emit("succeeded",{originator:"remote",response:t})},onErrorResponse:t=>{this.eventHandlers.onFailed&&this.eventHandlers.onFailed(),this.emit("failed",{originator:"remote",response:t})},onRequestTimeout:()=>{this._session.onRequestTimeout()},onTransportError:()=>{this._session.onTransportError()},onDialogError:()=>{this._session.onDialogError()}},body:o})}init_incoming(s){const n=/^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/,a=/^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/;if(this._direction="incoming",this._request=s,s.reply(200),s.body){const o=s.body.split(`
114
+ `);o.length>=1&&n.test(o[0])&&(this._tone=o[0].replace(n,"$2")),o.length>=2&&a.test(o[1])&&(this._duration=parseInt(o[1].replace(a,"$2"),10))}this._duration||(this._duration=mh.DEFAULT_DURATION),this._tone?this._session.newDTMF({originator:"remote",dtmf:this,request:s}):mg.debug("invalid INFO DTMF received, discarded")}};ju.exports.C=mh;var gh=ju.exports;const gg=ze(gh),Tg=ft.EventEmitter,vg=De,Eg=As,Sg=yt();var Th=class extends Tg{constructor(s){super(),this._session=s,this._direction=null,this._contentType=null,this._body=null}get contentType(){return this._contentType}get body(){return this._body}send(s,n,a={}){if(this._direction="outgoing",s===void 0)throw new TypeError("Not enough arguments");if(this._session.status!==this._session.C.STATUS_CONFIRMED&&this._session.status!==this._session.C.STATUS_WAITING_FOR_ACK)throw new Eg.InvalidStateError(this._session.status);this._contentType=s,this._body=n;const o=Sg.cloneArray(a.extraHeaders);o.push(`Content-Type: ${s}`),this._session.newInfo({originator:"local",info:this,request:this.request}),this._session.sendRequest(vg.INFO,{extraHeaders:o,eventHandlers:{onSuccessResponse:t=>{this.emit("succeeded",{originator:"remote",response:t})},onErrorResponse:t=>{this.emit("failed",{originator:"remote",response:t})},onTransportError:()=>{this._session.onTransportError()},onRequestTimeout:()=>{this._session.onRequestTimeout()},onDialogError:()=>{this._session.onDialogError()}},body:n})}init_incoming(s){this._direction="incoming",this.request=s,s.reply(200),this._contentType=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,this._body=s.body,this._session.newInfo({originator:"remote",info:this,request:s})}};const yu=ze(Th),yg=ut,pf=De,Ag=new yg("RTCSession:ReferNotifier"),Go={event_type:"refer",body_type:"message/sipfrag;version=2.0",expires:300};var vh=class{constructor(s,n,a){this._session=s,this._id=n,this._expires=a||Go.expires,this._active=!0,this.notify(100)}notify(s,n){if(Ag.debug("notify()"),this._active===!1)return;n=n||pf.REASON_PHRASE[s]||"";let a;s>=200?a="terminated;reason=noresource":a=`active;expires=${this._expires}`,this._session.sendRequest(pf.NOTIFY,{extraHeaders:[`Event: ${Go.event_type};id=${this._id}`,`Subscription-State: ${a}`,`Content-Type: ${Go.body_type}`],body:`SIP/2.0 ${s} ${n}`,eventHandlers:{onErrorResponse(){this._active=!1}}})}};const Cg=ze(vh),Rg=ft.EventEmitter,Ig=ut,ji=De,bg=Qt(),mf=yt(),vn=new Ig("RTCSession:ReferSubscriber");var Eh=class extends Rg{constructor(s){super(),this._id=null,this._session=s}get id(){return this._id}sendRefer(s,n={}){vn.debug("sendRefer()");const a=mf.cloneArray(n.extraHeaders),o=mf.cloneObject(n.eventHandlers);for(const h in o)Object.prototype.hasOwnProperty.call(o,h)&&this.on(h,o[h]);let t=null;n.replaces&&(t=n.replaces._request.call_id,t+=`;to-tag=${n.replaces._to_tag}`,t+=`;from-tag=${n.replaces._from_tag}`,t=encodeURIComponent(t));const r=`Refer-To: <${s}${t?`?Replaces=${t}`:""}>`;if(a.push(r),!a.some(h=>h.toLowerCase().startsWith("referred-by:"))){const h=`Referred-By: <${this._session._ua._configuration.uri._scheme}:${this._session._ua._configuration.uri._user}@${this._session._ua._configuration.uri._host}>`;a.push(h)}a.push(`Contact: ${this._session.contact}`);const _=this._session.sendRequest(ji.REFER,{extraHeaders:a,eventHandlers:{onSuccessResponse:h=>{this._requestSucceeded(h)},onErrorResponse:h=>{this._requestFailed(h,ji.causes.REJECTED)},onTransportError:()=>{this._requestFailed(null,ji.causes.CONNECTION_ERROR)},onRequestTimeout:()=>{this._requestFailed(null,ji.causes.REQUEST_TIMEOUT)},onDialogError:()=>{this._requestFailed(null,ji.causes.DIALOG_ERROR)}}});this._id=_.cseq}receiveNotify(s){if(vn.debug("receiveNotify()"),!s.body)return;const n=bg.parse(s.body.trim().split(`\r
115
+ `,1)[0],"Status_Line");if(n===-1){vn.debug(`receiveNotify() | error parsing NOTIFY body: "${s.body}"`);return}switch(!0){case/^100$/.test(n.status_code):this.emit("trying",{request:s,status_line:n});break;case/^1[0-9]{2}$/.test(n.status_code):this.emit("progress",{request:s,status_line:n});break;case/^2[0-9]{2}$/.test(n.status_code):this.emit("accepted",{request:s,status_line:n});break;default:this.emit("failed",{request:s,status_line:n});break}}_requestSucceeded(s){vn.debug("REFER succeeded"),vn.debug('emit "requestSucceeded"'),this.emit("requestSucceeded",{response:s})}_requestFailed(s,n){vn.debug("REFER failed"),vn.debug('emit "requestFailed"'),this.emit("requestFailed",{response:s||null,cause:n})}};const wg=ze(Eh),Og=ft.EventEmitter,gf=xt,Dg=ut,fe=De,En=As,Tf=Tr,Be=yt(),Vi=Fu,Ng=It,ea=ph,Ug=vr,kt=gh,vf=Th,xg=vh,Pg=Eh,Ef=ys(),Y=new Dg("RTCSession"),Z={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_ACK:6,STATUS_CANCELED:7,STATUS_TERMINATED:8,STATUS_CONFIRMED:9},ta=["audio","video"];var Sh=class Au extends Og{static get C(){return Z}constructor(s){Y.debug("new"),super(),this._id=null,this._ua=s,this._status=Z.STATUS_NULL,this._dialog=null,this._earlyDialogs={},this._contact=null,this._from_tag=null,this._to_tag=null,this._connection=null,this._connectionPromiseQueue=Promise.resolve(),this._request=null,this._is_canceled=!1,this._cancel_reason="",this._is_confirmed=!1,this._late_sdp=!1,this._rtcOfferConstraints=null,this._rtcAnswerConstraints=null,this._localMediaStream=null,this._localMediaStreamLocallyGenerated=!1,this._rtcReady=!0,this._iceReady=!1,this._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},this._direction=null,this._local_identity=null,this._remote_identity=null,this._start_time=null,this._end_time=null,this._tones=null,this._audioMuted=!1,this._videoMuted=!1,this._localHold=!1,this._remoteHold=!1,this._sessionTimers={enabled:this._ua.configuration.session_timers,refreshMethod:this._ua.configuration.session_timers_refresh_method,defaultExpires:fe.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},this._referSubscribers={},this._data={}}get C(){return Z}get causes(){return fe.causes}get id(){return this._id}get connection(){return this._connection}get contact(){return this._contact}get direction(){return this._direction}get local_identity(){return this._local_identity}get remote_identity(){return this._remote_identity}get start_time(){return this._start_time}get end_time(){return this._end_time}get data(){return this._data}set data(s){this._data=s}get status(){return this._status}isInProgress(){switch(this._status){case Z.STATUS_NULL:case Z.STATUS_INVITE_SENT:case Z.STATUS_1XX_RECEIVED:case Z.STATUS_INVITE_RECEIVED:case Z.STATUS_WAITING_FOR_ANSWER:return!0;default:return!1}}isEstablished(){switch(this._status){case Z.STATUS_ANSWERED:case Z.STATUS_WAITING_FOR_ACK:case Z.STATUS_CONFIRMED:return!0;default:return!1}}isEnded(){switch(this._status){case Z.STATUS_CANCELED:case Z.STATUS_TERMINATED:return!0;default:return!1}}isMuted(){return{audio:this._audioMuted,video:this._videoMuted}}isOnHold(){return{local:this._localHold,remote:this._remoteHold}}connect(s,n={},a){Y.debug("connect()");const o=s,t=Be.cloneObject(n.eventHandlers),r=Be.cloneArray(n.extraHeaders),_=Be.cloneObject(n.mediaConstraints,{audio:!0,video:!0}),h=n.mediaStream||null,d=Be.cloneObject(n.pcConfig,{iceServers:[]}),g=n.rtcConstraints||null,T=n.rtcOfferConstraints||null;if(this._rtcOfferConstraints=T,this._rtcAnswerConstraints=n.rtcAnswerConstraints||null,this._data=n.data||this._data,s===void 0)throw new TypeError("Not enough arguments");if(this._status!==Z.STATUS_NULL)throw new En.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new En.NotSupportedError("WebRTC not supported");if(s=this._ua.normalizeTarget(s),!s)throw new TypeError(`Invalid target: ${o}`);this._sessionTimers.enabled&&Be.isDecimal(n.sessionTimersExpires)&&(n.sessionTimersExpires>=fe.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=n.sessionTimersExpires:this._sessionTimers.defaultExpires=fe.SESSION_EXPIRES);for(const A in t)Object.prototype.hasOwnProperty.call(t,A)&&this.on(A,t[A]);this._from_tag=Be.newTag();const E=n.anonymous||!1,y={from_tag:this._from_tag};this._contact=this._ua.contact.toString({anonymous:E,outbound:!0}),E?(y.from_display_name="Anonymous",y.from_uri=new Ef("sip","anonymous","anonymous.invalid"),r.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`),r.push("Privacy: id")):n.fromUserName&&(y.from_uri=new Ef("sip",n.fromUserName,this._ua.configuration.uri.host),r.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`)),n.fromDisplayName&&(y.from_display_name=n.fromDisplayName),r.push(`Contact: ${this._contact}`),r.push("Content-Type: application/sdp"),this._sessionTimers.enabled&&r.push(`Session-Expires: ${this._sessionTimers.defaultExpires}${this._ua.configuration.session_timers_force_refresher?";refresher=uac":""}`),this._request=new Ng.InitialOutgoingInviteRequest(s,this._ua,y,r),this._id=this._request.call_id+this._from_tag,this._createRTCConnection(d,g),this._direction="outgoing",this._local_identity=this._request.from,this._remote_identity=this._request.to,a&&a(this),this._newRTCSession("local",this._request),this._sendInitialRequest(_,T,h)}init_incoming(s,n){Y.debug("init_incoming()");let a;const o=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;if(s.body&&o!=="application/sdp"){s.reply(415);return}if(this._status=Z.STATUS_INVITE_RECEIVED,this._from_tag=s.from_tag,this._id=s.call_id+this._from_tag,this._request=s,this._contact=this._ua.contact.toString(),s.hasHeader("expires")&&(a=s.getHeader("expires")*1e3),s.to_tag=Be.newTag(),!this._createDialog(s,"UAS",!0)){s.reply(500,"Missing Contact header field");return}s.body?this._late_sdp=!1:this._late_sdp=!0,this._status=Z.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(()=>{s.reply(408),this._failed("local",null,fe.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),a&&(this._timers.expiresTimer=setTimeout(()=>{this._status===Z.STATUS_WAITING_FOR_ANSWER&&(s.reply(487),this._failed("system",null,fe.causes.EXPIRES))},a)),this._direction="incoming",this._local_identity=s.to,this._remote_identity=s.from,n&&n(this),this._newRTCSession("remote",s),this._status!==Z.STATUS_TERMINATED&&(s.reply(180,null,[`Contact: ${this._contact}`]),this._progress("local",null))}answer(s={}){Y.debug("answer()");const n=this._request,a=Be.cloneArray(s.extraHeaders),o=Be.cloneObject(s.mediaConstraints),t=s.mediaStream||null,r=Be.cloneObject(s.pcConfig,{iceServers:[]}),_=s.rtcConstraints||null,h=s.rtcAnswerConstraints||null,d=Be.cloneObject(s.rtcOfferConstraints);let g,T=!1,E=!1,y=!1,A=!1;if(this._rtcAnswerConstraints=h,this._rtcOfferConstraints=s.rtcOfferConstraints||null,this._data=s.data||this._data,this._direction!=="incoming")throw new En.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==Z.STATUS_WAITING_FOR_ANSWER)throw new En.InvalidStateError(this._status);if(this._sessionTimers.enabled&&Be.isDecimal(s.sessionTimersExpires)&&(s.sessionTimersExpires>=fe.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=s.sessionTimersExpires:this._sessionTimers.defaultExpires=fe.SESSION_EXPIRES),this._status=Z.STATUS_ANSWERED,!this._createDialog(n,"UAS")){n.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),a.unshift(`Contact: ${this._contact}`);const C=n.parseSDP();Array.isArray(C.media)||(C.media=[C.media]);for(const I of C.media)I.type==="audio"&&(T=!0,(!I.direction||I.direction==="sendrecv")&&(y=!0)),I.type==="video"&&(E=!0,(!I.direction||I.direction==="sendrecv")&&(A=!0));if(t&&o.audio===!1){g=t.getAudioTracks();for(const I of g)t.removeTrack(I)}if(t&&o.video===!1){g=t.getVideoTracks();for(const I of g)t.removeTrack(I)}!t&&o.audio===void 0&&(o.audio=y),!t&&o.video===void 0&&(o.video=A),!t&&!T&&!d.offerToReceiveAudio&&(o.audio=!1),!t&&!E&&!d.offerToReceiveVideo&&(o.video=!1),this._createRTCConnection(r,_),Promise.resolve().then(()=>{if(t)return t;if(o.audio||o.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(o).catch(I=>{throw this._status===Z.STATUS_TERMINATED?new Error("terminated"):(n.reply(480),this._failed("local",null,fe.causes.USER_DENIED_MEDIA_ACCESS),Y.warn('emit "getusermediafailed" [error:%o]',I),this.emit("getusermediafailed",I),new Error("getUserMedia() failed"))})}).then(I=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");this._localMediaStream=I,I&&I.getTracks().forEach(H=>{this._connection.addTrack(H,I)})}).then(()=>{if(this._late_sdp)return;const I={originator:"remote",type:"offer",sdp:n.body};Y.debug('emit "sdp"'),this.emit("sdp",I);const H=new RTCSessionDescription({type:"offer",sdp:I.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(H)).catch($=>{throw n.reply(488),this._failed("system",null,fe.causes.WEBRTC_ERROR),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',$),this.emit("peerconnection:setremotedescriptionfailed",$),new Error("peerconnection.setRemoteDescription() failed")}),this._connectionPromiseQueue}).then(()=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");return this._connecting(n),this._late_sdp?this._createLocalDescription("offer",this._rtcOfferConstraints).catch(()=>{throw n.reply(500),new Error("_createLocalDescription() failed")}):this._createLocalDescription("answer",h).catch(()=>{throw n.reply(500),new Error("_createLocalDescription() failed")})}).then(I=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");this._handleSessionTimersInIncomingRequest(n,a),n.reply(200,null,a,I,()=>{this._status=Z.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(n,I),this._setACKTimer(),this._accepted("local")},()=>{this._failed("system",null,fe.causes.CONNECTION_ERROR)})}).catch(I=>{this._status!==Z.STATUS_TERMINATED&&Y.warn(I)})}terminate(s={}){Y.debug("terminate()");const n=s.cause||fe.causes.BYE,a=Be.cloneArray(s.extraHeaders),o=s.body;let t,r=s.status_code,_=s.reason_phrase;if(this._status===Z.STATUS_TERMINATED)throw new En.InvalidStateError(this._status);switch(this._status){case Z.STATUS_NULL:case Z.STATUS_INVITE_SENT:case Z.STATUS_1XX_RECEIVED:if(Y.debug("canceling session"),r&&(r<200||r>=700))throw new TypeError(`Invalid status_code: ${r}`);r&&(_=_||fe.REASON_PHRASE[r]||"",t=`SIP ;cause=${r} ;text="${_}"`),this._status===Z.STATUS_NULL||this._status===Z.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=t):this._status===Z.STATUS_1XX_RECEIVED&&this._request.cancel(t),this._status=Z.STATUS_CANCELED,this._failed("local",null,fe.causes.CANCELED);break;case Z.STATUS_WAITING_FOR_ANSWER:case Z.STATUS_ANSWERED:if(Y.debug("rejecting session"),r=r||480,r<300||r>=700)throw new TypeError(`Invalid status_code: ${r}`);this._request.reply(r,_,a,o),this._failed("local",null,fe.causes.REJECTED);break;case Z.STATUS_WAITING_FOR_ACK:case Z.STATUS_CONFIRMED:if(Y.debug("terminating session"),_=s.reason_phrase||fe.REASON_PHRASE[r]||"",r&&(r<200||r>=700))throw new TypeError(`Invalid status_code: ${r}`);if(r&&a.push(`Reason: SIP ;cause=${r}; text="${_}"`),this._status===Z.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==Tf.C.STATUS_TERMINATED){const h=this._dialog;this.receiveRequest=({method:d})=>{d===fe.ACK&&(this.sendRequest(fe.BYE,{extraHeaders:a,body:o}),h.terminate())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===Tf.C.STATUS_TERMINATED&&(this.sendRequest(fe.BYE,{extraHeaders:a,body:o}),h.terminate())}),this._ended("local",null,n),this._dialog=h,this._ua.newDialog(h)}else this.sendRequest(fe.BYE,{extraHeaders:a,body:o}),this._ended("local",null,n)}}sendDTMF(s,n={}){Y.debug("sendDTMF() | tones: %s",s);let a=0,o=n.duration||null,t=n.interToneGap||null;const r=n.transportType||fe.DTMF_TRANSPORT.INFO;if(s===void 0)throw new TypeError("Not enough arguments");if(this._status!==Z.STATUS_CONFIRMED&&this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_1XX_RECEIVED)throw new En.InvalidStateError(this._status);if(r!==fe.DTMF_TRANSPORT.INFO&&r!==fe.DTMF_TRANSPORT.RFC2833)throw new TypeError(`invalid transportType: ${r}`);if(typeof s=="number"&&(s=s.toString()),!s||typeof s!="string"||!s.match(/^[0-9A-DR#*,]+$/i))throw new TypeError(`Invalid tones: ${s}`);if(o&&!Be.isDecimal(o))throw new TypeError(`Invalid tone duration: ${o}`);if(o?o<kt.C.MIN_DURATION?(Y.debug(`"duration" value is lower than the minimum allowed, setting it to ${kt.C.MIN_DURATION} milliseconds`),o=kt.C.MIN_DURATION):o>kt.C.MAX_DURATION?(Y.debug(`"duration" value is greater than the maximum allowed, setting it to ${kt.C.MAX_DURATION} milliseconds`),o=kt.C.MAX_DURATION):o=Math.abs(o):o=kt.C.DEFAULT_DURATION,n.duration=o,t&&!Be.isDecimal(t))throw new TypeError(`Invalid interToneGap: ${t}`);if(t?t<kt.C.MIN_INTER_TONE_GAP?(Y.debug(`"interToneGap" value is lower than the minimum allowed, setting it to ${kt.C.MIN_INTER_TONE_GAP} milliseconds`),t=kt.C.MIN_INTER_TONE_GAP):t=Math.abs(t):t=kt.C.DEFAULT_INTER_TONE_GAP,r===fe.DTMF_TRANSPORT.RFC2833){const h=this._getDTMFRTPSender();h&&(s=h.toneBuffer+s,h.insertDTMF(s,o,t));return}if(this._tones){this._tones+=s;return}this._tones=s,_.call(this);function _(){let h;if(this._status===Z.STATUS_TERMINATED||!this._tones||a>=this._tones.length){this._tones=null;return}const d=this._tones[a];if(a+=1,d===",")h=2e3;else{const g=new kt(this);n.eventHandlers={onFailed:()=>{this._tones=null}},g.send(d,n),h=o+t}setTimeout(_.bind(this),h)}}sendInfo(s,n,a={}){if(Y.debug("sendInfo()"),this._status!==Z.STATUS_CONFIRMED&&this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_1XX_RECEIVED)throw new En.InvalidStateError(this._status);new vf(this).send(s,n,a)}mute(s={audio:!0,video:!1}){Y.debug("mute()");let n=!1,a=!1;this._audioMuted===!1&&s.audio&&(n=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&s.video&&(a=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(n===!0||a===!0)&&this._onmute({audio:n,video:a})}unmute(s={audio:!0,video:!0}){Y.debug("unmute()");let n=!1,a=!1;this._audioMuted===!0&&s.audio&&(n=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&s.video&&(a=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(n===!0||a===!0)&&this._onunmute({audio:n,video:a})}hold(s={},n){if(Y.debug("hold()"),this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED||this._localHold===!0||!this._isReadyToReOffer())return!1;this._localHold=!0,this._onhold("local");const a={succeeded:()=>{n&&n()},failed:()=>{this.terminate({cause:fe.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:a,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:a,extraHeaders:s.extraHeaders}),!0}unhold(s={},n){if(Y.debug("unhold()"),this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED||this._localHold===!1||!this._isReadyToReOffer())return!1;this._localHold=!1,this._onunhold("local");const a={succeeded:()=>{n&&n()},failed:()=>{this.terminate({cause:fe.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:a,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:a,extraHeaders:s.extraHeaders}),!0}renegotiate(s={},n){Y.debug("renegotiate()");const a=s.rtcOfferConstraints||null;if(this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;const o={succeeded:()=>{n&&n()},failed:()=>{this.terminate({cause:fe.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Media Renegotiation Failed"})}};return this._setLocalMediaStatus(),s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:o,rtcOfferConstraints:a,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:o,rtcOfferConstraints:a,extraHeaders:s.extraHeaders}),!0}refer(s,n){Y.debug("refer()");const a=s;if(this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED)return!1;if(s=this._ua.normalizeTarget(s),!s)throw new TypeError(`Invalid target: ${a}`);const o=new Pg(this);o.sendRefer(s,n);const t=o.id;return this._referSubscribers[t]=o,o.on("requestFailed",()=>{delete this._referSubscribers[t]}),o.on("accepted",()=>{delete this._referSubscribers[t]}),o.on("failed",()=>{delete this._referSubscribers[t]}),o}sendRequest(s,n){return Y.debug("sendRequest()"),this._dialog.sendRequest(s,n)}receiveRequest(s){if(Y.debug("receiveRequest()"),s.method===fe.CANCEL)(this._status===Z.STATUS_WAITING_FOR_ANSWER||this._status===Z.STATUS_ANSWERED)&&(this._status=Z.STATUS_CANCELED,this._request.reply(487),this._failed("remote",s,fe.causes.CANCELED));else switch(s.method){case fe.ACK:if(this._status!==Z.STATUS_WAITING_FOR_ACK)return;if(this._status=Z.STATUS_CONFIRMED,clearTimeout(this._timers.ackTimer),clearTimeout(this._timers.invite2xxTimer),this._late_sdp){if(!s.body){this.terminate({cause:fe.causes.MISSING_SDP,status_code:400});break}const n={originator:"remote",type:"answer",sdp:s.body};Y.debug('emit "sdp"'),this.emit("sdp",n);const a=new RTCSessionDescription({type:"answer",sdp:n.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(a)).then(()=>{this._is_confirmed||this._confirmed("remote",s)}).catch(o=>{this.terminate({cause:fe.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)})}else this._is_confirmed||this._confirmed("remote",s);break;case fe.BYE:this._status===Z.STATUS_CONFIRMED||this._status===Z.STATUS_WAITING_FOR_ACK?(s.reply(200),this._ended("remote",s,fe.causes.BYE)):this._status===Z.STATUS_INVITE_RECEIVED||this._status===Z.STATUS_WAITING_FOR_ANSWER?(s.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",s,fe.causes.BYE)):s.reply(403,"Wrong Status");break;case fe.INVITE:this._status===Z.STATUS_CONFIRMED?s.hasHeader("replaces")?this._receiveReplaces(s):this._receiveReinvite(s):s.reply(403,"Wrong Status");break;case fe.INFO:if(this._status===Z.STATUS_1XX_RECEIVED||this._status===Z.STATUS_WAITING_FOR_ANSWER||this._status===Z.STATUS_ANSWERED||this._status===Z.STATUS_WAITING_FOR_ACK||this._status===Z.STATUS_CONFIRMED){const n=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;n&&n.match(/^application\/dtmf-relay/i)?new kt(this).init_incoming(s):n!==void 0?new vf(this).init_incoming(s):s.reply(415)}else s.reply(403,"Wrong Status");break;case fe.UPDATE:this._status===Z.STATUS_CONFIRMED?this._receiveUpdate(s):s.reply(403,"Wrong Status");break;case fe.REFER:this._status===Z.STATUS_CONFIRMED?this._receiveRefer(s):s.reply(403,"Wrong Status");break;case fe.NOTIFY:this._status===Z.STATUS_CONFIRMED?this._receiveNotify(s):s.reply(403,"Wrong Status");break;default:s.reply(501)}}onTransportError(){Y.warn("onTransportError()"),this._status!==Z.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:fe.causes.CONNECTION_ERROR,cause:fe.causes.CONNECTION_ERROR})}onRequestTimeout(){Y.warn("onRequestTimeout()"),this._status!==Z.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:fe.causes.REQUEST_TIMEOUT,cause:fe.causes.REQUEST_TIMEOUT})}onDialogError(){Y.warn("onDialogError()"),this._status!==Z.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:fe.causes.DIALOG_ERROR,cause:fe.causes.DIALOG_ERROR})}newDTMF(s){Y.debug("newDTMF()"),this.emit("newDTMF",s)}newInfo(s){Y.debug("newInfo()"),this.emit("newInfo",s)}_isReadyToReOffer(){return this._rtcReady?this._dialog?this._dialog.uac_pending_reply===!0||this._dialog.uas_pending_reply===!0?(Y.debug("_isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress"),!1):!0:(Y.debug("_isReadyToReOffer() | session not established yet"),!1):(Y.debug("_isReadyToReOffer() | internal WebRTC status not ready"),!1)}_close(){if(Y.debug("close()"),this._localMediaStream&&this._localMediaStreamLocallyGenerated&&(Y.debug("close() | closing local MediaStream"),Be.closeMediaStream(this._localMediaStream)),this._status!==Z.STATUS_TERMINATED){if(this._status=Z.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(s){Y.warn("close() | error closing the RTCPeerConnection: %o",s)}for(const s in this._timers)Object.prototype.hasOwnProperty.call(this._timers,s)&&clearTimeout(this._timers[s]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(const s in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,s)&&(this._earlyDialogs[s].terminate(),delete this._earlyDialogs[s]);for(const s in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,s)&&delete this._referSubscribers[s];this._ua.destroyRTCSession(this)}}_setInvite2xxTimer(s,n){let a=Vi.T1;function o(){this._status===Z.STATUS_WAITING_FOR_ACK&&(s.reply(200,null,[`Contact: ${this._contact}`],n),a<Vi.T2&&(a=a*2,a>Vi.T2&&(a=Vi.T2)),this._timers.invite2xxTimer=setTimeout(o.bind(this),a))}this._timers.invite2xxTimer=setTimeout(o.bind(this),a)}_setACKTimer(){this._timers.ackTimer=setTimeout(()=>{this._status===Z.STATUS_WAITING_FOR_ACK&&(Y.debug("no ACK received, terminating the session"),clearTimeout(this._timers.invite2xxTimer),this.sendRequest(fe.BYE),this._ended("remote",null,fe.causes.NO_ACK))},Vi.TIMER_H)}_createRTCConnection(s,n){this._connection=new RTCPeerConnection(s,n),this._connection.addEventListener("iceconnectionstatechange",()=>{this._connection.iceConnectionState==="failed"&&this.terminate({cause:fe.causes.RTP_TIMEOUT,status_code:408,reason_phrase:fe.causes.RTP_TIMEOUT})}),Y.debug('emit "peerconnection"'),this.emit("peerconnection",{peerconnection:this._connection})}_createLocalDescription(s,n){if(Y.debug("createLocalDescription()"),s!=="offer"&&s!=="answer")throw new Error(`createLocalDescription() | invalid type "${s}"`);const a=this._connection;return this._rtcReady=!1,Promise.resolve().then(()=>s==="offer"?a.createOffer(n).catch(o=>(Y.warn('emit "peerconnection:createofferfailed" [error:%o]',o),this.emit("peerconnection:createofferfailed",o),Promise.reject(o))):a.createAnswer(n).catch(o=>(Y.warn('emit "peerconnection:createanswerfailed" [error:%o]',o),this.emit("peerconnection:createanswerfailed",o),Promise.reject(o)))).then(o=>a.setLocalDescription(o).catch(t=>(this._rtcReady=!0,Y.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',t),this.emit("peerconnection:setlocaldescriptionfailed",t),Promise.reject(t)))).then(()=>{const o=n&&n.iceRestart;if(a.iceGatheringState==="complete"&&!o||a.iceGatheringState==="gathering"&&this._iceReady){this._rtcReady=!0;const t={originator:"local",type:s,sdp:a.localDescription.sdp};return Y.debug('emit "sdp"'),this.emit("sdp",t),Promise.resolve(t.sdp)}return new Promise(t=>{let r=!1,_,h;this._iceReady=!1;const d=()=>{a.removeEventListener("icecandidate",_),a.removeEventListener("icegatheringstatechange",h),r=!0,this._rtcReady=!0,this._iceReady=!0;const g={originator:"local",type:s,sdp:a.localDescription.sdp};Y.debug('emit "sdp"'),this.emit("sdp",g),t(g.sdp)};a.addEventListener("icecandidate",_=g=>{const T=g.candidate;T?this.emit("icecandidate",{candidate:T,ready:d}):r||d()}),a.addEventListener("icegatheringstatechange",h=()=>{a.iceGatheringState==="complete"&&!r&&d()})})})}_createDialog(s,n,a){const o=n==="UAS"?s.to_tag:s.from_tag,t=n==="UAS"?s.from_tag:s.to_tag,r=s.call_id+o+t;let _=this._earlyDialogs[r];if(a)return _?!0:(_=new ea(this,s,n,ea.C.STATUS_EARLY),_.error?(Y.debug(_.error),this._failed("remote",s,fe.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[r]=_,!0));{if(this._from_tag=s.from_tag,this._to_tag=s.to_tag,_)return _.update(s,n),this._dialog=_,delete this._earlyDialogs[r],!0;const h=new ea(this,s,n);return h.error?(Y.debug(h.error),this._failed("remote",s,fe.causes.INTERNAL_ERROR),!1):(this._dialog=h,!0)}}_receiveReinvite(s){Y.debug("receiveReinvite()");const n=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,a={request:s,callback:void 0,reject:t.bind(this)};let o=!1;function t(_={}){o=!0;const h=_.status_code||403,d=_.reason_phrase||"",g=Be.cloneArray(_.extraHeaders);if(this._status!==Z.STATUS_CONFIRMED)return!1;if(h<300||h>=700)throw new TypeError(`Invalid status_code: ${h}`);s.reply(h,d,g)}if(this.emit("reinvite",a),o)return;if(this._late_sdp=!1,!s.body){this._late_sdp=!0,this._remoteHold&&(this._remoteHold=!1,this._onunhold("remote")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",this._rtcOfferConstraints)).then(_=>{r.call(this,_)}).catch(()=>{s.reply(500)});return}if(n!=="application/sdp"){Y.debug("invalid Content-Type"),s.reply(415);return}this._processInDialogSdpOffer(s).then(_=>{this._status!==Z.STATUS_TERMINATED&&r.call(this,_)}).catch(_=>{Y.warn(_)});function r(_){const h=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(s,h),this._late_sdp&&(_=this._mangleOffer(_)),s.reply(200,null,h,_,()=>{this._status=Z.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(s,_),this._setACKTimer()}),typeof a.callback=="function"&&a.callback()}}_receiveUpdate(s){Y.debug("receiveUpdate()");const n=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,a={request:s,callback:void 0,reject:t.bind(this)};let o=!1;function t(_={}){o=!0;const h=_.status_code||403,d=_.reason_phrase||"",g=Be.cloneArray(_.extraHeaders);if(this._status!==Z.STATUS_CONFIRMED)return!1;if(h<300||h>=700)throw new TypeError(`Invalid status_code: ${h}`);s.reply(h,d,g)}if(this.emit("update",a),o)return;if(!s.body){r.call(this,null);return}if(n!=="application/sdp"){Y.debug("invalid Content-Type"),s.reply(415);return}this._processInDialogSdpOffer(s).then(_=>{this._status!==Z.STATUS_TERMINATED&&r.call(this,_)}).catch(_=>{Y.warn(_)});function r(_){const h=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(s,h),s.reply(200,null,h,_),typeof a.callback=="function"&&a.callback()}}_processInDialogSdpOffer(s){Y.debug("_processInDialogSdpOffer()");const n=s.parseSDP();let a=!1;for(const r of n.media){if(ta.indexOf(r.type)===-1)continue;const _=r.direction||n.direction||"sendrecv";if(_==="sendonly"||_==="inactive")a=!0;else{a=!1;break}}const o={originator:"remote",type:"offer",sdp:s.body};Y.debug('emit "sdp"'),this.emit("sdp",o);const t=new RTCSessionDescription({type:"offer",sdp:o.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");return this._connection.setRemoteDescription(t).catch(r=>{throw s.reply(488),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',r),this.emit("peerconnection:setremotedescriptionfailed",r),r})}).then(()=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");this._remoteHold===!0&&a===!1?(this._remoteHold=!1,this._onunhold("remote")):this._remoteHold===!1&&a===!0&&(this._remoteHold=!0,this._onhold("remote"))}).then(()=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");return this._createLocalDescription("answer",this._rtcAnswerConstraints).catch(r=>{throw s.reply(500),Y.warn('emit "peerconnection:createtelocaldescriptionfailed" [error:%o]',r),r})}).catch(r=>{Y.warn("_processInDialogSdpOffer() failed [error: %o]",r)}),this._connectionPromiseQueue}_receiveRefer(s){if(Y.debug("receiveRefer()"),!s.refer_to){Y.debug("no Refer-To header field present in REFER"),s.reply(400);return}if(s.refer_to.uri.scheme!==fe.SIP){Y.debug("Refer-To header field points to a non-SIP URI scheme"),s.reply(416);return}s.reply(202);const n=new xg(this,s.cseq);Y.debug('emit "refer"'),this.emit("refer",{request:s,accept:(t,r)=>{a.call(this,t,r)},reject:()=>{o.call(this)}});function a(t,r={}){if(t=typeof t=="function"?t:null,this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED)return!1;const _=new Au(this._ua);if(_.on("progress",({response:h})=>{n.notify(h.status_code,h.reason_phrase)}),_.on("accepted",({response:h})=>{n.notify(h.status_code,h.reason_phrase)}),_.on("_failed",({message:h,cause:d})=>{h?n.notify(h.status_code,h.reason_phrase):n.notify(487,d)}),s.refer_to.uri.hasHeader("replaces")){const h=decodeURIComponent(s.refer_to.uri.getHeader("replaces"));r.extraHeaders=Be.cloneArray(r.extraHeaders),r.extraHeaders.push(`Replaces: ${h}`)}_.connect(s.refer_to.uri.toAor(),r,t)}function o(){n.notify(603)}}_receiveNotify(s){switch(Y.debug("receiveNotify()"),s.event||s.reply(400),s.event.event){case"refer":{let n,a;if(s.event.params&&s.event.params.id)n=s.event.params.id,a=this._referSubscribers[n];else if(Object.keys(this._referSubscribers).length===1)a=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{s.reply(400,"Missing event id parameter");return}if(!a){s.reply(481,"Subscription does not exist");return}a.receiveNotify(s),s.reply(200);break}default:s.reply(489)}}_receiveReplaces(s){Y.debug("receiveReplaces()");function n(o){if(this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED)return!1;const t=new Au(this._ua);t.on("confirmed",()=>{this.terminate()}),t.init_incoming(s,o)}function a(){Y.debug("Replaced INVITE rejected by the user"),s.reply(486)}this.emit("replaces",{request:s,accept:o=>{n.call(this,o)},reject:()=>{a.call(this)}})}_sendInitialRequest(s,n,a){const o=new Ug(this._ua,this._request,{onRequestTimeout:()=>{this.onRequestTimeout()},onTransportError:()=>{this.onTransportError()},onAuthenticated:t=>{this._request=t},onReceiveResponse:t=>{this._receiveInviteResponse(t)}});Promise.resolve().then(()=>{if(a)return a;if(s.audio||s.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(s).catch(t=>{throw this._status===Z.STATUS_TERMINATED?new Error("terminated"):(this._failed("local",null,fe.causes.USER_DENIED_MEDIA_ACCESS),Y.warn('emit "getusermediafailed" [error:%o]',t),this.emit("getusermediafailed",t),t)})}).then(t=>{if(this._status===Z.STATUS_TERMINATED)throw new Error("terminated");return this._localMediaStream=t,t&&t.getTracks().forEach(r=>{this._connection.addTrack(r,t)}),this._connecting(this._request),this._createLocalDescription("offer",n).catch(r=>{throw this._failed("local",null,fe.causes.WEBRTC_ERROR),r})}).then(t=>{if(this._is_canceled||this._status===Z.STATUS_TERMINATED)throw new Error("terminated");this._request.body=t,this._status=Z.STATUS_INVITE_SENT,Y.debug('emit "sending" [request:%o]',this._request),this.emit("sending",{request:this._request}),o.send()}).catch(t=>{this._status!==Z.STATUS_TERMINATED&&Y.warn(t)})}_getDTMFRTPSender(){const s=this._connection.getSenders().find(n=>n.track&&n.track.kind==="audio");if(!(s&&s.dtmf)){Y.warn("sendDTMF() | no local audio track to send DTMF with");return}return s.dtmf}_receiveInviteResponse(s){if(Y.debug("receiveInviteResponse()"),this._dialog&&s.status_code>=200&&s.status_code<=299)if(this._dialog.id.call_id===s.call_id&&this._dialog.id.local_tag===s.from_tag&&this._dialog.id.remote_tag===s.to_tag){this.sendRequest(fe.ACK);return}else{const n=new ea(this,s,"UAC");if(n.error!==void 0){Y.debug(n.error);return}this.sendRequest(fe.ACK),this.sendRequest(fe.BYE);return}if(this._is_canceled){s.status_code>=100&&s.status_code<200?this._request.cancel(this._cancel_reason):s.status_code>=200&&s.status_code<299&&this._acceptAndTerminate(s);return}if(!(this._status!==Z.STATUS_INVITE_SENT&&this._status!==Z.STATUS_1XX_RECEIVED))switch(!0){case/^100$/.test(s.status_code):this._status=Z.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(s.status_code):{if(!s.to_tag){Y.debug("1xx response received without to tag");break}if(s.hasHeader("contact")&&!this._createDialog(s,"UAC",!0))break;if(this._status=Z.STATUS_1XX_RECEIVED,!s.body){this._progress("remote",s);break}const n={originator:"remote",type:"answer",sdp:s.body};Y.debug('emit "sdp"'),this.emit("sdp",n);const a=new RTCSessionDescription({type:"answer",sdp:n.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(a)).then(()=>this._progress("remote",s)).catch(o=>{Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)});break}case/^2[0-9]{2}$/.test(s.status_code):{if(this._status=Z.STATUS_CONFIRMED,!s.body){this._acceptAndTerminate(s,400,fe.causes.MISSING_SDP),this._failed("remote",s,fe.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(s,"UAC"))break;const n={originator:"remote",type:"answer",sdp:s.body};Y.debug('emit "sdp"'),this.emit("sdp",n);const a=new RTCSessionDescription({type:"answer",sdp:n.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>{if(this._connection.signalingState==="stable")return this._connection.createOffer(this._rtcOfferConstraints).then(o=>this._connection.setLocalDescription(o)).catch(o=>{this._acceptAndTerminate(s,500,o.toString()),this._failed("local",s,fe.causes.WEBRTC_ERROR)})}).then(()=>{this._connection.setRemoteDescription(a).then(()=>{this._handleSessionTimersInIncomingResponse(s),this._accepted("remote",s),this.sendRequest(fe.ACK),this._confirmed("local",null)}).catch(o=>{this._acceptAndTerminate(s,488,"Not Acceptable Here"),this._failed("remote",s,fe.causes.BAD_MEDIA_DESCRIPTION),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)})});break}default:{const n=Be.sipErrorCause(s.status_code);this._failed("remote",s,n)}}}_sendReinvite(s={}){Y.debug("sendReinvite()");const n=Be.cloneArray(s.extraHeaders),a=Be.cloneObject(s.eventHandlers),o=s.rtcOfferConstraints||this._rtcOfferConstraints||null;let t=!1;n.push(`Contact: ${this._contact}`),n.push("Content-Type: application/sdp"),this._sessionTimers.running&&n.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher?"uac":"uas"}`),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",o)).then(h=>{h=this._mangleOffer(h);const d={originator:"local",type:"offer",sdp:h};Y.debug('emit "sdp"'),this.emit("sdp",d),this.sendRequest(fe.INVITE,{extraHeaders:n,body:h,eventHandlers:{onSuccessResponse:g=>{r.call(this,g),t=!0},onErrorResponse:g=>{_.call(this,g)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{_()});function r(h){if(this._status===Z.STATUS_TERMINATED||(this.sendRequest(fe.ACK),t))return;if(this._handleSessionTimersInIncomingResponse(h),h.body){if(!h.hasHeader("Content-Type")||h.getHeader("Content-Type").toLowerCase()!=="application/sdp"){_.call(this);return}}else{_.call(this);return}const d={originator:"remote",type:"answer",sdp:h.body};Y.debug('emit "sdp"'),this.emit("sdp",d);const g=new RTCSessionDescription({type:"answer",sdp:d.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(g)).then(()=>{a.succeeded&&a.succeeded(h)}).catch(T=>{_.call(this),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',T),this.emit("peerconnection:setremotedescriptionfailed",T)})}function _(h){a.failed&&a.failed(h)}}_sendUpdate(s={}){Y.debug("sendUpdate()");const n=Be.cloneArray(s.extraHeaders),a=Be.cloneObject(s.eventHandlers),o=s.rtcOfferConstraints||this._rtcOfferConstraints||null,t=s.sdpOffer||!1;let r=!1;n.push(`Contact: ${this._contact}`),this._sessionTimers.running&&n.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher?"uac":"uas"}`),t?(n.push("Content-Type: application/sdp"),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",o)).then(d=>{d=this._mangleOffer(d);const g={originator:"local",type:"offer",sdp:d};Y.debug('emit "sdp"'),this.emit("sdp",g),this.sendRequest(fe.UPDATE,{extraHeaders:n,body:d,eventHandlers:{onSuccessResponse:T=>{_.call(this,T),r=!0},onErrorResponse:T=>{h.call(this,T)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{h.call(this)})):this.sendRequest(fe.UPDATE,{extraHeaders:n,eventHandlers:{onSuccessResponse:d=>{_.call(this,d)},onErrorResponse:d=>{h.call(this,d)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}});function _(d){if(this._status!==Z.STATUS_TERMINATED&&!r)if(this._handleSessionTimersInIncomingResponse(d),t){if(d.body){if(!d.hasHeader("Content-Type")||d.getHeader("Content-Type").toLowerCase()!=="application/sdp"){h.call(this);return}}else{h.call(this);return}const g={originator:"remote",type:"answer",sdp:d.body};Y.debug('emit "sdp"'),this.emit("sdp",g);const T=new RTCSessionDescription({type:"answer",sdp:g.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(T)).then(()=>{a.succeeded&&a.succeeded(d)}).catch(E=>{h.call(this),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),this.emit("peerconnection:setremotedescriptionfailed",E)})}else a.succeeded&&a.succeeded(d)}function h(d){a.failed&&a.failed(d)}}_acceptAndTerminate(s,n,a){Y.debug("acceptAndTerminate()");const o=[];n&&(a=a||fe.REASON_PHRASE[n]||"",o.push(`Reason: SIP ;cause=${n}; text="${a}"`)),(this._dialog||this._createDialog(s,"UAC"))&&(this.sendRequest(fe.ACK),this.sendRequest(fe.BYE,{extraHeaders:o})),this._status=Z.STATUS_TERMINATED}_mangleOffer(s){if(!this._localHold&&!this._remoteHold)return s;if(s=gf.parse(s),this._localHold&&!this._remoteHold){Y.debug("mangleOffer() | me on hold, mangling offer");for(const n of s.media)ta.indexOf(n.type)!==-1&&(n.direction?n.direction==="sendrecv"?n.direction="sendonly":n.direction==="recvonly"&&(n.direction="inactive"):n.direction="sendonly")}else if(this._localHold&&this._remoteHold){Y.debug("mangleOffer() | both on hold, mangling offer");for(const n of s.media)ta.indexOf(n.type)!==-1&&(n.direction="inactive")}else if(this._remoteHold){Y.debug("mangleOffer() | remote on hold, mangling offer");for(const n of s.media)ta.indexOf(n.type)!==-1&&(n.direction?n.direction==="sendrecv"?n.direction="recvonly":n.direction==="recvonly"&&(n.direction="inactive"):n.direction="recvonly")}return gf.write(s)}_setLocalMediaStatus(){let s=!0,n=!0;(this._localHold||this._remoteHold)&&(s=!1,n=!1),this._audioMuted&&(s=!1),this._videoMuted&&(n=!1),this._toggleMuteAudio(!s),this._toggleMuteVideo(!n)}_handleSessionTimersInIncomingRequest(s,n){if(!this._sessionTimers.enabled)return;let a;s.session_expires&&s.session_expires>=fe.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=s.session_expires,a=s.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,a="uas"),n.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${a}`),this._sessionTimers.refresher=a==="uas",this._runSessionTimer()}_handleSessionTimersInIncomingResponse(s){if(!this._sessionTimers.enabled)return;let n;s.session_expires&&s.session_expires>=fe.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=s.session_expires,n=s.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,n="uac"),this._sessionTimers.refresher=n==="uac",this._runSessionTimer()}_runSessionTimer(){const s=this._sessionTimers.currentExpires;this._sessionTimers.running=!0,clearTimeout(this._sessionTimers.timer),this._sessionTimers.refresher?this._sessionTimers.timer=setTimeout(()=>{this._status!==Z.STATUS_TERMINATED&&this._isReadyToReOffer()&&(Y.debug("runSessionTimer() | sending session refresh request"),this._sessionTimers.refreshMethod===fe.UPDATE?this._sendUpdate():this._sendReinvite())},s*500):this._sessionTimers.timer=setTimeout(()=>{this._status!==Z.STATUS_TERMINATED&&(Y.warn("runSessionTimer() | timer expired, terminating the session"),this.terminate({cause:fe.causes.REQUEST_TIMEOUT,status_code:408,reason_phrase:"Session Timer Expired"}))},s*1100)}_toggleMuteAudio(s){const n=this._connection.getSenders().filter(a=>a.track&&a.track.kind==="audio");for(const a of n)a.track.enabled=!s}_toggleMuteVideo(s){const n=this._connection.getSenders().filter(a=>a.track&&a.track.kind==="video");for(const a of n)a.track.enabled=!s}_newRTCSession(s,n){Y.debug("newRTCSession()"),this._ua.newRTCSession(this,{originator:s,session:this,request:n})}_connecting(s){Y.debug("session connecting"),Y.debug('emit "connecting"'),this.emit("connecting",{request:s})}_progress(s,n){Y.debug("session progress"),Y.debug('emit "progress"'),this.emit("progress",{originator:s,response:n||null})}_accepted(s,n){Y.debug("session accepted"),this._start_time=new Date,Y.debug('emit "accepted"'),this.emit("accepted",{originator:s,response:n||null})}_confirmed(s,n){Y.debug("session confirmed"),this._is_confirmed=!0,Y.debug('emit "confirmed"'),this.emit("confirmed",{originator:s,ack:n||null})}_ended(s,n,a){Y.debug("session ended"),this._end_time=new Date,this._close(),Y.debug('emit "ended"'),this.emit("ended",{originator:s,message:n||null,cause:a})}_failed(s,n,a){Y.debug("session failed"),Y.debug('emit "_failed"'),this.emit("_failed",{originator:s,message:n||null,cause:a}),this._close(),Y.debug('emit "failed"'),this.emit("failed",{originator:s,message:n||null,cause:a})}_onhold(s){Y.debug("session onhold"),this._setLocalMediaStatus(),Y.debug('emit "hold"'),this.emit("hold",{originator:s})}_onunhold(s){Y.debug("session onunhold"),this._setLocalMediaStatus(),Y.debug('emit "unhold"'),this.emit("unhold",{originator:s})}_onmute({audio:s,video:n}){Y.debug("session onmute"),this._setLocalMediaStatus(),Y.debug('emit "muted"'),this.emit("muted",{audio:s,video:n})}_onunmute({audio:s,video:n}){Y.debug("session onunmute"),this._setLocalMediaStatus(),Y.debug('emit "unmuted"'),this.emit("unmuted",{audio:s,video:n})}};const kg=ze(Sh),Mg=ft.EventEmitter,Lg=ut,Wo=De,$g=It,qi=yt(),Hg=vr,Sf=As,Fg=ys(),sa=new Lg("Message");var jg=class extends Mg{constructor(s){super(),this._ua=s,this._request=null,this._closed=!1,this._direction=null,this._local_identity=null,this._remote_identity=null,this._is_replied=!1,this._data={}}get direction(){return this._direction}get local_identity(){return this._local_identity}get remote_identity(){return this._remote_identity}send(s,n,a={}){const o=s;if(s===void 0||n===void 0)throw new TypeError("Not enough arguments");if(s=this._ua.normalizeTarget(s),!s)throw new TypeError(`Invalid target: ${o}`);const t=qi.cloneArray(a.extraHeaders),r=qi.cloneObject(a.eventHandlers),_=a.contentType||"text/plain",h={};a.fromUserName&&(h.from_uri=new Fg("sip",a.fromUserName,this._ua.configuration.uri.host),t.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`)),a.fromDisplayName&&(h.from_display_name=a.fromDisplayName);for(const g in r)Object.prototype.hasOwnProperty.call(r,g)&&this.on(g,r[g]);t.push(`Content-Type: ${_}`),this._request=new $g.OutgoingRequest(Wo.MESSAGE,s,this._ua,h,t),n&&(this._request.body=n);const d=new Hg(this._ua,this._request,{onRequestTimeout:()=>{this._onRequestTimeout()},onTransportError:()=>{this._onTransportError()},onReceiveResponse:g=>{this._receiveResponse(g)}});this._newMessage("local",this._request),d.send()}init_incoming(s){this._request=s,this._newMessage("remote",s),this._is_replied||(this._is_replied=!0,s.reply(200)),this._close()}accept(s={}){const n=qi.cloneArray(s.extraHeaders),a=s.body;if(this._direction!=="incoming")throw new Sf.NotSupportedError('"accept" not supported for outgoing Message');if(this._is_replied)throw new Error("incoming Message already replied");this._is_replied=!0,this._request.reply(200,null,n,a)}reject(s={}){const n=s.status_code||480,a=s.reason_phrase,o=qi.cloneArray(s.extraHeaders),t=s.body;if(this._direction!=="incoming")throw new Sf.NotSupportedError('"reject" not supported for outgoing Message');if(this._is_replied)throw new Error("incoming Message already replied");if(n<300||n>=700)throw new TypeError(`Invalid status_code: ${n}`);this._is_replied=!0,this._request.reply(n,a,o,t)}_receiveResponse(s){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(s.status_code):break;case/^2[0-9]{2}$/.test(s.status_code):this._succeeded("remote",s);break;default:{const n=qi.sipErrorCause(s.status_code);this._failed("remote",s,n);break}}}_onRequestTimeout(){this._closed||this._failed("system",null,Wo.causes.REQUEST_TIMEOUT)}_onTransportError(){this._closed||this._failed("system",null,Wo.causes.CONNECTION_ERROR)}_close(){this._closed=!0,this._ua.destroyMessage(this)}_newMessage(s,n){s==="remote"?(this._direction="incoming",this._local_identity=n.to,this._remote_identity=n.from):s==="local"&&(this._direction="outgoing",this._local_identity=n.from,this._remote_identity=n.to),this._ua.newMessage(this,{originator:s,message:this,request:n})}_failed(s,n,a){sa.debug("MESSAGE failed"),this._close(),sa.debug('emit "failed"'),this.emit("failed",{originator:s,response:n||null,cause:a})}_succeeded(s,n){sa.debug("MESSAGE succeeded"),this._close(),sa.debug('emit "succeeded"'),this.emit("succeeded",{originator:s,response:n})}};const Vg=ft.EventEmitter,qg=ut,Ko=De,Bg=It,Bi=yt(),Gg=vr,yf=As,na=new qg("Options");var Wg=class extends Vg{constructor(s){super(),this._ua=s,this._request=null,this._closed=!1,this._direction=null,this._local_identity=null,this._remote_identity=null,this._is_replied=!1,this._data={}}get direction(){return this._direction}get local_identity(){return this._local_identity}get remote_identity(){return this._remote_identity}send(s,n,a={}){const o=s;if(s===void 0)throw new TypeError("A target is required for OPTIONS");if(s=this._ua.normalizeTarget(s),!s)throw new TypeError(`Invalid target: ${o}`);const t=Bi.cloneArray(a.extraHeaders),r=Bi.cloneObject(a.eventHandlers),_=a.contentType||"application/sdp";for(const d in r)Object.prototype.hasOwnProperty.call(r,d)&&this.on(d,r[d]);t.push(`Content-Type: ${_}`),this._request=new Bg.OutgoingRequest(Ko.OPTIONS,s,this._ua,null,t),n&&(this._request.body=n);const h=new Gg(this._ua,this._request,{onRequestTimeout:()=>{this._onRequestTimeout()},onTransportError:()=>{this._onTransportError()},onReceiveResponse:d=>{this._receiveResponse(d)}});this._newOptions("local",this._request),h.send()}init_incoming(s){this._request=s,this._newOptions("remote",s),this._is_replied||(this._is_replied=!0,s.reply(200)),this._close()}accept(s={}){const n=Bi.cloneArray(s.extraHeaders),a=s.body;if(this._direction!=="incoming")throw new yf.NotSupportedError('"accept" not supported for outgoing Options');if(this._is_replied)throw new Error("incoming Options already replied");this._is_replied=!0,this._request.reply(200,null,n,a)}reject(s={}){const n=s.status_code||480,a=s.reason_phrase,o=Bi.cloneArray(s.extraHeaders),t=s.body;if(this._direction!=="incoming")throw new yf.NotSupportedError('"reject" not supported for outgoing Options');if(this._is_replied)throw new Error("incoming Options already replied");if(n<300||n>=700)throw new TypeError(`Invalid status_code: ${n}`);this._is_replied=!0,this._request.reply(n,a,o,t)}_receiveResponse(s){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(s.status_code):break;case/^2[0-9]{2}$/.test(s.status_code):this._succeeded("remote",s);break;default:{const n=Bi.sipErrorCause(s.status_code);this._failed("remote",s,n);break}}}_onRequestTimeout(){this._closed||this._failed("system",null,Ko.causes.REQUEST_TIMEOUT)}_onTransportError(){this._closed||this._failed("system",null,Ko.causes.CONNECTION_ERROR)}_close(){this._closed=!0,this._ua.destroyMessage(this)}_newOptions(s,n){s==="remote"?(this._direction="incoming",this._local_identity=n.to,this._remote_identity=n.from):s==="local"&&(this._direction="outgoing",this._local_identity=n.from,this._remote_identity=n.to),this._ua.newOptions(this,{originator:s,message:this,request:n})}_failed(s,n,a){na.debug("OPTIONS failed"),this._close(),na.debug('emit "failed"'),this.emit("failed",{originator:s,response:n||null,cause:a})}_succeeded(s,n){na.debug("OPTIONS succeeded"),this._close(),na.debug('emit "succeeded"'),this.emit("succeeded",{originator:s,response:n})}},Vu={};const Kg=ut,Yo=yt(),Yg=Qt(),Gi=new Kg("Socket");Vu.isSocket=c=>{if(Array.isArray(c))return!1;if(typeof c>"u")return Gi.warn("undefined JsSIP.Socket instance"),!1;try{if(!Yo.isString(c.url))throw Gi.warn("missing or invalid JsSIP.Socket url property"),new Error("Missing or invalid JsSIP.Socket url property");if(!Yo.isString(c.via_transport))throw Gi.warn("missing or invalid JsSIP.Socket via_transport property"),new Error("Missing or invalid JsSIP.Socket via_transport property");if(Yg.parse(c.sip_uri,"SIP_URI")===-1)throw Gi.warn("missing or invalid JsSIP.Socket sip_uri property"),new Error("missing or invalid JsSIP.Socket sip_uri property")}catch{return!1}try{["connect","disconnect","send"].forEach(s=>{if(!Yo.isFunction(c[s]))throw Gi.warn(`missing or invalid JsSIP.Socket method: ${s}`),new Error(`Missing or invalid JsSIP.Socket method: ${s}`)})}catch{return!1}return!0};const Jg=ut,zg=Vu,Af=De,Ut=new Jg("Transport"),Vt={STATUS_CONNECTED:0,STATUS_CONNECTING:1,STATUS_DISCONNECTED:2,SOCKET_STATUS_READY:0,SOCKET_STATUS_ERROR:1,recovery_options:{min_interval:Af.CONNECTION_RECOVERY_MIN_INTERVAL,max_interval:Af.CONNECTION_RECOVERY_MAX_INTERVAL}};var yh=class{constructor(s,n=Vt.recovery_options){Ut.debug("new()"),this.status=Vt.STATUS_DISCONNECTED,this.socket=null,this.sockets=[],this.recovery_options=n,this.recover_attempts=0,this.recovery_timer=null,this.close_requested=!1;try{this.textDecoder=new TextDecoder("utf8")}catch(a){Ut.warn(`cannot use TextDecoder: ${a}`)}if(typeof s>"u")throw new TypeError("Invalid argument. undefined 'sockets' argument");s instanceof Array||(s=[s]),s.forEach(function(a){if(!zg.isSocket(a.socket))throw new TypeError("Invalid argument. invalid 'JsSIP.Socket' instance");if(a.weight&&!Number(a.weight))throw new TypeError("Invalid argument. 'weight' attribute is not a number");this.sockets.push({socket:a.socket,weight:a.weight||0,status:Vt.SOCKET_STATUS_READY})},this),this._getSocket()}get via_transport(){return this.socket.via_transport}get url(){return this.socket.url}get sip_uri(){return this.socket.sip_uri}connect(){if(Ut.debug("connect()"),this.isConnected()){Ut.debug("Transport is already connected");return}else if(this.isConnecting()){Ut.debug("Transport is connecting");return}this.close_requested=!1,this.status=Vt.STATUS_CONNECTING,this.onconnecting({socket:this.socket,attempts:this.recover_attempts}),this.close_requested||(this.socket.onconnect=this._onConnect.bind(this),this.socket.ondisconnect=this._onDisconnect.bind(this),this.socket.ondata=this._onData.bind(this),this.socket.connect())}disconnect(){Ut.debug("close()"),this.close_requested=!0,this.recover_attempts=0,this.status=Vt.STATUS_DISCONNECTED,this.recovery_timer!==null&&(clearTimeout(this.recovery_timer),this.recovery_timer=null),this.socket.onconnect=()=>{},this.socket.ondisconnect=()=>{},this.socket.ondata=()=>{},this.socket.disconnect(),this.ondisconnect({socket:this.socket,error:!1})}send(s){if(Ut.debug("send()"),!this.isConnected())return Ut.warn("unable to send message, transport is not connected"),!1;const n=s.toString();return Ut.debug(`sending message:
116
116
 
117
- ${r}
118
- `),this.socket.send(r)}isConnected(){return this.status===qt.STATUS_CONNECTED}isConnecting(){return this.status===qt.STATUS_CONNECTING}_reconnect(){this.recover_attempts+=1;let s=Math.floor(Math.random()*Math.pow(2,this.recover_attempts)+1);s<this.recovery_options.min_interval?s=this.recovery_options.min_interval:s>this.recovery_options.max_interval&&(s=this.recovery_options.max_interval),Ut.debug(`reconnection attempt: ${this.recover_attempts}. next connection attempt in ${s} seconds`),this.recovery_timer=setTimeout(()=>{!this.close_requested&&!(this.isConnected()||this.isConnecting())&&(this._getSocket(),this.connect())},s*1e3)}_getSocket(){let s=[];if(this.sockets.forEach(a=>{a.status!==qt.SOCKET_STATUS_ERROR&&(s.length===0?s.push(a):a.weight>s[0].weight?s=[a]:a.weight===s[0].weight&&s.push(a))}),s.length===0){this.sockets.forEach(a=>{a.status=qt.SOCKET_STATUS_READY}),this._getSocket();return}const r=Math.floor(Math.random()*s.length);this.socket=s[r].socket}_onConnect(){this.recover_attempts=0,this.status=qt.STATUS_CONNECTED,this.recovery_timer!==null&&(clearTimeout(this.recovery_timer),this.recovery_timer=null),this.onconnect({socket:this})}_onDisconnect(s,r,a){this.status=qt.STATUS_DISCONNECTED,this.ondisconnect({socket:this.socket,error:s,code:r,reason:a}),!this.close_requested&&(this.sockets.forEach(function(o){this.socket===o.socket&&(o.status=qt.SOCKET_STATUS_ERROR)},this),this._reconnect(s))}_onData(s){if(s===`\r
117
+ ${n}
118
+ `),this.socket.send(n)}isConnected(){return this.status===Vt.STATUS_CONNECTED}isConnecting(){return this.status===Vt.STATUS_CONNECTING}_reconnect(){this.recover_attempts+=1;let s=Math.floor(Math.random()*Math.pow(2,this.recover_attempts)+1);s<this.recovery_options.min_interval?s=this.recovery_options.min_interval:s>this.recovery_options.max_interval&&(s=this.recovery_options.max_interval),Ut.debug(`reconnection attempt: ${this.recover_attempts}. next connection attempt in ${s} seconds`),this.recovery_timer=setTimeout(()=>{!this.close_requested&&!(this.isConnected()||this.isConnecting())&&(this._getSocket(),this.connect())},s*1e3)}_getSocket(){let s=[];if(this.sockets.forEach(a=>{a.status!==Vt.SOCKET_STATUS_ERROR&&(s.length===0?s.push(a):a.weight>s[0].weight?s=[a]:a.weight===s[0].weight&&s.push(a))}),s.length===0){this.sockets.forEach(a=>{a.status=Vt.SOCKET_STATUS_READY}),this._getSocket();return}const n=Math.floor(Math.random()*s.length);this.socket=s[n].socket}_onConnect(){this.recover_attempts=0,this.status=Vt.STATUS_CONNECTED,this.recovery_timer!==null&&(clearTimeout(this.recovery_timer),this.recovery_timer=null),this.onconnect({socket:this})}_onDisconnect(s,n,a){this.status=Vt.STATUS_DISCONNECTED,this.ondisconnect({socket:this.socket,error:s,code:n,reason:a}),!this.close_requested&&(this.sockets.forEach(function(o){this.socket===o.socket&&(o.status=Vt.SOCKET_STATUS_ERROR)},this),this._reconnect(s))}_onData(s){if(s===`\r
119
119
  `){Ut.debug("received message with CRLF Keep Alive response");return}else if(typeof s!="string"){try{this.textDecoder?s=this.textDecoder.decode(s):s=String.fromCharCode.apply(null,new Uint8Array(s))}catch{Ut.debug("received binary message failed to be converted into string, message discarded");return}Ut.debug(`received binary message:
120
120
 
121
121
  ${s}
122
122
  `)}else Ut.debug(`received text message:
123
123
 
124
124
  ${s}
125
- `);this.ondata({transport:this,message:s})}};const Jg=ze(E_);var S_={};const zg=ot,yu=Xt(),Au=It,sa=new zg("Parser");S_.parseMessage=(c,s)=>{let r,a,o=c.indexOf(`\r
126
- `);if(o===-1){sa.warn("parseMessage() | no CRLF found, not a SIP message");return}const t=c.substring(0,o);let n=yu.parse(t,"Request_Response");if(n===-1){sa.warn(`parseMessage() | error parsing first line of SIP message: "${t}"`);return}else n.status_code?(r=new Au.IncomingResponse,r.status_code=n.status_code,r.reason_phrase=n.reason_phrase):(r=new Au.IncomingRequest(s),r.method=n.method,r.ruri=n.uri);r.data=c;let h=o+2;for(;;){if(o=Xg(c,h),o===-2){a=h+2;break}else if(o===-1){sa.warn("parseMessage() | malformed message");return}if(n=Qg(r,c,h,o),n!==!0){sa.warn("parseMessage() |",n.error);return}h=o+2}if(r.hasHeader("content-length")){const _=r.getHeader("content-length");r.body=c.substr(a,_)}else r.body=c.substring(a);return r};function Xg(c,s){let r=s,a=0,o=0;if(c.substring(r,r+2).match(/(^\r\n)/))return-2;for(;a===0;){if(o=c.indexOf(`\r
127
- `,r),o===-1)return o;!c.substring(o+2,o+4).match(/(^\r\n)/)&&c.charAt(o+2).match(/(^\s+)/)?r=o+2:a=o}return a}function Qg(c,s,r,a){let o;const t=s.indexOf(":",r),n=s.substring(r,t).trim(),h=s.substring(t+1,a).trim();switch(n.toLowerCase()){case"via":case"v":c.addHeader("via",h),c.getHeaders("via").length===1?(o=c.parseHeader("Via"),o&&(c.via=o,c.via_branch=o.branch)):o=0;break;case"from":case"f":c.setHeader("from",h),o=c.parseHeader("from"),o&&(c.from=o,c.from_tag=o.getParam("tag"));break;case"to":case"t":c.setHeader("to",h),o=c.parseHeader("to"),o&&(c.to=o,c.to_tag=o.getParam("tag"));break;case"record-route":if(o=yu.parse(h,"Record_Route"),o===-1)o=void 0;else for(const _ of o)c.addHeader("record-route",h.substring(_.possition,_.offset)),c.headers["Record-Route"][c.getHeaders("record-route").length-1].parsed=_.parsed;break;case"call-id":case"i":c.setHeader("call-id",h),o=c.parseHeader("call-id"),o&&(c.call_id=h);break;case"contact":case"m":if(o=yu.parse(h,"Contact"),o===-1)o=void 0;else for(const _ of o)c.addHeader("contact",h.substring(_.possition,_.offset)),c.headers.Contact[c.getHeaders("contact").length-1].parsed=_.parsed;break;case"content-length":case"l":c.setHeader("content-length",h),o=c.parseHeader("content-length");break;case"content-type":case"c":c.setHeader("content-type",h),o=c.parseHeader("content-type");break;case"cseq":c.setHeader("cseq",h),o=c.parseHeader("cseq"),o&&(c.cseq=o.value),c instanceof Au.IncomingResponse&&(c.method=o.method);break;case"max-forwards":c.setHeader("max-forwards",h),o=c.parseHeader("max-forwards");break;case"www-authenticate":c.setHeader("www-authenticate",h),o=c.parseHeader("www-authenticate");break;case"proxy-authenticate":c.setHeader("proxy-authenticate",h),o=c.parseHeader("proxy-authenticate");break;case"session-expires":case"x":c.setHeader("session-expires",h),o=c.parseHeader("session-expires"),o&&(c.session_expires=o.expires,c.session_expires_refresher=o.refresher);break;case"refer-to":case"r":c.setHeader("refer-to",h),o=c.parseHeader("refer-to"),o&&(c.refer_to=o);break;case"replaces":c.setHeader("replaces",h),o=c.parseHeader("replaces"),o&&(c.replaces=o);break;case"event":case"o":c.setHeader("event",h),o=c.parseHeader("event"),o&&(c.event=o);break;default:c.addHeader(n,h),o=0}return o===void 0?{error:`error parsing header "${n}"`}:!0}const Zg=ot,y_=De,yf=It,ju=yt(),qu=new Zg("sanityCheck"),eT=[uT],tT=[nT,rT,iT,lT],sT=[aT,oT];let Fe,ns,A_;var C_=(c,s,r)=>{Fe=c,ns=s,A_=r;for(const a of eT)if(a()===!1)return!1;if(Fe instanceof yf.IncomingRequest){for(const a of tT)if(a()===!1)return!1}else if(Fe instanceof yf.IncomingResponse){for(const a of sT)if(a()===!1)return!1}return!0};function nT(){if(Fe.s("to").uri.scheme!=="sip")return el(416),!1}function rT(){if(!Fe.to_tag&&Fe.call_id.substr(0,5)===ns.configuration.jssip_id)return el(482),!1}function iT(){const c=ju.str_utf8_length(Fe.body),s=Fe.getHeader("content-length");if(c<s)return el(400),!1}function lT(){const c=Fe.from_tag,s=Fe.call_id,r=Fe.cseq;let a;if(!Fe.to_tag)if(Fe.method===y_.INVITE){if(ns._transactions.ist[Fe.via_branch])return!1;for(const o in ns._transactions.ist)if(Object.prototype.hasOwnProperty.call(ns._transactions.ist,o)&&(a=ns._transactions.ist[o],a.request.from_tag===c&&a.request.call_id===s&&a.request.cseq===r))return el(482),!1}else{if(ns._transactions.nist[Fe.via_branch])return!1;for(const o in ns._transactions.nist)if(Object.prototype.hasOwnProperty.call(ns._transactions.nist,o)&&(a=ns._transactions.nist[o],a.request.from_tag===c&&a.request.call_id===s&&a.request.cseq===r))return el(482),!1}}function aT(){if(Fe.getHeaders("via").length>1)return qu.debug("more than one Via header field present in the response, dropping the response"),!1}function oT(){const c=ju.str_utf8_length(Fe.body),s=Fe.getHeader("content-length");if(c<s)return qu.debug("message body length is lower than the value in Content-Length header field, dropping the response"),!1}function uT(){const c=["from","to","call_id","cseq","via"];for(const s of c)if(!Fe.hasHeader(s))return qu.debug(`missing mandatory header field : ${s}, dropping the response`),!1}function el(c){const s=Fe.getHeaders("via");let r,a=`SIP/2.0 ${c} ${y_.REASON_PHRASE[c]}\r
125
+ `);this.ondata({transport:this,message:s})}};const Xg=ze(yh);var Ah={};const Qg=ut,Cu=Qt(),Ru=It,ra=new Qg("Parser");Ah.parseMessage=(c,s)=>{let n,a,o=c.indexOf(`\r
126
+ `);if(o===-1){ra.warn("parseMessage() | no CRLF found, not a SIP message");return}const t=c.substring(0,o);let r=Cu.parse(t,"Request_Response");if(r===-1){ra.warn(`parseMessage() | error parsing first line of SIP message: "${t}"`);return}else r.status_code?(n=new Ru.IncomingResponse,n.status_code=r.status_code,n.reason_phrase=r.reason_phrase):(n=new Ru.IncomingRequest(s),n.method=r.method,n.ruri=r.uri);n.data=c;let _=o+2;for(;;){if(o=Zg(c,_),o===-2){a=_+2;break}else if(o===-1){ra.warn("parseMessage() | malformed message");return}if(r=eT(n,c,_,o),r!==!0){ra.warn("parseMessage() |",r.error);return}_=o+2}if(n.hasHeader("content-length")){const h=n.getHeader("content-length");n.body=c.substr(a,h)}else n.body=c.substring(a);return n};function Zg(c,s){let n=s,a=0,o=0;if(c.substring(n,n+2).match(/(^\r\n)/))return-2;for(;a===0;){if(o=c.indexOf(`\r
127
+ `,n),o===-1)return o;!c.substring(o+2,o+4).match(/(^\r\n)/)&&c.charAt(o+2).match(/(^\s+)/)?n=o+2:a=o}return a}function eT(c,s,n,a){let o;const t=s.indexOf(":",n),r=s.substring(n,t).trim(),_=s.substring(t+1,a).trim();switch(r.toLowerCase()){case"via":case"v":c.addHeader("via",_),c.getHeaders("via").length===1?(o=c.parseHeader("Via"),o&&(c.via=o,c.via_branch=o.branch)):o=0;break;case"from":case"f":c.setHeader("from",_),o=c.parseHeader("from"),o&&(c.from=o,c.from_tag=o.getParam("tag"));break;case"to":case"t":c.setHeader("to",_),o=c.parseHeader("to"),o&&(c.to=o,c.to_tag=o.getParam("tag"));break;case"record-route":if(o=Cu.parse(_,"Record_Route"),o===-1)o=void 0;else for(const h of o)c.addHeader("record-route",_.substring(h.possition,h.offset)),c.headers["Record-Route"][c.getHeaders("record-route").length-1].parsed=h.parsed;break;case"call-id":case"i":c.setHeader("call-id",_),o=c.parseHeader("call-id"),o&&(c.call_id=_);break;case"contact":case"m":if(o=Cu.parse(_,"Contact"),o===-1)o=void 0;else for(const h of o)c.addHeader("contact",_.substring(h.possition,h.offset)),c.headers.Contact[c.getHeaders("contact").length-1].parsed=h.parsed;break;case"content-length":case"l":c.setHeader("content-length",_),o=c.parseHeader("content-length");break;case"content-type":case"c":c.setHeader("content-type",_),o=c.parseHeader("content-type");break;case"cseq":c.setHeader("cseq",_),o=c.parseHeader("cseq"),o&&(c.cseq=o.value),c instanceof Ru.IncomingResponse&&(c.method=o.method);break;case"max-forwards":c.setHeader("max-forwards",_),o=c.parseHeader("max-forwards");break;case"www-authenticate":c.setHeader("www-authenticate",_),o=c.parseHeader("www-authenticate");break;case"proxy-authenticate":c.setHeader("proxy-authenticate",_),o=c.parseHeader("proxy-authenticate");break;case"session-expires":case"x":c.setHeader("session-expires",_),o=c.parseHeader("session-expires"),o&&(c.session_expires=o.expires,c.session_expires_refresher=o.refresher);break;case"refer-to":case"r":c.setHeader("refer-to",_),o=c.parseHeader("refer-to"),o&&(c.refer_to=o);break;case"replaces":c.setHeader("replaces",_),o=c.parseHeader("replaces"),o&&(c.replaces=o);break;case"event":case"o":c.setHeader("event",_),o=c.parseHeader("event"),o&&(c.event=o);break;default:c.addHeader(r,_),o=0}return o===void 0?{error:`error parsing header "${r}"`}:!0}const tT=ut,Ch=De,Cf=It,qu=yt(),Bu=new tT("sanityCheck"),sT=[fT],nT=[iT,lT,aT,oT],rT=[uT,cT];let Fe,rs,Rh;var Ih=(c,s,n)=>{Fe=c,rs=s,Rh=n;for(const a of sT)if(a()===!1)return!1;if(Fe instanceof Cf.IncomingRequest){for(const a of nT)if(a()===!1)return!1}else if(Fe instanceof Cf.IncomingResponse){for(const a of rT)if(a()===!1)return!1}return!0};function iT(){if(Fe.s("to").uri.scheme!=="sip")return sl(416),!1}function lT(){if(!Fe.to_tag&&Fe.call_id.substr(0,5)===rs.configuration.jssip_id)return sl(482),!1}function aT(){const c=qu.str_utf8_length(Fe.body),s=Fe.getHeader("content-length");if(c<s)return sl(400),!1}function oT(){const c=Fe.from_tag,s=Fe.call_id,n=Fe.cseq;let a;if(!Fe.to_tag)if(Fe.method===Ch.INVITE){if(rs._transactions.ist[Fe.via_branch])return!1;for(const o in rs._transactions.ist)if(Object.prototype.hasOwnProperty.call(rs._transactions.ist,o)&&(a=rs._transactions.ist[o],a.request.from_tag===c&&a.request.call_id===s&&a.request.cseq===n))return sl(482),!1}else{if(rs._transactions.nist[Fe.via_branch])return!1;for(const o in rs._transactions.nist)if(Object.prototype.hasOwnProperty.call(rs._transactions.nist,o)&&(a=rs._transactions.nist[o],a.request.from_tag===c&&a.request.call_id===s&&a.request.cseq===n))return sl(482),!1}}function uT(){if(Fe.getHeaders("via").length>1)return Bu.debug("more than one Via header field present in the response, dropping the response"),!1}function cT(){const c=qu.str_utf8_length(Fe.body),s=Fe.getHeader("content-length");if(c<s)return Bu.debug("message body length is lower than the value in Content-Length header field, dropping the response"),!1}function fT(){const c=["from","to","call_id","cseq","via"];for(const s of c)if(!Fe.hasHeader(s))return Bu.debug(`missing mandatory header field : ${s}, dropping the response`),!1}function sl(c){const s=Fe.getHeaders("via");let n,a=`SIP/2.0 ${c} ${Ch.REASON_PHRASE[c]}\r
128
128
  `;for(const o of s)a+=`Via: ${o}\r
129
- `;r=Fe.getHeader("To"),Fe.to_tag||(r+=`;tag=${ju.newTag()}`),a+=`To: ${r}\r
129
+ `;n=Fe.getHeader("To"),Fe.to_tag||(n+=`;tag=${qu.newTag()}`),a+=`To: ${n}\r
130
130
  `,a+=`From: ${Fe.getHeader("From")}\r
131
131
  `,a+=`Call-ID: ${Fe.call_id}\r
132
132
  `,a+=`CSeq: ${Fe.cseq} ${Fe.method}\r
133
133
  `,a+=`\r
134
- `,A_.send(a)}const cT=ze(C_);var tl={};const cr=yt(),yn=De,Ko=Xt(),Af=Es(),Yo=Fu,Jo=Ss;tl.settings={authorization_user:null,password:null,realm:null,ha1:null,authorization_jwt:null,display_name:null,uri:null,contact_uri:null,instance_id:null,use_preloaded_route:!1,session_timers:!0,session_timers_refresh_method:yn.UPDATE,session_timers_force_refresher:!1,no_answer_timeout:60,register:!0,register_expires:600,registrar_server:null,sockets:null,connection_recovery_max_interval:yn.CONNECTION_RECOVERY_MAX_INTERVAL,connection_recovery_min_interval:yn.CONNECTION_RECOVERY_MIN_INTERVAL,extra_headers:null,via_host:`${cr.createRandomToken(12)}.invalid`};const na={mandatory:{sockets(c){const s=[];if(Yo.isSocket(c))s.push({socket:c});else if(Array.isArray(c)&&c.length)for(const r of c)Object.prototype.hasOwnProperty.call(r,"socket")&&Yo.isSocket(r.socket)?s.push(r):Yo.isSocket(r)&&s.push({socket:r});else return;return s},uri(c){/^sip:/i.test(c)||(c=`${yn.SIP}:${c}`);const s=Af.parse(c);if(s)return s.user?s:void 0}},optional:{authorization_user(c){if(Ko.parse(`"${c}"`,"quoted_string")!==-1)return c},authorization_jwt(c){if(typeof c=="string")return c},user_agent(c){if(typeof c=="string")return c},connection_recovery_max_interval(c){if(cr.isDecimal(c)){const s=Number(c);if(s>0)return s}},connection_recovery_min_interval(c){if(cr.isDecimal(c)){const s=Number(c);if(s>0)return s}},contact_uri(c){if(typeof c=="string"){const s=Ko.parse(c,"SIP_URI");if(s!==-1)return s}},display_name(c){return c},instance_id(c){if(/^uuid:/i.test(c)&&(c=c.substr(5)),Ko.parse(c,"uuid")!==-1)return c},no_answer_timeout(c){if(cr.isDecimal(c)){const s=Number(c);if(s>0)return s}},session_timers(c){if(typeof c=="boolean")return c},session_timers_refresh_method(c){if(typeof c=="string"&&(c=c.toUpperCase(),c===yn.INVITE||c===yn.UPDATE))return c},session_timers_force_refresher(c){if(typeof c=="boolean")return c},password(c){return String(c)},realm(c){return String(c)},ha1(c){return String(c)},register(c){if(typeof c=="boolean")return c},register_expires(c){if(cr.isDecimal(c)){const s=Number(c);if(s>0)return s}},registrar_server(c){/^sip:/i.test(c)||(c=`${yn.SIP}:${c}`);const s=Af.parse(c);if(s)return s.user?void 0:s},use_preloaded_route(c){if(typeof c=="boolean")return c},extra_headers(c){const s=[];if(Array.isArray(c)&&c.length)for(const r of c)typeof r=="string"&&s.push(r);else return;return s}}};tl.load=(c,s)=>{for(const r in na.mandatory)if(s.hasOwnProperty(r)){const a=s[r],o=na.mandatory[r](a);if(o!==void 0)c[r]=o;else throw new Jo.ConfigurationError(r,a)}else throw new Jo.ConfigurationError(r);for(const r in na.optional)if(s.hasOwnProperty(r)){const a=s[r];if(cr.isEmpty(a))continue;const o=na.optional[r](a);if(o!==void 0)c[r]=o;else throw new Jo.ConfigurationError(r,a)}};const fT=ft.EventEmitter,_T=ot,mt=De,hT=tg,Cf=v_,Rf=Hg,If=Bg,zo=mr,dT=E_,ra=yt(),pT=Ss,mT=Es(),gT=S_,Xo=It,TT=C_,Qo=tl,qe=new _T("UA"),vt={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2};var R_=class extends fT{static get C(){return vt}constructor(s){if(qe.debug("new() [configuration:%o]",s),super(),this._cache={credentials:{}},this._configuration=Object.assign({},Qo.settings),this._dynConfiguration={},this._dialogs={},this._applicants={},this._sessions={},this._transport=null,this._contact=null,this._status=vt.STATUS_INIT,this._error=null,this._transactions={nist:{},nict:{},ist:{},ict:{}},this._data={},this._closeTimer=null,s===void 0)throw new TypeError("Not enough arguments");try{this._loadConfig(s)}catch(r){throw this._status=vt.STATUS_NOT_READY,this._error=vt.CONFIGURATION_ERROR,r}this._registrator=new hT(this)}get C(){return vt}get status(){return this._status}get contact(){return this._contact}get configuration(){return this._configuration}get transport(){return this._transport}start(){qe.debug("start()"),this._status===vt.STATUS_INIT?this._transport.connect():this._status===vt.STATUS_USER_CLOSED?(qe.debug("restarting UA"),this._closeTimer!==null&&(clearTimeout(this._closeTimer),this._closeTimer=null,this._transport.disconnect()),this._status=vt.STATUS_INIT,this._transport.connect()):this._status===vt.STATUS_READY?qe.debug("UA is in READY status, not restarted"):qe.debug("ERROR: connection is down, Auto-Recovery system is trying to reconnect"),this._dynConfiguration.register=this._configuration.register}register(){qe.debug("register()"),this._dynConfiguration.register=!0,this._registrator.register()}unregister(s){qe.debug("unregister()"),this._dynConfiguration.register=!1,this._registrator.unregister(s)}registrator(){return this._registrator}isRegistered(){return this._registrator.registered}isConnected(){return this._transport.isConnected()}call(s,r){qe.debug("call()");const a=new Cf(this);return a.connect(s,r),a}sendMessage(s,r,a){qe.debug("sendMessage()");const o=new Rf(this);return o.send(s,r,a),o}sendOptions(s,r,a){qe.debug("sendOptions()");const o=new If(this);return o.send(s,r,a),o}terminateSessions(s){qe.debug("terminateSessions()");for(const r in this._sessions)this._sessions[r].isEnded()||this._sessions[r].terminate(s)}stop(){if(qe.debug("stop()"),this._dynConfiguration={},this._status===vt.STATUS_USER_CLOSED){qe.debug("UA already closed");return}this._registrator.close();const s=Object.keys(this._sessions).length;for(const a in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,a)){qe.debug(`closing session ${a}`);try{this._sessions[a].terminate()}catch{}}for(const a in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,a))try{this._applicants[a].close()}catch{}this._status=vt.STATUS_USER_CLOSED,Object.keys(this._transactions.nict).length+Object.keys(this._transactions.nist).length+Object.keys(this._transactions.ict).length+Object.keys(this._transactions.ist).length===0&&s===0?this._transport.disconnect():this._closeTimer=setTimeout(()=>{this._closeTimer=null,this._transport.disconnect()},2e3)}normalizeTarget(s){return ra.normalizeTarget(s,this._configuration.hostport_params)}get(s){switch(s){case"authorization_user":return this._configuration.authorization_user;case"realm":return this._configuration.realm;case"ha1":return this._configuration.ha1;case"authorization_jwt":return this._configuration.authorization_jwt;default:qe.warn('get() | cannot get "%s" parameter in runtime',s);return}}set(s,r){switch(s){case"authorization_user":{this._configuration.authorization_user=String(r);break}case"password":{this._configuration.password=String(r);break}case"realm":{this._configuration.realm=String(r);break}case"ha1":{this._configuration.ha1=String(r),this._configuration.password=null;break}case"authorization_jwt":{this._configuration.authorization_jwt=String(r);break}case"display_name":{this._configuration.display_name=r;break}default:return qe.warn('set() | cannot set "%s" parameter in runtime',s),!1}return!0}newTransaction(s){this._transactions[s.type][s.id]=s,this.emit("newTransaction",{transaction:s})}destroyTransaction(s){delete this._transactions[s.type][s.id],this.emit("transactionDestroyed",{transaction:s})}newDialog(s){this._dialogs[s.id]=s}destroyDialog(s){delete this._dialogs[s.id]}newMessage(s,r){this._applicants[s]=s,this.emit("newMessage",r)}newOptions(s,r){this._applicants[s]=s,this.emit("newOptions",r)}destroyMessage(s){delete this._applicants[s]}newRTCSession(s,r){this._sessions[s.id]=s,this.emit("newRTCSession",r)}destroyRTCSession(s){delete this._sessions[s.id]}registered(s){this.emit("registered",s)}unregistered(s){this.emit("unregistered",s)}registrationFailed(s){this.emit("registrationFailed",s)}receiveRequest(s){const r=s.method;if(s.ruri.user!==this._configuration.uri.user&&s.ruri.user!==this._contact.uri.user){qe.debug("Request-URI does not point to us"),s.method!==mt.ACK&&s.reply_sl(404);return}if(s.ruri.scheme===mt.SIPS){s.reply_sl(416);return}if(zo.checkTransaction(this,s))return;if(r===mt.INVITE?new zo.InviteServerTransaction(this,this._transport,s):r!==mt.ACK&&r!==mt.CANCEL&&new zo.NonInviteServerTransaction(this,this._transport,s),r===mt.OPTIONS){if(this.listeners("newOptions").length===0){s.reply(200);return}new If(this).init_incoming(s)}else if(r===mt.MESSAGE){if(this.listeners("newMessage").length===0){s.reply(405);return}new Rf(this).init_incoming(s)}else if(r===mt.INVITE&&!s.to_tag&&this.listeners("newRTCSession").length===0){s.reply(405);return}let a,o;if(s.to_tag)a=this._findDialog(s.call_id,s.from_tag,s.to_tag),a?a.receiveRequest(s):r===mt.NOTIFY?(o=this._findSession(s),o?o.receiveRequest(s):(qe.debug("received NOTIFY request for a non existent subscription"),s.reply(481,"Subscription does not exist"))):r!==mt.ACK&&s.reply(481);else switch(r){case mt.INVITE:if(window.RTCPeerConnection)if(s.hasHeader("replaces")){const t=s.replaces;a=this._findDialog(t.call_id,t.from_tag,t.to_tag),a?(o=a.owner,o.isEnded()?s.reply(603):o.receiveRequest(s)):s.reply(481)}else o=new Cf(this),o.init_incoming(s);else qe.warn("INVITE received but WebRTC is not supported"),s.reply(488);break;case mt.BYE:s.reply(481);break;case mt.CANCEL:o=this._findSession(s),o?o.receiveRequest(s):qe.debug("received CANCEL request for a non existent session");break;case mt.ACK:break;case mt.NOTIFY:this.emit("sipEvent",{event:s.event,request:s}),s.reply(200);break;default:s.reply(405);break}}_findSession({call_id:s,from_tag:r,to_tag:a}){const o=s+r,t=this._sessions[o],n=s+a,h=this._sessions[n];return t||h||null}_findDialog(s,r,a){let o=s+r+a,t=this._dialogs[o];return t||(o=s+a+r,t=this._dialogs[o],t||null)}_loadConfig(s){try{Qo.load(this._configuration,s)}catch(o){throw o}this._configuration.display_name===0&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=ra.newUUID()),this._configuration.jssip_id=ra.createRandomToken(5);const r=this._configuration.uri.clone();r.user=null,this._configuration.hostport_params=r.toString().replace(/^sip:/i,"");try{this._transport=new dT(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=vT.bind(this),this._transport.onconnect=ET.bind(this),this._transport.ondisconnect=ST.bind(this),this._transport.ondata=yT.bind(this)}catch(o){throw qe.warn(o),new pT.ConfigurationError("sockets",this._configuration.sockets)}if(delete this._configuration.sockets,this._configuration.authorization_user||(this._configuration.authorization_user=this._configuration.uri.user),!this._configuration.registrar_server){const o=this._configuration.uri.clone();o.user=null,o.clearParams(),o.clearHeaders(),this._configuration.registrar_server=o}this._configuration.no_answer_timeout*=1e3,this._configuration.contact_uri?this._configuration.via_host=this._configuration.contact_uri.host:this._configuration.contact_uri=new mT("sip",ra.createRandomToken(8),this._configuration.via_host,null,{transport:"ws"}),this._contact={pub_gruu:null,temp_gruu:null,uri:this._configuration.contact_uri,toString(o={}){const t=o.anonymous||null,n=o.outbound||null;let h="<";return t?h+=this.temp_gruu||"sip:anonymous@anonymous.invalid;transport=ws":h+=this.pub_gruu||this.uri.toString(),n&&(t?!this.temp_gruu:!this.pub_gruu)&&(h+=";ob"),h+=">",h}};const a=["authorization_user","password","realm","ha1","authorization_jwt","display_name","register"];for(const o in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,o)&&(a.indexOf(o)!==-1?Object.defineProperty(this._configuration,o,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,o,{writable:!1,configurable:!1}));qe.debug("configuration parameters after validation:");for(const o in this._configuration)if(Object.prototype.hasOwnProperty.call(Qo.settings,o))switch(o){case"uri":case"registrar_server":qe.debug(`- ${o}: ${this._configuration[o]}`);break;case"password":case"ha1":case"authorization_jwt":qe.debug(`- ${o}: NOT SHOWN`);break;default:qe.debug(`- ${o}: ${JSON.stringify(this._configuration[o])}`)}}};function vT(c){this.emit("connecting",c)}function ET(c){this._status!==vt.STATUS_USER_CLOSED&&(this._status=vt.STATUS_READY,this._error=null,this.emit("connected",c),this._dynConfiguration.register&&this._registrator.register())}function ST(c){const s=["nict","ict","nist","ist"];for(const r of s)for(const a in this._transactions[r])Object.prototype.hasOwnProperty.call(this._transactions[r],a)&&this._transactions[r][a].onTransportError();this.emit("disconnected",c),this._registrator.onTransportClosed(),this._status!==vt.STATUS_USER_CLOSED&&(this._status=vt.STATUS_NOT_READY,this._error=vt.NETWORK_ERROR)}function yT(c){const s=c.transport;let r=c.message;if(r=gT.parseMessage(r,this),!!r&&!(this._status===vt.STATUS_USER_CLOSED&&r instanceof Xo.IncomingRequest)&&TT(r,this,s)){if(r instanceof Xo.IncomingRequest)r.transport=s,this.receiveRequest(r);else if(r instanceof Xo.IncomingResponse){let a;switch(r.method){case mt.INVITE:a=this._transactions.ict[r.via_branch],a&&a.receiveResponse(r);break;case mt.ACK:break;default:a=this._transactions.nict[r.via_branch],a&&a.receiveResponse(r);break}}}}const AT=ze(R_);var dt=[];for(var Zo=0;Zo<256;++Zo)dt.push((Zo+256).toString(16).slice(1));function CT(c,s=0){return(dt[c[s+0]]+dt[c[s+1]]+dt[c[s+2]]+dt[c[s+3]]+"-"+dt[c[s+4]]+dt[c[s+5]]+"-"+dt[c[s+6]]+dt[c[s+7]]+"-"+dt[c[s+8]]+dt[c[s+9]]+"-"+dt[c[s+10]]+dt[c[s+11]]+dt[c[s+12]]+dt[c[s+13]]+dt[c[s+14]]+dt[c[s+15]]).toLowerCase()}var ia,RT=new Uint8Array(16);function IT(){if(!ia&&(ia=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!ia))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return ia(RT)}var bT=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const bf={randomUUID:bT};function wf(c,s,r){if(bf.randomUUID&&!s&&!c)return bf.randomUUID();c=c||{};var a=c.random||(c.rng||IT)();if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,s){r=r||0;for(var o=0;o<16;++o)s[r+o]=a[o];return s}return CT(a)}var Me=yt();const ms=ze(Me),eu=new Va("Dialog"),$s={STATUS_EARLY:1,STATUS_CONFIRMED:2,STATUS_TERMINATED:3};class la{static get C(){return $s}constructor(s,r,a,o=$s.STATUS_CONFIRMED){if(this._owner=s,this._ua=s._ua,this._uac_pending_reply=!1,this._uas_pending_reply=!1,r instanceof It.IncomingResponse&&(o=r.status_code<200?$s.STATUS_EARLY:$s.STATUS_CONFIRMED),a==="UAS"){this._id={call_id:r.call_id,local_tag:r.to_tag,remote_tag:r.from_tag,toString(){return this.call_id+this.local_tag+this.remote_tag}},this._state=o,this._remote_seqnum=r.cseq,this._local_uri=r.parseHeader("to").uri,this._remote_uri=r.parseHeader("from").uri;let t=r.getHeaders("to")[0].split(";")[0];t=t.match(/<([^>]*)>/)[1],this._remote_target=t,this._route_set=r.getHeaders("record-route"),this._ack_seqnum=this._remote_seqnum}else if(a==="UAC"){this._id={call_id:r.call_id,local_tag:r.from_tag,remote_tag:r.to_tag,toString(){return this.call_id+this.local_tag+this.remote_tag}},this._state=o,this._local_seqnum=r.cseq,this._local_uri=r.parseHeader("from").uri,this._remote_uri=r.parseHeader("to").uri;let t=r.getHeaders("to")[0].split(";")[0];t=t.match(/<([^>]*)>/)[1],this._remote_target=t,this._route_set=r.getHeaders("record-route").reverse(),this._ack_seqnum=null}this._ua.newDialog(this),eu.debug(`new ${a} dialog created with status ${this._state===$s.STATUS_EARLY?"EARLY":"CONFIRMED"}`)}get id(){return this._id}get local_seqnum(){return this._local_seqnum}set local_seqnum(s){this._local_seqnum=s}get owner(){return this._owner}get uac_pending_reply(){return this._uac_pending_reply}set uac_pending_reply(s){this._uac_pending_reply=s}get uas_pending_reply(){return this._uas_pending_reply}isTerminated(){return this._status===$s.STATUS_TERMINATED}update(s,r){this._state=$s.STATUS_CONFIRMED,eu.debug(`dialog ${this._id.toString()} changed to CONFIRMED state`),r==="UAC"&&(this._route_set=s.getHeaders("record-route").reverse())}terminate(){eu.debug(`dialog ${this._id.toString()} deleted`),this._ua.destroyDialog(this),this._state=$s.STATUS_TERMINATED}sendRequest(s,r={}){const a=ms.cloneArray(r.extraHeaders),o=ms.cloneObject(r.eventHandlers),t=r.body||null,n=this._createRequest(s,a,t);return o.onAuthenticated=()=>{this._local_seqnum+=1},new ag(this,n,o).send(),n}receiveRequest(s){this._checkInDialogRequest(s)&&(s.method===$.ACK&&this._ack_seqnum!==null?this._ack_seqnum=null:s.method===$.INVITE&&(this._ack_seqnum=s.cseq),this._owner.receiveRequest(s))}_createRequest(s,r,a){r=ms.cloneArray(r),this._local_seqnum||(this._local_seqnum=Math.floor(Math.random()*1e4));const o=s===$.CANCEL||s===$.ACK?this._local_seqnum:this._local_seqnum+=1;return new It.OutgoingRequest(s,this._remote_target,this._ua,{cseq:o,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},r,a)}_checkInDialogRequest(s){if(!this._remote_seqnum)this._remote_seqnum=s.cseq;else if(s.cseq<this._remote_seqnum)if(s.method===$.ACK){if(this._ack_seqnum===null||s.cseq!==this._ack_seqnum)return!1}else return s.reply(500),!1;else s.cseq>this._remote_seqnum&&(this._remote_seqnum=s.cseq);if(s.method===$.INVITE||s.method===$.UPDATE&&s.body){if(this._uac_pending_reply===!0)s.reply(491);else if(this._uas_pending_reply===!0){const r=(Math.random()*10|0)+1;return s.reply(500,null,[`Retry-After:${r}`]),!1}else{this._uas_pending_reply=!0;const r=()=>{(s.server_transaction.state===Bt.C.STATUS_ACCEPTED||s.server_transaction.state===Bt.C.STATUS_COMPLETED||s.server_transaction.state===Bt.C.STATUS_TERMINATED)&&(s.server_transaction.removeListener("stateChanged",r),this._uas_pending_reply=!1)};s.server_transaction.on("stateChanged",r)}s.hasHeader("contact")&&s.server_transaction.on("stateChanged",()=>{s.server_transaction.state===Bt.C.STATUS_ACCEPTED&&(this._remote_target=s.parseHeader("contact").uri)})}else s.method===$.NOTIFY&&s.hasHeader("contact")&&s.server_transaction.on("stateChanged",()=>{s.server_transaction.state===Bt.C.STATUS_COMPLETED&&(this._remote_target=s.parseHeader("contact").uri)});return!0}}class wT{constructor(s,r){Wt(this,"plugin",null);Wt(this,"rtcpPeer",null);Wt(this,"handleId",0);Wt(this,"info",null);Wt(this,"joinResult",null);Wt(this,"state",{});Wt(this,"stream",null);Wt(this,"loaded",!1);Wt(this,"aTracks",[]);Wt(this,"vTracks",[]);this.info=s,this.plugin=r,this.rtcpPeer=new RTCPeerConnection({iceServers:[]})}get memberInfo(){return{stream:this.stream,joinResult:this.joinResult,sender:this.handleId,type:"subscriber",name:this.info.display,state:this.state,id:this.handleId}}updateMemberState(s){var r;this.state={...this.state,...s||{}},(r=this.plugin)==null||r.session.emit("member:update",this.memberInfo)}updateMemberStateFromMessage(s){var t,n,h,_;const r=(n=(t=s==null?void 0:s.plugindata)==null?void 0:t.data)==null?void 0:n.newStatePublisher,o=((_=(h=s==null?void 0:s.plugindata)==null?void 0:h.data)==null?void 0:_.publisher_state).find(d=>d.id===r);this.updateMemberState(o==null?void 0:o.state)}hangup(){this.rtcpPeer&&(this.rtcpPeer.close(),this.rtcpPeer=null),this.stream&&this.stream.getTracks().forEach(s=>{s.stop()})}}var OT=Es();const hr=ze(OT),z=new Va("JanusSession"),DT="/opt/recordings/",te={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_ACK:6,STATUS_CANCELED:7,STATUS_TERMINATED:8,STATUS_CONFIRMED:9},aa=["audio","video"];class ka extends ft.EventEmitter{static get C(){return te}constructor(s){z.debug("new"),super(),console.log("constructor call"),this._id=null,this._ua=s,this._status=te.STATUS_NULL,this._dialog=null,this._earlyDialogs={},this._contact=null,this._from_tag=null,this._to_tag=null,this.lastTransaction=0,this._connection=null,this._connectionPromiseQueue=Promise.resolve(),this._request=null,this._is_canceled=!1,this._cancel_reason="",this._is_confirmed=!1,this._late_sdp=!1,this._rtcOfferConstraints=null,this._rtcAnswerConstraints=null,this._localMediaStream=null,this._localMediaStreamLocallyGenerated=!1,this._rtcReady=!0,this._iceReady=!1,this._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},this._direction=null,this._local_identity=null,this._remote_identity=null,this._start_time=null,this._end_time=null,this._audioMuted=!1,this._videoMuted=!1,this._localHold=!1,this._remoteHold=!1,this._sessionTimers={enabled:this._ua.configuration.session_timers,refreshMethod:this._ua.configuration.session_timers_refresh_method,defaultExpires:$.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},this._referSubscribers={},this._candidates=[],this.publishers=[],this.private_id=null,this.memberList={},this.myFeedList=[],this.display_name="",this.stunServers=[{urls:"stun:turn.voicenter.co",credential:"kxsjahnsdjns3eds23esd",username:"turn2es21e"}];const r=wf().replace(/-/g,"").slice(0,12);this.opaque_id=`videoroomtest-${r}`,this._data={}}get C(){return te}get causes(){return $.causes}get id(){return this._id}get connection(){return this._connection}get contact(){return this._contact}get direction(){return this._direction}get local_identity(){return this._local_identity}get remote_identity(){return this._remote_identity}get start_time(){return this._start_time}get end_time(){return this._end_time}get data(){return this._data}set data(s){this._data=s}get status(){return this._status}isInProgress(){switch(this._status){case te.STATUS_NULL:case te.STATUS_INVITE_SENT:case te.STATUS_1XX_RECEIVED:case te.STATUS_INVITE_RECEIVED:case te.STATUS_WAITING_FOR_ANSWER:return!0;default:return!1}}isEstablished(){switch(this._status){case te.STATUS_ANSWERED:case te.STATUS_WAITING_FOR_ACK:case te.STATUS_CONFIRMED:return!0;default:return!1}}isEnded(){switch(this._status){case te.STATUS_CANCELED:case te.STATUS_TERMINATED:return!0;default:return!1}}isMuted(){return{audio:this._audioMuted,video:this._videoMuted}}isOnHold(){return{local:this._localHold,remote:this._remoteHold}}connect(s,r,a={},o){z.debug("connect()"),this.display_name=r;const t=s,n=Me.cloneObject(a.eventHandlers),h=Me.cloneArray(a.extraHeaders),_=Me.cloneObject(a.mediaConstraints,{audio:!0,video:!0}),d=a.mediaStream||null,g=Me.cloneObject(a.pcConfig,{iceServers:[]}),T=a.rtcConstraints||null,E=a.rtcOfferConstraints||null;if(this._rtcOfferConstraints=E,this._rtcAnswerConstraints=a.rtcAnswerConstraints||null,this._data=a.data||this._data,s===void 0)throw new TypeError("Not enough arguments");if(this._status!==te.STATUS_NULL)throw new Fs.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new Fs.NotSupportedError("WebRTC not supported");if(console.log("target",s),s=this._ua.normalizeTarget(s),console.log("normalizeTarget target",s),this.room_id=s.user,!s)throw new TypeError(`Invalid target: ${t}`);this._sessionTimers.enabled&&Me.isDecimal(a.sessionTimersExpires)&&(a.sessionTimersExpires>=$.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=a.sessionTimersExpires:this._sessionTimers.defaultExpires=$.SESSION_EXPIRES);for(const C in n)Object.prototype.hasOwnProperty.call(n,C)&&this.on(C,n[C]);this._from_tag=Me.newTag();const y=a.anonymous||!1,A={from_tag:this._from_tag};this._contact=this._ua.contact.toString({anonymous:y,outbound:!0}),y?(A.from_display_name="Anonymous",A.from_uri=new hr("sip","anonymous","anonymous.invalid"),h.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`),h.push("Privacy: id")):a.fromUserName&&(A.from_uri=new hr("sip",a.fromUserName,this._ua.configuration.uri.host),h.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`)),a.fromDisplayName&&(A.from_display_name=a.fromDisplayName),h.push(`Contact: ${this._contact}`),h.push("Content-Type: application/json"),this._sessionTimers.enabled&&h.push(`Session-Expires: ${this._sessionTimers.defaultExpires}${this._ua.configuration.session_timers_force_refresher?";refresher=uac":""}`),this._request=new It.InitialOutgoingInviteRequest(s,this._ua,A,h),this._id=this._request.call_id+this._from_tag,this._createRTCConnection(g,T),this._direction="outgoing",this._local_identity=this._request.from,this._remote_identity=this._request.to,console.log("this._remote_identity",this._remote_identity),o&&o(this),this._newJanusSession("local",this._request),this._sendInitialRequest(_,E,d)}init_incoming(s,r){z.debug("init_incoming()");let a;const o=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;if(s.body&&o!=="application/sdp"){s.reply(415);return}if(this._status=te.STATUS_INVITE_RECEIVED,this._from_tag=s.from_tag,this._id=s.call_id+this._from_tag,this._request=s,this._contact=this._ua.contact.toString(),s.hasHeader("expires")&&(a=s.getHeader("expires")*1e3),s.to_tag=Me.newTag(),!this._createDialog(s,"UAS",!0)){s.reply(500,"Missing Contact header field");return}s.body?this._late_sdp=!1:this._late_sdp=!0,this._status=te.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(()=>{s.reply(408),this._failed("local",null,$.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),a&&(this._timers.expiresTimer=setTimeout(()=>{this._status===te.STATUS_WAITING_FOR_ANSWER&&(s.reply(487),this._failed("system",null,$.causes.EXPIRES))},a)),this._direction="incoming",this._local_identity=s.to,this._remote_identity=s.from,r&&r(this),this._newJanusSession("remote",s),this._status!==te.STATUS_TERMINATED&&(s.reply(180,null,[`Contact: ${this._contact}`]),this._progress("local",null))}answer(s={}){z.debug("answer()");const r=this._request,a=Me.cloneArray(s.extraHeaders),o=Me.cloneObject(s.mediaConstraints),t=s.mediaStream||null,n=Me.cloneObject(s.pcConfig,{iceServers:[]}),h=s.rtcConstraints||null,_=s.rtcAnswerConstraints||null,d=Me.cloneObject(s.rtcOfferConstraints);let g,T=!1,E=!1,y=!1,A=!1;if(this._rtcAnswerConstraints=_,this._rtcOfferConstraints=s.rtcOfferConstraints||null,this._data=s.data||this._data,this._direction!=="incoming")throw new Fs.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==te.STATUS_WAITING_FOR_ANSWER)throw new Fs.InvalidStateError(this._status);if(this._sessionTimers.enabled&&Me.isDecimal(s.sessionTimersExpires)&&(s.sessionTimersExpires>=$.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=s.sessionTimersExpires:this._sessionTimers.defaultExpires=$.SESSION_EXPIRES),this._status=te.STATUS_ANSWERED,!this._createDialog(r,"UAS")){r.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),a.unshift(`Contact: ${this._contact}`);const C=r.parseSDP();Array.isArray(C.media)||(C.media=[C.media]);for(const I of C.media)I.type==="audio"&&(T=!0,(!I.direction||I.direction==="sendrecv")&&(y=!0)),I.type==="video"&&(E=!0,(!I.direction||I.direction==="sendrecv")&&(A=!0));if(t&&o.audio===!1){g=t.getAudioTracks();for(const I of g)t.removeTrack(I)}if(t&&o.video===!1){g=t.getVideoTracks();for(const I of g)t.removeTrack(I)}!t&&o.audio===void 0&&(o.audio=y),!t&&o.video===void 0&&(o.video=A),!t&&!T&&!d.offerToReceiveAudio&&(o.audio=!1),!t&&!E&&!d.offerToReceiveVideo&&(o.video=!1),this._createRTCConnection(n,h),Promise.resolve().then(()=>{if(t)return t;if(o.audio||o.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(o).catch(I=>{throw this._status===te.STATUS_TERMINATED?new Error("terminated"):(r.reply(480),this._failed("local",null,$.causes.USER_DENIED_MEDIA_ACCESS),z.warn('emit "getusermediafailed" [error:%o]',I),this.emit("getusermediafailed",I),new Error("getUserMedia() failed"))})}).then(I=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");this._localMediaStream=I,I&&I.getTracks().forEach(H=>{this._connection.addTrack(H,I)})}).then(()=>{if(this._late_sdp)return;const I={originator:"remote",type:"offer",sdp:r.body};z.debug('emit "sdp"'),this.emit("sdp",I);const H=new RTCSessionDescription({type:"offer",sdp:I.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(H)).catch(L=>{throw r.reply(488),this._failed("system",null,$.causes.WEBRTC_ERROR),z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',L),this.emit("peerconnection:setremotedescriptionfailed",L),new Error("peerconnection.setRemoteDescription() failed")}),this._connectionPromiseQueue}).then(()=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");return this._connecting(r),this._late_sdp?this._createLocalDescription("offer",this._rtcOfferConstraints).catch(()=>{throw r.reply(500),new Error("_createLocalDescription() failed")}):this._createLocalDescription("answer",_).catch(()=>{throw r.reply(500),new Error("_createLocalDescription() failed")})}).then(I=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");this._handleSessionTimersInIncomingRequest(r,a),r.reply(200,null,a,I,()=>{this._status=te.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(r,I),this._setACKTimer(),this._accepted("local")},()=>{this._failed("system",null,$.causes.CONNECTION_ERROR)})}).catch(I=>{this._status!==te.STATUS_TERMINATED&&z.warn(I)})}terminate(s={}){z.debug("terminate()");const r=s.cause||$.causes.BYE,a=Me.cloneArray(s.extraHeaders),o=s.body;let t,n=s.status_code,h=s.reason_phrase;if(this._status===te.STATUS_TERMINATED)throw new Fs.InvalidStateError(this._status);switch(this._status){case te.STATUS_NULL:case te.STATUS_INVITE_SENT:case te.STATUS_1XX_RECEIVED:if(z.debug("canceling session"),n&&(n<200||n>=700))throw new TypeError(`Invalid status_code: ${n}`);n&&(h=h||$.REASON_PHRASE[n]||"",t=`SIP ;cause=${n} ;text="${h}"`),this._status===te.STATUS_NULL||this._status===te.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=t):this._status===te.STATUS_1XX_RECEIVED&&this._request.cancel(t),this._status=te.STATUS_CANCELED,this._failed("local",null,$.causes.CANCELED);break;case te.STATUS_WAITING_FOR_ANSWER:case te.STATUS_ANSWERED:if(z.debug("rejecting session"),n=n||480,n<300||n>=700)throw new TypeError(`Invalid status_code: ${n}`);this._request.reply(n,h,a,o),this._failed("local",null,$.causes.REJECTED);break;case te.STATUS_WAITING_FOR_ACK:case te.STATUS_CONFIRMED:if(z.debug("terminating session"),h=s.reason_phrase||$.REASON_PHRASE[n]||"",n&&(n<200||n>=700))throw new TypeError(`Invalid status_code: ${n}`);if(n&&a.push(`Reason: SIP ;cause=${n}; text="${h}"`),this._status===te.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==Bt.C.STATUS_TERMINATED){const _=this._dialog;this.receiveRequest=({method:d})=>{d===$.ACK&&(this.sendRequest($.BYE,{extraHeaders:a,body:o}),_.terminate(),this.closeSession())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===Bt.C.STATUS_TERMINATED&&(this.sendRequest($.BYE,{extraHeaders:a,body:o}),_.terminate(),this.closeSession())}),this._ended("local",null,r),this._dialog=_,console.log("SET DIALOG terminate"),this._ua.newDialog(_)}else{const _={janus:"leave"},d=["Content-Type: application/json","PTYPE: Leave"];this.sendRequest($.BYE,{extraHeaders:d,body:JSON.stringify(_)}),this.closeSession(),this._ended("local",null,r)}}}sendInfo(s,r,a={}){if(z.debug("sendInfo()"),this._status!==te.STATUS_CONFIRMED&&this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_1XX_RECEIVED)throw new Fs.InvalidStateError(this._status);new Eu(this).send(s,r,a)}mute(s={audio:!0,video:!1}){z.debug("mute()");let r=!1,a=!1;this._audioMuted===!1&&s.audio&&(r=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&s.video&&(a=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(r===!0||a===!0)&&this._onmute({audio:r,video:a})}unmute(s={audio:!0,video:!0}){z.debug("unmute()");let r=!1,a=!1;this._audioMuted===!0&&s.audio&&(r=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&s.video&&(a=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(r===!0||a===!0)&&this._onunmute({audio:r,video:a})}hold(s={},r){if(z.debug("hold()"),this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED||this._localHold===!0||!this._isReadyToReOffer())return!1;this._localHold=!0,this._onhold("local");const a={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:$.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:a,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:a,extraHeaders:s.extraHeaders}),!0}unhold(s={},r){if(z.debug("unhold()"),this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED||this._localHold===!1||!this._isReadyToReOffer())return!1;this._localHold=!1,this._onunhold("local");const a={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:$.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:a,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:a,extraHeaders:s.extraHeaders}),!0}renegotiate(s={},r){z.debug("renegotiate()");const a=s.rtcOfferConstraints||null;if(this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;const o={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:$.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Media Renegotiation Failed"})}};return this._setLocalMediaStatus(),s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:o,rtcOfferConstraints:a,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:o,rtcOfferConstraints:a,extraHeaders:s.extraHeaders}),!0}refer(s,r){z.debug("refer()");const a=s;if(this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED)return!1;if(s=this._ua.normalizeTarget(s),!s)throw new TypeError(`Invalid target: ${a}`);const o=new Ig(this);o.sendRefer(s,r);const t=o.id;return this._referSubscribers[t]=o,o.on("requestFailed",()=>{delete this._referSubscribers[t]}),o.on("accepted",()=>{delete this._referSubscribers[t]}),o.on("failed",()=>{delete this._referSubscribers[t]}),o}sendRequest(s,r){return z.debug("sendRequest()"),this._dialog.sendRequest(s,r)}receiveNotify(s){z.debug("receiveRequest()")}receiveRequest(s){if(z.debug("receiveRequest()"),s.method===$.CANCEL)(this._status===te.STATUS_WAITING_FOR_ANSWER||this._status===te.STATUS_ANSWERED)&&(this._status=te.STATUS_CANCELED,this._request.reply(487),this._failed("remote",s,$.causes.CANCELED));else switch(s.method){case $.ACK:if(this._status!==te.STATUS_WAITING_FOR_ACK)return;if(this._status=te.STATUS_CONFIRMED,clearTimeout(this._timers.ackTimer),clearTimeout(this._timers.invite2xxTimer),this._late_sdp){if(!s.body){this.terminate({cause:$.causes.MISSING_SDP,status_code:400});break}const r={originator:"remote",type:"answer",sdp:s.body};z.debug('emit "sdp"'),this.emit("sdp",r);const a=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(a)).then(()=>{this._is_confirmed||this._confirmed("remote",s)}).catch(o=>{this.terminate({cause:$.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)})}else this._is_confirmed||this._confirmed("remote",s);break;case $.BYE:this._status===te.STATUS_CONFIRMED||this._status===te.STATUS_WAITING_FOR_ACK?(s.reply(200),this._ended("remote",s,$.causes.BYE)):this._status===te.STATUS_INVITE_RECEIVED||this._status===te.STATUS_WAITING_FOR_ANSWER?(s.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",s,$.causes.BYE)):s.reply(403,"Wrong Status");break;case $.INVITE:this._status===te.STATUS_CONFIRMED?s.hasHeader("replaces")?this._receiveReplaces(s):this._receiveReinvite(s):s.reply(403,"Wrong Status");break;case $.INFO:if(this._status===te.STATUS_1XX_RECEIVED||this._status===te.STATUS_WAITING_FOR_ANSWER||this._status===te.STATUS_ANSWERED||this._status===te.STATUS_WAITING_FOR_ACK||this._status===te.STATUS_CONFIRMED){const r=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;r&&r.match(/^application\/dtmf-relay/i)?new pg(this).init_incoming(s):r!==void 0?new Eu(this).init_incoming(s):s.reply(415)}else s.reply(403,"Wrong Status");break;case $.UPDATE:this._status===te.STATUS_CONFIRMED?this._receiveUpdate(s):s.reply(403,"Wrong Status");break;case $.REFER:this._status===te.STATUS_CONFIRMED?this._receiveRefer(s):s.reply(403,"Wrong Status");break;case $.NOTIFY:this._status===te.STATUS_CONFIRMED?this._receiveNotify(s):s.reply(403,"Wrong Status");break;default:s.reply(501)}}onTransportError(){z.warn("onTransportError()"),this._status!==te.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:$.causes.CONNECTION_ERROR,cause:$.causes.CONNECTION_ERROR})}onRequestTimeout(){z.warn("onRequestTimeout()"),this._status!==te.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:$.causes.REQUEST_TIMEOUT,cause:$.causes.REQUEST_TIMEOUT})}onDialogError(){z.warn("onDialogError()"),this._status!==te.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:$.causes.DIALOG_ERROR,cause:$.causes.DIALOG_ERROR})}newDTMF(s){z.debug("newDTMF()"),this.emit("newDTMF",s)}newInfo(s){z.debug("newInfo()"),this.emit("newInfo",s)}_isReadyToReOffer(){return this._rtcReady?this._dialog?this._dialog.uac_pending_reply===!0||this._dialog.uas_pending_reply===!0?(z.debug("_isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress"),!1):!0:(z.debug("_isReadyToReOffer() | session not established yet"),!1):(z.debug("_isReadyToReOffer() | internal WebRTC status not ready"),!1)}_close(){if(z.debug("close()"),this._localMediaStream&&this._localMediaStreamLocallyGenerated&&(z.debug("close() | closing local MediaStream"),Me.closeMediaStream(this._localMediaStream)),this._status!==te.STATUS_TERMINATED){if(this._status=te.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(s){z.warn("close() | error closing the RTCPeerConnection: %o",s)}for(const s in this._timers)Object.prototype.hasOwnProperty.call(this._timers,s)&&clearTimeout(this._timers[s]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(const s in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,s)&&(this._earlyDialogs[s].terminate(),delete this._earlyDialogs[s]);for(const s in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,s)&&delete this._referSubscribers[s];this._ua.destroyRTCSession(this)}}_setInvite2xxTimer(s,r){let a=ki.T1;function o(){this._status===te.STATUS_WAITING_FOR_ACK&&(s.reply(200,null,[`Contact: ${this._contact}`],r),a<ki.T2&&(a=a*2,a>ki.T2&&(a=ki.T2)),this._timers.invite2xxTimer=setTimeout(o.bind(this),a))}this._timers.invite2xxTimer=setTimeout(o.bind(this),a)}_setACKTimer(){this._timers.ackTimer=setTimeout(()=>{this._status===te.STATUS_WAITING_FOR_ACK&&(z.debug("no ACK received, terminating the session"),clearTimeout(this._timers.invite2xxTimer),this.sendRequest($.BYE),this._ended("remote",null,$.causes.NO_ACK))},ki.TIMER_H)}_createRTCConnection(s,r){this.stunServers,this._connection=new RTCPeerConnection(s,r),this._connection.addEventListener("iceconnectionstatechange",()=>{this._connection.iceConnectionState==="failed"&&this.terminate({cause:$.causes.RTP_TIMEOUT,status_code:408,reason_phrase:$.causes.RTP_TIMEOUT})});let a;const o=t=>{this._connection.signalingState!=="stable"&&this._connection.signalingState!=="have-local-offer"||t.candidate&&(this._candidates.push(t.candidate),clearTimeout(a),a=setTimeout(()=>{this.lastTrickleReceived=!0,this.subscribeSent&&!this.isConfigureSent&&(this.addTracks(this.stream.getTracks()),this._ua.emit("changeMainVideoStream",{name:this.display_name,stream:this.stream}),this._sendConfigureMessage({audio:!0,video:!0}).then(()=>{}))},500))};this._connection.onicecandidate=o,z.debug('emit "peerconnection"'),this.emit("peerconnection",{peerconnection:this._connection})}_createLocalDescription(s,r){if(z.debug("createLocalDescription()"),s!=="offer"&&s!=="answer")throw new Error(`createLocalDescription() | invalid type "${s}"`);const a=this._connection;return this._rtcReady=!1,Promise.resolve().then(()=>s==="offer"?a.createOffer(r).catch(o=>(z.warn('emit "peerconnection:createofferfailed" [error:%o]',o),this.emit("peerconnection:createofferfailed",o),Promise.reject(o))):a.createAnswer(r).catch(o=>(z.warn('emit "peerconnection:createanswerfailed" [error:%o]',o),this.emit("peerconnection:createanswerfailed",o),Promise.reject(o)))).then(o=>a.setLocalDescription(o).catch(t=>(this._rtcReady=!0,z.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',t),this.emit("peerconnection:setlocaldescriptionfailed",t),Promise.reject(t)))).then(()=>{const o=r&&r.iceRestart;if(a.iceGatheringState==="complete"&&!o||a.iceGatheringState==="gathering"&&this._iceReady){this._rtcReady=!0;const t={originator:"local",type:s,sdp:a.localDescription.sdp};return z.debug('emit "sdp"'),this.emit("sdp",t),Promise.resolve(t.sdp)}return new Promise(t=>{let n=!1,h,_;this._iceReady=!1;const d=()=>{a.removeEventListener("icecandidate",h),a.removeEventListener("icegatheringstatechange",_),n=!0,this._rtcReady=!0,this._iceReady=!0;const g={originator:"local",type:s,sdp:a.localDescription.sdp};z.debug('emit "sdp"'),this.emit("sdp",g),t(g.sdp)};a.addEventListener("icecandidate",h=g=>{const T=g.candidate;T?this.emit("icecandidate",{candidate:T,ready:d}):n||d()}),a.addEventListener("icegatheringstatechange",_=()=>{a.iceGatheringState==="complete"&&!n&&d()})})})}_createDialog(s,r,a){console.log("_createDialog",s);const o=r==="UAS"?s.to_tag:s.from_tag,t=r==="UAS"?s.from_tag:s.to_tag,n=s.call_id+o+t;console.log("remote_tag",t);let h=this._earlyDialogs[n];if(a)return h?!0:(h=new la(this,s,r,la.C.STATUS_EARLY),console.log("SET DIALOG early"),h.error?(console.log("early_dialog error",h.error),z.debug(h.error),this._failed("remote",s,$.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[n]=h,!0));{if(this._from_tag=s.from_tag,this._to_tag=s.to_tag,h)return h.update(s,r),console.log("SET DIALOG 1"),this._dialog=h,delete this._earlyDialogs[n],!0;const _=new la(this,s,r);return _.error?(console.log("dialog.error",_.error),z.debug(_.error),this._failed("remote",s,$.causes.INTERNAL_ERROR),!1):(console.log("AAA SET DIALOG 2"),this._dialog=_,!0)}}_receiveReinvite(s){z.debug("receiveReinvite()");const r=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,a={request:s,callback:void 0,reject:t.bind(this)};let o=!1;function t(h={}){o=!0;const _=h.status_code||403,d=h.reason_phrase||"",g=Me.cloneArray(h.extraHeaders);if(this._status!==te.STATUS_CONFIRMED)return!1;if(_<300||_>=700)throw new TypeError(`Invalid status_code: ${_}`);s.reply(_,d,g)}if(this.emit("reinvite",a),o)return;if(this._late_sdp=!1,!s.body){this._late_sdp=!0,this._remoteHold&&(this._remoteHold=!1,this._onunhold("remote")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",this._rtcOfferConstraints)).then(h=>{n.call(this,h)}).catch(()=>{s.reply(500)});return}if(r!=="application/sdp"){z.debug("invalid Content-Type"),s.reply(415);return}this._processInDialogSdpOffer(s).then(h=>{this._status!==te.STATUS_TERMINATED&&n.call(this,h)}).catch(h=>{z.warn(h)});function n(h){const _=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(s,_),this._late_sdp&&(h=this._mangleOffer(h)),s.reply(200,null,_,h,()=>{this._status=te.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(s,h),this._setACKTimer()}),typeof a.callback=="function"&&a.callback()}}_receiveUpdate(s){z.debug("receiveUpdate()");const r=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,a={request:s,callback:void 0,reject:t.bind(this)};let o=!1;function t(h={}){o=!0;const _=h.status_code||403,d=h.reason_phrase||"",g=Me.cloneArray(h.extraHeaders);if(this._status!==te.STATUS_CONFIRMED)return!1;if(_<300||_>=700)throw new TypeError(`Invalid status_code: ${_}`);s.reply(_,d,g)}if(this.emit("update",a),o)return;if(!s.body){n.call(this,null);return}if(r!=="application/sdp"){z.debug("invalid Content-Type"),s.reply(415);return}this._processInDialogSdpOffer(s).then(h=>{this._status!==te.STATUS_TERMINATED&&n.call(this,h)}).catch(h=>{z.warn(h)});function n(h){const _=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(s,_),s.reply(200,null,_,h),typeof a.callback=="function"&&a.callback()}}_processInDialogSdpOffer(s){z.debug("_processInDialogSdpOffer()");const r=s.parseSDP();let a=!1;for(const n of r.media){if(aa.indexOf(n.type)===-1)continue;const h=n.direction||r.direction||"sendrecv";if(h==="sendonly"||h==="inactive")a=!0;else{a=!1;break}}const o={originator:"remote",type:"offer",sdp:s.body};z.debug('emit "sdp"'),this.emit("sdp",o);const t=new RTCSessionDescription({type:"offer",sdp:o.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");return this._connection.setRemoteDescription(t).catch(n=>{throw s.reply(488),z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',n),this.emit("peerconnection:setremotedescriptionfailed",n),n})}).then(()=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");this._remoteHold===!0&&a===!1?(this._remoteHold=!1,this._onunhold("remote")):this._remoteHold===!1&&a===!0&&(this._remoteHold=!0,this._onhold("remote"))}).then(()=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");return this._createLocalDescription("answer",this._rtcAnswerConstraints).catch(n=>{throw s.reply(500),z.warn('emit "peerconnection:createtelocaldescriptionfailed" [error:%o]',n),n})}).catch(n=>{z.warn("_processInDialogSdpOffer() failed [error: %o]",n)}),this._connectionPromiseQueue}_receiveRefer(s){if(z.debug("receiveRefer()"),!s.refer_to){z.debug("no Refer-To header field present in REFER"),s.reply(400);return}if(s.refer_to.uri.scheme!==$.SIP){z.debug("Refer-To header field points to a non-SIP URI scheme"),s.reply(416);return}s.reply(202);const r=new yg(this,s.cseq);z.debug('emit "refer"'),this.emit("refer",{request:s,accept:(t,n)=>{a.call(this,t,n)},reject:()=>{o.call(this)}});function a(t,n={}){if(t=typeof t=="function"?t:null,this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED)return!1;const h=new ka(this._ua);if(h.on("progress",({response:_})=>{r.notify(_.status_code,_.reason_phrase)}),h.on("accepted",({response:_})=>{r.notify(_.status_code,_.reason_phrase)}),h.on("_failed",({message:_,cause:d})=>{_?r.notify(_.status_code,_.reason_phrase):r.notify(487,d)}),s.refer_to.uri.hasHeader("replaces")){const _=decodeURIComponent(s.refer_to.uri.getHeader("replaces"));n.extraHeaders=Me.cloneArray(n.extraHeaders),n.extraHeaders.push(`Replaces: ${_}`)}h.connect(s.refer_to.uri.toAor(),n,t)}function o(){r.notify(603)}}_receiveNotify(s){switch(z.debug("receiveNotify()"),s.event||s.reply(400),s.event.event){case"refer":{let r,a;if(s.event.params&&s.event.params.id)r=s.event.params.id,a=this._referSubscribers[r];else if(Object.keys(this._referSubscribers).length===1)a=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{s.reply(400,"Missing event id parameter");return}if(!a){s.reply(481,"Subscription does not exist");return}a.receiveNotify(s),s.reply(200);break}default:s.reply(489)}}_receiveReplaces(s){z.debug("receiveReplaces()");function r(o){if(this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED)return!1;const t=new ka(this._ua);t.on("confirmed",()=>{this.terminate()}),t.init_incoming(s,o)}function a(){z.debug("Replaced INVITE rejected by the user"),s.reply(486)}this.emit("replaces",{request:s,accept:o=>{r.call(this,o)},reject:()=>{a.call(this)}})}_getNextTransactionId(){return(this.lastTransaction+1).toString()}_sendInitialRequest(s,r,a){this.ackSent=!1,this.publisherSubscribeSent=!1;const o=new Ma(this._ua,this._request,{onRequestTimeout:()=>{this.onRequestTimeout()},onTransportError:()=>{this.onTransportError()},onAuthenticated:t=>{this._request=t},onReceiveResponse:t=>{this._receiveInviteResponse(t)}});Promise.resolve().then(()=>{if(a)return a;if(s.audio||s.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(s).catch(t=>{throw this._status===te.STATUS_TERMINATED?new Error("terminated"):(this._failed("local",null,$.causes.USER_DENIED_MEDIA_ACCESS),z.warn('emit "getusermediafailed" [error:%o]',t),this.emit("getusermediafailed",t),t)})}).then(t=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");return this._localMediaStream=t,t&&t.getTracks().forEach(n=>{this._connection.addTrack(n,t)}),this._connecting(this._request),this._createLocalDescription("offer",r).catch(n=>{throw this._failed("local",null,$.causes.WEBRTC_ERROR),n})}).then(t=>{if(this._is_canceled||this._status===te.STATUS_TERMINATED)throw new Error("terminated");const n={janus:"attach",plugin:"janus.plugin.videoroom",opaque_id:this.opaque_id},h=JSON.stringify(n);this._request.body=h,this._status=te.STATUS_INVITE_SENT,z.debug('emit "sending" [request:%o]',this._request),this.emit("sending",{request:this._request}),o.send()}).catch(t=>{this._status!==te.STATUS_TERMINATED&&z.warn(t)})}requestAudioAndVideoPermissions(){return this.loadStream()}async loadStream(){const s={audio:!0,video:!0};try{this.stream=await navigator.mediaDevices.getUserMedia(s)}catch{try{s.video=!1,this.stream=await navigator.mediaDevices.getUserMedia(s)}catch{s.audio=!1,s.video=!1,this.stream=await navigator.mediaDevices.getUserMedia(s)}}return{stream:this.stream,options:s}}addTracks(s){s.forEach(r=>{this._connection.addTrack(r)})}getRecordFileName(){return DT+this.room_id+btoa(unescape(encodeURIComponent(this.displayName)))+Date.now()}async processIceCandidates(){for(let s=0;s<this.iceCandidates.length;s++)await this._connection.addIceCandidate(this.iceCandidates[s]);this.iceCandidates=[]}async _sendConfigureMessage(s){const r={offerToReceiveAudio:!1,offerToReceiveVideo:!1},a=await this._connection.createOffer(r);await this._connection.setLocalDescription(a);const o=this._candidates.map(_=>({janus:"trickle",candidate:_,handle_id:this.handle_id,session_id:this.session_id})),n={configure:{janus:"message",body:{request:"configure",record:!0,filename:this.getRecordFileName(),...s},jsep:a,handle_id:this.handle_id,session_id:this.session_id},trickles:[...o]},h=["Content-Type: application/json","PTYPE: Ice"];this.sendRequest($.INFO,{extraHeaders:h,body:JSON.stringify(n),eventHandlers:{onSuccessResponse:async _=>{this.isConfigureSent=!0;const g=_.data.split(`\r
135
- `),T=g[g.length-1],E=JSON.parse(T);await this._connection.setRemoteDescription(E.jsep),this._candidates=[]}}})}_sendMemberStartMessage(s,r){const a={janus:"message",body:{request:"start",room:this.room_id},handle_id:s.handleId,session_id:this.session_id,jsep:r},o=["Content-Type: application/json","PTYPE: Configure"];this.sendRequest($.INFO,{extraHeaders:o,body:JSON.stringify(a),eventHandlers:{onSuccessResponse:async t=>{t.status_code===200&&await s.rtcpPeer.setLocalDescription(r)}}})}_sendTrickleMessage(s){const a={trickles:[...s.map(t=>({janus:"trickle",candidate:t,handle_id:this.handle_id,session_id:this.session_id}))]},o=["PTYPE: Trickle"];this.sendRequest($.INFO,{extraHeaders:o,body:JSON.stringify(a),eventHandlers:{onSuccessResponse:async t=>{console.log("_sendTrickleMessage",t)}}})}async _answerAttachedStream(s,r){let a=null;const o=async _=>{if(!s.rtcpPeer||s.loaded)return;{s.loaded=!0;const y={audio:!0,video:!0};await new Promise(A=>{setTimeout(A,100)}),a=await s.rtcpPeer.createAnswer(y),this._sendMemberStartMessage(s,a)}const d=_.streams[0].getAudioTracks(),g=_.streams[0].getVideoTracks(),T=[];d[0]&&T.push(d[0]),g[0]&&T.push(g[0]);const E=new MediaStream(T);s.stream=E,this._ua.emit("memberJoin",s.memberInfo)};let t,n=[];const h=_=>{s.rtcpPeer.signalingState!=="stable"&&s.rtcpPeer.signalingState!=="have-local-offer"||(n.push(_.candidate||null),clearTimeout(t),t=setTimeout(()=>{this._sendTrickleMessage(n)},500))};s.rtcpPeer=new RTCPeerConnection,s.rtcpPeer.ontrack=o,s.rtcpPeer.onicecandidate=h,s.rtcpPeer.sender=r.sender,await s.rtcpPeer.setRemoteDescription(r.jsep)}_sendJoinMemberRequest(s){const r={janus:"message",body:{request:"join",room:this.room_id,feed:s.info.id,ptype:"subscriber"},handle_id:s.handleId,session_id:this.session_id},a=["PTYPE: Subscriber"];this.sendRequest($.SUBSCRIBE,{extraHeaders:a,body:JSON.stringify(r),eventHandlers:{onSuccessResponse:async o=>{var t,n;if(o.status_code===200){const h=JSON.parse(o.body);(n=(t=h==null?void 0:h.plugindata)==null?void 0:t.data)!=null&&n.id&&await this._answerAttachedStream(s,h)}}}})}_attachMember(s){const r={janus:"attach",opaque_id:this.opaque_id,plugin:"janus.plugin.videoroom",session_id:this.session_id},a=["PTYPE: Subscriber"];this.sendRequest($.INFO,{extraHeaders:a,body:JSON.stringify(r),eventHandlers:{onSuccessResponse:async o=>{if(o.status_code===200){const n=JSON.parse(o.body).data.id;s.handleId=n,this._sendJoinMemberRequest(s)}}}})}_detachMember(s){const r={janus:"detach",handle_id:s.handleId,session_id:this.session_id},a=["PTYPE: Subscriber"];this.sendRequest($.INFO,{extraHeaders:a,body:JSON.stringify(r)}),this._ua.emit("memberHangup",s.memberInfo)}receivePublishers(s){var a,o,t,n,h,_,d,g;const r={...this.memberList};(o=(a=s==null?void 0:s.plugindata)==null?void 0:a.data)==null||o.publishers.forEach(T=>{delete r[T.id],!this.memberList[T.id]&&!this.myFeedList.includes(T.id)&&T.clientID!==this.client_id&&(this.memberList[T.id]=new wT(T,this),this._attachMember(this.memberList[T.id]))}),((n=(t=s==null?void 0:s.plugindata)==null?void 0:t.data)==null?void 0:n.videoroom)==="synced"&&Object.keys(r).forEach(T=>{r[T].hangup(),delete this.memberList[T]}),this.publishers=(_=(h=s==null?void 0:s.plugindata)==null?void 0:h.data)==null?void 0:_.publishers,this.private_id=(g=(d=s==null?void 0:s.plugindata)==null?void 0:d.data)==null?void 0:g.private_id}receiveUnpublished(s){const r=this.memberList[s];r&&(r.hangup(),this._detachMember(r),delete this.memberList[s])}closeSession(){this.stream&&this.stream.getTracks().forEach(r=>{r.stop()}),Object.values(this.memberList).forEach(r=>{r.hangup(),this._detachMember(r)})}_receiveInviteResponse(s){if(z.debug("receiveInviteResponse()"),console.log("_receiveInviteResponse response",s),console.log("dialog",this._dialog),this._dialog&&s.status_code>=200&&s.status_code<=299&&!this.ackSent)if(console.log("IF 1 dialog"),this._dialog.id.call_id===s.call_id&&this._dialog.id.local_tag===s.from_tag&&this._dialog.id.remote_tag===s.to_tag){this.ackSent=!0,this.sendRequest($.ACK);return}else{const r=new la(this,s,"UAC");if(r.error!==void 0){z.debug(r.error);return}this.sendRequest($.ACK),this.sendRequest($.BYE);return}if(this.ackSent&&!this.publisherSubscribeSent){const r=JSON.parse(s.body);this.requestAudioAndVideoPermissions().then(()=>{this.session_id=r.session_id,this.handle_id=r.data.id,this.client_id=wf();const a={janus:"message",body:{request:"join",room:this.room_id,ptype:"publisher",display:this.display_name,clientID:this.client_id,opaque_id:this.opaque_id},handle_id:this.handle_id},o=["PTYPE: Publisher"];this.sendRequest($.SUBSCRIBE,{extraHeaders:o,body:JSON.stringify(a),eventHandlers:{onSuccessResponse:async t=>{var n,h;if(t.status_code===200){if(this.subscribeSent=!0,t.body)try{const _=JSON.parse(t.body)||{};(h=(n=_.plugindata)==null?void 0:n.data)!=null&&h.publishers&&this.receivePublishers(_)}catch(_){console.error(_)}this.lastTrickleReceived&&!this.isConfigureSent&&(this.addTracks(this.stream.getTracks()),this._ua.emit("changeMainVideoStream",{name:this.display_name,stream:this.stream}),this._sendConfigureMessage({audio:!0,video:!0}).then(()=>{}))}}}}),this.publisherSubscribeSent=!0})}if(this._is_canceled){s.status_code>=100&&s.status_code<200?this._request.cancel(this._cancel_reason):s.status_code>=200&&s.status_code<299&&this._acceptAndTerminate(s);return}if(!(this._status!==te.STATUS_INVITE_SENT&&this._status!==te.STATUS_1XX_RECEIVED))switch(!0){case/^100$/.test(s.status_code):this._status=te.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(s.status_code):{if(!s.to_tag){z.debug("1xx response received without to tag");break}if(s.hasHeader("contact")&&!this._createDialog(s,"UAC",!0))break;if(this._status=te.STATUS_1XX_RECEIVED,!s.body){this._progress("remote",s);break}const r={originator:"remote",type:"answer",sdp:s.body};z.debug('emit "sdp"'),this.emit("sdp",r);const a=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(a)).then(()=>this._progress("remote",s)).catch(o=>{z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)});break}case/^2[0-9]{2}$/.test(s.status_code):{if(this._status=te.STATUS_CONFIRMED,!s.body){this._acceptAndTerminate(s,400,$.causes.MISSING_SDP),this._failed("remote",s,$.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(s,"UAC"))break;break}default:{const r=Me.sipErrorCause(s.status_code);this._failed("remote",s,r)}}}_sendReinvite(s={}){z.debug("sendReinvite()");const r=Me.cloneArray(s.extraHeaders),a=Me.cloneObject(s.eventHandlers),o=s.rtcOfferConstraints||this._rtcOfferConstraints||null;let t=!1;r.push(`Contact: ${this._contact}`),r.push("Content-Type: application/sdp"),this._sessionTimers.running&&r.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher?"uac":"uas"}`),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",o)).then(_=>{_=this._mangleOffer(_);const d={originator:"local",type:"offer",sdp:_};z.debug('emit "sdp"'),this.emit("sdp",d),this.sendRequest($.INVITE,{extraHeaders:r,body:_,eventHandlers:{onSuccessResponse:g=>{n.call(this,g),t=!0},onErrorResponse:g=>{h.call(this,g)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{h()});function n(_){if(this._status===te.STATUS_TERMINATED||(this.sendRequest($.ACK),t))return;if(this._handleSessionTimersInIncomingResponse(_),_.body){if(!_.hasHeader("Content-Type")||_.getHeader("Content-Type").toLowerCase()!=="application/sdp"){h.call(this);return}}else{h.call(this);return}const d={originator:"remote",type:"answer",sdp:_.body};z.debug('emit "sdp"'),this.emit("sdp",d);const g=new RTCSessionDescription({type:"answer",sdp:d.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(g)).then(()=>{a.succeeded&&a.succeeded(_)}).catch(T=>{h.call(this),z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',T),this.emit("peerconnection:setremotedescriptionfailed",T)})}function h(_){a.failed&&a.failed(_)}}_sendUpdate(s={}){z.debug("sendUpdate()");const r=Me.cloneArray(s.extraHeaders),a=Me.cloneObject(s.eventHandlers),o=s.rtcOfferConstraints||this._rtcOfferConstraints||null,t=s.sdpOffer||!1;let n=!1;r.push(`Contact: ${this._contact}`),this._sessionTimers.running&&r.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher?"uac":"uas"}`),t?(r.push("Content-Type: application/sdp"),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",o)).then(d=>{d=this._mangleOffer(d);const g={originator:"local",type:"offer",sdp:d};z.debug('emit "sdp"'),this.emit("sdp",g),this.sendRequest($.UPDATE,{extraHeaders:r,body:d,eventHandlers:{onSuccessResponse:T=>{h.call(this,T),n=!0},onErrorResponse:T=>{_.call(this,T)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{_.call(this)})):this.sendRequest($.UPDATE,{extraHeaders:r,eventHandlers:{onSuccessResponse:d=>{h.call(this,d)},onErrorResponse:d=>{_.call(this,d)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}});function h(d){if(this._status!==te.STATUS_TERMINATED&&!n)if(this._handleSessionTimersInIncomingResponse(d),t){if(d.body){if(!d.hasHeader("Content-Type")||d.getHeader("Content-Type").toLowerCase()!=="application/sdp"){_.call(this);return}}else{_.call(this);return}const g={originator:"remote",type:"answer",sdp:d.body};z.debug('emit "sdp"'),this.emit("sdp",g);const T=new RTCSessionDescription({type:"answer",sdp:g.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(T)).then(()=>{a.succeeded&&a.succeeded(d)}).catch(E=>{_.call(this),z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),this.emit("peerconnection:setremotedescriptionfailed",E)})}else a.succeeded&&a.succeeded(d)}function _(d){a.failed&&a.failed(d)}}_acceptAndTerminate(s,r,a){z.debug("acceptAndTerminate()");const o=[];r&&(a=a||$.REASON_PHRASE[r]||"",o.push(`Reason: SIP ;cause=${r}; text="${a}"`)),(this._dialog||this._createDialog(s,"UAC"))&&(this.sendRequest($.ACK),this.sendRequest($.BYE,{extraHeaders:o})),this._status=te.STATUS_TERMINATED}_mangleOffer(s){if(!this._localHold&&!this._remoteHold)return s;if(s=Pt.parse(s),this._localHold&&!this._remoteHold){z.debug("mangleOffer() | me on hold, mangling offer");for(const r of s.media)aa.indexOf(r.type)!==-1&&(r.direction?r.direction==="sendrecv"?r.direction="sendonly":r.direction==="recvonly"&&(r.direction="inactive"):r.direction="sendonly")}else if(this._localHold&&this._remoteHold){z.debug("mangleOffer() | both on hold, mangling offer");for(const r of s.media)aa.indexOf(r.type)!==-1&&(r.direction="inactive")}else if(this._remoteHold){z.debug("mangleOffer() | remote on hold, mangling offer");for(const r of s.media)aa.indexOf(r.type)!==-1&&(r.direction?r.direction==="sendrecv"?r.direction="recvonly":r.direction==="recvonly"&&(r.direction="inactive"):r.direction="recvonly")}return Pt.write(s)}_setLocalMediaStatus(){let s=!0,r=!0;(this._localHold||this._remoteHold)&&(s=!1,r=!1),this._audioMuted&&(s=!1),this._videoMuted&&(r=!1),this._toggleMuteAudio(!s),this._toggleMuteVideo(!r)}_handleSessionTimersInIncomingRequest(s,r){if(!this._sessionTimers.enabled)return;let a;s.session_expires&&s.session_expires>=$.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=s.session_expires,a=s.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,a="uas"),r.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${a}`),this._sessionTimers.refresher=a==="uas",this._runSessionTimer()}_handleSessionTimersInIncomingResponse(s){if(!this._sessionTimers.enabled)return;let r;s.session_expires&&s.session_expires>=$.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=s.session_expires,r=s.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,r="uac"),this._sessionTimers.refresher=r==="uac",this._runSessionTimer()}_runSessionTimer(){const s=this._sessionTimers.currentExpires;this._sessionTimers.running=!0,clearTimeout(this._sessionTimers.timer),this._sessionTimers.refresher?this._sessionTimers.timer=setTimeout(()=>{this._status!==te.STATUS_TERMINATED&&this._isReadyToReOffer()&&(z.debug("runSessionTimer() | sending session refresh request"),this._sessionTimers.refreshMethod===$.UPDATE?this._sendUpdate():this._sendReinvite())},s*500):this._sessionTimers.timer=setTimeout(()=>{this._status!==te.STATUS_TERMINATED&&(z.warn("runSessionTimer() | timer expired, terminating the session"),this.terminate({cause:$.causes.REQUEST_TIMEOUT,status_code:408,reason_phrase:"Session Timer Expired"}))},s*1100)}_toggleMuteAudio(s){const r=this._connection.getSenders().filter(a=>a.track&&a.track.kind==="audio");for(const a of r)a.track.enabled=!s}_toggleMuteVideo(s){const r=this._connection.getSenders().filter(a=>a.track&&a.track.kind==="video");for(const a of r)a.track.enabled=!s}_newJanusSession(s,r){z.debug("newRTCSession()"),this._ua.newJanusSession(this,{originator:s,session:this,request:r})}_connecting(s){z.debug("session connecting"),z.debug('emit "connecting"'),this.emit("connecting",{request:s})}_progress(s,r){z.debug("session progress"),z.debug('emit "progress"'),this.emit("progress",{originator:s,response:r||null})}_accepted(s,r){z.debug("session accepted"),this._start_time=new Date,z.debug('emit "accepted"'),this.emit("accepted",{originator:s,response:r||null})}_confirmed(s,r){z.debug("session confirmed"),this._is_confirmed=!0,z.debug('emit "confirmed"'),this.emit("confirmed",{originator:s,ack:r||null})}_ended(s,r,a){z.debug("session ended"),this._end_time=new Date,this._close(),z.debug('emit "ended"'),this.emit("ended",{originator:s,message:r||null,cause:a})}_failed(s,r,a){z.debug("session failed"),z.debug('emit "_failed"'),this.emit("_failed",{originator:s,message:r||null,cause:a}),this._close(),z.debug('emit "failed"'),this.emit("failed",{originator:s,message:r||null,cause:a})}_onhold(s){z.debug("session onhold"),this._setLocalMediaStatus(),z.debug('emit "hold"'),this.emit("hold",{originator:s})}_onunhold(s){z.debug("session onunhold"),this._setLocalMediaStatus(),z.debug('emit "unhold"'),this.emit("unhold",{originator:s})}_onmute({audio:s,video:r}){z.debug("session onmute"),this._setLocalMediaStatus(),z.debug('emit "muted"'),this.emit("muted",{audio:s,video:r})}_onunmute({audio:s,video:r}){z.debug("session onunmute"),this._setLocalMediaStatus(),z.debug('emit "unmuted"'),this.emit("unmuted",{audio:s,video:r})}}class or{constructor(s){if(this.headers={},s.length>0){let r=!1;const a=s.split(`\r
136
- `),o=a.shift().split(/\s/);this.protocol=o[0],this.ident=o[1],this.code=o.length>3?parseInt(o[2]):0,this.method=o.length>3?o[3]:o[2],this.body="";for(const t of a){if(t==`-------${this.ident}$`)break;if(t===""){r=!0;continue}if(t&&r)this.body+=`${t}\r
137
- `;else{const n=t.split(": ");this.addHeader(n[0],n[1].trim())}}}else this.ident=Me.createRandomToken(12),this.protocol="MSRP"}addHeader(s,r){this.headers[s]=r}getHeader(s){return this.headers[s]}toString(){let s=`${this.protocol} ${this.ident} ${this.code} ${this.method}`.replaceAll(/null\s|undefined\s/ig,"")+`\r
138
- `;for(const r in this.headers)s+=`${r}: ${this.headers[r]}\r
134
+ `,Rh.send(a)}const hT=ze(Ih);var nl={};const hr=yt(),Cn=De,Jo=Qt(),Rf=ys(),zo=Vu,Xo=As;nl.settings={authorization_user:null,password:null,realm:null,ha1:null,authorization_jwt:null,display_name:null,uri:null,contact_uri:null,instance_id:null,use_preloaded_route:!1,session_timers:!0,session_timers_refresh_method:Cn.UPDATE,session_timers_force_refresher:!1,no_answer_timeout:60,register:!0,register_expires:600,registrar_server:null,sockets:null,connection_recovery_max_interval:Cn.CONNECTION_RECOVERY_MAX_INTERVAL,connection_recovery_min_interval:Cn.CONNECTION_RECOVERY_MIN_INTERVAL,extra_headers:null,via_host:`${hr.createRandomToken(12)}.invalid`};const ia={mandatory:{sockets(c){const s=[];if(zo.isSocket(c))s.push({socket:c});else if(Array.isArray(c)&&c.length)for(const n of c)Object.prototype.hasOwnProperty.call(n,"socket")&&zo.isSocket(n.socket)?s.push(n):zo.isSocket(n)&&s.push({socket:n});else return;return s},uri(c){/^sip:/i.test(c)||(c=`${Cn.SIP}:${c}`);const s=Rf.parse(c);if(s)return s.user?s:void 0}},optional:{authorization_user(c){if(Jo.parse(`"${c}"`,"quoted_string")!==-1)return c},authorization_jwt(c){if(typeof c=="string")return c},user_agent(c){if(typeof c=="string")return c},connection_recovery_max_interval(c){if(hr.isDecimal(c)){const s=Number(c);if(s>0)return s}},connection_recovery_min_interval(c){if(hr.isDecimal(c)){const s=Number(c);if(s>0)return s}},contact_uri(c){if(typeof c=="string"){const s=Jo.parse(c,"SIP_URI");if(s!==-1)return s}},display_name(c){return c},instance_id(c){if(/^uuid:/i.test(c)&&(c=c.substr(5)),Jo.parse(c,"uuid")!==-1)return c},no_answer_timeout(c){if(hr.isDecimal(c)){const s=Number(c);if(s>0)return s}},session_timers(c){if(typeof c=="boolean")return c},session_timers_refresh_method(c){if(typeof c=="string"&&(c=c.toUpperCase(),c===Cn.INVITE||c===Cn.UPDATE))return c},session_timers_force_refresher(c){if(typeof c=="boolean")return c},password(c){return String(c)},realm(c){return String(c)},ha1(c){return String(c)},register(c){if(typeof c=="boolean")return c},register_expires(c){if(hr.isDecimal(c)){const s=Number(c);if(s>0)return s}},registrar_server(c){/^sip:/i.test(c)||(c=`${Cn.SIP}:${c}`);const s=Rf.parse(c);if(s)return s.user?void 0:s},use_preloaded_route(c){if(typeof c=="boolean")return c},extra_headers(c){const s=[];if(Array.isArray(c)&&c.length)for(const n of c)typeof n=="string"&&s.push(n);else return;return s}}};nl.load=(c,s)=>{for(const n in ia.mandatory)if(s.hasOwnProperty(n)){const a=s[n],o=ia.mandatory[n](a);if(o!==void 0)c[n]=o;else throw new Xo.ConfigurationError(n,a)}else throw new Xo.ConfigurationError(n);for(const n in ia.optional)if(s.hasOwnProperty(n)){const a=s[n];if(hr.isEmpty(a))continue;const o=ia.optional[n](a);if(o!==void 0)c[n]=o;else throw new Xo.ConfigurationError(n,a)}};const _T=ft.EventEmitter,dT=ut,mt=De,pT=ng,If=Sh,bf=jg,wf=Wg,Qo=Tr,mT=yh,la=yt(),gT=As,TT=ys(),vT=Ah,Zo=It,ET=Ih,eu=nl,Ve=new dT("UA"),vt={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2};var bh=class extends _T{static get C(){return vt}constructor(s){if(Ve.debug("new() [configuration:%o]",s),super(),this._cache={credentials:{}},this._configuration=Object.assign({},eu.settings),this._dynConfiguration={},this._dialogs={},this._applicants={},this._sessions={},this._transport=null,this._contact=null,this._status=vt.STATUS_INIT,this._error=null,this._transactions={nist:{},nict:{},ist:{},ict:{}},this._data={},this._closeTimer=null,s===void 0)throw new TypeError("Not enough arguments");try{this._loadConfig(s)}catch(n){throw this._status=vt.STATUS_NOT_READY,this._error=vt.CONFIGURATION_ERROR,n}this._registrator=new pT(this)}get C(){return vt}get status(){return this._status}get contact(){return this._contact}get configuration(){return this._configuration}get transport(){return this._transport}start(){Ve.debug("start()"),this._status===vt.STATUS_INIT?this._transport.connect():this._status===vt.STATUS_USER_CLOSED?(Ve.debug("restarting UA"),this._closeTimer!==null&&(clearTimeout(this._closeTimer),this._closeTimer=null,this._transport.disconnect()),this._status=vt.STATUS_INIT,this._transport.connect()):this._status===vt.STATUS_READY?Ve.debug("UA is in READY status, not restarted"):Ve.debug("ERROR: connection is down, Auto-Recovery system is trying to reconnect"),this._dynConfiguration.register=this._configuration.register}register(){Ve.debug("register()"),this._dynConfiguration.register=!0,this._registrator.register()}unregister(s){Ve.debug("unregister()"),this._dynConfiguration.register=!1,this._registrator.unregister(s)}registrator(){return this._registrator}isRegistered(){return this._registrator.registered}isConnected(){return this._transport.isConnected()}call(s,n){Ve.debug("call()");const a=new If(this);return a.connect(s,n),a}sendMessage(s,n,a){Ve.debug("sendMessage()");const o=new bf(this);return o.send(s,n,a),o}sendOptions(s,n,a){Ve.debug("sendOptions()");const o=new wf(this);return o.send(s,n,a),o}terminateSessions(s){Ve.debug("terminateSessions()");for(const n in this._sessions)this._sessions[n].isEnded()||this._sessions[n].terminate(s)}stop(){if(Ve.debug("stop()"),this._dynConfiguration={},this._status===vt.STATUS_USER_CLOSED){Ve.debug("UA already closed");return}this._registrator.close();const s=Object.keys(this._sessions).length;for(const a in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,a)){Ve.debug(`closing session ${a}`);try{this._sessions[a].terminate()}catch{}}for(const a in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,a))try{this._applicants[a].close()}catch{}this._status=vt.STATUS_USER_CLOSED,Object.keys(this._transactions.nict).length+Object.keys(this._transactions.nist).length+Object.keys(this._transactions.ict).length+Object.keys(this._transactions.ist).length===0&&s===0?this._transport.disconnect():this._closeTimer=setTimeout(()=>{this._closeTimer=null,this._transport.disconnect()},2e3)}normalizeTarget(s){return la.normalizeTarget(s,this._configuration.hostport_params)}get(s){switch(s){case"authorization_user":return this._configuration.authorization_user;case"realm":return this._configuration.realm;case"ha1":return this._configuration.ha1;case"authorization_jwt":return this._configuration.authorization_jwt;default:Ve.warn('get() | cannot get "%s" parameter in runtime',s);return}}set(s,n){switch(s){case"authorization_user":{this._configuration.authorization_user=String(n);break}case"password":{this._configuration.password=String(n);break}case"realm":{this._configuration.realm=String(n);break}case"ha1":{this._configuration.ha1=String(n),this._configuration.password=null;break}case"authorization_jwt":{this._configuration.authorization_jwt=String(n);break}case"display_name":{this._configuration.display_name=n;break}default:return Ve.warn('set() | cannot set "%s" parameter in runtime',s),!1}return!0}newTransaction(s){this._transactions[s.type][s.id]=s,this.emit("newTransaction",{transaction:s})}destroyTransaction(s){delete this._transactions[s.type][s.id],this.emit("transactionDestroyed",{transaction:s})}newDialog(s){this._dialogs[s.id]=s}destroyDialog(s){delete this._dialogs[s.id]}newMessage(s,n){this._applicants[s]=s,this.emit("newMessage",n)}newOptions(s,n){this._applicants[s]=s,this.emit("newOptions",n)}destroyMessage(s){delete this._applicants[s]}newRTCSession(s,n){this._sessions[s.id]=s,this.emit("newRTCSession",n)}destroyRTCSession(s){delete this._sessions[s.id]}registered(s){this.emit("registered",s)}unregistered(s){this.emit("unregistered",s)}registrationFailed(s){this.emit("registrationFailed",s)}receiveRequest(s){const n=s.method;if(s.ruri.user!==this._configuration.uri.user&&s.ruri.user!==this._contact.uri.user){Ve.debug("Request-URI does not point to us"),s.method!==mt.ACK&&s.reply_sl(404);return}if(s.ruri.scheme===mt.SIPS){s.reply_sl(416);return}if(Qo.checkTransaction(this,s))return;if(n===mt.INVITE?new Qo.InviteServerTransaction(this,this._transport,s):n!==mt.ACK&&n!==mt.CANCEL&&new Qo.NonInviteServerTransaction(this,this._transport,s),n===mt.OPTIONS){if(this.listeners("newOptions").length===0){s.reply(200);return}new wf(this).init_incoming(s)}else if(n===mt.MESSAGE){if(this.listeners("newMessage").length===0){s.reply(405);return}new bf(this).init_incoming(s)}else if(n===mt.INVITE&&!s.to_tag&&this.listeners("newRTCSession").length===0){s.reply(405);return}let a,o;if(s.to_tag)a=this._findDialog(s.call_id,s.from_tag,s.to_tag),a?a.receiveRequest(s):n===mt.NOTIFY?(o=this._findSession(s),o?o.receiveRequest(s):(Ve.debug("received NOTIFY request for a non existent subscription"),s.reply(481,"Subscription does not exist"))):n!==mt.ACK&&s.reply(481);else switch(n){case mt.INVITE:if(window.RTCPeerConnection)if(s.hasHeader("replaces")){const t=s.replaces;a=this._findDialog(t.call_id,t.from_tag,t.to_tag),a?(o=a.owner,o.isEnded()?s.reply(603):o.receiveRequest(s)):s.reply(481)}else o=new If(this),o.init_incoming(s);else Ve.warn("INVITE received but WebRTC is not supported"),s.reply(488);break;case mt.BYE:s.reply(481);break;case mt.CANCEL:o=this._findSession(s),o?o.receiveRequest(s):Ve.debug("received CANCEL request for a non existent session");break;case mt.ACK:break;case mt.NOTIFY:this.emit("sipEvent",{event:s.event,request:s}),s.reply(200);break;default:s.reply(405);break}}_findSession({call_id:s,from_tag:n,to_tag:a}){const o=s+n,t=this._sessions[o],r=s+a,_=this._sessions[r];return t||_||null}_findDialog(s,n,a){let o=s+n+a,t=this._dialogs[o];return t||(o=s+a+n,t=this._dialogs[o],t||null)}_loadConfig(s){try{eu.load(this._configuration,s)}catch(o){throw o}this._configuration.display_name===0&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=la.newUUID()),this._configuration.jssip_id=la.createRandomToken(5);const n=this._configuration.uri.clone();n.user=null,this._configuration.hostport_params=n.toString().replace(/^sip:/i,"");try{this._transport=new mT(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=ST.bind(this),this._transport.onconnect=yT.bind(this),this._transport.ondisconnect=AT.bind(this),this._transport.ondata=CT.bind(this)}catch(o){throw Ve.warn(o),new gT.ConfigurationError("sockets",this._configuration.sockets)}if(delete this._configuration.sockets,this._configuration.authorization_user||(this._configuration.authorization_user=this._configuration.uri.user),!this._configuration.registrar_server){const o=this._configuration.uri.clone();o.user=null,o.clearParams(),o.clearHeaders(),this._configuration.registrar_server=o}this._configuration.no_answer_timeout*=1e3,this._configuration.contact_uri?this._configuration.via_host=this._configuration.contact_uri.host:this._configuration.contact_uri=new TT("sip",la.createRandomToken(8),this._configuration.via_host,null,{transport:"ws"}),this._contact={pub_gruu:null,temp_gruu:null,uri:this._configuration.contact_uri,toString(o={}){const t=o.anonymous||null,r=o.outbound||null;let _="<";return t?_+=this.temp_gruu||"sip:anonymous@anonymous.invalid;transport=ws":_+=this.pub_gruu||this.uri.toString(),r&&(t?!this.temp_gruu:!this.pub_gruu)&&(_+=";ob"),_+=">",_}};const a=["authorization_user","password","realm","ha1","authorization_jwt","display_name","register"];for(const o in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,o)&&(a.indexOf(o)!==-1?Object.defineProperty(this._configuration,o,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,o,{writable:!1,configurable:!1}));Ve.debug("configuration parameters after validation:");for(const o in this._configuration)if(Object.prototype.hasOwnProperty.call(eu.settings,o))switch(o){case"uri":case"registrar_server":Ve.debug(`- ${o}: ${this._configuration[o]}`);break;case"password":case"ha1":case"authorization_jwt":Ve.debug(`- ${o}: NOT SHOWN`);break;default:Ve.debug(`- ${o}: ${JSON.stringify(this._configuration[o])}`)}}};function ST(c){this.emit("connecting",c)}function yT(c){this._status!==vt.STATUS_USER_CLOSED&&(this._status=vt.STATUS_READY,this._error=null,this.emit("connected",c),this._dynConfiguration.register&&this._registrator.register())}function AT(c){const s=["nict","ict","nist","ist"];for(const n of s)for(const a in this._transactions[n])Object.prototype.hasOwnProperty.call(this._transactions[n],a)&&this._transactions[n][a].onTransportError();this.emit("disconnected",c),this._registrator.onTransportClosed(),this._status!==vt.STATUS_USER_CLOSED&&(this._status=vt.STATUS_NOT_READY,this._error=vt.NETWORK_ERROR)}function CT(c){const s=c.transport;let n=c.message;if(n=vT.parseMessage(n,this),!!n&&!(this._status===vt.STATUS_USER_CLOSED&&n instanceof Zo.IncomingRequest)&&ET(n,this,s)){if(n instanceof Zo.IncomingRequest)n.transport=s,this.receiveRequest(n);else if(n instanceof Zo.IncomingResponse){let a;switch(n.method){case mt.INVITE:a=this._transactions.ict[n.via_branch],a&&a.receiveResponse(n);break;case mt.ACK:break;default:a=this._transactions.nict[n.via_branch],a&&a.receiveResponse(n);break}}}}const RT=ze(bh);var dt=[];for(var tu=0;tu<256;++tu)dt.push((tu+256).toString(16).slice(1));function IT(c,s=0){return(dt[c[s+0]]+dt[c[s+1]]+dt[c[s+2]]+dt[c[s+3]]+"-"+dt[c[s+4]]+dt[c[s+5]]+"-"+dt[c[s+6]]+dt[c[s+7]]+"-"+dt[c[s+8]]+dt[c[s+9]]+"-"+dt[c[s+10]]+dt[c[s+11]]+dt[c[s+12]]+dt[c[s+13]]+dt[c[s+14]]+dt[c[s+15]]).toLowerCase()}var aa,bT=new Uint8Array(16);function wT(){if(!aa&&(aa=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!aa))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return aa(bT)}var OT=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const Of={randomUUID:OT};function Df(c,s,n){if(Of.randomUUID&&!s&&!c)return Of.randomUUID();c=c||{};var a=c.random||(c.rng||wT)();if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,s){n=n||0;for(var o=0;o<16;++o)s[n+o]=a[o];return s}return IT(a)}var ke=yt();const Ts=ze(ke),su=new Ga("Dialog"),Fs={STATUS_EARLY:1,STATUS_CONFIRMED:2,STATUS_TERMINATED:3};class oa{static get C(){return Fs}constructor(s,n,a,o=Fs.STATUS_CONFIRMED){if(this._owner=s,this._ua=s._ua,this._uac_pending_reply=!1,this._uas_pending_reply=!1,n instanceof It.IncomingResponse&&(o=n.status_code<200?Fs.STATUS_EARLY:Fs.STATUS_CONFIRMED),a==="UAS"){this._id={call_id:n.call_id,local_tag:n.to_tag,remote_tag:n.from_tag,toString(){return this.call_id+this.local_tag+this.remote_tag}},this._state=o,this._remote_seqnum=n.cseq,this._local_uri=n.parseHeader("to").uri,this._remote_uri=n.parseHeader("from").uri;let t=n.getHeaders("to")[0].split(";")[0];t=t.match(/<([^>]*)>/)[1],this._remote_target=t,this._route_set=n.getHeaders("record-route"),this._ack_seqnum=this._remote_seqnum}else if(a==="UAC"){this._id={call_id:n.call_id,local_tag:n.from_tag,remote_tag:n.to_tag,toString(){return this.call_id+this.local_tag+this.remote_tag}},this._state=o,this._local_seqnum=n.cseq,this._local_uri=n.parseHeader("from").uri,this._remote_uri=n.parseHeader("to").uri;let t=n.getHeaders("to")[0].split(";")[0];t=t.match(/<([^>]*)>/)[1],this._remote_target=t,this._route_set=n.getHeaders("record-route").reverse(),this._ack_seqnum=null}this._ua.newDialog(this),su.debug(`new ${a} dialog created with status ${this._state===Fs.STATUS_EARLY?"EARLY":"CONFIRMED"}`)}get id(){return this._id}get local_seqnum(){return this._local_seqnum}set local_seqnum(s){this._local_seqnum=s}get owner(){return this._owner}get uac_pending_reply(){return this._uac_pending_reply}set uac_pending_reply(s){this._uac_pending_reply=s}get uas_pending_reply(){return this._uas_pending_reply}isTerminated(){return this._status===Fs.STATUS_TERMINATED}update(s,n){this._state=Fs.STATUS_CONFIRMED,su.debug(`dialog ${this._id.toString()} changed to CONFIRMED state`),n==="UAC"&&(this._route_set=s.getHeaders("record-route").reverse())}terminate(){su.debug(`dialog ${this._id.toString()} deleted`),this._ua.destroyDialog(this),this._state=Fs.STATUS_TERMINATED}sendRequest(s,n={}){const a=Ts.cloneArray(n.extraHeaders),o=Ts.cloneObject(n.eventHandlers),t=n.body||null,r=this._createRequest(s,a,t);return o.onAuthenticated=()=>{this._local_seqnum+=1},new ug(this,r,o).send(),r}receiveRequest(s){this._checkInDialogRequest(s)&&(s.method===L.ACK&&this._ack_seqnum!==null?this._ack_seqnum=null:s.method===L.INVITE&&(this._ack_seqnum=s.cseq),this._owner.receiveRequest(s))}_createRequest(s,n,a){n=Ts.cloneArray(n),this._local_seqnum||(this._local_seqnum=Math.floor(Math.random()*1e4));const o=s===L.CANCEL||s===L.ACK?this._local_seqnum:this._local_seqnum+=1;return new It.OutgoingRequest(s,this._remote_target,this._ua,{cseq:o,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,a)}_checkInDialogRequest(s){if(!this._remote_seqnum)this._remote_seqnum=s.cseq;else if(s.cseq<this._remote_seqnum)if(s.method===L.ACK){if(this._ack_seqnum===null||s.cseq!==this._ack_seqnum)return!1}else return s.reply(500),!1;else s.cseq>this._remote_seqnum&&(this._remote_seqnum=s.cseq);if(s.method===L.INVITE||s.method===L.UPDATE&&s.body){if(this._uac_pending_reply===!0)s.reply(491);else if(this._uas_pending_reply===!0){const n=(Math.random()*10|0)+1;return s.reply(500,null,[`Retry-After:${n}`]),!1}else{this._uas_pending_reply=!0;const n=()=>{(s.server_transaction.state===Bt.C.STATUS_ACCEPTED||s.server_transaction.state===Bt.C.STATUS_COMPLETED||s.server_transaction.state===Bt.C.STATUS_TERMINATED)&&(s.server_transaction.removeListener("stateChanged",n),this._uas_pending_reply=!1)};s.server_transaction.on("stateChanged",n)}s.hasHeader("contact")&&s.server_transaction.on("stateChanged",()=>{s.server_transaction.state===Bt.C.STATUS_ACCEPTED&&(this._remote_target=s.parseHeader("contact").uri)})}else s.method===L.NOTIFY&&s.hasHeader("contact")&&s.server_transaction.on("stateChanged",()=>{s.server_transaction.state===Bt.C.STATUS_COMPLETED&&(this._remote_target=s.parseHeader("contact").uri)});return!0}}class DT{constructor(s,n){Wt(this,"plugin",null);Wt(this,"rtcpPeer",null);Wt(this,"handleId",0);Wt(this,"info",null);Wt(this,"joinResult",null);Wt(this,"state",{});Wt(this,"stream",null);Wt(this,"loaded",!1);Wt(this,"aTracks",[]);Wt(this,"vTracks",[]);this.info=s,this.plugin=n,this.rtcpPeer=new RTCPeerConnection({iceServers:[]})}get memberInfo(){return{stream:this.stream,joinResult:this.joinResult,sender:this.handleId,type:"subscriber",name:this.info.display,state:this.state,id:this.handleId}}updateMemberState(s){var n;this.state={...this.state,...s||{}},(n=this.plugin)==null||n.session.emit("member:update",this.memberInfo)}updateMemberStateFromMessage(s){var t,r,_,h;const n=(r=(t=s==null?void 0:s.plugindata)==null?void 0:t.data)==null?void 0:r.newStatePublisher,o=((h=(_=s==null?void 0:s.plugindata)==null?void 0:_.data)==null?void 0:h.publisher_state).find(d=>d.id===n);this.updateMemberState(o==null?void 0:o.state)}hangup(){this.rtcpPeer&&(this.rtcpPeer.close(),this.rtcpPeer=null),this.stream&&this.stream.getTracks().forEach(s=>{s.stop()})}}class is{static canGetMediaDevices(){return!navigator.mediaDevices||!navigator.mediaDevices.enumerateDevices?(console.log("enumerateDevices() not supported."),!1):!0}static async getDevices(s){return is.canGetMediaDevices()?(await navigator.mediaDevices.enumerateDevices()).filter(a=>a.kind===s):[]}static async getMicrophoneList(){return(await is.getDevices("audioinput")).map((n,a)=>({...n,deviceId:n.deviceId,label:n.label||`microphone ${a+1}`,kind:n.kind,groupId:n.groupId}))}static async getSpeakerList(){return(await is.getDevices("audiooutput")).map((n,a)=>({...n,deviceId:n.deviceId,label:n.label||`speaker ${a+1}`,kind:n.kind,groupId:n.groupId}))}static async getCameraList(){return(await is.getDevices("videoinput")).map((n,a)=>({...n,deviceId:n.deviceId,label:n.label||`camera ${a+1}`,kind:n.kind,groupId:n.groupId}))}static stopStreamTracks(s){s&&s.getTracks().forEach(n=>{n.stop()})}static async getMediaFromInputs({videoInput:s,audioInput:n}){let a,o;s==="default"?a=!0:s&&s!=="default"&&(a={deviceId:{exact:s}}),n==="default"?o=!0:n&&n!=="default"&&(o={deviceId:{exact:n}});const t={audio:o,video:a};return is.getUserMedia(t)}static async getUserMedia(s){return await navigator.mediaDevices.getUserMedia(s)}static async changeAudioOutput(s,n){if(!(!s||!n))if(console.log("changeAudioOutput element",s),console.log("changeAudioOutput deviceId",n),typeof s.sinkId<"u")try{await s.setSinkId(n),console.log(`Success, audio output device attached: ${n}`)}catch(a){let o=a;a.name==="SecurityError"&&(o=`You need to use HTTPS for selecting audio output device: ${a}`),console.error(o)}else console.warn("Browser does not support output device selection.")}static toggleAudioMute(s){const n=s.getAudioTracks();if(n.length!==0)return n.forEach(a=>{a.enabled=!a.enabled}),n[0].enabled}static toggleVideoMute(s){const n=s.getVideoTracks();if(n.length!==0)return n.forEach(a=>{a.enabled=!a.enabled}),n[0].enabled}static async getStream(s={video:!0,audio:!0}){try{const n=await navigator.mediaDevices.getUserMedia(s);let a=n.getTracks();return s.video?a=n.getVideoTracks():s.audio&&(a=n.getAudioTracks()),a.length===0?{stream:n,track:null}:{stream:n,track:a[0]}}catch(n){return console.warn(n),{stream:null,track:null}}}}var NT=ys();const pr=ze(NT),Jt={LEAVE:"Leave",AUDIO_CHANGE:"AudioChange",VIDEO_CHANGE:"VideoChange",STATE:"State",ICE:"Ice",CONFIGURE:"Configure",TRICKLE:"Trickle",SUBSCRIBER:"Subscriber",PUBLISHER:"Publisher"},z=new Ga("JanusSession"),UT="/opt/recordings/",te={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_ACK:6,STATUS_CANCELED:7,STATUS_TERMINATED:8,STATUS_CONFIRMED:9},ua=["audio","video"];class $a extends ft.EventEmitter{static get C(){return te}constructor(s){z.debug("new"),super(),console.log("constructor call"),this._id=null,this._ua=s,this._status=te.STATUS_NULL,this._dialog=null,this._earlyDialogs={},this._contact=null,this._from_tag=null,this._to_tag=null,this.lastTransaction=0,this._connection=null,this._connectionPromiseQueue=Promise.resolve(),this._request=null,this._is_canceled=!1,this._cancel_reason="",this._is_confirmed=!1,this._late_sdp=!1,this._rtcOfferConstraints=null,this._rtcAnswerConstraints=null,this._localMediaStream=null,this._localMediaStreamLocallyGenerated=!1,this._rtcReady=!0,this._iceReady=!1,this._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},this._direction=null,this._local_identity=null,this._remote_identity=null,this._start_time=null,this._end_time=null,this._audioMuted=!1,this._videoMuted=!1,this._localHold=!1,this._remoteHold=!1,this._sessionTimers={enabled:this._ua.configuration.session_timers,refreshMethod:this._ua.configuration.session_timers_refresh_method,defaultExpires:L.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},this._referSubscribers={},this._candidates=[],this.publishers=[],this.private_id=null,this.memberList={},this.myFeedList=[],this.display_name="",this.stunServers=[{urls:"stun:turn.voicenter.co",credential:"kxsjahnsdjns3eds23esd",username:"turn2es21e"}];const n=Df().replace(/-/g,"").slice(0,12);this.opaque_id=`videoroomtest-${n}`,this._data={},this.isAudioOn=!0,this.isVideoOn=!0}get C(){return te}get causes(){return L.causes}get id(){return this._id}get connection(){return this._connection}get contact(){return this._contact}get direction(){return this._direction}get local_identity(){return this._local_identity}get remote_identity(){return this._remote_identity}get start_time(){return this._start_time}get end_time(){return this._end_time}get data(){return this._data}set data(s){this._data=s}get status(){return this._status}isInProgress(){switch(this._status){case te.STATUS_NULL:case te.STATUS_INVITE_SENT:case te.STATUS_1XX_RECEIVED:case te.STATUS_INVITE_RECEIVED:case te.STATUS_WAITING_FOR_ANSWER:return!0;default:return!1}}isEstablished(){switch(this._status){case te.STATUS_ANSWERED:case te.STATUS_WAITING_FOR_ACK:case te.STATUS_CONFIRMED:return!0;default:return!1}}isEnded(){switch(this._status){case te.STATUS_CANCELED:case te.STATUS_TERMINATED:return!0;default:return!1}}isMuted(){return{audio:this._audioMuted,video:this._videoMuted}}isOnHold(){return{local:this._localHold,remote:this._remoteHold}}getPTypeHeader(s){return`PTYPE: ${s}`}connect(s,n,a={},o){z.debug("connect()"),this.display_name=n;const t=s,r=ke.cloneObject(a.eventHandlers),_=ke.cloneArray(a.extraHeaders),h=ke.cloneObject(a.mediaConstraints,{audio:!0,video:!0}),d=a.mediaStream||null,g=ke.cloneObject(a.pcConfig,{iceServers:[]}),T=a.rtcConstraints||null,E=a.rtcOfferConstraints||null;if(this._rtcOfferConstraints=E,this._rtcAnswerConstraints=a.rtcAnswerConstraints||null,this._data=a.data||this._data,s===void 0)throw new TypeError("Not enough arguments");if(this._status!==te.STATUS_NULL)throw new Vs.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new Vs.NotSupportedError("WebRTC not supported");if(console.log("target",s),s=this._ua.normalizeTarget(s),console.log("normalizeTarget target",s),this.room_id=s.user,!s)throw new TypeError(`Invalid target: ${t}`);this._sessionTimers.enabled&&ke.isDecimal(a.sessionTimersExpires)&&(a.sessionTimersExpires>=L.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=a.sessionTimersExpires:this._sessionTimers.defaultExpires=L.SESSION_EXPIRES);for(const C in r)Object.prototype.hasOwnProperty.call(r,C)&&this.on(C,r[C]);this._from_tag=ke.newTag();const y=a.anonymous||!1,A={from_tag:this._from_tag};this._contact=this._ua.contact.toString({anonymous:y,outbound:!0}),y?(A.from_display_name="Anonymous",A.from_uri=new pr("sip","anonymous","anonymous.invalid"),_.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`),_.push("Privacy: id")):a.fromUserName&&(A.from_uri=new pr("sip",a.fromUserName,this._ua.configuration.uri.host),_.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`)),a.fromDisplayName&&(A.from_display_name=a.fromDisplayName),_.push(`Contact: ${this._contact}`),_.push("Content-Type: application/json"),this._sessionTimers.enabled&&_.push(`Session-Expires: ${this._sessionTimers.defaultExpires}${this._ua.configuration.session_timers_force_refresher?";refresher=uac":""}`),this._request=new It.InitialOutgoingInviteRequest(s,this._ua,A,_),this._id=this._request.call_id+this._from_tag,this._createRTCConnection(g,T),this._direction="outgoing",this._local_identity=this._request.from,this._remote_identity=this._request.to,console.log("this._remote_identity",this._remote_identity),o&&o(this),this._newJanusSession("local",this._request),this._sendInitialRequest(h,E,d)}init_incoming(s,n){z.debug("init_incoming()");let a;const o=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;if(s.body&&o!=="application/sdp"){s.reply(415);return}if(this._status=te.STATUS_INVITE_RECEIVED,this._from_tag=s.from_tag,this._id=s.call_id+this._from_tag,this._request=s,this._contact=this._ua.contact.toString(),s.hasHeader("expires")&&(a=s.getHeader("expires")*1e3),s.to_tag=ke.newTag(),!this._createDialog(s,"UAS",!0)){s.reply(500,"Missing Contact header field");return}s.body?this._late_sdp=!1:this._late_sdp=!0,this._status=te.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(()=>{s.reply(408),this._failed("local",null,L.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),a&&(this._timers.expiresTimer=setTimeout(()=>{this._status===te.STATUS_WAITING_FOR_ANSWER&&(s.reply(487),this._failed("system",null,L.causes.EXPIRES))},a)),this._direction="incoming",this._local_identity=s.to,this._remote_identity=s.from,n&&n(this),this._newJanusSession("remote",s),this._status!==te.STATUS_TERMINATED&&(s.reply(180,null,[`Contact: ${this._contact}`]),this._progress("local",null))}answer(s={}){z.debug("answer()");const n=this._request,a=ke.cloneArray(s.extraHeaders),o=ke.cloneObject(s.mediaConstraints),t=s.mediaStream||null,r=ke.cloneObject(s.pcConfig,{iceServers:[]}),_=s.rtcConstraints||null,h=s.rtcAnswerConstraints||null,d=ke.cloneObject(s.rtcOfferConstraints);let g,T=!1,E=!1,y=!1,A=!1;if(this._rtcAnswerConstraints=h,this._rtcOfferConstraints=s.rtcOfferConstraints||null,this._data=s.data||this._data,this._direction!=="incoming")throw new Vs.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==te.STATUS_WAITING_FOR_ANSWER)throw new Vs.InvalidStateError(this._status);if(this._sessionTimers.enabled&&ke.isDecimal(s.sessionTimersExpires)&&(s.sessionTimersExpires>=L.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=s.sessionTimersExpires:this._sessionTimers.defaultExpires=L.SESSION_EXPIRES),this._status=te.STATUS_ANSWERED,!this._createDialog(n,"UAS")){n.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),a.unshift(`Contact: ${this._contact}`);const C=n.parseSDP();Array.isArray(C.media)||(C.media=[C.media]);for(const I of C.media)I.type==="audio"&&(T=!0,(!I.direction||I.direction==="sendrecv")&&(y=!0)),I.type==="video"&&(E=!0,(!I.direction||I.direction==="sendrecv")&&(A=!0));if(t&&o.audio===!1){g=t.getAudioTracks();for(const I of g)t.removeTrack(I)}if(t&&o.video===!1){g=t.getVideoTracks();for(const I of g)t.removeTrack(I)}!t&&o.audio===void 0&&(o.audio=y),!t&&o.video===void 0&&(o.video=A),!t&&!T&&!d.offerToReceiveAudio&&(o.audio=!1),!t&&!E&&!d.offerToReceiveVideo&&(o.video=!1),this._createRTCConnection(r,_),Promise.resolve().then(()=>{if(t)return t;if(o.audio||o.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(o).catch(I=>{throw this._status===te.STATUS_TERMINATED?new Error("terminated"):(n.reply(480),this._failed("local",null,L.causes.USER_DENIED_MEDIA_ACCESS),z.warn('emit "getusermediafailed" [error:%o]',I),this.emit("getusermediafailed",I),new Error("getUserMedia() failed"))})}).then(I=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");this._localMediaStream=I,I&&I.getTracks().forEach(H=>{this._connection.addTrack(H,I)})}).then(()=>{if(this._late_sdp)return;const I={originator:"remote",type:"offer",sdp:n.body};z.debug('emit "sdp"'),this.emit("sdp",I);const H=new RTCSessionDescription({type:"offer",sdp:I.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(H)).catch($=>{throw n.reply(488),this._failed("system",null,L.causes.WEBRTC_ERROR),z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',$),this.emit("peerconnection:setremotedescriptionfailed",$),new Error("peerconnection.setRemoteDescription() failed")}),this._connectionPromiseQueue}).then(()=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");return this._connecting(n),this._late_sdp?this._createLocalDescription("offer",this._rtcOfferConstraints).catch(()=>{throw n.reply(500),new Error("_createLocalDescription() failed")}):this._createLocalDescription("answer",h).catch(()=>{throw n.reply(500),new Error("_createLocalDescription() failed")})}).then(I=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");this._handleSessionTimersInIncomingRequest(n,a),n.reply(200,null,a,I,()=>{this._status=te.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(n,I),this._setACKTimer(),this._accepted("local")},()=>{this._failed("system",null,L.causes.CONNECTION_ERROR)})}).catch(I=>{this._status!==te.STATUS_TERMINATED&&z.warn(I)})}terminate(s={}){z.debug("terminate()");const n=s.cause||L.causes.BYE,a=ke.cloneArray(s.extraHeaders),o=s.body;let t,r=s.status_code,_=s.reason_phrase;if(this._status===te.STATUS_TERMINATED)throw new Vs.InvalidStateError(this._status);switch(this._status){case te.STATUS_NULL:case te.STATUS_INVITE_SENT:case te.STATUS_1XX_RECEIVED:if(z.debug("canceling session"),r&&(r<200||r>=700))throw new TypeError(`Invalid status_code: ${r}`);r&&(_=_||L.REASON_PHRASE[r]||"",t=`SIP ;cause=${r} ;text="${_}"`),this._status===te.STATUS_NULL||this._status===te.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=t):this._status===te.STATUS_1XX_RECEIVED&&this._request.cancel(t),this._status=te.STATUS_CANCELED,this._failed("local",null,L.causes.CANCELED);break;case te.STATUS_WAITING_FOR_ANSWER:case te.STATUS_ANSWERED:if(z.debug("rejecting session"),r=r||480,r<300||r>=700)throw new TypeError(`Invalid status_code: ${r}`);this._request.reply(r,_,a,o),this._failed("local",null,L.causes.REJECTED);break;case te.STATUS_WAITING_FOR_ACK:case te.STATUS_CONFIRMED:if(z.debug("terminating session"),_=s.reason_phrase||L.REASON_PHRASE[r]||"",r&&(r<200||r>=700))throw new TypeError(`Invalid status_code: ${r}`);if(r&&a.push(`Reason: SIP ;cause=${r}; text="${_}"`),this._status===te.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==Bt.C.STATUS_TERMINATED){const h=this._dialog;this.receiveRequest=({method:d})=>{d===L.ACK&&(this.sendRequest(L.BYE,{extraHeaders:a,body:o}),h.terminate(),this.closeSession())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===Bt.C.STATUS_TERMINATED&&(this.sendRequest(L.BYE,{extraHeaders:a,body:o}),h.terminate(),this.closeSession())}),this._ended("local",null,n),this._dialog=h,console.log("SET DIALOG terminate"),this._ua.newDialog(h)}else{const h={janus:"leave"},d=["Content-Type: application/json",this.getPTypeHeader(Jt.LEAVE)];this.sendRequest(L.BYE,{extraHeaders:d,body:JSON.stringify(h)}),this.closeSession(),this._ended("local",null,n)}}}configureMedia(s){this.isAudioOn=s.audio,this.isVideoOn=s.video}enableAudio(s){const n={janus:"message",body:{audio:s},handle_id:this.handle_id,session_id:this.session_id},a=["Content-Type: application/json",this.getPTypeHeader(Jt.AUDIO_CHANGE)];this.sendRequest(L.INFO,{extraHeaders:a,body:JSON.stringify(n),eventHandlers:{onSuccessResponse:async o=>{o.status_code===200&&(this._ua.emit("changeAudioState",s),this.sendStateMessage({audio:s}))}}})}startAudio(){is.toggleAudioMute(this.stream),this.enableAudio(!0),this.isAudioOn=!0}stopAudio(){is.toggleAudioMute(this.stream),this.enableAudio(!1),this.isAudioOn=!1}enableVideo(s){const n={janus:"message",body:{video:s},handle_id:this.handle_id,session_id:this.session_id},a=["Content-Type: application/json",this.getPTypeHeader(Jt.VIDEO_CHANGE)];this.sendRequest(L.INFO,{extraHeaders:a,body:JSON.stringify(n),eventHandlers:{onSuccessResponse:async o=>{o.status_code===200&&(this._ua.emit("changeVideoState",s),this.sendStateMessage({video:s}))}}})}startVideo(){is.toggleVideoMute(this.stream),this.enableVideo(!0),this.isVideoOn=!0}stopVideo(){is.toggleVideoMute(this.stream),this.enableVideo(!1),this.isVideoOn=!1}sendStateMessage(s){const n={janus:"message",body:{request:"state",data:s},handle_id:this.handle_id,session_id:this.session_id},a=["Content-Type: application/json",this.getPTypeHeader(Jt.STATE)];this.sendRequest(L.INFO,{extraHeaders:a,body:JSON.stringify(n)})}sendInfo(s,n,a={}){if(z.debug("sendInfo()"),this._status!==te.STATUS_CONFIRMED&&this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_1XX_RECEIVED)throw new Vs.InvalidStateError(this._status);new yu(this).send(s,n,a)}mute(s={audio:!0,video:!1}){z.debug("mute()");let n=!1,a=!1;this._audioMuted===!1&&s.audio&&(n=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&s.video&&(a=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(n===!0||a===!0)&&this._onmute({audio:n,video:a})}unmute(s={audio:!0,video:!0}){z.debug("unmute()");let n=!1,a=!1;this._audioMuted===!0&&s.audio&&(n=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&s.video&&(a=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(n===!0||a===!0)&&this._onunmute({audio:n,video:a})}hold(s={},n){if(z.debug("hold()"),this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED||this._localHold===!0||!this._isReadyToReOffer())return!1;this._localHold=!0,this._onhold("local");const a={succeeded:()=>{n&&n()},failed:()=>{this.terminate({cause:L.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:a,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:a,extraHeaders:s.extraHeaders}),!0}unhold(s={},n){if(z.debug("unhold()"),this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED||this._localHold===!1||!this._isReadyToReOffer())return!1;this._localHold=!1,this._onunhold("local");const a={succeeded:()=>{n&&n()},failed:()=>{this.terminate({cause:L.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:a,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:a,extraHeaders:s.extraHeaders}),!0}renegotiate(s={},n){z.debug("renegotiate()");const a=s.rtcOfferConstraints||null;if(this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;const o={succeeded:()=>{n&&n()},failed:()=>{this.terminate({cause:L.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Media Renegotiation Failed"})}};return this._setLocalMediaStatus(),s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:o,rtcOfferConstraints:a,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:o,rtcOfferConstraints:a,extraHeaders:s.extraHeaders}),!0}refer(s,n){z.debug("refer()");const a=s;if(this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED)return!1;if(s=this._ua.normalizeTarget(s),!s)throw new TypeError(`Invalid target: ${a}`);const o=new wg(this);o.sendRefer(s,n);const t=o.id;return this._referSubscribers[t]=o,o.on("requestFailed",()=>{delete this._referSubscribers[t]}),o.on("accepted",()=>{delete this._referSubscribers[t]}),o.on("failed",()=>{delete this._referSubscribers[t]}),o}sendRequest(s,n){return z.debug("sendRequest()"),this._dialog.sendRequest(s,n)}receiveNotify(s){z.debug("receiveRequest()")}receiveRequest(s){if(z.debug("receiveRequest()"),s.method===L.CANCEL)(this._status===te.STATUS_WAITING_FOR_ANSWER||this._status===te.STATUS_ANSWERED)&&(this._status=te.STATUS_CANCELED,this._request.reply(487),this._failed("remote",s,L.causes.CANCELED));else switch(s.method){case L.ACK:if(this._status!==te.STATUS_WAITING_FOR_ACK)return;if(this._status=te.STATUS_CONFIRMED,clearTimeout(this._timers.ackTimer),clearTimeout(this._timers.invite2xxTimer),this._late_sdp){if(!s.body){this.terminate({cause:L.causes.MISSING_SDP,status_code:400});break}const n={originator:"remote",type:"answer",sdp:s.body};z.debug('emit "sdp"'),this.emit("sdp",n);const a=new RTCSessionDescription({type:"answer",sdp:n.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(a)).then(()=>{this._is_confirmed||this._confirmed("remote",s)}).catch(o=>{this.terminate({cause:L.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)})}else this._is_confirmed||this._confirmed("remote",s);break;case L.BYE:this._status===te.STATUS_CONFIRMED||this._status===te.STATUS_WAITING_FOR_ACK?(s.reply(200),this._ended("remote",s,L.causes.BYE)):this._status===te.STATUS_INVITE_RECEIVED||this._status===te.STATUS_WAITING_FOR_ANSWER?(s.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",s,L.causes.BYE)):s.reply(403,"Wrong Status");break;case L.INVITE:this._status===te.STATUS_CONFIRMED?s.hasHeader("replaces")?this._receiveReplaces(s):this._receiveReinvite(s):s.reply(403,"Wrong Status");break;case L.INFO:if(this._status===te.STATUS_1XX_RECEIVED||this._status===te.STATUS_WAITING_FOR_ANSWER||this._status===te.STATUS_ANSWERED||this._status===te.STATUS_WAITING_FOR_ACK||this._status===te.STATUS_CONFIRMED){const n=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;n&&n.match(/^application\/dtmf-relay/i)?new gg(this).init_incoming(s):n!==void 0?new yu(this).init_incoming(s):s.reply(415)}else s.reply(403,"Wrong Status");break;case L.UPDATE:this._status===te.STATUS_CONFIRMED?this._receiveUpdate(s):s.reply(403,"Wrong Status");break;case L.REFER:this._status===te.STATUS_CONFIRMED?this._receiveRefer(s):s.reply(403,"Wrong Status");break;case L.NOTIFY:this._status===te.STATUS_CONFIRMED?this._receiveNotify(s):s.reply(403,"Wrong Status");break;default:s.reply(501)}}onTransportError(){z.warn("onTransportError()"),this._status!==te.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:L.causes.CONNECTION_ERROR,cause:L.causes.CONNECTION_ERROR})}onRequestTimeout(){z.warn("onRequestTimeout()"),this._status!==te.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:L.causes.REQUEST_TIMEOUT,cause:L.causes.REQUEST_TIMEOUT})}onDialogError(){z.warn("onDialogError()"),this._status!==te.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:L.causes.DIALOG_ERROR,cause:L.causes.DIALOG_ERROR})}newDTMF(s){z.debug("newDTMF()"),this.emit("newDTMF",s)}newInfo(s){z.debug("newInfo()"),this.emit("newInfo",s)}_isReadyToReOffer(){return this._rtcReady?this._dialog?this._dialog.uac_pending_reply===!0||this._dialog.uas_pending_reply===!0?(z.debug("_isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress"),!1):!0:(z.debug("_isReadyToReOffer() | session not established yet"),!1):(z.debug("_isReadyToReOffer() | internal WebRTC status not ready"),!1)}_close(){if(z.debug("close()"),this._localMediaStream&&this._localMediaStreamLocallyGenerated&&(z.debug("close() | closing local MediaStream"),ke.closeMediaStream(this._localMediaStream)),this._status!==te.STATUS_TERMINATED){if(this._status=te.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(s){z.warn("close() | error closing the RTCPeerConnection: %o",s)}for(const s in this._timers)Object.prototype.hasOwnProperty.call(this._timers,s)&&clearTimeout(this._timers[s]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(const s in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,s)&&(this._earlyDialogs[s].terminate(),delete this._earlyDialogs[s]);for(const s in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,s)&&delete this._referSubscribers[s];this._ua.destroyRTCSession(this)}}_setInvite2xxTimer(s,n){let a=$i.T1;function o(){this._status===te.STATUS_WAITING_FOR_ACK&&(s.reply(200,null,[`Contact: ${this._contact}`],n),a<$i.T2&&(a=a*2,a>$i.T2&&(a=$i.T2)),this._timers.invite2xxTimer=setTimeout(o.bind(this),a))}this._timers.invite2xxTimer=setTimeout(o.bind(this),a)}_setACKTimer(){this._timers.ackTimer=setTimeout(()=>{this._status===te.STATUS_WAITING_FOR_ACK&&(z.debug("no ACK received, terminating the session"),clearTimeout(this._timers.invite2xxTimer),this.sendRequest(L.BYE),this._ended("remote",null,L.causes.NO_ACK))},$i.TIMER_H)}_createRTCConnection(s,n){this.stunServers,this._connection=new RTCPeerConnection(s,n),this._connection.addEventListener("iceconnectionstatechange",()=>{this._connection.iceConnectionState==="failed"&&this.terminate({cause:L.causes.RTP_TIMEOUT,status_code:408,reason_phrase:L.causes.RTP_TIMEOUT})});let a;const o=t=>{this._connection.signalingState!=="stable"&&this._connection.signalingState!=="have-local-offer"||t.candidate&&(this._candidates.push(t.candidate),clearTimeout(a),a=setTimeout(()=>{this.lastTrickleReceived=!0,this.subscribeSent&&!this.isConfigureSent&&(this.addTracks(this.stream.getTracks()),this._ua.emit("changeMainVideoStream",{name:this.display_name,stream:this.stream}),this._sendConfigureMessage({audio:!0,video:!0}).then(()=>{}))},500))};this._connection.onicecandidate=o,z.debug('emit "peerconnection"'),this.emit("peerconnection",{peerconnection:this._connection})}_createLocalDescription(s,n){if(z.debug("createLocalDescription()"),s!=="offer"&&s!=="answer")throw new Error(`createLocalDescription() | invalid type "${s}"`);const a=this._connection;return this._rtcReady=!1,Promise.resolve().then(()=>s==="offer"?a.createOffer(n).catch(o=>(z.warn('emit "peerconnection:createofferfailed" [error:%o]',o),this.emit("peerconnection:createofferfailed",o),Promise.reject(o))):a.createAnswer(n).catch(o=>(z.warn('emit "peerconnection:createanswerfailed" [error:%o]',o),this.emit("peerconnection:createanswerfailed",o),Promise.reject(o)))).then(o=>a.setLocalDescription(o).catch(t=>(this._rtcReady=!0,z.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',t),this.emit("peerconnection:setlocaldescriptionfailed",t),Promise.reject(t)))).then(()=>{const o=n&&n.iceRestart;if(a.iceGatheringState==="complete"&&!o||a.iceGatheringState==="gathering"&&this._iceReady){this._rtcReady=!0;const t={originator:"local",type:s,sdp:a.localDescription.sdp};return z.debug('emit "sdp"'),this.emit("sdp",t),Promise.resolve(t.sdp)}return new Promise(t=>{let r=!1,_,h;this._iceReady=!1;const d=()=>{a.removeEventListener("icecandidate",_),a.removeEventListener("icegatheringstatechange",h),r=!0,this._rtcReady=!0,this._iceReady=!0;const g={originator:"local",type:s,sdp:a.localDescription.sdp};z.debug('emit "sdp"'),this.emit("sdp",g),t(g.sdp)};a.addEventListener("icecandidate",_=g=>{const T=g.candidate;T?this.emit("icecandidate",{candidate:T,ready:d}):r||d()}),a.addEventListener("icegatheringstatechange",h=()=>{a.iceGatheringState==="complete"&&!r&&d()})})})}_createDialog(s,n,a){console.log("_createDialog",s);const o=n==="UAS"?s.to_tag:s.from_tag,t=n==="UAS"?s.from_tag:s.to_tag,r=s.call_id+o+t;console.log("remote_tag",t);let _=this._earlyDialogs[r];if(a)return _?!0:(_=new oa(this,s,n,oa.C.STATUS_EARLY),console.log("SET DIALOG early"),_.error?(console.log("early_dialog error",_.error),z.debug(_.error),this._failed("remote",s,L.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[r]=_,!0));{if(this._from_tag=s.from_tag,this._to_tag=s.to_tag,_)return _.update(s,n),console.log("SET DIALOG 1"),this._dialog=_,delete this._earlyDialogs[r],!0;const h=new oa(this,s,n);return h.error?(console.log("dialog.error",h.error),z.debug(h.error),this._failed("remote",s,L.causes.INTERNAL_ERROR),!1):(console.log("AAA SET DIALOG 2"),this._dialog=h,!0)}}_receiveReinvite(s){z.debug("receiveReinvite()");const n=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,a={request:s,callback:void 0,reject:t.bind(this)};let o=!1;function t(_={}){o=!0;const h=_.status_code||403,d=_.reason_phrase||"",g=ke.cloneArray(_.extraHeaders);if(this._status!==te.STATUS_CONFIRMED)return!1;if(h<300||h>=700)throw new TypeError(`Invalid status_code: ${h}`);s.reply(h,d,g)}if(this.emit("reinvite",a),o)return;if(this._late_sdp=!1,!s.body){this._late_sdp=!0,this._remoteHold&&(this._remoteHold=!1,this._onunhold("remote")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",this._rtcOfferConstraints)).then(_=>{r.call(this,_)}).catch(()=>{s.reply(500)});return}if(n!=="application/sdp"){z.debug("invalid Content-Type"),s.reply(415);return}this._processInDialogSdpOffer(s).then(_=>{this._status!==te.STATUS_TERMINATED&&r.call(this,_)}).catch(_=>{z.warn(_)});function r(_){const h=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(s,h),this._late_sdp&&(_=this._mangleOffer(_)),s.reply(200,null,h,_,()=>{this._status=te.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(s,_),this._setACKTimer()}),typeof a.callback=="function"&&a.callback()}}_receiveUpdate(s){z.debug("receiveUpdate()");const n=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,a={request:s,callback:void 0,reject:t.bind(this)};let o=!1;function t(_={}){o=!0;const h=_.status_code||403,d=_.reason_phrase||"",g=ke.cloneArray(_.extraHeaders);if(this._status!==te.STATUS_CONFIRMED)return!1;if(h<300||h>=700)throw new TypeError(`Invalid status_code: ${h}`);s.reply(h,d,g)}if(this.emit("update",a),o)return;if(!s.body){r.call(this,null);return}if(n!=="application/sdp"){z.debug("invalid Content-Type"),s.reply(415);return}this._processInDialogSdpOffer(s).then(_=>{this._status!==te.STATUS_TERMINATED&&r.call(this,_)}).catch(_=>{z.warn(_)});function r(_){const h=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(s,h),s.reply(200,null,h,_),typeof a.callback=="function"&&a.callback()}}_processInDialogSdpOffer(s){z.debug("_processInDialogSdpOffer()");const n=s.parseSDP();let a=!1;for(const r of n.media){if(ua.indexOf(r.type)===-1)continue;const _=r.direction||n.direction||"sendrecv";if(_==="sendonly"||_==="inactive")a=!0;else{a=!1;break}}const o={originator:"remote",type:"offer",sdp:s.body};z.debug('emit "sdp"'),this.emit("sdp",o);const t=new RTCSessionDescription({type:"offer",sdp:o.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");return this._connection.setRemoteDescription(t).catch(r=>{throw s.reply(488),z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',r),this.emit("peerconnection:setremotedescriptionfailed",r),r})}).then(()=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");this._remoteHold===!0&&a===!1?(this._remoteHold=!1,this._onunhold("remote")):this._remoteHold===!1&&a===!0&&(this._remoteHold=!0,this._onhold("remote"))}).then(()=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");return this._createLocalDescription("answer",this._rtcAnswerConstraints).catch(r=>{throw s.reply(500),z.warn('emit "peerconnection:createtelocaldescriptionfailed" [error:%o]',r),r})}).catch(r=>{z.warn("_processInDialogSdpOffer() failed [error: %o]",r)}),this._connectionPromiseQueue}_receiveRefer(s){if(z.debug("receiveRefer()"),!s.refer_to){z.debug("no Refer-To header field present in REFER"),s.reply(400);return}if(s.refer_to.uri.scheme!==L.SIP){z.debug("Refer-To header field points to a non-SIP URI scheme"),s.reply(416);return}s.reply(202);const n=new Cg(this,s.cseq);z.debug('emit "refer"'),this.emit("refer",{request:s,accept:(t,r)=>{a.call(this,t,r)},reject:()=>{o.call(this)}});function a(t,r={}){if(t=typeof t=="function"?t:null,this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED)return!1;const _=new $a(this._ua);if(_.on("progress",({response:h})=>{n.notify(h.status_code,h.reason_phrase)}),_.on("accepted",({response:h})=>{n.notify(h.status_code,h.reason_phrase)}),_.on("_failed",({message:h,cause:d})=>{h?n.notify(h.status_code,h.reason_phrase):n.notify(487,d)}),s.refer_to.uri.hasHeader("replaces")){const h=decodeURIComponent(s.refer_to.uri.getHeader("replaces"));r.extraHeaders=ke.cloneArray(r.extraHeaders),r.extraHeaders.push(`Replaces: ${h}`)}_.connect(s.refer_to.uri.toAor(),r,t)}function o(){n.notify(603)}}_receiveNotify(s){switch(z.debug("receiveNotify()"),s.event||s.reply(400),s.event.event){case"refer":{let n,a;if(s.event.params&&s.event.params.id)n=s.event.params.id,a=this._referSubscribers[n];else if(Object.keys(this._referSubscribers).length===1)a=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{s.reply(400,"Missing event id parameter");return}if(!a){s.reply(481,"Subscription does not exist");return}a.receiveNotify(s),s.reply(200);break}default:s.reply(489)}}_receiveReplaces(s){z.debug("receiveReplaces()");function n(o){if(this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED)return!1;const t=new $a(this._ua);t.on("confirmed",()=>{this.terminate()}),t.init_incoming(s,o)}function a(){z.debug("Replaced INVITE rejected by the user"),s.reply(486)}this.emit("replaces",{request:s,accept:o=>{n.call(this,o)},reject:()=>{a.call(this)}})}_getNextTransactionId(){return(this.lastTransaction+1).toString()}_sendInitialRequest(s,n,a){this.ackSent=!1,this.publisherSubscribeSent=!1;const o=new La(this._ua,this._request,{onRequestTimeout:()=>{this.onRequestTimeout()},onTransportError:()=>{this.onTransportError()},onAuthenticated:t=>{this._request=t},onReceiveResponse:t=>{this._receiveInviteResponse(t)}});Promise.resolve().then(()=>{if(a)return a;if(s.audio||s.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(s).catch(t=>{throw this._status===te.STATUS_TERMINATED?new Error("terminated"):(this._failed("local",null,L.causes.USER_DENIED_MEDIA_ACCESS),z.warn('emit "getusermediafailed" [error:%o]',t),this.emit("getusermediafailed",t),t)})}).then(t=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");return this._localMediaStream=t,t&&t.getTracks().forEach(r=>{this._connection.addTrack(r,t)}),this._connecting(this._request),this._createLocalDescription("offer",n).catch(r=>{throw this._failed("local",null,L.causes.WEBRTC_ERROR),r})}).then(t=>{if(this._is_canceled||this._status===te.STATUS_TERMINATED)throw new Error("terminated");const r={janus:"attach",plugin:"janus.plugin.videoroom",opaque_id:this.opaque_id},_=JSON.stringify(r);this._request.body=_,this._status=te.STATUS_INVITE_SENT,z.debug('emit "sending" [request:%o]',this._request),this.emit("sending",{request:this._request}),o.send()}).catch(t=>{this._status!==te.STATUS_TERMINATED&&z.warn(t)})}requestAudioAndVideoPermissions(){return this.loadStream()}async loadStream(){const s={audio:this.isAudioOn,video:this.isVideoOn};try{this.stream=await navigator.mediaDevices.getUserMedia(s)}catch{try{s.video=!1,this.stream=await navigator.mediaDevices.getUserMedia(s)}catch{s.audio=!1,s.video=!1,this.stream=await navigator.mediaDevices.getUserMedia(s)}}return{stream:this.stream,options:s}}addTracks(s){s.forEach(n=>{this._connection.addTrack(n)})}getRecordFileName(){return UT+this.room_id+btoa(unescape(encodeURIComponent(this.displayName)))+Date.now()}async processIceCandidates(){for(let s=0;s<this.iceCandidates.length;s++)await this._connection.addIceCandidate(this.iceCandidates[s]);this.iceCandidates=[]}async _sendConfigureMessage(s){const n={offerToReceiveAudio:!1,offerToReceiveVideo:!1},a=await this._connection.createOffer(n);await this._connection.setLocalDescription(a);const o=this._candidates.map(h=>({janus:"trickle",candidate:h,handle_id:this.handle_id,session_id:this.session_id})),r={configure:{janus:"message",body:{request:"configure",record:!0,filename:this.getRecordFileName(),...s},jsep:a,handle_id:this.handle_id,session_id:this.session_id},trickles:[...o]},_=["Content-Type: application/json",this.getPTypeHeader(Jt.ICE)];this.sendRequest(L.INFO,{extraHeaders:_,body:JSON.stringify(r),eventHandlers:{onSuccessResponse:async h=>{this.isConfigureSent=!0;const g=h.data.split(`\r
135
+ `),T=g[g.length-1],E=JSON.parse(T);await this._connection.setRemoteDescription(E.jsep),this._candidates=[]}}})}_sendMemberStartMessage(s,n){const a={janus:"message",body:{request:"start",room:this.room_id},handle_id:s.handleId,session_id:this.session_id,jsep:n},o=["Content-Type: application/json",this.getPTypeHeader(Jt.CONFIGURE)];this.sendRequest(L.INFO,{extraHeaders:o,body:JSON.stringify(a),eventHandlers:{onSuccessResponse:async t=>{t.status_code===200&&await s.rtcpPeer.setLocalDescription(n)}}})}_sendTrickleMessage(s){const a={trickles:[...s.map(t=>({janus:"trickle",candidate:t,handle_id:this.handle_id,session_id:this.session_id}))]},o=[this.getPTypeHeader(Jt.TRICKLE)];this.sendRequest(L.INFO,{extraHeaders:o,body:JSON.stringify(a),eventHandlers:{onSuccessResponse:async t=>{console.log("_sendTrickleMessage",t)}}})}async _answerAttachedStream(s,n){let a=null;const o=async h=>{if(!s.rtcpPeer||s.loaded)return;{s.loaded=!0;const y={audio:!0,video:!0};await new Promise(A=>{setTimeout(A,100)}),a=await s.rtcpPeer.createAnswer(y),this._sendMemberStartMessage(s,a)}const d=h.streams[0].getAudioTracks(),g=h.streams[0].getVideoTracks(),T=[];d[0]&&T.push(d[0]),g[0]&&T.push(g[0]);const E=new MediaStream(T);s.stream=E,this._ua.emit("memberJoin",s.memberInfo)};let t,r=[];const _=h=>{s.rtcpPeer.signalingState!=="stable"&&s.rtcpPeer.signalingState!=="have-local-offer"||(r.push(h.candidate||null),clearTimeout(t),t=setTimeout(()=>{this._sendTrickleMessage(r)},500))};s.rtcpPeer=new RTCPeerConnection,s.rtcpPeer.ontrack=o,s.rtcpPeer.onicecandidate=_,s.rtcpPeer.sender=n.sender,await s.rtcpPeer.setRemoteDescription(n.jsep)}_sendJoinMemberRequest(s){const n={janus:"message",body:{request:"join",room:this.room_id,feed:s.info.id,ptype:"subscriber"},handle_id:s.handleId,session_id:this.session_id},a=[this.getPTypeHeader(Jt.SUBSCRIBER)];this.sendRequest(L.SUBSCRIBE,{extraHeaders:a,body:JSON.stringify(n),eventHandlers:{onSuccessResponse:async o=>{var t,r;if(o.status_code===200){const _=JSON.parse(o.body);(r=(t=_==null?void 0:_.plugindata)==null?void 0:t.data)!=null&&r.id&&await this._answerAttachedStream(s,_)}}}})}_attachMember(s){const n={janus:"attach",opaque_id:this.opaque_id,plugin:"janus.plugin.videoroom",session_id:this.session_id},a=[this.getPTypeHeader(Jt.SUBSCRIBER)];this.sendRequest(L.INFO,{extraHeaders:a,body:JSON.stringify(n),eventHandlers:{onSuccessResponse:async o=>{if(o.status_code===200){const r=JSON.parse(o.body).data.id;s.handleId=r,this._sendJoinMemberRequest(s)}}}})}_detachMember(s){const n={janus:"detach",handle_id:s.handleId,session_id:this.session_id},a=[this.getPTypeHeader(Jt.SUBSCRIBER)];this.sendRequest(L.INFO,{extraHeaders:a,body:JSON.stringify(n)}),this._ua.emit("memberHangup",s.memberInfo)}receivePublishers(s){var a,o,t,r,_,h,d,g;const n={...this.memberList};(o=(a=s==null?void 0:s.plugindata)==null?void 0:a.data)==null||o.publishers.forEach(T=>{delete n[T.id],!this.memberList[T.id]&&!this.myFeedList.includes(T.id)&&T.clientID!==this.client_id&&(this.memberList[T.id]=new DT(T,this),this._attachMember(this.memberList[T.id]))}),((r=(t=s==null?void 0:s.plugindata)==null?void 0:t.data)==null?void 0:r.videoroom)==="synced"&&Object.keys(n).forEach(T=>{n[T].hangup(),delete this.memberList[T]}),this.publishers=(h=(_=s==null?void 0:s.plugindata)==null?void 0:_.data)==null?void 0:h.publishers,this.private_id=(g=(d=s==null?void 0:s.plugindata)==null?void 0:d.data)==null?void 0:g.private_id}receiveUnpublished(s){const n=this.memberList[s];n&&(n.hangup(),this._detachMember(n),delete this.memberList[s])}closeSession(){this.stream&&this.stream.getTracks().forEach(n=>{n.stop()}),Object.values(this.memberList).forEach(n=>{n.hangup(),this._detachMember(n)})}_receiveInviteResponse(s){if(z.debug("receiveInviteResponse()"),console.log("_receiveInviteResponse response",s),console.log("dialog",this._dialog),this._dialog&&s.status_code>=200&&s.status_code<=299&&!this.ackSent)if(console.log("IF 1 dialog"),this._dialog.id.call_id===s.call_id&&this._dialog.id.local_tag===s.from_tag&&this._dialog.id.remote_tag===s.to_tag){this.ackSent=!0,this.sendRequest(L.ACK);return}else{const n=new oa(this,s,"UAC");if(n.error!==void 0){z.debug(n.error);return}this.sendRequest(L.ACK),this.sendRequest(L.BYE);return}if(this.ackSent&&!this.publisherSubscribeSent){const n=JSON.parse(s.body);this.requestAudioAndVideoPermissions().then(()=>{this.session_id=n.session_id,this.handle_id=n.data.id,this.client_id=Df();const a={janus:"message",body:{request:"join",room:this.room_id,ptype:"publisher",display:this.display_name,clientID:this.client_id,opaque_id:this.opaque_id},handle_id:this.handle_id},o=[this.getPTypeHeader(Jt.PUBLISHER)];this.sendRequest(L.SUBSCRIBE,{extraHeaders:o,body:JSON.stringify(a),eventHandlers:{onSuccessResponse:async t=>{var r,_;if(t.status_code===200){if(this.subscribeSent=!0,t.body)try{const h=JSON.parse(t.body)||{};(_=(r=h.plugindata)==null?void 0:r.data)!=null&&_.publishers&&this.receivePublishers(h)}catch(h){console.error(h)}this.lastTrickleReceived&&!this.isConfigureSent&&(this.addTracks(this.stream.getTracks()),this._ua.emit("changeMainVideoStream",{name:this.display_name,stream:this.stream}),this._sendConfigureMessage({audio:!0,video:!0}).then(()=>{})),this._ua.emit("conferenceStart")}}}}),this.publisherSubscribeSent=!0})}if(this._is_canceled){s.status_code>=100&&s.status_code<200?this._request.cancel(this._cancel_reason):s.status_code>=200&&s.status_code<299&&this._acceptAndTerminate(s);return}if(!(this._status!==te.STATUS_INVITE_SENT&&this._status!==te.STATUS_1XX_RECEIVED))switch(!0){case/^100$/.test(s.status_code):this._status=te.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(s.status_code):{if(!s.to_tag){z.debug("1xx response received without to tag");break}if(s.hasHeader("contact")&&!this._createDialog(s,"UAC",!0))break;if(this._status=te.STATUS_1XX_RECEIVED,!s.body){this._progress("remote",s);break}const n={originator:"remote",type:"answer",sdp:s.body};z.debug('emit "sdp"'),this.emit("sdp",n);const a=new RTCSessionDescription({type:"answer",sdp:n.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(a)).then(()=>this._progress("remote",s)).catch(o=>{z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)});break}case/^2[0-9]{2}$/.test(s.status_code):{if(this._status=te.STATUS_CONFIRMED,!s.body){this._acceptAndTerminate(s,400,L.causes.MISSING_SDP),this._failed("remote",s,L.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(s,"UAC"))break;break}default:{const n=ke.sipErrorCause(s.status_code);this._failed("remote",s,n)}}}_sendReinvite(s={}){z.debug("sendReinvite()");const n=ke.cloneArray(s.extraHeaders),a=ke.cloneObject(s.eventHandlers),o=s.rtcOfferConstraints||this._rtcOfferConstraints||null;let t=!1;n.push(`Contact: ${this._contact}`),n.push("Content-Type: application/sdp"),this._sessionTimers.running&&n.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher?"uac":"uas"}`),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",o)).then(h=>{h=this._mangleOffer(h);const d={originator:"local",type:"offer",sdp:h};z.debug('emit "sdp"'),this.emit("sdp",d),this.sendRequest(L.INVITE,{extraHeaders:n,body:h,eventHandlers:{onSuccessResponse:g=>{r.call(this,g),t=!0},onErrorResponse:g=>{_.call(this,g)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{_()});function r(h){if(this._status===te.STATUS_TERMINATED||(this.sendRequest(L.ACK),t))return;if(this._handleSessionTimersInIncomingResponse(h),h.body){if(!h.hasHeader("Content-Type")||h.getHeader("Content-Type").toLowerCase()!=="application/sdp"){_.call(this);return}}else{_.call(this);return}const d={originator:"remote",type:"answer",sdp:h.body};z.debug('emit "sdp"'),this.emit("sdp",d);const g=new RTCSessionDescription({type:"answer",sdp:d.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(g)).then(()=>{a.succeeded&&a.succeeded(h)}).catch(T=>{_.call(this),z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',T),this.emit("peerconnection:setremotedescriptionfailed",T)})}function _(h){a.failed&&a.failed(h)}}_sendUpdate(s={}){z.debug("sendUpdate()");const n=ke.cloneArray(s.extraHeaders),a=ke.cloneObject(s.eventHandlers),o=s.rtcOfferConstraints||this._rtcOfferConstraints||null,t=s.sdpOffer||!1;let r=!1;n.push(`Contact: ${this._contact}`),this._sessionTimers.running&&n.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher?"uac":"uas"}`),t?(n.push("Content-Type: application/sdp"),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",o)).then(d=>{d=this._mangleOffer(d);const g={originator:"local",type:"offer",sdp:d};z.debug('emit "sdp"'),this.emit("sdp",g),this.sendRequest(L.UPDATE,{extraHeaders:n,body:d,eventHandlers:{onSuccessResponse:T=>{_.call(this,T),r=!0},onErrorResponse:T=>{h.call(this,T)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{h.call(this)})):this.sendRequest(L.UPDATE,{extraHeaders:n,eventHandlers:{onSuccessResponse:d=>{_.call(this,d)},onErrorResponse:d=>{h.call(this,d)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}});function _(d){if(this._status!==te.STATUS_TERMINATED&&!r)if(this._handleSessionTimersInIncomingResponse(d),t){if(d.body){if(!d.hasHeader("Content-Type")||d.getHeader("Content-Type").toLowerCase()!=="application/sdp"){h.call(this);return}}else{h.call(this);return}const g={originator:"remote",type:"answer",sdp:d.body};z.debug('emit "sdp"'),this.emit("sdp",g);const T=new RTCSessionDescription({type:"answer",sdp:g.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(T)).then(()=>{a.succeeded&&a.succeeded(d)}).catch(E=>{h.call(this),z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),this.emit("peerconnection:setremotedescriptionfailed",E)})}else a.succeeded&&a.succeeded(d)}function h(d){a.failed&&a.failed(d)}}_acceptAndTerminate(s,n,a){z.debug("acceptAndTerminate()");const o=[];n&&(a=a||L.REASON_PHRASE[n]||"",o.push(`Reason: SIP ;cause=${n}; text="${a}"`)),(this._dialog||this._createDialog(s,"UAC"))&&(this.sendRequest(L.ACK),this.sendRequest(L.BYE,{extraHeaders:o})),this._status=te.STATUS_TERMINATED}_mangleOffer(s){if(!this._localHold&&!this._remoteHold)return s;if(s=xt.parse(s),this._localHold&&!this._remoteHold){z.debug("mangleOffer() | me on hold, mangling offer");for(const n of s.media)ua.indexOf(n.type)!==-1&&(n.direction?n.direction==="sendrecv"?n.direction="sendonly":n.direction==="recvonly"&&(n.direction="inactive"):n.direction="sendonly")}else if(this._localHold&&this._remoteHold){z.debug("mangleOffer() | both on hold, mangling offer");for(const n of s.media)ua.indexOf(n.type)!==-1&&(n.direction="inactive")}else if(this._remoteHold){z.debug("mangleOffer() | remote on hold, mangling offer");for(const n of s.media)ua.indexOf(n.type)!==-1&&(n.direction?n.direction==="sendrecv"?n.direction="recvonly":n.direction==="recvonly"&&(n.direction="inactive"):n.direction="recvonly")}return xt.write(s)}_setLocalMediaStatus(){let s=!0,n=!0;(this._localHold||this._remoteHold)&&(s=!1,n=!1),this._audioMuted&&(s=!1),this._videoMuted&&(n=!1),this._toggleMuteAudio(!s),this._toggleMuteVideo(!n)}_handleSessionTimersInIncomingRequest(s,n){if(!this._sessionTimers.enabled)return;let a;s.session_expires&&s.session_expires>=L.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=s.session_expires,a=s.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,a="uas"),n.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${a}`),this._sessionTimers.refresher=a==="uas",this._runSessionTimer()}_handleSessionTimersInIncomingResponse(s){if(!this._sessionTimers.enabled)return;let n;s.session_expires&&s.session_expires>=L.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=s.session_expires,n=s.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,n="uac"),this._sessionTimers.refresher=n==="uac",this._runSessionTimer()}_runSessionTimer(){const s=this._sessionTimers.currentExpires;this._sessionTimers.running=!0,clearTimeout(this._sessionTimers.timer),this._sessionTimers.refresher?this._sessionTimers.timer=setTimeout(()=>{this._status!==te.STATUS_TERMINATED&&this._isReadyToReOffer()&&(z.debug("runSessionTimer() | sending session refresh request"),this._sessionTimers.refreshMethod===L.UPDATE?this._sendUpdate():this._sendReinvite())},s*500):this._sessionTimers.timer=setTimeout(()=>{this._status!==te.STATUS_TERMINATED&&(z.warn("runSessionTimer() | timer expired, terminating the session"),this.terminate({cause:L.causes.REQUEST_TIMEOUT,status_code:408,reason_phrase:"Session Timer Expired"}))},s*1100)}_toggleMuteAudio(s){const n=this._connection.getSenders().filter(a=>a.track&&a.track.kind==="audio");for(const a of n)a.track.enabled=!s}_toggleMuteVideo(s){const n=this._connection.getSenders().filter(a=>a.track&&a.track.kind==="video");for(const a of n)a.track.enabled=!s}_newJanusSession(s,n){z.debug("newRTCSession()"),this._ua.newJanusSession(this,{originator:s,session:this,request:n})}_connecting(s){z.debug("session connecting"),z.debug('emit "connecting"'),this.emit("connecting",{request:s})}_progress(s,n){z.debug("session progress"),z.debug('emit "progress"'),this.emit("progress",{originator:s,response:n||null})}_accepted(s,n){z.debug("session accepted"),this._start_time=new Date,z.debug('emit "accepted"'),this.emit("accepted",{originator:s,response:n||null})}_confirmed(s,n){z.debug("session confirmed"),this._is_confirmed=!0,z.debug('emit "confirmed"'),this.emit("confirmed",{originator:s,ack:n||null})}_ended(s,n,a){z.debug("session ended"),this._end_time=new Date,this._close(),z.debug('emit "ended"'),this.emit("ended",{originator:s,message:n||null,cause:a})}_failed(s,n,a){z.debug("session failed"),z.debug('emit "_failed"'),this.emit("_failed",{originator:s,message:n||null,cause:a}),this._close(),z.debug('emit "failed"'),this.emit("failed",{originator:s,message:n||null,cause:a})}_onhold(s){z.debug("session onhold"),this._setLocalMediaStatus(),z.debug('emit "hold"'),this.emit("hold",{originator:s})}_onunhold(s){z.debug("session onunhold"),this._setLocalMediaStatus(),z.debug('emit "unhold"'),this.emit("unhold",{originator:s})}_onmute({audio:s,video:n}){z.debug("session onmute"),this._setLocalMediaStatus(),z.debug('emit "muted"'),this.emit("muted",{audio:s,video:n})}_onunmute({audio:s,video:n}){z.debug("session onunmute"),this._setLocalMediaStatus(),z.debug('emit "unmuted"'),this.emit("unmuted",{audio:s,video:n})}}class cr{constructor(s){if(this.headers={},s.length>0){let n=!1;const a=s.split(`\r
136
+ `),o=a.shift().split(/\s/);this.protocol=o[0],this.ident=o[1],this.code=o.length>3?parseInt(o[2]):0,this.method=o.length>3?o[3]:o[2],this.body="";for(const t of a){if(t==`-------${this.ident}$`)break;if(t===""){n=!0;continue}if(t&&n)this.body+=`${t}\r
137
+ `;else{const r=t.split(": ");this.addHeader(r[0],r[1].trim())}}}else this.ident=ke.createRandomToken(12),this.protocol="MSRP"}addHeader(s,n){this.headers[s]=n}getHeader(s){return this.headers[s]}toString(){let s=`${this.protocol} ${this.ident} ${this.code} ${this.method}`.replaceAll(/null\s|undefined\s/ig,"")+`\r
138
+ `;for(const n in this.headers)s+=`${n}: ${this.headers[n]}\r
139
139
  `;return this.body&&(s+=`\r
140
140
  ${this.body}\r
141
141
  `),s+=`-------${this.ident}$\r
142
- `,s}}const Re={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_ACK:6,STATUS_CANCELED:7,STATUS_TERMINATED:8,STATUS_CONFIRMED:9};class tu extends ft.EventEmitter{constructor(s){super(),this._id=null,this.my_ip="127.0.0.1",this._ua=s,this.auth_id=Me.createRandomToken(10),this._status=Re.STATUS_NULL,this._dialog=null,this._earlyDialogs={},this._contact=null,this._from_tag=null,this._to_tag=null,this._msgHistory=[],this.target_addr=[],this.my_addr=[],this.credentials={username:s._configuration.authorization_user,ha1:s._configuration.ha1,realm:s._configuration.realm},this._request=null,this.status="new",this.target="",this.message="",this._connectionPromiseQueue=Promise.resolve(),this._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},this._direction=null,this._local_identity=null,this._remote_identity=null,this._start_time=null,this._end_time=null,this._tones=null,this._sessionTimers={enabled:this._ua.configuration.session_timers,refreshMethod:this._ua.configuration.session_timers_refresh_method,defaultExpires:$.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},this._msrpKeepAliveTimer=null}static get C(){return Re}get direction(){return this._direction}get connection(){return this._connection}get id(){return this._id}connect(s=""){s!==""&&(this._direction="outgoing"),this.target=s,this._connection=new WebSocket(`wss://${this._ua._configuration.realm}`,"msrp"),this._connection.binaryType="arraybuffer",this._connection.onopen=r=>{console.log("open",r),this.onopen()},this._connection.onclose=r=>{console.log("close",r),this.onclose()},this._connection.onmessage=r=>{console.log("msg",r),this.onmessage(r)},this._connection.onerror=r=>{console.log("error",r),this.onerror()}}_sendKeepAlive(){const s=new or("");s.method="SEND",s.addHeader("To-Path",`${this.my_addr[1]}`),s.addHeader("From-Path",`${this.my_addr[0]}`),s.addHeader("Message-ID",Me.createRandomToken(10)),this._connection.send(s.toString())}answer(){if(!this._createDialog(this._request,"UAS")){this._request.reply(500,"Error creating dialog");return}this._status=Re.STATUS_ANSWERED,clearTimeout(this._timers.userNoAnswerTimer),this.connect()}acceptParty(s){this._request.parseSDP(!0),this._request.reply(200,"OK",[],`v=0
142
+ `,s}}const Re={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_ACK:6,STATUS_CANCELED:7,STATUS_TERMINATED:8,STATUS_CONFIRMED:9};class nu extends ft.EventEmitter{constructor(s){super(),this._id=null,this.my_ip="127.0.0.1",this._ua=s,this.auth_id=ke.createRandomToken(10),this._status=Re.STATUS_NULL,this._dialog=null,this._earlyDialogs={},this._contact=null,this._from_tag=null,this._to_tag=null,this._msgHistory=[],this.target_addr=[],this.my_addr=[],this.credentials={username:s._configuration.authorization_user,ha1:s._configuration.ha1,realm:s._configuration.realm},this._request=null,this.status="new",this.target="",this.message="",this._connectionPromiseQueue=Promise.resolve(),this._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},this._direction=null,this._local_identity=null,this._remote_identity=null,this._start_time=null,this._end_time=null,this._tones=null,this._sessionTimers={enabled:this._ua.configuration.session_timers,refreshMethod:this._ua.configuration.session_timers_refresh_method,defaultExpires:L.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},this._msrpKeepAliveTimer=null}static get C(){return Re}get direction(){return this._direction}get connection(){return this._connection}get id(){return this._id}connect(s=""){s!==""&&(this._direction="outgoing"),this.target=s,this._connection=new WebSocket(`wss://${this._ua._configuration.realm}`,"msrp"),this._connection.binaryType="arraybuffer",this._connection.onopen=n=>{console.log("open",n),this.onopen()},this._connection.onclose=n=>{console.log("close",n),this.onclose()},this._connection.onmessage=n=>{console.log("msg",n),this.onmessage(n)},this._connection.onerror=n=>{console.log("error",n),this.onerror()}}_sendKeepAlive(){const s=new cr("");s.method="SEND",s.addHeader("To-Path",`${this.my_addr[1]}`),s.addHeader("From-Path",`${this.my_addr[0]}`),s.addHeader("Message-ID",ke.createRandomToken(10)),this._connection.send(s.toString())}answer(){if(!this._createDialog(this._request,"UAS")){this._request.reply(500,"Error creating dialog");return}this._status=Re.STATUS_ANSWERED,clearTimeout(this._timers.userNoAnswerTimer),this.connect()}acceptParty(s){this._request.parseSDP(!0),this._request.reply(200,"OK",[],`v=0
143
143
  o=- 4232740119537112802 2 IN IP4 ${this.my_ip}
144
144
  c=IN IP4 ${this.my_ip}
145
145
  t=0 0
146
146
  m=message 2856 TCP/TLS/MSRP *
147
147
  a=accept-types:text/plain text/html
148
148
  a=path: ${s.getHeader("Use-Path")} msrp://${this._ua._configuration.authorization_user}.${this._ua._configuration.realm}:2856/${this.auth_id};ws
149
- `)}inviteParty(s){const r={},a=[];r.to_uri=new hr("sip",this.target,this._ua._configuration.realm),r.from_uri=new hr("sip",this._ua._configuration.uri.user,this._ua._configuration.uri.host),a.push(`Contact: ${this._ua.contact.toString({outbound:!0})}`),a.push("Content-Type: application/sdp"),this._request=new It.InitialOutgoingInviteRequest(new hr("sip",this.target,this._ua._configuration.realm).clone(),this._ua,r,a,`v=0
149
+ `)}inviteParty(s){const n={},a=[];n.to_uri=new pr("sip",this.target,this._ua._configuration.realm),n.from_uri=new pr("sip",this._ua._configuration.uri.user,this._ua._configuration.uri.host),a.push(`Contact: ${this._ua.contact.toString({outbound:!0})}`),a.push("Content-Type: application/sdp"),this._request=new It.InitialOutgoingInviteRequest(new pr("sip",this.target,this._ua._configuration.realm).clone(),this._ua,n,a,`v=0
150
150
  o=- 4232740119537112802 2 IN IP4 ${this.my_ip}
151
151
  c=IN IP4 ${this.my_ip}
152
152
  t=0 0
153
153
  m=message 2856 TCP/TLS/MSRP *
154
154
  a=accept-types:text/plain text/html
155
155
  a=path:${s.getHeader("Use-Path")} msrp://${this._ua._configuration.authorization_user}.${this._ua._configuration.realm}:2856/${this.auth_id};ws
156
- `),this._newMSRPSession("local",this._request),this._id=this._request.call_id+this._from_tag,console.log("dialog be",this._dialog),new Ma(this._ua,this._request,{onRequestTimeout:()=>{this.onRequestTimeout(),console.log("to")},onTransportError:t=>{this.onTransportError(),console.log(t)},onAuthenticated:t=>{this._request=t},onReceiveResponse:t=>{this._receiveInviteResponse(t),console.log("dialog af",this._dialog),t.status_code===200&&(t.parseSDP(!0),this._status=Re.STATUS_CONFIRMED,this.target_addr=t.sdp.media[0].invalid[1].value.replaceAll("path:","").split(" ").reverse(),this.status="active",this.emit("active"),this.emit("confirmed"))}}).send(),this._status=Re.STATUS_INVITE_SENT}terminate(s={}){console.log("terminate",this);const r=s.cause||$.causes.BYE,a=Me.cloneArray(s.extraHeaders),o=s.body;let t,n=s.status_code,h=s.reason_phrase;if(this._status===Re.STATUS_TERMINATED)throw new Fs.InvalidStateError(this._status);switch(this.status="terminated",this._status){case Re.STATUS_NULL:case Re.STATUS_INVITE_SENT:case Re.STATUS_1XX_RECEIVED:if(n&&(n<200||n>=700))throw new TypeError(`Invalid status_code: ${n}`);n&&(h=h||$.REASON_PHRASE[n]||"",t=`SIP ;cause=${n} ;text="${h}"`),this._status===Re.STATUS_NULL||this._status===Re.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=t):this._status===Re.STATUS_1XX_RECEIVED&&this._request.cancel(t),this._status=Re.STATUS_CANCELED,console.log("failed 1"),this._failed("local",null,$.causes.CANCELED);break;case Re.STATUS_WAITING_FOR_ANSWER:case Re.STATUS_ANSWERED:if(n=n||480,console.log("REPLY 480"),n<300||n>=700)throw new TypeError(`Invalid status_code: ${n}`);this._request.reply(n,h,a,o),console.log("failed 2"),this._failed("local",null,$.causes.REJECTED);break;case Re.STATUS_WAITING_FOR_ACK:case Re.STATUS_CONFIRMED:if(h=s.reason_phrase||$.REASON_PHRASE[n]||"",n&&(n<200||n>=700))throw new TypeError(`Invalid status_code: ${n}`);if(n&&a.push(`Reason: SIP ;cause=${n}; text="${h}"`),this._status===Re.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==Bt.C.STATUS_TERMINATED){const _=this._dialog;this.receiveRequest=({method:d})=>{d===$.ACK&&(this.sendRequest($.BYE,{extraHeaders:a,body:o}),_.terminate())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===Bt.C.STATUS_TERMINATED&&(this.sendRequest($.BYE,{extraHeaders:a,body:o}),_.terminate())}),this._ended("local",null,r),this._dialog=_,this._ua.newDialog(_)}else console.log("here it is"),this.sendRequest($.BYE,{extraHeaders:a,body:o}),this._ended("local",null,r)}}sendRequest(s,r){return this._dialog.sendRequest(s,r)}authenticate(s){this.status="auth";let r=new or("");r.method="AUTH",r.addHeader("To-Path",`msrp://${this._ua._configuration.realm}:2856;ws`),r.addHeader("From-Path",`msrp://${this.credentials.username}.${this.credentials.realm}:2856/${this.auth_id};ws`),s&&r.addHeader("Authorization",s.toString());let a=r.toString();console.log(a);let o=[];for(var t=0;t<a.length;t++)o.push(a.charCodeAt(t).toString(16));console.log(o),this._connection.send(r.toString())}onmessage(s){console.log("onmessage",s);const r=new or(s.data);if(this.status==="auth"&&r.code===401){const a=this.parseAuth(r.getHeader("WWW-Authenticate")),o=new qm(this.credentials);o.authenticate({method:"AUTH",ruri:`msrp://${this._ua._configuration.realm}:2856;ws`,body:null},a,Me.createRandomToken(12)),this.authenticate(o)}this.status==="auth"&&r.code===200&&this._direction==="outgoing"?(this.my_addr.push(r.getHeader("To-Path")),this.my_addr.push(r.getHeader("Use-Path")),this.status="active",this.inviteParty(r)):this.status==="auth"&&r.code===200&&this._direction==="incoming"?(this.my_addr.push(r.getHeader("To-Path")),this.my_addr.push(r.getHeader("Use-Path")),this.status="active",this.acceptParty(r),this.emit("confirmed")):r.method==="SEND"&&(this._sendOk(r),this._sendReport(r),r.direction="incoming",this.emit("newMessage",r),this._msgHistory.push(r),this.emit("msgHistoryUpdate",this._msgHistory),console.log("======================================================================")),r.code===480&&this._close()}onclose(){console.log("close")}onopen(){const s=new RTCPeerConnection({iceServers:[]});s.createDataChannel(""),s.createOffer().then(s.setLocalDescription.bind(s)),s.onicecandidate=r=>{if(!r||!r.candidate||!r.candidate.candidate)return;const a=/([0-9]{1,3}(\.[0-9]{1,3}){3})/,o=r.candidate.candidate.match(a);this.my_ip=o&&o[1],s.onicecandidate=()=>{},this.authenticate(null)}}onerror(s){console.log(s)}_receiveInviteResponse(s){if(console.log("resp0000000000000",s),this._dialog&&s.status_code>=200&&s.status_code<=299)if(console.log("200000000000000"),this._dialog.id.call_id===s.call_id&&this._dialog.id.local_tag===s.from_tag&&this._dialog.id.remote_tag===s.to_tag){this.sendRequest($.ACK);return}else{const r=new Xl(this,s,"UAC");if(r.error!==void 0){console.log(r.error);return}this.sendRequest($.ACK),this.sendRequest($.BYE);return}if(this._is_canceled){s.status_code>=100&&s.status_code<200?this._request.cancel(this._cancel_reason):s.status_code>=200&&s.status_code<299&&this._acceptAndTerminate(s);return}if(!(this._status!==Re.STATUS_INVITE_SENT&&this._status!==Re.STATUS_1XX_RECEIVED))switch(console.log("start Switch"),!0){case/^100$/.test(s.status_code):this._status=Re.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(s.status_code):{if(!s.to_tag){console.log("1xx response received without to tag");break}if(s.hasHeader("contact")&&!this._createDialog(s,"UAC",!0))break;if(this._status=Re.STATUS_1XX_RECEIVED,!s.body){this._progress("remote",s);break}const r={originator:"remote",type:"answer",sdp:s.body};console.log('emit "sdp"'),this.emit("sdp",r);const a=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(a)).then(()=>this._progress("remote",s)).catch(o=>{console.log('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)});break}case/^2[0-9]{2}$/.test(s.status_code):{if(console.log("maybe here???"),this._status=Re.STATUS_CONFIRMED,!s.body){this._acceptAndTerminate(s,400,$.causes.MISSING_SDP),console.log("failed 3"),this._failed("remote",s,$.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(s,"UAC"))break;const r={originator:"remote",type:"answer",sdp:s.body};console.log('emit "sdp"'),this.emit("sdp",r),new RTCSessionDescription({type:"answer",sdp:r.sdp}),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>{if(this._connection.signalingState==="stable")return this._connection.createOffer(this._rtcOfferConstraints).then(a=>this._connection.setLocalDescription(a)).catch(a=>{this._acceptAndTerminate(s,500,a.toString()),console.log("failed 4"),this._failed("local",s,$.causes.WEBRTC_ERROR)})}).then(()=>{this._handleSessionTimersInIncomingResponse(s),this._accepted("remote",s),this.sendRequest($.ACK),this._confirmed("local",null)});break}default:{const r=Me.sipErrorCause(s.status_code);console.log("failed 5"),this._failed("remote",s,r)}}}sendMSRP(s){const r=new or("");r.method="SEND",r.addHeader("To-Path",`${this.my_addr[1]} ${this.target_addr[1]} ${this.target_addr[0]}`),r.addHeader("From-Path",`${this.my_addr[0]}`),r.addHeader("Message-ID",Me.createRandomToken(10)),r.addHeader("Byte-Range","1-25/25"),r.addHeader("Content-Type","text/plain"),r.addHeader("Success-Report","yes"),r.addHeader("Failure-Report","yes"),r.body=s;let a=r.toString();console.log(a);let o=[];for(var t=0;t<a.length;t++)o.push(a.charCodeAt(t).toString(16));console.log(o),this._connection.send(r.toString()),r.direction="outgoing",this.emit("newMessage",r),this._msgHistory.push(r),this.emit("msgHistoryUpdate",this._msgHistory)}_sendOk(s){let r=s.ident,a=s.getHeader("Message-ID"),o=new or("");o.method="200 OK",o.addHeader("To-Path",`${this.my_addr[1]}`),o.addHeader("From-Path",`${this.my_addr[0]}`),o.addHeader("Message-ID",a),o.ident=r;let t=o.toString();console.log(t);let n=[];for(var h=0;h<t.length;h++)n.push(t.charCodeAt(h).toString(16));console.log(n),this._connection.send(o.toString())}_sendReport(s){let r=s.ident,a=s.getHeader("Message-ID"),o=new or("");o.method="REPORT",o.addHeader("To-Path",`${s.getHeader("From-Path")}`),o.addHeader("From-Path",`${this.my_addr[0]}`),o.addHeader("Message-ID",a),o.addHeader("Byte-Range","1-25/25"),o.addHeader("Status","000 200 OK"),o.ident=r;let t=o.toString();console.log(t);let n=[];for(var h=0;h<t.length;h++)n.push(t.charCodeAt(h).toString(16));console.log(n),this._connection.send(o.toString())}parseAuth(s){const r={},a=s.replace("Digest","").split(",");for(const o of a){const t=o.trim().split("=");r[t[0]]=t[1].match('^"(.+)"$')[1]}return r}init_incoming(s,r){let a;const o=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;if(s.body&&o!=="application/sdp"){s.reply(415);return}if(this._status=Re.STATUS_INVITE_RECEIVED,this._from_tag=s.from_tag,this._id=s.call_id+this._from_tag,this._request=s,this._contact=this._ua.contact.toString(),s.hasHeader("expires")&&(a=s.getHeader("expires")*1e3),s.to_tag=Me.newTag(),!this._createDialog(s,"UAS",!0)){s.reply(500,"Missing Contact header field");return}s.body?this._late_sdp=!1:this._late_sdp=!0,this._status=Re.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(()=>{s.reply(408),console.log("failed 6"),this._failed("local",null,$.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),a&&(this._timers.expiresTimer=setTimeout(()=>{this._status===Re.STATUS_WAITING_FOR_ANSWER&&(s.reply(487),console.log("failed 7"),this._failed("system",null,$.causes.EXPIRES))},a)),this._direction="incoming",this._local_identity=s.to,this._remote_identity=s.from,r&&r(this),s.parseSDP(!0),this.target_addr=s.sdp.media[0].invalid[1].value.replaceAll("path:","").split(" ").reverse(),this._newMSRPSession("remote",s),this._status!==Re.STATUS_TERMINATED&&(s.reply(180,null,[`Contact: ${this._ua._contact}`]),this._progress("local",null))}_failed(s,r,a){this.emit("_failed",{originator:s,message:r||null,cause:a}),this._close(),this.emit("failed",{originator:s,message:r||null,cause:a})}_close(){if(console.log("CLOSE SESSION"),this._status!==Re.STATUS_TERMINATED){if(this._status=Re.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(s){console.log("close() | error closing the RTCPeerConnection: %o",s)}for(const s in this._timers)Object.prototype.hasOwnProperty.call(this._timers,s)&&clearTimeout(this._timers[s]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(const s in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,s)&&(this._earlyDialogs[s].terminate(),delete this._earlyDialogs[s]);for(const s in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,s)&&delete this._referSubscribers[s];this._ua.destroyMSRPSession(this)}}_createDialog(s,r,a){const o=r==="UAS"?s.to_tag:s.from_tag,t=r==="UAS"?s.from_tag:s.to_tag,n=s.call_id+o+t;let h=this._earlyDialogs[n];if(a)return h?!0:(h=new Xl(this,s,r,Xl.C.STATUS_EARLY),h.error?(console.log("failed 8"),this._failed("remote",s,$.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[n]=h,!0));{if(this._from_tag=s.from_tag,this._to_tag=s.to_tag,h)return h.update(s,r),this._dialog=h,delete this._earlyDialogs[n],!0;const _=new Xl(this,s,r);return _.error?(console.log("failed 9"),this._failed("remote",s,$.causes.INTERNAL_ERROR),!1):(this._dialog=_,!0)}}_newMSRPSession(s,r){this._ua.newMSRPSession(this,{originator:s,session:this,request:r})}_progress(s,r){this.emit("progress",{originator:s,response:r||null})}isEnded(){switch(this._status){case Re.STATUS_CANCELED:case Re.STATUS_TERMINATED:return!0;default:return!1}}_accepted(s,r){console.log("session accepted"),this._start_time=new Date,console.log('emit "accepted"'),this.emit("accepted",{originator:s,response:r||null})}_confirmed(s,r){console.log("session confirmed"),this._is_confirmed=!0,console.log('emit "confirmed"'),this.emit("confirmed",{originator:s,ack:r||null})}_ended(s,r,a){console.log("session ended"),this._end_time=new Date,this._close(),console.log('emit "ended"'),this.emit("ended",{originator:s,message:r||null,cause:a})}_handleSessionTimersInIncomingResponse(s){if(!this._sessionTimers.enabled)return;let r;s.session_expires&&s.session_expires>=$.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=s.session_expires,r=s.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,r="uac"),this._sessionTimers.refresher=r==="uac",this._runSessionTimer()}receiveRequest(s){if(console.log("receiveRequest()"),s.method===$.CANCEL)(this._status===Re.STATUS_WAITING_FOR_ANSWER||this._status===Re.STATUS_ANSWERED)&&(this._status=Re.STATUS_CANCELED,this._request.reply(487),console.log("failed 10"),this._failed("remote",s,$.causes.CANCELED));else switch(s.method){case $.ACK:if(this._status!==Re.STATUS_WAITING_FOR_ACK)return;if(this._status=Re.STATUS_CONFIRMED,clearTimeout(this._timers.ackTimer),clearTimeout(this._timers.invite2xxTimer),this._late_sdp){if(!s.body){this.terminate({cause:$.causes.MISSING_SDP,status_code:400});break}const r={originator:"remote",type:"answer",sdp:s.body};console.log('emit "sdp"'),this.emit("sdp",r);const a=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(a)).then(()=>{this._is_confirmed||this._confirmed("remote",s)}).catch(o=>{this.terminate({cause:$.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),console.log('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)})}else this._is_confirmed||this._confirmed("remote",s);break;case $.BYE:this._status===Re.STATUS_CONFIRMED||this._status===Re.STATUS_WAITING_FOR_ACK?(s.reply(200),this._ended("remote",s,$.causes.BYE)):this._status===Re.STATUS_INVITE_RECEIVED||this._status===Re.STATUS_WAITING_FOR_ANSWER?(s.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",s,$.causes.BYE)):s.reply(403,"Wrong Status");break;case $.INVITE:this._status===Re.STATUS_CONFIRMED?s.hasHeader("replaces")?this._receiveReplaces(s):this._receiveReinvite(s):s.reply(403,"Wrong Status");break;case $.INFO:this._status===Re.STATUS_1XX_RECEIVED||this._status===Re.STATUS_WAITING_FOR_ANSWER||this._status===Re.STATUS_ANSWERED||this._status===Re.STATUS_WAITING_FOR_ACK||this._status===Re.STATUS_CONFIRMED?(s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0)!==void 0?new Eu(this).init_incoming(s):s.reply(415):s.reply(403,"Wrong Status");break;case $.UPDATE:this._status===Re.STATUS_CONFIRMED?this._receiveUpdate(s):s.reply(403,"Wrong Status");break;case $.REFER:this._status===Re.STATUS_CONFIRMED?this._receiveRefer(s):s.reply(403,"Wrong Status");break;case $.NOTIFY:this._status===Re.STATUS_CONFIRMED?this._receiveNotify(s):s.reply(403,"Wrong Status");break;default:s.reply(501)}}onTransportError(){console.log("onTransportError()"),this._status!==Re.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:$.causes.CONNECTION_ERROR,cause:$.causes.CONNECTION_ERROR})}onRequestTimeout(){console.log("onRequestTimeout()"),this._status!==Re.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:$.causes.REQUEST_TIMEOUT,cause:$.causes.REQUEST_TIMEOUT})}onDialogError(){console.log("onDialogError()"),this._status!==Re.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:$.causes.DIALOG_ERROR,cause:$.causes.DIALOG_ERROR})}}var NT=Xt();const Cu=ze(NT),oa=new Va("Parser"),UT=(c,s)=>{let r,a,o=c.indexOf(`\r
157
- `);if(o===-1){oa.warn("parseMessage() | no CRLF found, not a SIP message");return}const t=c.substring(0,o);let n=Cu.parse(t,"Request_Response");if(n===-1){oa.warn(`parseMessage() | error parsing first line of SIP message: "${t}"`);return}else n.status_code?(r=new Sn.IncomingResponse,r.status_code=n.status_code,r.reason_phrase=n.reason_phrase):(r=new Sn.IncomingRequest(s),r.method=n.method,r.ruri=n.uri);r.data=c;let h=o+2;for(;;){if(o=PT(c,h),o===-2){a=h+2;break}else if(o===-1){oa.warn("parseMessage() | malformed message");return}if(n=xT(r,c,h,o),n!==!0){oa.warn("parseMessage() |",n.error);return}h=o+2}if(r.hasHeader("content-length")){const _=r.getHeader("content-length");r.body=c.substr(a,_)}else r.body=c.substring(a);return r};function PT(c,s){let r=s,a=0,o=0;if(c.substring(r,r+2).match(/(^\r\n)/))return-2;for(;a===0;){if(o=c.indexOf(`\r
158
- `,r),o===-1)return o;!c.substring(o+2,o+4).match(/(^\r\n)/)&&c.charAt(o+2).match(/(^\s+)/)?r=o+2:a=o}return a}function xT(c,s,r,a){let o;const t=s.indexOf(":",r),n=s.substring(r,t).trim(),h=s.substring(t+1,a).trim();switch(n.toLowerCase()){case"via":case"v":c.addHeader("via",h),c.getHeaders("via").length===1?(o=c.parseHeader("Via"),o&&(c.via=o,c.via_branch=o.branch)):o=0;break;case"from":case"f":c.setHeader("from",h),o=c.parseHeader("from"),o&&(c.from=o,c.from_tag=o.getParam("tag"));break;case"to":case"t":c.setHeader("to",h),o=c.parseHeader("to"),o&&(c.to=o,c.to_tag=o.getParam("tag"));break;case"record-route":if(o=Cu.parse(h,"Record_Route"),o===-1)o=void 0;else for(const _ of o)c.addHeader("record-route",h.substring(_.possition,_.offset)),c.headers["Record-Route"][c.getHeaders("record-route").length-1].parsed=_.parsed;break;case"call-id":case"i":c.setHeader("call-id",h),o=c.parseHeader("call-id"),o&&(c.call_id=h);break;case"contact":case"m":if(o=Cu.parse(h,"Contact"),o===-1)o=void 0;else for(const _ of o)c.addHeader("contact",h.substring(_.possition,_.offset)),c.headers.Contact[c.getHeaders("contact").length-1].parsed=_.parsed;break;case"content-length":case"l":c.setHeader("content-length",h),o=c.parseHeader("content-length");break;case"content-type":case"c":c.setHeader("content-type",h),o=c.parseHeader("content-type");break;case"cseq":c.setHeader("cseq",h),o=c.parseHeader("cseq"),o&&(c.cseq=o.value),c instanceof Sn.IncomingResponse&&(c.method=o.method);break;case"max-forwards":c.setHeader("max-forwards",h),o=c.parseHeader("max-forwards");break;case"www-authenticate":c.setHeader("www-authenticate",h),o=c.parseHeader("www-authenticate");break;case"proxy-authenticate":c.setHeader("proxy-authenticate",h),o=c.parseHeader("proxy-authenticate");break;case"session-expires":case"x":c.setHeader("session-expires",h),o=c.parseHeader("session-expires"),o&&(c.session_expires=o.expires,c.session_expires_refresher=o.refresher);break;case"refer-to":case"r":c.setHeader("refer-to",h),o=c.parseHeader("refer-to"),o&&(c.refer_to=o);break;case"replaces":c.setHeader("replaces",h),o=c.parseHeader("replaces"),o&&(c.replaces=o);break;case"event":case"o":c.setHeader("event",h),o=c.parseHeader("event"),o&&(c.event=o);break;default:c.addHeader(n,h),o=0}return o===void 0?{error:`error parsing header "${n}"`}:!0}const MT={parseMessage:UT},Bi=new Va("Registrator"),ua=10;class kT{constructor(s,r){this._reg_id=1,this._ua=s,this._transport=r,this._registrar=s.configuration.registrar_server,this._expires=s.configuration.register_expires,this._call_id=ms.createRandomToken(22),this._cseq=0,this._to_uri=s.configuration.uri,this._registrationTimer=null,this._registering=!1,this._registered=!1,this._contact=this._ua.contact.toString();const a=this._contact.indexOf(">");if(a!==-1){const o=this._contact.slice(0,a)+this._contact.slice(a+1,this._contact.length);this._contact=o}this._extra_contact="",this._extraContactParams="",this._extra_contact+=";+sip.ice",this._extraHeaders=[],this._sipInstance=`"<urn:uuid:${this._ua.configuration.instance_id}>"`,this._extra_contact+=`;reg-id=${this._reg_id}`,this._extra_contact+=`;+sip.instance=${this._sipInstance}`}get registered(){return this._registered}setExtraHeaders(s){Array.isArray(s)||(s=[]),this._extraHeaders=s.slice()}setExtraContactParams(s){s instanceof Object||(s={}),this._extraContactParams="";for(const r in s)if(Object.prototype.hasOwnProperty.call(s,r)){const a=s[r];this._extraContactParams+=`;${r}`,a&&(this._extraContactParams+=`=${a}`)}}setExtraContactUriParams(s){s instanceof Object||(s={}),this._extraContactParams="";for(const r in s)if(Object.prototype.hasOwnProperty.call(s,r)){const a=s[r];this._extraContactParams+=`;${r}`,a&&(this._extraContactParams+=`=${a}`)}}register(){if(this._registering){Bi.debug("Register request in progress...");return}const s=this._extraHeaders.slice();s.push(`Contact: ${this._contact}${this._extraContactParams}>${this._extra_contact};expires=${this._expires}`),s.push(`Expires: ${this._expires}`);const r=new It.OutgoingRequest($.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},s),a=new Ma(this._ua,r,{onRequestTimeout:()=>{this._registrationFailure(null,$.causes.REQUEST_TIMEOUT)},onTransportError:()=>{this._registrationFailure(null,$.causes.CONNECTION_ERROR)},onAuthenticated:()=>{this._cseq+=1},onReceiveResponse:o=>{if(o.cseq===this._cseq)switch(this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),!0){case/^1[0-9]{2}$/.test(o.status_code):break;case/^2[0-9]{2}$/.test(o.status_code):{if(this._registering=!1,!o.hasHeader("Contact")){Bi.debug("no Contact header in response to REGISTER, response ignored");break}const t=o.headers.Contact.reduce((d,g)=>d.concat(g.parsed),[]);let n=t.find(d=>this._sipInstance===d.getParam("+sip.instance")&&this._reg_id===parseInt(d.getParam("reg-id")));if(n||(n=t.find(d=>d.uri.user===this._ua.contact.uri.user)),!n){Bi.debug("no Contact header pointing to us, response ignored");break}let h=n.getParam("expires");!h&&o.hasHeader("expires")&&(h=o.getHeader("expires")),h||(h=this._expires),h=Number(h),h<ua&&(h=ua);const _=h>64?h*1e3/2+Math.floor((h/2-32)*1e3*Math.random()):h*1e3-5e3;this._registrationTimer=setTimeout(()=>{this._registrationTimer=null,this._ua.listeners("registrationExpiring").length===0?this.register():this._ua.emit("registrationExpiring")},_),n.hasParam("temp-gruu")&&(this._ua.contact.temp_gruu=n.getParam("temp-gruu").replace(/"/g,"")),n.hasParam("pub-gruu")&&(this._ua.contact.pub_gruu=n.getParam("pub-gruu").replace(/"/g,"")),this._registered||(this._registered=!0,this._ua.registered({response:o}));break}case/^423$/.test(o.status_code):{o.hasHeader("min-expires")?(this._expires=Number(o.getHeader("min-expires")),this._expires<ua&&(this._expires=ua),this.register()):(Bi.debug("423 response received for REGISTER without Min-Expires"),this._registrationFailure(o,$.causes.SIP_FAILURE_CODE));break}default:{const t=ms.sipErrorCause(o.status_code);this._registrationFailure(o,t)}}}});this._registering=!0,a.send()}unregister(s={}){if(!this._registered){Bi.debug("already unregistered");return}this._registered=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null);const r=this._extraHeaders.slice();s.all?r.push(`Contact: *${this._extraContactParams}`):r.push(`Contact: ${this._contact}${this._extraContactParams}>${this._extra_contact};expires=0`),r.push("Expires: 0");const a=new It.OutgoingRequest($.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},r);new Ma(this._ua,a,{onRequestTimeout:()=>{this._unregistered(null,$.causes.REQUEST_TIMEOUT)},onTransportError:()=>{this._unregistered(null,$.causes.CONNECTION_ERROR)},onAuthenticated:()=>{this._cseq+=1},onReceiveResponse:t=>{switch(!0){case/^1[0-9]{2}$/.test(t.status_code):break;case/^2[0-9]{2}$/.test(t.status_code):this._unregistered(t);break;default:{const n=ms.sipErrorCause(t.status_code);this._unregistered(t,n)}}}}).send()}close(){this._registered&&this.unregister()}onTransportClosed(){this._registering=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),this._registered&&(this._registered=!1,this._ua.unregistered({}))}_registrationFailure(s,r){this._registering=!1,this._ua.registrationFailed({response:s||null,cause:r}),this._registered&&(this._registered=!1,this._ua.unregistered({response:s||null,cause:r}))}_unregistered(s,r){this._registering=!1,this._registered=!1,this._ua.unregistered({response:s||null,cause:r||null})}}const ut=console,js={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2},LT=AT;class $T extends LT{constructor(s){super(s),this._msrp_sessions=[],this._transactions={nist:{},nict:{},ist:{},ict:{}},this._janus_sessions=[],this._registrator=new kT(this)}call(s,r){return super.call(s,r)}joinVideoCall(s,r,a){ut.debug("call()");const o=new ka(this);return o.connect(s,r,a),o}_loadConfig(s){try{tl.load(this._configuration,s)}catch(o){throw o}this._configuration.display_name===0&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=ms.newUUID()),this._configuration.jssip_id=ms.createRandomToken(5);const r=this._configuration.uri.clone();r.user=null,this._configuration.hostport_params=r.toString().replace(/^sip:/i,"");try{this._transport=new Jg(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=HT.bind(this),this._transport.onconnect=FT.bind(this),this._transport.ondisconnect=jT.bind(this),this._transport.ondata=qT.bind(this)}catch(o){throw ut.warn(o),new Fs.ConfigurationError("sockets",this._configuration.sockets)}if(delete this._configuration.sockets,this._configuration.authorization_user||(this._configuration.authorization_user=this._configuration.uri.user),!this._configuration.registrar_server){const o=this._configuration.uri.clone();o.user=null,o.clearParams(),o.clearHeaders(),this._configuration.registrar_server=o}this._configuration.no_answer_timeout*=1e3,this._configuration.contact_uri?this._configuration.via_host=this._configuration.contact_uri.host:this._configuration.contact_uri=new hr("sip",ms.createRandomToken(8),this._configuration.via_host,null,{transport:"ws"}),this._contact={pub_gruu:null,temp_gruu:null,uri:this._configuration.contact_uri,toString(o={}){const t=o.anonymous||null,n=o.outbound||null;let h="<";return t?h+=this.temp_gruu||"sip:anonymous@anonymous.invalid;transport=ws":h+=this.pub_gruu||this.uri.toString(),n&&(t?!this.temp_gruu:!this.pub_gruu)&&(h+=";ob"),h+=">",h}};const a=["authorization_user","password","realm","ha1","authorization_jwt","display_name","register"];for(const o in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,o)&&(a.indexOf(o)!==-1?Object.defineProperty(this._configuration,o,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,o,{writable:!1,configurable:!1}));ut.debug("configuration parameters after validation:");for(const o in this._configuration)if(Object.prototype.hasOwnProperty.call(tl.settings,o))switch(o){case"uri":case"registrar_server":ut.debug(`- ${o}: ${this._configuration[o]}`);break;case"password":case"ha1":case"authorization_jwt":ut.debug(`- ${o}: NOT SHOWN`);break;default:ut.debug(`- ${o}: ${JSON.stringify(this._configuration[o])}`)}}newMSRPSession(s,r){s.on("msgHistoryUpdate",a=>{console.log(a)}),this._msrp_sessions[s.id]=s,this.emit("newMSRPSession",r)}newJanusSession(s,r){this._janus_sessions[s.id]=s,this.emit("newJanusSession",r)}destroyMSRPSession(s){delete this._msrp_sessions[s.id]}destroyJanusSession(s){delete this._janus_sessions[s.id]}receiveRequest(s){var t,n,h,_;const r=s.method;if(console.log("-----------"),s.ruri.user!==this._configuration.uri.user&&s.ruri.user!==this._contact.uri.user){ut.debug("Request-URI does not point to us"),s.method!==De.ACK&&s.reply_sl(404);return}if(s.ruri.scheme===De.SIPS){s.reply_sl(416);return}if(Bt.checkTransaction(this,s))return;if(r===De.INVITE?new Bt.InviteServerTransaction(this,this._transport,s):r!==De.ACK&&r!==De.CANCEL&&new Bt.NonInviteServerTransaction(this,this._transport,s),r===De.OPTIONS){if(this.listeners("newOptions").length===0){s.reply(200);return}new zc.Options(this).init_incoming(s)}else if(r===De.MESSAGE){if(this.listeners("newMessage").length===0){s.reply(405);return}new zc.Message(this).init_incoming(s)}else if(r===De.INVITE&&!s.to_tag&&this.listeners("newRTCSession").length===0){s.reply(405);return}let a,o;if(s.to_tag)if(a=this._findDialog(s.call_id,s.from_tag,s.to_tag),a)a.receiveRequest(s);else if(r===De.NOTIFY)if(o=this._findSession(s),o)o.receiveRequest(s);else{if(s.body)try{const d=JSON.parse(s.body)||{};(n=(t=d.plugindata)==null?void 0:t.data)!=null&&n.publishers&&Object.values(this._janus_sessions)[0].receivePublishers(d),(_=(h=d.plugindata)==null?void 0:h.data)!=null&&_.unpublished&&Object.values(this._janus_sessions)[0].receiveUnpublished(d.plugindata.data.unpublished)}catch(d){console.error(d)}s.reply(200)}else r!==De.ACK&&s.reply(481);else switch(r){case De.INVITE:if(window.RTCPeerConnection)if(s.hasHeader("replaces")){const d=s.replaces;a=this._findDialog(d.call_id,d.from_tag,d.to_tag),a?(o=a.owner,o.isEnded()?s.reply(603):o.receiveRequest(s)):s.reply(481)}else s.body.search(/MSRP/ig)>-1?(o=new tu(this),o.init_incoming(s)):s.body.search(/JANUS/ig)>-1||(o=new Pg(this),o.init_incoming(s));else ut.warn("INVITE received but WebRTC is not supported"),s.reply(488);break;case De.BYE:s.reply(481);break;case De.CANCEL:o=this._findSession(s),o?o.receiveRequest(s):ut.debug("received CANCEL request for a non existent session");break;case De.ACK:break;case De.NOTIFY:this.emit("sipEvent",{event:s.event,request:s}),s.reply(200);break;default:s.reply(405);break}}startMSRP(s,r){ut.debug("startMSRP()",r);const a=new tu(this);return a.connect(s),a}startJanus(s,r){ut.debug("startJanus()",r);const a=new tu(this);return a.connect(s),a}terminateMSRPSessions(s){ut.debug("terminateSessions()");for(const r in this._msrp_sessions)this._msrp_sessions[r].isEnded()||this._msrp_sessions[r].terminate(s)}terminateJanusSessions(s){ut.debug("terminateSessions()");for(const r in this._janus_sessions)this._janus_sessions[r].isEnded()||this._janus_sessions[r].terminate(s)}stop(){if(ut.debug("stop()"),this._dynConfiguration={},this._status===js.STATUS_USER_CLOSED){ut.debug("UA already closed");return}this._registrator.close();const s=Object.keys(this._sessions).length;for(const a in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,a)){ut.debug(`closing session ${a}`);try{this._sessions[a].terminate()}catch(o){console.error(o)}}for(const a in this._msrp_sessions)if(Object.prototype.hasOwnProperty.call(this._msrp_sessions,a)){ut.debug(`closing session ${a}`);try{this._msrp_sessions[a].terminate()}catch(o){console.error(o)}}for(const a in this._janus_sessions)if(Object.prototype.hasOwnProperty.call(this._janus_sessions,a)){ut.debug(`closing session ${a}`);try{this._janus_sessions[a].terminate()}catch(o){console.error(o)}}for(const a in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,a))try{this._applicants[a].close()}catch(o){console.error(o)}this._status=js.STATUS_USER_CLOSED,Object.keys(this._transactions.nict).length+Object.keys(this._transactions.nist).length+Object.keys(this._transactions.ict).length+Object.keys(this._transactions.ist).length===0&&s===0?this._transport.disconnect():this._closeTimer=setTimeout(()=>{this._closeTimer=null,this._transport.disconnect()},2e3)}}function HT(c){this.emit("connecting",c)}function FT(c){this._status!==js.STATUS_USER_CLOSED&&(this._status=js.STATUS_READY,this._error=null,this.emit("connected",c),this._dynConfiguration.register&&this._registrator.register())}function jT(c){const s=["nict","ict","nist","ist"];for(const r of s)for(const a in this._transactions[r])Object.prototype.hasOwnProperty.call(this._transactions[r],a)&&this._transactions[r][a].onTransportError();this.emit("disconnected",c),this._registrator.onTransportClosed(),this._status!==js.STATUS_USER_CLOSED&&(this._status=js.STATUS_NOT_READY,this._error=js.NETWORK_ERROR)}function qT(c){console.log("onTransportData",c);const s=c.transport;let r=c.message;if(r=MT.parseMessage(r,this),!r){console.log("if 1 return");return}if(this._status===js.STATUS_USER_CLOSED&&r instanceof Sn.IncomingRequest){console.log("if 2 return");return}if(!cT(r,this,s)){console.log("if 3 return");return}if(console.log("onTransportData message",r),console.log("onTransportData instanceof",r instanceof Sn.IncomingRequest),r instanceof Sn.IncomingRequest)r.transport=s,console.log("onTransportData receiveRequest"),this.receiveRequest(r);else if(r instanceof Sn.IncomingResponse){let a;switch(r.method){case De.INVITE:a=this._transactions.ict[r.via_branch],a&&a.receiveResponse(r);break;case De.ACK:break;default:a=this._transactions.nict[r.via_branch],a&&a.receiveResponse(r);break}}}const VT=["roomId","_audioMuted","_cancel_reason","_contact","direction","_end_time","_eventsCount","_from_tag","_id","_is_canceled","_is_confirmed","_late_sdp","_localHold","_videoMuted","status","start_time","_remote_identity","audioTag","isOnHold","localMuted","autoAnswer"],BT=["_cancel_reason","_contact","direction","_end_time","_eventsCount","_from_tag","_id","_is_canceled","_is_confirmed","_late_sdp","status","start_time","_remote_identity","target_addr"];function Of(c){const s={};return VT.forEach(r=>{c[r]!==void 0&&(s[r]=c[r])}),s.localHold=c._localHold,s}function Df(c){const s={};return BT.forEach(r=>{c[r]!==void 0&&(s[r]=c[r])}),s}function Nf(c,s){const r=new AudioContext,a=r.createMediaStreamSource(c),o=r.createMediaStreamDestination(),t=r.createGain();return a.connect(t),t.connect(o),t.gain.value=s,o.stream}function GT(c,s,r,a){const o=document.createElement("audio");o.id=s._id,o.className="audioTag",o.srcObject=c,I_()||(o.setSinkId(r),o.volume=a),o.play(),s.audioTag=o}function WT(c){if(c&&typeof c.log=="function"&&typeof c.warn=="function"&&typeof c.error=="function")return!0}function I_(){return/Mobi|Android|iPhone/i.test(navigator.userAgent)}const KT=ot,YT=Xt(),Dt=new KT("WebSocketInterface");var JT=class{constructor(s){Dt.debug('new() [url:"%s"]',s),this._url=s,this._sip_uri=null,this._via_transport=null,this._ws=null;const r=YT.parse(s,"absoluteURI");if(r===-1)throw Dt.warn(`invalid WebSocket URI: ${s}`),new TypeError(`Invalid argument: ${s}`);if(r.scheme!=="wss"&&r.scheme!=="ws")throw Dt.warn(`invalid WebSocket URI scheme: ${r.scheme}`),new TypeError(`Invalid argument: ${s}`);this._sip_uri=`sip:${r.host}${r.port?`:${r.port}`:""};transport=ws`,this._via_transport=r.scheme.toUpperCase()}get via_transport(){return this._via_transport}set via_transport(s){this._via_transport=s.toUpperCase()}get sip_uri(){return this._sip_uri}get url(){return this._url}connect(){if(Dt.debug("connect()"),this.isConnected()){Dt.debug(`WebSocket ${this._url} is already connected`);return}else if(this.isConnecting()){Dt.debug(`WebSocket ${this._url} is connecting`);return}this._ws&&this.disconnect(),Dt.debug(`connecting to WebSocket ${this._url}`);try{this._ws=new WebSocket(this._url,"sip"),this._ws.binaryType="arraybuffer",this._ws.onopen=this._onOpen.bind(this),this._ws.onclose=this._onClose.bind(this),this._ws.onmessage=this._onMessage.bind(this),this._ws.onerror=this._onError.bind(this)}catch(s){this._onError(s)}}disconnect(){Dt.debug("disconnect()"),this._ws&&(this._ws.onopen=()=>{},this._ws.onclose=()=>{},this._ws.onmessage=()=>{},this._ws.onerror=()=>{},this._ws.close(),this._ws=null)}send(s){return Dt.debug("send()"),this.isConnected()?(this._ws.send(s),!0):(Dt.warn("unable to send message, WebSocket is not open"),!1)}isConnected(){return this._ws&&this._ws.readyState===this._ws.OPEN}isConnecting(){return this._ws&&this._ws.readyState===this._ws.CONNECTING}_onOpen(){Dt.debug(`WebSocket ${this._url} connected`),this.onconnect()}_onClose({wasClean:s,code:r,reason:a}){Dt.debug(`WebSocket ${this._url} closed`),s===!1&&Dt.debug("WebSocket abrupt disconnection"),this.ondisconnect(!s,r,a)}_onMessage({data:s}){Dt.debug("received WebSocket message"),this.ondata(s)}_onError(s){Dt.warn(`WebSocket ${this._url} error: `,s)}};const Ru=La,zT=De,XT=Ss,QT=yt(),ZT=R_,ev=Es(),tv=ku(),sv=Xt(),nv=JT,rv=pr("JsSIP");rv("version %s",Ru.version);var iv={C:zT,Exceptions:XT,Utils:QT,UA:ZT,URI:ev,NameAddrHeader:tv,WebSocketInterface:nv,Grammar:sv,debug:pr,get name(){return Ru.title},get version(){return Ru.version}};const lv=ze(iv);function su(c){return c<10?`0${c}`:`${c}`}function av(c){let s=c.hours||0,r=c.minutes||0,a=c.seconds||0;a++,a===60&&(a=0,r++,r===60&&(r=0,s++));const o=`${su(s)}:${su(r)}:${su(a)}`;return{seconds:a,minutes:r,hours:s,formatted:o}}var At={};At.forEach=async(c,s,r)=>{const a=[];for(let o=0;o<c.length;o++)if(o in c){const t=Promise.resolve(c[o]).then(n=>s.call(r||globalThis,n,o,c));a.push(t)}await Promise.all(a)};At.forEachSeries=async(c,s,r)=>{for(let a=0;a<c.length;a++)a in c&&await s.call(r||globalThis,await c[a],a,c)};At.map=async(c,s,r)=>{const a=[];for(let o=0;o<c.length;o++)o in c&&(a[o]=Promise.resolve(c[o]).then(t=>s.call(r||globalThis,t,o,c)));return Promise.all(a)};At.mapSeries=async(c,s,r)=>{const a=[];for(let o=0;o<c.length;o++)o in c&&(a[o]=await s.call(r||globalThis,await c[o],o,c));return a};At.find=(c,s,r)=>new Promise((a,o)=>{if(c.length===0)return a();let t=1;for(let n=0;n<c.length;n++){const h=_=>{_?a(c[n]):t===c.length&&a(),t++};Promise.resolve(c[n]).then(_=>s.call(r||globalThis,_,n,c)).then(h).catch(o)}});At.findSeries=async(c,s,r)=>{for(let a=0;a<c.length;a++)if(await s.call(r||globalThis,await c[a],a,c))return c[a]};At.findIndex=(c,s,r)=>new Promise((a,o)=>{if(c.length===0)return a(-1);let t=1;for(let n=0;n<c.length;n++){const h=_=>{_?a(n):t===c.length&&a(-1),t++};Promise.resolve(c[n]).then(_=>s.call(r||globalThis,_,n,c)).then(h).catch(o)}});At.findIndexSeries=async(c,s,r)=>{for(let a=0;a<c.length;a++)if(await s.call(r||globalThis,await c[a],a,c))return a};At.some=(c,s,r)=>new Promise((a,o)=>{if(c.length===0)return a(!1);let t=1;for(let n=0;n<c.length;n++){if(!(n in c)){t++;continue}const h=_=>{_?a(!0):t===c.length&&a(!1),t++};Promise.resolve(c[n]).then(_=>s.call(r||globalThis,_,n,c)).then(h).catch(o)}});At.someSeries=async(c,s,r)=>{for(let a=0;a<c.length;a++)if(a in c&&await s.call(r||globalThis,await c[a],a,c))return!0;return!1};At.every=(c,s,r)=>new Promise((a,o)=>{if(c.length===0)return a(!0);let t=1;for(let n=0;n<c.length;n++){if(!(n in c)){t++;continue}const h=_=>{_?t===c.length&&a(!0):a(!1),t++};Promise.resolve(c[n]).then(_=>s.call(r||globalThis,_,n,c)).then(h).catch(o)}});At.everySeries=async(c,s,r)=>{for(let a=0;a<c.length;a++)if(a in c&&!await s.call(r||globalThis,await c[a],a,c))return!1;return!0};At.filter=(c,s,r)=>new Promise(async(a,o)=>{const t=[];for(let h=0;h<c.length;h++)h in c&&(t[h]=Promise.resolve(c[h]).then(_=>s.call(r||globalThis,_,h,c)).catch(o));const n=[];for(let h=0;h<t.length;h++)await t[h]&&n.push(await c[h]);a(n)});At.filterSeries=async(c,s,r)=>{const a=[];for(let o=0;o<c.length;o++)o in c&&await s.call(r||globalThis,await c[o],o,c)&&a.push(await c[o]);return a};At.reduce=async(c,s,r)=>{if(c.length===0&&r===void 0)throw TypeError("Reduce of empty array with no initial value");let a,o;for(r!==void 0?(o=r,a=0):(o=c[0],a=1),a;a<c.length;a++)a in c&&(o=await s(await o,await c[a],a,c));return o};var b_={};(function(c){const s=At;Object.keys(s).forEach(r=>{const a=r.charAt(0).toUpperCase()+r.slice(1);c[`async${a}`]=async function(...o){return s[r](this,...o)}})})(b_);const ov=At,uv=b_;var cv=Object.assign(ov,{instanceMethods:uv});const An=new AudioContext,zt={NEW_CALL:"new_call",CALL_CONFIRMED:"confirmed",CALL_FAILED:"failed",CALL_PROGRESS:"progress",CALL_ENDED:"ended"};var fv={exports:{}};(function(c){var s=function(r){var a=Object.prototype,o=a.hasOwnProperty,t=Object.defineProperty||function(ee,W,G){ee[W]=G.value},n,h=typeof Symbol=="function"?Symbol:{},_=h.iterator||"@@iterator",d=h.asyncIterator||"@@asyncIterator",g=h.toStringTag||"@@toStringTag";function T(ee,W,G){return Object.defineProperty(ee,W,{value:G,enumerable:!0,configurable:!0,writable:!0}),ee[W]}try{T({},"")}catch{T=function(W,G,re){return W[G]=re}}function E(ee,W,G,re){var ge=W&&W.prototype instanceof oe?W:oe,be=Object.create(ge.prototype),xe=new P(re||[]);return t(be,"_invoke",{value:J(ee,G,xe)}),be}r.wrap=E;function y(ee,W,G){try{return{type:"normal",arg:ee.call(W,G)}}catch(re){return{type:"throw",arg:re}}}var A="suspendedStart",C="suspendedYield",I="executing",H="completed",L={};function oe(){}function N(){}function j(){}var Se={};T(Se,_,function(){return this});var ve=Object.getPrototypeOf,M=ve&&ve(ve(se([])));M&&M!==a&&o.call(M,_)&&(Se=M);var D=j.prototype=oe.prototype=Object.create(Se);N.prototype=j,t(D,"constructor",{value:j,configurable:!0}),t(j,"constructor",{value:N,configurable:!0}),N.displayName=T(j,g,"GeneratorFunction");function B(ee){["next","throw","return"].forEach(function(W){T(ee,W,function(G){return this._invoke(W,G)})})}r.isGeneratorFunction=function(ee){var W=typeof ee=="function"&&ee.constructor;return W?W===N||(W.displayName||W.name)==="GeneratorFunction":!1},r.mark=function(ee){return Object.setPrototypeOf?Object.setPrototypeOf(ee,j):(ee.__proto__=j,T(ee,g,"GeneratorFunction")),ee.prototype=Object.create(D),ee},r.awrap=function(ee){return{__await:ee}};function V(ee,W){function G(be,xe,Ce,le){var ye=y(ee[be],ee,xe);if(ye.type==="throw")le(ye.arg);else{var st=ye.arg,lt=st.value;return lt&&typeof lt=="object"&&o.call(lt,"__await")?W.resolve(lt.__await).then(function(Ee){G("next",Ee,Ce,le)},function(Ee){G("throw",Ee,Ce,le)}):W.resolve(lt).then(function(Ee){st.value=Ee,Ce(st)},function(Ee){return G("throw",Ee,Ce,le)})}}var re;function ge(be,xe){function Ce(){return new W(function(le,ye){G(be,xe,le,ye)})}return re=re?re.then(Ce,Ce):Ce()}t(this,"_invoke",{value:ge})}B(V.prototype),T(V.prototype,d,function(){return this}),r.AsyncIterator=V,r.async=function(ee,W,G,re,ge){ge===void 0&&(ge=Promise);var be=new V(E(ee,W,G,re),ge);return r.isGeneratorFunction(W)?be:be.next().then(function(xe){return xe.done?xe.value:be.next()})};function J(ee,W,G){var re=A;return function(be,xe){if(re===I)throw new Error("Generator is already running");if(re===H){if(be==="throw")throw xe;return tt()}for(G.method=be,G.arg=xe;;){var Ce=G.delegate;if(Ce){var le=F(Ce,G);if(le){if(le===L)continue;return le}}if(G.method==="next")G.sent=G._sent=G.arg;else if(G.method==="throw"){if(re===A)throw re=H,G.arg;G.dispatchException(G.arg)}else G.method==="return"&&G.abrupt("return",G.arg);re=I;var ye=y(ee,W,G);if(ye.type==="normal"){if(re=G.done?H:C,ye.arg===L)continue;return{value:ye.arg,done:G.done}}else ye.type==="throw"&&(re=H,G.method="throw",G.arg=ye.arg)}}}function F(ee,W){var G=W.method,re=ee.iterator[G];if(re===n)return W.delegate=null,G==="throw"&&ee.iterator.return&&(W.method="return",W.arg=n,F(ee,W),W.method==="throw")||G!=="return"&&(W.method="throw",W.arg=new TypeError("The iterator does not provide a '"+G+"' method")),L;var ge=y(re,ee.iterator,W.arg);if(ge.type==="throw")return W.method="throw",W.arg=ge.arg,W.delegate=null,L;var be=ge.arg;if(!be)return W.method="throw",W.arg=new TypeError("iterator result is not an object"),W.delegate=null,L;if(be.done)W[ee.resultName]=be.value,W.next=ee.nextLoc,W.method!=="return"&&(W.method="next",W.arg=n);else return be;return W.delegate=null,L}B(D),T(D,g,"Generator"),T(D,_,function(){return this}),T(D,"toString",function(){return"[object Generator]"});function X(ee){var W={tryLoc:ee[0]};1 in ee&&(W.catchLoc=ee[1]),2 in ee&&(W.finallyLoc=ee[2],W.afterLoc=ee[3]),this.tryEntries.push(W)}function U(ee){var W=ee.completion||{};W.type="normal",delete W.arg,ee.completion=W}function P(ee){this.tryEntries=[{tryLoc:"root"}],ee.forEach(X,this),this.reset(!0)}r.keys=function(ee){var W=Object(ee),G=[];for(var re in W)G.push(re);return G.reverse(),function ge(){for(;G.length;){var be=G.pop();if(be in W)return ge.value=be,ge.done=!1,ge}return ge.done=!0,ge}};function se(ee){if(ee){var W=ee[_];if(W)return W.call(ee);if(typeof ee.next=="function")return ee;if(!isNaN(ee.length)){var G=-1,re=function ge(){for(;++G<ee.length;)if(o.call(ee,G))return ge.value=ee[G],ge.done=!1,ge;return ge.value=n,ge.done=!0,ge};return re.next=re}}return{next:tt}}r.values=se;function tt(){return{value:n,done:!0}}return P.prototype={constructor:P,reset:function(ee){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(U),!ee)for(var W in this)W.charAt(0)==="t"&&o.call(this,W)&&!isNaN(+W.slice(1))&&(this[W]=n)},stop:function(){this.done=!0;var ee=this.tryEntries[0],W=ee.completion;if(W.type==="throw")throw W.arg;return this.rval},dispatchException:function(ee){if(this.done)throw ee;var W=this;function G(le,ye){return be.type="throw",be.arg=ee,W.next=le,ye&&(W.method="next",W.arg=n),!!ye}for(var re=this.tryEntries.length-1;re>=0;--re){var ge=this.tryEntries[re],be=ge.completion;if(ge.tryLoc==="root")return G("end");if(ge.tryLoc<=this.prev){var xe=o.call(ge,"catchLoc"),Ce=o.call(ge,"finallyLoc");if(xe&&Ce){if(this.prev<ge.catchLoc)return G(ge.catchLoc,!0);if(this.prev<ge.finallyLoc)return G(ge.finallyLoc)}else if(xe){if(this.prev<ge.catchLoc)return G(ge.catchLoc,!0)}else if(Ce){if(this.prev<ge.finallyLoc)return G(ge.finallyLoc)}else throw new Error("try statement without catch or finally")}}},abrupt:function(ee,W){for(var G=this.tryEntries.length-1;G>=0;--G){var re=this.tryEntries[G];if(re.tryLoc<=this.prev&&o.call(re,"finallyLoc")&&this.prev<re.finallyLoc){var ge=re;break}}ge&&(ee==="break"||ee==="continue")&&ge.tryLoc<=W&&W<=ge.finallyLoc&&(ge=null);var be=ge?ge.completion:{};return be.type=ee,be.arg=W,ge?(this.method="next",this.next=ge.finallyLoc,L):this.complete(be)},complete:function(ee,W){if(ee.type==="throw")throw ee.arg;return ee.type==="break"||ee.type==="continue"?this.next=ee.arg:ee.type==="return"?(this.rval=this.arg=ee.arg,this.method="return",this.next="end"):ee.type==="normal"&&W&&(this.next=W),L},finish:function(ee){for(var W=this.tryEntries.length-1;W>=0;--W){var G=this.tryEntries[W];if(G.finallyLoc===ee)return this.complete(G.completion,G.afterLoc),U(G),L}},catch:function(ee){for(var W=this.tryEntries.length-1;W>=0;--W){var G=this.tryEntries[W];if(G.tryLoc===ee){var re=G.completion;if(re.type==="throw"){var ge=re.arg;U(G)}return ge}}throw new Error("illegal catch attempt")},delegateYield:function(ee,W,G){return this.delegate={iterator:se(ee),resultName:W,nextLoc:G},this.method==="next"&&(this.arg=n),L}},r}(c.exports);try{regeneratorRuntime=s}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=s:Function("r","regeneratorRuntime = r")(s)}})(fv);var w_={exports:{}};(function(c){(function(s,r){c.exports?c.exports=r():s.log=r()})(k_,function(){var s=function(){},r="undefined",a=typeof window!==r&&typeof window.navigator!==r&&/Trident\/|MSIE /.test(window.navigator.userAgent),o=["trace","debug","info","warn","error"];function t(C,I){var H=C[I];if(typeof H.bind=="function")return H.bind(C);try{return Function.prototype.bind.call(H,C)}catch{return function(){return Function.prototype.apply.apply(H,[C,arguments])}}}function n(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function h(C){return C==="debug"&&(C="log"),typeof console===r?!1:C==="trace"&&a?n:console[C]!==void 0?t(console,C):console.log!==void 0?t(console,"log"):s}function _(C,I){for(var H=0;H<o.length;H++){var L=o[H];this[L]=H<C?s:this.methodFactory(L,C,I)}this.log=this.debug}function d(C,I,H){return function(){typeof console!==r&&(_.call(this,I,H),this[C].apply(this,arguments))}}function g(C,I,H){return h(C)||d.apply(this,arguments)}function T(C,I,H){var L=this,oe;I=I??"WARN";var N="loglevel";typeof C=="string"?N+=":"+C:typeof C=="symbol"&&(N=void 0);function j(D){var B=(o[D]||"silent").toUpperCase();if(!(typeof window===r||!N)){try{window.localStorage[N]=B;return}catch{}try{window.document.cookie=encodeURIComponent(N)+"="+B+";"}catch{}}}function Se(){var D;if(!(typeof window===r||!N)){try{D=window.localStorage[N]}catch{}if(typeof D===r)try{var B=window.document.cookie,V=B.indexOf(encodeURIComponent(N)+"=");V!==-1&&(D=/^([^;]+)/.exec(B.slice(V))[1])}catch{}return L.levels[D]===void 0&&(D=void 0),D}}function ve(){if(!(typeof window===r||!N)){try{window.localStorage.removeItem(N);return}catch{}try{window.document.cookie=encodeURIComponent(N)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}L.name=C,L.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},L.methodFactory=H||g,L.getLevel=function(){return oe},L.setLevel=function(D,B){if(typeof D=="string"&&L.levels[D.toUpperCase()]!==void 0&&(D=L.levels[D.toUpperCase()]),typeof D=="number"&&D>=0&&D<=L.levels.SILENT){if(oe=D,B!==!1&&j(D),_.call(L,D,C),typeof console===r&&D<L.levels.SILENT)return"No console available for logging"}else throw"log.setLevel() called with invalid level: "+D},L.setDefaultLevel=function(D){I=D,Se()||L.setLevel(D,!1)},L.resetLevel=function(){L.setLevel(I,!1),ve()},L.enableAll=function(D){L.setLevel(L.levels.TRACE,D)},L.disableAll=function(D){L.setLevel(L.levels.SILENT,D)};var M=Se();M==null&&(M=I),L.setLevel(M,!1)}var E=new T,y={};E.getLogger=function(I){if(typeof I!="symbol"&&typeof I!="string"||I==="")throw new TypeError("You must supply a name when creating a logger.");var H=y[I];return H||(H=y[I]=new T(I,E.getLevel(),E.methodFactory)),H};var A=typeof window!==r?window.log:void 0;return E.noConflict=function(){return typeof window!==r&&window.log===E&&(window.log=A),E},E.getLoggers=function(){return y},E.default=E,E})})(w_);var Rt=w_.exports;const gs=()=>`${new Date().toISOString()} | metrics`,Ts=(c,s,r)=>`${c} | ${s} | ${r}`;Rt.setDefaultLevel(Rt.levels.TRACE);const _v=c=>{Rt.info(Ts(gs(),"log ",`set log level to ${c?"verbose":"info"}`)),Rt.setLevel(c?Rt.levels.TRACE:Rt.levels.INFO)},hv=c=>{const s=[...Object.keys(Rt.levels)];s.includes(c)?(Rt.info(Ts(gs(),"log ",`update log level to ${c.toLowerCase()}`)),Rt.setLevel(c)):Rt.warn(Ts(gs(),"log ","Incorrect log level please choose one of "),s)},Pe=(c,s,r)=>{r?Rt.debug(Ts(gs(),c,s),r):Rt.debug(Ts(gs(),c,s))},nu=(c,s)=>{Rt.info(Ts(gs(),c,s))},Cn=(c,s)=>{Rt.info(Ts(gs(),c,s))},Ra=(c,s)=>{Rt.warn(Ts(gs(),c,s))},fr=(c,s)=>{Rt.error(Ts(gs(),c,s))};function dv(c){return Math.floor(Math.random()*c).toString()}function Uf(c,s){let r=s;return c.forEach(a=>{r=r.replace(a,"")}),r}function pv(c,s){let r="";for(let a=0;a<s;a+=1)r+=c[dv(c.length)];return r}function mv({length:c=20,useLetters:s=!0,useNumbers:r=!0,includeSymbols:a=[],excludeSymbols:o=[]}={}){let t="abcdefghijklmnopqrstuvwxyz",n="0123456789",h=[],_=[],d=[];return s&&(o.length&&(t=Uf(o,t)),_=t.split("")),r&&(o.length&&(n=Uf(o,n)),d=n.split("")),h=[..._,...d,...a],pv(h,c)}var gv=mv;const zi=ze(gv),Tv=()=>"WebRTCMetrics",vv=()=>"5.0.3",$e={INBOUND:"inbound",OUTBOUND:"outbound"},ps={IDLE:"idle",RUNNING:"running",MUTED:"muted"},Gi={NEW:"new",CHECKING:"checking",CONNECTED:"connected",COMPLETED:"completed",DISCONNECTED:"disconnected",FAILED:"failed",CLOSED:"closed"},Ev=()=>({...{delta_time_to_measure_probes_ms:0,delta_time_consumed_to_measure_ms:0,delta_KBytes_in:0,delta_KBytes_out:0,delta_kbs_in:0,delta_kbs_out:0,total_time_decoded_in:0,total_time_encoded_out:0,probes:[]}}),O_={level_in:0,codec_id_in:"",codec_in:{mime_type:null,clock_rate:null,sdp_fmtp_line:null},delta_jitter_ms_in:0,percent_packets_lost_in:0,delta_packets_in:0,delta_packets_lost_in:0,total_packets_in:0,total_packets_lost_in:0,total_KBytes_in:0,delta_KBytes_in:0,delta_kbs_in:0,mos_in:0,mos_emodel_in:0,ssrc:"",direction:$e.INBOUND},D_={level_out:0,codec_id_out:"",codec_out:{mime_type:null,clock_rate:null,sdp_fmtp_line:null},delta_jitter_ms_out:0,delta_rtt_ms_out:null,total_rtt_ms_out:0,total_rtt_measure_out:0,percent_packets_lost_out:0,delta_packets_out:0,delta_packets_lost_out:0,total_packets_out:0,total_packets_lost_out:0,total_KBytes_out:0,delta_KBytes_out:0,delta_kbs_out:0,timestamp_out:null,mos_out:0,mos_emodel_out:0,ssrc:"",direction:$e.OUTBOUND},N_={codec_id_in:"",size_in:{width:null,height:null,framerate:null},codec_in:{mime_type:null,clock_rate:null},delta_jitter_ms_in:0,percent_packets_lost_in:0,delta_packets_in:0,delta_packets_lost_in:0,total_packets_in:0,total_packets_lost_in:0,total_KBytes_in:0,delta_KBytes_in:0,delta_kbs_in:0,decoder_in:null,delta_ms_decode_frame_in:0,total_frames_decoded_in:0,total_time_decoded_in:0,delta_nack_sent_in:0,delta_pli_sent_in:0,total_nack_sent_in:0,total_pli_sent_in:0,ssrc:"",direction:$e.INBOUND},U_={codec_id_out:"",size_out:{width:null,height:null,framerate:null},codec_out:{mime_type:null,clock_rate:null},delta_jitter_ms_out:0,delta_rtt_ms_out:null,total_rtt_ms_out:0,total_rtt_measure_out:0,percent_packets_lost_out:0,delta_packets_out:0,delta_packets_lost_out:0,total_packets_out:0,total_packets_lost_out:0,total_KBytes_out:0,delta_KBytes_out:0,delta_kbs_out:0,encoder_out:null,delta_ms_encode_frame_out:0,total_time_encoded_out:0,total_frames_encoded_out:0,delta_nack_received_out:0,delta_pli_received_out:0,total_nack_received_out:0,total_pli_received_out:0,limitation_out:{reason:null,durations:null,resolutionChanges:0},timestamp_out:null,ssrc:"",direction:$e.OUTBOUND},Sv=c=>{const s={pname:"",call_id:"",user_id:"",timestamp:null,count:0,audio:{},video:{},network:{infrastructure:3,local_candidate_id:"",local_candidate_type:"",local_candidate_protocol:"",local_candidate_relay_protocol:"",remote_candidate_id:"",remote_candidate_type:"",remote_candidate_protocol:""},data:{total_KBytes_in:0,total_KBytes_out:0,delta_KBytes_in:0,delta_KBytes_out:0,delta_kbs_in:0,delta_kbs_out:0,delta_kbs_bandwidth_in:0,delta_kbs_bandwidth_out:0,delta_rtt_connectivity_ms:null,total_rtt_connectivity_ms:0,total_rtt_connectivity_measure:0},experimental:{time_to_measure_ms:0}};if(c){const r={...c,audio:{},video:{},data:{...c.data},network:{...c.network},experimental:{...c.experimental}};return Object.keys(c.audio).forEach(a=>{r.audio[a]={...c.audio[a]}}),Object.keys(c.video).forEach(a=>{r.video[a]={...c.video[a]}}),r}return{...s,audio:{},video:{},data:{...s.data},network:{...s.network},experimental:{...s.experimental}}},yv={refreshEvery:2e3,startAfter:0,stopAfter:-1,verbose:!1,pname:`p-${zi()}`,cid:`c-${zi()}`,uid:`u-${zi()}`,record:!1,ticket:!0},Jt={CANDIDATE_PAIR:"candidate-pair",CODEC:"codec",INBOUND_RTP:"inbound-rtp",LOCAL_CANDIDATE:"local-candidate",MEDIA_SOURCE:"media-source",OUTBOUND_RTP:"outbound-rtp",REMOTE_CANDIDATE:"remote-candidate",REMOTE_INBOUND_RTP:"remote-inbound-rtp",TRACK:"track"},q={AUDIO_LEVEL:"audioLevel",AVAILABLE_OUTGOING_BITRATE:"availableOutgoingBitrate",AVAILABLE_INCOMING_BITRATE:"availableIncomingBitrate",BYTES_RECEIVED:"bytesReceived",BYTES_SENT:"bytesSent",CANDIDATE_TYPE:"candidateType",CHANNELS:"channels",CLOCK_RATE:"clockRate",CODEC_ID:"codecId",CURRENT_ROUND_TRIP_TIME:"currentRoundTripTime",ROUND_TRIP_TIME:"roundTripTime",FRACTION_LOST:"fractionLost",FRAME_HEIGHT:"frameHeight",FRAME_WIDTH:"frameWidth",QUALITY_LIMITATION_REASON:"qualityLimitationReason",QUALITY_LIMITATION_DURATIONS:"qualityLimitationDurations",QUALITY_LIMITATION_RESOLUTION_CHANGES:"qualityLimitationResolutionChanges",ID:"id",JITTER:"jitter",KIND:"kind",MEDIA_TYPE:"mediaType",MIME_TYPE:"mimeType",LOCAL_CANDIDATE_ID:"localCandidateId",NETWORK_TYPE:"networkType",RELAY_PROTOCOL:"relayProtocol",NOMINATED:"nominated",PACKETS_LOST:"packetsLost",PACKETS_RECEIVED:"packetsReceived",PACKETS_SENT:"packetsSent",PROTOCOL:"protocol",PORT:"port",REMOTE_CANDIDATE_ID:"remoteCandidateId",REMOTE_SOURCE:"remoteSource",RESPONSES_RECEIVED:"responsesReceived",SDP_FMTP_LINE:"sdpFmtpLine",SSRC:"ssrc",SELECTED:"selected",STATE:"state",TIMESTAMP:"timestamp",TOTAL_ROUND_TRIP_TIME:"totalRoundTripTime",TOTAL_ROUND_TRIP_TIME_MEASUREMENTS:"roundTripTimeMeasurements",TYPE:"type",DECODER_IMPLEMENTATION:"decoderImplementation",ENCODER_IMPLEMENTATION:"encoderImplementation",FRAMES_DECODED:"framesDecoded",FRAMES_ENCODED:"framesEncoded",FRAMES_PER_SECOND:"framesPerSecond",TOTAL_DECODE_TIME:"totalDecodeTime",TOTAL_ENCODE_TIME:"totalEncodeTime",PLI:"pliCount",NACK:"nackCount"},x={SUCCEEDED:"succeeded",AUDIO:"audio",VIDEO:"video"},Wi={ETHERNET:0,CELLULAR_5G:2,WIFI:3,CELLULAR_4G:5,CELLULAR:10},ru={ETHERNET:"ethernet",CELLULAR_4G:"cellular",WIFI:"wifi"},ne={AUDIO:"audio",VIDEO:"video",NETWORK:"network",DATA:"data"},iu="config ",Av=(c,s={},r)=>{const a={...r,...s};return s.pname||Ra(iu,`Argument [String] 'cfg.pname' for the peerConnection name or id is missing - use generated '${r.pname}'`),s.cid||Ra(iu,`Argument [String] 'cfg.cid' for the call name or id is missing - use generated '${r.cid}'`),s.uid||Ra(iu,`Argument [String] 'cfg.uid' for the user name or id is missing - use generated '${r.uid}'`),a.pc=c,a},Cv=(c={})=>{const s={...yv,...c};return s.name=Tv(),s.version=vv(),s},hl=(c,s,r,a=!1,o)=>{let t=c.map(n=>{if(!r)return n[s];if(!o)return n[s][r];const h=n[s][o];return h?h[r]:null});return t=t.filter(n=>a?Number.isFinite(n)&&n>0:Number.isFinite(n)),t.length===0?[]:t},Vs=c=>c.reduce((s,r)=>s+r,0)/c.length,Rv=()=>`probe-${zi()}`,Iv=()=>`coltr-${zi()}`,Pf=c=>new Promise(s=>setTimeout(s,c)),Iu=(c,s,r)=>{s?c.call(s,r):c(r)},Ke=(c,s,r,a)=>{const o=hl(c,s,r,!0,a);if(o.length===0)return null;const t=o.reduce((d,g)=>d+g,0)/o.length;return t===0?null:o.map(d=>Math.abs(t-d)).reduce((d,g)=>d+g,0)/o.length*100/t},Xe=(c,s,r,a=!1,o)=>{const t=hl(c,s,r,a,o);return t.length===0?null:t.reduce((n,h)=>n+h,0)/t.length},vn=(c,s,r)=>hl(c,s,r).reduce((o,t)=>o+t,0),Ye=(c,s,r,a)=>{const o=hl(c,s,r,!0,a);return o.length===0?null:Math.min(...o)},Je=(c,s,r,a)=>{const o=hl(c,s,r,!1,a);return o.length===0?null:Math.max(...o)},gt=(c,s,r,a)=>{const o=c.slice().pop();if(!o)return null;if(!r)return o[s];if(!a)return o[s][r];const t=o[s][a];return t?t[r]:null},bv=c=>c.slice().pop(),ct=(c,s,r)=>{if(!s)return null;const a={};let o=s[x.AUDIO][c];o||(o=r===$e.INBOUND?{...O_}:{...D_}),a[x.AUDIO]=o;let t=s[x.VIDEO][c];return t||(t=r===$e.INBOUND?{...N_}:{...U_}),a[x.VIDEO]=t,a},Ki="exporter ",wv="2.0",xf=(c,s,r)=>{if(!c||c.length===0)return 0;const a=c[c.length-1];if(!a)return 0;const o=a[s][r];if(o){const t=o.total_rtt_ms_out,n=o.total_rtt_measure_out;return!n||!t?Xe(c,s,"delta_rtt_ms_out",!1,r):Number(t/n)}return null},Ov=(c,s)=>{if(!c||c.length===0)return 0;const r=c[c.length-1];if(!r)return 0;const a=r[s].total_rtt_connectivity_ms,o=r[s].total_rtt_connectivity_measure;return!o||!a?Xe(c,s,"delta_rtt_connectivity_ms"):Number(a/o)},Dv=c=>gt(c,"network","local_candidate_type")!=="relay"?`direct/${gt(c,"network","local_candidate_protocol")}`:`turn/${gt(c,"network","local_candidate_relay_protocol")}`,Nv=c=>{const s=gt(c,"network","remote_candidate_type"),r=gt(c,"network","remote_candidate_protocol");return s!=="relay"?`direct/${r}`:`turn/${r}`};class Uv{constructor(s){this._start=null,this._end=null,this._cfg=s,this._referenceReport=null,this._reports=[],this._events=[]}start(){nu(Ki,"start() - start exporter...");const s=new Date;return this._start=s.toJSON(),s}stop(){nu(Ki,"stop() - stop exporter...");const s=new Date;return this._end=s.toJSON(),s}saveReferenceReport(s){this._referenceReport=s}getReferenceReport(){return this._referenceReport}addReport(s){this._cfg.ticket&&(Pe(Ki,`addReport() - add report to exporter at ${s.timestamp}`),this._reports.push(s))}addCustomEvent(s){this._events.push(s)}reset(){nu(Ki,"resetReports() - reset reports"),this._reports=[],this._referenceReport=null,this._start=null,this._end=null}get ticket(){Pe(Ki,"ticket() - generate ticket");const s=gt(this._reports,"audio","total_packets_lost_in"),r=gt(this._reports,"audio","total_packets_in"),a=gt(this._reports,"video","total_packets_lost_in"),o=gt(this._reports,"video","total_packets_in"),t={},n=bv(this._reports);return n&&(Object.keys(n[x.AUDIO]).forEach(h=>{const _=n[x.AUDIO][h];if(t[_.ssrc]={type:x.AUDIO,direction:_.direction},_.direction===$e.INBOUND){const d={avg:Xe(this._reports,x.AUDIO,"delta_jitter_ms_in",!1,h),min:Ye(this._reports,x.AUDIO,"delta_jitter_ms_in",h),max:Je(this._reports,x.AUDIO,"delta_jitter_ms_in",h),volatility:Ke(this._reports,x.AUDIO,"delta_jitter_ms_in",h),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Xe(this._reports,x.AUDIO,"delta_kbs_in",!1,h),min:Ye(this._reports,x.AUDIO,"delta_kbs_in",h),max:Je(this._reports,x.AUDIO,"delta_kbs_in",h),volatility:Ke(this._reports,x.AUDIO,"delta_kbs_in",h),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Xe(this._reports,x.AUDIO,"delta_KBytes_in",!1,h),min:Ye(this._reports,x.AUDIO,"delta_KBytes_in",h),max:Je(this._reports,x.AUDIO,"delta_KBytes_in",h),volatility:Ke(this._reports,x.AUDIO,"delta_KBytes_in",h),_unit:{avg:"KB",min:"KB",max:"KB",volatility:"percent"}},E={emodel:{avg:Xe(this._reports,x.AUDIO,"mos_emodel_in",!1,h),min:Ye(this._reports,x.AUDIO,"mos_emodel_in",h),max:Je(this._reports,x.AUDIO,"mos_emodel_in",h),volatility:Ke(this._reports,x.AUDIO,"mos_emodel_in",h)},effective:{avg:Xe(this._reports,x.AUDIO,"mos_in",!1,h),min:Ye(this._reports,x.AUDIO,"mos_in",h),max:Je(this._reports,x.AUDIO,"mos_in",h),volatility:Ke(this._reports,x.AUDIO,"mos_in",h)},_unit:{avg:"number (1-5)",min:"number (1-5)",max:"number (1-5)",volatility:"percent"}},y=gt(this._reports,x.AUDIO,"total_packets_lost_in",h),A=gt(this._reports,x.AUDIO,"total_packets_in",h),C={lost:y,avg:Math.round((y/(y+A)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}};t[h].jitter=d,t[h].mos=E,t[h].traffic=T,t[h].bitrate=g,t[h].loss=C}else{const d={avg:Xe(this._reports,x.AUDIO,"delta_jitter_ms_out",!1,h),min:Ye(this._reports,x.AUDIO,"delta_jitter_ms_out",h),max:Je(this._reports,x.AUDIO,"delta_jitter_ms_out",h),volatility:Ke(this._reports,x.AUDIO,"delta_jitter_ms_out",h),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Xe(this._reports,x.AUDIO,"delta_kbs_out",!1,h),min:Ye(this._reports,x.AUDIO,"delta_kbs_out",h),max:Je(this._reports,x.AUDIO,"delta_kbs_out",h),volatility:Ke(this._reports,x.AUDIO,"delta_kbs_out",h),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Xe(this._reports,x.AUDIO,"delta_KBytes_out",!1,h),min:Ye(this._reports,x.AUDIO,"delta_KBytes_out",h),max:Je(this._reports,x.AUDIO,"delta_KBytes_out",h),volatility:Ke(this._reports,x.AUDIO,"delta_KBytes_out",h),_unit:{avg:"KB",min:"KB",max:"KB",bitrate:"kbs",volatility:"percent"}},E={avg:xf(this._reports,x.AUDIO,h),min:Ye(this._reports,x.AUDIO,"delta_rtt_ms_out",h),max:Je(this._reports,x.AUDIO,"delta_rtt_ms_out",h),volatility:Ke(this._reports,x.AUDIO,"delta_rtt_ms_out",h),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},y=gt(this._reports,x.AUDIO,"total_packets_lost_out",h),A=gt(this._reports,x.AUDIO,"total_packets_out",h),C={lost:y,avg:Math.round((y/(y+A)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}},I={emodel:{avg:Xe(this._reports,x.AUDIO,"mos_emodel_out",!1,h),min:Ye(this._reports,x.AUDIO,"mos_emodel_out",h),max:Je(this._reports,x.AUDIO,"mos_emodel_out",h),volatility:Ke(this._reports,x.AUDIO,"mos_emodel_out",h)},effective:{avg:Xe(this._reports,x.AUDIO,"mos_out",!1,h),min:Ye(this._reports,x.AUDIO,"mos_out",h),max:Je(this._reports,x.AUDIO,"mos_out",h),volatility:Ke(this._reports,x.AUDIO,"mos_out",h)},_unit:{avg:"number (1-5)",min:"number (1-5)",max:"number (1-5)",volatility:"percent"}};t[h].jitter=d,t[h].rtt=E,t[h].traffic=T,t[h].bitrate=g,t[h].loss=C,t[h].mos=I}}),Object.keys(n[x.VIDEO]).forEach(h=>{const _=n[x.VIDEO][h];if(t[h]={type:x.VIDEO,direction:_.direction},_.direction===$e.INBOUND){const d={avg:Xe(this._reports,x.VIDEO,"delta_jitter_ms_in",!1,h),min:Ye(this._reports,x.VIDEO,"delta_jitter_ms_in",h),max:Je(this._reports,x.VIDEO,"delta_jitter_ms_in",h),volatility:Ke(this._reports,x.VIDEO,"delta_jitter_ms_in",h),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Xe(this._reports,x.VIDEO,"delta_kbs_in",!1,h),min:Ye(this._reports,x.VIDEO,"delta_kbs_in",h),max:Je(this._reports,x.VIDEO,"delta_kbs_in",h),volatility:Ke(this._reports,x.VIDEO,"delta_kbs_in",h),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Xe(this._reports,x.VIDEO,"delta_KBytes_in",!1,h),min:Ye(this._reports,x.VIDEO,"delta_KBytes_in",h),max:Je(this._reports,x.VIDEO,"delta_KBytes_in",h),volatility:Ke(this._reports,x.VIDEO,"delta_KBytes_in",h),_unit:{avg:"KB",min:"KB",max:"KB",volatility:"percent"}},E=gt(this._reports,x.VIDEO,"total_packets_lost_in",h),y=gt(this._reports,x.VIDEO,"total_packets_in",h),A={lost:E,avg:Math.round((E/(E+y)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}};t[h].jitter=d,t[h].traffic=T,t[h].bitrate=g,t[h].loss=A}else{const d={avg:Xe(this._reports,x.VIDEO,"delta_jitter_ms_out",!1,h),min:Ye(this._reports,x.VIDEO,"delta_jitter_ms_out",h),max:Je(this._reports,x.VIDEO,"delta_jitter_ms_out",h),volatility:Ke(this._reports,x.VIDEO,"delta_jitter_ms_out",h),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Xe(this._reports,x.VIDEO,"delta_kbs_out",!1,h),min:Ye(this._reports,x.VIDEO,"delta_kbs_out",h),max:Je(this._reports,x.VIDEO,"delta_kbs_out",h),volatility:Ke(this._reports,x.VIDEO,"delta_kbs_out",h),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Xe(this._reports,x.VIDEO,"delta_KBytes_out",!1,h),min:Ye(this._reports,x.VIDEO,"delta_KBytes_out",h),max:Je(this._reports,x.VIDEO,"delta_KBytes_out",h),volatility:Ke(this._reports,x.VIDEO,"delta_KBytes_out",h),_unit:{avg:"KB",min:"KB",max:"KB",volatility:"percent"}},E={avg:xf(this._reports,x.VIDEO,h),min:Ye(this._reports,x.VIDEO,"delta_rtt_ms_out",h),max:Je(this._reports,x.VIDEO,"delta_rtt_ms_out",h),volatility:Ke(this._reports,x.VIDEO,"delta_rtt_ms_out",h),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},y=gt(this._reports,x.VIDEO,"total_packets_lost_out",h),A=gt(this._reports,x.VIDEO,"total_packets_out",h),C={lost:y,avg:Math.round((y/(y+A)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}};t[h].jitter=d,t[h].rtt=E,t[h].traffic=T,t[h].bitrate=g,t[h].loss=C}})),{version:wv,configuration:{frequency:this._cfg.refreshEvery},started:this._start,ended:this._end,ua:{agent:navigator.userAgent,pname:this._cfg.pname,user_id:this._cfg.uid},call:{call_id:this._cfg.cid,events:this._events},details:{count:this._reports.length,reports:this._cfg.record?this._reports:[],reference:this._referenceReport||null},ssrc:t,data:{rtt:{avg:Ov(this._reports,"data"),min:Ye(this._reports,"data","delta_rtt_connectivity_ms"),max:Je(this._reports,"data","delta_rtt_connectivity_ms"),volatility:Ke(this._reports,"data","delta_rtt_connectivity_ms"),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},packetsLost:{audio:{in:{avg:Math.round((s/(s+r)*100||0)*100)/100}},video:{in:{avg:Math.round((a/(a+o)*100||0)*100)/100}},unit:{avg:"percent"}},bitrate:{in:{avg:Xe(this._reports,"data","delta_kbs_in"),min:Ye(this._reports,"data","delta_kbs_in"),max:Je(this._reports,"data","delta_kbs_in"),volatility:Ke(this._reports,"data","delta_kbs_in")},out:{avg:Xe(this._reports,"data","delta_kbs_out"),min:Ye(this._reports,"data","delta_kbs_out"),max:Je(this._reports,"data","delta_kbs_out"),volatility:Ke(this._reports,"data","delta_kbs_out")},unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},traffic:{in:{avg:Xe(this._reports,"data","delta_KBytes_in"),min:Ye(this._reports,"data","delta_KBytes_in"),max:Je(this._reports,"data","delta_KBytes_in"),volatility:Ke(this._reports,"data","delta_KBytes_in")},out:{avg:Xe(this._reports,"data","delta_KBytes_out"),min:Ye(this._reports,"data","delta_KBytes_out"),max:Je(this._reports,"data","delta_KBytes_out"),volatility:Ke(this._reports,"data","delta_KBytes_out")},unit:{avg:"KBytes",min:"KBytes",max:"KBytes",volatility:"percent"}},network:{localConnection:Dv(this._reports),remoteConnection:Nv(this._reports)}}}}updateConfig(s){this._cfg=s}getLastReport(){return this._reports.slice().pop()||null}getBeforeLastReport(){const s=this._reports.slice();return s.pop(),s.pop()||null}getReportsNumber(){return this._reports.length}}const Hs="extractor ",Mf=(c,s,r,a)=>{let o=!1;const t=a[s].total_rtt_ms_out,n=a[s].total_rtt_measure_out,h=r?r[s].total_rtt_ms_out:0,_=r?r[s].total_rtt_measure_out:0,d={rtt:null,totalRTT:t,totalRTTMeasurements:n};if(c[q.TIMESTAMP]===a[s].timestamp_out||!Object.prototype.hasOwnProperty.call(c,q.ROUND_TRIP_TIME)||Object.prototype.hasOwnProperty.call(c,q.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS)&&(o=!0,Number(c[q.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS])===0||Number(c[q.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS])-_===n))return d;const g=1e3*Number(c[q.ROUND_TRIP_TIME]);let T=t+g,E=n+1;return o&&(T=1e3*Number(c[q.TOTAL_ROUND_TRIP_TIME])-h,E=Number(c[q.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS])-_),{rtt:g,totalRTT:T,totalRTTMeasurements:E}},Pv=(c,s,r,a)=>{if(!Object.prototype.hasOwnProperty.call(c,q.CURRENT_ROUND_TRIP_TIME))return{rtt:null,totalRTT:a[s].total_rtt_connectivity_ms,totalRTTMeasurements:a[s].total_rtt_connectivity_measure};const o=1e3*Number(c[q.CURRENT_ROUND_TRIP_TIME]);let t=a[s].total_rtt_connectivity_ms+o,n=a[s].total_rtt_connectivity_measure+1;return Object.prototype.hasOwnProperty.call(c,q.TOTAL_ROUND_TRIP_TIME)&&(t=1e3*Number(c[q.TOTAL_ROUND_TRIP_TIME])-(r?r[s].total_rtt_connectivity_ms:0)),Object.prototype.hasOwnProperty.call(c,q.RESPONSES_RECEIVED)&&(n=Number(c[q.RESPONSES_RECEIVED])-(r?r[s].total_rtt_connectivity_measure:0)),{rtt:o,totalRTT:t,totalRTTMeasurements:n}},ca=(c,s,r)=>c[q.TIMESTAMP]===r[s].timestamp_out||!Object.prototype.hasOwnProperty.call(c,q.JITTER)?null:1e3*(Number(c[q.JITTER])||0),xv=(c,s)=>{if(!Object.prototype.hasOwnProperty.call(c,q.FRAMES_DECODED)||!Object.prototype.hasOwnProperty.call(c,q.TOTAL_DECODE_TIME))return{delta_ms_decode_frame:s[x.VIDEO].delta_ms_decode_frame_in,frames_decoded:s[x.VIDEO].total_frames_decoded_in,total_decode_time:s[x.VIDEO].total_time_decoded_in};const r=c[q.FRAMES_DECODED],a=c[q.TOTAL_DECODE_TIME],o=a-s[x.VIDEO].total_time_decoded_in,t=r-s[x.VIDEO].total_frames_decoded_in;return{delta_ms_decode_frame:t>0?o*1e3/t:0,frames_decoded:r,total_decode_time:a}},Mv=(c,s)=>{if(!Object.prototype.hasOwnProperty.call(c,q.FRAMES_ENCODED)||!Object.prototype.hasOwnProperty.call(c,q.TOTAL_ENCODE_TIME))return{delta_ms_encode_frame:s[x.VIDEO].delta_ms_encode_frame_out,frames_encoded:s[x.VIDEO].total_frames_encoded_out,total_encode_time:s[x.VIDEO].total_time_encoded_out};const r=c[q.FRAMES_ENCODED],a=c[q.TOTAL_ENCODE_TIME],o=a-s[x.VIDEO].total_time_encoded_out,t=r-s[x.VIDEO].total_frames_encoded_out;return{delta_ms_encode_frame:t>0&&o?o*1e3/t:0,frames_encoded:r,total_encode_time:a}},kf=(c,s,r,a)=>{if(!Object.prototype.hasOwnProperty.call(c,q.PACKETS_SENT)||!Object.prototype.hasOwnProperty.call(c,q.BYTES_SENT))return{packetsSent:r[s].total_packets_out,packetsLost:r[s].total_packets_lost_out,bytesSent:r[s].total_KBytes_out};const o=Number(c[q.PACKETS_SENT])||0-(a?a[s].total_packets_out:0),t=o-r[s].total_packets_out,n=Number(c[q.BYTES_SENT])/1024-(a?a[s].total_KBytes_out:0),h=n-r[s].total_KBytes_out,_=c[q.TIMESTAMP]||Date.now(),d=a?a.timestamp:null;let g=r.timestamp;!g&&d&&(g=d);const T=g?_-g:0,E=T>0?h*.008*1024/T*1e3:0;return{packetsSent:o,deltaPacketsSent:t,KBytesSent:n,deltaKBytesSent:h,kbsSent:E}},Lf=(c,s,r,a)=>{let o=r[s].total_packets_lost_out,t=0,n=0;return Object.prototype.hasOwnProperty.call(c,q.PACKETS_LOST)&&(o=Number(c[q.PACKETS_LOST])||0-(a?a[s].total_packets_lost_out:0),t=o-r[s].total_packets_lost_out),Object.prototype.hasOwnProperty.call(c,q.FRACTION_LOST)&&(n=Number(100*c[q.FRACTION_LOST])),{packetsLost:o,deltaPacketsLost:t,fractionLost:n}},$f=(c,s,r,a)=>{if(!Object.prototype.hasOwnProperty.call(c,q.PACKETS_RECEIVED)||!Object.prototype.hasOwnProperty.call(c,q.PACKETS_LOST)||!Object.prototype.hasOwnProperty.call(c,q.BYTES_RECEIVED))return{percent_packets_lost:r[s].percent_packets_lost_in,packetsReceived:r[s].total_packets_in,packetsLost:r[s].total_packets_lost_in,bytesReceived:r[s].total_KBytes_in};const o=Number(c[q.PACKETS_RECEIVED])||0-(a?a[s].total_packets_in:0),t=Number(c[q.PACKETS_LOST])||0-(a?a[s].total_packets_lost_in:0),n=t-r[s].total_packets_lost_in,h=o-r[s].total_packets_in,_=o!==r[s].total_packets_in?n*100/(n+h):0,d=Number(c[q.BYTES_RECEIVED])/1024-(a?a[s].total_KBytes_in:0),g=d-r[s].total_KBytes_in,T=c[q.TIMESTAMP]||Date.now(),E=a?a.timestamp:null;let y=r.timestamp;!y&&E&&(y=E);const A=y?T-y:0,C=A>0?g*.008*1024/A*1e3:0;return{percentPacketsLost:_,packetsReceived:o,deltaPacketsReceived:h,packetsLost:t,deltaPacketsLost:n,KBytesReceived:d,deltaKBytesReceived:g,kbsReceived:C}},kv=c=>c[q.CANDIDATE_TYPE]!=="relay"?"":c[q.RELAY_PROTOCOL]||"",Lv=c=>{if(!Object.prototype.hasOwnProperty.call(c,q.NETWORK_TYPE))return Wi.WIFI;switch(c[q.NETWORK_TYPE]){case ru.ETHERNET:return Wi.ETHERNET;case ru.CELLULAR_4G:return Wi.CELLULAR_4G;case ru.WIFI:return Wi.WIFI;default:return Wi.CELLULAR}},Hf=c=>!Object.prototype.hasOwnProperty.call(c,q.FRAME_HEIGHT)||!Object.prototype.hasOwnProperty.call(c,q.FRAME_WIDTH)?{width:null,height:null,framerate:null}:{width:c[q.FRAME_WIDTH]||null,height:c[q.FRAME_HEIGHT]||null,framerate:c[q.FRAMES_PER_SECOND]},$v=c=>{const s=Object.prototype.hasOwnProperty.call(c,q.QUALITY_LIMITATION_REASON)?c[q.QUALITY_LIMITATION_REASON]:null,r=Object.prototype.hasOwnProperty.call(c,q.QUALITY_LIMITATION_RESOLUTION_CHANGES)?c[q.QUALITY_LIMITATION_RESOLUTION_CHANGES]:null,a=Object.prototype.hasOwnProperty.call(c,q.QUALITY_LIMITATION_DURATIONS)?c[q.QUALITY_LIMITATION_DURATIONS]:null;return a&&Object.keys(a).forEach(o=>{a[o]>1e3&&(a[o]=Number(a[o]/1e3))}),{reason:s,durations:a,resolutionChanges:r}},Hv=(c,s,r)=>{if(!Object.prototype.hasOwnProperty.call(c,q.PLI)||!Object.prototype.hasOwnProperty.call(c,q.NACK))return{pliCount:s.total_pli_sent_in,nackCount:s.total_nack_sent_in,deltaPliCount:0,deltaNackCount:0};const a=(c[q.PLI]||0)-(r?r[x.VIDEO].total_pli_sent_in:0),o=(c[q.NACK]||0)-(r?r[x.VIDEO].total_nack_sent_in:0);return{pliCount:a,nackCount:o,deltaPliCount:a-s[x.VIDEO].total_pli_sent_in,deltaNackCount:o-s[x.VIDEO].total_nack_sent_in}},Fv=(c,s,r)=>{if(!Object.prototype.hasOwnProperty.call(c,q.PLI)||!Object.prototype.hasOwnProperty.call(c,q.NACK))return{pliCount:s.total_pli_received_out,nackCount:s.total_nack_received_out,deltaPliCount:0,deltaNackCount:0};const a=(c[q.PLI]||0)-(r?r[x.VIDEO].total_pli_received_out:0),o=(c[q.NACK]||0)-(r?r[x.VIDEO].total_nack_received_out:0);return{pliCount:a,nackCount:o,deltaPliCount:a-s[x.VIDEO].total_pli_received_out,deltaNackCount:o-s[x.VIDEO].total_nack_received_out}},jv=c=>({channels:c[q.CHANNELS]||null,clock_rate:c[q.CLOCK_RATE]||null,mime_type:c[q.MIME_TYPE]||null,sdp_fmtp_line:c[q.SDP_FMTP_LINE]||null}),qv=c=>({clock_rate:c[q.CLOCK_RATE]||null,mime_type:c[q.MIME_TYPE]||null}),Vv=(c,s,r)=>{const a=(c[q.BYTES_RECEIVED]||0)/1024-(r?r.data.total_KBytes_in:0),o=(c[q.BYTES_SENT]||0)/1024-(r?r.data.total_KBytes_out:0),t=c[q.TIMESTAMP]||Date.now(),n=a-s.data.total_KBytes_in,h=o-s.data.total_KBytes_out,_=r?r.timestamp:null;let d=s.timestamp;!d&&_&&(d=_);const g=d?t-d:0,T=g>0?n*.008*1024/g*1e3:0,E=g>0?h*.008*1024/g*1e3:0;return{total_KBytes_received:a,total_KBytes_sent:o,delta_KBytes_received:n,delta_KBytes_sent:h,kbs_speed_received:T,kbs_speed_sent:E}},Bv=c=>{const s=c[q.AVAILABLE_INCOMING_BITRATE]/1024||0,r=c[q.AVAILABLE_OUTGOING_BITRATE]/1024||0;return{kbs_incoming_bandwidth:s,kbs_outgoing_bandwidth:r}},Gv=(c,s,r,a)=>{if(!c)return[];switch(c[q.TYPE]){case Jt.CANDIDATE_PAIR:let o=!1;if(c[q.NOMINATED]&&c[q.STATE]===x.SUCCEEDED&&(o=!0,Pe(Hs,`analyze() - got stats ${c[q.TYPE]} for ${r}`,c),q.SELECTED in c&&!c[q.SELECTED]&&(o=!1)),o){const n=c[q.LOCAL_CANDIDATE_ID],h=c[q.REMOTE_CANDIDATE_ID],_=Vv(c,s,a),d=Bv(c),g=Pv(c,"data",a,s);return[{type:ne.NETWORK,value:{local_candidate_id:n}},{type:ne.NETWORK,value:{remote_candidate_id:h}},{type:ne.DATA,value:{total_KBytes_in:_.total_KBytes_received}},{type:ne.DATA,value:{total_KBytes_out:_.total_KBytes_sent}},{type:ne.DATA,value:{delta_KBytes_in:_.delta_KBytes_received}},{type:ne.DATA,value:{delta_KBytes_out:_.delta_KBytes_sent}},{type:ne.DATA,value:{delta_kbs_in:_.kbs_speed_received}},{type:ne.DATA,value:{delta_kbs_out:_.kbs_speed_sent}},{type:ne.DATA,value:{delta_kbs_bandwidth_in:d.kbs_incoming_bandwidth}},{type:ne.DATA,value:{delta_kbs_bandwidth_out:d.kbs_outgoing_bandwidth}},{type:ne.DATA,value:{delta_rtt_connectivity_ms:g.rtt}},{type:ne.DATA,value:{total_rtt_connectivity_ms:g.totalRTT}},{type:ne.DATA,value:{total_rtt_connectivity_measure:g.totalRTTMeasurements}}]}break;case Jt.LOCAL_CANDIDATE:if(c[q.ID]===s.network.local_candidate_id)return[{type:ne.NETWORK,value:{infrastructure:Lv(c)}},{type:ne.NETWORK,value:{local_candidate_type:c[q.CANDIDATE_TYPE]||""}},{type:ne.NETWORK,value:{local_candidate_protocol:c[q.PROTOCOL]||""}},{type:ne.NETWORK,value:{local_candidate_relay_protocol:kv(c)}}];break;case Jt.REMOTE_CANDIDATE:if(c[q.ID]===s.network.remote_candidate_id)return[{type:ne.NETWORK,value:{remote_candidate_type:c[q.CANDIDATE_TYPE]||""}},{type:ne.NETWORK,value:{remote_candidate_protocol:c[q.PROTOCOL]||""}}];break;case Jt.INBOUND_RTP:{Pe(Hs,`analyze() - got stats ${c[q.TYPE]} for ${r}`,c);const n=c[q.SSRC],h=ct(n,s,$e.INBOUND);h&&(h.timestamp=s.timestamp);const _=ct(n,a,$e.INBOUND);if(_&&(_.timestamp=a.timestamp),c[q.MEDIA_TYPE]===x.AUDIO){const d=$f(c,x.AUDIO,h,_),g=ca(c,x.AUDIO,h),T=c[q.CODEC_ID]||"";return[{ssrc:n,type:ne.AUDIO,value:{codec_id_in:T}},{ssrc:n,type:ne.AUDIO,value:{total_packets_in:d.packetsReceived}},{ssrc:n,type:ne.AUDIO,value:{delta_packets_in:d.deltaPacketsReceived}},{ssrc:n,type:ne.AUDIO,value:{total_packets_lost_in:d.packetsLost}},{ssrc:n,type:ne.AUDIO,value:{delta_packets_lost_in:d.deltaPacketsLost}},{ssrc:n,type:ne.AUDIO,value:{percent_packets_lost_in:d.percentPacketsLost}},{ssrc:n,type:ne.AUDIO,value:{total_KBytes_in:d.KBytesReceived}},{ssrc:n,type:ne.AUDIO,value:{delta_KBytes_in:d.deltaKBytesReceived}},{ssrc:n,type:ne.AUDIO,value:{delta_kbs_in:d.kbsReceived}},{ssrc:n,type:ne.AUDIO,value:{delta_jitter_ms_in:g}}]}if(c[q.MEDIA_TYPE]===x.VIDEO){const d=xv(c,h),g=$f(c,x.VIDEO,h,_),T=ca(c,x.VIDEO,h),E=c[q.DECODER_IMPLEMENTATION]||null,y=c[q.CODEC_ID]||null,A=Hf(c),C=Hv(c,h,_);return[{ssrc:n,type:ne.VIDEO,value:{codec_id_in:y}},{ssrc:n,type:ne.VIDEO,value:{total_packets_in:g.packetsReceived}},{ssrc:n,type:ne.VIDEO,value:{delta_packets_in:g.deltaPacketsReceived}},{ssrc:n,type:ne.VIDEO,value:{total_packets_lost_in:g.packetsLost}},{ssrc:n,type:ne.VIDEO,value:{delta_packets_lost_in:g.deltaPacketsLost}},{ssrc:n,type:ne.VIDEO,value:{percent_packets_lost_in:g.percentPacketsLost}},{ssrc:n,type:ne.VIDEO,value:{total_KBytes_in:g.KBytesReceived}},{ssrc:n,type:ne.VIDEO,value:{delta_KBytes_in:g.deltaKBytesReceived}},{ssrc:n,type:ne.VIDEO,value:{delta_kbs_in:g.kbsReceived}},{ssrc:n,type:ne.VIDEO,value:{delta_jitter_ms_in:T}},{ssrc:n,type:ne.VIDEO,value:{decoder_in:E}},{ssrc:n,type:ne.VIDEO,value:{delta_ms_decode_frame_in:d.delta_ms_decode_frame}},{ssrc:n,type:ne.VIDEO,value:{total_frames_decoded_in:d.frames_decoded}},{ssrc:n,type:ne.VIDEO,value:{total_time_decoded_in:d.total_decode_time}},{ssrc:n,type:ne.VIDEO,value:{total_nack_sent_in:C.nackCount}},{ssrc:n,type:ne.VIDEO,value:{delta_nack_sent_in:C.deltaNackCount}},{ssrc:n,type:ne.VIDEO,value:{total_pli_sent_in:C.pliCount}},{ssrc:n,type:ne.VIDEO,value:{delta_pli_sent_in:C.deltaPliCount}},{ssrc:n,type:ne.VIDEO,value:{size_in:A}}]}break}case Jt.OUTBOUND_RTP:{Pe(Hs,`analyze() - got stats ${c[q.TYPE]} for ${r}`,c);const n=c[q.SSRC],h=ct(n,s,$e.OUTBOUND);h&&(h.timestamp=s.timestamp);const _=ct(n,a,$e.OUTBOUND);if(_&&(_.timestamp=a.timestamp),c[q.MEDIA_TYPE]===x.AUDIO){const d=c[q.CODEC_ID]||null,g=kf(c,x.AUDIO,h,_);return[{ssrc:n,type:ne.AUDIO,value:{codec_id_out:d}},{ssrc:n,type:ne.AUDIO,value:{total_packets_out:g.packetsSent}},{ssrc:n,type:ne.AUDIO,value:{delta_packets_out:g.deltaPacketsSent}},{ssrc:n,type:ne.AUDIO,value:{total_KBytes_out:g.KBytesSent}},{ssrc:n,type:ne.AUDIO,value:{delta_KBytes_out:g.deltaKBytesSent}},{ssrc:n,type:ne.AUDIO,value:{delta_kbs_out:g.kbsSent}}]}if(c[q.MEDIA_TYPE]===x.VIDEO){const d=c[q.ENCODER_IMPLEMENTATION]||null,g=c[q.CODEC_ID]||null,T=Mv(c,h),E=Hf(c),y=$v(c),A=Fv(c,h,_),C=kf(c,x.VIDEO,h,_);return[{ssrc:n,type:ne.VIDEO,value:{codec_id_out:g}},{ssrc:n,type:ne.VIDEO,value:{total_packets_out:C.packetsSent}},{ssrc:n,type:ne.VIDEO,value:{delta_packets_out:C.deltaPacketsSent}},{ssrc:n,type:ne.VIDEO,value:{total_KBytes_out:C.KBytesSent}},{ssrc:n,type:ne.VIDEO,value:{delta_KBytes_out:C.deltaKBytesSent}},{ssrc:n,type:ne.VIDEO,value:{delta_kbs_out:C.kbsSent}},{ssrc:n,type:ne.VIDEO,value:{encoder_out:d}},{ssrc:n,type:ne.VIDEO,value:{delta_ms_encode_frame_out:T.delta_ms_encode_frame}},{ssrc:n,type:ne.VIDEO,value:{total_frames_encoded_out:T.frames_encoded}},{ssrc:n,type:ne.VIDEO,value:{total_time_encoded_out:T.total_encode_time}},{ssrc:n,type:ne.VIDEO,value:{total_nack_received_out:A.nackCount}},{ssrc:n,type:ne.VIDEO,value:{delta_nack_received_out:A.deltaNackCount}},{ssrc:n,type:ne.VIDEO,value:{total_pli_received_out:A.pliCount}},{ssrc:n,type:ne.VIDEO,value:{delta_pli_received_out:A.deltaPliCount}},{ssrc:n,type:ne.VIDEO,value:{size_out:E}},{ssrc:n,type:ne.VIDEO,value:{limitation_out:y}}]}break}case Jt.MEDIA_SOURCE:{Pe(Hs,`analyze() - got stats ${c[q.TYPE]} for ${r}`,c);break}case Jt.TRACK:{Pe(Hs,`analyze() - got stats ${c[q.TYPE]} for ${r}`,c);break}case Jt.CODEC:const t=[];return Object.keys(s[x.AUDIO]).forEach(n=>{const h=s[x.AUDIO][n];if(h.codec_id_in===c[q.ID]||h.codec_id_out===c[q.ID]){Pe(Hs,`analyze() - got stats ${c[q.TYPE]} for ${r}`,c);const _=jv(c);c[q.ID]===h.codec_id_in?t.push({ssrc:h.ssrc,type:ne.AUDIO,value:{codec_in:_}}):t.push({ssrc:h.ssrc,type:ne.AUDIO,value:{codec_out:_}})}}),Object.keys(s[x.VIDEO]).forEach(n=>{const h=s[x.VIDEO][n];if(h.codec_id_in===c[q.ID]||h.codec_id_out===c[q.ID]){Pe(Hs,`analyze() - got stats ${c[q.TYPE]} for ${r}`,c);const _=qv(c);c[q.ID]===h.codec_id_in?t.push({ssrc:h.ssrc,type:ne.VIDEO,value:{codec_in:_}}):t.push({ssrc:h.ssrc,type:ne.VIDEO,value:{codec_out:_}})}}),t;case Jt.REMOTE_INBOUND_RTP:{Pe(Hs,`analyze() - got stats ${c[q.TYPE]} for ${r}`,c);const n=c[q.SSRC],h=ct(n,s,$e.OUTBOUND),_=ct(n,a,$e.OUTBOUND);if(c[q.KIND]===x.AUDIO){const d=Mf(c,x.AUDIO,_,h),g=ca(c,x.AUDIO,h),T=Lf(c,x.AUDIO,h,_);return[{ssrc:n,type:ne.AUDIO,value:{delta_rtt_ms_out:d.rtt}},{ssrc:n,type:ne.AUDIO,value:{total_rtt_ms_out:d.totalRTT}},{ssrc:n,type:ne.AUDIO,value:{total_rtt_measure_out:d.totalRTTMeasurements}},{ssrc:n,type:ne.AUDIO,value:{delta_jitter_ms_out:g}},{ssrc:n,type:ne.AUDIO,value:{timestamp_out:c[q.TIMESTAMP]}},{ssrc:n,type:ne.AUDIO,value:{total_packets_lost_out:T.packetsLost}},{ssrc:n,type:ne.AUDIO,value:{delta_packets_lost_out:T.deltaPacketsLost}},{ssrc:n,type:ne.AUDIO,value:{percent_packets_lost_out:T.fractionLost}}]}if(c[q.KIND]===x.VIDEO){const d=Mf(c,x.VIDEO,_,h),g=ca(c,x.VIDEO,h),T=Lf(c,x.VIDEO,h,_);return[{ssrc:n,type:ne.VIDEO,value:{delta_rtt_ms_out:d.rtt}},{ssrc:n,type:ne.VIDEO,value:{total_rtt_ms_out:d.totalRTT}},{ssrc:n,type:ne.VIDEO,value:{total_rtt_measure_out:d.totalRTTMeasurements}},{ssrc:n,type:ne.VIDEO,value:{delta_jitter_ms_out:g}},{ssrc:n,type:ne.VIDEO,value:{timestamp_out:c[q.TIMESTAMP]}},{ssrc:n,type:ne.VIDEO,value:{total_packets_lost_out:T.packetsLost}},{ssrc:n,type:ne.VIDEO,value:{delta_packets_lost_out:T.deltaPacketsLost}},{ssrc:n,type:ne.VIDEO,value:{percent_packets_lost_out:T.fractionLost}}]}break}}return[]},Ga=c=>c<0?1:c>100?4.5:1+.035*c+7/1e6*c*(c-60)*(100-c),Wv=(c,s=x.AUDIO,r,a,o)=>{const t=ct(o,c,$e.INBOUND),n=ct(o,r,$e.INBOUND),h=ct(o,a,$e.INBOUND),_=[],d=[],g=t[s].percent_packets_lost_in,T=t[s].delta_jitter_ms_in,E=n&&n[s].delta_jitter_ms_in||null,y=h&&h[s].delta_jitter_ms_in||null,A=c.data.delta_rtt_connectivity_ms,C=r&&r.data.delta_rtt_connectivity_ms||null,I=a&&a.data.delta_rtt_connectivity_ms||null;A&&_.push(A),C&&_.push(C),I&&_.push(I),T&&d.push(T),r&&E&&d.push(E),a&&y&&d.push(y);const H=_.length>0?Vs(_):100,L=d.length>0?Vs(d):10,oe=93.2-g,N=.18*oe*oe-27.9*oe+1126.62,j=(H+L)/2,Se=j-177.3<0?0:1,ve=.024*j+.11*(j-177.3)*Se,M=N-ve;return Ga(M)},Kv=(c,s=x.AUDIO,r,a,o)=>{const t=ct(o,c,$e.OUTBOUND),n=ct(o,r,$e.OUTBOUND),h=ct(o,a,$e.OUTBOUND),_=[],d=[],g=t[s].percent_packets_lost_out,T=t[s].delta_rtt_ms_out,E=n&&n[s].delta_rtt_ms_out||null,y=h&&h[s].delta_rtt_ms_out||null,A=t[s].delta_jitter_ms_out,C=n&&n[s].delta_jitter_ms_out||null,I=h&&h[s].delta_jitter_ms_out||null,H=c.data.delta_rtt_connectivity_ms,L=r&&r.data.delta_rtt_connectivity_ms||null,oe=a&&a.data.delta_rtt_connectivity_ms||null;T?_.push(T):H&&_.push(H),E?_.push(E):L&&_.push(L),y?_.push(y):oe&&_.push(oe),A&&d.push(A),r&&C&&d.push(C),a&&I&&d.push(I);const N=_.length>0?Vs(_):100,j=d.length>0?Vs(d):10,Se=93.2-g,ve=.18*Se*Se-27.9*Se+1126.62,M=(N+j)/2,D=M-177.3<0?0:1,B=.024*M+.11*(M-177.3)*D,V=ve-B;return Ga(V)},Yv=(c,s=x.AUDIO,r,a,o)=>{const t=ct(o,c,$e.INBOUND),n=ct(o,r,$e.INBOUND),h=ct(o,a,$e.INBOUND),_=[],d=[],g=t[s].percent_packets_lost_in/100,T=t[s].delta_jitter_ms_in,E=n&&n[s].delta_jitter_ms_in||null,y=h&&h[s].delta_jitter_ms_in||null,A=c.data.delta_rtt_connectivity_ms,C=r&&r.data.delta_rtt_connectivity_ms||null,I=a&&a.data.delta_rtt_connectivity_ms||null;A&&_.push(A),C&&_.push(C),I&&_.push(I),T&&d.push(T),n&&E&&d.push(E),h&&y&&d.push(y);const H=_.length>0?Vs(_):100,L=d.length>0?Vs(d):10,oe=0,N=19.8,j=29.7,Se=30,ve=(H+L)/2+Se,M=ve-177.3<0?0:1,D=.024*ve+.11*(ve-177.3)*M,V=93.2-(oe+N*Math.log(1+j*g)+D);return Ga(V)},Jv=(c,s=x.AUDIO,r,a,o)=>{const t=ct(o,c,$e.OUTBOUND),n=ct(o,r,$e.OUTBOUND),h=ct(o,a,$e.OUTBOUND),_=[],d=[],g=t[s].percent_packets_lost_out/100,T=t[s].delta_rtt_ms_out,E=n&&n[s].delta_rtt_ms_out||null,y=h&&h[s].delta_rtt_ms_out||null,A=t[s].delta_jitter_ms_out,C=n&&n[s].delta_jitter_ms_out||null,I=h&&h[s].delta_jitter_ms_out||null,H=c.data.delta_rtt_connectivity_ms,L=r&&r.data.delta_rtt_connectivity_ms||null,oe=a&&a.data.delta_rtt_connectivity_ms||null;T?_.push(T):H&&_.push(H),E?_.push(E):L&&_.push(L),y?_.push(y):oe&&_.push(oe),A&&d.push(A),n&&C&&d.push(C),h&&I&&d.push(I);const N=_.length>0?Vs(_):100,j=d.length>0?Vs(d):10,Se=0,ve=19.8,M=29.7,D=30,B=(N+j)/2+D,V=B-177.3<0?0:1,J=.024*B+.11*(B-177.3)*V,X=93.2-(Se+ve*Math.log(1+M*g)+J);return Ga(X)};class zv{constructor(s,r){this._callbacks={onreport:null,onticket:null},this._id=Iv(),this._moduleName=this._id,this._probeId=r,this._config=s,this._exporter=new Uv(s),this._state=ps.IDLE,this.registerToPCEvents(),Cn(this._moduleName,`new collector created for probe ${this._probeId}`)}analyze(s,r,a,o){const t=(_,d)=>_===x.AUDIO?d===Jt.INBOUND_RTP?{...O_}:{...D_}:d===Jt.INBOUND_RTP?{...N_}:{...U_},n=Sv(r);n.pname=this._config.pname,n.call_id=this._config.cid,n.user_id=this._config.uid,n.count=r?r.count+1:1;let h=null;return s.forEach(_=>{!h&&_.timestamp&&(h=_.timestamp),Gv(_,n,n.pname,o).forEach(g=>{if(g.value&&g.type)if(g.ssrc){let T=n[g.type][g.ssrc];T||(T=t(g.type,_.type),T.ssrc=g.ssrc,n[g.type][g.ssrc]=T),Object.keys(g.value).forEach(E=>{T[E]=g.value[E]})}else Object.keys(g.value).forEach(T=>{n[g.type][T]=g.value[T]})})}),n.timestamp=h,Object.keys(n[x.AUDIO]).forEach(_=>{const d=n[x.AUDIO][_];d.direction===$e.INBOUND?(d.mos_emodel_in=Wv(n,x.AUDIO,r,a,d.ssrc),d.mos_in=Yv(n,x.AUDIO,r,a,d.ssrc)):(d.mos_emodel_out=Kv(n,x.AUDIO,r,a,d.ssrc),d.mos_out=Jv(n,x.AUDIO,r,a,d.ssrc))}),n}async takeReferenceStats(){return new Promise((s,r)=>{const a=Date.now();setTimeout(async()=>{try{const o=Date.now()-a,t=Date.now(),n=await this._config.pc.getStats(),h=this.analyze(n,null,null,null),_=Date.now();h.experimental.time_to_measure_ms=_-t,h.experimental.time_to_wait_ms=o,this._exporter.saveReferenceReport(h),Pe(this._moduleName,`got reference report for probe ${this._probeId}`),s()}catch(o){r(o)}},this._config.startAfter)})}async collectStats(){try{if(this._state!==ps.RUNNING||!this._config.pc)return Pe(this._moduleName,`report discarded (too late) for probe ${this._probeId}`),null;const s=Date.now(),r=await this._config.pc.getStats(),a=this.analyze(r,this._exporter.getLastReport(),this._exporter.getBeforeLastReport(),this._exporter.getReferenceReport()),o=Date.now();return a.experimental.time_to_measure_ms=o-s,this._exporter.addReport(a),Pe(this._moduleName,`got report for probe ${this._probeId}#${this._exporter.getReportsNumber()+1}`),this.fireOnReport(a),a}catch(s){return fr(this._moduleName,`got error ${s}`),null}}async start(){Pe(this._moduleName,"starting"),this.state=ps.RUNNING,this._startedTime=this._exporter.start(),Pe(this._moduleName,"started")}async mute(){this.state=ps.MUTED,Pe(this._moduleName,"muted")}async unmute(){this.state=ps.RUNNING,Pe(this._moduleName,"unmuted")}async stop(s){if(Pe(this._moduleName,`stopping${s?" by watchdog":""}...`),this._stoppedTime=this._exporter.stop(),this.state=ps.IDLE,this._config.ticket){const{ticket:r}=this._exporter;this.fireOnTicket(r)}this._exporter.reset(),Pe(this._moduleName,"stopped")}registerCallback(s,r,a){s in this._callbacks?(this._callbacks[s]={callback:r,context:a},Pe(this._moduleName,`registered callback '${s}'`)):fr(this._moduleName,`can't register callback for '${s}' - not found`)}unregisterCallback(s){s in this._callbacks?(this._callbacks[s]=null,delete this._callbacks[s],Pe(this._moduleName,`unregistered callback '${s}'`)):fr(this._moduleName,`can't unregister callback for '${s}' - not found`)}fireOnReport(s){this._callbacks.onreport&&Iu(this._callbacks.onreport.callback,this._callbacks.onreport.context,s)}fireOnTicket(s){this._callbacks.onticket&&Iu(this._callbacks.onticket.callback,this._callbacks.onticket.context,s)}updateConfig(s){this._config=s,this._exporter.updateConfig(s)}get state(){return this._state}set state(s){this._state=s,Pe(this._moduleName,`state changed to ${s}`)}addCustomEvent(s,r,a,o){this._exporter.addCustomEvent({at:typeof s=="object"?s.toJSON():s,category:r,name:a,description:o})}async registerToPCEvents(){const{pc:s}=this._config;if(navigator.mediaDevices.ondevicechange=async()=>{try{const r=await navigator.mediaDevices.enumerateDevices();this.addCustomEvent(new Date().toJSON(),"device",`${r.length} devices found`,"Media Devices state")}catch{fr(this._moduleName,"can't get devices")}},s){s.oniceconnectionstatechange=()=>{const a=s.iceConnectionState;a===Gi.CONNECTED||a===Gi.COMPLETED?this.addCustomEvent(new Date().toJSON(),"call",a,"ICE connection state"):a===Gi.DISCONNECTED||a===Gi.FAILED?this.addCustomEvent(new Date().toJSON(),"call",a,"ICE connection state"):a===Gi.CLOSED&&this.addCustomEvent(new Date().toJSON(),"call","ended","ICE connection state")},s.onicegatheringstatechange=()=>{const a=s.iceGatheringState;this.addCustomEvent(new Date().toJSON(),"call",a,"ICE gathering state")},s.ontrack=a=>{this.addCustomEvent(new Date().toJSON(),"call",`${a.track.kind}track`,"MediaStreamTrack received")},s.onnegotiationneeded=()=>{this.addCustomEvent(new Date().toJSON(),"call","negotiation","Media changed")};const r=s.getReceivers();if(r&&r.length>0){const a=r[0],{transport:o}=a;if(o){const{iceTransport:t}=o;t&&(t.onselectedcandidatepairchange=()=>{this.addCustomEvent(new Date().toJSON(),"call","transport","Candidates Pair changed")})}}}}}class Xv{constructor(s){this._id=s.pname&&s.pname.substr(0,12).padEnd(12," ")||Rv(),this._moduleName=this._id,Cn(this._moduleName,"probe created"),this._config=s,this._collector=new zv(this._config,this._id)}set onreport(s){s?this._collector.registerCallback("onreport",s):this._collector.unregisterCallback("onreport")}set onticket(s){s?this._collector.registerCallback("onticket",s):this._collector.unregisterCallback("onticket")}get id(){return this._id}get pname(){return this._config.pname}get cid(){return this._config.cid}get uid(){return this._config.uid}get state(){return this._collector.state}set state(s){this._collector.state=s}addCustomEvent(s,r,a,o=new Date().toJSON()){this._collector.addCustomEvent(o,r,s,a)}get isRunning(){return this._collector.state===ps.RUNNING}get isIdle(){return this._collector.state===ps.IDLE}updateUserId(s){this._config.uid=s,this._collector.updateConfig(this._config)}updateCallId(s){this._config.cid=s,this._collector.updateConfig(this._config)}start(){if(!this.isIdle){Ra(this._moduleName,"probe is already running");return}this._collector.start()}stop(s=!1){this.isRunning&&this._collector.stop(s)}async takeReferenceStats(){return this._collector.takeReferenceStats()}async collectStats(){return this._collector.collectStats()}}const Ct="engine ";class Qv{constructor(s){this._config=s,this._probes=[],this._startedTime=null,this._callbacks={onresult:null},Cn(Ct,`configured for probing every ${this._config.refreshEvery}ms`),Cn(Ct,`configured for starting after ${this._config.startAfter}ms`),Cn(Ct,`${!this._config.stopAfter||this._config.stopAfter!==-1?`configured for stopped after ${this._config.stopAfter}ms`:"configured for never stopped"}`),Pe(Ct,"engine initialized")}get probes(){return this._probes}get isRunning(){return this._probes.some(s=>s.isRunning)}get isIdle(){return this._probes.every(s=>s.isIdle)}addNewProbe(s,r){if(!s)throw new Error("undefined peer connection");const a=Av(s,r,this._config),o=new Xv(a);return this._probes.push(o),Pe(Ct,`${this._probes.length} probes registered`),o}removeExistingProbe(s){if(!s)throw new Error("undefined probe");s.state===ps.RUNNING&&s.stop(),this._probes=this._probes.filter(r=>s.id!==r.id)}async start(){const s=()=>{this._probes.forEach(t=>t.start())},r=async()=>Promise.all(this._probes.map(t=>t.takeReferenceStats())),a=()=>this.isIdle?!1:!this._config.stopAfter||this._config.stopAfter<0?!0:Date.now()<this._startedTime+this._config.stopAfter,o=async()=>{const t=Ev(),n=this._probes.filter(h=>h.isRunning);for(const h of n){const _=await h.collectStats();_&&t.probes.push(_),Pe(Ct,`got probe ${h.id}`),await Pf(0)}return t.delta_time_to_measure_probes_ms=vn(t.probes,"experimental","time_to_measure_ms"),t.delta_KBytes_in=vn(t.probes,"data","delta_KBytes_in"),t.delta_KBytes_out=vn(t.probes,"data","delta_KBytes_out"),t.delta_kbs_in=vn(t.probes,"data","delta_kbs_in"),t.delta_kbs_out=vn(t.probes,"data","delta_kbs_out"),t.total_time_decoded_in=vn(t.probes,"video","total_time_decoded_in"),t.total_time_encoded_out=vn(t.probes,"video","total_time_encoded_out"),t};for(Pe(Ct,"starting to collect"),s(),Pe(Ct,"generating reference reports..."),await r(),Pe(Ct,"reference reports generated"),this._startedTime=Date.now();a();)if(Pe(Ct,`wait ${this._config.refreshEvery}ms before collecting`),await Pf(this._config.refreshEvery),a()){Pe(Ct,"collecting...");const t=Date.now(),n=await o(),h=Date.now();n.delta_time_consumed_to_measure_ms=h-t,this.fireOnReports(n),Pe(Ct,"collected")}Pe(Ct,"reaching end of the collecting period..."),this.isRunning&&setTimeout(()=>{this.stop()},0)}stop(s){const r=a=>{this._probes.forEach(o=>{o.stop(a)})};Cn(Ct,"stop collecting"),r(s)}registerCallback(s,r,a){s in this._callbacks?(this._callbacks[s]={callback:r,context:a},Pe(Ct,`registered callback '${s}'`)):fr(Ct,`can't register callback for '${s}' - not found`)}unregisterCallback(s){s in this._callbacks?(this._callbacks[s]=null,delete this._callbacks[s],Pe(this._moduleName,`unregistered callback '${s}'`)):fr(this._moduleName,`can't unregister callback for '${s}' - not found`)}fireOnReports(s){this._callbacks.onresult&&s.probes.length>0&&Iu(this._callbacks.onresult.callback,this._callbacks.onresult.context,s)}}const Zv="interface ";class eE{constructor(s){this._config=Cv(s),Cn(Zv,`welcome to ${this._config.name} version ${this._config.version}`),_v(this._config.verbose||!1),this._engine=new Qv(this._config)}setupLogLevel(s){hv(s)}get version(){return this._config.version}get name(){return this._config.name}get probes(){return this._engine.probes}createProbe(s,r){return this._engine.addNewProbe(s,r)}startAllProbes(){this._engine.start()}stopAllProbes(){this._engine.stop()}get running(){return this._engine.isRunning}get idle(){return this._engine.isIdle}removeProbe(s){this._engine.removeExistingProbe(s)}set onresult(s){s?this._engine.registerCallback("onresult",s):this._engine.unregisterCallback("onresult")}}function tE(c,s){return Object.keys(c).filter(r=>s.includes(r)).reduce((r,a)=>{const o=a;return{...r,[o]:c[o]}},{})}const sE=["mos_in","codec_in","delta_KBytes_in","delta_kbs_in","delta_jitter_ms_in","delta_packets_lost_in"];class nE{constructor(s){this.intervals={},this.emitInterval=s.emitInterval||200,this.onChangeFunction=s.onChangeFunction}start(s,r){s&&s.getTracks().length&&requestAnimationFrame(()=>this.beginCalculation(s,r))}stop(s){this.clearVolumeInterval(s)}clearVolumeInterval(s){console.log("clearVolumeInterval",s),clearInterval(this.intervals[s]),delete this.intervals[s]}clearAllIntervals(){Object.keys(this.intervals).forEach(s=>{clearInterval(this.intervals[s])}),this.intervals={}}beginCalculation(s,r){this.clearVolumeInterval(r);const a=An.createAnalyser(),o=An.createMediaStreamSource(s),t=An.createScriptProcessor(2048,1,1);a.smoothingTimeConstant=.8,a.fftSize=1024,o.connect(a),a.connect(t),t.connect(An.destination),this.intervals[r]=setInterval(()=>{const n=new Uint8Array(a.frequencyBinCount);a.getByteFrequencyData(n);let h=0;const _=n.length;for(let g=0;g<_;g++)h+=n[g];const d=h/_;this.onChangeFunction(r,d)},this.emitInterval)}}const fa={SELECTED_INPUT_DEVICE:"OpensipsJSInputDevice",SELECTED_OUTPUT_DEVICE:"OpensipsJSOutputDevice"},rE=0;class iE{constructor(s){this.isAutoAnswer=!1,this.muteWhenJoinEnabled=!1,this.isDNDEnabled=!1,this.muted=!1,this.microphoneInputLevelValue=1,this.speakerVolumeValue=1,this.activeRooms={},this.activeCalls={},this.extendedCalls={},this.availableMediaDevices=[],this.selectedMediaDevices={input:"default",output:"default"},this.callStatus={},this.callTime={},this.callMetrics={},this.timeIntervals={},this.metricConfig={refreshEvery:1e3},this.activeStreamValue=null,this.initialStreamValue=null,this.context=s,this.context.on(this.context.newRTCSessionEventName,this.newRTCSessionCallback.bind(this)),this.VUMeter=new nE({onChangeFunction:this.emitVolumeChange.bind(this)}),this.initializeMediaDevices()}get sipOptions(){return{...this.context.options.sipOptions,mediaConstraints:this.getUserMediaConstraints}}get currentActiveRoomId(){return this.currentActiveRoomIdValue}set currentActiveRoomId(s){this.currentActiveRoomIdValue=s,this.context.emit("currentActiveRoomChanged",s)}get autoAnswer(){return this.isAutoAnswer}get callAddingInProgress(){return this.isCallAddingInProgress}set callAddingInProgress(s){this.isCallAddingInProgress=s,this.context.emit("callAddingInProgressChanged",s)}get muteWhenJoin(){return this.muteWhenJoinEnabled}get isDND(){return this.isDNDEnabled}get speakerVolume(){return this.speakerVolumeValue}get microphoneInputLevel(){return this.microphoneInputLevelValue}get getActiveCalls(){return this.activeCalls}get hasActiveCalls(){return Object.values(this.extendedCalls).length>0}get getActiveRooms(){return this.activeRooms}get isMuted(){return this.muted}get getInputDeviceList(){return this.availableMediaDevices.filter(s=>s.kind==="audioinput")}get getOutputDeviceList(){return this.availableMediaDevices.filter(s=>s.kind==="audiooutput")}get getUserMediaConstraints(){return I_()?{video:!1,audio:!0}:{audio:{deviceId:{exact:this.selectedMediaDevices.input}},video:!1}}get selectedInputDevice(){return this.selectedMediaDevices.input}get selectedOutputDevice(){return this.selectedMediaDevices.output}get activeStream(){return this.activeStreamValue}setAvailableMediaDevices(s){this.availableMediaDevices=s,this.context.emit("changeAvailableDeviceList",s)}async updateDeviceList(){await navigator.mediaDevices.getUserMedia(this.getUserMediaConstraints);const s=await navigator.mediaDevices.enumerateDevices();this.setAvailableMediaDevices(s)}async initializeMediaDevices(){const s=localStorage.getItem(fa.SELECTED_INPUT_DEVICE)||"default",r=localStorage.getItem(fa.SELECTED_OUTPUT_DEVICE)||"default";try{const a=await navigator.mediaDevices.getUserMedia(this.getUserMediaConstraints),o=await navigator.mediaDevices.enumerateDevices();this.setAvailableMediaDevices(o),await this.setMicrophone(s),await this.setSpeaker(r),navigator.mediaDevices.addEventListener("devicechange",async()=>{const t=await navigator.mediaDevices.enumerateDevices();this.setAvailableMediaDevices(t)}),a.getTracks().forEach(t=>t.stop())}catch(a){console.error(a)}}setCallTime(s){const r={...s};delete r.callId,this.callTime={...this.callTime,[s.callId]:r},this.context.emit("changeCallTime",this.callTime)}removeCallTime(s){const r={...this.callTime};delete r[s],this.callTime={...r},this.context.emit("changeCallTime",this.callTime)}setTimeInterval(s,r){this.timeIntervals={...this.timeIntervals,[s]:r}}removeTimeInterval(s){const r={...this.timeIntervals};r[s]&&(clearInterval(r[s]),delete r[s],this.timeIntervals={...r})}stopCallTimer(s){this.removeTimeInterval(s),this.removeCallTime(s)}emitVolumeChange(s,r){this.context.emit("changeCallVolume",{callId:s,volume:r})}setMetricsConfig(s){this.metricConfig={...this.metricConfig,...s}}sendDTMF(s,r){if(!/^[A-D0-9]+$/g.test(r))throw new Error("Not allowed character in DTMF input");this.extendedCalls[s].sendDTMF(r)}setIsMuted(s){this.muted=s,this.context.emit("changeIsMuted",s)}processMute(s){const r=this.currentActiveRoomId;this.setIsMuted(s),this.initialStreamValue.getTracks().forEach(a=>a.enabled=!s),this.roomReconfigure(r)}mute(){this.processMute(!0)}unmute(){this.processMute(!1)}async processHold({callId:s,toHold:r,automatic:a}){const o=this.extendedCalls[s];o._automaticHold=a??!1,await new Promise(h=>{const _=()=>{h()};r?o.hold({},_):o.unhold({},_)}),this.updateCall(o);const n=Object.values(this.extendedCalls).filter(h=>h.roomId===this.currentActiveRoomId&&(r?s!==h._id:!0));n.length>1&&await this.doConference(n)}holdCall(s,r=!1){return this.processHold({callId:s,automatic:r,toHold:!0})}unholdCall(s){return this.processHold({callId:s,toHold:!1})}cancelAllOutgoingUnanswered(){Object.values(this.getActiveCalls).filter(s=>s.direction==="outgoing"&&s.status===rE).forEach(s=>this.terminateCall(s._id))}answerCall(s){const r=this.extendedCalls[s];this.cancelAllOutgoingUnanswered(),r.answer(this.sipOptions),this.updateCall(r),this.setActiveRoom(r.roomId),r.connection.addEventListener("track",a=>{this.triggerAddStream(a,r)})}async moveCall(s,r){this.updateCallStatus({callId:s,isMoving:!0}),await this.processRoomChange({callId:s,roomId:r}),this.updateCallStatus({callId:s,isMoving:!1})}updateCall(s){this.activeCalls[s._id]=Of(s),this.context.emit("changeActiveCalls",this.activeCalls)}updateRoom(s){const a={...this.activeRooms[s.roomId],...s};this.activeRooms={...this.activeRooms,[s.roomId]:{...a}},this.context.emit("updateRoom",{room:a,roomList:this.activeRooms})}hasAutoAnswerHeaders(s){const r=/answer-after=0/,o=s.request.getHeader("Call-Info");return o&&r.test(o)}addCall(s,r=!0){this.activeCalls={...this.activeCalls,[s._id]:Of(s)},this.extendedCalls[s._id]=s,r&&this.context.emit("changeActiveCalls",this.activeCalls)}addCallStatus(s){this.callStatus={...this.callStatus,[s]:{isMoving:!1,isTransferring:!1,isMerging:!1}},this.context.emit("changeCallStatus",this.callStatus)}updateCallStatus(s){const a={...{...this.callStatus[s.callId]}};s.isMoving!==void 0&&(a.isMoving=s.isMoving),s.isTransferring!==void 0&&(a.isTransferring=s.isTransferring),s.isMerging!==void 0&&(a.isMerging=s.isMerging),this.callStatus={...this.callStatus,[s.callId]:{...a}},this.context.emit("changeCallStatus",this.callStatus)}removeCallStatus(s){const r={...this.callStatus};delete r[s],this.callStatus={...r},this.context.emit("changeCallStatus",this.callStatus)}addRoom(s){this.activeRooms={...this.activeRooms,[s.roomId]:s},this.context.emit("addRoom",{room:s,roomList:this.activeRooms})}getActiveStream(){const s=Nf(this.initialStreamValue,this.microphoneInputLevel*2);return s.getTracks().forEach(r=>r.enabled=!this.isMuted),this.setActiveStream(s),s}async setMicrophone(s){if(!this.getInputDeviceList.find(({deviceId:a})=>a===s)||(this.setSelectedInputDevice(s),Object.keys(this.getActiveCalls).length===0))return;await this.setupStream();const r=Object.values(this.extendedCalls).filter(a=>a.roomId===this.currentActiveRoomId);r.length===1?Object.values(r).forEach(async a=>{const o=this.getActiveStream();a.connection.getSenders()[0].replaceTrack(o.getTracks()[0]),this.updateCall(a)}):await this.doConference(r)}setActiveStream(s){this.activeStream&&this.stopVUMeter("origin"),this.setupVUMeter(s,"origin"),this.activeStreamValue=s,this.context.emit("changeActiveStream",s)}async setSpeaker(s){if(!this.getOutputDeviceList.find(({deviceId:o})=>o===s))return;this.setSelectedOutputDevice(s);const r=Object.values(this.extendedCalls);if(r.length===0)return;const a=r.filter(o=>o.roomId===this.currentActiveRoomId);a.length===1?r.forEach(o=>{var t;(t=o.audioTag)==null||t.setSinkId(s),this.updateCall(o)}):await this.doConference(a)}removeRoom(s){const r={...this.activeRooms},a={...r[s]};delete r[s],this.activeRooms={...r},this.context.emit("removeRoom",{room:a,roomList:this.activeRooms})}deleteRoomIfEmpty(s){s!==void 0&&Object.values(this.extendedCalls).filter(r=>r.roomId===s).length===0&&(this.removeRoom(s),this.currentActiveRoomId===s&&(this.currentActiveRoomId=void 0))}checkInitialized(){if(!this.context.initialized)throw new Error("[OpenSIPSJS] You must call `start` method first!")}muteReconfigure(s){this.muted?s.mute({audio:!0}):s.unmute({audio:!0})}async roomReconfigure(s){var a;if(s===void 0)return;const r=Object.values(this.extendedCalls).filter(o=>o.roomId===s);if(this.currentActiveRoomId===s?r.forEach(o=>{o.audioTag&&(this.muteReconfigure(o),o.audioTag.muted=!1,this.updateCall(o))}):r.forEach(o=>{o.audioTag&&(o.audioTag.muted=!0,this.updateCall(o))}),r.length===0)this.deleteRoomIfEmpty(s);else if(r.length===1&&this.currentActiveRoomId!==s)r[0].isOnHold().local||await this.holdCall(r[0].id,!0);else if(r.length===1&&this.currentActiveRoomId===s){if(r[0].isOnHold().local&&r[0]._automaticHold&&await this.unholdCall(r[0].id),r[0].connection&&((a=r[0].connection)!=null&&a.getSenders()[0])){const o=this.getActiveStream();await r[0].connection.getSenders()[0].replaceTrack(o.getTracks()[0]),this.muteReconfigure(r[0])}}else r.length>1&&await this.doConference(r)}async doConference(s){const r=[];s.forEach(a=>{a!=null&&a.connection.getReceivers().forEach(o=>{r.push(o.track)})}),await cv.forEach(s,async a=>{var n;if(a==null)return;const o=new MediaStream,t=An.createMediaStreamDestination();if(a.connection.getReceivers().forEach(h=>{r.forEach(_=>{o.addTrack(h.track),h.track.id!==_.id&&An.createMediaStreamSource(new MediaStream([_])).connect(t)})}),s[0].roomId===this.currentActiveRoomId){const h=this.getActiveStream();An.createMediaStreamSource(h).connect(t)}(n=a.connection)!=null&&n.getSenders()[0]&&(await a.connection.getSenders()[0].replaceTrack(t.stream.getTracks()[0]),this.muteReconfigure(a))})}processCallerMute(s,r){const a=this.extendedCalls[s];a&&a.connection.getReceivers().length&&(a.localMuted=r,a.connection.getReceivers().forEach(o=>{o.track.enabled=!r}),this.updateCall(a))}muteCaller(s){this.processCallerMute(s,!0)}unmuteCaller(s){this.processCallerMute(s,!1)}terminateCall(s){const r=this.extendedCalls[s];r._status!==8&&r.terminate()}transferCall(s,r){if(r.toString().length===0)return new Error("Target must be passed");const a=this.extendedCalls[s];if(!a._is_confirmed&&!a._is_canceled){const o=`sip:${r}@${this.context.sipDomain}`;a.terminate({status_code:302,reason_phrase:"Moved Temporarily",extraHeaders:[`Contact: ${o}`]});return}this.updateCallStatus({callId:s,isTransferring:!0}),a.refer(`sip:${r}@${this.context.sipDomain}`),this.updateCall(a)}mergeCall(s){const r=Object.values(this.extendedCalls).filter(t=>t.roomId===s);if(r.length!==2)return;const a=r[0],o=r[1];!a||!o||(this.updateCallStatus({callId:a._id,isMerging:!0}),this.updateCallStatus({callId:o._id,isMerging:!0}),a.refer(o.remote_identity.uri.toString(),{replaces:o}),this.updateCall(a))}mergeCallByIds(s,r){const a=Object.values(this.extendedCalls).find(t=>t._id===s),o=Object.values(this.extendedCalls).find(t=>t._id===r);if(!a||!o)throw new Error("Call ID is not provided");this.updateCallStatus({callId:s,isMerging:!0}),this.updateCallStatus({callId:r,isMerging:!0}),a.refer(o.remote_identity.uri.toString(),{replaces:o}),this.updateCall(a)}setDND(s){this.isDNDEnabled=s,this.context.emit("changeIsDND",s)}startCallTimer(s){this.removeTimeInterval(s);const r={callId:s,hours:0,minutes:0,seconds:0,formatted:""};this.setCallTime(r);const a=setInterval(()=>{const o={...this.callTime[s]},t=av(o);this.setCallTime({callId:s,...t})},1e3);this.setTimeInterval(s,a)}async setActiveRoom(s){const r=this.currentActiveRoomId;s!==r&&(this.currentActiveRoomId=s,await this.roomReconfigure(r),await this.roomReconfigure(s))}getNewRoomId(){const s=Object.keys(this.activeRooms);return s.length===0?1:parseInt(s.sort()[s.length-1])+1}async setupCall(s){var d,g;const r=s.session;if(this.getActiveCalls[r.id]!==void 0)return;const o=this.getNewRoomId(),t={started:new Date,incomingInProgress:!1,roomId:o};r.direction==="incoming"?(this.context.logger.log("New incoming call from",(g=(d=r._remote_identity)==null?void 0:d._uri)==null?void 0:g._user),t.incomingInProgress=!0,this.context.subscribe(zt.CALL_CONFIRMED,T=>{r.id===T.id&&(this.updateRoom({incomingInProgress:!1,roomId:o}),this.startCallTimer(r.id))}),this.context.subscribe(zt.CALL_FAILED,T=>{r.id===T.id&&(this.updateRoom({incomingInProgress:!1,roomId:o}),this.deleteRoomIfEmpty(o))})):r.direction==="outgoing"&&(r.once("confirmed",()=>{this.startCallTimer(r.id)}),this.startCallTimer(r.id));const n=r,h=this.hasAutoAnswerHeaders(s),_=n.direction==="incoming"&&!this.hasActiveCalls&&(h||this.autoAnswer);n.roomId=o,n.localMuted=!1,n.autoAnswer=_,_?this.addCall(n,!1):this.addCall(n),this.addCallStatus(r.id),this.addRoom(t),_&&this.answerCall(n._id)}removeCall(s){const r={...this.activeCalls};delete r[s],this.activeCalls={...r};const a={...this.extendedCalls};delete a[s],this.extendedCalls={...a},this.context.emit("changeActiveCalls",this.activeCalls)}activeCallListRemove(s){var o;const r=this.extendedCalls[s._id];this.stopVUMeter("origin"),(o=r.connection)==null||o.getSenders().forEach(t=>{t.track.stop()});const a=r.roomId;this.removeCall(s._id),this.roomReconfigure(a)}async newRTCSessionCallback(s){const r=s.session;if(this.isDND){r.terminate({status_code:486,reason_phrase:"Do Not Disturb"});return}if(this.context.triggerListener({listenerType:zt.NEW_CALL,session:r,event:s}),r.on("ended",a=>{var t,n,h;this.stopVUMeter(r.id),this.context.logger.log("Session ended for",(n=(t=r._remote_identity)==null?void 0:t._uri)==null?void 0:n._user),this.context.triggerListener({listenerType:zt.CALL_ENDED,session:r,event:a});const o=this.getActiveCalls[r.id];o&&this.activeCallListRemove(o),this.stopCallTimer(r.id),this.removeCallStatus(r.id),this.removeCallMetrics(r.id),Object.keys(this.extendedCalls).length||(this.setIsMuted(!1),(h=this.initialStreamValue)==null||h.getTracks().forEach(_=>_.stop()),this.initialStreamValue=null)}),r.on("progress",a=>{var o,t;this.context.logger.log("Session in progress for",(t=(o=r._remote_identity)==null?void 0:o._uri)==null?void 0:t._user),this.context.triggerListener({listenerType:zt.CALL_PROGRESS,session:r,event:a})}),r.on("failed",a=>{var t,n,h;this.stopVUMeter(r.id),this.context.logger.log("Session failed for",(n=(t=r._remote_identity)==null?void 0:t._uri)==null?void 0:n._user),this.context.triggerListener({listenerType:zt.CALL_FAILED,session:r,event:a}),r.id===this.callAddingInProgress&&(this.callAddingInProgress=void 0);const o=this.getActiveCalls[r.id];o&&this.activeCallListRemove(o),this.stopCallTimer(r.id),this.removeCallStatus(r.id),this.removeCallMetrics(r.id),Object.keys(this.extendedCalls).length||(this.setIsMuted(!1),(h=this.initialStreamValue)==null||h.getTracks().forEach(_=>_.stop()),this.initialStreamValue=null)}),r.on("confirmed",a=>{var o,t;this.context.logger.log("Session confirmed for",(t=(o=r._remote_identity)==null?void 0:o._uri)==null?void 0:t._user),this.context.triggerListener({listenerType:zt.CALL_CONFIRMED,session:r,event:a}),this.updateCall(r),r.id===this.callAddingInProgress&&(this.callAddingInProgress=void 0)}),await this.setupCall(s),r.direction==="outgoing"){const a=this.getActiveCalls[r.id].roomId;this.setActiveRoom(a)}}setMuteWhenJoin(s){this.muteWhenJoinEnabled=s,this.context.emit("changeMuteWhenJoin",s)}setMicrophoneSensitivity(s){if(s<0||s>1)throw new Error("Value should be in range from 0 to 1!");this.microphoneInputLevelValue=s,this.roomReconfigure(this.currentActiveRoomId)}setSpeakerVolume(s){this.speakerVolumeValue=s,Object.values(this.extendedCalls).forEach(r=>{r.audioTag&&(r.audioTag.volume=s,this.updateCall(r))})}setAutoAnswer(s){this.isAutoAnswer=s}setSelectedInputDevice(s){localStorage.setItem(fa.SELECTED_INPUT_DEVICE,s),this.selectedMediaDevices.input=s,this.context.emit("changeActiveInputMediaDevice",s)}setSelectedOutputDevice(s){localStorage.setItem(fa.SELECTED_OUTPUT_DEVICE,s),this.selectedMediaDevices.output=s,this.context.emit("changeActiveOutputMediaDevice",s)}setCallMetrics(s){const r={...s};delete r.callId,this.callMetrics={...this.callMetrics,[s.callId]:r},this.context.emit("changeCallMetrics",this.callMetrics)}removeCallMetrics(s){const r={...this.callMetrics};delete r[s],this.callMetrics={...r},this.context.emit("changeCallMetrics",this.callMetrics)}getCallQuality(s){const r=new eE(this.metricConfig),a=r.createProbe(s.connection,{cid:s._id}),o=[];let t;a.onreport=n=>{Object.entries(n.audio).forEach(([d,g])=>{g.direction==="inbound"&&!o.includes(d)&&(o.push(d),t=d)});const h=n.audio[t];if(!h)return;const _=tE(h,sE);_.callId=s._id,this.setCallMetrics(_)},this.context.subscribe(zt.CALL_ENDED,n=>{n._id===s._id&&r.stopAllProbes()}),r.startAllProbes()}setupVUMeter(s,r){this.VUMeter.start(s,r)}stopVUMeter(s){this.VUMeter.stop(s)}async setupStream(){const s=await navigator.mediaDevices.getUserMedia(this.getUserMediaConstraints);this.initialStreamValue&&(this.initialStreamValue.getTracks().forEach(r=>r.stop()),this.initialStreamValue=null),this.initialStreamValue=s}async triggerAddStream(s,r){this.setIsMuted(this.muteWhenJoin||this.isMuted),this.initialStreamValue||await this.setupStream();const a=Nf(this.initialStreamValue,this.microphoneInputLevel*2),o=this.isMuted||this.muteWhenJoin;a.getTracks().forEach(n=>n.enabled=!o),this.setActiveStream(a),await r.connection.getSenders()[0].replaceTrack(a.getTracks()[0]);const t=new MediaStream([s.track]);GT(t,r,this.selectedOutputDevice,this.speakerVolume),this.setupVUMeter(t,r._id),this.getCallQuality(r),this.updateCall(r)}initCall(s,r){if(s.length===0)return console.error("Target must be a valid string");this.context.logger.log(`Calling sip:${s}@${this.context.sipDomain}...`);const a=this.context.call(`sip:${s}@${this.context.sipDomain}`,this.sipOptions);this.callAddingInProgress=a.id,r&&this.currentActiveRoomId!==void 0&&this.processRoomChange({callId:a.id,roomId:this.currentActiveRoomId}),a.connection.addEventListener("track",o=>{this.triggerAddStream(o,a)})}async processRoomChange({callId:s,roomId:r}){const a=this.extendedCalls[s].roomId;this.extendedCalls[s].roomId=r;const o=this.extendedCalls[s];return this.updateCall(o),await this.setActiveRoom(r),Promise.all([this.roomReconfigure(a),this.roomReconfigure(r)]).then(()=>{this.deleteRoomIfEmpty(a),this.deleteRoomIfEmpty(r)})}}class lE{constructor(s){this.context=s}get sipOptions(){return{...this.context.options.sipOptions}}initCall(s,r){if(s.length===0)return console.error("Target must be a valid string");this.context.logger.log(`Calling sip:${s}@${this.context.sipDomain}...`),this.context.joinVideoCall(`sip:${s}@${this.context.sipDomain}`,r,this.sipOptions)}stop(s={}){this.context.terminateJanusSessions(s)}}class aE{constructor(s){this.activeMessages={},this.extendedMessages={},this.msrpHistory={},this.context=s,this.context.on(this.context.newMSRPSessionEventName,this.newMSRPSessionCallback.bind(this.context))}get isMSRPInitializing(){return this.isMSRPInitializingValue}get getActiveMessages(){return this.activeMessages}msrpAnswer(s){const r=this.extendedMessages[s];this.updateMSRPSession(r)}updateMSRPSession(s){this.activeMessages[s._id]=Df(s),this.context.emit("changeActiveMessages",this.activeMessages)}addMMSRPSession(s){this.activeMessages={...this.activeMessages,[s._id]:Df(s)},this.extendedMessages[s._id]=s,this.context.emit("changeActiveMessages",this.activeMessages)}addMSRPMessage(s,r){const a=this.msrpHistory[r.id]||[];a.push(s),this.msrpHistory={...this.msrpHistory,[r.id]:[...a]},this.context.emit("newMSRPMessage",{message:s,session:r})}messageTerminate(s){const r=this.extendedMessages[s];r._status!==8&&r.terminate()}addMessageSession(s){if(!s._id||this.getActiveMessages[s._id]!==void 0)return;const a=s;this.addMMSRPSession(a)}triggerMSRPListener({listenerType:s,session:r,event:a}){const o=this.context.listenersList[s];!o||!o.length||o.forEach(t=>{t(r,a)})}removeMMSRPSession(s){const r={...this.activeMessages};delete r[s],this.activeMessages={...r};const a={...this.extendedMessages};delete a[s],this.extendedMessages={...a},this.context.emit("changeActiveMessages",this.activeMessages)}activeMessageListRemove(s){this.removeMMSRPSession(s._id)}newMSRPSessionCallback(s){const r=s.session;r.on("ended",a=>{this.triggerMSRPListener({listenerType:zt.CALL_ENDED,session:r,event:a});const o=this.getActiveMessages[r.id];this.activeMessageListRemove(o)}),r.on("failed",a=>{this.triggerMSRPListener({listenerType:zt.CALL_FAILED,session:r,event:a});const o=this.getActiveMessages[r.id];this.activeMessageListRemove(o)}),r.on("confirmed",a=>{this.triggerMSRPListener({listenerType:zt.CALL_CONFIRMED,session:r,event:a}),this.updateMSRPSession(r)}),r.on("newMessage",a=>{this.addMSRPMessage(a,r)}),this.addMessageSession(r)}setIsMSRPInitializing(s){this.isMSRPInitializingValue=s,this.context.emit("isMSRPInitializingChanged",s)}initMSRP(s,r,a){if(s.length===0)return console.error("Target must be a valid string");const o=this.context.startMSRP(s,a);o.on("active",()=>{this.addMessageSession(o),o.sendMSRP(r),this.setIsMSRPInitializing(!1)}),this.setIsMSRPInitializing(!0)}sendMSRP(s,r){const a=this.extendedMessages[s];if(!a)throw new Error(`MSRP session with id ${s} doesn't exist!`);a.sendMSRP(r)}}const lu={AUDIO:"audio",VIDEO:"video",MSRP:"msrp"};class oE extends $T{constructor(s,r){if(!s.modules.length)throw new Error("options.modules should include at least 1 module");const a={...s.configuration,sockets:s.socketInterfaces.map(o=>new lv.WebSocketInterface(o))};super(a),this.initialized=!1,this.connected=!1,this.logger=console,this.newRTCSessionEventName="newRTCSession",this.registeredEventName="registered",this.unregisteredEventName="unregistered",this.disconnectedEventName="disconnected",this.connectedEventName="connected",this.newMSRPSessionEventName="newMSRPSession",this.isReconnecting=!1,this.audio=null,this.msrp=null,this.video=null,this.listenersList={},this.modules=[],s.pnExtraHeaders&&Object.keys(s.pnExtraHeaders).length&&this.registrator().setExtraContactUriParams(s.pnExtraHeaders),this.options=s,this.modules=s.modules,r&&WT(r)&&(this.logger=r)}on(s,r){return super.on(s,r)}off(s,r){return super.off(s,r)}emit(s,r){return super.emit(s,r)}get sipDomain(){return this.options.sipDomain}begin(){if(this.isConnected()){console.error("Connection is already established");return}return this.modules.includes(lu.AUDIO)&&(this.audio=new iE(this)),this.modules.includes(lu.MSRP)&&(this.msrp=new aE(this)),this.modules.includes(lu.VIDEO)&&(this.video=new lE(this)),this.on(this.registeredEventName,()=>{this.logger.log("Successfully registered to",this.options.socketInterfaces[0]),this.setInitialized(!0)}),this.on(this.unregisteredEventName,()=>{this.logger.log("Unregistered from",this.options.socketInterfaces[0]),this.setInitialized(!1)}),this.on(this.connectedEventName,()=>{this.logger.log("Connected to",this.options.socketInterfaces[0]),this.setConnected(!0),this.isReconnecting=!1}),this.on(this.disconnectedEventName,()=>{this.isReconnecting||(this.logger.log("Disconnected from",this.options.socketInterfaces[0]),this.logger.log("Reconnecting to",this.options.socketInterfaces[0]),this.isReconnecting=!0,this.stop(),this.setInitialized(!1),this.setConnected(!1),setTimeout(this.start.bind(this),5e3))}),this.logger.log("Connecting to",this.options.socketInterfaces[0]),this.start(),this}subscribe(s,r){const o=!this.listenersList[s]||!this.listenersList[s].length?[r]:[...this.listenersList[s],r];this.listenersList={...this.listenersList,[s]:o}}removeIListener(s){const r={...this.listenersList};delete r[s],this.listenersList={...r}}triggerListener({listenerType:s,session:r,event:a}){const o=this.listenersList[s];!o||!o.length||o.forEach(t=>{t(r,a)})}setInitialized(s){this.initialized=s,this.emit("ready",s)}setConnected(s){this.connected=s,this.emit("connection",s)}}module.exports=oE;
156
+ `),this._newMSRPSession("local",this._request),this._id=this._request.call_id+this._from_tag,console.log("dialog be",this._dialog),new La(this._ua,this._request,{onRequestTimeout:()=>{this.onRequestTimeout(),console.log("to")},onTransportError:t=>{this.onTransportError(),console.log(t)},onAuthenticated:t=>{this._request=t},onReceiveResponse:t=>{this._receiveInviteResponse(t),console.log("dialog af",this._dialog),t.status_code===200&&(t.parseSDP(!0),this._status=Re.STATUS_CONFIRMED,this.target_addr=t.sdp.media[0].invalid[1].value.replaceAll("path:","").split(" ").reverse(),this.status="active",this.emit("active"),this.emit("confirmed"))}}).send(),this._status=Re.STATUS_INVITE_SENT}terminate(s={}){console.log("terminate",this);const n=s.cause||L.causes.BYE,a=ke.cloneArray(s.extraHeaders),o=s.body;let t,r=s.status_code,_=s.reason_phrase;if(this._status===Re.STATUS_TERMINATED)throw new Vs.InvalidStateError(this._status);switch(this.status="terminated",this._status){case Re.STATUS_NULL:case Re.STATUS_INVITE_SENT:case Re.STATUS_1XX_RECEIVED:if(r&&(r<200||r>=700))throw new TypeError(`Invalid status_code: ${r}`);r&&(_=_||L.REASON_PHRASE[r]||"",t=`SIP ;cause=${r} ;text="${_}"`),this._status===Re.STATUS_NULL||this._status===Re.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=t):this._status===Re.STATUS_1XX_RECEIVED&&this._request.cancel(t),this._status=Re.STATUS_CANCELED,console.log("failed 1"),this._failed("local",null,L.causes.CANCELED);break;case Re.STATUS_WAITING_FOR_ANSWER:case Re.STATUS_ANSWERED:if(r=r||480,console.log("REPLY 480"),r<300||r>=700)throw new TypeError(`Invalid status_code: ${r}`);this._request.reply(r,_,a,o),console.log("failed 2"),this._failed("local",null,L.causes.REJECTED);break;case Re.STATUS_WAITING_FOR_ACK:case Re.STATUS_CONFIRMED:if(_=s.reason_phrase||L.REASON_PHRASE[r]||"",r&&(r<200||r>=700))throw new TypeError(`Invalid status_code: ${r}`);if(r&&a.push(`Reason: SIP ;cause=${r}; text="${_}"`),this._status===Re.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==Bt.C.STATUS_TERMINATED){const h=this._dialog;this.receiveRequest=({method:d})=>{d===L.ACK&&(this.sendRequest(L.BYE,{extraHeaders:a,body:o}),h.terminate())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===Bt.C.STATUS_TERMINATED&&(this.sendRequest(L.BYE,{extraHeaders:a,body:o}),h.terminate())}),this._ended("local",null,n),this._dialog=h,this._ua.newDialog(h)}else console.log("here it is"),this.sendRequest(L.BYE,{extraHeaders:a,body:o}),this._ended("local",null,n)}}sendRequest(s,n){return this._dialog.sendRequest(s,n)}authenticate(s){this.status="auth";let n=new cr("");n.method="AUTH",n.addHeader("To-Path",`msrp://${this._ua._configuration.realm}:2856;ws`),n.addHeader("From-Path",`msrp://${this.credentials.username}.${this.credentials.realm}:2856/${this.auth_id};ws`),s&&n.addHeader("Authorization",s.toString());let a=n.toString();console.log(a);let o=[];for(var t=0;t<a.length;t++)o.push(a.charCodeAt(t).toString(16));console.log(o),this._connection.send(n.toString())}onmessage(s){console.log("onmessage",s);const n=new cr(s.data);if(this.status==="auth"&&n.code===401){const a=this.parseAuth(n.getHeader("WWW-Authenticate")),o=new Bm(this.credentials);o.authenticate({method:"AUTH",ruri:`msrp://${this._ua._configuration.realm}:2856;ws`,body:null},a,ke.createRandomToken(12)),this.authenticate(o)}this.status==="auth"&&n.code===200&&this._direction==="outgoing"?(this.my_addr.push(n.getHeader("To-Path")),this.my_addr.push(n.getHeader("Use-Path")),this.status="active",this.inviteParty(n)):this.status==="auth"&&n.code===200&&this._direction==="incoming"?(this.my_addr.push(n.getHeader("To-Path")),this.my_addr.push(n.getHeader("Use-Path")),this.status="active",this.acceptParty(n),this.emit("confirmed")):n.method==="SEND"&&(this._sendOk(n),this._sendReport(n),n.direction="incoming",this.emit("newMessage",n),this._msgHistory.push(n),this.emit("msgHistoryUpdate",this._msgHistory),console.log("======================================================================")),n.code===480&&this._close()}onclose(){console.log("close")}onopen(){const s=new RTCPeerConnection({iceServers:[]});s.createDataChannel(""),s.createOffer().then(s.setLocalDescription.bind(s)),s.onicecandidate=n=>{if(!n||!n.candidate||!n.candidate.candidate)return;const a=/([0-9]{1,3}(\.[0-9]{1,3}){3})/,o=n.candidate.candidate.match(a);this.my_ip=o&&o[1],s.onicecandidate=()=>{},this.authenticate(null)}}onerror(s){console.log(s)}_receiveInviteResponse(s){if(console.log("resp0000000000000",s),this._dialog&&s.status_code>=200&&s.status_code<=299)if(console.log("200000000000000"),this._dialog.id.call_id===s.call_id&&this._dialog.id.local_tag===s.from_tag&&this._dialog.id.remote_tag===s.to_tag){this.sendRequest(L.ACK);return}else{const n=new Zl(this,s,"UAC");if(n.error!==void 0){console.log(n.error);return}this.sendRequest(L.ACK),this.sendRequest(L.BYE);return}if(this._is_canceled){s.status_code>=100&&s.status_code<200?this._request.cancel(this._cancel_reason):s.status_code>=200&&s.status_code<299&&this._acceptAndTerminate(s);return}if(!(this._status!==Re.STATUS_INVITE_SENT&&this._status!==Re.STATUS_1XX_RECEIVED))switch(console.log("start Switch"),!0){case/^100$/.test(s.status_code):this._status=Re.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(s.status_code):{if(!s.to_tag){console.log("1xx response received without to tag");break}if(s.hasHeader("contact")&&!this._createDialog(s,"UAC",!0))break;if(this._status=Re.STATUS_1XX_RECEIVED,!s.body){this._progress("remote",s);break}const n={originator:"remote",type:"answer",sdp:s.body};console.log('emit "sdp"'),this.emit("sdp",n);const a=new RTCSessionDescription({type:"answer",sdp:n.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(a)).then(()=>this._progress("remote",s)).catch(o=>{console.log('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)});break}case/^2[0-9]{2}$/.test(s.status_code):{if(console.log("maybe here???"),this._status=Re.STATUS_CONFIRMED,!s.body){this._acceptAndTerminate(s,400,L.causes.MISSING_SDP),console.log("failed 3"),this._failed("remote",s,L.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(s,"UAC"))break;const n={originator:"remote",type:"answer",sdp:s.body};console.log('emit "sdp"'),this.emit("sdp",n),new RTCSessionDescription({type:"answer",sdp:n.sdp}),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>{if(this._connection.signalingState==="stable")return this._connection.createOffer(this._rtcOfferConstraints).then(a=>this._connection.setLocalDescription(a)).catch(a=>{this._acceptAndTerminate(s,500,a.toString()),console.log("failed 4"),this._failed("local",s,L.causes.WEBRTC_ERROR)})}).then(()=>{this._handleSessionTimersInIncomingResponse(s),this._accepted("remote",s),this.sendRequest(L.ACK),this._confirmed("local",null)});break}default:{const n=ke.sipErrorCause(s.status_code);console.log("failed 5"),this._failed("remote",s,n)}}}sendMSRP(s){const n=new cr("");n.method="SEND",n.addHeader("To-Path",`${this.my_addr[1]} ${this.target_addr[1]} ${this.target_addr[0]}`),n.addHeader("From-Path",`${this.my_addr[0]}`),n.addHeader("Message-ID",ke.createRandomToken(10)),n.addHeader("Byte-Range","1-25/25"),n.addHeader("Content-Type","text/plain"),n.addHeader("Success-Report","yes"),n.addHeader("Failure-Report","yes"),n.body=s;let a=n.toString();console.log(a);let o=[];for(var t=0;t<a.length;t++)o.push(a.charCodeAt(t).toString(16));console.log(o),this._connection.send(n.toString()),n.direction="outgoing",this.emit("newMessage",n),this._msgHistory.push(n),this.emit("msgHistoryUpdate",this._msgHistory)}_sendOk(s){let n=s.ident,a=s.getHeader("Message-ID"),o=new cr("");o.method="200 OK",o.addHeader("To-Path",`${this.my_addr[1]}`),o.addHeader("From-Path",`${this.my_addr[0]}`),o.addHeader("Message-ID",a),o.ident=n;let t=o.toString();console.log(t);let r=[];for(var _=0;_<t.length;_++)r.push(t.charCodeAt(_).toString(16));console.log(r),this._connection.send(o.toString())}_sendReport(s){let n=s.ident,a=s.getHeader("Message-ID"),o=new cr("");o.method="REPORT",o.addHeader("To-Path",`${s.getHeader("From-Path")}`),o.addHeader("From-Path",`${this.my_addr[0]}`),o.addHeader("Message-ID",a),o.addHeader("Byte-Range","1-25/25"),o.addHeader("Status","000 200 OK"),o.ident=n;let t=o.toString();console.log(t);let r=[];for(var _=0;_<t.length;_++)r.push(t.charCodeAt(_).toString(16));console.log(r),this._connection.send(o.toString())}parseAuth(s){const n={},a=s.replace("Digest","").split(",");for(const o of a){const t=o.trim().split("=");n[t[0]]=t[1].match('^"(.+)"$')[1]}return n}init_incoming(s,n){let a;const o=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;if(s.body&&o!=="application/sdp"){s.reply(415);return}if(this._status=Re.STATUS_INVITE_RECEIVED,this._from_tag=s.from_tag,this._id=s.call_id+this._from_tag,this._request=s,this._contact=this._ua.contact.toString(),s.hasHeader("expires")&&(a=s.getHeader("expires")*1e3),s.to_tag=ke.newTag(),!this._createDialog(s,"UAS",!0)){s.reply(500,"Missing Contact header field");return}s.body?this._late_sdp=!1:this._late_sdp=!0,this._status=Re.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(()=>{s.reply(408),console.log("failed 6"),this._failed("local",null,L.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),a&&(this._timers.expiresTimer=setTimeout(()=>{this._status===Re.STATUS_WAITING_FOR_ANSWER&&(s.reply(487),console.log("failed 7"),this._failed("system",null,L.causes.EXPIRES))},a)),this._direction="incoming",this._local_identity=s.to,this._remote_identity=s.from,n&&n(this),s.parseSDP(!0),this.target_addr=s.sdp.media[0].invalid[1].value.replaceAll("path:","").split(" ").reverse(),this._newMSRPSession("remote",s),this._status!==Re.STATUS_TERMINATED&&(s.reply(180,null,[`Contact: ${this._ua._contact}`]),this._progress("local",null))}_failed(s,n,a){this.emit("_failed",{originator:s,message:n||null,cause:a}),this._close(),this.emit("failed",{originator:s,message:n||null,cause:a})}_close(){if(console.log("CLOSE SESSION"),this._status!==Re.STATUS_TERMINATED){if(this._status=Re.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(s){console.log("close() | error closing the RTCPeerConnection: %o",s)}for(const s in this._timers)Object.prototype.hasOwnProperty.call(this._timers,s)&&clearTimeout(this._timers[s]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(const s in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,s)&&(this._earlyDialogs[s].terminate(),delete this._earlyDialogs[s]);for(const s in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,s)&&delete this._referSubscribers[s];this._ua.destroyMSRPSession(this)}}_createDialog(s,n,a){const o=n==="UAS"?s.to_tag:s.from_tag,t=n==="UAS"?s.from_tag:s.to_tag,r=s.call_id+o+t;let _=this._earlyDialogs[r];if(a)return _?!0:(_=new Zl(this,s,n,Zl.C.STATUS_EARLY),_.error?(console.log("failed 8"),this._failed("remote",s,L.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[r]=_,!0));{if(this._from_tag=s.from_tag,this._to_tag=s.to_tag,_)return _.update(s,n),this._dialog=_,delete this._earlyDialogs[r],!0;const h=new Zl(this,s,n);return h.error?(console.log("failed 9"),this._failed("remote",s,L.causes.INTERNAL_ERROR),!1):(this._dialog=h,!0)}}_newMSRPSession(s,n){this._ua.newMSRPSession(this,{originator:s,session:this,request:n})}_progress(s,n){this.emit("progress",{originator:s,response:n||null})}isEnded(){switch(this._status){case Re.STATUS_CANCELED:case Re.STATUS_TERMINATED:return!0;default:return!1}}_accepted(s,n){console.log("session accepted"),this._start_time=new Date,console.log('emit "accepted"'),this.emit("accepted",{originator:s,response:n||null})}_confirmed(s,n){console.log("session confirmed"),this._is_confirmed=!0,console.log('emit "confirmed"'),this.emit("confirmed",{originator:s,ack:n||null})}_ended(s,n,a){console.log("session ended"),this._end_time=new Date,this._close(),console.log('emit "ended"'),this.emit("ended",{originator:s,message:n||null,cause:a})}_handleSessionTimersInIncomingResponse(s){if(!this._sessionTimers.enabled)return;let n;s.session_expires&&s.session_expires>=L.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=s.session_expires,n=s.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,n="uac"),this._sessionTimers.refresher=n==="uac",this._runSessionTimer()}receiveRequest(s){if(console.log("receiveRequest()"),s.method===L.CANCEL)(this._status===Re.STATUS_WAITING_FOR_ANSWER||this._status===Re.STATUS_ANSWERED)&&(this._status=Re.STATUS_CANCELED,this._request.reply(487),console.log("failed 10"),this._failed("remote",s,L.causes.CANCELED));else switch(s.method){case L.ACK:if(this._status!==Re.STATUS_WAITING_FOR_ACK)return;if(this._status=Re.STATUS_CONFIRMED,clearTimeout(this._timers.ackTimer),clearTimeout(this._timers.invite2xxTimer),this._late_sdp){if(!s.body){this.terminate({cause:L.causes.MISSING_SDP,status_code:400});break}const n={originator:"remote",type:"answer",sdp:s.body};console.log('emit "sdp"'),this.emit("sdp",n);const a=new RTCSessionDescription({type:"answer",sdp:n.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(a)).then(()=>{this._is_confirmed||this._confirmed("remote",s)}).catch(o=>{this.terminate({cause:L.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),console.log('emit "peerconnection:setremotedescriptionfailed" [error:%o]',o),this.emit("peerconnection:setremotedescriptionfailed",o)})}else this._is_confirmed||this._confirmed("remote",s);break;case L.BYE:this._status===Re.STATUS_CONFIRMED||this._status===Re.STATUS_WAITING_FOR_ACK?(s.reply(200),this._ended("remote",s,L.causes.BYE)):this._status===Re.STATUS_INVITE_RECEIVED||this._status===Re.STATUS_WAITING_FOR_ANSWER?(s.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",s,L.causes.BYE)):s.reply(403,"Wrong Status");break;case L.INVITE:this._status===Re.STATUS_CONFIRMED?s.hasHeader("replaces")?this._receiveReplaces(s):this._receiveReinvite(s):s.reply(403,"Wrong Status");break;case L.INFO:this._status===Re.STATUS_1XX_RECEIVED||this._status===Re.STATUS_WAITING_FOR_ANSWER||this._status===Re.STATUS_ANSWERED||this._status===Re.STATUS_WAITING_FOR_ACK||this._status===Re.STATUS_CONFIRMED?(s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0)!==void 0?new yu(this).init_incoming(s):s.reply(415):s.reply(403,"Wrong Status");break;case L.UPDATE:this._status===Re.STATUS_CONFIRMED?this._receiveUpdate(s):s.reply(403,"Wrong Status");break;case L.REFER:this._status===Re.STATUS_CONFIRMED?this._receiveRefer(s):s.reply(403,"Wrong Status");break;case L.NOTIFY:this._status===Re.STATUS_CONFIRMED?this._receiveNotify(s):s.reply(403,"Wrong Status");break;default:s.reply(501)}}onTransportError(){console.log("onTransportError()"),this._status!==Re.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:L.causes.CONNECTION_ERROR,cause:L.causes.CONNECTION_ERROR})}onRequestTimeout(){console.log("onRequestTimeout()"),this._status!==Re.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:L.causes.REQUEST_TIMEOUT,cause:L.causes.REQUEST_TIMEOUT})}onDialogError(){console.log("onDialogError()"),this._status!==Re.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:L.causes.DIALOG_ERROR,cause:L.causes.DIALOG_ERROR})}}var xT=Qt();const Iu=ze(xT),ca=new Ga("Parser"),PT=(c,s)=>{let n,a,o=c.indexOf(`\r
157
+ `);if(o===-1){ca.warn("parseMessage() | no CRLF found, not a SIP message");return}const t=c.substring(0,o);let r=Iu.parse(t,"Request_Response");if(r===-1){ca.warn(`parseMessage() | error parsing first line of SIP message: "${t}"`);return}else r.status_code?(n=new An.IncomingResponse,n.status_code=r.status_code,n.reason_phrase=r.reason_phrase):(n=new An.IncomingRequest(s),n.method=r.method,n.ruri=r.uri);n.data=c;let _=o+2;for(;;){if(o=kT(c,_),o===-2){a=_+2;break}else if(o===-1){ca.warn("parseMessage() | malformed message");return}if(r=MT(n,c,_,o),r!==!0){ca.warn("parseMessage() |",r.error);return}_=o+2}if(n.hasHeader("content-length")){const h=n.getHeader("content-length");n.body=c.substr(a,h)}else n.body=c.substring(a);return n};function kT(c,s){let n=s,a=0,o=0;if(c.substring(n,n+2).match(/(^\r\n)/))return-2;for(;a===0;){if(o=c.indexOf(`\r
158
+ `,n),o===-1)return o;!c.substring(o+2,o+4).match(/(^\r\n)/)&&c.charAt(o+2).match(/(^\s+)/)?n=o+2:a=o}return a}function MT(c,s,n,a){let o;const t=s.indexOf(":",n),r=s.substring(n,t).trim(),_=s.substring(t+1,a).trim();switch(r.toLowerCase()){case"via":case"v":c.addHeader("via",_),c.getHeaders("via").length===1?(o=c.parseHeader("Via"),o&&(c.via=o,c.via_branch=o.branch)):o=0;break;case"from":case"f":c.setHeader("from",_),o=c.parseHeader("from"),o&&(c.from=o,c.from_tag=o.getParam("tag"));break;case"to":case"t":c.setHeader("to",_),o=c.parseHeader("to"),o&&(c.to=o,c.to_tag=o.getParam("tag"));break;case"record-route":if(o=Iu.parse(_,"Record_Route"),o===-1)o=void 0;else for(const h of o)c.addHeader("record-route",_.substring(h.possition,h.offset)),c.headers["Record-Route"][c.getHeaders("record-route").length-1].parsed=h.parsed;break;case"call-id":case"i":c.setHeader("call-id",_),o=c.parseHeader("call-id"),o&&(c.call_id=_);break;case"contact":case"m":if(o=Iu.parse(_,"Contact"),o===-1)o=void 0;else for(const h of o)c.addHeader("contact",_.substring(h.possition,h.offset)),c.headers.Contact[c.getHeaders("contact").length-1].parsed=h.parsed;break;case"content-length":case"l":c.setHeader("content-length",_),o=c.parseHeader("content-length");break;case"content-type":case"c":c.setHeader("content-type",_),o=c.parseHeader("content-type");break;case"cseq":c.setHeader("cseq",_),o=c.parseHeader("cseq"),o&&(c.cseq=o.value),c instanceof An.IncomingResponse&&(c.method=o.method);break;case"max-forwards":c.setHeader("max-forwards",_),o=c.parseHeader("max-forwards");break;case"www-authenticate":c.setHeader("www-authenticate",_),o=c.parseHeader("www-authenticate");break;case"proxy-authenticate":c.setHeader("proxy-authenticate",_),o=c.parseHeader("proxy-authenticate");break;case"session-expires":case"x":c.setHeader("session-expires",_),o=c.parseHeader("session-expires"),o&&(c.session_expires=o.expires,c.session_expires_refresher=o.refresher);break;case"refer-to":case"r":c.setHeader("refer-to",_),o=c.parseHeader("refer-to"),o&&(c.refer_to=o);break;case"replaces":c.setHeader("replaces",_),o=c.parseHeader("replaces"),o&&(c.replaces=o);break;case"event":case"o":c.setHeader("event",_),o=c.parseHeader("event"),o&&(c.event=o);break;default:c.addHeader(r,_),o=0}return o===void 0?{error:`error parsing header "${r}"`}:!0}const LT={parseMessage:PT},Wi=new Ga("Registrator"),fa=10;class $T{constructor(s,n){this._reg_id=1,this._ua=s,this._transport=n,this._registrar=s.configuration.registrar_server,this._expires=s.configuration.register_expires,this._call_id=Ts.createRandomToken(22),this._cseq=0,this._to_uri=s.configuration.uri,this._registrationTimer=null,this._registering=!1,this._registered=!1,this._contact=this._ua.contact.toString();const a=this._contact.indexOf(">");if(a!==-1){const o=this._contact.slice(0,a)+this._contact.slice(a+1,this._contact.length);this._contact=o}this._extra_contact="",this._extraContactParams="",this._extra_contact+=";+sip.ice",this._extraHeaders=[],this._sipInstance=`"<urn:uuid:${this._ua.configuration.instance_id}>"`,this._extra_contact+=`;reg-id=${this._reg_id}`,this._extra_contact+=`;+sip.instance=${this._sipInstance}`}get registered(){return this._registered}setExtraHeaders(s){Array.isArray(s)||(s=[]),this._extraHeaders=s.slice()}setExtraContactParams(s){s instanceof Object||(s={}),this._extraContactParams="";for(const n in s)if(Object.prototype.hasOwnProperty.call(s,n)){const a=s[n];this._extraContactParams+=`;${n}`,a&&(this._extraContactParams+=`=${a}`)}}setExtraContactUriParams(s){s instanceof Object||(s={}),this._extraContactParams="";for(const n in s)if(Object.prototype.hasOwnProperty.call(s,n)){const a=s[n];this._extraContactParams+=`;${n}`,a&&(this._extraContactParams+=`=${a}`)}}register(){if(this._registering){Wi.debug("Register request in progress...");return}const s=this._extraHeaders.slice();s.push(`Contact: ${this._contact}${this._extraContactParams}>${this._extra_contact};expires=${this._expires}`),s.push(`Expires: ${this._expires}`);const n=new It.OutgoingRequest(L.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},s),a=new La(this._ua,n,{onRequestTimeout:()=>{this._registrationFailure(null,L.causes.REQUEST_TIMEOUT)},onTransportError:()=>{this._registrationFailure(null,L.causes.CONNECTION_ERROR)},onAuthenticated:()=>{this._cseq+=1},onReceiveResponse:o=>{if(o.cseq===this._cseq)switch(this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),!0){case/^1[0-9]{2}$/.test(o.status_code):break;case/^2[0-9]{2}$/.test(o.status_code):{if(this._registering=!1,!o.hasHeader("Contact")){Wi.debug("no Contact header in response to REGISTER, response ignored");break}const t=o.headers.Contact.reduce((d,g)=>d.concat(g.parsed),[]);let r=t.find(d=>this._sipInstance===d.getParam("+sip.instance")&&this._reg_id===parseInt(d.getParam("reg-id")));if(r||(r=t.find(d=>d.uri.user===this._ua.contact.uri.user)),!r){Wi.debug("no Contact header pointing to us, response ignored");break}let _=r.getParam("expires");!_&&o.hasHeader("expires")&&(_=o.getHeader("expires")),_||(_=this._expires),_=Number(_),_<fa&&(_=fa);const h=_>64?_*1e3/2+Math.floor((_/2-32)*1e3*Math.random()):_*1e3-5e3;this._registrationTimer=setTimeout(()=>{this._registrationTimer=null,this._ua.listeners("registrationExpiring").length===0?this.register():this._ua.emit("registrationExpiring")},h),r.hasParam("temp-gruu")&&(this._ua.contact.temp_gruu=r.getParam("temp-gruu").replace(/"/g,"")),r.hasParam("pub-gruu")&&(this._ua.contact.pub_gruu=r.getParam("pub-gruu").replace(/"/g,"")),this._registered||(this._registered=!0,this._ua.registered({response:o}));break}case/^423$/.test(o.status_code):{o.hasHeader("min-expires")?(this._expires=Number(o.getHeader("min-expires")),this._expires<fa&&(this._expires=fa),this.register()):(Wi.debug("423 response received for REGISTER without Min-Expires"),this._registrationFailure(o,L.causes.SIP_FAILURE_CODE));break}default:{const t=Ts.sipErrorCause(o.status_code);this._registrationFailure(o,t)}}}});this._registering=!0,a.send()}unregister(s={}){if(!this._registered){Wi.debug("already unregistered");return}this._registered=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null);const n=this._extraHeaders.slice();s.all?n.push(`Contact: *${this._extraContactParams}`):n.push(`Contact: ${this._contact}${this._extraContactParams}>${this._extra_contact};expires=0`),n.push("Expires: 0");const a=new It.OutgoingRequest(L.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},n);new La(this._ua,a,{onRequestTimeout:()=>{this._unregistered(null,L.causes.REQUEST_TIMEOUT)},onTransportError:()=>{this._unregistered(null,L.causes.CONNECTION_ERROR)},onAuthenticated:()=>{this._cseq+=1},onReceiveResponse:t=>{switch(!0){case/^1[0-9]{2}$/.test(t.status_code):break;case/^2[0-9]{2}$/.test(t.status_code):this._unregistered(t);break;default:{const r=Ts.sipErrorCause(t.status_code);this._unregistered(t,r)}}}}).send()}close(){this._registered&&this.unregister()}onTransportClosed(){this._registering=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),this._registered&&(this._registered=!1,this._ua.unregistered({}))}_registrationFailure(s,n){this._registering=!1,this._ua.registrationFailed({response:s||null,cause:n}),this._registered&&(this._registered=!1,this._ua.unregistered({response:s||null,cause:n}))}_unregistered(s,n){this._registering=!1,this._registered=!1,this._ua.unregistered({response:s||null,cause:n||null})}}const nt=console,qs={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2},HT=RT;class FT extends HT{constructor(s){super(s),this._msrp_sessions=[],this._transactions={nist:{},nict:{},ist:{},ict:{}},this._janus_sessions=[],this._registrator=new $T(this)}call(s,n){return super.call(s,n)}joinVideoCall(s,n,a){nt.debug("call()");const o=new $a(this);return o.configureMedia({audio:!0,video:!0}),o.connect(s,n,a),o}_loadConfig(s){try{nl.load(this._configuration,s)}catch(o){throw o}this._configuration.display_name===0&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=Ts.newUUID()),this._configuration.jssip_id=Ts.createRandomToken(5);const n=this._configuration.uri.clone();n.user=null,this._configuration.hostport_params=n.toString().replace(/^sip:/i,"");try{this._transport=new Xg(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=jT.bind(this),this._transport.onconnect=VT.bind(this),this._transport.ondisconnect=qT.bind(this),this._transport.ondata=BT.bind(this)}catch(o){throw nt.warn(o),new Vs.ConfigurationError("sockets",this._configuration.sockets)}if(delete this._configuration.sockets,this._configuration.authorization_user||(this._configuration.authorization_user=this._configuration.uri.user),!this._configuration.registrar_server){const o=this._configuration.uri.clone();o.user=null,o.clearParams(),o.clearHeaders(),this._configuration.registrar_server=o}this._configuration.no_answer_timeout*=1e3,this._configuration.contact_uri?this._configuration.via_host=this._configuration.contact_uri.host:this._configuration.contact_uri=new pr("sip",Ts.createRandomToken(8),this._configuration.via_host,null,{transport:"ws"}),this._contact={pub_gruu:null,temp_gruu:null,uri:this._configuration.contact_uri,toString(o={}){const t=o.anonymous||null,r=o.outbound||null;let _="<";return t?_+=this.temp_gruu||"sip:anonymous@anonymous.invalid;transport=ws":_+=this.pub_gruu||this.uri.toString(),r&&(t?!this.temp_gruu:!this.pub_gruu)&&(_+=";ob"),_+=">",_}};const a=["authorization_user","password","realm","ha1","authorization_jwt","display_name","register"];for(const o in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,o)&&(a.indexOf(o)!==-1?Object.defineProperty(this._configuration,o,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,o,{writable:!1,configurable:!1}));nt.debug("configuration parameters after validation:");for(const o in this._configuration)if(Object.prototype.hasOwnProperty.call(nl.settings,o))switch(o){case"uri":case"registrar_server":nt.debug(`- ${o}: ${this._configuration[o]}`);break;case"password":case"ha1":case"authorization_jwt":nt.debug(`- ${o}: NOT SHOWN`);break;default:nt.debug(`- ${o}: ${JSON.stringify(this._configuration[o])}`)}}newMSRPSession(s,n){s.on("msgHistoryUpdate",a=>{console.log(a)}),this._msrp_sessions[s.id]=s,this.emit("newMSRPSession",n)}newJanusSession(s,n){this._janus_sessions[s.id]=s,this.emit("newJanusSession",n)}destroyMSRPSession(s){delete this._msrp_sessions[s.id]}destroyJanusSession(s){delete this._janus_sessions[s.id]}receiveRequest(s){var t,r,_,h;const n=s.method;if(console.log("-----------"),s.ruri.user!==this._configuration.uri.user&&s.ruri.user!==this._contact.uri.user){nt.debug("Request-URI does not point to us"),s.method!==De.ACK&&s.reply_sl(404);return}if(s.ruri.scheme===De.SIPS){s.reply_sl(416);return}if(Bt.checkTransaction(this,s))return;if(n===De.INVITE?new Bt.InviteServerTransaction(this,this._transport,s):n!==De.ACK&&n!==De.CANCEL&&new Bt.NonInviteServerTransaction(this,this._transport,s),n===De.OPTIONS){if(this.listeners("newOptions").length===0){s.reply(200);return}new Qc.Options(this).init_incoming(s)}else if(n===De.MESSAGE){if(this.listeners("newMessage").length===0){s.reply(405);return}new Qc.Message(this).init_incoming(s)}else if(n===De.INVITE&&!s.to_tag&&this.listeners("newRTCSession").length===0){s.reply(405);return}let a,o;if(s.to_tag)if(a=this._findDialog(s.call_id,s.from_tag,s.to_tag),a)a.receiveRequest(s);else if(n===De.NOTIFY)if(o=this._findSession(s),o)o.receiveRequest(s);else{if(s.body)try{const d=JSON.parse(s.body)||{};(r=(t=d.plugindata)==null?void 0:t.data)!=null&&r.publishers&&Object.values(this._janus_sessions)[0].receivePublishers(d),(h=(_=d.plugindata)==null?void 0:_.data)!=null&&h.unpublished&&Object.values(this._janus_sessions)[0].receiveUnpublished(d.plugindata.data.unpublished)}catch(d){console.error(d)}s.reply(200)}else n!==De.ACK&&s.reply(481);else switch(n){case De.INVITE:if(window.RTCPeerConnection)if(s.hasHeader("replaces")){const d=s.replaces;a=this._findDialog(d.call_id,d.from_tag,d.to_tag),a?(o=a.owner,o.isEnded()?s.reply(603):o.receiveRequest(s)):s.reply(481)}else s.body.search(/MSRP/ig)>-1?(o=new nu(this),o.init_incoming(s)):s.body.search(/JANUS/ig)>-1||(o=new kg(this),o.init_incoming(s));else nt.warn("INVITE received but WebRTC is not supported"),s.reply(488);break;case De.BYE:s.reply(481);break;case De.CANCEL:o=this._findSession(s),o?o.receiveRequest(s):nt.debug("received CANCEL request for a non existent session");break;case De.ACK:break;case De.NOTIFY:this.emit("sipEvent",{event:s.event,request:s}),s.reply(200);break;default:s.reply(405);break}}startMSRP(s,n){nt.debug("startMSRP()",n);const a=new nu(this);return a.connect(s),a}startJanus(s,n){nt.debug("startJanus()",n);const a=new nu(this);return a.connect(s),a}terminateMSRPSessions(s){nt.debug("terminateSessions()");for(const n in this._msrp_sessions)this._msrp_sessions[n].isEnded()||this._msrp_sessions[n].terminate(s)}terminateJanusSessions(s){nt.debug("terminateSessions()");for(const n in this._janus_sessions)this._janus_sessions[n].isEnded()||this._janus_sessions[n].terminate(s)}enableJanusAudio(s){nt.debug("enableJanusAudio()");for(const n in this._janus_sessions)this._janus_sessions[n].isEnded()||(s?this._janus_sessions[n].startAudio():this._janus_sessions[n].stopAudio())}enableJanusVideo(s){nt.debug("enableJanusVideo()");for(const n in this._janus_sessions)this._janus_sessions[n].isEnded()||(s?this._janus_sessions[n].startVideo():this._janus_sessions[n].stopVideo())}stop(){if(nt.debug("stop()"),this._dynConfiguration={},this._status===qs.STATUS_USER_CLOSED){nt.debug("UA already closed");return}this._registrator.close();const s=Object.keys(this._sessions).length;for(const a in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,a)){nt.debug(`closing session ${a}`);try{this._sessions[a].terminate()}catch(o){console.error(o)}}for(const a in this._msrp_sessions)if(Object.prototype.hasOwnProperty.call(this._msrp_sessions,a)){nt.debug(`closing session ${a}`);try{this._msrp_sessions[a].terminate()}catch(o){console.error(o)}}for(const a in this._janus_sessions)if(Object.prototype.hasOwnProperty.call(this._janus_sessions,a)){nt.debug(`closing session ${a}`);try{this._janus_sessions[a].terminate()}catch(o){console.error(o)}}for(const a in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,a))try{this._applicants[a].close()}catch(o){console.error(o)}this._status=qs.STATUS_USER_CLOSED,Object.keys(this._transactions.nict).length+Object.keys(this._transactions.nist).length+Object.keys(this._transactions.ict).length+Object.keys(this._transactions.ist).length===0&&s===0?this._transport.disconnect():this._closeTimer=setTimeout(()=>{this._closeTimer=null,this._transport.disconnect()},2e3)}}function jT(c){this.emit("connecting",c)}function VT(c){this._status!==qs.STATUS_USER_CLOSED&&(this._status=qs.STATUS_READY,this._error=null,this.emit("connected",c),this._dynConfiguration.register&&this._registrator.register())}function qT(c){const s=["nict","ict","nist","ist"];for(const n of s)for(const a in this._transactions[n])Object.prototype.hasOwnProperty.call(this._transactions[n],a)&&this._transactions[n][a].onTransportError();this.emit("disconnected",c),this._registrator.onTransportClosed(),this._status!==qs.STATUS_USER_CLOSED&&(this._status=qs.STATUS_NOT_READY,this._error=qs.NETWORK_ERROR)}function BT(c){console.log("onTransportData",c);const s=c.transport;let n=c.message;if(n=LT.parseMessage(n,this),!n){console.log("if 1 return");return}if(this._status===qs.STATUS_USER_CLOSED&&n instanceof An.IncomingRequest){console.log("if 2 return");return}if(!hT(n,this,s)){console.log("if 3 return");return}if(console.log("onTransportData message",n),console.log("onTransportData instanceof",n instanceof An.IncomingRequest),n instanceof An.IncomingRequest)n.transport=s,console.log("onTransportData receiveRequest"),this.receiveRequest(n);else if(n instanceof An.IncomingResponse){let a;switch(n.method){case De.INVITE:a=this._transactions.ict[n.via_branch],a&&a.receiveResponse(n);break;case De.ACK:break;default:a=this._transactions.nict[n.via_branch],a&&a.receiveResponse(n);break}}}const GT=["roomId","_audioMuted","_cancel_reason","_contact","direction","_end_time","_eventsCount","_from_tag","_id","_is_canceled","_is_confirmed","_late_sdp","_localHold","_videoMuted","status","start_time","_remote_identity","audioTag","isOnHold","localMuted","autoAnswer"],WT=["_cancel_reason","_contact","direction","_end_time","_eventsCount","_from_tag","_id","_is_canceled","_is_confirmed","_late_sdp","status","start_time","_remote_identity","target_addr"];function Nf(c){const s={};return GT.forEach(n=>{c[n]!==void 0&&(s[n]=c[n])}),s.localHold=c._localHold,s}function Uf(c){const s={};return WT.forEach(n=>{c[n]!==void 0&&(s[n]=c[n])}),s}function xf(c,s){const n=new AudioContext,a=n.createMediaStreamSource(c),o=n.createMediaStreamDestination(),t=n.createGain();return a.connect(t),t.connect(o),t.gain.value=s,o.stream}function KT(c,s,n,a){const o=document.createElement("audio");o.id=s._id,o.className="audioTag",o.srcObject=c,wh()||(o.setSinkId(n),o.volume=a),o.play(),s.audioTag=o}function YT(c){if(c&&typeof c.log=="function"&&typeof c.warn=="function"&&typeof c.error=="function")return!0}function wh(){return/Mobi|Android|iPhone/i.test(navigator.userAgent)}const JT=ut,zT=Qt(),Dt=new JT("WebSocketInterface");var XT=class{constructor(s){Dt.debug('new() [url:"%s"]',s),this._url=s,this._sip_uri=null,this._via_transport=null,this._ws=null;const n=zT.parse(s,"absoluteURI");if(n===-1)throw Dt.warn(`invalid WebSocket URI: ${s}`),new TypeError(`Invalid argument: ${s}`);if(n.scheme!=="wss"&&n.scheme!=="ws")throw Dt.warn(`invalid WebSocket URI scheme: ${n.scheme}`),new TypeError(`Invalid argument: ${s}`);this._sip_uri=`sip:${n.host}${n.port?`:${n.port}`:""};transport=ws`,this._via_transport=n.scheme.toUpperCase()}get via_transport(){return this._via_transport}set via_transport(s){this._via_transport=s.toUpperCase()}get sip_uri(){return this._sip_uri}get url(){return this._url}connect(){if(Dt.debug("connect()"),this.isConnected()){Dt.debug(`WebSocket ${this._url} is already connected`);return}else if(this.isConnecting()){Dt.debug(`WebSocket ${this._url} is connecting`);return}this._ws&&this.disconnect(),Dt.debug(`connecting to WebSocket ${this._url}`);try{this._ws=new WebSocket(this._url,"sip"),this._ws.binaryType="arraybuffer",this._ws.onopen=this._onOpen.bind(this),this._ws.onclose=this._onClose.bind(this),this._ws.onmessage=this._onMessage.bind(this),this._ws.onerror=this._onError.bind(this)}catch(s){this._onError(s)}}disconnect(){Dt.debug("disconnect()"),this._ws&&(this._ws.onopen=()=>{},this._ws.onclose=()=>{},this._ws.onmessage=()=>{},this._ws.onerror=()=>{},this._ws.close(),this._ws=null)}send(s){return Dt.debug("send()"),this.isConnected()?(this._ws.send(s),!0):(Dt.warn("unable to send message, WebSocket is not open"),!1)}isConnected(){return this._ws&&this._ws.readyState===this._ws.OPEN}isConnecting(){return this._ws&&this._ws.readyState===this._ws.CONNECTING}_onOpen(){Dt.debug(`WebSocket ${this._url} connected`),this.onconnect()}_onClose({wasClean:s,code:n,reason:a}){Dt.debug(`WebSocket ${this._url} closed`),s===!1&&Dt.debug("WebSocket abrupt disconnection"),this.ondisconnect(!s,n,a)}_onMessage({data:s}){Dt.debug("received WebSocket message"),this.ondata(s)}_onError(s){Dt.warn(`WebSocket ${this._url} error: `,s)}};const bu=Ha,QT=De,ZT=As,ev=yt(),tv=bh,sv=ys(),nv=$u(),rv=Qt(),iv=XT,lv=gr("JsSIP");lv("version %s",bu.version);var av={C:QT,Exceptions:ZT,Utils:ev,UA:tv,URI:sv,NameAddrHeader:nv,WebSocketInterface:iv,Grammar:rv,debug:gr,get name(){return bu.title},get version(){return bu.version}};const ov=ze(av);function ru(c){return c<10?`0${c}`:`${c}`}function uv(c){let s=c.hours||0,n=c.minutes||0,a=c.seconds||0;a++,a===60&&(a=0,n++,n===60&&(n=0,s++));const o=`${ru(s)}:${ru(n)}:${ru(a)}`;return{seconds:a,minutes:n,hours:s,formatted:o}}var At={};At.forEach=async(c,s,n)=>{const a=[];for(let o=0;o<c.length;o++)if(o in c){const t=Promise.resolve(c[o]).then(r=>s.call(n||globalThis,r,o,c));a.push(t)}await Promise.all(a)};At.forEachSeries=async(c,s,n)=>{for(let a=0;a<c.length;a++)a in c&&await s.call(n||globalThis,await c[a],a,c)};At.map=async(c,s,n)=>{const a=[];for(let o=0;o<c.length;o++)o in c&&(a[o]=Promise.resolve(c[o]).then(t=>s.call(n||globalThis,t,o,c)));return Promise.all(a)};At.mapSeries=async(c,s,n)=>{const a=[];for(let o=0;o<c.length;o++)o in c&&(a[o]=await s.call(n||globalThis,await c[o],o,c));return a};At.find=(c,s,n)=>new Promise((a,o)=>{if(c.length===0)return a();let t=1;for(let r=0;r<c.length;r++){const _=h=>{h?a(c[r]):t===c.length&&a(),t++};Promise.resolve(c[r]).then(h=>s.call(n||globalThis,h,r,c)).then(_).catch(o)}});At.findSeries=async(c,s,n)=>{for(let a=0;a<c.length;a++)if(await s.call(n||globalThis,await c[a],a,c))return c[a]};At.findIndex=(c,s,n)=>new Promise((a,o)=>{if(c.length===0)return a(-1);let t=1;for(let r=0;r<c.length;r++){const _=h=>{h?a(r):t===c.length&&a(-1),t++};Promise.resolve(c[r]).then(h=>s.call(n||globalThis,h,r,c)).then(_).catch(o)}});At.findIndexSeries=async(c,s,n)=>{for(let a=0;a<c.length;a++)if(await s.call(n||globalThis,await c[a],a,c))return a};At.some=(c,s,n)=>new Promise((a,o)=>{if(c.length===0)return a(!1);let t=1;for(let r=0;r<c.length;r++){if(!(r in c)){t++;continue}const _=h=>{h?a(!0):t===c.length&&a(!1),t++};Promise.resolve(c[r]).then(h=>s.call(n||globalThis,h,r,c)).then(_).catch(o)}});At.someSeries=async(c,s,n)=>{for(let a=0;a<c.length;a++)if(a in c&&await s.call(n||globalThis,await c[a],a,c))return!0;return!1};At.every=(c,s,n)=>new Promise((a,o)=>{if(c.length===0)return a(!0);let t=1;for(let r=0;r<c.length;r++){if(!(r in c)){t++;continue}const _=h=>{h?t===c.length&&a(!0):a(!1),t++};Promise.resolve(c[r]).then(h=>s.call(n||globalThis,h,r,c)).then(_).catch(o)}});At.everySeries=async(c,s,n)=>{for(let a=0;a<c.length;a++)if(a in c&&!await s.call(n||globalThis,await c[a],a,c))return!1;return!0};At.filter=(c,s,n)=>new Promise(async(a,o)=>{const t=[];for(let _=0;_<c.length;_++)_ in c&&(t[_]=Promise.resolve(c[_]).then(h=>s.call(n||globalThis,h,_,c)).catch(o));const r=[];for(let _=0;_<t.length;_++)await t[_]&&r.push(await c[_]);a(r)});At.filterSeries=async(c,s,n)=>{const a=[];for(let o=0;o<c.length;o++)o in c&&await s.call(n||globalThis,await c[o],o,c)&&a.push(await c[o]);return a};At.reduce=async(c,s,n)=>{if(c.length===0&&n===void 0)throw TypeError("Reduce of empty array with no initial value");let a,o;for(n!==void 0?(o=n,a=0):(o=c[0],a=1),a;a<c.length;a++)a in c&&(o=await s(await o,await c[a],a,c));return o};var Oh={};(function(c){const s=At;Object.keys(s).forEach(n=>{const a=n.charAt(0).toUpperCase()+n.slice(1);c[`async${a}`]=async function(...o){return s[n](this,...o)}})})(Oh);const cv=At,fv=Oh;var hv=Object.assign(cv,{instanceMethods:fv});const Rn=new AudioContext,Xt={NEW_CALL:"new_call",CALL_CONFIRMED:"confirmed",CALL_FAILED:"failed",CALL_PROGRESS:"progress",CALL_ENDED:"ended"};var _v={exports:{}};(function(c){var s=function(n){var a=Object.prototype,o=a.hasOwnProperty,t=Object.defineProperty||function(ee,W,G){ee[W]=G.value},r,_=typeof Symbol=="function"?Symbol:{},h=_.iterator||"@@iterator",d=_.asyncIterator||"@@asyncIterator",g=_.toStringTag||"@@toStringTag";function T(ee,W,G){return Object.defineProperty(ee,W,{value:G,enumerable:!0,configurable:!0,writable:!0}),ee[W]}try{T({},"")}catch{T=function(W,G,re){return W[G]=re}}function E(ee,W,G,re){var ge=W&&W.prototype instanceof oe?W:oe,be=Object.create(ge.prototype),Pe=new x(re||[]);return t(be,"_invoke",{value:J(ee,G,Pe)}),be}n.wrap=E;function y(ee,W,G){try{return{type:"normal",arg:ee.call(W,G)}}catch(re){return{type:"throw",arg:re}}}var A="suspendedStart",C="suspendedYield",I="executing",H="completed",$={};function oe(){}function N(){}function j(){}var Se={};T(Se,h,function(){return this});var ve=Object.getPrototypeOf,k=ve&&ve(ve(se([])));k&&k!==a&&o.call(k,h)&&(Se=k);var D=j.prototype=oe.prototype=Object.create(Se);N.prototype=j,t(D,"constructor",{value:j,configurable:!0}),t(j,"constructor",{value:N,configurable:!0}),N.displayName=T(j,g,"GeneratorFunction");function B(ee){["next","throw","return"].forEach(function(W){T(ee,W,function(G){return this._invoke(W,G)})})}n.isGeneratorFunction=function(ee){var W=typeof ee=="function"&&ee.constructor;return W?W===N||(W.displayName||W.name)==="GeneratorFunction":!1},n.mark=function(ee){return Object.setPrototypeOf?Object.setPrototypeOf(ee,j):(ee.__proto__=j,T(ee,g,"GeneratorFunction")),ee.prototype=Object.create(D),ee},n.awrap=function(ee){return{__await:ee}};function q(ee,W){function G(be,Pe,Ce,le){var ye=y(ee[be],ee,Pe);if(ye.type==="throw")le(ye.arg);else{var st=ye.arg,at=st.value;return at&&typeof at=="object"&&o.call(at,"__await")?W.resolve(at.__await).then(function(Ee){G("next",Ee,Ce,le)},function(Ee){G("throw",Ee,Ce,le)}):W.resolve(at).then(function(Ee){st.value=Ee,Ce(st)},function(Ee){return G("throw",Ee,Ce,le)})}}var re;function ge(be,Pe){function Ce(){return new W(function(le,ye){G(be,Pe,le,ye)})}return re=re?re.then(Ce,Ce):Ce()}t(this,"_invoke",{value:ge})}B(q.prototype),T(q.prototype,d,function(){return this}),n.AsyncIterator=q,n.async=function(ee,W,G,re,ge){ge===void 0&&(ge=Promise);var be=new q(E(ee,W,G,re),ge);return n.isGeneratorFunction(W)?be:be.next().then(function(Pe){return Pe.done?Pe.value:be.next()})};function J(ee,W,G){var re=A;return function(be,Pe){if(re===I)throw new Error("Generator is already running");if(re===H){if(be==="throw")throw Pe;return tt()}for(G.method=be,G.arg=Pe;;){var Ce=G.delegate;if(Ce){var le=F(Ce,G);if(le){if(le===$)continue;return le}}if(G.method==="next")G.sent=G._sent=G.arg;else if(G.method==="throw"){if(re===A)throw re=H,G.arg;G.dispatchException(G.arg)}else G.method==="return"&&G.abrupt("return",G.arg);re=I;var ye=y(ee,W,G);if(ye.type==="normal"){if(re=G.done?H:C,ye.arg===$)continue;return{value:ye.arg,done:G.done}}else ye.type==="throw"&&(re=H,G.method="throw",G.arg=ye.arg)}}}function F(ee,W){var G=W.method,re=ee.iterator[G];if(re===r)return W.delegate=null,G==="throw"&&ee.iterator.return&&(W.method="return",W.arg=r,F(ee,W),W.method==="throw")||G!=="return"&&(W.method="throw",W.arg=new TypeError("The iterator does not provide a '"+G+"' method")),$;var ge=y(re,ee.iterator,W.arg);if(ge.type==="throw")return W.method="throw",W.arg=ge.arg,W.delegate=null,$;var be=ge.arg;if(!be)return W.method="throw",W.arg=new TypeError("iterator result is not an object"),W.delegate=null,$;if(be.done)W[ee.resultName]=be.value,W.next=ee.nextLoc,W.method!=="return"&&(W.method="next",W.arg=r);else return be;return W.delegate=null,$}B(D),T(D,g,"Generator"),T(D,h,function(){return this}),T(D,"toString",function(){return"[object Generator]"});function X(ee){var W={tryLoc:ee[0]};1 in ee&&(W.catchLoc=ee[1]),2 in ee&&(W.finallyLoc=ee[2],W.afterLoc=ee[3]),this.tryEntries.push(W)}function U(ee){var W=ee.completion||{};W.type="normal",delete W.arg,ee.completion=W}function x(ee){this.tryEntries=[{tryLoc:"root"}],ee.forEach(X,this),this.reset(!0)}n.keys=function(ee){var W=Object(ee),G=[];for(var re in W)G.push(re);return G.reverse(),function ge(){for(;G.length;){var be=G.pop();if(be in W)return ge.value=be,ge.done=!1,ge}return ge.done=!0,ge}};function se(ee){if(ee){var W=ee[h];if(W)return W.call(ee);if(typeof ee.next=="function")return ee;if(!isNaN(ee.length)){var G=-1,re=function ge(){for(;++G<ee.length;)if(o.call(ee,G))return ge.value=ee[G],ge.done=!1,ge;return ge.value=r,ge.done=!0,ge};return re.next=re}}return{next:tt}}n.values=se;function tt(){return{value:r,done:!0}}return x.prototype={constructor:x,reset:function(ee){if(this.prev=0,this.next=0,this.sent=this._sent=r,this.done=!1,this.delegate=null,this.method="next",this.arg=r,this.tryEntries.forEach(U),!ee)for(var W in this)W.charAt(0)==="t"&&o.call(this,W)&&!isNaN(+W.slice(1))&&(this[W]=r)},stop:function(){this.done=!0;var ee=this.tryEntries[0],W=ee.completion;if(W.type==="throw")throw W.arg;return this.rval},dispatchException:function(ee){if(this.done)throw ee;var W=this;function G(le,ye){return be.type="throw",be.arg=ee,W.next=le,ye&&(W.method="next",W.arg=r),!!ye}for(var re=this.tryEntries.length-1;re>=0;--re){var ge=this.tryEntries[re],be=ge.completion;if(ge.tryLoc==="root")return G("end");if(ge.tryLoc<=this.prev){var Pe=o.call(ge,"catchLoc"),Ce=o.call(ge,"finallyLoc");if(Pe&&Ce){if(this.prev<ge.catchLoc)return G(ge.catchLoc,!0);if(this.prev<ge.finallyLoc)return G(ge.finallyLoc)}else if(Pe){if(this.prev<ge.catchLoc)return G(ge.catchLoc,!0)}else if(Ce){if(this.prev<ge.finallyLoc)return G(ge.finallyLoc)}else throw new Error("try statement without catch or finally")}}},abrupt:function(ee,W){for(var G=this.tryEntries.length-1;G>=0;--G){var re=this.tryEntries[G];if(re.tryLoc<=this.prev&&o.call(re,"finallyLoc")&&this.prev<re.finallyLoc){var ge=re;break}}ge&&(ee==="break"||ee==="continue")&&ge.tryLoc<=W&&W<=ge.finallyLoc&&(ge=null);var be=ge?ge.completion:{};return be.type=ee,be.arg=W,ge?(this.method="next",this.next=ge.finallyLoc,$):this.complete(be)},complete:function(ee,W){if(ee.type==="throw")throw ee.arg;return ee.type==="break"||ee.type==="continue"?this.next=ee.arg:ee.type==="return"?(this.rval=this.arg=ee.arg,this.method="return",this.next="end"):ee.type==="normal"&&W&&(this.next=W),$},finish:function(ee){for(var W=this.tryEntries.length-1;W>=0;--W){var G=this.tryEntries[W];if(G.finallyLoc===ee)return this.complete(G.completion,G.afterLoc),U(G),$}},catch:function(ee){for(var W=this.tryEntries.length-1;W>=0;--W){var G=this.tryEntries[W];if(G.tryLoc===ee){var re=G.completion;if(re.type==="throw"){var ge=re.arg;U(G)}return ge}}throw new Error("illegal catch attempt")},delegateYield:function(ee,W,G){return this.delegate={iterator:se(ee),resultName:W,nextLoc:G},this.method==="next"&&(this.arg=r),$}},n}(c.exports);try{regeneratorRuntime=s}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=s:Function("r","regeneratorRuntime = r")(s)}})(_v);var Dh={exports:{}};(function(c){(function(s,n){c.exports?c.exports=n():s.log=n()})($h,function(){var s=function(){},n="undefined",a=typeof window!==n&&typeof window.navigator!==n&&/Trident\/|MSIE /.test(window.navigator.userAgent),o=["trace","debug","info","warn","error"];function t(C,I){var H=C[I];if(typeof H.bind=="function")return H.bind(C);try{return Function.prototype.bind.call(H,C)}catch{return function(){return Function.prototype.apply.apply(H,[C,arguments])}}}function r(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function _(C){return C==="debug"&&(C="log"),typeof console===n?!1:C==="trace"&&a?r:console[C]!==void 0?t(console,C):console.log!==void 0?t(console,"log"):s}function h(C,I){for(var H=0;H<o.length;H++){var $=o[H];this[$]=H<C?s:this.methodFactory($,C,I)}this.log=this.debug}function d(C,I,H){return function(){typeof console!==n&&(h.call(this,I,H),this[C].apply(this,arguments))}}function g(C,I,H){return _(C)||d.apply(this,arguments)}function T(C,I,H){var $=this,oe;I=I??"WARN";var N="loglevel";typeof C=="string"?N+=":"+C:typeof C=="symbol"&&(N=void 0);function j(D){var B=(o[D]||"silent").toUpperCase();if(!(typeof window===n||!N)){try{window.localStorage[N]=B;return}catch{}try{window.document.cookie=encodeURIComponent(N)+"="+B+";"}catch{}}}function Se(){var D;if(!(typeof window===n||!N)){try{D=window.localStorage[N]}catch{}if(typeof D===n)try{var B=window.document.cookie,q=B.indexOf(encodeURIComponent(N)+"=");q!==-1&&(D=/^([^;]+)/.exec(B.slice(q))[1])}catch{}return $.levels[D]===void 0&&(D=void 0),D}}function ve(){if(!(typeof window===n||!N)){try{window.localStorage.removeItem(N);return}catch{}try{window.document.cookie=encodeURIComponent(N)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}$.name=C,$.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},$.methodFactory=H||g,$.getLevel=function(){return oe},$.setLevel=function(D,B){if(typeof D=="string"&&$.levels[D.toUpperCase()]!==void 0&&(D=$.levels[D.toUpperCase()]),typeof D=="number"&&D>=0&&D<=$.levels.SILENT){if(oe=D,B!==!1&&j(D),h.call($,D,C),typeof console===n&&D<$.levels.SILENT)return"No console available for logging"}else throw"log.setLevel() called with invalid level: "+D},$.setDefaultLevel=function(D){I=D,Se()||$.setLevel(D,!1)},$.resetLevel=function(){$.setLevel(I,!1),ve()},$.enableAll=function(D){$.setLevel($.levels.TRACE,D)},$.disableAll=function(D){$.setLevel($.levels.SILENT,D)};var k=Se();k==null&&(k=I),$.setLevel(k,!1)}var E=new T,y={};E.getLogger=function(I){if(typeof I!="symbol"&&typeof I!="string"||I==="")throw new TypeError("You must supply a name when creating a logger.");var H=y[I];return H||(H=y[I]=new T(I,E.getLevel(),E.methodFactory)),H};var A=typeof window!==n?window.log:void 0;return E.noConflict=function(){return typeof window!==n&&window.log===E&&(window.log=A),E},E.getLoggers=function(){return y},E.default=E,E})})(Dh);var Rt=Dh.exports;const vs=()=>`${new Date().toISOString()} | metrics`,Es=(c,s,n)=>`${c} | ${s} | ${n}`;Rt.setDefaultLevel(Rt.levels.TRACE);const dv=c=>{Rt.info(Es(vs(),"log ",`set log level to ${c?"verbose":"info"}`)),Rt.setLevel(c?Rt.levels.TRACE:Rt.levels.INFO)},pv=c=>{const s=[...Object.keys(Rt.levels)];s.includes(c)?(Rt.info(Es(vs(),"log ",`update log level to ${c.toLowerCase()}`)),Rt.setLevel(c)):Rt.warn(Es(vs(),"log ","Incorrect log level please choose one of "),s)},xe=(c,s,n)=>{n?Rt.debug(Es(vs(),c,s),n):Rt.debug(Es(vs(),c,s))},iu=(c,s)=>{Rt.info(Es(vs(),c,s))},In=(c,s)=>{Rt.info(Es(vs(),c,s))},ba=(c,s)=>{Rt.warn(Es(vs(),c,s))},_r=(c,s)=>{Rt.error(Es(vs(),c,s))};function mv(c){return Math.floor(Math.random()*c).toString()}function Pf(c,s){let n=s;return c.forEach(a=>{n=n.replace(a,"")}),n}function gv(c,s){let n="";for(let a=0;a<s;a+=1)n+=c[mv(c.length)];return n}function Tv({length:c=20,useLetters:s=!0,useNumbers:n=!0,includeSymbols:a=[],excludeSymbols:o=[]}={}){let t="abcdefghijklmnopqrstuvwxyz",r="0123456789",_=[],h=[],d=[];return s&&(o.length&&(t=Pf(o,t)),h=t.split("")),n&&(o.length&&(r=Pf(o,r)),d=r.split("")),_=[...h,...d,...a],gv(_,c)}var vv=Tv;const Qi=ze(vv),Ev=()=>"WebRTCMetrics",Sv=()=>"5.0.3",$e={INBOUND:"inbound",OUTBOUND:"outbound"},gs={IDLE:"idle",RUNNING:"running",MUTED:"muted"},Ki={NEW:"new",CHECKING:"checking",CONNECTED:"connected",COMPLETED:"completed",DISCONNECTED:"disconnected",FAILED:"failed",CLOSED:"closed"},yv=()=>({...{delta_time_to_measure_probes_ms:0,delta_time_consumed_to_measure_ms:0,delta_KBytes_in:0,delta_KBytes_out:0,delta_kbs_in:0,delta_kbs_out:0,total_time_decoded_in:0,total_time_encoded_out:0,probes:[]}}),Nh={level_in:0,codec_id_in:"",codec_in:{mime_type:null,clock_rate:null,sdp_fmtp_line:null},delta_jitter_ms_in:0,percent_packets_lost_in:0,delta_packets_in:0,delta_packets_lost_in:0,total_packets_in:0,total_packets_lost_in:0,total_KBytes_in:0,delta_KBytes_in:0,delta_kbs_in:0,mos_in:0,mos_emodel_in:0,ssrc:"",direction:$e.INBOUND},Uh={level_out:0,codec_id_out:"",codec_out:{mime_type:null,clock_rate:null,sdp_fmtp_line:null},delta_jitter_ms_out:0,delta_rtt_ms_out:null,total_rtt_ms_out:0,total_rtt_measure_out:0,percent_packets_lost_out:0,delta_packets_out:0,delta_packets_lost_out:0,total_packets_out:0,total_packets_lost_out:0,total_KBytes_out:0,delta_KBytes_out:0,delta_kbs_out:0,timestamp_out:null,mos_out:0,mos_emodel_out:0,ssrc:"",direction:$e.OUTBOUND},xh={codec_id_in:"",size_in:{width:null,height:null,framerate:null},codec_in:{mime_type:null,clock_rate:null},delta_jitter_ms_in:0,percent_packets_lost_in:0,delta_packets_in:0,delta_packets_lost_in:0,total_packets_in:0,total_packets_lost_in:0,total_KBytes_in:0,delta_KBytes_in:0,delta_kbs_in:0,decoder_in:null,delta_ms_decode_frame_in:0,total_frames_decoded_in:0,total_time_decoded_in:0,delta_nack_sent_in:0,delta_pli_sent_in:0,total_nack_sent_in:0,total_pli_sent_in:0,ssrc:"",direction:$e.INBOUND},Ph={codec_id_out:"",size_out:{width:null,height:null,framerate:null},codec_out:{mime_type:null,clock_rate:null},delta_jitter_ms_out:0,delta_rtt_ms_out:null,total_rtt_ms_out:0,total_rtt_measure_out:0,percent_packets_lost_out:0,delta_packets_out:0,delta_packets_lost_out:0,total_packets_out:0,total_packets_lost_out:0,total_KBytes_out:0,delta_KBytes_out:0,delta_kbs_out:0,encoder_out:null,delta_ms_encode_frame_out:0,total_time_encoded_out:0,total_frames_encoded_out:0,delta_nack_received_out:0,delta_pli_received_out:0,total_nack_received_out:0,total_pli_received_out:0,limitation_out:{reason:null,durations:null,resolutionChanges:0},timestamp_out:null,ssrc:"",direction:$e.OUTBOUND},Av=c=>{const s={pname:"",call_id:"",user_id:"",timestamp:null,count:0,audio:{},video:{},network:{infrastructure:3,local_candidate_id:"",local_candidate_type:"",local_candidate_protocol:"",local_candidate_relay_protocol:"",remote_candidate_id:"",remote_candidate_type:"",remote_candidate_protocol:""},data:{total_KBytes_in:0,total_KBytes_out:0,delta_KBytes_in:0,delta_KBytes_out:0,delta_kbs_in:0,delta_kbs_out:0,delta_kbs_bandwidth_in:0,delta_kbs_bandwidth_out:0,delta_rtt_connectivity_ms:null,total_rtt_connectivity_ms:0,total_rtt_connectivity_measure:0},experimental:{time_to_measure_ms:0}};if(c){const n={...c,audio:{},video:{},data:{...c.data},network:{...c.network},experimental:{...c.experimental}};return Object.keys(c.audio).forEach(a=>{n.audio[a]={...c.audio[a]}}),Object.keys(c.video).forEach(a=>{n.video[a]={...c.video[a]}}),n}return{...s,audio:{},video:{},data:{...s.data},network:{...s.network},experimental:{...s.experimental}}},Cv={refreshEvery:2e3,startAfter:0,stopAfter:-1,verbose:!1,pname:`p-${Qi()}`,cid:`c-${Qi()}`,uid:`u-${Qi()}`,record:!1,ticket:!0},zt={CANDIDATE_PAIR:"candidate-pair",CODEC:"codec",INBOUND_RTP:"inbound-rtp",LOCAL_CANDIDATE:"local-candidate",MEDIA_SOURCE:"media-source",OUTBOUND_RTP:"outbound-rtp",REMOTE_CANDIDATE:"remote-candidate",REMOTE_INBOUND_RTP:"remote-inbound-rtp",TRACK:"track"},V={AUDIO_LEVEL:"audioLevel",AVAILABLE_OUTGOING_BITRATE:"availableOutgoingBitrate",AVAILABLE_INCOMING_BITRATE:"availableIncomingBitrate",BYTES_RECEIVED:"bytesReceived",BYTES_SENT:"bytesSent",CANDIDATE_TYPE:"candidateType",CHANNELS:"channels",CLOCK_RATE:"clockRate",CODEC_ID:"codecId",CURRENT_ROUND_TRIP_TIME:"currentRoundTripTime",ROUND_TRIP_TIME:"roundTripTime",FRACTION_LOST:"fractionLost",FRAME_HEIGHT:"frameHeight",FRAME_WIDTH:"frameWidth",QUALITY_LIMITATION_REASON:"qualityLimitationReason",QUALITY_LIMITATION_DURATIONS:"qualityLimitationDurations",QUALITY_LIMITATION_RESOLUTION_CHANGES:"qualityLimitationResolutionChanges",ID:"id",JITTER:"jitter",KIND:"kind",MEDIA_TYPE:"mediaType",MIME_TYPE:"mimeType",LOCAL_CANDIDATE_ID:"localCandidateId",NETWORK_TYPE:"networkType",RELAY_PROTOCOL:"relayProtocol",NOMINATED:"nominated",PACKETS_LOST:"packetsLost",PACKETS_RECEIVED:"packetsReceived",PACKETS_SENT:"packetsSent",PROTOCOL:"protocol",PORT:"port",REMOTE_CANDIDATE_ID:"remoteCandidateId",REMOTE_SOURCE:"remoteSource",RESPONSES_RECEIVED:"responsesReceived",SDP_FMTP_LINE:"sdpFmtpLine",SSRC:"ssrc",SELECTED:"selected",STATE:"state",TIMESTAMP:"timestamp",TOTAL_ROUND_TRIP_TIME:"totalRoundTripTime",TOTAL_ROUND_TRIP_TIME_MEASUREMENTS:"roundTripTimeMeasurements",TYPE:"type",DECODER_IMPLEMENTATION:"decoderImplementation",ENCODER_IMPLEMENTATION:"encoderImplementation",FRAMES_DECODED:"framesDecoded",FRAMES_ENCODED:"framesEncoded",FRAMES_PER_SECOND:"framesPerSecond",TOTAL_DECODE_TIME:"totalDecodeTime",TOTAL_ENCODE_TIME:"totalEncodeTime",PLI:"pliCount",NACK:"nackCount"},P={SUCCEEDED:"succeeded",AUDIO:"audio",VIDEO:"video"},Yi={ETHERNET:0,CELLULAR_5G:2,WIFI:3,CELLULAR_4G:5,CELLULAR:10},lu={ETHERNET:"ethernet",CELLULAR_4G:"cellular",WIFI:"wifi"},ne={AUDIO:"audio",VIDEO:"video",NETWORK:"network",DATA:"data"},au="config ",Rv=(c,s={},n)=>{const a={...n,...s};return s.pname||ba(au,`Argument [String] 'cfg.pname' for the peerConnection name or id is missing - use generated '${n.pname}'`),s.cid||ba(au,`Argument [String] 'cfg.cid' for the call name or id is missing - use generated '${n.cid}'`),s.uid||ba(au,`Argument [String] 'cfg.uid' for the user name or id is missing - use generated '${n.uid}'`),a.pc=c,a},Iv=(c={})=>{const s={...Cv,...c};return s.name=Ev(),s.version=Sv(),s},pl=(c,s,n,a=!1,o)=>{let t=c.map(r=>{if(!n)return r[s];if(!o)return r[s][n];const _=r[s][o];return _?_[n]:null});return t=t.filter(r=>a?Number.isFinite(r)&&r>0:Number.isFinite(r)),t.length===0?[]:t},Gs=c=>c.reduce((s,n)=>s+n,0)/c.length,bv=()=>`probe-${Qi()}`,wv=()=>`coltr-${Qi()}`,kf=c=>new Promise(s=>setTimeout(s,c)),wu=(c,s,n)=>{s?c.call(s,n):c(n)},Ke=(c,s,n,a)=>{const o=pl(c,s,n,!0,a);if(o.length===0)return null;const t=o.reduce((d,g)=>d+g,0)/o.length;return t===0?null:o.map(d=>Math.abs(t-d)).reduce((d,g)=>d+g,0)/o.length*100/t},Xe=(c,s,n,a=!1,o)=>{const t=pl(c,s,n,a,o);return t.length===0?null:t.reduce((r,_)=>r+_,0)/t.length},Sn=(c,s,n)=>pl(c,s,n).reduce((o,t)=>o+t,0),Ye=(c,s,n,a)=>{const o=pl(c,s,n,!0,a);return o.length===0?null:Math.min(...o)},Je=(c,s,n,a)=>{const o=pl(c,s,n,!1,a);return o.length===0?null:Math.max(...o)},gt=(c,s,n,a)=>{const o=c.slice().pop();if(!o)return null;if(!n)return o[s];if(!a)return o[s][n];const t=o[s][a];return t?t[n]:null},Ov=c=>c.slice().pop(),ct=(c,s,n)=>{if(!s)return null;const a={};let o=s[P.AUDIO][c];o||(o=n===$e.INBOUND?{...Nh}:{...Uh}),a[P.AUDIO]=o;let t=s[P.VIDEO][c];return t||(t=n===$e.INBOUND?{...xh}:{...Ph}),a[P.VIDEO]=t,a},Ji="exporter ",Dv="2.0",Mf=(c,s,n)=>{if(!c||c.length===0)return 0;const a=c[c.length-1];if(!a)return 0;const o=a[s][n];if(o){const t=o.total_rtt_ms_out,r=o.total_rtt_measure_out;return!r||!t?Xe(c,s,"delta_rtt_ms_out",!1,n):Number(t/r)}return null},Nv=(c,s)=>{if(!c||c.length===0)return 0;const n=c[c.length-1];if(!n)return 0;const a=n[s].total_rtt_connectivity_ms,o=n[s].total_rtt_connectivity_measure;return!o||!a?Xe(c,s,"delta_rtt_connectivity_ms"):Number(a/o)},Uv=c=>gt(c,"network","local_candidate_type")!=="relay"?`direct/${gt(c,"network","local_candidate_protocol")}`:`turn/${gt(c,"network","local_candidate_relay_protocol")}`,xv=c=>{const s=gt(c,"network","remote_candidate_type"),n=gt(c,"network","remote_candidate_protocol");return s!=="relay"?`direct/${n}`:`turn/${n}`};class Pv{constructor(s){this._start=null,this._end=null,this._cfg=s,this._referenceReport=null,this._reports=[],this._events=[]}start(){iu(Ji,"start() - start exporter...");const s=new Date;return this._start=s.toJSON(),s}stop(){iu(Ji,"stop() - stop exporter...");const s=new Date;return this._end=s.toJSON(),s}saveReferenceReport(s){this._referenceReport=s}getReferenceReport(){return this._referenceReport}addReport(s){this._cfg.ticket&&(xe(Ji,`addReport() - add report to exporter at ${s.timestamp}`),this._reports.push(s))}addCustomEvent(s){this._events.push(s)}reset(){iu(Ji,"resetReports() - reset reports"),this._reports=[],this._referenceReport=null,this._start=null,this._end=null}get ticket(){xe(Ji,"ticket() - generate ticket");const s=gt(this._reports,"audio","total_packets_lost_in"),n=gt(this._reports,"audio","total_packets_in"),a=gt(this._reports,"video","total_packets_lost_in"),o=gt(this._reports,"video","total_packets_in"),t={},r=Ov(this._reports);return r&&(Object.keys(r[P.AUDIO]).forEach(_=>{const h=r[P.AUDIO][_];if(t[h.ssrc]={type:P.AUDIO,direction:h.direction},h.direction===$e.INBOUND){const d={avg:Xe(this._reports,P.AUDIO,"delta_jitter_ms_in",!1,_),min:Ye(this._reports,P.AUDIO,"delta_jitter_ms_in",_),max:Je(this._reports,P.AUDIO,"delta_jitter_ms_in",_),volatility:Ke(this._reports,P.AUDIO,"delta_jitter_ms_in",_),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Xe(this._reports,P.AUDIO,"delta_kbs_in",!1,_),min:Ye(this._reports,P.AUDIO,"delta_kbs_in",_),max:Je(this._reports,P.AUDIO,"delta_kbs_in",_),volatility:Ke(this._reports,P.AUDIO,"delta_kbs_in",_),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Xe(this._reports,P.AUDIO,"delta_KBytes_in",!1,_),min:Ye(this._reports,P.AUDIO,"delta_KBytes_in",_),max:Je(this._reports,P.AUDIO,"delta_KBytes_in",_),volatility:Ke(this._reports,P.AUDIO,"delta_KBytes_in",_),_unit:{avg:"KB",min:"KB",max:"KB",volatility:"percent"}},E={emodel:{avg:Xe(this._reports,P.AUDIO,"mos_emodel_in",!1,_),min:Ye(this._reports,P.AUDIO,"mos_emodel_in",_),max:Je(this._reports,P.AUDIO,"mos_emodel_in",_),volatility:Ke(this._reports,P.AUDIO,"mos_emodel_in",_)},effective:{avg:Xe(this._reports,P.AUDIO,"mos_in",!1,_),min:Ye(this._reports,P.AUDIO,"mos_in",_),max:Je(this._reports,P.AUDIO,"mos_in",_),volatility:Ke(this._reports,P.AUDIO,"mos_in",_)},_unit:{avg:"number (1-5)",min:"number (1-5)",max:"number (1-5)",volatility:"percent"}},y=gt(this._reports,P.AUDIO,"total_packets_lost_in",_),A=gt(this._reports,P.AUDIO,"total_packets_in",_),C={lost:y,avg:Math.round((y/(y+A)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}};t[_].jitter=d,t[_].mos=E,t[_].traffic=T,t[_].bitrate=g,t[_].loss=C}else{const d={avg:Xe(this._reports,P.AUDIO,"delta_jitter_ms_out",!1,_),min:Ye(this._reports,P.AUDIO,"delta_jitter_ms_out",_),max:Je(this._reports,P.AUDIO,"delta_jitter_ms_out",_),volatility:Ke(this._reports,P.AUDIO,"delta_jitter_ms_out",_),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Xe(this._reports,P.AUDIO,"delta_kbs_out",!1,_),min:Ye(this._reports,P.AUDIO,"delta_kbs_out",_),max:Je(this._reports,P.AUDIO,"delta_kbs_out",_),volatility:Ke(this._reports,P.AUDIO,"delta_kbs_out",_),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Xe(this._reports,P.AUDIO,"delta_KBytes_out",!1,_),min:Ye(this._reports,P.AUDIO,"delta_KBytes_out",_),max:Je(this._reports,P.AUDIO,"delta_KBytes_out",_),volatility:Ke(this._reports,P.AUDIO,"delta_KBytes_out",_),_unit:{avg:"KB",min:"KB",max:"KB",bitrate:"kbs",volatility:"percent"}},E={avg:Mf(this._reports,P.AUDIO,_),min:Ye(this._reports,P.AUDIO,"delta_rtt_ms_out",_),max:Je(this._reports,P.AUDIO,"delta_rtt_ms_out",_),volatility:Ke(this._reports,P.AUDIO,"delta_rtt_ms_out",_),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},y=gt(this._reports,P.AUDIO,"total_packets_lost_out",_),A=gt(this._reports,P.AUDIO,"total_packets_out",_),C={lost:y,avg:Math.round((y/(y+A)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}},I={emodel:{avg:Xe(this._reports,P.AUDIO,"mos_emodel_out",!1,_),min:Ye(this._reports,P.AUDIO,"mos_emodel_out",_),max:Je(this._reports,P.AUDIO,"mos_emodel_out",_),volatility:Ke(this._reports,P.AUDIO,"mos_emodel_out",_)},effective:{avg:Xe(this._reports,P.AUDIO,"mos_out",!1,_),min:Ye(this._reports,P.AUDIO,"mos_out",_),max:Je(this._reports,P.AUDIO,"mos_out",_),volatility:Ke(this._reports,P.AUDIO,"mos_out",_)},_unit:{avg:"number (1-5)",min:"number (1-5)",max:"number (1-5)",volatility:"percent"}};t[_].jitter=d,t[_].rtt=E,t[_].traffic=T,t[_].bitrate=g,t[_].loss=C,t[_].mos=I}}),Object.keys(r[P.VIDEO]).forEach(_=>{const h=r[P.VIDEO][_];if(t[_]={type:P.VIDEO,direction:h.direction},h.direction===$e.INBOUND){const d={avg:Xe(this._reports,P.VIDEO,"delta_jitter_ms_in",!1,_),min:Ye(this._reports,P.VIDEO,"delta_jitter_ms_in",_),max:Je(this._reports,P.VIDEO,"delta_jitter_ms_in",_),volatility:Ke(this._reports,P.VIDEO,"delta_jitter_ms_in",_),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Xe(this._reports,P.VIDEO,"delta_kbs_in",!1,_),min:Ye(this._reports,P.VIDEO,"delta_kbs_in",_),max:Je(this._reports,P.VIDEO,"delta_kbs_in",_),volatility:Ke(this._reports,P.VIDEO,"delta_kbs_in",_),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Xe(this._reports,P.VIDEO,"delta_KBytes_in",!1,_),min:Ye(this._reports,P.VIDEO,"delta_KBytes_in",_),max:Je(this._reports,P.VIDEO,"delta_KBytes_in",_),volatility:Ke(this._reports,P.VIDEO,"delta_KBytes_in",_),_unit:{avg:"KB",min:"KB",max:"KB",volatility:"percent"}},E=gt(this._reports,P.VIDEO,"total_packets_lost_in",_),y=gt(this._reports,P.VIDEO,"total_packets_in",_),A={lost:E,avg:Math.round((E/(E+y)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}};t[_].jitter=d,t[_].traffic=T,t[_].bitrate=g,t[_].loss=A}else{const d={avg:Xe(this._reports,P.VIDEO,"delta_jitter_ms_out",!1,_),min:Ye(this._reports,P.VIDEO,"delta_jitter_ms_out",_),max:Je(this._reports,P.VIDEO,"delta_jitter_ms_out",_),volatility:Ke(this._reports,P.VIDEO,"delta_jitter_ms_out",_),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Xe(this._reports,P.VIDEO,"delta_kbs_out",!1,_),min:Ye(this._reports,P.VIDEO,"delta_kbs_out",_),max:Je(this._reports,P.VIDEO,"delta_kbs_out",_),volatility:Ke(this._reports,P.VIDEO,"delta_kbs_out",_),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Xe(this._reports,P.VIDEO,"delta_KBytes_out",!1,_),min:Ye(this._reports,P.VIDEO,"delta_KBytes_out",_),max:Je(this._reports,P.VIDEO,"delta_KBytes_out",_),volatility:Ke(this._reports,P.VIDEO,"delta_KBytes_out",_),_unit:{avg:"KB",min:"KB",max:"KB",volatility:"percent"}},E={avg:Mf(this._reports,P.VIDEO,_),min:Ye(this._reports,P.VIDEO,"delta_rtt_ms_out",_),max:Je(this._reports,P.VIDEO,"delta_rtt_ms_out",_),volatility:Ke(this._reports,P.VIDEO,"delta_rtt_ms_out",_),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},y=gt(this._reports,P.VIDEO,"total_packets_lost_out",_),A=gt(this._reports,P.VIDEO,"total_packets_out",_),C={lost:y,avg:Math.round((y/(y+A)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}};t[_].jitter=d,t[_].rtt=E,t[_].traffic=T,t[_].bitrate=g,t[_].loss=C}})),{version:Dv,configuration:{frequency:this._cfg.refreshEvery},started:this._start,ended:this._end,ua:{agent:navigator.userAgent,pname:this._cfg.pname,user_id:this._cfg.uid},call:{call_id:this._cfg.cid,events:this._events},details:{count:this._reports.length,reports:this._cfg.record?this._reports:[],reference:this._referenceReport||null},ssrc:t,data:{rtt:{avg:Nv(this._reports,"data"),min:Ye(this._reports,"data","delta_rtt_connectivity_ms"),max:Je(this._reports,"data","delta_rtt_connectivity_ms"),volatility:Ke(this._reports,"data","delta_rtt_connectivity_ms"),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},packetsLost:{audio:{in:{avg:Math.round((s/(s+n)*100||0)*100)/100}},video:{in:{avg:Math.round((a/(a+o)*100||0)*100)/100}},unit:{avg:"percent"}},bitrate:{in:{avg:Xe(this._reports,"data","delta_kbs_in"),min:Ye(this._reports,"data","delta_kbs_in"),max:Je(this._reports,"data","delta_kbs_in"),volatility:Ke(this._reports,"data","delta_kbs_in")},out:{avg:Xe(this._reports,"data","delta_kbs_out"),min:Ye(this._reports,"data","delta_kbs_out"),max:Je(this._reports,"data","delta_kbs_out"),volatility:Ke(this._reports,"data","delta_kbs_out")},unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},traffic:{in:{avg:Xe(this._reports,"data","delta_KBytes_in"),min:Ye(this._reports,"data","delta_KBytes_in"),max:Je(this._reports,"data","delta_KBytes_in"),volatility:Ke(this._reports,"data","delta_KBytes_in")},out:{avg:Xe(this._reports,"data","delta_KBytes_out"),min:Ye(this._reports,"data","delta_KBytes_out"),max:Je(this._reports,"data","delta_KBytes_out"),volatility:Ke(this._reports,"data","delta_KBytes_out")},unit:{avg:"KBytes",min:"KBytes",max:"KBytes",volatility:"percent"}},network:{localConnection:Uv(this._reports),remoteConnection:xv(this._reports)}}}}updateConfig(s){this._cfg=s}getLastReport(){return this._reports.slice().pop()||null}getBeforeLastReport(){const s=this._reports.slice();return s.pop(),s.pop()||null}getReportsNumber(){return this._reports.length}}const js="extractor ",Lf=(c,s,n,a)=>{let o=!1;const t=a[s].total_rtt_ms_out,r=a[s].total_rtt_measure_out,_=n?n[s].total_rtt_ms_out:0,h=n?n[s].total_rtt_measure_out:0,d={rtt:null,totalRTT:t,totalRTTMeasurements:r};if(c[V.TIMESTAMP]===a[s].timestamp_out||!Object.prototype.hasOwnProperty.call(c,V.ROUND_TRIP_TIME)||Object.prototype.hasOwnProperty.call(c,V.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS)&&(o=!0,Number(c[V.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS])===0||Number(c[V.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS])-h===r))return d;const g=1e3*Number(c[V.ROUND_TRIP_TIME]);let T=t+g,E=r+1;return o&&(T=1e3*Number(c[V.TOTAL_ROUND_TRIP_TIME])-_,E=Number(c[V.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS])-h),{rtt:g,totalRTT:T,totalRTTMeasurements:E}},kv=(c,s,n,a)=>{if(!Object.prototype.hasOwnProperty.call(c,V.CURRENT_ROUND_TRIP_TIME))return{rtt:null,totalRTT:a[s].total_rtt_connectivity_ms,totalRTTMeasurements:a[s].total_rtt_connectivity_measure};const o=1e3*Number(c[V.CURRENT_ROUND_TRIP_TIME]);let t=a[s].total_rtt_connectivity_ms+o,r=a[s].total_rtt_connectivity_measure+1;return Object.prototype.hasOwnProperty.call(c,V.TOTAL_ROUND_TRIP_TIME)&&(t=1e3*Number(c[V.TOTAL_ROUND_TRIP_TIME])-(n?n[s].total_rtt_connectivity_ms:0)),Object.prototype.hasOwnProperty.call(c,V.RESPONSES_RECEIVED)&&(r=Number(c[V.RESPONSES_RECEIVED])-(n?n[s].total_rtt_connectivity_measure:0)),{rtt:o,totalRTT:t,totalRTTMeasurements:r}},ha=(c,s,n)=>c[V.TIMESTAMP]===n[s].timestamp_out||!Object.prototype.hasOwnProperty.call(c,V.JITTER)?null:1e3*(Number(c[V.JITTER])||0),Mv=(c,s)=>{if(!Object.prototype.hasOwnProperty.call(c,V.FRAMES_DECODED)||!Object.prototype.hasOwnProperty.call(c,V.TOTAL_DECODE_TIME))return{delta_ms_decode_frame:s[P.VIDEO].delta_ms_decode_frame_in,frames_decoded:s[P.VIDEO].total_frames_decoded_in,total_decode_time:s[P.VIDEO].total_time_decoded_in};const n=c[V.FRAMES_DECODED],a=c[V.TOTAL_DECODE_TIME],o=a-s[P.VIDEO].total_time_decoded_in,t=n-s[P.VIDEO].total_frames_decoded_in;return{delta_ms_decode_frame:t>0?o*1e3/t:0,frames_decoded:n,total_decode_time:a}},Lv=(c,s)=>{if(!Object.prototype.hasOwnProperty.call(c,V.FRAMES_ENCODED)||!Object.prototype.hasOwnProperty.call(c,V.TOTAL_ENCODE_TIME))return{delta_ms_encode_frame:s[P.VIDEO].delta_ms_encode_frame_out,frames_encoded:s[P.VIDEO].total_frames_encoded_out,total_encode_time:s[P.VIDEO].total_time_encoded_out};const n=c[V.FRAMES_ENCODED],a=c[V.TOTAL_ENCODE_TIME],o=a-s[P.VIDEO].total_time_encoded_out,t=n-s[P.VIDEO].total_frames_encoded_out;return{delta_ms_encode_frame:t>0&&o?o*1e3/t:0,frames_encoded:n,total_encode_time:a}},$f=(c,s,n,a)=>{if(!Object.prototype.hasOwnProperty.call(c,V.PACKETS_SENT)||!Object.prototype.hasOwnProperty.call(c,V.BYTES_SENT))return{packetsSent:n[s].total_packets_out,packetsLost:n[s].total_packets_lost_out,bytesSent:n[s].total_KBytes_out};const o=Number(c[V.PACKETS_SENT])||0-(a?a[s].total_packets_out:0),t=o-n[s].total_packets_out,r=Number(c[V.BYTES_SENT])/1024-(a?a[s].total_KBytes_out:0),_=r-n[s].total_KBytes_out,h=c[V.TIMESTAMP]||Date.now(),d=a?a.timestamp:null;let g=n.timestamp;!g&&d&&(g=d);const T=g?h-g:0,E=T>0?_*.008*1024/T*1e3:0;return{packetsSent:o,deltaPacketsSent:t,KBytesSent:r,deltaKBytesSent:_,kbsSent:E}},Hf=(c,s,n,a)=>{let o=n[s].total_packets_lost_out,t=0,r=0;return Object.prototype.hasOwnProperty.call(c,V.PACKETS_LOST)&&(o=Number(c[V.PACKETS_LOST])||0-(a?a[s].total_packets_lost_out:0),t=o-n[s].total_packets_lost_out),Object.prototype.hasOwnProperty.call(c,V.FRACTION_LOST)&&(r=Number(100*c[V.FRACTION_LOST])),{packetsLost:o,deltaPacketsLost:t,fractionLost:r}},Ff=(c,s,n,a)=>{if(!Object.prototype.hasOwnProperty.call(c,V.PACKETS_RECEIVED)||!Object.prototype.hasOwnProperty.call(c,V.PACKETS_LOST)||!Object.prototype.hasOwnProperty.call(c,V.BYTES_RECEIVED))return{percent_packets_lost:n[s].percent_packets_lost_in,packetsReceived:n[s].total_packets_in,packetsLost:n[s].total_packets_lost_in,bytesReceived:n[s].total_KBytes_in};const o=Number(c[V.PACKETS_RECEIVED])||0-(a?a[s].total_packets_in:0),t=Number(c[V.PACKETS_LOST])||0-(a?a[s].total_packets_lost_in:0),r=t-n[s].total_packets_lost_in,_=o-n[s].total_packets_in,h=o!==n[s].total_packets_in?r*100/(r+_):0,d=Number(c[V.BYTES_RECEIVED])/1024-(a?a[s].total_KBytes_in:0),g=d-n[s].total_KBytes_in,T=c[V.TIMESTAMP]||Date.now(),E=a?a.timestamp:null;let y=n.timestamp;!y&&E&&(y=E);const A=y?T-y:0,C=A>0?g*.008*1024/A*1e3:0;return{percentPacketsLost:h,packetsReceived:o,deltaPacketsReceived:_,packetsLost:t,deltaPacketsLost:r,KBytesReceived:d,deltaKBytesReceived:g,kbsReceived:C}},$v=c=>c[V.CANDIDATE_TYPE]!=="relay"?"":c[V.RELAY_PROTOCOL]||"",Hv=c=>{if(!Object.prototype.hasOwnProperty.call(c,V.NETWORK_TYPE))return Yi.WIFI;switch(c[V.NETWORK_TYPE]){case lu.ETHERNET:return Yi.ETHERNET;case lu.CELLULAR_4G:return Yi.CELLULAR_4G;case lu.WIFI:return Yi.WIFI;default:return Yi.CELLULAR}},jf=c=>!Object.prototype.hasOwnProperty.call(c,V.FRAME_HEIGHT)||!Object.prototype.hasOwnProperty.call(c,V.FRAME_WIDTH)?{width:null,height:null,framerate:null}:{width:c[V.FRAME_WIDTH]||null,height:c[V.FRAME_HEIGHT]||null,framerate:c[V.FRAMES_PER_SECOND]},Fv=c=>{const s=Object.prototype.hasOwnProperty.call(c,V.QUALITY_LIMITATION_REASON)?c[V.QUALITY_LIMITATION_REASON]:null,n=Object.prototype.hasOwnProperty.call(c,V.QUALITY_LIMITATION_RESOLUTION_CHANGES)?c[V.QUALITY_LIMITATION_RESOLUTION_CHANGES]:null,a=Object.prototype.hasOwnProperty.call(c,V.QUALITY_LIMITATION_DURATIONS)?c[V.QUALITY_LIMITATION_DURATIONS]:null;return a&&Object.keys(a).forEach(o=>{a[o]>1e3&&(a[o]=Number(a[o]/1e3))}),{reason:s,durations:a,resolutionChanges:n}},jv=(c,s,n)=>{if(!Object.prototype.hasOwnProperty.call(c,V.PLI)||!Object.prototype.hasOwnProperty.call(c,V.NACK))return{pliCount:s.total_pli_sent_in,nackCount:s.total_nack_sent_in,deltaPliCount:0,deltaNackCount:0};const a=(c[V.PLI]||0)-(n?n[P.VIDEO].total_pli_sent_in:0),o=(c[V.NACK]||0)-(n?n[P.VIDEO].total_nack_sent_in:0);return{pliCount:a,nackCount:o,deltaPliCount:a-s[P.VIDEO].total_pli_sent_in,deltaNackCount:o-s[P.VIDEO].total_nack_sent_in}},Vv=(c,s,n)=>{if(!Object.prototype.hasOwnProperty.call(c,V.PLI)||!Object.prototype.hasOwnProperty.call(c,V.NACK))return{pliCount:s.total_pli_received_out,nackCount:s.total_nack_received_out,deltaPliCount:0,deltaNackCount:0};const a=(c[V.PLI]||0)-(n?n[P.VIDEO].total_pli_received_out:0),o=(c[V.NACK]||0)-(n?n[P.VIDEO].total_nack_received_out:0);return{pliCount:a,nackCount:o,deltaPliCount:a-s[P.VIDEO].total_pli_received_out,deltaNackCount:o-s[P.VIDEO].total_nack_received_out}},qv=c=>({channels:c[V.CHANNELS]||null,clock_rate:c[V.CLOCK_RATE]||null,mime_type:c[V.MIME_TYPE]||null,sdp_fmtp_line:c[V.SDP_FMTP_LINE]||null}),Bv=c=>({clock_rate:c[V.CLOCK_RATE]||null,mime_type:c[V.MIME_TYPE]||null}),Gv=(c,s,n)=>{const a=(c[V.BYTES_RECEIVED]||0)/1024-(n?n.data.total_KBytes_in:0),o=(c[V.BYTES_SENT]||0)/1024-(n?n.data.total_KBytes_out:0),t=c[V.TIMESTAMP]||Date.now(),r=a-s.data.total_KBytes_in,_=o-s.data.total_KBytes_out,h=n?n.timestamp:null;let d=s.timestamp;!d&&h&&(d=h);const g=d?t-d:0,T=g>0?r*.008*1024/g*1e3:0,E=g>0?_*.008*1024/g*1e3:0;return{total_KBytes_received:a,total_KBytes_sent:o,delta_KBytes_received:r,delta_KBytes_sent:_,kbs_speed_received:T,kbs_speed_sent:E}},Wv=c=>{const s=c[V.AVAILABLE_INCOMING_BITRATE]/1024||0,n=c[V.AVAILABLE_OUTGOING_BITRATE]/1024||0;return{kbs_incoming_bandwidth:s,kbs_outgoing_bandwidth:n}},Kv=(c,s,n,a)=>{if(!c)return[];switch(c[V.TYPE]){case zt.CANDIDATE_PAIR:let o=!1;if(c[V.NOMINATED]&&c[V.STATE]===P.SUCCEEDED&&(o=!0,xe(js,`analyze() - got stats ${c[V.TYPE]} for ${n}`,c),V.SELECTED in c&&!c[V.SELECTED]&&(o=!1)),o){const r=c[V.LOCAL_CANDIDATE_ID],_=c[V.REMOTE_CANDIDATE_ID],h=Gv(c,s,a),d=Wv(c),g=kv(c,"data",a,s);return[{type:ne.NETWORK,value:{local_candidate_id:r}},{type:ne.NETWORK,value:{remote_candidate_id:_}},{type:ne.DATA,value:{total_KBytes_in:h.total_KBytes_received}},{type:ne.DATA,value:{total_KBytes_out:h.total_KBytes_sent}},{type:ne.DATA,value:{delta_KBytes_in:h.delta_KBytes_received}},{type:ne.DATA,value:{delta_KBytes_out:h.delta_KBytes_sent}},{type:ne.DATA,value:{delta_kbs_in:h.kbs_speed_received}},{type:ne.DATA,value:{delta_kbs_out:h.kbs_speed_sent}},{type:ne.DATA,value:{delta_kbs_bandwidth_in:d.kbs_incoming_bandwidth}},{type:ne.DATA,value:{delta_kbs_bandwidth_out:d.kbs_outgoing_bandwidth}},{type:ne.DATA,value:{delta_rtt_connectivity_ms:g.rtt}},{type:ne.DATA,value:{total_rtt_connectivity_ms:g.totalRTT}},{type:ne.DATA,value:{total_rtt_connectivity_measure:g.totalRTTMeasurements}}]}break;case zt.LOCAL_CANDIDATE:if(c[V.ID]===s.network.local_candidate_id)return[{type:ne.NETWORK,value:{infrastructure:Hv(c)}},{type:ne.NETWORK,value:{local_candidate_type:c[V.CANDIDATE_TYPE]||""}},{type:ne.NETWORK,value:{local_candidate_protocol:c[V.PROTOCOL]||""}},{type:ne.NETWORK,value:{local_candidate_relay_protocol:$v(c)}}];break;case zt.REMOTE_CANDIDATE:if(c[V.ID]===s.network.remote_candidate_id)return[{type:ne.NETWORK,value:{remote_candidate_type:c[V.CANDIDATE_TYPE]||""}},{type:ne.NETWORK,value:{remote_candidate_protocol:c[V.PROTOCOL]||""}}];break;case zt.INBOUND_RTP:{xe(js,`analyze() - got stats ${c[V.TYPE]} for ${n}`,c);const r=c[V.SSRC],_=ct(r,s,$e.INBOUND);_&&(_.timestamp=s.timestamp);const h=ct(r,a,$e.INBOUND);if(h&&(h.timestamp=a.timestamp),c[V.MEDIA_TYPE]===P.AUDIO){const d=Ff(c,P.AUDIO,_,h),g=ha(c,P.AUDIO,_),T=c[V.CODEC_ID]||"";return[{ssrc:r,type:ne.AUDIO,value:{codec_id_in:T}},{ssrc:r,type:ne.AUDIO,value:{total_packets_in:d.packetsReceived}},{ssrc:r,type:ne.AUDIO,value:{delta_packets_in:d.deltaPacketsReceived}},{ssrc:r,type:ne.AUDIO,value:{total_packets_lost_in:d.packetsLost}},{ssrc:r,type:ne.AUDIO,value:{delta_packets_lost_in:d.deltaPacketsLost}},{ssrc:r,type:ne.AUDIO,value:{percent_packets_lost_in:d.percentPacketsLost}},{ssrc:r,type:ne.AUDIO,value:{total_KBytes_in:d.KBytesReceived}},{ssrc:r,type:ne.AUDIO,value:{delta_KBytes_in:d.deltaKBytesReceived}},{ssrc:r,type:ne.AUDIO,value:{delta_kbs_in:d.kbsReceived}},{ssrc:r,type:ne.AUDIO,value:{delta_jitter_ms_in:g}}]}if(c[V.MEDIA_TYPE]===P.VIDEO){const d=Mv(c,_),g=Ff(c,P.VIDEO,_,h),T=ha(c,P.VIDEO,_),E=c[V.DECODER_IMPLEMENTATION]||null,y=c[V.CODEC_ID]||null,A=jf(c),C=jv(c,_,h);return[{ssrc:r,type:ne.VIDEO,value:{codec_id_in:y}},{ssrc:r,type:ne.VIDEO,value:{total_packets_in:g.packetsReceived}},{ssrc:r,type:ne.VIDEO,value:{delta_packets_in:g.deltaPacketsReceived}},{ssrc:r,type:ne.VIDEO,value:{total_packets_lost_in:g.packetsLost}},{ssrc:r,type:ne.VIDEO,value:{delta_packets_lost_in:g.deltaPacketsLost}},{ssrc:r,type:ne.VIDEO,value:{percent_packets_lost_in:g.percentPacketsLost}},{ssrc:r,type:ne.VIDEO,value:{total_KBytes_in:g.KBytesReceived}},{ssrc:r,type:ne.VIDEO,value:{delta_KBytes_in:g.deltaKBytesReceived}},{ssrc:r,type:ne.VIDEO,value:{delta_kbs_in:g.kbsReceived}},{ssrc:r,type:ne.VIDEO,value:{delta_jitter_ms_in:T}},{ssrc:r,type:ne.VIDEO,value:{decoder_in:E}},{ssrc:r,type:ne.VIDEO,value:{delta_ms_decode_frame_in:d.delta_ms_decode_frame}},{ssrc:r,type:ne.VIDEO,value:{total_frames_decoded_in:d.frames_decoded}},{ssrc:r,type:ne.VIDEO,value:{total_time_decoded_in:d.total_decode_time}},{ssrc:r,type:ne.VIDEO,value:{total_nack_sent_in:C.nackCount}},{ssrc:r,type:ne.VIDEO,value:{delta_nack_sent_in:C.deltaNackCount}},{ssrc:r,type:ne.VIDEO,value:{total_pli_sent_in:C.pliCount}},{ssrc:r,type:ne.VIDEO,value:{delta_pli_sent_in:C.deltaPliCount}},{ssrc:r,type:ne.VIDEO,value:{size_in:A}}]}break}case zt.OUTBOUND_RTP:{xe(js,`analyze() - got stats ${c[V.TYPE]} for ${n}`,c);const r=c[V.SSRC],_=ct(r,s,$e.OUTBOUND);_&&(_.timestamp=s.timestamp);const h=ct(r,a,$e.OUTBOUND);if(h&&(h.timestamp=a.timestamp),c[V.MEDIA_TYPE]===P.AUDIO){const d=c[V.CODEC_ID]||null,g=$f(c,P.AUDIO,_,h);return[{ssrc:r,type:ne.AUDIO,value:{codec_id_out:d}},{ssrc:r,type:ne.AUDIO,value:{total_packets_out:g.packetsSent}},{ssrc:r,type:ne.AUDIO,value:{delta_packets_out:g.deltaPacketsSent}},{ssrc:r,type:ne.AUDIO,value:{total_KBytes_out:g.KBytesSent}},{ssrc:r,type:ne.AUDIO,value:{delta_KBytes_out:g.deltaKBytesSent}},{ssrc:r,type:ne.AUDIO,value:{delta_kbs_out:g.kbsSent}}]}if(c[V.MEDIA_TYPE]===P.VIDEO){const d=c[V.ENCODER_IMPLEMENTATION]||null,g=c[V.CODEC_ID]||null,T=Lv(c,_),E=jf(c),y=Fv(c),A=Vv(c,_,h),C=$f(c,P.VIDEO,_,h);return[{ssrc:r,type:ne.VIDEO,value:{codec_id_out:g}},{ssrc:r,type:ne.VIDEO,value:{total_packets_out:C.packetsSent}},{ssrc:r,type:ne.VIDEO,value:{delta_packets_out:C.deltaPacketsSent}},{ssrc:r,type:ne.VIDEO,value:{total_KBytes_out:C.KBytesSent}},{ssrc:r,type:ne.VIDEO,value:{delta_KBytes_out:C.deltaKBytesSent}},{ssrc:r,type:ne.VIDEO,value:{delta_kbs_out:C.kbsSent}},{ssrc:r,type:ne.VIDEO,value:{encoder_out:d}},{ssrc:r,type:ne.VIDEO,value:{delta_ms_encode_frame_out:T.delta_ms_encode_frame}},{ssrc:r,type:ne.VIDEO,value:{total_frames_encoded_out:T.frames_encoded}},{ssrc:r,type:ne.VIDEO,value:{total_time_encoded_out:T.total_encode_time}},{ssrc:r,type:ne.VIDEO,value:{total_nack_received_out:A.nackCount}},{ssrc:r,type:ne.VIDEO,value:{delta_nack_received_out:A.deltaNackCount}},{ssrc:r,type:ne.VIDEO,value:{total_pli_received_out:A.pliCount}},{ssrc:r,type:ne.VIDEO,value:{delta_pli_received_out:A.deltaPliCount}},{ssrc:r,type:ne.VIDEO,value:{size_out:E}},{ssrc:r,type:ne.VIDEO,value:{limitation_out:y}}]}break}case zt.MEDIA_SOURCE:{xe(js,`analyze() - got stats ${c[V.TYPE]} for ${n}`,c);break}case zt.TRACK:{xe(js,`analyze() - got stats ${c[V.TYPE]} for ${n}`,c);break}case zt.CODEC:const t=[];return Object.keys(s[P.AUDIO]).forEach(r=>{const _=s[P.AUDIO][r];if(_.codec_id_in===c[V.ID]||_.codec_id_out===c[V.ID]){xe(js,`analyze() - got stats ${c[V.TYPE]} for ${n}`,c);const h=qv(c);c[V.ID]===_.codec_id_in?t.push({ssrc:_.ssrc,type:ne.AUDIO,value:{codec_in:h}}):t.push({ssrc:_.ssrc,type:ne.AUDIO,value:{codec_out:h}})}}),Object.keys(s[P.VIDEO]).forEach(r=>{const _=s[P.VIDEO][r];if(_.codec_id_in===c[V.ID]||_.codec_id_out===c[V.ID]){xe(js,`analyze() - got stats ${c[V.TYPE]} for ${n}`,c);const h=Bv(c);c[V.ID]===_.codec_id_in?t.push({ssrc:_.ssrc,type:ne.VIDEO,value:{codec_in:h}}):t.push({ssrc:_.ssrc,type:ne.VIDEO,value:{codec_out:h}})}}),t;case zt.REMOTE_INBOUND_RTP:{xe(js,`analyze() - got stats ${c[V.TYPE]} for ${n}`,c);const r=c[V.SSRC],_=ct(r,s,$e.OUTBOUND),h=ct(r,a,$e.OUTBOUND);if(c[V.KIND]===P.AUDIO){const d=Lf(c,P.AUDIO,h,_),g=ha(c,P.AUDIO,_),T=Hf(c,P.AUDIO,_,h);return[{ssrc:r,type:ne.AUDIO,value:{delta_rtt_ms_out:d.rtt}},{ssrc:r,type:ne.AUDIO,value:{total_rtt_ms_out:d.totalRTT}},{ssrc:r,type:ne.AUDIO,value:{total_rtt_measure_out:d.totalRTTMeasurements}},{ssrc:r,type:ne.AUDIO,value:{delta_jitter_ms_out:g}},{ssrc:r,type:ne.AUDIO,value:{timestamp_out:c[V.TIMESTAMP]}},{ssrc:r,type:ne.AUDIO,value:{total_packets_lost_out:T.packetsLost}},{ssrc:r,type:ne.AUDIO,value:{delta_packets_lost_out:T.deltaPacketsLost}},{ssrc:r,type:ne.AUDIO,value:{percent_packets_lost_out:T.fractionLost}}]}if(c[V.KIND]===P.VIDEO){const d=Lf(c,P.VIDEO,h,_),g=ha(c,P.VIDEO,_),T=Hf(c,P.VIDEO,_,h);return[{ssrc:r,type:ne.VIDEO,value:{delta_rtt_ms_out:d.rtt}},{ssrc:r,type:ne.VIDEO,value:{total_rtt_ms_out:d.totalRTT}},{ssrc:r,type:ne.VIDEO,value:{total_rtt_measure_out:d.totalRTTMeasurements}},{ssrc:r,type:ne.VIDEO,value:{delta_jitter_ms_out:g}},{ssrc:r,type:ne.VIDEO,value:{timestamp_out:c[V.TIMESTAMP]}},{ssrc:r,type:ne.VIDEO,value:{total_packets_lost_out:T.packetsLost}},{ssrc:r,type:ne.VIDEO,value:{delta_packets_lost_out:T.deltaPacketsLost}},{ssrc:r,type:ne.VIDEO,value:{percent_packets_lost_out:T.fractionLost}}]}break}}return[]},Ka=c=>c<0?1:c>100?4.5:1+.035*c+7/1e6*c*(c-60)*(100-c),Yv=(c,s=P.AUDIO,n,a,o)=>{const t=ct(o,c,$e.INBOUND),r=ct(o,n,$e.INBOUND),_=ct(o,a,$e.INBOUND),h=[],d=[],g=t[s].percent_packets_lost_in,T=t[s].delta_jitter_ms_in,E=r&&r[s].delta_jitter_ms_in||null,y=_&&_[s].delta_jitter_ms_in||null,A=c.data.delta_rtt_connectivity_ms,C=n&&n.data.delta_rtt_connectivity_ms||null,I=a&&a.data.delta_rtt_connectivity_ms||null;A&&h.push(A),C&&h.push(C),I&&h.push(I),T&&d.push(T),n&&E&&d.push(E),a&&y&&d.push(y);const H=h.length>0?Gs(h):100,$=d.length>0?Gs(d):10,oe=93.2-g,N=.18*oe*oe-27.9*oe+1126.62,j=(H+$)/2,Se=j-177.3<0?0:1,ve=.024*j+.11*(j-177.3)*Se,k=N-ve;return Ka(k)},Jv=(c,s=P.AUDIO,n,a,o)=>{const t=ct(o,c,$e.OUTBOUND),r=ct(o,n,$e.OUTBOUND),_=ct(o,a,$e.OUTBOUND),h=[],d=[],g=t[s].percent_packets_lost_out,T=t[s].delta_rtt_ms_out,E=r&&r[s].delta_rtt_ms_out||null,y=_&&_[s].delta_rtt_ms_out||null,A=t[s].delta_jitter_ms_out,C=r&&r[s].delta_jitter_ms_out||null,I=_&&_[s].delta_jitter_ms_out||null,H=c.data.delta_rtt_connectivity_ms,$=n&&n.data.delta_rtt_connectivity_ms||null,oe=a&&a.data.delta_rtt_connectivity_ms||null;T?h.push(T):H&&h.push(H),E?h.push(E):$&&h.push($),y?h.push(y):oe&&h.push(oe),A&&d.push(A),n&&C&&d.push(C),a&&I&&d.push(I);const N=h.length>0?Gs(h):100,j=d.length>0?Gs(d):10,Se=93.2-g,ve=.18*Se*Se-27.9*Se+1126.62,k=(N+j)/2,D=k-177.3<0?0:1,B=.024*k+.11*(k-177.3)*D,q=ve-B;return Ka(q)},zv=(c,s=P.AUDIO,n,a,o)=>{const t=ct(o,c,$e.INBOUND),r=ct(o,n,$e.INBOUND),_=ct(o,a,$e.INBOUND),h=[],d=[],g=t[s].percent_packets_lost_in/100,T=t[s].delta_jitter_ms_in,E=r&&r[s].delta_jitter_ms_in||null,y=_&&_[s].delta_jitter_ms_in||null,A=c.data.delta_rtt_connectivity_ms,C=n&&n.data.delta_rtt_connectivity_ms||null,I=a&&a.data.delta_rtt_connectivity_ms||null;A&&h.push(A),C&&h.push(C),I&&h.push(I),T&&d.push(T),r&&E&&d.push(E),_&&y&&d.push(y);const H=h.length>0?Gs(h):100,$=d.length>0?Gs(d):10,oe=0,N=19.8,j=29.7,Se=30,ve=(H+$)/2+Se,k=ve-177.3<0?0:1,D=.024*ve+.11*(ve-177.3)*k,q=93.2-(oe+N*Math.log(1+j*g)+D);return Ka(q)},Xv=(c,s=P.AUDIO,n,a,o)=>{const t=ct(o,c,$e.OUTBOUND),r=ct(o,n,$e.OUTBOUND),_=ct(o,a,$e.OUTBOUND),h=[],d=[],g=t[s].percent_packets_lost_out/100,T=t[s].delta_rtt_ms_out,E=r&&r[s].delta_rtt_ms_out||null,y=_&&_[s].delta_rtt_ms_out||null,A=t[s].delta_jitter_ms_out,C=r&&r[s].delta_jitter_ms_out||null,I=_&&_[s].delta_jitter_ms_out||null,H=c.data.delta_rtt_connectivity_ms,$=n&&n.data.delta_rtt_connectivity_ms||null,oe=a&&a.data.delta_rtt_connectivity_ms||null;T?h.push(T):H&&h.push(H),E?h.push(E):$&&h.push($),y?h.push(y):oe&&h.push(oe),A&&d.push(A),r&&C&&d.push(C),_&&I&&d.push(I);const N=h.length>0?Gs(h):100,j=d.length>0?Gs(d):10,Se=0,ve=19.8,k=29.7,D=30,B=(N+j)/2+D,q=B-177.3<0?0:1,J=.024*B+.11*(B-177.3)*q,X=93.2-(Se+ve*Math.log(1+k*g)+J);return Ka(X)};class Qv{constructor(s,n){this._callbacks={onreport:null,onticket:null},this._id=wv(),this._moduleName=this._id,this._probeId=n,this._config=s,this._exporter=new Pv(s),this._state=gs.IDLE,this.registerToPCEvents(),In(this._moduleName,`new collector created for probe ${this._probeId}`)}analyze(s,n,a,o){const t=(h,d)=>h===P.AUDIO?d===zt.INBOUND_RTP?{...Nh}:{...Uh}:d===zt.INBOUND_RTP?{...xh}:{...Ph},r=Av(n);r.pname=this._config.pname,r.call_id=this._config.cid,r.user_id=this._config.uid,r.count=n?n.count+1:1;let _=null;return s.forEach(h=>{!_&&h.timestamp&&(_=h.timestamp),Kv(h,r,r.pname,o).forEach(g=>{if(g.value&&g.type)if(g.ssrc){let T=r[g.type][g.ssrc];T||(T=t(g.type,h.type),T.ssrc=g.ssrc,r[g.type][g.ssrc]=T),Object.keys(g.value).forEach(E=>{T[E]=g.value[E]})}else Object.keys(g.value).forEach(T=>{r[g.type][T]=g.value[T]})})}),r.timestamp=_,Object.keys(r[P.AUDIO]).forEach(h=>{const d=r[P.AUDIO][h];d.direction===$e.INBOUND?(d.mos_emodel_in=Yv(r,P.AUDIO,n,a,d.ssrc),d.mos_in=zv(r,P.AUDIO,n,a,d.ssrc)):(d.mos_emodel_out=Jv(r,P.AUDIO,n,a,d.ssrc),d.mos_out=Xv(r,P.AUDIO,n,a,d.ssrc))}),r}async takeReferenceStats(){return new Promise((s,n)=>{const a=Date.now();setTimeout(async()=>{try{const o=Date.now()-a,t=Date.now(),r=await this._config.pc.getStats(),_=this.analyze(r,null,null,null),h=Date.now();_.experimental.time_to_measure_ms=h-t,_.experimental.time_to_wait_ms=o,this._exporter.saveReferenceReport(_),xe(this._moduleName,`got reference report for probe ${this._probeId}`),s()}catch(o){n(o)}},this._config.startAfter)})}async collectStats(){try{if(this._state!==gs.RUNNING||!this._config.pc)return xe(this._moduleName,`report discarded (too late) for probe ${this._probeId}`),null;const s=Date.now(),n=await this._config.pc.getStats(),a=this.analyze(n,this._exporter.getLastReport(),this._exporter.getBeforeLastReport(),this._exporter.getReferenceReport()),o=Date.now();return a.experimental.time_to_measure_ms=o-s,this._exporter.addReport(a),xe(this._moduleName,`got report for probe ${this._probeId}#${this._exporter.getReportsNumber()+1}`),this.fireOnReport(a),a}catch(s){return _r(this._moduleName,`got error ${s}`),null}}async start(){xe(this._moduleName,"starting"),this.state=gs.RUNNING,this._startedTime=this._exporter.start(),xe(this._moduleName,"started")}async mute(){this.state=gs.MUTED,xe(this._moduleName,"muted")}async unmute(){this.state=gs.RUNNING,xe(this._moduleName,"unmuted")}async stop(s){if(xe(this._moduleName,`stopping${s?" by watchdog":""}...`),this._stoppedTime=this._exporter.stop(),this.state=gs.IDLE,this._config.ticket){const{ticket:n}=this._exporter;this.fireOnTicket(n)}this._exporter.reset(),xe(this._moduleName,"stopped")}registerCallback(s,n,a){s in this._callbacks?(this._callbacks[s]={callback:n,context:a},xe(this._moduleName,`registered callback '${s}'`)):_r(this._moduleName,`can't register callback for '${s}' - not found`)}unregisterCallback(s){s in this._callbacks?(this._callbacks[s]=null,delete this._callbacks[s],xe(this._moduleName,`unregistered callback '${s}'`)):_r(this._moduleName,`can't unregister callback for '${s}' - not found`)}fireOnReport(s){this._callbacks.onreport&&wu(this._callbacks.onreport.callback,this._callbacks.onreport.context,s)}fireOnTicket(s){this._callbacks.onticket&&wu(this._callbacks.onticket.callback,this._callbacks.onticket.context,s)}updateConfig(s){this._config=s,this._exporter.updateConfig(s)}get state(){return this._state}set state(s){this._state=s,xe(this._moduleName,`state changed to ${s}`)}addCustomEvent(s,n,a,o){this._exporter.addCustomEvent({at:typeof s=="object"?s.toJSON():s,category:n,name:a,description:o})}async registerToPCEvents(){const{pc:s}=this._config;if(navigator.mediaDevices.ondevicechange=async()=>{try{const n=await navigator.mediaDevices.enumerateDevices();this.addCustomEvent(new Date().toJSON(),"device",`${n.length} devices found`,"Media Devices state")}catch{_r(this._moduleName,"can't get devices")}},s){s.oniceconnectionstatechange=()=>{const a=s.iceConnectionState;a===Ki.CONNECTED||a===Ki.COMPLETED?this.addCustomEvent(new Date().toJSON(),"call",a,"ICE connection state"):a===Ki.DISCONNECTED||a===Ki.FAILED?this.addCustomEvent(new Date().toJSON(),"call",a,"ICE connection state"):a===Ki.CLOSED&&this.addCustomEvent(new Date().toJSON(),"call","ended","ICE connection state")},s.onicegatheringstatechange=()=>{const a=s.iceGatheringState;this.addCustomEvent(new Date().toJSON(),"call",a,"ICE gathering state")},s.ontrack=a=>{this.addCustomEvent(new Date().toJSON(),"call",`${a.track.kind}track`,"MediaStreamTrack received")},s.onnegotiationneeded=()=>{this.addCustomEvent(new Date().toJSON(),"call","negotiation","Media changed")};const n=s.getReceivers();if(n&&n.length>0){const a=n[0],{transport:o}=a;if(o){const{iceTransport:t}=o;t&&(t.onselectedcandidatepairchange=()=>{this.addCustomEvent(new Date().toJSON(),"call","transport","Candidates Pair changed")})}}}}}class Zv{constructor(s){this._id=s.pname&&s.pname.substr(0,12).padEnd(12," ")||bv(),this._moduleName=this._id,In(this._moduleName,"probe created"),this._config=s,this._collector=new Qv(this._config,this._id)}set onreport(s){s?this._collector.registerCallback("onreport",s):this._collector.unregisterCallback("onreport")}set onticket(s){s?this._collector.registerCallback("onticket",s):this._collector.unregisterCallback("onticket")}get id(){return this._id}get pname(){return this._config.pname}get cid(){return this._config.cid}get uid(){return this._config.uid}get state(){return this._collector.state}set state(s){this._collector.state=s}addCustomEvent(s,n,a,o=new Date().toJSON()){this._collector.addCustomEvent(o,n,s,a)}get isRunning(){return this._collector.state===gs.RUNNING}get isIdle(){return this._collector.state===gs.IDLE}updateUserId(s){this._config.uid=s,this._collector.updateConfig(this._config)}updateCallId(s){this._config.cid=s,this._collector.updateConfig(this._config)}start(){if(!this.isIdle){ba(this._moduleName,"probe is already running");return}this._collector.start()}stop(s=!1){this.isRunning&&this._collector.stop(s)}async takeReferenceStats(){return this._collector.takeReferenceStats()}async collectStats(){return this._collector.collectStats()}}const Ct="engine ";class eE{constructor(s){this._config=s,this._probes=[],this._startedTime=null,this._callbacks={onresult:null},In(Ct,`configured for probing every ${this._config.refreshEvery}ms`),In(Ct,`configured for starting after ${this._config.startAfter}ms`),In(Ct,`${!this._config.stopAfter||this._config.stopAfter!==-1?`configured for stopped after ${this._config.stopAfter}ms`:"configured for never stopped"}`),xe(Ct,"engine initialized")}get probes(){return this._probes}get isRunning(){return this._probes.some(s=>s.isRunning)}get isIdle(){return this._probes.every(s=>s.isIdle)}addNewProbe(s,n){if(!s)throw new Error("undefined peer connection");const a=Rv(s,n,this._config),o=new Zv(a);return this._probes.push(o),xe(Ct,`${this._probes.length} probes registered`),o}removeExistingProbe(s){if(!s)throw new Error("undefined probe");s.state===gs.RUNNING&&s.stop(),this._probes=this._probes.filter(n=>s.id!==n.id)}async start(){const s=()=>{this._probes.forEach(t=>t.start())},n=async()=>Promise.all(this._probes.map(t=>t.takeReferenceStats())),a=()=>this.isIdle?!1:!this._config.stopAfter||this._config.stopAfter<0?!0:Date.now()<this._startedTime+this._config.stopAfter,o=async()=>{const t=yv(),r=this._probes.filter(_=>_.isRunning);for(const _ of r){const h=await _.collectStats();h&&t.probes.push(h),xe(Ct,`got probe ${_.id}`),await kf(0)}return t.delta_time_to_measure_probes_ms=Sn(t.probes,"experimental","time_to_measure_ms"),t.delta_KBytes_in=Sn(t.probes,"data","delta_KBytes_in"),t.delta_KBytes_out=Sn(t.probes,"data","delta_KBytes_out"),t.delta_kbs_in=Sn(t.probes,"data","delta_kbs_in"),t.delta_kbs_out=Sn(t.probes,"data","delta_kbs_out"),t.total_time_decoded_in=Sn(t.probes,"video","total_time_decoded_in"),t.total_time_encoded_out=Sn(t.probes,"video","total_time_encoded_out"),t};for(xe(Ct,"starting to collect"),s(),xe(Ct,"generating reference reports..."),await n(),xe(Ct,"reference reports generated"),this._startedTime=Date.now();a();)if(xe(Ct,`wait ${this._config.refreshEvery}ms before collecting`),await kf(this._config.refreshEvery),a()){xe(Ct,"collecting...");const t=Date.now(),r=await o(),_=Date.now();r.delta_time_consumed_to_measure_ms=_-t,this.fireOnReports(r),xe(Ct,"collected")}xe(Ct,"reaching end of the collecting period..."),this.isRunning&&setTimeout(()=>{this.stop()},0)}stop(s){const n=a=>{this._probes.forEach(o=>{o.stop(a)})};In(Ct,"stop collecting"),n(s)}registerCallback(s,n,a){s in this._callbacks?(this._callbacks[s]={callback:n,context:a},xe(Ct,`registered callback '${s}'`)):_r(Ct,`can't register callback for '${s}' - not found`)}unregisterCallback(s){s in this._callbacks?(this._callbacks[s]=null,delete this._callbacks[s],xe(this._moduleName,`unregistered callback '${s}'`)):_r(this._moduleName,`can't unregister callback for '${s}' - not found`)}fireOnReports(s){this._callbacks.onresult&&s.probes.length>0&&wu(this._callbacks.onresult.callback,this._callbacks.onresult.context,s)}}const tE="interface ";class sE{constructor(s){this._config=Iv(s),In(tE,`welcome to ${this._config.name} version ${this._config.version}`),dv(this._config.verbose||!1),this._engine=new eE(this._config)}setupLogLevel(s){pv(s)}get version(){return this._config.version}get name(){return this._config.name}get probes(){return this._engine.probes}createProbe(s,n){return this._engine.addNewProbe(s,n)}startAllProbes(){this._engine.start()}stopAllProbes(){this._engine.stop()}get running(){return this._engine.isRunning}get idle(){return this._engine.isIdle}removeProbe(s){this._engine.removeExistingProbe(s)}set onresult(s){s?this._engine.registerCallback("onresult",s):this._engine.unregisterCallback("onresult")}}function nE(c,s){return Object.keys(c).filter(n=>s.includes(n)).reduce((n,a)=>{const o=a;return{...n,[o]:c[o]}},{})}const rE=["mos_in","codec_in","delta_KBytes_in","delta_kbs_in","delta_jitter_ms_in","delta_packets_lost_in"];class iE{constructor(s){this.intervals={},this.emitInterval=s.emitInterval||200,this.onChangeFunction=s.onChangeFunction}start(s,n){s&&s.getTracks().length&&requestAnimationFrame(()=>this.beginCalculation(s,n))}stop(s){this.clearVolumeInterval(s)}clearVolumeInterval(s){console.log("clearVolumeInterval",s),clearInterval(this.intervals[s]),delete this.intervals[s]}clearAllIntervals(){Object.keys(this.intervals).forEach(s=>{clearInterval(this.intervals[s])}),this.intervals={}}beginCalculation(s,n){this.clearVolumeInterval(n);const a=Rn.createAnalyser(),o=Rn.createMediaStreamSource(s),t=Rn.createScriptProcessor(2048,1,1);a.smoothingTimeConstant=.8,a.fftSize=1024,o.connect(a),a.connect(t),t.connect(Rn.destination),this.intervals[n]=setInterval(()=>{const r=new Uint8Array(a.frequencyBinCount);a.getByteFrequencyData(r);let _=0;const h=r.length;for(let g=0;g<h;g++)_+=r[g];const d=_/h;this.onChangeFunction(n,d)},this.emitInterval)}}const _a={SELECTED_INPUT_DEVICE:"OpensipsJSInputDevice",SELECTED_OUTPUT_DEVICE:"OpensipsJSOutputDevice"},lE=0;class aE{constructor(s){this.isAutoAnswer=!1,this.muteWhenJoinEnabled=!1,this.isDNDEnabled=!1,this.muted=!1,this.microphoneInputLevelValue=1,this.speakerVolumeValue=1,this.activeRooms={},this.activeCalls={},this.extendedCalls={},this.availableMediaDevices=[],this.selectedMediaDevices={input:"default",output:"default"},this.callStatus={},this.callTime={},this.callMetrics={},this.timeIntervals={},this.metricConfig={refreshEvery:1e3},this.activeStreamValue=null,this.initialStreamValue=null,this.context=s,this.context.on(this.context.newRTCSessionEventName,this.newRTCSessionCallback.bind(this)),this.VUMeter=new iE({onChangeFunction:this.emitVolumeChange.bind(this)}),this.initializeMediaDevices()}get sipOptions(){return{...this.context.options.sipOptions,mediaConstraints:this.getUserMediaConstraints}}get currentActiveRoomId(){return this.currentActiveRoomIdValue}set currentActiveRoomId(s){this.currentActiveRoomIdValue=s,this.context.emit("currentActiveRoomChanged",s)}get autoAnswer(){return this.isAutoAnswer}get callAddingInProgress(){return this.isCallAddingInProgress}set callAddingInProgress(s){this.isCallAddingInProgress=s,this.context.emit("callAddingInProgressChanged",s)}get muteWhenJoin(){return this.muteWhenJoinEnabled}get isDND(){return this.isDNDEnabled}get speakerVolume(){return this.speakerVolumeValue}get microphoneInputLevel(){return this.microphoneInputLevelValue}get getActiveCalls(){return this.activeCalls}get hasActiveCalls(){return Object.values(this.extendedCalls).length>0}get getActiveRooms(){return this.activeRooms}get isMuted(){return this.muted}get getInputDeviceList(){return this.availableMediaDevices.filter(s=>s.kind==="audioinput")}get getOutputDeviceList(){return this.availableMediaDevices.filter(s=>s.kind==="audiooutput")}get getUserMediaConstraints(){return wh()?{video:!1,audio:!0}:{audio:{deviceId:{exact:this.selectedMediaDevices.input}},video:!1}}get selectedInputDevice(){return this.selectedMediaDevices.input}get selectedOutputDevice(){return this.selectedMediaDevices.output}get activeStream(){return this.activeStreamValue}setAvailableMediaDevices(s){this.availableMediaDevices=s,this.context.emit("changeAvailableDeviceList",s)}async updateDeviceList(){await navigator.mediaDevices.getUserMedia(this.getUserMediaConstraints);const s=await navigator.mediaDevices.enumerateDevices();this.setAvailableMediaDevices(s)}async initializeMediaDevices(){const s=localStorage.getItem(_a.SELECTED_INPUT_DEVICE)||"default",n=localStorage.getItem(_a.SELECTED_OUTPUT_DEVICE)||"default";try{const a=await navigator.mediaDevices.getUserMedia(this.getUserMediaConstraints),o=await navigator.mediaDevices.enumerateDevices();this.setAvailableMediaDevices(o),await this.setMicrophone(s),await this.setSpeaker(n),navigator.mediaDevices.addEventListener("devicechange",async()=>{const t=await navigator.mediaDevices.enumerateDevices();this.setAvailableMediaDevices(t)}),a.getTracks().forEach(t=>t.stop())}catch(a){console.error(a)}}setCallTime(s){const n={...s};delete n.callId,this.callTime={...this.callTime,[s.callId]:n},this.context.emit("changeCallTime",this.callTime)}removeCallTime(s){const n={...this.callTime};delete n[s],this.callTime={...n},this.context.emit("changeCallTime",this.callTime)}setTimeInterval(s,n){this.timeIntervals={...this.timeIntervals,[s]:n}}removeTimeInterval(s){const n={...this.timeIntervals};n[s]&&(clearInterval(n[s]),delete n[s],this.timeIntervals={...n})}stopCallTimer(s){this.removeTimeInterval(s),this.removeCallTime(s)}emitVolumeChange(s,n){this.context.emit("changeCallVolume",{callId:s,volume:n})}setMetricsConfig(s){this.metricConfig={...this.metricConfig,...s}}sendDTMF(s,n){if(!/^[A-D0-9]+$/g.test(n))throw new Error("Not allowed character in DTMF input");this.extendedCalls[s].sendDTMF(n)}setIsMuted(s){this.muted=s,this.context.emit("changeIsMuted",s)}processMute(s){const n=this.currentActiveRoomId;this.setIsMuted(s),this.initialStreamValue.getTracks().forEach(a=>a.enabled=!s),this.roomReconfigure(n)}mute(){this.processMute(!0)}unmute(){this.processMute(!1)}async processHold({callId:s,toHold:n,automatic:a}){const o=this.extendedCalls[s];o._automaticHold=a??!1,await new Promise(_=>{const h=()=>{_()};n?o.hold({},h):o.unhold({},h)}),this.updateCall(o);const r=Object.values(this.extendedCalls).filter(_=>_.roomId===this.currentActiveRoomId&&(n?s!==_._id:!0));r.length>1&&await this.doConference(r)}holdCall(s,n=!1){return this.processHold({callId:s,automatic:n,toHold:!0})}unholdCall(s){return this.processHold({callId:s,toHold:!1})}cancelAllOutgoingUnanswered(){Object.values(this.getActiveCalls).filter(s=>s.direction==="outgoing"&&s.status===lE).forEach(s=>this.terminateCall(s._id))}answerCall(s){const n=this.extendedCalls[s];this.cancelAllOutgoingUnanswered(),n.answer(this.sipOptions),this.updateCall(n),this.setActiveRoom(n.roomId),n.connection.addEventListener("track",a=>{this.triggerAddStream(a,n)})}async moveCall(s,n){this.updateCallStatus({callId:s,isMoving:!0}),await this.processRoomChange({callId:s,roomId:n}),this.updateCallStatus({callId:s,isMoving:!1})}updateCall(s){this.activeCalls[s._id]=Nf(s),this.context.emit("changeActiveCalls",this.activeCalls)}updateRoom(s){const a={...this.activeRooms[s.roomId],...s};this.activeRooms={...this.activeRooms,[s.roomId]:{...a}},this.context.emit("updateRoom",{room:a,roomList:this.activeRooms})}hasAutoAnswerHeaders(s){const n=/answer-after=0/,o=s.request.getHeader("Call-Info");return o&&n.test(o)}addCall(s,n=!0){this.activeCalls={...this.activeCalls,[s._id]:Nf(s)},this.extendedCalls[s._id]=s,n&&this.context.emit("changeActiveCalls",this.activeCalls)}addCallStatus(s){this.callStatus={...this.callStatus,[s]:{isMoving:!1,isTransferring:!1,isMerging:!1}},this.context.emit("changeCallStatus",this.callStatus)}updateCallStatus(s){const a={...{...this.callStatus[s.callId]}};s.isMoving!==void 0&&(a.isMoving=s.isMoving),s.isTransferring!==void 0&&(a.isTransferring=s.isTransferring),s.isMerging!==void 0&&(a.isMerging=s.isMerging),this.callStatus={...this.callStatus,[s.callId]:{...a}},this.context.emit("changeCallStatus",this.callStatus)}removeCallStatus(s){const n={...this.callStatus};delete n[s],this.callStatus={...n},this.context.emit("changeCallStatus",this.callStatus)}addRoom(s){this.activeRooms={...this.activeRooms,[s.roomId]:s},this.context.emit("addRoom",{room:s,roomList:this.activeRooms})}getActiveStream(){const s=xf(this.initialStreamValue,this.microphoneInputLevel*2);return s.getTracks().forEach(n=>n.enabled=!this.isMuted),this.setActiveStream(s),s}async setMicrophone(s){if(!this.getInputDeviceList.find(({deviceId:a})=>a===s)||(this.setSelectedInputDevice(s),Object.keys(this.getActiveCalls).length===0))return;await this.setupStream();const n=Object.values(this.extendedCalls).filter(a=>a.roomId===this.currentActiveRoomId);n.length===1?Object.values(n).forEach(async a=>{const o=this.getActiveStream();a.connection.getSenders()[0].replaceTrack(o.getTracks()[0]),this.updateCall(a)}):await this.doConference(n)}setActiveStream(s){this.activeStream&&this.stopVUMeter("origin"),this.setupVUMeter(s,"origin"),this.activeStreamValue=s,this.context.emit("changeActiveStream",s)}async setSpeaker(s){if(!this.getOutputDeviceList.find(({deviceId:o})=>o===s))return;this.setSelectedOutputDevice(s);const n=Object.values(this.extendedCalls);if(n.length===0)return;const a=n.filter(o=>o.roomId===this.currentActiveRoomId);a.length===1?n.forEach(o=>{var t;(t=o.audioTag)==null||t.setSinkId(s),this.updateCall(o)}):await this.doConference(a)}removeRoom(s){const n={...this.activeRooms},a={...n[s]};delete n[s],this.activeRooms={...n},this.context.emit("removeRoom",{room:a,roomList:this.activeRooms})}deleteRoomIfEmpty(s){s!==void 0&&Object.values(this.extendedCalls).filter(n=>n.roomId===s).length===0&&(this.removeRoom(s),this.currentActiveRoomId===s&&(this.currentActiveRoomId=void 0))}checkInitialized(){if(!this.context.initialized)throw new Error("[OpenSIPSJS] You must call `start` method first!")}muteReconfigure(s){this.muted?s.mute({audio:!0}):s.unmute({audio:!0})}async roomReconfigure(s){var a;if(s===void 0)return;const n=Object.values(this.extendedCalls).filter(o=>o.roomId===s);if(this.currentActiveRoomId===s?n.forEach(o=>{o.audioTag&&(this.muteReconfigure(o),o.audioTag.muted=!1,this.updateCall(o))}):n.forEach(o=>{o.audioTag&&(o.audioTag.muted=!0,this.updateCall(o))}),n.length===0)this.deleteRoomIfEmpty(s);else if(n.length===1&&this.currentActiveRoomId!==s)n[0].isOnHold().local||await this.holdCall(n[0].id,!0);else if(n.length===1&&this.currentActiveRoomId===s){if(n[0].isOnHold().local&&n[0]._automaticHold&&await this.unholdCall(n[0].id),n[0].connection&&((a=n[0].connection)!=null&&a.getSenders()[0])){const o=this.getActiveStream();await n[0].connection.getSenders()[0].replaceTrack(o.getTracks()[0]),this.muteReconfigure(n[0])}}else n.length>1&&await this.doConference(n)}async doConference(s){const n=[];s.forEach(a=>{a!=null&&a.connection.getReceivers().forEach(o=>{n.push(o.track)})}),await hv.forEach(s,async a=>{var r;if(a==null)return;const o=new MediaStream,t=Rn.createMediaStreamDestination();if(a.connection.getReceivers().forEach(_=>{n.forEach(h=>{o.addTrack(_.track),_.track.id!==h.id&&Rn.createMediaStreamSource(new MediaStream([h])).connect(t)})}),s[0].roomId===this.currentActiveRoomId){const _=this.getActiveStream();Rn.createMediaStreamSource(_).connect(t)}(r=a.connection)!=null&&r.getSenders()[0]&&(await a.connection.getSenders()[0].replaceTrack(t.stream.getTracks()[0]),this.muteReconfigure(a))})}processCallerMute(s,n){const a=this.extendedCalls[s];a&&a.connection.getReceivers().length&&(a.localMuted=n,a.connection.getReceivers().forEach(o=>{o.track.enabled=!n}),this.updateCall(a))}muteCaller(s){this.processCallerMute(s,!0)}unmuteCaller(s){this.processCallerMute(s,!1)}terminateCall(s){const n=this.extendedCalls[s];n._status!==8&&n.terminate()}transferCall(s,n){if(n.toString().length===0)return new Error("Target must be passed");const a=this.extendedCalls[s];if(!a._is_confirmed&&!a._is_canceled){const o=`sip:${n}@${this.context.sipDomain}`;a.terminate({status_code:302,reason_phrase:"Moved Temporarily",extraHeaders:[`Contact: ${o}`]});return}this.updateCallStatus({callId:s,isTransferring:!0}),a.refer(`sip:${n}@${this.context.sipDomain}`),this.updateCall(a)}mergeCall(s){const n=Object.values(this.extendedCalls).filter(t=>t.roomId===s);if(n.length!==2)return;const a=n[0],o=n[1];!a||!o||(this.updateCallStatus({callId:a._id,isMerging:!0}),this.updateCallStatus({callId:o._id,isMerging:!0}),a.refer(o.remote_identity.uri.toString(),{replaces:o}),this.updateCall(a))}mergeCallByIds(s,n){const a=Object.values(this.extendedCalls).find(t=>t._id===s),o=Object.values(this.extendedCalls).find(t=>t._id===n);if(!a||!o)throw new Error("Call ID is not provided");this.updateCallStatus({callId:s,isMerging:!0}),this.updateCallStatus({callId:n,isMerging:!0}),a.refer(o.remote_identity.uri.toString(),{replaces:o}),this.updateCall(a)}setDND(s){this.isDNDEnabled=s,this.context.emit("changeIsDND",s)}startCallTimer(s){this.removeTimeInterval(s);const n={callId:s,hours:0,minutes:0,seconds:0,formatted:""};this.setCallTime(n);const a=setInterval(()=>{const o={...this.callTime[s]},t=uv(o);this.setCallTime({callId:s,...t})},1e3);this.setTimeInterval(s,a)}async setActiveRoom(s){const n=this.currentActiveRoomId;s!==n&&(this.currentActiveRoomId=s,await this.roomReconfigure(n),await this.roomReconfigure(s))}getNewRoomId(){const s=Object.keys(this.activeRooms);return s.length===0?1:parseInt(s.sort()[s.length-1])+1}async setupCall(s){var d,g;const n=s.session;if(this.getActiveCalls[n.id]!==void 0)return;const o=this.getNewRoomId(),t={started:new Date,incomingInProgress:!1,roomId:o};n.direction==="incoming"?(this.context.logger.log("New incoming call from",(g=(d=n._remote_identity)==null?void 0:d._uri)==null?void 0:g._user),t.incomingInProgress=!0,this.context.subscribe(Xt.CALL_CONFIRMED,T=>{n.id===T.id&&(this.updateRoom({incomingInProgress:!1,roomId:o}),this.startCallTimer(n.id))}),this.context.subscribe(Xt.CALL_FAILED,T=>{n.id===T.id&&(this.updateRoom({incomingInProgress:!1,roomId:o}),this.deleteRoomIfEmpty(o))})):n.direction==="outgoing"&&(n.once("confirmed",()=>{this.startCallTimer(n.id)}),this.startCallTimer(n.id));const r=n,_=this.hasAutoAnswerHeaders(s),h=r.direction==="incoming"&&!this.hasActiveCalls&&(_||this.autoAnswer);r.roomId=o,r.localMuted=!1,r.autoAnswer=h,h?this.addCall(r,!1):this.addCall(r),this.addCallStatus(n.id),this.addRoom(t),h&&this.answerCall(r._id)}removeCall(s){const n={...this.activeCalls};delete n[s],this.activeCalls={...n};const a={...this.extendedCalls};delete a[s],this.extendedCalls={...a},this.context.emit("changeActiveCalls",this.activeCalls)}activeCallListRemove(s){var o;const n=this.extendedCalls[s._id];this.stopVUMeter("origin"),(o=n.connection)==null||o.getSenders().forEach(t=>{t.track.stop()});const a=n.roomId;this.removeCall(s._id),this.roomReconfigure(a)}async newRTCSessionCallback(s){const n=s.session;if(this.isDND){n.terminate({status_code:486,reason_phrase:"Do Not Disturb"});return}if(this.context.triggerListener({listenerType:Xt.NEW_CALL,session:n,event:s}),n.on("ended",a=>{var t,r,_;this.stopVUMeter(n.id),this.context.logger.log("Session ended for",(r=(t=n._remote_identity)==null?void 0:t._uri)==null?void 0:r._user),this.context.triggerListener({listenerType:Xt.CALL_ENDED,session:n,event:a});const o=this.getActiveCalls[n.id];o&&this.activeCallListRemove(o),this.stopCallTimer(n.id),this.removeCallStatus(n.id),this.removeCallMetrics(n.id),Object.keys(this.extendedCalls).length||(this.setIsMuted(!1),(_=this.initialStreamValue)==null||_.getTracks().forEach(h=>h.stop()),this.initialStreamValue=null)}),n.on("progress",a=>{var o,t;this.context.logger.log("Session in progress for",(t=(o=n._remote_identity)==null?void 0:o._uri)==null?void 0:t._user),this.context.triggerListener({listenerType:Xt.CALL_PROGRESS,session:n,event:a})}),n.on("failed",a=>{var t,r,_;this.stopVUMeter(n.id),this.context.logger.log("Session failed for",(r=(t=n._remote_identity)==null?void 0:t._uri)==null?void 0:r._user),this.context.triggerListener({listenerType:Xt.CALL_FAILED,session:n,event:a}),n.id===this.callAddingInProgress&&(this.callAddingInProgress=void 0);const o=this.getActiveCalls[n.id];o&&this.activeCallListRemove(o),this.stopCallTimer(n.id),this.removeCallStatus(n.id),this.removeCallMetrics(n.id),Object.keys(this.extendedCalls).length||(this.setIsMuted(!1),(_=this.initialStreamValue)==null||_.getTracks().forEach(h=>h.stop()),this.initialStreamValue=null)}),n.on("confirmed",a=>{var o,t;this.context.logger.log("Session confirmed for",(t=(o=n._remote_identity)==null?void 0:o._uri)==null?void 0:t._user),this.context.triggerListener({listenerType:Xt.CALL_CONFIRMED,session:n,event:a}),this.updateCall(n),n.id===this.callAddingInProgress&&(this.callAddingInProgress=void 0)}),await this.setupCall(s),n.direction==="outgoing"){const a=this.getActiveCalls[n.id].roomId;this.setActiveRoom(a)}}setMuteWhenJoin(s){this.muteWhenJoinEnabled=s,this.context.emit("changeMuteWhenJoin",s)}setMicrophoneSensitivity(s){if(s<0||s>1)throw new Error("Value should be in range from 0 to 1!");this.microphoneInputLevelValue=s,this.roomReconfigure(this.currentActiveRoomId)}setSpeakerVolume(s){this.speakerVolumeValue=s,Object.values(this.extendedCalls).forEach(n=>{n.audioTag&&(n.audioTag.volume=s,this.updateCall(n))})}setAutoAnswer(s){this.isAutoAnswer=s}setSelectedInputDevice(s){localStorage.setItem(_a.SELECTED_INPUT_DEVICE,s),this.selectedMediaDevices.input=s,this.context.emit("changeActiveInputMediaDevice",s)}setSelectedOutputDevice(s){localStorage.setItem(_a.SELECTED_OUTPUT_DEVICE,s),this.selectedMediaDevices.output=s,this.context.emit("changeActiveOutputMediaDevice",s)}setCallMetrics(s){const n={...s};delete n.callId,this.callMetrics={...this.callMetrics,[s.callId]:n},this.context.emit("changeCallMetrics",this.callMetrics)}removeCallMetrics(s){const n={...this.callMetrics};delete n[s],this.callMetrics={...n},this.context.emit("changeCallMetrics",this.callMetrics)}getCallQuality(s){const n=new sE(this.metricConfig),a=n.createProbe(s.connection,{cid:s._id}),o=[];let t;a.onreport=r=>{Object.entries(r.audio).forEach(([d,g])=>{g.direction==="inbound"&&!o.includes(d)&&(o.push(d),t=d)});const _=r.audio[t];if(!_)return;const h=nE(_,rE);h.callId=s._id,this.setCallMetrics(h)},this.context.subscribe(Xt.CALL_ENDED,r=>{r._id===s._id&&n.stopAllProbes()}),n.startAllProbes()}setupVUMeter(s,n){this.VUMeter.start(s,n)}stopVUMeter(s){this.VUMeter.stop(s)}async setupStream(){const s=await navigator.mediaDevices.getUserMedia(this.getUserMediaConstraints);this.initialStreamValue&&(this.initialStreamValue.getTracks().forEach(n=>n.stop()),this.initialStreamValue=null),this.initialStreamValue=s}async triggerAddStream(s,n){this.setIsMuted(this.muteWhenJoin||this.isMuted),this.initialStreamValue||await this.setupStream();const a=xf(this.initialStreamValue,this.microphoneInputLevel*2),o=this.isMuted||this.muteWhenJoin;a.getTracks().forEach(r=>r.enabled=!o),this.setActiveStream(a),await n.connection.getSenders()[0].replaceTrack(a.getTracks()[0]);const t=new MediaStream([s.track]);KT(t,n,this.selectedOutputDevice,this.speakerVolume),this.setupVUMeter(t,n._id),this.getCallQuality(n),this.updateCall(n)}initCall(s,n){if(s.length===0)return console.error("Target must be a valid string");this.context.logger.log(`Calling sip:${s}@${this.context.sipDomain}...`);const a=this.context.call(`sip:${s}@${this.context.sipDomain}`,this.sipOptions);this.callAddingInProgress=a.id,n&&this.currentActiveRoomId!==void 0&&this.processRoomChange({callId:a.id,roomId:this.currentActiveRoomId}),a.connection.addEventListener("track",o=>{this.triggerAddStream(o,a)})}async processRoomChange({callId:s,roomId:n}){const a=this.extendedCalls[s].roomId;this.extendedCalls[s].roomId=n;const o=this.extendedCalls[s];return this.updateCall(o),await this.setActiveRoom(n),Promise.all([this.roomReconfigure(a),this.roomReconfigure(n)]).then(()=>{this.deleteRoomIfEmpty(a),this.deleteRoomIfEmpty(n)})}}class oE{constructor(s){this.context=s}get sipOptions(){return{...this.context.options.sipOptions}}initCall(s,n){if(s.length===0)return console.error("Target must be a valid string");this.context.logger.log(`Calling sip:${s}@${this.context.sipDomain}...`),this.context.joinVideoCall(`sip:${s}@${this.context.sipDomain}`,n,this.sipOptions)}stop(s={}){this.context.terminateJanusSessions(s)}startAudio(){this.context.enableJanusAudio(!0)}stopAudio(){this.context.enableJanusAudio(!1)}startVideo(){this.context.enableJanusVideo(!0)}stopVideo(){this.context.enableJanusVideo(!1)}}class uE{constructor(s){this.activeMessages={},this.extendedMessages={},this.msrpHistory={},this.context=s,this.context.on(this.context.newMSRPSessionEventName,this.newMSRPSessionCallback.bind(this.context))}get isMSRPInitializing(){return this.isMSRPInitializingValue}get getActiveMessages(){return this.activeMessages}msrpAnswer(s){const n=this.extendedMessages[s];this.updateMSRPSession(n)}updateMSRPSession(s){this.activeMessages[s._id]=Uf(s),this.context.emit("changeActiveMessages",this.activeMessages)}addMMSRPSession(s){this.activeMessages={...this.activeMessages,[s._id]:Uf(s)},this.extendedMessages[s._id]=s,this.context.emit("changeActiveMessages",this.activeMessages)}addMSRPMessage(s,n){const a=this.msrpHistory[n.id]||[];a.push(s),this.msrpHistory={...this.msrpHistory,[n.id]:[...a]},this.context.emit("newMSRPMessage",{message:s,session:n})}messageTerminate(s){const n=this.extendedMessages[s];n._status!==8&&n.terminate()}addMessageSession(s){if(!s._id||this.getActiveMessages[s._id]!==void 0)return;const a=s;this.addMMSRPSession(a)}triggerMSRPListener({listenerType:s,session:n,event:a}){const o=this.context.listenersList[s];!o||!o.length||o.forEach(t=>{t(n,a)})}removeMMSRPSession(s){const n={...this.activeMessages};delete n[s],this.activeMessages={...n};const a={...this.extendedMessages};delete a[s],this.extendedMessages={...a},this.context.emit("changeActiveMessages",this.activeMessages)}activeMessageListRemove(s){this.removeMMSRPSession(s._id)}newMSRPSessionCallback(s){const n=s.session;n.on("ended",a=>{this.triggerMSRPListener({listenerType:Xt.CALL_ENDED,session:n,event:a});const o=this.getActiveMessages[n.id];this.activeMessageListRemove(o)}),n.on("failed",a=>{this.triggerMSRPListener({listenerType:Xt.CALL_FAILED,session:n,event:a});const o=this.getActiveMessages[n.id];this.activeMessageListRemove(o)}),n.on("confirmed",a=>{this.triggerMSRPListener({listenerType:Xt.CALL_CONFIRMED,session:n,event:a}),this.updateMSRPSession(n)}),n.on("newMessage",a=>{this.addMSRPMessage(a,n)}),this.addMessageSession(n)}setIsMSRPInitializing(s){this.isMSRPInitializingValue=s,this.context.emit("isMSRPInitializingChanged",s)}initMSRP(s,n,a){if(s.length===0)return console.error("Target must be a valid string");const o=this.context.startMSRP(s,a);o.on("active",()=>{this.addMessageSession(o),o.sendMSRP(n),this.setIsMSRPInitializing(!1)}),this.setIsMSRPInitializing(!0)}sendMSRP(s,n){const a=this.extendedMessages[s];if(!a)throw new Error(`MSRP session with id ${s} doesn't exist!`);a.sendMSRP(n)}}const ou={AUDIO:"audio",VIDEO:"video",MSRP:"msrp"};class cE extends FT{constructor(s,n){if(!s.modules.length)throw new Error("options.modules should include at least 1 module");const a={...s.configuration,sockets:s.socketInterfaces.map(o=>new ov.WebSocketInterface(o))};super(a),this.initialized=!1,this.connected=!1,this.logger=console,this.newRTCSessionEventName="newRTCSession",this.registeredEventName="registered",this.unregisteredEventName="unregistered",this.disconnectedEventName="disconnected",this.connectedEventName="connected",this.newMSRPSessionEventName="newMSRPSession",this.isReconnecting=!1,this.audio=null,this.msrp=null,this.video=null,this.listenersList={},this.modules=[],s.pnExtraHeaders&&Object.keys(s.pnExtraHeaders).length&&this.registrator().setExtraContactUriParams(s.pnExtraHeaders),this.options=s,this.modules=s.modules,n&&YT(n)&&(this.logger=n)}on(s,n){return super.on(s,n)}off(s,n){return super.off(s,n)}emit(s,n){return super.emit(s,n)}get sipDomain(){return this.options.sipDomain}begin(){if(this.isConnected()){console.error("Connection is already established");return}return this.modules.includes(ou.AUDIO)&&(this.audio=new aE(this)),this.modules.includes(ou.MSRP)&&(this.msrp=new uE(this)),this.modules.includes(ou.VIDEO)&&(this.video=new oE(this)),this.on(this.registeredEventName,()=>{this.logger.log("Successfully registered to",this.options.socketInterfaces[0]),this.setInitialized(!0)}),this.on(this.unregisteredEventName,()=>{this.logger.log("Unregistered from",this.options.socketInterfaces[0]),this.setInitialized(!1)}),this.on(this.connectedEventName,()=>{this.logger.log("Connected to",this.options.socketInterfaces[0]),this.setConnected(!0),this.isReconnecting=!1}),this.on(this.disconnectedEventName,()=>{this.isReconnecting||(this.logger.log("Disconnected from",this.options.socketInterfaces[0]),this.logger.log("Reconnecting to",this.options.socketInterfaces[0]),this.isReconnecting=!0,this.stop(),this.setInitialized(!1),this.setConnected(!1),setTimeout(this.start.bind(this),5e3))}),this.logger.log("Connecting to",this.options.socketInterfaces[0]),this.start(),this}subscribe(s,n){const o=!this.listenersList[s]||!this.listenersList[s].length?[n]:[...this.listenersList[s],n];this.listenersList={...this.listenersList,[s]:o}}removeIListener(s){const n={...this.listenersList};delete n[s],this.listenersList={...n}}triggerListener({listenerType:s,session:n,event:a}){const o=this.listenersList[s];!o||!o.length||o.forEach(t=>{t(n,a)})}setInitialized(s){this.initialized=s,this.emit("ready",s)}setConnected(s){this.connected=s,this.emit("connection",s)}}module.exports=cE;