@voicenter-team/opensips-js 1.0.83 → 1.0.84

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,155 +1,155 @@
1
- "use strict";var y_=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ot(c){return c&&c.__esModule&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c}const A_="jssip",C_="JsSIP",R_="the Javascript SIP library",I_="3.10.0",b_="https://jssip.net",w_=["José Luis Millán <jmillan@aliax.net> (https://github.com/jmillan)","Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)"],O_="lib/JsSIP.d.ts",D_="lib-es5/JsSIP.js",N_=["sip","websocket","webrtc","node","browser","library"],U_="MIT",P_={type:"git",url:"https://github.com/versatica/JsSIP.git"},x_={url:"https://github.com/versatica/JsSIP/issues"},M_={"@types/events":"^3.0.0","@types/debug":"^4.1.7",debug:"^4.3.1",events:"^3.3.0","sdp-transform":"^2.14.1"},k_={"@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"},L_={lint:"node npm-scripts.js lint",test:"node npm-scripts.js test",prepublish:"node npm-scripts.js prepublish",release:"node npm-scripts.js release"},bo={name:A_,title:C_,description:R_,version:I_,homepage:b_,contributors:w_,types:O_,main:D_,keywords:N_,license:U_,repository:P_,bugs:x_,dependencies:M_,devDependencies:k_,scripts:L_};var Nu=bo,rt={USER_AGENT:"".concat(Nu.title," ").concat(Nu.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 so(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?so=function(r){return typeof r}:so=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},so(c)}function wo(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function Oo(c,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(n&&n.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),n&&Gi(c,n)}function Do(c){var n=wf();return function(){var o=Wi(c),a;if(n){var t=Wi(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return $_(this,a)}}function $_(c,n){return n&&(so(n)==="object"||typeof n=="function")?n:H_(c)}function H_(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function ar(c){var n=typeof Map=="function"?new Map:void 0;return ar=function(o){if(o===null||!F_(o))return o;if(typeof o!="function")throw new TypeError("Super expression must either be null or a function");if(typeof n<"u"){if(n.has(o))return n.get(o);n.set(o,a)}function a(){return no(o,arguments,Wi(this).constructor)}return a.prototype=Object.create(o.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),Gi(a,o)},ar(c)}function no(c,n,r){return wf()?no=Reflect.construct:no=function(a,t,s){var p=[null];p.push.apply(p,t);var _=Function.bind.apply(a,p),d=new _;return s&&Gi(d,s.prototype),d},no.apply(null,arguments)}function wf(){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 F_(c){return Function.toString.call(c).indexOf("[native code]")!==-1}function Gi(c,n){return Gi=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},Gi(c,n)}function Wi(c){return Wi=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Wi(c)}var V_=function(c){Oo(r,c);var n=Do(r);function r(o,a){var t;return wo(this,r),t=n.call(this),t.code=1,t.name="CONFIGURATION_ERROR",t.parameter=o,t.value=a,t.message=t.value?"Invalid value ".concat(JSON.stringify(t.value),' for parameter "').concat(t.parameter,'"'):"Missing parameter: ".concat(t.parameter),t}return r}(ar(Error)),j_=function(c){Oo(r,c);var n=Do(r);function r(o){var a;return wo(this,r),a=n.call(this),a.code=2,a.name="INVALID_STATE_ERROR",a.status=o,a.message="Invalid status: ".concat(o),a}return r}(ar(Error)),q_=function(c){Oo(r,c);var n=Do(r);function r(o){var a;return wo(this,r),a=n.call(this),a.code=3,a.name="NOT_SUPPORTED_ERROR",a.message=o,a}return r}(ar(Error)),B_=function(c){Oo(r,c);var n=Do(r);function r(o){var a;return wo(this,r),a=n.call(this),a.code=4,a.name="NOT_READY_ERROR",a.message=o,a}return r}(ar(Error)),Hs={ConfigurationError:V_,InvalidStateError:j_,NotSupportedError:q_,NotReadyError:B_},Qe={},Xo,Uu;function du(){if(Uu)return Xo;Uu=1;function c(t,s){if(!(t instanceof s))throw new TypeError("Cannot call a class as a function")}function n(t,s){for(var p=0;p<s.length;p++){var _=s[p];_.enumerable=_.enumerable||!1,_.configurable=!0,"value"in _&&(_.writable=!0),Object.defineProperty(t,_.key,_)}}function r(t,s,p){return s&&n(t.prototype,s),p&&n(t,p),t}var o=Fs(),a=ns();return Xo=function(){r(t,null,[{key:"parse",value:function(p){if(p=a.parse(p,"Name_Addr_Header"),p!==-1)return p}}]);function t(s,p,_){if(c(this,t),!s||!(s instanceof o))throw new TypeError('missing or invalid "uri" parameter');this._uri=s,this._parameters={},this.display_name=p;for(var d in _)Object.prototype.hasOwnProperty.call(_,d)&&this.setParam(d,_[d])}return r(t,[{key:"setParam",value:function(p,_){p&&(this._parameters[p.toLowerCase()]=typeof _>"u"||_===null?null:_.toString())}},{key:"getParam",value:function(p){if(p)return this._parameters[p.toLowerCase()]}},{key:"hasParam",value:function(p){if(p)return this._parameters.hasOwnProperty(p.toLowerCase())&&!0||!1}},{key:"deleteParam",value:function(p){if(p=p.toLowerCase(),this._parameters.hasOwnProperty(p)){var _=this._parameters[p];return delete this._parameters[p],_}}},{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(p){return p.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}},{key:"toString",value:function(){var p=this._display_name?'"'.concat(this._quote(this._display_name),'" '):"";p+="<".concat(this._uri.toString(),">");for(var _ in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,_)&&(p+=";".concat(_),this._parameters[_]!==null&&(p+="=".concat(this._parameters[_])));return p}},{key:"uri",get:function(){return this._uri}},{key:"display_name",get:function(){return this._display_name},set:function(p){this._display_name=p===0?"0":p}}]),t}(),Xo}var Qo,Pu;function ns(){return Pu||(Pu=1,Qo=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 n={parse:function(o,a){var t={CRLF:g,DIGIT:T,ALPHA:E,HEXDIG:y,WSP:A,OCTET:R,DQUOTE:I,SP:$,HTAB:L,alphanum:ae,reserved:N,unreserved:F,mark:Se,escaped:ve,LWS:M,SWS:D,HCOLON:q,TEXT_UTF8_TRIM:j,TEXT_UTF8char:z,UTF8_NONASCII:H,UTF8_CONT:J,LHEX:U,token:P,token_nodot:se,separators:et,word:ee,STAR:W,SLASH:B,EQUAL:re,LPAREN:ge,RPAREN:be,RAQUOT:xe,LAQUOT:Ce,COMMA:le,SEMI:ye,COLON:tt,LDQUOT:it,RDQUOT:Ee,comment:Ae,ctext:Ie,quoted_string:Oe,quoted_string_clean:pe,qdtext:ue,quoted_pair:de,SIP_URI_noparams:we,SIP_URI:De,uri_scheme:Xe,uri_scheme_sips:Le,uri_scheme_sip:Mt,userinfo:_t,user:Sn,user_unreserved:yn,password:Vs,hostport:Yt,host:is,hostname:js,domainlabel:An,toplabel:Cn,IPv6reference:qs,IPv6address:me,h16:oe,ls32:lt,IPv4address:Bt,dec_octet:vs,port:_r,uri_parameters:Rn,uri_parameter:In,transport_param:hr,user_param:dr,method_param:pr,ttl_param:mr,maddr_param:gr,lr_param:Tr,other_param:vr,pname:Er,pvalue:Es,paramchar:Ss,param_unreserved:Sr,headers:Bs,header:Gs,hname:yr,hvalue:ys,hnv_unreserved:Ws,Request_Response:ol,Request_Line:Ar,Request_URI:bn,absoluteURI:wn,hier_part:Cr,net_path:Ks,abs_path:Ys,opaque_part:As,uric:Cs,uric_no_slash:Rr,path_segments:zs,segment:Rs,param:ls,pchar:Is,scheme:Ir,authority:br,srvr:wr,reg_name:Or,query:On,SIP_Version:Dn,INVITEm:Dr,ACKm:Nr,OPTIONSm:Ur,BYEm:Pr,CANCELm:xr,REGISTERm:Mr,SUBSCRIBEm:kr,NOTIFYm:Lr,REFERm:Js,Method:Xs,Status_Line:$r,Status_Code:Hr,extension_code:Fr,Reason_Phrase:al,Allow_Events:Mo,Call_ID:ko,Contact:Nn,contact_param:kt,name_addr:Lt,display_name:bs,contact_params:Un,c_p_q:Vr,c_p_expires:zt,delta_seconds:Jt,qvalue:Ge,generic_param:We,gen_value:ul,Content_Disposition:cl,disp_type:Pn,disp_param:xn,handling_param:fl,Content_Encoding:Lo,Content_Length:$o,Content_Type:_l,media_type:jr,m_type:qr,discrete_type:Br,composite_type:Qs,extension_token:Zs,x_token:Gr,m_subtype:Mn,m_parameter:kn,m_value:hl,CSeq:dl,CSeq_value:pl,Expires:Ho,Event:en,event_type:tn,From:Wr,from_param:sn,tag_param:Kr,Max_Forwards:Fo,Min_Expires:Vo,Name_Addr_Header:jo,Proxy_Authenticate:Yr,challenge:Ln,other_challenge:ws,auth_param:Xt,digest_cln:nn,realm:zr,realm_value:Jr,domain:rn,URI:ln,nonce:Xr,nonce_value:Qr,opaque:Zr,stale:ei,algorithm:ti,qop_options:on,qop_value:$n,Proxy_Require:qo,Record_Route:Hn,rec_route:Fn,Reason:si,reason_param:Vn,reason_cause:ml,Require:Bo,Route:jn,route_param:qn,Subscription_State:gl,substate_value:Bn,subexp_params:Gn,event_reason_value:Tl,Subject:Go,Supported:Wo,To:ni,to_param:ri,Via:Wn,via_param:Os,via_params:Kn,via_ttl:ii,via_maddr:li,via_received:oi,via_branch:ai,response_port:ui,rport:ci,sent_protocol:fi,protocol_name:_i,transport:hi,sent_by:di,via_host:pi,via_port:Yn,ttl:mi,WWW_Authenticate:Ko,Session_Expires:vl,s_e_expires:zn,s_e_params:Jn,s_e_refresher:El,extension_header:Sl,header_value:yl,message_body:Yo,uuid_URI:Al,uuid:$t,hex4:Ht,hex8:gi,hex12:Cl,Refer_To:zo,Replaces:Rl,call_id:Xn,replaces_param:Qn,to_tag:Ti,from_tag:vi,early_flag:Il};if(a!==void 0){if(t[a]===void 0)throw new Error("Invalid rule name: "+c(a)+".")}else a="CRLF";var s=0,p=0,_=[];function d(e){s<p||(s>p&&(p=s,_=[]),_.push(e))}function g(){var e;return o.substr(s,2)===`\r
1
+ "use strict";var b_=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ot(c){return c&&c.__esModule&&Object.prototype.hasOwnProperty.call(c,"default")?c.default:c}const w_="jssip",O_="JsSIP",D_="the Javascript SIP library",N_="3.10.0",U_="https://jssip.net",P_=["José Luis Millán <jmillan@aliax.net> (https://github.com/jmillan)","Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)"],x_="lib/JsSIP.d.ts",M_="lib-es5/JsSIP.js",k_=["sip","websocket","webrtc","node","browser","library"],L_="MIT",$_={type:"git",url:"https://github.com/versatica/JsSIP.git"},H_={url:"https://github.com/versatica/JsSIP/issues"},F_={"@types/events":"^3.0.0","@types/debug":"^4.1.7",debug:"^4.3.1",events:"^3.3.0","sdp-transform":"^2.14.1"},V_={"@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"},j_={lint:"node npm-scripts.js lint",test:"node npm-scripts.js test",prepublish:"node npm-scripts.js prepublish",release:"node npm-scripts.js release"},Oo={name:w_,title:O_,description:D_,version:N_,homepage:U_,contributors:P_,types:x_,main:M_,keywords:k_,license:L_,repository:$_,bugs:H_,dependencies:F_,devDependencies:V_,scripts:j_};var xu=Oo,rt={USER_AGENT:"".concat(xu.title," ").concat(xu.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 ro(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ro=function(r){return typeof r}:ro=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ro(c)}function Do(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function No(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&&Wi(c,s)}function Uo(c){var s=Pf();return function(){var o=Ki(c),a;if(s){var t=Ki(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return q_(this,a)}}function q_(c,s){return s&&(ro(s)==="object"||typeof s=="function")?s:B_(c)}function B_(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function ur(c){var s=typeof Map=="function"?new Map:void 0;return ur=function(o){if(o===null||!G_(o))return o;if(typeof o!="function")throw new TypeError("Super expression must either be null or a function");if(typeof s<"u"){if(s.has(o))return s.get(o);s.set(o,a)}function a(){return io(o,arguments,Ki(this).constructor)}return a.prototype=Object.create(o.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),Wi(a,o)},ur(c)}function io(c,s,r){return Pf()?io=Reflect.construct:io=function(a,t,n){var p=[null];p.push.apply(p,t);var _=Function.bind.apply(a,p),d=new _;return n&&Wi(d,n.prototype),d},io.apply(null,arguments)}function Pf(){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 G_(c){return Function.toString.call(c).indexOf("[native code]")!==-1}function Wi(c,s){return Wi=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},Wi(c,s)}function Ki(c){return Ki=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Ki(c)}var W_=function(c){No(r,c);var s=Uo(r);function r(o,a){var t;return Do(this,r),t=s.call(this),t.code=1,t.name="CONFIGURATION_ERROR",t.parameter=o,t.value=a,t.message=t.value?"Invalid value ".concat(JSON.stringify(t.value),' for parameter "').concat(t.parameter,'"'):"Missing parameter: ".concat(t.parameter),t}return r}(ur(Error)),K_=function(c){No(r,c);var s=Uo(r);function r(o){var a;return Do(this,r),a=s.call(this),a.code=2,a.name="INVALID_STATE_ERROR",a.status=o,a.message="Invalid status: ".concat(o),a}return r}(ur(Error)),Y_=function(c){No(r,c);var s=Uo(r);function r(o){var a;return Do(this,r),a=s.call(this),a.code=3,a.name="NOT_SUPPORTED_ERROR",a.message=o,a}return r}(ur(Error)),z_=function(c){No(r,c);var s=Uo(r);function r(o){var a;return Do(this,r),a=s.call(this),a.code=4,a.name="NOT_READY_ERROR",a.message=o,a}return r}(ur(Error)),Fs={ConfigurationError:W_,InvalidStateError:K_,NotSupportedError:Y_,NotReadyError:z_},Qe={},Zo,Mu;function gu(){if(Mu)return Zo;Mu=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 p=0;p<n.length;p++){var _=n[p];_.enumerable=_.enumerable||!1,_.configurable=!0,"value"in _&&(_.writable=!0),Object.defineProperty(t,_.key,_)}}function r(t,n,p){return n&&s(t.prototype,n),p&&s(t,p),t}var o=Vs(),a=rs();return Zo=function(){r(t,null,[{key:"parse",value:function(p){if(p=a.parse(p,"Name_Addr_Header"),p!==-1)return p}}]);function t(n,p,_){if(c(this,t),!n||!(n instanceof o))throw new TypeError('missing or invalid "uri" parameter');this._uri=n,this._parameters={},this.display_name=p;for(var d in _)Object.prototype.hasOwnProperty.call(_,d)&&this.setParam(d,_[d])}return r(t,[{key:"setParam",value:function(p,_){p&&(this._parameters[p.toLowerCase()]=typeof _>"u"||_===null?null:_.toString())}},{key:"getParam",value:function(p){if(p)return this._parameters[p.toLowerCase()]}},{key:"hasParam",value:function(p){if(p)return this._parameters.hasOwnProperty(p.toLowerCase())&&!0||!1}},{key:"deleteParam",value:function(p){if(p=p.toLowerCase(),this._parameters.hasOwnProperty(p)){var _=this._parameters[p];return delete this._parameters[p],_}}},{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(p){return p.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}},{key:"toString",value:function(){var p=this._display_name?'"'.concat(this._quote(this._display_name),'" '):"";p+="<".concat(this._uri.toString(),">");for(var _ in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,_)&&(p+=";".concat(_),this._parameters[_]!==null&&(p+="=".concat(this._parameters[_])));return p}},{key:"uri",get:function(){return this._uri}},{key:"display_name",get:function(){return this._display_name},set:function(p){this._display_name=p===0?"0":p}}]),t}(),Zo}var ea,ku;function rs(){return ku||(ku=1,ea=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(o,a){var t={CRLF:g,DIGIT:T,ALPHA:E,HEXDIG:y,WSP:A,OCTET:R,DQUOTE:I,SP:$,HTAB:L,alphanum:ae,reserved:N,unreserved:F,mark:Se,escaped:ve,LWS:M,SWS:D,HCOLON:B,TEXT_UTF8_TRIM:j,TEXT_UTF8char:z,UTF8_NONASCII:H,UTF8_CONT:X,LHEX:U,token:P,token_nodot:se,separators:et,word:ee,STAR:W,SLASH:G,EQUAL:re,LPAREN:ge,RPAREN:be,RAQUOT:xe,LAQUOT:Ce,COMMA:le,SEMI:ye,COLON:tt,LDQUOT:it,RDQUOT:Ee,comment:Ae,ctext:Ie,quoted_string:Oe,quoted_string_clean:pe,qdtext:ue,quoted_pair:de,SIP_URI_noparams:we,SIP_URI:De,uri_scheme:Xe,uri_scheme_sips:Le,uri_scheme_sip:kt,userinfo:_t,user:yn,user_unreserved:An,password:js,hostport:zt,host:ls,hostname:qs,domainlabel:Cn,toplabel:Rn,IPv6reference:Bs,IPv6address:me,h16:oe,ls32:lt,IPv4address:Gt,dec_octet:Es,port:hr,uri_parameters:In,uri_parameter:bn,transport_param:dr,user_param:pr,method_param:mr,ttl_param:gr,maddr_param:Tr,lr_param:vr,other_param:Er,pname:Sr,pvalue:Ss,paramchar:ys,param_unreserved:yr,headers:Gs,header:Ws,hname:Ar,hvalue:As,hnv_unreserved:Ks,Request_Response:al,Request_Line:Cr,Request_URI:wn,absoluteURI:On,hier_part:Rr,net_path:Ys,abs_path:zs,opaque_part:Cs,uric:Rs,uric_no_slash:Ir,path_segments:Js,segment:Is,param:os,pchar:bs,scheme:br,authority:wr,srvr:Or,reg_name:Dr,query:Dn,SIP_Version:Nn,INVITEm:Nr,ACKm:Ur,OPTIONSm:Pr,BYEm:xr,CANCELm:Mr,REGISTERm:kr,SUBSCRIBEm:Lr,NOTIFYm:$r,REFERm:Xs,Method:Qs,Status_Line:Hr,Status_Code:Fr,extension_code:Vr,Reason_Phrase:ul,Allow_Events:Lo,Call_ID:$o,Contact:Un,contact_param:Lt,name_addr:$t,display_name:ws,contact_params:Pn,c_p_q:jr,c_p_expires:Jt,delta_seconds:Xt,qvalue:Ge,generic_param:We,gen_value:cl,Content_Disposition:fl,disp_type:xn,disp_param:Mn,handling_param:_l,Content_Encoding:Ho,Content_Length:Fo,Content_Type:hl,media_type:qr,m_type:Br,discrete_type:Gr,composite_type:Zs,extension_token:en,x_token:Wr,m_subtype:kn,m_parameter:Ln,m_value:dl,CSeq:pl,CSeq_value:ml,Expires:Vo,Event:tn,event_type:sn,From:Kr,from_param:nn,tag_param:Yr,Max_Forwards:jo,Min_Expires:qo,Name_Addr_Header:Bo,Proxy_Authenticate:zr,challenge:$n,other_challenge:Os,auth_param:Qt,digest_cln:rn,realm:Jr,realm_value:Xr,domain:ln,URI:on,nonce:Qr,nonce_value:Zr,opaque:ei,stale:ti,algorithm:si,qop_options:an,qop_value:Hn,Proxy_Require:Go,Record_Route:Fn,rec_route:Vn,Reason:ni,reason_param:jn,reason_cause:gl,Require:Wo,Route:qn,route_param:Bn,Subscription_State:Tl,substate_value:Gn,subexp_params:Wn,event_reason_value:vl,Subject:Ko,Supported:Yo,To:ri,to_param:ii,Via:Kn,via_param:Ds,via_params:Yn,via_ttl:li,via_maddr:oi,via_received:ai,via_branch:ui,response_port:ci,rport:fi,sent_protocol:_i,protocol_name:hi,transport:di,sent_by:pi,via_host:mi,via_port:zn,ttl:gi,WWW_Authenticate:zo,Session_Expires:El,s_e_expires:Jn,s_e_params:Xn,s_e_refresher:Sl,extension_header:yl,header_value:Al,message_body:Jo,uuid_URI:Cl,uuid:Ht,hex4:Ft,hex8:Ti,hex12:Rl,Refer_To:Xo,Replaces:Il,call_id:Qn,replaces_param:Zn,to_tag:vi,from_tag:Ei,early_flag:bl};if(a!==void 0){if(t[a]===void 0)throw new Error("Invalid rule name: "+c(a)+".")}else a="CRLF";var n=0,p=0,_=[];function d(e){n<p||(n>p&&(p=n,_=[]),_.push(e))}function g(){var e;return o.substr(n,2)===`\r
2
2
  `?(e=`\r
3
- `,s+=2):(e=null,d('"\\r\\n"')),e}function T(){var e;return/^[0-9]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[0-9]")),e}function E(){var e;return/^[a-zA-Z]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[a-zA-Z]")),e}function y(){var e;return/^[0-9a-fA-F]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[0-9a-fA-F]")),e}function A(){var e;return e=$(),e===null&&(e=L()),e}function R(){var e;return/^[\0-\xFF]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[\\0-\\xFF]")),e}function I(){var e;return/^["]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d('["]')),e}function $(){var e;return o.charCodeAt(s)===32?(e=" ",s++):(e=null,d('" "')),e}function L(){var e;return o.charCodeAt(s)===9?(e=" ",s++):(e=null,d('"\\t"')),e}function ae(){var e;return/^[a-zA-Z0-9]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[a-zA-Z0-9]")),e}function N(){var e;return o.charCodeAt(s)===59?(e=";",s++):(e=null,d('";"')),e===null&&(o.charCodeAt(s)===47?(e="/",s++):(e=null,d('"/"')),e===null&&(o.charCodeAt(s)===63?(e="?",s++):(e=null,d('"?"')),e===null&&(o.charCodeAt(s)===58?(e=":",s++):(e=null,d('":"')),e===null&&(o.charCodeAt(s)===64?(e="@",s++):(e=null,d('"@"')),e===null&&(o.charCodeAt(s)===38?(e="&",s++):(e=null,d('"&"')),e===null&&(o.charCodeAt(s)===61?(e="=",s++):(e=null,d('"="')),e===null&&(o.charCodeAt(s)===43?(e="+",s++):(e=null,d('"+"')),e===null&&(o.charCodeAt(s)===36?(e="$",s++):(e=null,d('"$"')),e===null&&(o.charCodeAt(s)===44?(e=",",s++):(e=null,d('","'))))))))))),e}function F(){var e;return e=ae(),e===null&&(e=Se()),e}function Se(){var e;return o.charCodeAt(s)===45?(e="-",s++):(e=null,d('"-"')),e===null&&(o.charCodeAt(s)===95?(e="_",s++):(e=null,d('"_"')),e===null&&(o.charCodeAt(s)===46?(e=".",s++):(e=null,d('"."')),e===null&&(o.charCodeAt(s)===33?(e="!",s++):(e=null,d('"!"')),e===null&&(o.charCodeAt(s)===126?(e="~",s++):(e=null,d('"~"')),e===null&&(o.charCodeAt(s)===42?(e="*",s++):(e=null,d('"*"')),e===null&&(o.charCodeAt(s)===39?(e="'",s++):(e=null,d(`"'"`)),e===null&&(o.charCodeAt(s)===40?(e="(",s++):(e=null,d('"("')),e===null&&(o.charCodeAt(s)===41?(e=")",s++):(e=null,d('")"')))))))))),e}function ve(){var e,l,u,f,h;return f=s,h=s,o.charCodeAt(s)===37?(e="%",s++):(e=null,d('"%"')),e!==null?(l=y(),l!==null?(u=y(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){return v.join("")}(f,e)),e===null&&(s=f),e}function M(){var e,l,u,f,h,m;for(f=s,h=s,m=s,e=[],l=A();l!==null;)e.push(l),l=A();if(e!==null?(l=g(),l!==null?e=[e,l]:(e=null,s=m)):(e=null,s=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,s=h)}else e=null,s=h;return e!==null&&(e=function(v){return" "}()),e===null&&(s=f),e}function D(){var e;return e=M(),e=e!==null?e:"",e}function q(){var e,l,u,f,h;for(f=s,h=s,e=[],l=$(),l===null&&(l=L());l!==null;)e.push(l),l=$(),l===null&&(l=L());return e!==null?(o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m){return":"}()),e===null&&(s=f),e}function j(){var e,l,u,f,h,m,v;if(h=s,m=s,l=z(),l!==null)for(e=[];l!==null;)e.push(l),l=z();else e=null;if(e!==null){for(l=[],v=s,u=[],f=M();f!==null;)u.push(f),f=M();for(u!==null?(f=z(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);u!==null;){for(l.push(u),v=s,u=[],f=M();f!==null;)u.push(f),f=M();u!==null?(f=z(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v)}l!==null?e=[e,l]:(e=null,s=m)}else e=null,s=m;return e!==null&&(e=function(S){return o.substring(s,S)}(h)),e===null&&(s=h),e}function z(){var e;return/^[!-~]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[!-~]")),e===null&&(e=H()),e}function H(){var e;return/^[\x80-\uFFFF]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[\\x80-\\uFFFF]")),e}function J(){var e;return/^[\x80-\xBF]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[\\x80-\\xBF]")),e}function U(){var e;return e=T(),e===null&&(/^[a-f]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[a-f]"))),e}function P(){var e,l,u;if(u=s,l=ae(),l===null&&(o.charCodeAt(s)===45?(l="-",s++):(l=null,d('"-"')),l===null&&(o.charCodeAt(s)===46?(l=".",s++):(l=null,d('"."')),l===null&&(o.charCodeAt(s)===33?(l="!",s++):(l=null,d('"!"')),l===null&&(o.charCodeAt(s)===37?(l="%",s++):(l=null,d('"%"')),l===null&&(o.charCodeAt(s)===42?(l="*",s++):(l=null,d('"*"')),l===null&&(o.charCodeAt(s)===95?(l="_",s++):(l=null,d('"_"')),l===null&&(o.charCodeAt(s)===43?(l="+",s++):(l=null,d('"+"')),l===null&&(o.charCodeAt(s)===96?(l="`",s++):(l=null,d('"`"')),l===null&&(o.charCodeAt(s)===39?(l="'",s++):(l=null,d(`"'"`)),l===null&&(o.charCodeAt(s)===126?(l="~",s++):(l=null,d('"~"')))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=ae(),l===null&&(o.charCodeAt(s)===45?(l="-",s++):(l=null,d('"-"')),l===null&&(o.charCodeAt(s)===46?(l=".",s++):(l=null,d('"."')),l===null&&(o.charCodeAt(s)===33?(l="!",s++):(l=null,d('"!"')),l===null&&(o.charCodeAt(s)===37?(l="%",s++):(l=null,d('"%"')),l===null&&(o.charCodeAt(s)===42?(l="*",s++):(l=null,d('"*"')),l===null&&(o.charCodeAt(s)===95?(l="_",s++):(l=null,d('"_"')),l===null&&(o.charCodeAt(s)===43?(l="+",s++):(l=null,d('"+"')),l===null&&(o.charCodeAt(s)===96?(l="`",s++):(l=null,d('"`"')),l===null&&(o.charCodeAt(s)===39?(l="'",s++):(l=null,d(`"'"`)),l===null&&(o.charCodeAt(s)===126?(l="~",s++):(l=null,d('"~"'))))))))))));else e=null;return e!==null&&(e=function(f){return o.substring(s,f)}(u)),e===null&&(s=u),e}function se(){var e,l,u;if(u=s,l=ae(),l===null&&(o.charCodeAt(s)===45?(l="-",s++):(l=null,d('"-"')),l===null&&(o.charCodeAt(s)===33?(l="!",s++):(l=null,d('"!"')),l===null&&(o.charCodeAt(s)===37?(l="%",s++):(l=null,d('"%"')),l===null&&(o.charCodeAt(s)===42?(l="*",s++):(l=null,d('"*"')),l===null&&(o.charCodeAt(s)===95?(l="_",s++):(l=null,d('"_"')),l===null&&(o.charCodeAt(s)===43?(l="+",s++):(l=null,d('"+"')),l===null&&(o.charCodeAt(s)===96?(l="`",s++):(l=null,d('"`"')),l===null&&(o.charCodeAt(s)===39?(l="'",s++):(l=null,d(`"'"`)),l===null&&(o.charCodeAt(s)===126?(l="~",s++):(l=null,d('"~"'))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=ae(),l===null&&(o.charCodeAt(s)===45?(l="-",s++):(l=null,d('"-"')),l===null&&(o.charCodeAt(s)===33?(l="!",s++):(l=null,d('"!"')),l===null&&(o.charCodeAt(s)===37?(l="%",s++):(l=null,d('"%"')),l===null&&(o.charCodeAt(s)===42?(l="*",s++):(l=null,d('"*"')),l===null&&(o.charCodeAt(s)===95?(l="_",s++):(l=null,d('"_"')),l===null&&(o.charCodeAt(s)===43?(l="+",s++):(l=null,d('"+"')),l===null&&(o.charCodeAt(s)===96?(l="`",s++):(l=null,d('"`"')),l===null&&(o.charCodeAt(s)===39?(l="'",s++):(l=null,d(`"'"`)),l===null&&(o.charCodeAt(s)===126?(l="~",s++):(l=null,d('"~"')))))))))));else e=null;return e!==null&&(e=function(f){return o.substring(s,f)}(u)),e===null&&(s=u),e}function et(){var e;return o.charCodeAt(s)===40?(e="(",s++):(e=null,d('"("')),e===null&&(o.charCodeAt(s)===41?(e=")",s++):(e=null,d('")"')),e===null&&(o.charCodeAt(s)===60?(e="<",s++):(e=null,d('"<"')),e===null&&(o.charCodeAt(s)===62?(e=">",s++):(e=null,d('">"')),e===null&&(o.charCodeAt(s)===64?(e="@",s++):(e=null,d('"@"')),e===null&&(o.charCodeAt(s)===44?(e=",",s++):(e=null,d('","')),e===null&&(o.charCodeAt(s)===59?(e=";",s++):(e=null,d('";"')),e===null&&(o.charCodeAt(s)===58?(e=":",s++):(e=null,d('":"')),e===null&&(o.charCodeAt(s)===92?(e="\\",s++):(e=null,d('"\\\\"')),e===null&&(e=I(),e===null&&(o.charCodeAt(s)===47?(e="/",s++):(e=null,d('"/"')),e===null&&(o.charCodeAt(s)===91?(e="[",s++):(e=null,d('"["')),e===null&&(o.charCodeAt(s)===93?(e="]",s++):(e=null,d('"]"')),e===null&&(o.charCodeAt(s)===63?(e="?",s++):(e=null,d('"?"')),e===null&&(o.charCodeAt(s)===61?(e="=",s++):(e=null,d('"="')),e===null&&(o.charCodeAt(s)===123?(e="{",s++):(e=null,d('"{"')),e===null&&(o.charCodeAt(s)===125?(e="}",s++):(e=null,d('"}"')),e===null&&(e=$(),e===null&&(e=L())))))))))))))))))),e}function ee(){var e,l,u;if(u=s,l=ae(),l===null&&(o.charCodeAt(s)===45?(l="-",s++):(l=null,d('"-"')),l===null&&(o.charCodeAt(s)===46?(l=".",s++):(l=null,d('"."')),l===null&&(o.charCodeAt(s)===33?(l="!",s++):(l=null,d('"!"')),l===null&&(o.charCodeAt(s)===37?(l="%",s++):(l=null,d('"%"')),l===null&&(o.charCodeAt(s)===42?(l="*",s++):(l=null,d('"*"')),l===null&&(o.charCodeAt(s)===95?(l="_",s++):(l=null,d('"_"')),l===null&&(o.charCodeAt(s)===43?(l="+",s++):(l=null,d('"+"')),l===null&&(o.charCodeAt(s)===96?(l="`",s++):(l=null,d('"`"')),l===null&&(o.charCodeAt(s)===39?(l="'",s++):(l=null,d(`"'"`)),l===null&&(o.charCodeAt(s)===126?(l="~",s++):(l=null,d('"~"')),l===null&&(o.charCodeAt(s)===40?(l="(",s++):(l=null,d('"("')),l===null&&(o.charCodeAt(s)===41?(l=")",s++):(l=null,d('")"')),l===null&&(o.charCodeAt(s)===60?(l="<",s++):(l=null,d('"<"')),l===null&&(o.charCodeAt(s)===62?(l=">",s++):(l=null,d('">"')),l===null&&(o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l===null&&(o.charCodeAt(s)===92?(l="\\",s++):(l=null,d('"\\\\"')),l===null&&(l=I(),l===null&&(o.charCodeAt(s)===47?(l="/",s++):(l=null,d('"/"')),l===null&&(o.charCodeAt(s)===91?(l="[",s++):(l=null,d('"["')),l===null&&(o.charCodeAt(s)===93?(l="]",s++):(l=null,d('"]"')),l===null&&(o.charCodeAt(s)===63?(l="?",s++):(l=null,d('"?"')),l===null&&(o.charCodeAt(s)===123?(l="{",s++):(l=null,d('"{"')),l===null&&(o.charCodeAt(s)===125?(l="}",s++):(l=null,d('"}"'))))))))))))))))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=ae(),l===null&&(o.charCodeAt(s)===45?(l="-",s++):(l=null,d('"-"')),l===null&&(o.charCodeAt(s)===46?(l=".",s++):(l=null,d('"."')),l===null&&(o.charCodeAt(s)===33?(l="!",s++):(l=null,d('"!"')),l===null&&(o.charCodeAt(s)===37?(l="%",s++):(l=null,d('"%"')),l===null&&(o.charCodeAt(s)===42?(l="*",s++):(l=null,d('"*"')),l===null&&(o.charCodeAt(s)===95?(l="_",s++):(l=null,d('"_"')),l===null&&(o.charCodeAt(s)===43?(l="+",s++):(l=null,d('"+"')),l===null&&(o.charCodeAt(s)===96?(l="`",s++):(l=null,d('"`"')),l===null&&(o.charCodeAt(s)===39?(l="'",s++):(l=null,d(`"'"`)),l===null&&(o.charCodeAt(s)===126?(l="~",s++):(l=null,d('"~"')),l===null&&(o.charCodeAt(s)===40?(l="(",s++):(l=null,d('"("')),l===null&&(o.charCodeAt(s)===41?(l=")",s++):(l=null,d('")"')),l===null&&(o.charCodeAt(s)===60?(l="<",s++):(l=null,d('"<"')),l===null&&(o.charCodeAt(s)===62?(l=">",s++):(l=null,d('">"')),l===null&&(o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l===null&&(o.charCodeAt(s)===92?(l="\\",s++):(l=null,d('"\\\\"')),l===null&&(l=I(),l===null&&(o.charCodeAt(s)===47?(l="/",s++):(l=null,d('"/"')),l===null&&(o.charCodeAt(s)===91?(l="[",s++):(l=null,d('"["')),l===null&&(o.charCodeAt(s)===93?(l="]",s++):(l=null,d('"]"')),l===null&&(o.charCodeAt(s)===63?(l="?",s++):(l=null,d('"?"')),l===null&&(o.charCodeAt(s)===123?(l="{",s++):(l=null,d('"{"')),l===null&&(o.charCodeAt(s)===125?(l="}",s++):(l=null,d('"}"')))))))))))))))))))))))));else e=null;return e!==null&&(e=function(f){return o.substring(s,f)}(u)),e===null&&(s=u),e}function W(){var e,l,u,f,h;return f=s,h=s,e=D(),e!==null?(o.charCodeAt(s)===42?(l="*",s++):(l=null,d('"*"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m){return"*"}()),e===null&&(s=f),e}function B(){var e,l,u,f,h;return f=s,h=s,e=D(),e!==null?(o.charCodeAt(s)===47?(l="/",s++):(l=null,d('"/"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m){return"/"}()),e===null&&(s=f),e}function re(){var e,l,u,f,h;return f=s,h=s,e=D(),e!==null?(o.charCodeAt(s)===61?(l="=",s++):(l=null,d('"="')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m){return"="}()),e===null&&(s=f),e}function ge(){var e,l,u,f,h;return f=s,h=s,e=D(),e!==null?(o.charCodeAt(s)===40?(l="(",s++):(l=null,d('"("')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m){return"("}()),e===null&&(s=f),e}function be(){var e,l,u,f,h;return f=s,h=s,e=D(),e!==null?(o.charCodeAt(s)===41?(l=")",s++):(l=null,d('")"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m){return")"}()),e===null&&(s=f),e}function xe(){var e,l,u,f;return u=s,f=s,o.charCodeAt(s)===62?(e=">",s++):(e=null,d('">"')),e!==null?(l=D(),l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e!==null&&(e=function(h){return">"}()),e===null&&(s=u),e}function Ce(){var e,l,u,f;return u=s,f=s,e=D(),e!==null?(o.charCodeAt(s)===60?(l="<",s++):(l=null,d('"<"')),l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e!==null&&(e=function(h){return"<"}()),e===null&&(s=u),e}function le(){var e,l,u,f,h;return f=s,h=s,e=D(),e!==null?(o.charCodeAt(s)===44?(l=",",s++):(l=null,d('","')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m){return","}()),e===null&&(s=f),e}function ye(){var e,l,u,f,h;return f=s,h=s,e=D(),e!==null?(o.charCodeAt(s)===59?(l=";",s++):(l=null,d('";"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m){return";"}()),e===null&&(s=f),e}function tt(){var e,l,u,f,h;return f=s,h=s,e=D(),e!==null?(o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m){return":"}()),e===null&&(s=f),e}function it(){var e,l,u,f;return u=s,f=s,e=D(),e!==null?(l=I(),l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e!==null&&(e=function(h){return'"'}()),e===null&&(s=u),e}function Ee(){var e,l,u,f;return u=s,f=s,e=I(),e!==null?(l=D(),l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e!==null&&(e=function(h){return'"'}()),e===null&&(s=u),e}function Ae(){var e,l,u,f;if(f=s,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,s=f)):(e=null,s=f)}else e=null,s=f;return e}function Ie(){var e;return/^[!-']/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[!-']")),e===null&&(/^[*-[]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[*-[]")),e===null&&(/^[\]-~]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[\\]-~]")),e===null&&(e=H(),e===null&&(e=M())))),e}function Oe(){var e,l,u,f,h,m;if(h=s,m=s,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,s=m)):(e=null,s=m)}else e=null,s=m;else e=null,s=m;return e!==null&&(e=function(v){return o.substring(s,v)}(h)),e===null&&(s=h),e}function pe(){var e,l,u,f,h,m;if(h=s,m=s,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,s=m)):(e=null,s=m)}else e=null,s=m;else e=null,s=m;return e!==null&&(e=function(v){var S=o.substring(s,v).trim();return S.substring(1,S.length-1).replace(/\\([\x00-\x09\x0b-\x0c\x0e-\x7f])/g,"$1")}(h)),e===null&&(s=h),e}function ue(){var e;return e=M(),e===null&&(o.charCodeAt(s)===33?(e="!",s++):(e=null,d('"!"')),e===null&&(/^[#-[]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[#-[]")),e===null&&(/^[\]-~]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[\\]-~]")),e===null&&(e=H())))),e}function de(){var e,l,u;return u=s,o.charCodeAt(s)===92?(e="\\",s++):(e=null,d('"\\\\"')),e!==null?(/^[\0-\t]/.test(o.charAt(s))?(l=o.charAt(s),s++):(l=null,d("[\\0-\\t]")),l===null&&(/^[\x0B-\f]/.test(o.charAt(s))?(l=o.charAt(s),s++):(l=null,d("[\\x0B-\\f]")),l===null&&(/^[\x0E-]/.test(o.charAt(s))?(l=o.charAt(s),s++):(l=null,d("[\\x0E-]")))),l!==null?e=[e,l]:(e=null,s=u)):(e=null,s=u),e}function we(){var e,l,u,f,h,m;return h=s,m=s,e=Xe(),e!==null?(o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=_t(),u=u!==null?u:"",u!==null?(f=Yt(),f!==null?e=[e,l,u,f]:(e=null,s=m)):(e=null,s=m)):(e=null,s=m)):(e=null,s=m),e!==null&&(e=function(v){try{w.uri=new os(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&&(s=h),e}function De(){var e,l,u,f,h,m,v,S;return v=s,S=s,e=Xe(),e!==null?(o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=_t(),u=u!==null?u:"",u!==null?(f=Yt(),f!==null?(h=Rn(),h!==null?(m=Bs(),m=m!==null?m:"",m!==null?e=[e,l,u,f,h,m]:(e=null,s=S)):(e=null,s=S)):(e=null,s=S)):(e=null,s=S)):(e=null,s=S)):(e=null,s=S),e!==null&&(e=function(O){try{w.uri=new os(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,a==="SIP_URI"&&(w=w.uri)}catch{w=-1}}()),e===null&&(s=v),e}function Xe(){var e;return e=Le(),e===null&&(e=Mt()),e}function Le(){var e,l;return l=s,o.substr(s,4).toLowerCase()==="sips"?(e=o.substr(s,4),s+=4):(e=null,d('"sips"')),e!==null&&(e=function(u,f){w.scheme=f.toLowerCase()}(l,e)),e===null&&(s=l),e}function Mt(){var e,l;return l=s,o.substr(s,3).toLowerCase()==="sip"?(e=o.substr(s,3),s+=3):(e=null,d('"sip"')),e!==null&&(e=function(u,f){w.scheme=f.toLowerCase()}(l,e)),e===null&&(s=l),e}function _t(){var e,l,u,f,h,m;return f=s,h=s,e=Sn(),e!==null?(m=s,o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=Vs(),u!==null?l=[l,u]:(l=null,s=m)):(l=null,s=m),l=l!==null?l:"",l!==null?(o.charCodeAt(s)===64?(u="@",s++):(u=null,d('"@"')),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(v){w.user=decodeURIComponent(o.substring(s-1,v))}(f)),e===null&&(s=f),e}function Sn(){var e,l;if(l=F(),l===null&&(l=ve(),l===null&&(l=yn())),l!==null)for(e=[];l!==null;)e.push(l),l=F(),l===null&&(l=ve(),l===null&&(l=yn()));else e=null;return e}function yn(){var e;return o.charCodeAt(s)===38?(e="&",s++):(e=null,d('"&"')),e===null&&(o.charCodeAt(s)===61?(e="=",s++):(e=null,d('"="')),e===null&&(o.charCodeAt(s)===43?(e="+",s++):(e=null,d('"+"')),e===null&&(o.charCodeAt(s)===36?(e="$",s++):(e=null,d('"$"')),e===null&&(o.charCodeAt(s)===44?(e=",",s++):(e=null,d('","')),e===null&&(o.charCodeAt(s)===59?(e=";",s++):(e=null,d('";"')),e===null&&(o.charCodeAt(s)===63?(e="?",s++):(e=null,d('"?"')),e===null&&(o.charCodeAt(s)===47?(e="/",s++):(e=null,d('"/"'))))))))),e}function Vs(){var e,l,u;for(u=s,e=[],l=F(),l===null&&(l=ve(),l===null&&(o.charCodeAt(s)===38?(l="&",s++):(l=null,d('"&"')),l===null&&(o.charCodeAt(s)===61?(l="=",s++):(l=null,d('"="')),l===null&&(o.charCodeAt(s)===43?(l="+",s++):(l=null,d('"+"')),l===null&&(o.charCodeAt(s)===36?(l="$",s++):(l=null,d('"$"')),l===null&&(o.charCodeAt(s)===44?(l=",",s++):(l=null,d('","'))))))));l!==null;)e.push(l),l=F(),l===null&&(l=ve(),l===null&&(o.charCodeAt(s)===38?(l="&",s++):(l=null,d('"&"')),l===null&&(o.charCodeAt(s)===61?(l="=",s++):(l=null,d('"="')),l===null&&(o.charCodeAt(s)===43?(l="+",s++):(l=null,d('"+"')),l===null&&(o.charCodeAt(s)===36?(l="$",s++):(l=null,d('"$"')),l===null&&(o.charCodeAt(s)===44?(l=",",s++):(l=null,d('","'))))))));return e!==null&&(e=function(f){w.password=o.substring(s,f)}(u)),e===null&&(s=u),e}function Yt(){var e,l,u,f,h;return f=s,e=is(),e!==null?(h=s,o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=_r(),u!==null?l=[l,u]:(l=null,s=h)):(l=null,s=h),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e}function is(){var e,l;return l=s,e=js(),e===null&&(e=Bt(),e===null&&(e=qs())),e!==null&&(e=function(u){return w.host=o.substring(s,u).toLowerCase(),w.host}(l)),e===null&&(s=l),e}function js(){var e,l,u,f,h,m;for(f=s,h=s,e=[],m=s,l=An(),l!==null?(o.charCodeAt(s)===46?(u=".",s++):(u=null,d('"."')),u!==null?l=[l,u]:(l=null,s=m)):(l=null,s=m);l!==null;)e.push(l),m=s,l=An(),l!==null?(o.charCodeAt(s)===46?(u=".",s++):(u=null,d('"."')),u!==null?l=[l,u]:(l=null,s=m)):(l=null,s=m);return e!==null?(l=Cn(),l!==null?(o.charCodeAt(s)===46?(u=".",s++):(u=null,d('"."')),u=u!==null?u:"",u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(v){return w.host_type="domain",o.substring(s,v)}(f)),e===null&&(s=f),e}function An(){var e,l,u,f;if(f=s,e=ae(),e!==null){for(l=[],u=ae(),u===null&&(o.charCodeAt(s)===45?(u="-",s++):(u=null,d('"-"')),u===null&&(o.charCodeAt(s)===95?(u="_",s++):(u=null,d('"_"'))));u!==null;)l.push(u),u=ae(),u===null&&(o.charCodeAt(s)===45?(u="-",s++):(u=null,d('"-"')),u===null&&(o.charCodeAt(s)===95?(u="_",s++):(u=null,d('"_"'))));l!==null?e=[e,l]:(e=null,s=f)}else e=null,s=f;return e}function Cn(){var e,l,u,f;if(f=s,e=E(),e!==null){for(l=[],u=ae(),u===null&&(o.charCodeAt(s)===45?(u="-",s++):(u=null,d('"-"')),u===null&&(o.charCodeAt(s)===95?(u="_",s++):(u=null,d('"_"'))));u!==null;)l.push(u),u=ae(),u===null&&(o.charCodeAt(s)===45?(u="-",s++):(u=null,d('"-"')),u===null&&(o.charCodeAt(s)===95?(u="_",s++):(u=null,d('"_"'))));l!==null?e=[e,l]:(e=null,s=f)}else e=null,s=f;return e}function qs(){var e,l,u,f,h;return f=s,h=s,o.charCodeAt(s)===91?(e="[",s++):(e=null,d('"["')),e!==null?(l=me(),l!==null?(o.charCodeAt(s)===93?(u="]",s++):(u=null,d('"]"')),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m){return w.host_type="IPv6",o.substring(s,m)}(f)),e===null&&(s=f),e}function me(){var e,l,u,f,h,m,v,S,O,ie,Ne,Rt,Ds,k,C,Te;return k=s,C=s,e=oe(),e!==null?(o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?(o.charCodeAt(s)===58?(f=":",s++):(f=null,d('":"')),f!==null?(h=oe(),h!==null?(o.charCodeAt(s)===58?(m=":",s++):(m=null,d('":"')),m!==null?(v=oe(),v!==null?(o.charCodeAt(s)===58?(S=":",s++):(S=null,d('":"')),S!==null?(O=oe(),O!==null?(o.charCodeAt(s)===58?(ie=":",s++):(ie=null,d('":"')),ie!==null?(Ne=oe(),Ne!==null?(o.charCodeAt(s)===58?(Rt=":",s++):(Rt=null,d('":"')),Rt!==null?(Ds=lt(),Ds!==null?e=[e,l,u,f,h,m,v,S,O,ie,Ne,Rt,Ds]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C),e===null&&(C=s,o.substr(s,2)==="::"?(e="::",s+=2):(e=null,d('"::"')),e!==null?(l=oe(),l!==null?(o.charCodeAt(s)===58?(u=":",s++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?(o.charCodeAt(s)===58?(h=":",s++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?(o.charCodeAt(s)===58?(v=":",s++):(v=null,d('":"')),v!==null?(S=oe(),S!==null?(o.charCodeAt(s)===58?(O=":",s++):(O=null,d('":"')),O!==null?(ie=oe(),ie!==null?(o.charCodeAt(s)===58?(Ne=":",s++):(Ne=null,d('":"')),Ne!==null?(Rt=lt(),Rt!==null?e=[e,l,u,f,h,m,v,S,O,ie,Ne,Rt]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C),e===null&&(C=s,o.substr(s,2)==="::"?(e="::",s+=2):(e=null,d('"::"')),e!==null?(l=oe(),l!==null?(o.charCodeAt(s)===58?(u=":",s++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?(o.charCodeAt(s)===58?(h=":",s++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?(o.charCodeAt(s)===58?(v=":",s++):(v=null,d('":"')),v!==null?(S=oe(),S!==null?(o.charCodeAt(s)===58?(O=":",s++):(O=null,d('":"')),O!==null?(ie=lt(),ie!==null?e=[e,l,u,f,h,m,v,S,O,ie]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C),e===null&&(C=s,o.substr(s,2)==="::"?(e="::",s+=2):(e=null,d('"::"')),e!==null?(l=oe(),l!==null?(o.charCodeAt(s)===58?(u=":",s++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?(o.charCodeAt(s)===58?(h=":",s++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?(o.charCodeAt(s)===58?(v=":",s++):(v=null,d('":"')),v!==null?(S=lt(),S!==null?e=[e,l,u,f,h,m,v,S]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C),e===null&&(C=s,o.substr(s,2)==="::"?(e="::",s+=2):(e=null,d('"::"')),e!==null?(l=oe(),l!==null?(o.charCodeAt(s)===58?(u=":",s++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?(o.charCodeAt(s)===58?(h=":",s++):(h=null,d('":"')),h!==null?(m=lt(),m!==null?e=[e,l,u,f,h,m]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C),e===null&&(C=s,o.substr(s,2)==="::"?(e="::",s+=2):(e=null,d('"::"')),e!==null?(l=oe(),l!==null?(o.charCodeAt(s)===58?(u=":",s++):(u=null,d('":"')),u!==null?(f=lt(),f!==null?e=[e,l,u,f]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C),e===null&&(C=s,o.substr(s,2)==="::"?(e="::",s+=2):(e=null,d('"::"')),e!==null?(l=lt(),l!==null?e=[e,l]:(e=null,s=C)):(e=null,s=C),e===null&&(C=s,o.substr(s,2)==="::"?(e="::",s+=2):(e=null,d('"::"')),e!==null?(l=oe(),l!==null?e=[e,l]:(e=null,s=C)):(e=null,s=C),e===null&&(C=s,e=oe(),e!==null?(o.substr(s,2)==="::"?(l="::",s+=2):(l=null,d('"::"')),l!==null?(u=oe(),u!==null?(o.charCodeAt(s)===58?(f=":",s++):(f=null,d('":"')),f!==null?(h=oe(),h!==null?(o.charCodeAt(s)===58?(m=":",s++):(m=null,d('":"')),m!==null?(v=oe(),v!==null?(o.charCodeAt(s)===58?(S=":",s++):(S=null,d('":"')),S!==null?(O=oe(),O!==null?(o.charCodeAt(s)===58?(ie=":",s++):(ie=null,d('":"')),ie!==null?(Ne=lt(),Ne!==null?e=[e,l,u,f,h,m,v,S,O,ie,Ne]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C),e===null&&(C=s,e=oe(),e!==null?(Te=s,o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?l=[l,u]:(l=null,s=Te)):(l=null,s=Te),l=l!==null?l:"",l!==null?(o.substr(s,2)==="::"?(u="::",s+=2):(u=null,d('"::"')),u!==null?(f=oe(),f!==null?(o.charCodeAt(s)===58?(h=":",s++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?(o.charCodeAt(s)===58?(v=":",s++):(v=null,d('":"')),v!==null?(S=oe(),S!==null?(o.charCodeAt(s)===58?(O=":",s++):(O=null,d('":"')),O!==null?(ie=lt(),ie!==null?e=[e,l,u,f,h,m,v,S,O,ie]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C),e===null&&(C=s,e=oe(),e!==null?(Te=s,o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?l=[l,u]:(l=null,s=Te)):(l=null,s=Te),l=l!==null?l:"",l!==null?(Te=s,o.charCodeAt(s)===58?(u=":",s++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?u=[u,f]:(u=null,s=Te)):(u=null,s=Te),u=u!==null?u:"",u!==null?(o.substr(s,2)==="::"?(f="::",s+=2):(f=null,d('"::"')),f!==null?(h=oe(),h!==null?(o.charCodeAt(s)===58?(m=":",s++):(m=null,d('":"')),m!==null?(v=oe(),v!==null?(o.charCodeAt(s)===58?(S=":",s++):(S=null,d('":"')),S!==null?(O=lt(),O!==null?e=[e,l,u,f,h,m,v,S,O]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C),e===null&&(C=s,e=oe(),e!==null?(Te=s,o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?l=[l,u]:(l=null,s=Te)):(l=null,s=Te),l=l!==null?l:"",l!==null?(Te=s,o.charCodeAt(s)===58?(u=":",s++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?u=[u,f]:(u=null,s=Te)):(u=null,s=Te),u=u!==null?u:"",u!==null?(Te=s,o.charCodeAt(s)===58?(f=":",s++):(f=null,d('":"')),f!==null?(h=oe(),h!==null?f=[f,h]:(f=null,s=Te)):(f=null,s=Te),f=f!==null?f:"",f!==null?(o.substr(s,2)==="::"?(h="::",s+=2):(h=null,d('"::"')),h!==null?(m=oe(),m!==null?(o.charCodeAt(s)===58?(v=":",s++):(v=null,d('":"')),v!==null?(S=lt(),S!==null?e=[e,l,u,f,h,m,v,S]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C),e===null&&(C=s,e=oe(),e!==null?(Te=s,o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?l=[l,u]:(l=null,s=Te)):(l=null,s=Te),l=l!==null?l:"",l!==null?(Te=s,o.charCodeAt(s)===58?(u=":",s++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?u=[u,f]:(u=null,s=Te)):(u=null,s=Te),u=u!==null?u:"",u!==null?(Te=s,o.charCodeAt(s)===58?(f=":",s++):(f=null,d('":"')),f!==null?(h=oe(),h!==null?f=[f,h]:(f=null,s=Te)):(f=null,s=Te),f=f!==null?f:"",f!==null?(Te=s,o.charCodeAt(s)===58?(h=":",s++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?h=[h,m]:(h=null,s=Te)):(h=null,s=Te),h=h!==null?h:"",h!==null?(o.substr(s,2)==="::"?(m="::",s+=2):(m=null,d('"::"')),m!==null?(v=lt(),v!==null?e=[e,l,u,f,h,m,v]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C),e===null&&(C=s,e=oe(),e!==null?(Te=s,o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?l=[l,u]:(l=null,s=Te)):(l=null,s=Te),l=l!==null?l:"",l!==null?(Te=s,o.charCodeAt(s)===58?(u=":",s++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?u=[u,f]:(u=null,s=Te)):(u=null,s=Te),u=u!==null?u:"",u!==null?(Te=s,o.charCodeAt(s)===58?(f=":",s++):(f=null,d('":"')),f!==null?(h=oe(),h!==null?f=[f,h]:(f=null,s=Te)):(f=null,s=Te),f=f!==null?f:"",f!==null?(Te=s,o.charCodeAt(s)===58?(h=":",s++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?h=[h,m]:(h=null,s=Te)):(h=null,s=Te),h=h!==null?h:"",h!==null?(Te=s,o.charCodeAt(s)===58?(m=":",s++):(m=null,d('":"')),m!==null?(v=oe(),v!==null?m=[m,v]:(m=null,s=Te)):(m=null,s=Te),m=m!==null?m:"",m!==null?(o.substr(s,2)==="::"?(v="::",s+=2):(v=null,d('"::"')),v!==null?(S=oe(),S!==null?e=[e,l,u,f,h,m,v,S]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C),e===null&&(C=s,e=oe(),e!==null?(Te=s,o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?l=[l,u]:(l=null,s=Te)):(l=null,s=Te),l=l!==null?l:"",l!==null?(Te=s,o.charCodeAt(s)===58?(u=":",s++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?u=[u,f]:(u=null,s=Te)):(u=null,s=Te),u=u!==null?u:"",u!==null?(Te=s,o.charCodeAt(s)===58?(f=":",s++):(f=null,d('":"')),f!==null?(h=oe(),h!==null?f=[f,h]:(f=null,s=Te)):(f=null,s=Te),f=f!==null?f:"",f!==null?(Te=s,o.charCodeAt(s)===58?(h=":",s++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?h=[h,m]:(h=null,s=Te)):(h=null,s=Te),h=h!==null?h:"",h!==null?(Te=s,o.charCodeAt(s)===58?(m=":",s++):(m=null,d('":"')),m!==null?(v=oe(),v!==null?m=[m,v]:(m=null,s=Te)):(m=null,s=Te),m=m!==null?m:"",m!==null?(Te=s,o.charCodeAt(s)===58?(v=":",s++):(v=null,d('":"')),v!==null?(S=oe(),S!==null?v=[v,S]:(v=null,s=Te)):(v=null,s=Te),v=v!==null?v:"",v!==null?(o.substr(s,2)==="::"?(S="::",s+=2):(S=null,d('"::"')),S!==null?e=[e,l,u,f,h,m,v,S]:(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C)):(e=null,s=C))))))))))))))),e!==null&&(e=function(S_){return w.host_type="IPv6",o.substring(s,S_)}(k)),e===null&&(s=k),e}function oe(){var e,l,u,f,h;return h=s,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,s=h)):(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e}function lt(){var e,l,u,f;return f=s,e=oe(),e!==null?(o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e===null&&(e=Bt()),e}function Bt(){var e,l,u,f,h,m,v,S,O;return S=s,O=s,e=vs(),e!==null?(o.charCodeAt(s)===46?(l=".",s++):(l=null,d('"."')),l!==null?(u=vs(),u!==null?(o.charCodeAt(s)===46?(f=".",s++):(f=null,d('"."')),f!==null?(h=vs(),h!==null?(o.charCodeAt(s)===46?(m=".",s++):(m=null,d('"."')),m!==null?(v=vs(),v!==null?e=[e,l,u,f,h,m,v]:(e=null,s=O)):(e=null,s=O)):(e=null,s=O)):(e=null,s=O)):(e=null,s=O)):(e=null,s=O)):(e=null,s=O),e!==null&&(e=function(ie){return w.host_type="IPv4",o.substring(s,ie)}(S)),e===null&&(s=S),e}function vs(){var e,l,u,f;return f=s,o.substr(s,2)==="25"?(e="25",s+=2):(e=null,d('"25"')),e!==null?(/^[0-5]/.test(o.charAt(s))?(l=o.charAt(s),s++):(l=null,d("[0-5]")),l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e===null&&(f=s,o.charCodeAt(s)===50?(e="2",s++):(e=null,d('"2"')),e!==null?(/^[0-4]/.test(o.charAt(s))?(l=o.charAt(s),s++):(l=null,d("[0-4]")),l!==null?(u=T(),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e===null&&(f=s,o.charCodeAt(s)===49?(e="1",s++):(e=null,d('"1"')),e!==null?(l=T(),l!==null?(u=T(),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e===null&&(f=s,/^[1-9]/.test(o.charAt(s))?(e=o.charAt(s),s++):(e=null,d("[1-9]")),e!==null?(l=T(),l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e===null&&(e=T())))),e}function _r(){var e,l,u,f,h,m,v;return m=s,v=s,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?(h=T(),h=h!==null?h:"",h!==null?e=[e,l,u,f,h]:(e=null,s=v)):(e=null,s=v)):(e=null,s=v)):(e=null,s=v)):(e=null,s=v),e!==null&&(e=function(S,O){return O=parseInt(O.join("")),w.port=O,O}(m,e)),e===null&&(s=m),e}function Rn(){var e,l,u,f;for(e=[],f=s,o.charCodeAt(s)===59?(l=";",s++):(l=null,d('";"')),l!==null?(u=In(),u!==null?l=[l,u]:(l=null,s=f)):(l=null,s=f);l!==null;)e.push(l),f=s,o.charCodeAt(s)===59?(l=";",s++):(l=null,d('";"')),l!==null?(u=In(),u!==null?l=[l,u]:(l=null,s=f)):(l=null,s=f);return e}function In(){var e;return e=hr(),e===null&&(e=dr(),e===null&&(e=pr(),e===null&&(e=mr(),e===null&&(e=gr(),e===null&&(e=Tr(),e===null&&(e=vr())))))),e}function hr(){var e,l,u,f;return u=s,f=s,o.substr(s,10).toLowerCase()==="transport="?(e=o.substr(s,10),s+=10):(e=null,d('"transport="')),e!==null?(o.substr(s,3).toLowerCase()==="udp"?(l=o.substr(s,3),s+=3):(l=null,d('"udp"')),l===null&&(o.substr(s,3).toLowerCase()==="tcp"?(l=o.substr(s,3),s+=3):(l=null,d('"tcp"')),l===null&&(o.substr(s,4).toLowerCase()==="sctp"?(l=o.substr(s,4),s+=4):(l=null,d('"sctp"')),l===null&&(o.substr(s,3).toLowerCase()==="tls"?(l=o.substr(s,3),s+=3):(l=null,d('"tls"')),l===null&&(l=P())))),l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e!==null&&(e=function(h,m){w.uri_params||(w.uri_params={}),w.uri_params.transport=m.toLowerCase()}(u,e[1])),e===null&&(s=u),e}function dr(){var e,l,u,f;return u=s,f=s,o.substr(s,5).toLowerCase()==="user="?(e=o.substr(s,5),s+=5):(e=null,d('"user="')),e!==null?(o.substr(s,5).toLowerCase()==="phone"?(l=o.substr(s,5),s+=5):(l=null,d('"phone"')),l===null&&(o.substr(s,2).toLowerCase()==="ip"?(l=o.substr(s,2),s+=2):(l=null,d('"ip"')),l===null&&(l=P())),l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e!==null&&(e=function(h,m){w.uri_params||(w.uri_params={}),w.uri_params.user=m.toLowerCase()}(u,e[1])),e===null&&(s=u),e}function pr(){var e,l,u,f;return u=s,f=s,o.substr(s,7).toLowerCase()==="method="?(e=o.substr(s,7),s+=7):(e=null,d('"method="')),e!==null?(l=Xs(),l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e!==null&&(e=function(h,m){w.uri_params||(w.uri_params={}),w.uri_params.method=m}(u,e[1])),e===null&&(s=u),e}function mr(){var e,l,u,f;return u=s,f=s,o.substr(s,4).toLowerCase()==="ttl="?(e=o.substr(s,4),s+=4):(e=null,d('"ttl="')),e!==null?(l=mi(),l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e!==null&&(e=function(h,m){w.params||(w.params={}),w.params.ttl=m}(u,e[1])),e===null&&(s=u),e}function gr(){var e,l,u,f;return u=s,f=s,o.substr(s,6).toLowerCase()==="maddr="?(e=o.substr(s,6),s+=6):(e=null,d('"maddr="')),e!==null?(l=is(),l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e!==null&&(e=function(h,m){w.uri_params||(w.uri_params={}),w.uri_params.maddr=m}(u,e[1])),e===null&&(s=u),e}function Tr(){var e,l,u,f,h,m;return f=s,h=s,o.substr(s,2).toLowerCase()==="lr"?(e=o.substr(s,2),s+=2):(e=null,d('"lr"')),e!==null?(m=s,o.charCodeAt(s)===61?(l="=",s++):(l=null,d('"="')),l!==null?(u=P(),u!==null?l=[l,u]:(l=null,s=m)):(l=null,s=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(v){w.uri_params||(w.uri_params={}),w.uri_params.lr=void 0}()),e===null&&(s=f),e}function vr(){var e,l,u,f,h,m;return f=s,h=s,e=Er(),e!==null?(m=s,o.charCodeAt(s)===61?(l="=",s++):(l=null,d('"="')),l!==null?(u=Es(),u!==null?l=[l,u]:(l=null,s=m)):(l=null,s=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,s=h)):(e=null,s=h),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&&(s=f),e}function Er(){var e,l,u;if(u=s,l=Ss(),l!==null)for(e=[];l!==null;)e.push(l),l=Ss();else e=null;return e!==null&&(e=function(f,h){return h.join("")}(u,e)),e===null&&(s=u),e}function Es(){var e,l,u;if(u=s,l=Ss(),l!==null)for(e=[];l!==null;)e.push(l),l=Ss();else e=null;return e!==null&&(e=function(f,h){return h.join("")}(u,e)),e===null&&(s=u),e}function Ss(){var e;return e=Sr(),e===null&&(e=F(),e===null&&(e=ve())),e}function Sr(){var e;return o.charCodeAt(s)===91?(e="[",s++):(e=null,d('"["')),e===null&&(o.charCodeAt(s)===93?(e="]",s++):(e=null,d('"]"')),e===null&&(o.charCodeAt(s)===47?(e="/",s++):(e=null,d('"/"')),e===null&&(o.charCodeAt(s)===58?(e=":",s++):(e=null,d('":"')),e===null&&(o.charCodeAt(s)===38?(e="&",s++):(e=null,d('"&"')),e===null&&(o.charCodeAt(s)===43?(e="+",s++):(e=null,d('"+"')),e===null&&(o.charCodeAt(s)===36?(e="$",s++):(e=null,d('"$"')))))))),e}function Bs(){var e,l,u,f,h,m,v;if(m=s,o.charCodeAt(s)===63?(e="?",s++):(e=null,d('"?"')),e!==null)if(l=Gs(),l!==null){for(u=[],v=s,o.charCodeAt(s)===38?(f="&",s++):(f=null,d('"&"')),f!==null?(h=Gs(),h!==null?f=[f,h]:(f=null,s=v)):(f=null,s=v);f!==null;)u.push(f),v=s,o.charCodeAt(s)===38?(f="&",s++):(f=null,d('"&"')),f!==null?(h=Gs(),h!==null?f=[f,h]:(f=null,s=v)):(f=null,s=v);u!==null?e=[e,l,u]:(e=null,s=m)}else e=null,s=m;else e=null,s=m;return e}function Gs(){var e,l,u,f,h;return f=s,h=s,e=yr(),e!==null?(o.charCodeAt(s)===61?(l="=",s++):(l=null,d('"="')),l!==null?(u=ys(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),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&&(s=f),e}function yr(){var e,l;if(l=Ws(),l===null&&(l=F(),l===null&&(l=ve())),l!==null)for(e=[];l!==null;)e.push(l),l=Ws(),l===null&&(l=F(),l===null&&(l=ve()));else e=null;return e}function ys(){var e,l;for(e=[],l=Ws(),l===null&&(l=F(),l===null&&(l=ve()));l!==null;)e.push(l),l=Ws(),l===null&&(l=F(),l===null&&(l=ve()));return e}function Ws(){var e;return o.charCodeAt(s)===91?(e="[",s++):(e=null,d('"["')),e===null&&(o.charCodeAt(s)===93?(e="]",s++):(e=null,d('"]"')),e===null&&(o.charCodeAt(s)===47?(e="/",s++):(e=null,d('"/"')),e===null&&(o.charCodeAt(s)===63?(e="?",s++):(e=null,d('"?"')),e===null&&(o.charCodeAt(s)===58?(e=":",s++):(e=null,d('":"')),e===null&&(o.charCodeAt(s)===43?(e="+",s++):(e=null,d('"+"')),e===null&&(o.charCodeAt(s)===36?(e="$",s++):(e=null,d('"$"')))))))),e}function ol(){var e;return e=$r(),e===null&&(e=Ar()),e}function Ar(){var e,l,u,f,h,m;return m=s,e=Xs(),e!==null?(l=$(),l!==null?(u=bn(),u!==null?(f=$(),f!==null?(h=Dn(),h!==null?e=[e,l,u,f,h]:(e=null,s=m)):(e=null,s=m)):(e=null,s=m)):(e=null,s=m)):(e=null,s=m),e}function bn(){var e;return e=De(),e===null&&(e=wn()),e}function wn(){var e,l,u,f;return f=s,e=Ir(),e!==null?(o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l!==null?(u=Cr(),u===null&&(u=As()),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e}function Cr(){var e,l,u,f,h;return f=s,e=Ks(),e===null&&(e=Ys()),e!==null?(h=s,o.charCodeAt(s)===63?(l="?",s++):(l=null,d('"?"')),l!==null?(u=On(),u!==null?l=[l,u]:(l=null,s=h)):(l=null,s=h),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e}function Ks(){var e,l,u,f;return f=s,o.substr(s,2)==="//"?(e="//",s+=2):(e=null,d('"//"')),e!==null?(l=br(),l!==null?(u=Ys(),u=u!==null?u:"",u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e}function Ys(){var e,l,u;return u=s,o.charCodeAt(s)===47?(e="/",s++):(e=null,d('"/"')),e!==null?(l=zs(),l!==null?e=[e,l]:(e=null,s=u)):(e=null,s=u),e}function As(){var e,l,u,f;if(f=s,e=Rr(),e!==null){for(l=[],u=Cs();u!==null;)l.push(u),u=Cs();l!==null?e=[e,l]:(e=null,s=f)}else e=null,s=f;return e}function Cs(){var e;return e=N(),e===null&&(e=F(),e===null&&(e=ve())),e}function Rr(){var e;return e=F(),e===null&&(e=ve(),e===null&&(o.charCodeAt(s)===59?(e=";",s++):(e=null,d('";"')),e===null&&(o.charCodeAt(s)===63?(e="?",s++):(e=null,d('"?"')),e===null&&(o.charCodeAt(s)===58?(e=":",s++):(e=null,d('":"')),e===null&&(o.charCodeAt(s)===64?(e="@",s++):(e=null,d('"@"')),e===null&&(o.charCodeAt(s)===38?(e="&",s++):(e=null,d('"&"')),e===null&&(o.charCodeAt(s)===61?(e="=",s++):(e=null,d('"="')),e===null&&(o.charCodeAt(s)===43?(e="+",s++):(e=null,d('"+"')),e===null&&(o.charCodeAt(s)===36?(e="$",s++):(e=null,d('"$"')),e===null&&(o.charCodeAt(s)===44?(e=",",s++):(e=null,d('","')))))))))))),e}function zs(){var e,l,u,f,h,m;if(h=s,e=Rs(),e!==null){for(l=[],m=s,o.charCodeAt(s)===47?(u="/",s++):(u=null,d('"/"')),u!==null?(f=Rs(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,o.charCodeAt(s)===47?(u="/",s++):(u=null,d('"/"')),u!==null?(f=Rs(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function Rs(){var e,l,u,f,h,m;for(h=s,e=[],l=Is();l!==null;)e.push(l),l=Is();if(e!==null){for(l=[],m=s,o.charCodeAt(s)===59?(u=";",s++):(u=null,d('";"')),u!==null?(f=ls(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,o.charCodeAt(s)===59?(u=";",s++):(u=null,d('";"')),u!==null?(f=ls(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function ls(){var e,l;for(e=[],l=Is();l!==null;)e.push(l),l=Is();return e}function Is(){var e;return e=F(),e===null&&(e=ve(),e===null&&(o.charCodeAt(s)===58?(e=":",s++):(e=null,d('":"')),e===null&&(o.charCodeAt(s)===64?(e="@",s++):(e=null,d('"@"')),e===null&&(o.charCodeAt(s)===38?(e="&",s++):(e=null,d('"&"')),e===null&&(o.charCodeAt(s)===61?(e="=",s++):(e=null,d('"="')),e===null&&(o.charCodeAt(s)===43?(e="+",s++):(e=null,d('"+"')),e===null&&(o.charCodeAt(s)===36?(e="$",s++):(e=null,d('"$"')),e===null&&(o.charCodeAt(s)===44?(e=",",s++):(e=null,d('","')))))))))),e}function Ir(){var e,l,u,f,h;if(f=s,h=s,e=E(),e!==null){for(l=[],u=E(),u===null&&(u=T(),u===null&&(o.charCodeAt(s)===43?(u="+",s++):(u=null,d('"+"')),u===null&&(o.charCodeAt(s)===45?(u="-",s++):(u=null,d('"-"')),u===null&&(o.charCodeAt(s)===46?(u=".",s++):(u=null,d('"."'))))));u!==null;)l.push(u),u=E(),u===null&&(u=T(),u===null&&(o.charCodeAt(s)===43?(u="+",s++):(u=null,d('"+"')),u===null&&(o.charCodeAt(s)===45?(u="-",s++):(u=null,d('"-"')),u===null&&(o.charCodeAt(s)===46?(u=".",s++):(u=null,d('"."'))))));l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e!==null&&(e=function(m){w.scheme=o.substring(s,m)}(f)),e===null&&(s=f),e}function br(){var e;return e=wr(),e===null&&(e=Or()),e}function wr(){var e,l,u,f;return u=s,f=s,e=_t(),e!==null?(o.charCodeAt(s)===64?(l="@",s++):(l=null,d('"@"')),l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e=e!==null?e:"",e!==null?(l=Yt(),l!==null?e=[e,l]:(e=null,s=u)):(e=null,s=u),e=e!==null?e:"",e}function Or(){var e,l;if(l=F(),l===null&&(l=ve(),l===null&&(o.charCodeAt(s)===36?(l="$",s++):(l=null,d('"$"')),l===null&&(o.charCodeAt(s)===44?(l=",",s++):(l=null,d('","')),l===null&&(o.charCodeAt(s)===59?(l=";",s++):(l=null,d('";"')),l===null&&(o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l===null&&(o.charCodeAt(s)===64?(l="@",s++):(l=null,d('"@"')),l===null&&(o.charCodeAt(s)===38?(l="&",s++):(l=null,d('"&"')),l===null&&(o.charCodeAt(s)===61?(l="=",s++):(l=null,d('"="')),l===null&&(o.charCodeAt(s)===43?(l="+",s++):(l=null,d('"+"'))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=F(),l===null&&(l=ve(),l===null&&(o.charCodeAt(s)===36?(l="$",s++):(l=null,d('"$"')),l===null&&(o.charCodeAt(s)===44?(l=",",s++):(l=null,d('","')),l===null&&(o.charCodeAt(s)===59?(l=";",s++):(l=null,d('";"')),l===null&&(o.charCodeAt(s)===58?(l=":",s++):(l=null,d('":"')),l===null&&(o.charCodeAt(s)===64?(l="@",s++):(l=null,d('"@"')),l===null&&(o.charCodeAt(s)===38?(l="&",s++):(l=null,d('"&"')),l===null&&(o.charCodeAt(s)===61?(l="=",s++):(l=null,d('"="')),l===null&&(o.charCodeAt(s)===43?(l="+",s++):(l=null,d('"+"')))))))))));else e=null;return e}function On(){var e,l;for(e=[],l=Cs();l!==null;)e.push(l),l=Cs();return e}function Dn(){var e,l,u,f,h,m,v,S;if(v=s,S=s,o.substr(s,3).toLowerCase()==="sip"?(e=o.substr(s,3),s+=3):(e=null,d('"SIP"')),e!==null)if(o.charCodeAt(s)===47?(l="/",s++):(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(o.charCodeAt(s)===46?(f=".",s++):(f=null,d('"."')),f!==null){if(m=T(),m!==null)for(h=[];m!==null;)h.push(m),m=T();else h=null;h!==null?e=[e,l,u,f,h]:(e=null,s=S)}else e=null,s=S;else e=null,s=S}else e=null,s=S;else e=null,s=S;return e!==null&&(e=function(O){w.sip_version=o.substring(s,O)}(v)),e===null&&(s=v),e}function Dr(){var e;return o.substr(s,6)==="INVITE"?(e="INVITE",s+=6):(e=null,d('"INVITE"')),e}function Nr(){var e;return o.substr(s,3)==="ACK"?(e="ACK",s+=3):(e=null,d('"ACK"')),e}function Ur(){var e;return o.substr(s,7)==="OPTIONS"?(e="OPTIONS",s+=7):(e=null,d('"OPTIONS"')),e}function Pr(){var e;return o.substr(s,3)==="BYE"?(e="BYE",s+=3):(e=null,d('"BYE"')),e}function xr(){var e;return o.substr(s,6)==="CANCEL"?(e="CANCEL",s+=6):(e=null,d('"CANCEL"')),e}function Mr(){var e;return o.substr(s,8)==="REGISTER"?(e="REGISTER",s+=8):(e=null,d('"REGISTER"')),e}function kr(){var e;return o.substr(s,9)==="SUBSCRIBE"?(e="SUBSCRIBE",s+=9):(e=null,d('"SUBSCRIBE"')),e}function Lr(){var e;return o.substr(s,6)==="NOTIFY"?(e="NOTIFY",s+=6):(e=null,d('"NOTIFY"')),e}function Js(){var e;return o.substr(s,5)==="REFER"?(e="REFER",s+=5):(e=null,d('"REFER"')),e}function Xs(){var e,l;return l=s,e=Dr(),e===null&&(e=Nr(),e===null&&(e=Ur(),e===null&&(e=Pr(),e===null&&(e=xr(),e===null&&(e=Mr(),e===null&&(e=kr(),e===null&&(e=Lr(),e===null&&(e=Js(),e===null&&(e=P()))))))))),e!==null&&(e=function(u){return w.method=o.substring(s,u),w.method}(l)),e===null&&(s=l),e}function $r(){var e,l,u,f,h,m;return m=s,e=Dn(),e!==null?(l=$(),l!==null?(u=Hr(),u!==null?(f=$(),f!==null?(h=al(),h!==null?e=[e,l,u,f,h]:(e=null,s=m)):(e=null,s=m)):(e=null,s=m)):(e=null,s=m)):(e=null,s=m),e}function Hr(){var e,l;return l=s,e=Fr(),e!==null&&(e=function(u,f){w.status_code=parseInt(f.join(""))}(l,e)),e===null&&(s=l),e}function Fr(){var e,l,u,f;return f=s,e=T(),e!==null?(l=T(),l!==null?(u=T(),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e}function al(){var e,l,u;for(u=s,e=[],l=N(),l===null&&(l=F(),l===null&&(l=ve(),l===null&&(l=H(),l===null&&(l=J(),l===null&&(l=$(),l===null&&(l=L()))))));l!==null;)e.push(l),l=N(),l===null&&(l=F(),l===null&&(l=ve(),l===null&&(l=H(),l===null&&(l=J(),l===null&&(l=$(),l===null&&(l=L()))))));return e!==null&&(e=function(f){w.reason_phrase=o.substring(s,f)}(u)),e===null&&(s=u),e}function Mo(){var e,l,u,f,h,m;if(h=s,e=tn(),e!==null){for(l=[],m=s,u=le(),u!==null?(f=tn(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,u=le(),u!==null?(f=tn(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function ko(){var e,l,u,f,h,m;return f=s,h=s,e=ee(),e!==null?(m=s,o.charCodeAt(s)===64?(l="@",s++):(l=null,d('"@"')),l!==null?(u=ee(),u!==null?l=[l,u]:(l=null,s=m)):(l=null,s=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(v){w=o.substring(s,v)}(f)),e===null&&(s=f),e}function Nn(){var e,l,u,f,h,m,v;if(h=s,e=W(),e===null)if(m=s,e=kt(),e!==null){for(l=[],v=s,u=le(),u!==null?(f=kt(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);u!==null;)l.push(u),v=s,u=le(),u!==null?(f=kt(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);l!==null?e=[e,l]:(e=null,s=m)}else e=null,s=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&&(s=h),e}function kt(){var e,l,u,f,h,m,v;if(h=s,m=s,e=we(),e===null&&(e=Lt()),e!==null){for(l=[],v=s,u=ye(),u!==null?(f=Un(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);u!==null;)l.push(u),v=s,u=ye(),u!==null?(f=Un(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);l!==null?e=[e,l]:(e=null,s=m)}else e=null,s=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:s,offset:S,parsed:O})}(h)),e===null&&(s=h),e}function Lt(){var e,l,u,f,h;return h=s,e=bs(),e=e!==null?e:"",e!==null?(l=Ce(),l!==null?(u=De(),u!==null?(f=xe(),f!==null?e=[e,l,u,f]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e}function bs(){var e,l,u,f,h,m,v;if(h=s,m=s,e=P(),e!==null){for(l=[],v=s,u=M(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);u!==null;)l.push(u),v=s,u=M(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);l!==null?e=[e,l]:(e=null,s=m)}else e=null,s=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,Ne){return ie+Ne[0]+Ne[1]},O[0])}(h,e)),e===null&&(s=h),e}function Un(){var e;return e=Vr(),e===null&&(e=zt(),e===null&&(e=We())),e}function Vr(){var e,l,u,f,h;return f=s,h=s,o.substr(s,1).toLowerCase()==="q"?(e=o.substr(s,1),s++):(e=null,d('"q"')),e!==null?(l=re(),l!==null?(u=Ge(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){w.params||(w.params={}),w.params.q=v}(f,e[2])),e===null&&(s=f),e}function zt(){var e,l,u,f,h;return f=s,h=s,o.substr(s,7).toLowerCase()==="expires"?(e=o.substr(s,7),s+=7):(e=null,d('"expires"')),e!==null?(l=re(),l!==null?(u=Jt(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){w.params||(w.params={}),w.params.expires=v}(f,e[2])),e===null&&(s=f),e}function Jt(){var e,l,u;if(u=s,l=T(),l!==null)for(e=[];l!==null;)e.push(l),l=T();else e=null;return e!==null&&(e=function(f,h){return parseInt(h.join(""))}(u,e)),e===null&&(s=u),e}function Ge(){var e,l,u,f,h,m,v,S;return m=s,v=s,o.charCodeAt(s)===48?(e="0",s++):(e=null,d('"0"')),e!==null?(S=s,o.charCodeAt(s)===46?(l=".",s++):(l=null,d('"."')),l!==null?(u=T(),u=u!==null?u:"",u!==null?(f=T(),f=f!==null?f:"",f!==null?(h=T(),h=h!==null?h:"",h!==null?l=[l,u,f,h]:(l=null,s=S)):(l=null,s=S)):(l=null,s=S)):(l=null,s=S),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,s=v)):(e=null,s=v),e!==null&&(e=function(O){return parseFloat(o.substring(s,O))}(m)),e===null&&(s=m),e}function We(){var e,l,u,f,h,m;return f=s,h=s,e=P(),e!==null?(m=s,l=re(),l!==null?(u=ul(),u!==null?l=[l,u]:(l=null,s=m)):(l=null,s=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,s=h)):(e=null,s=h),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&&(s=f),e}function ul(){var e;return e=P(),e===null&&(e=is(),e===null&&(e=Oe())),e}function cl(){var e,l,u,f,h,m;if(h=s,e=Pn(),e!==null){for(l=[],m=s,u=ye(),u!==null?(f=xn(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,u=ye(),u!==null?(f=xn(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function Pn(){var e;return o.substr(s,6).toLowerCase()==="render"?(e=o.substr(s,6),s+=6):(e=null,d('"render"')),e===null&&(o.substr(s,7).toLowerCase()==="session"?(e=o.substr(s,7),s+=7):(e=null,d('"session"')),e===null&&(o.substr(s,4).toLowerCase()==="icon"?(e=o.substr(s,4),s+=4):(e=null,d('"icon"')),e===null&&(o.substr(s,5).toLowerCase()==="alert"?(e=o.substr(s,5),s+=5):(e=null,d('"alert"')),e===null&&(e=P())))),e}function xn(){var e;return e=fl(),e===null&&(e=We()),e}function fl(){var e,l,u,f;return f=s,o.substr(s,8).toLowerCase()==="handling"?(e=o.substr(s,8),s+=8):(e=null,d('"handling"')),e!==null?(l=re(),l!==null?(o.substr(s,8).toLowerCase()==="optional"?(u=o.substr(s,8),s+=8):(u=null,d('"optional"')),u===null&&(o.substr(s,8).toLowerCase()==="required"?(u=o.substr(s,8),s+=8):(u=null,d('"required"')),u===null&&(u=P())),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e}function Lo(){var e,l,u,f,h,m;if(h=s,e=P(),e!==null){for(l=[],m=s,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function $o(){var e,l,u;if(u=s,l=T(),l!==null)for(e=[];l!==null;)e.push(l),l=T();else e=null;return e!==null&&(e=function(f,h){w=parseInt(h.join(""))}(u,e)),e===null&&(s=u),e}function _l(){var e,l;return l=s,e=jr(),e!==null&&(e=function(u){w=o.substring(s,u)}(l)),e===null&&(s=l),e}function jr(){var e,l,u,f,h,m,v,S;if(v=s,e=qr(),e!==null)if(l=B(),l!==null)if(u=Mn(),u!==null){for(f=[],S=s,h=ye(),h!==null?(m=kn(),m!==null?h=[h,m]:(h=null,s=S)):(h=null,s=S);h!==null;)f.push(h),S=s,h=ye(),h!==null?(m=kn(),m!==null?h=[h,m]:(h=null,s=S)):(h=null,s=S);f!==null?e=[e,l,u,f]:(e=null,s=v)}else e=null,s=v;else e=null,s=v;else e=null,s=v;return e}function qr(){var e;return e=Br(),e===null&&(e=Qs()),e}function Br(){var e;return o.substr(s,4).toLowerCase()==="text"?(e=o.substr(s,4),s+=4):(e=null,d('"text"')),e===null&&(o.substr(s,5).toLowerCase()==="image"?(e=o.substr(s,5),s+=5):(e=null,d('"image"')),e===null&&(o.substr(s,5).toLowerCase()==="audio"?(e=o.substr(s,5),s+=5):(e=null,d('"audio"')),e===null&&(o.substr(s,5).toLowerCase()==="video"?(e=o.substr(s,5),s+=5):(e=null,d('"video"')),e===null&&(o.substr(s,11).toLowerCase()==="application"?(e=o.substr(s,11),s+=11):(e=null,d('"application"')),e===null&&(e=Zs()))))),e}function Qs(){var e;return o.substr(s,7).toLowerCase()==="message"?(e=o.substr(s,7),s+=7):(e=null,d('"message"')),e===null&&(o.substr(s,9).toLowerCase()==="multipart"?(e=o.substr(s,9),s+=9):(e=null,d('"multipart"')),e===null&&(e=Zs())),e}function Zs(){var e;return e=P(),e===null&&(e=Gr()),e}function Gr(){var e,l,u;return u=s,o.substr(s,2).toLowerCase()==="x-"?(e=o.substr(s,2),s+=2):(e=null,d('"x-"')),e!==null?(l=P(),l!==null?e=[e,l]:(e=null,s=u)):(e=null,s=u),e}function Mn(){var e;return e=Zs(),e===null&&(e=P()),e}function kn(){var e,l,u,f;return f=s,e=P(),e!==null?(l=re(),l!==null?(u=hl(),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e}function hl(){var e;return e=P(),e===null&&(e=Oe()),e}function dl(){var e,l,u,f;return f=s,e=pl(),e!==null?(l=M(),l!==null?(u=Xs(),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e}function pl(){var e,l,u;if(u=s,l=T(),l!==null)for(e=[];l!==null;)e.push(l),l=T();else e=null;return e!==null&&(e=function(f,h){w.value=parseInt(h.join(""))}(u,e)),e===null&&(s=u),e}function Ho(){var e,l;return l=s,e=Jt(),e!==null&&(e=function(u,f){w=f}(l,e)),e===null&&(s=l),e}function en(){var e,l,u,f,h,m,v;if(h=s,m=s,e=tn(),e!==null){for(l=[],v=s,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);u!==null;)l.push(u),v=s,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);l!==null?e=[e,l]:(e=null,s=m)}else e=null,s=m;return e!==null&&(e=function(S,O){w.event=O.join("").toLowerCase()}(h,e[0])),e===null&&(s=h),e}function tn(){var e,l,u,f,h,m;if(h=s,e=se(),e!==null){for(l=[],m=s,o.charCodeAt(s)===46?(u=".",s++):(u=null,d('"."')),u!==null?(f=se(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,o.charCodeAt(s)===46?(u=".",s++):(u=null,d('"."')),u!==null?(f=se(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function Wr(){var e,l,u,f,h,m,v;if(h=s,m=s,e=we(),e===null&&(e=Lt()),e!==null){for(l=[],v=s,u=ye(),u!==null?(f=sn(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);u!==null;)l.push(u),v=s,u=ye(),u!==null?(f=sn(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);l!==null?e=[e,l]:(e=null,s=m)}else e=null,s=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&&(s=h),e}function sn(){var e;return e=Kr(),e===null&&(e=We()),e}function Kr(){var e,l,u,f,h;return f=s,h=s,o.substr(s,3).toLowerCase()==="tag"?(e=o.substr(s,3),s+=3):(e=null,d('"tag"')),e!==null?(l=re(),l!==null?(u=P(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){w.tag=v}(f,e[2])),e===null&&(s=f),e}function Fo(){var e,l,u;if(u=s,l=T(),l!==null)for(e=[];l!==null;)e.push(l),l=T();else e=null;return e!==null&&(e=function(f,h){w=parseInt(h.join(""))}(u,e)),e===null&&(s=u),e}function Vo(){var e,l;return l=s,e=Jt(),e!==null&&(e=function(u,f){w=f}(l,e)),e===null&&(s=l),e}function jo(){var e,l,u,f,h,m,v,S,O,ie;for(S=s,O=s,e=[],l=bs();l!==null;)e.push(l),l=bs();if(e!==null)if(l=Ce(),l!==null)if(u=De(),u!==null)if(f=xe(),f!==null){for(h=[],ie=s,m=ye(),m!==null?(v=We(),v!==null?m=[m,v]:(m=null,s=ie)):(m=null,s=ie);m!==null;)h.push(m),ie=s,m=ye(),m!==null?(v=We(),v!==null?m=[m,v]:(m=null,s=ie)):(m=null,s=ie);h!==null?e=[e,l,u,f,h]:(e=null,s=O)}else e=null,s=O;else e=null,s=O;else e=null,s=O;else e=null,s=O;return e!==null&&(e=function(Ne){try{w=new b(w.uri,w.display_name,w.params)}catch{w=-1}}()),e===null&&(s=S),e}function Yr(){var e;return e=Ln(),e}function Ln(){var e,l,u,f,h,m,v,S;if(v=s,o.substr(s,6).toLowerCase()==="digest"?(e=o.substr(s,6),s+=6):(e=null,d('"Digest"')),e!==null)if(l=M(),l!==null)if(u=nn(),u!==null){for(f=[],S=s,h=le(),h!==null?(m=nn(),m!==null?h=[h,m]:(h=null,s=S)):(h=null,s=S);h!==null;)f.push(h),S=s,h=le(),h!==null?(m=nn(),m!==null?h=[h,m]:(h=null,s=S)):(h=null,s=S);f!==null?e=[e,l,u,f]:(e=null,s=v)}else e=null,s=v;else e=null,s=v;else e=null,s=v;return e===null&&(e=ws()),e}function ws(){var e,l,u,f,h,m,v,S;if(v=s,e=P(),e!==null)if(l=M(),l!==null)if(u=Xt(),u!==null){for(f=[],S=s,h=le(),h!==null?(m=Xt(),m!==null?h=[h,m]:(h=null,s=S)):(h=null,s=S);h!==null;)f.push(h),S=s,h=le(),h!==null?(m=Xt(),m!==null?h=[h,m]:(h=null,s=S)):(h=null,s=S);f!==null?e=[e,l,u,f]:(e=null,s=v)}else e=null,s=v;else e=null,s=v;else e=null,s=v;return e}function Xt(){var e,l,u,f;return f=s,e=P(),e!==null?(l=re(),l!==null?(u=P(),u===null&&(u=Oe()),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e}function nn(){var e;return e=zr(),e===null&&(e=rn(),e===null&&(e=Xr(),e===null&&(e=Zr(),e===null&&(e=ei(),e===null&&(e=ti(),e===null&&(e=on(),e===null&&(e=Xt()))))))),e}function zr(){var e,l,u,f;return f=s,o.substr(s,5).toLowerCase()==="realm"?(e=o.substr(s,5),s+=5):(e=null,d('"realm"')),e!==null?(l=re(),l!==null?(u=Jr(),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e}function Jr(){var e,l;return l=s,e=pe(),e!==null&&(e=function(u,f){w.realm=f}(l,e)),e===null&&(s=l),e}function rn(){var e,l,u,f,h,m,v,S,O;if(S=s,o.substr(s,6).toLowerCase()==="domain"?(e=o.substr(s,6),s+=6):(e=null,d('"domain"')),e!==null)if(l=re(),l!==null)if(u=it(),u!==null)if(f=ln(),f!==null){if(h=[],O=s,v=$(),v!==null)for(m=[];v!==null;)m.push(v),v=$();else m=null;for(m!==null?(v=ln(),v!==null?m=[m,v]:(m=null,s=O)):(m=null,s=O);m!==null;){if(h.push(m),O=s,v=$(),v!==null)for(m=[];v!==null;)m.push(v),v=$();else m=null;m!==null?(v=ln(),v!==null?m=[m,v]:(m=null,s=O)):(m=null,s=O)}h!==null?(m=Ee(),m!==null?e=[e,l,u,f,h,m]:(e=null,s=S)):(e=null,s=S)}else e=null,s=S;else e=null,s=S;else e=null,s=S;else e=null,s=S;return e}function ln(){var e;return e=wn(),e===null&&(e=Ys()),e}function Xr(){var e,l,u,f;return f=s,o.substr(s,5).toLowerCase()==="nonce"?(e=o.substr(s,5),s+=5):(e=null,d('"nonce"')),e!==null?(l=re(),l!==null?(u=Qr(),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e}function Qr(){var e,l;return l=s,e=pe(),e!==null&&(e=function(u,f){w.nonce=f}(l,e)),e===null&&(s=l),e}function Zr(){var e,l,u,f,h;return f=s,h=s,o.substr(s,6).toLowerCase()==="opaque"?(e=o.substr(s,6),s+=6):(e=null,d('"opaque"')),e!==null?(l=re(),l!==null?(u=pe(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){w.opaque=v}(f,e[2])),e===null&&(s=f),e}function ei(){var e,l,u,f,h;return f=s,o.substr(s,5).toLowerCase()==="stale"?(e=o.substr(s,5),s+=5):(e=null,d('"stale"')),e!==null?(l=re(),l!==null?(h=s,o.substr(s,4).toLowerCase()==="true"?(u=o.substr(s,4),s+=4):(u=null,d('"true"')),u!==null&&(u=function(m){w.stale=!0}()),u===null&&(s=h),u===null&&(h=s,o.substr(s,5).toLowerCase()==="false"?(u=o.substr(s,5),s+=5):(u=null,d('"false"')),u!==null&&(u=function(m){w.stale=!1}()),u===null&&(s=h)),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e}function ti(){var e,l,u,f,h;return f=s,h=s,o.substr(s,9).toLowerCase()==="algorithm"?(e=o.substr(s,9),s+=9):(e=null,d('"algorithm"')),e!==null?(l=re(),l!==null?(o.substr(s,3).toLowerCase()==="md5"?(u=o.substr(s,3),s+=3):(u=null,d('"MD5"')),u===null&&(o.substr(s,8).toLowerCase()==="md5-sess"?(u=o.substr(s,8),s+=8):(u=null,d('"MD5-sess"')),u===null&&(u=P())),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){w.algorithm=v.toUpperCase()}(f,e[2])),e===null&&(s=f),e}function on(){var e,l,u,f,h,m,v,S,O,ie;if(S=s,o.substr(s,3).toLowerCase()==="qop"?(e=o.substr(s,3),s+=3):(e=null,d('"qop"')),e!==null)if(l=re(),l!==null)if(u=it(),u!==null){if(O=s,f=$n(),f!==null){for(h=[],ie=s,o.charCodeAt(s)===44?(m=",",s++):(m=null,d('","')),m!==null?(v=$n(),v!==null?m=[m,v]:(m=null,s=ie)):(m=null,s=ie);m!==null;)h.push(m),ie=s,o.charCodeAt(s)===44?(m=",",s++):(m=null,d('","')),m!==null?(v=$n(),v!==null?m=[m,v]:(m=null,s=ie)):(m=null,s=ie);h!==null?f=[f,h]:(f=null,s=O)}else f=null,s=O;f!==null?(h=Ee(),h!==null?e=[e,l,u,f,h]:(e=null,s=S)):(e=null,s=S)}else e=null,s=S;else e=null,s=S;else e=null,s=S;return e}function $n(){var e,l;return l=s,o.substr(s,8).toLowerCase()==="auth-int"?(e=o.substr(s,8),s+=8):(e=null,d('"auth-int"')),e===null&&(o.substr(s,4).toLowerCase()==="auth"?(e=o.substr(s,4),s+=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&&(s=l),e}function qo(){var e,l,u,f,h,m;if(h=s,e=P(),e!==null){for(l=[],m=s,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function Hn(){var e,l,u,f,h,m,v;if(h=s,m=s,e=Fn(),e!==null){for(l=[],v=s,u=le(),u!==null?(f=Fn(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);u!==null;)l.push(u),v=s,u=le(),u!==null?(f=Fn(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);l!==null?e=[e,l]:(e=null,s=m)}else e=null,s=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&&(s=h),e}function Fn(){var e,l,u,f,h,m,v;if(h=s,m=s,e=Lt(),e!==null){for(l=[],v=s,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);u!==null;)l.push(u),v=s,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);l!==null?e=[e,l]:(e=null,s=m)}else e=null,s=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:s,offset:S,parsed:O})}(h)),e===null&&(s=h),e}function si(){var e,l,u,f,h,m,v;if(h=s,m=s,o.substr(s,3).toLowerCase()==="sip"?(e=o.substr(s,3),s+=3):(e=null,d('"SIP"')),e===null&&(e=P()),e!==null){for(l=[],v=s,u=ye(),u!==null?(f=Vn(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);u!==null;)l.push(u),v=s,u=ye(),u!==null?(f=Vn(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);l!==null?e=[e,l]:(e=null,s=m)}else e=null,s=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}}(h,e[0])),e===null&&(s=h),e}function Vn(){var e;return e=ml(),e===null&&(e=We()),e}function ml(){var e,l,u,f,h,m;if(h=s,m=s,o.substr(s,5).toLowerCase()==="cause"?(e=o.substr(s,5),s+=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,s=m)}else e=null,s=m;else e=null,s=m;return e!==null&&(e=function(v,S){w.cause=parseInt(S.join(""))}(h,e[2])),e===null&&(s=h),e}function Bo(){var e,l,u,f,h,m;if(h=s,e=P(),e!==null){for(l=[],m=s,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function jn(){var e,l,u,f,h,m;if(h=s,e=qn(),e!==null){for(l=[],m=s,u=le(),u!==null?(f=qn(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,u=le(),u!==null?(f=qn(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function qn(){var e,l,u,f,h,m;if(h=s,e=Lt(),e!==null){for(l=[],m=s,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function gl(){var e,l,u,f,h,m;if(h=s,e=Bn(),e!==null){for(l=[],m=s,u=ye(),u!==null?(f=Gn(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,u=ye(),u!==null?(f=Gn(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function Bn(){var e,l;return l=s,o.substr(s,6).toLowerCase()==="active"?(e=o.substr(s,6),s+=6):(e=null,d('"active"')),e===null&&(o.substr(s,7).toLowerCase()==="pending"?(e=o.substr(s,7),s+=7):(e=null,d('"pending"')),e===null&&(o.substr(s,10).toLowerCase()==="terminated"?(e=o.substr(s,10),s+=10):(e=null,d('"terminated"')),e===null&&(e=P()))),e!==null&&(e=function(u){w.state=o.substring(s,u)}(l)),e===null&&(s=l),e}function Gn(){var e,l,u,f,h;return f=s,h=s,o.substr(s,6).toLowerCase()==="reason"?(e=o.substr(s,6),s+=6):(e=null,d('"reason"')),e!==null?(l=re(),l!==null?(u=Tl(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){typeof v<"u"&&(w.reason=v)}(f,e[2])),e===null&&(s=f),e===null&&(f=s,h=s,o.substr(s,7).toLowerCase()==="expires"?(e=o.substr(s,7),s+=7):(e=null,d('"expires"')),e!==null?(l=re(),l!==null?(u=Jt(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){typeof v<"u"&&(w.expires=v)}(f,e[2])),e===null&&(s=f),e===null&&(f=s,h=s,o.substr(s,11).toLowerCase()==="retry_after"?(e=o.substr(s,11),s+=11):(e=null,d('"retry_after"')),e!==null?(l=re(),l!==null?(u=Jt(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){typeof v<"u"&&(w.retry_after=v)}(f,e[2])),e===null&&(s=f),e===null&&(e=We()))),e}function Tl(){var e;return o.substr(s,11).toLowerCase()==="deactivated"?(e=o.substr(s,11),s+=11):(e=null,d('"deactivated"')),e===null&&(o.substr(s,9).toLowerCase()==="probation"?(e=o.substr(s,9),s+=9):(e=null,d('"probation"')),e===null&&(o.substr(s,8).toLowerCase()==="rejected"?(e=o.substr(s,8),s+=8):(e=null,d('"rejected"')),e===null&&(o.substr(s,7).toLowerCase()==="timeout"?(e=o.substr(s,7),s+=7):(e=null,d('"timeout"')),e===null&&(o.substr(s,6).toLowerCase()==="giveup"?(e=o.substr(s,6),s+=6):(e=null,d('"giveup"')),e===null&&(o.substr(s,10).toLowerCase()==="noresource"?(e=o.substr(s,10),s+=10):(e=null,d('"noresource"')),e===null&&(o.substr(s,9).toLowerCase()==="invariant"?(e=o.substr(s,9),s+=9):(e=null,d('"invariant"')),e===null&&(e=P()))))))),e}function Go(){var e;return e=j(),e=e!==null?e:"",e}function Wo(){var e,l,u,f,h,m;if(h=s,e=P(),e!==null){for(l=[],m=s,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,u=le(),u!==null?(f=P(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e=e!==null?e:"",e}function ni(){var e,l,u,f,h,m,v;if(h=s,m=s,e=we(),e===null&&(e=Lt()),e!==null){for(l=[],v=s,u=ye(),u!==null?(f=ri(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);u!==null;)l.push(u),v=s,u=ye(),u!==null?(f=ri(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);l!==null?e=[e,l]:(e=null,s=m)}else e=null,s=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&&(s=h),e}function ri(){var e;return e=Kr(),e===null&&(e=We()),e}function Wn(){var e,l,u,f,h,m;if(h=s,e=Os(),e!==null){for(l=[],m=s,u=le(),u!==null?(f=Os(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,u=le(),u!==null?(f=Os(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function Os(){var e,l,u,f,h,m,v,S;if(v=s,e=fi(),e!==null)if(l=M(),l!==null)if(u=di(),u!==null){for(f=[],S=s,h=ye(),h!==null?(m=Kn(),m!==null?h=[h,m]:(h=null,s=S)):(h=null,s=S);h!==null;)f.push(h),S=s,h=ye(),h!==null?(m=Kn(),m!==null?h=[h,m]:(h=null,s=S)):(h=null,s=S);f!==null?e=[e,l,u,f]:(e=null,s=v)}else e=null,s=v;else e=null,s=v;else e=null,s=v;return e}function Kn(){var e;return e=ii(),e===null&&(e=li(),e===null&&(e=oi(),e===null&&(e=ai(),e===null&&(e=ui(),e===null&&(e=We()))))),e}function ii(){var e,l,u,f,h;return f=s,h=s,o.substr(s,3).toLowerCase()==="ttl"?(e=o.substr(s,3),s+=3):(e=null,d('"ttl"')),e!==null?(l=re(),l!==null?(u=mi(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){w.ttl=v}(f,e[2])),e===null&&(s=f),e}function li(){var e,l,u,f,h;return f=s,h=s,o.substr(s,5).toLowerCase()==="maddr"?(e=o.substr(s,5),s+=5):(e=null,d('"maddr"')),e!==null?(l=re(),l!==null?(u=is(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){w.maddr=v}(f,e[2])),e===null&&(s=f),e}function oi(){var e,l,u,f,h;return f=s,h=s,o.substr(s,8).toLowerCase()==="received"?(e=o.substr(s,8),s+=8):(e=null,d('"received"')),e!==null?(l=re(),l!==null?(u=Bt(),u===null&&(u=me()),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){w.received=v}(f,e[2])),e===null&&(s=f),e}function ai(){var e,l,u,f,h;return f=s,h=s,o.substr(s,6).toLowerCase()==="branch"?(e=o.substr(s,6),s+=6):(e=null,d('"branch"')),e!==null?(l=re(),l!==null?(u=P(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){w.branch=v}(f,e[2])),e===null&&(s=f),e}function ui(){var e,l,u,f,h;return f=s,o.substr(s,5).toLowerCase()==="rport"?(e=o.substr(s,5),s+=5):(e=null,d('"rport"')),e!==null?(h=s,l=re(),l!==null?(u=ci(),u!==null?l=[l,u]:(l=null,s=h)):(l=null,s=h),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e}function ci(){var e,l,u,f,h,m,v;return m=s,v=s,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?(h=T(),h=h!==null?h:"",h!==null?e=[e,l,u,f,h]:(e=null,s=v)):(e=null,s=v)):(e=null,s=v)):(e=null,s=v)):(e=null,s=v),e!==null&&(e=function(S,O){w.rport=parseInt(O.join(""))}(m,e)),e===null&&(s=m),e}function fi(){var e,l,u,f,h,m;return m=s,e=_i(),e!==null?(l=B(),l!==null?(u=P(),u!==null?(f=B(),f!==null?(h=hi(),h!==null?e=[e,l,u,f,h]:(e=null,s=m)):(e=null,s=m)):(e=null,s=m)):(e=null,s=m)):(e=null,s=m),e}function _i(){var e,l;return l=s,o.substr(s,3).toLowerCase()==="sip"?(e=o.substr(s,3),s+=3):(e=null,d('"SIP"')),e===null&&(e=P()),e!==null&&(e=function(u,f){w.protocol=f}(l,e)),e===null&&(s=l),e}function hi(){var e,l;return l=s,o.substr(s,3).toLowerCase()==="udp"?(e=o.substr(s,3),s+=3):(e=null,d('"UDP"')),e===null&&(o.substr(s,3).toLowerCase()==="tcp"?(e=o.substr(s,3),s+=3):(e=null,d('"TCP"')),e===null&&(o.substr(s,3).toLowerCase()==="tls"?(e=o.substr(s,3),s+=3):(e=null,d('"TLS"')),e===null&&(o.substr(s,4).toLowerCase()==="sctp"?(e=o.substr(s,4),s+=4):(e=null,d('"SCTP"')),e===null&&(e=P())))),e!==null&&(e=function(u,f){w.transport=f}(l,e)),e===null&&(s=l),e}function di(){var e,l,u,f,h;return f=s,e=pi(),e!==null?(h=s,l=tt(),l!==null?(u=Yn(),u!==null?l=[l,u]:(l=null,s=h)):(l=null,s=h),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,s=f)):(e=null,s=f),e}function pi(){var e,l;return l=s,e=Bt(),e===null&&(e=qs(),e===null&&(e=js())),e!==null&&(e=function(u){w.host=o.substring(s,u)}(l)),e===null&&(s=l),e}function Yn(){var e,l,u,f,h,m,v;return m=s,v=s,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?(h=T(),h=h!==null?h:"",h!==null?e=[e,l,u,f,h]:(e=null,s=v)):(e=null,s=v)):(e=null,s=v)):(e=null,s=v)):(e=null,s=v),e!==null&&(e=function(S,O){w.port=parseInt(O.join(""))}(m,e)),e===null&&(s=m),e}function mi(){var e,l,u,f,h;return f=s,h=s,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,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){return parseInt(v.join(""))}(f,e)),e===null&&(s=f),e}function Ko(){var e;return e=Ln(),e}function vl(){var e,l,u,f,h,m;if(h=s,e=zn(),e!==null){for(l=[],m=s,u=ye(),u!==null?(f=Jn(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,u=ye(),u!==null?(f=Jn(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function zn(){var e,l;return l=s,e=Jt(),e!==null&&(e=function(u,f){w.expires=f}(l,e)),e===null&&(s=l),e}function Jn(){var e;return e=El(),e===null&&(e=We()),e}function El(){var e,l,u,f,h;return f=s,h=s,o.substr(s,9).toLowerCase()==="refresher"?(e=o.substr(s,9),s+=9):(e=null,d('"refresher"')),e!==null?(l=re(),l!==null?(o.substr(s,3).toLowerCase()==="uac"?(u=o.substr(s,3),s+=3):(u=null,d('"uac"')),u===null&&(o.substr(s,3).toLowerCase()==="uas"?(u=o.substr(s,3),s+=3):(u=null,d('"uas"'))),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){w.refresher=v.toLowerCase()}(f,e[2])),e===null&&(s=f),e}function Sl(){var e,l,u,f;return f=s,e=P(),e!==null?(l=q(),l!==null?(u=yl(),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e}function yl(){var e,l;for(e=[],l=z(),l===null&&(l=J(),l===null&&(l=M()));l!==null;)e.push(l),l=z(),l===null&&(l=J(),l===null&&(l=M()));return e}function Yo(){var e,l;for(e=[],l=R();l!==null;)e.push(l),l=R();return e}function Al(){var e,l,u;return u=s,o.substr(s,5)==="uuid:"?(e="uuid:",s+=5):(e=null,d('"uuid:"')),e!==null?(l=$t(),l!==null?e=[e,l]:(e=null,s=u)):(e=null,s=u),e}function $t(){var e,l,u,f,h,m,v,S,O,ie,Ne;return ie=s,Ne=s,e=gi(),e!==null?(o.charCodeAt(s)===45?(l="-",s++):(l=null,d('"-"')),l!==null?(u=Ht(),u!==null?(o.charCodeAt(s)===45?(f="-",s++):(f=null,d('"-"')),f!==null?(h=Ht(),h!==null?(o.charCodeAt(s)===45?(m="-",s++):(m=null,d('"-"')),m!==null?(v=Ht(),v!==null?(o.charCodeAt(s)===45?(S="-",s++):(S=null,d('"-"')),S!==null?(O=Cl(),O!==null?e=[e,l,u,f,h,m,v,S,O]:(e=null,s=Ne)):(e=null,s=Ne)):(e=null,s=Ne)):(e=null,s=Ne)):(e=null,s=Ne)):(e=null,s=Ne)):(e=null,s=Ne)):(e=null,s=Ne)):(e=null,s=Ne),e!==null&&(e=function(Rt,Ds){w=o.substring(s+5,Rt)}(ie,e[0])),e===null&&(s=ie),e}function Ht(){var e,l,u,f,h;return h=s,e=y(),e!==null?(l=y(),l!==null?(u=y(),u!==null?(f=y(),f!==null?e=[e,l,u,f]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e}function gi(){var e,l,u;return u=s,e=Ht(),e!==null?(l=Ht(),l!==null?e=[e,l]:(e=null,s=u)):(e=null,s=u),e}function Cl(){var e,l,u,f;return f=s,e=Ht(),e!==null?(l=Ht(),l!==null?(u=Ht(),u!==null?e=[e,l,u]:(e=null,s=f)):(e=null,s=f)):(e=null,s=f),e}function zo(){var e,l,u,f,h,m,v;if(h=s,m=s,e=we(),e===null&&(e=Lt()),e!==null){for(l=[],v=s,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);u!==null;)l.push(u),v=s,u=ye(),u!==null?(f=We(),f!==null?u=[u,f]:(u=null,s=v)):(u=null,s=v);l!==null?e=[e,l]:(e=null,s=m)}else e=null,s=m;return e!==null&&(e=function(S){try{w=new b(w.uri,w.display_name,w.params)}catch{w=-1}}()),e===null&&(s=h),e}function Rl(){var e,l,u,f,h,m;if(h=s,e=Xn(),e!==null){for(l=[],m=s,u=ye(),u!==null?(f=Qn(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);u!==null;)l.push(u),m=s,u=ye(),u!==null?(f=Qn(),f!==null?u=[u,f]:(u=null,s=m)):(u=null,s=m);l!==null?e=[e,l]:(e=null,s=h)}else e=null,s=h;return e}function Xn(){var e,l,u,f,h,m;return f=s,h=s,e=ee(),e!==null?(m=s,o.charCodeAt(s)===64?(l="@",s++):(l=null,d('"@"')),l!==null?(u=ee(),u!==null?l=[l,u]:(l=null,s=m)):(l=null,s=m),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(v){w.call_id=o.substring(s,v)}(f)),e===null&&(s=f),e}function Qn(){var e;return e=Ti(),e===null&&(e=vi(),e===null&&(e=Il(),e===null&&(e=We()))),e}function Ti(){var e,l,u,f,h;return f=s,h=s,o.substr(s,6)==="to-tag"?(e="to-tag",s+=6):(e=null,d('"to-tag"')),e!==null?(l=re(),l!==null?(u=P(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){w.to_tag=v}(f,e[2])),e===null&&(s=f),e}function vi(){var e,l,u,f,h;return f=s,h=s,o.substr(s,8)==="from-tag"?(e="from-tag",s+=8):(e=null,d('"from-tag"')),e!==null?(l=re(),l!==null?(u=P(),u!==null?e=[e,l,u]:(e=null,s=h)):(e=null,s=h)):(e=null,s=h),e!==null&&(e=function(m,v){w.from_tag=v}(f,e[2])),e===null&&(s=f),e}function Il(){var e,l;return l=s,o.substr(s,10)==="early-only"?(e="early-only",s+=10):(e=null,d('"early-only"')),e!==null&&(e=function(u){w.early_only=!0}()),e===null&&(s=l),e}function Jo(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 bl(){for(var e=1,l=1,u=!1,f=0;f<Math.max(s,p);f++){var h=o.charAt(f);h===`
4
- `?(u||e++,l=1,u=!1):h==="\r"||h==="\u2028"||h==="\u2029"?(e++,l=1,u=!0):(l++,u=!1)}return{line:e,column:l}}var os=Fs(),b=du(),w={},Ei=t[a]();if(Ei===null||s!==o.length){var Si=Math.max(s,p),wl=Si<o.length?o.charAt(Si):null,i=bl();return new this.SyntaxError(Jo(_),wl,Si,i.line,i.column),-1}return w},toSource:function(){return this._source}};return n.SyntaxError=function(r,o,a,t,s){function p(_,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=o,this.message=p(r,o),this.offset=a,this.line=t,this.column=s},n.SyntaxError.prototype=Error.prototype,n}()),Qo}var Zo,xu;function Fs(){if(xu)return Zo;xu=1;function c(d,g){var T;if(typeof Symbol>"u"||d[Symbol.iterator]==null){if(Array.isArray(d)||(T=n(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,R=!1,I;return{s:function(){T=d[Symbol.iterator]()},n:function(){var L=T.next();return A=L.done,L},e:function(L){R=!0,I=L},f:function(){try{!A&&T.return!=null&&T.return()}finally{if(R)throw I}}}}function n(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 o(d,g){if(!(d instanceof g))throw new TypeError("Cannot call a class as a function")}function a(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&&a(d.prototype,g),T&&a(d,T),d}var s=rt,p=Ct(),_=ns();return Zo=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]:{},R=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};if(o(this,d),!E)throw new TypeError('missing or invalid "host" parameter');this._parameters={},this._headers={},this._scheme=g||s.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 $ in R)Object.prototype.hasOwnProperty.call(R,$)&&this.setHeader($,R[$])}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[p.headerize(T)]=Array.isArray(E)?E:[E]}},{key:"getHeader",value:function(T){if(T)return this._headers[p.headerize(T)]}},{key:"hasHeader",value:function(T){if(T)return this._headers.hasOwnProperty(p.headerize(T))&&!0||!1}},{key:"deleteHeader",value:function(T){if(T=p.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(p.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 R=c(this._headers[A]),I;try{for(R.s();!(I=R.n()).done;){var $=I.value;T.push("".concat(A,"=").concat($))}}catch(L){R.e(L)}finally{R.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(p.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}(),Zo}var Mu;function Ct(){if(Mu)return Qe;Mu=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 n(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(ae){throw ae},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 R=!0,I=!1,$;return{s:function(){E=g[Symbol.iterator]()},n:function(){var ae=E.next();return R=ae.done,ae},e:function(ae){I=!0,$=ae},f:function(){try{!R&&E.return!=null&&E.return()}finally{if(I)throw $}}}}function r(g,T){if(g){if(typeof g=="string")return o(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 o(g,T)}}function o(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 a=rt,t=Fs(),s=ns();Qe.str_utf8_length=function(g){return unescape(encodeURIComponent(g)).length};var p=Qe.isFunction=function(g){return g!==void 0?Object.prototype.toString.call(g)==="[object Function]":!1};Qe.isString=function(g){return g!==void 0?Object.prototype.toString.call(g)==="[object String]":!1},Qe.isDecimal=function(g){return!isNaN(g)&&parseFloat(g)===parseInt(g,10)},Qe.isEmpty=function(g){return g===null||g===""||g===void 0||Array.isArray(g)&&g.length===0||typeof g=="number"&&isNaN(g)},Qe.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,R=E;A<R.length;A++){var I=R[A];if(p(g[I]))return!1}return!0};var _=Qe.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};Qe.newTag=function(){return _(10)},Qe.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},Qe.hostType=function(g){if(g){if(g=s.parse(g,"host"),g!==-1)return g.host_type}else return};var d=Qe.escapeUser=function(g){return encodeURIComponent(decodeURIComponent(g)).replace(/%3A/ig,":").replace(/%2B/ig,"+").replace(/%3F/ig,"?").replace(/%2F/ig,"/")};return Qe.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(a.SIP,":").concat(d(y),"@").concat(A);var R;return(R=t.parse(g))?R:void 0}else return}else return},Qe.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,R;for(R=0;R<A;R++)R!==0&&(y+="-"),y+=E[R].charAt(0).toUpperCase()+E[R].substring(1);return T[y]&&(y=T[y]),y},Qe.sipErrorCause=function(g){for(var T in a.SIP_ERROR_CAUSES)if(a.SIP_ERROR_CAUSES[T].indexOf(g)!==-1)return a.causes[T];return a.causes.SIP_FAILURE_CODE},Qe.getRandomTestNetIP=function(){function g(T,E){return Math.floor(Math.random()*(E-T+1)+T)}return"192.0.2.".concat(g(1,254))},Qe.calculateMD5=function(g){function T(pe,ue){return pe<<ue|pe>>>32-ue}function E(pe,ue){var de=pe&2147483648,we=ue&2147483648,De=pe&1073741824,Xe=ue&1073741824,Le=(pe&1073741823)+(ue&1073741823);return De&Xe?Le^2147483648^de^we:De|Xe?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 R(pe,ue,de){return pe^ue^de}function I(pe,ue,de){return ue^(pe|~de)}function $(pe,ue,de,we,De,Xe,Le){return pe=E(pe,E(E(y(ue,de,we),De),Le)),E(T(pe,Xe),ue)}function L(pe,ue,de,we,De,Xe,Le){return pe=E(pe,E(E(A(ue,de,we),De),Le)),E(T(pe,Xe),ue)}function ae(pe,ue,de,we,De,Xe,Le){return pe=E(pe,E(E(R(ue,de,we),De),Le)),E(T(pe,Xe),ue)}function N(pe,ue,de,we,De,Xe,Le){return pe=E(pe,E(E(I(ue,de,we),De),Le)),E(T(pe,Xe),ue)}function F(pe){for(var ue,de=pe.length,we=de+8,De=(we-we%64)/64,Xe=(De+1)*16,Le=new Array(Xe-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[Xe-2]=de<<3,Le[Xe-1]=de>>>29,Le}function Se(pe){var ue="",de="",we,De;for(De=0;De<=3;De++)we=pe>>>De*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,q,j,z,H,J,U,P,se,et=7,ee=12,W=17,B=22,re=5,ge=9,be=14,xe=20,Ce=4,le=11,ye=16,tt=23,it=6,Ee=10,Ae=15,Ie=21;for(g=ve(g),M=F(g),J=1732584193,U=4023233417,P=2562383102,se=271733878,D=0;D<M.length;D+=16)q=J,j=U,z=P,H=se,J=$(J,U,P,se,M[D+0],et,3614090360),se=$(se,J,U,P,M[D+1],ee,3905402710),P=$(P,se,J,U,M[D+2],W,606105819),U=$(U,P,se,J,M[D+3],B,3250441966),J=$(J,U,P,se,M[D+4],et,4118548399),se=$(se,J,U,P,M[D+5],ee,1200080426),P=$(P,se,J,U,M[D+6],W,2821735955),U=$(U,P,se,J,M[D+7],B,4249261313),J=$(J,U,P,se,M[D+8],et,1770035416),se=$(se,J,U,P,M[D+9],ee,2336552879),P=$(P,se,J,U,M[D+10],W,4294925233),U=$(U,P,se,J,M[D+11],B,2304563134),J=$(J,U,P,se,M[D+12],et,1804603682),se=$(se,J,U,P,M[D+13],ee,4254626195),P=$(P,se,J,U,M[D+14],W,2792965006),U=$(U,P,se,J,M[D+15],B,1236535329),J=L(J,U,P,se,M[D+1],re,4129170786),se=L(se,J,U,P,M[D+6],ge,3225465664),P=L(P,se,J,U,M[D+11],be,643717713),U=L(U,P,se,J,M[D+0],xe,3921069994),J=L(J,U,P,se,M[D+5],re,3593408605),se=L(se,J,U,P,M[D+10],ge,38016083),P=L(P,se,J,U,M[D+15],be,3634488961),U=L(U,P,se,J,M[D+4],xe,3889429448),J=L(J,U,P,se,M[D+9],re,568446438),se=L(se,J,U,P,M[D+14],ge,3275163606),P=L(P,se,J,U,M[D+3],be,4107603335),U=L(U,P,se,J,M[D+8],xe,1163531501),J=L(J,U,P,se,M[D+13],re,2850285829),se=L(se,J,U,P,M[D+2],ge,4243563512),P=L(P,se,J,U,M[D+7],be,1735328473),U=L(U,P,se,J,M[D+12],xe,2368359562),J=ae(J,U,P,se,M[D+5],Ce,4294588738),se=ae(se,J,U,P,M[D+8],le,2272392833),P=ae(P,se,J,U,M[D+11],ye,1839030562),U=ae(U,P,se,J,M[D+14],tt,4259657740),J=ae(J,U,P,se,M[D+1],Ce,2763975236),se=ae(se,J,U,P,M[D+4],le,1272893353),P=ae(P,se,J,U,M[D+7],ye,4139469664),U=ae(U,P,se,J,M[D+10],tt,3200236656),J=ae(J,U,P,se,M[D+13],Ce,681279174),se=ae(se,J,U,P,M[D+0],le,3936430074),P=ae(P,se,J,U,M[D+3],ye,3572445317),U=ae(U,P,se,J,M[D+6],tt,76029189),J=ae(J,U,P,se,M[D+9],Ce,3654602809),se=ae(se,J,U,P,M[D+12],le,3873151461),P=ae(P,se,J,U,M[D+15],ye,530742520),U=ae(U,P,se,J,M[D+2],tt,3299628645),J=N(J,U,P,se,M[D+0],it,4096336452),se=N(se,J,U,P,M[D+7],Ee,1126891415),P=N(P,se,J,U,M[D+14],Ae,2878612391),U=N(U,P,se,J,M[D+5],Ie,4237533241),J=N(J,U,P,se,M[D+12],it,1700485571),se=N(se,J,U,P,M[D+3],Ee,2399980690),P=N(P,se,J,U,M[D+10],Ae,4293915773),U=N(U,P,se,J,M[D+1],Ie,2240044497),J=N(J,U,P,se,M[D+8],it,1873313359),se=N(se,J,U,P,M[D+15],Ee,4264355552),P=N(P,se,J,U,M[D+6],Ae,2734768916),U=N(U,P,se,J,M[D+13],Ie,1309151649),J=N(J,U,P,se,M[D+4],it,4149444226),se=N(se,J,U,P,M[D+11],Ee,3174756917),P=N(P,se,J,U,M[D+2],Ae,718787259),U=N(U,P,se,J,M[D+9],Ie,3951481745),J=E(J,q),U=E(U,j),P=E(P,z),se=E(se,H);var Oe=Se(J)+Se(U)+Se(P)+Se(se);return Oe.toLowerCase()},Qe.closeMediaStream=function(g){if(g)try{var T;if(g.getTracks){T=g.getTracks();var E=n(T),y;try{for(E.s();!(y=E.n()).done;){var A=y.value;A.stop()}}catch(F){E.e(F)}finally{E.f()}}else{T=g.getAudioTracks();var R=n(T),I;try{for(R.s();!(I=R.n()).done;){var $=I.value;$.stop()}}catch(F){R.e(F)}finally{R.f()}T=g.getVideoTracks();var L=n(T),ae;try{for(L.s();!(ae=L.n()).done;){var N=ae.value;N.stop()}}catch(F){L.e(F)}finally{L.f()}}}catch{(typeof g.stop=="function"||c(g.stop)==="object")&&g.stop()}},Qe.cloneArray=function(g){return g&&g.slice()||[]},Qe.cloneObject=function(g){var T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return g&&Object.assign({},g)||T},Qe}var pu={exports:{}},or=typeof Reflect=="object"?Reflect:null,ku=or&&typeof or.apply=="function"?or.apply:function(n,r,o){return Function.prototype.apply.call(n,r,o)},ro;or&&typeof or.ownKeys=="function"?ro=or.ownKeys:Object.getOwnPropertySymbols?ro=function(n){return Object.getOwnPropertyNames(n).concat(Object.getOwnPropertySymbols(n))}:ro=function(n){return Object.getOwnPropertyNames(n)};function G_(c){console&&console.warn&&console.warn(c)}var Of=Number.isNaN||function(n){return n!==n};function ke(){ke.init.call(this)}pu.exports=ke;pu.exports.once=z_;ke.EventEmitter=ke;ke.prototype._events=void 0;ke.prototype._eventsCount=0;ke.prototype._maxListeners=void 0;var Lu=10;function No(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 Lu},set:function(c){if(typeof c!="number"||c<0||Of(c))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+c+".");Lu=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(n){if(typeof n!="number"||n<0||Of(n))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+n+".");return this._maxListeners=n,this};function Df(c){return c._maxListeners===void 0?ke.defaultMaxListeners:c._maxListeners}ke.prototype.getMaxListeners=function(){return Df(this)};ke.prototype.emit=function(n){for(var r=[],o=1;o<arguments.length;o++)r.push(arguments[o]);var a=n==="error",t=this._events;if(t!==void 0)a=a&&t.error===void 0;else if(!a)return!1;if(a){var s;if(r.length>0&&(s=r[0]),s instanceof Error)throw s;var p=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw p.context=s,p}var _=t[n];if(_===void 0)return!1;if(typeof _=="function")ku(_,this,r);else for(var d=_.length,g=Mf(_,d),o=0;o<d;++o)ku(g[o],this,r);return!0};function Nf(c,n,r,o){var a,t,s;if(No(r),t=c._events,t===void 0?(t=c._events=Object.create(null),c._eventsCount=0):(t.newListener!==void 0&&(c.emit("newListener",n,r.listener?r.listener:r),t=c._events),s=t[n]),s===void 0)s=t[n]=r,++c._eventsCount;else if(typeof s=="function"?s=t[n]=o?[r,s]:[s,r]:o?s.unshift(r):s.push(r),a=Df(c),a>0&&s.length>a&&!s.warned){s.warned=!0;var p=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(n)+" listeners added. Use emitter.setMaxListeners() to increase limit");p.name="MaxListenersExceededWarning",p.emitter=c,p.type=n,p.count=s.length,G_(p)}return c}ke.prototype.addListener=function(n,r){return Nf(this,n,r,!1)};ke.prototype.on=ke.prototype.addListener;ke.prototype.prependListener=function(n,r){return Nf(this,n,r,!0)};function W_(){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 Uf(c,n,r){var o={fired:!1,wrapFn:void 0,target:c,type:n,listener:r},a=W_.bind(o);return a.listener=r,o.wrapFn=a,a}ke.prototype.once=function(n,r){return No(r),this.on(n,Uf(this,n,r)),this};ke.prototype.prependOnceListener=function(n,r){return No(r),this.prependListener(n,Uf(this,n,r)),this};ke.prototype.removeListener=function(n,r){var o,a,t,s,p;if(No(r),a=this._events,a===void 0)return this;if(o=a[n],o===void 0)return this;if(o===r||o.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete a[n],a.removeListener&&this.emit("removeListener",n,o.listener||r));else if(typeof o!="function"){for(t=-1,s=o.length-1;s>=0;s--)if(o[s]===r||o[s].listener===r){p=o[s].listener,t=s;break}if(t<0)return this;t===0?o.shift():K_(o,t),o.length===1&&(a[n]=o[0]),a.removeListener!==void 0&&this.emit("removeListener",n,p||r)}return this};ke.prototype.off=ke.prototype.removeListener;ke.prototype.removeAllListeners=function(n){var r,o,a;if(o=this._events,o===void 0)return this;if(o.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):o[n]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete o[n]),this;if(arguments.length===0){var t=Object.keys(o),s;for(a=0;a<t.length;++a)s=t[a],s!=="removeListener"&&this.removeAllListeners(s);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(r=o[n],typeof r=="function")this.removeListener(n,r);else if(r!==void 0)for(a=r.length-1;a>=0;a--)this.removeListener(n,r[a]);return this};function Pf(c,n,r){var o=c._events;if(o===void 0)return[];var a=o[n];return a===void 0?[]:typeof a=="function"?r?[a.listener||a]:[a]:r?Y_(a):Mf(a,a.length)}ke.prototype.listeners=function(n){return Pf(this,n,!0)};ke.prototype.rawListeners=function(n){return Pf(this,n,!1)};ke.listenerCount=function(c,n){return typeof c.listenerCount=="function"?c.listenerCount(n):xf.call(c,n)};ke.prototype.listenerCount=xf;function xf(c){var n=this._events;if(n!==void 0){var r=n[c];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}ke.prototype.eventNames=function(){return this._eventsCount>0?ro(this._events):[]};function Mf(c,n){for(var r=new Array(n),o=0;o<n;++o)r[o]=c[o];return r}function K_(c,n){for(;n+1<c.length;n++)c[n]=c[n+1];c.pop()}function Y_(c){for(var n=new Array(c.length),r=0;r<n.length;++r)n[r]=c[r].listener||c[r];return n}function z_(c,n){return new Promise(function(r,o){function a(s){c.removeListener(n,t),o(s)}function t(){typeof c.removeListener=="function"&&c.removeListener("error",a),r([].slice.call(arguments))}kf(c,n,t,{once:!0}),n!=="error"&&J_(c,a,{once:!0})})}function J_(c,n,r){typeof c.on=="function"&&kf(c,"error",n,r)}function kf(c,n,r,o){if(typeof c.on=="function")o.once?c.once(n,r):c.on(n,r);else if(typeof c.addEventListener=="function")c.addEventListener(n,function a(t){o.once&&c.removeEventListener(n,a),r(t)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof c)}var ct=pu.exports,za={exports:{}},ea,$u;function X_(){if($u)return ea;$u=1;var c=1e3,n=c*60,r=n*60,o=r*24,a=o*7,t=o*365.25;ea=function(g,T){T=T||{};var E=typeof g;if(E==="string"&&g.length>0)return s(g);if(E==="number"&&isFinite(g))return T.long?_(g):p(g);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(g))};function s(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*a;case"days":case"day":case"d":return E*o;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*n;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 p(g){var T=Math.abs(g);return T>=o?Math.round(g/o)+"d":T>=r?Math.round(g/r)+"h":T>=n?Math.round(g/n)+"m":T>=c?Math.round(g/c)+"s":g+"ms"}function _(g){var T=Math.abs(g);return T>=o?d(g,T,o,"day"):T>=r?d(g,T,r,"hour"):T>=n?d(g,T,n,"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 ea}function Q_(c){r.debug=r,r.default=r,r.coerce=_,r.disable=t,r.enable=a,r.enabled=s,r.humanize=X_(),r.destroy=d,Object.keys(c).forEach(g=>{r[g]=c[g]}),r.names=[],r.skips=[],r.formatters={};function n(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=n;function r(g){let T,E=null,y,A;function R(...I){if(!R.enabled)return;const $=R,L=Number(new Date),ae=L-(T||L);$.diff=ae,$.prev=T,$.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($,D),I.splice(N,1),N--}return Se}),r.formatArgs.call($,I),($.log||r.log).apply($,I)}return R.namespace=g,R.useColors=r.useColors(),R.color=r.selectColor(g),R.extend=o,R.destroy=r.destroy,Object.defineProperty(R,"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(R),R}function o(g,T){const E=r(this.namespace+(typeof T>"u"?":":T)+g);return E.log=this.log,E}function a(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(p),...r.skips.map(p).map(T=>"-"+T)].join(",");return r.enable(""),g}function s(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 p(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 Z_=Q_;(function(c,n){n.formatArgs=o,n.save=a,n.load=t,n.useColors=r,n.storage=s(),n.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`."))}})(),n.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 o(_){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)}n.log=console.debug||console.log||(()=>{});function a(_){try{_?n.storage.setItem("debug",_):n.storage.removeItem("debug")}catch{}}function t(){let _;try{_=n.storage.getItem("debug")}catch{}return!_&&typeof process<"u"&&"env"in process&&(_=process.env.DEBUG),_}function s(){try{return localStorage}catch{}}c.exports=Z_(n);const{formatters:p}=c.exports;p.j=function(_){try{return JSON.stringify(_)}catch(d){return"[UnexpectedJSONParseError]: "+d.message}}})(za,za.exports);var ur=za.exports;function eh(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function Hu(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function th(c,n,r){return n&&Hu(c.prototype,n),r&&Hu(c,r),c}var Zn=ur,er="JsSIP",ft=function(){function c(n){eh(this,c),n?(this._debug=Zn.default("".concat(er,":").concat(n)),this._warn=Zn.default("".concat(er,":WARN:").concat(n)),this._error=Zn.default("".concat(er,":ERROR:").concat(n))):(this._debug=Zn.default(er),this._warn=Zn.default("".concat(er,":WARN")),this._error=Zn.default("".concat(er,":ERROR"))),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}return th(c,[{key:"debug",get:function(){return this._debug}},{key:"warn",get:function(){return this._warn}},{key:"error",get:function(){return this._error}}]),c}(),Nt={},Lf={},$f={exports:{}},Fu=$f.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 n="candidate:%s %d %s %d %s %d typ %s";return n+=c.raddr!=null?" raddr %s rport %d":"%v%v",n+=c.tcptype!=null?" tcptype %s":"%v",c.generation!=null&&(n+=" generation %d"),n+=c["network-id"]!=null?" network-id %d":"%v",n+=c["network-cost"]!=null?" network-cost %d":"%v",n}},{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 n="ssrc:%d";return c.attribute!=null&&(n+=" %s",c.value!=null&&(n+=":%s")),n}},{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 n="mediaclk:";return n+=c.id!=null?"id=%s %s":"%v%s",n+=c.mediaClockValue!=null?"=%s":"",n+=c.rateNumerator!=null?" rate=%s":"",n+=c.rateDenominator!=null?"/%s":"",n}},{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(Fu).forEach(function(c){var n=Fu[c];n.forEach(function(r){r.reg||(r.reg=/(.*)/),r.format||(r.format="%s")})});var Hf=$f.exports;(function(c){var n=function(p){return String(Number(p))===p?Number(p):p},r=function(p,_,d,g){if(g&&!d)_[g]=n(p[1]);else for(var T=0;T<d.length;T+=1)p[T+1]!=null&&(_[d[T]]=n(p[T+1]))},o=function(p,_,d){var g=p.name&&p.names;p.push&&!_[p.push]?_[p.push]=[]:g&&!_[p.name]&&(_[p.name]={});var T=p.push?{}:g?_[p.name]:_;r(d.match(p.reg),T,p.names,p.name),p.push&&_[p.push].push(T)},a=Hf,t=RegExp.prototype.test.bind(/^([a-z])=(.*)/);c.parse=function(p){var _={},d=[],g=_;return p.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<(a[E]||[]).length;A+=1){var R=a[E][A];if(R.reg.test(y))return o(R,g,y)}}),_.media=d,_};var s=function(p,_){var d=_.split(/=(.+)/,2);return d.length===2?p[d[0]]=n(d[1]):d.length===1&&_.length>1&&(p[d[0]]=void 0),p};c.parseParams=function(p){return p.split(/;\s?/).reduce(s,{})},c.parseFmtpConfig=c.parseParams,c.parsePayloads=function(p){return p.toString().split(" ").map(Number)},c.parseRemoteCandidates=function(p){for(var _=[],d=p.split(" ").map(n),g=0;g<d.length;g+=3)_.push({component:d[g],ip:d[g+1],port:d[g+2]});return _},c.parseImageAttributes=function(p){return p.split(" ").map(function(_){return _.substring(1,_.length-1).split(",").reduce(s,{})})},c.parseSimulcastStreamList=function(p){return p.split(";").map(function(_){return _.split(",").map(function(d){var g,T=!1;return d[0]!=="~"?g=n(d):(g=n(d.substring(1,d.length)),T=!0),{scid:g,paused:T}})})}})(Lf);var ta=Hf,sh=/%[sdv%]/g,nh=function(c){var n=1,r=arguments,o=r.length;return c.replace(sh,function(a){if(n>=o)return a;var t=r[n];switch(n+=1,a){case"%%":return"%";case"%s":return String(t);case"%d":return Number(t);case"%v":return""}})},yi=function(c,n,r){var o=n.format instanceof Function?n.format(n.push?r:r[n.name]):n.format,a=[c+"="+o];if(n.names)for(var t=0;t<n.names.length;t+=1){var s=n.names[t];n.name?a.push(r[n.name][s]):a.push(r[n.names[t]])}else a.push(r[n.name]);return nh.apply(null,a)},rh=["v","o","s","i","u","e","p","c","b","t","r","z","a"],ih=["i","c","b","a"],lh=function(c,n){n=n||{},c.version==null&&(c.version=0),c.name==null&&(c.name=" "),c.media.forEach(function(t){t.payloads==null&&(t.payloads="")});var r=n.outerOrder||rh,o=n.innerOrder||ih,a=[];return r.forEach(function(t){ta[t].forEach(function(s){s.name in c&&c[s.name]!=null?a.push(yi(t,s,c)):s.push in c&&c[s.push]!=null&&c[s.push].forEach(function(p){a.push(yi(t,s,p))})})}),c.media.forEach(function(t){a.push(yi("m",ta.m[0],t)),o.forEach(function(s){ta[s].forEach(function(p){p.name in t&&t[p.name]!=null?a.push(yi(s,p,t)):p.push in t&&t[p.push]!=null&&t[p.push].forEach(function(_){a.push(yi(s,p,_))})})})}),a.join(`\r
3
+ `,n+=2):(e=null,d('"\\r\\n"')),e}function T(){var e;return/^[0-9]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[0-9]")),e}function E(){var e;return/^[a-zA-Z]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[a-zA-Z]")),e}function y(){var e;return/^[0-9a-fA-F]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[0-9a-fA-F]")),e}function A(){var e;return e=$(),e===null&&(e=L()),e}function R(){var e;return/^[\0-\xFF]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[\\0-\\xFF]")),e}function I(){var e;return/^["]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d('["]')),e}function $(){var e;return o.charCodeAt(n)===32?(e=" ",n++):(e=null,d('" "')),e}function L(){var e;return o.charCodeAt(n)===9?(e=" ",n++):(e=null,d('"\\t"')),e}function ae(){var e;return/^[a-zA-Z0-9]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[a-zA-Z0-9]")),e}function N(){var e;return o.charCodeAt(n)===59?(e=";",n++):(e=null,d('";"')),e===null&&(o.charCodeAt(n)===47?(e="/",n++):(e=null,d('"/"')),e===null&&(o.charCodeAt(n)===63?(e="?",n++):(e=null,d('"?"')),e===null&&(o.charCodeAt(n)===58?(e=":",n++):(e=null,d('":"')),e===null&&(o.charCodeAt(n)===64?(e="@",n++):(e=null,d('"@"')),e===null&&(o.charCodeAt(n)===38?(e="&",n++):(e=null,d('"&"')),e===null&&(o.charCodeAt(n)===61?(e="=",n++):(e=null,d('"="')),e===null&&(o.charCodeAt(n)===43?(e="+",n++):(e=null,d('"+"')),e===null&&(o.charCodeAt(n)===36?(e="$",n++):(e=null,d('"$"')),e===null&&(o.charCodeAt(n)===44?(e=",",n++):(e=null,d('","'))))))))))),e}function F(){var e;return e=ae(),e===null&&(e=Se()),e}function Se(){var e;return o.charCodeAt(n)===45?(e="-",n++):(e=null,d('"-"')),e===null&&(o.charCodeAt(n)===95?(e="_",n++):(e=null,d('"_"')),e===null&&(o.charCodeAt(n)===46?(e=".",n++):(e=null,d('"."')),e===null&&(o.charCodeAt(n)===33?(e="!",n++):(e=null,d('"!"')),e===null&&(o.charCodeAt(n)===126?(e="~",n++):(e=null,d('"~"')),e===null&&(o.charCodeAt(n)===42?(e="*",n++):(e=null,d('"*"')),e===null&&(o.charCodeAt(n)===39?(e="'",n++):(e=null,d(`"'"`)),e===null&&(o.charCodeAt(n)===40?(e="(",n++):(e=null,d('"("')),e===null&&(o.charCodeAt(n)===41?(e=")",n++):(e=null,d('")"')))))))))),e}function ve(){var e,l,u,f,h;return f=n,h=n,o.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=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){return v.join("")}(f,e)),e===null&&(n=f),e}function M(){var e,l,u,f,h,m;for(f=n,h=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=h)}else e=null,n=h;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,h;for(f=n,h=n,e=[],l=$(),l===null&&(l=L());l!==null;)e.push(l),l=$(),l===null&&(l=L());return e!==null?(o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m){return":"}()),e===null&&(n=f),e}function j(){var e,l,u,f,h,m,v;if(h=n,m=n,l=z(),l!==null)for(e=[];l!==null;)e.push(l),l=z();else e=null;if(e!==null){for(l=[],v=n,u=[],f=M();f!==null;)u.push(f),f=M();for(u!==null?(f=z(),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=z(),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 o.substring(n,S)}(h)),e===null&&(n=h),e}function z(){var e;return/^[!-~]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[!-~]")),e===null&&(e=H()),e}function H(){var e;return/^[\x80-\uFFFF]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[\\x80-\\uFFFF]")),e}function X(){var e;return/^[\x80-\xBF]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[\\x80-\\xBF]")),e}function U(){var e;return e=T(),e===null&&(/^[a-f]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[a-f]"))),e}function P(){var e,l,u;if(u=n,l=ae(),l===null&&(o.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l===null&&(o.charCodeAt(n)===46?(l=".",n++):(l=null,d('"."')),l===null&&(o.charCodeAt(n)===33?(l="!",n++):(l=null,d('"!"')),l===null&&(o.charCodeAt(n)===37?(l="%",n++):(l=null,d('"%"')),l===null&&(o.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l===null&&(o.charCodeAt(n)===95?(l="_",n++):(l=null,d('"_"')),l===null&&(o.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(o.charCodeAt(n)===96?(l="`",n++):(l=null,d('"`"')),l===null&&(o.charCodeAt(n)===39?(l="'",n++):(l=null,d(`"'"`)),l===null&&(o.charCodeAt(n)===126?(l="~",n++):(l=null,d('"~"')))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=ae(),l===null&&(o.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l===null&&(o.charCodeAt(n)===46?(l=".",n++):(l=null,d('"."')),l===null&&(o.charCodeAt(n)===33?(l="!",n++):(l=null,d('"!"')),l===null&&(o.charCodeAt(n)===37?(l="%",n++):(l=null,d('"%"')),l===null&&(o.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l===null&&(o.charCodeAt(n)===95?(l="_",n++):(l=null,d('"_"')),l===null&&(o.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(o.charCodeAt(n)===96?(l="`",n++):(l=null,d('"`"')),l===null&&(o.charCodeAt(n)===39?(l="'",n++):(l=null,d(`"'"`)),l===null&&(o.charCodeAt(n)===126?(l="~",n++):(l=null,d('"~"'))))))))))));else e=null;return e!==null&&(e=function(f){return o.substring(n,f)}(u)),e===null&&(n=u),e}function se(){var e,l,u;if(u=n,l=ae(),l===null&&(o.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l===null&&(o.charCodeAt(n)===33?(l="!",n++):(l=null,d('"!"')),l===null&&(o.charCodeAt(n)===37?(l="%",n++):(l=null,d('"%"')),l===null&&(o.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l===null&&(o.charCodeAt(n)===95?(l="_",n++):(l=null,d('"_"')),l===null&&(o.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(o.charCodeAt(n)===96?(l="`",n++):(l=null,d('"`"')),l===null&&(o.charCodeAt(n)===39?(l="'",n++):(l=null,d(`"'"`)),l===null&&(o.charCodeAt(n)===126?(l="~",n++):(l=null,d('"~"'))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=ae(),l===null&&(o.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l===null&&(o.charCodeAt(n)===33?(l="!",n++):(l=null,d('"!"')),l===null&&(o.charCodeAt(n)===37?(l="%",n++):(l=null,d('"%"')),l===null&&(o.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l===null&&(o.charCodeAt(n)===95?(l="_",n++):(l=null,d('"_"')),l===null&&(o.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(o.charCodeAt(n)===96?(l="`",n++):(l=null,d('"`"')),l===null&&(o.charCodeAt(n)===39?(l="'",n++):(l=null,d(`"'"`)),l===null&&(o.charCodeAt(n)===126?(l="~",n++):(l=null,d('"~"')))))))))));else e=null;return e!==null&&(e=function(f){return o.substring(n,f)}(u)),e===null&&(n=u),e}function et(){var e;return o.charCodeAt(n)===40?(e="(",n++):(e=null,d('"("')),e===null&&(o.charCodeAt(n)===41?(e=")",n++):(e=null,d('")"')),e===null&&(o.charCodeAt(n)===60?(e="<",n++):(e=null,d('"<"')),e===null&&(o.charCodeAt(n)===62?(e=">",n++):(e=null,d('">"')),e===null&&(o.charCodeAt(n)===64?(e="@",n++):(e=null,d('"@"')),e===null&&(o.charCodeAt(n)===44?(e=",",n++):(e=null,d('","')),e===null&&(o.charCodeAt(n)===59?(e=";",n++):(e=null,d('";"')),e===null&&(o.charCodeAt(n)===58?(e=":",n++):(e=null,d('":"')),e===null&&(o.charCodeAt(n)===92?(e="\\",n++):(e=null,d('"\\\\"')),e===null&&(e=I(),e===null&&(o.charCodeAt(n)===47?(e="/",n++):(e=null,d('"/"')),e===null&&(o.charCodeAt(n)===91?(e="[",n++):(e=null,d('"["')),e===null&&(o.charCodeAt(n)===93?(e="]",n++):(e=null,d('"]"')),e===null&&(o.charCodeAt(n)===63?(e="?",n++):(e=null,d('"?"')),e===null&&(o.charCodeAt(n)===61?(e="=",n++):(e=null,d('"="')),e===null&&(o.charCodeAt(n)===123?(e="{",n++):(e=null,d('"{"')),e===null&&(o.charCodeAt(n)===125?(e="}",n++):(e=null,d('"}"')),e===null&&(e=$(),e===null&&(e=L())))))))))))))))))),e}function ee(){var e,l,u;if(u=n,l=ae(),l===null&&(o.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l===null&&(o.charCodeAt(n)===46?(l=".",n++):(l=null,d('"."')),l===null&&(o.charCodeAt(n)===33?(l="!",n++):(l=null,d('"!"')),l===null&&(o.charCodeAt(n)===37?(l="%",n++):(l=null,d('"%"')),l===null&&(o.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l===null&&(o.charCodeAt(n)===95?(l="_",n++):(l=null,d('"_"')),l===null&&(o.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(o.charCodeAt(n)===96?(l="`",n++):(l=null,d('"`"')),l===null&&(o.charCodeAt(n)===39?(l="'",n++):(l=null,d(`"'"`)),l===null&&(o.charCodeAt(n)===126?(l="~",n++):(l=null,d('"~"')),l===null&&(o.charCodeAt(n)===40?(l="(",n++):(l=null,d('"("')),l===null&&(o.charCodeAt(n)===41?(l=")",n++):(l=null,d('")"')),l===null&&(o.charCodeAt(n)===60?(l="<",n++):(l=null,d('"<"')),l===null&&(o.charCodeAt(n)===62?(l=">",n++):(l=null,d('">"')),l===null&&(o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l===null&&(o.charCodeAt(n)===92?(l="\\",n++):(l=null,d('"\\\\"')),l===null&&(l=I(),l===null&&(o.charCodeAt(n)===47?(l="/",n++):(l=null,d('"/"')),l===null&&(o.charCodeAt(n)===91?(l="[",n++):(l=null,d('"["')),l===null&&(o.charCodeAt(n)===93?(l="]",n++):(l=null,d('"]"')),l===null&&(o.charCodeAt(n)===63?(l="?",n++):(l=null,d('"?"')),l===null&&(o.charCodeAt(n)===123?(l="{",n++):(l=null,d('"{"')),l===null&&(o.charCodeAt(n)===125?(l="}",n++):(l=null,d('"}"'))))))))))))))))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=ae(),l===null&&(o.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l===null&&(o.charCodeAt(n)===46?(l=".",n++):(l=null,d('"."')),l===null&&(o.charCodeAt(n)===33?(l="!",n++):(l=null,d('"!"')),l===null&&(o.charCodeAt(n)===37?(l="%",n++):(l=null,d('"%"')),l===null&&(o.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l===null&&(o.charCodeAt(n)===95?(l="_",n++):(l=null,d('"_"')),l===null&&(o.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(o.charCodeAt(n)===96?(l="`",n++):(l=null,d('"`"')),l===null&&(o.charCodeAt(n)===39?(l="'",n++):(l=null,d(`"'"`)),l===null&&(o.charCodeAt(n)===126?(l="~",n++):(l=null,d('"~"')),l===null&&(o.charCodeAt(n)===40?(l="(",n++):(l=null,d('"("')),l===null&&(o.charCodeAt(n)===41?(l=")",n++):(l=null,d('")"')),l===null&&(o.charCodeAt(n)===60?(l="<",n++):(l=null,d('"<"')),l===null&&(o.charCodeAt(n)===62?(l=">",n++):(l=null,d('">"')),l===null&&(o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l===null&&(o.charCodeAt(n)===92?(l="\\",n++):(l=null,d('"\\\\"')),l===null&&(l=I(),l===null&&(o.charCodeAt(n)===47?(l="/",n++):(l=null,d('"/"')),l===null&&(o.charCodeAt(n)===91?(l="[",n++):(l=null,d('"["')),l===null&&(o.charCodeAt(n)===93?(l="]",n++):(l=null,d('"]"')),l===null&&(o.charCodeAt(n)===63?(l="?",n++):(l=null,d('"?"')),l===null&&(o.charCodeAt(n)===123?(l="{",n++):(l=null,d('"{"')),l===null&&(o.charCodeAt(n)===125?(l="}",n++):(l=null,d('"}"')))))))))))))))))))))))));else e=null;return e!==null&&(e=function(f){return o.substring(n,f)}(u)),e===null&&(n=u),e}function W(){var e,l,u,f,h;return f=n,h=n,e=D(),e!==null?(o.charCodeAt(n)===42?(l="*",n++):(l=null,d('"*"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m){return"*"}()),e===null&&(n=f),e}function G(){var e,l,u,f,h;return f=n,h=n,e=D(),e!==null?(o.charCodeAt(n)===47?(l="/",n++):(l=null,d('"/"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m){return"/"}()),e===null&&(n=f),e}function re(){var e,l,u,f,h;return f=n,h=n,e=D(),e!==null?(o.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m){return"="}()),e===null&&(n=f),e}function ge(){var e,l,u,f,h;return f=n,h=n,e=D(),e!==null?(o.charCodeAt(n)===40?(l="(",n++):(l=null,d('"("')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m){return"("}()),e===null&&(n=f),e}function be(){var e,l,u,f,h;return f=n,h=n,e=D(),e!==null?(o.charCodeAt(n)===41?(l=")",n++):(l=null,d('")"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m){return")"}()),e===null&&(n=f),e}function xe(){var e,l,u,f;return u=n,f=n,o.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(h){return">"}()),e===null&&(n=u),e}function Ce(){var e,l,u,f;return u=n,f=n,e=D(),e!==null?(o.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(h){return"<"}()),e===null&&(n=u),e}function le(){var e,l,u,f,h;return f=n,h=n,e=D(),e!==null?(o.charCodeAt(n)===44?(l=",",n++):(l=null,d('","')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m){return","}()),e===null&&(n=f),e}function ye(){var e,l,u,f,h;return f=n,h=n,e=D(),e!==null?(o.charCodeAt(n)===59?(l=";",n++):(l=null,d('";"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m){return";"}()),e===null&&(n=f),e}function tt(){var e,l,u,f,h;return f=n,h=n,e=D(),e!==null?(o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=D(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m){return":"}()),e===null&&(n=f),e}function it(){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(h){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(h){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(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[!-']")),e===null&&(/^[*-[]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[*-[]")),e===null&&(/^[\]-~]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[\\]-~]")),e===null&&(e=H(),e===null&&(e=M())))),e}function Oe(){var e,l,u,f,h,m;if(h=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 o.substring(n,v)}(h)),e===null&&(n=h),e}function pe(){var e,l,u,f,h,m;if(h=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=o.substring(n,v).trim();return S.substring(1,S.length-1).replace(/\\([\x00-\x09\x0b-\x0c\x0e-\x7f])/g,"$1")}(h)),e===null&&(n=h),e}function ue(){var e;return e=M(),e===null&&(o.charCodeAt(n)===33?(e="!",n++):(e=null,d('"!"')),e===null&&(/^[#-[]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[#-[]")),e===null&&(/^[\]-~]/.test(o.charAt(n))?(e=o.charAt(n),n++):(e=null,d("[\\]-~]")),e===null&&(e=H())))),e}function de(){var e,l,u;return u=n,o.charCodeAt(n)===92?(e="\\",n++):(e=null,d('"\\\\"')),e!==null?(/^[\0-\t]/.test(o.charAt(n))?(l=o.charAt(n),n++):(l=null,d("[\\0-\\t]")),l===null&&(/^[\x0B-\f]/.test(o.charAt(n))?(l=o.charAt(n),n++):(l=null,d("[\\x0B-\\f]")),l===null&&(/^[\x0E-]/.test(o.charAt(n))?(l=o.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,h,m;return h=n,m=n,e=Xe(),e!==null?(o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=_t(),u=u!==null?u:"",u!==null?(f=zt(),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 as(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=h),e}function De(){var e,l,u,f,h,m,v,S;return v=n,S=n,e=Xe(),e!==null?(o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=_t(),u=u!==null?u:"",u!==null?(f=zt(),f!==null?(h=In(),h!==null?(m=Gs(),m=m!==null?m:"",m!==null?e=[e,l,u,f,h,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 as(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,a==="SIP_URI"&&(w=w.uri)}catch{w=-1}}()),e===null&&(n=v),e}function Xe(){var e;return e=Le(),e===null&&(e=kt()),e}function Le(){var e,l;return l=n,o.substr(n,4).toLowerCase()==="sips"?(e=o.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,o.substr(n,3).toLowerCase()==="sip"?(e=o.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 _t(){var e,l,u,f,h,m;return f=n,h=n,e=yn(),e!==null?(m=n,o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=js(),u!==null?l=[l,u]:(l=null,n=m)):(l=null,n=m),l=l!==null?l:"",l!==null?(o.charCodeAt(n)===64?(u="@",n++):(u=null,d('"@"')),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(v){w.user=decodeURIComponent(o.substring(n-1,v))}(f)),e===null&&(n=f),e}function yn(){var e,l;if(l=F(),l===null&&(l=ve(),l===null&&(l=An())),l!==null)for(e=[];l!==null;)e.push(l),l=F(),l===null&&(l=ve(),l===null&&(l=An()));else e=null;return e}function An(){var e;return o.charCodeAt(n)===38?(e="&",n++):(e=null,d('"&"')),e===null&&(o.charCodeAt(n)===61?(e="=",n++):(e=null,d('"="')),e===null&&(o.charCodeAt(n)===43?(e="+",n++):(e=null,d('"+"')),e===null&&(o.charCodeAt(n)===36?(e="$",n++):(e=null,d('"$"')),e===null&&(o.charCodeAt(n)===44?(e=",",n++):(e=null,d('","')),e===null&&(o.charCodeAt(n)===59?(e=";",n++):(e=null,d('";"')),e===null&&(o.charCodeAt(n)===63?(e="?",n++):(e=null,d('"?"')),e===null&&(o.charCodeAt(n)===47?(e="/",n++):(e=null,d('"/"'))))))))),e}function js(){var e,l,u;for(u=n,e=[],l=F(),l===null&&(l=ve(),l===null&&(o.charCodeAt(n)===38?(l="&",n++):(l=null,d('"&"')),l===null&&(o.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l===null&&(o.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(o.charCodeAt(n)===36?(l="$",n++):(l=null,d('"$"')),l===null&&(o.charCodeAt(n)===44?(l=",",n++):(l=null,d('","'))))))));l!==null;)e.push(l),l=F(),l===null&&(l=ve(),l===null&&(o.charCodeAt(n)===38?(l="&",n++):(l=null,d('"&"')),l===null&&(o.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l===null&&(o.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')),l===null&&(o.charCodeAt(n)===36?(l="$",n++):(l=null,d('"$"')),l===null&&(o.charCodeAt(n)===44?(l=",",n++):(l=null,d('","'))))))));return e!==null&&(e=function(f){w.password=o.substring(n,f)}(u)),e===null&&(n=u),e}function zt(){var e,l,u,f,h;return f=n,e=ls(),e!==null?(h=n,o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=hr(),u!==null?l=[l,u]:(l=null,n=h)):(l=null,n=h),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e}function ls(){var e,l;return l=n,e=qs(),e===null&&(e=Gt(),e===null&&(e=Bs())),e!==null&&(e=function(u){return w.host=o.substring(n,u).toLowerCase(),w.host}(l)),e===null&&(n=l),e}function qs(){var e,l,u,f,h,m;for(f=n,h=n,e=[],m=n,l=Cn(),l!==null?(o.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=Cn(),l!==null?(o.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=Rn(),l!==null?(o.charCodeAt(n)===46?(u=".",n++):(u=null,d('"."')),u=u!==null?u:"",u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(v){return w.host_type="domain",o.substring(n,v)}(f)),e===null&&(n=f),e}function Cn(){var e,l,u,f;if(f=n,e=ae(),e!==null){for(l=[],u=ae(),u===null&&(o.charCodeAt(n)===45?(u="-",n++):(u=null,d('"-"')),u===null&&(o.charCodeAt(n)===95?(u="_",n++):(u=null,d('"_"'))));u!==null;)l.push(u),u=ae(),u===null&&(o.charCodeAt(n)===45?(u="-",n++):(u=null,d('"-"')),u===null&&(o.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 Rn(){var e,l,u,f;if(f=n,e=E(),e!==null){for(l=[],u=ae(),u===null&&(o.charCodeAt(n)===45?(u="-",n++):(u=null,d('"-"')),u===null&&(o.charCodeAt(n)===95?(u="_",n++):(u=null,d('"_"'))));u!==null;)l.push(u),u=ae(),u===null&&(o.charCodeAt(n)===45?(u="-",n++):(u=null,d('"-"')),u===null&&(o.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 Bs(){var e,l,u,f,h;return f=n,h=n,o.charCodeAt(n)===91?(e="[",n++):(e=null,d('"["')),e!==null?(l=me(),l!==null?(o.charCodeAt(n)===93?(u="]",n++):(u=null,d('"]"')),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m){return w.host_type="IPv6",o.substring(n,m)}(f)),e===null&&(n=f),e}function me(){var e,l,u,f,h,m,v,S,O,ie,Ne,It,Ns,k,C,Te;return k=n,C=n,e=oe(),e!==null?(o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?(o.charCodeAt(n)===58?(f=":",n++):(f=null,d('":"')),f!==null?(h=oe(),h!==null?(o.charCodeAt(n)===58?(m=":",n++):(m=null,d('":"')),m!==null?(v=oe(),v!==null?(o.charCodeAt(n)===58?(S=":",n++):(S=null,d('":"')),S!==null?(O=oe(),O!==null?(o.charCodeAt(n)===58?(ie=":",n++):(ie=null,d('":"')),ie!==null?(Ne=oe(),Ne!==null?(o.charCodeAt(n)===58?(It=":",n++):(It=null,d('":"')),It!==null?(Ns=lt(),Ns!==null?e=[e,l,u,f,h,m,v,S,O,ie,Ne,It,Ns]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C),e===null&&(C=n,o.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=oe(),l!==null?(o.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?(o.charCodeAt(n)===58?(h=":",n++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?(o.charCodeAt(n)===58?(v=":",n++):(v=null,d('":"')),v!==null?(S=oe(),S!==null?(o.charCodeAt(n)===58?(O=":",n++):(O=null,d('":"')),O!==null?(ie=oe(),ie!==null?(o.charCodeAt(n)===58?(Ne=":",n++):(Ne=null,d('":"')),Ne!==null?(It=lt(),It!==null?e=[e,l,u,f,h,m,v,S,O,ie,Ne,It]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C),e===null&&(C=n,o.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=oe(),l!==null?(o.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?(o.charCodeAt(n)===58?(h=":",n++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?(o.charCodeAt(n)===58?(v=":",n++):(v=null,d('":"')),v!==null?(S=oe(),S!==null?(o.charCodeAt(n)===58?(O=":",n++):(O=null,d('":"')),O!==null?(ie=lt(),ie!==null?e=[e,l,u,f,h,m,v,S,O,ie]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C),e===null&&(C=n,o.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=oe(),l!==null?(o.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?(o.charCodeAt(n)===58?(h=":",n++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?(o.charCodeAt(n)===58?(v=":",n++):(v=null,d('":"')),v!==null?(S=lt(),S!==null?e=[e,l,u,f,h,m,v,S]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C),e===null&&(C=n,o.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=oe(),l!==null?(o.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?(o.charCodeAt(n)===58?(h=":",n++):(h=null,d('":"')),h!==null?(m=lt(),m!==null?e=[e,l,u,f,h,m]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C),e===null&&(C=n,o.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=oe(),l!==null?(o.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=lt(),f!==null?e=[e,l,u,f]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C),e===null&&(C=n,o.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=lt(),l!==null?e=[e,l]:(e=null,n=C)):(e=null,n=C),e===null&&(C=n,o.substr(n,2)==="::"?(e="::",n+=2):(e=null,d('"::"')),e!==null?(l=oe(),l!==null?e=[e,l]:(e=null,n=C)):(e=null,n=C),e===null&&(C=n,e=oe(),e!==null?(o.substr(n,2)==="::"?(l="::",n+=2):(l=null,d('"::"')),l!==null?(u=oe(),u!==null?(o.charCodeAt(n)===58?(f=":",n++):(f=null,d('":"')),f!==null?(h=oe(),h!==null?(o.charCodeAt(n)===58?(m=":",n++):(m=null,d('":"')),m!==null?(v=oe(),v!==null?(o.charCodeAt(n)===58?(S=":",n++):(S=null,d('":"')),S!==null?(O=oe(),O!==null?(o.charCodeAt(n)===58?(ie=":",n++):(ie=null,d('":"')),ie!==null?(Ne=lt(),Ne!==null?e=[e,l,u,f,h,m,v,S,O,ie,Ne]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C),e===null&&(C=n,e=oe(),e!==null?(Te=n,o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?l=[l,u]:(l=null,n=Te)):(l=null,n=Te),l=l!==null?l:"",l!==null?(o.substr(n,2)==="::"?(u="::",n+=2):(u=null,d('"::"')),u!==null?(f=oe(),f!==null?(o.charCodeAt(n)===58?(h=":",n++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?(o.charCodeAt(n)===58?(v=":",n++):(v=null,d('":"')),v!==null?(S=oe(),S!==null?(o.charCodeAt(n)===58?(O=":",n++):(O=null,d('":"')),O!==null?(ie=lt(),ie!==null?e=[e,l,u,f,h,m,v,S,O,ie]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C),e===null&&(C=n,e=oe(),e!==null?(Te=n,o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?l=[l,u]:(l=null,n=Te)):(l=null,n=Te),l=l!==null?l:"",l!==null?(Te=n,o.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?u=[u,f]:(u=null,n=Te)):(u=null,n=Te),u=u!==null?u:"",u!==null?(o.substr(n,2)==="::"?(f="::",n+=2):(f=null,d('"::"')),f!==null?(h=oe(),h!==null?(o.charCodeAt(n)===58?(m=":",n++):(m=null,d('":"')),m!==null?(v=oe(),v!==null?(o.charCodeAt(n)===58?(S=":",n++):(S=null,d('":"')),S!==null?(O=lt(),O!==null?e=[e,l,u,f,h,m,v,S,O]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C),e===null&&(C=n,e=oe(),e!==null?(Te=n,o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?l=[l,u]:(l=null,n=Te)):(l=null,n=Te),l=l!==null?l:"",l!==null?(Te=n,o.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?u=[u,f]:(u=null,n=Te)):(u=null,n=Te),u=u!==null?u:"",u!==null?(Te=n,o.charCodeAt(n)===58?(f=":",n++):(f=null,d('":"')),f!==null?(h=oe(),h!==null?f=[f,h]:(f=null,n=Te)):(f=null,n=Te),f=f!==null?f:"",f!==null?(o.substr(n,2)==="::"?(h="::",n+=2):(h=null,d('"::"')),h!==null?(m=oe(),m!==null?(o.charCodeAt(n)===58?(v=":",n++):(v=null,d('":"')),v!==null?(S=lt(),S!==null?e=[e,l,u,f,h,m,v,S]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C),e===null&&(C=n,e=oe(),e!==null?(Te=n,o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?l=[l,u]:(l=null,n=Te)):(l=null,n=Te),l=l!==null?l:"",l!==null?(Te=n,o.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?u=[u,f]:(u=null,n=Te)):(u=null,n=Te),u=u!==null?u:"",u!==null?(Te=n,o.charCodeAt(n)===58?(f=":",n++):(f=null,d('":"')),f!==null?(h=oe(),h!==null?f=[f,h]:(f=null,n=Te)):(f=null,n=Te),f=f!==null?f:"",f!==null?(Te=n,o.charCodeAt(n)===58?(h=":",n++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?h=[h,m]:(h=null,n=Te)):(h=null,n=Te),h=h!==null?h:"",h!==null?(o.substr(n,2)==="::"?(m="::",n+=2):(m=null,d('"::"')),m!==null?(v=lt(),v!==null?e=[e,l,u,f,h,m,v]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C),e===null&&(C=n,e=oe(),e!==null?(Te=n,o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?l=[l,u]:(l=null,n=Te)):(l=null,n=Te),l=l!==null?l:"",l!==null?(Te=n,o.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?u=[u,f]:(u=null,n=Te)):(u=null,n=Te),u=u!==null?u:"",u!==null?(Te=n,o.charCodeAt(n)===58?(f=":",n++):(f=null,d('":"')),f!==null?(h=oe(),h!==null?f=[f,h]:(f=null,n=Te)):(f=null,n=Te),f=f!==null?f:"",f!==null?(Te=n,o.charCodeAt(n)===58?(h=":",n++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?h=[h,m]:(h=null,n=Te)):(h=null,n=Te),h=h!==null?h:"",h!==null?(Te=n,o.charCodeAt(n)===58?(m=":",n++):(m=null,d('":"')),m!==null?(v=oe(),v!==null?m=[m,v]:(m=null,n=Te)):(m=null,n=Te),m=m!==null?m:"",m!==null?(o.substr(n,2)==="::"?(v="::",n+=2):(v=null,d('"::"')),v!==null?(S=oe(),S!==null?e=[e,l,u,f,h,m,v,S]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C),e===null&&(C=n,e=oe(),e!==null?(Te=n,o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=oe(),u!==null?l=[l,u]:(l=null,n=Te)):(l=null,n=Te),l=l!==null?l:"",l!==null?(Te=n,o.charCodeAt(n)===58?(u=":",n++):(u=null,d('":"')),u!==null?(f=oe(),f!==null?u=[u,f]:(u=null,n=Te)):(u=null,n=Te),u=u!==null?u:"",u!==null?(Te=n,o.charCodeAt(n)===58?(f=":",n++):(f=null,d('":"')),f!==null?(h=oe(),h!==null?f=[f,h]:(f=null,n=Te)):(f=null,n=Te),f=f!==null?f:"",f!==null?(Te=n,o.charCodeAt(n)===58?(h=":",n++):(h=null,d('":"')),h!==null?(m=oe(),m!==null?h=[h,m]:(h=null,n=Te)):(h=null,n=Te),h=h!==null?h:"",h!==null?(Te=n,o.charCodeAt(n)===58?(m=":",n++):(m=null,d('":"')),m!==null?(v=oe(),v!==null?m=[m,v]:(m=null,n=Te)):(m=null,n=Te),m=m!==null?m:"",m!==null?(Te=n,o.charCodeAt(n)===58?(v=":",n++):(v=null,d('":"')),v!==null?(S=oe(),S!==null?v=[v,S]:(v=null,n=Te)):(v=null,n=Te),v=v!==null?v:"",v!==null?(o.substr(n,2)==="::"?(S="::",n+=2):(S=null,d('"::"')),S!==null?e=[e,l,u,f,h,m,v,S]:(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C)):(e=null,n=C))))))))))))))),e!==null&&(e=function(I_){return w.host_type="IPv6",o.substring(n,I_)}(k)),e===null&&(n=k),e}function oe(){var e,l,u,f,h;return h=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=h)):(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e}function lt(){var e,l,u,f;return f=n,e=oe(),e!==null?(o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=oe(),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,h,m,v,S,O;return S=n,O=n,e=Es(),e!==null?(o.charCodeAt(n)===46?(l=".",n++):(l=null,d('"."')),l!==null?(u=Es(),u!==null?(o.charCodeAt(n)===46?(f=".",n++):(f=null,d('"."')),f!==null?(h=Es(),h!==null?(o.charCodeAt(n)===46?(m=".",n++):(m=null,d('"."')),m!==null?(v=Es(),v!==null?e=[e,l,u,f,h,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",o.substring(n,ie)}(S)),e===null&&(n=S),e}function Es(){var e,l,u,f;return f=n,o.substr(n,2)==="25"?(e="25",n+=2):(e=null,d('"25"')),e!==null?(/^[0-5]/.test(o.charAt(n))?(l=o.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,o.charCodeAt(n)===50?(e="2",n++):(e=null,d('"2"')),e!==null?(/^[0-4]/.test(o.charAt(n))?(l=o.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,o.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(o.charAt(n))?(e=o.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 hr(){var e,l,u,f,h,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?(h=T(),h=h!==null?h:"",h!==null?e=[e,l,u,f,h]:(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 In(){var e,l,u,f;for(e=[],f=n,o.charCodeAt(n)===59?(l=";",n++):(l=null,d('";"')),l!==null?(u=bn(),u!==null?l=[l,u]:(l=null,n=f)):(l=null,n=f);l!==null;)e.push(l),f=n,o.charCodeAt(n)===59?(l=";",n++):(l=null,d('";"')),l!==null?(u=bn(),u!==null?l=[l,u]:(l=null,n=f)):(l=null,n=f);return e}function bn(){var e;return e=dr(),e===null&&(e=pr(),e===null&&(e=mr(),e===null&&(e=gr(),e===null&&(e=Tr(),e===null&&(e=vr(),e===null&&(e=Er())))))),e}function dr(){var e,l,u,f;return u=n,f=n,o.substr(n,10).toLowerCase()==="transport="?(e=o.substr(n,10),n+=10):(e=null,d('"transport="')),e!==null?(o.substr(n,3).toLowerCase()==="udp"?(l=o.substr(n,3),n+=3):(l=null,d('"udp"')),l===null&&(o.substr(n,3).toLowerCase()==="tcp"?(l=o.substr(n,3),n+=3):(l=null,d('"tcp"')),l===null&&(o.substr(n,4).toLowerCase()==="sctp"?(l=o.substr(n,4),n+=4):(l=null,d('"sctp"')),l===null&&(o.substr(n,3).toLowerCase()==="tls"?(l=o.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(h,m){w.uri_params||(w.uri_params={}),w.uri_params.transport=m.toLowerCase()}(u,e[1])),e===null&&(n=u),e}function pr(){var e,l,u,f;return u=n,f=n,o.substr(n,5).toLowerCase()==="user="?(e=o.substr(n,5),n+=5):(e=null,d('"user="')),e!==null?(o.substr(n,5).toLowerCase()==="phone"?(l=o.substr(n,5),n+=5):(l=null,d('"phone"')),l===null&&(o.substr(n,2).toLowerCase()==="ip"?(l=o.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(h,m){w.uri_params||(w.uri_params={}),w.uri_params.user=m.toLowerCase()}(u,e[1])),e===null&&(n=u),e}function mr(){var e,l,u,f;return u=n,f=n,o.substr(n,7).toLowerCase()==="method="?(e=o.substr(n,7),n+=7):(e=null,d('"method="')),e!==null?(l=Qs(),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e!==null&&(e=function(h,m){w.uri_params||(w.uri_params={}),w.uri_params.method=m}(u,e[1])),e===null&&(n=u),e}function gr(){var e,l,u,f;return u=n,f=n,o.substr(n,4).toLowerCase()==="ttl="?(e=o.substr(n,4),n+=4):(e=null,d('"ttl="')),e!==null?(l=gi(),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e!==null&&(e=function(h,m){w.params||(w.params={}),w.params.ttl=m}(u,e[1])),e===null&&(n=u),e}function Tr(){var e,l,u,f;return u=n,f=n,o.substr(n,6).toLowerCase()==="maddr="?(e=o.substr(n,6),n+=6):(e=null,d('"maddr="')),e!==null?(l=ls(),l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e!==null&&(e=function(h,m){w.uri_params||(w.uri_params={}),w.uri_params.maddr=m}(u,e[1])),e===null&&(n=u),e}function vr(){var e,l,u,f,h,m;return f=n,h=n,o.substr(n,2).toLowerCase()==="lr"?(e=o.substr(n,2),n+=2):(e=null,d('"lr"')),e!==null?(m=n,o.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=h)):(e=null,n=h),e!==null&&(e=function(v){w.uri_params||(w.uri_params={}),w.uri_params.lr=void 0}()),e===null&&(n=f),e}function Er(){var e,l,u,f,h,m;return f=n,h=n,e=Sr(),e!==null?(m=n,o.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l!==null?(u=Ss(),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=h)):(e=null,n=h),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 Sr(){var e,l,u;if(u=n,l=ys(),l!==null)for(e=[];l!==null;)e.push(l),l=ys();else e=null;return e!==null&&(e=function(f,h){return h.join("")}(u,e)),e===null&&(n=u),e}function Ss(){var e,l,u;if(u=n,l=ys(),l!==null)for(e=[];l!==null;)e.push(l),l=ys();else e=null;return e!==null&&(e=function(f,h){return h.join("")}(u,e)),e===null&&(n=u),e}function ys(){var e;return e=yr(),e===null&&(e=F(),e===null&&(e=ve())),e}function yr(){var e;return o.charCodeAt(n)===91?(e="[",n++):(e=null,d('"["')),e===null&&(o.charCodeAt(n)===93?(e="]",n++):(e=null,d('"]"')),e===null&&(o.charCodeAt(n)===47?(e="/",n++):(e=null,d('"/"')),e===null&&(o.charCodeAt(n)===58?(e=":",n++):(e=null,d('":"')),e===null&&(o.charCodeAt(n)===38?(e="&",n++):(e=null,d('"&"')),e===null&&(o.charCodeAt(n)===43?(e="+",n++):(e=null,d('"+"')),e===null&&(o.charCodeAt(n)===36?(e="$",n++):(e=null,d('"$"')))))))),e}function Gs(){var e,l,u,f,h,m,v;if(m=n,o.charCodeAt(n)===63?(e="?",n++):(e=null,d('"?"')),e!==null)if(l=Ws(),l!==null){for(u=[],v=n,o.charCodeAt(n)===38?(f="&",n++):(f=null,d('"&"')),f!==null?(h=Ws(),h!==null?f=[f,h]:(f=null,n=v)):(f=null,n=v);f!==null;)u.push(f),v=n,o.charCodeAt(n)===38?(f="&",n++):(f=null,d('"&"')),f!==null?(h=Ws(),h!==null?f=[f,h]:(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 Ws(){var e,l,u,f,h;return f=n,h=n,e=Ar(),e!==null?(o.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l!==null?(u=As(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),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 Ar(){var e,l;if(l=Ks(),l===null&&(l=F(),l===null&&(l=ve())),l!==null)for(e=[];l!==null;)e.push(l),l=Ks(),l===null&&(l=F(),l===null&&(l=ve()));else e=null;return e}function As(){var e,l;for(e=[],l=Ks(),l===null&&(l=F(),l===null&&(l=ve()));l!==null;)e.push(l),l=Ks(),l===null&&(l=F(),l===null&&(l=ve()));return e}function Ks(){var e;return o.charCodeAt(n)===91?(e="[",n++):(e=null,d('"["')),e===null&&(o.charCodeAt(n)===93?(e="]",n++):(e=null,d('"]"')),e===null&&(o.charCodeAt(n)===47?(e="/",n++):(e=null,d('"/"')),e===null&&(o.charCodeAt(n)===63?(e="?",n++):(e=null,d('"?"')),e===null&&(o.charCodeAt(n)===58?(e=":",n++):(e=null,d('":"')),e===null&&(o.charCodeAt(n)===43?(e="+",n++):(e=null,d('"+"')),e===null&&(o.charCodeAt(n)===36?(e="$",n++):(e=null,d('"$"')))))))),e}function al(){var e;return e=Hr(),e===null&&(e=Cr()),e}function Cr(){var e,l,u,f,h,m;return m=n,e=Qs(),e!==null?(l=$(),l!==null?(u=wn(),u!==null?(f=$(),f!==null?(h=Nn(),h!==null?e=[e,l,u,f,h]:(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m),e}function wn(){var e;return e=De(),e===null&&(e=On()),e}function On(){var e,l,u,f;return f=n,e=br(),e!==null?(o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l!==null?(u=Rr(),u===null&&(u=Cs()),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function Rr(){var e,l,u,f,h;return f=n,e=Ys(),e===null&&(e=zs()),e!==null?(h=n,o.charCodeAt(n)===63?(l="?",n++):(l=null,d('"?"')),l!==null?(u=Dn(),u!==null?l=[l,u]:(l=null,n=h)):(l=null,n=h),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e}function Ys(){var e,l,u,f;return f=n,o.substr(n,2)==="//"?(e="//",n+=2):(e=null,d('"//"')),e!==null?(l=wr(),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,o.charCodeAt(n)===47?(e="/",n++):(e=null,d('"/"')),e!==null?(l=Js(),l!==null?e=[e,l]:(e=null,n=u)):(e=null,n=u),e}function Cs(){var e,l,u,f;if(f=n,e=Ir(),e!==null){for(l=[],u=Rs();u!==null;)l.push(u),u=Rs();l!==null?e=[e,l]:(e=null,n=f)}else e=null,n=f;return e}function Rs(){var e;return e=N(),e===null&&(e=F(),e===null&&(e=ve())),e}function Ir(){var e;return e=F(),e===null&&(e=ve(),e===null&&(o.charCodeAt(n)===59?(e=";",n++):(e=null,d('";"')),e===null&&(o.charCodeAt(n)===63?(e="?",n++):(e=null,d('"?"')),e===null&&(o.charCodeAt(n)===58?(e=":",n++):(e=null,d('":"')),e===null&&(o.charCodeAt(n)===64?(e="@",n++):(e=null,d('"@"')),e===null&&(o.charCodeAt(n)===38?(e="&",n++):(e=null,d('"&"')),e===null&&(o.charCodeAt(n)===61?(e="=",n++):(e=null,d('"="')),e===null&&(o.charCodeAt(n)===43?(e="+",n++):(e=null,d('"+"')),e===null&&(o.charCodeAt(n)===36?(e="$",n++):(e=null,d('"$"')),e===null&&(o.charCodeAt(n)===44?(e=",",n++):(e=null,d('","')))))))))))),e}function Js(){var e,l,u,f,h,m;if(h=n,e=Is(),e!==null){for(l=[],m=n,o.charCodeAt(n)===47?(u="/",n++):(u=null,d('"/"')),u!==null?(f=Is(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);u!==null;)l.push(u),m=n,o.charCodeAt(n)===47?(u="/",n++):(u=null,d('"/"')),u!==null?(f=Is(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=h)}else e=null,n=h;return e}function Is(){var e,l,u,f,h,m;for(h=n,e=[],l=bs();l!==null;)e.push(l),l=bs();if(e!==null){for(l=[],m=n,o.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,o.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=h)}else e=null,n=h;return e}function os(){var e,l;for(e=[],l=bs();l!==null;)e.push(l),l=bs();return e}function bs(){var e;return e=F(),e===null&&(e=ve(),e===null&&(o.charCodeAt(n)===58?(e=":",n++):(e=null,d('":"')),e===null&&(o.charCodeAt(n)===64?(e="@",n++):(e=null,d('"@"')),e===null&&(o.charCodeAt(n)===38?(e="&",n++):(e=null,d('"&"')),e===null&&(o.charCodeAt(n)===61?(e="=",n++):(e=null,d('"="')),e===null&&(o.charCodeAt(n)===43?(e="+",n++):(e=null,d('"+"')),e===null&&(o.charCodeAt(n)===36?(e="$",n++):(e=null,d('"$"')),e===null&&(o.charCodeAt(n)===44?(e=",",n++):(e=null,d('","')))))))))),e}function br(){var e,l,u,f,h;if(f=n,h=n,e=E(),e!==null){for(l=[],u=E(),u===null&&(u=T(),u===null&&(o.charCodeAt(n)===43?(u="+",n++):(u=null,d('"+"')),u===null&&(o.charCodeAt(n)===45?(u="-",n++):(u=null,d('"-"')),u===null&&(o.charCodeAt(n)===46?(u=".",n++):(u=null,d('"."'))))));u!==null;)l.push(u),u=E(),u===null&&(u=T(),u===null&&(o.charCodeAt(n)===43?(u="+",n++):(u=null,d('"+"')),u===null&&(o.charCodeAt(n)===45?(u="-",n++):(u=null,d('"-"')),u===null&&(o.charCodeAt(n)===46?(u=".",n++):(u=null,d('"."'))))));l!==null?e=[e,l]:(e=null,n=h)}else e=null,n=h;return e!==null&&(e=function(m){w.scheme=o.substring(n,m)}(f)),e===null&&(n=f),e}function wr(){var e;return e=Or(),e===null&&(e=Dr()),e}function Or(){var e,l,u,f;return u=n,f=n,e=_t(),e!==null?(o.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=zt(),l!==null?e=[e,l]:(e=null,n=u)):(e=null,n=u),e=e!==null?e:"",e}function Dr(){var e,l;if(l=F(),l===null&&(l=ve(),l===null&&(o.charCodeAt(n)===36?(l="$",n++):(l=null,d('"$"')),l===null&&(o.charCodeAt(n)===44?(l=",",n++):(l=null,d('","')),l===null&&(o.charCodeAt(n)===59?(l=";",n++):(l=null,d('";"')),l===null&&(o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l===null&&(o.charCodeAt(n)===64?(l="@",n++):(l=null,d('"@"')),l===null&&(o.charCodeAt(n)===38?(l="&",n++):(l=null,d('"&"')),l===null&&(o.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l===null&&(o.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"'))))))))))),l!==null)for(e=[];l!==null;)e.push(l),l=F(),l===null&&(l=ve(),l===null&&(o.charCodeAt(n)===36?(l="$",n++):(l=null,d('"$"')),l===null&&(o.charCodeAt(n)===44?(l=",",n++):(l=null,d('","')),l===null&&(o.charCodeAt(n)===59?(l=";",n++):(l=null,d('";"')),l===null&&(o.charCodeAt(n)===58?(l=":",n++):(l=null,d('":"')),l===null&&(o.charCodeAt(n)===64?(l="@",n++):(l=null,d('"@"')),l===null&&(o.charCodeAt(n)===38?(l="&",n++):(l=null,d('"&"')),l===null&&(o.charCodeAt(n)===61?(l="=",n++):(l=null,d('"="')),l===null&&(o.charCodeAt(n)===43?(l="+",n++):(l=null,d('"+"')))))))))));else e=null;return e}function Dn(){var e,l;for(e=[],l=Rs();l!==null;)e.push(l),l=Rs();return e}function Nn(){var e,l,u,f,h,m,v,S;if(v=n,S=n,o.substr(n,3).toLowerCase()==="sip"?(e=o.substr(n,3),n+=3):(e=null,d('"SIP"')),e!==null)if(o.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(o.charCodeAt(n)===46?(f=".",n++):(f=null,d('"."')),f!==null){if(m=T(),m!==null)for(h=[];m!==null;)h.push(m),m=T();else h=null;h!==null?e=[e,l,u,f,h]:(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=o.substring(n,O)}(v)),e===null&&(n=v),e}function Nr(){var e;return o.substr(n,6)==="INVITE"?(e="INVITE",n+=6):(e=null,d('"INVITE"')),e}function Ur(){var e;return o.substr(n,3)==="ACK"?(e="ACK",n+=3):(e=null,d('"ACK"')),e}function Pr(){var e;return o.substr(n,7)==="OPTIONS"?(e="OPTIONS",n+=7):(e=null,d('"OPTIONS"')),e}function xr(){var e;return o.substr(n,3)==="BYE"?(e="BYE",n+=3):(e=null,d('"BYE"')),e}function Mr(){var e;return o.substr(n,6)==="CANCEL"?(e="CANCEL",n+=6):(e=null,d('"CANCEL"')),e}function kr(){var e;return o.substr(n,8)==="REGISTER"?(e="REGISTER",n+=8):(e=null,d('"REGISTER"')),e}function Lr(){var e;return o.substr(n,9)==="SUBSCRIBE"?(e="SUBSCRIBE",n+=9):(e=null,d('"SUBSCRIBE"')),e}function $r(){var e;return o.substr(n,6)==="NOTIFY"?(e="NOTIFY",n+=6):(e=null,d('"NOTIFY"')),e}function Xs(){var e;return o.substr(n,5)==="REFER"?(e="REFER",n+=5):(e=null,d('"REFER"')),e}function Qs(){var e,l;return l=n,e=Nr(),e===null&&(e=Ur(),e===null&&(e=Pr(),e===null&&(e=xr(),e===null&&(e=Mr(),e===null&&(e=kr(),e===null&&(e=Lr(),e===null&&(e=$r(),e===null&&(e=Xs(),e===null&&(e=P()))))))))),e!==null&&(e=function(u){return w.method=o.substring(n,u),w.method}(l)),e===null&&(n=l),e}function Hr(){var e,l,u,f,h,m;return m=n,e=Nn(),e!==null?(l=$(),l!==null?(u=Fr(),u!==null?(f=$(),f!==null?(h=ul(),h!==null?e=[e,l,u,f,h]:(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m),e}function Fr(){var e,l;return l=n,e=Vr(),e!==null&&(e=function(u,f){w.status_code=parseInt(f.join(""))}(l,e)),e===null&&(n=l),e}function Vr(){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 ul(){var e,l,u;for(u=n,e=[],l=N(),l===null&&(l=F(),l===null&&(l=ve(),l===null&&(l=H(),l===null&&(l=X(),l===null&&(l=$(),l===null&&(l=L()))))));l!==null;)e.push(l),l=N(),l===null&&(l=F(),l===null&&(l=ve(),l===null&&(l=H(),l===null&&(l=X(),l===null&&(l=$(),l===null&&(l=L()))))));return e!==null&&(e=function(f){w.reason_phrase=o.substring(n,f)}(u)),e===null&&(n=u),e}function Lo(){var e,l,u,f,h,m;if(h=n,e=sn(),e!==null){for(l=[],m=n,u=le(),u!==null?(f=sn(),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=sn(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=h)}else e=null,n=h;return e}function $o(){var e,l,u,f,h,m;return f=n,h=n,e=ee(),e!==null?(m=n,o.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=h)):(e=null,n=h),e!==null&&(e=function(v){w=o.substring(n,v)}(f)),e===null&&(n=f),e}function Un(){var e,l,u,f,h,m,v;if(h=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=h),e}function Lt(){var e,l,u,f,h,m,v;if(h=n,m=n,e=we(),e===null&&(e=$t()),e!==null){for(l=[],v=n,u=ye(),u!==null?(f=Pn(),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=Pn(),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})}(h)),e===null&&(n=h),e}function $t(){var e,l,u,f,h;return h=n,e=ws(),e=e!==null?e:"",e!==null?(l=Ce(),l!==null?(u=De(),u!==null?(f=xe(),f!==null?e=[e,l,u,f]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e}function ws(){var e,l,u,f,h,m,v;if(h=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,Ne){return ie+Ne[0]+Ne[1]},O[0])}(h,e)),e===null&&(n=h),e}function Pn(){var e;return e=jr(),e===null&&(e=Jt(),e===null&&(e=We())),e}function jr(){var e,l,u,f,h;return f=n,h=n,o.substr(n,1).toLowerCase()==="q"?(e=o.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=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){w.params||(w.params={}),w.params.q=v}(f,e[2])),e===null&&(n=f),e}function Jt(){var e,l,u,f,h;return f=n,h=n,o.substr(n,7).toLowerCase()==="expires"?(e=o.substr(n,7),n+=7):(e=null,d('"expires"')),e!==null?(l=re(),l!==null?(u=Xt(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){w.params||(w.params={}),w.params.expires=v}(f,e[2])),e===null&&(n=f),e}function Xt(){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,h){return parseInt(h.join(""))}(u,e)),e===null&&(n=u),e}function Ge(){var e,l,u,f,h,m,v,S;return m=n,v=n,o.charCodeAt(n)===48?(e="0",n++):(e=null,d('"0"')),e!==null?(S=n,o.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?(h=T(),h=h!==null?h:"",h!==null?l=[l,u,f,h]:(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(o.substring(n,O))}(m)),e===null&&(n=m),e}function We(){var e,l,u,f,h,m;return f=n,h=n,e=P(),e!==null?(m=n,l=re(),l!==null?(u=cl(),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=h)):(e=null,n=h),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 cl(){var e;return e=P(),e===null&&(e=ls(),e===null&&(e=Oe())),e}function fl(){var e,l,u,f,h,m;if(h=n,e=xn(),e!==null){for(l=[],m=n,u=ye(),u!==null?(f=Mn(),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=Mn(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=h)}else e=null,n=h;return e}function xn(){var e;return o.substr(n,6).toLowerCase()==="render"?(e=o.substr(n,6),n+=6):(e=null,d('"render"')),e===null&&(o.substr(n,7).toLowerCase()==="session"?(e=o.substr(n,7),n+=7):(e=null,d('"session"')),e===null&&(o.substr(n,4).toLowerCase()==="icon"?(e=o.substr(n,4),n+=4):(e=null,d('"icon"')),e===null&&(o.substr(n,5).toLowerCase()==="alert"?(e=o.substr(n,5),n+=5):(e=null,d('"alert"')),e===null&&(e=P())))),e}function Mn(){var e;return e=_l(),e===null&&(e=We()),e}function _l(){var e,l,u,f;return f=n,o.substr(n,8).toLowerCase()==="handling"?(e=o.substr(n,8),n+=8):(e=null,d('"handling"')),e!==null?(l=re(),l!==null?(o.substr(n,8).toLowerCase()==="optional"?(u=o.substr(n,8),n+=8):(u=null,d('"optional"')),u===null&&(o.substr(n,8).toLowerCase()==="required"?(u=o.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 Ho(){var e,l,u,f,h,m;if(h=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=h)}else e=null,n=h;return e}function Fo(){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,h){w=parseInt(h.join(""))}(u,e)),e===null&&(n=u),e}function hl(){var e,l;return l=n,e=qr(),e!==null&&(e=function(u){w=o.substring(n,u)}(l)),e===null&&(n=l),e}function qr(){var e,l,u,f,h,m,v,S;if(v=n,e=Br(),e!==null)if(l=G(),l!==null)if(u=kn(),u!==null){for(f=[],S=n,h=ye(),h!==null?(m=Ln(),m!==null?h=[h,m]:(h=null,n=S)):(h=null,n=S);h!==null;)f.push(h),S=n,h=ye(),h!==null?(m=Ln(),m!==null?h=[h,m]:(h=null,n=S)):(h=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 Br(){var e;return e=Gr(),e===null&&(e=Zs()),e}function Gr(){var e;return o.substr(n,4).toLowerCase()==="text"?(e=o.substr(n,4),n+=4):(e=null,d('"text"')),e===null&&(o.substr(n,5).toLowerCase()==="image"?(e=o.substr(n,5),n+=5):(e=null,d('"image"')),e===null&&(o.substr(n,5).toLowerCase()==="audio"?(e=o.substr(n,5),n+=5):(e=null,d('"audio"')),e===null&&(o.substr(n,5).toLowerCase()==="video"?(e=o.substr(n,5),n+=5):(e=null,d('"video"')),e===null&&(o.substr(n,11).toLowerCase()==="application"?(e=o.substr(n,11),n+=11):(e=null,d('"application"')),e===null&&(e=en()))))),e}function Zs(){var e;return o.substr(n,7).toLowerCase()==="message"?(e=o.substr(n,7),n+=7):(e=null,d('"message"')),e===null&&(o.substr(n,9).toLowerCase()==="multipart"?(e=o.substr(n,9),n+=9):(e=null,d('"multipart"')),e===null&&(e=en())),e}function en(){var e;return e=P(),e===null&&(e=Wr()),e}function Wr(){var e,l,u;return u=n,o.substr(n,2).toLowerCase()==="x-"?(e=o.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 kn(){var e;return e=en(),e===null&&(e=P()),e}function Ln(){var e,l,u,f;return f=n,e=P(),e!==null?(l=re(),l!==null?(u=dl(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function dl(){var e;return e=P(),e===null&&(e=Oe()),e}function pl(){var e,l,u,f;return f=n,e=ml(),e!==null?(l=M(),l!==null?(u=Qs(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function ml(){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,h){w.value=parseInt(h.join(""))}(u,e)),e===null&&(n=u),e}function Vo(){var e,l;return l=n,e=Xt(),e!==null&&(e=function(u,f){w=f}(l,e)),e===null&&(n=l),e}function tn(){var e,l,u,f,h,m,v;if(h=n,m=n,e=sn(),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()}(h,e[0])),e===null&&(n=h),e}function sn(){var e,l,u,f,h,m;if(h=n,e=se(),e!==null){for(l=[],m=n,o.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,o.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=h)}else e=null,n=h;return e}function Kr(){var e,l,u,f,h,m,v;if(h=n,m=n,e=we(),e===null&&(e=$t()),e!==null){for(l=[],v=n,u=ye(),u!==null?(f=nn(),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=nn(),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=h),e}function nn(){var e;return e=Yr(),e===null&&(e=We()),e}function Yr(){var e,l,u,f,h;return f=n,h=n,o.substr(n,3).toLowerCase()==="tag"?(e=o.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=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){w.tag=v}(f,e[2])),e===null&&(n=f),e}function jo(){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,h){w=parseInt(h.join(""))}(u,e)),e===null&&(n=u),e}function qo(){var e,l;return l=n,e=Xt(),e!==null&&(e=function(u,f){w=f}(l,e)),e===null&&(n=l),e}function Bo(){var e,l,u,f,h,m,v,S,O,ie;for(S=n,O=n,e=[],l=ws();l!==null;)e.push(l),l=ws();if(e!==null)if(l=Ce(),l!==null)if(u=De(),u!==null)if(f=xe(),f!==null){for(h=[],ie=n,m=ye(),m!==null?(v=We(),v!==null?m=[m,v]:(m=null,n=ie)):(m=null,n=ie);m!==null;)h.push(m),ie=n,m=ye(),m!==null?(v=We(),v!==null?m=[m,v]:(m=null,n=ie)):(m=null,n=ie);h!==null?e=[e,l,u,f,h]:(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(Ne){try{w=new b(w.uri,w.display_name,w.params)}catch{w=-1}}()),e===null&&(n=S),e}function zr(){var e;return e=$n(),e}function $n(){var e,l,u,f,h,m,v,S;if(v=n,o.substr(n,6).toLowerCase()==="digest"?(e=o.substr(n,6),n+=6):(e=null,d('"Digest"')),e!==null)if(l=M(),l!==null)if(u=rn(),u!==null){for(f=[],S=n,h=le(),h!==null?(m=rn(),m!==null?h=[h,m]:(h=null,n=S)):(h=null,n=S);h!==null;)f.push(h),S=n,h=le(),h!==null?(m=rn(),m!==null?h=[h,m]:(h=null,n=S)):(h=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=Os()),e}function Os(){var e,l,u,f,h,m,v,S;if(v=n,e=P(),e!==null)if(l=M(),l!==null)if(u=Qt(),u!==null){for(f=[],S=n,h=le(),h!==null?(m=Qt(),m!==null?h=[h,m]:(h=null,n=S)):(h=null,n=S);h!==null;)f.push(h),S=n,h=le(),h!==null?(m=Qt(),m!==null?h=[h,m]:(h=null,n=S)):(h=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 Qt(){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 rn(){var e;return e=Jr(),e===null&&(e=ln(),e===null&&(e=Qr(),e===null&&(e=ei(),e===null&&(e=ti(),e===null&&(e=si(),e===null&&(e=an(),e===null&&(e=Qt()))))))),e}function Jr(){var e,l,u,f;return f=n,o.substr(n,5).toLowerCase()==="realm"?(e=o.substr(n,5),n+=5):(e=null,d('"realm"')),e!==null?(l=re(),l!==null?(u=Xr(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function Xr(){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 ln(){var e,l,u,f,h,m,v,S,O;if(S=n,o.substr(n,6).toLowerCase()==="domain"?(e=o.substr(n,6),n+=6):(e=null,d('"domain"')),e!==null)if(l=re(),l!==null)if(u=it(),u!==null)if(f=on(),f!==null){if(h=[],O=n,v=$(),v!==null)for(m=[];v!==null;)m.push(v),v=$();else m=null;for(m!==null?(v=on(),v!==null?m=[m,v]:(m=null,n=O)):(m=null,n=O);m!==null;){if(h.push(m),O=n,v=$(),v!==null)for(m=[];v!==null;)m.push(v),v=$();else m=null;m!==null?(v=on(),v!==null?m=[m,v]:(m=null,n=O)):(m=null,n=O)}h!==null?(m=Ee(),m!==null?e=[e,l,u,f,h,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 on(){var e;return e=On(),e===null&&(e=zs()),e}function Qr(){var e,l,u,f;return f=n,o.substr(n,5).toLowerCase()==="nonce"?(e=o.substr(n,5),n+=5):(e=null,d('"nonce"')),e!==null?(l=re(),l!==null?(u=Zr(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function Zr(){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 ei(){var e,l,u,f,h;return f=n,h=n,o.substr(n,6).toLowerCase()==="opaque"?(e=o.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=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){w.opaque=v}(f,e[2])),e===null&&(n=f),e}function ti(){var e,l,u,f,h;return f=n,o.substr(n,5).toLowerCase()==="stale"?(e=o.substr(n,5),n+=5):(e=null,d('"stale"')),e!==null?(l=re(),l!==null?(h=n,o.substr(n,4).toLowerCase()==="true"?(u=o.substr(n,4),n+=4):(u=null,d('"true"')),u!==null&&(u=function(m){w.stale=!0}()),u===null&&(n=h),u===null&&(h=n,o.substr(n,5).toLowerCase()==="false"?(u=o.substr(n,5),n+=5):(u=null,d('"false"')),u!==null&&(u=function(m){w.stale=!1}()),u===null&&(n=h)),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function si(){var e,l,u,f,h;return f=n,h=n,o.substr(n,9).toLowerCase()==="algorithm"?(e=o.substr(n,9),n+=9):(e=null,d('"algorithm"')),e!==null?(l=re(),l!==null?(o.substr(n,3).toLowerCase()==="md5"?(u=o.substr(n,3),n+=3):(u=null,d('"MD5"')),u===null&&(o.substr(n,8).toLowerCase()==="md5-sess"?(u=o.substr(n,8),n+=8):(u=null,d('"MD5-sess"')),u===null&&(u=P())),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){w.algorithm=v.toUpperCase()}(f,e[2])),e===null&&(n=f),e}function an(){var e,l,u,f,h,m,v,S,O,ie;if(S=n,o.substr(n,3).toLowerCase()==="qop"?(e=o.substr(n,3),n+=3):(e=null,d('"qop"')),e!==null)if(l=re(),l!==null)if(u=it(),u!==null){if(O=n,f=Hn(),f!==null){for(h=[],ie=n,o.charCodeAt(n)===44?(m=",",n++):(m=null,d('","')),m!==null?(v=Hn(),v!==null?m=[m,v]:(m=null,n=ie)):(m=null,n=ie);m!==null;)h.push(m),ie=n,o.charCodeAt(n)===44?(m=",",n++):(m=null,d('","')),m!==null?(v=Hn(),v!==null?m=[m,v]:(m=null,n=ie)):(m=null,n=ie);h!==null?f=[f,h]:(f=null,n=O)}else f=null,n=O;f!==null?(h=Ee(),h!==null?e=[e,l,u,f,h]:(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 Hn(){var e,l;return l=n,o.substr(n,8).toLowerCase()==="auth-int"?(e=o.substr(n,8),n+=8):(e=null,d('"auth-int"')),e===null&&(o.substr(n,4).toLowerCase()==="auth"?(e=o.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 Go(){var e,l,u,f,h,m;if(h=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=h)}else e=null,n=h;return e}function Fn(){var e,l,u,f,h,m,v;if(h=n,m=n,e=Vn(),e!==null){for(l=[],v=n,u=le(),u!==null?(f=Vn(),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=Vn(),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=h),e}function Vn(){var e,l,u,f,h,m,v;if(h=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})}(h)),e===null&&(n=h),e}function ni(){var e,l,u,f,h,m,v;if(h=n,m=n,o.substr(n,3).toLowerCase()==="sip"?(e=o.substr(n,3),n+=3):(e=null,d('"SIP"')),e===null&&(e=P()),e!==null){for(l=[],v=n,u=ye(),u!==null?(f=jn(),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=jn(),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}}(h,e[0])),e===null&&(n=h),e}function jn(){var e;return e=gl(),e===null&&(e=We()),e}function gl(){var e,l,u,f,h,m;if(h=n,m=n,o.substr(n,5).toLowerCase()==="cause"?(e=o.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(""))}(h,e[2])),e===null&&(n=h),e}function Wo(){var e,l,u,f,h,m;if(h=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=h)}else e=null,n=h;return e}function qn(){var e,l,u,f,h,m;if(h=n,e=Bn(),e!==null){for(l=[],m=n,u=le(),u!==null?(f=Bn(),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=Bn(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=h)}else e=null,n=h;return e}function Bn(){var e,l,u,f,h,m;if(h=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=h)}else e=null,n=h;return e}function Tl(){var e,l,u,f,h,m;if(h=n,e=Gn(),e!==null){for(l=[],m=n,u=ye(),u!==null?(f=Wn(),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=Wn(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=h)}else e=null,n=h;return e}function Gn(){var e,l;return l=n,o.substr(n,6).toLowerCase()==="active"?(e=o.substr(n,6),n+=6):(e=null,d('"active"')),e===null&&(o.substr(n,7).toLowerCase()==="pending"?(e=o.substr(n,7),n+=7):(e=null,d('"pending"')),e===null&&(o.substr(n,10).toLowerCase()==="terminated"?(e=o.substr(n,10),n+=10):(e=null,d('"terminated"')),e===null&&(e=P()))),e!==null&&(e=function(u){w.state=o.substring(n,u)}(l)),e===null&&(n=l),e}function Wn(){var e,l,u,f,h;return f=n,h=n,o.substr(n,6).toLowerCase()==="reason"?(e=o.substr(n,6),n+=6):(e=null,d('"reason"')),e!==null?(l=re(),l!==null?(u=vl(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){typeof v<"u"&&(w.reason=v)}(f,e[2])),e===null&&(n=f),e===null&&(f=n,h=n,o.substr(n,7).toLowerCase()==="expires"?(e=o.substr(n,7),n+=7):(e=null,d('"expires"')),e!==null?(l=re(),l!==null?(u=Xt(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){typeof v<"u"&&(w.expires=v)}(f,e[2])),e===null&&(n=f),e===null&&(f=n,h=n,o.substr(n,11).toLowerCase()==="retry_after"?(e=o.substr(n,11),n+=11):(e=null,d('"retry_after"')),e!==null?(l=re(),l!==null?(u=Xt(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),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 vl(){var e;return o.substr(n,11).toLowerCase()==="deactivated"?(e=o.substr(n,11),n+=11):(e=null,d('"deactivated"')),e===null&&(o.substr(n,9).toLowerCase()==="probation"?(e=o.substr(n,9),n+=9):(e=null,d('"probation"')),e===null&&(o.substr(n,8).toLowerCase()==="rejected"?(e=o.substr(n,8),n+=8):(e=null,d('"rejected"')),e===null&&(o.substr(n,7).toLowerCase()==="timeout"?(e=o.substr(n,7),n+=7):(e=null,d('"timeout"')),e===null&&(o.substr(n,6).toLowerCase()==="giveup"?(e=o.substr(n,6),n+=6):(e=null,d('"giveup"')),e===null&&(o.substr(n,10).toLowerCase()==="noresource"?(e=o.substr(n,10),n+=10):(e=null,d('"noresource"')),e===null&&(o.substr(n,9).toLowerCase()==="invariant"?(e=o.substr(n,9),n+=9):(e=null,d('"invariant"')),e===null&&(e=P()))))))),e}function Ko(){var e;return e=j(),e=e!==null?e:"",e}function Yo(){var e,l,u,f,h,m;if(h=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=h)}else e=null,n=h;return e=e!==null?e:"",e}function ri(){var e,l,u,f,h,m,v;if(h=n,m=n,e=we(),e===null&&(e=$t()),e!==null){for(l=[],v=n,u=ye(),u!==null?(f=ii(),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=ii(),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=h),e}function ii(){var e;return e=Yr(),e===null&&(e=We()),e}function Kn(){var e,l,u,f,h,m;if(h=n,e=Ds(),e!==null){for(l=[],m=n,u=le(),u!==null?(f=Ds(),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=Ds(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=h)}else e=null,n=h;return e}function Ds(){var e,l,u,f,h,m,v,S;if(v=n,e=_i(),e!==null)if(l=M(),l!==null)if(u=pi(),u!==null){for(f=[],S=n,h=ye(),h!==null?(m=Yn(),m!==null?h=[h,m]:(h=null,n=S)):(h=null,n=S);h!==null;)f.push(h),S=n,h=ye(),h!==null?(m=Yn(),m!==null?h=[h,m]:(h=null,n=S)):(h=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 Yn(){var e;return e=li(),e===null&&(e=oi(),e===null&&(e=ai(),e===null&&(e=ui(),e===null&&(e=ci(),e===null&&(e=We()))))),e}function li(){var e,l,u,f,h;return f=n,h=n,o.substr(n,3).toLowerCase()==="ttl"?(e=o.substr(n,3),n+=3):(e=null,d('"ttl"')),e!==null?(l=re(),l!==null?(u=gi(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){w.ttl=v}(f,e[2])),e===null&&(n=f),e}function oi(){var e,l,u,f,h;return f=n,h=n,o.substr(n,5).toLowerCase()==="maddr"?(e=o.substr(n,5),n+=5):(e=null,d('"maddr"')),e!==null?(l=re(),l!==null?(u=ls(),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){w.maddr=v}(f,e[2])),e===null&&(n=f),e}function ai(){var e,l,u,f,h;return f=n,h=n,o.substr(n,8).toLowerCase()==="received"?(e=o.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=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){w.received=v}(f,e[2])),e===null&&(n=f),e}function ui(){var e,l,u,f,h;return f=n,h=n,o.substr(n,6).toLowerCase()==="branch"?(e=o.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=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){w.branch=v}(f,e[2])),e===null&&(n=f),e}function ci(){var e,l,u,f,h;return f=n,o.substr(n,5).toLowerCase()==="rport"?(e=o.substr(n,5),n+=5):(e=null,d('"rport"')),e!==null?(h=n,l=re(),l!==null?(u=fi(),u!==null?l=[l,u]:(l=null,n=h)):(l=null,n=h),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e}function fi(){var e,l,u,f,h,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?(h=T(),h=h!==null?h:"",h!==null?e=[e,l,u,f,h]:(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 _i(){var e,l,u,f,h,m;return m=n,e=hi(),e!==null?(l=G(),l!==null?(u=P(),u!==null?(f=G(),f!==null?(h=di(),h!==null?e=[e,l,u,f,h]:(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m)):(e=null,n=m),e}function hi(){var e,l;return l=n,o.substr(n,3).toLowerCase()==="sip"?(e=o.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 di(){var e,l;return l=n,o.substr(n,3).toLowerCase()==="udp"?(e=o.substr(n,3),n+=3):(e=null,d('"UDP"')),e===null&&(o.substr(n,3).toLowerCase()==="tcp"?(e=o.substr(n,3),n+=3):(e=null,d('"TCP"')),e===null&&(o.substr(n,3).toLowerCase()==="tls"?(e=o.substr(n,3),n+=3):(e=null,d('"TLS"')),e===null&&(o.substr(n,4).toLowerCase()==="sctp"?(e=o.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 pi(){var e,l,u,f,h;return f=n,e=mi(),e!==null?(h=n,l=tt(),l!==null?(u=zn(),u!==null?l=[l,u]:(l=null,n=h)):(l=null,n=h),l=l!==null?l:"",l!==null?e=[e,l]:(e=null,n=f)):(e=null,n=f),e}function mi(){var e,l;return l=n,e=Gt(),e===null&&(e=Bs(),e===null&&(e=qs())),e!==null&&(e=function(u){w.host=o.substring(n,u)}(l)),e===null&&(n=l),e}function zn(){var e,l,u,f,h,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?(h=T(),h=h!==null?h:"",h!==null?e=[e,l,u,f,h]:(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 gi(){var e,l,u,f,h;return f=n,h=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=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){return parseInt(v.join(""))}(f,e)),e===null&&(n=f),e}function zo(){var e;return e=$n(),e}function El(){var e,l,u,f,h,m;if(h=n,e=Jn(),e!==null){for(l=[],m=n,u=ye(),u!==null?(f=Xn(),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=Xn(),f!==null?u=[u,f]:(u=null,n=m)):(u=null,n=m);l!==null?e=[e,l]:(e=null,n=h)}else e=null,n=h;return e}function Jn(){var e,l;return l=n,e=Xt(),e!==null&&(e=function(u,f){w.expires=f}(l,e)),e===null&&(n=l),e}function Xn(){var e;return e=Sl(),e===null&&(e=We()),e}function Sl(){var e,l,u,f,h;return f=n,h=n,o.substr(n,9).toLowerCase()==="refresher"?(e=o.substr(n,9),n+=9):(e=null,d('"refresher"')),e!==null?(l=re(),l!==null?(o.substr(n,3).toLowerCase()==="uac"?(u=o.substr(n,3),n+=3):(u=null,d('"uac"')),u===null&&(o.substr(n,3).toLowerCase()==="uas"?(u=o.substr(n,3),n+=3):(u=null,d('"uas"'))),u!==null?e=[e,l,u]:(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){w.refresher=v.toLowerCase()}(f,e[2])),e===null&&(n=f),e}function yl(){var e,l,u,f;return f=n,e=P(),e!==null?(l=B(),l!==null?(u=Al(),u!==null?e=[e,l,u]:(e=null,n=f)):(e=null,n=f)):(e=null,n=f),e}function Al(){var e,l;for(e=[],l=z(),l===null&&(l=X(),l===null&&(l=M()));l!==null;)e.push(l),l=z(),l===null&&(l=X(),l===null&&(l=M()));return e}function Jo(){var e,l;for(e=[],l=R();l!==null;)e.push(l),l=R();return e}function Cl(){var e,l,u;return u=n,o.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,h,m,v,S,O,ie,Ne;return ie=n,Ne=n,e=Ti(),e!==null?(o.charCodeAt(n)===45?(l="-",n++):(l=null,d('"-"')),l!==null?(u=Ft(),u!==null?(o.charCodeAt(n)===45?(f="-",n++):(f=null,d('"-"')),f!==null?(h=Ft(),h!==null?(o.charCodeAt(n)===45?(m="-",n++):(m=null,d('"-"')),m!==null?(v=Ft(),v!==null?(o.charCodeAt(n)===45?(S="-",n++):(S=null,d('"-"')),S!==null?(O=Rl(),O!==null?e=[e,l,u,f,h,m,v,S,O]:(e=null,n=Ne)):(e=null,n=Ne)):(e=null,n=Ne)):(e=null,n=Ne)):(e=null,n=Ne)):(e=null,n=Ne)):(e=null,n=Ne)):(e=null,n=Ne)):(e=null,n=Ne),e!==null&&(e=function(It,Ns){w=o.substring(n+5,It)}(ie,e[0])),e===null&&(n=ie),e}function Ft(){var e,l,u,f,h;return h=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=h)):(e=null,n=h)):(e=null,n=h)):(e=null,n=h),e}function Ti(){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 Rl(){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 Xo(){var e,l,u,f,h,m,v;if(h=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=h),e}function Il(){var e,l,u,f,h,m;if(h=n,e=Qn(),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=h)}else e=null,n=h;return e}function Qn(){var e,l,u,f,h,m;return f=n,h=n,e=ee(),e!==null?(m=n,o.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=h)):(e=null,n=h),e!==null&&(e=function(v){w.call_id=o.substring(n,v)}(f)),e===null&&(n=f),e}function Zn(){var e;return e=vi(),e===null&&(e=Ei(),e===null&&(e=bl(),e===null&&(e=We()))),e}function vi(){var e,l,u,f,h;return f=n,h=n,o.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=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){w.to_tag=v}(f,e[2])),e===null&&(n=f),e}function Ei(){var e,l,u,f,h;return f=n,h=n,o.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=h)):(e=null,n=h)):(e=null,n=h),e!==null&&(e=function(m,v){w.from_tag=v}(f,e[2])),e===null&&(n=f),e}function bl(){var e,l;return l=n,o.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 Qo(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 wl(){for(var e=1,l=1,u=!1,f=0;f<Math.max(n,p);f++){var h=o.charAt(f);h===`
4
+ `?(u||e++,l=1,u=!1):h==="\r"||h==="\u2028"||h==="\u2029"?(e++,l=1,u=!0):(l++,u=!1)}return{line:e,column:l}}var as=Vs(),b=gu(),w={},Si=t[a]();if(Si===null||n!==o.length){var yi=Math.max(n,p),Ol=yi<o.length?o.charAt(yi):null,i=wl();return new this.SyntaxError(Qo(_),Ol,yi,i.line,i.column),-1}return w},toSource:function(){return this._source}};return s.SyntaxError=function(r,o,a,t,n){function p(_,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=o,this.message=p(r,o),this.offset=a,this.line=t,this.column=n},s.SyntaxError.prototype=Error.prototype,s}()),ea}var ta,Lu;function Vs(){if(Lu)return ta;Lu=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,R=!1,I;return{s:function(){T=d[Symbol.iterator]()},n:function(){var L=T.next();return A=L.done,L},e:function(L){R=!0,I=L},f:function(){try{!A&&T.return!=null&&T.return()}finally{if(R)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 o(d,g){if(!(d instanceof g))throw new TypeError("Cannot call a class as a function")}function a(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&&a(d.prototype,g),T&&a(d,T),d}var n=rt,p=Rt(),_=rs();return ta=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]:{},R=arguments.length>5&&arguments[5]!==void 0?arguments[5]:{};if(o(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 $ in R)Object.prototype.hasOwnProperty.call(R,$)&&this.setHeader($,R[$])}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[p.headerize(T)]=Array.isArray(E)?E:[E]}},{key:"getHeader",value:function(T){if(T)return this._headers[p.headerize(T)]}},{key:"hasHeader",value:function(T){if(T)return this._headers.hasOwnProperty(p.headerize(T))&&!0||!1}},{key:"deleteHeader",value:function(T){if(T=p.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(p.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 R=c(this._headers[A]),I;try{for(R.s();!(I=R.n()).done;){var $=I.value;T.push("".concat(A,"=").concat($))}}catch(L){R.e(L)}finally{R.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(p.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}(),ta}var $u;function Rt(){if($u)return Qe;$u=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(ae){throw ae},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 R=!0,I=!1,$;return{s:function(){E=g[Symbol.iterator]()},n:function(){var ae=E.next();return R=ae.done,ae},e:function(ae){I=!0,$=ae},f:function(){try{!R&&E.return!=null&&E.return()}finally{if(I)throw $}}}}function r(g,T){if(g){if(typeof g=="string")return o(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 o(g,T)}}function o(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 a=rt,t=Vs(),n=rs();Qe.str_utf8_length=function(g){return unescape(encodeURIComponent(g)).length};var p=Qe.isFunction=function(g){return g!==void 0?Object.prototype.toString.call(g)==="[object Function]":!1};Qe.isString=function(g){return g!==void 0?Object.prototype.toString.call(g)==="[object String]":!1},Qe.isDecimal=function(g){return!isNaN(g)&&parseFloat(g)===parseInt(g,10)},Qe.isEmpty=function(g){return g===null||g===""||g===void 0||Array.isArray(g)&&g.length===0||typeof g=="number"&&isNaN(g)},Qe.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,R=E;A<R.length;A++){var I=R[A];if(p(g[I]))return!1}return!0};var _=Qe.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};Qe.newTag=function(){return _(10)},Qe.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},Qe.hostType=function(g){if(g){if(g=n.parse(g,"host"),g!==-1)return g.host_type}else return};var d=Qe.escapeUser=function(g){return encodeURIComponent(decodeURIComponent(g)).replace(/%3A/ig,":").replace(/%2B/ig,"+").replace(/%3F/ig,"?").replace(/%2F/ig,"/")};return Qe.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(a.SIP,":").concat(d(y),"@").concat(A);var R;return(R=t.parse(g))?R:void 0}else return}else return},Qe.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,R;for(R=0;R<A;R++)R!==0&&(y+="-"),y+=E[R].charAt(0).toUpperCase()+E[R].substring(1);return T[y]&&(y=T[y]),y},Qe.sipErrorCause=function(g){for(var T in a.SIP_ERROR_CAUSES)if(a.SIP_ERROR_CAUSES[T].indexOf(g)!==-1)return a.causes[T];return a.causes.SIP_FAILURE_CODE},Qe.getRandomTestNetIP=function(){function g(T,E){return Math.floor(Math.random()*(E-T+1)+T)}return"192.0.2.".concat(g(1,254))},Qe.calculateMD5=function(g){function T(pe,ue){return pe<<ue|pe>>>32-ue}function E(pe,ue){var de=pe&2147483648,we=ue&2147483648,De=pe&1073741824,Xe=ue&1073741824,Le=(pe&1073741823)+(ue&1073741823);return De&Xe?Le^2147483648^de^we:De|Xe?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 R(pe,ue,de){return pe^ue^de}function I(pe,ue,de){return ue^(pe|~de)}function $(pe,ue,de,we,De,Xe,Le){return pe=E(pe,E(E(y(ue,de,we),De),Le)),E(T(pe,Xe),ue)}function L(pe,ue,de,we,De,Xe,Le){return pe=E(pe,E(E(A(ue,de,we),De),Le)),E(T(pe,Xe),ue)}function ae(pe,ue,de,we,De,Xe,Le){return pe=E(pe,E(E(R(ue,de,we),De),Le)),E(T(pe,Xe),ue)}function N(pe,ue,de,we,De,Xe,Le){return pe=E(pe,E(E(I(ue,de,we),De),Le)),E(T(pe,Xe),ue)}function F(pe){for(var ue,de=pe.length,we=de+8,De=(we-we%64)/64,Xe=(De+1)*16,Le=new Array(Xe-1),kt=0,_t=0;_t<de;)ue=(_t-_t%4)/4,kt=_t%4*8,Le[ue]=Le[ue]|pe.charCodeAt(_t)<<kt,_t++;return ue=(_t-_t%4)/4,kt=_t%4*8,Le[ue]=Le[ue]|128<<kt,Le[Xe-2]=de<<3,Le[Xe-1]=de>>>29,Le}function Se(pe){var ue="",de="",we,De;for(De=0;De<=3;De++)we=pe>>>De*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,j,z,H,X,U,P,se,et=7,ee=12,W=17,G=22,re=5,ge=9,be=14,xe=20,Ce=4,le=11,ye=16,tt=23,it=6,Ee=10,Ae=15,Ie=21;for(g=ve(g),M=F(g),X=1732584193,U=4023233417,P=2562383102,se=271733878,D=0;D<M.length;D+=16)B=X,j=U,z=P,H=se,X=$(X,U,P,se,M[D+0],et,3614090360),se=$(se,X,U,P,M[D+1],ee,3905402710),P=$(P,se,X,U,M[D+2],W,606105819),U=$(U,P,se,X,M[D+3],G,3250441966),X=$(X,U,P,se,M[D+4],et,4118548399),se=$(se,X,U,P,M[D+5],ee,1200080426),P=$(P,se,X,U,M[D+6],W,2821735955),U=$(U,P,se,X,M[D+7],G,4249261313),X=$(X,U,P,se,M[D+8],et,1770035416),se=$(se,X,U,P,M[D+9],ee,2336552879),P=$(P,se,X,U,M[D+10],W,4294925233),U=$(U,P,se,X,M[D+11],G,2304563134),X=$(X,U,P,se,M[D+12],et,1804603682),se=$(se,X,U,P,M[D+13],ee,4254626195),P=$(P,se,X,U,M[D+14],W,2792965006),U=$(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=ae(X,U,P,se,M[D+5],Ce,4294588738),se=ae(se,X,U,P,M[D+8],le,2272392833),P=ae(P,se,X,U,M[D+11],ye,1839030562),U=ae(U,P,se,X,M[D+14],tt,4259657740),X=ae(X,U,P,se,M[D+1],Ce,2763975236),se=ae(se,X,U,P,M[D+4],le,1272893353),P=ae(P,se,X,U,M[D+7],ye,4139469664),U=ae(U,P,se,X,M[D+10],tt,3200236656),X=ae(X,U,P,se,M[D+13],Ce,681279174),se=ae(se,X,U,P,M[D+0],le,3936430074),P=ae(P,se,X,U,M[D+3],ye,3572445317),U=ae(U,P,se,X,M[D+6],tt,76029189),X=ae(X,U,P,se,M[D+9],Ce,3654602809),se=ae(se,X,U,P,M[D+12],le,3873151461),P=ae(P,se,X,U,M[D+15],ye,530742520),U=ae(U,P,se,X,M[D+2],tt,3299628645),X=N(X,U,P,se,M[D+0],it,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],it,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],it,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],it,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,j),P=E(P,z),se=E(se,H);var Oe=Se(X)+Se(U)+Se(P)+Se(se);return Oe.toLowerCase()},Qe.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(F){E.e(F)}finally{E.f()}}else{T=g.getAudioTracks();var R=s(T),I;try{for(R.s();!(I=R.n()).done;){var $=I.value;$.stop()}}catch(F){R.e(F)}finally{R.f()}T=g.getVideoTracks();var L=s(T),ae;try{for(L.s();!(ae=L.n()).done;){var N=ae.value;N.stop()}}catch(F){L.e(F)}finally{L.f()}}}catch{(typeof g.stop=="function"||c(g.stop)==="object")&&g.stop()}},Qe.cloneArray=function(g){return g&&g.slice()||[]},Qe.cloneObject=function(g){var T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return g&&Object.assign({},g)||T},Qe}var Tu={exports:{}},ar=typeof Reflect=="object"?Reflect:null,Hu=ar&&typeof ar.apply=="function"?ar.apply:function(s,r,o){return Function.prototype.apply.call(s,r,o)},lo;ar&&typeof ar.ownKeys=="function"?lo=ar.ownKeys:Object.getOwnPropertySymbols?lo=function(s){return Object.getOwnPropertyNames(s).concat(Object.getOwnPropertySymbols(s))}:lo=function(s){return Object.getOwnPropertyNames(s)};function J_(c){console&&console.warn&&console.warn(c)}var xf=Number.isNaN||function(s){return s!==s};function ke(){ke.init.call(this)}Tu.exports=ke;Tu.exports.once=eh;ke.EventEmitter=ke;ke.prototype._events=void 0;ke.prototype._eventsCount=0;ke.prototype._maxListeners=void 0;var Fu=10;function Po(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 Fu},set:function(c){if(typeof c!="number"||c<0||xf(c))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+c+".");Fu=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||xf(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 Mf(c){return c._maxListeners===void 0?ke.defaultMaxListeners:c._maxListeners}ke.prototype.getMaxListeners=function(){return Mf(this)};ke.prototype.emit=function(s){for(var r=[],o=1;o<arguments.length;o++)r.push(arguments[o]);var a=s==="error",t=this._events;if(t!==void 0)a=a&&t.error===void 0;else if(!a)return!1;if(a){var n;if(r.length>0&&(n=r[0]),n instanceof Error)throw n;var p=new Error("Unhandled error."+(n?" ("+n.message+")":""));throw p.context=n,p}var _=t[s];if(_===void 0)return!1;if(typeof _=="function")Hu(_,this,r);else for(var d=_.length,g=Ff(_,d),o=0;o<d;++o)Hu(g[o],this,r);return!0};function kf(c,s,r,o){var a,t,n;if(Po(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]=o?[r,n]:[n,r]:o?n.unshift(r):n.push(r),a=Mf(c),a>0&&n.length>a&&!n.warned){n.warned=!0;var p=new Error("Possible EventEmitter memory leak detected. "+n.length+" "+String(s)+" listeners added. Use emitter.setMaxListeners() to increase limit");p.name="MaxListenersExceededWarning",p.emitter=c,p.type=s,p.count=n.length,J_(p)}return c}ke.prototype.addListener=function(s,r){return kf(this,s,r,!1)};ke.prototype.on=ke.prototype.addListener;ke.prototype.prependListener=function(s,r){return kf(this,s,r,!0)};function X_(){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 Lf(c,s,r){var o={fired:!1,wrapFn:void 0,target:c,type:s,listener:r},a=X_.bind(o);return a.listener=r,o.wrapFn=a,a}ke.prototype.once=function(s,r){return Po(r),this.on(s,Lf(this,s,r)),this};ke.prototype.prependOnceListener=function(s,r){return Po(r),this.prependListener(s,Lf(this,s,r)),this};ke.prototype.removeListener=function(s,r){var o,a,t,n,p;if(Po(r),a=this._events,a===void 0)return this;if(o=a[s],o===void 0)return this;if(o===r||o.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete a[s],a.removeListener&&this.emit("removeListener",s,o.listener||r));else if(typeof o!="function"){for(t=-1,n=o.length-1;n>=0;n--)if(o[n]===r||o[n].listener===r){p=o[n].listener,t=n;break}if(t<0)return this;t===0?o.shift():Q_(o,t),o.length===1&&(a[s]=o[0]),a.removeListener!==void 0&&this.emit("removeListener",s,p||r)}return this};ke.prototype.off=ke.prototype.removeListener;ke.prototype.removeAllListeners=function(s){var r,o,a;if(o=this._events,o===void 0)return this;if(o.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):o[s]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete o[s]),this;if(arguments.length===0){var t=Object.keys(o),n;for(a=0;a<t.length;++a)n=t[a],n!=="removeListener"&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(r=o[s],typeof r=="function")this.removeListener(s,r);else if(r!==void 0)for(a=r.length-1;a>=0;a--)this.removeListener(s,r[a]);return this};function $f(c,s,r){var o=c._events;if(o===void 0)return[];var a=o[s];return a===void 0?[]:typeof a=="function"?r?[a.listener||a]:[a]:r?Z_(a):Ff(a,a.length)}ke.prototype.listeners=function(s){return $f(this,s,!0)};ke.prototype.rawListeners=function(s){return $f(this,s,!1)};ke.listenerCount=function(c,s){return typeof c.listenerCount=="function"?c.listenerCount(s):Hf.call(c,s)};ke.prototype.listenerCount=Hf;function Hf(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?lo(this._events):[]};function Ff(c,s){for(var r=new Array(s),o=0;o<s;++o)r[o]=c[o];return r}function Q_(c,s){for(;s+1<c.length;s++)c[s]=c[s+1];c.pop()}function Z_(c){for(var s=new Array(c.length),r=0;r<s.length;++r)s[r]=c[r].listener||c[r];return s}function eh(c,s){return new Promise(function(r,o){function a(n){c.removeListener(s,t),o(n)}function t(){typeof c.removeListener=="function"&&c.removeListener("error",a),r([].slice.call(arguments))}Vf(c,s,t,{once:!0}),s!=="error"&&th(c,a,{once:!0})})}function th(c,s,r){typeof c.on=="function"&&Vf(c,"error",s,r)}function Vf(c,s,r,o){if(typeof c.on=="function")o.once?c.once(s,r):c.on(s,r);else if(typeof c.addEventListener=="function")c.addEventListener(s,function a(t){o.once&&c.removeEventListener(s,a),r(t)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof c)}var ct=Tu.exports,Qa={exports:{}},sa,Vu;function sh(){if(Vu)return sa;Vu=1;var c=1e3,s=c*60,r=s*60,o=r*24,a=o*7,t=o*365.25;sa=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):p(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*a;case"days":case"day":case"d":return E*o;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 p(g){var T=Math.abs(g);return T>=o?Math.round(g/o)+"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>=o?d(g,T,o,"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 sa}function nh(c){r.debug=r,r.default=r,r.coerce=_,r.disable=t,r.enable=a,r.enabled=n,r.humanize=sh(),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 R(...I){if(!R.enabled)return;const $=R,L=Number(new Date),ae=L-(T||L);$.diff=ae,$.prev=T,$.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($,D),I.splice(N,1),N--}return Se}),r.formatArgs.call($,I),($.log||r.log).apply($,I)}return R.namespace=g,R.useColors=r.useColors(),R.color=r.selectColor(g),R.extend=o,R.destroy=r.destroy,Object.defineProperty(R,"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(R),R}function o(g,T){const E=r(this.namespace+(typeof T>"u"?":":T)+g);return E.log=this.log,E}function a(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(p),...r.skips.map(p).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 p(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 rh=nh;(function(c,s){s.formatArgs=o,s.save=a,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 o(_){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 a(_){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=rh(s);const{formatters:p}=c.exports;p.j=function(_){try{return JSON.stringify(_)}catch(d){return"[UnexpectedJSONParseError]: "+d.message}}})(Qa,Qa.exports);var cr=Qa.exports;function ih(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function ju(c,s){for(var r=0;r<s.length;r++){var o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function lh(c,s,r){return s&&ju(c.prototype,s),r&&ju(c,r),c}var er=cr,tr="JsSIP",ft=function(){function c(s){ih(this,c),s?(this._debug=er.default("".concat(tr,":").concat(s)),this._warn=er.default("".concat(tr,":WARN:").concat(s)),this._error=er.default("".concat(tr,":ERROR:").concat(s))):(this._debug=er.default(tr),this._warn=er.default("".concat(tr,":WARN")),this._error=er.default("".concat(tr,":ERROR"))),this._debug.log=console.info.bind(console),this._warn.log=console.warn.bind(console),this._error.log=console.error.bind(console)}return lh(c,[{key:"debug",get:function(){return this._debug}},{key:"warn",get:function(){return this._warn}},{key:"error",get:function(){return this._error}}]),c}(),Ut={},jf={},qf={exports:{}},qu=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(qu).forEach(function(c){var s=qu[c];s.forEach(function(r){r.reg||(r.reg=/(.*)/),r.format||(r.format="%s")})});var Bf=qf.exports;(function(c){var s=function(p){return String(Number(p))===p?Number(p):p},r=function(p,_,d,g){if(g&&!d)_[g]=s(p[1]);else for(var T=0;T<d.length;T+=1)p[T+1]!=null&&(_[d[T]]=s(p[T+1]))},o=function(p,_,d){var g=p.name&&p.names;p.push&&!_[p.push]?_[p.push]=[]:g&&!_[p.name]&&(_[p.name]={});var T=p.push?{}:g?_[p.name]:_;r(d.match(p.reg),T,p.names,p.name),p.push&&_[p.push].push(T)},a=Bf,t=RegExp.prototype.test.bind(/^([a-z])=(.*)/);c.parse=function(p){var _={},d=[],g=_;return p.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<(a[E]||[]).length;A+=1){var R=a[E][A];if(R.reg.test(y))return o(R,g,y)}}),_.media=d,_};var n=function(p,_){var d=_.split(/=(.+)/,2);return d.length===2?p[d[0]]=s(d[1]):d.length===1&&_.length>1&&(p[d[0]]=void 0),p};c.parseParams=function(p){return p.split(/;\s?/).reduce(n,{})},c.parseFmtpConfig=c.parseParams,c.parsePayloads=function(p){return p.toString().split(" ").map(Number)},c.parseRemoteCandidates=function(p){for(var _=[],d=p.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(p){return p.split(" ").map(function(_){return _.substring(1,_.length-1).split(",").reduce(n,{})})},c.parseSimulcastStreamList=function(p){return p.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 na=Bf,oh=/%[sdv%]/g,ah=function(c){var s=1,r=arguments,o=r.length;return c.replace(oh,function(a){if(s>=o)return a;var t=r[s];switch(s+=1,a){case"%%":return"%";case"%s":return String(t);case"%d":return Number(t);case"%v":return""}})},Ai=function(c,s,r){var o=s.format instanceof Function?s.format(s.push?r:r[s.name]):s.format,a=[c+"="+o];if(s.names)for(var t=0;t<s.names.length;t+=1){var n=s.names[t];s.name?a.push(r[s.name][n]):a.push(r[s.names[t]])}else a.push(r[s.name]);return ah.apply(null,a)},uh=["v","o","s","i","u","e","p","c","b","t","r","z","a"],ch=["i","c","b","a"],fh=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||uh,o=s.innerOrder||ch,a=[];return r.forEach(function(t){na[t].forEach(function(n){n.name in c&&c[n.name]!=null?a.push(Ai(t,n,c)):n.push in c&&c[n.push]!=null&&c[n.push].forEach(function(p){a.push(Ai(t,n,p))})})}),c.media.forEach(function(t){a.push(Ai("m",na.m[0],t)),o.forEach(function(n){na[n].forEach(function(p){p.name in t&&t[p.name]!=null?a.push(Ai(n,p,t)):p.push in t&&t[p.push]!=null&&t[p.push].forEach(function(_){a.push(Ai(n,p,_))})})})}),a.join(`\r
7
7
  `)+`\r
8
- `},En=Lf,oh=lh;Nt.write=oh;Nt.parse=En.parse;Nt.parseParams=En.parseParams;Nt.parseFmtpConfig=En.parseFmtpConfig;Nt.parsePayloads=En.parsePayloads;Nt.parseRemoteCandidates=En.parseRemoteCandidates;Nt.parseImageAttributes=En.parseImageAttributes;Nt.parseSimulcastStreamList=En.parseSimulcastStreamList;function io(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?io=function(r){return typeof r}:io=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},io(c)}function mu(c,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(n&&n.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),n&&Ja(c,n)}function Ja(c,n){return Ja=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},Ja(c,n)}function gu(c){var n=ch();return function(){var o=go(c),a;if(n){var t=go(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return ah(this,a)}}function ah(c,n){return n&&(io(n)==="object"||typeof n=="function")?n:uh(c)}function uh(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 go(c){return go=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},go(c)}function jt(c,n){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=fh(c))||n&&c&&typeof c.length=="number"){r&&(c=r);var o=0,a=function(){};return{s:a,n:function(){return o>=c.length?{done:!0}:{done:!1,value:c[o++]}},e:function(d){throw d},f:a}}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,s=!1,p;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){s=!0,p=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(s)throw p}}}}function fh(c,n){if(c){if(typeof c=="string")return Vu(c,n);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 Vu(c,n)}}function Vu(c,n){(n==null||n>c.length)&&(n=c.length);for(var r=0,o=new Array(n);r<n;r++)o[r]=c[r];return o}function zi(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function ju(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Uo(c,n,r){return n&&ju(c.prototype,n),r&&ju(c,r),c}var Ff=Nt,_h=ft,Tt=rt,st=Ct(),qu=du(),hh=ns(),sa=new _h("SIPMessage"),Vf=function(){function c(n,r,o,a,t,s){if(zi(this,c),!n||!r||!o)return null;a=a||{},this.ua=o,this.headers={},this.method=n,this.ruri=r,this.body=s,this.extraHeaders=st.cloneArray(t),this.ua.configuration.extra_headers&&(this.extraHeaders=this.extraHeaders.concat(this.ua.configuration.extra_headers)),a.route_set?this.setHeader("route",a.route_set):o.configuration.use_preloaded_route&&this.setHeader("route","<".concat(o.transport.sip_uri,";lr>")),this.setHeader("via",""),this.setHeader("max-forwards",Tt.MAX_FORWARDS);var p=a.to_uri||r,_=a.to_tag?{tag:a.to_tag}:null,d=typeof a.to_display_name<"u"?a.to_display_name:null;this.to=new qu(p,d,_),this.setHeader("to",this.to.toString());var g=a.from_uri||o.configuration.uri,T={tag:a.from_tag||st.newTag()},E;typeof a.from_display_name<"u"?E=a.from_display_name:o.configuration.display_name?E=o.configuration.display_name:E=null,this.from=new qu(g,E,T),this.setHeader("from",this.from.toString());var y=a.call_id||o.configuration.jssip_id+st.createRandomToken(15);this.call_id=y,this.setHeader("call-id",y);var A=a.cseq||Math.floor(Math.random()*1e4);this.cseq=A,this.setHeader("cseq","".concat(A," ").concat(n))}return Uo(c,[{key:"setHeader",value:function(r,o){for(var a=new RegExp("^\\s*".concat(r,"\\s*:"),"i"),t=0;t<this.extraHeaders.length;t++)a.test(this.extraHeaders[t])&&this.extraHeaders.splice(t,1);this.headers[st.headerize(r)]=Array.isArray(o)?o:[o]}},{key:"getHeader",value:function(r){var o=this.headers[st.headerize(r)];if(o){if(o[0])return o[0]}else{var a=new RegExp("^\\s*".concat(r,"\\s*:"),"i"),t=jt(this.extraHeaders),s;try{for(t.s();!(s=t.n()).done;){var p=s.value;if(a.test(p))return p.substring(p.indexOf(":")+1).trim()}}catch(_){t.e(_)}finally{t.f()}}}},{key:"getHeaders",value:function(r){var o=this.headers[st.headerize(r)],a=[];if(o){var t=jt(o),s;try{for(t.s();!(s=t.n()).done;){var p=s.value;a.push(p)}}catch(E){t.e(E)}finally{t.f()}return a}else{var _=new RegExp("^\\s*".concat(r,"\\s*:"),"i"),d=jt(this.extraHeaders),g;try{for(d.s();!(g=d.n()).done;){var T=g.value;_.test(T)&&a.push(T.substring(T.indexOf(":")+1).trim())}}catch(E){d.e(E)}finally{d.f()}return a}}},{key:"hasHeader",value:function(r){if(this.headers[st.headerize(r)])return!0;var o=new RegExp("^\\s*".concat(r,"\\s*:"),"i"),a=jt(this.extraHeaders),t;try{for(a.s();!(t=a.n()).done;){var s=t.value;if(o.test(s))return!0}}catch(p){a.e(p)}finally{a.f()}return!1}},{key:"parseSDP",value:function(r){return!r&&this.sdp?this.sdp:(this.sdp=Ff.parse(this.body||""),this.sdp)}},{key:"toString",value:function(){var r="".concat(this.method," ").concat(this.ruri,` SIP/2.0\r
10
- `);for(var o in this.headers)if(Object.prototype.hasOwnProperty.call(this.headers,o)){var a=jt(this.headers[o]),t;try{for(a.s();!(t=a.n()).done;){var s=t.value;r+="".concat(o,": ").concat(s,`\r
11
- `)}}catch(y){a.e(y)}finally{a.f()}}var p=jt(this.extraHeaders),_;try{for(p.s();!(_=p.n()).done;){var d=_.value;r+="".concat(d.trim(),`\r
12
- `)}}catch(y){p.e(y)}finally{p.f()}var g=[];switch(this.method){case Tt.REGISTER:g.push("path","gruu");break;case Tt.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 Tt.UPDATE:this.ua.configuration.session_timers&&g.push("timer"),g.push("ice");break}g.push("outbound");var T=this.ua.configuration.user_agent||Tt.USER_AGENT;if(r+="Allow: ".concat(Tt.ALLOWED_METHODS,`\r
8
+ `},Sn=jf,_h=fh;Ut.write=_h;Ut.parse=Sn.parse;Ut.parseParams=Sn.parseParams;Ut.parseFmtpConfig=Sn.parseFmtpConfig;Ut.parsePayloads=Sn.parsePayloads;Ut.parseRemoteCandidates=Sn.parseRemoteCandidates;Ut.parseImageAttributes=Sn.parseImageAttributes;Ut.parseSimulcastStreamList=Sn.parseSimulcastStreamList;function oo(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?oo=function(r){return typeof r}:oo=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},oo(c)}function vu(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&&Za(c,s)}function Za(c,s){return Za=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},Za(c,s)}function Eu(c){var s=ph();return function(){var o=vo(c),a;if(s){var t=vo(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return hh(this,a)}}function hh(c,s){return s&&(oo(s)==="object"||typeof s=="function")?s:dh(c)}function dh(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function ph(){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 vo(c){return vo=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},vo(c)}function qt(c,s){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=mh(c))||s&&c&&typeof c.length=="number"){r&&(c=r);var o=0,a=function(){};return{s:a,n:function(){return o>=c.length?{done:!0}:{done:!1,value:c[o++]}},e:function(d){throw d},f:a}}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,p;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){n=!0,p=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(n)throw p}}}}function mh(c,s){if(c){if(typeof c=="string")return Bu(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 Bu(c,s)}}function Bu(c,s){(s==null||s>c.length)&&(s=c.length);for(var r=0,o=new Array(s);r<s;r++)o[r]=c[r];return o}function Ji(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Gu(c,s){for(var r=0;r<s.length;r++){var o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function xo(c,s,r){return s&&Gu(c.prototype,s),r&&Gu(c,r),c}var Gf=Ut,gh=ft,vt=rt,st=Rt(),Wu=gu(),Th=rs(),ra=new gh("SIPMessage"),Wf=function(){function c(s,r,o,a,t,n){if(Ji(this,c),!s||!r||!o)return null;a=a||{},this.ua=o,this.headers={},this.method=s,this.ruri=r,this.body=n,this.extraHeaders=st.cloneArray(t),this.ua.configuration.extra_headers&&(this.extraHeaders=this.extraHeaders.concat(this.ua.configuration.extra_headers)),a.route_set?this.setHeader("route",a.route_set):o.configuration.use_preloaded_route&&this.setHeader("route","<".concat(o.transport.sip_uri,";lr>")),this.setHeader("via",""),this.setHeader("max-forwards",vt.MAX_FORWARDS);var p=a.to_uri||r,_=a.to_tag?{tag:a.to_tag}:null,d=typeof a.to_display_name<"u"?a.to_display_name:null;this.to=new Wu(p,d,_),this.setHeader("to",this.to.toString());var g=a.from_uri||o.configuration.uri,T={tag:a.from_tag||st.newTag()},E;typeof a.from_display_name<"u"?E=a.from_display_name:o.configuration.display_name?E=o.configuration.display_name:E=null,this.from=new Wu(g,E,T),this.setHeader("from",this.from.toString());var y=a.call_id||o.configuration.jssip_id+st.createRandomToken(15);this.call_id=y,this.setHeader("call-id",y);var A=a.cseq||Math.floor(Math.random()*1e4);this.cseq=A,this.setHeader("cseq","".concat(A," ").concat(s))}return xo(c,[{key:"setHeader",value:function(r,o){for(var a=new RegExp("^\\s*".concat(r,"\\s*:"),"i"),t=0;t<this.extraHeaders.length;t++)a.test(this.extraHeaders[t])&&this.extraHeaders.splice(t,1);this.headers[st.headerize(r)]=Array.isArray(o)?o:[o]}},{key:"getHeader",value:function(r){var o=this.headers[st.headerize(r)];if(o){if(o[0])return o[0]}else{var a=new RegExp("^\\s*".concat(r,"\\s*:"),"i"),t=qt(this.extraHeaders),n;try{for(t.s();!(n=t.n()).done;){var p=n.value;if(a.test(p))return p.substring(p.indexOf(":")+1).trim()}}catch(_){t.e(_)}finally{t.f()}}}},{key:"getHeaders",value:function(r){var o=this.headers[st.headerize(r)],a=[];if(o){var t=qt(o),n;try{for(t.s();!(n=t.n()).done;){var p=n.value;a.push(p)}}catch(E){t.e(E)}finally{t.f()}return a}else{var _=new RegExp("^\\s*".concat(r,"\\s*:"),"i"),d=qt(this.extraHeaders),g;try{for(d.s();!(g=d.n()).done;){var T=g.value;_.test(T)&&a.push(T.substring(T.indexOf(":")+1).trim())}}catch(E){d.e(E)}finally{d.f()}return a}}},{key:"hasHeader",value:function(r){if(this.headers[st.headerize(r)])return!0;var o=new RegExp("^\\s*".concat(r,"\\s*:"),"i"),a=qt(this.extraHeaders),t;try{for(a.s();!(t=a.n()).done;){var n=t.value;if(o.test(n))return!0}}catch(p){a.e(p)}finally{a.f()}return!1}},{key:"parseSDP",value:function(r){return!r&&this.sdp?this.sdp:(this.sdp=Gf.parse(this.body||""),this.sdp)}},{key:"toString",value:function(){var r="".concat(this.method," ").concat(this.ruri,` SIP/2.0\r
10
+ `);for(var o in this.headers)if(Object.prototype.hasOwnProperty.call(this.headers,o)){var a=qt(this.headers[o]),t;try{for(a.s();!(t=a.n()).done;){var n=t.value;r+="".concat(o,": ").concat(n,`\r
11
+ `)}}catch(y){a.e(y)}finally{a.f()}}var p=qt(this.extraHeaders),_;try{for(p.s();!(_=p.n()).done;){var d=_.value;r+="".concat(d.trim(),`\r
12
+ `)}}catch(y){p.e(y)}finally{p.f()}var g=[];switch(this.method){case vt.REGISTER:g.push("path","gruu");break;case vt.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 vt.UPDATE:this.ua.configuration.session_timers&&g.push("timer"),g.push("ice");break}g.push("outbound");var T=this.ua.configuration.user_agent||vt.USER_AGENT;if(r+="Allow: ".concat(vt.ALLOWED_METHODS,`\r
13
13
  `),r+="Supported: ".concat(g,`\r
14
14
  `),r+="User-Agent: ".concat(T,`\r
15
15
  `),this.body){var E=st.str_utf8_length(this.body);r+="Content-Length: ".concat(E,`\r
16
16
  \r
17
17
  `),r+=this.body}else r+=`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(o){r.headers[o]=this.headers[o].slice()},this),r.body=this.body,r.extraHeaders=st.cloneArray(this.extraHeaders),r.to=this.to,r.from=this.from,r.call_id=this.call_id,r.cseq=this.cseq,r}}]),c}(),dh=function(c){mu(r,c);var n=gu(r);function r(o,a,t,s,p){var _;return zi(this,r),_=n.call(this,Tt.INVITE,o,a,t,s,p),_.transaction=null,_}return Uo(r,[{key:"cancel",value:function(a){this.transaction.cancel(a)}},{key:"clone",value:function(){var a=new r(this.ruri,this.ua);return Object.keys(this.headers).forEach(function(t){a.headers[t]=this.headers[t].slice()},this),a.body=this.body,a.extraHeaders=st.cloneArray(this.extraHeaders),a.to=this.to,a.from=this.from,a.call_id=this.call_id,a.cseq=this.cseq,a.transaction=this.transaction,a}}]),r}(Vf),jf=function(){function c(){zi(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 Uo(c,[{key:"addHeader",value:function(r,o){var a={raw:o};r=st.headerize(r),this.headers[r]?this.headers[r].push(a):this.headers[r]=[a]}},{key:"getHeader",value:function(r){var o=this.headers[st.headerize(r)];if(o){if(o[0])return o[0].raw}else return}},{key:"getHeaders",value:function(r){var o=this.headers[st.headerize(r)],a=[];if(!o)return[];var t=jt(o),s;try{for(t.s();!(s=t.n()).done;){var p=s.value;a.push(p.raw)}}catch(_){t.e(_)}finally{t.f()}return a}},{key:"hasHeader",value:function(r){return!!this.headers[st.headerize(r)]}},{key:"parseHeader",value:function(r){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(r=st.headerize(r),this.headers[r]){if(o>=this.headers[r].length){sa.debug('not so many "'.concat(r,'" headers present'));return}}else{sa.debug('header "'.concat(r,'" not present'));return}var a=this.headers[r][o],t=a.raw;if(a.parsed)return a.parsed;var s=hh.parse(t,r.replace(/-/g,"_"));if(s===-1){this.headers[r].splice(o,1),sa.debug('error parsing "'.concat(r,'" header field with value "').concat(t,'"'));return}else return a.parsed=s,s}},{key:"s",value:function(r,o){return this.parseHeader(r,o)}},{key:"setHeader",value:function(r,o){var a={raw:o};this.headers[st.headerize(r)]=[a]}},{key:"parseSDP",value:function(r){return!r&&this.sdp?this.sdp:(this.sdp=Ff.parse(this.body||""),this.sdp)}},{key:"toString",value:function(){return this.data}}]),c}(),ph=function(c){mu(r,c);var n=gu(r);function r(o){var a;return zi(this,r),a=n.call(this),a.ua=o,a.headers={},a.ruri=null,a.transport=null,a.server_transaction=null,a}return Uo(r,[{key:"reply",value:function(a,t,s,p,_,d){var g=[],T=this.getHeader("To");if(a=a||null,t=t||null,!a||a<100||a>699)throw new TypeError("Invalid status_code: ".concat(a));if(t&&typeof t!="string"&&!(t instanceof String))throw new TypeError("Invalid reason_phrase: ".concat(t));t=t||Tt.REASON_PHRASE[a]||"",s=st.cloneArray(s),this.ua.configuration.extra_headers&&(s=s.concat(this.ua.configuration.extra_headers));var E="SIP/2.0 ".concat(a," ").concat(t,`\r
20
- `);if(this.method===Tt.INVITE&&a>100&&a<=200){var y=this.getHeaders("record-route"),A=jt(y),R;try{for(A.s();!(R=A.n()).done;){var I=R.value;E+="Record-Route: ".concat(I,`\r
21
- `)}}catch(D){A.e(D)}finally{A.f()}}var $=this.getHeaders("via"),L=jt($),ae;try{for(L.s();!(ae=L.n()).done;){var N=ae.value;E+="Via: ".concat(N,`\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(o){r.headers[o]=this.headers[o].slice()},this),r.body=this.body,r.extraHeaders=st.cloneArray(this.extraHeaders),r.to=this.to,r.from=this.from,r.call_id=this.call_id,r.cseq=this.cseq,r}}]),c}(),vh=function(c){vu(r,c);var s=Eu(r);function r(o,a,t,n,p){var _;return Ji(this,r),_=s.call(this,vt.INVITE,o,a,t,n,p),_.transaction=null,_}return xo(r,[{key:"cancel",value:function(a){this.transaction.cancel(a)}},{key:"clone",value:function(){var a=new r(this.ruri,this.ua);return Object.keys(this.headers).forEach(function(t){a.headers[t]=this.headers[t].slice()},this),a.body=this.body,a.extraHeaders=st.cloneArray(this.extraHeaders),a.to=this.to,a.from=this.from,a.call_id=this.call_id,a.cseq=this.cseq,a.transaction=this.transaction,a}}]),r}(Wf),Kf=function(){function c(){Ji(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 xo(c,[{key:"addHeader",value:function(r,o){var a={raw:o};r=st.headerize(r),this.headers[r]?this.headers[r].push(a):this.headers[r]=[a]}},{key:"getHeader",value:function(r){var o=this.headers[st.headerize(r)];if(o){if(o[0])return o[0].raw}else return}},{key:"getHeaders",value:function(r){var o=this.headers[st.headerize(r)],a=[];if(!o)return[];var t=qt(o),n;try{for(t.s();!(n=t.n()).done;){var p=n.value;a.push(p.raw)}}catch(_){t.e(_)}finally{t.f()}return a}},{key:"hasHeader",value:function(r){return!!this.headers[st.headerize(r)]}},{key:"parseHeader",value:function(r){var o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(r=st.headerize(r),this.headers[r]){if(o>=this.headers[r].length){ra.debug('not so many "'.concat(r,'" headers present'));return}}else{ra.debug('header "'.concat(r,'" not present'));return}var a=this.headers[r][o],t=a.raw;if(a.parsed)return a.parsed;var n=Th.parse(t,r.replace(/-/g,"_"));if(n===-1){this.headers[r].splice(o,1),ra.debug('error parsing "'.concat(r,'" header field with value "').concat(t,'"'));return}else return a.parsed=n,n}},{key:"s",value:function(r,o){return this.parseHeader(r,o)}},{key:"setHeader",value:function(r,o){var a={raw:o};this.headers[st.headerize(r)]=[a]}},{key:"parseSDP",value:function(r){return!r&&this.sdp?this.sdp:(this.sdp=Gf.parse(this.body||""),this.sdp)}},{key:"toString",value:function(){return this.data}}]),c}(),Eh=function(c){vu(r,c);var s=Eu(r);function r(o){var a;return Ji(this,r),a=s.call(this),a.ua=o,a.headers={},a.ruri=null,a.transport=null,a.server_transaction=null,a}return xo(r,[{key:"reply",value:function(a,t,n,p,_,d){var g=[],T=this.getHeader("To");if(a=a||null,t=t||null,!a||a<100||a>699)throw new TypeError("Invalid status_code: ".concat(a));if(t&&typeof t!="string"&&!(t instanceof String))throw new TypeError("Invalid reason_phrase: ".concat(t));t=t||vt.REASON_PHRASE[a]||"",n=st.cloneArray(n),this.ua.configuration.extra_headers&&(n=n.concat(this.ua.configuration.extra_headers));var E="SIP/2.0 ".concat(a," ").concat(t,`\r
20
+ `);if(this.method===vt.INVITE&&a>100&&a<=200){var y=this.getHeaders("record-route"),A=qt(y),R;try{for(A.s();!(R=A.n()).done;){var I=R.value;E+="Record-Route: ".concat(I,`\r
21
+ `)}}catch(D){A.e(D)}finally{A.f()}}var $=this.getHeaders("via"),L=qt($),ae;try{for(L.s();!(ae=L.n()).done;){var N=ae.value;E+="Via: ".concat(N,`\r
22
22
  `)}}catch(D){L.e(D)}finally{L.f()}!this.to_tag&&a>100?T+=";tag=".concat(st.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 F=jt(s),Se;try{for(F.s();!(Se=F.n()).done;){var ve=Se.value;E+="".concat(ve.trim(),`\r
27
- `)}}catch(D){F.e(D)}finally{F.f()}switch(this.method){case Tt.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 Tt.UPDATE:this.ua.configuration.session_timers&&g.push("timer"),p&&g.push("ice"),g.push("replaces")}if(g.push("outbound"),this.method===Tt.OPTIONS?(E+="Allow: ".concat(Tt.ALLOWED_METHODS,`\r
28
- `),E+="Accept: ".concat(Tt.ACCEPTED_BODY_TYPES,`\r
29
- `)):a===405?E+="Allow: ".concat(Tt.ALLOWED_METHODS,`\r
30
- `):a===415&&(E+="Accept: ".concat(Tt.ACCEPTED_BODY_TYPES,`\r
26
+ `);var F=qt(n),Se;try{for(F.s();!(Se=F.n()).done;){var ve=Se.value;E+="".concat(ve.trim(),`\r
27
+ `)}}catch(D){F.e(D)}finally{F.f()}switch(this.method){case vt.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 vt.UPDATE:this.ua.configuration.session_timers&&g.push("timer"),p&&g.push("ice"),g.push("replaces")}if(g.push("outbound"),this.method===vt.OPTIONS?(E+="Allow: ".concat(vt.ALLOWED_METHODS,`\r
28
+ `),E+="Accept: ".concat(vt.ACCEPTED_BODY_TYPES,`\r
29
+ `)):a===405?E+="Allow: ".concat(vt.ALLOWED_METHODS,`\r
30
+ `):a===415&&(E+="Accept: ".concat(vt.ACCEPTED_BODY_TYPES,`\r
31
31
  `)),E+="Supported: ".concat(g,`\r
32
32
  `),p){var M=st.str_utf8_length(p);E+=`Content-Type: application/sdp\r
33
33
  `,E+="Content-Length: ".concat(M,`\r
34
34
  \r
35
35
  `),E+=p}else E+="Content-Length: ".concat(0,`\r
36
36
  \r
37
- `);this.server_transaction.receiveResponse(a,E,_,d)}},{key:"reply_sl",value:function(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,s=this.getHeaders("via");if(!a||a<100||a>699)throw new TypeError("Invalid status_code: ".concat(a));if(t&&typeof t!="string"&&!(t instanceof String))throw new TypeError("Invalid reason_phrase: ".concat(t));t=t||Tt.REASON_PHRASE[a]||"";var p="SIP/2.0 ".concat(a," ").concat(t,`\r
38
- `),_=jt(s),d;try{for(_.s();!(d=_.n()).done;){var g=d.value;p+="Via: ".concat(g,`\r
37
+ `);this.server_transaction.receiveResponse(a,E,_,d)}},{key:"reply_sl",value:function(){var a=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(!a||a<100||a>699)throw new TypeError("Invalid status_code: ".concat(a));if(t&&typeof t!="string"&&!(t instanceof String))throw new TypeError("Invalid reason_phrase: ".concat(t));t=t||vt.REASON_PHRASE[a]||"";var p="SIP/2.0 ".concat(a," ").concat(t,`\r
38
+ `),_=qt(n),d;try{for(_.s();!(d=_.n()).done;){var g=d.value;p+="Via: ".concat(g,`\r
39
39
  `)}}catch(R){_.e(R)}finally{_.f()}var T=this.getHeader("To");if(!this.to_tag&&a>100?T+=";tag=".concat(st.newTag()):this.to_tag&&!this.s("to").hasParam("tag")&&(T+=";tag=".concat(this.to_tag)),p+="To: ".concat(T,`\r
40
40
  `),p+="From: ".concat(this.getHeader("From"),`\r
41
41
  `),p+="Call-ID: ".concat(this.call_id,`\r
42
42
  `),p+="CSeq: ".concat(this.cseq," ").concat(this.method,`\r
43
- `),this.ua.configuration.extra_headers){var E=jt(this.ua.configuration.extra_headers),y;try{for(E.s();!(y=E.n()).done;){var A=y.value;p+="".concat(A.trim(),`\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;p+="".concat(A.trim(),`\r
44
44
  `)}}catch(R){E.e(R)}finally{E.f()}}p+="Content-Length: ".concat(0,`\r
45
45
  \r
46
- `),this.transport.send(p)}}]),r}(jf),mh=function(c){mu(r,c);var n=gu(r);function r(){var o;return zi(this,r),o=n.call(this),o.headers={},o.status_code=null,o.reason_phrase=null,o}return r}(jf),ms={OutgoingRequest:Vf,InitialOutgoingInviteRequest:dh,IncomingRequest:ph,IncomingResponse:mh};function gh(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function Bu(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Th(c,n,r){return n&&Bu(c.prototype,n),r&&Bu(c,r),c}var vh=ft,as=Ct(),Gt=new vh("DigestAuthentication"),Eh=function(){function c(n){gh(this,c),this._credentials=n,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 Th(c,[{key:"get",value:function(r){switch(r){case"realm":return this._realm;case"ha1":return this._ha1;default:Gt.warn('get() | cannot get "%s" parameter',r);return}}},{key:"authenticate",value:function(r,o){var a=r.method,t=r.ruri,s=r.body,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]: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 Gt.warn('authenticate() | challenge with Digest algorithm different than "MD5", authentication aborted'),!1}else this._algorithm="MD5";if(!this._nonce)return Gt.warn("authenticate() | challenge without Digest nonce, authentication aborted"),!1;if(!this._realm)return Gt.warn("authenticate() | challenge without Digest realm, authentication aborted"),!1;if(!this._credentials.password){if(!this._credentials.ha1)return Gt.warn("authenticate() | no plain SIP password nor ha1 provided, authentication aborted"),!1;if(this._credentials.realm!==this._realm)return Gt.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 Gt.warn('authenticate() | challenge without Digest qop different than "auth" or "auth-int", authentication aborted'),!1;else this._qop=null;this._method=a,this._uri=t,this._cnonce=p||as.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=as.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=as.calculateMD5(d),Gt.debug('authenticate() | using qop=auth [a2:"%s"]',d),this._response=as.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(as.calculateMD5(s||"")),g=as.calculateMD5(d),Gt.debug('authenticate() | using qop=auth-int [a2:"%s"]',d),this._response=as.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=as.calculateMD5(d),Gt.debug('authenticate() | using qop=null [a2:"%s"]',d),this._response=as.calculateMD5("".concat(this._ha1,":").concat(this._nonce,":").concat(g))),Gt.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}(),us=500,Sh=4e3,Gu=5e3,qf={T1:us,T2:Sh,T4:Gu,TIMER_B:64*us,TIMER_D:0*us,TIMER_F:64*us,TIMER_H:64*us,TIMER_I:0*us,TIMER_J:0*us,TIMER_K:0*Gu,TIMER_L:64*us,TIMER_M:64*us,PROVISIONAL_RESPONSE_INTERVAL:6e4};function lo(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?lo=function(r){return typeof r}:lo=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},lo(c)}function Ji(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function Wu(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Xi(c,n,r){return n&&Wu(c.prototype,n),r&&Wu(c,r),c}function Qi(c,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(n&&n.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),n&&Xa(c,n)}function Xa(c,n){return Xa=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},Xa(c,n)}function Zi(c){var n=Ah();return function(){var o=To(c),a;if(n){var t=To(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return yh(this,a)}}function yh(c,n){return n&&(lo(n)==="object"||typeof n=="function")?n:Ls(c)}function Ls(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function Ah(){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 To(c){return To=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},To(c)}var el=ct.EventEmitter,tl=ft,Vi=rt,Ku=ms,ts=qf,Yu=new tl("NonInviteClientTransaction"),Ol=new tl("InviteClientTransaction"),Ch=new tl("AckClientTransaction"),zu=new tl("NonInviteServerTransaction"),Dl=new tl("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"},Rh=function(c){Qi(r,c);var n=Zi(r);function r(o,a,t,s){var p;Ji(this,r),p=n.call(this),p.type=_e.NON_INVITE_CLIENT,p.id="z9hG4bK".concat(Math.floor(Math.random()*1e7)),p.ua=o,p.transport=a,p.request=t,p.eventHandlers=s;var _="SIP/2.0/".concat(a.via_transport);return _+=" ".concat(o.configuration.via_host,";branch=").concat(p.id),p.request.setHeader("via",_),p.ua.newTransaction(Ls(p)),p}return Xi(r,[{key:"stateChanged",value:function(a){this.state=a,this.emit("stateChanged")}},{key:"send",value:function(){var a=this;this.stateChanged(_e.STATUS_TRYING),this.F=setTimeout(function(){a.timer_F()},ts.TIMER_F),this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){Yu.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(){Yu.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(a){var t=this,s=a.status_code;if(s<200)switch(this.state){case _e.STATUS_TRYING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(a);break}else switch(this.state){case _e.STATUS_TRYING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_COMPLETED),clearTimeout(this.F),s===408?this.eventHandlers.onRequestTimeout():this.eventHandlers.onReceiveResponse(a),this.K=setTimeout(function(){t.timer_K()},ts.TIMER_K);break;case _e.STATUS_COMPLETED:break}}},{key:"C",get:function(){return _e}}]),r}(el),Ih=function(c){Qi(r,c);var n=Zi(r);function r(o,a,t,s){var p;Ji(this,r),p=n.call(this),p.type=_e.INVITE_CLIENT,p.id="z9hG4bK".concat(Math.floor(Math.random()*1e7)),p.ua=o,p.transport=a,p.request=t,p.eventHandlers=s,t.transaction=Ls(p);var _="SIP/2.0/".concat(a.via_transport);return _+=" ".concat(o.configuration.via_host,";branch=").concat(p.id),p.request.setHeader("via",_),p.ua.newTransaction(Ls(p)),p}return Xi(r,[{key:"stateChanged",value:function(a){this.state=a,this.emit("stateChanged")}},{key:"send",value:function(){var a=this;this.stateChanged(_e.STATUS_CALLING),this.B=setTimeout(function(){a.timer_B()},ts.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&&(Ol.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(){Ol.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(){Ol.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(){Ol.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(a){var t=this,s=new Ku.OutgoingRequest(Vi.ACK,this.request.ruri,this.ua,{route_set:this.request.getHeaders("route"),call_id:this.request.getHeader("call-id"),cseq:this.request.cseq});s.setHeader("from",this.request.getHeader("from")),s.setHeader("via",this.request.getHeader("via")),s.setHeader("to",a.getHeader("to")),this.D=setTimeout(function(){t.timer_D()},ts.TIMER_D),this.transport.send(s)}},{key:"cancel",value:function(a){if(this.state===_e.STATUS_PROCEEDING){var t=new Ku.OutgoingRequest(Vi.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")),a&&t.setHeader("reason",a),this.transport.send(t)}}},{key:"receiveResponse",value:function(a){var t=this,s=a.status_code;if(s>=100&&s<=199)switch(this.state){case _e.STATUS_CALLING:this.stateChanged(_e.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(a);break;case _e.STATUS_PROCEEDING:this.eventHandlers.onReceiveResponse(a);break}else if(s>=200&&s<=299)switch(this.state){case _e.STATUS_CALLING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_ACCEPTED),this.M=setTimeout(function(){t.timer_M()},ts.TIMER_M),this.eventHandlers.onReceiveResponse(a);break;case _e.STATUS_ACCEPTED:this.eventHandlers.onReceiveResponse(a);break}else if(s>=300&&s<=699)switch(this.state){case _e.STATUS_CALLING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_COMPLETED),this.sendACK(a),this.eventHandlers.onReceiveResponse(a);break;case _e.STATUS_COMPLETED:this.sendACK(a);break}}},{key:"C",get:function(){return _e}}]),r}(el),bh=function(c){Qi(r,c);var n=Zi(r);function r(o,a,t,s){var p;Ji(this,r),p=n.call(this),p.id="z9hG4bK".concat(Math.floor(Math.random()*1e7)),p.transport=a,p.request=t,p.eventHandlers=s;var _="SIP/2.0/".concat(a.via_transport);return _+=" ".concat(o.configuration.via_host,";branch=").concat(p.id),p.request.setHeader("via",_),p}return Xi(r,[{key:"send",value:function(){this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){Ch.debug("transport error occurred for transaction ".concat(this.id)),this.eventHandlers.onTransportError()}},{key:"C",get:function(){return _e}}]),r}(el),wh=function(c){Qi(r,c);var n=Zi(r);function r(o,a,t){var s;return Ji(this,r),s=n.call(this),s.type=_e.NON_INVITE_SERVER,s.id=t.via_branch,s.ua=o,s.transport=a,s.request=t,s.last_response="",t.server_transaction=Ls(s),s.state=_e.STATUS_TRYING,o.newTransaction(Ls(s)),s}return Xi(r,[{key:"stateChanged",value:function(a){this.state=a,this.emit("stateChanged")}},{key:"timer_J",value:function(){zu.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,zu.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(a,t,s,p){var _=this;if(a===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)?s&&s():(this.onTransportError(),p&&p());break}else if(a>=200&&a<=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()},ts.TIMER_J),this.transport.send(t)?s&&s():(this.onTransportError(),p&&p());break;case _e.STATUS_COMPLETED:break}}},{key:"C",get:function(){return _e}}]),r}(el),Oh=function(c){Qi(r,c);var n=Zi(r);function r(o,a,t){var s;return Ji(this,r),s=n.call(this),s.type=_e.INVITE_SERVER,s.id=t.via_branch,s.ua=o,s.transport=a,s.request=t,s.last_response="",t.server_transaction=Ls(s),s.state=_e.STATUS_PROCEEDING,o.newTransaction(Ls(s)),s.resendProvisionalTimer=null,t.reply(100),s}return Xi(r,[{key:"stateChanged",value:function(a){this.state=a,this.emit("stateChanged")}},{key:"timer_H",value:function(){Dl.debug("Timer H expired for transaction ".concat(this.id)),this.state===_e.STATUS_COMPLETED&&Dl.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(){Dl.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,Dl.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(a,t,s,p){var _=this;if(a>=100&&a<=199)switch(this.state){case _e.STATUS_PROCEEDING:this.transport.send(t)||this.onTransportError(),this.last_response=t;break}if(a>100&&a<=199&&this.state===_e.STATUS_PROCEEDING)this.resendProvisionalTimer===null&&(this.resendProvisionalTimer=setInterval(function(){_.resend_provisional()},ts.PROVISIONAL_RESPONSE_INTERVAL));else if(a>=200&&a<=299)switch(this.state){case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_ACCEPTED),this.last_response=t,this.L=setTimeout(function(){_.timer_L()},ts.TIMER_L),this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null);case _e.STATUS_ACCEPTED:this.transport.send(t)?s&&s():(this.onTransportError(),p&&p());break}else if(a>=300&&a<=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()},ts.TIMER_H),s&&s()):(this.onTransportError(),p&&p());break}}},{key:"C",get:function(){return _e}}]),r}(el);function Dh(c,n){var r=c._transactions,o;switch(n.method){case Vi.INVITE:if(o=r.ist[n.via_branch],o){switch(o.state){case _e.STATUS_PROCEEDING:o.transport.send(o.last_response);break;case _e.STATUS_ACCEPTED:break}return!0}break;case Vi.ACK:if(o=r.ist[n.via_branch],o){if(o.state===_e.STATUS_ACCEPTED)return!1;if(o.state===_e.STATUS_COMPLETED)return o.state=_e.STATUS_CONFIRMED,o.I=setTimeout(function(){o.timer_I()},ts.TIMER_I),!0}else return!1;break;case Vi.CANCEL:return o=r.ist[n.via_branch],o?(n.reply_sl(200),o.state!==_e.STATUS_PROCEEDING):(n.reply_sl(481),!0);default:if(o=r.nist[n.via_branch],o){switch(o.state){case _e.STATUS_TRYING:break;case _e.STATUS_PROCEEDING:case _e.STATUS_COMPLETED:o.transport.send(o.last_response);break}return!0}break}}var sl={C:_e,NonInviteClientTransaction:Rh,InviteClientTransaction:Ih,AckClientTransaction:bh,NonInviteServerTransaction:wh,InviteServerTransaction:Oh,checkTransaction:Dh};function Nh(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function Ju(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Uh(c,n,r){return n&&Ju(c.prototype,n),r&&Ju(c,r),c}var Ph=ft,Xu=rt,xh=Eh,na=sl,Mh=new Ph("RequestSender"),ra={onRequestTimeout:function(){},onTransportError:function(){},onReceiveResponse:function(){},onAuthenticated:function(){}},nl=function(){function c(n,r,o){Nh(this,c),this._ua=n,this._eventHandlers=o,this._method=r.method,this._request=r,this._auth=null,this._challenged=!1,this._staled=!1;for(var a in ra)Object.prototype.hasOwnProperty.call(ra,a)&&(this._eventHandlers[a]||(this._eventHandlers[a]=ra[a]));n.status===n.C.STATUS_USER_CLOSED&&(this._method!==Xu.BYE||this._method!==Xu.ACK)&&this._eventHandlers.onTransportError()}return Uh(c,[{key:"send",value:function(){var r=this,o={onRequestTimeout:function(){r._eventHandlers.onRequestTimeout()},onTransportError:function(){r._eventHandlers.onTransportError()},onReceiveResponse:function(t){r._receiveResponse(t)}};switch(this._method){case"INVITE":this.clientTransaction=new na.InviteClientTransaction(this._ua,this._ua.transport,this._request,o);break;case"ACK":this.clientTransaction=new na.AckClientTransaction(this._ua,this._ua.transport,this._request,o);break;default:this.clientTransaction=new na.NonInviteClientTransaction(this._ua,this._ua.transport,this._request,o)}this._ua._configuration.authorization_jwt&&this._request.setHeader("Authorization",this._ua._configuration.authorization_jwt),this.clientTransaction.send()}},{key:"_receiveResponse",value:function(r){var o,a,t=r.status_code;if((t===401||t===407)&&(this._ua.configuration.password!==null||this._ua.configuration.ha1!==null)){if(r.status_code===401?(o=r.parseHeader("www-authenticate"),a="authorization"):(o=r.parseHeader("proxy-authenticate"),a="proxy-authorization"),!o){Mh.debug("".concat(r.status_code," with wrong or missing challenge, cannot authenticate")),this._eventHandlers.onReceiveResponse(r);return}if(!this._challenged||!this._staled&&o.stale===!0){if(this._auth||(this._auth=new xh({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,o)){this._eventHandlers.onReceiveResponse(r);return}this._challenged=!0,this._ua.set("realm",this._auth.get("realm")),this._ua.set("ha1",this._auth.get("ha1")),o.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(a,this._auth.toString()),this._eventHandlers.onAuthenticated(this._request),this.send()}else this._eventHandlers.onReceiveResponse(r)}else this._eventHandlers.onReceiveResponse(r)}}]),c}();function kh(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function Qu(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Lh(c,n,r){return n&&Qu(c.prototype,n),r&&Qu(c,r),c}var $h=ft,ia=Ct(),an=rt,Zu=ms,ec=nl,Ai=new $h("Registrator"),Nl=10,Hh=function(){function c(n,r){kh(this,c),this._reg_id=1,this._ua=n,this._transport=r,this._registrar=n.configuration.registrar_server,this._expires=n.configuration.register_expires,this._call_id=ia.createRandomToken(22),this._cseq=0,this._to_uri=n.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 Lh(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 o in r)if(Object.prototype.hasOwnProperty.call(r,o)){var a=r[o];this._extraContactParams+=";".concat(o),a&&(this._extraContactParams+="=".concat(a))}}},{key:"register",value:function(){var r=this;if(this._registering){Ai.debug("Register request in progress...");return}var o=this._extraHeaders.slice();o.push("Contact: ".concat(this._contact,";expires=").concat(this._expires).concat(this._extraContactParams)),o.push("Expires: ".concat(this._expires));var a=new Zu.OutgoingRequest(an.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},o),t=new ec(this._ua,a,{onRequestTimeout:function(){r._registrationFailure(null,an.causes.REQUEST_TIMEOUT)},onTransportError:function(){r._registrationFailure(null,an.causes.CONNECTION_ERROR)},onAuthenticated:function(){r._cseq+=1},onReceiveResponse:function(p){if(p.cseq===r._cseq)switch(r._registrationTimer!==null&&(clearTimeout(r._registrationTimer),r._registrationTimer=null),!0){case/^1[0-9]{2}$/.test(p.status_code):break;case/^2[0-9]{2}$/.test(p.status_code):{if(r._registering=!1,!p.hasHeader("Contact")){Ai.debug("no Contact header in response to REGISTER, response ignored");break}var _=p.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){Ai.debug("no Contact header pointing to us, response ignored");break}var g=d.getParam("expires");!g&&p.hasHeader("expires")&&(g=p.getHeader("expires")),g||(g=r._expires),g=Number(g),g<Nl&&(g=Nl);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:p}));break}case/^423$/.test(p.status_code):{p.hasHeader("min-expires")?(r._expires=Number(p.getHeader("min-expires")),r._expires<Nl&&(r._expires=Nl),r.register()):(Ai.debug("423 response received for REGISTER without Min-Expires"),r._registrationFailure(p,an.causes.SIP_FAILURE_CODE));break}default:{var E=ia.sipErrorCause(p.status_code);r._registrationFailure(p,E)}}}});this._registering=!0,t.send()}},{key:"unregister",value:function(){var r=this,o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this._registered){Ai.debug("already unregistered");return}this._registered=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null);var a=this._extraHeaders.slice();o.all?a.push("Contact: *".concat(this._extraContactParams)):a.push("Contact: ".concat(this._contact,";expires=0").concat(this._extraContactParams)),a.push("Expires: 0");var t=new Zu.OutgoingRequest(an.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},a),s=new ec(this._ua,t,{onRequestTimeout:function(){r._unregistered(null,an.causes.REQUEST_TIMEOUT)},onTransportError:function(){r._unregistered(null,an.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=ia.sipErrorCause(_.status_code);r._unregistered(_,d)}}}});s.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,o){this._registering=!1,this._ua.registrationFailed({response:r||null,cause:o}),this._registered&&(this._registered=!1,this._ua.unregistered({response:r||null,cause:o}))}},{key:"_unregistered",value:function(r,o){this._registering=!1,this._registered=!1,this._ua.unregistered({response:r||null,cause:o||null})}},{key:"registered",get:function(){return this._registered}}]),c}();function Fh(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function tc(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Vh(c,n,r){return n&&tc(c.prototype,n),r&&tc(c,r),c}var la=rt,Ul=sl,jh=nl,oa={onRequestTimeout:function(){},onTransportError:function(){},onSuccessResponse:function(){},onErrorResponse:function(){},onAuthenticated:function(){},onDialogError:function(){}},qh=function(){function c(n,r,o){Fh(this,c),this._dialog=n,this._ua=n._ua,this._request=r,this._eventHandlers=o,this._reattempt=!1,this._reattemptTimer=null;for(var a in oa)Object.prototype.hasOwnProperty.call(oa,a)&&(this._eventHandlers[a]||(this._eventHandlers[a]=oa[a]))}return Vh(c,[{key:"send",value:function(){var r=this,o=new jh(this._ua,this._request,{onRequestTimeout:function(){r._eventHandlers.onRequestTimeout()},onTransportError:function(){r._eventHandlers.onTransportError()},onAuthenticated:function(s){r._eventHandlers.onAuthenticated(s)},onReceiveResponse:function(s){r._receiveResponse(s)}});if(o.send(),(this._request.method===la.INVITE||this._request.method===la.UPDATE&&this._request.body)&&o.clientTransaction.state!==Ul.C.STATUS_TERMINATED){this._dialog.uac_pending_reply=!0;var a=function t(){(o.clientTransaction.state===Ul.C.STATUS_ACCEPTED||o.clientTransaction.state===Ul.C.STATUS_COMPLETED||o.clientTransaction.state===Ul.C.STATUS_TERMINATED)&&(o.clientTransaction.removeListener("stateChanged",t),r._dialog.uac_pending_reply=!1)};o.clientTransaction.on("stateChanged",a)}}},{key:"_receiveResponse",value:function(r){var o=this;r.status_code===408||r.status_code===481?this._eventHandlers.onDialogError(r):r.method===la.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(){o._dialog.isTerminated()||(o._reattempt=!0,o.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 Bh(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function sc(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function nc(c,n,r){return n&&sc(c.prototype,n),r&&sc(c,r),c}var Gh=ft,rc=ms,Ns=rt,Ci=sl,Wh=qh,aa=Ct(),ua=new Gh("Dialog"),Us={STATUS_EARLY:1,STATUS_CONFIRMED:2,STATUS_TERMINATED:3},Kh=function(){nc(c,null,[{key:"C",get:function(){return Us}}]);function c(n,r,o){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Us.STATUS_CONFIRMED;if(Bh(this,c),this._owner=n,this._ua=n._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 rc.IncomingResponse&&(a=r.status_code<200?Us.STATUS_EARLY:Us.STATUS_CONFIRMED);var t=r.parseHeader("contact");o==="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=a,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):o==="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=a,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),ua.debug("new ".concat(o," dialog created with status ").concat(this._state===Us.STATUS_EARLY?"EARLY":"CONFIRMED"))}return nc(c,[{key:"isTerminated",value:function(){return this._status===Us.STATUS_TERMINATED}},{key:"update",value:function(r,o){this._state=Us.STATUS_CONFIRMED,ua.debug("dialog ".concat(this._id.toString()," changed to CONFIRMED state")),o==="UAC"&&(this._route_set=r.getHeaders("record-route").reverse())}},{key:"terminate",value:function(){ua.debug("dialog ".concat(this._id.toString()," deleted")),this._ua.destroyDialog(this),this._state=Us.STATUS_TERMINATED}},{key:"sendRequest",value:function(r){var o=this,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=aa.cloneArray(a.extraHeaders),s=aa.cloneObject(a.eventHandlers),p=a.body||null,_=this._createRequest(r,t,p);s.onAuthenticated=function(){o._local_seqnum+=1};var d=new Wh(this,_,s);return d.send(),_}},{key:"receiveRequest",value:function(r){this._checkInDialogRequest(r)&&(r.method===Ns.ACK&&this._ack_seqnum!==null?this._ack_seqnum=null:r.method===Ns.INVITE&&(this._ack_seqnum=r.cseq),this._owner.receiveRequest(r))}},{key:"_createRequest",value:function(r,o,a){o=aa.cloneArray(o),this._local_seqnum||(this._local_seqnum=Math.floor(Math.random()*1e4));var t=r===Ns.CANCEL||r===Ns.ACK?this._local_seqnum:this._local_seqnum+=1,s=new rc.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},o,a);return s}},{key:"_checkInDialogRequest",value:function(r){var o=this;if(!this._remote_seqnum)this._remote_seqnum=r.cseq;else if(r.cseq<this._remote_seqnum)if(r.method===Ns.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===Ns.INVITE||r.method===Ns.UPDATE&&r.body){if(this._uac_pending_reply===!0)r.reply(491);else if(this._uas_pending_reply===!0){var a=(Math.random()*10|0)+1;return r.reply(500,null,["Retry-After:".concat(a)]),!1}else{this._uas_pending_reply=!0;var t=function s(){(r.server_transaction.state===Ci.C.STATUS_ACCEPTED||r.server_transaction.state===Ci.C.STATUS_COMPLETED||r.server_transaction.state===Ci.C.STATUS_TERMINATED)&&(r.server_transaction.removeListener("stateChanged",s),o._uas_pending_reply=!1)};r.server_transaction.on("stateChanged",t)}r.hasHeader("contact")&&r.server_transaction.on("stateChanged",function(){r.server_transaction.state===Ci.C.STATUS_ACCEPTED&&(o._remote_target=r.parseHeader("contact").uri)})}else r.method===Ns.NOTIFY&&r.hasHeader("contact")&&r.server_transaction.on("stateChanged",function(){r.server_transaction.state===Ci.C.STATUS_COMPLETED&&(o._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}(),Tu={exports:{}};function oo(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?oo=function(r){return typeof r}:oo=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},oo(c)}function Yh(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function ic(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function zh(c,n,r){return n&&ic(c.prototype,n),r&&ic(c,r),c}function Jh(c,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(n&&n.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),n&&Qa(c,n)}function Qa(c,n){return Qa=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},Qa(c,n)}function Xh(c){var n=ed();return function(){var o=vo(c),a;if(n){var t=vo(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return Qh(this,a)}}function Qh(c,n){return n&&(oo(n)==="object"||typeof n=="function")?n:Zh(c)}function Zh(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function ed(){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 vo(c){return vo=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},vo(c)}var td=ct.EventEmitter,sd=ft,nd=rt,rd=Hs,lc=Ct(),id=new sd("RTCSession:DTMF"),Bf={MIN_DURATION:70,MAX_DURATION:6e3,DEFAULT_DURATION:100,MIN_INTER_TONE_GAP:50,DEFAULT_INTER_TONE_GAP:500};Tu.exports=function(c){Jh(r,c);var n=Xh(r);function r(o){var a;return Yh(this,r),a=n.call(this),a._session=o,a._direction=null,a._tone=null,a._duration=null,a._request=null,a}return zh(r,[{key:"send",value:function(a){var t=this,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(a===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 rd.InvalidStateError(this._session.status);var p=lc.cloneArray(s.extraHeaders);if(this.eventHandlers=lc.cloneObject(s.eventHandlers),typeof a=="string")a=a.toUpperCase();else if(typeof a=="number")a=a.toString();else throw new TypeError("Invalid tone: ".concat(a));if(a.match(/^[0-9A-DR#*]$/))this._tone=a;else throw new TypeError("Invalid tone: ".concat(a));this._duration=s.duration,p.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(nd.INFO,{extraHeaders:p,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(a){var t=/^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/,s=/^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/;if(this._direction="incoming",this._request=a,a.reply(200),a.body){var p=a.body.split(`
48
- `);p.length>=1&&t.test(p[0])&&(this._tone=p[0].replace(t,"$2")),p.length>=2&&s.test(p[1])&&(this._duration=parseInt(p[1].replace(s,"$2"),10))}this._duration||(this._duration=Bf.DEFAULT_DURATION),this._tone?this._session.newDTMF({originator:"remote",dtmf:this,request:a}):id.debug("invalid INFO DTMF received, discarded")}},{key:"tone",get:function(){return this._tone}},{key:"duration",get:function(){return this._duration}}]),r}(td);Tu.exports.C=Bf;var ld=Tu.exports;function ao(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ao=function(r){return typeof r}:ao=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ao(c)}function od(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function oc(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function ad(c,n,r){return n&&oc(c.prototype,n),r&&oc(c,r),c}function ud(c,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(n&&n.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),n&&Za(c,n)}function Za(c,n){return Za=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},Za(c,n)}function cd(c){var n=hd();return function(){var o=Eo(c),a;if(n){var t=Eo(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return fd(this,a)}}function fd(c,n){return n&&(ao(n)==="object"||typeof n=="function")?n:_d(c)}function _d(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function hd(){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 Eo(c){return Eo=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Eo(c)}var dd=ct.EventEmitter,pd=rt,md=Hs,gd=Ct(),Td=function(c){ud(r,c);var n=cd(r);function r(o){var a;return od(this,r),a=n.call(this),a._session=o,a._direction=null,a._contentType=null,a._body=null,a}return ad(r,[{key:"send",value:function(a,t){var s=this,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(this._direction="outgoing",a===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 md.InvalidStateError(this._session.status);this._contentType=a,this._body=t;var _=gd.cloneArray(p.extraHeaders);_.push("Content-Type: ".concat(a)),this._session.newInfo({originator:"local",info:this,request:this.request}),this._session.sendRequest(pd.INFO,{extraHeaders:_,eventHandlers:{onSuccessResponse:function(g){s.emit("succeeded",{originator:"remote",response:g})},onErrorResponse:function(g){s.emit("failed",{originator:"remote",response:g})},onTransportError:function(){s._session.onTransportError()},onRequestTimeout:function(){s._session.onRequestTimeout()},onDialogError:function(){s._session.onDialogError()}},body:t})}},{key:"init_incoming",value:function(a){this._direction="incoming",this.request=a,a.reply(200),this._contentType=a.hasHeader("Content-Type")?a.getHeader("Content-Type").toLowerCase():void 0,this._body=a.body,this._session.newInfo({originator:"remote",info:this,request:a})}},{key:"contentType",get:function(){return this._contentType}},{key:"body",get:function(){return this._body}}]),r}(dd);function vd(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function ac(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Ed(c,n,r){return n&&ac(c.prototype,n),r&&ac(c,r),c}var Sd=ft,uc=rt,yd=new Sd("RTCSession:ReferNotifier"),ca={event_type:"refer",body_type:"message/sipfrag;version=2.0",expires:300},Ad=function(){function c(n,r,o){vd(this,c),this._session=n,this._id=r,this._expires=o||ca.expires,this._active=!0,this.notify(100)}return Ed(c,[{key:"notify",value:function(r,o){if(yd.debug("notify()"),this._active!==!1){o=o||uc.REASON_PHRASE[r]||"";var a;r>=200?a="terminated;reason=noresource":a="active;expires=".concat(this._expires),this._session.sendRequest(uc.NOTIFY,{extraHeaders:["Event: ".concat(ca.event_type,";id=").concat(this._id),"Subscription-State: ".concat(a),"Content-Type: ".concat(ca.body_type)],body:"SIP/2.0 ".concat(r," ").concat(o),eventHandlers:{onErrorResponse:function(){this._active=!1}}})}}}]),c}();function uo(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?uo=function(r){return typeof r}:uo=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},uo(c)}function Cd(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function cc(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Rd(c,n,r){return n&&cc(c.prototype,n),r&&cc(c,r),c}function Id(c,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(n&&n.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),n&&eu(c,n)}function eu(c,n){return eu=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},eu(c,n)}function bd(c){var n=Dd();return function(){var o=So(c),a;if(n){var t=So(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return wd(this,a)}}function wd(c,n){return n&&(uo(n)==="object"||typeof n=="function")?n:Od(c)}function Od(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 So(c){return So=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},So(c)}var Nd=ct.EventEmitter,Ud=ft,Ri=rt,Pd=ns(),fc=Ct(),un=new Ud("RTCSession:ReferSubscriber"),xd=function(c){Id(r,c);var n=bd(r);function r(o){var a;return Cd(this,r),a=n.call(this),a._id=null,a._session=o,a}return Rd(r,[{key:"sendRefer",value:function(a){var t=this,s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};un.debug("sendRefer()");var p=fc.cloneArray(s.extraHeaders),_=fc.cloneObject(s.eventHandlers);for(var d in _)Object.prototype.hasOwnProperty.call(_,d)&&this.on(d,_[d]);var g=null;s.replaces&&(g=s.replaces._request.call_id,g+=";to-tag=".concat(s.replaces._to_tag),g+=";from-tag=".concat(s.replaces._from_tag),g=encodeURIComponent(g));var T="Refer-To: <".concat(a).concat(g?"?Replaces=".concat(g):"",">");if(p.push(T),!p.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,">");p.push(E)}p.push("Contact: ".concat(this._session.contact));var y=this._session.sendRequest(Ri.REFER,{extraHeaders:p,eventHandlers:{onSuccessResponse:function(R){t._requestSucceeded(R)},onErrorResponse:function(R){t._requestFailed(R,Ri.causes.REJECTED)},onTransportError:function(){t._requestFailed(null,Ri.causes.CONNECTION_ERROR)},onRequestTimeout:function(){t._requestFailed(null,Ri.causes.REQUEST_TIMEOUT)},onDialogError:function(){t._requestFailed(null,Ri.causes.DIALOG_ERROR)}}});this._id=y.cseq}},{key:"receiveNotify",value:function(a){if(un.debug("receiveNotify()"),!!a.body){var t=Pd.parse(a.body.trim().split(`\r
49
- `,1)[0],"Status_Line");if(t===-1){un.debug('receiveNotify() | error parsing NOTIFY body: "'.concat(a.body,'"'));return}switch(!0){case/^100$/.test(t.status_code):this.emit("trying",{request:a,status_line:t});break;case/^1[0-9]{2}$/.test(t.status_code):this.emit("progress",{request:a,status_line:t});break;case/^2[0-9]{2}$/.test(t.status_code):this.emit("accepted",{request:a,status_line:t});break;default:this.emit("failed",{request:a,status_line:t});break}}}},{key:"_requestSucceeded",value:function(a){un.debug("REFER succeeded"),un.debug('emit "requestSucceeded"'),this.emit("requestSucceeded",{response:a})}},{key:"_requestFailed",value:function(a,t){un.debug("REFER failed"),un.debug('emit "requestFailed"'),this.emit("requestFailed",{response:a||null,cause:t})}},{key:"id",get:function(){return this._id}}]),r}(Nd);function co(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?co=function(r){return typeof r}:co=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},co(c)}function cs(c,n){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=Md(c))||n&&c&&typeof c.length=="number"){r&&(c=r);var o=0,a=function(){};return{s:a,n:function(){return o>=c.length?{done:!0}:{done:!1,value:c[o++]}},e:function(d){throw d},f:a}}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,s=!1,p;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){s=!0,p=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(s)throw p}}}}function Md(c,n){if(c){if(typeof c=="string")return _c(c,n);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,n)}}function _c(c,n){(n==null||n>c.length)&&(n=c.length);for(var r=0,o=new Array(n);r<n;r++)o[r]=c[r];return o}function kd(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function hc(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function dc(c,n,r){return n&&hc(c.prototype,n),r&&hc(c,r),c}function Ld(c,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(n&&n.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),n&&tu(c,n)}function tu(c,n){return tu=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},tu(c,n)}function $d(c){var n=Vd();return function(){var o=yo(c),a;if(n){var t=yo(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return Hd(this,a)}}function Hd(c,n){return n&&(co(n)==="object"||typeof n=="function")?n:Fd(c)}function Fd(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function Vd(){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 yo(c){return yo=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},yo(c)}var jd=ct.EventEmitter,pc=Nt,qd=ft,ce=rt,cn=Hs,mc=sl,qe=Ct(),Ii=qf,Bd=ms,Pl=Kh,Gd=nl,Ut=ld,gc=Td,Wd=Ad,Kd=xd,Tc=Fs(),K=new qd("RTCSession"),X={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},xl=["audio","video"],Yd=function(c){Ld(r,c);var n=$d(r);dc(r,null,[{key:"C",get:function(){return X}}]);function r(o){var a;return kd(this,r),K.debug("new"),a=n.call(this),a._id=null,a._ua=o,a._status=X.STATUS_NULL,a._dialog=null,a._earlyDialogs={},a._contact=null,a._from_tag=null,a._to_tag=null,a._connection=null,a._connectionPromiseQueue=Promise.resolve(),a._request=null,a._is_canceled=!1,a._cancel_reason="",a._is_confirmed=!1,a._late_sdp=!1,a._rtcOfferConstraints=null,a._rtcAnswerConstraints=null,a._localMediaStream=null,a._localMediaStreamLocallyGenerated=!1,a._rtcReady=!0,a._iceReady=!1,a._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},a._direction=null,a._local_identity=null,a._remote_identity=null,a._start_time=null,a._end_time=null,a._tones=null,a._audioMuted=!1,a._videoMuted=!1,a._localHold=!1,a._remoteHold=!1,a._sessionTimers={enabled:a._ua.configuration.session_timers,refreshMethod:a._ua.configuration.session_timers_refresh_method,defaultExpires:ce.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},a._referSubscribers={},a._data={},a}return dc(r,[{key:"isInProgress",value:function(){switch(this._status){case X.STATUS_NULL:case X.STATUS_INVITE_SENT:case X.STATUS_1XX_RECEIVED:case X.STATUS_INVITE_RECEIVED:case X.STATUS_WAITING_FOR_ANSWER:return!0;default:return!1}}},{key:"isEstablished",value:function(){switch(this._status){case X.STATUS_ANSWERED:case X.STATUS_WAITING_FOR_ACK:case X.STATUS_CONFIRMED:return!0;default:return!1}}},{key:"isEnded",value:function(){switch(this._status){case X.STATUS_CANCELED:case X.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(a){console.log("rtcOfferConstraints connect");var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},s=arguments.length>2?arguments[2]:void 0;K.debug("connect()");var p=a,_=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,a===void 0)throw new TypeError("Not enough arguments");if(this._status!==X.STATUS_NULL)throw new cn.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new cn.NotSupportedError("WebRTC not supported");if(a=this._ua.normalizeTarget(a),!a)throw new TypeError("Invalid target: ".concat(p));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 R in _)Object.prototype.hasOwnProperty.call(_,R)&&this.on(R,_[R]);this._from_tag=qe.newTag();var I=t.anonymous||!1,$={from_tag:this._from_tag};this._contact=this._ua.contact.toString({anonymous:I,outbound:!0}),I?($.from_display_name="Anonymous",$.from_uri=new Tc("sip","anonymous","anonymous.invalid"),d.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString())),d.push("Privacy: id")):t.fromUserName&&($.from_uri=new Tc("sip",t.fromUserName,this._ua.configuration.uri.host),d.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString()))),t.fromDisplayName&&($.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 Bd.InitialOutgoingInviteRequest(a,this._ua,$,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,s&&s(this),this._newRTCSession("local",this._request),this._sendInitialRequest(g,A,T)}},{key:"init_incoming",value:function(a,t){var s=this;K.debug("init_incoming()");var p,_=a.hasHeader("Content-Type")?a.getHeader("Content-Type").toLowerCase():void 0;if(a.body&&_!=="application/sdp"){a.reply(415);return}if(this._status=X.STATUS_INVITE_RECEIVED,this._from_tag=a.from_tag,this._id=a.call_id+this._from_tag,this._request=a,this._contact=this._ua.contact.toString(),a.hasHeader("expires")&&(p=a.getHeader("expires")*1e3),a.to_tag=qe.newTag(),!this._createDialog(a,"UAS",!0)){a.reply(500,"Missing Contact header field");return}a.body?this._late_sdp=!1:this._late_sdp=!0,this._status=X.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(function(){a.reply(408),s._failed("local",null,ce.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),p&&(this._timers.expiresTimer=setTimeout(function(){s._status===X.STATUS_WAITING_FOR_ANSWER&&(a.reply(487),s._failed("system",null,ce.causes.EXPIRES))},p)),this._direction="incoming",this._local_identity=a.to,this._remote_identity=a.from,t&&t(this),this._newRTCSession("remote",a),this._status!==X.STATUS_TERMINATED&&(a.reply(180,null,["Contact: ".concat(this._contact)]),this._progress("local",null))}},{key:"answer",value:function(){var a=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("answer()");var s=this._request,p=qe.cloneArray(t.extraHeaders),_=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,R=!1,I=!1,$=!1,L=!1;if(this._rtcAnswerConstraints=E,this._rtcOfferConstraints=t.rtcOfferConstraints||null,this._data=t.data||this._data,this._direction!=="incoming")throw new cn.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==X.STATUS_WAITING_FOR_ANSWER)throw new cn.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=X.STATUS_ANSWERED,!this._createDialog(s,"UAS")){s.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),p.unshift("Contact: ".concat(this._contact));var ae=s.parseSDP();Array.isArray(ae.media)||(ae.media=[ae.media]);var N=cs(ae.media),F;try{for(N.s();!(F=N.n()).done;){var Se=F.value;Se.type==="audio"&&(R=!0,(!Se.direction||Se.direction==="sendrecv")&&($=!0)),Se.type==="video"&&(I=!0,(!Se.direction||Se.direction==="sendrecv")&&(L=!0))}}catch(H){N.e(H)}finally{N.f()}if(d&&_.audio===!1){A=d.getAudioTracks();var ve=cs(A),M;try{for(ve.s();!(M=ve.n()).done;){var D=M.value;d.removeTrack(D)}}catch(H){ve.e(H)}finally{ve.f()}}if(d&&_.video===!1){A=d.getVideoTracks();var q=cs(A),j;try{for(q.s();!(j=q.n()).done;){var z=j.value;d.removeTrack(z)}}catch(H){q.e(H)}finally{q.f()}}!d&&_.audio===void 0&&(_.audio=$),!d&&_.video===void 0&&(_.video=L),!d&&!R&&!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 a._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(_).catch(function(H){throw a._status===X.STATUS_TERMINATED?new Error("terminated"):(s.reply(480),a._failed("local",null,ce.causes.USER_DENIED_MEDIA_ACCESS),K.warn('emit "getusermediafailed" [error:%o]',H),a.emit("getusermediafailed",H),new Error("getUserMedia() failed"))})}).then(function(H){if(a._status===X.STATUS_TERMINATED)throw new Error("terminated");a._localMediaStream=H,H&&H.getTracks().forEach(function(J){a._connection.addTrack(J,H)})}).then(function(){if(!a._late_sdp){var H={originator:"remote",type:"offer",sdp:s.body};K.debug('emit "sdp"'),a.emit("sdp",H);var J=new RTCSessionDescription({type:"offer",sdp:H.sdp});return a._connectionPromiseQueue=a._connectionPromiseQueue.then(function(){return a._connection.setRemoteDescription(J)}).catch(function(U){throw s.reply(488),a._failed("system",null,ce.causes.WEBRTC_ERROR),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',U),a.emit("peerconnection:setremotedescriptionfailed",U),new Error("peerconnection.setRemoteDescription() failed")}),a._connectionPromiseQueue}}).then(function(){if(a._status===X.STATUS_TERMINATED)throw new Error("terminated");return a._connecting(s),a._late_sdp?a._createLocalDescription("offer",a._rtcOfferConstraints).catch(function(){throw s.reply(500),new Error("_createLocalDescription() failed")}):a._createLocalDescription("answer",E).catch(function(){throw s.reply(500),new Error("_createLocalDescription() failed")})}).then(function(H){if(a._status===X.STATUS_TERMINATED)throw new Error("terminated");a._handleSessionTimersInIncomingRequest(s,p),s.reply(200,null,p,H,function(){a._status=X.STATUS_WAITING_FOR_ACK,a._setInvite2xxTimer(s,H),a._setACKTimer(),a._accepted("local")},function(){a._failed("system",null,ce.causes.CONNECTION_ERROR)})}).catch(function(H){a._status!==X.STATUS_TERMINATED&&K.warn(H)})}},{key:"terminate",value:function(){var a=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("terminate()");var s=t.cause||ce.causes.BYE,p=qe.cloneArray(t.extraHeaders),_=t.body,d,g=t.status_code,T=t.reason_phrase;if(this._status===X.STATUS_TERMINATED)throw new cn.InvalidStateError(this._status);switch(this._status){case X.STATUS_NULL:case X.STATUS_INVITE_SENT:case X.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===X.STATUS_NULL||this._status===X.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=d):this._status===X.STATUS_1XX_RECEIVED&&this._request.cancel(d),this._status=X.STATUS_CANCELED,this._failed("local",null,ce.causes.CANCELED);break;case X.STATUS_WAITING_FOR_ANSWER:case X.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,p,_),this._failed("local",null,ce.causes.REJECTED);break;case X.STATUS_WAITING_FOR_ACK:case X.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&&p.push("Reason: SIP ;cause=".concat(g,'; text="').concat(T,'"')),this._status===X.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==mc.C.STATUS_TERMINATED){var E=this._dialog;this.receiveRequest=function(y){var A=y.method;A===ce.ACK&&(a.sendRequest(ce.BYE,{extraHeaders:p,body:_}),E.terminate())},this._request.server_transaction.on("stateChanged",function(){a._request.server_transaction.state===mc.C.STATUS_TERMINATED&&(a.sendRequest(ce.BYE,{extraHeaders:p,body:_}),E.terminate())}),this._ended("local",null,s),this._dialog=E,this._ua.newDialog(E)}else this.sendRequest(ce.BYE,{extraHeaders:p,body:_}),this._ended("local",null,s)}}},{key:"sendDTMF",value:function(a){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};K.debug("sendDTMF() | tones: %s",a);var s=0,p=t.duration||null,_=t.interToneGap||null,d=t.transportType||ce.DTMF_TRANSPORT.INFO;if(a===void 0)throw new TypeError("Not enough arguments");if(this._status!==X.STATUS_CONFIRMED&&this._status!==X.STATUS_WAITING_FOR_ACK&&this._status!==X.STATUS_1XX_RECEIVED)throw new cn.InvalidStateError(this._status);if(d!==ce.DTMF_TRANSPORT.INFO&&d!==ce.DTMF_TRANSPORT.RFC2833)throw new TypeError("invalid transportType: ".concat(d));if(typeof a=="number"&&(a=a.toString()),!a||typeof a!="string"||!a.match(/^[0-9A-DR#*,]+$/i))throw new TypeError("Invalid tones: ".concat(a));if(p&&!qe.isDecimal(p))throw new TypeError("Invalid tone duration: ".concat(p));if(p?p<Ut.C.MIN_DURATION?(K.debug('"duration" value is lower than the minimum allowed, setting it to '.concat(Ut.C.MIN_DURATION," milliseconds")),p=Ut.C.MIN_DURATION):p>Ut.C.MAX_DURATION?(K.debug('"duration" value is greater than the maximum allowed, setting it to '.concat(Ut.C.MAX_DURATION," milliseconds")),p=Ut.C.MAX_DURATION):p=Math.abs(p):p=Ut.C.DEFAULT_DURATION,t.duration=p,_&&!qe.isDecimal(_))throw new TypeError("Invalid interToneGap: ".concat(_));if(_?_<Ut.C.MIN_INTER_TONE_GAP?(K.debug('"interToneGap" value is lower than the minimum allowed, setting it to '.concat(Ut.C.MIN_INTER_TONE_GAP," milliseconds")),_=Ut.C.MIN_INTER_TONE_GAP):_=Math.abs(_):_=Ut.C.DEFAULT_INTER_TONE_GAP,d===ce.DTMF_TRANSPORT.RFC2833){var g=this._getDTMFRTPSender();g&&(a=g.toneBuffer+a,g.insertDTMF(a,p,_));return}if(this._tones){this._tones+=a;return}this._tones=a,T.call(this);function T(){var E=this,y;if(this._status===X.STATUS_TERMINATED||!this._tones||s>=this._tones.length){this._tones=null;return}var A=this._tones[s];if(s+=1,A===",")y=2e3;else{var R=new Ut(this);t.eventHandlers={onFailed:function(){E._tones=null}},R.send(A,t),y=p+_}setTimeout(T.bind(this),y)}}},{key:"sendInfo",value:function(a,t){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(K.debug("sendInfo()"),this._status!==X.STATUS_CONFIRMED&&this._status!==X.STATUS_WAITING_FOR_ACK&&this._status!==X.STATUS_1XX_RECEIVED)throw new cn.InvalidStateError(this._status);var p=new gc(this);p.send(a,t,s)}},{key:"mute",value:function(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{audio:!0,video:!1};K.debug("mute()");var t=!1,s=!1;this._audioMuted===!1&&a.audio&&(t=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&a.video&&(s=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(t===!0||s===!0)&&this._onmute({audio:t,video:s})}},{key:"unmute",value:function(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{audio:!0,video:!0};K.debug("unmute()");var t=!1,s=!1;this._audioMuted===!0&&a.audio&&(t=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&a.video&&(s=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(t===!0||s===!0)&&this._onunmute({audio:t,video:s})}},{key:"hold",value:function(){var a=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},s=arguments.length>1?arguments[1]:void 0;if(K.debug("hold()"),this._status!==X.STATUS_WAITING_FOR_ACK&&this._status!==X.STATUS_CONFIRMED||this._localHold===!0||!this._isReadyToReOffer())return!1;this._localHold=!0,this._onhold("local");var p={succeeded:function(){s&&s()},failed:function(){a.terminate({cause:ce.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:p,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:p,extraHeaders:t.extraHeaders}),!0}},{key:"unhold",value:function(){var a=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},s=arguments.length>1?arguments[1]:void 0;if(K.debug("unhold()"),this._status!==X.STATUS_WAITING_FOR_ACK&&this._status!==X.STATUS_CONFIRMED||this._localHold===!1||!this._isReadyToReOffer())return!1;this._localHold=!1,this._onunhold("local");var p={succeeded:function(){s&&s()},failed:function(){a.terminate({cause:ce.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:p,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:p,extraHeaders:t.extraHeaders}),!0}},{key:"renegotiate",value:function(){var a=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},s=arguments.length>1?arguments[1]:void 0;K.debug("renegotiate()");var p=t.rtcOfferConstraints||null;if(this._status!==X.STATUS_WAITING_FOR_ACK&&this._status!==X.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;var _={succeeded:function(){s&&s()},failed:function(){a.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:p,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:_,rtcOfferConstraints:p,extraHeaders:t.extraHeaders}),!0}},{key:"refer",value:function(a,t){var s=this;K.debug("refer()");var p=a;if(this._status!==X.STATUS_WAITING_FOR_ACK&&this._status!==X.STATUS_CONFIRMED)return!1;if(a=this._ua.normalizeTarget(a),!a)throw new TypeError("Invalid target: ".concat(p));var _=new Kd(this);_.sendRefer(a,t);var d=_.id;return this._referSubscribers[d]=_,_.on("requestFailed",function(){delete s._referSubscribers[d]}),_.on("accepted",function(){delete s._referSubscribers[d]}),_.on("failed",function(){delete s._referSubscribers[d]}),_}},{key:"sendRequest",value:function(a,t){return K.debug("sendRequest()"),this._dialog.sendRequest(a,t)}},{key:"receiveRequest",value:function(a){var t=this;if(K.debug("receiveRequest()"),a.method===ce.CANCEL)(this._status===X.STATUS_WAITING_FOR_ANSWER||this._status===X.STATUS_ANSWERED)&&(this._status=X.STATUS_CANCELED,this._request.reply(487),this._failed("remote",a,ce.causes.CANCELED));else switch(a.method){case ce.ACK:if(this._status!==X.STATUS_WAITING_FOR_ACK)return;if(this._status=X.STATUS_CONFIRMED,clearTimeout(this._timers.ackTimer),clearTimeout(this._timers.invite2xxTimer),this._late_sdp){if(!a.body){this.terminate({cause:ce.causes.MISSING_SDP,status_code:400});break}var s={originator:"remote",type:"answer",sdp:a.body};K.debug('emit "sdp"'),this.emit("sdp",s);var p=new RTCSessionDescription({type:"answer",sdp:s.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return t._connection.setRemoteDescription(p)}).then(function(){t._is_confirmed||t._confirmed("remote",a)}).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",a);break;case ce.BYE:this._status===X.STATUS_CONFIRMED||this._status===X.STATUS_WAITING_FOR_ACK?(a.reply(200),this._ended("remote",a,ce.causes.BYE)):this._status===X.STATUS_INVITE_RECEIVED||this._status===X.STATUS_WAITING_FOR_ANSWER?(a.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",a,ce.causes.BYE)):a.reply(403,"Wrong Status");break;case ce.INVITE:this._status===X.STATUS_CONFIRMED?a.hasHeader("replaces")?this._receiveReplaces(a):this._receiveReinvite(a):a.reply(403,"Wrong Status");break;case ce.INFO:if(this._status===X.STATUS_1XX_RECEIVED||this._status===X.STATUS_WAITING_FOR_ANSWER||this._status===X.STATUS_ANSWERED||this._status===X.STATUS_WAITING_FOR_ACK||this._status===X.STATUS_CONFIRMED){var _=a.hasHeader("Content-Type")?a.getHeader("Content-Type").toLowerCase():void 0;_&&_.match(/^application\/dtmf-relay/i)?new Ut(this).init_incoming(a):_!==void 0?new gc(this).init_incoming(a):a.reply(415)}else a.reply(403,"Wrong Status");break;case ce.UPDATE:this._status===X.STATUS_CONFIRMED?this._receiveUpdate(a):a.reply(403,"Wrong Status");break;case ce.REFER:this._status===X.STATUS_CONFIRMED?this._receiveRefer(a):a.reply(403,"Wrong Status");break;case ce.NOTIFY:this._status===X.STATUS_CONFIRMED?this._receiveNotify(a):a.reply(403,"Wrong Status");break;default:a.reply(501)}}},{key:"onTransportError",value:function(){K.warn("onTransportError()"),this._status!==X.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!==X.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!==X.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:ce.causes.DIALOG_ERROR,cause:ce.causes.DIALOG_ERROR})}},{key:"newDTMF",value:function(a){K.debug("newDTMF()"),this.emit("newDTMF",a)}},{key:"newInfo",value:function(a){K.debug("newInfo()"),this.emit("newInfo",a)}},{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!==X.STATUS_TERMINATED){if(this._status=X.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(p){K.warn("close() | error closing the RTCPeerConnection: %o",p)}for(var a in this._timers)Object.prototype.hasOwnProperty.call(this._timers,a)&&clearTimeout(this._timers[a]);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 s in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,s)&&delete this._referSubscribers[s];this._ua.destroyRTCSession(this)}}},{key:"_setInvite2xxTimer",value:function(a,t){var s=Ii.T1;function p(){this._status===X.STATUS_WAITING_FOR_ACK&&(a.reply(200,null,["Contact: ".concat(this._contact)],t),s<Ii.T2&&(s=s*2,s>Ii.T2&&(s=Ii.T2)),this._timers.invite2xxTimer=setTimeout(p.bind(this),s))}this._timers.invite2xxTimer=setTimeout(p.bind(this),s)}},{key:"_setACKTimer",value:function(){var a=this;this._timers.ackTimer=setTimeout(function(){a._status===X.STATUS_WAITING_FOR_ACK&&(K.debug("no ACK received, terminating the session"),clearTimeout(a._timers.invite2xxTimer),a.sendRequest(ce.BYE),a._ended("remote",null,ce.causes.NO_ACK))},Ii.TIMER_H)}},{key:"_createRTCConnection",value:function(a,t){var s=this;this._connection=new RTCPeerConnection(a,t),this._connection.addEventListener("iceconnectionstatechange",function(){var p=s._connection.iceConnectionState;p==="failed"&&s.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(a,t){var s=this;if(K.debug("createLocalDescription()"),a!=="offer"&&a!=="answer")throw new Error('createLocalDescription() | invalid type "'.concat(a,'"'));var p=this._connection;return this._rtcReady=!1,Promise.resolve().then(function(){return a==="offer"?p.createOffer(t).catch(function(_){return K.warn('emit "peerconnection:createofferfailed" [error:%o]',_),s.emit("peerconnection:createofferfailed",_),Promise.reject(_)}):p.createAnswer(t).catch(function(_){return K.warn('emit "peerconnection:createanswerfailed" [error:%o]',_),s.emit("peerconnection:createanswerfailed",_),Promise.reject(_)})}).then(function(_){return p.setLocalDescription(_).catch(function(d){return s._rtcReady=!0,K.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',d),s.emit("peerconnection:setlocaldescriptionfailed",d),Promise.reject(d)})}).then(function(){var _=t&&t.iceRestart;if(p.iceGatheringState==="complete"&&!_||p.iceGatheringState==="gathering"&&s._iceReady){s._rtcReady=!0;var d={originator:"local",type:a,sdp:p.localDescription.sdp};return K.debug('emit "sdp"'),s.emit("sdp",d),Promise.resolve(d.sdp)}return new Promise(function(g){var T=!1,E,y;s._iceReady=!1;var A=function(){p.removeEventListener("icecandidate",E),p.removeEventListener("icegatheringstatechange",y),T=!0,s._rtcReady=!0,s._iceReady=!0;var I={originator:"local",type:a,sdp:p.localDescription.sdp};K.debug('emit "sdp"'),s.emit("sdp",I),g(I.sdp)};p.addEventListener("icecandidate",E=function(I){var $=I.candidate;$?s.emit("icecandidate",{candidate:$,ready:A}):T||A()}),p.addEventListener("icegatheringstatechange",y=function(){p.iceGatheringState==="complete"&&!T&&A()})})})}},{key:"_createDialog",value:function(a,t,s){var p=t==="UAS"?a.to_tag:a.from_tag,_=t==="UAS"?a.from_tag:a.to_tag,d=a.call_id+p+_,g=this._earlyDialogs[d];if(s)return g?!0:(g=new Pl(this,a,t,Pl.C.STATUS_EARLY),g.error?(K.debug(g.error),this._failed("remote",a,ce.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[d]=g,!0));if(this._from_tag=a.from_tag,this._to_tag=a.to_tag,g)return g.update(a,t),this._dialog=g,delete this._earlyDialogs[d],!0;var T=new Pl(this,a,t);return T.error?(K.debug(T.error),this._failed("remote",a,ce.causes.INTERNAL_ERROR),!1):(this._dialog=T,!0)}},{key:"_receiveReinvite",value:function(a){var t=this;K.debug("receiveReinvite()");var s=a.hasHeader("Content-Type")?a.getHeader("Content-Type").toLowerCase():void 0,p={request:a,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=qe.cloneArray(T.extraHeaders);if(this._status!==X.STATUS_CONFIRMED)return!1;if(E<300||E>=700)throw new TypeError("Invalid status_code: ".concat(E));a.reply(E,y,A)}if(this.emit("reinvite",p),_)return;if(this._late_sdp=!1,!a.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(){a.reply(500)});return}if(s!=="application/sdp"){K.debug("invalid Content-Type"),a.reply(415);return}this._processInDialogSdpOffer(a).then(function(T){t._status!==X.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(a,y),this._late_sdp&&(T=this._mangleOffer(T)),a.reply(200,null,y,T,function(){E._status=X.STATUS_WAITING_FOR_ACK,E._setInvite2xxTimer(a,T),E._setACKTimer()}),typeof p.callback=="function"&&p.callback()}}},{key:"_receiveUpdate",value:function(a){var t=this;K.debug("receiveUpdate()");var s=a.hasHeader("Content-Type")?a.getHeader("Content-Type").toLowerCase():void 0,p={request:a,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=qe.cloneArray(T.extraHeaders);if(this._status!==X.STATUS_CONFIRMED)return!1;if(E<300||E>=700)throw new TypeError("Invalid status_code: ".concat(E));a.reply(E,y,A)}if(this.emit("update",p),_)return;if(!a.body){g.call(this,null);return}if(s!=="application/sdp"){K.debug("invalid Content-Type"),a.reply(415);return}this._processInDialogSdpOffer(a).then(function(T){t._status!==X.STATUS_TERMINATED&&g.call(t,T)}).catch(function(T){K.warn(T)});function g(T){var E=["Contact: ".concat(this._contact)];this._handleSessionTimersInIncomingRequest(a,E),a.reply(200,null,E,T),typeof p.callback=="function"&&p.callback()}}},{key:"_processInDialogSdpOffer",value:function(a){var t=this;K.debug("_processInDialogSdpOffer()");var s=a.parseSDP(),p=!1,_=cs(s.media),d;try{for(_.s();!(d=_.n()).done;){var g=d.value;if(xl.indexOf(g.type)!==-1){var T=g.direction||s.direction||"sendrecv";if(T==="sendonly"||T==="inactive")p=!0;else{p=!1;break}}}}catch(A){_.e(A)}finally{_.f()}var E={originator:"remote",type:"offer",sdp:a.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===X.STATUS_TERMINATED)throw new Error("terminated");return t._connection.setRemoteDescription(y).catch(function(A){throw a.reply(488),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',A),t.emit("peerconnection:setremotedescriptionfailed",A),A})}).then(function(){if(t._status===X.STATUS_TERMINATED)throw new Error("terminated");t._remoteHold===!0&&p===!1?(t._remoteHold=!1,t._onunhold("remote")):t._remoteHold===!1&&p===!0&&(t._remoteHold=!0,t._onhold("remote"))}).then(function(){if(t._status===X.STATUS_TERMINATED)throw new Error("terminated");return t._createLocalDescription("answer",t._rtcAnswerConstraints).catch(function(A){throw a.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(a){var t=this;if(K.debug("receiveRefer()"),!a.refer_to){K.debug("no Refer-To header field present in REFER"),a.reply(400);return}if(a.refer_to.uri.scheme!==ce.SIP){K.debug("Refer-To header field points to a non-SIP URI scheme"),a.reply(416);return}a.reply(202);var s=new Wd(this,a.cseq);K.debug('emit "refer"'),this.emit("refer",{request:a,accept:function(g,T){p.call(t,g,T)},reject:function(){_.call(t)}});function p(d){var g=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(d=typeof d=="function"?d:null,this._status!==X.STATUS_WAITING_FOR_ACK&&this._status!==X.STATUS_CONFIRMED)return!1;var T=new r(this._ua);if(T.on("progress",function(y){var A=y.response;s.notify(A.status_code,A.reason_phrase)}),T.on("accepted",function(y){var A=y.response;s.notify(A.status_code,A.reason_phrase)}),T.on("_failed",function(y){var A=y.message,R=y.cause;A?s.notify(A.status_code,A.reason_phrase):s.notify(487,R)}),a.refer_to.uri.hasHeader("replaces")){var E=decodeURIComponent(a.refer_to.uri.getHeader("replaces"));g.extraHeaders=qe.cloneArray(g.extraHeaders),g.extraHeaders.push("Replaces: ".concat(E))}T.connect(a.refer_to.uri.toAor(),g,d)}function _(){s.notify(603)}}},{key:"_receiveNotify",value:function(a){switch(K.debug("receiveNotify()"),a.event||a.reply(400),a.event.event){case"refer":{var t,s;if(a.event.params&&a.event.params.id)t=a.event.params.id,s=this._referSubscribers[t];else if(Object.keys(this._referSubscribers).length===1)s=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{a.reply(400,"Missing event id parameter");return}if(!s){a.reply(481,"Subscription does not exist");return}s.receiveNotify(a),a.reply(200);break}default:a.reply(489)}}},{key:"_receiveReplaces",value:function(a){var t=this;K.debug("receiveReplaces()");function s(_){var d=this;if(this._status!==X.STATUS_WAITING_FOR_ACK&&this._status!==X.STATUS_CONFIRMED)return!1;var g=new r(this._ua);g.on("confirmed",function(){d.terminate()}),g.init_incoming(a,_)}function p(){K.debug("Replaced INVITE rejected by the user"),a.reply(486)}this.emit("replaces",{request:a,accept:function(d){s.call(t,d)},reject:function(){p.call(t)}})}},{key:"_sendInitialRequest",value:function(a,t,s){var p=this;console.log("rtcOfferConstraints",t);var _=new Gd(this._ua,this._request,{onRequestTimeout:function(){p.onRequestTimeout()},onTransportError:function(){p.onTransportError()},onAuthenticated:function(g){p._request=g},onReceiveResponse:function(g){p._receiveInviteResponse(g)}});Promise.resolve().then(function(){if(s)return s;if(a.audio||a.video)return p._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(a).catch(function(d){throw p._status===X.STATUS_TERMINATED?new Error("terminated"):(p._failed("local",null,ce.causes.USER_DENIED_MEDIA_ACCESS),K.warn('emit "getusermediafailed" [error:%o]',d),p.emit("getusermediafailed",d),d)})}).then(function(d){if(p._status===X.STATUS_TERMINATED)throw new Error("terminated");return p._localMediaStream=d,d&&d.getTracks().forEach(function(g){p._connection.addTrack(g,d)}),p._connecting(p._request),p._createLocalDescription("offer",t).catch(function(g){throw p._failed("local",null,ce.causes.WEBRTC_ERROR),g})}).then(function(d){if(p._is_canceled||p._status===X.STATUS_TERMINATED)throw new Error("terminated");p._request.body=d,p._status=X.STATUS_INVITE_SENT,K.debug('emit "sending" [request:%o]',p._request),p.emit("sending",{request:p._request}),_.send()}).catch(function(d){p._status!==X.STATUS_TERMINATED&&K.warn(d)})}},{key:"_getDTMFRTPSender",value:function(){var a=this._connection.getSenders().find(function(t){return t.track&&t.track.kind==="audio"});if(!(a&&a.dtmf)){K.warn("sendDTMF() | no local audio track to send DTMF with");return}return a.dtmf}},{key:"_receiveInviteResponse",value:function(a){var t=this;if(K.debug("receiveInviteResponse()"),this._dialog&&a.status_code>=200&&a.status_code<=299)if(this._dialog.id.call_id===a.call_id&&this._dialog.id.local_tag===a.from_tag&&this._dialog.id.remote_tag===a.to_tag){this.sendRequest(ce.ACK);return}else{var s=new Pl(this,a,"UAC");if(s.error!==void 0){K.debug(s.error);return}this.sendRequest(ce.ACK),this.sendRequest(ce.BYE);return}if(this._is_canceled){a.status_code>=100&&a.status_code<200?this._request.cancel(this._cancel_reason):a.status_code>=200&&a.status_code<299&&this._acceptAndTerminate(a);return}if(!(this._status!==X.STATUS_INVITE_SENT&&this._status!==X.STATUS_1XX_RECEIVED))switch(!0){case/^100$/.test(a.status_code):this._status=X.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(a.status_code):{if(!a.to_tag){K.debug("1xx response received without to tag");break}if(a.hasHeader("contact")&&!this._createDialog(a,"UAC",!0))break;if(this._status=X.STATUS_1XX_RECEIVED,!a.body){this._progress("remote",a);break}var p={originator:"remote",type:"answer",sdp:a.body};K.debug('emit "sdp"'),this.emit("sdp",p);var _=new RTCSessionDescription({type:"answer",sdp:p.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return t._connection.setRemoteDescription(_)}).then(function(){return t._progress("remote",a)}).catch(function(E){K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),t.emit("peerconnection:setremotedescriptionfailed",E)});break}case/^2[0-9]{2}$/.test(a.status_code):{if(this._status=X.STATUS_CONFIRMED,!a.body){this._acceptAndTerminate(a,400,ce.causes.MISSING_SDP),this._failed("remote",a,ce.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(a,"UAC"))break;var d={originator:"remote",type:"answer",sdp:a.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(a,500,E.toString()),t._failed("local",a,ce.causes.WEBRTC_ERROR)})}).then(function(){t._connection.setRemoteDescription(g).then(function(){t._handleSessionTimersInIncomingResponse(a),t._accepted("remote",a),t.sendRequest(ce.ACK),t._confirmed("local",null)}).catch(function(E){t._acceptAndTerminate(a,488,"Not Acceptable Here"),t._failed("remote",a,ce.causes.BAD_MEDIA_DESCRIPTION),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),t.emit("peerconnection:setremotedescriptionfailed",E)})});break}default:{var T=qe.sipErrorCause(a.status_code);this._failed("remote",a,T)}}}},{key:"_sendReinvite",value:function(){var a=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("sendReinvite()");var s=qe.cloneArray(t.extraHeaders),p=qe.cloneObject(t.eventHandlers),_=t.rtcOfferConstraints||this._rtcOfferConstraints||null,d=!1;s.push("Contact: ".concat(this._contact)),s.push("Content-Type: application/sdp"),this._sessionTimers.running&&s.push("Session-Expires: ".concat(this._sessionTimers.currentExpires,";refresher=").concat(this._sessionTimers.refresher?"uac":"uas")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return a._createLocalDescription("offer",_)}).then(function(E){E=a._mangleOffer(E);var y={originator:"local",type:"offer",sdp:E};K.debug('emit "sdp"'),a.emit("sdp",y),a.sendRequest(ce.INVITE,{extraHeaders:s,body:E,eventHandlers:{onSuccessResponse:function(R){g.call(a,R),d=!0},onErrorResponse:function(R){T.call(a,R)},onTransportError:function(){a.onTransportError()},onRequestTimeout:function(){a.onRequestTimeout()},onDialogError:function(){a.onDialogError()}}})}).catch(function(){T()});function g(E){var y=this;if(this._status!==X.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 R=new RTCSessionDescription({type:"answer",sdp:A.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return y._connection.setRemoteDescription(R)}).then(function(){p.succeeded&&p.succeeded(E)}).catch(function(I){T.call(y),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',I),y.emit("peerconnection:setremotedescriptionfailed",I)})}}function T(E){p.failed&&p.failed(E)}}},{key:"_sendUpdate",value:function(){var a=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("sendUpdate()");var s=qe.cloneArray(t.extraHeaders),p=qe.cloneObject(t.eventHandlers),_=t.rtcOfferConstraints||this._rtcOfferConstraints||null,d=t.sdpOffer||!1,g=!1;s.push("Contact: ".concat(this._contact)),this._sessionTimers.running&&s.push("Session-Expires: ".concat(this._sessionTimers.currentExpires,";refresher=").concat(this._sessionTimers.refresher?"uac":"uas")),d?(s.push("Content-Type: application/sdp"),this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return a._createLocalDescription("offer",_)}).then(function(y){y=a._mangleOffer(y);var A={originator:"local",type:"offer",sdp:y};K.debug('emit "sdp"'),a.emit("sdp",A),a.sendRequest(ce.UPDATE,{extraHeaders:s,body:y,eventHandlers:{onSuccessResponse:function(I){T.call(a,I),g=!0},onErrorResponse:function(I){E.call(a,I)},onTransportError:function(){a.onTransportError()},onRequestTimeout:function(){a.onRequestTimeout()},onDialogError:function(){a.onDialogError()}}})}).catch(function(){E.call(a)})):this.sendRequest(ce.UPDATE,{extraHeaders:s,eventHandlers:{onSuccessResponse:function(A){T.call(a,A)},onErrorResponse:function(A){E.call(a,A)},onTransportError:function(){a.onTransportError()},onRequestTimeout:function(){a.onRequestTimeout()},onDialogError:function(){a.onDialogError()}}});function T(y){var A=this;if(this._status!==X.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 R={originator:"remote",type:"answer",sdp:y.body};K.debug('emit "sdp"'),this.emit("sdp",R);var I=new RTCSessionDescription({type:"answer",sdp:R.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return A._connection.setRemoteDescription(I)}).then(function(){p.succeeded&&p.succeeded(y)}).catch(function($){E.call(A),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',$),A.emit("peerconnection:setremotedescriptionfailed",$)})}else p.succeeded&&p.succeeded(y)}function E(y){p.failed&&p.failed(y)}}},{key:"_acceptAndTerminate",value:function(a,t,s){K.debug("acceptAndTerminate()");var p=[];t&&(s=s||ce.REASON_PHRASE[t]||"",p.push("Reason: SIP ;cause=".concat(t,'; text="').concat(s,'"'))),(this._dialog||this._createDialog(a,"UAC"))&&(this.sendRequest(ce.ACK),this.sendRequest(ce.BYE,{extraHeaders:p})),this._status=X.STATUS_TERMINATED}},{key:"_mangleOffer",value:function(a){if(!this._localHold&&!this._remoteHold)return a;if(a=pc.parse(a),this._localHold&&!this._remoteHold){K.debug("mangleOffer() | me on hold, mangling offer");var t=cs(a.media),s;try{for(t.s();!(s=t.n()).done;){var p=s.value;xl.indexOf(p.type)!==-1&&(p.direction?p.direction==="sendrecv"?p.direction="sendonly":p.direction==="recvonly"&&(p.direction="inactive"):p.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 _=cs(a.media),d;try{for(_.s();!(d=_.n()).done;){var g=d.value;xl.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=cs(a.media),E;try{for(T.s();!(E=T.n()).done;){var y=E.value;xl.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 pc.write(a)}},{key:"_setLocalMediaStatus",value:function(){var a=!0,t=!0;(this._localHold||this._remoteHold)&&(a=!1,t=!1),this._audioMuted&&(a=!1),this._videoMuted&&(t=!1),this._toggleMuteAudio(!a),this._toggleMuteVideo(!t)}},{key:"_handleSessionTimersInIncomingRequest",value:function(a,t){if(this._sessionTimers.enabled){var s;a.session_expires&&a.session_expires>=ce.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=a.session_expires,s=a.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,s="uas"),t.push("Session-Expires: ".concat(this._sessionTimers.currentExpires,";refresher=").concat(s)),this._sessionTimers.refresher=s==="uas",this._runSessionTimer()}}},{key:"_handleSessionTimersInIncomingResponse",value:function(a){if(this._sessionTimers.enabled){var t;a.session_expires&&a.session_expires>=ce.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=a.session_expires,t=a.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,t="uac"),this._sessionTimers.refresher=t==="uac",this._runSessionTimer()}}},{key:"_runSessionTimer",value:function(){var a=this,t=this._sessionTimers.currentExpires;this._sessionTimers.running=!0,clearTimeout(this._sessionTimers.timer),this._sessionTimers.refresher?this._sessionTimers.timer=setTimeout(function(){a._status!==X.STATUS_TERMINATED&&a._isReadyToReOffer()&&(K.debug("runSessionTimer() | sending session refresh request"),a._sessionTimers.refreshMethod===ce.UPDATE?a._sendUpdate():a._sendReinvite())},t*500):this._sessionTimers.timer=setTimeout(function(){a._status!==X.STATUS_TERMINATED&&(K.warn("runSessionTimer() | timer expired, terminating the session"),a.terminate({cause:ce.causes.REQUEST_TIMEOUT,status_code:408,reason_phrase:"Session Timer Expired"}))},t*1100)}},{key:"_toggleMuteAudio",value:function(a){var t=this._connection.getSenders().filter(function(d){return d.track&&d.track.kind==="audio"}),s=cs(t),p;try{for(s.s();!(p=s.n()).done;){var _=p.value;_.track.enabled=!a}}catch(d){s.e(d)}finally{s.f()}}},{key:"_toggleMuteVideo",value:function(a){var t=this._connection.getSenders().filter(function(d){return d.track&&d.track.kind==="video"}),s=cs(t),p;try{for(s.s();!(p=s.n()).done;){var _=p.value;_.track.enabled=!a}}catch(d){s.e(d)}finally{s.f()}}},{key:"_newRTCSession",value:function(a,t){K.debug("newRTCSession()"),this._ua.newRTCSession(this,{originator:a,session:this,request:t})}},{key:"_connecting",value:function(a){K.debug("session connecting"),K.debug('emit "connecting"'),this.emit("connecting",{request:a})}},{key:"_progress",value:function(a,t){K.debug("session progress"),K.debug('emit "progress"'),this.emit("progress",{originator:a,response:t||null})}},{key:"_accepted",value:function(a,t){K.debug("session accepted"),this._start_time=new Date,K.debug('emit "accepted"'),this.emit("accepted",{originator:a,response:t||null})}},{key:"_confirmed",value:function(a,t){K.debug("session confirmed"),this._is_confirmed=!0,K.debug('emit "confirmed"'),this.emit("confirmed",{originator:a,ack:t||null})}},{key:"_ended",value:function(a,t,s){K.debug("session ended"),this._end_time=new Date,this._close(),K.debug('emit "ended"'),this.emit("ended",{originator:a,message:t||null,cause:s})}},{key:"_failed",value:function(a,t,s){K.debug("session failed"),K.debug('emit "_failed"'),this.emit("_failed",{originator:a,message:t||null,cause:s}),this._close(),K.debug('emit "failed"'),this.emit("failed",{originator:a,message:t||null,cause:s})}},{key:"_onhold",value:function(a){K.debug("session onhold"),this._setLocalMediaStatus(),K.debug('emit "hold"'),this.emit("hold",{originator:a})}},{key:"_onunhold",value:function(a){K.debug("session onunhold"),this._setLocalMediaStatus(),K.debug('emit "unhold"'),this.emit("unhold",{originator:a})}},{key:"_onmute",value:function(a){var t=a.audio,s=a.video;K.debug("session onmute"),this._setLocalMediaStatus(),K.debug('emit "muted"'),this.emit("muted",{audio:t,video:s})}},{key:"_onunmute",value:function(a){var t=a.audio,s=a.video;K.debug("session onunmute"),this._setLocalMediaStatus(),K.debug('emit "unmuted"'),this.emit("unmuted",{audio:t,video:s})}},{key:"C",get:function(){return X}},{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(a){this._data=a}},{key:"status",get:function(){return this._status}}]),r}(jd);function fo(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?fo=function(r){return typeof r}:fo=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},fo(c)}function zd(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function vc(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Jd(c,n,r){return n&&vc(c.prototype,n),r&&vc(c,r),c}function Xd(c,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(n&&n.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),n&&su(c,n)}function su(c,n){return su=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},su(c,n)}function Qd(c){var n=tp();return function(){var o=Ao(c),a;if(n){var t=Ao(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return Zd(this,a)}}function Zd(c,n){return n&&(fo(n)==="object"||typeof n=="function")?n: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 Ao(c){return Ao=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Ao(c)}var sp=ct.EventEmitter,np=ft,fa=rt,rp=ms,bi=Ct(),ip=nl,Ec=Hs,lp=Fs(),Ml=new np("Message"),op=function(c){Xd(r,c);var n=Qd(r);function r(o){var a;return zd(this,r),a=n.call(this),a._ua=o,a._request=null,a._closed=!1,a._direction=null,a._local_identity=null,a._remote_identity=null,a._is_replied=!1,a._data={},a}return Jd(r,[{key:"send",value:function(a,t){var s=this,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},_=a;if(a===void 0||t===void 0)throw new TypeError("Not enough arguments");if(a=this._ua.normalizeTarget(a),!a)throw new TypeError("Invalid target: ".concat(_));var d=bi.cloneArray(p.extraHeaders),g=bi.cloneObject(p.eventHandlers),T=p.contentType||"text/plain",E={};p.fromUserName&&(E.from_uri=new lp("sip",p.fromUserName,this._ua.configuration.uri.host),d.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString()))),p.fromDisplayName&&(E.from_display_name=p.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 rp.OutgoingRequest(fa.MESSAGE,a,this._ua,E,d),t&&(this._request.body=t);var A=new ip(this._ua,this._request,{onRequestTimeout:function(){s._onRequestTimeout()},onTransportError:function(){s._onTransportError()},onReceiveResponse:function(I){s._receiveResponse(I)}});this._newMessage("local",this._request),A.send()}},{key:"init_incoming",value:function(a){this._request=a,this._newMessage("remote",a),this._is_replied||(this._is_replied=!0,a.reply(200)),this._close()}},{key:"accept",value:function(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=bi.cloneArray(a.extraHeaders),s=a.body;if(this._direction!=="incoming")throw new Ec.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,s)}},{key:"reject",value:function(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=a.status_code||480,s=a.reason_phrase,p=bi.cloneArray(a.extraHeaders),_=a.body;if(this._direction!=="incoming")throw new Ec.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,s,p,_)}},{key:"_receiveResponse",value:function(a){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(a.status_code):break;case/^2[0-9]{2}$/.test(a.status_code):this._succeeded("remote",a);break;default:{var t=bi.sipErrorCause(a.status_code);this._failed("remote",a,t);break}}}},{key:"_onRequestTimeout",value:function(){this._closed||this._failed("system",null,fa.causes.REQUEST_TIMEOUT)}},{key:"_onTransportError",value:function(){this._closed||this._failed("system",null,fa.causes.CONNECTION_ERROR)}},{key:"_close",value:function(){this._closed=!0,this._ua.destroyMessage(this)}},{key:"_newMessage",value:function(a,t){a==="remote"?(this._direction="incoming",this._local_identity=t.to,this._remote_identity=t.from):a==="local"&&(this._direction="outgoing",this._local_identity=t.from,this._remote_identity=t.to),this._ua.newMessage(this,{originator:a,message:this,request:t})}},{key:"_failed",value:function(a,t,s){Ml.debug("MESSAGE failed"),this._close(),Ml.debug('emit "failed"'),this.emit("failed",{originator:a,response:t||null,cause:s})}},{key:"_succeeded",value:function(a,t){Ml.debug("MESSAGE succeeded"),this._close(),Ml.debug('emit "succeeded"'),this.emit("succeeded",{originator:a,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}(sp);function _o(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_o=function(r){return typeof r}:_o=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},_o(c)}function ap(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function Sc(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function up(c,n,r){return n&&Sc(c.prototype,n),r&&Sc(c,r),c}function cp(c,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(n&&n.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),n&&nu(c,n)}function nu(c,n){return nu=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},nu(c,n)}function fp(c){var n=dp();return function(){var o=Co(c),a;if(n){var t=Co(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return _p(this,a)}}function _p(c,n){return n&&(_o(n)==="object"||typeof n=="function")?n:hp(c)}function hp(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 Co(c){return Co=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Co(c)}var pp=ct.EventEmitter,mp=ft,_a=rt,gp=ms,wi=Ct(),Tp=nl,yc=Hs,kl=new mp("Options"),vp=function(c){cp(r,c);var n=fp(r);function r(o){var a;return ap(this,r),a=n.call(this),a._ua=o,a._request=null,a._closed=!1,a._direction=null,a._local_identity=null,a._remote_identity=null,a._is_replied=!1,a._data={},a}return up(r,[{key:"send",value:function(a,t){var s=this,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},_=a;if(a===void 0)throw new TypeError("A target is required for OPTIONS");if(a=this._ua.normalizeTarget(a),!a)throw new TypeError("Invalid target: ".concat(_));var d=wi.cloneArray(p.extraHeaders),g=wi.cloneObject(p.eventHandlers),T=p.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 gp.OutgoingRequest(_a.OPTIONS,a,this._ua,null,d),t&&(this._request.body=t);var y=new Tp(this._ua,this._request,{onRequestTimeout:function(){s._onRequestTimeout()},onTransportError:function(){s._onTransportError()},onReceiveResponse:function(R){s._receiveResponse(R)}});this._newOptions("local",this._request),y.send()}},{key:"init_incoming",value:function(a){this._request=a,this._newOptions("remote",a),this._is_replied||(this._is_replied=!0,a.reply(200)),this._close()}},{key:"accept",value:function(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=wi.cloneArray(a.extraHeaders),s=a.body;if(this._direction!=="incoming")throw new yc.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,s)}},{key:"reject",value:function(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=a.status_code||480,s=a.reason_phrase,p=wi.cloneArray(a.extraHeaders),_=a.body;if(this._direction!=="incoming")throw new yc.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,s,p,_)}},{key:"_receiveResponse",value:function(a){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(a.status_code):break;case/^2[0-9]{2}$/.test(a.status_code):this._succeeded("remote",a);break;default:{var t=wi.sipErrorCause(a.status_code);this._failed("remote",a,t);break}}}},{key:"_onRequestTimeout",value:function(){this._closed||this._failed("system",null,_a.causes.REQUEST_TIMEOUT)}},{key:"_onTransportError",value:function(){this._closed||this._failed("system",null,_a.causes.CONNECTION_ERROR)}},{key:"_close",value:function(){this._closed=!0,this._ua.destroyMessage(this)}},{key:"_newOptions",value:function(a,t){a==="remote"?(this._direction="incoming",this._local_identity=t.to,this._remote_identity=t.from):a==="local"&&(this._direction="outgoing",this._local_identity=t.from,this._remote_identity=t.to),this._ua.newOptions(this,{originator:a,message:this,request:t})}},{key:"_failed",value:function(a,t,s){kl.debug("OPTIONS failed"),this._close(),kl.debug('emit "failed"'),this.emit("failed",{originator:a,response:t||null,cause:s})}},{key:"_succeeded",value:function(a,t){kl.debug("OPTIONS succeeded"),this._close(),kl.debug('emit "succeeded"'),this.emit("succeeded",{originator:a,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}(pp),vu={},Ep=ft,ha=Ct(),Sp=ns(),Oi=new Ep("Socket");vu.isSocket=function(c){if(Array.isArray(c))return!1;if(typeof c>"u")return Oi.warn("undefined JsSIP.Socket instance"),!1;try{if(!ha.isString(c.url))throw Oi.warn("missing or invalid JsSIP.Socket url property"),new Error("Missing or invalid JsSIP.Socket url property");if(!ha.isString(c.via_transport))throw Oi.warn("missing or invalid JsSIP.Socket via_transport property"),new Error("Missing or invalid JsSIP.Socket via_transport property");if(Sp.parse(c.sip_uri,"SIP_URI")===-1)throw Oi.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(n){if(!ha.isFunction(c[n]))throw Oi.warn("missing or invalid JsSIP.Socket method: ".concat(n)),new Error("Missing or invalid JsSIP.Socket method: ".concat(n))})}catch{return!1}return!0};function yp(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function Ac(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Ap(c,n,r){return n&&Ac(c.prototype,n),r&&Ac(c,r),c}var Cp=ft,Rp=vu,Cc=rt,wt=new Cp("Transport"),Ft={STATUS_CONNECTED:0,STATUS_CONNECTING:1,STATUS_DISCONNECTED:2,SOCKET_STATUS_READY:0,SOCKET_STATUS_ERROR:1,recovery_options:{min_interval:Cc.CONNECTION_RECOVERY_MIN_INTERVAL,max_interval:Cc.CONNECTION_RECOVERY_MAX_INTERVAL}},Ip=function(){function c(n){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ft.recovery_options;yp(this,c),wt.debug("new()"),this.status=Ft.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(o){wt.warn("cannot use TextDecoder: ".concat(o))}if(typeof n>"u")throw new TypeError("Invalid argument. undefined 'sockets' argument");n instanceof Array||(n=[n]),n.forEach(function(o){if(!Rp.isSocket(o.socket))throw new TypeError("Invalid argument. invalid 'JsSIP.Socket' instance");if(o.weight&&!Number(o.weight))throw new TypeError("Invalid argument. 'weight' attribute is not a number");this.sockets.push({socket:o.socket,weight:o.weight||0,status:Ft.SOCKET_STATUS_READY})},this),this._getSocket()}return Ap(c,[{key:"connect",value:function(){if(wt.debug("connect()"),this.isConnected()){wt.debug("Transport is already connected");return}else if(this.isConnecting()){wt.debug("Transport is connecting");return}this.close_requested=!1,this.status=Ft.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(){wt.debug("close()"),this.close_requested=!0,this.recover_attempts=0,this.status=Ft.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(wt.debug("send()"),!this.isConnected())return wt.warn("unable to send message, transport is not connected"),!1;var o=r.toString();return wt.debug(`sending message:
46
+ `),this.transport.send(p)}}]),r}(Kf),Sh=function(c){vu(r,c);var s=Eu(r);function r(){var o;return Ji(this,r),o=s.call(this),o.headers={},o.status_code=null,o.reason_phrase=null,o}return r}(Kf),gs={OutgoingRequest:Wf,InitialOutgoingInviteRequest:vh,IncomingRequest:Eh,IncomingResponse:Sh};function yh(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Ku(c,s){for(var r=0;r<s.length;r++){var o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Ah(c,s,r){return s&&Ku(c.prototype,s),r&&Ku(c,r),c}var Ch=ft,us=Rt(),Wt=new Ch("DigestAuthentication"),Rh=function(){function c(s){yh(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 Ah(c,[{key:"get",value:function(r){switch(r){case"realm":return this._realm;case"ha1":return this._ha1;default:Wt.warn('get() | cannot get "%s" parameter',r);return}}},{key:"authenticate",value:function(r,o){var a=r.method,t=r.ruri,n=r.body,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]: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 Wt.warn('authenticate() | challenge with Digest algorithm different than "MD5", authentication aborted'),!1}else this._algorithm="MD5";if(!this._nonce)return Wt.warn("authenticate() | challenge without Digest nonce, authentication aborted"),!1;if(!this._realm)return Wt.warn("authenticate() | challenge without Digest realm, authentication aborted"),!1;if(!this._credentials.password){if(!this._credentials.ha1)return Wt.warn("authenticate() | no plain SIP password nor ha1 provided, authentication aborted"),!1;if(this._credentials.realm!==this._realm)return Wt.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 Wt.warn('authenticate() | challenge without Digest qop different than "auth" or "auth-int", authentication aborted'),!1;else this._qop=null;this._method=a,this._uri=t,this._cnonce=p||us.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=us.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=us.calculateMD5(d),Wt.debug('authenticate() | using qop=auth [a2:"%s"]',d),this._response=us.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(us.calculateMD5(n||"")),g=us.calculateMD5(d),Wt.debug('authenticate() | using qop=auth-int [a2:"%s"]',d),this._response=us.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=us.calculateMD5(d),Wt.debug('authenticate() | using qop=null [a2:"%s"]',d),this._response=us.calculateMD5("".concat(this._ha1,":").concat(this._nonce,":").concat(g))),Wt.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}(),cs=500,Ih=4e3,Yu=5e3,Yf={T1:cs,T2:Ih,T4:Yu,TIMER_B:64*cs,TIMER_D:0*cs,TIMER_F:64*cs,TIMER_H:64*cs,TIMER_I:0*cs,TIMER_J:0*cs,TIMER_K:0*Yu,TIMER_L:64*cs,TIMER_M:64*cs,PROVISIONAL_RESPONSE_INTERVAL:6e4};function ao(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ao=function(r){return typeof r}:ao=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ao(c)}function Xi(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function zu(c,s){for(var r=0;r<s.length;r++){var o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Qi(c,s,r){return s&&zu(c.prototype,s),r&&zu(c,r),c}function Zi(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(o,a){return o.__proto__=a,o},eu(c,s)}function el(c){var s=wh();return function(){var o=Eo(c),a;if(s){var t=Eo(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return bh(this,a)}}function bh(c,s){return s&&(ao(s)==="object"||typeof s=="function")?s:$s(c)}function $s(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function wh(){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 Eo(c){return Eo=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Eo(c)}var tl=ct.EventEmitter,sl=ft,ji=rt,Ju=gs,ss=Yf,Xu=new sl("NonInviteClientTransaction"),Dl=new sl("InviteClientTransaction"),Oh=new sl("AckClientTransaction"),Qu=new sl("NonInviteServerTransaction"),Nl=new sl("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"},Dh=function(c){Zi(r,c);var s=el(r);function r(o,a,t,n){var p;Xi(this,r),p=s.call(this),p.type=_e.NON_INVITE_CLIENT,p.id="z9hG4bK".concat(Math.floor(Math.random()*1e7)),p.ua=o,p.transport=a,p.request=t,p.eventHandlers=n;var _="SIP/2.0/".concat(a.via_transport);return _+=" ".concat(o.configuration.via_host,";branch=").concat(p.id),p.request.setHeader("via",_),p.ua.newTransaction($s(p)),p}return Qi(r,[{key:"stateChanged",value:function(a){this.state=a,this.emit("stateChanged")}},{key:"send",value:function(){var a=this;this.stateChanged(_e.STATUS_TRYING),this.F=setTimeout(function(){a.timer_F()},ss.TIMER_F),this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){Xu.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(){Xu.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(a){var t=this,n=a.status_code;if(n<200)switch(this.state){case _e.STATUS_TRYING:case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(a);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(a),this.K=setTimeout(function(){t.timer_K()},ss.TIMER_K);break;case _e.STATUS_COMPLETED:break}}},{key:"C",get:function(){return _e}}]),r}(tl),Nh=function(c){Zi(r,c);var s=el(r);function r(o,a,t,n){var p;Xi(this,r),p=s.call(this),p.type=_e.INVITE_CLIENT,p.id="z9hG4bK".concat(Math.floor(Math.random()*1e7)),p.ua=o,p.transport=a,p.request=t,p.eventHandlers=n,t.transaction=$s(p);var _="SIP/2.0/".concat(a.via_transport);return _+=" ".concat(o.configuration.via_host,";branch=").concat(p.id),p.request.setHeader("via",_),p.ua.newTransaction($s(p)),p}return Qi(r,[{key:"stateChanged",value:function(a){this.state=a,this.emit("stateChanged")}},{key:"send",value:function(){var a=this;this.stateChanged(_e.STATUS_CALLING),this.B=setTimeout(function(){a.timer_B()},ss.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&&(Dl.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(){Dl.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(){Dl.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(){Dl.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(a){var t=this,n=new Ju.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});n.setHeader("from",this.request.getHeader("from")),n.setHeader("via",this.request.getHeader("via")),n.setHeader("to",a.getHeader("to")),this.D=setTimeout(function(){t.timer_D()},ss.TIMER_D),this.transport.send(n)}},{key:"cancel",value:function(a){if(this.state===_e.STATUS_PROCEEDING){var t=new Ju.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});t.setHeader("from",this.request.getHeader("from")),t.setHeader("via",this.request.getHeader("via")),t.setHeader("to",this.request.getHeader("to")),a&&t.setHeader("reason",a),this.transport.send(t)}}},{key:"receiveResponse",value:function(a){var t=this,n=a.status_code;if(n>=100&&n<=199)switch(this.state){case _e.STATUS_CALLING:this.stateChanged(_e.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(a);break;case _e.STATUS_PROCEEDING:this.eventHandlers.onReceiveResponse(a);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()},ss.TIMER_M),this.eventHandlers.onReceiveResponse(a);break;case _e.STATUS_ACCEPTED:this.eventHandlers.onReceiveResponse(a);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(a),this.eventHandlers.onReceiveResponse(a);break;case _e.STATUS_COMPLETED:this.sendACK(a);break}}},{key:"C",get:function(){return _e}}]),r}(tl),Uh=function(c){Zi(r,c);var s=el(r);function r(o,a,t,n){var p;Xi(this,r),p=s.call(this),p.id="z9hG4bK".concat(Math.floor(Math.random()*1e7)),p.transport=a,p.request=t,p.eventHandlers=n;var _="SIP/2.0/".concat(a.via_transport);return _+=" ".concat(o.configuration.via_host,";branch=").concat(p.id),p.request.setHeader("via",_),p}return Qi(r,[{key:"send",value:function(){this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){Oh.debug("transport error occurred for transaction ".concat(this.id)),this.eventHandlers.onTransportError()}},{key:"C",get:function(){return _e}}]),r}(tl),Ph=function(c){Zi(r,c);var s=el(r);function r(o,a,t){var n;return Xi(this,r),n=s.call(this),n.type=_e.NON_INVITE_SERVER,n.id=t.via_branch,n.ua=o,n.transport=a,n.request=t,n.last_response="",t.server_transaction=$s(n),n.state=_e.STATUS_TRYING,o.newTransaction($s(n)),n}return Qi(r,[{key:"stateChanged",value:function(a){this.state=a,this.emit("stateChanged")}},{key:"timer_J",value:function(){Qu.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,Qu.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(a,t,n,p){var _=this;if(a===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(),p&&p());break}else if(a>=200&&a<=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()},ss.TIMER_J),this.transport.send(t)?n&&n():(this.onTransportError(),p&&p());break;case _e.STATUS_COMPLETED:break}}},{key:"C",get:function(){return _e}}]),r}(tl),xh=function(c){Zi(r,c);var s=el(r);function r(o,a,t){var n;return Xi(this,r),n=s.call(this),n.type=_e.INVITE_SERVER,n.id=t.via_branch,n.ua=o,n.transport=a,n.request=t,n.last_response="",t.server_transaction=$s(n),n.state=_e.STATUS_PROCEEDING,o.newTransaction($s(n)),n.resendProvisionalTimer=null,t.reply(100),n}return Qi(r,[{key:"stateChanged",value:function(a){this.state=a,this.emit("stateChanged")}},{key:"timer_H",value:function(){Nl.debug("Timer H expired for transaction ".concat(this.id)),this.state===_e.STATUS_COMPLETED&&Nl.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(){Nl.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,Nl.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(a,t,n,p){var _=this;if(a>=100&&a<=199)switch(this.state){case _e.STATUS_PROCEEDING:this.transport.send(t)||this.onTransportError(),this.last_response=t;break}if(a>100&&a<=199&&this.state===_e.STATUS_PROCEEDING)this.resendProvisionalTimer===null&&(this.resendProvisionalTimer=setInterval(function(){_.resend_provisional()},ss.PROVISIONAL_RESPONSE_INTERVAL));else if(a>=200&&a<=299)switch(this.state){case _e.STATUS_PROCEEDING:this.stateChanged(_e.STATUS_ACCEPTED),this.last_response=t,this.L=setTimeout(function(){_.timer_L()},ss.TIMER_L),this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null);case _e.STATUS_ACCEPTED:this.transport.send(t)?n&&n():(this.onTransportError(),p&&p());break}else if(a>=300&&a<=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()},ss.TIMER_H),n&&n()):(this.onTransportError(),p&&p());break}}},{key:"C",get:function(){return _e}}]),r}(tl);function Mh(c,s){var r=c._transactions,o;switch(s.method){case ji.INVITE:if(o=r.ist[s.via_branch],o){switch(o.state){case _e.STATUS_PROCEEDING:o.transport.send(o.last_response);break;case _e.STATUS_ACCEPTED:break}return!0}break;case ji.ACK:if(o=r.ist[s.via_branch],o){if(o.state===_e.STATUS_ACCEPTED)return!1;if(o.state===_e.STATUS_COMPLETED)return o.state=_e.STATUS_CONFIRMED,o.I=setTimeout(function(){o.timer_I()},ss.TIMER_I),!0}else return!1;break;case ji.CANCEL:return o=r.ist[s.via_branch],o?(s.reply_sl(200),o.state!==_e.STATUS_PROCEEDING):(s.reply_sl(481),!0);default:if(o=r.nist[s.via_branch],o){switch(o.state){case _e.STATUS_TRYING:break;case _e.STATUS_PROCEEDING:case _e.STATUS_COMPLETED:o.transport.send(o.last_response);break}return!0}break}}var nl={C:_e,NonInviteClientTransaction:Dh,InviteClientTransaction:Nh,AckClientTransaction:Uh,NonInviteServerTransaction:Ph,InviteServerTransaction:xh,checkTransaction:Mh};function kh(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Zu(c,s){for(var r=0;r<s.length;r++){var o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Lh(c,s,r){return s&&Zu(c.prototype,s),r&&Zu(c,r),c}var $h=ft,ec=rt,Hh=Rh,ia=nl,Fh=new $h("RequestSender"),la={onRequestTimeout:function(){},onTransportError:function(){},onReceiveResponse:function(){},onAuthenticated:function(){}},rl=function(){function c(s,r,o){kh(this,c),this._ua=s,this._eventHandlers=o,this._method=r.method,this._request=r,this._auth=null,this._challenged=!1,this._staled=!1;for(var a in la)Object.prototype.hasOwnProperty.call(la,a)&&(this._eventHandlers[a]||(this._eventHandlers[a]=la[a]));s.status===s.C.STATUS_USER_CLOSED&&(this._method!==ec.BYE||this._method!==ec.ACK)&&this._eventHandlers.onTransportError()}return Lh(c,[{key:"send",value:function(){var r=this,o={onRequestTimeout:function(){r._eventHandlers.onRequestTimeout()},onTransportError:function(){r._eventHandlers.onTransportError()},onReceiveResponse:function(t){r._receiveResponse(t)}};switch(this._method){case"INVITE":this.clientTransaction=new ia.InviteClientTransaction(this._ua,this._ua.transport,this._request,o);break;case"ACK":this.clientTransaction=new ia.AckClientTransaction(this._ua,this._ua.transport,this._request,o);break;default:this.clientTransaction=new ia.NonInviteClientTransaction(this._ua,this._ua.transport,this._request,o)}this._ua._configuration.authorization_jwt&&this._request.setHeader("Authorization",this._ua._configuration.authorization_jwt),this.clientTransaction.send()}},{key:"_receiveResponse",value:function(r){var o,a,t=r.status_code;if((t===401||t===407)&&(this._ua.configuration.password!==null||this._ua.configuration.ha1!==null)){if(r.status_code===401?(o=r.parseHeader("www-authenticate"),a="authorization"):(o=r.parseHeader("proxy-authenticate"),a="proxy-authorization"),!o){Fh.debug("".concat(r.status_code," with wrong or missing challenge, cannot authenticate")),this._eventHandlers.onReceiveResponse(r);return}if(!this._challenged||!this._staled&&o.stale===!0){if(this._auth||(this._auth=new Hh({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,o)){this._eventHandlers.onReceiveResponse(r);return}this._challenged=!0,this._ua.set("realm",this._auth.get("realm")),this._ua.set("ha1",this._auth.get("ha1")),o.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(a,this._auth.toString()),this._eventHandlers.onAuthenticated(this._request),this.send()}else this._eventHandlers.onReceiveResponse(r)}else this._eventHandlers.onReceiveResponse(r)}}]),c}();function Vh(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function tc(c,s){for(var r=0;r<s.length;r++){var o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function jh(c,s,r){return s&&tc(c.prototype,s),r&&tc(c,r),c}var qh=ft,oa=Rt(),un=rt,sc=gs,nc=rl,Ci=new qh("Registrator"),Ul=10,Bh=function(){function c(s,r){Vh(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=oa.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 jh(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 o in r)if(Object.prototype.hasOwnProperty.call(r,o)){var a=r[o];this._extraContactParams+=";".concat(o),a&&(this._extraContactParams+="=".concat(a))}}},{key:"register",value:function(){var r=this;if(this._registering){Ci.debug("Register request in progress...");return}var o=this._extraHeaders.slice();o.push("Contact: ".concat(this._contact,";expires=").concat(this._expires).concat(this._extraContactParams)),o.push("Expires: ".concat(this._expires));var a=new sc.OutgoingRequest(un.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},o),t=new nc(this._ua,a,{onRequestTimeout:function(){r._registrationFailure(null,un.causes.REQUEST_TIMEOUT)},onTransportError:function(){r._registrationFailure(null,un.causes.CONNECTION_ERROR)},onAuthenticated:function(){r._cseq+=1},onReceiveResponse:function(p){if(p.cseq===r._cseq)switch(r._registrationTimer!==null&&(clearTimeout(r._registrationTimer),r._registrationTimer=null),!0){case/^1[0-9]{2}$/.test(p.status_code):break;case/^2[0-9]{2}$/.test(p.status_code):{if(r._registering=!1,!p.hasHeader("Contact")){Ci.debug("no Contact header in response to REGISTER, response ignored");break}var _=p.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){Ci.debug("no Contact header pointing to us, response ignored");break}var g=d.getParam("expires");!g&&p.hasHeader("expires")&&(g=p.getHeader("expires")),g||(g=r._expires),g=Number(g),g<Ul&&(g=Ul);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:p}));break}case/^423$/.test(p.status_code):{p.hasHeader("min-expires")?(r._expires=Number(p.getHeader("min-expires")),r._expires<Ul&&(r._expires=Ul),r.register()):(Ci.debug("423 response received for REGISTER without Min-Expires"),r._registrationFailure(p,un.causes.SIP_FAILURE_CODE));break}default:{var E=oa.sipErrorCause(p.status_code);r._registrationFailure(p,E)}}}});this._registering=!0,t.send()}},{key:"unregister",value:function(){var r=this,o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this._registered){Ci.debug("already unregistered");return}this._registered=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null);var a=this._extraHeaders.slice();o.all?a.push("Contact: *".concat(this._extraContactParams)):a.push("Contact: ".concat(this._contact,";expires=0").concat(this._extraContactParams)),a.push("Expires: 0");var t=new sc.OutgoingRequest(un.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},a),n=new nc(this._ua,t,{onRequestTimeout:function(){r._unregistered(null,un.causes.REQUEST_TIMEOUT)},onTransportError:function(){r._unregistered(null,un.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=oa.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,o){this._registering=!1,this._ua.registrationFailed({response:r||null,cause:o}),this._registered&&(this._registered=!1,this._ua.unregistered({response:r||null,cause:o}))}},{key:"_unregistered",value:function(r,o){this._registering=!1,this._registered=!1,this._ua.unregistered({response:r||null,cause:o||null})}},{key:"registered",get:function(){return this._registered}}]),c}();function Gh(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 o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Wh(c,s,r){return s&&rc(c.prototype,s),r&&rc(c,r),c}var aa=rt,Pl=nl,Kh=rl,ua={onRequestTimeout:function(){},onTransportError:function(){},onSuccessResponse:function(){},onErrorResponse:function(){},onAuthenticated:function(){},onDialogError:function(){}},Yh=function(){function c(s,r,o){Gh(this,c),this._dialog=s,this._ua=s._ua,this._request=r,this._eventHandlers=o,this._reattempt=!1,this._reattemptTimer=null;for(var a in ua)Object.prototype.hasOwnProperty.call(ua,a)&&(this._eventHandlers[a]||(this._eventHandlers[a]=ua[a]))}return Wh(c,[{key:"send",value:function(){var r=this,o=new Kh(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(o.send(),(this._request.method===aa.INVITE||this._request.method===aa.UPDATE&&this._request.body)&&o.clientTransaction.state!==Pl.C.STATUS_TERMINATED){this._dialog.uac_pending_reply=!0;var a=function t(){(o.clientTransaction.state===Pl.C.STATUS_ACCEPTED||o.clientTransaction.state===Pl.C.STATUS_COMPLETED||o.clientTransaction.state===Pl.C.STATUS_TERMINATED)&&(o.clientTransaction.removeListener("stateChanged",t),r._dialog.uac_pending_reply=!1)};o.clientTransaction.on("stateChanged",a)}}},{key:"_receiveResponse",value:function(r){var o=this;r.status_code===408||r.status_code===481?this._eventHandlers.onDialogError(r):r.method===aa.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(){o._dialog.isTerminated()||(o._reattempt=!0,o.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 zh(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function ic(c,s){for(var r=0;r<s.length;r++){var o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function lc(c,s,r){return s&&ic(c.prototype,s),r&&ic(c,r),c}var Jh=ft,oc=gs,Us=rt,Ri=nl,Xh=Yh,ca=Rt(),fa=new Jh("Dialog"),Ps={STATUS_EARLY:1,STATUS_CONFIRMED:2,STATUS_TERMINATED:3},Qh=function(){lc(c,null,[{key:"C",get:function(){return Ps}}]);function c(s,r,o){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Ps.STATUS_CONFIRMED;if(zh(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 oc.IncomingResponse&&(a=r.status_code<200?Ps.STATUS_EARLY:Ps.STATUS_CONFIRMED);var t=r.parseHeader("contact");o==="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=a,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):o==="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=a,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),fa.debug("new ".concat(o," dialog created with status ").concat(this._state===Ps.STATUS_EARLY?"EARLY":"CONFIRMED"))}return lc(c,[{key:"isTerminated",value:function(){return this._status===Ps.STATUS_TERMINATED}},{key:"update",value:function(r,o){this._state=Ps.STATUS_CONFIRMED,fa.debug("dialog ".concat(this._id.toString()," changed to CONFIRMED state")),o==="UAC"&&(this._route_set=r.getHeaders("record-route").reverse())}},{key:"terminate",value:function(){fa.debug("dialog ".concat(this._id.toString()," deleted")),this._ua.destroyDialog(this),this._state=Ps.STATUS_TERMINATED}},{key:"sendRequest",value:function(r){var o=this,a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=ca.cloneArray(a.extraHeaders),n=ca.cloneObject(a.eventHandlers),p=a.body||null,_=this._createRequest(r,t,p);n.onAuthenticated=function(){o._local_seqnum+=1};var d=new Xh(this,_,n);return d.send(),_}},{key:"receiveRequest",value:function(r){this._checkInDialogRequest(r)&&(r.method===Us.ACK&&this._ack_seqnum!==null?this._ack_seqnum=null:r.method===Us.INVITE&&(this._ack_seqnum=r.cseq),this._owner.receiveRequest(r))}},{key:"_createRequest",value:function(r,o,a){o=ca.cloneArray(o),this._local_seqnum||(this._local_seqnum=Math.floor(Math.random()*1e4));var t=r===Us.CANCEL||r===Us.ACK?this._local_seqnum:this._local_seqnum+=1,n=new oc.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},o,a);return n}},{key:"_checkInDialogRequest",value:function(r){var o=this;if(!this._remote_seqnum)this._remote_seqnum=r.cseq;else if(r.cseq<this._remote_seqnum)if(r.method===Us.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===Us.INVITE||r.method===Us.UPDATE&&r.body){if(this._uac_pending_reply===!0)r.reply(491);else if(this._uas_pending_reply===!0){var a=(Math.random()*10|0)+1;return r.reply(500,null,["Retry-After:".concat(a)]),!1}else{this._uas_pending_reply=!0;var t=function n(){(r.server_transaction.state===Ri.C.STATUS_ACCEPTED||r.server_transaction.state===Ri.C.STATUS_COMPLETED||r.server_transaction.state===Ri.C.STATUS_TERMINATED)&&(r.server_transaction.removeListener("stateChanged",n),o._uas_pending_reply=!1)};r.server_transaction.on("stateChanged",t)}r.hasHeader("contact")&&r.server_transaction.on("stateChanged",function(){r.server_transaction.state===Ri.C.STATUS_ACCEPTED&&(o._remote_target=r.parseHeader("contact").uri)})}else r.method===Us.NOTIFY&&r.hasHeader("contact")&&r.server_transaction.on("stateChanged",function(){r.server_transaction.state===Ri.C.STATUS_COMPLETED&&(o._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}(),Su={exports:{}};function uo(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?uo=function(r){return typeof r}:uo=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},uo(c)}function Zh(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function ac(c,s){for(var r=0;r<s.length;r++){var o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function ed(c,s,r){return s&&ac(c.prototype,s),r&&ac(c,r),c}function td(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(o,a){return o.__proto__=a,o},tu(c,s)}function sd(c){var s=id();return function(){var o=So(c),a;if(s){var t=So(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return nd(this,a)}}function nd(c,s){return s&&(uo(s)==="object"||typeof s=="function")?s:rd(c)}function rd(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function id(){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 So(c){return So=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},So(c)}var ld=ct.EventEmitter,od=ft,ad=rt,ud=Fs,uc=Rt(),cd=new od("RTCSession:DTMF"),zf={MIN_DURATION:70,MAX_DURATION:6e3,DEFAULT_DURATION:100,MIN_INTER_TONE_GAP:50,DEFAULT_INTER_TONE_GAP:500};Su.exports=function(c){td(r,c);var s=sd(r);function r(o){var a;return Zh(this,r),a=s.call(this),a._session=o,a._direction=null,a._tone=null,a._duration=null,a._request=null,a}return ed(r,[{key:"send",value:function(a){var t=this,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(a===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 ud.InvalidStateError(this._session.status);var p=uc.cloneArray(n.extraHeaders);if(this.eventHandlers=uc.cloneObject(n.eventHandlers),typeof a=="string")a=a.toUpperCase();else if(typeof a=="number")a=a.toString();else throw new TypeError("Invalid tone: ".concat(a));if(a.match(/^[0-9A-DR#*]$/))this._tone=a;else throw new TypeError("Invalid tone: ".concat(a));this._duration=n.duration,p.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(ad.INFO,{extraHeaders:p,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(a){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=a,a.reply(200),a.body){var p=a.body.split(`
48
+ `);p.length>=1&&t.test(p[0])&&(this._tone=p[0].replace(t,"$2")),p.length>=2&&n.test(p[1])&&(this._duration=parseInt(p[1].replace(n,"$2"),10))}this._duration||(this._duration=zf.DEFAULT_DURATION),this._tone?this._session.newDTMF({originator:"remote",dtmf:this,request:a}):cd.debug("invalid INFO DTMF received, discarded")}},{key:"tone",get:function(){return this._tone}},{key:"duration",get:function(){return this._duration}}]),r}(ld);Su.exports.C=zf;var fd=Su.exports;function co(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?co=function(r){return typeof r}:co=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},co(c)}function _d(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 o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function hd(c,s,r){return s&&cc(c.prototype,s),r&&cc(c,r),c}function dd(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&&su(c,s)}function su(c,s){return su=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},su(c,s)}function pd(c){var s=Td();return function(){var o=yo(c),a;if(s){var t=yo(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return md(this,a)}}function md(c,s){return s&&(co(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 Td(){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 yo(c){return yo=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},yo(c)}var vd=ct.EventEmitter,Ed=rt,Sd=Fs,yd=Rt(),Ad=function(c){dd(r,c);var s=pd(r);function r(o){var a;return _d(this,r),a=s.call(this),a._session=o,a._direction=null,a._contentType=null,a._body=null,a}return hd(r,[{key:"send",value:function(a,t){var n=this,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(this._direction="outgoing",a===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 Sd.InvalidStateError(this._session.status);this._contentType=a,this._body=t;var _=yd.cloneArray(p.extraHeaders);_.push("Content-Type: ".concat(a)),this._session.newInfo({originator:"local",info:this,request:this.request}),this._session.sendRequest(Ed.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(a){this._direction="incoming",this.request=a,a.reply(200),this._contentType=a.hasHeader("Content-Type")?a.getHeader("Content-Type").toLowerCase():void 0,this._body=a.body,this._session.newInfo({originator:"remote",info:this,request:a})}},{key:"contentType",get:function(){return this._contentType}},{key:"body",get:function(){return this._body}}]),r}(vd);function Cd(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function fc(c,s){for(var r=0;r<s.length;r++){var o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Rd(c,s,r){return s&&fc(c.prototype,s),r&&fc(c,r),c}var Id=ft,_c=rt,bd=new Id("RTCSession:ReferNotifier"),_a={event_type:"refer",body_type:"message/sipfrag;version=2.0",expires:300},wd=function(){function c(s,r,o){Cd(this,c),this._session=s,this._id=r,this._expires=o||_a.expires,this._active=!0,this.notify(100)}return Rd(c,[{key:"notify",value:function(r,o){if(bd.debug("notify()"),this._active!==!1){o=o||_c.REASON_PHRASE[r]||"";var a;r>=200?a="terminated;reason=noresource":a="active;expires=".concat(this._expires),this._session.sendRequest(_c.NOTIFY,{extraHeaders:["Event: ".concat(_a.event_type,";id=").concat(this._id),"Subscription-State: ".concat(a),"Content-Type: ".concat(_a.body_type)],body:"SIP/2.0 ".concat(r," ").concat(o),eventHandlers:{onErrorResponse:function(){this._active=!1}}})}}}]),c}();function fo(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?fo=function(r){return typeof r}:fo=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},fo(c)}function Od(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 o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Dd(c,s,r){return s&&hc(c.prototype,s),r&&hc(c,r),c}function Nd(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&&nu(c,s)}function nu(c,s){return nu=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},nu(c,s)}function Ud(c){var s=Md();return function(){var o=Ao(c),a;if(s){var t=Ao(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return Pd(this,a)}}function Pd(c,s){return s&&(fo(s)==="object"||typeof s=="function")?s:xd(c)}function xd(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 Ao(c){return Ao=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Ao(c)}var kd=ct.EventEmitter,Ld=ft,Ii=rt,$d=rs(),dc=Rt(),cn=new Ld("RTCSession:ReferSubscriber"),Hd=function(c){Nd(r,c);var s=Ud(r);function r(o){var a;return Od(this,r),a=s.call(this),a._id=null,a._session=o,a}return Dd(r,[{key:"sendRefer",value:function(a){var t=this,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};cn.debug("sendRefer()");var p=dc.cloneArray(n.extraHeaders),_=dc.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(a).concat(g?"?Replaces=".concat(g):"",">");if(p.push(T),!p.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,">");p.push(E)}p.push("Contact: ".concat(this._session.contact));var y=this._session.sendRequest(Ii.REFER,{extraHeaders:p,eventHandlers:{onSuccessResponse:function(R){t._requestSucceeded(R)},onErrorResponse:function(R){t._requestFailed(R,Ii.causes.REJECTED)},onTransportError:function(){t._requestFailed(null,Ii.causes.CONNECTION_ERROR)},onRequestTimeout:function(){t._requestFailed(null,Ii.causes.REQUEST_TIMEOUT)},onDialogError:function(){t._requestFailed(null,Ii.causes.DIALOG_ERROR)}}});this._id=y.cseq}},{key:"receiveNotify",value:function(a){if(cn.debug("receiveNotify()"),!!a.body){var t=$d.parse(a.body.trim().split(`\r
49
+ `,1)[0],"Status_Line");if(t===-1){cn.debug('receiveNotify() | error parsing NOTIFY body: "'.concat(a.body,'"'));return}switch(!0){case/^100$/.test(t.status_code):this.emit("trying",{request:a,status_line:t});break;case/^1[0-9]{2}$/.test(t.status_code):this.emit("progress",{request:a,status_line:t});break;case/^2[0-9]{2}$/.test(t.status_code):this.emit("accepted",{request:a,status_line:t});break;default:this.emit("failed",{request:a,status_line:t});break}}}},{key:"_requestSucceeded",value:function(a){cn.debug("REFER succeeded"),cn.debug('emit "requestSucceeded"'),this.emit("requestSucceeded",{response:a})}},{key:"_requestFailed",value:function(a,t){cn.debug("REFER failed"),cn.debug('emit "requestFailed"'),this.emit("requestFailed",{response:a||null,cause:t})}},{key:"id",get:function(){return this._id}}]),r}(kd);function _o(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_o=function(r){return typeof r}:_o=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},_o(c)}function fs(c,s){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=Fd(c))||s&&c&&typeof c.length=="number"){r&&(c=r);var o=0,a=function(){};return{s:a,n:function(){return o>=c.length?{done:!0}:{done:!1,value:c[o++]}},e:function(d){throw d},f:a}}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,p;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){n=!0,p=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(n)throw p}}}}function Fd(c,s){if(c){if(typeof c=="string")return pc(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 pc(c,s)}}function pc(c,s){(s==null||s>c.length)&&(s=c.length);for(var r=0,o=new Array(s);r<s;r++)o[r]=c[r];return o}function Vd(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 o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function gc(c,s,r){return s&&mc(c.prototype,s),r&&mc(c,r),c}function jd(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&&ru(c,s)}function ru(c,s){return ru=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},ru(c,s)}function qd(c){var s=Wd();return function(){var o=Co(c),a;if(s){var t=Co(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return Bd(this,a)}}function Bd(c,s){return s&&(_o(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 Co(c){return Co=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Co(c)}var Kd=ct.EventEmitter,Tc=Ut,Yd=ft,ce=rt,fn=Fs,vc=nl,qe=Rt(),bi=Yf,zd=gs,xl=Qh,Jd=rl,Pt=fd,Ec=Ad,Xd=wd,Qd=Hd,Sc=Vs(),K=new Yd("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},Ml=["audio","video"],Zd=function(c){jd(r,c);var s=qd(r);gc(r,null,[{key:"C",get:function(){return Q}}]);function r(o){var a;return Vd(this,r),K.debug("new"),a=s.call(this),a._id=null,a._ua=o,a._status=Q.STATUS_NULL,a._dialog=null,a._earlyDialogs={},a._contact=null,a._from_tag=null,a._to_tag=null,a._connection=null,a._connectionPromiseQueue=Promise.resolve(),a._request=null,a._is_canceled=!1,a._cancel_reason="",a._is_confirmed=!1,a._late_sdp=!1,a._rtcOfferConstraints=null,a._rtcAnswerConstraints=null,a._localMediaStream=null,a._localMediaStreamLocallyGenerated=!1,a._rtcReady=!0,a._iceReady=!1,a._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},a._direction=null,a._local_identity=null,a._remote_identity=null,a._start_time=null,a._end_time=null,a._tones=null,a._audioMuted=!1,a._videoMuted=!1,a._localHold=!1,a._remoteHold=!1,a._sessionTimers={enabled:a._ua.configuration.session_timers,refreshMethod:a._ua.configuration.session_timers_refresh_method,defaultExpires:ce.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},a._referSubscribers={},a._data={},a}return gc(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(a){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;K.debug("connect()");var p=a,_=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,a===void 0)throw new TypeError("Not enough arguments");if(this._status!==Q.STATUS_NULL)throw new fn.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new fn.NotSupportedError("WebRTC not supported");if(a=this._ua.normalizeTarget(a),!a)throw new TypeError("Invalid target: ".concat(p));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 R in _)Object.prototype.hasOwnProperty.call(_,R)&&this.on(R,_[R]);this._from_tag=qe.newTag();var I=t.anonymous||!1,$={from_tag:this._from_tag};this._contact=this._ua.contact.toString({anonymous:I,outbound:!0}),I?($.from_display_name="Anonymous",$.from_uri=new Sc("sip","anonymous","anonymous.invalid"),d.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString())),d.push("Privacy: id")):t.fromUserName&&($.from_uri=new Sc("sip",t.fromUserName,this._ua.configuration.uri.host),d.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString()))),t.fromDisplayName&&($.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 zd.InitialOutgoingInviteRequest(a,this._ua,$,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(a,t){var n=this;K.debug("init_incoming()");var p,_=a.hasHeader("Content-Type")?a.getHeader("Content-Type").toLowerCase():void 0;if(a.body&&_!=="application/sdp"){a.reply(415);return}if(this._status=Q.STATUS_INVITE_RECEIVED,this._from_tag=a.from_tag,this._id=a.call_id+this._from_tag,this._request=a,this._contact=this._ua.contact.toString(),a.hasHeader("expires")&&(p=a.getHeader("expires")*1e3),a.to_tag=qe.newTag(),!this._createDialog(a,"UAS",!0)){a.reply(500,"Missing Contact header field");return}a.body?this._late_sdp=!1:this._late_sdp=!0,this._status=Q.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(function(){a.reply(408),n._failed("local",null,ce.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),p&&(this._timers.expiresTimer=setTimeout(function(){n._status===Q.STATUS_WAITING_FOR_ANSWER&&(a.reply(487),n._failed("system",null,ce.causes.EXPIRES))},p)),this._direction="incoming",this._local_identity=a.to,this._remote_identity=a.from,t&&t(this),this._newRTCSession("remote",a),this._status!==Q.STATUS_TERMINATED&&(a.reply(180,null,["Contact: ".concat(this._contact)]),this._progress("local",null))}},{key:"answer",value:function(){var a=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("answer()");var n=this._request,p=qe.cloneArray(t.extraHeaders),_=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,R=!1,I=!1,$=!1,L=!1;if(this._rtcAnswerConstraints=E,this._rtcOfferConstraints=t.rtcOfferConstraints||null,this._data=t.data||this._data,this._direction!=="incoming")throw new fn.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==Q.STATUS_WAITING_FOR_ANSWER)throw new fn.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(n,"UAS")){n.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),p.unshift("Contact: ".concat(this._contact));var ae=n.parseSDP();Array.isArray(ae.media)||(ae.media=[ae.media]);var N=fs(ae.media),F;try{for(N.s();!(F=N.n()).done;){var Se=F.value;Se.type==="audio"&&(R=!0,(!Se.direction||Se.direction==="sendrecv")&&($=!0)),Se.type==="video"&&(I=!0,(!Se.direction||Se.direction==="sendrecv")&&(L=!0))}}catch(H){N.e(H)}finally{N.f()}if(d&&_.audio===!1){A=d.getAudioTracks();var ve=fs(A),M;try{for(ve.s();!(M=ve.n()).done;){var D=M.value;d.removeTrack(D)}}catch(H){ve.e(H)}finally{ve.f()}}if(d&&_.video===!1){A=d.getVideoTracks();var B=fs(A),j;try{for(B.s();!(j=B.n()).done;){var z=j.value;d.removeTrack(z)}}catch(H){B.e(H)}finally{B.f()}}!d&&_.audio===void 0&&(_.audio=$),!d&&_.video===void 0&&(_.video=L),!d&&!R&&!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 a._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(_).catch(function(H){throw a._status===Q.STATUS_TERMINATED?new Error("terminated"):(n.reply(480),a._failed("local",null,ce.causes.USER_DENIED_MEDIA_ACCESS),K.warn('emit "getusermediafailed" [error:%o]',H),a.emit("getusermediafailed",H),new Error("getUserMedia() failed"))})}).then(function(H){if(a._status===Q.STATUS_TERMINATED)throw new Error("terminated");a._localMediaStream=H,H&&H.getTracks().forEach(function(X){a._connection.addTrack(X,H)})}).then(function(){if(!a._late_sdp){var H={originator:"remote",type:"offer",sdp:n.body};K.debug('emit "sdp"'),a.emit("sdp",H);var X=new RTCSessionDescription({type:"offer",sdp:H.sdp});return a._connectionPromiseQueue=a._connectionPromiseQueue.then(function(){return a._connection.setRemoteDescription(X)}).catch(function(U){throw n.reply(488),a._failed("system",null,ce.causes.WEBRTC_ERROR),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',U),a.emit("peerconnection:setremotedescriptionfailed",U),new Error("peerconnection.setRemoteDescription() failed")}),a._connectionPromiseQueue}}).then(function(){if(a._status===Q.STATUS_TERMINATED)throw new Error("terminated");return a._connecting(n),a._late_sdp?a._createLocalDescription("offer",a._rtcOfferConstraints).catch(function(){throw n.reply(500),new Error("_createLocalDescription() failed")}):a._createLocalDescription("answer",E).catch(function(){throw n.reply(500),new Error("_createLocalDescription() failed")})}).then(function(H){if(a._status===Q.STATUS_TERMINATED)throw new Error("terminated");a._handleSessionTimersInIncomingRequest(n,p),n.reply(200,null,p,H,function(){a._status=Q.STATUS_WAITING_FOR_ACK,a._setInvite2xxTimer(n,H),a._setACKTimer(),a._accepted("local")},function(){a._failed("system",null,ce.causes.CONNECTION_ERROR)})}).catch(function(H){a._status!==Q.STATUS_TERMINATED&&K.warn(H)})}},{key:"terminate",value:function(){var a=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("terminate()");var n=t.cause||ce.causes.BYE,p=qe.cloneArray(t.extraHeaders),_=t.body,d,g=t.status_code,T=t.reason_phrase;if(this._status===Q.STATUS_TERMINATED)throw new fn.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,p,_),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&&p.push("Reason: SIP ;cause=".concat(g,'; text="').concat(T,'"')),this._status===Q.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==vc.C.STATUS_TERMINATED){var E=this._dialog;this.receiveRequest=function(y){var A=y.method;A===ce.ACK&&(a.sendRequest(ce.BYE,{extraHeaders:p,body:_}),E.terminate())},this._request.server_transaction.on("stateChanged",function(){a._request.server_transaction.state===vc.C.STATUS_TERMINATED&&(a.sendRequest(ce.BYE,{extraHeaders:p,body:_}),E.terminate())}),this._ended("local",null,n),this._dialog=E,this._ua.newDialog(E)}else this.sendRequest(ce.BYE,{extraHeaders:p,body:_}),this._ended("local",null,n)}}},{key:"sendDTMF",value:function(a){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};K.debug("sendDTMF() | tones: %s",a);var n=0,p=t.duration||null,_=t.interToneGap||null,d=t.transportType||ce.DTMF_TRANSPORT.INFO;if(a===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 fn.InvalidStateError(this._status);if(d!==ce.DTMF_TRANSPORT.INFO&&d!==ce.DTMF_TRANSPORT.RFC2833)throw new TypeError("invalid transportType: ".concat(d));if(typeof a=="number"&&(a=a.toString()),!a||typeof a!="string"||!a.match(/^[0-9A-DR#*,]+$/i))throw new TypeError("Invalid tones: ".concat(a));if(p&&!qe.isDecimal(p))throw new TypeError("Invalid tone duration: ".concat(p));if(p?p<Pt.C.MIN_DURATION?(K.debug('"duration" value is lower than the minimum allowed, setting it to '.concat(Pt.C.MIN_DURATION," milliseconds")),p=Pt.C.MIN_DURATION):p>Pt.C.MAX_DURATION?(K.debug('"duration" value is greater than the maximum allowed, setting it to '.concat(Pt.C.MAX_DURATION," milliseconds")),p=Pt.C.MAX_DURATION):p=Math.abs(p):p=Pt.C.DEFAULT_DURATION,t.duration=p,_&&!qe.isDecimal(_))throw new TypeError("Invalid interToneGap: ".concat(_));if(_?_<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")),_=Pt.C.MIN_INTER_TONE_GAP):_=Math.abs(_):_=Pt.C.DEFAULT_INTER_TONE_GAP,d===ce.DTMF_TRANSPORT.RFC2833){var g=this._getDTMFRTPSender();g&&(a=g.toneBuffer+a,g.insertDTMF(a,p,_));return}if(this._tones){this._tones+=a;return}this._tones=a,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 R=new Pt(this);t.eventHandlers={onFailed:function(){E._tones=null}},R.send(A,t),y=p+_}setTimeout(T.bind(this),y)}}},{key:"sendInfo",value:function(a,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 fn.InvalidStateError(this._status);var p=new Ec(this);p.send(a,t,n)}},{key:"mute",value:function(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{audio:!0,video:!1};K.debug("mute()");var t=!1,n=!1;this._audioMuted===!1&&a.audio&&(t=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&a.video&&(n=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(t===!0||n===!0)&&this._onmute({audio:t,video:n})}},{key:"unmute",value:function(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{audio:!0,video:!0};K.debug("unmute()");var t=!1,n=!1;this._audioMuted===!0&&a.audio&&(t=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&a.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 a=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 p={succeeded:function(){n&&n()},failed:function(){a.terminate({cause:ce.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:p,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:p,extraHeaders:t.extraHeaders}),!0}},{key:"unhold",value:function(){var a=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 p={succeeded:function(){n&&n()},failed:function(){a.terminate({cause:ce.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:p,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:p,extraHeaders:t.extraHeaders}),!0}},{key:"renegotiate",value:function(){var a=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;K.debug("renegotiate()");var p=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(){a.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:p,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:_,rtcOfferConstraints:p,extraHeaders:t.extraHeaders}),!0}},{key:"refer",value:function(a,t){var n=this;K.debug("refer()");var p=a;if(this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED)return!1;if(a=this._ua.normalizeTarget(a),!a)throw new TypeError("Invalid target: ".concat(p));var _=new Qd(this);_.sendRefer(a,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(a,t){return K.debug("sendRequest()"),this._dialog.sendRequest(a,t)}},{key:"receiveRequest",value:function(a){var t=this;if(K.debug("receiveRequest()"),a.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",a,ce.causes.CANCELED));else switch(a.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(!a.body){this.terminate({cause:ce.causes.MISSING_SDP,status_code:400});break}var n={originator:"remote",type:"answer",sdp:a.body};K.debug('emit "sdp"'),this.emit("sdp",n);var p=new RTCSessionDescription({type:"answer",sdp:n.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return t._connection.setRemoteDescription(p)}).then(function(){t._is_confirmed||t._confirmed("remote",a)}).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",a);break;case ce.BYE:this._status===Q.STATUS_CONFIRMED||this._status===Q.STATUS_WAITING_FOR_ACK?(a.reply(200),this._ended("remote",a,ce.causes.BYE)):this._status===Q.STATUS_INVITE_RECEIVED||this._status===Q.STATUS_WAITING_FOR_ANSWER?(a.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",a,ce.causes.BYE)):a.reply(403,"Wrong Status");break;case ce.INVITE:this._status===Q.STATUS_CONFIRMED?a.hasHeader("replaces")?this._receiveReplaces(a):this._receiveReinvite(a):a.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 _=a.hasHeader("Content-Type")?a.getHeader("Content-Type").toLowerCase():void 0;_&&_.match(/^application\/dtmf-relay/i)?new Pt(this).init_incoming(a):_!==void 0?new Ec(this).init_incoming(a):a.reply(415)}else a.reply(403,"Wrong Status");break;case ce.UPDATE:this._status===Q.STATUS_CONFIRMED?this._receiveUpdate(a):a.reply(403,"Wrong Status");break;case ce.REFER:this._status===Q.STATUS_CONFIRMED?this._receiveRefer(a):a.reply(403,"Wrong Status");break;case ce.NOTIFY:this._status===Q.STATUS_CONFIRMED?this._receiveNotify(a):a.reply(403,"Wrong Status");break;default:a.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(a){K.debug("newDTMF()"),this.emit("newDTMF",a)}},{key:"newInfo",value:function(a){K.debug("newInfo()"),this.emit("newInfo",a)}},{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(p){K.warn("close() | error closing the RTCPeerConnection: %o",p)}for(var a in this._timers)Object.prototype.hasOwnProperty.call(this._timers,a)&&clearTimeout(this._timers[a]);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(a,t){var n=bi.T1;function p(){this._status===Q.STATUS_WAITING_FOR_ACK&&(a.reply(200,null,["Contact: ".concat(this._contact)],t),n<bi.T2&&(n=n*2,n>bi.T2&&(n=bi.T2)),this._timers.invite2xxTimer=setTimeout(p.bind(this),n))}this._timers.invite2xxTimer=setTimeout(p.bind(this),n)}},{key:"_setACKTimer",value:function(){var a=this;this._timers.ackTimer=setTimeout(function(){a._status===Q.STATUS_WAITING_FOR_ACK&&(K.debug("no ACK received, terminating the session"),clearTimeout(a._timers.invite2xxTimer),a.sendRequest(ce.BYE),a._ended("remote",null,ce.causes.NO_ACK))},bi.TIMER_H)}},{key:"_createRTCConnection",value:function(a,t){var n=this;this._connection=new RTCPeerConnection(a,t),this._connection.addEventListener("iceconnectionstatechange",function(){var p=n._connection.iceConnectionState;p==="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(a,t){var n=this;if(K.debug("createLocalDescription()"),a!=="offer"&&a!=="answer")throw new Error('createLocalDescription() | invalid type "'.concat(a,'"'));var p=this._connection;return this._rtcReady=!1,Promise.resolve().then(function(){return a==="offer"?p.createOffer(t).catch(function(_){return K.warn('emit "peerconnection:createofferfailed" [error:%o]',_),n.emit("peerconnection:createofferfailed",_),Promise.reject(_)}):p.createAnswer(t).catch(function(_){return K.warn('emit "peerconnection:createanswerfailed" [error:%o]',_),n.emit("peerconnection:createanswerfailed",_),Promise.reject(_)})}).then(function(_){return p.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(p.iceGatheringState==="complete"&&!_||p.iceGatheringState==="gathering"&&n._iceReady){n._rtcReady=!0;var d={originator:"local",type:a,sdp:p.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(){p.removeEventListener("icecandidate",E),p.removeEventListener("icegatheringstatechange",y),T=!0,n._rtcReady=!0,n._iceReady=!0;var I={originator:"local",type:a,sdp:p.localDescription.sdp};K.debug('emit "sdp"'),n.emit("sdp",I),g(I.sdp)};p.addEventListener("icecandidate",E=function(I){var $=I.candidate;$?n.emit("icecandidate",{candidate:$,ready:A}):T||A()}),p.addEventListener("icegatheringstatechange",y=function(){p.iceGatheringState==="complete"&&!T&&A()})})})}},{key:"_createDialog",value:function(a,t,n){var p=t==="UAS"?a.to_tag:a.from_tag,_=t==="UAS"?a.from_tag:a.to_tag,d=a.call_id+p+_,g=this._earlyDialogs[d];if(n)return g?!0:(g=new xl(this,a,t,xl.C.STATUS_EARLY),g.error?(K.debug(g.error),this._failed("remote",a,ce.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[d]=g,!0));if(this._from_tag=a.from_tag,this._to_tag=a.to_tag,g)return g.update(a,t),this._dialog=g,delete this._earlyDialogs[d],!0;var T=new xl(this,a,t);return T.error?(K.debug(T.error),this._failed("remote",a,ce.causes.INTERNAL_ERROR),!1):(this._dialog=T,!0)}},{key:"_receiveReinvite",value:function(a){var t=this;K.debug("receiveReinvite()");var n=a.hasHeader("Content-Type")?a.getHeader("Content-Type").toLowerCase():void 0,p={request:a,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=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));a.reply(E,y,A)}if(this.emit("reinvite",p),_)return;if(this._late_sdp=!1,!a.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(){a.reply(500)});return}if(n!=="application/sdp"){K.debug("invalid Content-Type"),a.reply(415);return}this._processInDialogSdpOffer(a).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(a,y),this._late_sdp&&(T=this._mangleOffer(T)),a.reply(200,null,y,T,function(){E._status=Q.STATUS_WAITING_FOR_ACK,E._setInvite2xxTimer(a,T),E._setACKTimer()}),typeof p.callback=="function"&&p.callback()}}},{key:"_receiveUpdate",value:function(a){var t=this;K.debug("receiveUpdate()");var n=a.hasHeader("Content-Type")?a.getHeader("Content-Type").toLowerCase():void 0,p={request:a,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=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));a.reply(E,y,A)}if(this.emit("update",p),_)return;if(!a.body){g.call(this,null);return}if(n!=="application/sdp"){K.debug("invalid Content-Type"),a.reply(415);return}this._processInDialogSdpOffer(a).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(a,E),a.reply(200,null,E,T),typeof p.callback=="function"&&p.callback()}}},{key:"_processInDialogSdpOffer",value:function(a){var t=this;K.debug("_processInDialogSdpOffer()");var n=a.parseSDP(),p=!1,_=fs(n.media),d;try{for(_.s();!(d=_.n()).done;){var g=d.value;if(Ml.indexOf(g.type)!==-1){var T=g.direction||n.direction||"sendrecv";if(T==="sendonly"||T==="inactive")p=!0;else{p=!1;break}}}}catch(A){_.e(A)}finally{_.f()}var E={originator:"remote",type:"offer",sdp:a.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 a.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&&p===!1?(t._remoteHold=!1,t._onunhold("remote")):t._remoteHold===!1&&p===!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 a.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(a){var t=this;if(K.debug("receiveRefer()"),!a.refer_to){K.debug("no Refer-To header field present in REFER"),a.reply(400);return}if(a.refer_to.uri.scheme!==ce.SIP){K.debug("Refer-To header field points to a non-SIP URI scheme"),a.reply(416);return}a.reply(202);var n=new Xd(this,a.cseq);K.debug('emit "refer"'),this.emit("refer",{request:a,accept:function(g,T){p.call(t,g,T)},reject:function(){_.call(t)}});function p(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,R=y.cause;A?n.notify(A.status_code,A.reason_phrase):n.notify(487,R)}),a.refer_to.uri.hasHeader("replaces")){var E=decodeURIComponent(a.refer_to.uri.getHeader("replaces"));g.extraHeaders=qe.cloneArray(g.extraHeaders),g.extraHeaders.push("Replaces: ".concat(E))}T.connect(a.refer_to.uri.toAor(),g,d)}function _(){n.notify(603)}}},{key:"_receiveNotify",value:function(a){switch(K.debug("receiveNotify()"),a.event||a.reply(400),a.event.event){case"refer":{var t,n;if(a.event.params&&a.event.params.id)t=a.event.params.id,n=this._referSubscribers[t];else if(Object.keys(this._referSubscribers).length===1)n=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{a.reply(400,"Missing event id parameter");return}if(!n){a.reply(481,"Subscription does not exist");return}n.receiveNotify(a),a.reply(200);break}default:a.reply(489)}}},{key:"_receiveReplaces",value:function(a){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(a,_)}function p(){K.debug("Replaced INVITE rejected by the user"),a.reply(486)}this.emit("replaces",{request:a,accept:function(d){n.call(t,d)},reject:function(){p.call(t)}})}},{key:"_sendInitialRequest",value:function(a,t,n){var p=this,_=new Jd(this._ua,this._request,{onRequestTimeout:function(){p.onRequestTimeout()},onTransportError:function(){p.onTransportError()},onAuthenticated:function(g){p._request=g},onReceiveResponse:function(g){p._receiveInviteResponse(g)}});Promise.resolve().then(function(){if(n)return n;if(a.audio||a.video)return p._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(a).catch(function(d){throw p._status===Q.STATUS_TERMINATED?new Error("terminated"):(p._failed("local",null,ce.causes.USER_DENIED_MEDIA_ACCESS),K.warn('emit "getusermediafailed" [error:%o]',d),p.emit("getusermediafailed",d),d)})}).then(function(d){if(p._status===Q.STATUS_TERMINATED)throw new Error("terminated");return p._localMediaStream=d,d&&d.getTracks().forEach(function(g){p._connection.addTrack(g,d)}),p._connecting(p._request),p._createLocalDescription("offer",t).catch(function(g){throw p._failed("local",null,ce.causes.WEBRTC_ERROR),g})}).then(function(d){if(p._is_canceled||p._status===Q.STATUS_TERMINATED)throw new Error("terminated");p._request.body=d,p._status=Q.STATUS_INVITE_SENT,K.debug('emit "sending" [request:%o]',p._request),p.emit("sending",{request:p._request}),_.send()}).catch(function(d){p._status!==Q.STATUS_TERMINATED&&K.warn(d)})}},{key:"_getDTMFRTPSender",value:function(){var a=this._connection.getSenders().find(function(t){return t.track&&t.track.kind==="audio"});if(!(a&&a.dtmf)){K.warn("sendDTMF() | no local audio track to send DTMF with");return}return a.dtmf}},{key:"_receiveInviteResponse",value:function(a){var t=this;if(K.debug("receiveInviteResponse()"),this._dialog&&a.status_code>=200&&a.status_code<=299)if(this._dialog.id.call_id===a.call_id&&this._dialog.id.local_tag===a.from_tag&&this._dialog.id.remote_tag===a.to_tag){this.sendRequest(ce.ACK);return}else{var n=new xl(this,a,"UAC");if(n.error!==void 0){K.debug(n.error);return}this.sendRequest(ce.ACK),this.sendRequest(ce.BYE);return}if(this._is_canceled){a.status_code>=100&&a.status_code<200?this._request.cancel(this._cancel_reason):a.status_code>=200&&a.status_code<299&&this._acceptAndTerminate(a);return}if(!(this._status!==Q.STATUS_INVITE_SENT&&this._status!==Q.STATUS_1XX_RECEIVED))switch(!0){case/^100$/.test(a.status_code):this._status=Q.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(a.status_code):{if(!a.to_tag){K.debug("1xx response received without to tag");break}if(a.hasHeader("contact")&&!this._createDialog(a,"UAC",!0))break;if(this._status=Q.STATUS_1XX_RECEIVED,!a.body){this._progress("remote",a);break}var p={originator:"remote",type:"answer",sdp:a.body};K.debug('emit "sdp"'),this.emit("sdp",p);var _=new RTCSessionDescription({type:"answer",sdp:p.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return t._connection.setRemoteDescription(_)}).then(function(){return t._progress("remote",a)}).catch(function(E){K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),t.emit("peerconnection:setremotedescriptionfailed",E)});break}case/^2[0-9]{2}$/.test(a.status_code):{if(this._status=Q.STATUS_CONFIRMED,!a.body){this._acceptAndTerminate(a,400,ce.causes.MISSING_SDP),this._failed("remote",a,ce.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(a,"UAC"))break;var d={originator:"remote",type:"answer",sdp:a.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(a,500,E.toString()),t._failed("local",a,ce.causes.WEBRTC_ERROR)})}).then(function(){t._connection.setRemoteDescription(g).then(function(){t._handleSessionTimersInIncomingResponse(a),t._accepted("remote",a),t.sendRequest(ce.ACK),t._confirmed("local",null)}).catch(function(E){t._acceptAndTerminate(a,488,"Not Acceptable Here"),t._failed("remote",a,ce.causes.BAD_MEDIA_DESCRIPTION),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),t.emit("peerconnection:setremotedescriptionfailed",E)})});break}default:{var T=qe.sipErrorCause(a.status_code);this._failed("remote",a,T)}}}},{key:"_sendReinvite",value:function(){var a=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("sendReinvite()");var n=qe.cloneArray(t.extraHeaders),p=qe.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 a._createLocalDescription("offer",_)}).then(function(E){E=a._mangleOffer(E);var y={originator:"local",type:"offer",sdp:E};K.debug('emit "sdp"'),a.emit("sdp",y),a.sendRequest(ce.INVITE,{extraHeaders:n,body:E,eventHandlers:{onSuccessResponse:function(R){g.call(a,R),d=!0},onErrorResponse:function(R){T.call(a,R)},onTransportError:function(){a.onTransportError()},onRequestTimeout:function(){a.onRequestTimeout()},onDialogError:function(){a.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 R=new RTCSessionDescription({type:"answer",sdp:A.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return y._connection.setRemoteDescription(R)}).then(function(){p.succeeded&&p.succeeded(E)}).catch(function(I){T.call(y),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',I),y.emit("peerconnection:setremotedescriptionfailed",I)})}}function T(E){p.failed&&p.failed(E)}}},{key:"_sendUpdate",value:function(){var a=this,t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};K.debug("sendUpdate()");var n=qe.cloneArray(t.extraHeaders),p=qe.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 a._createLocalDescription("offer",_)}).then(function(y){y=a._mangleOffer(y);var A={originator:"local",type:"offer",sdp:y};K.debug('emit "sdp"'),a.emit("sdp",A),a.sendRequest(ce.UPDATE,{extraHeaders:n,body:y,eventHandlers:{onSuccessResponse:function(I){T.call(a,I),g=!0},onErrorResponse:function(I){E.call(a,I)},onTransportError:function(){a.onTransportError()},onRequestTimeout:function(){a.onRequestTimeout()},onDialogError:function(){a.onDialogError()}}})}).catch(function(){E.call(a)})):this.sendRequest(ce.UPDATE,{extraHeaders:n,eventHandlers:{onSuccessResponse:function(A){T.call(a,A)},onErrorResponse:function(A){E.call(a,A)},onTransportError:function(){a.onTransportError()},onRequestTimeout:function(){a.onRequestTimeout()},onDialogError:function(){a.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 R={originator:"remote",type:"answer",sdp:y.body};K.debug('emit "sdp"'),this.emit("sdp",R);var I=new RTCSessionDescription({type:"answer",sdp:R.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(function(){return A._connection.setRemoteDescription(I)}).then(function(){p.succeeded&&p.succeeded(y)}).catch(function($){E.call(A),K.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',$),A.emit("peerconnection:setremotedescriptionfailed",$)})}else p.succeeded&&p.succeeded(y)}function E(y){p.failed&&p.failed(y)}}},{key:"_acceptAndTerminate",value:function(a,t,n){K.debug("acceptAndTerminate()");var p=[];t&&(n=n||ce.REASON_PHRASE[t]||"",p.push("Reason: SIP ;cause=".concat(t,'; text="').concat(n,'"'))),(this._dialog||this._createDialog(a,"UAC"))&&(this.sendRequest(ce.ACK),this.sendRequest(ce.BYE,{extraHeaders:p})),this._status=Q.STATUS_TERMINATED}},{key:"_mangleOffer",value:function(a){if(!this._localHold&&!this._remoteHold)return a;if(a=Tc.parse(a),this._localHold&&!this._remoteHold){K.debug("mangleOffer() | me on hold, mangling offer");var t=fs(a.media),n;try{for(t.s();!(n=t.n()).done;){var p=n.value;Ml.indexOf(p.type)!==-1&&(p.direction?p.direction==="sendrecv"?p.direction="sendonly":p.direction==="recvonly"&&(p.direction="inactive"):p.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 _=fs(a.media),d;try{for(_.s();!(d=_.n()).done;){var g=d.value;Ml.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=fs(a.media),E;try{for(T.s();!(E=T.n()).done;){var y=E.value;Ml.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 Tc.write(a)}},{key:"_setLocalMediaStatus",value:function(){var a=!0,t=!0;(this._localHold||this._remoteHold)&&(a=!1,t=!1),this._audioMuted&&(a=!1),this._videoMuted&&(t=!1),this._toggleMuteAudio(!a),this._toggleMuteVideo(!t)}},{key:"_handleSessionTimersInIncomingRequest",value:function(a,t){if(this._sessionTimers.enabled){var n;a.session_expires&&a.session_expires>=ce.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=a.session_expires,n=a.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(a){if(this._sessionTimers.enabled){var t;a.session_expires&&a.session_expires>=ce.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=a.session_expires,t=a.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,t="uac"),this._sessionTimers.refresher=t==="uac",this._runSessionTimer()}}},{key:"_runSessionTimer",value:function(){var a=this,t=this._sessionTimers.currentExpires;this._sessionTimers.running=!0,clearTimeout(this._sessionTimers.timer),this._sessionTimers.refresher?this._sessionTimers.timer=setTimeout(function(){a._status!==Q.STATUS_TERMINATED&&a._isReadyToReOffer()&&(K.debug("runSessionTimer() | sending session refresh request"),a._sessionTimers.refreshMethod===ce.UPDATE?a._sendUpdate():a._sendReinvite())},t*500):this._sessionTimers.timer=setTimeout(function(){a._status!==Q.STATUS_TERMINATED&&(K.warn("runSessionTimer() | timer expired, terminating the session"),a.terminate({cause:ce.causes.REQUEST_TIMEOUT,status_code:408,reason_phrase:"Session Timer Expired"}))},t*1100)}},{key:"_toggleMuteAudio",value:function(a){var t=this._connection.getSenders().filter(function(d){return d.track&&d.track.kind==="audio"}),n=fs(t),p;try{for(n.s();!(p=n.n()).done;){var _=p.value;_.track.enabled=!a}}catch(d){n.e(d)}finally{n.f()}}},{key:"_toggleMuteVideo",value:function(a){var t=this._connection.getSenders().filter(function(d){return d.track&&d.track.kind==="video"}),n=fs(t),p;try{for(n.s();!(p=n.n()).done;){var _=p.value;_.track.enabled=!a}}catch(d){n.e(d)}finally{n.f()}}},{key:"_newRTCSession",value:function(a,t){K.debug("newRTCSession()"),this._ua.newRTCSession(this,{originator:a,session:this,request:t})}},{key:"_connecting",value:function(a){K.debug("session connecting"),K.debug('emit "connecting"'),this.emit("connecting",{request:a})}},{key:"_progress",value:function(a,t){K.debug("session progress"),K.debug('emit "progress"'),this.emit("progress",{originator:a,response:t||null})}},{key:"_accepted",value:function(a,t){K.debug("session accepted"),this._start_time=new Date,K.debug('emit "accepted"'),this.emit("accepted",{originator:a,response:t||null})}},{key:"_confirmed",value:function(a,t){K.debug("session confirmed"),this._is_confirmed=!0,K.debug('emit "confirmed"'),this.emit("confirmed",{originator:a,ack:t||null})}},{key:"_ended",value:function(a,t,n){K.debug("session ended"),this._end_time=new Date,this._close(),K.debug('emit "ended"'),this.emit("ended",{originator:a,message:t||null,cause:n})}},{key:"_failed",value:function(a,t,n){K.debug("session failed"),K.debug('emit "_failed"'),this.emit("_failed",{originator:a,message:t||null,cause:n}),this._close(),K.debug('emit "failed"'),this.emit("failed",{originator:a,message:t||null,cause:n})}},{key:"_onhold",value:function(a){K.debug("session onhold"),this._setLocalMediaStatus(),K.debug('emit "hold"'),this.emit("hold",{originator:a})}},{key:"_onunhold",value:function(a){K.debug("session onunhold"),this._setLocalMediaStatus(),K.debug('emit "unhold"'),this.emit("unhold",{originator:a})}},{key:"_onmute",value:function(a){var t=a.audio,n=a.video;K.debug("session onmute"),this._setLocalMediaStatus(),K.debug('emit "muted"'),this.emit("muted",{audio:t,video:n})}},{key:"_onunmute",value:function(a){var t=a.audio,n=a.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(a){this._data=a}},{key:"status",get:function(){return this._status}}]),r}(Kd);function ho(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?ho=function(r){return typeof r}:ho=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},ho(c)}function ep(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 o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function tp(c,s,r){return s&&yc(c.prototype,s),r&&yc(c,r),c}function sp(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&&iu(c,s)}function iu(c,s){return iu=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},iu(c,s)}function np(c){var s=lp();return function(){var o=Ro(c),a;if(s){var t=Ro(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return rp(this,a)}}function rp(c,s){return s&&(ho(s)==="object"||typeof s=="function")?s:ip(c)}function ip(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function lp(){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 Ro(c){return Ro=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Ro(c)}var op=ct.EventEmitter,ap=ft,ha=rt,up=gs,wi=Rt(),cp=rl,Ac=Fs,fp=Vs(),kl=new ap("Message"),_p=function(c){sp(r,c);var s=np(r);function r(o){var a;return ep(this,r),a=s.call(this),a._ua=o,a._request=null,a._closed=!1,a._direction=null,a._local_identity=null,a._remote_identity=null,a._is_replied=!1,a._data={},a}return tp(r,[{key:"send",value:function(a,t){var n=this,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},_=a;if(a===void 0||t===void 0)throw new TypeError("Not enough arguments");if(a=this._ua.normalizeTarget(a),!a)throw new TypeError("Invalid target: ".concat(_));var d=wi.cloneArray(p.extraHeaders),g=wi.cloneObject(p.eventHandlers),T=p.contentType||"text/plain",E={};p.fromUserName&&(E.from_uri=new fp("sip",p.fromUserName,this._ua.configuration.uri.host),d.push("P-Preferred-Identity: ".concat(this._ua.configuration.uri.toString()))),p.fromDisplayName&&(E.from_display_name=p.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 up.OutgoingRequest(ha.MESSAGE,a,this._ua,E,d),t&&(this._request.body=t);var A=new cp(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(a){this._request=a,this._newMessage("remote",a),this._is_replied||(this._is_replied=!0,a.reply(200)),this._close()}},{key:"accept",value:function(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=wi.cloneArray(a.extraHeaders),n=a.body;if(this._direction!=="incoming")throw new Ac.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 a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=a.status_code||480,n=a.reason_phrase,p=wi.cloneArray(a.extraHeaders),_=a.body;if(this._direction!=="incoming")throw new Ac.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,p,_)}},{key:"_receiveResponse",value:function(a){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(a.status_code):break;case/^2[0-9]{2}$/.test(a.status_code):this._succeeded("remote",a);break;default:{var t=wi.sipErrorCause(a.status_code);this._failed("remote",a,t);break}}}},{key:"_onRequestTimeout",value:function(){this._closed||this._failed("system",null,ha.causes.REQUEST_TIMEOUT)}},{key:"_onTransportError",value:function(){this._closed||this._failed("system",null,ha.causes.CONNECTION_ERROR)}},{key:"_close",value:function(){this._closed=!0,this._ua.destroyMessage(this)}},{key:"_newMessage",value:function(a,t){a==="remote"?(this._direction="incoming",this._local_identity=t.to,this._remote_identity=t.from):a==="local"&&(this._direction="outgoing",this._local_identity=t.from,this._remote_identity=t.to),this._ua.newMessage(this,{originator:a,message:this,request:t})}},{key:"_failed",value:function(a,t,n){kl.debug("MESSAGE failed"),this._close(),kl.debug('emit "failed"'),this.emit("failed",{originator:a,response:t||null,cause:n})}},{key:"_succeeded",value:function(a,t){kl.debug("MESSAGE succeeded"),this._close(),kl.debug('emit "succeeded"'),this.emit("succeeded",{originator:a,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);function po(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?po=function(r){return typeof r}:po=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},po(c)}function hp(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 o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function dp(c,s,r){return s&&Cc(c.prototype,s),r&&Cc(c,r),c}function pp(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&&lu(c,s)}function lu(c,s){return lu=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},lu(c,s)}function mp(c){var s=vp();return function(){var o=Io(c),a;if(s){var t=Io(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return gp(this,a)}}function gp(c,s){return s&&(po(s)==="object"||typeof s=="function")?s:Tp(c)}function Tp(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function vp(){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 Io(c){return Io=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Io(c)}var Ep=ct.EventEmitter,Sp=ft,da=rt,yp=gs,Oi=Rt(),Ap=rl,Rc=Fs,Ll=new Sp("Options"),Cp=function(c){pp(r,c);var s=mp(r);function r(o){var a;return hp(this,r),a=s.call(this),a._ua=o,a._request=null,a._closed=!1,a._direction=null,a._local_identity=null,a._remote_identity=null,a._is_replied=!1,a._data={},a}return dp(r,[{key:"send",value:function(a,t){var n=this,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},_=a;if(a===void 0)throw new TypeError("A target is required for OPTIONS");if(a=this._ua.normalizeTarget(a),!a)throw new TypeError("Invalid target: ".concat(_));var d=Oi.cloneArray(p.extraHeaders),g=Oi.cloneObject(p.eventHandlers),T=p.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 yp.OutgoingRequest(da.OPTIONS,a,this._ua,null,d),t&&(this._request.body=t);var y=new Ap(this._ua,this._request,{onRequestTimeout:function(){n._onRequestTimeout()},onTransportError:function(){n._onTransportError()},onReceiveResponse:function(R){n._receiveResponse(R)}});this._newOptions("local",this._request),y.send()}},{key:"init_incoming",value:function(a){this._request=a,this._newOptions("remote",a),this._is_replied||(this._is_replied=!0,a.reply(200)),this._close()}},{key:"accept",value:function(){var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=Oi.cloneArray(a.extraHeaders),n=a.body;if(this._direction!=="incoming")throw new Rc.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 a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=a.status_code||480,n=a.reason_phrase,p=Oi.cloneArray(a.extraHeaders),_=a.body;if(this._direction!=="incoming")throw new Rc.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,p,_)}},{key:"_receiveResponse",value:function(a){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(a.status_code):break;case/^2[0-9]{2}$/.test(a.status_code):this._succeeded("remote",a);break;default:{var t=Oi.sipErrorCause(a.status_code);this._failed("remote",a,t);break}}}},{key:"_onRequestTimeout",value:function(){this._closed||this._failed("system",null,da.causes.REQUEST_TIMEOUT)}},{key:"_onTransportError",value:function(){this._closed||this._failed("system",null,da.causes.CONNECTION_ERROR)}},{key:"_close",value:function(){this._closed=!0,this._ua.destroyMessage(this)}},{key:"_newOptions",value:function(a,t){a==="remote"?(this._direction="incoming",this._local_identity=t.to,this._remote_identity=t.from):a==="local"&&(this._direction="outgoing",this._local_identity=t.from,this._remote_identity=t.to),this._ua.newOptions(this,{originator:a,message:this,request:t})}},{key:"_failed",value:function(a,t,n){Ll.debug("OPTIONS failed"),this._close(),Ll.debug('emit "failed"'),this.emit("failed",{originator:a,response:t||null,cause:n})}},{key:"_succeeded",value:function(a,t){Ll.debug("OPTIONS succeeded"),this._close(),Ll.debug('emit "succeeded"'),this.emit("succeeded",{originator:a,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}(Ep),yu={},Rp=ft,pa=Rt(),Ip=rs(),Di=new Rp("Socket");yu.isSocket=function(c){if(Array.isArray(c))return!1;if(typeof c>"u")return Di.warn("undefined JsSIP.Socket instance"),!1;try{if(!pa.isString(c.url))throw Di.warn("missing or invalid JsSIP.Socket url property"),new Error("Missing or invalid JsSIP.Socket url property");if(!pa.isString(c.via_transport))throw Di.warn("missing or invalid JsSIP.Socket via_transport property"),new Error("Missing or invalid JsSIP.Socket via_transport property");if(Ip.parse(c.sip_uri,"SIP_URI")===-1)throw Di.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(!pa.isFunction(c[s]))throw Di.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 bp(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Ic(c,s){for(var r=0;r<s.length;r++){var o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function wp(c,s,r){return s&&Ic(c.prototype,s),r&&Ic(c,r),c}var Op=ft,Dp=yu,bc=rt,Ot=new Op("Transport"),Vt={STATUS_CONNECTED:0,STATUS_CONNECTING:1,STATUS_DISCONNECTED:2,SOCKET_STATUS_READY:0,SOCKET_STATUS_ERROR:1,recovery_options:{min_interval:bc.CONNECTION_RECOVERY_MIN_INTERVAL,max_interval:bc.CONNECTION_RECOVERY_MAX_INTERVAL}},Np=function(){function c(s){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Vt.recovery_options;bp(this,c),Ot.debug("new()"),this.status=Vt.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(o){Ot.warn("cannot use TextDecoder: ".concat(o))}if(typeof s>"u")throw new TypeError("Invalid argument. undefined 'sockets' argument");s instanceof Array||(s=[s]),s.forEach(function(o){if(!Dp.isSocket(o.socket))throw new TypeError("Invalid argument. invalid 'JsSIP.Socket' instance");if(o.weight&&!Number(o.weight))throw new TypeError("Invalid argument. 'weight' attribute is not a number");this.sockets.push({socket:o.socket,weight:o.weight||0,status:Vt.SOCKET_STATUS_READY})},this),this._getSocket()}return wp(c,[{key:"connect",value:function(){if(Ot.debug("connect()"),this.isConnected()){Ot.debug("Transport is already connected");return}else if(this.isConnecting()){Ot.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())}},{key:"disconnect",value:function(){Ot.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=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(Ot.debug("send()"),!this.isConnected())return Ot.warn("unable to send message, transport is not connected"),!1;var o=r.toString();return Ot.debug(`sending message:
51
51
 
52
52
  `.concat(o,`
53
- `)),this.socket.send(o)}},{key:"isConnected",value:function(){return this.status===Ft.STATUS_CONNECTED}},{key:"isConnecting",value:function(){return this.status===Ft.STATUS_CONNECTING}},{key:"_reconnect",value:function(){var r=this;this.recover_attempts+=1;var o=Math.floor(Math.random()*Math.pow(2,this.recover_attempts)+1);o<this.recovery_options.min_interval?o=this.recovery_options.min_interval:o>this.recovery_options.max_interval&&(o=this.recovery_options.max_interval),wt.debug("reconnection attempt: ".concat(this.recover_attempts,". next connection attempt in ").concat(o," seconds")),this.recovery_timer=setTimeout(function(){!r.close_requested&&!(r.isConnected()||r.isConnecting())&&(r._getSocket(),r.connect())},o*1e3)}},{key:"_getSocket",value:function(){var r=[];if(this.sockets.forEach(function(a){a.status!==Ft.SOCKET_STATUS_ERROR&&(r.length===0?r.push(a):a.weight>r[0].weight?r=[a]:a.weight===r[0].weight&&r.push(a))}),r.length===0){this.sockets.forEach(function(a){a.status=Ft.SOCKET_STATUS_READY}),this._getSocket();return}var o=Math.floor(Math.random()*r.length);this.socket=r[o].socket}},{key:"_onConnect",value:function(){this.recover_attempts=0,this.status=Ft.STATUS_CONNECTED,this.recovery_timer!==null&&(clearTimeout(this.recovery_timer),this.recovery_timer=null),this.onconnect({socket:this})}},{key:"_onDisconnect",value:function(r,o,a){this.status=Ft.STATUS_DISCONNECTED,this.ondisconnect({socket:this.socket,error:r,code:o,reason:a}),!this.close_requested&&(this.sockets.forEach(function(t){this.socket===t.socket&&(t.status=Ft.SOCKET_STATUS_ERROR)},this),this._reconnect(r))}},{key:"_onData",value:function(r){if(r===`\r
54
- `){wt.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{wt.debug("received binary message failed to be converted into string, message discarded");return}wt.debug(`received binary message:
53
+ `)),this.socket.send(o)}},{key:"isConnected",value:function(){return this.status===Vt.STATUS_CONNECTED}},{key:"isConnecting",value:function(){return this.status===Vt.STATUS_CONNECTING}},{key:"_reconnect",value:function(){var r=this;this.recover_attempts+=1;var o=Math.floor(Math.random()*Math.pow(2,this.recover_attempts)+1);o<this.recovery_options.min_interval?o=this.recovery_options.min_interval:o>this.recovery_options.max_interval&&(o=this.recovery_options.max_interval),Ot.debug("reconnection attempt: ".concat(this.recover_attempts,". next connection attempt in ").concat(o," seconds")),this.recovery_timer=setTimeout(function(){!r.close_requested&&!(r.isConnected()||r.isConnecting())&&(r._getSocket(),r.connect())},o*1e3)}},{key:"_getSocket",value:function(){var r=[];if(this.sockets.forEach(function(a){a.status!==Vt.SOCKET_STATUS_ERROR&&(r.length===0?r.push(a):a.weight>r[0].weight?r=[a]:a.weight===r[0].weight&&r.push(a))}),r.length===0){this.sockets.forEach(function(a){a.status=Vt.SOCKET_STATUS_READY}),this._getSocket();return}var o=Math.floor(Math.random()*r.length);this.socket=r[o].socket}},{key:"_onConnect",value:function(){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})}},{key:"_onDisconnect",value:function(r,o,a){this.status=Vt.STATUS_DISCONNECTED,this.ondisconnect({socket:this.socket,error:r,code:o,reason:a}),!this.close_requested&&(this.sockets.forEach(function(t){this.socket===t.socket&&(t.status=Vt.SOCKET_STATUS_ERROR)},this),this._reconnect(r))}},{key:"_onData",value:function(r){if(r===`\r
54
+ `){Ot.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{Ot.debug("received binary message failed to be converted into string, message discarded");return}Ot.debug(`received binary message:
55
55
 
56
56
  `.concat(r,`
57
- `))}else wt.debug(`received text message:
57
+ `))}else Ot.debug(`received text message:
58
58
 
59
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}(),Gf={};function Rc(c,n){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=bp(c))||n&&c&&typeof c.length=="number"){r&&(c=r);var o=0,a=function(){};return{s:a,n:function(){return o>=c.length?{done:!0}:{done:!1,value:c[o++]}},e:function(d){throw d},f:a}}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,s=!1,p;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){s=!0,p=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(s)throw p}}}}function bp(c,n){if(c){if(typeof c=="string")return Ic(c,n);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 Ic(c,n)}}function Ic(c,n){(n==null||n>c.length)&&(n=c.length);for(var r=0,o=new Array(n);r<n;r++)o[r]=c[r];return o}var wp=ft,ru=ns(),iu=ms,Ll=new wp("Parser");Gf.parseMessage=function(c,n){var r,o,a=c.indexOf(`\r
62
- `);if(a===-1){Ll.warn("parseMessage() | no CRLF found, not a SIP message");return}var t=c.substring(0,a),s=ru.parse(t,"Request_Response");if(s===-1){Ll.warn('parseMessage() | error parsing first line of SIP message: "'.concat(t,'"'));return}else s.status_code?(r=new iu.IncomingResponse,r.status_code=s.status_code,r.reason_phrase=s.reason_phrase):(r=new iu.IncomingRequest(n),r.method=s.method,r.ruri=s.uri);r.data=c;for(var p=a+2;;){if(a=Op(c,p),a===-2){o=p+2;break}else if(a===-1){Ll.warn("parseMessage() | malformed message");return}if(s=Dp(r,c,p,a),s!==!0){Ll.warn("parseMessage() |",s.error);return}p=a+2}if(r.hasHeader("content-length")){var _=r.getHeader("content-length");r.body=c.substr(o,_)}else r.body=c.substring(o);return r};function Op(c,n){var r=n,o=0,a=0;if(c.substring(r,r+2).match(/(^\r\n)/))return-2;for(;o===0;){if(a=c.indexOf(`\r
63
- `,r),a===-1)return a;!c.substring(a+2,a+4).match(/(^\r\n)/)&&c.charAt(a+2).match(/(^\s+)/)?r=a+2:o=a}return o}function Dp(c,n,r,o){var a,t=n.indexOf(":",r),s=n.substring(r,t).trim(),p=n.substring(t+1,o).trim();switch(s.toLowerCase()){case"via":case"v":c.addHeader("via",p),c.getHeaders("via").length===1?(a=c.parseHeader("Via"),a&&(c.via=a,c.via_branch=a.branch)):a=0;break;case"from":case"f":c.setHeader("from",p),a=c.parseHeader("from"),a&&(c.from=a,c.from_tag=a.getParam("tag"));break;case"to":case"t":c.setHeader("to",p),a=c.parseHeader("to"),a&&(c.to=a,c.to_tag=a.getParam("tag"));break;case"record-route":if(a=ru.parse(p,"Record_Route"),a===-1)a=void 0;else{var _=Rc(a),d;try{for(_.s();!(d=_.n()).done;){var g=d.value;c.addHeader("record-route",p.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",p),a=c.parseHeader("call-id"),a&&(c.call_id=p);break;case"contact":case"m":if(a=ru.parse(p,"Contact"),a===-1)a=void 0;else{var T=Rc(a),E;try{for(T.s();!(E=T.n()).done;){var y=E.value;c.addHeader("contact",p.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",p),a=c.parseHeader("content-length");break;case"content-type":case"c":c.setHeader("content-type",p),a=c.parseHeader("content-type");break;case"cseq":c.setHeader("cseq",p),a=c.parseHeader("cseq"),a&&(c.cseq=a.value),c instanceof iu.IncomingResponse&&(c.method=a.method);break;case"max-forwards":c.setHeader("max-forwards",p),a=c.parseHeader("max-forwards");break;case"www-authenticate":c.setHeader("www-authenticate",p),a=c.parseHeader("www-authenticate");break;case"proxy-authenticate":c.setHeader("proxy-authenticate",p),a=c.parseHeader("proxy-authenticate");break;case"session-expires":case"x":c.setHeader("session-expires",p),a=c.parseHeader("session-expires"),a&&(c.session_expires=a.expires,c.session_expires_refresher=a.refresher);break;case"refer-to":case"r":c.setHeader("refer-to",p),a=c.parseHeader("refer-to"),a&&(c.refer_to=a);break;case"replaces":c.setHeader("replaces",p),a=c.parseHeader("replaces"),a&&(c.replaces=a);break;case"event":case"o":c.setHeader("event",p),a=c.parseHeader("event"),a&&(c.event=a);break;default:c.addHeader(s,p),a=0}return a===void 0?{error:'error parsing header "'.concat(s,'"')}:!0}function ho(c,n){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=Np(c))||n&&c&&typeof c.length=="number"){r&&(c=r);var o=0,a=function(){};return{s:a,n:function(){return o>=c.length?{done:!0}:{done:!1,value:c[o++]}},e:function(d){throw d},f:a}}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,s=!1,p;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){s=!0,p=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(s)throw p}}}}function Np(c,n){if(c){if(typeof c=="string")return bc(c,n);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 bc(c,n)}}function bc(c,n){(n==null||n>c.length)&&(n=c.length);for(var r=0,o=new Array(n);r<n;r++)o[r]=c[r];return o}var Up=ft,Wf=rt,wc=ms,Eu=Ct(),Su=new Up("sanityCheck"),Pp=[qp],xp=[Lp,$p,Hp,Fp],Mp=[Vp,jp],He,Qt,Kf,kp=function(c,n,r){He=c,Qt=n,Kf=r;var o=ho(Pp),a;try{for(o.s();!(a=o.n()).done;){var t=a.value;if(t()===!1)return!1}}catch(E){o.e(E)}finally{o.f()}if(He instanceof wc.IncomingRequest){var s=ho(xp),p;try{for(s.s();!(p=s.n()).done;){var _=p.value;if(_()===!1)return!1}}catch(E){s.e(E)}finally{s.f()}}else if(He instanceof wc.IncomingResponse){var d=ho(Mp),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 Lp(){if(He.s("to").uri.scheme!=="sip")return Ki(416),!1}function $p(){if(!He.to_tag&&He.call_id.substr(0,5)===Qt.configuration.jssip_id)return Ki(482),!1}function Hp(){var c=Eu.str_utf8_length(He.body),n=He.getHeader("content-length");if(c<n)return Ki(400),!1}function Fp(){var c=He.from_tag,n=He.call_id,r=He.cseq,o;if(!He.to_tag)if(He.method===Wf.INVITE){if(Qt._transactions.ist[He.via_branch])return!1;for(var a in Qt._transactions.ist)if(Object.prototype.hasOwnProperty.call(Qt._transactions.ist,a)&&(o=Qt._transactions.ist[a],o.request.from_tag===c&&o.request.call_id===n&&o.request.cseq===r))return Ki(482),!1}else{if(Qt._transactions.nist[He.via_branch])return!1;for(var t in Qt._transactions.nist)if(Object.prototype.hasOwnProperty.call(Qt._transactions.nist,t)&&(o=Qt._transactions.nist[t],o.request.from_tag===c&&o.request.call_id===n&&o.request.cseq===r))return Ki(482),!1}}function Vp(){if(He.getHeaders("via").length>1)return Su.debug("more than one Via header field present in the response, dropping the response"),!1}function jp(){var c=Eu.str_utf8_length(He.body),n=He.getHeader("content-length");if(c<n)return Su.debug("message body length is lower than the value in Content-Length header field, dropping the response"),!1}function qp(){for(var c=["from","to","call_id","cseq","via"],n=0,r=c;n<r.length;n++){var o=r[n];if(!He.hasHeader(o))return Su.debug("missing mandatory header field : ".concat(o,", dropping the response")),!1}}function Ki(c){var n=He.getHeaders("via"),r,o="SIP/2.0 ".concat(c," ").concat(Wf.REASON_PHRASE[c],`\r
65
- `),a=ho(n),t;try{for(a.s();!(t=a.n()).done;){var s=t.value;o+="Via: ".concat(s,`\r
66
- `)}}catch(p){a.e(p)}finally{a.f()}r=He.getHeader("To"),He.to_tag||(r+=";tag=".concat(Eu.newTag())),o+="To: ".concat(r,`\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}(),Jf={};function wc(c,s){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=Up(c))||s&&c&&typeof c.length=="number"){r&&(c=r);var o=0,a=function(){};return{s:a,n:function(){return o>=c.length?{done:!0}:{done:!1,value:c[o++]}},e:function(d){throw d},f:a}}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,p;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){n=!0,p=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(n)throw p}}}}function Up(c,s){if(c){if(typeof c=="string")return Oc(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 Oc(c,s)}}function Oc(c,s){(s==null||s>c.length)&&(s=c.length);for(var r=0,o=new Array(s);r<s;r++)o[r]=c[r];return o}var Pp=ft,ou=rs(),au=gs,$l=new Pp("Parser");Jf.parseMessage=function(c,s){var r,o,a=c.indexOf(`\r
62
+ `);if(a===-1){$l.warn("parseMessage() | no CRLF found, not a SIP message");return}var t=c.substring(0,a),n=ou.parse(t,"Request_Response");if(n===-1){$l.warn('parseMessage() | error parsing first line of SIP message: "'.concat(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;for(var p=a+2;;){if(a=xp(c,p),a===-2){o=p+2;break}else if(a===-1){$l.warn("parseMessage() | malformed message");return}if(n=Mp(r,c,p,a),n!==!0){$l.warn("parseMessage() |",n.error);return}p=a+2}if(r.hasHeader("content-length")){var _=r.getHeader("content-length");r.body=c.substr(o,_)}else r.body=c.substring(o);return r};function xp(c,s){var r=s,o=0,a=0;if(c.substring(r,r+2).match(/(^\r\n)/))return-2;for(;o===0;){if(a=c.indexOf(`\r
63
+ `,r),a===-1)return a;!c.substring(a+2,a+4).match(/(^\r\n)/)&&c.charAt(a+2).match(/(^\s+)/)?r=a+2:o=a}return o}function Mp(c,s,r,o){var a,t=s.indexOf(":",r),n=s.substring(r,t).trim(),p=s.substring(t+1,o).trim();switch(n.toLowerCase()){case"via":case"v":c.addHeader("via",p),c.getHeaders("via").length===1?(a=c.parseHeader("Via"),a&&(c.via=a,c.via_branch=a.branch)):a=0;break;case"from":case"f":c.setHeader("from",p),a=c.parseHeader("from"),a&&(c.from=a,c.from_tag=a.getParam("tag"));break;case"to":case"t":c.setHeader("to",p),a=c.parseHeader("to"),a&&(c.to=a,c.to_tag=a.getParam("tag"));break;case"record-route":if(a=ou.parse(p,"Record_Route"),a===-1)a=void 0;else{var _=wc(a),d;try{for(_.s();!(d=_.n()).done;){var g=d.value;c.addHeader("record-route",p.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",p),a=c.parseHeader("call-id"),a&&(c.call_id=p);break;case"contact":case"m":if(a=ou.parse(p,"Contact"),a===-1)a=void 0;else{var T=wc(a),E;try{for(T.s();!(E=T.n()).done;){var y=E.value;c.addHeader("contact",p.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",p),a=c.parseHeader("content-length");break;case"content-type":case"c":c.setHeader("content-type",p),a=c.parseHeader("content-type");break;case"cseq":c.setHeader("cseq",p),a=c.parseHeader("cseq"),a&&(c.cseq=a.value),c instanceof au.IncomingResponse&&(c.method=a.method);break;case"max-forwards":c.setHeader("max-forwards",p),a=c.parseHeader("max-forwards");break;case"www-authenticate":c.setHeader("www-authenticate",p),a=c.parseHeader("www-authenticate");break;case"proxy-authenticate":c.setHeader("proxy-authenticate",p),a=c.parseHeader("proxy-authenticate");break;case"session-expires":case"x":c.setHeader("session-expires",p),a=c.parseHeader("session-expires"),a&&(c.session_expires=a.expires,c.session_expires_refresher=a.refresher);break;case"refer-to":case"r":c.setHeader("refer-to",p),a=c.parseHeader("refer-to"),a&&(c.refer_to=a);break;case"replaces":c.setHeader("replaces",p),a=c.parseHeader("replaces"),a&&(c.replaces=a);break;case"event":case"o":c.setHeader("event",p),a=c.parseHeader("event"),a&&(c.event=a);break;default:c.addHeader(n,p),a=0}return a===void 0?{error:'error parsing header "'.concat(n,'"')}:!0}function mo(c,s){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=kp(c))||s&&c&&typeof c.length=="number"){r&&(c=r);var o=0,a=function(){};return{s:a,n:function(){return o>=c.length?{done:!0}:{done:!1,value:c[o++]}},e:function(d){throw d},f:a}}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,p;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){n=!0,p=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(n)throw p}}}}function kp(c,s){if(c){if(typeof c=="string")return Dc(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 Dc(c,s)}}function Dc(c,s){(s==null||s>c.length)&&(s=c.length);for(var r=0,o=new Array(s);r<s;r++)o[r]=c[r];return o}var Lp=ft,Xf=rt,Nc=gs,Au=Rt(),Cu=new Lp("sanityCheck"),$p=[Yp],Hp=[jp,qp,Bp,Gp],Fp=[Wp,Kp],He,Zt,Qf,Vp=function(c,s,r){He=c,Zt=s,Qf=r;var o=mo($p),a;try{for(o.s();!(a=o.n()).done;){var t=a.value;if(t()===!1)return!1}}catch(E){o.e(E)}finally{o.f()}if(He instanceof Nc.IncomingRequest){var n=mo(Hp),p;try{for(n.s();!(p=n.n()).done;){var _=p.value;if(_()===!1)return!1}}catch(E){n.e(E)}finally{n.f()}}else if(He instanceof Nc.IncomingResponse){var d=mo(Fp),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 jp(){if(He.s("to").uri.scheme!=="sip")return Yi(416),!1}function qp(){if(!He.to_tag&&He.call_id.substr(0,5)===Zt.configuration.jssip_id)return Yi(482),!1}function Bp(){var c=Au.str_utf8_length(He.body),s=He.getHeader("content-length");if(c<s)return Yi(400),!1}function Gp(){var c=He.from_tag,s=He.call_id,r=He.cseq,o;if(!He.to_tag)if(He.method===Xf.INVITE){if(Zt._transactions.ist[He.via_branch])return!1;for(var a in Zt._transactions.ist)if(Object.prototype.hasOwnProperty.call(Zt._transactions.ist,a)&&(o=Zt._transactions.ist[a],o.request.from_tag===c&&o.request.call_id===s&&o.request.cseq===r))return Yi(482),!1}else{if(Zt._transactions.nist[He.via_branch])return!1;for(var t in Zt._transactions.nist)if(Object.prototype.hasOwnProperty.call(Zt._transactions.nist,t)&&(o=Zt._transactions.nist[t],o.request.from_tag===c&&o.request.call_id===s&&o.request.cseq===r))return Yi(482),!1}}function Wp(){if(He.getHeaders("via").length>1)return Cu.debug("more than one Via header field present in the response, dropping the response"),!1}function Kp(){var c=Au.str_utf8_length(He.body),s=He.getHeader("content-length");if(c<s)return Cu.debug("message body length is lower than the value in Content-Length header field, dropping the response"),!1}function Yp(){for(var c=["from","to","call_id","cseq","via"],s=0,r=c;s<r.length;s++){var o=r[s];if(!He.hasHeader(o))return Cu.debug("missing mandatory header field : ".concat(o,", dropping the response")),!1}}function Yi(c){var s=He.getHeaders("via"),r,o="SIP/2.0 ".concat(c," ").concat(Xf.REASON_PHRASE[c],`\r
65
+ `),a=mo(s),t;try{for(a.s();!(t=a.n()).done;){var n=t.value;o+="Via: ".concat(n,`\r
66
+ `)}}catch(p){a.e(p)}finally{a.f()}r=He.getHeader("To"),He.to_tag||(r+=";tag=".concat(Au.newTag())),o+="To: ".concat(r,`\r
67
67
  `),o+="From: ".concat(He.getHeader("From"),`\r
68
68
  `),o+="Call-ID: ".concat(He.call_id,`\r
69
69
  `),o+="CSeq: ".concat(He.cseq," ").concat(He.method,`\r
70
70
  `),o+=`\r
71
- `,Kf.send(o)}var yu={};function Oc(c,n){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=Bp(c))||n&&c&&typeof c.length=="number"){r&&(c=r);var o=0,a=function(){};return{s:a,n:function(){return o>=c.length?{done:!0}:{done:!1,value:c[o++]}},e:function(d){throw d},f:a}}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,s=!1,p;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){s=!0,p=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(s)throw p}}}}function Bp(c,n){if(c){if(typeof c=="string")return Dc(c,n);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 Dc(c,n)}}function Dc(c,n){(n==null||n>c.length)&&(n=c.length);for(var r=0,o=new Array(n);r<n;r++)o[r]=c[r];return o}var rr=Ct(),mn=rt,da=ns(),Nc=Fs(),pa=vu,ma=Hs;yu.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:mn.UPDATE,session_timers_force_refresher:!1,no_answer_timeout:60,register:!0,register_expires:600,registrar_server:null,sockets:null,connection_recovery_max_interval:mn.CONNECTION_RECOVERY_MAX_INTERVAL,connection_recovery_min_interval:mn.CONNECTION_RECOVERY_MIN_INTERVAL,extra_headers:null,via_host:"".concat(rr.createRandomToken(12),".invalid")};var $l={mandatory:{sockets:function(n){var r=[];if(pa.isSocket(n))r.push({socket:n});else if(Array.isArray(n)&&n.length){var o=Oc(n),a;try{for(o.s();!(a=o.n()).done;){var t=a.value;Object.prototype.hasOwnProperty.call(t,"socket")&&pa.isSocket(t.socket)?r.push(t):pa.isSocket(t)&&r.push({socket:t})}}catch(s){o.e(s)}finally{o.f()}}else return;return r},uri:function(n){/^sip:/i.test(n)||(n="".concat(mn.SIP,":").concat(n));var r=Nc.parse(n);if(r)return r.user?r:void 0}},optional:{authorization_user:function(n){if(da.parse('"'.concat(n,'"'),"quoted_string")!==-1)return n},authorization_jwt:function(n){if(typeof n=="string")return n},user_agent:function(n){if(typeof n=="string")return n},connection_recovery_max_interval:function(n){if(rr.isDecimal(n)){var r=Number(n);if(r>0)return r}},connection_recovery_min_interval:function(n){if(rr.isDecimal(n)){var r=Number(n);if(r>0)return r}},contact_uri:function(n){if(typeof n=="string"){var r=da.parse(n,"SIP_URI");if(r!==-1)return r}},display_name:function(n){return n},instance_id:function(n){if(/^uuid:/i.test(n)&&(n=n.substr(5)),da.parse(n,"uuid")!==-1)return n},no_answer_timeout:function(n){if(rr.isDecimal(n)){var r=Number(n);if(r>0)return r}},session_timers:function(n){if(typeof n=="boolean")return n},session_timers_refresh_method:function(n){if(typeof n=="string"&&(n=n.toUpperCase(),n===mn.INVITE||n===mn.UPDATE))return n},session_timers_force_refresher:function(n){if(typeof n=="boolean")return n},password:function(n){return String(n)},realm:function(n){return String(n)},ha1:function(n){return String(n)},register:function(n){if(typeof n=="boolean")return n},register_expires:function(n){if(rr.isDecimal(n)){var r=Number(n);if(r>0)return r}},registrar_server:function(n){/^sip:/i.test(n)||(n="".concat(mn.SIP,":").concat(n));var r=Nc.parse(n);if(r)return r.user?void 0:r},use_preloaded_route:function(n){if(typeof n=="boolean")return n},extra_headers:function(n){var r=[];if(Array.isArray(n)&&n.length){var o=Oc(n),a;try{for(o.s();!(a=o.n()).done;){var t=a.value;typeof t=="string"&&r.push(t)}}catch(s){o.e(s)}finally{o.f()}}else return;return r}}};yu.load=function(c,n){for(var r in $l.mandatory)if(n.hasOwnProperty(r)){var o=n[r],a=$l.mandatory[r](o);if(a!==void 0)c[r]=a;else throw new ma.ConfigurationError(r,o)}else throw new ma.ConfigurationError(r);for(var t in $l.optional)if(n.hasOwnProperty(t)){var s=n[t];if(rr.isEmpty(s))continue;var p=$l.optional[t](s);if(p!==void 0)c[t]=p;else throw new ma.ConfigurationError(t,s)}};function po(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?po=function(r){return typeof r}:po=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},po(c)}function Gp(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function Uc(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function Pc(c,n,r){return n&&Uc(c.prototype,n),r&&Uc(c,r),c}function Wp(c,n){if(typeof n!="function"&&n!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(n&&n.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),n&&lu(c,n)}function lu(c,n){return lu=Object.setPrototypeOf||function(o,a){return o.__proto__=a,o},lu(c,n)}function Kp(c){var n=zp();return function(){var o=Ro(c),a;if(n){var t=Ro(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return Yp(this,a)}}function Yp(c,n){return n&&(po(n)==="object"||typeof n=="function")?n:Yf(c)}function Yf(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function zp(){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 Ro(c){return Ro=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},Ro(c)}var Jp=ct.EventEmitter,Xp=ft,ht=rt,Qp=Hh,xc=Yd,Mc=op,kc=vp,ga=sl,Zp=Ip,Hl=Ct(),em=Hs,tm=Fs(),sm=Gf,Ta=ms,nm=kp,va=yu,Ve=new Xp("UA"),mt={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2},rm=function(c){Wp(r,c);var n=Kp(r);Pc(r,null,[{key:"C",get:function(){return mt}}]);function r(o){var a;if(Gp(this,r),Ve.debug("new() [configuration:%o]",o),a=n.call(this),a._cache={credentials:{}},a._configuration=Object.assign({},va.settings),a._dynConfiguration={},a._dialogs={},a._applicants={},a._sessions={},a._transport=null,a._contact=null,a._status=mt.STATUS_INIT,a._error=null,a._transactions={nist:{},nict:{},ist:{},ict:{}},a._data={},a._closeTimer=null,o===void 0)throw new TypeError("Not enough arguments");try{a._loadConfig(o)}catch(t){throw a._status=mt.STATUS_NOT_READY,a._error=mt.CONFIGURATION_ERROR,t}return a._registrator=new Qp(Yf(a)),a}return Pc(r,[{key:"start",value:function(){Ve.debug("start()"),this._status===mt.STATUS_INIT?this._transport.connect():this._status===mt.STATUS_USER_CLOSED?(Ve.debug("restarting UA"),this._closeTimer!==null&&(clearTimeout(this._closeTimer),this._closeTimer=null,this._transport.disconnect()),this._status=mt.STATUS_INIT,this._transport.connect()):this._status===mt.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}},{key:"register",value:function(){Ve.debug("register()"),this._dynConfiguration.register=!0,this._registrator.register()}},{key:"unregister",value:function(a){Ve.debug("unregister()"),this._dynConfiguration.register=!1,this._registrator.unregister(a)}},{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(a,t){Ve.debug("call()");var s=new xc(this);return s.connect(a,t),s}},{key:"sendMessage",value:function(a,t,s){Ve.debug("sendMessage()");var p=new Mc(this);return p.send(a,t,s),p}},{key:"sendOptions",value:function(a,t,s){Ve.debug("sendOptions()");var p=new kc(this);return p.send(a,t,s),p}},{key:"terminateSessions",value:function(a){Ve.debug("terminateSessions()");for(var t in this._sessions)this._sessions[t].isEnded()||this._sessions[t].terminate(a)}},{key:"stop",value:function(){var a=this;if(Ve.debug("stop()"),this._dynConfiguration={},this._status===mt.STATUS_USER_CLOSED){Ve.debug("UA already closed");return}this._registrator.close();var t=Object.keys(this._sessions).length;for(var s in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,s)){Ve.debug("closing session ".concat(s));try{this._sessions[s].terminate()}catch{}}for(var p in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,p))try{this._applicants[p].close()}catch{}this._status=mt.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(){a._closeTimer=null,a._transport.disconnect()},2e3)}},{key:"normalizeTarget",value:function(a){return Hl.normalizeTarget(a,this._configuration.hostport_params)}},{key:"get",value:function(a){switch(a){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',a);return}}},{key:"set",value:function(a,t){switch(a){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 Ve.warn('set() | cannot set "%s" parameter in runtime',a),!1}return!0}},{key:"newTransaction",value:function(a){this._transactions[a.type][a.id]=a,this.emit("newTransaction",{transaction:a})}},{key:"destroyTransaction",value:function(a){delete this._transactions[a.type][a.id],this.emit("transactionDestroyed",{transaction:a})}},{key:"newDialog",value:function(a){this._dialogs[a.id]=a}},{key:"destroyDialog",value:function(a){delete this._dialogs[a.id]}},{key:"newMessage",value:function(a,t){this._applicants[a]=a,this.emit("newMessage",t)}},{key:"newOptions",value:function(a,t){this._applicants[a]=a,this.emit("newOptions",t)}},{key:"destroyMessage",value:function(a){delete this._applicants[a]}},{key:"newRTCSession",value:function(a,t){this._sessions[a.id]=a,this.emit("newRTCSession",t)}},{key:"destroyRTCSession",value:function(a){delete this._sessions[a.id]}},{key:"registered",value:function(a){this.emit("registered",a)}},{key:"unregistered",value:function(a){this.emit("unregistered",a)}},{key:"registrationFailed",value:function(a){this.emit("registrationFailed",a)}},{key:"receiveRequest",value:function(a){var t=a.method;if(a.ruri.user!==this._configuration.uri.user&&a.ruri.user!==this._contact.uri.user){Ve.debug("Request-URI does not point to us"),a.method!==ht.ACK&&a.reply_sl(404);return}if(a.ruri.scheme===ht.SIPS){a.reply_sl(416);return}if(!ga.checkTransaction(this,a)){if(t===ht.INVITE?new ga.InviteServerTransaction(this,this._transport,a):t!==ht.ACK&&t!==ht.CANCEL&&new ga.NonInviteServerTransaction(this,this._transport,a),t===ht.OPTIONS){if(this.listeners("newOptions").length===0){a.reply(200);return}var s=new kc(this);s.init_incoming(a)}else if(t===ht.MESSAGE){if(this.listeners("newMessage").length===0){a.reply(405);return}var p=new Mc(this);p.init_incoming(a)}else if(t===ht.INVITE&&!a.to_tag&&this.listeners("newRTCSession").length===0){a.reply(405);return}var _,d;if(a.to_tag)_=this._findDialog(a.call_id,a.from_tag,a.to_tag),_?_.receiveRequest(a):t===ht.NOTIFY?(d=this._findSession(a),d?d.receiveRequest(a):(Ve.debug("received NOTIFY request for a non existent subscription"),a.reply(481,"Subscription does not exist"))):t!==ht.ACK&&a.reply(481);else switch(t){case ht.INVITE:if(window.RTCPeerConnection)if(a.hasHeader("replaces")){var g=a.replaces;_=this._findDialog(g.call_id,g.from_tag,g.to_tag),_?(d=_.owner,d.isEnded()?a.reply(603):d.receiveRequest(a)):a.reply(481)}else d=new xc(this),d.init_incoming(a);else Ve.warn("INVITE received but WebRTC is not supported"),a.reply(488);break;case ht.BYE:a.reply(481);break;case ht.CANCEL:d=this._findSession(a),d?d.receiveRequest(a):Ve.debug("received CANCEL request for a non existent session");break;case ht.ACK:break;case ht.NOTIFY:this.emit("sipEvent",{event:a.event,request:a}),a.reply(200);break;default:a.reply(405);break}}}},{key:"_findSession",value:function(a){var t=a.call_id,s=a.from_tag,p=a.to_tag,_=t+s,d=this._sessions[_],g=t+p,T=this._sessions[g];return d||T||null}},{key:"_findDialog",value:function(a,t,s){var p=a+t+s,_=this._dialogs[p];return _||(p=a+s+t,_=this._dialogs[p],_||null)}},{key:"_loadConfig",value:function(a){try{va.load(this._configuration,a)}catch(g){throw g}this._configuration.display_name===0&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=Hl.newUUID()),this._configuration.jssip_id=Hl.createRandomToken(5);var t=this._configuration.uri.clone();t.user=null,this._configuration.hostport_params=t.toString().replace(/^sip:/i,"");try{this._transport=new Zp(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=im.bind(this),this._transport.onconnect=lm.bind(this),this._transport.ondisconnect=om.bind(this),this._transport.ondata=am.bind(this)}catch(g){throw Ve.warn(g),new em.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 s=this._configuration.uri.clone();s.user=null,s.clearParams(),s.clearHeaders(),this._configuration.registrar_server=s}this._configuration.no_answer_timeout*=1e3,this._configuration.contact_uri?this._configuration.via_host=this._configuration.contact_uri.host:this._configuration.contact_uri=new tm("sip",Hl.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 p=["authorization_user","password","realm","ha1","authorization_jwt","display_name","register"];for(var _ in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,_)&&(p.indexOf(_)!==-1?Object.defineProperty(this._configuration,_,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,_,{writable:!1,configurable:!1}));Ve.debug("configuration parameters after validation:");for(var d in this._configuration)if(Object.prototype.hasOwnProperty.call(va.settings,d))switch(d){case"uri":case"registrar_server":Ve.debug("- ".concat(d,": ").concat(this._configuration[d]));break;case"password":case"ha1":case"authorization_jwt":Ve.debug("- ".concat(d,": NOT SHOWN"));break;default:Ve.debug("- ".concat(d,": ").concat(JSON.stringify(this._configuration[d])))}}},{key:"C",get:function(){return mt}},{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}(Jp);function im(c){this.emit("connecting",c)}function lm(c){this._status!==mt.STATUS_USER_CLOSED&&(this._status=mt.STATUS_READY,this._error=null,this.emit("connected",c),this._dynConfiguration.register&&this._registrator.register())}function om(c){for(var n=["nict","ict","nist","ist"],r=0,o=n;r<o.length;r++){var a=o[r];for(var t in this._transactions[a])Object.prototype.hasOwnProperty.call(this._transactions[a],t)&&this._transactions[a][t].onTransportError()}this.emit("disconnected",c),this._registrator.onTransportClosed(),this._status!==mt.STATUS_USER_CLOSED&&(this._status=mt.STATUS_NOT_READY,this._error=mt.NETWORK_ERROR)}function am(c){var n=c.transport,r=c.message;if(r=sm.parseMessage(r,this),!!r&&!(this._status===mt.STATUS_USER_CLOSED&&r instanceof Ta.IncomingRequest)&&nm(r,this,n)){if(r instanceof Ta.IncomingRequest)r.transport=n,this.receiveRequest(r);else if(r instanceof Ta.IncomingResponse){var o;switch(r.method){case ht.INVITE:o=this._transactions.ict[r.via_branch],o&&o.receiveResponse(r);break;case ht.ACK:break;default:o=this._transactions.nict[r.via_branch],o&&o.receiveResponse(r);break}}}}function um(c,n){if(!(c instanceof n))throw new TypeError("Cannot call a class as a function")}function Lc(c,n){for(var r=0;r<n.length;r++){var o=n[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function cm(c,n,r){return n&&Lc(c.prototype,n),r&&Lc(c,r),c}var fm=ft,_m=ns(),It=new fm("WebSocketInterface"),hm=function(){function c(n){um(this,c),It.debug('new() [url:"%s"]',n),this._url=n,this._sip_uri=null,this._via_transport=null,this._ws=null;var r=_m.parse(n,"absoluteURI");if(r===-1)throw It.warn("invalid WebSocket URI: ".concat(n)),new TypeError("Invalid argument: ".concat(n));if(r.scheme!=="wss"&&r.scheme!=="ws")throw It.warn("invalid WebSocket URI scheme: ".concat(r.scheme)),new TypeError("Invalid argument: ".concat(n));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(It.debug("connect()"),this.isConnected()){It.debug("WebSocket ".concat(this._url," is already connected"));return}else if(this.isConnecting()){It.debug("WebSocket ".concat(this._url," is connecting"));return}this._ws&&this.disconnect(),It.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(){It.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 It.debug("send()"),this.isConnected()?(this._ws.send(r),!0):(It.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(){It.debug("WebSocket ".concat(this._url," connected")),this.onconnect()}},{key:"_onClose",value:function(r){var o=r.wasClean,a=r.code,t=r.reason;It.debug("WebSocket ".concat(this._url," closed")),o===!1&&It.debug("WebSocket abrupt disconnection"),this.ondisconnect(!o,a,t)}},{key:"_onMessage",value:function(r){var o=r.data;It.debug("received WebSocket message"),this.ondata(o)}},{key:"_onError",value:function(r){It.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}(),ou=bo,dm=rt,pm=Hs,mm=Ct(),gm=rm,Tm=Fs(),vm=du(),Em=ns(),Sm=hm,ym=ur("JsSIP");ym("version %s",ou.version);var $c={C:dm,Exceptions:pm,Utils:mm,UA:gm,URI:Tm,NameAddrHeader:vm,WebSocketInterface:Sm,Grammar:Em,debug:ur,get name(){return ou.title},get version(){return ou.version}};const tr=ur,sr="JsSIP";var at=class{constructor(n){n?(this._debug=tr.default(`${sr}:${n}`),this._warn=tr.default(`${sr}:WARN:${n}`),this._error=tr.default(`${sr}:ERROR:${n}`)):(this._debug=tr.default(sr),this._warn=tr.default(`${sr}:WARN`),this._error=tr.default(`${sr}: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 zf=ot(at),Hc=bo;var Ue={USER_AGENT:`${Hc.title} ${Hc.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 G=ot(Ue);var Ze={},Ea,Fc;function Au(){if(Fc)return Ea;Fc=1;const c=gs(),n=rs();return Ea=class Jf{static parse(o){if(o=n.parse(o,"Name_Addr_Header"),o!==-1)return o}constructor(o,a,t){if(!o||!(o instanceof c))throw new TypeError('missing or invalid "uri" parameter');this._uri=o,this._parameters={},this.display_name=a;for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&this.setParam(s,t[s])}get uri(){return this._uri}get display_name(){return this._display_name}set display_name(o){this._display_name=o===0?"0":o}setParam(o,a){o&&(this._parameters[o.toLowerCase()]=typeof a>"u"||a===null?null:a.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 a=this._parameters[o];return delete this._parameters[o],a}}clearParams(){this._parameters={}}clone(){return new Jf(this._uri.clone(),this._display_name,JSON.parse(JSON.stringify(this._parameters)))}_quote(o){return o.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}toString(){let o=this._display_name?`"${this._quote(this._display_name)}" `:"";o+=`<${this._uri.toString()}>`;for(const a in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,a)&&(o+=`;${a}`,this._parameters[a]!==null&&(o+=`=${this._parameters[a]}`));return o}},Ea}var Sa,Vc;function rs(){return Vc||(Vc=1,Sa=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 n={parse:function(r,o){var a={CRLF:d,DIGIT:g,ALPHA:T,HEXDIG:E,WSP:y,OCTET:A,DQUOTE:R,SP:I,HTAB:$,alphanum:L,reserved:ae,unreserved:N,mark:F,escaped:Se,LWS:ve,SWS:M,HCOLON:D,TEXT_UTF8_TRIM:q,TEXT_UTF8char:j,UTF8_NONASCII:z,UTF8_CONT:H,LHEX:J,token:U,token_nodot:P,separators:se,word:et,STAR:ee,SLASH:W,EQUAL:B,LPAREN:re,RPAREN:ge,RAQUOT:be,LAQUOT:xe,COMMA:Ce,SEMI:le,COLON:ye,LDQUOT:tt,RDQUOT:it,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:De,uri_scheme_sips:Xe,uri_scheme_sip:Le,userinfo:Mt,user:_t,user_unreserved:Sn,password:yn,hostport:Vs,host:Yt,hostname:is,domainlabel:js,toplabel:An,IPv6reference:Cn,IPv6address:qs,h16:me,ls32:oe,IPv4address:lt,dec_octet:Bt,port:vs,uri_parameters:_r,uri_parameter:Rn,transport_param:In,user_param:hr,method_param:dr,ttl_param:pr,maddr_param:mr,lr_param:gr,other_param:Tr,pname:vr,pvalue:Er,paramchar:Es,param_unreserved:Ss,headers:Sr,header:Bs,hname:Gs,hvalue:yr,hnv_unreserved:ys,Request_Response:Ws,Request_Line:ol,Request_URI:Ar,absoluteURI:bn,hier_part:wn,net_path:Cr,abs_path:Ks,opaque_part:Ys,uric:As,uric_no_slash:Cs,path_segments:Rr,segment:zs,param:Rs,pchar:ls,scheme:Is,authority:Ir,srvr:br,reg_name:wr,query:Or,SIP_Version:On,INVITEm:Dn,ACKm:Dr,OPTIONSm:Nr,BYEm:Ur,CANCELm:Pr,REGISTERm:xr,SUBSCRIBEm:Mr,NOTIFYm:kr,REFERm:Lr,Method:Js,Status_Line:Xs,Status_Code:$r,extension_code:Hr,Reason_Phrase:Fr,Allow_Events:al,Call_ID:Mo,Contact:ko,contact_param:Nn,name_addr:kt,display_name:Lt,contact_params:bs,c_p_q:Un,c_p_expires:Vr,delta_seconds:zt,qvalue:Jt,generic_param:Ge,gen_value:We,Content_Disposition:ul,disp_type:cl,disp_param:Pn,handling_param:xn,Content_Encoding:fl,Content_Length:Lo,Content_Type:$o,media_type:_l,m_type:jr,discrete_type:qr,composite_type:Br,extension_token:Qs,x_token:Zs,m_subtype:Gr,m_parameter:Mn,m_value:kn,CSeq:hl,CSeq_value:dl,Expires:pl,Event:Ho,event_type:en,From:tn,from_param:Wr,tag_param:sn,Max_Forwards:Kr,Min_Expires:Fo,Name_Addr_Header:Vo,Proxy_Authenticate:jo,challenge:Yr,other_challenge:Ln,auth_param:ws,digest_cln:Xt,realm:nn,realm_value:zr,domain:Jr,URI:rn,nonce:ln,nonce_value:Xr,opaque:Qr,stale:Zr,algorithm:ei,qop_options:ti,qop_value:on,Proxy_Require:$n,Record_Route:qo,rec_route:Hn,Reason:Fn,reason_param:si,reason_cause:Vn,Require:ml,Route:Bo,route_param:jn,Subscription_State:qn,substate_value:gl,subexp_params:Bn,event_reason_value:Gn,Subject:Tl,Supported:Go,To:Wo,to_param:ni,Via:ri,via_param:Wn,via_params:Os,via_ttl:Kn,via_maddr:ii,via_received:li,via_branch:oi,response_port:ai,rport:ui,sent_protocol:ci,protocol_name:fi,transport:_i,sent_by:hi,via_host:di,via_port:pi,ttl:Yn,WWW_Authenticate:mi,Session_Expires:Ko,s_e_expires:vl,s_e_params:zn,s_e_refresher:Jn,extension_header:El,header_value:Sl,message_body:yl,uuid_URI:Yo,uuid:Al,hex4:$t,hex8:Ht,hex12:gi,Refer_To:Cl,Replaces:zo,call_id:Rl,replaces_param:Xn,to_tag:Qn,from_tag:Ti,early_flag:vi};if(o!==void 0){if(a[o]===void 0)throw new Error("Invalid rule name: "+c(o)+".")}else o="CRLF";var t=0,s=0,p=[];function _(i){t<s||(t>s&&(s=t,p=[]),p.push(i))}function d(){var i;return r.substr(t,2)===`\r
71
+ `,Qf.send(o)}var Ru={};function Uc(c,s){var r;if(typeof Symbol>"u"||c[Symbol.iterator]==null){if(Array.isArray(c)||(r=zp(c))||s&&c&&typeof c.length=="number"){r&&(c=r);var o=0,a=function(){};return{s:a,n:function(){return o>=c.length?{done:!0}:{done:!1,value:c[o++]}},e:function(d){throw d},f:a}}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,p;return{s:function(){r=c[Symbol.iterator]()},n:function(){var d=r.next();return t=d.done,d},e:function(d){n=!0,p=d},f:function(){try{!t&&r.return!=null&&r.return()}finally{if(n)throw p}}}}function zp(c,s){if(c){if(typeof c=="string")return Pc(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 Pc(c,s)}}function Pc(c,s){(s==null||s>c.length)&&(s=c.length);for(var r=0,o=new Array(s);r<s;r++)o[r]=c[r];return o}var ir=Rt(),gn=rt,ma=rs(),xc=Vs(),ga=yu,Ta=Fs;Ru.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:gn.UPDATE,session_timers_force_refresher:!1,no_answer_timeout:60,register:!0,register_expires:600,registrar_server:null,sockets:null,connection_recovery_max_interval:gn.CONNECTION_RECOVERY_MAX_INTERVAL,connection_recovery_min_interval:gn.CONNECTION_RECOVERY_MIN_INTERVAL,extra_headers:null,via_host:"".concat(ir.createRandomToken(12),".invalid")};var Hl={mandatory:{sockets:function(s){var r=[];if(ga.isSocket(s))r.push({socket:s});else if(Array.isArray(s)&&s.length){var o=Uc(s),a;try{for(o.s();!(a=o.n()).done;){var t=a.value;Object.prototype.hasOwnProperty.call(t,"socket")&&ga.isSocket(t.socket)?r.push(t):ga.isSocket(t)&&r.push({socket:t})}}catch(n){o.e(n)}finally{o.f()}}else return;return r},uri:function(s){/^sip:/i.test(s)||(s="".concat(gn.SIP,":").concat(s));var r=xc.parse(s);if(r)return r.user?r:void 0}},optional:{authorization_user:function(s){if(ma.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(ir.isDecimal(s)){var r=Number(s);if(r>0)return r}},connection_recovery_min_interval:function(s){if(ir.isDecimal(s)){var r=Number(s);if(r>0)return r}},contact_uri:function(s){if(typeof s=="string"){var r=ma.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)),ma.parse(s,"uuid")!==-1)return s},no_answer_timeout:function(s){if(ir.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===gn.INVITE||s===gn.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(ir.isDecimal(s)){var r=Number(s);if(r>0)return r}},registrar_server:function(s){/^sip:/i.test(s)||(s="".concat(gn.SIP,":").concat(s));var r=xc.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 o=Uc(s),a;try{for(o.s();!(a=o.n()).done;){var t=a.value;typeof t=="string"&&r.push(t)}}catch(n){o.e(n)}finally{o.f()}}else return;return r}}};Ru.load=function(c,s){for(var r in Hl.mandatory)if(s.hasOwnProperty(r)){var o=s[r],a=Hl.mandatory[r](o);if(a!==void 0)c[r]=a;else throw new Ta.ConfigurationError(r,o)}else throw new Ta.ConfigurationError(r);for(var t in Hl.optional)if(s.hasOwnProperty(t)){var n=s[t];if(ir.isEmpty(n))continue;var p=Hl.optional[t](n);if(p!==void 0)c[t]=p;else throw new Ta.ConfigurationError(t,n)}};function go(c){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?go=function(r){return typeof r}:go=function(r){return r&&typeof Symbol=="function"&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},go(c)}function Jp(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 o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function kc(c,s,r){return s&&Mc(c.prototype,s),r&&Mc(c,r),c}function Xp(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(o,a){return o.__proto__=a,o},uu(c,s)}function Qp(c){var s=em();return function(){var o=bo(c),a;if(s){var t=bo(this).constructor;a=Reflect.construct(o,arguments,t)}else a=o.apply(this,arguments);return Zp(this,a)}}function Zp(c,s){return s&&(go(s)==="object"||typeof s=="function")?s:Zf(c)}function Zf(c){if(c===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return c}function em(){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 bo(c){return bo=Object.setPrototypeOf?Object.getPrototypeOf:function(r){return r.__proto__||Object.getPrototypeOf(r)},bo(c)}var tm=ct.EventEmitter,sm=ft,dt=rt,nm=Bh,Lc=Zd,$c=_p,Hc=Cp,va=nl,rm=Np,Fl=Rt(),im=Fs,lm=Vs(),om=Jf,Ea=gs,am=Vp,Sa=Ru,Ve=new sm("UA"),gt={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2},um=function(c){Xp(r,c);var s=Qp(r);kc(r,null,[{key:"C",get:function(){return gt}}]);function r(o){var a;if(Jp(this,r),Ve.debug("new() [configuration:%o]",o),a=s.call(this),a._cache={credentials:{}},a._configuration=Object.assign({},Sa.settings),a._dynConfiguration={},a._dialogs={},a._applicants={},a._sessions={},a._transport=null,a._contact=null,a._status=gt.STATUS_INIT,a._error=null,a._transactions={nist:{},nict:{},ist:{},ict:{}},a._data={},a._closeTimer=null,o===void 0)throw new TypeError("Not enough arguments");try{a._loadConfig(o)}catch(t){throw a._status=gt.STATUS_NOT_READY,a._error=gt.CONFIGURATION_ERROR,t}return a._registrator=new nm(Zf(a)),a}return kc(r,[{key:"start",value:function(){Ve.debug("start()"),this._status===gt.STATUS_INIT?this._transport.connect():this._status===gt.STATUS_USER_CLOSED?(Ve.debug("restarting UA"),this._closeTimer!==null&&(clearTimeout(this._closeTimer),this._closeTimer=null,this._transport.disconnect()),this._status=gt.STATUS_INIT,this._transport.connect()):this._status===gt.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}},{key:"register",value:function(){Ve.debug("register()"),this._dynConfiguration.register=!0,this._registrator.register()}},{key:"unregister",value:function(a){Ve.debug("unregister()"),this._dynConfiguration.register=!1,this._registrator.unregister(a)}},{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(a,t){Ve.debug("call()");var n=new Lc(this);return n.connect(a,t),n}},{key:"sendMessage",value:function(a,t,n){Ve.debug("sendMessage()");var p=new $c(this);return p.send(a,t,n),p}},{key:"sendOptions",value:function(a,t,n){Ve.debug("sendOptions()");var p=new Hc(this);return p.send(a,t,n),p}},{key:"terminateSessions",value:function(a){Ve.debug("terminateSessions()");for(var t in this._sessions)this._sessions[t].isEnded()||this._sessions[t].terminate(a)}},{key:"stop",value:function(){var a=this;if(Ve.debug("stop()"),this._dynConfiguration={},this._status===gt.STATUS_USER_CLOSED){Ve.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)){Ve.debug("closing session ".concat(n));try{this._sessions[n].terminate()}catch{}}for(var p in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,p))try{this._applicants[p].close()}catch{}this._status=gt.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(){a._closeTimer=null,a._transport.disconnect()},2e3)}},{key:"normalizeTarget",value:function(a){return Fl.normalizeTarget(a,this._configuration.hostport_params)}},{key:"get",value:function(a){switch(a){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',a);return}}},{key:"set",value:function(a,t){switch(a){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 Ve.warn('set() | cannot set "%s" parameter in runtime',a),!1}return!0}},{key:"newTransaction",value:function(a){this._transactions[a.type][a.id]=a,this.emit("newTransaction",{transaction:a})}},{key:"destroyTransaction",value:function(a){delete this._transactions[a.type][a.id],this.emit("transactionDestroyed",{transaction:a})}},{key:"newDialog",value:function(a){this._dialogs[a.id]=a}},{key:"destroyDialog",value:function(a){delete this._dialogs[a.id]}},{key:"newMessage",value:function(a,t){this._applicants[a]=a,this.emit("newMessage",t)}},{key:"newOptions",value:function(a,t){this._applicants[a]=a,this.emit("newOptions",t)}},{key:"destroyMessage",value:function(a){delete this._applicants[a]}},{key:"newRTCSession",value:function(a,t){this._sessions[a.id]=a,this.emit("newRTCSession",t)}},{key:"destroyRTCSession",value:function(a){delete this._sessions[a.id]}},{key:"registered",value:function(a){this.emit("registered",a)}},{key:"unregistered",value:function(a){this.emit("unregistered",a)}},{key:"registrationFailed",value:function(a){this.emit("registrationFailed",a)}},{key:"receiveRequest",value:function(a){var t=a.method;if(a.ruri.user!==this._configuration.uri.user&&a.ruri.user!==this._contact.uri.user){Ve.debug("Request-URI does not point to us"),a.method!==dt.ACK&&a.reply_sl(404);return}if(a.ruri.scheme===dt.SIPS){a.reply_sl(416);return}if(!va.checkTransaction(this,a)){if(t===dt.INVITE?new va.InviteServerTransaction(this,this._transport,a):t!==dt.ACK&&t!==dt.CANCEL&&new va.NonInviteServerTransaction(this,this._transport,a),t===dt.OPTIONS){if(this.listeners("newOptions").length===0){a.reply(200);return}var n=new Hc(this);n.init_incoming(a)}else if(t===dt.MESSAGE){if(this.listeners("newMessage").length===0){a.reply(405);return}var p=new $c(this);p.init_incoming(a)}else if(t===dt.INVITE&&!a.to_tag&&this.listeners("newRTCSession").length===0){a.reply(405);return}var _,d;if(a.to_tag)_=this._findDialog(a.call_id,a.from_tag,a.to_tag),_?_.receiveRequest(a):t===dt.NOTIFY?(d=this._findSession(a),d?d.receiveRequest(a):(Ve.debug("received NOTIFY request for a non existent subscription"),a.reply(481,"Subscription does not exist"))):t!==dt.ACK&&a.reply(481);else switch(t){case dt.INVITE:if(window.RTCPeerConnection)if(a.hasHeader("replaces")){var g=a.replaces;_=this._findDialog(g.call_id,g.from_tag,g.to_tag),_?(d=_.owner,d.isEnded()?a.reply(603):d.receiveRequest(a)):a.reply(481)}else d=new Lc(this),d.init_incoming(a);else Ve.warn("INVITE received but WebRTC is not supported"),a.reply(488);break;case dt.BYE:a.reply(481);break;case dt.CANCEL:d=this._findSession(a),d?d.receiveRequest(a):Ve.debug("received CANCEL request for a non existent session");break;case dt.ACK:break;case dt.NOTIFY:this.emit("sipEvent",{event:a.event,request:a}),a.reply(200);break;default:a.reply(405);break}}}},{key:"_findSession",value:function(a){var t=a.call_id,n=a.from_tag,p=a.to_tag,_=t+n,d=this._sessions[_],g=t+p,T=this._sessions[g];return d||T||null}},{key:"_findDialog",value:function(a,t,n){var p=a+t+n,_=this._dialogs[p];return _||(p=a+n+t,_=this._dialogs[p],_||null)}},{key:"_loadConfig",value:function(a){try{Sa.load(this._configuration,a)}catch(g){throw g}this._configuration.display_name===0&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=Fl.newUUID()),this._configuration.jssip_id=Fl.createRandomToken(5);var t=this._configuration.uri.clone();t.user=null,this._configuration.hostport_params=t.toString().replace(/^sip:/i,"");try{this._transport=new rm(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=cm.bind(this),this._transport.onconnect=fm.bind(this),this._transport.ondisconnect=_m.bind(this),this._transport.ondata=hm.bind(this)}catch(g){throw Ve.warn(g),new im.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 lm("sip",Fl.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 p=["authorization_user","password","realm","ha1","authorization_jwt","display_name","register"];for(var _ in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,_)&&(p.indexOf(_)!==-1?Object.defineProperty(this._configuration,_,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,_,{writable:!1,configurable:!1}));Ve.debug("configuration parameters after validation:");for(var d in this._configuration)if(Object.prototype.hasOwnProperty.call(Sa.settings,d))switch(d){case"uri":case"registrar_server":Ve.debug("- ".concat(d,": ").concat(this._configuration[d]));break;case"password":case"ha1":case"authorization_jwt":Ve.debug("- ".concat(d,": NOT SHOWN"));break;default:Ve.debug("- ".concat(d,": ").concat(JSON.stringify(this._configuration[d])))}}},{key:"C",get:function(){return gt}},{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}(tm);function cm(c){this.emit("connecting",c)}function fm(c){this._status!==gt.STATUS_USER_CLOSED&&(this._status=gt.STATUS_READY,this._error=null,this.emit("connected",c),this._dynConfiguration.register&&this._registrator.register())}function _m(c){for(var s=["nict","ict","nist","ist"],r=0,o=s;r<o.length;r++){var a=o[r];for(var t in this._transactions[a])Object.prototype.hasOwnProperty.call(this._transactions[a],t)&&this._transactions[a][t].onTransportError()}this.emit("disconnected",c),this._registrator.onTransportClosed(),this._status!==gt.STATUS_USER_CLOSED&&(this._status=gt.STATUS_NOT_READY,this._error=gt.NETWORK_ERROR)}function hm(c){var s=c.transport,r=c.message;if(r=om.parseMessage(r,this),!!r&&!(this._status===gt.STATUS_USER_CLOSED&&r instanceof Ea.IncomingRequest)&&am(r,this,s)){if(r instanceof Ea.IncomingRequest)r.transport=s,this.receiveRequest(r);else if(r instanceof Ea.IncomingResponse){var o;switch(r.method){case dt.INVITE:o=this._transactions.ict[r.via_branch],o&&o.receiveResponse(r);break;case dt.ACK:break;default:o=this._transactions.nict[r.via_branch],o&&o.receiveResponse(r);break}}}}function dm(c,s){if(!(c instanceof s))throw new TypeError("Cannot call a class as a function")}function Fc(c,s){for(var r=0;r<s.length;r++){var o=s[r];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(c,o.key,o)}}function pm(c,s,r){return s&&Fc(c.prototype,s),r&&Fc(c,r),c}var mm=ft,gm=rs(),bt=new mm("WebSocketInterface"),Tm=function(){function c(s){dm(this,c),bt.debug('new() [url:"%s"]',s),this._url=s,this._sip_uri=null,this._via_transport=null,this._ws=null;var r=gm.parse(s,"absoluteURI");if(r===-1)throw bt.warn("invalid WebSocket URI: ".concat(s)),new TypeError("Invalid argument: ".concat(s));if(r.scheme!=="wss"&&r.scheme!=="ws")throw bt.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 pm(c,[{key:"connect",value:function(){if(bt.debug("connect()"),this.isConnected()){bt.debug("WebSocket ".concat(this._url," is already connected"));return}else if(this.isConnecting()){bt.debug("WebSocket ".concat(this._url," is connecting"));return}this._ws&&this.disconnect(),bt.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(){bt.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 bt.debug("send()"),this.isConnected()?(this._ws.send(r),!0):(bt.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(){bt.debug("WebSocket ".concat(this._url," connected")),this.onconnect()}},{key:"_onClose",value:function(r){var o=r.wasClean,a=r.code,t=r.reason;bt.debug("WebSocket ".concat(this._url," closed")),o===!1&&bt.debug("WebSocket abrupt disconnection"),this.ondisconnect(!o,a,t)}},{key:"_onMessage",value:function(r){var o=r.data;bt.debug("received WebSocket message"),this.ondata(o)}},{key:"_onError",value:function(r){bt.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}(),cu=Oo,vm=rt,Em=Fs,Sm=Rt(),ym=um,Am=Vs(),Cm=gu(),Rm=rs(),Im=Tm,bm=cr("JsSIP");bm("version %s",cu.version);var Vc={C:vm,Exceptions:Em,Utils:Sm,UA:ym,URI:Am,NameAddrHeader:Cm,WebSocketInterface:Im,Grammar:Rm,debug:cr,get name(){return cu.title},get version(){return cu.version}};const sr=cr,nr="JsSIP";var at=class{constructor(s){s?(this._debug=sr.default(`${nr}:${s}`),this._warn=sr.default(`${nr}:WARN:${s}`),this._error=sr.default(`${nr}:ERROR:${s}`)):(this._debug=sr.default(nr),this._warn=sr.default(`${nr}:WARN`),this._error=sr.default(`${nr}: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 e_=ot(at),jc=Oo;var Ue={USER_AGENT:`${jc.title} ${jc.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 q=ot(Ue);var Ze={},ya,qc;function Iu(){if(qc)return ya;qc=1;const c=Ts(),s=is();return ya=class t_{static parse(o){if(o=s.parse(o,"Name_Addr_Header"),o!==-1)return o}constructor(o,a,t){if(!o||!(o instanceof c))throw new TypeError('missing or invalid "uri" parameter');this._uri=o,this._parameters={},this.display_name=a;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(o){this._display_name=o===0?"0":o}setParam(o,a){o&&(this._parameters[o.toLowerCase()]=typeof a>"u"||a===null?null:a.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 a=this._parameters[o];return delete this._parameters[o],a}}clearParams(){this._parameters={}}clone(){return new t_(this._uri.clone(),this._display_name,JSON.parse(JSON.stringify(this._parameters)))}_quote(o){return o.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}toString(){let o=this._display_name?`"${this._quote(this._display_name)}" `:"";o+=`<${this._uri.toString()}>`;for(const a in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,a)&&(o+=`;${a}`,this._parameters[a]!==null&&(o+=`=${this._parameters[a]}`));return o}},ya}var Aa,Bc;function is(){return Bc||(Bc=1,Aa=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,o){var a={CRLF:d,DIGIT:g,ALPHA:T,HEXDIG:E,WSP:y,OCTET:A,DQUOTE:R,SP:I,HTAB:$,alphanum:L,reserved:ae,unreserved:N,mark:F,escaped:Se,LWS:ve,SWS:M,HCOLON:D,TEXT_UTF8_TRIM:B,TEXT_UTF8char:j,UTF8_NONASCII:z,UTF8_CONT:H,LHEX:X,token:U,token_nodot:P,separators:se,word:et,STAR:ee,SLASH:W,EQUAL:G,LPAREN:re,RPAREN:ge,RAQUOT:be,LAQUOT:xe,COMMA:Ce,SEMI:le,COLON:ye,LDQUOT:tt,RDQUOT:it,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:De,uri_scheme_sips:Xe,uri_scheme_sip:Le,userinfo:kt,user:_t,user_unreserved:yn,password:An,hostport:js,host:zt,hostname:ls,domainlabel:qs,toplabel:Cn,IPv6reference:Rn,IPv6address:Bs,h16:me,ls32:oe,IPv4address:lt,dec_octet:Gt,port:Es,uri_parameters:hr,uri_parameter:In,transport_param:bn,user_param:dr,method_param:pr,ttl_param:mr,maddr_param:gr,lr_param:Tr,other_param:vr,pname:Er,pvalue:Sr,paramchar:Ss,param_unreserved:ys,headers:yr,header:Gs,hname:Ws,hvalue:Ar,hnv_unreserved:As,Request_Response:Ks,Request_Line:al,Request_URI:Cr,absoluteURI:wn,hier_part:On,net_path:Rr,abs_path:Ys,opaque_part:zs,uric:Cs,uric_no_slash:Rs,path_segments:Ir,segment:Js,param:Is,pchar:os,scheme:bs,authority:br,srvr:wr,reg_name:Or,query:Dr,SIP_Version:Dn,INVITEm:Nn,ACKm:Nr,OPTIONSm:Ur,BYEm:Pr,CANCELm:xr,REGISTERm:Mr,SUBSCRIBEm:kr,NOTIFYm:Lr,REFERm:$r,Method:Xs,Status_Line:Qs,Status_Code:Hr,extension_code:Fr,Reason_Phrase:Vr,Allow_Events:ul,Call_ID:Lo,Contact:$o,contact_param:Un,name_addr:Lt,display_name:$t,contact_params:ws,c_p_q:Pn,c_p_expires:jr,delta_seconds:Jt,qvalue:Xt,generic_param:Ge,gen_value:We,Content_Disposition:cl,disp_type:fl,disp_param:xn,handling_param:Mn,Content_Encoding:_l,Content_Length:Ho,Content_Type:Fo,media_type:hl,m_type:qr,discrete_type:Br,composite_type:Gr,extension_token:Zs,x_token:en,m_subtype:Wr,m_parameter:kn,m_value:Ln,CSeq:dl,CSeq_value:pl,Expires:ml,Event:Vo,event_type:tn,From:sn,from_param:Kr,tag_param:nn,Max_Forwards:Yr,Min_Expires:jo,Name_Addr_Header:qo,Proxy_Authenticate:Bo,challenge:zr,other_challenge:$n,auth_param:Os,digest_cln:Qt,realm:rn,realm_value:Jr,domain:Xr,URI:ln,nonce:on,nonce_value:Qr,opaque:Zr,stale:ei,algorithm:ti,qop_options:si,qop_value:an,Proxy_Require:Hn,Record_Route:Go,rec_route:Fn,Reason:Vn,reason_param:ni,reason_cause:jn,Require:gl,Route:Wo,route_param:qn,Subscription_State:Bn,substate_value:Tl,subexp_params:Gn,event_reason_value:Wn,Subject:vl,Supported:Ko,To:Yo,to_param:ri,Via:ii,via_param:Kn,via_params:Ds,via_ttl:Yn,via_maddr:li,via_received:oi,via_branch:ai,response_port:ui,rport:ci,sent_protocol:fi,protocol_name:_i,transport:hi,sent_by:di,via_host:pi,via_port:mi,ttl:zn,WWW_Authenticate:gi,Session_Expires:zo,s_e_expires:El,s_e_params:Jn,s_e_refresher:Xn,extension_header:Sl,header_value:yl,message_body:Al,uuid_URI:Jo,uuid:Cl,hex4:Ht,hex8:Ft,hex12:Ti,Refer_To:Rl,Replaces:Xo,call_id:Il,replaces_param:Qn,to_tag:Zn,from_tag:vi,early_flag:Ei};if(o!==void 0){if(a[o]===void 0)throw new Error("Invalid rule name: "+c(o)+".")}else o="CRLF";var t=0,n=0,p=[];function _(i){t<n||(t>n&&(n=t,p=[]),p.push(i))}function d(){var i;return r.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=$()),i}function A(){var i;return/^[\0-\xFF]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[\\0-\\xFF]")),i}function R(){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 $(){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 ae(){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=F()),i}function F(){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(h,m){return m.join("")}(u,i)),i===null&&(t=u),i}function ve(){var i,e,l,u,f,h;for(u=t,f=t,h=t,i=[],e=y();e!==null;)i.push(e),e=y();if(i!==null?(e=d(),e!==null?i=[i,e]:(i=null,t=h)):(i=null,t=h),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=$());e!==null;)i.push(e),e=I(),e===null&&(e=$());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(h){return":"}()),i===null&&(t=u),i}function q(){var i,e,l,u,f,h,m;if(f=t,h=t,e=j(),e!==null)for(i=[];e!==null;)i.push(e),e=j();else i=null;if(i!==null){for(e=[],m=t,l=[],u=ve();u!==null;)l.push(u),u=ve();for(l!==null?(u=j(),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=j(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m)}e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;return i!==null&&(i=function(v){return r.substring(t,v)}(f)),i===null&&(t=f),i}function j(){var i;return/^[!-~]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[!-~]")),i===null&&(i=z()),i}function z(){var i;return/^[\x80-\uFFFF]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[\\x80-\\uFFFF]")),i}function H(){var i;return/^[\x80-\xBF]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[\\x80-\\xBF]")),i}function J(){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=R(),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=$())))))))))))))))))),i}function et(){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=R(),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=R(),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(h){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(h){return"/"}()),i===null&&(t=u),i}function B(){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(h){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(h){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(h){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(h){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(h){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(h){return":"}()),i===null&&(t=u),i}function tt(){var i,e,l,u;return l=t,u=t,i=M(),i!==null?(e=R(),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 it(){var i,e,l,u;return l=t,u=t,i=R(),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=z(),i===null&&(i=ve())))),i}function Ie(){var i,e,l,u,f,h;if(f=t,h=t,i=M(),i!==null)if(e=R(),e!==null){for(l=[],u=pe(),u===null&&(u=ue());u!==null;)l.push(u),u=pe(),u===null&&(u=ue());l!==null?(u=R(),u!==null?i=[i,e,l,u]:(i=null,t=h)):(i=null,t=h)}else i=null,t=h;else i=null,t=h;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,h;if(f=t,h=t,i=M(),i!==null)if(e=R(),e!==null){for(l=[],u=pe(),u===null&&(u=ue());u!==null;)l.push(u),u=pe(),u===null&&(u=ue());l!==null?(u=R(),u!==null?i=[i,e,l,u]:(i=null,t=h)):(i=null,t=h)}else i=null,t=h;else i=null,t=h;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=z())))),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,h;return f=t,h=t,i=De(),i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=Mt(),l=l!==null?l:"",l!==null?(u=Vs(),u!==null?i=[i,e,l,u]:(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h),i!==null&&(i=function(m){try{b.uri=new bl(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,h,m,v;return m=t,v=t,i=De(),i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=Mt(),l=l!==null?l:"",l!==null?(u=Vs(),u!==null?(f=_r(),f!==null?(h=Sr(),h=h!==null?h:"",h!==null?i=[i,e,l,u,f,h]:(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 bl(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,o==="SIP_URI"&&(b=b.uri)}catch{b=-1}}()),i===null&&(t=m),i}function De(){var i;return i=Xe(),i===null&&(i=Le()),i}function Xe(){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 Mt(){var i,e,l,u,f,h;return u=t,f=t,i=_t(),i!==null?(h=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=yn(),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h),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 _t(){var i,e;if(e=N(),e===null&&(e=Se(),e===null&&(e=Sn())),e!==null)for(i=[];e!==null;)i.push(e),e=N(),e===null&&(e=Se(),e===null&&(e=Sn()));else i=null;return i}function Sn(){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 yn(){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 Vs(){var i,e,l,u,f;return u=t,i=Yt(),i!==null?(f=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=vs(),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 Yt(){var i,e;return e=t,i=is(),i===null&&(i=lt(),i===null&&(i=Cn())),i!==null&&(i=function(l){return b.host=r.substring(t,l).toLowerCase(),b.host}(e)),i===null&&(t=e),i}function is(){var i,e,l,u,f,h;for(u=t,f=t,i=[],h=t,e=js(),e!==null?(r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h);e!==null;)i.push(e),h=t,e=js(),e!==null?(r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h);return i!==null?(e=An(),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 js(){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 An(){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 Cn(){var i,e,l,u,f;return u=t,f=t,r.charCodeAt(t)===91?(i="[",t++):(i=null,_('"["')),i!==null?(e=qs(),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(h){return b.host_type="IPv6",r.substring(t,h)}(u)),i===null&&(t=u),i}function qs(){var i,e,l,u,f,h,m,v,S,O,ie,Ne,Rt,Ds,k,C;return Ds=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?(h=":",t++):(h=null,_('":"')),h!==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?(Ne=":",t++):(Ne=null,_('":"')),Ne!==null?(Rt=oe(),Rt!==null?i=[i,e,l,u,f,h,m,v,S,O,ie,Ne,Rt]:(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?(h=me(),h!==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?(Ne=oe(),Ne!==null?i=[i,e,l,u,f,h,m,v,S,O,ie,Ne]:(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?(h=me(),h!==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=oe(),O!==null?i=[i,e,l,u,f,h,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?(h=me(),h!==null?(r.charCodeAt(t)===58?(m=":",t++):(m=null,_('":"')),m!==null?(v=oe(),v!==null?i=[i,e,l,u,f,h,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?(h=oe(),h!==null?i=[i,e,l,u,f,h]:(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=oe(),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=oe(),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?(h=":",t++):(h=null,_('":"')),h!==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=oe(),ie!==null?i=[i,e,l,u,f,h,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?(C=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=C)):(e=null,t=C),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?(h=me(),h!==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=oe(),O!==null?i=[i,e,l,u,f,h,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?(C=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=C)):(e=null,t=C),e=e!==null?e:"",e!==null?(C=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=C)):(l=null,t=C),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?(h=":",t++):(h=null,_('":"')),h!==null?(m=me(),m!==null?(r.charCodeAt(t)===58?(v=":",t++):(v=null,_('":"')),v!==null?(S=oe(),S!==null?i=[i,e,l,u,f,h,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?(C=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=C)):(e=null,t=C),e=e!==null?e:"",e!==null?(C=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=C)):(l=null,t=C),l=l!==null?l:"",l!==null?(C=t,r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=C)):(u=null,t=C),u=u!==null?u:"",u!==null?(r.substr(t,2)==="::"?(f="::",t+=2):(f=null,_('"::"')),f!==null?(h=me(),h!==null?(r.charCodeAt(t)===58?(m=":",t++):(m=null,_('":"')),m!==null?(v=oe(),v!==null?i=[i,e,l,u,f,h,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?(C=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=C)):(e=null,t=C),e=e!==null?e:"",e!==null?(C=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=C)):(l=null,t=C),l=l!==null?l:"",l!==null?(C=t,r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=C)):(u=null,t=C),u=u!==null?u:"",u!==null?(C=t,r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(h=me(),h!==null?f=[f,h]:(f=null,t=C)):(f=null,t=C),f=f!==null?f:"",f!==null?(r.substr(t,2)==="::"?(h="::",t+=2):(h=null,_('"::"')),h!==null?(m=oe(),m!==null?i=[i,e,l,u,f,h,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?(C=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=C)):(e=null,t=C),e=e!==null?e:"",e!==null?(C=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=C)):(l=null,t=C),l=l!==null?l:"",l!==null?(C=t,r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=C)):(u=null,t=C),u=u!==null?u:"",u!==null?(C=t,r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(h=me(),h!==null?f=[f,h]:(f=null,t=C)):(f=null,t=C),f=f!==null?f:"",f!==null?(C=t,r.charCodeAt(t)===58?(h=":",t++):(h=null,_('":"')),h!==null?(m=me(),m!==null?h=[h,m]:(h=null,t=C)):(h=null,t=C),h=h!==null?h:"",h!==null?(r.substr(t,2)==="::"?(m="::",t+=2):(m=null,_('"::"')),m!==null?(v=me(),v!==null?i=[i,e,l,u,f,h,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?(C=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=C)):(e=null,t=C),e=e!==null?e:"",e!==null?(C=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=C)):(l=null,t=C),l=l!==null?l:"",l!==null?(C=t,r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=C)):(u=null,t=C),u=u!==null?u:"",u!==null?(C=t,r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(h=me(),h!==null?f=[f,h]:(f=null,t=C)):(f=null,t=C),f=f!==null?f:"",f!==null?(C=t,r.charCodeAt(t)===58?(h=":",t++):(h=null,_('":"')),h!==null?(m=me(),m!==null?h=[h,m]:(h=null,t=C)):(h=null,t=C),h=h!==null?h:"",h!==null?(C=t,r.charCodeAt(t)===58?(m=":",t++):(m=null,_('":"')),m!==null?(v=me(),v!==null?m=[m,v]:(m=null,t=C)):(m=null,t=C),m=m!==null?m:"",m!==null?(r.substr(t,2)==="::"?(v="::",t+=2):(v=null,_('"::"')),v!==null?i=[i,e,l,u,f,h,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)}(Ds)),i===null&&(t=Ds),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 oe(){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=lt()),i}function lt(){var i,e,l,u,f,h,m,v,S;return v=t,S=t,i=Bt(),i!==null?(r.charCodeAt(t)===46?(e=".",t++):(e=null,_('"."')),e!==null?(l=Bt(),l!==null?(r.charCodeAt(t)===46?(u=".",t++):(u=null,_('"."')),u!==null?(f=Bt(),f!==null?(r.charCodeAt(t)===46?(h=".",t++):(h=null,_('"."')),h!==null?(m=Bt(),m!==null?i=[i,e,l,u,f,h,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 Bt(){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 vs(){var i,e,l,u,f,h,m;return h=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}(h,i)),i===null&&(t=h),i}function _r(){var i,e,l,u;for(i=[],u=t,r.charCodeAt(t)===59?(e=";",t++):(e=null,_('";"')),e!==null?(l=Rn(),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=Rn(),l!==null?e=[e,l]:(e=null,t=u)):(e=null,t=u);return i}function Rn(){var i;return i=In(),i===null&&(i=hr(),i===null&&(i=dr(),i===null&&(i=pr(),i===null&&(i=mr(),i===null&&(i=gr(),i===null&&(i=Tr())))))),i}function In(){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,h){b.uri_params||(b.uri_params={}),b.uri_params.transport=h.toLowerCase()}(l,i[1])),i===null&&(t=l),i}function hr(){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,h){b.uri_params||(b.uri_params={}),b.uri_params.user=h.toLowerCase()}(l,i[1])),i===null&&(t=l),i}function dr(){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=Js(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,h){b.uri_params||(b.uri_params={}),b.uri_params.method=h}(l,i[1])),i===null&&(t=l),i}function pr(){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=Yn(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,h){b.params||(b.params={}),b.params.ttl=h}(l,i[1])),i===null&&(t=l),i}function mr(){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=Yt(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,h){b.uri_params||(b.uri_params={}),b.uri_params.maddr=h}(l,i[1])),i===null&&(t=l),i}function gr(){var i,e,l,u,f,h;return u=t,f=t,r.substr(t,2).toLowerCase()==="lr"?(i=r.substr(t,2),t+=2):(i=null,_('"lr"')),i!==null?(h=t,r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e!==null?(l=U(),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h),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 Tr(){var i,e,l,u,f,h;return u=t,f=t,i=vr(),i!==null?(h=t,r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e!==null?(l=Er(),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h),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 vr(){var i,e,l;if(l=t,e=Es(),e!==null)for(i=[];e!==null;)i.push(e),e=Es();else i=null;return i!==null&&(i=function(u,f){return f.join("")}(l,i)),i===null&&(t=l),i}function Er(){var i,e,l;if(l=t,e=Es(),e!==null)for(i=[];e!==null;)i.push(e),e=Es();else i=null;return i!==null&&(i=function(u,f){return f.join("")}(l,i)),i===null&&(t=l),i}function Es(){var i;return i=Ss(),i===null&&(i=N(),i===null&&(i=Se())),i}function Ss(){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 Sr(){var i,e,l,u,f,h,m;if(h=t,r.charCodeAt(t)===63?(i="?",t++):(i=null,_('"?"')),i!==null)if(e=Bs(),e!==null){for(l=[],m=t,r.charCodeAt(t)===38?(u="&",t++):(u=null,_('"&"')),u!==null?(f=Bs(),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=Bs(),f!==null?u=[u,f]:(u=null,t=m)):(u=null,t=m);l!==null?i=[i,e,l]:(i=null,t=h)}else i=null,t=h;else i=null,t=h;return i}function Bs(){var i,e,l,u,f;return u=t,f=t,i=Gs(),i!==null?(r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e!==null?(l=yr(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,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 Gs(){var i,e;if(e=ys(),e===null&&(e=N(),e===null&&(e=Se())),e!==null)for(i=[];e!==null;)i.push(e),e=ys(),e===null&&(e=N(),e===null&&(e=Se()));else i=null;return i}function yr(){var i,e;for(i=[],e=ys(),e===null&&(e=N(),e===null&&(e=Se()));e!==null;)i.push(e),e=ys(),e===null&&(e=N(),e===null&&(e=Se()));return i}function ys(){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 Ws(){var i;return i=Xs(),i===null&&(i=ol()),i}function ol(){var i,e,l,u,f,h;return h=t,i=Js(),i!==null?(e=I(),e!==null?(l=Ar(),l!==null?(u=I(),u!==null?(f=On(),f!==null?i=[i,e,l,u,f]:(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h),i}function Ar(){var i;return i=we(),i===null&&(i=bn()),i}function bn(){var i,e,l,u;return u=t,i=Is(),i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=wn(),l===null&&(l=Ys()),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function wn(){var i,e,l,u,f;return u=t,i=Cr(),i===null&&(i=Ks()),i!==null?(f=t,r.charCodeAt(t)===63?(e="?",t++):(e=null,_('"?"')),e!==null?(l=Or(),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 Cr(){var i,e,l,u;return u=t,r.substr(t,2)==="//"?(i="//",t+=2):(i=null,_('"//"')),i!==null?(e=Ir(),e!==null?(l=Ks(),l=l!==null?l:"",l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Ks(){var i,e,l;return l=t,r.charCodeAt(t)===47?(i="/",t++):(i=null,_('"/"')),i!==null?(e=Rr(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function Ys(){var i,e,l,u;if(u=t,i=Cs(),i!==null){for(e=[],l=As();l!==null;)e.push(l),l=As();e!==null?i=[i,e]:(i=null,t=u)}else i=null,t=u;return i}function As(){var i;return i=ae(),i===null&&(i=N(),i===null&&(i=Se())),i}function Cs(){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 Rr(){var i,e,l,u,f,h;if(f=t,i=zs(),i!==null){for(e=[],h=t,r.charCodeAt(t)===47?(l="/",t++):(l=null,_('"/"')),l!==null?(u=zs(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,r.charCodeAt(t)===47?(l="/",t++):(l=null,_('"/"')),l!==null?(u=zs(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function zs(){var i,e,l,u,f,h;for(f=t,i=[],e=ls();e!==null;)i.push(e),e=ls();if(i!==null){for(e=[],h=t,r.charCodeAt(t)===59?(l=";",t++):(l=null,_('";"')),l!==null?(u=Rs(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,r.charCodeAt(t)===59?(l=";",t++):(l=null,_('";"')),l!==null?(u=Rs(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Rs(){var i,e;for(i=[],e=ls();e!==null;)i.push(e),e=ls();return i}function ls(){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 Is(){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(h){b.scheme=r.substring(t,h)}(u)),i===null&&(t=u),i}function Ir(){var i;return i=br(),i===null&&(i=wr()),i}function br(){var i,e,l,u;return l=t,u=t,i=Mt(),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=Vs(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i=i!==null?i:"",i}function wr(){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 Or(){var i,e;for(i=[],e=As();e!==null;)i.push(e),e=As();return i}function On(){var i,e,l,u,f,h,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(h=g(),h!==null)for(f=[];h!==null;)f.push(h),h=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 Dn(){var i;return r.substr(t,6)==="INVITE"?(i="INVITE",t+=6):(i=null,_('"INVITE"')),i}function Dr(){var i;return r.substr(t,3)==="ACK"?(i="ACK",t+=3):(i=null,_('"ACK"')),i}function Nr(){var i;return r.substr(t,7)==="OPTIONS"?(i="OPTIONS",t+=7):(i=null,_('"OPTIONS"')),i}function Ur(){var i;return r.substr(t,3)==="BYE"?(i="BYE",t+=3):(i=null,_('"BYE"')),i}function Pr(){var i;return r.substr(t,6)==="CANCEL"?(i="CANCEL",t+=6):(i=null,_('"CANCEL"')),i}function xr(){var i;return r.substr(t,8)==="REGISTER"?(i="REGISTER",t+=8):(i=null,_('"REGISTER"')),i}function Mr(){var i;return r.substr(t,9)==="SUBSCRIBE"?(i="SUBSCRIBE",t+=9):(i=null,_('"SUBSCRIBE"')),i}function kr(){var i;return r.substr(t,6)==="NOTIFY"?(i="NOTIFY",t+=6):(i=null,_('"NOTIFY"')),i}function Lr(){var i;return r.substr(t,5)==="REFER"?(i="REFER",t+=5):(i=null,_('"REFER"')),i}function Js(){var i,e;return e=t,i=Dn(),i===null&&(i=Dr(),i===null&&(i=Nr(),i===null&&(i=Ur(),i===null&&(i=Pr(),i===null&&(i=xr(),i===null&&(i=Mr(),i===null&&(i=kr(),i===null&&(i=Lr(),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 Xs(){var i,e,l,u,f,h;return h=t,i=On(),i!==null?(e=I(),e!==null?(l=$r(),l!==null?(u=I(),u!==null?(f=Fr(),f!==null?i=[i,e,l,u,f]:(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h),i}function $r(){var i,e;return e=t,i=Hr(),i!==null&&(i=function(l,u){b.status_code=parseInt(u.join(""))}(e,i)),i===null&&(t=e),i}function Hr(){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 Fr(){var i,e,l;for(l=t,i=[],e=ae(),e===null&&(e=N(),e===null&&(e=Se(),e===null&&(e=z(),e===null&&(e=H(),e===null&&(e=I(),e===null&&(e=$()))))));e!==null;)i.push(e),e=ae(),e===null&&(e=N(),e===null&&(e=Se(),e===null&&(e=z(),e===null&&(e=H(),e===null&&(e=I(),e===null&&(e=$()))))));return i!==null&&(i=function(u){b.reason_phrase=r.substring(t,u)}(l)),i===null&&(t=l),i}function al(){var i,e,l,u,f,h;if(f=t,i=en(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=en(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=en(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Mo(){var i,e,l,u,f,h;return u=t,f=t,i=et(),i!==null?(h=t,r.charCodeAt(t)===64?(e="@",t++):(e=null,_('"@"')),e!==null?(l=et(),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h),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 ko(){var i,e,l,u,f,h,m;if(f=t,i=ee(),i===null)if(h=t,i=Nn(),i!==null){for(e=[],m=t,l=Ce(),l!==null?(u=Nn(),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=Nn(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;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 Nn(){var i,e,l,u,f,h,m;if(f=t,h=t,i=de(),i===null&&(i=kt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=bs(),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=bs(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;return i!==null&&(i=function(v){var S;b.multi_header||(b.multi_header=[]);try{S=new os(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 kt(){var i,e,l,u,f;return f=t,i=Lt(),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 Lt(){var i,e,l,u,f,h,m;if(f=t,h=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=h)}else i=null,t=h;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 bs(){var i;return i=Un(),i===null&&(i=Vr(),i===null&&(i=Ge())),i}function Un(){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=B(),e!==null?(l=Jt(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,m){b.params||(b.params={}),b.params.q=m}(u,i[2])),i===null&&(t=u),i}function Vr(){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=B(),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(h,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 Jt(){var i,e,l,u,f,h,m,v;return h=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))}(h)),i===null&&(t=h),i}function Ge(){var i,e,l,u,f,h;return u=t,f=t,i=U(),i!==null?(h=t,e=B(),e!==null?(l=We(),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h),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=Yt(),i===null&&(i=Ie())),i}function ul(){var i,e,l,u,f,h;if(f=t,i=cl(),i!==null){for(e=[],h=t,l=le(),l!==null?(u=Pn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=le(),l!==null?(u=Pn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function cl(){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 Pn(){var i;return i=xn(),i===null&&(i=Ge()),i}function xn(){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=B(),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 fl(){var i,e,l,u,f,h;if(f=t,i=U(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Lo(){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 $o(){var i,e;return e=t,i=_l(),i!==null&&(i=function(l){b=r.substring(t,l)}(e)),i===null&&(t=e),i}function _l(){var i,e,l,u,f,h,m,v;if(m=t,i=jr(),i!==null)if(e=W(),e!==null)if(l=Gr(),l!==null){for(u=[],v=t,f=le(),f!==null?(h=Mn(),h!==null?f=[f,h]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=le(),f!==null?(h=Mn(),h!==null?f=[f,h]:(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 jr(){var i;return i=qr(),i===null&&(i=Br()),i}function qr(){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=Qs()))))),i}function Br(){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=Qs())),i}function Qs(){var i;return i=U(),i===null&&(i=Zs()),i}function Zs(){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 Gr(){var i;return i=Qs(),i===null&&(i=U()),i}function Mn(){var i,e,l,u;return u=t,i=U(),i!==null?(e=B(),e!==null?(l=kn(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function kn(){var i;return i=U(),i===null&&(i=Ie()),i}function hl(){var i,e,l,u;return u=t,i=dl(),i!==null?(e=ve(),e!==null?(l=Js(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function dl(){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 pl(){var i,e;return e=t,i=zt(),i!==null&&(i=function(l,u){b=u}(e,i)),i===null&&(t=e),i}function Ho(){var i,e,l,u,f,h,m;if(f=t,h=t,i=en(),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=h)}else i=null,t=h;return i!==null&&(i=function(v,S){b.event=S.join("").toLowerCase()}(f,i[0])),i===null&&(t=f),i}function en(){var i,e,l,u,f,h;if(f=t,i=P(),i!==null){for(e=[],h=t,r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l!==null?(u=P(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l!==null?(u=P(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function tn(){var i,e,l,u,f,h,m;if(f=t,h=t,i=de(),i===null&&(i=kt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=Wr(),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=Wr(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;return i!==null&&(i=function(v){var S=b.tag;try{b=new os(b.uri,b.display_name,b.params),S&&b.setParam("tag",S)}catch{b=-1}}()),i===null&&(t=f),i}function Wr(){var i;return i=sn(),i===null&&(i=Ge()),i}function sn(){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=B(),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(h,m){b.tag=m}(u,i[2])),i===null&&(t=u),i}function Kr(){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 Fo(){var i,e;return e=t,i=zt(),i!==null&&(i=function(l,u){b=u}(e,i)),i===null&&(t=e),i}function Vo(){var i,e,l,u,f,h,m,v,S,O;for(v=t,S=t,i=[],e=Lt();e!==null;)i.push(e),e=Lt();if(i!==null)if(e=xe(),e!==null)if(l=we(),l!==null)if(u=be(),u!==null){for(f=[],O=t,h=le(),h!==null?(m=Ge(),m!==null?h=[h,m]:(h=null,t=O)):(h=null,t=O);h!==null;)f.push(h),O=t,h=le(),h!==null?(m=Ge(),m!==null?h=[h,m]:(h=null,t=O)):(h=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 os(b.uri,b.display_name,b.params)}catch{b=-1}}()),i===null&&(t=v),i}function jo(){var i;return i=Yr(),i}function Yr(){var i,e,l,u,f,h,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=Xt(),l!==null){for(u=[],v=t,f=Ce(),f!==null?(h=Xt(),h!==null?f=[f,h]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=Ce(),f!==null?(h=Xt(),h!==null?f=[f,h]:(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=Ln()),i}function Ln(){var i,e,l,u,f,h,m,v;if(m=t,i=U(),i!==null)if(e=ve(),e!==null)if(l=ws(),l!==null){for(u=[],v=t,f=Ce(),f!==null?(h=ws(),h!==null?f=[f,h]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=Ce(),f!==null?(h=ws(),h!==null?f=[f,h]:(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 ws(){var i,e,l,u;return u=t,i=U(),i!==null?(e=B(),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 Xt(){var i;return i=nn(),i===null&&(i=Jr(),i===null&&(i=ln(),i===null&&(i=Qr(),i===null&&(i=Zr(),i===null&&(i=ei(),i===null&&(i=ti(),i===null&&(i=ws()))))))),i}function nn(){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=B(),e!==null?(l=zr(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function zr(){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 Jr(){var i,e,l,u,f,h,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=B(),e!==null)if(l=tt(),l!==null)if(u=rn(),u!==null){if(f=[],S=t,m=I(),m!==null)for(h=[];m!==null;)h.push(m),m=I();else h=null;for(h!==null?(m=rn(),m!==null?h=[h,m]:(h=null,t=S)):(h=null,t=S);h!==null;){if(f.push(h),S=t,m=I(),m!==null)for(h=[];m!==null;)h.push(m),m=I();else h=null;h!==null?(m=rn(),m!==null?h=[h,m]:(h=null,t=S)):(h=null,t=S)}f!==null?(h=it(),h!==null?i=[i,e,l,u,f,h]:(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 rn(){var i;return i=bn(),i===null&&(i=Ks()),i}function ln(){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=B(),e!==null?(l=Xr(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Xr(){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 Qr(){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=B(),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(h,m){b.opaque=m}(u,i[2])),i===null&&(t=u),i}function Zr(){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=B(),e!==null?(f=t,r.substr(t,4).toLowerCase()==="true"?(l=r.substr(t,4),t+=4):(l=null,_('"true"')),l!==null&&(l=function(h){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(h){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 ei(){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=B(),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(h,m){b.algorithm=m.toUpperCase()}(u,i[2])),i===null&&(t=u),i}function ti(){var i,e,l,u,f,h,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=B(),e!==null)if(l=tt(),l!==null){if(S=t,u=on(),u!==null){for(f=[],O=t,r.charCodeAt(t)===44?(h=",",t++):(h=null,_('","')),h!==null?(m=on(),m!==null?h=[h,m]:(h=null,t=O)):(h=null,t=O);h!==null;)f.push(h),O=t,r.charCodeAt(t)===44?(h=",",t++):(h=null,_('","')),h!==null?(m=on(),m!==null?h=[h,m]:(h=null,t=O)):(h=null,t=O);f!==null?u=[u,f]:(u=null,t=S)}else u=null,t=S;u!==null?(f=it(),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 on(){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 $n(){var i,e,l,u,f,h;if(f=t,i=U(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function qo(){var i,e,l,u,f,h,m;if(f=t,h=t,i=Hn(),i!==null){for(e=[],m=t,l=Ce(),l!==null?(u=Hn(),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=Hn(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;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 Hn(){var i,e,l,u,f,h,m;if(f=t,h=t,i=kt(),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=h)}else i=null,t=h;return i!==null&&(i=function(v){var S;b.multi_header||(b.multi_header=[]);try{S=new os(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 Fn(){var i,e,l,u,f,h,m;if(f=t,h=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=si(),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=si(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;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 si(){var i;return i=Vn(),i===null&&(i=Ge()),i}function Vn(){var i,e,l,u,f,h;if(f=t,h=t,r.substr(t,5).toLowerCase()==="cause"?(i=r.substr(t,5),t+=5):(i=null,_('"cause"')),i!==null)if(e=B(),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=h)}else i=null,t=h;else i=null,t=h;return i!==null&&(i=function(m,v){b.cause=parseInt(v.join(""))}(f,i[2])),i===null&&(t=f),i}function ml(){var i,e,l,u,f,h;if(f=t,i=U(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Bo(){var i,e,l,u,f,h;if(f=t,i=jn(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=jn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=jn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function jn(){var i,e,l,u,f,h;if(f=t,i=kt(),i!==null){for(e=[],h=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function qn(){var i,e,l,u,f,h;if(f=t,i=gl(),i!==null){for(e=[],h=t,l=le(),l!==null?(u=Bn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=le(),l!==null?(u=Bn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function gl(){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 Bn(){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=B(),e!==null?(l=Gn(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,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=B(),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(h,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=B(),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(h,m){typeof m<"u"&&(b.retry_after=m)}(u,i[2])),i===null&&(t=u),i===null&&(i=Ge()))),i}function Gn(){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 Tl(){var i;return i=q(),i=i!==null?i:"",i}function Go(){var i,e,l,u,f,h;if(f=t,i=U(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i=i!==null?i:"",i}function Wo(){var i,e,l,u,f,h,m;if(f=t,h=t,i=de(),i===null&&(i=kt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=ni(),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=ni(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;return i!==null&&(i=function(v){var S=b.tag;try{b=new os(b.uri,b.display_name,b.params),S&&b.setParam("tag",S)}catch{b=-1}}()),i===null&&(t=f),i}function ni(){var i;return i=sn(),i===null&&(i=Ge()),i}function ri(){var i,e,l,u,f,h;if(f=t,i=Wn(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=Wn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=Wn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Wn(){var i,e,l,u,f,h,m,v;if(m=t,i=ci(),i!==null)if(e=ve(),e!==null)if(l=hi(),l!==null){for(u=[],v=t,f=le(),f!==null?(h=Os(),h!==null?f=[f,h]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=le(),f!==null?(h=Os(),h!==null?f=[f,h]:(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 Os(){var i;return i=Kn(),i===null&&(i=ii(),i===null&&(i=li(),i===null&&(i=oi(),i===null&&(i=ai(),i===null&&(i=Ge()))))),i}function Kn(){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=B(),e!==null?(l=Yn(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,m){b.ttl=m}(u,i[2])),i===null&&(t=u),i}function ii(){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=B(),e!==null?(l=Yt(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,m){b.maddr=m}(u,i[2])),i===null&&(t=u),i}function li(){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=B(),e!==null?(l=lt(),l===null&&(l=qs()),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,m){b.received=m}(u,i[2])),i===null&&(t=u),i}function oi(){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=B(),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(h,m){b.branch=m}(u,i[2])),i===null&&(t=u),i}function ai(){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=B(),e!==null?(l=ui(),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 ui(){var i,e,l,u,f,h,m;return h=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(""))}(h,i)),i===null&&(t=h),i}function ci(){var i,e,l,u,f,h;return h=t,i=fi(),i!==null?(e=W(),e!==null?(l=U(),l!==null?(u=W(),u!==null?(f=_i(),f!==null?i=[i,e,l,u,f]:(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h),i}function fi(){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 _i(){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 hi(){var i,e,l,u,f;return u=t,i=di(),i!==null?(f=t,e=ye(),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 di(){var i,e;return e=t,i=lt(),i===null&&(i=Cn(),i===null&&(i=is())),i!==null&&(i=function(l){b.host=r.substring(t,l)}(e)),i===null&&(t=e),i}function pi(){var i,e,l,u,f,h,m;return h=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(""))}(h,i)),i===null&&(t=h),i}function Yn(){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(h,m){return parseInt(m.join(""))}(u,i)),i===null&&(t=u),i}function mi(){var i;return i=Yr(),i}function Ko(){var i,e,l,u,f,h;if(f=t,i=vl(),i!==null){for(e=[],h=t,l=le(),l!==null?(u=zn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=le(),l!==null?(u=zn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function vl(){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 zn(){var i;return i=Jn(),i===null&&(i=Ge()),i}function Jn(){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=B(),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(h,m){b.refresher=m.toLowerCase()}(u,i[2])),i===null&&(t=u),i}function El(){var i,e,l,u;return u=t,i=U(),i!==null?(e=D(),e!==null?(l=Sl(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Sl(){var i,e;for(i=[],e=j(),e===null&&(e=H(),e===null&&(e=ve()));e!==null;)i.push(e),e=j(),e===null&&(e=H(),e===null&&(e=ve()));return i}function yl(){var i,e;for(i=[],e=A();e!==null;)i.push(e),e=A();return i}function Yo(){var i,e,l;return l=t,r.substr(t,5)==="uuid:"?(i="uuid:",t+=5):(i=null,_('"uuid:"')),i!==null?(e=Al(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function Al(){var i,e,l,u,f,h,m,v,S,O,ie;return O=t,ie=t,i=Ht(),i!==null?(r.charCodeAt(t)===45?(e="-",t++):(e=null,_('"-"')),e!==null?(l=$t(),l!==null?(r.charCodeAt(t)===45?(u="-",t++):(u=null,_('"-"')),u!==null?(f=$t(),f!==null?(r.charCodeAt(t)===45?(h="-",t++):(h=null,_('"-"')),h!==null?(m=$t(),m!==null?(r.charCodeAt(t)===45?(v="-",t++):(v=null,_('"-"')),v!==null?(S=gi(),S!==null?i=[i,e,l,u,f,h,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(Ne,Rt){b=r.substring(t+5,Ne)}(O,i[0])),i===null&&(t=O),i}function $t(){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 Ht(){var i,e,l;return l=t,i=$t(),i!==null?(e=$t(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function gi(){var i,e,l,u;return u=t,i=$t(),i!==null?(e=$t(),e!==null?(l=$t(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Cl(){var i,e,l,u,f,h,m;if(f=t,h=t,i=de(),i===null&&(i=kt()),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=h)}else i=null,t=h;return i!==null&&(i=function(v){try{b=new os(b.uri,b.display_name,b.params)}catch{b=-1}}()),i===null&&(t=f),i}function zo(){var i,e,l,u,f,h;if(f=t,i=Rl(),i!==null){for(e=[],h=t,l=le(),l!==null?(u=Xn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=le(),l!==null?(u=Xn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Rl(){var i,e,l,u,f,h;return u=t,f=t,i=et(),i!==null?(h=t,r.charCodeAt(t)===64?(e="@",t++):(e=null,_('"@"')),e!==null?(l=et(),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h),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 Xn(){var i;return i=Qn(),i===null&&(i=Ti(),i===null&&(i=vi(),i===null&&(i=Ge()))),i}function Qn(){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=B(),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(h,m){b.to_tag=m}(u,i[2])),i===null&&(t=u),i}function Ti(){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=B(),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(h,m){b.from_tag=m}(u,i[2])),i===null&&(t=u),i}function vi(){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 Il(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 Jo(){for(var i=1,e=1,l=!1,u=0;u<Math.max(t,s);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 bl=gs(),os=Au(),b={},w=a[o]();if(w===null||t!==r.length){var Ei=Math.max(t,s),Si=Ei<r.length?r.charAt(Ei):null,wl=Jo();return new this.SyntaxError(Il(p),Si,Ei,wl.line,wl.column),-1}return b},toSource:function(){return this._source}};return n.SyntaxError=function(r,o,a,t,s){function p(_,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=o,this.message=p(r,o),this.offset=a,this.line=t,this.column=s},n.SyntaxError.prototype=Error.prototype,n}()),Sa}var ya,jc;function gs(){if(jc)return ya;jc=1;const c=Ue,n=Et(),r=rs();return ya=class Xf{static parse(a){if(a=r.parse(a,"SIP_URI"),a!==-1)return a}constructor(a,t,s,p,_={},d={}){if(!s)throw new TypeError('missing or invalid "host" parameter');this._parameters={},this._headers={},this._scheme=a||c.SIP,this._user=t,this._host=s,this._port=p;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(a){this._scheme=a.toLowerCase()}get user(){return this._user}set user(a){this._user=a}get host(){return this._host}set host(a){this._host=a.toLowerCase()}get port(){return this._port}set port(a){this._port=a===0?a:parseInt(a,10)||null}setParam(a,t){a&&(this._parameters[a.toLowerCase()]=typeof t>"u"||t===null?null:t.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 t=this._parameters[a];return delete this._parameters[a],t}}clearParams(){this._parameters={}}setHeader(a,t){this._headers[n.headerize(a)]=Array.isArray(t)?t:[t]}getHeader(a){if(a)return this._headers[n.headerize(a)]}hasHeader(a){if(a)return this._headers.hasOwnProperty(n.headerize(a))&&!0||!1}deleteHeader(a){if(a=n.headerize(a),this._headers.hasOwnProperty(a)){const t=this._headers[a];return delete this._headers[a],t}}clearHeaders(){this._headers={}}clone(){return new Xf(this._scheme,this._user,this._host,this._port,JSON.parse(JSON.stringify(this._parameters)),JSON.parse(JSON.stringify(this._headers)))}toString(){const a=[];let t=`${this._scheme}:`;this._user&&(t+=`${n.escapeUser(this._user)}@`),t+=this._host,(this._port||this._port===0)&&(t+=`:${this._port}`);for(const s in this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,s)&&(t+=`;${s}`,this._parameters[s]!==null&&(t+=`=${this._parameters[s]}`));for(const s in this._headers)if(Object.prototype.hasOwnProperty.call(this._headers,s))for(const p of this._headers[s])a.push(`${s}=${p}`);return a.length>0&&(t+=`?${a.join("&")}`),t}toAor(a){let t=`${this._scheme}:`;return this._user&&(t+=`${n.escapeUser(this._user)}@`),t+=this._host,a&&(this._port||this._port===0)&&(t+=`:${this._port}`),t}},ya}var qc;function Et(){if(qc)return Ze;qc=1;const c=Ue,n=gs(),r=rs();Ze.str_utf8_length=s=>unescape(encodeURIComponent(s)).length;const o=Ze.isFunction=s=>s!==void 0?Object.prototype.toString.call(s)==="[object Function]":!1;Ze.isString=s=>s!==void 0?Object.prototype.toString.call(s)==="[object String]":!1,Ze.isDecimal=s=>!isNaN(s)&&parseFloat(s)===parseInt(s,10),Ze.isEmpty=s=>s===null||s===""||s===void 0||Array.isArray(s)&&s.length===0||typeof s=="number"&&isNaN(s),Ze.hasMethods=function(s,...p){for(const _ of p)if(o(s[_]))return!1;return!0};const a=Ze.createRandomToken=(s,p=32)=>{let _,d,g="";for(_=0;_<s;_++)d=Math.random()*p|0,g+=d.toString(p);return g};Ze.newTag=()=>a(10),Ze.newUUID=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,p=>{const _=Math.random()*16|0;return(p==="x"?_:_&3|8).toString(16)}),Ze.hostType=s=>{if(s){if(s=r.parse(s,"host"),s!==-1)return s.host_type}else return};const t=Ze.escapeUser=s=>encodeURIComponent(decodeURIComponent(s)).replace(/%3A/ig,":").replace(/%2B/ig,"+").replace(/%3F/ig,"?").replace(/%2F/ig,"/");return Ze.normalizeTarget=(s,p)=>{if(s){if(s instanceof n)return s;if(typeof s=="string"){const _=s.split("@");let d,g;switch(_.length){case 1:if(!p)return;d=s,g=p;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,"")),s=`${c.SIP}:${t(d)}@${g}`;let T;return(T=n.parse(s))?T:void 0}else return}else return},Ze.headerize=s=>{const p={"Call-Id":"Call-ID",Cseq:"CSeq","Www-Authenticate":"WWW-Authenticate"},_=s.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 p[d]&&(d=p[d]),d},Ze.sipErrorCause=s=>{for(const p in c.SIP_ERROR_CAUSES)if(c.SIP_ERROR_CAUSES[p].indexOf(s)!==-1)return c.causes[p];return c.causes.SIP_FAILURE_CODE},Ze.getRandomTestNetIP=()=>{function s(p,_){return Math.floor(Math.random()*(_-p+1)+p)}return`192.0.2.${s(1,254)}`},Ze.calculateMD5=s=>{function p(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)),_(p(Ee,ue),Ae)}function A(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=_(Ee,_(_(g(Ae,Ie,Oe),pe),de)),_(p(Ee,ue),Ae)}function R(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=_(Ee,_(_(T(Ae,Ie,Oe),pe),de)),_(p(Ee,ue),Ae)}function I(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=_(Ee,_(_(E(Ae,Ie,Oe),pe),de)),_(p(Ee,ue),Ae)}function $(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,De=0;for(;De<Ie;)Ae=(De-De%4)/4,we=De%4*8,de[Ae]=de[Ae]|Ee.charCodeAt(De)<<we,De++;return Ae=(De-De%4)/4,we=De%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 ae(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=[],F,Se,ve,M,D,q,j,z,H;const J=7,U=12,P=17,se=22,et=5,ee=9,W=14,B=20,re=4,ge=11,be=16,xe=23,Ce=6,le=10,ye=15,tt=21;for(s=ae(s),N=$(s),q=1732584193,j=4023233417,z=2562383102,H=271733878,F=0;F<N.length;F+=16)Se=q,ve=j,M=z,D=H,q=y(q,j,z,H,N[F+0],J,3614090360),H=y(H,q,j,z,N[F+1],U,3905402710),z=y(z,H,q,j,N[F+2],P,606105819),j=y(j,z,H,q,N[F+3],se,3250441966),q=y(q,j,z,H,N[F+4],J,4118548399),H=y(H,q,j,z,N[F+5],U,1200080426),z=y(z,H,q,j,N[F+6],P,2821735955),j=y(j,z,H,q,N[F+7],se,4249261313),q=y(q,j,z,H,N[F+8],J,1770035416),H=y(H,q,j,z,N[F+9],U,2336552879),z=y(z,H,q,j,N[F+10],P,4294925233),j=y(j,z,H,q,N[F+11],se,2304563134),q=y(q,j,z,H,N[F+12],J,1804603682),H=y(H,q,j,z,N[F+13],U,4254626195),z=y(z,H,q,j,N[F+14],P,2792965006),j=y(j,z,H,q,N[F+15],se,1236535329),q=A(q,j,z,H,N[F+1],et,4129170786),H=A(H,q,j,z,N[F+6],ee,3225465664),z=A(z,H,q,j,N[F+11],W,643717713),j=A(j,z,H,q,N[F+0],B,3921069994),q=A(q,j,z,H,N[F+5],et,3593408605),H=A(H,q,j,z,N[F+10],ee,38016083),z=A(z,H,q,j,N[F+15],W,3634488961),j=A(j,z,H,q,N[F+4],B,3889429448),q=A(q,j,z,H,N[F+9],et,568446438),H=A(H,q,j,z,N[F+14],ee,3275163606),z=A(z,H,q,j,N[F+3],W,4107603335),j=A(j,z,H,q,N[F+8],B,1163531501),q=A(q,j,z,H,N[F+13],et,2850285829),H=A(H,q,j,z,N[F+2],ee,4243563512),z=A(z,H,q,j,N[F+7],W,1735328473),j=A(j,z,H,q,N[F+12],B,2368359562),q=R(q,j,z,H,N[F+5],re,4294588738),H=R(H,q,j,z,N[F+8],ge,2272392833),z=R(z,H,q,j,N[F+11],be,1839030562),j=R(j,z,H,q,N[F+14],xe,4259657740),q=R(q,j,z,H,N[F+1],re,2763975236),H=R(H,q,j,z,N[F+4],ge,1272893353),z=R(z,H,q,j,N[F+7],be,4139469664),j=R(j,z,H,q,N[F+10],xe,3200236656),q=R(q,j,z,H,N[F+13],re,681279174),H=R(H,q,j,z,N[F+0],ge,3936430074),z=R(z,H,q,j,N[F+3],be,3572445317),j=R(j,z,H,q,N[F+6],xe,76029189),q=R(q,j,z,H,N[F+9],re,3654602809),H=R(H,q,j,z,N[F+12],ge,3873151461),z=R(z,H,q,j,N[F+15],be,530742520),j=R(j,z,H,q,N[F+2],xe,3299628645),q=I(q,j,z,H,N[F+0],Ce,4096336452),H=I(H,q,j,z,N[F+7],le,1126891415),z=I(z,H,q,j,N[F+14],ye,2878612391),j=I(j,z,H,q,N[F+5],tt,4237533241),q=I(q,j,z,H,N[F+12],Ce,1700485571),H=I(H,q,j,z,N[F+3],le,2399980690),z=I(z,H,q,j,N[F+10],ye,4293915773),j=I(j,z,H,q,N[F+1],tt,2240044497),q=I(q,j,z,H,N[F+8],Ce,1873313359),H=I(H,q,j,z,N[F+15],le,4264355552),z=I(z,H,q,j,N[F+6],ye,2734768916),j=I(j,z,H,q,N[F+13],tt,1309151649),q=I(q,j,z,H,N[F+4],Ce,4149444226),H=I(H,q,j,z,N[F+11],le,3174756917),z=I(z,H,q,j,N[F+2],ye,718787259),j=I(j,z,H,q,N[F+9],tt,3951481745),q=_(q,Se),j=_(j,ve),z=_(z,M),H=_(H,D);return(L(q)+L(j)+L(z)+L(H)).toLowerCase()},Ze.closeMediaStream=s=>{if(s)try{let p;if(s.getTracks){p=s.getTracks();for(const _ of p)_.stop()}else{p=s.getAudioTracks();for(const _ of p)_.stop();p=s.getVideoTracks();for(const _ of p)_.stop()}}catch{(typeof s.stop=="function"||typeof s.stop=="object")&&s.stop()}},Ze.cloneArray=s=>s&&s.slice()||[],Ze.cloneObject=(s,p={})=>s&&Object.assign({},s)||p,Ze}const Qf=Nt,Am=at,vt=Ue,nt=Et(),Bc=Au(),Cm=rs(),Aa=new Am("SIPMessage");class Po{constructor(n,r,o,a,t,s){if(!n||!r||!o)return null;a=a||{},this.ua=o,this.headers={},this.method=n,this.ruri=r,this.body=s,this.extraHeaders=nt.cloneArray(t),this.ua.configuration.extra_headers&&(this.extraHeaders=this.extraHeaders.concat(this.ua.configuration.extra_headers)),a.route_set?this.setHeader("route",a.route_set):o.configuration.use_preloaded_route&&this.setHeader("route",`<${o.transport.sip_uri};lr>`),this.setHeader("via",""),this.setHeader("max-forwards",vt.MAX_FORWARDS);const p=a.to_uri||r,_=a.to_tag?{tag:a.to_tag}:null,d=typeof a.to_display_name<"u"?a.to_display_name:null;this.to=new Bc(p,d,_),this.setHeader("to",this.to.toString());const g=a.from_uri||o.configuration.uri,T={tag:a.from_tag||nt.newTag()};let E;typeof a.from_display_name<"u"?E=a.from_display_name:o.configuration.display_name?E=o.configuration.display_name:E=null,this.from=new Bc(g,E,T),this.setHeader("from",this.from.toString());const y=a.call_id||o.configuration.jssip_id+nt.createRandomToken(15);this.call_id=y,this.setHeader("call-id",y);const A=a.cseq||Math.floor(Math.random()*1e4);this.cseq=A,this.setHeader("cseq",`${A} ${n}`)}setHeader(n,r){const o=new RegExp(`^\\s*${n}\\s*:`,"i");for(let a=0;a<this.extraHeaders.length;a++)o.test(this.extraHeaders[a])&&this.extraHeaders.splice(a,1);this.headers[nt.headerize(n)]=Array.isArray(r)?r:[r]}getHeader(n){const r=this.headers[nt.headerize(n)];if(r){if(r[0])return r[0]}else{const o=new RegExp(`^\\s*${n}\\s*:`,"i");for(const a of this.extraHeaders)if(o.test(a))return a.substring(a.indexOf(":")+1).trim()}}getHeaders(n){const r=this.headers[nt.headerize(n)],o=[];if(r){for(const a of r)o.push(a);return o}else{const a=new RegExp(`^\\s*${n}\\s*:`,"i");for(const t of this.extraHeaders)a.test(t)&&o.push(t.substring(t.indexOf(":")+1).trim());return o}}hasHeader(n){if(this.headers[nt.headerize(n)])return!0;{const r=new RegExp(`^\\s*${n}\\s*:`,"i");for(const o of this.extraHeaders)if(r.test(o))return!0}return!1}parseSDP(n){return!n&&this.sdp?this.sdp:(this.sdp=Qf.parse(this.body||""),this.sdp)}toString(){let n=`${this.method} ${this.ruri} SIP/2.0\r
76
- `;for(const a in this.headers)if(Object.prototype.hasOwnProperty.call(this.headers,a))for(const t of this.headers[a])n+=`${a}: ${t}\r
77
- `;for(const a of this.extraHeaders)n+=`${a.trim()}\r
78
- `;const r=[];switch(this.method){case vt.REGISTER:r.push("path","gruu");break;case vt.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 vt.UPDATE:this.ua.configuration.session_timers&&r.push("timer"),r.push("ice");break}r.push("outbound");const o=this.ua.configuration.user_agent||vt.USER_AGENT;if(n+=`Allow: ${vt.ALLOWED_METHODS}\r
79
- `,n+=`Supported: ${r}\r
80
- `,n+=`User-Agent: ${o}\r
81
- `,this.body){const a=nt.str_utf8_length(this.body);n+=`Content-Length: ${a}\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=$()),i}function A(){var i;return/^[\0-\xFF]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[\\0-\\xFF]")),i}function R(){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 $(){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 ae(){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=F()),i}function F(){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(h,m){return m.join("")}(u,i)),i===null&&(t=u),i}function ve(){var i,e,l,u,f,h;for(u=t,f=t,h=t,i=[],e=y();e!==null;)i.push(e),e=y();if(i!==null?(e=d(),e!==null?i=[i,e]:(i=null,t=h)):(i=null,t=h),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=$());e!==null;)i.push(e),e=I(),e===null&&(e=$());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(h){return":"}()),i===null&&(t=u),i}function B(){var i,e,l,u,f,h,m;if(f=t,h=t,e=j(),e!==null)for(i=[];e!==null;)i.push(e),e=j();else i=null;if(i!==null){for(e=[],m=t,l=[],u=ve();u!==null;)l.push(u),u=ve();for(l!==null?(u=j(),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=j(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m)}e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;return i!==null&&(i=function(v){return r.substring(t,v)}(f)),i===null&&(t=f),i}function j(){var i;return/^[!-~]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[!-~]")),i===null&&(i=z()),i}function z(){var i;return/^[\x80-\uFFFF]/.test(r.charAt(t))?(i=r.charAt(t),t++):(i=null,_("[\\x80-\\uFFFF]")),i}function H(){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=R(),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=$())))))))))))))))))),i}function et(){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=R(),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=R(),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(h){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(h){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(h){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(h){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(h){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(h){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(h){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(h){return":"}()),i===null&&(t=u),i}function tt(){var i,e,l,u;return l=t,u=t,i=M(),i!==null?(e=R(),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 it(){var i,e,l,u;return l=t,u=t,i=R(),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=z(),i===null&&(i=ve())))),i}function Ie(){var i,e,l,u,f,h;if(f=t,h=t,i=M(),i!==null)if(e=R(),e!==null){for(l=[],u=pe(),u===null&&(u=ue());u!==null;)l.push(u),u=pe(),u===null&&(u=ue());l!==null?(u=R(),u!==null?i=[i,e,l,u]:(i=null,t=h)):(i=null,t=h)}else i=null,t=h;else i=null,t=h;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,h;if(f=t,h=t,i=M(),i!==null)if(e=R(),e!==null){for(l=[],u=pe(),u===null&&(u=ue());u!==null;)l.push(u),u=pe(),u===null&&(u=ue());l!==null?(u=R(),u!==null?i=[i,e,l,u]:(i=null,t=h)):(i=null,t=h)}else i=null,t=h;else i=null,t=h;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=z())))),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,h;return f=t,h=t,i=De(),i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=kt(),l=l!==null?l:"",l!==null?(u=js(),u!==null?i=[i,e,l,u]:(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h),i!==null&&(i=function(m){try{b.uri=new wl(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,h,m,v;return m=t,v=t,i=De(),i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=kt(),l=l!==null?l:"",l!==null?(u=js(),u!==null?(f=hr(),f!==null?(h=yr(),h=h!==null?h:"",h!==null?i=[i,e,l,u,f,h]:(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 wl(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,o==="SIP_URI"&&(b=b.uri)}catch{b=-1}}()),i===null&&(t=m),i}function De(){var i;return i=Xe(),i===null&&(i=Le()),i}function Xe(){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,h;return u=t,f=t,i=_t(),i!==null?(h=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=An(),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h),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 _t(){var i,e;if(e=N(),e===null&&(e=Se(),e===null&&(e=yn())),e!==null)for(i=[];e!==null;)i.push(e),e=N(),e===null&&(e=Se(),e===null&&(e=yn()));else i=null;return i}function yn(){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 An(){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 js(){var i,e,l,u,f;return u=t,i=zt(),i!==null?(f=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=Es(),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=ls(),i===null&&(i=lt(),i===null&&(i=Rn())),i!==null&&(i=function(l){return b.host=r.substring(t,l).toLowerCase(),b.host}(e)),i===null&&(t=e),i}function ls(){var i,e,l,u,f,h;for(u=t,f=t,i=[],h=t,e=qs(),e!==null?(r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h);e!==null;)i.push(e),h=t,e=qs(),e!==null?(r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h);return i!==null?(e=Cn(),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 qs(){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 Cn(){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 Rn(){var i,e,l,u,f;return u=t,f=t,r.charCodeAt(t)===91?(i="[",t++):(i=null,_('"["')),i!==null?(e=Bs(),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(h){return b.host_type="IPv6",r.substring(t,h)}(u)),i===null&&(t=u),i}function Bs(){var i,e,l,u,f,h,m,v,S,O,ie,Ne,It,Ns,k,C;return Ns=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?(h=":",t++):(h=null,_('":"')),h!==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?(Ne=":",t++):(Ne=null,_('":"')),Ne!==null?(It=oe(),It!==null?i=[i,e,l,u,f,h,m,v,S,O,ie,Ne,It]:(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?(h=me(),h!==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?(Ne=oe(),Ne!==null?i=[i,e,l,u,f,h,m,v,S,O,ie,Ne]:(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?(h=me(),h!==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=oe(),O!==null?i=[i,e,l,u,f,h,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?(h=me(),h!==null?(r.charCodeAt(t)===58?(m=":",t++):(m=null,_('":"')),m!==null?(v=oe(),v!==null?i=[i,e,l,u,f,h,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?(h=oe(),h!==null?i=[i,e,l,u,f,h]:(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=oe(),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=oe(),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?(h=":",t++):(h=null,_('":"')),h!==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=oe(),ie!==null?i=[i,e,l,u,f,h,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?(C=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=C)):(e=null,t=C),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?(h=me(),h!==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=oe(),O!==null?i=[i,e,l,u,f,h,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?(C=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=C)):(e=null,t=C),e=e!==null?e:"",e!==null?(C=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=C)):(l=null,t=C),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?(h=":",t++):(h=null,_('":"')),h!==null?(m=me(),m!==null?(r.charCodeAt(t)===58?(v=":",t++):(v=null,_('":"')),v!==null?(S=oe(),S!==null?i=[i,e,l,u,f,h,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?(C=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=C)):(e=null,t=C),e=e!==null?e:"",e!==null?(C=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=C)):(l=null,t=C),l=l!==null?l:"",l!==null?(C=t,r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=C)):(u=null,t=C),u=u!==null?u:"",u!==null?(r.substr(t,2)==="::"?(f="::",t+=2):(f=null,_('"::"')),f!==null?(h=me(),h!==null?(r.charCodeAt(t)===58?(m=":",t++):(m=null,_('":"')),m!==null?(v=oe(),v!==null?i=[i,e,l,u,f,h,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?(C=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=C)):(e=null,t=C),e=e!==null?e:"",e!==null?(C=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=C)):(l=null,t=C),l=l!==null?l:"",l!==null?(C=t,r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=C)):(u=null,t=C),u=u!==null?u:"",u!==null?(C=t,r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(h=me(),h!==null?f=[f,h]:(f=null,t=C)):(f=null,t=C),f=f!==null?f:"",f!==null?(r.substr(t,2)==="::"?(h="::",t+=2):(h=null,_('"::"')),h!==null?(m=oe(),m!==null?i=[i,e,l,u,f,h,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?(C=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=C)):(e=null,t=C),e=e!==null?e:"",e!==null?(C=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=C)):(l=null,t=C),l=l!==null?l:"",l!==null?(C=t,r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=C)):(u=null,t=C),u=u!==null?u:"",u!==null?(C=t,r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(h=me(),h!==null?f=[f,h]:(f=null,t=C)):(f=null,t=C),f=f!==null?f:"",f!==null?(C=t,r.charCodeAt(t)===58?(h=":",t++):(h=null,_('":"')),h!==null?(m=me(),m!==null?h=[h,m]:(h=null,t=C)):(h=null,t=C),h=h!==null?h:"",h!==null?(r.substr(t,2)==="::"?(m="::",t+=2):(m=null,_('"::"')),m!==null?(v=me(),v!==null?i=[i,e,l,u,f,h,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?(C=t,r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=me(),l!==null?e=[e,l]:(e=null,t=C)):(e=null,t=C),e=e!==null?e:"",e!==null?(C=t,r.charCodeAt(t)===58?(l=":",t++):(l=null,_('":"')),l!==null?(u=me(),u!==null?l=[l,u]:(l=null,t=C)):(l=null,t=C),l=l!==null?l:"",l!==null?(C=t,r.charCodeAt(t)===58?(u=":",t++):(u=null,_('":"')),u!==null?(f=me(),f!==null?u=[u,f]:(u=null,t=C)):(u=null,t=C),u=u!==null?u:"",u!==null?(C=t,r.charCodeAt(t)===58?(f=":",t++):(f=null,_('":"')),f!==null?(h=me(),h!==null?f=[f,h]:(f=null,t=C)):(f=null,t=C),f=f!==null?f:"",f!==null?(C=t,r.charCodeAt(t)===58?(h=":",t++):(h=null,_('":"')),h!==null?(m=me(),m!==null?h=[h,m]:(h=null,t=C)):(h=null,t=C),h=h!==null?h:"",h!==null?(C=t,r.charCodeAt(t)===58?(m=":",t++):(m=null,_('":"')),m!==null?(v=me(),v!==null?m=[m,v]:(m=null,t=C)):(m=null,t=C),m=m!==null?m:"",m!==null?(r.substr(t,2)==="::"?(v="::",t+=2):(v=null,_('"::"')),v!==null?i=[i,e,l,u,f,h,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)}(Ns)),i===null&&(t=Ns),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 oe(){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=lt()),i}function lt(){var i,e,l,u,f,h,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?(h=".",t++):(h=null,_('"."')),h!==null?(m=Gt(),m!==null?i=[i,e,l,u,f,h,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 Es(){var i,e,l,u,f,h,m;return h=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}(h,i)),i===null&&(t=h),i}function hr(){var i,e,l,u;for(i=[],u=t,r.charCodeAt(t)===59?(e=";",t++):(e=null,_('";"')),e!==null?(l=In(),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=In(),l!==null?e=[e,l]:(e=null,t=u)):(e=null,t=u);return i}function In(){var i;return i=bn(),i===null&&(i=dr(),i===null&&(i=pr(),i===null&&(i=mr(),i===null&&(i=gr(),i===null&&(i=Tr(),i===null&&(i=vr())))))),i}function bn(){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,h){b.uri_params||(b.uri_params={}),b.uri_params.transport=h.toLowerCase()}(l,i[1])),i===null&&(t=l),i}function dr(){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,h){b.uri_params||(b.uri_params={}),b.uri_params.user=h.toLowerCase()}(l,i[1])),i===null&&(t=l),i}function pr(){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=Xs(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,h){b.uri_params||(b.uri_params={}),b.uri_params.method=h}(l,i[1])),i===null&&(t=l),i}function mr(){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,h){b.params||(b.params={}),b.params.ttl=h}(l,i[1])),i===null&&(t=l),i}function gr(){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=zt(),e!==null?i=[i,e]:(i=null,t=u)):(i=null,t=u),i!==null&&(i=function(f,h){b.uri_params||(b.uri_params={}),b.uri_params.maddr=h}(l,i[1])),i===null&&(t=l),i}function Tr(){var i,e,l,u,f,h;return u=t,f=t,r.substr(t,2).toLowerCase()==="lr"?(i=r.substr(t,2),t+=2):(i=null,_('"lr"')),i!==null?(h=t,r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e!==null?(l=U(),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h),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 vr(){var i,e,l,u,f,h;return u=t,f=t,i=Er(),i!==null?(h=t,r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e!==null?(l=Sr(),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h),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 Er(){var i,e,l;if(l=t,e=Ss(),e!==null)for(i=[];e!==null;)i.push(e),e=Ss();else i=null;return i!==null&&(i=function(u,f){return f.join("")}(l,i)),i===null&&(t=l),i}function Sr(){var i,e,l;if(l=t,e=Ss(),e!==null)for(i=[];e!==null;)i.push(e),e=Ss();else i=null;return i!==null&&(i=function(u,f){return f.join("")}(l,i)),i===null&&(t=l),i}function Ss(){var i;return i=ys(),i===null&&(i=N(),i===null&&(i=Se())),i}function ys(){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 yr(){var i,e,l,u,f,h,m;if(h=t,r.charCodeAt(t)===63?(i="?",t++):(i=null,_('"?"')),i!==null)if(e=Gs(),e!==null){for(l=[],m=t,r.charCodeAt(t)===38?(u="&",t++):(u=null,_('"&"')),u!==null?(f=Gs(),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=Gs(),f!==null?u=[u,f]:(u=null,t=m)):(u=null,t=m);l!==null?i=[i,e,l]:(i=null,t=h)}else i=null,t=h;else i=null,t=h;return i}function Gs(){var i,e,l,u,f;return u=t,f=t,i=Ws(),i!==null?(r.charCodeAt(t)===61?(e="=",t++):(e=null,_('"="')),e!==null?(l=Ar(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,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 Ws(){var i,e;if(e=As(),e===null&&(e=N(),e===null&&(e=Se())),e!==null)for(i=[];e!==null;)i.push(e),e=As(),e===null&&(e=N(),e===null&&(e=Se()));else i=null;return i}function Ar(){var i,e;for(i=[],e=As(),e===null&&(e=N(),e===null&&(e=Se()));e!==null;)i.push(e),e=As(),e===null&&(e=N(),e===null&&(e=Se()));return i}function As(){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 Ks(){var i;return i=Qs(),i===null&&(i=al()),i}function al(){var i,e,l,u,f,h;return h=t,i=Xs(),i!==null?(e=I(),e!==null?(l=Cr(),l!==null?(u=I(),u!==null?(f=Dn(),f!==null?i=[i,e,l,u,f]:(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h),i}function Cr(){var i;return i=we(),i===null&&(i=wn()),i}function wn(){var i,e,l,u;return u=t,i=bs(),i!==null?(r.charCodeAt(t)===58?(e=":",t++):(e=null,_('":"')),e!==null?(l=On(),l===null&&(l=zs()),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function On(){var i,e,l,u,f;return u=t,i=Rr(),i===null&&(i=Ys()),i!==null?(f=t,r.charCodeAt(t)===63?(e="?",t++):(e=null,_('"?"')),e!==null?(l=Dr(),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 Rr(){var i,e,l,u;return u=t,r.substr(t,2)==="//"?(i="//",t+=2):(i=null,_('"//"')),i!==null?(e=br(),e!==null?(l=Ys(),l=l!==null?l:"",l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Ys(){var i,e,l;return l=t,r.charCodeAt(t)===47?(i="/",t++):(i=null,_('"/"')),i!==null?(e=Ir(),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=Rs(),i!==null){for(e=[],l=Cs();l!==null;)e.push(l),l=Cs();e!==null?i=[i,e]:(i=null,t=u)}else i=null,t=u;return i}function Cs(){var i;return i=ae(),i===null&&(i=N(),i===null&&(i=Se())),i}function Rs(){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 Ir(){var i,e,l,u,f,h;if(f=t,i=Js(),i!==null){for(e=[],h=t,r.charCodeAt(t)===47?(l="/",t++):(l=null,_('"/"')),l!==null?(u=Js(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,r.charCodeAt(t)===47?(l="/",t++):(l=null,_('"/"')),l!==null?(u=Js(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Js(){var i,e,l,u,f,h;for(f=t,i=[],e=os();e!==null;)i.push(e),e=os();if(i!==null){for(e=[],h=t,r.charCodeAt(t)===59?(l=";",t++):(l=null,_('";"')),l!==null?(u=Is(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,r.charCodeAt(t)===59?(l=";",t++):(l=null,_('";"')),l!==null?(u=Is(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Is(){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 bs(){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(h){b.scheme=r.substring(t,h)}(u)),i===null&&(t=u),i}function br(){var i;return i=wr(),i===null&&(i=Or()),i}function wr(){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=js(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i=i!==null?i:"",i}function Or(){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 Dr(){var i,e;for(i=[],e=Cs();e!==null;)i.push(e),e=Cs();return i}function Dn(){var i,e,l,u,f,h,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(h=g(),h!==null)for(f=[];h!==null;)f.push(h),h=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 Nn(){var i;return r.substr(t,6)==="INVITE"?(i="INVITE",t+=6):(i=null,_('"INVITE"')),i}function Nr(){var i;return r.substr(t,3)==="ACK"?(i="ACK",t+=3):(i=null,_('"ACK"')),i}function Ur(){var i;return r.substr(t,7)==="OPTIONS"?(i="OPTIONS",t+=7):(i=null,_('"OPTIONS"')),i}function Pr(){var i;return r.substr(t,3)==="BYE"?(i="BYE",t+=3):(i=null,_('"BYE"')),i}function xr(){var i;return r.substr(t,6)==="CANCEL"?(i="CANCEL",t+=6):(i=null,_('"CANCEL"')),i}function Mr(){var i;return r.substr(t,8)==="REGISTER"?(i="REGISTER",t+=8):(i=null,_('"REGISTER"')),i}function kr(){var i;return r.substr(t,9)==="SUBSCRIBE"?(i="SUBSCRIBE",t+=9):(i=null,_('"SUBSCRIBE"')),i}function Lr(){var i;return r.substr(t,6)==="NOTIFY"?(i="NOTIFY",t+=6):(i=null,_('"NOTIFY"')),i}function $r(){var i;return r.substr(t,5)==="REFER"?(i="REFER",t+=5):(i=null,_('"REFER"')),i}function Xs(){var i,e;return e=t,i=Nn(),i===null&&(i=Nr(),i===null&&(i=Ur(),i===null&&(i=Pr(),i===null&&(i=xr(),i===null&&(i=Mr(),i===null&&(i=kr(),i===null&&(i=Lr(),i===null&&(i=$r(),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 Qs(){var i,e,l,u,f,h;return h=t,i=Dn(),i!==null?(e=I(),e!==null?(l=Hr(),l!==null?(u=I(),u!==null?(f=Vr(),f!==null?i=[i,e,l,u,f]:(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h),i}function Hr(){var i,e;return e=t,i=Fr(),i!==null&&(i=function(l,u){b.status_code=parseInt(u.join(""))}(e,i)),i===null&&(t=e),i}function Fr(){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 Vr(){var i,e,l;for(l=t,i=[],e=ae(),e===null&&(e=N(),e===null&&(e=Se(),e===null&&(e=z(),e===null&&(e=H(),e===null&&(e=I(),e===null&&(e=$()))))));e!==null;)i.push(e),e=ae(),e===null&&(e=N(),e===null&&(e=Se(),e===null&&(e=z(),e===null&&(e=H(),e===null&&(e=I(),e===null&&(e=$()))))));return i!==null&&(i=function(u){b.reason_phrase=r.substring(t,u)}(l)),i===null&&(t=l),i}function ul(){var i,e,l,u,f,h;if(f=t,i=tn(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=tn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=tn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Lo(){var i,e,l,u,f,h;return u=t,f=t,i=et(),i!==null?(h=t,r.charCodeAt(t)===64?(e="@",t++):(e=null,_('"@"')),e!==null?(l=et(),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h),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 $o(){var i,e,l,u,f,h,m;if(f=t,i=ee(),i===null)if(h=t,i=Un(),i!==null){for(e=[],m=t,l=Ce(),l!==null?(u=Un(),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=Un(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;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 Un(){var i,e,l,u,f,h,m;if(f=t,h=t,i=de(),i===null&&(i=Lt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=ws(),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=ws(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;return i!==null&&(i=function(v){var S;b.multi_header||(b.multi_header=[]);try{S=new as(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,h,m;if(f=t,h=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=h)}else i=null,t=h;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 ws(){var i;return i=Pn(),i===null&&(i=jr(),i===null&&(i=Ge())),i}function Pn(){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=Xt(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,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,r.substr(t,7).toLowerCase()==="expires"?(i=r.substr(t,7),t+=7):(i=null,_('"expires"')),i!==null?(e=G(),e!==null?(l=Jt(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,m){b.params||(b.params={}),b.params.expires=m}(u,i[2])),i===null&&(t=u),i}function Jt(){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 Xt(){var i,e,l,u,f,h,m,v;return h=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))}(h)),i===null&&(t=h),i}function Ge(){var i,e,l,u,f,h;return u=t,f=t,i=U(),i!==null?(h=t,e=G(),e!==null?(l=We(),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h),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 cl(){var i,e,l,u,f,h;if(f=t,i=fl(),i!==null){for(e=[],h=t,l=le(),l!==null?(u=xn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=le(),l!==null?(u=xn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function fl(){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 xn(){var i;return i=Mn(),i===null&&(i=Ge()),i}function Mn(){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 _l(){var i,e,l,u,f,h;if(f=t,i=U(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Ho(){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 Fo(){var i,e;return e=t,i=hl(),i!==null&&(i=function(l){b=r.substring(t,l)}(e)),i===null&&(t=e),i}function hl(){var i,e,l,u,f,h,m,v;if(m=t,i=qr(),i!==null)if(e=W(),e!==null)if(l=Wr(),l!==null){for(u=[],v=t,f=le(),f!==null?(h=kn(),h!==null?f=[f,h]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=le(),f!==null?(h=kn(),h!==null?f=[f,h]:(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 qr(){var i;return i=Br(),i===null&&(i=Gr()),i}function Br(){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=Zs()))))),i}function Gr(){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=Zs())),i}function Zs(){var i;return i=U(),i===null&&(i=en()),i}function en(){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 Wr(){var i;return i=Zs(),i===null&&(i=U()),i}function kn(){var i,e,l,u;return u=t,i=U(),i!==null?(e=G(),e!==null?(l=Ln(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Ln(){var i;return i=U(),i===null&&(i=Ie()),i}function dl(){var i,e,l,u;return u=t,i=pl(),i!==null?(e=ve(),e!==null?(l=Xs(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function pl(){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 ml(){var i,e;return e=t,i=Jt(),i!==null&&(i=function(l,u){b=u}(e,i)),i===null&&(t=e),i}function Vo(){var i,e,l,u,f,h,m;if(f=t,h=t,i=tn(),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=h)}else i=null,t=h;return i!==null&&(i=function(v,S){b.event=S.join("").toLowerCase()}(f,i[0])),i===null&&(t=f),i}function tn(){var i,e,l,u,f,h;if(f=t,i=P(),i!==null){for(e=[],h=t,r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l!==null?(u=P(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,r.charCodeAt(t)===46?(l=".",t++):(l=null,_('"."')),l!==null?(u=P(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function sn(){var i,e,l,u,f,h,m;if(f=t,h=t,i=de(),i===null&&(i=Lt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=Kr(),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=Kr(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;return i!==null&&(i=function(v){var S=b.tag;try{b=new as(b.uri,b.display_name,b.params),S&&b.setParam("tag",S)}catch{b=-1}}()),i===null&&(t=f),i}function Kr(){var i;return i=nn(),i===null&&(i=Ge()),i}function nn(){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(h,m){b.tag=m}(u,i[2])),i===null&&(t=u),i}function Yr(){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 jo(){var i,e;return e=t,i=Jt(),i!==null&&(i=function(l,u){b=u}(e,i)),i===null&&(t=e),i}function qo(){var i,e,l,u,f,h,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,h=le(),h!==null?(m=Ge(),m!==null?h=[h,m]:(h=null,t=O)):(h=null,t=O);h!==null;)f.push(h),O=t,h=le(),h!==null?(m=Ge(),m!==null?h=[h,m]:(h=null,t=O)):(h=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 as(b.uri,b.display_name,b.params)}catch{b=-1}}()),i===null&&(t=v),i}function Bo(){var i;return i=zr(),i}function zr(){var i,e,l,u,f,h,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=Qt(),l!==null){for(u=[],v=t,f=Ce(),f!==null?(h=Qt(),h!==null?f=[f,h]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=Ce(),f!==null?(h=Qt(),h!==null?f=[f,h]:(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=$n()),i}function $n(){var i,e,l,u,f,h,m,v;if(m=t,i=U(),i!==null)if(e=ve(),e!==null)if(l=Os(),l!==null){for(u=[],v=t,f=Ce(),f!==null?(h=Os(),h!==null?f=[f,h]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=Ce(),f!==null?(h=Os(),h!==null?f=[f,h]:(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 Os(){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 Qt(){var i;return i=rn(),i===null&&(i=Xr(),i===null&&(i=on(),i===null&&(i=Zr(),i===null&&(i=ei(),i===null&&(i=ti(),i===null&&(i=si(),i===null&&(i=Os()))))))),i}function rn(){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=Jr(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Jr(){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 Xr(){var i,e,l,u,f,h,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=tt(),l!==null)if(u=ln(),u!==null){if(f=[],S=t,m=I(),m!==null)for(h=[];m!==null;)h.push(m),m=I();else h=null;for(h!==null?(m=ln(),m!==null?h=[h,m]:(h=null,t=S)):(h=null,t=S);h!==null;){if(f.push(h),S=t,m=I(),m!==null)for(h=[];m!==null;)h.push(m),m=I();else h=null;h!==null?(m=ln(),m!==null?h=[h,m]:(h=null,t=S)):(h=null,t=S)}f!==null?(h=it(),h!==null?i=[i,e,l,u,f,h]:(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 ln(){var i;return i=wn(),i===null&&(i=Ys()),i}function on(){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=Qr(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function Qr(){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 Zr(){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(h,m){b.opaque=m}(u,i[2])),i===null&&(t=u),i}function ei(){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(h){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(h){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 ti(){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(h,m){b.algorithm=m.toUpperCase()}(u,i[2])),i===null&&(t=u),i}function si(){var i,e,l,u,f,h,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=tt(),l!==null){if(S=t,u=an(),u!==null){for(f=[],O=t,r.charCodeAt(t)===44?(h=",",t++):(h=null,_('","')),h!==null?(m=an(),m!==null?h=[h,m]:(h=null,t=O)):(h=null,t=O);h!==null;)f.push(h),O=t,r.charCodeAt(t)===44?(h=",",t++):(h=null,_('","')),h!==null?(m=an(),m!==null?h=[h,m]:(h=null,t=O)):(h=null,t=O);f!==null?u=[u,f]:(u=null,t=S)}else u=null,t=S;u!==null?(f=it(),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 an(){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 Hn(){var i,e,l,u,f,h;if(f=t,i=U(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Go(){var i,e,l,u,f,h,m;if(f=t,h=t,i=Fn(),i!==null){for(e=[],m=t,l=Ce(),l!==null?(u=Fn(),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=Fn(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;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 Fn(){var i,e,l,u,f,h,m;if(f=t,h=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=h)}else i=null,t=h;return i!==null&&(i=function(v){var S;b.multi_header||(b.multi_header=[]);try{S=new as(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 Vn(){var i,e,l,u,f,h,m;if(f=t,h=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=ni(),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=ni(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;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 ni(){var i;return i=jn(),i===null&&(i=Ge()),i}function jn(){var i,e,l,u,f,h;if(f=t,h=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=h)}else i=null,t=h;else i=null,t=h;return i!==null&&(i=function(m,v){b.cause=parseInt(v.join(""))}(f,i[2])),i===null&&(t=f),i}function gl(){var i,e,l,u,f,h;if(f=t,i=U(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Wo(){var i,e,l,u,f,h;if(f=t,i=qn(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=qn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=qn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function qn(){var i,e,l,u,f,h;if(f=t,i=Lt(),i!==null){for(e=[],h=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=le(),l!==null?(u=Ge(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Bn(){var i,e,l,u,f,h;if(f=t,i=Tl(),i!==null){for(e=[],h=t,l=le(),l!==null?(u=Gn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=le(),l!==null?(u=Gn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Tl(){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 Gn(){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=Wn(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,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=Jt(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,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=Jt(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,m){typeof m<"u"&&(b.retry_after=m)}(u,i[2])),i===null&&(t=u),i===null&&(i=Ge()))),i}function Wn(){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 vl(){var i;return i=B(),i=i!==null?i:"",i}function Ko(){var i,e,l,u,f,h;if(f=t,i=U(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=U(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i=i!==null?i:"",i}function Yo(){var i,e,l,u,f,h,m;if(f=t,h=t,i=de(),i===null&&(i=Lt()),i!==null){for(e=[],m=t,l=le(),l!==null?(u=ri(),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=ri(),u!==null?l=[l,u]:(l=null,t=m)):(l=null,t=m);e!==null?i=[i,e]:(i=null,t=h)}else i=null,t=h;return i!==null&&(i=function(v){var S=b.tag;try{b=new as(b.uri,b.display_name,b.params),S&&b.setParam("tag",S)}catch{b=-1}}()),i===null&&(t=f),i}function ri(){var i;return i=nn(),i===null&&(i=Ge()),i}function ii(){var i,e,l,u,f,h;if(f=t,i=Kn(),i!==null){for(e=[],h=t,l=Ce(),l!==null?(u=Kn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=Ce(),l!==null?(u=Kn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Kn(){var i,e,l,u,f,h,m,v;if(m=t,i=fi(),i!==null)if(e=ve(),e!==null)if(l=di(),l!==null){for(u=[],v=t,f=le(),f!==null?(h=Ds(),h!==null?f=[f,h]:(f=null,t=v)):(f=null,t=v);f!==null;)u.push(f),v=t,f=le(),f!==null?(h=Ds(),h!==null?f=[f,h]:(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 Ds(){var i;return i=Yn(),i===null&&(i=li(),i===null&&(i=oi(),i===null&&(i=ai(),i===null&&(i=ui(),i===null&&(i=Ge()))))),i}function Yn(){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(h,m){b.ttl=m}(u,i[2])),i===null&&(t=u),i}function li(){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=zt(),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,m){b.maddr=m}(u,i[2])),i===null&&(t=u),i}function oi(){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=lt(),l===null&&(l=Bs()),l!==null?i=[i,e,l]:(i=null,t=f)):(i=null,t=f)):(i=null,t=f),i!==null&&(i=function(h,m){b.received=m}(u,i[2])),i===null&&(t=u),i}function ai(){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(h,m){b.branch=m}(u,i[2])),i===null&&(t=u),i}function ui(){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=ci(),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 ci(){var i,e,l,u,f,h,m;return h=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(""))}(h,i)),i===null&&(t=h),i}function fi(){var i,e,l,u,f,h;return h=t,i=_i(),i!==null?(e=W(),e!==null?(l=U(),l!==null?(u=W(),u!==null?(f=hi(),f!==null?i=[i,e,l,u,f]:(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h)):(i=null,t=h),i}function _i(){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 hi(){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 di(){var i,e,l,u,f;return u=t,i=pi(),i!==null?(f=t,e=ye(),e!==null?(l=mi(),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;return e=t,i=lt(),i===null&&(i=Rn(),i===null&&(i=ls())),i!==null&&(i=function(l){b.host=r.substring(t,l)}(e)),i===null&&(t=e),i}function mi(){var i,e,l,u,f,h,m;return h=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(""))}(h,i)),i===null&&(t=h),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(h,m){return parseInt(m.join(""))}(u,i)),i===null&&(t=u),i}function gi(){var i;return i=zr(),i}function zo(){var i,e,l,u,f,h;if(f=t,i=El(),i!==null){for(e=[],h=t,l=le(),l!==null?(u=Jn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=le(),l!==null?(u=Jn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function El(){var i,e;return e=t,i=Jt(),i!==null&&(i=function(l,u){b.expires=u}(e,i)),i===null&&(t=e),i}function Jn(){var i;return i=Xn(),i===null&&(i=Ge()),i}function Xn(){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(h,m){b.refresher=m.toLowerCase()}(u,i[2])),i===null&&(t=u),i}function Sl(){var i,e,l,u;return u=t,i=U(),i!==null?(e=D(),e!==null?(l=yl(),l!==null?i=[i,e,l]:(i=null,t=u)):(i=null,t=u)):(i=null,t=u),i}function yl(){var i,e;for(i=[],e=j(),e===null&&(e=H(),e===null&&(e=ve()));e!==null;)i.push(e),e=j(),e===null&&(e=H(),e===null&&(e=ve()));return i}function Al(){var i,e;for(i=[],e=A();e!==null;)i.push(e),e=A();return i}function Jo(){var i,e,l;return l=t,r.substr(t,5)==="uuid:"?(i="uuid:",t+=5):(i=null,_('"uuid:"')),i!==null?(e=Cl(),e!==null?i=[i,e]:(i=null,t=l)):(i=null,t=l),i}function Cl(){var i,e,l,u,f,h,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?(h="-",t++):(h=null,_('"-"')),h!==null?(m=Ht(),m!==null?(r.charCodeAt(t)===45?(v="-",t++):(v=null,_('"-"')),v!==null?(S=Ti(),S!==null?i=[i,e,l,u,f,h,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(Ne,It){b=r.substring(t+5,Ne)}(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 Ti(){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 Rl(){var i,e,l,u,f,h,m;if(f=t,h=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=h)}else i=null,t=h;return i!==null&&(i=function(v){try{b=new as(b.uri,b.display_name,b.params)}catch{b=-1}}()),i===null&&(t=f),i}function Xo(){var i,e,l,u,f,h;if(f=t,i=Il(),i!==null){for(e=[],h=t,l=le(),l!==null?(u=Qn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);l!==null;)e.push(l),h=t,l=le(),l!==null?(u=Qn(),u!==null?l=[l,u]:(l=null,t=h)):(l=null,t=h);e!==null?i=[i,e]:(i=null,t=f)}else i=null,t=f;return i}function Il(){var i,e,l,u,f,h;return u=t,f=t,i=et(),i!==null?(h=t,r.charCodeAt(t)===64?(e="@",t++):(e=null,_('"@"')),e!==null?(l=et(),l!==null?e=[e,l]:(e=null,t=h)):(e=null,t=h),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 Qn(){var i;return i=Zn(),i===null&&(i=vi(),i===null&&(i=Ei(),i===null&&(i=Ge()))),i}function Zn(){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(h,m){b.to_tag=m}(u,i[2])),i===null&&(t=u),i}function vi(){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(h,m){b.from_tag=m}(u,i[2])),i===null&&(t=u),i}function Ei(){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 bl(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 Qo(){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 wl=Ts(),as=Iu(),b={},w=a[o]();if(w===null||t!==r.length){var Si=Math.max(t,n),yi=Si<r.length?r.charAt(Si):null,Ol=Qo();return new this.SyntaxError(bl(p),yi,Si,Ol.line,Ol.column),-1}return b},toSource:function(){return this._source}};return s.SyntaxError=function(r,o,a,t,n){function p(_,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=o,this.message=p(r,o),this.offset=a,this.line=t,this.column=n},s.SyntaxError.prototype=Error.prototype,s}()),Aa}var Ca,Gc;function Ts(){if(Gc)return Ca;Gc=1;const c=Ue,s=St(),r=is();return Ca=class s_{static parse(a){if(a=r.parse(a,"SIP_URI"),a!==-1)return a}constructor(a,t,n,p,_={},d={}){if(!n)throw new TypeError('missing or invalid "host" parameter');this._parameters={},this._headers={},this._scheme=a||c.SIP,this._user=t,this._host=n,this._port=p;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(a){this._scheme=a.toLowerCase()}get user(){return this._user}set user(a){this._user=a}get host(){return this._host}set host(a){this._host=a.toLowerCase()}get port(){return this._port}set port(a){this._port=a===0?a:parseInt(a,10)||null}setParam(a,t){a&&(this._parameters[a.toLowerCase()]=typeof t>"u"||t===null?null:t.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 t=this._parameters[a];return delete this._parameters[a],t}}clearParams(){this._parameters={}}setHeader(a,t){this._headers[s.headerize(a)]=Array.isArray(t)?t:[t]}getHeader(a){if(a)return this._headers[s.headerize(a)]}hasHeader(a){if(a)return this._headers.hasOwnProperty(s.headerize(a))&&!0||!1}deleteHeader(a){if(a=s.headerize(a),this._headers.hasOwnProperty(a)){const t=this._headers[a];return delete this._headers[a],t}}clearHeaders(){this._headers={}}clone(){return new s_(this._scheme,this._user,this._host,this._port,JSON.parse(JSON.stringify(this._parameters)),JSON.parse(JSON.stringify(this._headers)))}toString(){const a=[];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 p of this._headers[n])a.push(`${n}=${p}`);return a.length>0&&(t+=`?${a.join("&")}`),t}toAor(a){let t=`${this._scheme}:`;return this._user&&(t+=`${s.escapeUser(this._user)}@`),t+=this._host,a&&(this._port||this._port===0)&&(t+=`:${this._port}`),t}},Ca}var Wc;function St(){if(Wc)return Ze;Wc=1;const c=Ue,s=Ts(),r=is();Ze.str_utf8_length=n=>unescape(encodeURIComponent(n)).length;const o=Ze.isFunction=n=>n!==void 0?Object.prototype.toString.call(n)==="[object Function]":!1;Ze.isString=n=>n!==void 0?Object.prototype.toString.call(n)==="[object String]":!1,Ze.isDecimal=n=>!isNaN(n)&&parseFloat(n)===parseInt(n,10),Ze.isEmpty=n=>n===null||n===""||n===void 0||Array.isArray(n)&&n.length===0||typeof n=="number"&&isNaN(n),Ze.hasMethods=function(n,...p){for(const _ of p)if(o(n[_]))return!1;return!0};const a=Ze.createRandomToken=(n,p=32)=>{let _,d,g="";for(_=0;_<n;_++)d=Math.random()*p|0,g+=d.toString(p);return g};Ze.newTag=()=>a(10),Ze.newUUID=()=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,p=>{const _=Math.random()*16|0;return(p==="x"?_:_&3|8).toString(16)}),Ze.hostType=n=>{if(n){if(n=r.parse(n,"host"),n!==-1)return n.host_type}else return};const t=Ze.escapeUser=n=>encodeURIComponent(decodeURIComponent(n)).replace(/%3A/ig,":").replace(/%2B/ig,"+").replace(/%3F/ig,"?").replace(/%2F/ig,"/");return Ze.normalizeTarget=(n,p)=>{if(n){if(n instanceof s)return n;if(typeof n=="string"){const _=n.split("@");let d,g;switch(_.length){case 1:if(!p)return;d=n,g=p;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},Ze.headerize=n=>{const p={"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 p[d]&&(d=p[d]),d},Ze.sipErrorCause=n=>{for(const p in c.SIP_ERROR_CAUSES)if(c.SIP_ERROR_CAUSES[p].indexOf(n)!==-1)return c.causes[p];return c.causes.SIP_FAILURE_CODE},Ze.getRandomTestNetIP=()=>{function n(p,_){return Math.floor(Math.random()*(_-p+1)+p)}return`192.0.2.${n(1,254)}`},Ze.calculateMD5=n=>{function p(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)),_(p(Ee,ue),Ae)}function A(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=_(Ee,_(_(g(Ae,Ie,Oe),pe),de)),_(p(Ee,ue),Ae)}function R(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=_(Ee,_(_(T(Ae,Ie,Oe),pe),de)),_(p(Ee,ue),Ae)}function I(Ee,Ae,Ie,Oe,pe,ue,de){return Ee=_(Ee,_(_(E(Ae,Ie,Oe),pe),de)),_(p(Ee,ue),Ae)}function $(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,De=0;for(;De<Ie;)Ae=(De-De%4)/4,we=De%4*8,de[Ae]=de[Ae]|Ee.charCodeAt(De)<<we,De++;return Ae=(De-De%4)/4,we=De%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 ae(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=[],F,Se,ve,M,D,B,j,z,H;const X=7,U=12,P=17,se=22,et=5,ee=9,W=14,G=20,re=4,ge=11,be=16,xe=23,Ce=6,le=10,ye=15,tt=21;for(n=ae(n),N=$(n),B=1732584193,j=4023233417,z=2562383102,H=271733878,F=0;F<N.length;F+=16)Se=B,ve=j,M=z,D=H,B=y(B,j,z,H,N[F+0],X,3614090360),H=y(H,B,j,z,N[F+1],U,3905402710),z=y(z,H,B,j,N[F+2],P,606105819),j=y(j,z,H,B,N[F+3],se,3250441966),B=y(B,j,z,H,N[F+4],X,4118548399),H=y(H,B,j,z,N[F+5],U,1200080426),z=y(z,H,B,j,N[F+6],P,2821735955),j=y(j,z,H,B,N[F+7],se,4249261313),B=y(B,j,z,H,N[F+8],X,1770035416),H=y(H,B,j,z,N[F+9],U,2336552879),z=y(z,H,B,j,N[F+10],P,4294925233),j=y(j,z,H,B,N[F+11],se,2304563134),B=y(B,j,z,H,N[F+12],X,1804603682),H=y(H,B,j,z,N[F+13],U,4254626195),z=y(z,H,B,j,N[F+14],P,2792965006),j=y(j,z,H,B,N[F+15],se,1236535329),B=A(B,j,z,H,N[F+1],et,4129170786),H=A(H,B,j,z,N[F+6],ee,3225465664),z=A(z,H,B,j,N[F+11],W,643717713),j=A(j,z,H,B,N[F+0],G,3921069994),B=A(B,j,z,H,N[F+5],et,3593408605),H=A(H,B,j,z,N[F+10],ee,38016083),z=A(z,H,B,j,N[F+15],W,3634488961),j=A(j,z,H,B,N[F+4],G,3889429448),B=A(B,j,z,H,N[F+9],et,568446438),H=A(H,B,j,z,N[F+14],ee,3275163606),z=A(z,H,B,j,N[F+3],W,4107603335),j=A(j,z,H,B,N[F+8],G,1163531501),B=A(B,j,z,H,N[F+13],et,2850285829),H=A(H,B,j,z,N[F+2],ee,4243563512),z=A(z,H,B,j,N[F+7],W,1735328473),j=A(j,z,H,B,N[F+12],G,2368359562),B=R(B,j,z,H,N[F+5],re,4294588738),H=R(H,B,j,z,N[F+8],ge,2272392833),z=R(z,H,B,j,N[F+11],be,1839030562),j=R(j,z,H,B,N[F+14],xe,4259657740),B=R(B,j,z,H,N[F+1],re,2763975236),H=R(H,B,j,z,N[F+4],ge,1272893353),z=R(z,H,B,j,N[F+7],be,4139469664),j=R(j,z,H,B,N[F+10],xe,3200236656),B=R(B,j,z,H,N[F+13],re,681279174),H=R(H,B,j,z,N[F+0],ge,3936430074),z=R(z,H,B,j,N[F+3],be,3572445317),j=R(j,z,H,B,N[F+6],xe,76029189),B=R(B,j,z,H,N[F+9],re,3654602809),H=R(H,B,j,z,N[F+12],ge,3873151461),z=R(z,H,B,j,N[F+15],be,530742520),j=R(j,z,H,B,N[F+2],xe,3299628645),B=I(B,j,z,H,N[F+0],Ce,4096336452),H=I(H,B,j,z,N[F+7],le,1126891415),z=I(z,H,B,j,N[F+14],ye,2878612391),j=I(j,z,H,B,N[F+5],tt,4237533241),B=I(B,j,z,H,N[F+12],Ce,1700485571),H=I(H,B,j,z,N[F+3],le,2399980690),z=I(z,H,B,j,N[F+10],ye,4293915773),j=I(j,z,H,B,N[F+1],tt,2240044497),B=I(B,j,z,H,N[F+8],Ce,1873313359),H=I(H,B,j,z,N[F+15],le,4264355552),z=I(z,H,B,j,N[F+6],ye,2734768916),j=I(j,z,H,B,N[F+13],tt,1309151649),B=I(B,j,z,H,N[F+4],Ce,4149444226),H=I(H,B,j,z,N[F+11],le,3174756917),z=I(z,H,B,j,N[F+2],ye,718787259),j=I(j,z,H,B,N[F+9],tt,3951481745),B=_(B,Se),j=_(j,ve),z=_(z,M),H=_(H,D);return(L(B)+L(j)+L(z)+L(H)).toLowerCase()},Ze.closeMediaStream=n=>{if(n)try{let p;if(n.getTracks){p=n.getTracks();for(const _ of p)_.stop()}else{p=n.getAudioTracks();for(const _ of p)_.stop();p=n.getVideoTracks();for(const _ of p)_.stop()}}catch{(typeof n.stop=="function"||typeof n.stop=="object")&&n.stop()}},Ze.cloneArray=n=>n&&n.slice()||[],Ze.cloneObject=(n,p={})=>n&&Object.assign({},n)||p,Ze}const n_=Ut,wm=at,Et=Ue,nt=St(),Kc=Iu(),Om=is(),Ra=new wm("SIPMessage");class Mo{constructor(s,r,o,a,t,n){if(!s||!r||!o)return null;a=a||{},this.ua=o,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)),a.route_set?this.setHeader("route",a.route_set):o.configuration.use_preloaded_route&&this.setHeader("route",`<${o.transport.sip_uri};lr>`),this.setHeader("via",""),this.setHeader("max-forwards",Et.MAX_FORWARDS);const p=a.to_uri||r,_=a.to_tag?{tag:a.to_tag}:null,d=typeof a.to_display_name<"u"?a.to_display_name:null;this.to=new Kc(p,d,_),this.setHeader("to",this.to.toString());const g=a.from_uri||o.configuration.uri,T={tag:a.from_tag||nt.newTag()};let E;typeof a.from_display_name<"u"?E=a.from_display_name:o.configuration.display_name?E=o.configuration.display_name:E=null,this.from=new Kc(g,E,T),this.setHeader("from",this.from.toString());const y=a.call_id||o.configuration.jssip_id+nt.createRandomToken(15);this.call_id=y,this.setHeader("call-id",y);const A=a.cseq||Math.floor(Math.random()*1e4);this.cseq=A,this.setHeader("cseq",`${A} ${s}`)}setHeader(s,r){const o=new RegExp(`^\\s*${s}\\s*:`,"i");for(let a=0;a<this.extraHeaders.length;a++)o.test(this.extraHeaders[a])&&this.extraHeaders.splice(a,1);this.headers[nt.headerize(s)]=Array.isArray(r)?r:[r]}getHeader(s){const r=this.headers[nt.headerize(s)];if(r){if(r[0])return r[0]}else{const o=new RegExp(`^\\s*${s}\\s*:`,"i");for(const a of this.extraHeaders)if(o.test(a))return a.substring(a.indexOf(":")+1).trim()}}getHeaders(s){const r=this.headers[nt.headerize(s)],o=[];if(r){for(const a of r)o.push(a);return o}else{const a=new RegExp(`^\\s*${s}\\s*:`,"i");for(const t of this.extraHeaders)a.test(t)&&o.push(t.substring(t.indexOf(":")+1).trim());return o}}hasHeader(s){if(this.headers[nt.headerize(s)])return!0;{const r=new RegExp(`^\\s*${s}\\s*:`,"i");for(const o of this.extraHeaders)if(r.test(o))return!0}return!1}parseSDP(s){return!s&&this.sdp?this.sdp:(this.sdp=n_.parse(this.body||""),this.sdp)}toString(){let s=`${this.method} ${this.ruri} SIP/2.0\r
76
+ `;for(const a in this.headers)if(Object.prototype.hasOwnProperty.call(this.headers,a))for(const t of this.headers[a])s+=`${a}: ${t}\r
77
+ `;for(const a of this.extraHeaders)s+=`${a.trim()}\r
78
+ `;const r=[];switch(this.method){case Et.REGISTER:r.push("path","gruu");break;case Et.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 Et.UPDATE:this.ua.configuration.session_timers&&r.push("timer"),r.push("ice");break}r.push("outbound");const o=this.ua.configuration.user_agent||Et.USER_AGENT;if(s+=`Allow: ${Et.ALLOWED_METHODS}\r
79
+ `,s+=`Supported: ${r}\r
80
+ `,s+=`User-Agent: ${o}\r
81
+ `,this.body){const a=nt.str_utf8_length(this.body);s+=`Content-Length: ${a}\r
82
82
  \r
83
- `,n+=this.body}else n+=`Content-Length: 0\r
83
+ `,s+=this.body}else s+=`Content-Length: 0\r
84
84
  \r
85
- `;return n}clone(){const n=new Po(this.method,this.ruri,this.ua);return Object.keys(this.headers).forEach(function(r){n.headers[r]=this.headers[r].slice()},this),n.body=this.body,n.extraHeaders=nt.cloneArray(this.extraHeaders),n.to=this.to,n.from=this.from,n.call_id=this.call_id,n.cseq=this.cseq,n}}class Cu extends Po{constructor(n,r,o,a,t){super(vt.INVITE,n,r,o,a,t),this.transaction=null}cancel(n){this.transaction.cancel(n)}clone(){const n=new Cu(this.ruri,this.ua);return Object.keys(this.headers).forEach(function(r){n.headers[r]=this.headers[r].slice()},this),n.body=this.body,n.extraHeaders=nt.cloneArray(this.extraHeaders),n.to=this.to,n.from=this.from,n.call_id=this.call_id,n.cseq=this.cseq,n.transaction=this.transaction,n}}class Zf{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(n,r){const o={raw:r};n=nt.headerize(n),this.headers[n]?this.headers[n].push(o):this.headers[n]=[o]}getHeader(n){const r=this.headers[nt.headerize(n)];if(r){if(r[0])return r[0].raw}else return}getHeaders(n){const r=this.headers[nt.headerize(n)],o=[];if(!r)return[];for(const a of r)o.push(a.raw);return o}hasHeader(n){return!!this.headers[nt.headerize(n)]}parseHeader(n,r=0){if(n=nt.headerize(n),this.headers[n]){if(r>=this.headers[n].length){Aa.debug(`not so many "${n}" headers present`);return}}else{Aa.debug(`header "${n}" not present`);return}const o=this.headers[n][r],a=o.raw;if(o.parsed)return o.parsed;const t=Cm.parse(a,n.replace(/-/g,"_"));if(t===-1){this.headers[n].splice(r,1),Aa.debug(`error parsing "${n}" header field with value "${a}"`);return}else return o.parsed=t,t}s(n,r){return this.parseHeader(n,r)}setHeader(n,r){const o={raw:r};this.headers[nt.headerize(n)]=[o]}parseSDP(n){return!n&&this.sdp?this.sdp:(this.sdp=Qf.parse(this.body||""),this.sdp)}toString(){return this.data}}class Rm extends Zf{constructor(n){super(),this.ua=n,this.headers={},this.ruri=null,this.transport=null,this.server_transaction=null}reply(n,r,o,a,t,s){const p=[];let _=this.getHeader("To");if(n=n||null,r=r||null,!n||n<100||n>699)throw new TypeError(`Invalid status_code: ${n}`);if(r&&typeof r!="string"&&!(r instanceof String))throw new TypeError(`Invalid reason_phrase: ${r}`);r=r||vt.REASON_PHRASE[n]||"",o=nt.cloneArray(o),this.ua.configuration.extra_headers&&(o=o.concat(this.ua.configuration.extra_headers));let d=`SIP/2.0 ${n} ${r}\r
86
- `;if(this.method===vt.INVITE&&n>100&&n<=200){const T=this.getHeaders("record-route");for(const E of T)d+=`Record-Route: ${E}\r
85
+ `;return s}clone(){const s=new Mo(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=nt.cloneArray(this.extraHeaders),s.to=this.to,s.from=this.from,s.call_id=this.call_id,s.cseq=this.cseq,s}}class bu extends Mo{constructor(s,r,o,a,t){super(Et.INVITE,s,r,o,a,t),this.transaction=null}cancel(s){this.transaction.cancel(s)}clone(){const s=new bu(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=nt.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 r_{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 o={raw:r};s=nt.headerize(s),this.headers[s]?this.headers[s].push(o):this.headers[s]=[o]}getHeader(s){const r=this.headers[nt.headerize(s)];if(r){if(r[0])return r[0].raw}else return}getHeaders(s){const r=this.headers[nt.headerize(s)],o=[];if(!r)return[];for(const a of r)o.push(a.raw);return o}hasHeader(s){return!!this.headers[nt.headerize(s)]}parseHeader(s,r=0){if(s=nt.headerize(s),this.headers[s]){if(r>=this.headers[s].length){Ra.debug(`not so many "${s}" headers present`);return}}else{Ra.debug(`header "${s}" not present`);return}const o=this.headers[s][r],a=o.raw;if(o.parsed)return o.parsed;const t=Om.parse(a,s.replace(/-/g,"_"));if(t===-1){this.headers[s].splice(r,1),Ra.debug(`error parsing "${s}" header field with value "${a}"`);return}else return o.parsed=t,t}s(s,r){return this.parseHeader(s,r)}setHeader(s,r){const o={raw:r};this.headers[nt.headerize(s)]=[o]}parseSDP(s){return!s&&this.sdp?this.sdp:(this.sdp=n_.parse(this.body||""),this.sdp)}toString(){return this.data}}class Dm extends r_{constructor(s){super(),this.ua=s,this.headers={},this.ruri=null,this.transport=null,this.server_transaction=null}reply(s,r,o,a,t,n){const p=[];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||Et.REASON_PHRASE[s]||"",o=nt.cloneArray(o),this.ua.configuration.extra_headers&&(o=o.concat(this.ua.configuration.extra_headers));let d=`SIP/2.0 ${s} ${r}\r
86
+ `;if(this.method===Et.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&&n>100?_+=`;tag=${nt.newTag()}`:this.to_tag&&!this.s("to").hasParam("tag")&&(_+=`;tag=${this.to_tag}`),d+=`To: ${_}\r
88
+ `;!this.to_tag&&s>100?_+=`;tag=${nt.newTag()}`:this.to_tag&&!this.s("to").hasParam("tag")&&(_+=`;tag=${this.to_tag}`),d+=`To: ${_}\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 o)d+=`${T.trim()}\r
93
- `;switch(this.method){case vt.INVITE:this.ua.configuration.session_timers&&p.push("timer"),(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&p.push("gruu"),p.push("ice","replaces");break;case vt.UPDATE:this.ua.configuration.session_timers&&p.push("timer"),a&&p.push("ice"),p.push("replaces")}if(p.push("outbound"),this.method===vt.OPTIONS?(d+=`Allow: ${vt.ALLOWED_METHODS}\r
94
- `,d+=`Accept: ${vt.ACCEPTED_BODY_TYPES}\r
95
- `):n===405?d+=`Allow: ${vt.ALLOWED_METHODS}\r
96
- `:n===415&&(d+=`Accept: ${vt.ACCEPTED_BODY_TYPES}\r
93
+ `;switch(this.method){case Et.INVITE:this.ua.configuration.session_timers&&p.push("timer"),(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&p.push("gruu"),p.push("ice","replaces");break;case Et.UPDATE:this.ua.configuration.session_timers&&p.push("timer"),a&&p.push("ice"),p.push("replaces")}if(p.push("outbound"),this.method===Et.OPTIONS?(d+=`Allow: ${Et.ALLOWED_METHODS}\r
94
+ `,d+=`Accept: ${Et.ACCEPTED_BODY_TYPES}\r
95
+ `):s===405?d+=`Allow: ${Et.ALLOWED_METHODS}\r
96
+ `:s===415&&(d+=`Accept: ${Et.ACCEPTED_BODY_TYPES}\r
97
97
  `),d+=`Supported: ${p}\r
98
98
  `,a){const T=nt.str_utf8_length(a);d+=`Content-Type: application/sdp\r
99
99
  `,d+=`Content-Length: ${T}\r
100
100
  \r
101
101
  `,d+=a}else d+=`Content-Length: 0\r
102
102
  \r
103
- `;this.server_transaction.receiveResponse(n,d,t,s)}reply_sl(n=null,r=null){const o=this.getHeaders("via");if(!n||n<100||n>699)throw new TypeError(`Invalid status_code: ${n}`);if(r&&typeof r!="string"&&!(r instanceof String))throw new TypeError(`Invalid reason_phrase: ${r}`);r=r||vt.REASON_PHRASE[n]||"";let a=`SIP/2.0 ${n} ${r}\r
104
- `;for(const s of o)a+=`Via: ${s}\r
105
- `;let t=this.getHeader("To");if(!this.to_tag&&n>100?t+=`;tag=${nt.newTag()}`:this.to_tag&&!this.s("to").hasParam("tag")&&(t+=`;tag=${this.to_tag}`),a+=`To: ${t}\r
103
+ `;this.server_transaction.receiveResponse(s,d,t,n)}reply_sl(s=null,r=null){const o=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||Et.REASON_PHRASE[s]||"";let a=`SIP/2.0 ${s} ${r}\r
104
+ `;for(const n of o)a+=`Via: ${n}\r
105
+ `;let t=this.getHeader("To");if(!this.to_tag&&s>100?t+=`;tag=${nt.newTag()}`:this.to_tag&&!this.s("to").hasParam("tag")&&(t+=`;tag=${this.to_tag}`),a+=`To: ${t}\r
106
106
  `,a+=`From: ${this.getHeader("From")}\r
107
107
  `,a+=`Call-ID: ${this.call_id}\r
108
108
  `,a+=`CSeq: ${this.cseq} ${this.method}\r
109
- `,this.ua.configuration.extra_headers)for(const s of this.ua.configuration.extra_headers)a+=`${s.trim()}\r
109
+ `,this.ua.configuration.extra_headers)for(const n of this.ua.configuration.extra_headers)a+=`${n.trim()}\r
110
110
  `;a+=`Content-Length: 0\r
111
111
  \r
112
- `,this.transport.send(a)}}class Im extends Zf{constructor(){super(),this.headers={},this.status_code=null,this.reason_phrase=null}}var xt={OutgoingRequest:Po,InitialOutgoingInviteRequest:Cu,IncomingRequest:Rm,IncomingResponse:Im};const bm=at,fs=Et(),Wt=new bm("DigestAuthentication");var e_=class{constructor(n){this._credentials=n,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(n){switch(n){case"realm":return this._realm;case"ha1":return this._ha1;default:Wt.warn('get() | cannot get "%s" parameter',n);return}}authenticate({method:n,ruri:r,body:o},a,t=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 Wt.warn('authenticate() | challenge with Digest algorithm different than "MD5", authentication aborted'),!1}else this._algorithm="MD5";if(!this._nonce)return Wt.warn("authenticate() | challenge without Digest nonce, authentication aborted"),!1;if(!this._realm)return Wt.warn("authenticate() | challenge without Digest realm, authentication aborted"),!1;if(!this._credentials.password){if(!this._credentials.ha1)return Wt.warn("authenticate() | no plain SIP password nor ha1 provided, authentication aborted"),!1;if(this._credentials.realm!==this._realm)return Wt.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 Wt.warn('authenticate() | challenge without Digest qop different than "auth" or "auth-int", authentication aborted'),!1;else this._qop=null;this._method=n,this._uri=r,this._cnonce=t||fs.createRandomToken(12),this._nc+=1;const s=Number(this._nc).toString(16);this._ncHex="00000000".substr(0,8-s.length)+s,this._nc===4294967296&&(this._nc=1,this._ncHex="00000001"),this._credentials.password?this._ha1=fs.calculateMD5(`${this._credentials.username}:${this._realm}:${this._credentials.password}`):this._ha1=this._credentials.ha1;let p,_;return this._qop==="auth"?(p=`${this._method}:${this._uri}`,_=fs.calculateMD5(p),Wt.debug('authenticate() | using qop=auth [a2:"%s"]',p),this._response=fs.calculateMD5(`${this._ha1}:${this._nonce}:${this._ncHex}:${this._cnonce}:auth:${_}`)):this._qop==="auth-int"?(p=`${this._method}:${this._uri}:${fs.calculateMD5(o||"")}`,_=fs.calculateMD5(p),Wt.debug('authenticate() | using qop=auth-int [a2:"%s"]',p),this._response=fs.calculateMD5(`${this._ha1}:${this._nonce}:${this._ncHex}:${this._cnonce}:auth-int:${_}`)):this._qop===null&&(p=`${this._method}:${this._uri}`,_=fs.calculateMD5(p),Wt.debug('authenticate() | using qop=null [a2:"%s"]',p),this._response=fs.calculateMD5(`${this._ha1}:${this._nonce}:${_}`)),Wt.debug("authenticate() | response generated"),!0}toString(){const n=[];if(!this._response)throw new Error("response field does not exist, cannot generate Authorization header");return n.push(`algorithm=${this._algorithm}`),n.push(`username="${this._credentials.username}"`),n.push(`realm="${this._realm}"`),n.push(`nonce="${this._nonce}"`),n.push(`uri="${this._uri}"`),n.push(`response="${this._response}"`),this._opaque&&n.push(`opaque="${this._opaque}"`),this._qop&&(n.push(`qop=${this._qop}`),n.push(`cnonce="${this._cnonce}"`),n.push(`nc=${this._ncHex}`)),`Digest ${n.join(", ")}`}};const wm=ot(e_),_s=500,Om=4e3,Gc=5e3;var Ru={T1:_s,T2:Om,T4:Gc,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*Gc,TIMER_L:64*_s,TIMER_M:64*_s,PROVISIONAL_RESPONSE_INTERVAL:6e4};const Di=ot(Ru),rl=ct.EventEmitter,il=at,ji=Ue,Wc=xt,ss=Ru,Kc=new il("NonInviteClientTransaction"),Fl=new il("InviteClientTransaction"),Dm=new il("AckClientTransaction"),Yc=new il("NonInviteServerTransaction"),Vl=new il("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 Nm extends rl{constructor(n,r,o,a){super(),this.type=he.NON_INVITE_CLIENT,this.id=`z9hG4bK${Math.floor(Math.random()*1e7)}`,this.ua=n,this.transport=r,this.request=o,this.eventHandlers=a;let t=`SIP/2.0/${r.via_transport}`;t+=` ${n.configuration.via_host};branch=${this.id}`,this.request.setHeader("via",t),this.ua.newTransaction(this)}get C(){return he}stateChanged(n){this.state=n,this.emit("stateChanged")}send(){this.stateChanged(he.STATUS_TRYING),this.F=setTimeout(()=>{this.timer_F()},ss.TIMER_F),this.transport.send(this.request)||this.onTransportError()}onTransportError(){Kc.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(){Kc.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(n){const r=n.status_code;if(r<200)switch(this.state){case he.STATUS_TRYING:case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(n);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(n),this.K=setTimeout(()=>{this.timer_K()},ss.TIMER_K);break;case he.STATUS_COMPLETED:break}}}class Um extends rl{constructor(n,r,o,a){super(),this.type=he.INVITE_CLIENT,this.id=`z9hG4bK${Math.floor(Math.random()*1e7)}`,this.ua=n,this.transport=r,this.request=o,this.eventHandlers=a,o.transaction=this;let t=`SIP/2.0/${r.via_transport}`;t+=` ${n.configuration.via_host};branch=${this.id}`,this.request.setHeader("via",t),this.ua.newTransaction(this)}get C(){return he}stateChanged(n){this.state=n,this.emit("stateChanged")}send(){this.stateChanged(he.STATUS_CALLING),this.B=setTimeout(()=>{this.timer_B()},ss.TIMER_B),this.transport.send(this.request)||this.onTransportError()}onTransportError(){clearTimeout(this.B),clearTimeout(this.D),clearTimeout(this.M),this.state!==he.STATUS_ACCEPTED&&(Fl.debug(`transport error occurred, deleting transaction ${this.id}`),this.eventHandlers.onTransportError()),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}timer_M(){Fl.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(){Fl.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(){Fl.debug(`Timer D expired for transaction ${this.id}`),clearTimeout(this.B),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}sendACK(n){const r=new Wc.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",n.getHeader("to")),this.D=setTimeout(()=>{this.timer_D()},ss.TIMER_D),this.transport.send(r)}cancel(n){if(this.state!==he.STATUS_PROCEEDING)return;const r=new Wc.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")),n&&r.setHeader("reason",n),this.transport.send(r)}receiveResponse(n){const r=n.status_code;if(r>=100&&r<=199)switch(this.state){case he.STATUS_CALLING:this.stateChanged(he.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(n);break;case he.STATUS_PROCEEDING:this.eventHandlers.onReceiveResponse(n);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()},ss.TIMER_M),this.eventHandlers.onReceiveResponse(n);break;case he.STATUS_ACCEPTED:this.eventHandlers.onReceiveResponse(n);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(n),this.eventHandlers.onReceiveResponse(n);break;case he.STATUS_COMPLETED:this.sendACK(n);break}}}class Pm extends rl{constructor(n,r,o,a){super(),this.id=`z9hG4bK${Math.floor(Math.random()*1e7)}`,this.transport=r,this.request=o,this.eventHandlers=a;let t=`SIP/2.0/${r.via_transport}`;t+=` ${n.configuration.via_host};branch=${this.id}`,this.request.setHeader("via",t)}get C(){return he}send(){this.transport.send(this.request)||this.onTransportError()}onTransportError(){Dm.debug(`transport error occurred for transaction ${this.id}`),this.eventHandlers.onTransportError()}}class xm extends rl{constructor(n,r,o){super(),this.type=he.NON_INVITE_SERVER,this.id=o.via_branch,this.ua=n,this.transport=r,this.request=o,this.last_response="",o.server_transaction=this,this.state=he.STATUS_TRYING,n.newTransaction(this)}get C(){return he}stateChanged(n){this.state=n,this.emit("stateChanged")}timer_J(){Yc.debug(`Timer J expired for transaction ${this.id}`),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}onTransportError(){this.transportError||(this.transportError=!0,Yc.debug(`transport error occurred, deleting transaction ${this.id}`),clearTimeout(this.J),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this))}receiveResponse(n,r,o,a){if(n===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)?o&&o():(this.onTransportError(),a&&a());break}else if(n>=200&&n<=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()},ss.TIMER_J),this.transport.send(r)?o&&o():(this.onTransportError(),a&&a());break;case he.STATUS_COMPLETED:break}}}class Mm extends rl{constructor(n,r,o){super(),this.type=he.INVITE_SERVER,this.id=o.via_branch,this.ua=n,this.transport=r,this.request=o,this.last_response="",o.server_transaction=this,this.state=he.STATUS_PROCEEDING,n.newTransaction(this),this.resendProvisionalTimer=null,o.reply(100)}get C(){return he}stateChanged(n){this.state=n,this.emit("stateChanged")}timer_H(){Vl.debug(`Timer H expired for transaction ${this.id}`),this.state===he.STATUS_COMPLETED&&Vl.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(){Vl.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,Vl.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(n,r,o,a){if(n>=100&&n<=199)switch(this.state){case he.STATUS_PROCEEDING:this.transport.send(r)||this.onTransportError(),this.last_response=r;break}if(n>100&&n<=199&&this.state===he.STATUS_PROCEEDING)this.resendProvisionalTimer===null&&(this.resendProvisionalTimer=setInterval(()=>{this.resend_provisional()},ss.PROVISIONAL_RESPONSE_INTERVAL));else if(n>=200&&n<=299)switch(this.state){case he.STATUS_PROCEEDING:this.stateChanged(he.STATUS_ACCEPTED),this.last_response=r,this.L=setTimeout(()=>{this.timer_L()},ss.TIMER_L),this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null);case he.STATUS_ACCEPTED:this.transport.send(r)?o&&o():(this.onTransportError(),a&&a());break}else if(n>=300&&n<=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()},ss.TIMER_H),o&&o()):(this.onTransportError(),a&&a());break}}}function km({_transactions:c},n){let r;switch(n.method){case ji.INVITE:if(r=c.ist[n.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[n.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()},ss.TIMER_I),!0}else return!1;break;case ji.CANCEL:return r=c.ist[n.via_branch],r?(n.reply_sl(200),r.state!==he.STATUS_PROCEEDING):(n.reply_sl(481),!0);default:if(r=c.nist[n.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 cr={C:he,NonInviteClientTransaction:Nm,InviteClientTransaction:Um,AckClientTransaction:Pm,NonInviteServerTransaction:xm,InviteServerTransaction:Mm,checkTransaction:km};const qt=ot(cr),Lm=at,zc=Ue,$m=e_,Ca=cr,Hm=new Lm("RequestSender"),Ra={onRequestTimeout:()=>{},onTransportError:()=>{},onReceiveResponse:()=>{},onAuthenticated:()=>{}};var fr=class{constructor(n,r,o){this._ua=n,this._eventHandlers=o,this._method=r.method,this._request=r,this._auth=null,this._challenged=!1,this._staled=!1;for(const a in Ra)Object.prototype.hasOwnProperty.call(Ra,a)&&(this._eventHandlers[a]||(this._eventHandlers[a]=Ra[a]));n.status===n.C.STATUS_USER_CLOSED&&(this._method!==zc.BYE||this._method!==zc.ACK)&&this._eventHandlers.onTransportError()}send(){const n={onRequestTimeout:()=>{this._eventHandlers.onRequestTimeout()},onTransportError:()=>{this._eventHandlers.onTransportError()},onReceiveResponse:r=>{this._receiveResponse(r)}};switch(this._method){case"INVITE":this.clientTransaction=new Ca.InviteClientTransaction(this._ua,this._ua.transport,this._request,n);break;case"ACK":this.clientTransaction=new Ca.AckClientTransaction(this._ua,this._ua.transport,this._request,n);break;default:this.clientTransaction=new Ca.NonInviteClientTransaction(this._ua,this._ua.transport,this._request,n)}this._ua._configuration.authorization_jwt&&this._request.setHeader("Authorization",this._ua._configuration.authorization_jwt),this.clientTransaction.send()}_receiveResponse(n){let r,o;const a=n.status_code;if((a===401||a===407)&&(this._ua.configuration.password!==null||this._ua.configuration.ha1!==null)){if(n.status_code===401?(r=n.parseHeader("www-authenticate"),o="authorization"):(r=n.parseHeader("proxy-authenticate"),o="proxy-authorization"),!r){Hm.debug(`${n.status_code} with wrong or missing challenge, cannot authenticate`),this._eventHandlers.onReceiveResponse(n);return}if(!this._challenged||!this._staled&&r.stale===!0){if(this._auth||(this._auth=new $m({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(n);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(o,this._auth.toString()),this._eventHandlers.onAuthenticated(this._request),this.send()}else this._eventHandlers.onReceiveResponse(n)}else this._eventHandlers.onReceiveResponse(n)}};const t_=ot(fr),Fm=at,Ia=Et(),fn=Ue,Jc=xt,Xc=fr,Ni=new Fm("Registrator"),jl=10;var Vm=class{constructor(n,r){this._reg_id=1,this._ua=n,this._transport=r,this._registrar=n.configuration.registrar_server,this._expires=n.configuration.register_expires,this._call_id=Ia.createRandomToken(22),this._cseq=0,this._to_uri=n.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(n){Array.isArray(n)||(n=[]),this._extraHeaders=n.slice()}setExtraContactParams(n){n instanceof Object||(n={}),this._extraContactParams="";for(const r in n)if(Object.prototype.hasOwnProperty.call(n,r)){const o=n[r];this._extraContactParams+=`;${r}`,o&&(this._extraContactParams+=`=${o}`)}}register(){if(this._registering){Ni.debug("Register request in progress...");return}const n=this._extraHeaders.slice();n.push(`Contact: ${this._contact};expires=${this._expires}${this._extraContactParams}`),n.push(`Expires: ${this._expires}`);const r=new Jc.OutgoingRequest(fn.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},n),o=new Xc(this._ua,r,{onRequestTimeout:()=>{this._registrationFailure(null,fn.causes.REQUEST_TIMEOUT)},onTransportError:()=>{this._registrationFailure(null,fn.causes.CONNECTION_ERROR)},onAuthenticated:()=>{this._cseq+=1},onReceiveResponse:a=>{if(a.cseq===this._cseq)switch(this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),!0){case/^1[0-9]{2}$/.test(a.status_code):break;case/^2[0-9]{2}$/.test(a.status_code):{if(this._registering=!1,!a.hasHeader("Contact")){Ni.debug("no Contact header in response to REGISTER, response ignored");break}const t=a.headers.Contact.reduce((d,g)=>d.concat(g.parsed),[]);let s=t.find(d=>this._sipInstance===d.getParam("+sip.instance")&&this._reg_id===parseInt(d.getParam("reg-id")));if(s||(s=t.find(d=>d.uri.user===this._ua.contact.uri.user)),!s){Ni.debug("no Contact header pointing to us, response ignored");break}let p=s.getParam("expires");!p&&a.hasHeader("expires")&&(p=a.getHeader("expires")),p||(p=this._expires),p=Number(p),p<jl&&(p=jl);const _=p>64?p*1e3/2+Math.floor((p/2-32)*1e3*Math.random()):p*1e3-5e3;this._registrationTimer=setTimeout(()=>{this._registrationTimer=null,this._ua.listeners("registrationExpiring").length===0?this.register():this._ua.emit("registrationExpiring")},_),s.hasParam("temp-gruu")&&(this._ua.contact.temp_gruu=s.getParam("temp-gruu").replace(/"/g,"")),s.hasParam("pub-gruu")&&(this._ua.contact.pub_gruu=s.getParam("pub-gruu").replace(/"/g,"")),this._registered||(this._registered=!0,this._ua.registered({response:a}));break}case/^423$/.test(a.status_code):{a.hasHeader("min-expires")?(this._expires=Number(a.getHeader("min-expires")),this._expires<jl&&(this._expires=jl),this.register()):(Ni.debug("423 response received for REGISTER without Min-Expires"),this._registrationFailure(a,fn.causes.SIP_FAILURE_CODE));break}default:{const t=Ia.sipErrorCause(a.status_code);this._registrationFailure(a,t)}}}});this._registering=!0,o.send()}unregister(n={}){if(!this._registered){Ni.debug("already unregistered");return}this._registered=!1,this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null);const r=this._extraHeaders.slice();n.all?r.push(`Contact: *${this._extraContactParams}`):r.push(`Contact: ${this._contact};expires=0${this._extraContactParams}`),r.push("Expires: 0");const o=new Jc.OutgoingRequest(fn.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},r);new Xc(this._ua,o,{onRequestTimeout:()=>{this._unregistered(null,fn.causes.REQUEST_TIMEOUT)},onTransportError:()=>{this._unregistered(null,fn.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 s=Ia.sipErrorCause(t.status_code);this._unregistered(t,s)}}}}).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(n,r){this._registering=!1,this._ua.registrationFailed({response:n||null,cause:r}),this._registered&&(this._registered=!1,this._ua.unregistered({response:n||null,cause:r}))}_unregistered(n,r){this._registering=!1,this._registered=!1,this._ua.unregistered({response:n||null,cause:r||null})}};class jm extends Error{constructor(n,r){super(),this.code=1,this.name="CONFIGURATION_ERROR",this.parameter=n,this.value=r,this.message=this.value?`Invalid value ${JSON.stringify(this.value)} for parameter "${this.parameter}"`:`Missing parameter: ${this.parameter}`}}class qm extends Error{constructor(n){super(),this.code=2,this.name="INVALID_STATE_ERROR",this.status=n,this.message=`Invalid status: ${n}`}}class Bm extends Error{constructor(n){super(),this.code=3,this.name="NOT_SUPPORTED_ERROR",this.message=n}}class Gm extends Error{constructor(n){super(),this.code=4,this.name="NOT_READY_ERROR",this.message=n}}var Ts={ConfigurationError:jm,InvalidStateError:qm,NotSupportedError:Bm,NotReadyError:Gm};const pn=ot(Ts),ba=Ue,ql=cr,Wm=fr,wa={onRequestTimeout:()=>{},onTransportError:()=>{},onSuccessResponse:()=>{},onErrorResponse:()=>{},onAuthenticated:()=>{},onDialogError:()=>{}};var s_=class{constructor(n,r,o){this._dialog=n,this._ua=n._ua,this._request=r,this._eventHandlers=o,this._reattempt=!1,this._reattemptTimer=null;for(const a in wa)Object.prototype.hasOwnProperty.call(wa,a)&&(this._eventHandlers[a]||(this._eventHandlers[a]=wa[a]))}get request(){return this._request}send(){const n=new Wm(this._ua,this._request,{onRequestTimeout:()=>{this._eventHandlers.onRequestTimeout()},onTransportError:()=>{this._eventHandlers.onTransportError()},onAuthenticated:r=>{this._eventHandlers.onAuthenticated(r)},onReceiveResponse:r=>{this._receiveResponse(r)}});if(n.send(),(this._request.method===ba.INVITE||this._request.method===ba.UPDATE&&this._request.body)&&n.clientTransaction.state!==ql.C.STATUS_TERMINATED){console.log("this._request.body",this._request.body),this._dialog.uac_pending_reply=!0;const r=()=>{(n.clientTransaction.state===ql.C.STATUS_ACCEPTED||n.clientTransaction.state===ql.C.STATUS_COMPLETED||n.clientTransaction.state===ql.C.STATUS_TERMINATED)&&(n.clientTransaction.removeListener("stateChanged",r),this._dialog.uac_pending_reply=!1)};n.clientTransaction.on("stateChanged",r)}}_receiveResponse(n){n.status_code===408||n.status_code===481?this._eventHandlers.onDialogError(n):n.method===ba.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(()=>{this._dialog.isTerminated()||(this._reattempt=!0,this.send())},1e3)):n.status_code>=200&&n.status_code<300?this._eventHandlers.onSuccessResponse(n):n.status_code>=300&&this._eventHandlers.onErrorResponse(n)}};const Km=ot(s_),Ym=at,Qc=xt,Ps=Ue,Ui=cr,zm=s_,Oa=Et(),Da=new Ym("Dialog"),xs={STATUS_EARLY:1,STATUS_CONFIRMED:2,STATUS_TERMINATED:3};var n_=class{static get C(){return xs}constructor(n,r,o,a=xs.STATUS_CONFIRMED){if(this._owner=n,this._ua=n._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 Qc.IncomingResponse&&(a=r.status_code<200?xs.STATUS_EARLY:xs.STATUS_CONFIRMED);const t=r.parseHeader("contact");o==="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=a,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):o==="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=a,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),Da.debug(`new ${o} dialog created with status ${this._state===xs.STATUS_EARLY?"EARLY":"CONFIRMED"}`)}get id(){return this._id}get local_seqnum(){return this._local_seqnum}set local_seqnum(n){this._local_seqnum=n}get owner(){return this._owner}get uac_pending_reply(){return this._uac_pending_reply}set uac_pending_reply(n){this._uac_pending_reply=n}get uas_pending_reply(){return this._uas_pending_reply}isTerminated(){return this._status===xs.STATUS_TERMINATED}update(n,r){this._state=xs.STATUS_CONFIRMED,Da.debug(`dialog ${this._id.toString()} changed to CONFIRMED state`),r==="UAC"&&(this._route_set=n.getHeaders("record-route").reverse())}terminate(){Da.debug(`dialog ${this._id.toString()} deleted`),this._ua.destroyDialog(this),this._state=xs.STATUS_TERMINATED}sendRequest(n,r={}){const o=Oa.cloneArray(r.extraHeaders),a=Oa.cloneObject(r.eventHandlers),t=r.body||null,s=this._createRequest(n,o,t);return a.onAuthenticated=()=>{this._local_seqnum+=1},new zm(this,s,a).send(),s}receiveRequest(n){this._checkInDialogRequest(n)&&(n.method===Ps.ACK&&this._ack_seqnum!==null?this._ack_seqnum=null:n.method===Ps.INVITE&&(this._ack_seqnum=n.cseq),this._owner.receiveRequest(n))}_createRequest(n,r,o){r=Oa.cloneArray(r),this._local_seqnum||(this._local_seqnum=Math.floor(Math.random()*1e4));const a=n===Ps.CANCEL||n===Ps.ACK?this._local_seqnum:this._local_seqnum+=1;return new Qc.OutgoingRequest(n,this._remote_target,this._ua,{cseq:a,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,o)}_checkInDialogRequest(n){if(!this._remote_seqnum)this._remote_seqnum=n.cseq;else if(n.cseq<this._remote_seqnum)if(n.method===Ps.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===Ps.INVITE||n.method===Ps.UPDATE&&n.body){if(this._uac_pending_reply===!0)n.reply(491);else if(this._uas_pending_reply===!0){const r=(Math.random()*10|0)+1;return n.reply(500,null,[`Retry-After:${r}`]),!1}else{this._uas_pending_reply=!0;const 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),this._uas_pending_reply=!1)};n.server_transaction.on("stateChanged",r)}n.hasHeader("contact")&&n.server_transaction.on("stateChanged",()=>{n.server_transaction.state===Ui.C.STATUS_ACCEPTED&&(this._remote_target=n.parseHeader("contact").uri)})}else n.method===Ps.NOTIFY&&n.hasHeader("contact")&&n.server_transaction.on("stateChanged",()=>{n.server_transaction.state===Ui.C.STATUS_COMPLETED&&(this._remote_target=n.parseHeader("contact").uri)});return!0}};const Bl=ot(n_);var Iu={exports:{}};const Jm=ct.EventEmitter,Xm=at,Qm=Ue,Zm=Ts,Zc=Et(),eg=new Xm("RTCSession:DTMF"),r_={MIN_DURATION:70,MAX_DURATION:6e3,DEFAULT_DURATION:100,MIN_INTER_TONE_GAP:50,DEFAULT_INTER_TONE_GAP:500};Iu.exports=class extends Jm{constructor(n){super(),this._session=n,this._direction=null,this._tone=null,this._duration=null,this._request=null}get tone(){return this._tone}get duration(){return this._duration}send(n,r={}){if(n===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 Zm.InvalidStateError(this._session.status);const o=Zc.cloneArray(r.extraHeaders);if(this.eventHandlers=Zc.cloneObject(r.eventHandlers),typeof n=="string")n=n.toUpperCase();else if(typeof n=="number")n=n.toString();else throw new TypeError(`Invalid tone: ${n}`);if(n.match(/^[0-9A-DR#*]$/))this._tone=n;else throw new TypeError(`Invalid tone: ${n}`);this._duration=r.duration,o.push("Content-Type: application/dtmf-relay");let a=`Signal=${this._tone}\r
113
- `;a+=`Duration=${this._duration}`,this._session.newDTMF({originator:"local",dtmf:this,request:this._request}),this._session.sendRequest(Qm.INFO,{extraHeaders:o,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:a})}init_incoming(n){const r=/^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/,o=/^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/;if(this._direction="incoming",this._request=n,n.reply(200),n.body){const a=n.body.split(`
114
- `);a.length>=1&&r.test(a[0])&&(this._tone=a[0].replace(r,"$2")),a.length>=2&&o.test(a[1])&&(this._duration=parseInt(a[1].replace(o,"$2"),10))}this._duration||(this._duration=r_.DEFAULT_DURATION),this._tone?this._session.newDTMF({originator:"remote",dtmf:this,request:n}):eg.debug("invalid INFO DTMF received, discarded")}};Iu.exports.C=r_;var i_=Iu.exports;const tg=ot(i_),sg=ct.EventEmitter,ng=Ue,rg=Ts,ig=Et();var l_=class extends sg{constructor(n){super(),this._session=n,this._direction=null,this._contentType=null,this._body=null}get contentType(){return this._contentType}get body(){return this._body}send(n,r,o={}){if(this._direction="outgoing",n===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 rg.InvalidStateError(this._session.status);this._contentType=n,this._body=r;const a=ig.cloneArray(o.extraHeaders);a.push(`Content-Type: ${n}`),this._session.newInfo({originator:"local",info:this,request:this.request}),this._session.sendRequest(ng.INFO,{extraHeaders:a,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(n){this._direction="incoming",this.request=n,n.reply(200),this._contentType=n.hasHeader("Content-Type")?n.getHeader("Content-Type").toLowerCase():void 0,this._body=n.body,this._session.newInfo({originator:"remote",info:this,request:n})}};const au=ot(l_),lg=at,ef=Ue,og=new lg("RTCSession:ReferNotifier"),Na={event_type:"refer",body_type:"message/sipfrag;version=2.0",expires:300};var o_=class{constructor(n,r,o){this._session=n,this._id=r,this._expires=o||Na.expires,this._active=!0,this.notify(100)}notify(n,r){if(og.debug("notify()"),this._active===!1)return;r=r||ef.REASON_PHRASE[n]||"";let o;n>=200?o="terminated;reason=noresource":o=`active;expires=${this._expires}`,this._session.sendRequest(ef.NOTIFY,{extraHeaders:[`Event: ${Na.event_type};id=${this._id}`,`Subscription-State: ${o}`,`Content-Type: ${Na.body_type}`],body:`SIP/2.0 ${n} ${r}`,eventHandlers:{onErrorResponse(){this._active=!1}}})}};const ag=ot(o_),ug=ct.EventEmitter,cg=at,Pi=Ue,fg=rs(),tf=Et(),_n=new cg("RTCSession:ReferSubscriber");var a_=class extends ug{constructor(n){super(),this._id=null,this._session=n}get id(){return this._id}sendRefer(n,r={}){_n.debug("sendRefer()");const o=tf.cloneArray(r.extraHeaders),a=tf.cloneObject(r.eventHandlers);for(const _ in a)Object.prototype.hasOwnProperty.call(a,_)&&this.on(_,a[_]);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 s=`Refer-To: <${n}${t?`?Replaces=${t}`:""}>`;if(o.push(s),!o.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}>`;o.push(_)}o.push(`Contact: ${this._session.contact}`);const p=this._session.sendRequest(Pi.REFER,{extraHeaders:o,eventHandlers:{onSuccessResponse:_=>{this._requestSucceeded(_)},onErrorResponse:_=>{this._requestFailed(_,Pi.causes.REJECTED)},onTransportError:()=>{this._requestFailed(null,Pi.causes.CONNECTION_ERROR)},onRequestTimeout:()=>{this._requestFailed(null,Pi.causes.REQUEST_TIMEOUT)},onDialogError:()=>{this._requestFailed(null,Pi.causes.DIALOG_ERROR)}}});this._id=p.cseq}receiveNotify(n){if(_n.debug("receiveNotify()"),!n.body)return;const r=fg.parse(n.body.trim().split(`\r
115
- `,1)[0],"Status_Line");if(r===-1){_n.debug(`receiveNotify() | error parsing NOTIFY body: "${n.body}"`);return}switch(!0){case/^100$/.test(r.status_code):this.emit("trying",{request:n,status_line:r});break;case/^1[0-9]{2}$/.test(r.status_code):this.emit("progress",{request:n,status_line:r});break;case/^2[0-9]{2}$/.test(r.status_code):this.emit("accepted",{request:n,status_line:r});break;default:this.emit("failed",{request:n,status_line:r});break}}_requestSucceeded(n){_n.debug("REFER succeeded"),_n.debug('emit "requestSucceeded"'),this.emit("requestSucceeded",{response:n})}_requestFailed(n,r){_n.debug("REFER failed"),_n.debug('emit "requestFailed"'),this.emit("requestFailed",{response:n||null,cause:r})}};const _g=ot(a_),hg=ct.EventEmitter,sf=Nt,dg=at,fe=Ue,hn=Ts,nf=cr,Be=Et(),xi=Ru,pg=xt,Gl=n_,mg=fr,Pt=i_,rf=l_,gg=o_,Tg=a_,lf=gs(),Y=new dg("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},Wl=["audio","video"];var u_=class uu extends hg{static get C(){return Q}constructor(n){Y.debug("new"),super(),this._id=null,this._ua=n,this._status=Q.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 Q}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(n){this._data=n}get status(){return this._status}isInProgress(){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}}isEstablished(){switch(this._status){case Q.STATUS_ANSWERED:case Q.STATUS_WAITING_FOR_ACK:case Q.STATUS_CONFIRMED:return!0;default:return!1}}isEnded(){switch(this._status){case Q.STATUS_CANCELED:case Q.STATUS_TERMINATED:return!0;default:return!1}}isMuted(){return{audio:this._audioMuted,video:this._videoMuted}}isOnHold(){return{local:this._localHold,remote:this._remoteHold}}connect(n,r={},o){console.log("rtcOfferConstraints connect"),Y.debug("connect()");const a=n,t=Be.cloneObject(r.eventHandlers),s=Be.cloneArray(r.extraHeaders),p=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,n===void 0)throw new TypeError("Not enough arguments");if(this._status!==Q.STATUS_NULL)throw new hn.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new hn.NotSupportedError("WebRTC not supported");if(n=this._ua.normalizeTarget(n),!n)throw new TypeError(`Invalid target: ${a}`);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 lf("sip","anonymous","anonymous.invalid"),s.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`),s.push("Privacy: id")):r.fromUserName&&(y.from_uri=new lf("sip",r.fromUserName,this._ua.configuration.uri.host),s.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`)),r.fromDisplayName&&(y.from_display_name=r.fromDisplayName),s.push(`Contact: ${this._contact}`),s.push("Content-Type: application/sdp"),this._sessionTimers.enabled&&s.push(`Session-Expires: ${this._sessionTimers.defaultExpires}${this._ua.configuration.session_timers_force_refresher?";refresher=uac":""}`),this._request=new pg.InitialOutgoingInviteRequest(n,this._ua,y,s),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,o&&o(this),this._newRTCSession("local",this._request),this._sendInitialRequest(p,T,_)}init_incoming(n,r){Y.debug("init_incoming()");let o;const a=n.hasHeader("Content-Type")?n.getHeader("Content-Type").toLowerCase():void 0;if(n.body&&a!=="application/sdp"){n.reply(415);return}if(this._status=Q.STATUS_INVITE_RECEIVED,this._from_tag=n.from_tag,this._id=n.call_id+this._from_tag,this._request=n,this._contact=this._ua.contact.toString(),n.hasHeader("expires")&&(o=n.getHeader("expires")*1e3),n.to_tag=Be.newTag(),!this._createDialog(n,"UAS",!0)){n.reply(500,"Missing Contact header field");return}n.body?this._late_sdp=!1:this._late_sdp=!0,this._status=Q.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(()=>{n.reply(408),this._failed("local",null,fe.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),o&&(this._timers.expiresTimer=setTimeout(()=>{this._status===Q.STATUS_WAITING_FOR_ANSWER&&(n.reply(487),this._failed("system",null,fe.causes.EXPIRES))},o)),this._direction="incoming",this._local_identity=n.to,this._remote_identity=n.from,r&&r(this),this._newRTCSession("remote",n),this._status!==Q.STATUS_TERMINATED&&(n.reply(180,null,[`Contact: ${this._contact}`]),this._progress("local",null))}answer(n={}){Y.debug("answer()");const r=this._request,o=Be.cloneArray(n.extraHeaders),a=Be.cloneObject(n.mediaConstraints),t=n.mediaStream||null,s=Be.cloneObject(n.pcConfig,{iceServers:[]}),p=n.rtcConstraints||null,_=n.rtcAnswerConstraints||null,d=Be.cloneObject(n.rtcOfferConstraints);let g,T=!1,E=!1,y=!1,A=!1;if(this._rtcAnswerConstraints=_,this._rtcOfferConstraints=n.rtcOfferConstraints||null,this._data=n.data||this._data,this._direction!=="incoming")throw new hn.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==Q.STATUS_WAITING_FOR_ANSWER)throw new hn.InvalidStateError(this._status);if(this._sessionTimers.enabled&&Be.isDecimal(n.sessionTimersExpires)&&(n.sessionTimersExpires>=fe.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=n.sessionTimersExpires:this._sessionTimers.defaultExpires=fe.SESSION_EXPIRES),this._status=Q.STATUS_ANSWERED,!this._createDialog(r,"UAS")){r.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),o.unshift(`Contact: ${this._contact}`);const R=r.parseSDP();Array.isArray(R.media)||(R.media=[R.media]);for(const I of R.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&&a.audio===!1){g=t.getAudioTracks();for(const I of g)t.removeTrack(I)}if(t&&a.video===!1){g=t.getVideoTracks();for(const I of g)t.removeTrack(I)}!t&&a.audio===void 0&&(a.audio=y),!t&&a.video===void 0&&(a.video=A),!t&&!T&&!d.offerToReceiveAudio&&(a.audio=!1),!t&&!E&&!d.offerToReceiveVideo&&(a.video=!1),this._createRTCConnection(s,p),Promise.resolve().then(()=>{if(t)return t;if(a.audio||a.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(a).catch(I=>{throw this._status===Q.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===Q.STATUS_TERMINATED)throw new Error("terminated");this._localMediaStream=I,I&&I.getTracks().forEach($=>{this._connection.addTrack($,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 $=new RTCSessionDescription({type:"offer",sdp:I.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription($)).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===Q.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===Q.STATUS_TERMINATED)throw new Error("terminated");this._handleSessionTimersInIncomingRequest(r,o),r.reply(200,null,o,I,()=>{this._status=Q.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!==Q.STATUS_TERMINATED&&Y.warn(I)})}terminate(n={}){Y.debug("terminate()");const r=n.cause||fe.causes.BYE,o=Be.cloneArray(n.extraHeaders),a=n.body;let t,s=n.status_code,p=n.reason_phrase;if(this._status===Q.STATUS_TERMINATED)throw new hn.InvalidStateError(this._status);switch(this._status){case Q.STATUS_NULL:case Q.STATUS_INVITE_SENT:case Q.STATUS_1XX_RECEIVED:if(Y.debug("canceling session"),s&&(s<200||s>=700))throw new TypeError(`Invalid status_code: ${s}`);s&&(p=p||fe.REASON_PHRASE[s]||"",t=`SIP ;cause=${s} ;text="${p}"`),this._status===Q.STATUS_NULL||this._status===Q.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=t):this._status===Q.STATUS_1XX_RECEIVED&&this._request.cancel(t),this._status=Q.STATUS_CANCELED,this._failed("local",null,fe.causes.CANCELED);break;case Q.STATUS_WAITING_FOR_ANSWER:case Q.STATUS_ANSWERED:if(Y.debug("rejecting session"),s=s||480,s<300||s>=700)throw new TypeError(`Invalid status_code: ${s}`);this._request.reply(s,p,o,a),this._failed("local",null,fe.causes.REJECTED);break;case Q.STATUS_WAITING_FOR_ACK:case Q.STATUS_CONFIRMED:if(Y.debug("terminating session"),p=n.reason_phrase||fe.REASON_PHRASE[s]||"",s&&(s<200||s>=700))throw new TypeError(`Invalid status_code: ${s}`);if(s&&o.push(`Reason: SIP ;cause=${s}; text="${p}"`),this._status===Q.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==nf.C.STATUS_TERMINATED){const _=this._dialog;this.receiveRequest=({method:d})=>{d===fe.ACK&&(this.sendRequest(fe.BYE,{extraHeaders:o,body:a}),_.terminate())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===nf.C.STATUS_TERMINATED&&(this.sendRequest(fe.BYE,{extraHeaders:o,body:a}),_.terminate())}),this._ended("local",null,r),this._dialog=_,this._ua.newDialog(_)}else this.sendRequest(fe.BYE,{extraHeaders:o,body:a}),this._ended("local",null,r)}}sendDTMF(n,r={}){Y.debug("sendDTMF() | tones: %s",n);let o=0,a=r.duration||null,t=r.interToneGap||null;const s=r.transportType||fe.DTMF_TRANSPORT.INFO;if(n===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 hn.InvalidStateError(this._status);if(s!==fe.DTMF_TRANSPORT.INFO&&s!==fe.DTMF_TRANSPORT.RFC2833)throw new TypeError(`invalid transportType: ${s}`);if(typeof n=="number"&&(n=n.toString()),!n||typeof n!="string"||!n.match(/^[0-9A-DR#*,]+$/i))throw new TypeError(`Invalid tones: ${n}`);if(a&&!Be.isDecimal(a))throw new TypeError(`Invalid tone duration: ${a}`);if(a?a<Pt.C.MIN_DURATION?(Y.debug(`"duration" value is lower than the minimum allowed, setting it to ${Pt.C.MIN_DURATION} milliseconds`),a=Pt.C.MIN_DURATION):a>Pt.C.MAX_DURATION?(Y.debug(`"duration" value is greater than the maximum allowed, setting it to ${Pt.C.MAX_DURATION} milliseconds`),a=Pt.C.MAX_DURATION):a=Math.abs(a):a=Pt.C.DEFAULT_DURATION,r.duration=a,t&&!Be.isDecimal(t))throw new TypeError(`Invalid interToneGap: ${t}`);if(t?t<Pt.C.MIN_INTER_TONE_GAP?(Y.debug(`"interToneGap" value is lower than the minimum allowed, setting it to ${Pt.C.MIN_INTER_TONE_GAP} milliseconds`),t=Pt.C.MIN_INTER_TONE_GAP):t=Math.abs(t):t=Pt.C.DEFAULT_INTER_TONE_GAP,s===fe.DTMF_TRANSPORT.RFC2833){const _=this._getDTMFRTPSender();_&&(n=_.toneBuffer+n,_.insertDTMF(n,a,t));return}if(this._tones){this._tones+=n;return}this._tones=n,p.call(this);function p(){let _;if(this._status===Q.STATUS_TERMINATED||!this._tones||o>=this._tones.length){this._tones=null;return}const d=this._tones[o];if(o+=1,d===",")_=2e3;else{const g=new Pt(this);r.eventHandlers={onFailed:()=>{this._tones=null}},g.send(d,r),_=a+t}setTimeout(p.bind(this),_)}}sendInfo(n,r,o={}){if(Y.debug("sendInfo()"),this._status!==Q.STATUS_CONFIRMED&&this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_1XX_RECEIVED)throw new hn.InvalidStateError(this._status);new rf(this).send(n,r,o)}mute(n={audio:!0,video:!1}){Y.debug("mute()");let r=!1,o=!1;this._audioMuted===!1&&n.audio&&(r=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&n.video&&(o=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(r===!0||o===!0)&&this._onmute({audio:r,video:o})}unmute(n={audio:!0,video:!0}){Y.debug("unmute()");let r=!1,o=!1;this._audioMuted===!0&&n.audio&&(r=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&n.video&&(o=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(r===!0||o===!0)&&this._onunmute({audio:r,video:o})}hold(n={},r){if(Y.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");const o={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:fe.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return n.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:o,extraHeaders:n.extraHeaders}):this._sendReinvite({eventHandlers:o,extraHeaders:n.extraHeaders}),!0}unhold(n={},r){if(Y.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");const o={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:fe.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return n.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:o,extraHeaders:n.extraHeaders}):this._sendReinvite({eventHandlers:o,extraHeaders:n.extraHeaders}),!0}renegotiate(n={},r){Y.debug("renegotiate()");const o=n.rtcOfferConstraints||null;if(this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;const a={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:fe.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Media Renegotiation Failed"})}};return this._setLocalMediaStatus(),n.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:a,rtcOfferConstraints:o,extraHeaders:n.extraHeaders}):this._sendReinvite({eventHandlers:a,rtcOfferConstraints:o,extraHeaders:n.extraHeaders}),!0}refer(n,r){Y.debug("refer()");const o=n;if(this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED)return!1;if(n=this._ua.normalizeTarget(n),!n)throw new TypeError(`Invalid target: ${o}`);const a=new Tg(this);a.sendRefer(n,r);const t=a.id;return this._referSubscribers[t]=a,a.on("requestFailed",()=>{delete this._referSubscribers[t]}),a.on("accepted",()=>{delete this._referSubscribers[t]}),a.on("failed",()=>{delete this._referSubscribers[t]}),a}sendRequest(n,r){return Y.debug("sendRequest()"),this._dialog.sendRequest(n,r)}receiveRequest(n){if(Y.debug("receiveRequest()"),n.method===fe.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",n,fe.causes.CANCELED));else switch(n.method){case fe.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(!n.body){this.terminate({cause:fe.causes.MISSING_SDP,status_code:400});break}const r={originator:"remote",type:"answer",sdp:n.body};Y.debug('emit "sdp"'),this.emit("sdp",r);const o=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(o)).then(()=>{this._is_confirmed||this._confirmed("remote",n)}).catch(a=>{this.terminate({cause:fe.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)})}else this._is_confirmed||this._confirmed("remote",n);break;case fe.BYE:this._status===Q.STATUS_CONFIRMED||this._status===Q.STATUS_WAITING_FOR_ACK?(n.reply(200),this._ended("remote",n,fe.causes.BYE)):this._status===Q.STATUS_INVITE_RECEIVED||this._status===Q.STATUS_WAITING_FOR_ANSWER?(n.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",n,fe.causes.BYE)):n.reply(403,"Wrong Status");break;case fe.INVITE:this._status===Q.STATUS_CONFIRMED?n.hasHeader("replaces")?this._receiveReplaces(n):this._receiveReinvite(n):n.reply(403,"Wrong Status");break;case fe.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){const r=n.hasHeader("Content-Type")?n.getHeader("Content-Type").toLowerCase():void 0;r&&r.match(/^application\/dtmf-relay/i)?new Pt(this).init_incoming(n):r!==void 0?new rf(this).init_incoming(n):n.reply(415)}else n.reply(403,"Wrong Status");break;case fe.UPDATE:this._status===Q.STATUS_CONFIRMED?this._receiveUpdate(n):n.reply(403,"Wrong Status");break;case fe.REFER:this._status===Q.STATUS_CONFIRMED?this._receiveRefer(n):n.reply(403,"Wrong Status");break;case fe.NOTIFY:this._status===Q.STATUS_CONFIRMED?this._receiveNotify(n):n.reply(403,"Wrong Status");break;default:n.reply(501)}}onTransportError(){Y.warn("onTransportError()"),this._status!==Q.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:fe.causes.CONNECTION_ERROR,cause:fe.causes.CONNECTION_ERROR})}onRequestTimeout(){Y.warn("onRequestTimeout()"),this._status!==Q.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:fe.causes.REQUEST_TIMEOUT,cause:fe.causes.REQUEST_TIMEOUT})}onDialogError(){Y.warn("onDialogError()"),this._status!==Q.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:fe.causes.DIALOG_ERROR,cause:fe.causes.DIALOG_ERROR})}newDTMF(n){Y.debug("newDTMF()"),this.emit("newDTMF",n)}newInfo(n){Y.debug("newInfo()"),this.emit("newInfo",n)}_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!==Q.STATUS_TERMINATED){if(this._status=Q.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(n){Y.warn("close() | error closing the RTCPeerConnection: %o",n)}for(const n in this._timers)Object.prototype.hasOwnProperty.call(this._timers,n)&&clearTimeout(this._timers[n]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(const n in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,n)&&(this._earlyDialogs[n].terminate(),delete this._earlyDialogs[n]);for(const n in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,n)&&delete this._referSubscribers[n];this._ua.destroyRTCSession(this)}}_setInvite2xxTimer(n,r){let o=xi.T1;function a(){this._status===Q.STATUS_WAITING_FOR_ACK&&(n.reply(200,null,[`Contact: ${this._contact}`],r),o<xi.T2&&(o=o*2,o>xi.T2&&(o=xi.T2)),this._timers.invite2xxTimer=setTimeout(a.bind(this),o))}this._timers.invite2xxTimer=setTimeout(a.bind(this),o)}_setACKTimer(){this._timers.ackTimer=setTimeout(()=>{this._status===Q.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))},xi.TIMER_H)}_createRTCConnection(n,r){this._connection=new RTCPeerConnection(n,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(n,r){if(Y.debug("createLocalDescription()"),n!=="offer"&&n!=="answer")throw new Error(`createLocalDescription() | invalid type "${n}"`);const o=this._connection;return this._rtcReady=!1,Promise.resolve().then(()=>n==="offer"?o.createOffer(r).catch(a=>(Y.warn('emit "peerconnection:createofferfailed" [error:%o]',a),this.emit("peerconnection:createofferfailed",a),Promise.reject(a))):o.createAnswer(r).catch(a=>(Y.warn('emit "peerconnection:createanswerfailed" [error:%o]',a),this.emit("peerconnection:createanswerfailed",a),Promise.reject(a)))).then(a=>o.setLocalDescription(a).catch(t=>(this._rtcReady=!0,Y.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',t),this.emit("peerconnection:setlocaldescriptionfailed",t),Promise.reject(t)))).then(()=>{const a=r&&r.iceRestart;if(o.iceGatheringState==="complete"&&!a||o.iceGatheringState==="gathering"&&this._iceReady){this._rtcReady=!0;const t={originator:"local",type:n,sdp:o.localDescription.sdp};return Y.debug('emit "sdp"'),this.emit("sdp",t),Promise.resolve(t.sdp)}return new Promise(t=>{let s=!1,p,_;this._iceReady=!1;const d=()=>{o.removeEventListener("icecandidate",p),o.removeEventListener("icegatheringstatechange",_),s=!0,this._rtcReady=!0,this._iceReady=!0;const g={originator:"local",type:n,sdp:o.localDescription.sdp};Y.debug('emit "sdp"'),this.emit("sdp",g),t(g.sdp)};o.addEventListener("icecandidate",p=g=>{const T=g.candidate;T?this.emit("icecandidate",{candidate:T,ready:d}):s||d()}),o.addEventListener("icegatheringstatechange",_=()=>{o.iceGatheringState==="complete"&&!s&&d()})})})}_createDialog(n,r,o){const a=r==="UAS"?n.to_tag:n.from_tag,t=r==="UAS"?n.from_tag:n.to_tag,s=n.call_id+a+t;let p=this._earlyDialogs[s];if(o)return p?!0:(p=new Gl(this,n,r,Gl.C.STATUS_EARLY),p.error?(Y.debug(p.error),this._failed("remote",n,fe.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[s]=p,!0));{if(this._from_tag=n.from_tag,this._to_tag=n.to_tag,p)return p.update(n,r),this._dialog=p,delete this._earlyDialogs[s],!0;const _=new Gl(this,n,r);return _.error?(Y.debug(_.error),this._failed("remote",n,fe.causes.INTERNAL_ERROR),!1):(this._dialog=_,!0)}}_receiveReinvite(n){Y.debug("receiveReinvite()");const r=n.hasHeader("Content-Type")?n.getHeader("Content-Type").toLowerCase():void 0,o={request:n,callback:void 0,reject:t.bind(this)};let a=!1;function t(p={}){a=!0;const _=p.status_code||403,d=p.reason_phrase||"",g=Be.cloneArray(p.extraHeaders);if(this._status!==Q.STATUS_CONFIRMED)return!1;if(_<300||_>=700)throw new TypeError(`Invalid status_code: ${_}`);n.reply(_,d,g)}if(this.emit("reinvite",o),a)return;if(this._late_sdp=!1,!n.body){this._late_sdp=!0,this._remoteHold&&(this._remoteHold=!1,this._onunhold("remote")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",this._rtcOfferConstraints)).then(p=>{s.call(this,p)}).catch(()=>{n.reply(500)});return}if(r!=="application/sdp"){Y.debug("invalid Content-Type"),n.reply(415);return}this._processInDialogSdpOffer(n).then(p=>{this._status!==Q.STATUS_TERMINATED&&s.call(this,p)}).catch(p=>{Y.warn(p)});function s(p){const _=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(n,_),this._late_sdp&&(p=this._mangleOffer(p)),n.reply(200,null,_,p,()=>{this._status=Q.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(n,p),this._setACKTimer()}),typeof o.callback=="function"&&o.callback()}}_receiveUpdate(n){Y.debug("receiveUpdate()");const r=n.hasHeader("Content-Type")?n.getHeader("Content-Type").toLowerCase():void 0,o={request:n,callback:void 0,reject:t.bind(this)};let a=!1;function t(p={}){a=!0;const _=p.status_code||403,d=p.reason_phrase||"",g=Be.cloneArray(p.extraHeaders);if(this._status!==Q.STATUS_CONFIRMED)return!1;if(_<300||_>=700)throw new TypeError(`Invalid status_code: ${_}`);n.reply(_,d,g)}if(this.emit("update",o),a)return;if(!n.body){s.call(this,null);return}if(r!=="application/sdp"){Y.debug("invalid Content-Type"),n.reply(415);return}this._processInDialogSdpOffer(n).then(p=>{this._status!==Q.STATUS_TERMINATED&&s.call(this,p)}).catch(p=>{Y.warn(p)});function s(p){const _=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(n,_),n.reply(200,null,_,p),typeof o.callback=="function"&&o.callback()}}_processInDialogSdpOffer(n){Y.debug("_processInDialogSdpOffer()");const r=n.parseSDP();let o=!1;for(const s of r.media){if(Wl.indexOf(s.type)===-1)continue;const p=s.direction||r.direction||"sendrecv";if(p==="sendonly"||p==="inactive")o=!0;else{o=!1;break}}const a={originator:"remote",type:"offer",sdp:n.body};Y.debug('emit "sdp"'),this.emit("sdp",a);const t=new RTCSessionDescription({type:"offer",sdp:a.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>{if(this._status===Q.STATUS_TERMINATED)throw new Error("terminated");return this._connection.setRemoteDescription(t).catch(s=>{throw n.reply(488),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',s),this.emit("peerconnection:setremotedescriptionfailed",s),s})}).then(()=>{if(this._status===Q.STATUS_TERMINATED)throw new Error("terminated");this._remoteHold===!0&&o===!1?(this._remoteHold=!1,this._onunhold("remote")):this._remoteHold===!1&&o===!0&&(this._remoteHold=!0,this._onhold("remote"))}).then(()=>{if(this._status===Q.STATUS_TERMINATED)throw new Error("terminated");return this._createLocalDescription("answer",this._rtcAnswerConstraints).catch(s=>{throw n.reply(500),Y.warn('emit "peerconnection:createtelocaldescriptionfailed" [error:%o]',s),s})}).catch(s=>{Y.warn("_processInDialogSdpOffer() failed [error: %o]",s)}),this._connectionPromiseQueue}_receiveRefer(n){if(Y.debug("receiveRefer()"),!n.refer_to){Y.debug("no Refer-To header field present in REFER"),n.reply(400);return}if(n.refer_to.uri.scheme!==fe.SIP){Y.debug("Refer-To header field points to a non-SIP URI scheme"),n.reply(416);return}n.reply(202);const r=new gg(this,n.cseq);Y.debug('emit "refer"'),this.emit("refer",{request:n,accept:(t,s)=>{o.call(this,t,s)},reject:()=>{a.call(this)}});function o(t,s={}){if(t=typeof t=="function"?t:null,this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED)return!1;const p=new uu(this._ua);if(p.on("progress",({response:_})=>{r.notify(_.status_code,_.reason_phrase)}),p.on("accepted",({response:_})=>{r.notify(_.status_code,_.reason_phrase)}),p.on("_failed",({message:_,cause:d})=>{_?r.notify(_.status_code,_.reason_phrase):r.notify(487,d)}),n.refer_to.uri.hasHeader("replaces")){const _=decodeURIComponent(n.refer_to.uri.getHeader("replaces"));s.extraHeaders=Be.cloneArray(s.extraHeaders),s.extraHeaders.push(`Replaces: ${_}`)}p.connect(n.refer_to.uri.toAor(),s,t)}function a(){r.notify(603)}}_receiveNotify(n){switch(Y.debug("receiveNotify()"),n.event||n.reply(400),n.event.event){case"refer":{let r,o;if(n.event.params&&n.event.params.id)r=n.event.params.id,o=this._referSubscribers[r];else if(Object.keys(this._referSubscribers).length===1)o=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{n.reply(400,"Missing event id parameter");return}if(!o){n.reply(481,"Subscription does not exist");return}o.receiveNotify(n),n.reply(200);break}default:n.reply(489)}}_receiveReplaces(n){Y.debug("receiveReplaces()");function r(a){if(this._status!==Q.STATUS_WAITING_FOR_ACK&&this._status!==Q.STATUS_CONFIRMED)return!1;const t=new uu(this._ua);t.on("confirmed",()=>{this.terminate()}),t.init_incoming(n,a)}function o(){Y.debug("Replaced INVITE rejected by the user"),n.reply(486)}this.emit("replaces",{request:n,accept:a=>{r.call(this,a)},reject:()=>{o.call(this)}})}_sendInitialRequest(n,r,o){const a=new mg(this._ua,this._request,{onRequestTimeout:()=>{this.onRequestTimeout()},onTransportError:()=>{this.onTransportError()},onAuthenticated:t=>{this._request=t},onReceiveResponse:t=>{this._receiveInviteResponse(t)}});Promise.resolve().then(()=>{if(o)return o;if(n.audio||n.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(n).catch(t=>{throw this._status===Q.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===Q.STATUS_TERMINATED)throw new Error("terminated");return this._localMediaStream=t,t&&t.getTracks().forEach(s=>{this._connection.addTrack(s,t)}),this._connecting(this._request),this._createLocalDescription("offer",r).catch(s=>{throw this._failed("local",null,fe.causes.WEBRTC_ERROR),s})}).then(t=>{if(this._is_canceled||this._status===Q.STATUS_TERMINATED)throw new Error("terminated");this._request.body=t,this._status=Q.STATUS_INVITE_SENT,Y.debug('emit "sending" [request:%o]',this._request),this.emit("sending",{request:this._request}),a.send()}).catch(t=>{this._status!==Q.STATUS_TERMINATED&&Y.warn(t)})}_getDTMFRTPSender(){const n=this._connection.getSenders().find(r=>r.track&&r.track.kind==="audio");if(!(n&&n.dtmf)){Y.warn("sendDTMF() | no local audio track to send DTMF with");return}return n.dtmf}_receiveInviteResponse(n){if(Y.debug("receiveInviteResponse()"),this._dialog&&n.status_code>=200&&n.status_code<=299)if(this._dialog.id.call_id===n.call_id&&this._dialog.id.local_tag===n.from_tag&&this._dialog.id.remote_tag===n.to_tag){this.sendRequest(fe.ACK);return}else{const r=new Gl(this,n,"UAC");if(r.error!==void 0){Y.debug(r.error);return}this.sendRequest(fe.ACK),this.sendRequest(fe.BYE);return}if(this._is_canceled){n.status_code>=100&&n.status_code<200?this._request.cancel(this._cancel_reason):n.status_code>=200&&n.status_code<299&&this._acceptAndTerminate(n);return}if(!(this._status!==Q.STATUS_INVITE_SENT&&this._status!==Q.STATUS_1XX_RECEIVED))switch(!0){case/^100$/.test(n.status_code):this._status=Q.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(n.status_code):{if(!n.to_tag){Y.debug("1xx response received without to tag");break}if(n.hasHeader("contact")&&!this._createDialog(n,"UAC",!0))break;if(this._status=Q.STATUS_1XX_RECEIVED,!n.body){this._progress("remote",n);break}const r={originator:"remote",type:"answer",sdp:n.body};Y.debug('emit "sdp"'),this.emit("sdp",r);const o=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(o)).then(()=>this._progress("remote",n)).catch(a=>{Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)});break}case/^2[0-9]{2}$/.test(n.status_code):{if(this._status=Q.STATUS_CONFIRMED,!n.body){this._acceptAndTerminate(n,400,fe.causes.MISSING_SDP),this._failed("remote",n,fe.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(n,"UAC"))break;const r={originator:"remote",type:"answer",sdp:n.body};Y.debug('emit "sdp"'),this.emit("sdp",r);const o=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(n,500,a.toString()),this._failed("local",n,fe.causes.WEBRTC_ERROR)})}).then(()=>{this._connection.setRemoteDescription(o).then(()=>{this._handleSessionTimersInIncomingResponse(n),this._accepted("remote",n),this.sendRequest(fe.ACK),this._confirmed("local",null)}).catch(a=>{this._acceptAndTerminate(n,488,"Not Acceptable Here"),this._failed("remote",n,fe.causes.BAD_MEDIA_DESCRIPTION),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)})});break}default:{const r=Be.sipErrorCause(n.status_code);this._failed("remote",n,r)}}}_sendReinvite(n={}){Y.debug("sendReinvite()");const r=Be.cloneArray(n.extraHeaders),o=Be.cloneObject(n.eventHandlers),a=n.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",a)).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=>{s.call(this,g),t=!0},onErrorResponse:g=>{p.call(this,g)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{p()});function s(_){if(this._status===Q.STATUS_TERMINATED||(this.sendRequest(fe.ACK),t))return;if(this._handleSessionTimersInIncomingResponse(_),_.body){if(!_.hasHeader("Content-Type")||_.getHeader("Content-Type").toLowerCase()!=="application/sdp"){p.call(this);return}}else{p.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(()=>{o.succeeded&&o.succeeded(_)}).catch(T=>{p.call(this),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',T),this.emit("peerconnection:setremotedescriptionfailed",T)})}function p(_){o.failed&&o.failed(_)}}_sendUpdate(n={}){Y.debug("sendUpdate()");const r=Be.cloneArray(n.extraHeaders),o=Be.cloneObject(n.eventHandlers),a=n.rtcOfferConstraints||this._rtcOfferConstraints||null,t=n.sdpOffer||!1;let s=!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",a)).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=>{p.call(this,T),s=!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=>{p.call(this,d)},onErrorResponse:d=>{_.call(this,d)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}});function p(d){if(this._status!==Q.STATUS_TERMINATED&&!s)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(()=>{o.succeeded&&o.succeeded(d)}).catch(E=>{_.call(this),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),this.emit("peerconnection:setremotedescriptionfailed",E)})}else o.succeeded&&o.succeeded(d)}function _(d){o.failed&&o.failed(d)}}_acceptAndTerminate(n,r,o){Y.debug("acceptAndTerminate()");const a=[];r&&(o=o||fe.REASON_PHRASE[r]||"",a.push(`Reason: SIP ;cause=${r}; text="${o}"`)),(this._dialog||this._createDialog(n,"UAC"))&&(this.sendRequest(fe.ACK),this.sendRequest(fe.BYE,{extraHeaders:a})),this._status=Q.STATUS_TERMINATED}_mangleOffer(n){if(!this._localHold&&!this._remoteHold)return n;if(n=sf.parse(n),this._localHold&&!this._remoteHold){Y.debug("mangleOffer() | me on hold, mangling offer");for(const r of n.media)Wl.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 n.media)Wl.indexOf(r.type)!==-1&&(r.direction="inactive")}else if(this._remoteHold){Y.debug("mangleOffer() | remote on hold, mangling offer");for(const r of n.media)Wl.indexOf(r.type)!==-1&&(r.direction?r.direction==="sendrecv"?r.direction="recvonly":r.direction==="recvonly"&&(r.direction="inactive"):r.direction="recvonly")}return sf.write(n)}_setLocalMediaStatus(){let n=!0,r=!0;(this._localHold||this._remoteHold)&&(n=!1,r=!1),this._audioMuted&&(n=!1),this._videoMuted&&(r=!1),this._toggleMuteAudio(!n),this._toggleMuteVideo(!r)}_handleSessionTimersInIncomingRequest(n,r){if(!this._sessionTimers.enabled)return;let o;n.session_expires&&n.session_expires>=fe.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=n.session_expires,o=n.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,o="uas"),r.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${o}`),this._sessionTimers.refresher=o==="uas",this._runSessionTimer()}_handleSessionTimersInIncomingResponse(n){if(!this._sessionTimers.enabled)return;let r;n.session_expires&&n.session_expires>=fe.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=n.session_expires,r=n.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,r="uac"),this._sessionTimers.refresher=r==="uac",this._runSessionTimer()}_runSessionTimer(){const n=this._sessionTimers.currentExpires;this._sessionTimers.running=!0,clearTimeout(this._sessionTimers.timer),this._sessionTimers.refresher?this._sessionTimers.timer=setTimeout(()=>{this._status!==Q.STATUS_TERMINATED&&this._isReadyToReOffer()&&(Y.debug("runSessionTimer() | sending session refresh request"),this._sessionTimers.refreshMethod===fe.UPDATE?this._sendUpdate():this._sendReinvite())},n*500):this._sessionTimers.timer=setTimeout(()=>{this._status!==Q.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"}))},n*1100)}_toggleMuteAudio(n){const r=this._connection.getSenders().filter(o=>o.track&&o.track.kind==="audio");for(const o of r)o.track.enabled=!n}_toggleMuteVideo(n){const r=this._connection.getSenders().filter(o=>o.track&&o.track.kind==="video");for(const o of r)o.track.enabled=!n}_newRTCSession(n,r){Y.debug("newRTCSession()"),this._ua.newRTCSession(this,{originator:n,session:this,request:r})}_connecting(n){Y.debug("session connecting"),Y.debug('emit "connecting"'),this.emit("connecting",{request:n})}_progress(n,r){Y.debug("session progress"),Y.debug('emit "progress"'),this.emit("progress",{originator:n,response:r||null})}_accepted(n,r){Y.debug("session accepted"),this._start_time=new Date,Y.debug('emit "accepted"'),this.emit("accepted",{originator:n,response:r||null})}_confirmed(n,r){Y.debug("session confirmed"),this._is_confirmed=!0,Y.debug('emit "confirmed"'),this.emit("confirmed",{originator:n,ack:r||null})}_ended(n,r,o){Y.debug("session ended"),this._end_time=new Date,this._close(),Y.debug('emit "ended"'),this.emit("ended",{originator:n,message:r||null,cause:o})}_failed(n,r,o){Y.debug("session failed"),Y.debug('emit "_failed"'),this.emit("_failed",{originator:n,message:r||null,cause:o}),this._close(),Y.debug('emit "failed"'),this.emit("failed",{originator:n,message:r||null,cause:o})}_onhold(n){Y.debug("session onhold"),this._setLocalMediaStatus(),Y.debug('emit "hold"'),this.emit("hold",{originator:n})}_onunhold(n){Y.debug("session onunhold"),this._setLocalMediaStatus(),Y.debug('emit "unhold"'),this.emit("unhold",{originator:n})}_onmute({audio:n,video:r}){Y.debug("session onmute"),this._setLocalMediaStatus(),Y.debug('emit "muted"'),this.emit("muted",{audio:n,video:r})}_onunmute({audio:n,video:r}){Y.debug("session onunmute"),this._setLocalMediaStatus(),Y.debug('emit "unmuted"'),this.emit("unmuted",{audio:n,video:r})}};const vg=ot(u_),Eg=ct.EventEmitter,Sg=at,Ua=Ue,yg=xt,Mi=Et(),Ag=fr,of=Ts,Cg=gs(),Kl=new Sg("Message");var Rg=class extends Eg{constructor(n){super(),this._ua=n,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(n,r,o={}){const a=n;if(n===void 0||r===void 0)throw new TypeError("Not enough arguments");if(n=this._ua.normalizeTarget(n),!n)throw new TypeError(`Invalid target: ${a}`);const t=Mi.cloneArray(o.extraHeaders),s=Mi.cloneObject(o.eventHandlers),p=o.contentType||"text/plain",_={};o.fromUserName&&(_.from_uri=new Cg("sip",o.fromUserName,this._ua.configuration.uri.host),t.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`)),o.fromDisplayName&&(_.from_display_name=o.fromDisplayName);for(const g in s)Object.prototype.hasOwnProperty.call(s,g)&&this.on(g,s[g]);t.push(`Content-Type: ${p}`),this._request=new yg.OutgoingRequest(Ua.MESSAGE,n,this._ua,_,t),r&&(this._request.body=r);const d=new Ag(this._ua,this._request,{onRequestTimeout:()=>{this._onRequestTimeout()},onTransportError:()=>{this._onTransportError()},onReceiveResponse:g=>{this._receiveResponse(g)}});this._newMessage("local",this._request),d.send()}init_incoming(n){this._request=n,this._newMessage("remote",n),this._is_replied||(this._is_replied=!0,n.reply(200)),this._close()}accept(n={}){const r=Mi.cloneArray(n.extraHeaders),o=n.body;if(this._direction!=="incoming")throw new of.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,o)}reject(n={}){const r=n.status_code||480,o=n.reason_phrase,a=Mi.cloneArray(n.extraHeaders),t=n.body;if(this._direction!=="incoming")throw new of.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,o,a,t)}_receiveResponse(n){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(n.status_code):break;case/^2[0-9]{2}$/.test(n.status_code):this._succeeded("remote",n);break;default:{const r=Mi.sipErrorCause(n.status_code);this._failed("remote",n,r);break}}}_onRequestTimeout(){this._closed||this._failed("system",null,Ua.causes.REQUEST_TIMEOUT)}_onTransportError(){this._closed||this._failed("system",null,Ua.causes.CONNECTION_ERROR)}_close(){this._closed=!0,this._ua.destroyMessage(this)}_newMessage(n,r){n==="remote"?(this._direction="incoming",this._local_identity=r.to,this._remote_identity=r.from):n==="local"&&(this._direction="outgoing",this._local_identity=r.from,this._remote_identity=r.to),this._ua.newMessage(this,{originator:n,message:this,request:r})}_failed(n,r,o){Kl.debug("MESSAGE failed"),this._close(),Kl.debug('emit "failed"'),this.emit("failed",{originator:n,response:r||null,cause:o})}_succeeded(n,r){Kl.debug("MESSAGE succeeded"),this._close(),Kl.debug('emit "succeeded"'),this.emit("succeeded",{originator:n,response:r})}};const Ig=ct.EventEmitter,bg=at,Pa=Ue,wg=xt,ki=Et(),Og=fr,af=Ts,Yl=new bg("Options");var Dg=class extends Ig{constructor(n){super(),this._ua=n,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(n,r,o={}){const a=n;if(n===void 0)throw new TypeError("A target is required for OPTIONS");if(n=this._ua.normalizeTarget(n),!n)throw new TypeError(`Invalid target: ${a}`);const t=ki.cloneArray(o.extraHeaders),s=ki.cloneObject(o.eventHandlers),p=o.contentType||"application/sdp";for(const d in s)Object.prototype.hasOwnProperty.call(s,d)&&this.on(d,s[d]);t.push(`Content-Type: ${p}`),this._request=new wg.OutgoingRequest(Pa.OPTIONS,n,this._ua,null,t),r&&(this._request.body=r);const _=new Og(this._ua,this._request,{onRequestTimeout:()=>{this._onRequestTimeout()},onTransportError:()=>{this._onTransportError()},onReceiveResponse:d=>{this._receiveResponse(d)}});this._newOptions("local",this._request),_.send()}init_incoming(n){this._request=n,this._newOptions("remote",n),this._is_replied||(this._is_replied=!0,n.reply(200)),this._close()}accept(n={}){const r=ki.cloneArray(n.extraHeaders),o=n.body;if(this._direction!=="incoming")throw new af.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,o)}reject(n={}){const r=n.status_code||480,o=n.reason_phrase,a=ki.cloneArray(n.extraHeaders),t=n.body;if(this._direction!=="incoming")throw new af.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,o,a,t)}_receiveResponse(n){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(n.status_code):break;case/^2[0-9]{2}$/.test(n.status_code):this._succeeded("remote",n);break;default:{const r=ki.sipErrorCause(n.status_code);this._failed("remote",n,r);break}}}_onRequestTimeout(){this._closed||this._failed("system",null,Pa.causes.REQUEST_TIMEOUT)}_onTransportError(){this._closed||this._failed("system",null,Pa.causes.CONNECTION_ERROR)}_close(){this._closed=!0,this._ua.destroyMessage(this)}_newOptions(n,r){n==="remote"?(this._direction="incoming",this._local_identity=r.to,this._remote_identity=r.from):n==="local"&&(this._direction="outgoing",this._local_identity=r.from,this._remote_identity=r.to),this._ua.newOptions(this,{originator:n,message:this,request:r})}_failed(n,r,o){Yl.debug("OPTIONS failed"),this._close(),Yl.debug('emit "failed"'),this.emit("failed",{originator:n,response:r||null,cause:o})}_succeeded(n,r){Yl.debug("OPTIONS succeeded"),this._close(),Yl.debug('emit "succeeded"'),this.emit("succeeded",{originator:n,response:r})}},bu={};const Ng=at,xa=Et(),Ug=rs(),Li=new Ng("Socket");bu.isSocket=c=>{if(Array.isArray(c))return!1;if(typeof c>"u")return Li.warn("undefined JsSIP.Socket instance"),!1;try{if(!xa.isString(c.url))throw Li.warn("missing or invalid JsSIP.Socket url property"),new Error("Missing or invalid JsSIP.Socket url property");if(!xa.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(Ug.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(n=>{if(!xa.isFunction(c[n]))throw Li.warn(`missing or invalid JsSIP.Socket method: ${n}`),new Error(`Missing or invalid JsSIP.Socket method: ${n}`)})}catch{return!1}return!0};const Pg=at,xg=bu,uf=Ue,Ot=new Pg("Transport"),Vt={STATUS_CONNECTED:0,STATUS_CONNECTING:1,STATUS_DISCONNECTED:2,SOCKET_STATUS_READY:0,SOCKET_STATUS_ERROR:1,recovery_options:{min_interval:uf.CONNECTION_RECOVERY_MIN_INTERVAL,max_interval:uf.CONNECTION_RECOVERY_MAX_INTERVAL}};var Mg=class{constructor(n,r=Vt.recovery_options){Ot.debug("new()"),this.status=Vt.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(o){Ot.warn(`cannot use TextDecoder: ${o}`)}if(typeof n>"u")throw new TypeError("Invalid argument. undefined 'sockets' argument");n instanceof Array||(n=[n]),n.forEach(function(o){if(!xg.isSocket(o.socket))throw new TypeError("Invalid argument. invalid 'JsSIP.Socket' instance");if(o.weight&&!Number(o.weight))throw new TypeError("Invalid argument. 'weight' attribute is not a number");this.sockets.push({socket:o.socket,weight:o.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(Ot.debug("connect()"),this.isConnected()){Ot.debug("Transport is already connected");return}else if(this.isConnecting()){Ot.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(){Ot.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(n){if(Ot.debug("send()"),!this.isConnected())return Ot.warn("unable to send message, transport is not connected"),!1;const r=n.toString();return Ot.debug(`sending message:
112
+ `,this.transport.send(a)}}class Nm extends r_{constructor(){super(),this.headers={},this.status_code=null,this.reason_phrase=null}}var Mt={OutgoingRequest:Mo,InitialOutgoingInviteRequest:bu,IncomingRequest:Dm,IncomingResponse:Nm};const Um=at,_s=St(),Kt=new Um("DigestAuthentication");var i_=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:Kt.warn('get() | cannot get "%s" parameter',s);return}}authenticate({method:s,ruri:r,body:o},a,t=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=s,this._uri=r,this._cnonce=t||_s.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=_s.calculateMD5(`${this._credentials.username}:${this._realm}:${this._credentials.password}`):this._ha1=this._credentials.ha1;let p,_;return this._qop==="auth"?(p=`${this._method}:${this._uri}`,_=_s.calculateMD5(p),Kt.debug('authenticate() | using qop=auth [a2:"%s"]',p),this._response=_s.calculateMD5(`${this._ha1}:${this._nonce}:${this._ncHex}:${this._cnonce}:auth:${_}`)):this._qop==="auth-int"?(p=`${this._method}:${this._uri}:${_s.calculateMD5(o||"")}`,_=_s.calculateMD5(p),Kt.debug('authenticate() | using qop=auth-int [a2:"%s"]',p),this._response=_s.calculateMD5(`${this._ha1}:${this._nonce}:${this._ncHex}:${this._cnonce}:auth-int:${_}`)):this._qop===null&&(p=`${this._method}:${this._uri}`,_=_s.calculateMD5(p),Kt.debug('authenticate() | using qop=null [a2:"%s"]',p),this._response=_s.calculateMD5(`${this._ha1}:${this._nonce}:${_}`)),Kt.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 Pm=ot(i_),hs=500,xm=4e3,Yc=5e3;var wu={T1:hs,T2:xm,T4:Yc,TIMER_B:64*hs,TIMER_D:0*hs,TIMER_F:64*hs,TIMER_H:64*hs,TIMER_I:0*hs,TIMER_J:0*hs,TIMER_K:0*Yc,TIMER_L:64*hs,TIMER_M:64*hs,PROVISIONAL_RESPONSE_INTERVAL:6e4};const Ni=ot(wu),il=ct.EventEmitter,ll=at,qi=Ue,zc=Mt,ns=wu,Jc=new ll("NonInviteClientTransaction"),Vl=new ll("InviteClientTransaction"),Mm=new ll("AckClientTransaction"),Xc=new ll("NonInviteServerTransaction"),jl=new ll("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 km extends il{constructor(s,r,o,a){super(),this.type=he.NON_INVITE_CLIENT,this.id=`z9hG4bK${Math.floor(Math.random()*1e7)}`,this.ua=s,this.transport=r,this.request=o,this.eventHandlers=a;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()},ns.TIMER_F),this.transport.send(this.request)||this.onTransportError()}onTransportError(){Jc.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(){Jc.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()},ns.TIMER_K);break;case he.STATUS_COMPLETED:break}}}class Lm extends il{constructor(s,r,o,a){super(),this.type=he.INVITE_CLIENT,this.id=`z9hG4bK${Math.floor(Math.random()*1e7)}`,this.ua=s,this.transport=r,this.request=o,this.eventHandlers=a,o.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()},ns.TIMER_B),this.transport.send(this.request)||this.onTransportError()}onTransportError(){clearTimeout(this.B),clearTimeout(this.D),clearTimeout(this.M),this.state!==he.STATUS_ACCEPTED&&(Vl.debug(`transport error occurred, deleting transaction ${this.id}`),this.eventHandlers.onTransportError()),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}timer_M(){Vl.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(){Vl.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(){Vl.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 zc.OutgoingRequest(qi.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()},ns.TIMER_D),this.transport.send(r)}cancel(s){if(this.state!==he.STATUS_PROCEEDING)return;const r=new zc.OutgoingRequest(qi.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()},ns.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 $m extends il{constructor(s,r,o,a){super(),this.id=`z9hG4bK${Math.floor(Math.random()*1e7)}`,this.transport=r,this.request=o,this.eventHandlers=a;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(){Mm.debug(`transport error occurred for transaction ${this.id}`),this.eventHandlers.onTransportError()}}class Hm extends il{constructor(s,r,o){super(),this.type=he.NON_INVITE_SERVER,this.id=o.via_branch,this.ua=s,this.transport=r,this.request=o,this.last_response="",o.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(){Xc.debug(`Timer J expired for transaction ${this.id}`),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this)}onTransportError(){this.transportError||(this.transportError=!0,Xc.debug(`transport error occurred, deleting transaction ${this.id}`),clearTimeout(this.J),this.stateChanged(he.STATUS_TERMINATED),this.ua.destroyTransaction(this))}receiveResponse(s,r,o,a){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)?o&&o():(this.onTransportError(),a&&a());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()},ns.TIMER_J),this.transport.send(r)?o&&o():(this.onTransportError(),a&&a());break;case he.STATUS_COMPLETED:break}}}class Fm extends il{constructor(s,r,o){super(),this.type=he.INVITE_SERVER,this.id=o.via_branch,this.ua=s,this.transport=r,this.request=o,this.last_response="",o.server_transaction=this,this.state=he.STATUS_PROCEEDING,s.newTransaction(this),this.resendProvisionalTimer=null,o.reply(100)}get C(){return he}stateChanged(s){this.state=s,this.emit("stateChanged")}timer_H(){jl.debug(`Timer H expired for transaction ${this.id}`),this.state===he.STATUS_COMPLETED&&jl.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(){jl.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,jl.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,o,a){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()},ns.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()},ns.TIMER_L),this.resendProvisionalTimer!==null&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null);case he.STATUS_ACCEPTED:this.transport.send(r)?o&&o():(this.onTransportError(),a&&a());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()},ns.TIMER_H),o&&o()):(this.onTransportError(),a&&a());break}}}function Vm({_transactions:c},s){let r;switch(s.method){case qi.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 qi.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()},ns.TIMER_I),!0}else return!1;break;case qi.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 fr={C:he,NonInviteClientTransaction:km,InviteClientTransaction:Lm,AckClientTransaction:$m,NonInviteServerTransaction:Hm,InviteServerTransaction:Fm,checkTransaction:Vm};const Bt=ot(fr),jm=at,Qc=Ue,qm=i_,Ia=fr,Bm=new jm("RequestSender"),ba={onRequestTimeout:()=>{},onTransportError:()=>{},onReceiveResponse:()=>{},onAuthenticated:()=>{}};var _r=class{constructor(s,r,o){this._ua=s,this._eventHandlers=o,this._method=r.method,this._request=r,this._auth=null,this._challenged=!1,this._staled=!1;for(const a in ba)Object.prototype.hasOwnProperty.call(ba,a)&&(this._eventHandlers[a]||(this._eventHandlers[a]=ba[a]));s.status===s.C.STATUS_USER_CLOSED&&(this._method!==Qc.BYE||this._method!==Qc.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 Ia.InviteClientTransaction(this._ua,this._ua.transport,this._request,s);break;case"ACK":this.clientTransaction=new Ia.AckClientTransaction(this._ua,this._ua.transport,this._request,s);break;default:this.clientTransaction=new Ia.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,o;const a=s.status_code;if((a===401||a===407)&&(this._ua.configuration.password!==null||this._ua.configuration.ha1!==null)){if(s.status_code===401?(r=s.parseHeader("www-authenticate"),o="authorization"):(r=s.parseHeader("proxy-authenticate"),o="proxy-authorization"),!r){Bm.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(o,this._auth.toString()),this._eventHandlers.onAuthenticated(this._request),this.send()}else this._eventHandlers.onReceiveResponse(s)}else this._eventHandlers.onReceiveResponse(s)}};const l_=ot(_r),Gm=at,wa=St(),_n=Ue,Zc=Mt,ef=_r,Ui=new Gm("Registrator"),ql=10;var Wm=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=wa.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 o=s[r];this._extraContactParams+=`;${r}`,o&&(this._extraContactParams+=`=${o}`)}}register(){if(this._registering){Ui.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 Zc.OutgoingRequest(_n.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},s),o=new ef(this._ua,r,{onRequestTimeout:()=>{this._registrationFailure(null,_n.causes.REQUEST_TIMEOUT)},onTransportError:()=>{this._registrationFailure(null,_n.causes.CONNECTION_ERROR)},onAuthenticated:()=>{this._cseq+=1},onReceiveResponse:a=>{if(a.cseq===this._cseq)switch(this._registrationTimer!==null&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),!0){case/^1[0-9]{2}$/.test(a.status_code):break;case/^2[0-9]{2}$/.test(a.status_code):{if(this._registering=!1,!a.hasHeader("Contact")){Ui.debug("no Contact header in response to REGISTER, response ignored");break}const t=a.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){Ui.debug("no Contact header pointing to us, response ignored");break}let p=n.getParam("expires");!p&&a.hasHeader("expires")&&(p=a.getHeader("expires")),p||(p=this._expires),p=Number(p),p<ql&&(p=ql);const _=p>64?p*1e3/2+Math.floor((p/2-32)*1e3*Math.random()):p*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:a}));break}case/^423$/.test(a.status_code):{a.hasHeader("min-expires")?(this._expires=Number(a.getHeader("min-expires")),this._expires<ql&&(this._expires=ql),this.register()):(Ui.debug("423 response received for REGISTER without Min-Expires"),this._registrationFailure(a,_n.causes.SIP_FAILURE_CODE));break}default:{const t=wa.sipErrorCause(a.status_code);this._registrationFailure(a,t)}}}});this._registering=!0,o.send()}unregister(s={}){if(!this._registered){Ui.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 o=new Zc.OutgoingRequest(_n.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},r);new ef(this._ua,o,{onRequestTimeout:()=>{this._unregistered(null,_n.causes.REQUEST_TIMEOUT)},onTransportError:()=>{this._unregistered(null,_n.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=wa.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 Km 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 Ym extends Error{constructor(s){super(),this.code=2,this.name="INVALID_STATE_ERROR",this.status=s,this.message=`Invalid status: ${s}`}}class zm extends Error{constructor(s){super(),this.code=3,this.name="NOT_SUPPORTED_ERROR",this.message=s}}class Jm extends Error{constructor(s){super(),this.code=4,this.name="NOT_READY_ERROR",this.message=s}}var vs={ConfigurationError:Km,InvalidStateError:Ym,NotSupportedError:zm,NotReadyError:Jm};const mn=ot(vs),Oa=Ue,Bl=fr,Xm=_r,Da={onRequestTimeout:()=>{},onTransportError:()=>{},onSuccessResponse:()=>{},onErrorResponse:()=>{},onAuthenticated:()=>{},onDialogError:()=>{}};var o_=class{constructor(s,r,o){this._dialog=s,this._ua=s._ua,this._request=r,this._eventHandlers=o,this._reattempt=!1,this._reattemptTimer=null;for(const a in Da)Object.prototype.hasOwnProperty.call(Da,a)&&(this._eventHandlers[a]||(this._eventHandlers[a]=Da[a]))}get request(){return this._request}send(){const s=new Xm(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===Oa.INVITE||this._request.method===Oa.UPDATE&&this._request.body)&&s.clientTransaction.state!==Bl.C.STATUS_TERMINATED){this._dialog.uac_pending_reply=!0;const r=()=>{(s.clientTransaction.state===Bl.C.STATUS_ACCEPTED||s.clientTransaction.state===Bl.C.STATUS_COMPLETED||s.clientTransaction.state===Bl.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===Oa.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 Qm=ot(o_),Zm=at,tf=Mt,xs=Ue,Pi=fr,eg=o_,Na=St(),Ua=new Zm("Dialog"),Ms={STATUS_EARLY:1,STATUS_CONFIRMED:2,STATUS_TERMINATED:3};var a_=class{static get C(){return Ms}constructor(s,r,o,a=Ms.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 tf.IncomingResponse&&(a=r.status_code<200?Ms.STATUS_EARLY:Ms.STATUS_CONFIRMED);const t=r.parseHeader("contact");o==="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=a,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):o==="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=a,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),Ua.debug(`new ${o} dialog created with status ${this._state===Ms.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===Ms.STATUS_TERMINATED}update(s,r){this._state=Ms.STATUS_CONFIRMED,Ua.debug(`dialog ${this._id.toString()} changed to CONFIRMED state`),r==="UAC"&&(this._route_set=s.getHeaders("record-route").reverse())}terminate(){Ua.debug(`dialog ${this._id.toString()} deleted`),this._ua.destroyDialog(this),this._state=Ms.STATUS_TERMINATED}sendRequest(s,r={}){const o=Na.cloneArray(r.extraHeaders),a=Na.cloneObject(r.eventHandlers),t=r.body||null,n=this._createRequest(s,o,t);return a.onAuthenticated=()=>{this._local_seqnum+=1},new eg(this,n,a).send(),n}receiveRequest(s){this._checkInDialogRequest(s)&&(s.method===xs.ACK&&this._ack_seqnum!==null?this._ack_seqnum=null:s.method===xs.INVITE&&(this._ack_seqnum=s.cseq),this._owner.receiveRequest(s))}_createRequest(s,r,o){r=Na.cloneArray(r),this._local_seqnum||(this._local_seqnum=Math.floor(Math.random()*1e4));const a=s===xs.CANCEL||s===xs.ACK?this._local_seqnum:this._local_seqnum+=1;return new tf.OutgoingRequest(s,this._remote_target,this._ua,{cseq:a,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,o)}_checkInDialogRequest(s){if(!this._remote_seqnum)this._remote_seqnum=s.cseq;else if(s.cseq<this._remote_seqnum)if(s.method===xs.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===xs.INVITE||s.method===xs.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===Pi.C.STATUS_ACCEPTED||s.server_transaction.state===Pi.C.STATUS_COMPLETED||s.server_transaction.state===Pi.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===Pi.C.STATUS_ACCEPTED&&(this._remote_target=s.parseHeader("contact").uri)})}else s.method===xs.NOTIFY&&s.hasHeader("contact")&&s.server_transaction.on("stateChanged",()=>{s.server_transaction.state===Pi.C.STATUS_COMPLETED&&(this._remote_target=s.parseHeader("contact").uri)});return!0}};const Gl=ot(a_);var Ou={exports:{}};const tg=ct.EventEmitter,sg=at,ng=Ue,rg=vs,sf=St(),ig=new sg("RTCSession:DTMF"),u_={MIN_DURATION:70,MAX_DURATION:6e3,DEFAULT_DURATION:100,MIN_INTER_TONE_GAP:50,DEFAULT_INTER_TONE_GAP:500};Ou.exports=class extends tg{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 rg.InvalidStateError(this._session.status);const o=sf.cloneArray(r.extraHeaders);if(this.eventHandlers=sf.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,o.push("Content-Type: application/dtmf-relay");let a=`Signal=${this._tone}\r
113
+ `;a+=`Duration=${this._duration}`,this._session.newDTMF({originator:"local",dtmf:this,request:this._request}),this._session.sendRequest(ng.INFO,{extraHeaders:o,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:a})}init_incoming(s){const r=/^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/,o=/^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/;if(this._direction="incoming",this._request=s,s.reply(200),s.body){const a=s.body.split(`
114
+ `);a.length>=1&&r.test(a[0])&&(this._tone=a[0].replace(r,"$2")),a.length>=2&&o.test(a[1])&&(this._duration=parseInt(a[1].replace(o,"$2"),10))}this._duration||(this._duration=u_.DEFAULT_DURATION),this._tone?this._session.newDTMF({originator:"remote",dtmf:this,request:s}):ig.debug("invalid INFO DTMF received, discarded")}};Ou.exports.C=u_;var c_=Ou.exports;const lg=ot(c_),og=ct.EventEmitter,ag=Ue,ug=vs,cg=St();var f_=class extends og{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,o={}){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 ug.InvalidStateError(this._session.status);this._contentType=s,this._body=r;const a=cg.cloneArray(o.extraHeaders);a.push(`Content-Type: ${s}`),this._session.newInfo({originator:"local",info:this,request:this.request}),this._session.sendRequest(ag.INFO,{extraHeaders:a,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 fu=ot(f_),fg=at,nf=Ue,_g=new fg("RTCSession:ReferNotifier"),Pa={event_type:"refer",body_type:"message/sipfrag;version=2.0",expires:300};var __=class{constructor(s,r,o){this._session=s,this._id=r,this._expires=o||Pa.expires,this._active=!0,this.notify(100)}notify(s,r){if(_g.debug("notify()"),this._active===!1)return;r=r||nf.REASON_PHRASE[s]||"";let o;s>=200?o="terminated;reason=noresource":o=`active;expires=${this._expires}`,this._session.sendRequest(nf.NOTIFY,{extraHeaders:[`Event: ${Pa.event_type};id=${this._id}`,`Subscription-State: ${o}`,`Content-Type: ${Pa.body_type}`],body:`SIP/2.0 ${s} ${r}`,eventHandlers:{onErrorResponse(){this._active=!1}}})}};const hg=ot(__),dg=ct.EventEmitter,pg=at,xi=Ue,mg=is(),rf=St(),hn=new pg("RTCSession:ReferSubscriber");var h_=class extends dg{constructor(s){super(),this._id=null,this._session=s}get id(){return this._id}sendRefer(s,r={}){hn.debug("sendRefer()");const o=rf.cloneArray(r.extraHeaders),a=rf.cloneObject(r.eventHandlers);for(const _ in a)Object.prototype.hasOwnProperty.call(a,_)&&this.on(_,a[_]);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(o.push(n),!o.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}>`;o.push(_)}o.push(`Contact: ${this._session.contact}`);const p=this._session.sendRequest(xi.REFER,{extraHeaders:o,eventHandlers:{onSuccessResponse:_=>{this._requestSucceeded(_)},onErrorResponse:_=>{this._requestFailed(_,xi.causes.REJECTED)},onTransportError:()=>{this._requestFailed(null,xi.causes.CONNECTION_ERROR)},onRequestTimeout:()=>{this._requestFailed(null,xi.causes.REQUEST_TIMEOUT)},onDialogError:()=>{this._requestFailed(null,xi.causes.DIALOG_ERROR)}}});this._id=p.cseq}receiveNotify(s){if(hn.debug("receiveNotify()"),!s.body)return;const r=mg.parse(s.body.trim().split(`\r
115
+ `,1)[0],"Status_Line");if(r===-1){hn.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){hn.debug("REFER succeeded"),hn.debug('emit "requestSucceeded"'),this.emit("requestSucceeded",{response:s})}_requestFailed(s,r){hn.debug("REFER failed"),hn.debug('emit "requestFailed"'),this.emit("requestFailed",{response:s||null,cause:r})}};const gg=ot(h_),Tg=ct.EventEmitter,lf=Ut,vg=at,fe=Ue,dn=vs,of=fr,Be=St(),Mi=wu,Eg=Mt,Wl=a_,Sg=_r,xt=c_,af=f_,yg=__,Ag=h_,uf=Ts(),Y=new vg("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},Kl=["audio","video"];var d_=class _u extends Tg{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={},o){Y.debug("connect()");const a=s,t=Be.cloneObject(r.eventHandlers),n=Be.cloneArray(r.extraHeaders),p=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 dn.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new dn.NotSupportedError("WebRTC not supported");if(s=this._ua.normalizeTarget(s),!s)throw new TypeError(`Invalid target: ${a}`);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 uf("sip","anonymous","anonymous.invalid"),n.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`),n.push("Privacy: id")):r.fromUserName&&(y.from_uri=new uf("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 Eg.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,o&&o(this),this._newRTCSession("local",this._request),this._sendInitialRequest(p,T,_)}init_incoming(s,r){Y.debug("init_incoming()");let o;const a=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;if(s.body&&a!=="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")&&(o=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),o&&(this._timers.expiresTimer=setTimeout(()=>{this._status===Z.STATUS_WAITING_FOR_ANSWER&&(s.reply(487),this._failed("system",null,fe.causes.EXPIRES))},o)),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,o=Be.cloneArray(s.extraHeaders),a=Be.cloneObject(s.mediaConstraints),t=s.mediaStream||null,n=Be.cloneObject(s.pcConfig,{iceServers:[]}),p=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 dn.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==Z.STATUS_WAITING_FOR_ANSWER)throw new dn.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),o.unshift(`Contact: ${this._contact}`);const R=r.parseSDP();Array.isArray(R.media)||(R.media=[R.media]);for(const I of R.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&&a.audio===!1){g=t.getAudioTracks();for(const I of g)t.removeTrack(I)}if(t&&a.video===!1){g=t.getVideoTracks();for(const I of g)t.removeTrack(I)}!t&&a.audio===void 0&&(a.audio=y),!t&&a.video===void 0&&(a.video=A),!t&&!T&&!d.offerToReceiveAudio&&(a.audio=!1),!t&&!E&&!d.offerToReceiveVideo&&(a.video=!1),this._createRTCConnection(n,p),Promise.resolve().then(()=>{if(t)return t;if(a.audio||a.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(a).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($=>{this._connection.addTrack($,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 $=new RTCSessionDescription({type:"offer",sdp:I.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription($)).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,o),r.reply(200,null,o,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,o=Be.cloneArray(s.extraHeaders),a=s.body;let t,n=s.status_code,p=s.reason_phrase;if(this._status===Z.STATUS_TERMINATED)throw new dn.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&&(p=p||fe.REASON_PHRASE[n]||"",t=`SIP ;cause=${n} ;text="${p}"`),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,p,o,a),this._failed("local",null,fe.causes.REJECTED);break;case Z.STATUS_WAITING_FOR_ACK:case Z.STATUS_CONFIRMED:if(Y.debug("terminating session"),p=s.reason_phrase||fe.REASON_PHRASE[n]||"",n&&(n<200||n>=700))throw new TypeError(`Invalid status_code: ${n}`);if(n&&o.push(`Reason: SIP ;cause=${n}; text="${p}"`),this._status===Z.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==of.C.STATUS_TERMINATED){const _=this._dialog;this.receiveRequest=({method:d})=>{d===fe.ACK&&(this.sendRequest(fe.BYE,{extraHeaders:o,body:a}),_.terminate())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===of.C.STATUS_TERMINATED&&(this.sendRequest(fe.BYE,{extraHeaders:o,body:a}),_.terminate())}),this._ended("local",null,r),this._dialog=_,this._ua.newDialog(_)}else this.sendRequest(fe.BYE,{extraHeaders:o,body:a}),this._ended("local",null,r)}}sendDTMF(s,r={}){Y.debug("sendDTMF() | tones: %s",s);let o=0,a=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 dn.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(a&&!Be.isDecimal(a))throw new TypeError(`Invalid tone duration: ${a}`);if(a?a<xt.C.MIN_DURATION?(Y.debug(`"duration" value is lower than the minimum allowed, setting it to ${xt.C.MIN_DURATION} milliseconds`),a=xt.C.MIN_DURATION):a>xt.C.MAX_DURATION?(Y.debug(`"duration" value is greater than the maximum allowed, setting it to ${xt.C.MAX_DURATION} milliseconds`),a=xt.C.MAX_DURATION):a=Math.abs(a):a=xt.C.DEFAULT_DURATION,r.duration=a,t&&!Be.isDecimal(t))throw new TypeError(`Invalid interToneGap: ${t}`);if(t?t<xt.C.MIN_INTER_TONE_GAP?(Y.debug(`"interToneGap" value is lower than the minimum allowed, setting it to ${xt.C.MIN_INTER_TONE_GAP} milliseconds`),t=xt.C.MIN_INTER_TONE_GAP):t=Math.abs(t):t=xt.C.DEFAULT_INTER_TONE_GAP,n===fe.DTMF_TRANSPORT.RFC2833){const _=this._getDTMFRTPSender();_&&(s=_.toneBuffer+s,_.insertDTMF(s,a,t));return}if(this._tones){this._tones+=s;return}this._tones=s,p.call(this);function p(){let _;if(this._status===Z.STATUS_TERMINATED||!this._tones||o>=this._tones.length){this._tones=null;return}const d=this._tones[o];if(o+=1,d===",")_=2e3;else{const g=new xt(this);r.eventHandlers={onFailed:()=>{this._tones=null}},g.send(d,r),_=a+t}setTimeout(p.bind(this),_)}}sendInfo(s,r,o={}){if(Y.debug("sendInfo()"),this._status!==Z.STATUS_CONFIRMED&&this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_1XX_RECEIVED)throw new dn.InvalidStateError(this._status);new af(this).send(s,r,o)}mute(s={audio:!0,video:!1}){Y.debug("mute()");let r=!1,o=!1;this._audioMuted===!1&&s.audio&&(r=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&s.video&&(o=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(r===!0||o===!0)&&this._onmute({audio:r,video:o})}unmute(s={audio:!0,video:!0}){Y.debug("unmute()");let r=!1,o=!1;this._audioMuted===!0&&s.audio&&(r=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&s.video&&(o=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(r===!0||o===!0)&&this._onunmute({audio:r,video:o})}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 o={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:o,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:o,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 o={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:o,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:o,extraHeaders:s.extraHeaders}),!0}renegotiate(s={},r){Y.debug("renegotiate()");const o=s.rtcOfferConstraints||null;if(this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;const a={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:a,rtcOfferConstraints:o,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:a,rtcOfferConstraints:o,extraHeaders:s.extraHeaders}),!0}refer(s,r){Y.debug("refer()");const o=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: ${o}`);const a=new Ag(this);a.sendRefer(s,r);const t=a.id;return this._referSubscribers[t]=a,a.on("requestFailed",()=>{delete this._referSubscribers[t]}),a.on("accepted",()=>{delete this._referSubscribers[t]}),a.on("failed",()=>{delete this._referSubscribers[t]}),a}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 o=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(o)).then(()=>{this._is_confirmed||this._confirmed("remote",s)}).catch(a=>{this.terminate({cause:fe.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)})}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 xt(this).init_incoming(s):r!==void 0?new af(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 o=Mi.T1;function a(){this._status===Z.STATUS_WAITING_FOR_ACK&&(s.reply(200,null,[`Contact: ${this._contact}`],r),o<Mi.T2&&(o=o*2,o>Mi.T2&&(o=Mi.T2)),this._timers.invite2xxTimer=setTimeout(a.bind(this),o))}this._timers.invite2xxTimer=setTimeout(a.bind(this),o)}_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))},Mi.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 o=this._connection;return this._rtcReady=!1,Promise.resolve().then(()=>s==="offer"?o.createOffer(r).catch(a=>(Y.warn('emit "peerconnection:createofferfailed" [error:%o]',a),this.emit("peerconnection:createofferfailed",a),Promise.reject(a))):o.createAnswer(r).catch(a=>(Y.warn('emit "peerconnection:createanswerfailed" [error:%o]',a),this.emit("peerconnection:createanswerfailed",a),Promise.reject(a)))).then(a=>o.setLocalDescription(a).catch(t=>(this._rtcReady=!0,Y.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',t),this.emit("peerconnection:setlocaldescriptionfailed",t),Promise.reject(t)))).then(()=>{const a=r&&r.iceRestart;if(o.iceGatheringState==="complete"&&!a||o.iceGatheringState==="gathering"&&this._iceReady){this._rtcReady=!0;const t={originator:"local",type:s,sdp:o.localDescription.sdp};return Y.debug('emit "sdp"'),this.emit("sdp",t),Promise.resolve(t.sdp)}return new Promise(t=>{let n=!1,p,_;this._iceReady=!1;const d=()=>{o.removeEventListener("icecandidate",p),o.removeEventListener("icegatheringstatechange",_),n=!0,this._rtcReady=!0,this._iceReady=!0;const g={originator:"local",type:s,sdp:o.localDescription.sdp};Y.debug('emit "sdp"'),this.emit("sdp",g),t(g.sdp)};o.addEventListener("icecandidate",p=g=>{const T=g.candidate;T?this.emit("icecandidate",{candidate:T,ready:d}):n||d()}),o.addEventListener("icegatheringstatechange",_=()=>{o.iceGatheringState==="complete"&&!n&&d()})})})}_createDialog(s,r,o){const a=r==="UAS"?s.to_tag:s.from_tag,t=r==="UAS"?s.from_tag:s.to_tag,n=s.call_id+a+t;let p=this._earlyDialogs[n];if(o)return p?!0:(p=new Wl(this,s,r,Wl.C.STATUS_EARLY),p.error?(Y.debug(p.error),this._failed("remote",s,fe.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[n]=p,!0));{if(this._from_tag=s.from_tag,this._to_tag=s.to_tag,p)return p.update(s,r),this._dialog=p,delete this._earlyDialogs[n],!0;const _=new Wl(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,o={request:s,callback:void 0,reject:t.bind(this)};let a=!1;function t(p={}){a=!0;const _=p.status_code||403,d=p.reason_phrase||"",g=Be.cloneArray(p.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",o),a)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(p=>{n.call(this,p)}).catch(()=>{s.reply(500)});return}if(r!=="application/sdp"){Y.debug("invalid Content-Type"),s.reply(415);return}this._processInDialogSdpOffer(s).then(p=>{this._status!==Z.STATUS_TERMINATED&&n.call(this,p)}).catch(p=>{Y.warn(p)});function n(p){const _=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(s,_),this._late_sdp&&(p=this._mangleOffer(p)),s.reply(200,null,_,p,()=>{this._status=Z.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(s,p),this._setACKTimer()}),typeof o.callback=="function"&&o.callback()}}_receiveUpdate(s){Y.debug("receiveUpdate()");const r=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,o={request:s,callback:void 0,reject:t.bind(this)};let a=!1;function t(p={}){a=!0;const _=p.status_code||403,d=p.reason_phrase||"",g=Be.cloneArray(p.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",o),a)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(p=>{this._status!==Z.STATUS_TERMINATED&&n.call(this,p)}).catch(p=>{Y.warn(p)});function n(p){const _=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(s,_),s.reply(200,null,_,p),typeof o.callback=="function"&&o.callback()}}_processInDialogSdpOffer(s){Y.debug("_processInDialogSdpOffer()");const r=s.parseSDP();let o=!1;for(const n of r.media){if(Kl.indexOf(n.type)===-1)continue;const p=n.direction||r.direction||"sendrecv";if(p==="sendonly"||p==="inactive")o=!0;else{o=!1;break}}const a={originator:"remote",type:"offer",sdp:s.body};Y.debug('emit "sdp"'),this.emit("sdp",a);const t=new RTCSessionDescription({type:"offer",sdp:a.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&&o===!1?(this._remoteHold=!1,this._onunhold("remote")):this._remoteHold===!1&&o===!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 yg(this,s.cseq);Y.debug('emit "refer"'),this.emit("refer",{request:s,accept:(t,n)=>{o.call(this,t,n)},reject:()=>{a.call(this)}});function o(t,n={}){if(t=typeof t=="function"?t:null,this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED)return!1;const p=new _u(this._ua);if(p.on("progress",({response:_})=>{r.notify(_.status_code,_.reason_phrase)}),p.on("accepted",({response:_})=>{r.notify(_.status_code,_.reason_phrase)}),p.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: ${_}`)}p.connect(s.refer_to.uri.toAor(),n,t)}function a(){r.notify(603)}}_receiveNotify(s){switch(Y.debug("receiveNotify()"),s.event||s.reply(400),s.event.event){case"refer":{let r,o;if(s.event.params&&s.event.params.id)r=s.event.params.id,o=this._referSubscribers[r];else if(Object.keys(this._referSubscribers).length===1)o=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{s.reply(400,"Missing event id parameter");return}if(!o){s.reply(481,"Subscription does not exist");return}o.receiveNotify(s),s.reply(200);break}default:s.reply(489)}}_receiveReplaces(s){Y.debug("receiveReplaces()");function r(a){if(this._status!==Z.STATUS_WAITING_FOR_ACK&&this._status!==Z.STATUS_CONFIRMED)return!1;const t=new _u(this._ua);t.on("confirmed",()=>{this.terminate()}),t.init_incoming(s,a)}function o(){Y.debug("Replaced INVITE rejected by the user"),s.reply(486)}this.emit("replaces",{request:s,accept:a=>{r.call(this,a)},reject:()=>{o.call(this)}})}_sendInitialRequest(s,r,o){const a=new Sg(this._ua,this._request,{onRequestTimeout:()=>{this.onRequestTimeout()},onTransportError:()=>{this.onTransportError()},onAuthenticated:t=>{this._request=t},onReceiveResponse:t=>{this._receiveInviteResponse(t)}});Promise.resolve().then(()=>{if(o)return o;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}),a.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 Wl(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 o=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(o)).then(()=>this._progress("remote",s)).catch(a=>{Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)});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 o=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()),this._failed("local",s,fe.causes.WEBRTC_ERROR)})}).then(()=>{this._connection.setRemoteDescription(o).then(()=>{this._handleSessionTimersInIncomingResponse(s),this._accepted("remote",s),this.sendRequest(fe.ACK),this._confirmed("local",null)}).catch(a=>{this._acceptAndTerminate(s,488,"Not Acceptable Here"),this._failed("remote",s,fe.causes.BAD_MEDIA_DESCRIPTION),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)})});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),o=Be.cloneObject(s.eventHandlers),a=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",a)).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=>{p.call(this,g)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{p()});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"){p.call(this);return}}else{p.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(()=>{o.succeeded&&o.succeeded(_)}).catch(T=>{p.call(this),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',T),this.emit("peerconnection:setremotedescriptionfailed",T)})}function p(_){o.failed&&o.failed(_)}}_sendUpdate(s={}){Y.debug("sendUpdate()");const r=Be.cloneArray(s.extraHeaders),o=Be.cloneObject(s.eventHandlers),a=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",a)).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=>{p.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=>{p.call(this,d)},onErrorResponse:d=>{_.call(this,d)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}});function p(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(()=>{o.succeeded&&o.succeeded(d)}).catch(E=>{_.call(this),Y.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),this.emit("peerconnection:setremotedescriptionfailed",E)})}else o.succeeded&&o.succeeded(d)}function _(d){o.failed&&o.failed(d)}}_acceptAndTerminate(s,r,o){Y.debug("acceptAndTerminate()");const a=[];r&&(o=o||fe.REASON_PHRASE[r]||"",a.push(`Reason: SIP ;cause=${r}; text="${o}"`)),(this._dialog||this._createDialog(s,"UAC"))&&(this.sendRequest(fe.ACK),this.sendRequest(fe.BYE,{extraHeaders:a})),this._status=Z.STATUS_TERMINATED}_mangleOffer(s){if(!this._localHold&&!this._remoteHold)return s;if(s=lf.parse(s),this._localHold&&!this._remoteHold){Y.debug("mangleOffer() | me on hold, mangling offer");for(const r of s.media)Kl.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)Kl.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)Kl.indexOf(r.type)!==-1&&(r.direction?r.direction==="sendrecv"?r.direction="recvonly":r.direction==="recvonly"&&(r.direction="inactive"):r.direction="recvonly")}return lf.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 o;s.session_expires&&s.session_expires>=fe.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=s.session_expires,o=s.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,o="uas"),r.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${o}`),this._sessionTimers.refresher=o==="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(o=>o.track&&o.track.kind==="audio");for(const o of r)o.track.enabled=!s}_toggleMuteVideo(s){const r=this._connection.getSenders().filter(o=>o.track&&o.track.kind==="video");for(const o of r)o.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,o){Y.debug("session ended"),this._end_time=new Date,this._close(),Y.debug('emit "ended"'),this.emit("ended",{originator:s,message:r||null,cause:o})}_failed(s,r,o){Y.debug("session failed"),Y.debug('emit "_failed"'),this.emit("_failed",{originator:s,message:r||null,cause:o}),this._close(),Y.debug('emit "failed"'),this.emit("failed",{originator:s,message:r||null,cause:o})}_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 Cg=ot(d_),Rg=ct.EventEmitter,Ig=at,xa=Ue,bg=Mt,ki=St(),wg=_r,cf=vs,Og=Ts(),Yl=new Ig("Message");var Dg=class extends Rg{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,o={}){const a=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: ${a}`);const t=ki.cloneArray(o.extraHeaders),n=ki.cloneObject(o.eventHandlers),p=o.contentType||"text/plain",_={};o.fromUserName&&(_.from_uri=new Og("sip",o.fromUserName,this._ua.configuration.uri.host),t.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`)),o.fromDisplayName&&(_.from_display_name=o.fromDisplayName);for(const g in n)Object.prototype.hasOwnProperty.call(n,g)&&this.on(g,n[g]);t.push(`Content-Type: ${p}`),this._request=new bg.OutgoingRequest(xa.MESSAGE,s,this._ua,_,t),r&&(this._request.body=r);const d=new wg(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=ki.cloneArray(s.extraHeaders),o=s.body;if(this._direction!=="incoming")throw new cf.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,o)}reject(s={}){const r=s.status_code||480,o=s.reason_phrase,a=ki.cloneArray(s.extraHeaders),t=s.body;if(this._direction!=="incoming")throw new cf.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,o,a,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=ki.sipErrorCause(s.status_code);this._failed("remote",s,r);break}}}_onRequestTimeout(){this._closed||this._failed("system",null,xa.causes.REQUEST_TIMEOUT)}_onTransportError(){this._closed||this._failed("system",null,xa.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,o){Yl.debug("MESSAGE failed"),this._close(),Yl.debug('emit "failed"'),this.emit("failed",{originator:s,response:r||null,cause:o})}_succeeded(s,r){Yl.debug("MESSAGE succeeded"),this._close(),Yl.debug('emit "succeeded"'),this.emit("succeeded",{originator:s,response:r})}};const Ng=ct.EventEmitter,Ug=at,Ma=Ue,Pg=Mt,Li=St(),xg=_r,ff=vs,zl=new Ug("Options");var Mg=class extends Ng{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,o={}){const a=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: ${a}`);const t=Li.cloneArray(o.extraHeaders),n=Li.cloneObject(o.eventHandlers),p=o.contentType||"application/sdp";for(const d in n)Object.prototype.hasOwnProperty.call(n,d)&&this.on(d,n[d]);t.push(`Content-Type: ${p}`),this._request=new Pg.OutgoingRequest(Ma.OPTIONS,s,this._ua,null,t),r&&(this._request.body=r);const _=new xg(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=Li.cloneArray(s.extraHeaders),o=s.body;if(this._direction!=="incoming")throw new ff.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,o)}reject(s={}){const r=s.status_code||480,o=s.reason_phrase,a=Li.cloneArray(s.extraHeaders),t=s.body;if(this._direction!=="incoming")throw new ff.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,o,a,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=Li.sipErrorCause(s.status_code);this._failed("remote",s,r);break}}}_onRequestTimeout(){this._closed||this._failed("system",null,Ma.causes.REQUEST_TIMEOUT)}_onTransportError(){this._closed||this._failed("system",null,Ma.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,o){zl.debug("OPTIONS failed"),this._close(),zl.debug('emit "failed"'),this.emit("failed",{originator:s,response:r||null,cause:o})}_succeeded(s,r){zl.debug("OPTIONS succeeded"),this._close(),zl.debug('emit "succeeded"'),this.emit("succeeded",{originator:s,response:r})}},Du={};const kg=at,ka=St(),Lg=is(),$i=new kg("Socket");Du.isSocket=c=>{if(Array.isArray(c))return!1;if(typeof c>"u")return $i.warn("undefined JsSIP.Socket instance"),!1;try{if(!ka.isString(c.url))throw $i.warn("missing or invalid JsSIP.Socket url property"),new Error("Missing or invalid JsSIP.Socket url property");if(!ka.isString(c.via_transport))throw $i.warn("missing or invalid JsSIP.Socket via_transport property"),new Error("Missing or invalid JsSIP.Socket via_transport property");if(Lg.parse(c.sip_uri,"SIP_URI")===-1)throw $i.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(!ka.isFunction(c[s]))throw $i.warn(`missing or invalid JsSIP.Socket method: ${s}`),new Error(`Missing or invalid JsSIP.Socket method: ${s}`)})}catch{return!1}return!0};const $g=at,Hg=Du,_f=Ue,Dt=new $g("Transport"),jt={STATUS_CONNECTED:0,STATUS_CONNECTING:1,STATUS_DISCONNECTED:2,SOCKET_STATUS_READY:0,SOCKET_STATUS_ERROR:1,recovery_options:{min_interval:_f.CONNECTION_RECOVERY_MIN_INTERVAL,max_interval:_f.CONNECTION_RECOVERY_MAX_INTERVAL}};var Fg=class{constructor(s,r=jt.recovery_options){Dt.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(o){Dt.warn(`cannot use TextDecoder: ${o}`)}if(typeof s>"u")throw new TypeError("Invalid argument. undefined 'sockets' argument");s instanceof Array||(s=[s]),s.forEach(function(o){if(!Hg.isSocket(o.socket))throw new TypeError("Invalid argument. invalid 'JsSIP.Socket' instance");if(o.weight&&!Number(o.weight))throw new TypeError("Invalid argument. 'weight' attribute is not a number");this.sockets.push({socket:o.socket,weight:o.weight||0,status:jt.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(Dt.debug("connect()"),this.isConnected()){Dt.debug("Transport is already connected");return}else if(this.isConnecting()){Dt.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())}disconnect(){Dt.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=()=>{},this.socket.ondisconnect=()=>{},this.socket.ondata=()=>{},this.socket.disconnect(),this.ondisconnect({socket:this.socket,error:!1})}send(s){if(Dt.debug("send()"),!this.isConnected())return Dt.warn("unable to send message, transport is not connected"),!1;const r=s.toString();return Dt.debug(`sending message:
116
116
 
117
117
  ${r}
118
- `),this.socket.send(r)}isConnected(){return this.status===Vt.STATUS_CONNECTED}isConnecting(){return this.status===Vt.STATUS_CONNECTING}_reconnect(){this.recover_attempts+=1;let n=Math.floor(Math.random()*Math.pow(2,this.recover_attempts)+1);n<this.recovery_options.min_interval?n=this.recovery_options.min_interval:n>this.recovery_options.max_interval&&(n=this.recovery_options.max_interval),Ot.debug(`reconnection attempt: ${this.recover_attempts}. next connection attempt in ${n} seconds`),this.recovery_timer=setTimeout(()=>{!this.close_requested&&!(this.isConnected()||this.isConnecting())&&(this._getSocket(),this.connect())},n*1e3)}_getSocket(){let n=[];if(this.sockets.forEach(o=>{o.status!==Vt.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(o=>{o.status=Vt.SOCKET_STATUS_READY}),this._getSocket();return}const r=Math.floor(Math.random()*n.length);this.socket=n[r].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(n,r,o){this.status=Vt.STATUS_DISCONNECTED,this.ondisconnect({socket:this.socket,error:n,code:r,reason:o}),!this.close_requested&&(this.sockets.forEach(function(a){this.socket===a.socket&&(a.status=Vt.SOCKET_STATUS_ERROR)},this),this._reconnect(n))}_onData(n){if(n===`\r
119
- `){Ot.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{Ot.debug("received binary message failed to be converted into string, message discarded");return}Ot.debug(`received binary message:
118
+ `),this.socket.send(r)}isConnected(){return this.status===jt.STATUS_CONNECTED}isConnecting(){return this.status===jt.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),Dt.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(o=>{o.status!==jt.SOCKET_STATUS_ERROR&&(s.length===0?s.push(o):o.weight>s[0].weight?s=[o]:o.weight===s[0].weight&&s.push(o))}),s.length===0){this.sockets.forEach(o=>{o.status=jt.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=jt.STATUS_CONNECTED,this.recovery_timer!==null&&(clearTimeout(this.recovery_timer),this.recovery_timer=null),this.onconnect({socket:this})}_onDisconnect(s,r,o){this.status=jt.STATUS_DISCONNECTED,this.ondisconnect({socket:this.socket,error:s,code:r,reason:o}),!this.close_requested&&(this.sockets.forEach(function(a){this.socket===a.socket&&(a.status=jt.SOCKET_STATUS_ERROR)},this),this._reconnect(s))}_onData(s){if(s===`\r
119
+ `){Dt.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{Dt.debug("received binary message failed to be converted into string, message discarded");return}Dt.debug(`received binary message:
120
120
 
121
- ${n}
122
- `)}else Ot.debug(`received text message:
121
+ ${s}
122
+ `)}else Dt.debug(`received text message:
123
123
 
124
- ${n}
125
- `);this.ondata({transport:this,message:n})}},c_={};const kg=at,cu=rs(),fu=xt,zl=new kg("Parser");c_.parseMessage=(c,n)=>{let r,o,a=c.indexOf(`\r
126
- `);if(a===-1){zl.warn("parseMessage() | no CRLF found, not a SIP message");return}const t=c.substring(0,a);let s=cu.parse(t,"Request_Response");if(s===-1){zl.warn(`parseMessage() | error parsing first line of SIP message: "${t}"`);return}else s.status_code?(r=new fu.IncomingResponse,r.status_code=s.status_code,r.reason_phrase=s.reason_phrase):(r=new fu.IncomingRequest(n),r.method=s.method,r.ruri=s.uri);r.data=c;let p=a+2;for(;;){if(a=Lg(c,p),a===-2){o=p+2;break}else if(a===-1){zl.warn("parseMessage() | malformed message");return}if(s=$g(r,c,p,a),s!==!0){zl.warn("parseMessage() |",s.error);return}p=a+2}if(r.hasHeader("content-length")){const _=r.getHeader("content-length");r.body=c.substr(o,_)}else r.body=c.substring(o);return r};function Lg(c,n){let r=n,o=0,a=0;if(c.substring(r,r+2).match(/(^\r\n)/))return-2;for(;o===0;){if(a=c.indexOf(`\r
127
- `,r),a===-1)return a;!c.substring(a+2,a+4).match(/(^\r\n)/)&&c.charAt(a+2).match(/(^\s+)/)?r=a+2:o=a}return o}function $g(c,n,r,o){let a;const t=n.indexOf(":",r),s=n.substring(r,t).trim(),p=n.substring(t+1,o).trim();switch(s.toLowerCase()){case"via":case"v":c.addHeader("via",p),c.getHeaders("via").length===1?(a=c.parseHeader("Via"),a&&(c.via=a,c.via_branch=a.branch)):a=0;break;case"from":case"f":c.setHeader("from",p),a=c.parseHeader("from"),a&&(c.from=a,c.from_tag=a.getParam("tag"));break;case"to":case"t":c.setHeader("to",p),a=c.parseHeader("to"),a&&(c.to=a,c.to_tag=a.getParam("tag"));break;case"record-route":if(a=cu.parse(p,"Record_Route"),a===-1)a=void 0;else for(const _ of a)c.addHeader("record-route",p.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",p),a=c.parseHeader("call-id"),a&&(c.call_id=p);break;case"contact":case"m":if(a=cu.parse(p,"Contact"),a===-1)a=void 0;else for(const _ of a)c.addHeader("contact",p.substring(_.possition,_.offset)),c.headers.Contact[c.getHeaders("contact").length-1].parsed=_.parsed;break;case"content-length":case"l":c.setHeader("content-length",p),a=c.parseHeader("content-length");break;case"content-type":case"c":c.setHeader("content-type",p),a=c.parseHeader("content-type");break;case"cseq":c.setHeader("cseq",p),a=c.parseHeader("cseq"),a&&(c.cseq=a.value),c instanceof fu.IncomingResponse&&(c.method=a.method);break;case"max-forwards":c.setHeader("max-forwards",p),a=c.parseHeader("max-forwards");break;case"www-authenticate":c.setHeader("www-authenticate",p),a=c.parseHeader("www-authenticate");break;case"proxy-authenticate":c.setHeader("proxy-authenticate",p),a=c.parseHeader("proxy-authenticate");break;case"session-expires":case"x":c.setHeader("session-expires",p),a=c.parseHeader("session-expires"),a&&(c.session_expires=a.expires,c.session_expires_refresher=a.refresher);break;case"refer-to":case"r":c.setHeader("refer-to",p),a=c.parseHeader("refer-to"),a&&(c.refer_to=a);break;case"replaces":c.setHeader("replaces",p),a=c.parseHeader("replaces"),a&&(c.replaces=a);break;case"event":case"o":c.setHeader("event",p),a=c.parseHeader("event"),a&&(c.event=a);break;default:c.addHeader(s,p),a=0}return a===void 0?{error:`error parsing header "${s}"`}:!0}const Hg=at,f_=Ue,cf=xt,wu=Et(),Ou=new Hg("sanityCheck"),Fg=[Jg],Vg=[Bg,Gg,Wg,Kg],jg=[Yg,zg];let Fe,Zt,__;var qg=(c,n,r)=>{Fe=c,Zt=n,__=r;for(const o of Fg)if(o()===!1)return!1;if(Fe instanceof cf.IncomingRequest){for(const o of Vg)if(o()===!1)return!1}else if(Fe instanceof cf.IncomingResponse){for(const o of jg)if(o()===!1)return!1}return!0};function Bg(){if(Fe.s("to").uri.scheme!=="sip")return Yi(416),!1}function Gg(){if(!Fe.to_tag&&Fe.call_id.substr(0,5)===Zt.configuration.jssip_id)return Yi(482),!1}function Wg(){const c=wu.str_utf8_length(Fe.body),n=Fe.getHeader("content-length");if(c<n)return Yi(400),!1}function Kg(){const c=Fe.from_tag,n=Fe.call_id,r=Fe.cseq;let o;if(!Fe.to_tag)if(Fe.method===f_.INVITE){if(Zt._transactions.ist[Fe.via_branch])return!1;for(const a in Zt._transactions.ist)if(Object.prototype.hasOwnProperty.call(Zt._transactions.ist,a)&&(o=Zt._transactions.ist[a],o.request.from_tag===c&&o.request.call_id===n&&o.request.cseq===r))return Yi(482),!1}else{if(Zt._transactions.nist[Fe.via_branch])return!1;for(const a in Zt._transactions.nist)if(Object.prototype.hasOwnProperty.call(Zt._transactions.nist,a)&&(o=Zt._transactions.nist[a],o.request.from_tag===c&&o.request.call_id===n&&o.request.cseq===r))return Yi(482),!1}}function Yg(){if(Fe.getHeaders("via").length>1)return Ou.debug("more than one Via header field present in the response, dropping the response"),!1}function zg(){const c=wu.str_utf8_length(Fe.body),n=Fe.getHeader("content-length");if(c<n)return Ou.debug("message body length is lower than the value in Content-Length header field, dropping the response"),!1}function Jg(){const c=["from","to","call_id","cseq","via"];for(const n of c)if(!Fe.hasHeader(n))return Ou.debug(`missing mandatory header field : ${n}, dropping the response`),!1}function Yi(c){const n=Fe.getHeaders("via");let r,o=`SIP/2.0 ${c} ${f_.REASON_PHRASE[c]}\r
128
- `;for(const a of n)o+=`Via: ${a}\r
129
- `;r=Fe.getHeader("To"),Fe.to_tag||(r+=`;tag=${wu.newTag()}`),o+=`To: ${r}\r
124
+ ${s}
125
+ `);this.ondata({transport:this,message:s})}},p_={};const Vg=at,hu=is(),du=Mt,Jl=new Vg("Parser");p_.parseMessage=(c,s)=>{let r,o,a=c.indexOf(`\r
126
+ `);if(a===-1){Jl.warn("parseMessage() | no CRLF found, not a SIP message");return}const t=c.substring(0,a);let n=hu.parse(t,"Request_Response");if(n===-1){Jl.warn(`parseMessage() | error parsing first line of SIP message: "${t}"`);return}else n.status_code?(r=new du.IncomingResponse,r.status_code=n.status_code,r.reason_phrase=n.reason_phrase):(r=new du.IncomingRequest(s),r.method=n.method,r.ruri=n.uri);r.data=c;let p=a+2;for(;;){if(a=jg(c,p),a===-2){o=p+2;break}else if(a===-1){Jl.warn("parseMessage() | malformed message");return}if(n=qg(r,c,p,a),n!==!0){Jl.warn("parseMessage() |",n.error);return}p=a+2}if(r.hasHeader("content-length")){const _=r.getHeader("content-length");r.body=c.substr(o,_)}else r.body=c.substring(o);return r};function jg(c,s){let r=s,o=0,a=0;if(c.substring(r,r+2).match(/(^\r\n)/))return-2;for(;o===0;){if(a=c.indexOf(`\r
127
+ `,r),a===-1)return a;!c.substring(a+2,a+4).match(/(^\r\n)/)&&c.charAt(a+2).match(/(^\s+)/)?r=a+2:o=a}return o}function qg(c,s,r,o){let a;const t=s.indexOf(":",r),n=s.substring(r,t).trim(),p=s.substring(t+1,o).trim();switch(n.toLowerCase()){case"via":case"v":c.addHeader("via",p),c.getHeaders("via").length===1?(a=c.parseHeader("Via"),a&&(c.via=a,c.via_branch=a.branch)):a=0;break;case"from":case"f":c.setHeader("from",p),a=c.parseHeader("from"),a&&(c.from=a,c.from_tag=a.getParam("tag"));break;case"to":case"t":c.setHeader("to",p),a=c.parseHeader("to"),a&&(c.to=a,c.to_tag=a.getParam("tag"));break;case"record-route":if(a=hu.parse(p,"Record_Route"),a===-1)a=void 0;else for(const _ of a)c.addHeader("record-route",p.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",p),a=c.parseHeader("call-id"),a&&(c.call_id=p);break;case"contact":case"m":if(a=hu.parse(p,"Contact"),a===-1)a=void 0;else for(const _ of a)c.addHeader("contact",p.substring(_.possition,_.offset)),c.headers.Contact[c.getHeaders("contact").length-1].parsed=_.parsed;break;case"content-length":case"l":c.setHeader("content-length",p),a=c.parseHeader("content-length");break;case"content-type":case"c":c.setHeader("content-type",p),a=c.parseHeader("content-type");break;case"cseq":c.setHeader("cseq",p),a=c.parseHeader("cseq"),a&&(c.cseq=a.value),c instanceof du.IncomingResponse&&(c.method=a.method);break;case"max-forwards":c.setHeader("max-forwards",p),a=c.parseHeader("max-forwards");break;case"www-authenticate":c.setHeader("www-authenticate",p),a=c.parseHeader("www-authenticate");break;case"proxy-authenticate":c.setHeader("proxy-authenticate",p),a=c.parseHeader("proxy-authenticate");break;case"session-expires":case"x":c.setHeader("session-expires",p),a=c.parseHeader("session-expires"),a&&(c.session_expires=a.expires,c.session_expires_refresher=a.refresher);break;case"refer-to":case"r":c.setHeader("refer-to",p),a=c.parseHeader("refer-to"),a&&(c.refer_to=a);break;case"replaces":c.setHeader("replaces",p),a=c.parseHeader("replaces"),a&&(c.replaces=a);break;case"event":case"o":c.setHeader("event",p),a=c.parseHeader("event"),a&&(c.event=a);break;default:c.addHeader(n,p),a=0}return a===void 0?{error:`error parsing header "${n}"`}:!0}const Bg=at,m_=Ue,hf=Mt,Nu=St(),Uu=new Bg("sanityCheck"),Gg=[tT],Wg=[zg,Jg,Xg,Qg],Kg=[Zg,eT];let Fe,es,g_;var Yg=(c,s,r)=>{Fe=c,es=s,g_=r;for(const o of Gg)if(o()===!1)return!1;if(Fe instanceof hf.IncomingRequest){for(const o of Wg)if(o()===!1)return!1}else if(Fe instanceof hf.IncomingResponse){for(const o of Kg)if(o()===!1)return!1}return!0};function zg(){if(Fe.s("to").uri.scheme!=="sip")return zi(416),!1}function Jg(){if(!Fe.to_tag&&Fe.call_id.substr(0,5)===es.configuration.jssip_id)return zi(482),!1}function Xg(){const c=Nu.str_utf8_length(Fe.body),s=Fe.getHeader("content-length");if(c<s)return zi(400),!1}function Qg(){const c=Fe.from_tag,s=Fe.call_id,r=Fe.cseq;let o;if(!Fe.to_tag)if(Fe.method===m_.INVITE){if(es._transactions.ist[Fe.via_branch])return!1;for(const a in es._transactions.ist)if(Object.prototype.hasOwnProperty.call(es._transactions.ist,a)&&(o=es._transactions.ist[a],o.request.from_tag===c&&o.request.call_id===s&&o.request.cseq===r))return zi(482),!1}else{if(es._transactions.nist[Fe.via_branch])return!1;for(const a in es._transactions.nist)if(Object.prototype.hasOwnProperty.call(es._transactions.nist,a)&&(o=es._transactions.nist[a],o.request.from_tag===c&&o.request.call_id===s&&o.request.cseq===r))return zi(482),!1}}function Zg(){if(Fe.getHeaders("via").length>1)return Uu.debug("more than one Via header field present in the response, dropping the response"),!1}function eT(){const c=Nu.str_utf8_length(Fe.body),s=Fe.getHeader("content-length");if(c<s)return Uu.debug("message body length is lower than the value in Content-Length header field, dropping the response"),!1}function tT(){const c=["from","to","call_id","cseq","via"];for(const s of c)if(!Fe.hasHeader(s))return Uu.debug(`missing mandatory header field : ${s}, dropping the response`),!1}function zi(c){const s=Fe.getHeaders("via");let r,o=`SIP/2.0 ${c} ${m_.REASON_PHRASE[c]}\r
128
+ `;for(const a of s)o+=`Via: ${a}\r
129
+ `;r=Fe.getHeader("To"),Fe.to_tag||(r+=`;tag=${Nu.newTag()}`),o+=`To: ${r}\r
130
130
  `,o+=`From: ${Fe.getHeader("From")}\r
131
131
  `,o+=`Call-ID: ${Fe.call_id}\r
132
132
  `,o+=`CSeq: ${Fe.cseq} ${Fe.method}\r
133
133
  `,o+=`\r
134
- `,__.send(o)}var Du={};const ir=Et(),gn=Ue,Ma=rs(),ff=gs(),ka=bu,La=Ts;Du.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:gn.UPDATE,session_timers_force_refresher:!1,no_answer_timeout:60,register:!0,register_expires:600,registrar_server:null,sockets:null,connection_recovery_max_interval:gn.CONNECTION_RECOVERY_MAX_INTERVAL,connection_recovery_min_interval:gn.CONNECTION_RECOVERY_MIN_INTERVAL,extra_headers:null,via_host:`${ir.createRandomToken(12)}.invalid`};const Jl={mandatory:{sockets(c){const n=[];if(ka.isSocket(c))n.push({socket:c});else if(Array.isArray(c)&&c.length)for(const r of c)Object.prototype.hasOwnProperty.call(r,"socket")&&ka.isSocket(r.socket)?n.push(r):ka.isSocket(r)&&n.push({socket:r});else return;return n},uri(c){/^sip:/i.test(c)||(c=`${gn.SIP}:${c}`);const n=ff.parse(c);if(n)return n.user?n:void 0}},optional:{authorization_user(c){if(Ma.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(ir.isDecimal(c)){const n=Number(c);if(n>0)return n}},connection_recovery_min_interval(c){if(ir.isDecimal(c)){const n=Number(c);if(n>0)return n}},contact_uri(c){if(typeof c=="string"){const n=Ma.parse(c,"SIP_URI");if(n!==-1)return n}},display_name(c){return c},instance_id(c){if(/^uuid:/i.test(c)&&(c=c.substr(5)),Ma.parse(c,"uuid")!==-1)return c},no_answer_timeout(c){if(ir.isDecimal(c)){const n=Number(c);if(n>0)return n}},session_timers(c){if(typeof c=="boolean")return c},session_timers_refresh_method(c){if(typeof c=="string"&&(c=c.toUpperCase(),c===gn.INVITE||c===gn.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(ir.isDecimal(c)){const n=Number(c);if(n>0)return n}},registrar_server(c){/^sip:/i.test(c)||(c=`${gn.SIP}:${c}`);const n=ff.parse(c);if(n)return n.user?void 0:n},use_preloaded_route(c){if(typeof c=="boolean")return c},extra_headers(c){const n=[];if(Array.isArray(c)&&c.length)for(const r of c)typeof r=="string"&&n.push(r);else return;return n}}};Du.load=(c,n)=>{for(const r in Jl.mandatory)if(n.hasOwnProperty(r)){const o=n[r],a=Jl.mandatory[r](o);if(a!==void 0)c[r]=a;else throw new La.ConfigurationError(r,o)}else throw new La.ConfigurationError(r);for(const r in Jl.optional)if(n.hasOwnProperty(r)){const o=n[r];if(ir.isEmpty(o))continue;const a=Jl.optional[r](o);if(a!==void 0)c[r]=a;else throw new La.ConfigurationError(r,o)}};const Xg=ct.EventEmitter,Qg=at,dt=Ue,Zg=Vm,_f=u_,hf=Rg,df=Dg,$a=cr,eT=Mg,Xl=Et(),tT=Ts,sT=gs(),nT=c_,Ha=xt,rT=qg,Fa=Du,je=new Qg("UA"),gt={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2};var h_=class extends Xg{static get C(){return gt}constructor(n){if(je.debug("new() [configuration:%o]",n),super(),this._cache={credentials:{}},this._configuration=Object.assign({},Fa.settings),this._dynConfiguration={},this._dialogs={},this._applicants={},this._sessions={},this._transport=null,this._contact=null,this._status=gt.STATUS_INIT,this._error=null,this._transactions={nist:{},nict:{},ist:{},ict:{}},this._data={},this._closeTimer=null,n===void 0)throw new TypeError("Not enough arguments");try{this._loadConfig(n)}catch(r){throw this._status=gt.STATUS_NOT_READY,this._error=gt.CONFIGURATION_ERROR,r}this._registrator=new Zg(this)}get C(){return gt}get status(){return this._status}get contact(){return this._contact}get configuration(){return this._configuration}get transport(){return this._transport}start(){je.debug("start()"),this._status===gt.STATUS_INIT?this._transport.connect():this._status===gt.STATUS_USER_CLOSED?(je.debug("restarting UA"),this._closeTimer!==null&&(clearTimeout(this._closeTimer),this._closeTimer=null,this._transport.disconnect()),this._status=gt.STATUS_INIT,this._transport.connect()):this._status===gt.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}register(){je.debug("register()"),this._dynConfiguration.register=!0,this._registrator.register()}unregister(n){je.debug("unregister()"),this._dynConfiguration.register=!1,this._registrator.unregister(n)}registrator(){return this._registrator}isRegistered(){return this._registrator.registered}isConnected(){return this._transport.isConnected()}call(n,r){je.debug("call()");const o=new _f(this);return o.connect(n,r),o}sendMessage(n,r,o){je.debug("sendMessage()");const a=new hf(this);return a.send(n,r,o),a}sendOptions(n,r,o){je.debug("sendOptions()");const a=new df(this);return a.send(n,r,o),a}terminateSessions(n){je.debug("terminateSessions()");for(const r in this._sessions)this._sessions[r].isEnded()||this._sessions[r].terminate(n)}stop(){if(je.debug("stop()"),this._dynConfiguration={},this._status===gt.STATUS_USER_CLOSED){je.debug("UA already closed");return}this._registrator.close();const n=Object.keys(this._sessions).length;for(const o in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,o)){je.debug(`closing session ${o}`);try{this._sessions[o].terminate()}catch{}}for(const o in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,o))try{this._applicants[o].close()}catch{}this._status=gt.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&&n===0?this._transport.disconnect():this._closeTimer=setTimeout(()=>{this._closeTimer=null,this._transport.disconnect()},2e3)}normalizeTarget(n){return Xl.normalizeTarget(n,this._configuration.hostport_params)}get(n){switch(n){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',n);return}}set(n,r){switch(n){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 je.warn('set() | cannot set "%s" parameter in runtime',n),!1}return!0}newTransaction(n){this._transactions[n.type][n.id]=n,this.emit("newTransaction",{transaction:n})}destroyTransaction(n){delete this._transactions[n.type][n.id],this.emit("transactionDestroyed",{transaction:n})}newDialog(n){this._dialogs[n.id]=n}destroyDialog(n){delete this._dialogs[n.id]}newMessage(n,r){this._applicants[n]=n,this.emit("newMessage",r)}newOptions(n,r){this._applicants[n]=n,this.emit("newOptions",r)}destroyMessage(n){delete this._applicants[n]}newRTCSession(n,r){this._sessions[n.id]=n,this.emit("newRTCSession",r)}destroyRTCSession(n){delete this._sessions[n.id]}registered(n){this.emit("registered",n)}unregistered(n){this.emit("unregistered",n)}registrationFailed(n){this.emit("registrationFailed",n)}receiveRequest(n){const r=n.method;if(n.ruri.user!==this._configuration.uri.user&&n.ruri.user!==this._contact.uri.user){je.debug("Request-URI does not point to us"),n.method!==dt.ACK&&n.reply_sl(404);return}if(n.ruri.scheme===dt.SIPS){n.reply_sl(416);return}if($a.checkTransaction(this,n))return;if(r===dt.INVITE?new $a.InviteServerTransaction(this,this._transport,n):r!==dt.ACK&&r!==dt.CANCEL&&new $a.NonInviteServerTransaction(this,this._transport,n),r===dt.OPTIONS){if(this.listeners("newOptions").length===0){n.reply(200);return}new df(this).init_incoming(n)}else if(r===dt.MESSAGE){if(this.listeners("newMessage").length===0){n.reply(405);return}new hf(this).init_incoming(n)}else if(r===dt.INVITE&&!n.to_tag&&this.listeners("newRTCSession").length===0){n.reply(405);return}let o,a;if(n.to_tag)o=this._findDialog(n.call_id,n.from_tag,n.to_tag),o?o.receiveRequest(n):r===dt.NOTIFY?(a=this._findSession(n),a?a.receiveRequest(n):(je.debug("received NOTIFY request for a non existent subscription"),n.reply(481,"Subscription does not exist"))):r!==dt.ACK&&n.reply(481);else switch(r){case dt.INVITE:if(window.RTCPeerConnection)if(n.hasHeader("replaces")){const t=n.replaces;o=this._findDialog(t.call_id,t.from_tag,t.to_tag),o?(a=o.owner,a.isEnded()?n.reply(603):a.receiveRequest(n)):n.reply(481)}else a=new _f(this),a.init_incoming(n);else je.warn("INVITE received but WebRTC is not supported"),n.reply(488);break;case dt.BYE:n.reply(481);break;case dt.CANCEL:a=this._findSession(n),a?a.receiveRequest(n):je.debug("received CANCEL request for a non existent session");break;case dt.ACK:break;case dt.NOTIFY:this.emit("sipEvent",{event:n.event,request:n}),n.reply(200);break;default:n.reply(405);break}}_findSession({call_id:n,from_tag:r,to_tag:o}){const a=n+r,t=this._sessions[a],s=n+o,p=this._sessions[s];return t||p||null}_findDialog(n,r,o){let a=n+r+o,t=this._dialogs[a];return t||(a=n+o+r,t=this._dialogs[a],t||null)}_loadConfig(n){try{Fa.load(this._configuration,n)}catch(a){throw a}this._configuration.display_name===0&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=Xl.newUUID()),this._configuration.jssip_id=Xl.createRandomToken(5);const r=this._configuration.uri.clone();r.user=null,this._configuration.hostport_params=r.toString().replace(/^sip:/i,"");try{this._transport=new eT(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=iT.bind(this),this._transport.onconnect=lT.bind(this),this._transport.ondisconnect=oT.bind(this),this._transport.ondata=aT.bind(this)}catch(a){throw je.warn(a),new tT.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 a=this._configuration.uri.clone();a.user=null,a.clearParams(),a.clearHeaders(),this._configuration.registrar_server=a}this._configuration.no_answer_timeout*=1e3,this._configuration.contact_uri?this._configuration.via_host=this._configuration.contact_uri.host:this._configuration.contact_uri=new sT("sip",Xl.createRandomToken(8),this._configuration.via_host,null,{transport:"ws"}),this._contact={pub_gruu:null,temp_gruu:null,uri:this._configuration.contact_uri,toString(a={}){const t=a.anonymous||null,s=a.outbound||null;let p="<";return t?p+=this.temp_gruu||"sip:anonymous@anonymous.invalid;transport=ws":p+=this.pub_gruu||this.uri.toString(),s&&(t?!this.temp_gruu:!this.pub_gruu)&&(p+=";ob"),p+=">",p}};const o=["authorization_user","password","realm","ha1","authorization_jwt","display_name","register"];for(const a in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,a)&&(o.indexOf(a)!==-1?Object.defineProperty(this._configuration,a,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,a,{writable:!1,configurable:!1}));je.debug("configuration parameters after validation:");for(const a in this._configuration)if(Object.prototype.hasOwnProperty.call(Fa.settings,a))switch(a){case"uri":case"registrar_server":je.debug(`- ${a}: ${this._configuration[a]}`);break;case"password":case"ha1":case"authorization_jwt":je.debug(`- ${a}: NOT SHOWN`);break;default:je.debug(`- ${a}: ${JSON.stringify(this._configuration[a])}`)}}};function iT(c){this.emit("connecting",c)}function lT(c){this._status!==gt.STATUS_USER_CLOSED&&(this._status=gt.STATUS_READY,this._error=null,this.emit("connected",c),this._dynConfiguration.register&&this._registrator.register())}function oT(c){const n=["nict","ict","nist","ist"];for(const r of n)for(const o in this._transactions[r])Object.prototype.hasOwnProperty.call(this._transactions[r],o)&&this._transactions[r][o].onTransportError();this.emit("disconnected",c),this._registrator.onTransportClosed(),this._status!==gt.STATUS_USER_CLOSED&&(this._status=gt.STATUS_NOT_READY,this._error=gt.NETWORK_ERROR)}function aT(c){const n=c.transport;let r=c.message;if(r=nT.parseMessage(r,this),!!r&&!(this._status===gt.STATUS_USER_CLOSED&&r instanceof Ha.IncomingRequest)&&rT(r,this,n)){if(r instanceof Ha.IncomingRequest)r.transport=n,this.receiveRequest(r);else if(r instanceof Ha.IncomingResponse){let o;switch(r.method){case dt.INVITE:o=this._transactions.ict[r.via_branch],o&&o.receiveResponse(r);break;case dt.ACK:break;default:o=this._transactions.nict[r.via_branch],o&&o.receiveResponse(r);break}}}}const uT=ot(h_);var Me=Et();const Va=ot(Me),ja=new zf("Dialog"),Ms={STATUS_EARLY:1,STATUS_CONFIRMED:2,STATUS_TERMINATED:3};class Ql{static get C(){return Ms}constructor(n,r,o,a=Ms.STATUS_CONFIRMED){if(this._owner=n,this._ua=n._ua,this._uac_pending_reply=!1,this._uas_pending_reply=!1,r instanceof xt.IncomingResponse&&(a=r.status_code<200?Ms.STATUS_EARLY:Ms.STATUS_CONFIRMED),o==="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=a,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(o==="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=a,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),ja.debug(`new ${o} dialog created with status ${this._state===Ms.STATUS_EARLY?"EARLY":"CONFIRMED"}`)}get id(){return this._id}get local_seqnum(){return this._local_seqnum}set local_seqnum(n){this._local_seqnum=n}get owner(){return this._owner}get uac_pending_reply(){return this._uac_pending_reply}set uac_pending_reply(n){this._uac_pending_reply=n}get uas_pending_reply(){return this._uas_pending_reply}isTerminated(){return this._status===Ms.STATUS_TERMINATED}update(n,r){this._state=Ms.STATUS_CONFIRMED,ja.debug(`dialog ${this._id.toString()} changed to CONFIRMED state`),r==="UAC"&&(this._route_set=n.getHeaders("record-route").reverse())}terminate(){ja.debug(`dialog ${this._id.toString()} deleted`),this._ua.destroyDialog(this),this._state=Ms.STATUS_TERMINATED}sendRequest(n,r={}){const o=Va.cloneArray(r.extraHeaders),a=Va.cloneObject(r.eventHandlers),t=r.body||null,s=this._createRequest(n,o,t);return a.onAuthenticated=()=>{this._local_seqnum+=1},new Km(this,s,a).send(),s}receiveRequest(n){this._checkInDialogRequest(n)&&(n.method===G.ACK&&this._ack_seqnum!==null?this._ack_seqnum=null:n.method===G.INVITE&&(this._ack_seqnum=n.cseq),this._owner.receiveRequest(n))}_createRequest(n,r,o){r=Va.cloneArray(r),this._local_seqnum||(this._local_seqnum=Math.floor(Math.random()*1e4));const a=n===G.CANCEL||n===G.ACK?this._local_seqnum:this._local_seqnum+=1;return new xt.OutgoingRequest(n,this._remote_target,this._ua,{cseq:a,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,o)}_checkInDialogRequest(n){if(!this._remote_seqnum)this._remote_seqnum=n.cseq;else if(n.cseq<this._remote_seqnum)if(n.method===G.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===G.INVITE||n.method===G.UPDATE&&n.body){if(this._uac_pending_reply===!0)n.reply(491);else if(this._uas_pending_reply===!0){const r=(Math.random()*10|0)+1;return n.reply(500,null,[`Retry-After:${r}`]),!1}else{this._uas_pending_reply=!0;const r=()=>{(n.server_transaction.state===qt.C.STATUS_ACCEPTED||n.server_transaction.state===qt.C.STATUS_COMPLETED||n.server_transaction.state===qt.C.STATUS_TERMINATED)&&(n.server_transaction.removeListener("stateChanged",r),this._uas_pending_reply=!1)};n.server_transaction.on("stateChanged",r)}n.hasHeader("contact")&&n.server_transaction.on("stateChanged",()=>{n.server_transaction.state===qt.C.STATUS_ACCEPTED&&(this._remote_target=n.parseHeader("contact").uri)})}else n.method===G.NOTIFY&&n.hasHeader("contact")&&n.server_transaction.on("stateChanged",()=>{n.server_transaction.state===qt.C.STATUS_COMPLETED&&(this._remote_target=n.parseHeader("contact").uri)});return!0}}var cT=gs();const qi=ot(cT);function fT(c){const n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let r="";for(let o=0;o<c;o++){const a=Math.floor(Math.random()*n.length);r+=n.substring(a,a+1)}return r}const Z=new zf("JanusSession"),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},Zl=["audio","video"];class Io extends ct.EventEmitter{static get C(){return te}constructor(n){Z.debug("new"),super(),console.log("constructor call"),this._id=null,this._ua=n,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:G.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},this._referSubscribers={},this._data={}}get C(){return te}get causes(){return G.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(n){this._data=n}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(n,r={},o){Z.debug("connect()");const a=n,t=Me.cloneObject(r.eventHandlers),s=Me.cloneArray(r.extraHeaders),p=Me.cloneObject(r.mediaConstraints,{audio:!0,video:!0}),_=r.mediaStream||null,d=Me.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,n===void 0)throw new TypeError("Not enough arguments");if(this._status!==te.STATUS_NULL)throw new pn.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new pn.NotSupportedError("WebRTC not supported");if(console.log("target",n),n=this._ua.normalizeTarget(n),console.log("normalizeTarget target",n),!n)throw new TypeError(`Invalid target: ${a}`);this._sessionTimers.enabled&&Me.isDecimal(r.sessionTimersExpires)&&(r.sessionTimersExpires>=G.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=r.sessionTimersExpires:this._sessionTimers.defaultExpires=G.SESSION_EXPIRES);for(const A in t)Object.prototype.hasOwnProperty.call(t,A)&&this.on(A,t[A]);this._from_tag=Me.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 qi("sip","anonymous","anonymous.invalid"),s.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`),s.push("Privacy: id")):r.fromUserName&&(y.from_uri=new qi("sip",r.fromUserName,this._ua.configuration.uri.host),s.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`)),r.fromDisplayName&&(y.from_display_name=r.fromDisplayName),s.push(`Contact: ${this._contact}`),s.push("Content-Type: application/json"),this._sessionTimers.enabled&&s.push(`Session-Expires: ${this._sessionTimers.defaultExpires}${this._ua.configuration.session_timers_force_refresher?";refresher=uac":""}`),this._request=new xt.InitialOutgoingInviteRequest(n,this._ua,y,s),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,console.log("this._remote_identity",this._remote_identity),o&&o(this),this._newJanusSession("local",this._request),this._sendInitialRequest(p,T,_)}init_incoming(n,r){Z.debug("init_incoming()");let o;const a=n.hasHeader("Content-Type")?n.getHeader("Content-Type").toLowerCase():void 0;if(n.body&&a!=="application/sdp"){n.reply(415);return}if(this._status=te.STATUS_INVITE_RECEIVED,this._from_tag=n.from_tag,this._id=n.call_id+this._from_tag,this._request=n,this._contact=this._ua.contact.toString(),n.hasHeader("expires")&&(o=n.getHeader("expires")*1e3),n.to_tag=Me.newTag(),!this._createDialog(n,"UAS",!0)){n.reply(500,"Missing Contact header field");return}n.body?this._late_sdp=!1:this._late_sdp=!0,this._status=te.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(()=>{n.reply(408),this._failed("local",null,G.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),o&&(this._timers.expiresTimer=setTimeout(()=>{this._status===te.STATUS_WAITING_FOR_ANSWER&&(n.reply(487),this._failed("system",null,G.causes.EXPIRES))},o)),this._direction="incoming",this._local_identity=n.to,this._remote_identity=n.from,r&&r(this),this._newJanusSession("remote",n),this._status!==te.STATUS_TERMINATED&&(n.reply(180,null,[`Contact: ${this._contact}`]),this._progress("local",null))}answer(n={}){Z.debug("answer()");const r=this._request,o=Me.cloneArray(n.extraHeaders),a=Me.cloneObject(n.mediaConstraints),t=n.mediaStream||null,s=Me.cloneObject(n.pcConfig,{iceServers:[]}),p=n.rtcConstraints||null,_=n.rtcAnswerConstraints||null,d=Me.cloneObject(n.rtcOfferConstraints);let g,T=!1,E=!1,y=!1,A=!1;if(this._rtcAnswerConstraints=_,this._rtcOfferConstraints=n.rtcOfferConstraints||null,this._data=n.data||this._data,this._direction!=="incoming")throw new pn.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==te.STATUS_WAITING_FOR_ANSWER)throw new pn.InvalidStateError(this._status);if(this._sessionTimers.enabled&&Me.isDecimal(n.sessionTimersExpires)&&(n.sessionTimersExpires>=G.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=n.sessionTimersExpires:this._sessionTimers.defaultExpires=G.SESSION_EXPIRES),this._status=te.STATUS_ANSWERED,!this._createDialog(r,"UAS")){r.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),o.unshift(`Contact: ${this._contact}`);const R=r.parseSDP();Array.isArray(R.media)||(R.media=[R.media]);for(const I of R.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&&a.audio===!1){g=t.getAudioTracks();for(const I of g)t.removeTrack(I)}if(t&&a.video===!1){g=t.getVideoTracks();for(const I of g)t.removeTrack(I)}!t&&a.audio===void 0&&(a.audio=y),!t&&a.video===void 0&&(a.video=A),!t&&!T&&!d.offerToReceiveAudio&&(a.audio=!1),!t&&!E&&!d.offerToReceiveVideo&&(a.video=!1),this._createRTCConnection(s,p),Promise.resolve().then(()=>{if(t)return t;if(a.audio||a.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(a).catch(I=>{throw this._status===te.STATUS_TERMINATED?new Error("terminated"):(r.reply(480),this._failed("local",null,G.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($=>{this._connection.addTrack($,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 $=new RTCSessionDescription({type:"offer",sdp:I.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription($)).catch(L=>{throw r.reply(488),this._failed("system",null,G.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,o),r.reply(200,null,o,I,()=>{this._status=te.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(r,I),this._setACKTimer(),this._accepted("local")},()=>{this._failed("system",null,G.causes.CONNECTION_ERROR)})}).catch(I=>{this._status!==te.STATUS_TERMINATED&&Z.warn(I)})}terminate(n={}){Z.debug("terminate()");const r=n.cause||G.causes.BYE,o=Me.cloneArray(n.extraHeaders),a=n.body;let t,s=n.status_code,p=n.reason_phrase;if(this._status===te.STATUS_TERMINATED)throw new pn.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"),s&&(s<200||s>=700))throw new TypeError(`Invalid status_code: ${s}`);s&&(p=p||G.REASON_PHRASE[s]||"",t=`SIP ;cause=${s} ;text="${p}"`),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,G.causes.CANCELED);break;case te.STATUS_WAITING_FOR_ANSWER:case te.STATUS_ANSWERED:if(Z.debug("rejecting session"),s=s||480,s<300||s>=700)throw new TypeError(`Invalid status_code: ${s}`);this._request.reply(s,p,o,a),this._failed("local",null,G.causes.REJECTED);break;case te.STATUS_WAITING_FOR_ACK:case te.STATUS_CONFIRMED:if(Z.debug("terminating session"),p=n.reason_phrase||G.REASON_PHRASE[s]||"",s&&(s<200||s>=700))throw new TypeError(`Invalid status_code: ${s}`);if(s&&o.push(`Reason: SIP ;cause=${s}; text="${p}"`),this._status===te.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==qt.C.STATUS_TERMINATED){const _=this._dialog;this.receiveRequest=({method:d})=>{d===G.ACK&&(this.sendRequest(G.BYE,{extraHeaders:o,body:a}),_.terminate())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===qt.C.STATUS_TERMINATED&&(this.sendRequest(G.BYE,{extraHeaders:o,body:a}),_.terminate())}),this._ended("local",null,r),this._dialog=_,console.log("SET DIALOG terminate"),this._ua.newDialog(_)}else this.sendRequest(G.BYE,{extraHeaders:o,body:a}),this._ended("local",null,r)}}sendInfo(n,r,o={}){if(Z.debug("sendInfo()"),this._status!==te.STATUS_CONFIRMED&&this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_1XX_RECEIVED)throw new pn.InvalidStateError(this._status);new au(this).send(n,r,o)}mute(n={audio:!0,video:!1}){Z.debug("mute()");let r=!1,o=!1;this._audioMuted===!1&&n.audio&&(r=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&n.video&&(o=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(r===!0||o===!0)&&this._onmute({audio:r,video:o})}unmute(n={audio:!0,video:!0}){Z.debug("unmute()");let r=!1,o=!1;this._audioMuted===!0&&n.audio&&(r=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&n.video&&(o=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(r===!0||o===!0)&&this._onunmute({audio:r,video:o})}hold(n={},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 o={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:G.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return n.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:o,extraHeaders:n.extraHeaders}):this._sendReinvite({eventHandlers:o,extraHeaders:n.extraHeaders}),!0}unhold(n={},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 o={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:G.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return n.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:o,extraHeaders:n.extraHeaders}):this._sendReinvite({eventHandlers:o,extraHeaders:n.extraHeaders}),!0}renegotiate(n={},r){Z.debug("renegotiate()");const o=n.rtcOfferConstraints||null;if(this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;const a={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:G.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Media Renegotiation Failed"})}};return this._setLocalMediaStatus(),n.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:a,rtcOfferConstraints:o,extraHeaders:n.extraHeaders}):this._sendReinvite({eventHandlers:a,rtcOfferConstraints:o,extraHeaders:n.extraHeaders}),!0}refer(n,r){Z.debug("refer()");const o=n;if(this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED)return!1;if(n=this._ua.normalizeTarget(n),!n)throw new TypeError(`Invalid target: ${o}`);const a=new _g(this);a.sendRefer(n,r);const t=a.id;return this._referSubscribers[t]=a,a.on("requestFailed",()=>{delete this._referSubscribers[t]}),a.on("accepted",()=>{delete this._referSubscribers[t]}),a.on("failed",()=>{delete this._referSubscribers[t]}),a}sendRequest(n,r){return Z.debug("sendRequest()"),this._dialog.sendRequest(n,r)}receiveRequest(n){if(Z.debug("receiveRequest()"),n.method===G.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",n,G.causes.CANCELED));else switch(n.method){case G.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(!n.body){this.terminate({cause:G.causes.MISSING_SDP,status_code:400});break}const r={originator:"remote",type:"answer",sdp:n.body};Z.debug('emit "sdp"'),this.emit("sdp",r);const o=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(o)).then(()=>{this._is_confirmed||this._confirmed("remote",n)}).catch(a=>{this.terminate({cause:G.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),Z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)})}else this._is_confirmed||this._confirmed("remote",n);break;case G.BYE:this._status===te.STATUS_CONFIRMED||this._status===te.STATUS_WAITING_FOR_ACK?(n.reply(200),this._ended("remote",n,G.causes.BYE)):this._status===te.STATUS_INVITE_RECEIVED||this._status===te.STATUS_WAITING_FOR_ANSWER?(n.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",n,G.causes.BYE)):n.reply(403,"Wrong Status");break;case G.INVITE:this._status===te.STATUS_CONFIRMED?n.hasHeader("replaces")?this._receiveReplaces(n):this._receiveReinvite(n):n.reply(403,"Wrong Status");break;case G.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=n.hasHeader("Content-Type")?n.getHeader("Content-Type").toLowerCase():void 0;r&&r.match(/^application\/dtmf-relay/i)?new tg(this).init_incoming(n):r!==void 0?new au(this).init_incoming(n):n.reply(415)}else n.reply(403,"Wrong Status");break;case G.UPDATE:this._status===te.STATUS_CONFIRMED?this._receiveUpdate(n):n.reply(403,"Wrong Status");break;case G.REFER:this._status===te.STATUS_CONFIRMED?this._receiveRefer(n):n.reply(403,"Wrong Status");break;case G.NOTIFY:this._status===te.STATUS_CONFIRMED?this._receiveNotify(n):n.reply(403,"Wrong Status");break;default:n.reply(501)}}onTransportError(){Z.warn("onTransportError()"),this._status!==te.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:G.causes.CONNECTION_ERROR,cause:G.causes.CONNECTION_ERROR})}onRequestTimeout(){Z.warn("onRequestTimeout()"),this._status!==te.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:G.causes.REQUEST_TIMEOUT,cause:G.causes.REQUEST_TIMEOUT})}onDialogError(){Z.warn("onDialogError()"),this._status!==te.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:G.causes.DIALOG_ERROR,cause:G.causes.DIALOG_ERROR})}newDTMF(n){Z.debug("newDTMF()"),this.emit("newDTMF",n)}newInfo(n){Z.debug("newInfo()"),this.emit("newInfo",n)}_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(n){Z.warn("close() | error closing the RTCPeerConnection: %o",n)}for(const n in this._timers)Object.prototype.hasOwnProperty.call(this._timers,n)&&clearTimeout(this._timers[n]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(const n in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,n)&&(this._earlyDialogs[n].terminate(),delete this._earlyDialogs[n]);for(const n in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,n)&&delete this._referSubscribers[n];this._ua.destroyRTCSession(this)}}_setInvite2xxTimer(n,r){let o=Di.T1;function a(){this._status===te.STATUS_WAITING_FOR_ACK&&(n.reply(200,null,[`Contact: ${this._contact}`],r),o<Di.T2&&(o=o*2,o>Di.T2&&(o=Di.T2)),this._timers.invite2xxTimer=setTimeout(a.bind(this),o))}this._timers.invite2xxTimer=setTimeout(a.bind(this),o)}_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(G.BYE),this._ended("remote",null,G.causes.NO_ACK))},Di.TIMER_H)}_createRTCConnection(n,r){this._connection=new RTCPeerConnection(n,r),this._connection.addEventListener("iceconnectionstatechange",()=>{this._connection.iceConnectionState==="failed"&&this.terminate({cause:G.causes.RTP_TIMEOUT,status_code:408,reason_phrase:G.causes.RTP_TIMEOUT})}),Z.debug('emit "peerconnection"'),this.emit("peerconnection",{peerconnection:this._connection})}_createLocalDescription(n,r){if(Z.debug("createLocalDescription()"),n!=="offer"&&n!=="answer")throw new Error(`createLocalDescription() | invalid type "${n}"`);const o=this._connection;return this._rtcReady=!1,Promise.resolve().then(()=>n==="offer"?o.createOffer(r).catch(a=>(Z.warn('emit "peerconnection:createofferfailed" [error:%o]',a),this.emit("peerconnection:createofferfailed",a),Promise.reject(a))):o.createAnswer(r).catch(a=>(Z.warn('emit "peerconnection:createanswerfailed" [error:%o]',a),this.emit("peerconnection:createanswerfailed",a),Promise.reject(a)))).then(a=>o.setLocalDescription(a).catch(t=>(this._rtcReady=!0,Z.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',t),this.emit("peerconnection:setlocaldescriptionfailed",t),Promise.reject(t)))).then(()=>{const a=r&&r.iceRestart;if(o.iceGatheringState==="complete"&&!a||o.iceGatheringState==="gathering"&&this._iceReady){this._rtcReady=!0;const t={originator:"local",type:n,sdp:o.localDescription.sdp};return Z.debug('emit "sdp"'),this.emit("sdp",t),Promise.resolve(t.sdp)}return new Promise(t=>{let s=!1,p,_;this._iceReady=!1;const d=()=>{o.removeEventListener("icecandidate",p),o.removeEventListener("icegatheringstatechange",_),s=!0,this._rtcReady=!0,this._iceReady=!0;const g={originator:"local",type:n,sdp:o.localDescription.sdp};Z.debug('emit "sdp"'),this.emit("sdp",g),t(g.sdp)};o.addEventListener("icecandidate",p=g=>{const T=g.candidate;T?this.emit("icecandidate",{candidate:T,ready:d}):s||d()}),o.addEventListener("icegatheringstatechange",_=()=>{o.iceGatheringState==="complete"&&!s&&d()})})})}_createDialog(n,r,o){console.log("_createDialog",n);const a=r==="UAS"?n.to_tag:n.from_tag,t=r==="UAS"?n.from_tag:n.to_tag,s=n.call_id+a+t;console.log("remote_tag",t);let p=this._earlyDialogs[s];if(o)return p?!0:(p=new Ql(this,n,r,Ql.C.STATUS_EARLY),console.log("SET DIALOG early"),p.error?(console.log("early_dialog error",p.error),Z.debug(p.error),this._failed("remote",n,G.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[s]=p,!0));{if(this._from_tag=n.from_tag,this._to_tag=n.to_tag,p)return p.update(n,r),console.log("SET DIALOG 1"),this._dialog=p,delete this._earlyDialogs[s],!0;const _=new Ql(this,n,r);return _.error?(console.log("dialog.error",_.error),Z.debug(_.error),this._failed("remote",n,G.causes.INTERNAL_ERROR),!1):(console.log("AAA SET DIALOG 2"),this._dialog=_,!0)}}_receiveReinvite(n){Z.debug("receiveReinvite()");const r=n.hasHeader("Content-Type")?n.getHeader("Content-Type").toLowerCase():void 0,o={request:n,callback:void 0,reject:t.bind(this)};let a=!1;function t(p={}){a=!0;const _=p.status_code||403,d=p.reason_phrase||"",g=Me.cloneArray(p.extraHeaders);if(this._status!==te.STATUS_CONFIRMED)return!1;if(_<300||_>=700)throw new TypeError(`Invalid status_code: ${_}`);n.reply(_,d,g)}if(this.emit("reinvite",o),a)return;if(this._late_sdp=!1,!n.body){this._late_sdp=!0,this._remoteHold&&(this._remoteHold=!1,this._onunhold("remote")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",this._rtcOfferConstraints)).then(p=>{s.call(this,p)}).catch(()=>{n.reply(500)});return}if(r!=="application/sdp"){Z.debug("invalid Content-Type"),n.reply(415);return}this._processInDialogSdpOffer(n).then(p=>{this._status!==te.STATUS_TERMINATED&&s.call(this,p)}).catch(p=>{Z.warn(p)});function s(p){const _=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(n,_),this._late_sdp&&(p=this._mangleOffer(p)),n.reply(200,null,_,p,()=>{this._status=te.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(n,p),this._setACKTimer()}),typeof o.callback=="function"&&o.callback()}}_receiveUpdate(n){Z.debug("receiveUpdate()");const r=n.hasHeader("Content-Type")?n.getHeader("Content-Type").toLowerCase():void 0,o={request:n,callback:void 0,reject:t.bind(this)};let a=!1;function t(p={}){a=!0;const _=p.status_code||403,d=p.reason_phrase||"",g=Me.cloneArray(p.extraHeaders);if(this._status!==te.STATUS_CONFIRMED)return!1;if(_<300||_>=700)throw new TypeError(`Invalid status_code: ${_}`);n.reply(_,d,g)}if(this.emit("update",o),a)return;if(!n.body){s.call(this,null);return}if(r!=="application/sdp"){Z.debug("invalid Content-Type"),n.reply(415);return}this._processInDialogSdpOffer(n).then(p=>{this._status!==te.STATUS_TERMINATED&&s.call(this,p)}).catch(p=>{Z.warn(p)});function s(p){const _=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(n,_),n.reply(200,null,_,p),typeof o.callback=="function"&&o.callback()}}_processInDialogSdpOffer(n){Z.debug("_processInDialogSdpOffer()");const r=n.parseSDP();let o=!1;for(const s of r.media){if(Zl.indexOf(s.type)===-1)continue;const p=s.direction||r.direction||"sendrecv";if(p==="sendonly"||p==="inactive")o=!0;else{o=!1;break}}const a={originator:"remote",type:"offer",sdp:n.body};Z.debug('emit "sdp"'),this.emit("sdp",a);const t=new RTCSessionDescription({type:"offer",sdp:a.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");return this._connection.setRemoteDescription(t).catch(s=>{throw n.reply(488),Z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',s),this.emit("peerconnection:setremotedescriptionfailed",s),s})}).then(()=>{if(this._status===te.STATUS_TERMINATED)throw new Error("terminated");this._remoteHold===!0&&o===!1?(this._remoteHold=!1,this._onunhold("remote")):this._remoteHold===!1&&o===!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(s=>{throw n.reply(500),Z.warn('emit "peerconnection:createtelocaldescriptionfailed" [error:%o]',s),s})}).catch(s=>{Z.warn("_processInDialogSdpOffer() failed [error: %o]",s)}),this._connectionPromiseQueue}_receiveRefer(n){if(Z.debug("receiveRefer()"),!n.refer_to){Z.debug("no Refer-To header field present in REFER"),n.reply(400);return}if(n.refer_to.uri.scheme!==G.SIP){Z.debug("Refer-To header field points to a non-SIP URI scheme"),n.reply(416);return}n.reply(202);const r=new ag(this,n.cseq);Z.debug('emit "refer"'),this.emit("refer",{request:n,accept:(t,s)=>{o.call(this,t,s)},reject:()=>{a.call(this)}});function o(t,s={}){if(t=typeof t=="function"?t:null,this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED)return!1;const p=new Io(this._ua);if(p.on("progress",({response:_})=>{r.notify(_.status_code,_.reason_phrase)}),p.on("accepted",({response:_})=>{r.notify(_.status_code,_.reason_phrase)}),p.on("_failed",({message:_,cause:d})=>{_?r.notify(_.status_code,_.reason_phrase):r.notify(487,d)}),n.refer_to.uri.hasHeader("replaces")){const _=decodeURIComponent(n.refer_to.uri.getHeader("replaces"));s.extraHeaders=Me.cloneArray(s.extraHeaders),s.extraHeaders.push(`Replaces: ${_}`)}p.connect(n.refer_to.uri.toAor(),s,t)}function a(){r.notify(603)}}_receiveNotify(n){switch(Z.debug("receiveNotify()"),n.event||n.reply(400),n.event.event){case"refer":{let r,o;if(n.event.params&&n.event.params.id)r=n.event.params.id,o=this._referSubscribers[r];else if(Object.keys(this._referSubscribers).length===1)o=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{n.reply(400,"Missing event id parameter");return}if(!o){n.reply(481,"Subscription does not exist");return}o.receiveNotify(n),n.reply(200);break}default:n.reply(489)}}_receiveReplaces(n){Z.debug("receiveReplaces()");function r(a){if(this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED)return!1;const t=new Io(this._ua);t.on("confirmed",()=>{this.terminate()}),t.init_incoming(n,a)}function o(){Z.debug("Replaced INVITE rejected by the user"),n.reply(486)}this.emit("replaces",{request:n,accept:a=>{r.call(this,a)},reject:()=>{o.call(this)}})}_getNextTransactionId(){return(this.lastTransaction+1).toString()}_sendInitialRequest(n,r,o){this.ackSent=!1,this.publisherSubscribeSent=!1;const a=new t_(this._ua,this._request,{onRequestTimeout:()=>{this.onRequestTimeout()},onTransportError:()=>{this.onTransportError()},onAuthenticated:t=>{this._request=t},onReceiveResponse:t=>{this._receiveInviteResponse(t)}});Promise.resolve().then(()=>{if(o)return o;if(n.audio||n.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(n).catch(t=>{throw this._status===te.STATUS_TERMINATED?new Error("terminated"):(this._failed("local",null,G.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(s=>{this._connection.addTrack(s,t)}),this._connecting(this._request),this._createLocalDescription("offer",r).catch(s=>{throw this._failed("local",null,G.causes.WEBRTC_ERROR),s})}).then(t=>{if(this._is_canceled||this._status===te.STATUS_TERMINATED)throw new Error("terminated");const p=JSON.stringify({janus:"attach",plugin:"janus.plugin.videoroom",opaque_id:"videoroomtest-uzkIUidc1969"});this._request.body=p,this._status=te.STATUS_INVITE_SENT,Z.debug('emit "sending" [request:%o]',this._request),this.emit("sending",{request:this._request}),a.send()}).catch(t=>{this._status!==te.STATUS_TERMINATED&&Z.warn(t)})}_receiveInviteResponse(n){if(Z.debug("receiveInviteResponse()"),console.log("_receiveInviteResponse response",n),console.log("dialog",this._dialog),this._dialog&&n.status_code>=200&&n.status_code<=299&&!this.ackSent)if(console.log("IF 1 dialog"),this._dialog.id.call_id===n.call_id&&this._dialog.id.local_tag===n.from_tag&&this._dialog.id.remote_tag===n.to_tag){console.log("IF 1 SEND ACK"),this.ackSent=!0,this.sendRequest(G.ACK);return}else{const r=new Ql(this,n,"UAC");if(r.error!==void 0){Z.debug(r.error);return}this.sendRequest(G.ACK),this.sendRequest(G.BYE);return}if(this.ackSent&&!this.publisherSubscribeSent){const r=JSON.parse(n.body);this.session_id=r.session_id,this.handle_id=r.data.id;const a={janus:"message",body:{request:"join",room:"abcd",ptype:"publisher",display:"User1",clientID:"dufgjb023gh4vr872v238ugf2y82g4",opaque_id:`videoroomtest-${fT(12)}`},handle_id:this.handle_id},t=["PTYPE: Publisher"];this.sendRequest(G.SUBSCRIBE,{extraHeaders:t,body:JSON.stringify(a)}),this.publisherSubscribeSent=!0}if(this._is_canceled){console.log("IF 2 canceled"),n.status_code>=100&&n.status_code<200?this._request.cancel(this._cancel_reason):n.status_code>=200&&n.status_code<299&&(console.log("IF 2 _acceptAndTerminate"),this._acceptAndTerminate(n));return}if(console.log("IF 2 this._status",this._status),this._status!==te.STATUS_INVITE_SENT&&this._status!==te.STATUS_1XX_RECEIVED){console.log("IF 3 not invite sent");return}switch(!0){case/^100$/.test(n.status_code):console.log("IF 4 SWITCH 1"),this._status=te.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(n.status_code):{if(console.log("IF 5 SWITCH 2"),!n.to_tag){console.log("IF 5 break"),Z.debug("1xx response received without to tag");break}if(n.hasHeader("contact")&&(console.log("IF 5 contact"),!this._createDialog(n,"UAC",!0))){console.log("IF 5 _createDialog break");break}if(this._status=te.STATUS_1XX_RECEIVED,!n.body){console.log("IF 5 !response.body"),this._progress("remote",n);break}const r={originator:"remote",type:"answer",sdp:n.body};Z.debug('emit "sdp"'),this.emit("sdp",r);const o=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(o)).then(()=>this._progress("remote",n)).catch(a=>{Z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)});break}case/^2[0-9]{2}$/.test(n.status_code):{if(console.log("IF 6 SWITCH 3"),this._status=te.STATUS_CONFIRMED,!n.body){console.log("IF 6 !response.body"),this._acceptAndTerminate(n,400,G.causes.MISSING_SDP),this._failed("remote",n,G.causes.BAD_MEDIA_DESCRIPTION);break}if(console.log("AAA _createDialog"),!this._createDialog(n,"UAC"))break;break}default:{console.log("IF 7 SWITCH 4");const r=Me.sipErrorCause(n.status_code);this._failed("remote",n,r)}}}_sendReinvite(n={}){Z.debug("sendReinvite()");const r=Me.cloneArray(n.extraHeaders),o=Me.cloneObject(n.eventHandlers),a=n.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",a)).then(_=>{_=this._mangleOffer(_);const d={originator:"local",type:"offer",sdp:_};Z.debug('emit "sdp"'),this.emit("sdp",d),this.sendRequest(G.INVITE,{extraHeaders:r,body:_,eventHandlers:{onSuccessResponse:g=>{s.call(this,g),t=!0},onErrorResponse:g=>{p.call(this,g)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{p()});function s(_){if(this._status===te.STATUS_TERMINATED||(this.sendRequest(G.ACK),t))return;if(this._handleSessionTimersInIncomingResponse(_),_.body){if(!_.hasHeader("Content-Type")||_.getHeader("Content-Type").toLowerCase()!=="application/sdp"){p.call(this);return}}else{p.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(()=>{o.succeeded&&o.succeeded(_)}).catch(T=>{p.call(this),Z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',T),this.emit("peerconnection:setremotedescriptionfailed",T)})}function p(_){o.failed&&o.failed(_)}}_sendUpdate(n={}){Z.debug("sendUpdate()");const r=Me.cloneArray(n.extraHeaders),o=Me.cloneObject(n.eventHandlers),a=n.rtcOfferConstraints||this._rtcOfferConstraints||null,t=n.sdpOffer||!1;let s=!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",a)).then(d=>{d=this._mangleOffer(d);const g={originator:"local",type:"offer",sdp:d};Z.debug('emit "sdp"'),this.emit("sdp",g),this.sendRequest(G.UPDATE,{extraHeaders:r,body:d,eventHandlers:{onSuccessResponse:T=>{p.call(this,T),s=!0},onErrorResponse:T=>{_.call(this,T)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{_.call(this)})):this.sendRequest(G.UPDATE,{extraHeaders:r,eventHandlers:{onSuccessResponse:d=>{p.call(this,d)},onErrorResponse:d=>{_.call(this,d)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}});function p(d){if(this._status!==te.STATUS_TERMINATED&&!s)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(()=>{o.succeeded&&o.succeeded(d)}).catch(E=>{_.call(this),Z.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),this.emit("peerconnection:setremotedescriptionfailed",E)})}else o.succeeded&&o.succeeded(d)}function _(d){o.failed&&o.failed(d)}}_acceptAndTerminate(n,r,o){Z.debug("acceptAndTerminate()");const a=[];r&&(o=o||G.REASON_PHRASE[r]||"",a.push(`Reason: SIP ;cause=${r}; text="${o}"`)),(this._dialog||this._createDialog(n,"UAC"))&&(this.sendRequest(G.ACK),this.sendRequest(G.BYE,{extraHeaders:a})),this._status=te.STATUS_TERMINATED}_mangleOffer(n){if(!this._localHold&&!this._remoteHold)return n;if(n=Nt.parse(n),this._localHold&&!this._remoteHold){Z.debug("mangleOffer() | me on hold, mangling offer");for(const r of n.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){Z.debug("mangleOffer() | both on hold, mangling offer");for(const r of n.media)Zl.indexOf(r.type)!==-1&&(r.direction="inactive")}else if(this._remoteHold){Z.debug("mangleOffer() | remote on hold, mangling offer");for(const r of n.media)Zl.indexOf(r.type)!==-1&&(r.direction?r.direction==="sendrecv"?r.direction="recvonly":r.direction==="recvonly"&&(r.direction="inactive"):r.direction="recvonly")}return Nt.write(n)}_setLocalMediaStatus(){let n=!0,r=!0;(this._localHold||this._remoteHold)&&(n=!1,r=!1),this._audioMuted&&(n=!1),this._videoMuted&&(r=!1),this._toggleMuteAudio(!n),this._toggleMuteVideo(!r)}_handleSessionTimersInIncomingRequest(n,r){if(!this._sessionTimers.enabled)return;let o;n.session_expires&&n.session_expires>=G.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=n.session_expires,o=n.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,o="uas"),r.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${o}`),this._sessionTimers.refresher=o==="uas",this._runSessionTimer()}_handleSessionTimersInIncomingResponse(n){if(!this._sessionTimers.enabled)return;let r;n.session_expires&&n.session_expires>=G.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=n.session_expires,r=n.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,r="uac"),this._sessionTimers.refresher=r==="uac",this._runSessionTimer()}_runSessionTimer(){const n=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===G.UPDATE?this._sendUpdate():this._sendReinvite())},n*500):this._sessionTimers.timer=setTimeout(()=>{this._status!==te.STATUS_TERMINATED&&(Z.warn("runSessionTimer() | timer expired, terminating the session"),this.terminate({cause:G.causes.REQUEST_TIMEOUT,status_code:408,reason_phrase:"Session Timer Expired"}))},n*1100)}_toggleMuteAudio(n){const r=this._connection.getSenders().filter(o=>o.track&&o.track.kind==="audio");for(const o of r)o.track.enabled=!n}_toggleMuteVideo(n){const r=this._connection.getSenders().filter(o=>o.track&&o.track.kind==="video");for(const o of r)o.track.enabled=!n}_newJanusSession(n,r){Z.debug("newRTCSession()"),this._ua.newJanusSession(this,{originator:n,session:this,request:r})}_connecting(n){Z.debug("session connecting"),Z.debug('emit "connecting"'),this.emit("connecting",{request:n})}_progress(n,r){Z.debug("session progress"),Z.debug('emit "progress"'),this.emit("progress",{originator:n,response:r||null})}_accepted(n,r){Z.debug("session accepted"),this._start_time=new Date,Z.debug('emit "accepted"'),this.emit("accepted",{originator:n,response:r||null})}_confirmed(n,r){Z.debug("session confirmed"),this._is_confirmed=!0,Z.debug('emit "confirmed"'),this.emit("confirmed",{originator:n,ack:r||null})}_ended(n,r,o){Z.debug("session ended"),this._end_time=new Date,this._close(),Z.debug('emit "ended"'),this.emit("ended",{originator:n,message:r||null,cause:o})}_failed(n,r,o){Z.debug("session failed"),Z.debug('emit "_failed"'),this.emit("_failed",{originator:n,message:r||null,cause:o}),this._close(),Z.debug('emit "failed"'),this.emit("failed",{originator:n,message:r||null,cause:o})}_onhold(n){Z.debug("session onhold"),this._setLocalMediaStatus(),Z.debug('emit "hold"'),this.emit("hold",{originator:n})}_onunhold(n){Z.debug("session onunhold"),this._setLocalMediaStatus(),Z.debug('emit "unhold"'),this.emit("unhold",{originator:n})}_onmute({audio:n,video:r}){Z.debug("session onmute"),this._setLocalMediaStatus(),Z.debug('emit "muted"'),this.emit("muted",{audio:n,video:r})}_onunmute({audio:n,video:r}){Z.debug("session onunmute"),this._setLocalMediaStatus(),Z.debug('emit "unmuted"'),this.emit("unmuted",{audio:n,video:r})}}class nr{constructor(n){if(this.headers={},n.length>0){let r=!1;const o=n.split(`\r
134
+ `,g_.send(o)}var Pu={};const lr=St(),Tn=Ue,La=is(),df=Ts(),$a=Du,Ha=vs;Pu.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:Tn.UPDATE,session_timers_force_refresher:!1,no_answer_timeout:60,register:!0,register_expires:600,registrar_server:null,sockets:null,connection_recovery_max_interval:Tn.CONNECTION_RECOVERY_MAX_INTERVAL,connection_recovery_min_interval:Tn.CONNECTION_RECOVERY_MIN_INTERVAL,extra_headers:null,via_host:`${lr.createRandomToken(12)}.invalid`};const Xl={mandatory:{sockets(c){const s=[];if($a.isSocket(c))s.push({socket:c});else if(Array.isArray(c)&&c.length)for(const r of c)Object.prototype.hasOwnProperty.call(r,"socket")&&$a.isSocket(r.socket)?s.push(r):$a.isSocket(r)&&s.push({socket:r});else return;return s},uri(c){/^sip:/i.test(c)||(c=`${Tn.SIP}:${c}`);const s=df.parse(c);if(s)return s.user?s:void 0}},optional:{authorization_user(c){if(La.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(lr.isDecimal(c)){const s=Number(c);if(s>0)return s}},connection_recovery_min_interval(c){if(lr.isDecimal(c)){const s=Number(c);if(s>0)return s}},contact_uri(c){if(typeof c=="string"){const s=La.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)),La.parse(c,"uuid")!==-1)return c},no_answer_timeout(c){if(lr.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===Tn.INVITE||c===Tn.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(lr.isDecimal(c)){const s=Number(c);if(s>0)return s}},registrar_server(c){/^sip:/i.test(c)||(c=`${Tn.SIP}:${c}`);const s=df.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}}};Pu.load=(c,s)=>{for(const r in Xl.mandatory)if(s.hasOwnProperty(r)){const o=s[r],a=Xl.mandatory[r](o);if(a!==void 0)c[r]=a;else throw new Ha.ConfigurationError(r,o)}else throw new Ha.ConfigurationError(r);for(const r in Xl.optional)if(s.hasOwnProperty(r)){const o=s[r];if(lr.isEmpty(o))continue;const a=Xl.optional[r](o);if(a!==void 0)c[r]=a;else throw new Ha.ConfigurationError(r,o)}};const sT=ct.EventEmitter,nT=at,pt=Ue,rT=Wm,pf=d_,mf=Dg,gf=Mg,Fa=fr,iT=Fg,Ql=St(),lT=vs,oT=Ts(),aT=p_,Va=Mt,uT=Yg,ja=Pu,je=new nT("UA"),Tt={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2};var T_=class extends sT{static get C(){return Tt}constructor(s){if(je.debug("new() [configuration:%o]",s),super(),this._cache={credentials:{}},this._configuration=Object.assign({},ja.settings),this._dynConfiguration={},this._dialogs={},this._applicants={},this._sessions={},this._transport=null,this._contact=null,this._status=Tt.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=Tt.STATUS_NOT_READY,this._error=Tt.CONFIGURATION_ERROR,r}this._registrator=new rT(this)}get C(){return Tt}get status(){return this._status}get contact(){return this._contact}get configuration(){return this._configuration}get transport(){return this._transport}start(){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}register(){je.debug("register()"),this._dynConfiguration.register=!0,this._registrator.register()}unregister(s){je.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){je.debug("call()");const o=new pf(this);return o.connect(s,r),o}sendMessage(s,r,o){je.debug("sendMessage()");const a=new mf(this);return a.send(s,r,o),a}sendOptions(s,r,o){je.debug("sendOptions()");const a=new gf(this);return a.send(s,r,o),a}terminateSessions(s){je.debug("terminateSessions()");for(const r in this._sessions)this._sessions[r].isEnded()||this._sessions[r].terminate(s)}stop(){if(je.debug("stop()"),this._dynConfiguration={},this._status===Tt.STATUS_USER_CLOSED){je.debug("UA already closed");return}this._registrator.close();const s=Object.keys(this._sessions).length;for(const o in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,o)){je.debug(`closing session ${o}`);try{this._sessions[o].terminate()}catch{}}for(const o in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,o))try{this._applicants[o].close()}catch{}this._status=Tt.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 Ql.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:je.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 je.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){je.debug("Request-URI does not point to us"),s.method!==pt.ACK&&s.reply_sl(404);return}if(s.ruri.scheme===pt.SIPS){s.reply_sl(416);return}if(Fa.checkTransaction(this,s))return;if(r===pt.INVITE?new Fa.InviteServerTransaction(this,this._transport,s):r!==pt.ACK&&r!==pt.CANCEL&&new Fa.NonInviteServerTransaction(this,this._transport,s),r===pt.OPTIONS){if(this.listeners("newOptions").length===0){s.reply(200);return}new gf(this).init_incoming(s)}else if(r===pt.MESSAGE){if(this.listeners("newMessage").length===0){s.reply(405);return}new mf(this).init_incoming(s)}else if(r===pt.INVITE&&!s.to_tag&&this.listeners("newRTCSession").length===0){s.reply(405);return}let o,a;if(s.to_tag)o=this._findDialog(s.call_id,s.from_tag,s.to_tag),o?o.receiveRequest(s):r===pt.NOTIFY?(a=this._findSession(s),a?a.receiveRequest(s):(je.debug("received NOTIFY request for a non existent subscription"),s.reply(481,"Subscription does not exist"))):r!==pt.ACK&&s.reply(481);else switch(r){case pt.INVITE:if(window.RTCPeerConnection)if(s.hasHeader("replaces")){const t=s.replaces;o=this._findDialog(t.call_id,t.from_tag,t.to_tag),o?(a=o.owner,a.isEnded()?s.reply(603):a.receiveRequest(s)):s.reply(481)}else a=new pf(this),a.init_incoming(s);else je.warn("INVITE received but WebRTC is not supported"),s.reply(488);break;case pt.BYE:s.reply(481);break;case pt.CANCEL:a=this._findSession(s),a?a.receiveRequest(s):je.debug("received CANCEL request for a non existent session");break;case pt.ACK:break;case pt.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:o}){const a=s+r,t=this._sessions[a],n=s+o,p=this._sessions[n];return t||p||null}_findDialog(s,r,o){let a=s+r+o,t=this._dialogs[a];return t||(a=s+o+r,t=this._dialogs[a],t||null)}_loadConfig(s){try{ja.load(this._configuration,s)}catch(a){throw a}this._configuration.display_name===0&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=Ql.newUUID()),this._configuration.jssip_id=Ql.createRandomToken(5);const r=this._configuration.uri.clone();r.user=null,this._configuration.hostport_params=r.toString().replace(/^sip:/i,"");try{this._transport=new iT(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=cT.bind(this),this._transport.onconnect=fT.bind(this),this._transport.ondisconnect=_T.bind(this),this._transport.ondata=hT.bind(this)}catch(a){throw je.warn(a),new lT.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 a=this._configuration.uri.clone();a.user=null,a.clearParams(),a.clearHeaders(),this._configuration.registrar_server=a}this._configuration.no_answer_timeout*=1e3,this._configuration.contact_uri?this._configuration.via_host=this._configuration.contact_uri.host:this._configuration.contact_uri=new oT("sip",Ql.createRandomToken(8),this._configuration.via_host,null,{transport:"ws"}),this._contact={pub_gruu:null,temp_gruu:null,uri:this._configuration.contact_uri,toString(a={}){const t=a.anonymous||null,n=a.outbound||null;let p="<";return t?p+=this.temp_gruu||"sip:anonymous@anonymous.invalid;transport=ws":p+=this.pub_gruu||this.uri.toString(),n&&(t?!this.temp_gruu:!this.pub_gruu)&&(p+=";ob"),p+=">",p}};const o=["authorization_user","password","realm","ha1","authorization_jwt","display_name","register"];for(const a in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,a)&&(o.indexOf(a)!==-1?Object.defineProperty(this._configuration,a,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,a,{writable:!1,configurable:!1}));je.debug("configuration parameters after validation:");for(const a in this._configuration)if(Object.prototype.hasOwnProperty.call(ja.settings,a))switch(a){case"uri":case"registrar_server":je.debug(`- ${a}: ${this._configuration[a]}`);break;case"password":case"ha1":case"authorization_jwt":je.debug(`- ${a}: NOT SHOWN`);break;default:je.debug(`- ${a}: ${JSON.stringify(this._configuration[a])}`)}}};function cT(c){this.emit("connecting",c)}function fT(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 _T(c){const s=["nict","ict","nist","ist"];for(const r of s)for(const o in this._transactions[r])Object.prototype.hasOwnProperty.call(this._transactions[r],o)&&this._transactions[r][o].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 hT(c){const s=c.transport;let r=c.message;if(r=aT.parseMessage(r,this),!!r&&!(this._status===Tt.STATUS_USER_CLOSED&&r instanceof Va.IncomingRequest)&&uT(r,this,s)){if(r instanceof Va.IncomingRequest)r.transport=s,this.receiveRequest(r);else if(r instanceof Va.IncomingResponse){let o;switch(r.method){case pt.INVITE:o=this._transactions.ict[r.via_branch],o&&o.receiveResponse(r);break;case pt.ACK:break;default:o=this._transactions.nict[r.via_branch],o&&o.receiveResponse(r);break}}}}const dT=ot(T_);var ht=[];for(var qa=0;qa<256;++qa)ht.push((qa+256).toString(16).slice(1));function pT(c,s=0){return(ht[c[s+0]]+ht[c[s+1]]+ht[c[s+2]]+ht[c[s+3]]+"-"+ht[c[s+4]]+ht[c[s+5]]+"-"+ht[c[s+6]]+ht[c[s+7]]+"-"+ht[c[s+8]]+ht[c[s+9]]+"-"+ht[c[s+10]]+ht[c[s+11]]+ht[c[s+12]]+ht[c[s+13]]+ht[c[s+14]]+ht[c[s+15]]).toLowerCase()}var Zl,mT=new Uint8Array(16);function gT(){if(!Zl&&(Zl=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!Zl))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Zl(mT)}var TT=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const Tf={randomUUID:TT};function vf(c,s,r){if(Tf.randomUUID&&!s&&!c)return Tf.randomUUID();c=c||{};var o=c.random||(c.rng||gT)();if(o[6]=o[6]&15|64,o[8]=o[8]&63|128,s){r=r||0;for(var a=0;a<16;++a)s[r+a]=o[a];return s}return pT(o)}var Me=St();const Ba=ot(Me),Ga=new e_("Dialog"),ks={STATUS_EARLY:1,STATUS_CONFIRMED:2,STATUS_TERMINATED:3};class eo{static get C(){return ks}constructor(s,r,o,a=ks.STATUS_CONFIRMED){if(this._owner=s,this._ua=s._ua,this._uac_pending_reply=!1,this._uas_pending_reply=!1,r instanceof Mt.IncomingResponse&&(a=r.status_code<200?ks.STATUS_EARLY:ks.STATUS_CONFIRMED),o==="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=a,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(o==="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=a,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),Ga.debug(`new ${o} dialog created with status ${this._state===ks.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===ks.STATUS_TERMINATED}update(s,r){this._state=ks.STATUS_CONFIRMED,Ga.debug(`dialog ${this._id.toString()} changed to CONFIRMED state`),r==="UAC"&&(this._route_set=s.getHeaders("record-route").reverse())}terminate(){Ga.debug(`dialog ${this._id.toString()} deleted`),this._ua.destroyDialog(this),this._state=ks.STATUS_TERMINATED}sendRequest(s,r={}){const o=Ba.cloneArray(r.extraHeaders),a=Ba.cloneObject(r.eventHandlers),t=r.body||null,n=this._createRequest(s,o,t);return a.onAuthenticated=()=>{this._local_seqnum+=1},new Qm(this,n,a).send(),n}receiveRequest(s){this._checkInDialogRequest(s)&&(s.method===q.ACK&&this._ack_seqnum!==null?this._ack_seqnum=null:s.method===q.INVITE&&(this._ack_seqnum=s.cseq),this._owner.receiveRequest(s))}_createRequest(s,r,o){r=Ba.cloneArray(r),this._local_seqnum||(this._local_seqnum=Math.floor(Math.random()*1e4));const a=s===q.CANCEL||s===q.ACK?this._local_seqnum:this._local_seqnum+=1;return new Mt.OutgoingRequest(s,this._remote_target,this._ua,{cseq:a,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,o)}_checkInDialogRequest(s){if(!this._remote_seqnum)this._remote_seqnum=s.cseq;else if(s.cseq<this._remote_seqnum)if(s.method===q.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===q.INVITE||s.method===q.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===q.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}}var vT=Ts();const Bi=ot(vT),J=new e_("JanusSession"),ET="/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},to=["audio","video"];class wo extends ct.EventEmitter{static get C(){return te}constructor(s){J.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:q.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},this._referSubscribers={},this._data={}}get C(){return te}get causes(){return q.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={},o){J.debug("connect()"),this.room_id=s;const a=s,t=Me.cloneObject(r.eventHandlers),n=Me.cloneArray(r.extraHeaders),p=Me.cloneObject(r.mediaConstraints,{audio:!0,video:!0}),_=r.mediaStream||null,d=Me.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!==te.STATUS_NULL)throw new mn.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new mn.NotSupportedError("WebRTC not supported");if(console.log("target",s),s=this._ua.normalizeTarget(s),console.log("normalizeTarget target",s),!s)throw new TypeError(`Invalid target: ${a}`);this._sessionTimers.enabled&&Me.isDecimal(r.sessionTimersExpires)&&(r.sessionTimersExpires>=q.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=r.sessionTimersExpires:this._sessionTimers.defaultExpires=q.SESSION_EXPIRES);for(const A in t)Object.prototype.hasOwnProperty.call(t,A)&&this.on(A,t[A]);this._from_tag=Me.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 Bi("sip","anonymous","anonymous.invalid"),n.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`),n.push("Privacy: id")):r.fromUserName&&(y.from_uri=new Bi("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/json"),this._sessionTimers.enabled&&n.push(`Session-Expires: ${this._sessionTimers.defaultExpires}${this._ua.configuration.session_timers_force_refresher?";refresher=uac":""}`),this._request=new Mt.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,console.log("this._remote_identity",this._remote_identity),o&&o(this),this._newJanusSession("local",this._request),this._sendInitialRequest(p,T,_)}init_incoming(s,r){J.debug("init_incoming()");let o;const a=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;if(s.body&&a!=="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")&&(o=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,q.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),o&&(this._timers.expiresTimer=setTimeout(()=>{this._status===te.STATUS_WAITING_FOR_ANSWER&&(s.reply(487),this._failed("system",null,q.causes.EXPIRES))},o)),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={}){J.debug("answer()");const r=this._request,o=Me.cloneArray(s.extraHeaders),a=Me.cloneObject(s.mediaConstraints),t=s.mediaStream||null,n=Me.cloneObject(s.pcConfig,{iceServers:[]}),p=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 mn.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==te.STATUS_WAITING_FOR_ANSWER)throw new mn.InvalidStateError(this._status);if(this._sessionTimers.enabled&&Me.isDecimal(s.sessionTimersExpires)&&(s.sessionTimersExpires>=q.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=s.sessionTimersExpires:this._sessionTimers.defaultExpires=q.SESSION_EXPIRES),this._status=te.STATUS_ANSWERED,!this._createDialog(r,"UAS")){r.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),o.unshift(`Contact: ${this._contact}`);const R=r.parseSDP();Array.isArray(R.media)||(R.media=[R.media]);for(const I of R.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&&a.audio===!1){g=t.getAudioTracks();for(const I of g)t.removeTrack(I)}if(t&&a.video===!1){g=t.getVideoTracks();for(const I of g)t.removeTrack(I)}!t&&a.audio===void 0&&(a.audio=y),!t&&a.video===void 0&&(a.video=A),!t&&!T&&!d.offerToReceiveAudio&&(a.audio=!1),!t&&!E&&!d.offerToReceiveVideo&&(a.video=!1),this._createRTCConnection(n,p),Promise.resolve().then(()=>{if(t)return t;if(a.audio||a.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(a).catch(I=>{throw this._status===te.STATUS_TERMINATED?new Error("terminated"):(r.reply(480),this._failed("local",null,q.causes.USER_DENIED_MEDIA_ACCESS),J.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($=>{this._connection.addTrack($,I)})}).then(()=>{if(this._late_sdp)return;const I={originator:"remote",type:"offer",sdp:r.body};J.debug('emit "sdp"'),this.emit("sdp",I);const $=new RTCSessionDescription({type:"offer",sdp:I.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription($)).catch(L=>{throw r.reply(488),this._failed("system",null,q.causes.WEBRTC_ERROR),J.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,o),r.reply(200,null,o,I,()=>{this._status=te.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(r,I),this._setACKTimer(),this._accepted("local")},()=>{this._failed("system",null,q.causes.CONNECTION_ERROR)})}).catch(I=>{this._status!==te.STATUS_TERMINATED&&J.warn(I)})}terminate(s={}){J.debug("terminate()");const r=s.cause||q.causes.BYE,o=Me.cloneArray(s.extraHeaders),a=s.body;let t,n=s.status_code,p=s.reason_phrase;if(this._status===te.STATUS_TERMINATED)throw new mn.InvalidStateError(this._status);switch(this._status){case te.STATUS_NULL:case te.STATUS_INVITE_SENT:case te.STATUS_1XX_RECEIVED:if(J.debug("canceling session"),n&&(n<200||n>=700))throw new TypeError(`Invalid status_code: ${n}`);n&&(p=p||q.REASON_PHRASE[n]||"",t=`SIP ;cause=${n} ;text="${p}"`),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,q.causes.CANCELED);break;case te.STATUS_WAITING_FOR_ANSWER:case te.STATUS_ANSWERED:if(J.debug("rejecting session"),n=n||480,n<300||n>=700)throw new TypeError(`Invalid status_code: ${n}`);this._request.reply(n,p,o,a),this._failed("local",null,q.causes.REJECTED);break;case te.STATUS_WAITING_FOR_ACK:case te.STATUS_CONFIRMED:if(J.debug("terminating session"),p=s.reason_phrase||q.REASON_PHRASE[n]||"",n&&(n<200||n>=700))throw new TypeError(`Invalid status_code: ${n}`);if(n&&o.push(`Reason: SIP ;cause=${n}; text="${p}"`),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===q.ACK&&(this.sendRequest(q.BYE,{extraHeaders:o,body:a}),_.terminate())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===Bt.C.STATUS_TERMINATED&&(this.sendRequest(q.BYE,{extraHeaders:o,body:a}),_.terminate())}),this._ended("local",null,r),this._dialog=_,console.log("SET DIALOG terminate"),this._ua.newDialog(_)}else this.sendRequest(q.BYE,{extraHeaders:o,body:a}),this._ended("local",null,r)}}sendInfo(s,r,o={}){if(J.debug("sendInfo()"),this._status!==te.STATUS_CONFIRMED&&this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_1XX_RECEIVED)throw new mn.InvalidStateError(this._status);new fu(this).send(s,r,o)}mute(s={audio:!0,video:!1}){J.debug("mute()");let r=!1,o=!1;this._audioMuted===!1&&s.audio&&(r=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&s.video&&(o=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(r===!0||o===!0)&&this._onmute({audio:r,video:o})}unmute(s={audio:!0,video:!0}){J.debug("unmute()");let r=!1,o=!1;this._audioMuted===!0&&s.audio&&(r=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&s.video&&(o=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(r===!0||o===!0)&&this._onunmute({audio:r,video:o})}hold(s={},r){if(J.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 o={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:q.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:o,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:o,extraHeaders:s.extraHeaders}),!0}unhold(s={},r){if(J.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 o={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:q.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:o,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:o,extraHeaders:s.extraHeaders}),!0}renegotiate(s={},r){J.debug("renegotiate()");const o=s.rtcOfferConstraints||null;if(this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;const a={succeeded:()=>{r&&r()},failed:()=>{this.terminate({cause:q.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Media Renegotiation Failed"})}};return this._setLocalMediaStatus(),s.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:a,rtcOfferConstraints:o,extraHeaders:s.extraHeaders}):this._sendReinvite({eventHandlers:a,rtcOfferConstraints:o,extraHeaders:s.extraHeaders}),!0}refer(s,r){J.debug("refer()");const o=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: ${o}`);const a=new gg(this);a.sendRefer(s,r);const t=a.id;return this._referSubscribers[t]=a,a.on("requestFailed",()=>{delete this._referSubscribers[t]}),a.on("accepted",()=>{delete this._referSubscribers[t]}),a.on("failed",()=>{delete this._referSubscribers[t]}),a}sendRequest(s,r){return J.debug("sendRequest()"),this._dialog.sendRequest(s,r)}receiveRequest(s){if(J.debug("receiveRequest()"),s.method===q.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,q.causes.CANCELED));else switch(s.method){case q.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:q.causes.MISSING_SDP,status_code:400});break}const r={originator:"remote",type:"answer",sdp:s.body};J.debug('emit "sdp"'),this.emit("sdp",r);const o=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(o)).then(()=>{this._is_confirmed||this._confirmed("remote",s)}).catch(a=>{this.terminate({cause:q.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),J.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)})}else this._is_confirmed||this._confirmed("remote",s);break;case q.BYE:this._status===te.STATUS_CONFIRMED||this._status===te.STATUS_WAITING_FOR_ACK?(s.reply(200),this._ended("remote",s,q.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,q.causes.BYE)):s.reply(403,"Wrong Status");break;case q.INVITE:this._status===te.STATUS_CONFIRMED?s.hasHeader("replaces")?this._receiveReplaces(s):this._receiveReinvite(s):s.reply(403,"Wrong Status");break;case q.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 lg(this).init_incoming(s):r!==void 0?new fu(this).init_incoming(s):s.reply(415)}else s.reply(403,"Wrong Status");break;case q.UPDATE:this._status===te.STATUS_CONFIRMED?this._receiveUpdate(s):s.reply(403,"Wrong Status");break;case q.REFER:this._status===te.STATUS_CONFIRMED?this._receiveRefer(s):s.reply(403,"Wrong Status");break;case q.NOTIFY:this._status===te.STATUS_CONFIRMED?this._receiveNotify(s):s.reply(403,"Wrong Status");break;default:s.reply(501)}}onTransportError(){J.warn("onTransportError()"),this._status!==te.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:q.causes.CONNECTION_ERROR,cause:q.causes.CONNECTION_ERROR})}onRequestTimeout(){J.warn("onRequestTimeout()"),this._status!==te.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:q.causes.REQUEST_TIMEOUT,cause:q.causes.REQUEST_TIMEOUT})}onDialogError(){J.warn("onDialogError()"),this._status!==te.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:q.causes.DIALOG_ERROR,cause:q.causes.DIALOG_ERROR})}newDTMF(s){J.debug("newDTMF()"),this.emit("newDTMF",s)}newInfo(s){J.debug("newInfo()"),this.emit("newInfo",s)}_isReadyToReOffer(){return this._rtcReady?this._dialog?this._dialog.uac_pending_reply===!0||this._dialog.uas_pending_reply===!0?(J.debug("_isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress"),!1):!0:(J.debug("_isReadyToReOffer() | session not established yet"),!1):(J.debug("_isReadyToReOffer() | internal WebRTC status not ready"),!1)}_close(){if(J.debug("close()"),this._localMediaStream&&this._localMediaStreamLocallyGenerated&&(J.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){J.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 o=Ni.T1;function a(){this._status===te.STATUS_WAITING_FOR_ACK&&(s.reply(200,null,[`Contact: ${this._contact}`],r),o<Ni.T2&&(o=o*2,o>Ni.T2&&(o=Ni.T2)),this._timers.invite2xxTimer=setTimeout(a.bind(this),o))}this._timers.invite2xxTimer=setTimeout(a.bind(this),o)}_setACKTimer(){this._timers.ackTimer=setTimeout(()=>{this._status===te.STATUS_WAITING_FOR_ACK&&(J.debug("no ACK received, terminating the session"),clearTimeout(this._timers.invite2xxTimer),this.sendRequest(q.BYE),this._ended("remote",null,q.causes.NO_ACK))},Ni.TIMER_H)}_sendTrickle(s){const r={janus:"trickle",candidate:s,handle_id:this.handle_id,session_id:this.session_id};console.log("candidate body",r)}_createRTCConnection(s,r){this._connection=new RTCPeerConnection(s,r),this._connection.addEventListener("iceconnectionstatechange",()=>{this._connection.iceConnectionState==="failed"&&this.terminate({cause:q.causes.RTP_TIMEOUT,status_code:408,reason_phrase:q.causes.RTP_TIMEOUT})}),this._connection.onicecandidate=o=>{if(this._connection.signalingState!=="stable"&&this._connection.signalingState!=="have-local-offer"){console.log("skipining icecandidate event",this._connection.signalingState,o);return}o.candidate&&(console.log("onicecandidate sendTrickle",o.candidate),this._sendTrickle(o.candidate).catch(a=>{J.warn(a)}))},J.debug('emit "peerconnection"'),this.emit("peerconnection",{peerconnection:this._connection})}_createLocalDescription(s,r){if(J.debug("createLocalDescription()"),s!=="offer"&&s!=="answer")throw new Error(`createLocalDescription() | invalid type "${s}"`);const o=this._connection;return this._rtcReady=!1,Promise.resolve().then(()=>s==="offer"?o.createOffer(r).catch(a=>(J.warn('emit "peerconnection:createofferfailed" [error:%o]',a),this.emit("peerconnection:createofferfailed",a),Promise.reject(a))):o.createAnswer(r).catch(a=>(J.warn('emit "peerconnection:createanswerfailed" [error:%o]',a),this.emit("peerconnection:createanswerfailed",a),Promise.reject(a)))).then(a=>o.setLocalDescription(a).catch(t=>(this._rtcReady=!0,J.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',t),this.emit("peerconnection:setlocaldescriptionfailed",t),Promise.reject(t)))).then(()=>{const a=r&&r.iceRestart;if(o.iceGatheringState==="complete"&&!a||o.iceGatheringState==="gathering"&&this._iceReady){this._rtcReady=!0;const t={originator:"local",type:s,sdp:o.localDescription.sdp};return J.debug('emit "sdp"'),this.emit("sdp",t),Promise.resolve(t.sdp)}return new Promise(t=>{let n=!1,p,_;this._iceReady=!1;const d=()=>{o.removeEventListener("icecandidate",p),o.removeEventListener("icegatheringstatechange",_),n=!0,this._rtcReady=!0,this._iceReady=!0;const g={originator:"local",type:s,sdp:o.localDescription.sdp};J.debug('emit "sdp"'),this.emit("sdp",g),t(g.sdp)};o.addEventListener("icecandidate",p=g=>{const T=g.candidate;T?this.emit("icecandidate",{candidate:T,ready:d}):n||d()}),o.addEventListener("icegatheringstatechange",_=()=>{o.iceGatheringState==="complete"&&!n&&d()})})})}_createDialog(s,r,o){console.log("_createDialog",s);const a=r==="UAS"?s.to_tag:s.from_tag,t=r==="UAS"?s.from_tag:s.to_tag,n=s.call_id+a+t;console.log("remote_tag",t);let p=this._earlyDialogs[n];if(o)return p?!0:(p=new eo(this,s,r,eo.C.STATUS_EARLY),console.log("SET DIALOG early"),p.error?(console.log("early_dialog error",p.error),J.debug(p.error),this._failed("remote",s,q.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[n]=p,!0));{if(this._from_tag=s.from_tag,this._to_tag=s.to_tag,p)return p.update(s,r),console.log("SET DIALOG 1"),this._dialog=p,delete this._earlyDialogs[n],!0;const _=new eo(this,s,r);return _.error?(console.log("dialog.error",_.error),J.debug(_.error),this._failed("remote",s,q.causes.INTERNAL_ERROR),!1):(console.log("AAA SET DIALOG 2"),this._dialog=_,!0)}}_receiveReinvite(s){J.debug("receiveReinvite()");const r=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,o={request:s,callback:void 0,reject:t.bind(this)};let a=!1;function t(p={}){a=!0;const _=p.status_code||403,d=p.reason_phrase||"",g=Me.cloneArray(p.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",o),a)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(p=>{n.call(this,p)}).catch(()=>{s.reply(500)});return}if(r!=="application/sdp"){J.debug("invalid Content-Type"),s.reply(415);return}this._processInDialogSdpOffer(s).then(p=>{this._status!==te.STATUS_TERMINATED&&n.call(this,p)}).catch(p=>{J.warn(p)});function n(p){const _=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(s,_),this._late_sdp&&(p=this._mangleOffer(p)),s.reply(200,null,_,p,()=>{this._status=te.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(s,p),this._setACKTimer()}),typeof o.callback=="function"&&o.callback()}}_receiveUpdate(s){J.debug("receiveUpdate()");const r=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0,o={request:s,callback:void 0,reject:t.bind(this)};let a=!1;function t(p={}){a=!0;const _=p.status_code||403,d=p.reason_phrase||"",g=Me.cloneArray(p.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",o),a)return;if(!s.body){n.call(this,null);return}if(r!=="application/sdp"){J.debug("invalid Content-Type"),s.reply(415);return}this._processInDialogSdpOffer(s).then(p=>{this._status!==te.STATUS_TERMINATED&&n.call(this,p)}).catch(p=>{J.warn(p)});function n(p){const _=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(s,_),s.reply(200,null,_,p),typeof o.callback=="function"&&o.callback()}}_processInDialogSdpOffer(s){J.debug("_processInDialogSdpOffer()");const r=s.parseSDP();let o=!1;for(const n of r.media){if(to.indexOf(n.type)===-1)continue;const p=n.direction||r.direction||"sendrecv";if(p==="sendonly"||p==="inactive")o=!0;else{o=!1;break}}const a={originator:"remote",type:"offer",sdp:s.body};J.debug('emit "sdp"'),this.emit("sdp",a);const t=new RTCSessionDescription({type:"offer",sdp:a.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),J.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&&o===!1?(this._remoteHold=!1,this._onunhold("remote")):this._remoteHold===!1&&o===!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),J.warn('emit "peerconnection:createtelocaldescriptionfailed" [error:%o]',n),n})}).catch(n=>{J.warn("_processInDialogSdpOffer() failed [error: %o]",n)}),this._connectionPromiseQueue}_receiveRefer(s){if(J.debug("receiveRefer()"),!s.refer_to){J.debug("no Refer-To header field present in REFER"),s.reply(400);return}if(s.refer_to.uri.scheme!==q.SIP){J.debug("Refer-To header field points to a non-SIP URI scheme"),s.reply(416);return}s.reply(202);const r=new hg(this,s.cseq);J.debug('emit "refer"'),this.emit("refer",{request:s,accept:(t,n)=>{o.call(this,t,n)},reject:()=>{a.call(this)}});function o(t,n={}){if(t=typeof t=="function"?t:null,this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED)return!1;const p=new wo(this._ua);if(p.on("progress",({response:_})=>{r.notify(_.status_code,_.reason_phrase)}),p.on("accepted",({response:_})=>{r.notify(_.status_code,_.reason_phrase)}),p.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: ${_}`)}p.connect(s.refer_to.uri.toAor(),n,t)}function a(){r.notify(603)}}_receiveNotify(s){switch(J.debug("receiveNotify()"),s.event||s.reply(400),s.event.event){case"refer":{let r,o;if(s.event.params&&s.event.params.id)r=s.event.params.id,o=this._referSubscribers[r];else if(Object.keys(this._referSubscribers).length===1)o=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{s.reply(400,"Missing event id parameter");return}if(!o){s.reply(481,"Subscription does not exist");return}o.receiveNotify(s),s.reply(200);break}default:s.reply(489)}}_receiveReplaces(s){J.debug("receiveReplaces()");function r(a){if(this._status!==te.STATUS_WAITING_FOR_ACK&&this._status!==te.STATUS_CONFIRMED)return!1;const t=new wo(this._ua);t.on("confirmed",()=>{this.terminate()}),t.init_incoming(s,a)}function o(){J.debug("Replaced INVITE rejected by the user"),s.reply(486)}this.emit("replaces",{request:s,accept:a=>{r.call(this,a)},reject:()=>{o.call(this)}})}_getNextTransactionId(){return(this.lastTransaction+1).toString()}_sendInitialRequest(s,r,o){this.ackSent=!1,this.publisherSubscribeSent=!1;const a=new l_(this._ua,this._request,{onRequestTimeout:()=>{this.onRequestTimeout()},onTransportError:()=>{this.onTransportError()},onAuthenticated:t=>{this._request=t},onReceiveResponse:t=>{this._receiveInviteResponse(t)}});Promise.resolve().then(()=>{if(o)return o;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,q.causes.USER_DENIED_MEDIA_ACCESS),J.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,q.causes.WEBRTC_ERROR),n})}).then(t=>{if(this._is_canceled||this._status===te.STATUS_TERMINATED)throw new Error("terminated");const p=JSON.stringify({janus:"attach",plugin:"janus.plugin.videoroom",opaque_id:"videoroomtest-uzkIUidc1969"});this._request.body=p,this._status=te.STATUS_INVITE_SENT,J.debug('emit "sending" [request:%o]',this._request),this.emit("sending",{request:this._request}),a.send()}).catch(t=>{this._status!==te.STATUS_TERMINATED&&J.warn(t)})}requestAudioAndVideoPermissions(){return this.loadStream()}async loadStream(){const s={audio:!0,video:!0};try{this.stream=await navigator.mediaDevices.getUserMedia(s),J.info("Got local user media.")}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 ET+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){console.log("SDP: sendConfigureMessage");const r={offerToReceiveAudio:!1,offerToReceiveVideo:!1},o=await this._connection.createOffer(r);await this._connection.setLocalDescription(o);const a={janus:"message",body:{request:"configure",record:!0,filename:this.getRecordFileName(),...s},jsep:o,handle_id:this.handle_id,session_id:this.session_id};console.log("SDP: SEND SDP REQUEST",a),this.sendRequest(q.INFO,{body:JSON.stringify(a),eventHandlers:{onSuccessResponse:async t=>{console.log("SDP: RESPONSE FOR SDP",t),await this._connection.setRemoteDescription(t.jsep),await this.processIceCandidates()}}})}_receiveInviteResponse(s){if(J.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){console.log("IF 1 SEND ACK"),this.ackSent=!0,this.sendRequest(q.ACK);return}else{const r=new eo(this,s,"UAC");if(r.error!==void 0){J.debug(r.error);return}this.sendRequest(q.ACK),this.sendRequest(q.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=vf();const a=`videoroomtest-${vf().replace(/-/g,"").slice(0,12)}`,t={janus:"message",body:{request:"join",room:"abcd",ptype:"publisher",display:"User1",clientID:this.client_id,opaque_id:a},handle_id:this.handle_id},n=["PTYPE: Publisher"];this.sendRequest(q.SUBSCRIBE,{extraHeaders:n,body:JSON.stringify(t)}),this.publisherSubscribeSent=!0,this.addTracks(this.stream.getTracks()),this.sendConfigureMessage({audio:!0,video:!0}).then(()=>{})})}if(this._is_canceled){console.log("IF 2 canceled"),s.status_code>=100&&s.status_code<200?this._request.cancel(this._cancel_reason):s.status_code>=200&&s.status_code<299&&(console.log("IF 2 _acceptAndTerminate"),this._acceptAndTerminate(s));return}if(console.log("IF 2 this._status",this._status),this._status!==te.STATUS_INVITE_SENT&&this._status!==te.STATUS_1XX_RECEIVED){console.log("IF 3 not invite sent");return}switch(!0){case/^100$/.test(s.status_code):console.log("IF 4 SWITCH 1"),this._status=te.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(s.status_code):{if(console.log("IF 5 SWITCH 2"),!s.to_tag){console.log("IF 5 break"),J.debug("1xx response received without to tag");break}if(s.hasHeader("contact")&&(console.log("IF 5 contact"),!this._createDialog(s,"UAC",!0))){console.log("IF 5 _createDialog break");break}if(this._status=te.STATUS_1XX_RECEIVED,!s.body){console.log("IF 5 !response.body"),this._progress("remote",s);break}const r={originator:"remote",type:"answer",sdp:s.body};J.debug('emit "sdp"'),this.emit("sdp",r);const o=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(o)).then(()=>this._progress("remote",s)).catch(a=>{J.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)});break}case/^2[0-9]{2}$/.test(s.status_code):{if(console.log("IF 6 SWITCH 3"),this._status=te.STATUS_CONFIRMED,!s.body){console.log("IF 6 !response.body"),this._acceptAndTerminate(s,400,q.causes.MISSING_SDP),this._failed("remote",s,q.causes.BAD_MEDIA_DESCRIPTION);break}if(console.log("AAA _createDialog"),!this._createDialog(s,"UAC"))break;break}default:{console.log("IF 7 SWITCH 4");const r=Me.sipErrorCause(s.status_code);this._failed("remote",s,r)}}}_sendReinvite(s={}){J.debug("sendReinvite()");const r=Me.cloneArray(s.extraHeaders),o=Me.cloneObject(s.eventHandlers),a=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",a)).then(_=>{_=this._mangleOffer(_);const d={originator:"local",type:"offer",sdp:_};J.debug('emit "sdp"'),this.emit("sdp",d),this.sendRequest(q.INVITE,{extraHeaders:r,body:_,eventHandlers:{onSuccessResponse:g=>{n.call(this,g),t=!0},onErrorResponse:g=>{p.call(this,g)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{p()});function n(_){if(this._status===te.STATUS_TERMINATED||(this.sendRequest(q.ACK),t))return;if(this._handleSessionTimersInIncomingResponse(_),_.body){if(!_.hasHeader("Content-Type")||_.getHeader("Content-Type").toLowerCase()!=="application/sdp"){p.call(this);return}}else{p.call(this);return}const d={originator:"remote",type:"answer",sdp:_.body};J.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(()=>{o.succeeded&&o.succeeded(_)}).catch(T=>{p.call(this),J.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',T),this.emit("peerconnection:setremotedescriptionfailed",T)})}function p(_){o.failed&&o.failed(_)}}_sendUpdate(s={}){J.debug("sendUpdate()");const r=Me.cloneArray(s.extraHeaders),o=Me.cloneObject(s.eventHandlers),a=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",a)).then(d=>{d=this._mangleOffer(d);const g={originator:"local",type:"offer",sdp:d};J.debug('emit "sdp"'),this.emit("sdp",g),this.sendRequest(q.UPDATE,{extraHeaders:r,body:d,eventHandlers:{onSuccessResponse:T=>{p.call(this,T),n=!0},onErrorResponse:T=>{_.call(this,T)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{_.call(this)})):this.sendRequest(q.UPDATE,{extraHeaders:r,eventHandlers:{onSuccessResponse:d=>{p.call(this,d)},onErrorResponse:d=>{_.call(this,d)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}});function p(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};J.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(()=>{o.succeeded&&o.succeeded(d)}).catch(E=>{_.call(this),J.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',E),this.emit("peerconnection:setremotedescriptionfailed",E)})}else o.succeeded&&o.succeeded(d)}function _(d){o.failed&&o.failed(d)}}_acceptAndTerminate(s,r,o){J.debug("acceptAndTerminate()");const a=[];r&&(o=o||q.REASON_PHRASE[r]||"",a.push(`Reason: SIP ;cause=${r}; text="${o}"`)),(this._dialog||this._createDialog(s,"UAC"))&&(this.sendRequest(q.ACK),this.sendRequest(q.BYE,{extraHeaders:a})),this._status=te.STATUS_TERMINATED}_mangleOffer(s){if(!this._localHold&&!this._remoteHold)return s;if(s=Ut.parse(s),this._localHold&&!this._remoteHold){J.debug("mangleOffer() | me on hold, mangling offer");for(const r of s.media)to.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){J.debug("mangleOffer() | both on hold, mangling offer");for(const r of s.media)to.indexOf(r.type)!==-1&&(r.direction="inactive")}else if(this._remoteHold){J.debug("mangleOffer() | remote on hold, mangling offer");for(const r of s.media)to.indexOf(r.type)!==-1&&(r.direction?r.direction==="sendrecv"?r.direction="recvonly":r.direction==="recvonly"&&(r.direction="inactive"):r.direction="recvonly")}return Ut.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 o;s.session_expires&&s.session_expires>=q.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=s.session_expires,o=s.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,o="uas"),r.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${o}`),this._sessionTimers.refresher=o==="uas",this._runSessionTimer()}_handleSessionTimersInIncomingResponse(s){if(!this._sessionTimers.enabled)return;let r;s.session_expires&&s.session_expires>=q.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()&&(J.debug("runSessionTimer() | sending session refresh request"),this._sessionTimers.refreshMethod===q.UPDATE?this._sendUpdate():this._sendReinvite())},s*500):this._sessionTimers.timer=setTimeout(()=>{this._status!==te.STATUS_TERMINATED&&(J.warn("runSessionTimer() | timer expired, terminating the session"),this.terminate({cause:q.causes.REQUEST_TIMEOUT,status_code:408,reason_phrase:"Session Timer Expired"}))},s*1100)}_toggleMuteAudio(s){const r=this._connection.getSenders().filter(o=>o.track&&o.track.kind==="audio");for(const o of r)o.track.enabled=!s}_toggleMuteVideo(s){const r=this._connection.getSenders().filter(o=>o.track&&o.track.kind==="video");for(const o of r)o.track.enabled=!s}_newJanusSession(s,r){J.debug("newRTCSession()"),this._ua.newJanusSession(this,{originator:s,session:this,request:r})}_connecting(s){J.debug("session connecting"),J.debug('emit "connecting"'),this.emit("connecting",{request:s})}_progress(s,r){J.debug("session progress"),J.debug('emit "progress"'),this.emit("progress",{originator:s,response:r||null})}_accepted(s,r){J.debug("session accepted"),this._start_time=new Date,J.debug('emit "accepted"'),this.emit("accepted",{originator:s,response:r||null})}_confirmed(s,r){J.debug("session confirmed"),this._is_confirmed=!0,J.debug('emit "confirmed"'),this.emit("confirmed",{originator:s,ack:r||null})}_ended(s,r,o){J.debug("session ended"),this._end_time=new Date,this._close(),J.debug('emit "ended"'),this.emit("ended",{originator:s,message:r||null,cause:o})}_failed(s,r,o){J.debug("session failed"),J.debug('emit "_failed"'),this.emit("_failed",{originator:s,message:r||null,cause:o}),this._close(),J.debug('emit "failed"'),this.emit("failed",{originator:s,message:r||null,cause:o})}_onhold(s){J.debug("session onhold"),this._setLocalMediaStatus(),J.debug('emit "hold"'),this.emit("hold",{originator:s})}_onunhold(s){J.debug("session onunhold"),this._setLocalMediaStatus(),J.debug('emit "unhold"'),this.emit("unhold",{originator:s})}_onmute({audio:s,video:r}){J.debug("session onmute"),this._setLocalMediaStatus(),J.debug('emit "muted"'),this.emit("muted",{audio:s,video:r})}_onunmute({audio:s,video:r}){J.debug("session onunmute"),this._setLocalMediaStatus(),J.debug('emit "unmuted"'),this.emit("unmuted",{audio:s,video:r})}}class rr{constructor(s){if(this.headers={},s.length>0){let r=!1;const o=s.split(`\r
135
135
  `),a=o.shift().split(/\s/);this.protocol=a[0],this.ident=a[1],this.code=a.length>3?parseInt(a[2]):0,this.method=a.length>3?a[3]:a[2],this.body="";for(const t of o){if(t==`-------${this.ident}$`)break;if(t===""){r=!0;continue}if(t&&r)this.body+=`${t}\r
136
- `;else{const s=t.split(": ");this.addHeader(s[0],s[1].trim())}}}else this.ident=Me.createRandomToken(12),this.protocol="MSRP"}addHeader(n,r){this.headers[n]=r}getHeader(n){return this.headers[n]}toString(){let n=`${this.protocol} ${this.ident} ${this.code} ${this.method}`.replaceAll(/null\s|undefined\s/ig,"")+`\r
137
- `;for(const r in this.headers)n+=`${r}: ${this.headers[r]}\r
138
- `;return this.body&&(n+=`\r
136
+ `;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
137
+ `;for(const r in this.headers)s+=`${r}: ${this.headers[r]}\r
138
+ `;return this.body&&(s+=`\r
139
139
  ${this.body}\r
140
- `),n+=`-------${this.ident}$\r
141
- `,n}}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 qa extends ct.EventEmitter{constructor(n){super(),this._id=null,this.my_ip="127.0.0.1",this._ua=n,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:n._configuration.authorization_user,ha1:n._configuration.ha1,realm:n._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:G.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(n=""){n!==""&&(this._direction="outgoing"),this.target=n,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 n=new nr("");n.method="SEND",n.addHeader("To-Path",`${this.my_addr[1]}`),n.addHeader("From-Path",`${this.my_addr[0]}`),n.addHeader("Message-ID",Me.createRandomToken(10)),this._connection.send(n.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(n){this._request.parseSDP(!0),this._request.reply(200,"OK",[],`v=0
140
+ `),s+=`-------${this.ident}$\r
141
+ `,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 Wa extends ct.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:q.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 rr("");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
142
  o=- 4232740119537112802 2 IN IP4 ${this.my_ip}
143
143
  c=IN IP4 ${this.my_ip}
144
144
  t=0 0
145
145
  m=message 2856 TCP/TLS/MSRP *
146
146
  a=accept-types:text/plain text/html
147
- a=path: ${n.getHeader("Use-Path")} msrp://${this._ua._configuration.authorization_user}.${this._ua._configuration.realm}:2856/${this.auth_id};ws
148
- `)}inviteParty(n){const r={},o=[];r.to_uri=new qi("sip",this.target,this._ua._configuration.realm),r.from_uri=new qi("sip",this._ua._configuration.uri.user,this._ua._configuration.uri.host),o.push(`Contact: ${this._ua.contact.toString({outbound:!0})}`),o.push("Content-Type: application/sdp"),this._request=new xt.InitialOutgoingInviteRequest(new qi("sip",this.target,this._ua._configuration.realm).clone(),this._ua,r,o,`v=0
147
+ a=path: ${s.getHeader("Use-Path")} msrp://${this._ua._configuration.authorization_user}.${this._ua._configuration.realm}:2856/${this.auth_id};ws
148
+ `)}inviteParty(s){const r={},o=[];r.to_uri=new Bi("sip",this.target,this._ua._configuration.realm),r.from_uri=new Bi("sip",this._ua._configuration.uri.user,this._ua._configuration.uri.host),o.push(`Contact: ${this._ua.contact.toString({outbound:!0})}`),o.push("Content-Type: application/sdp"),this._request=new Mt.InitialOutgoingInviteRequest(new Bi("sip",this.target,this._ua._configuration.realm).clone(),this._ua,r,o,`v=0
149
149
  o=- 4232740119537112802 2 IN IP4 ${this.my_ip}
150
150
  c=IN IP4 ${this.my_ip}
151
151
  t=0 0
152
152
  m=message 2856 TCP/TLS/MSRP *
153
153
  a=accept-types:text/plain text/html
154
- a=path:${n.getHeader("Use-Path")} msrp://${this._ua._configuration.authorization_user}.${this._ua._configuration.realm}:2856/${this.auth_id};ws
155
- `),this._newMSRPSession("local",this._request),this._id=this._request.call_id+this._from_tag,console.log("dialog be",this._dialog),new t_(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(n={}){console.log("terminate",this);const r=n.cause||G.causes.BYE,o=Me.cloneArray(n.extraHeaders),a=n.body;let t,s=n.status_code,p=n.reason_phrase;if(this._status===Re.STATUS_TERMINATED)throw new pn.InvalidStateError(this._status);switch(this.status="terminated",this._status){case Re.STATUS_NULL:case Re.STATUS_INVITE_SENT:case Re.STATUS_1XX_RECEIVED:if(s&&(s<200||s>=700))throw new TypeError(`Invalid status_code: ${s}`);s&&(p=p||G.REASON_PHRASE[s]||"",t=`SIP ;cause=${s} ;text="${p}"`),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,G.causes.CANCELED);break;case Re.STATUS_WAITING_FOR_ANSWER:case Re.STATUS_ANSWERED:if(s=s||480,console.log("REPLY 480"),s<300||s>=700)throw new TypeError(`Invalid status_code: ${s}`);this._request.reply(s,p,o,a),console.log("failed 2"),this._failed("local",null,G.causes.REJECTED);break;case Re.STATUS_WAITING_FOR_ACK:case Re.STATUS_CONFIRMED:if(p=n.reason_phrase||G.REASON_PHRASE[s]||"",s&&(s<200||s>=700))throw new TypeError(`Invalid status_code: ${s}`);if(s&&o.push(`Reason: SIP ;cause=${s}; text="${p}"`),this._status===Re.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==qt.C.STATUS_TERMINATED){const _=this._dialog;this.receiveRequest=({method:d})=>{d===G.ACK&&(this.sendRequest(G.BYE,{extraHeaders:o,body:a}),_.terminate())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===qt.C.STATUS_TERMINATED&&(this.sendRequest(G.BYE,{extraHeaders:o,body:a}),_.terminate())}),this._ended("local",null,r),this._dialog=_,this._ua.newDialog(_)}else console.log("here it is"),this.sendRequest(G.BYE,{extraHeaders:o,body:a}),this._ended("local",null,r)}}sendRequest(n,r){return this._dialog.sendRequest(n,r)}authenticate(n){this.status="auth";let r=new nr("");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`),n&&r.addHeader("Authorization",n.toString());let o=r.toString();console.log(o);let a=[];for(var t=0;t<o.length;t++)a.push(o.charCodeAt(t).toString(16));console.log(a),this._connection.send(r.toString())}onmessage(n){console.log("onmessage",n);const r=new nr(n.data);if(this.status==="auth"&&r.code===401){const o=this.parseAuth(r.getHeader("WWW-Authenticate")),a=new wm(this.credentials);a.authenticate({method:"AUTH",ruri:`msrp://${this._ua._configuration.realm}:2856;ws`,body:null},o,Me.createRandomToken(12)),this.authenticate(a)}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 n=new RTCPeerConnection({iceServers:[]});n.createDataChannel(""),n.createOffer().then(n.setLocalDescription.bind(n)),n.onicecandidate=r=>{if(!r||!r.candidate||!r.candidate.candidate)return;const o=/([0-9]{1,3}(\.[0-9]{1,3}){3})/,a=r.candidate.candidate.match(o);this.my_ip=a&&a[1],n.onicecandidate=()=>{},this.authenticate(null)}}onerror(n){console.log(n)}_receiveInviteResponse(n){if(console.log("resp0000000000000",n),this._dialog&&n.status_code>=200&&n.status_code<=299)if(console.log("200000000000000"),this._dialog.id.call_id===n.call_id&&this._dialog.id.local_tag===n.from_tag&&this._dialog.id.remote_tag===n.to_tag){this.sendRequest(G.ACK);return}else{const r=new Bl(this,n,"UAC");if(r.error!==void 0){console.log(r.error);return}this.sendRequest(G.ACK),this.sendRequest(G.BYE);return}if(this._is_canceled){n.status_code>=100&&n.status_code<200?this._request.cancel(this._cancel_reason):n.status_code>=200&&n.status_code<299&&this._acceptAndTerminate(n);return}if(!(this._status!==Re.STATUS_INVITE_SENT&&this._status!==Re.STATUS_1XX_RECEIVED))switch(console.log("start Switch"),!0){case/^100$/.test(n.status_code):this._status=Re.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(n.status_code):{if(!n.to_tag){console.log("1xx response received without to tag");break}if(n.hasHeader("contact")&&!this._createDialog(n,"UAC",!0))break;if(this._status=Re.STATUS_1XX_RECEIVED,!n.body){this._progress("remote",n);break}const r={originator:"remote",type:"answer",sdp:n.body};console.log('emit "sdp"'),this.emit("sdp",r);const o=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(o)).then(()=>this._progress("remote",n)).catch(a=>{console.log('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)});break}case/^2[0-9]{2}$/.test(n.status_code):{if(console.log("maybe here???"),this._status=Re.STATUS_CONFIRMED,!n.body){this._acceptAndTerminate(n,400,G.causes.MISSING_SDP),console.log("failed 3"),this._failed("remote",n,G.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(n,"UAC"))break;const r={originator:"remote",type:"answer",sdp:n.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(o=>this._connection.setLocalDescription(o)).catch(o=>{this._acceptAndTerminate(n,500,o.toString()),console.log("failed 4"),this._failed("local",n,G.causes.WEBRTC_ERROR)})}).then(()=>{this._handleSessionTimersInIncomingResponse(n),this._accepted("remote",n),this.sendRequest(G.ACK),this._confirmed("local",null)});break}default:{const r=Me.sipErrorCause(n.status_code);console.log("failed 5"),this._failed("remote",n,r)}}}sendMSRP(n){const r=new nr("");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=n;let o=r.toString();console.log(o);let a=[];for(var t=0;t<o.length;t++)a.push(o.charCodeAt(t).toString(16));console.log(a),this._connection.send(r.toString()),r.direction="outgoing",this.emit("newMessage",r),this._msgHistory.push(r),this.emit("msgHistoryUpdate",this._msgHistory)}_sendOk(n){let r=n.ident,o=n.getHeader("Message-ID"),a=new nr("");a.method="200 OK",a.addHeader("To-Path",`${this.my_addr[1]}`),a.addHeader("From-Path",`${this.my_addr[0]}`),a.addHeader("Message-ID",o),a.ident=r;let t=a.toString();console.log(t);let s=[];for(var p=0;p<t.length;p++)s.push(t.charCodeAt(p).toString(16));console.log(s),this._connection.send(a.toString())}_sendReport(n){let r=n.ident,o=n.getHeader("Message-ID"),a=new nr("");a.method="REPORT",a.addHeader("To-Path",`${n.getHeader("From-Path")}`),a.addHeader("From-Path",`${this.my_addr[0]}`),a.addHeader("Message-ID",o),a.addHeader("Byte-Range","1-25/25"),a.addHeader("Status","000 200 OK"),a.ident=r;let t=a.toString();console.log(t);let s=[];for(var p=0;p<t.length;p++)s.push(t.charCodeAt(p).toString(16));console.log(s),this._connection.send(a.toString())}parseAuth(n){const r={},o=n.replace("Digest","").split(",");for(const a of o){const t=a.trim().split("=");r[t[0]]=t[1].match('^"(.+)"$')[1]}return r}init_incoming(n,r){let o;const a=n.hasHeader("Content-Type")?n.getHeader("Content-Type").toLowerCase():void 0;if(n.body&&a!=="application/sdp"){n.reply(415);return}if(this._status=Re.STATUS_INVITE_RECEIVED,this._from_tag=n.from_tag,this._id=n.call_id+this._from_tag,this._request=n,this._contact=this._ua.contact.toString(),n.hasHeader("expires")&&(o=n.getHeader("expires")*1e3),n.to_tag=Me.newTag(),!this._createDialog(n,"UAS",!0)){n.reply(500,"Missing Contact header field");return}n.body?this._late_sdp=!1:this._late_sdp=!0,this._status=Re.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(()=>{n.reply(408),console.log("failed 6"),this._failed("local",null,G.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),o&&(this._timers.expiresTimer=setTimeout(()=>{this._status===Re.STATUS_WAITING_FOR_ANSWER&&(n.reply(487),console.log("failed 7"),this._failed("system",null,G.causes.EXPIRES))},o)),this._direction="incoming",this._local_identity=n.to,this._remote_identity=n.from,r&&r(this),n.parseSDP(!0),this.target_addr=n.sdp.media[0].invalid[1].value.replaceAll("path:","").split(" ").reverse(),this._newMSRPSession("remote",n),this._status!==Re.STATUS_TERMINATED&&(n.reply(180,null,[`Contact: ${this._ua._contact}`]),this._progress("local",null))}_failed(n,r,o){this.emit("_failed",{originator:n,message:r||null,cause:o}),this._close(),this.emit("failed",{originator:n,message:r||null,cause:o})}_close(){if(console.log("CLOSE SESSION"),this._status!==Re.STATUS_TERMINATED){if(this._status=Re.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(n){console.log("close() | error closing the RTCPeerConnection: %o",n)}for(const n in this._timers)Object.prototype.hasOwnProperty.call(this._timers,n)&&clearTimeout(this._timers[n]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(const n in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,n)&&(this._earlyDialogs[n].terminate(),delete this._earlyDialogs[n]);for(const n in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,n)&&delete this._referSubscribers[n];this._ua.destroyMSRPSession(this)}}_createDialog(n,r,o){const a=r==="UAS"?n.to_tag:n.from_tag,t=r==="UAS"?n.from_tag:n.to_tag,s=n.call_id+a+t;let p=this._earlyDialogs[s];if(o)return p?!0:(p=new Bl(this,n,r,Bl.C.STATUS_EARLY),p.error?(console.log("failed 8"),this._failed("remote",n,G.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[s]=p,!0));{if(this._from_tag=n.from_tag,this._to_tag=n.to_tag,p)return p.update(n,r),this._dialog=p,delete this._earlyDialogs[s],!0;const _=new Bl(this,n,r);return _.error?(console.log("failed 9"),this._failed("remote",n,G.causes.INTERNAL_ERROR),!1):(this._dialog=_,!0)}}_newMSRPSession(n,r){this._ua.newMSRPSession(this,{originator:n,session:this,request:r})}_progress(n,r){this.emit("progress",{originator:n,response:r||null})}isEnded(){switch(this._status){case Re.STATUS_CANCELED:case Re.STATUS_TERMINATED:return!0;default:return!1}}_accepted(n,r){console.log("session accepted"),this._start_time=new Date,console.log('emit "accepted"'),this.emit("accepted",{originator:n,response:r||null})}_confirmed(n,r){console.log("session confirmed"),this._is_confirmed=!0,console.log('emit "confirmed"'),this.emit("confirmed",{originator:n,ack:r||null})}_ended(n,r,o){console.log("session ended"),this._end_time=new Date,this._close(),console.log('emit "ended"'),this.emit("ended",{originator:n,message:r||null,cause:o})}_handleSessionTimersInIncomingResponse(n){if(!this._sessionTimers.enabled)return;let r;n.session_expires&&n.session_expires>=G.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=n.session_expires,r=n.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,r="uac"),this._sessionTimers.refresher=r==="uac",this._runSessionTimer()}receiveRequest(n){if(console.log("receiveRequest()"),n.method===G.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",n,G.causes.CANCELED));else switch(n.method){case G.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(!n.body){this.terminate({cause:G.causes.MISSING_SDP,status_code:400});break}const r={originator:"remote",type:"answer",sdp:n.body};console.log('emit "sdp"'),this.emit("sdp",r);const o=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(o)).then(()=>{this._is_confirmed||this._confirmed("remote",n)}).catch(a=>{this.terminate({cause:G.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),console.log('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)})}else this._is_confirmed||this._confirmed("remote",n);break;case G.BYE:this._status===Re.STATUS_CONFIRMED||this._status===Re.STATUS_WAITING_FOR_ACK?(n.reply(200),this._ended("remote",n,G.causes.BYE)):this._status===Re.STATUS_INVITE_RECEIVED||this._status===Re.STATUS_WAITING_FOR_ANSWER?(n.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",n,G.causes.BYE)):n.reply(403,"Wrong Status");break;case G.INVITE:this._status===Re.STATUS_CONFIRMED?n.hasHeader("replaces")?this._receiveReplaces(n):this._receiveReinvite(n):n.reply(403,"Wrong Status");break;case G.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?(n.hasHeader("Content-Type")?n.getHeader("Content-Type").toLowerCase():void 0)!==void 0?new au(this).init_incoming(n):n.reply(415):n.reply(403,"Wrong Status");break;case G.UPDATE:this._status===Re.STATUS_CONFIRMED?this._receiveUpdate(n):n.reply(403,"Wrong Status");break;case G.REFER:this._status===Re.STATUS_CONFIRMED?this._receiveRefer(n):n.reply(403,"Wrong Status");break;case G.NOTIFY:this._status===Re.STATUS_CONFIRMED?this._receiveNotify(n):n.reply(403,"Wrong Status");break;default:n.reply(501)}}onTransportError(){console.log("onTransportError()"),this._status!==Re.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:G.causes.CONNECTION_ERROR,cause:G.causes.CONNECTION_ERROR})}onRequestTimeout(){console.log("onRequestTimeout()"),this._status!==Re.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:G.causes.REQUEST_TIMEOUT,cause:G.causes.REQUEST_TIMEOUT})}onDialogError(){console.log("onDialogError()"),this._status!==Re.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:G.causes.DIALOG_ERROR,cause:G.causes.DIALOG_ERROR})}}const Dt=console,pf={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2},_T=uT;class hT extends _T{constructor(n){super(n),this._msrp_sessions=[],this._transactions={nist:{},nict:{},ist:{},ict:{}},this._janus_sessions=[]}call(n,r){return super.call(n,r)}joinVideoCall(n,r){Dt.debug("call()");const o=new Io(this);return o.connect(n,r),o}newMSRPSession(n,r){n.on("msgHistoryUpdate",o=>{console.log(o)}),this._msrp_sessions[n.id]=n,this.emit("newMSRPSession",r)}newJanusSession(n,r){this._janus_sessions[n.id]=n,this.emit("newJanusSession",r)}destroyMSRPSession(n){delete this._msrp_sessions[n.id]}destroyJanusSession(n){delete this._janus_sessions[n.id]}receiveRequest(n){const r=n.method;if(console.log("-----------"),n.ruri.user!==this._configuration.uri.user&&n.ruri.user!==this._contact.uri.user){Dt.debug("Request-URI does not point to us"),n.method!==Ue.ACK&&n.reply_sl(404);return}if(n.ruri.scheme===Ue.SIPS){n.reply_sl(416);return}if(qt.checkTransaction(this,n))return;if(r===Ue.INVITE?new qt.InviteServerTransaction(this,this._transport,n):r!==Ue.ACK&&r!==Ue.CANCEL&&new qt.NonInviteServerTransaction(this,this._transport,n),r===Ue.OPTIONS){if(this.listeners("newOptions").length===0){n.reply(200);return}new $c.Options(this).init_incoming(n)}else if(r===Ue.MESSAGE){if(this.listeners("newMessage").length===0){n.reply(405);return}new $c.Message(this).init_incoming(n)}else if(r===Ue.INVITE&&!n.to_tag&&this.listeners("newRTCSession").length===0){n.reply(405);return}let o,a;if(n.to_tag)o=this._findDialog(n.call_id,n.from_tag,n.to_tag),o?o.receiveRequest(n):r===Ue.NOTIFY?(a=this._findSession(n),a?a.receiveRequest(n):(Dt.debug("received NOTIFY request for a non existent subscription"),n.reply(481,"Subscription does not exist"))):r!==Ue.ACK&&n.reply(481);else switch(r){case Ue.INVITE:if(window.RTCPeerConnection)if(n.hasHeader("replaces")){const t=n.replaces;o=this._findDialog(t.call_id,t.from_tag,t.to_tag),o?(a=o.owner,a.isEnded()?n.reply(603):a.receiveRequest(n)):n.reply(481)}else n.body.search(/MSRP/ig)>-1?(a=new qa(this),a.init_incoming(n)):n.body.search(/JANUS/ig)>-1||(a=new vg(this),a.init_incoming(n));else Dt.warn("INVITE received but WebRTC is not supported"),n.reply(488);break;case Ue.BYE:n.reply(481);break;case Ue.CANCEL:a=this._findSession(n),a?a.receiveRequest(n):Dt.debug("received CANCEL request for a non existent session");break;case Ue.ACK:break;case Ue.NOTIFY:this.emit("sipEvent",{event:n.event,request:n}),n.reply(200);break;default:n.reply(405);break}}startMSRP(n,r){Dt.debug("startMSRP()",r);const o=new qa(this);return o.connect(n),o}startJanus(n,r){Dt.debug("startJanus()",r);const o=new qa(this);return o.connect(n),o}terminateMSRPSessions(n){Dt.debug("terminateSessions()");for(const r in this._msrp_sessions)this._msrp_sessions[r].isEnded()||this._msrp_sessions[r].terminate(n)}terminateJanusSessions(n){Dt.debug("terminateSessions()");for(const r in this._janus_sessions)this._janus_sessions[r].isEnded()||this._janus_sessions[r].terminate(n)}stop(){if(Dt.debug("stop()"),this._dynConfiguration={},this._status===pf.STATUS_USER_CLOSED){Dt.debug("UA already closed");return}this._registrator.close();const n=Object.keys(this._sessions).length;for(const o in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,o)){Dt.debug(`closing session ${o}`);try{this._sessions[o].terminate()}catch(a){console.error(a)}}for(const o in this._msrp_sessions)if(Object.prototype.hasOwnProperty.call(this._msrp_sessions,o)){Dt.debug(`closing session ${o}`);try{this._msrp_sessions[o].terminate()}catch(a){console.error(a)}}for(const o in this._janus_sessions)if(Object.prototype.hasOwnProperty.call(this._janus_sessions,o)){Dt.debug(`closing session ${o}`);try{this._janus_sessions[o].terminate()}catch(a){console.error(a)}}for(const o in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,o))try{this._applicants[o].close()}catch(a){console.error(a)}this._status=pf.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&&n===0?this._transport.disconnect():this._closeTimer=setTimeout(()=>{this._closeTimer=null,this._transport.disconnect()},2e3)}}const dT=["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"],pT=["_cancel_reason","_contact","direction","_end_time","_eventsCount","_from_tag","_id","_is_canceled","_is_confirmed","_late_sdp","status","start_time","_remote_identity","target_addr"];function mf(c){const n={};return dT.forEach(r=>{c[r]!==void 0&&(n[r]=c[r])}),n.localHold=c._localHold,n}function gf(c){const n={};return pT.forEach(r=>{c[r]!==void 0&&(n[r]=c[r])}),n}function Tf(c,n){const r=new AudioContext,o=r.createMediaStreamSource(c),a=r.createMediaStreamDestination(),t=r.createGain();return o.connect(t),t.connect(a),t.gain.value=n,a.stream}function mT(c,n,r,o){const a=document.createElement("audio");a.id=n._id,a.className="audioTag",a.srcObject=c,d_()||(a.setSinkId(r),a.volume=o),a.play(),n.audioTag=a}function gT(c){if(c&&typeof c.log=="function"&&typeof c.warn=="function"&&typeof c.error=="function")return!0}function d_(){return/Mobi|Android|iPhone/i.test(navigator.userAgent)}const TT=at,vT=rs(),bt=new TT("WebSocketInterface");var ET=class{constructor(n){bt.debug('new() [url:"%s"]',n),this._url=n,this._sip_uri=null,this._via_transport=null,this._ws=null;const r=vT.parse(n,"absoluteURI");if(r===-1)throw bt.warn(`invalid WebSocket URI: ${n}`),new TypeError(`Invalid argument: ${n}`);if(r.scheme!=="wss"&&r.scheme!=="ws")throw bt.warn(`invalid WebSocket URI scheme: ${r.scheme}`),new TypeError(`Invalid argument: ${n}`);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(n){this._via_transport=n.toUpperCase()}get sip_uri(){return this._sip_uri}get url(){return this._url}connect(){if(bt.debug("connect()"),this.isConnected()){bt.debug(`WebSocket ${this._url} is already connected`);return}else if(this.isConnecting()){bt.debug(`WebSocket ${this._url} is connecting`);return}this._ws&&this.disconnect(),bt.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(n){this._onError(n)}}disconnect(){bt.debug("disconnect()"),this._ws&&(this._ws.onopen=()=>{},this._ws.onclose=()=>{},this._ws.onmessage=()=>{},this._ws.onerror=()=>{},this._ws.close(),this._ws=null)}send(n){return bt.debug("send()"),this.isConnected()?(this._ws.send(n),!0):(bt.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(){bt.debug(`WebSocket ${this._url} connected`),this.onconnect()}_onClose({wasClean:n,code:r,reason:o}){bt.debug(`WebSocket ${this._url} closed`),n===!1&&bt.debug("WebSocket abrupt disconnection"),this.ondisconnect(!n,r,o)}_onMessage({data:n}){bt.debug("received WebSocket message"),this.ondata(n)}_onError(n){bt.warn(`WebSocket ${this._url} error: `,n)}};const _u=bo,ST=Ue,yT=Ts,AT=Et(),CT=h_,RT=gs(),IT=Au(),bT=rs(),wT=ET,OT=ur("JsSIP");OT("version %s",_u.version);var DT={C:ST,Exceptions:yT,Utils:AT,UA:CT,URI:RT,NameAddrHeader:IT,WebSocketInterface:wT,Grammar:bT,debug:ur,get name(){return _u.title},get version(){return _u.version}};const NT=ot(DT);function Ba(c){return c<10?`0${c}`:`${c}`}function UT(c){let n=c.hours||0,r=c.minutes||0,o=c.seconds||0;o++,o===60&&(o=0,r++,r===60&&(r=0,n++));const a=`${Ba(n)}:${Ba(r)}:${Ba(o)}`;return{seconds:o,minutes:r,hours:n,formatted:a}}var St={};St.forEach=async(c,n,r)=>{const o=[];for(let a=0;a<c.length;a++)if(a in c){const t=Promise.resolve(c[a]).then(s=>n.call(r||globalThis,s,a,c));o.push(t)}await Promise.all(o)};St.forEachSeries=async(c,n,r)=>{for(let o=0;o<c.length;o++)o in c&&await n.call(r||globalThis,await c[o],o,c)};St.map=async(c,n,r)=>{const o=[];for(let a=0;a<c.length;a++)a in c&&(o[a]=Promise.resolve(c[a]).then(t=>n.call(r||globalThis,t,a,c)));return Promise.all(o)};St.mapSeries=async(c,n,r)=>{const o=[];for(let a=0;a<c.length;a++)a in c&&(o[a]=await n.call(r||globalThis,await c[a],a,c));return o};St.find=(c,n,r)=>new Promise((o,a)=>{if(c.length===0)return o();let t=1;for(let s=0;s<c.length;s++){const p=_=>{_?o(c[s]):t===c.length&&o(),t++};Promise.resolve(c[s]).then(_=>n.call(r||globalThis,_,s,c)).then(p).catch(a)}});St.findSeries=async(c,n,r)=>{for(let o=0;o<c.length;o++)if(await n.call(r||globalThis,await c[o],o,c))return c[o]};St.findIndex=(c,n,r)=>new Promise((o,a)=>{if(c.length===0)return o(-1);let t=1;for(let s=0;s<c.length;s++){const p=_=>{_?o(s):t===c.length&&o(-1),t++};Promise.resolve(c[s]).then(_=>n.call(r||globalThis,_,s,c)).then(p).catch(a)}});St.findIndexSeries=async(c,n,r)=>{for(let o=0;o<c.length;o++)if(await n.call(r||globalThis,await c[o],o,c))return o};St.some=(c,n,r)=>new Promise((o,a)=>{if(c.length===0)return o(!1);let t=1;for(let s=0;s<c.length;s++){if(!(s in c)){t++;continue}const p=_=>{_?o(!0):t===c.length&&o(!1),t++};Promise.resolve(c[s]).then(_=>n.call(r||globalThis,_,s,c)).then(p).catch(a)}});St.someSeries=async(c,n,r)=>{for(let o=0;o<c.length;o++)if(o in c&&await n.call(r||globalThis,await c[o],o,c))return!0;return!1};St.every=(c,n,r)=>new Promise((o,a)=>{if(c.length===0)return o(!0);let t=1;for(let s=0;s<c.length;s++){if(!(s in c)){t++;continue}const p=_=>{_?t===c.length&&o(!0):o(!1),t++};Promise.resolve(c[s]).then(_=>n.call(r||globalThis,_,s,c)).then(p).catch(a)}});St.everySeries=async(c,n,r)=>{for(let o=0;o<c.length;o++)if(o in c&&!await n.call(r||globalThis,await c[o],o,c))return!1;return!0};St.filter=(c,n,r)=>new Promise(async(o,a)=>{const t=[];for(let p=0;p<c.length;p++)p in c&&(t[p]=Promise.resolve(c[p]).then(_=>n.call(r||globalThis,_,p,c)).catch(a));const s=[];for(let p=0;p<t.length;p++)await t[p]&&s.push(await c[p]);o(s)});St.filterSeries=async(c,n,r)=>{const o=[];for(let a=0;a<c.length;a++)a in c&&await n.call(r||globalThis,await c[a],a,c)&&o.push(await c[a]);return o};St.reduce=async(c,n,r)=>{if(c.length===0&&r===void 0)throw TypeError("Reduce of empty array with no initial value");let o,a;for(r!==void 0?(a=r,o=0):(a=c[0],o=1),o;o<c.length;o++)o in c&&(a=await n(await a,await c[o],o,c));return a};var p_={};(function(c){const n=St;Object.keys(n).forEach(r=>{const o=r.charAt(0).toUpperCase()+r.slice(1);c[`async${o}`]=async function(...a){return n[r](this,...a)}})})(p_);const PT=St,xT=p_;var vf=Object.assign(PT,{instanceMethods:xT});const Tn=new AudioContext,es={NEW_CALL:"new_call",CALL_CONFIRMED:"confirmed",CALL_FAILED:"failed",CALL_PROGRESS:"progress",CALL_ENDED:"ended"};var MT={exports:{}};(function(c){var n=function(r){var o=Object.prototype,a=o.hasOwnProperty,t=Object.defineProperty||function(ee,W,B){ee[W]=B.value},s,p=typeof Symbol=="function"?Symbol:{},_=p.iterator||"@@iterator",d=p.asyncIterator||"@@asyncIterator",g=p.toStringTag||"@@toStringTag";function T(ee,W,B){return Object.defineProperty(ee,W,{value:B,enumerable:!0,configurable:!0,writable:!0}),ee[W]}try{T({},"")}catch{T=function(W,B,re){return W[B]=re}}function E(ee,W,B,re){var ge=W&&W.prototype instanceof ae?W:ae,be=Object.create(ge.prototype),xe=new P(re||[]);return t(be,"_invoke",{value:z(ee,B,xe)}),be}r.wrap=E;function y(ee,W,B){try{return{type:"normal",arg:ee.call(W,B)}}catch(re){return{type:"throw",arg:re}}}var A="suspendedStart",R="suspendedYield",I="executing",$="completed",L={};function ae(){}function N(){}function F(){}var Se={};T(Se,_,function(){return this});var ve=Object.getPrototypeOf,M=ve&&ve(ve(se([])));M&&M!==o&&a.call(M,_)&&(Se=M);var D=F.prototype=ae.prototype=Object.create(Se);N.prototype=F,t(D,"constructor",{value:F,configurable:!0}),t(F,"constructor",{value:N,configurable:!0}),N.displayName=T(F,g,"GeneratorFunction");function q(ee){["next","throw","return"].forEach(function(W){T(ee,W,function(B){return this._invoke(W,B)})})}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,F):(ee.__proto__=F,T(ee,g,"GeneratorFunction")),ee.prototype=Object.create(D),ee},r.awrap=function(ee){return{__await:ee}};function j(ee,W){function B(be,xe,Ce,le){var ye=y(ee[be],ee,xe);if(ye.type==="throw")le(ye.arg);else{var tt=ye.arg,it=tt.value;return it&&typeof it=="object"&&a.call(it,"__await")?W.resolve(it.__await).then(function(Ee){B("next",Ee,Ce,le)},function(Ee){B("throw",Ee,Ce,le)}):W.resolve(it).then(function(Ee){tt.value=Ee,Ce(tt)},function(Ee){return B("throw",Ee,Ce,le)})}}var re;function ge(be,xe){function Ce(){return new W(function(le,ye){B(be,xe,le,ye)})}return re=re?re.then(Ce,Ce):Ce()}t(this,"_invoke",{value:ge})}q(j.prototype),T(j.prototype,d,function(){return this}),r.AsyncIterator=j,r.async=function(ee,W,B,re,ge){ge===void 0&&(ge=Promise);var be=new j(E(ee,W,B,re),ge);return r.isGeneratorFunction(W)?be:be.next().then(function(xe){return xe.done?xe.value:be.next()})};function z(ee,W,B){var re=A;return function(be,xe){if(re===I)throw new Error("Generator is already running");if(re===$){if(be==="throw")throw xe;return et()}for(B.method=be,B.arg=xe;;){var Ce=B.delegate;if(Ce){var le=H(Ce,B);if(le){if(le===L)continue;return le}}if(B.method==="next")B.sent=B._sent=B.arg;else if(B.method==="throw"){if(re===A)throw re=$,B.arg;B.dispatchException(B.arg)}else B.method==="return"&&B.abrupt("return",B.arg);re=I;var ye=y(ee,W,B);if(ye.type==="normal"){if(re=B.done?$:R,ye.arg===L)continue;return{value:ye.arg,done:B.done}}else ye.type==="throw"&&(re=$,B.method="throw",B.arg=ye.arg)}}}function H(ee,W){var B=W.method,re=ee.iterator[B];if(re===s)return W.delegate=null,B==="throw"&&ee.iterator.return&&(W.method="return",W.arg=s,H(ee,W),W.method==="throw")||B!=="return"&&(W.method="throw",W.arg=new TypeError("The iterator does not provide a '"+B+"' 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=s);else return be;return W.delegate=null,L}q(D),T(D,g,"Generator"),T(D,_,function(){return this}),T(D,"toString",function(){return"[object Generator]"});function J(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(J,this),this.reset(!0)}r.keys=function(ee){var W=Object(ee),B=[];for(var re in W)B.push(re);return B.reverse(),function ge(){for(;B.length;){var be=B.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 B=-1,re=function ge(){for(;++B<ee.length;)if(a.call(ee,B))return ge.value=ee[B],ge.done=!1,ge;return ge.value=s,ge.done=!0,ge};return re.next=re}}return{next:et}}r.values=se;function et(){return{value:s,done:!0}}return P.prototype={constructor:P,reset:function(ee){if(this.prev=0,this.next=0,this.sent=this._sent=s,this.done=!1,this.delegate=null,this.method="next",this.arg=s,this.tryEntries.forEach(U),!ee)for(var W in this)W.charAt(0)==="t"&&a.call(this,W)&&!isNaN(+W.slice(1))&&(this[W]=s)},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 B(le,ye){return be.type="throw",be.arg=ee,W.next=le,ye&&(W.method="next",W.arg=s),!!ye}for(var re=this.tryEntries.length-1;re>=0;--re){var ge=this.tryEntries[re],be=ge.completion;if(ge.tryLoc==="root")return B("end");if(ge.tryLoc<=this.prev){var xe=a.call(ge,"catchLoc"),Ce=a.call(ge,"finallyLoc");if(xe&&Ce){if(this.prev<ge.catchLoc)return B(ge.catchLoc,!0);if(this.prev<ge.finallyLoc)return B(ge.finallyLoc)}else if(xe){if(this.prev<ge.catchLoc)return B(ge.catchLoc,!0)}else if(Ce){if(this.prev<ge.finallyLoc)return B(ge.finallyLoc)}else throw new Error("try statement without catch or finally")}}},abrupt:function(ee,W){for(var B=this.tryEntries.length-1;B>=0;--B){var re=this.tryEntries[B];if(re.tryLoc<=this.prev&&a.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 B=this.tryEntries[W];if(B.finallyLoc===ee)return this.complete(B.completion,B.afterLoc),U(B),L}},catch:function(ee){for(var W=this.tryEntries.length-1;W>=0;--W){var B=this.tryEntries[W];if(B.tryLoc===ee){var re=B.completion;if(re.type==="throw"){var ge=re.arg;U(B)}return ge}}throw new Error("illegal catch attempt")},delegateYield:function(ee,W,B){return this.delegate={iterator:se(ee),resultName:W,nextLoc:B},this.method==="next"&&(this.arg=s),L}},r}(c.exports);try{regeneratorRuntime=n}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}})(MT);var m_={exports:{}};(function(c){(function(n,r){c.exports?c.exports=r():n.log=r()})(y_,function(){var n=function(){},r="undefined",o=typeof window!==r&&typeof window.navigator!==r&&/Trident\/|MSIE /.test(window.navigator.userAgent),a=["trace","debug","info","warn","error"];function t(R,I){var $=R[I];if(typeof $.bind=="function")return $.bind(R);try{return Function.prototype.bind.call($,R)}catch{return function(){return Function.prototype.apply.apply($,[R,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function p(R){return R==="debug"&&(R="log"),typeof console===r?!1:R==="trace"&&o?s:console[R]!==void 0?t(console,R):console.log!==void 0?t(console,"log"):n}function _(R,I){for(var $=0;$<a.length;$++){var L=a[$];this[L]=$<R?n:this.methodFactory(L,R,I)}this.log=this.debug}function d(R,I,$){return function(){typeof console!==r&&(_.call(this,I,$),this[R].apply(this,arguments))}}function g(R,I,$){return p(R)||d.apply(this,arguments)}function T(R,I,$){var L=this,ae;I=I??"WARN";var N="loglevel";typeof R=="string"?N+=":"+R:typeof R=="symbol"&&(N=void 0);function F(D){var q=(a[D]||"silent").toUpperCase();if(!(typeof window===r||!N)){try{window.localStorage[N]=q;return}catch{}try{window.document.cookie=encodeURIComponent(N)+"="+q+";"}catch{}}}function Se(){var D;if(!(typeof window===r||!N)){try{D=window.localStorage[N]}catch{}if(typeof D===r)try{var q=window.document.cookie,j=q.indexOf(encodeURIComponent(N)+"=");j!==-1&&(D=/^([^;]+)/.exec(q.slice(j))[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=R,L.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},L.methodFactory=$||g,L.getLevel=function(){return ae},L.setLevel=function(D,q){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(ae=D,q!==!1&&F(D),_.call(L,D,R),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 $=y[I];return $||($=y[I]=new T(I,E.getLevel(),E.methodFactory)),$};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})})(m_);var At=m_.exports;const ds=()=>`${new Date().toISOString()} | metrics`,ps=(c,n,r)=>`${c} | ${n} | ${r}`;At.setDefaultLevel(At.levels.TRACE);const kT=c=>{At.info(ps(ds(),"log ",`set log level to ${c?"verbose":"info"}`)),At.setLevel(c?At.levels.TRACE:At.levels.INFO)},LT=c=>{const n=[...Object.keys(At.levels)];n.includes(c)?(At.info(ps(ds(),"log ",`update log level to ${c.toLowerCase()}`)),At.setLevel(c)):At.warn(ps(ds(),"log ","Incorrect log level please choose one of "),n)},Pe=(c,n,r)=>{r?At.debug(ps(ds(),c,n),r):At.debug(ps(ds(),c,n))},Ga=(c,n)=>{At.info(ps(ds(),c,n))},vn=(c,n)=>{At.info(ps(ds(),c,n))},mo=(c,n)=>{At.warn(ps(ds(),c,n))},lr=(c,n)=>{At.error(ps(ds(),c,n))};function $T(c){return Math.floor(Math.random()*c).toString()}function Ef(c,n){let r=n;return c.forEach(o=>{r=r.replace(o,"")}),r}function HT(c,n){let r="";for(let o=0;o<n;o+=1)r+=c[$T(c.length)];return r}function FT({length:c=20,useLetters:n=!0,useNumbers:r=!0,includeSymbols:o=[],excludeSymbols:a=[]}={}){let t="abcdefghijklmnopqrstuvwxyz",s="0123456789",p=[],_=[],d=[];return n&&(a.length&&(t=Ef(a,t)),_=t.split("")),r&&(a.length&&(s=Ef(a,s)),d=s.split("")),p=[..._,...d,...o],HT(p,c)}var VT=FT;const Bi=ot(VT),jT=()=>"WebRTCMetrics",qT=()=>"5.0.3",$e={INBOUND:"inbound",OUTBOUND:"outbound"},hs={IDLE:"idle",RUNNING:"running",MUTED:"muted"},$i={NEW:"new",CHECKING:"checking",CONNECTED:"connected",COMPLETED:"completed",DISCONNECTED:"disconnected",FAILED:"failed",CLOSED:"closed"},BT=()=>({...{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:[]}}),g_={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},T_={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},v_={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},E_={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},GT=c=>{const n={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(o=>{r.audio[o]={...c.audio[o]}}),Object.keys(c.video).forEach(o=>{r.video[o]={...c.video[o]}}),r}return{...n,audio:{},video:{},data:{...n.data},network:{...n.network},experimental:{...n.experimental}}},WT={refreshEvery:2e3,startAfter:0,stopAfter:-1,verbose:!1,pname:`p-${Bi()}`,cid:`c-${Bi()}`,uid:`u-${Bi()}`,record:!1,ticket:!0},Kt={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"},x={SUCCEEDED:"succeeded",AUDIO:"audio",VIDEO:"video"},Hi={ETHERNET:0,CELLULAR_5G:2,WIFI:3,CELLULAR_4G:5,CELLULAR:10},Wa={ETHERNET:"ethernet",CELLULAR_4G:"cellular",WIFI:"wifi"},ne={AUDIO:"audio",VIDEO:"video",NETWORK:"network",DATA:"data"},Ka="config ",KT=(c,n={},r)=>{const o={...r,...n};return n.pname||mo(Ka,`Argument [String] 'cfg.pname' for the peerConnection name or id is missing - use generated '${r.pname}'`),n.cid||mo(Ka,`Argument [String] 'cfg.cid' for the call name or id is missing - use generated '${r.cid}'`),n.uid||mo(Ka,`Argument [String] 'cfg.uid' for the user name or id is missing - use generated '${r.uid}'`),o.pc=c,o},YT=(c={})=>{const n={...WT,...c};return n.name=jT(),n.version=qT(),n},ll=(c,n,r,o=!1,a)=>{let t=c.map(s=>{if(!r)return s[n];if(!a)return s[n][r];const p=s[n][a];return p?p[r]:null});return t=t.filter(s=>o?Number.isFinite(s)&&s>0:Number.isFinite(s)),t.length===0?[]:t},$s=c=>c.reduce((n,r)=>n+r,0)/c.length,zT=()=>`probe-${Bi()}`,JT=()=>`coltr-${Bi()}`,Sf=c=>new Promise(n=>setTimeout(n,c)),hu=(c,n,r)=>{n?c.call(n,r):c(r)},Ke=(c,n,r,o)=>{const a=ll(c,n,r,!0,o);if(a.length===0)return null;const t=a.reduce((d,g)=>d+g,0)/a.length;return t===0?null:a.map(d=>Math.abs(t-d)).reduce((d,g)=>d+g,0)/a.length*100/t},Je=(c,n,r,o=!1,a)=>{const t=ll(c,n,r,o,a);return t.length===0?null:t.reduce((s,p)=>s+p,0)/t.length},dn=(c,n,r)=>ll(c,n,r).reduce((a,t)=>a+t,0),Ye=(c,n,r,o)=>{const a=ll(c,n,r,!0,o);return a.length===0?null:Math.min(...a)},ze=(c,n,r,o)=>{const a=ll(c,n,r,!1,o);return a.length===0?null:Math.max(...a)},pt=(c,n,r,o)=>{const a=c.slice().pop();if(!a)return null;if(!r)return a[n];if(!o)return a[n][r];const t=a[n][o];return t?t[r]:null},XT=c=>c.slice().pop(),ut=(c,n,r)=>{if(!n)return null;const o={};let a=n[x.AUDIO][c];a||(a=r===$e.INBOUND?{...g_}:{...T_}),o[x.AUDIO]=a;let t=n[x.VIDEO][c];return t||(t=r===$e.INBOUND?{...v_}:{...E_}),o[x.VIDEO]=t,o},Fi="exporter ",QT="2.0",yf=(c,n,r)=>{if(!c||c.length===0)return 0;const o=c[c.length-1];if(!o)return 0;const a=o[n][r];if(a){const t=a.total_rtt_ms_out,s=a.total_rtt_measure_out;return!s||!t?Je(c,n,"delta_rtt_ms_out",!1,r):Number(t/s)}return null},ZT=(c,n)=>{if(!c||c.length===0)return 0;const r=c[c.length-1];if(!r)return 0;const o=r[n].total_rtt_connectivity_ms,a=r[n].total_rtt_connectivity_measure;return!a||!o?Je(c,n,"delta_rtt_connectivity_ms"):Number(o/a)},ev=c=>pt(c,"network","local_candidate_type")!=="relay"?`direct/${pt(c,"network","local_candidate_protocol")}`:`turn/${pt(c,"network","local_candidate_relay_protocol")}`,tv=c=>{const n=pt(c,"network","remote_candidate_type"),r=pt(c,"network","remote_candidate_protocol");return n!=="relay"?`direct/${r}`:`turn/${r}`};class sv{constructor(n){this._start=null,this._end=null,this._cfg=n,this._referenceReport=null,this._reports=[],this._events=[]}start(){Ga(Fi,"start() - start exporter...");const n=new Date;return this._start=n.toJSON(),n}stop(){Ga(Fi,"stop() - stop exporter...");const n=new Date;return this._end=n.toJSON(),n}saveReferenceReport(n){this._referenceReport=n}getReferenceReport(){return this._referenceReport}addReport(n){this._cfg.ticket&&(Pe(Fi,`addReport() - add report to exporter at ${n.timestamp}`),this._reports.push(n))}addCustomEvent(n){this._events.push(n)}reset(){Ga(Fi,"resetReports() - reset reports"),this._reports=[],this._referenceReport=null,this._start=null,this._end=null}get ticket(){Pe(Fi,"ticket() - generate ticket");const n=pt(this._reports,"audio","total_packets_lost_in"),r=pt(this._reports,"audio","total_packets_in"),o=pt(this._reports,"video","total_packets_lost_in"),a=pt(this._reports,"video","total_packets_in"),t={},s=XT(this._reports);return s&&(Object.keys(s[x.AUDIO]).forEach(p=>{const _=s[x.AUDIO][p];if(t[_.ssrc]={type:x.AUDIO,direction:_.direction},_.direction===$e.INBOUND){const d={avg:Je(this._reports,x.AUDIO,"delta_jitter_ms_in",!1,p),min:Ye(this._reports,x.AUDIO,"delta_jitter_ms_in",p),max:ze(this._reports,x.AUDIO,"delta_jitter_ms_in",p),volatility:Ke(this._reports,x.AUDIO,"delta_jitter_ms_in",p),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Je(this._reports,x.AUDIO,"delta_kbs_in",!1,p),min:Ye(this._reports,x.AUDIO,"delta_kbs_in",p),max:ze(this._reports,x.AUDIO,"delta_kbs_in",p),volatility:Ke(this._reports,x.AUDIO,"delta_kbs_in",p),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Je(this._reports,x.AUDIO,"delta_KBytes_in",!1,p),min:Ye(this._reports,x.AUDIO,"delta_KBytes_in",p),max:ze(this._reports,x.AUDIO,"delta_KBytes_in",p),volatility:Ke(this._reports,x.AUDIO,"delta_KBytes_in",p),_unit:{avg:"KB",min:"KB",max:"KB",volatility:"percent"}},E={emodel:{avg:Je(this._reports,x.AUDIO,"mos_emodel_in",!1,p),min:Ye(this._reports,x.AUDIO,"mos_emodel_in",p),max:ze(this._reports,x.AUDIO,"mos_emodel_in",p),volatility:Ke(this._reports,x.AUDIO,"mos_emodel_in",p)},effective:{avg:Je(this._reports,x.AUDIO,"mos_in",!1,p),min:Ye(this._reports,x.AUDIO,"mos_in",p),max:ze(this._reports,x.AUDIO,"mos_in",p),volatility:Ke(this._reports,x.AUDIO,"mos_in",p)},_unit:{avg:"number (1-5)",min:"number (1-5)",max:"number (1-5)",volatility:"percent"}},y=pt(this._reports,x.AUDIO,"total_packets_lost_in",p),A=pt(this._reports,x.AUDIO,"total_packets_in",p),R={lost:y,avg:Math.round((y/(y+A)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}};t[p].jitter=d,t[p].mos=E,t[p].traffic=T,t[p].bitrate=g,t[p].loss=R}else{const d={avg:Je(this._reports,x.AUDIO,"delta_jitter_ms_out",!1,p),min:Ye(this._reports,x.AUDIO,"delta_jitter_ms_out",p),max:ze(this._reports,x.AUDIO,"delta_jitter_ms_out",p),volatility:Ke(this._reports,x.AUDIO,"delta_jitter_ms_out",p),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Je(this._reports,x.AUDIO,"delta_kbs_out",!1,p),min:Ye(this._reports,x.AUDIO,"delta_kbs_out",p),max:ze(this._reports,x.AUDIO,"delta_kbs_out",p),volatility:Ke(this._reports,x.AUDIO,"delta_kbs_out",p),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Je(this._reports,x.AUDIO,"delta_KBytes_out",!1,p),min:Ye(this._reports,x.AUDIO,"delta_KBytes_out",p),max:ze(this._reports,x.AUDIO,"delta_KBytes_out",p),volatility:Ke(this._reports,x.AUDIO,"delta_KBytes_out",p),_unit:{avg:"KB",min:"KB",max:"KB",bitrate:"kbs",volatility:"percent"}},E={avg:yf(this._reports,x.AUDIO,p),min:Ye(this._reports,x.AUDIO,"delta_rtt_ms_out",p),max:ze(this._reports,x.AUDIO,"delta_rtt_ms_out",p),volatility:Ke(this._reports,x.AUDIO,"delta_rtt_ms_out",p),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},y=pt(this._reports,x.AUDIO,"total_packets_lost_out",p),A=pt(this._reports,x.AUDIO,"total_packets_out",p),R={lost:y,avg:Math.round((y/(y+A)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}},I={emodel:{avg:Je(this._reports,x.AUDIO,"mos_emodel_out",!1,p),min:Ye(this._reports,x.AUDIO,"mos_emodel_out",p),max:ze(this._reports,x.AUDIO,"mos_emodel_out",p),volatility:Ke(this._reports,x.AUDIO,"mos_emodel_out",p)},effective:{avg:Je(this._reports,x.AUDIO,"mos_out",!1,p),min:Ye(this._reports,x.AUDIO,"mos_out",p),max:ze(this._reports,x.AUDIO,"mos_out",p),volatility:Ke(this._reports,x.AUDIO,"mos_out",p)},_unit:{avg:"number (1-5)",min:"number (1-5)",max:"number (1-5)",volatility:"percent"}};t[p].jitter=d,t[p].rtt=E,t[p].traffic=T,t[p].bitrate=g,t[p].loss=R,t[p].mos=I}}),Object.keys(s[x.VIDEO]).forEach(p=>{const _=s[x.VIDEO][p];if(t[p]={type:x.VIDEO,direction:_.direction},_.direction===$e.INBOUND){const d={avg:Je(this._reports,x.VIDEO,"delta_jitter_ms_in",!1,p),min:Ye(this._reports,x.VIDEO,"delta_jitter_ms_in",p),max:ze(this._reports,x.VIDEO,"delta_jitter_ms_in",p),volatility:Ke(this._reports,x.VIDEO,"delta_jitter_ms_in",p),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Je(this._reports,x.VIDEO,"delta_kbs_in",!1,p),min:Ye(this._reports,x.VIDEO,"delta_kbs_in",p),max:ze(this._reports,x.VIDEO,"delta_kbs_in",p),volatility:Ke(this._reports,x.VIDEO,"delta_kbs_in",p),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Je(this._reports,x.VIDEO,"delta_KBytes_in",!1,p),min:Ye(this._reports,x.VIDEO,"delta_KBytes_in",p),max:ze(this._reports,x.VIDEO,"delta_KBytes_in",p),volatility:Ke(this._reports,x.VIDEO,"delta_KBytes_in",p),_unit:{avg:"KB",min:"KB",max:"KB",volatility:"percent"}},E=pt(this._reports,x.VIDEO,"total_packets_lost_in",p),y=pt(this._reports,x.VIDEO,"total_packets_in",p),A={lost:E,avg:Math.round((E/(E+y)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}};t[p].jitter=d,t[p].traffic=T,t[p].bitrate=g,t[p].loss=A}else{const d={avg:Je(this._reports,x.VIDEO,"delta_jitter_ms_out",!1,p),min:Ye(this._reports,x.VIDEO,"delta_jitter_ms_out",p),max:ze(this._reports,x.VIDEO,"delta_jitter_ms_out",p),volatility:Ke(this._reports,x.VIDEO,"delta_jitter_ms_out",p),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Je(this._reports,x.VIDEO,"delta_kbs_out",!1,p),min:Ye(this._reports,x.VIDEO,"delta_kbs_out",p),max:ze(this._reports,x.VIDEO,"delta_kbs_out",p),volatility:Ke(this._reports,x.VIDEO,"delta_kbs_out",p),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Je(this._reports,x.VIDEO,"delta_KBytes_out",!1,p),min:Ye(this._reports,x.VIDEO,"delta_KBytes_out",p),max:ze(this._reports,x.VIDEO,"delta_KBytes_out",p),volatility:Ke(this._reports,x.VIDEO,"delta_KBytes_out",p),_unit:{avg:"KB",min:"KB",max:"KB",volatility:"percent"}},E={avg:yf(this._reports,x.VIDEO,p),min:Ye(this._reports,x.VIDEO,"delta_rtt_ms_out",p),max:ze(this._reports,x.VIDEO,"delta_rtt_ms_out",p),volatility:Ke(this._reports,x.VIDEO,"delta_rtt_ms_out",p),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},y=pt(this._reports,x.VIDEO,"total_packets_lost_out",p),A=pt(this._reports,x.VIDEO,"total_packets_out",p),R={lost:y,avg:Math.round((y/(y+A)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}};t[p].jitter=d,t[p].rtt=E,t[p].traffic=T,t[p].bitrate=g,t[p].loss=R}})),{version:QT,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:ZT(this._reports,"data"),min:Ye(this._reports,"data","delta_rtt_connectivity_ms"),max:ze(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((n/(n+r)*100||0)*100)/100}},video:{in:{avg:Math.round((o/(o+a)*100||0)*100)/100}},unit:{avg:"percent"}},bitrate:{in:{avg:Je(this._reports,"data","delta_kbs_in"),min:Ye(this._reports,"data","delta_kbs_in"),max:ze(this._reports,"data","delta_kbs_in"),volatility:Ke(this._reports,"data","delta_kbs_in")},out:{avg:Je(this._reports,"data","delta_kbs_out"),min:Ye(this._reports,"data","delta_kbs_out"),max:ze(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:Je(this._reports,"data","delta_KBytes_in"),min:Ye(this._reports,"data","delta_KBytes_in"),max:ze(this._reports,"data","delta_KBytes_in"),volatility:Ke(this._reports,"data","delta_KBytes_in")},out:{avg:Je(this._reports,"data","delta_KBytes_out"),min:Ye(this._reports,"data","delta_KBytes_out"),max:ze(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:ev(this._reports),remoteConnection:tv(this._reports)}}}}updateConfig(n){this._cfg=n}getLastReport(){return this._reports.slice().pop()||null}getBeforeLastReport(){const n=this._reports.slice();return n.pop(),n.pop()||null}getReportsNumber(){return this._reports.length}}const ks="extractor ",Af=(c,n,r,o)=>{let a=!1;const t=o[n].total_rtt_ms_out,s=o[n].total_rtt_measure_out,p=r?r[n].total_rtt_ms_out:0,_=r?r[n].total_rtt_measure_out:0,d={rtt:null,totalRTT:t,totalRTTMeasurements:s};if(c[V.TIMESTAMP]===o[n].timestamp_out||!Object.prototype.hasOwnProperty.call(c,V.ROUND_TRIP_TIME)||Object.prototype.hasOwnProperty.call(c,V.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS)&&(a=!0,Number(c[V.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS])===0||Number(c[V.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS])-_===s))return d;const g=1e3*Number(c[V.ROUND_TRIP_TIME]);let T=t+g,E=s+1;return a&&(T=1e3*Number(c[V.TOTAL_ROUND_TRIP_TIME])-p,E=Number(c[V.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS])-_),{rtt:g,totalRTT:T,totalRTTMeasurements:E}},nv=(c,n,r,o)=>{if(!Object.prototype.hasOwnProperty.call(c,V.CURRENT_ROUND_TRIP_TIME))return{rtt:null,totalRTT:o[n].total_rtt_connectivity_ms,totalRTTMeasurements:o[n].total_rtt_connectivity_measure};const a=1e3*Number(c[V.CURRENT_ROUND_TRIP_TIME]);let t=o[n].total_rtt_connectivity_ms+a,s=o[n].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])-(r?r[n].total_rtt_connectivity_ms:0)),Object.prototype.hasOwnProperty.call(c,V.RESPONSES_RECEIVED)&&(s=Number(c[V.RESPONSES_RECEIVED])-(r?r[n].total_rtt_connectivity_measure:0)),{rtt:a,totalRTT:t,totalRTTMeasurements:s}},eo=(c,n,r)=>c[V.TIMESTAMP]===r[n].timestamp_out||!Object.prototype.hasOwnProperty.call(c,V.JITTER)?null:1e3*(Number(c[V.JITTER])||0),rv=(c,n)=>{if(!Object.prototype.hasOwnProperty.call(c,V.FRAMES_DECODED)||!Object.prototype.hasOwnProperty.call(c,V.TOTAL_DECODE_TIME))return{delta_ms_decode_frame:n[x.VIDEO].delta_ms_decode_frame_in,frames_decoded:n[x.VIDEO].total_frames_decoded_in,total_decode_time:n[x.VIDEO].total_time_decoded_in};const r=c[V.FRAMES_DECODED],o=c[V.TOTAL_DECODE_TIME],a=o-n[x.VIDEO].total_time_decoded_in,t=r-n[x.VIDEO].total_frames_decoded_in;return{delta_ms_decode_frame:t>0?a*1e3/t:0,frames_decoded:r,total_decode_time:o}},iv=(c,n)=>{if(!Object.prototype.hasOwnProperty.call(c,V.FRAMES_ENCODED)||!Object.prototype.hasOwnProperty.call(c,V.TOTAL_ENCODE_TIME))return{delta_ms_encode_frame:n[x.VIDEO].delta_ms_encode_frame_out,frames_encoded:n[x.VIDEO].total_frames_encoded_out,total_encode_time:n[x.VIDEO].total_time_encoded_out};const r=c[V.FRAMES_ENCODED],o=c[V.TOTAL_ENCODE_TIME],a=o-n[x.VIDEO].total_time_encoded_out,t=r-n[x.VIDEO].total_frames_encoded_out;return{delta_ms_encode_frame:t>0&&a?a*1e3/t:0,frames_encoded:r,total_encode_time:o}},Cf=(c,n,r,o)=>{if(!Object.prototype.hasOwnProperty.call(c,V.PACKETS_SENT)||!Object.prototype.hasOwnProperty.call(c,V.BYTES_SENT))return{packetsSent:r[n].total_packets_out,packetsLost:r[n].total_packets_lost_out,bytesSent:r[n].total_KBytes_out};const a=Number(c[V.PACKETS_SENT])||0-(o?o[n].total_packets_out:0),t=a-r[n].total_packets_out,s=Number(c[V.BYTES_SENT])/1024-(o?o[n].total_KBytes_out:0),p=s-r[n].total_KBytes_out,_=c[V.TIMESTAMP]||Date.now(),d=o?o.timestamp:null;let g=r.timestamp;!g&&d&&(g=d);const T=g?_-g:0,E=T>0?p*.008*1024/T*1e3:0;return{packetsSent:a,deltaPacketsSent:t,KBytesSent:s,deltaKBytesSent:p,kbsSent:E}},Rf=(c,n,r,o)=>{let a=r[n].total_packets_lost_out,t=0,s=0;return Object.prototype.hasOwnProperty.call(c,V.PACKETS_LOST)&&(a=Number(c[V.PACKETS_LOST])||0-(o?o[n].total_packets_lost_out:0),t=a-r[n].total_packets_lost_out),Object.prototype.hasOwnProperty.call(c,V.FRACTION_LOST)&&(s=Number(100*c[V.FRACTION_LOST])),{packetsLost:a,deltaPacketsLost:t,fractionLost:s}},If=(c,n,r,o)=>{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:r[n].percent_packets_lost_in,packetsReceived:r[n].total_packets_in,packetsLost:r[n].total_packets_lost_in,bytesReceived:r[n].total_KBytes_in};const a=Number(c[V.PACKETS_RECEIVED])||0-(o?o[n].total_packets_in:0),t=Number(c[V.PACKETS_LOST])||0-(o?o[n].total_packets_lost_in:0),s=t-r[n].total_packets_lost_in,p=a-r[n].total_packets_in,_=a!==r[n].total_packets_in?s*100/(s+p):0,d=Number(c[V.BYTES_RECEIVED])/1024-(o?o[n].total_KBytes_in:0),g=d-r[n].total_KBytes_in,T=c[V.TIMESTAMP]||Date.now(),E=o?o.timestamp:null;let y=r.timestamp;!y&&E&&(y=E);const A=y?T-y:0,R=A>0?g*.008*1024/A*1e3:0;return{percentPacketsLost:_,packetsReceived:a,deltaPacketsReceived:p,packetsLost:t,deltaPacketsLost:s,KBytesReceived:d,deltaKBytesReceived:g,kbsReceived:R}},lv=c=>c[V.CANDIDATE_TYPE]!=="relay"?"":c[V.RELAY_PROTOCOL]||"",ov=c=>{if(!Object.prototype.hasOwnProperty.call(c,V.NETWORK_TYPE))return Hi.WIFI;switch(c[V.NETWORK_TYPE]){case Wa.ETHERNET:return Hi.ETHERNET;case Wa.CELLULAR_4G:return Hi.CELLULAR_4G;case Wa.WIFI:return Hi.WIFI;default:return Hi.CELLULAR}},bf=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]},av=c=>{const n=Object.prototype.hasOwnProperty.call(c,V.QUALITY_LIMITATION_REASON)?c[V.QUALITY_LIMITATION_REASON]:null,r=Object.prototype.hasOwnProperty.call(c,V.QUALITY_LIMITATION_RESOLUTION_CHANGES)?c[V.QUALITY_LIMITATION_RESOLUTION_CHANGES]:null,o=Object.prototype.hasOwnProperty.call(c,V.QUALITY_LIMITATION_DURATIONS)?c[V.QUALITY_LIMITATION_DURATIONS]:null;return o&&Object.keys(o).forEach(a=>{o[a]>1e3&&(o[a]=Number(o[a]/1e3))}),{reason:n,durations:o,resolutionChanges:r}},uv=(c,n,r)=>{if(!Object.prototype.hasOwnProperty.call(c,V.PLI)||!Object.prototype.hasOwnProperty.call(c,V.NACK))return{pliCount:n.total_pli_sent_in,nackCount:n.total_nack_sent_in,deltaPliCount:0,deltaNackCount:0};const o=(c[V.PLI]||0)-(r?r[x.VIDEO].total_pli_sent_in:0),a=(c[V.NACK]||0)-(r?r[x.VIDEO].total_nack_sent_in:0);return{pliCount:o,nackCount:a,deltaPliCount:o-n[x.VIDEO].total_pli_sent_in,deltaNackCount:a-n[x.VIDEO].total_nack_sent_in}},cv=(c,n,r)=>{if(!Object.prototype.hasOwnProperty.call(c,V.PLI)||!Object.prototype.hasOwnProperty.call(c,V.NACK))return{pliCount:n.total_pli_received_out,nackCount:n.total_nack_received_out,deltaPliCount:0,deltaNackCount:0};const o=(c[V.PLI]||0)-(r?r[x.VIDEO].total_pli_received_out:0),a=(c[V.NACK]||0)-(r?r[x.VIDEO].total_nack_received_out:0);return{pliCount:o,nackCount:a,deltaPliCount:o-n[x.VIDEO].total_pli_received_out,deltaNackCount:a-n[x.VIDEO].total_nack_received_out}},fv=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}),_v=c=>({clock_rate:c[V.CLOCK_RATE]||null,mime_type:c[V.MIME_TYPE]||null}),hv=(c,n,r)=>{const o=(c[V.BYTES_RECEIVED]||0)/1024-(r?r.data.total_KBytes_in:0),a=(c[V.BYTES_SENT]||0)/1024-(r?r.data.total_KBytes_out:0),t=c[V.TIMESTAMP]||Date.now(),s=o-n.data.total_KBytes_in,p=a-n.data.total_KBytes_out,_=r?r.timestamp:null;let d=n.timestamp;!d&&_&&(d=_);const g=d?t-d:0,T=g>0?s*.008*1024/g*1e3:0,E=g>0?p*.008*1024/g*1e3:0;return{total_KBytes_received:o,total_KBytes_sent:a,delta_KBytes_received:s,delta_KBytes_sent:p,kbs_speed_received:T,kbs_speed_sent:E}},dv=c=>{const n=c[V.AVAILABLE_INCOMING_BITRATE]/1024||0,r=c[V.AVAILABLE_OUTGOING_BITRATE]/1024||0;return{kbs_incoming_bandwidth:n,kbs_outgoing_bandwidth:r}},pv=(c,n,r,o)=>{if(!c)return[];switch(c[V.TYPE]){case Kt.CANDIDATE_PAIR:let a=!1;if(c[V.NOMINATED]&&c[V.STATE]===x.SUCCEEDED&&(a=!0,Pe(ks,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c),V.SELECTED in c&&!c[V.SELECTED]&&(a=!1)),a){const s=c[V.LOCAL_CANDIDATE_ID],p=c[V.REMOTE_CANDIDATE_ID],_=hv(c,n,o),d=dv(c),g=nv(c,"data",o,n);return[{type:ne.NETWORK,value:{local_candidate_id:s}},{type:ne.NETWORK,value:{remote_candidate_id:p}},{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 Kt.LOCAL_CANDIDATE:if(c[V.ID]===n.network.local_candidate_id)return[{type:ne.NETWORK,value:{infrastructure:ov(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:lv(c)}}];break;case Kt.REMOTE_CANDIDATE:if(c[V.ID]===n.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 Kt.INBOUND_RTP:{Pe(ks,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);const s=c[V.SSRC],p=ut(s,n,$e.INBOUND);p&&(p.timestamp=n.timestamp);const _=ut(s,o,$e.INBOUND);if(_&&(_.timestamp=o.timestamp),c[V.MEDIA_TYPE]===x.AUDIO){const d=If(c,x.AUDIO,p,_),g=eo(c,x.AUDIO,p),T=c[V.CODEC_ID]||"";return[{ssrc:s,type:ne.AUDIO,value:{codec_id_in:T}},{ssrc:s,type:ne.AUDIO,value:{total_packets_in:d.packetsReceived}},{ssrc:s,type:ne.AUDIO,value:{delta_packets_in:d.deltaPacketsReceived}},{ssrc:s,type:ne.AUDIO,value:{total_packets_lost_in:d.packetsLost}},{ssrc:s,type:ne.AUDIO,value:{delta_packets_lost_in:d.deltaPacketsLost}},{ssrc:s,type:ne.AUDIO,value:{percent_packets_lost_in:d.percentPacketsLost}},{ssrc:s,type:ne.AUDIO,value:{total_KBytes_in:d.KBytesReceived}},{ssrc:s,type:ne.AUDIO,value:{delta_KBytes_in:d.deltaKBytesReceived}},{ssrc:s,type:ne.AUDIO,value:{delta_kbs_in:d.kbsReceived}},{ssrc:s,type:ne.AUDIO,value:{delta_jitter_ms_in:g}}]}if(c[V.MEDIA_TYPE]===x.VIDEO){const d=rv(c,p),g=If(c,x.VIDEO,p,_),T=eo(c,x.VIDEO,p),E=c[V.DECODER_IMPLEMENTATION]||null,y=c[V.CODEC_ID]||null,A=bf(c),R=uv(c,p,_);return[{ssrc:s,type:ne.VIDEO,value:{codec_id_in:y}},{ssrc:s,type:ne.VIDEO,value:{total_packets_in:g.packetsReceived}},{ssrc:s,type:ne.VIDEO,value:{delta_packets_in:g.deltaPacketsReceived}},{ssrc:s,type:ne.VIDEO,value:{total_packets_lost_in:g.packetsLost}},{ssrc:s,type:ne.VIDEO,value:{delta_packets_lost_in:g.deltaPacketsLost}},{ssrc:s,type:ne.VIDEO,value:{percent_packets_lost_in:g.percentPacketsLost}},{ssrc:s,type:ne.VIDEO,value:{total_KBytes_in:g.KBytesReceived}},{ssrc:s,type:ne.VIDEO,value:{delta_KBytes_in:g.deltaKBytesReceived}},{ssrc:s,type:ne.VIDEO,value:{delta_kbs_in:g.kbsReceived}},{ssrc:s,type:ne.VIDEO,value:{delta_jitter_ms_in:T}},{ssrc:s,type:ne.VIDEO,value:{decoder_in:E}},{ssrc:s,type:ne.VIDEO,value:{delta_ms_decode_frame_in:d.delta_ms_decode_frame}},{ssrc:s,type:ne.VIDEO,value:{total_frames_decoded_in:d.frames_decoded}},{ssrc:s,type:ne.VIDEO,value:{total_time_decoded_in:d.total_decode_time}},{ssrc:s,type:ne.VIDEO,value:{total_nack_sent_in:R.nackCount}},{ssrc:s,type:ne.VIDEO,value:{delta_nack_sent_in:R.deltaNackCount}},{ssrc:s,type:ne.VIDEO,value:{total_pli_sent_in:R.pliCount}},{ssrc:s,type:ne.VIDEO,value:{delta_pli_sent_in:R.deltaPliCount}},{ssrc:s,type:ne.VIDEO,value:{size_in:A}}]}break}case Kt.OUTBOUND_RTP:{Pe(ks,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);const s=c[V.SSRC],p=ut(s,n,$e.OUTBOUND);p&&(p.timestamp=n.timestamp);const _=ut(s,o,$e.OUTBOUND);if(_&&(_.timestamp=o.timestamp),c[V.MEDIA_TYPE]===x.AUDIO){const d=c[V.CODEC_ID]||null,g=Cf(c,x.AUDIO,p,_);return[{ssrc:s,type:ne.AUDIO,value:{codec_id_out:d}},{ssrc:s,type:ne.AUDIO,value:{total_packets_out:g.packetsSent}},{ssrc:s,type:ne.AUDIO,value:{delta_packets_out:g.deltaPacketsSent}},{ssrc:s,type:ne.AUDIO,value:{total_KBytes_out:g.KBytesSent}},{ssrc:s,type:ne.AUDIO,value:{delta_KBytes_out:g.deltaKBytesSent}},{ssrc:s,type:ne.AUDIO,value:{delta_kbs_out:g.kbsSent}}]}if(c[V.MEDIA_TYPE]===x.VIDEO){const d=c[V.ENCODER_IMPLEMENTATION]||null,g=c[V.CODEC_ID]||null,T=iv(c,p),E=bf(c),y=av(c),A=cv(c,p,_),R=Cf(c,x.VIDEO,p,_);return[{ssrc:s,type:ne.VIDEO,value:{codec_id_out:g}},{ssrc:s,type:ne.VIDEO,value:{total_packets_out:R.packetsSent}},{ssrc:s,type:ne.VIDEO,value:{delta_packets_out:R.deltaPacketsSent}},{ssrc:s,type:ne.VIDEO,value:{total_KBytes_out:R.KBytesSent}},{ssrc:s,type:ne.VIDEO,value:{delta_KBytes_out:R.deltaKBytesSent}},{ssrc:s,type:ne.VIDEO,value:{delta_kbs_out:R.kbsSent}},{ssrc:s,type:ne.VIDEO,value:{encoder_out:d}},{ssrc:s,type:ne.VIDEO,value:{delta_ms_encode_frame_out:T.delta_ms_encode_frame}},{ssrc:s,type:ne.VIDEO,value:{total_frames_encoded_out:T.frames_encoded}},{ssrc:s,type:ne.VIDEO,value:{total_time_encoded_out:T.total_encode_time}},{ssrc:s,type:ne.VIDEO,value:{total_nack_received_out:A.nackCount}},{ssrc:s,type:ne.VIDEO,value:{delta_nack_received_out:A.deltaNackCount}},{ssrc:s,type:ne.VIDEO,value:{total_pli_received_out:A.pliCount}},{ssrc:s,type:ne.VIDEO,value:{delta_pli_received_out:A.deltaPliCount}},{ssrc:s,type:ne.VIDEO,value:{size_out:E}},{ssrc:s,type:ne.VIDEO,value:{limitation_out:y}}]}break}case Kt.MEDIA_SOURCE:{Pe(ks,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);break}case Kt.TRACK:{Pe(ks,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);break}case Kt.CODEC:const t=[];return Object.keys(n[x.AUDIO]).forEach(s=>{const p=n[x.AUDIO][s];if(p.codec_id_in===c[V.ID]||p.codec_id_out===c[V.ID]){Pe(ks,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);const _=fv(c);c[V.ID]===p.codec_id_in?t.push({ssrc:p.ssrc,type:ne.AUDIO,value:{codec_in:_}}):t.push({ssrc:p.ssrc,type:ne.AUDIO,value:{codec_out:_}})}}),Object.keys(n[x.VIDEO]).forEach(s=>{const p=n[x.VIDEO][s];if(p.codec_id_in===c[V.ID]||p.codec_id_out===c[V.ID]){Pe(ks,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);const _=_v(c);c[V.ID]===p.codec_id_in?t.push({ssrc:p.ssrc,type:ne.VIDEO,value:{codec_in:_}}):t.push({ssrc:p.ssrc,type:ne.VIDEO,value:{codec_out:_}})}}),t;case Kt.REMOTE_INBOUND_RTP:{Pe(ks,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);const s=c[V.SSRC],p=ut(s,n,$e.OUTBOUND),_=ut(s,o,$e.OUTBOUND);if(c[V.KIND]===x.AUDIO){const d=Af(c,x.AUDIO,_,p),g=eo(c,x.AUDIO,p),T=Rf(c,x.AUDIO,p,_);return[{ssrc:s,type:ne.AUDIO,value:{delta_rtt_ms_out:d.rtt}},{ssrc:s,type:ne.AUDIO,value:{total_rtt_ms_out:d.totalRTT}},{ssrc:s,type:ne.AUDIO,value:{total_rtt_measure_out:d.totalRTTMeasurements}},{ssrc:s,type:ne.AUDIO,value:{delta_jitter_ms_out:g}},{ssrc:s,type:ne.AUDIO,value:{timestamp_out:c[V.TIMESTAMP]}},{ssrc:s,type:ne.AUDIO,value:{total_packets_lost_out:T.packetsLost}},{ssrc:s,type:ne.AUDIO,value:{delta_packets_lost_out:T.deltaPacketsLost}},{ssrc:s,type:ne.AUDIO,value:{percent_packets_lost_out:T.fractionLost}}]}if(c[V.KIND]===x.VIDEO){const d=Af(c,x.VIDEO,_,p),g=eo(c,x.VIDEO,p),T=Rf(c,x.VIDEO,p,_);return[{ssrc:s,type:ne.VIDEO,value:{delta_rtt_ms_out:d.rtt}},{ssrc:s,type:ne.VIDEO,value:{total_rtt_ms_out:d.totalRTT}},{ssrc:s,type:ne.VIDEO,value:{total_rtt_measure_out:d.totalRTTMeasurements}},{ssrc:s,type:ne.VIDEO,value:{delta_jitter_ms_out:g}},{ssrc:s,type:ne.VIDEO,value:{timestamp_out:c[V.TIMESTAMP]}},{ssrc:s,type:ne.VIDEO,value:{total_packets_lost_out:T.packetsLost}},{ssrc:s,type:ne.VIDEO,value:{delta_packets_lost_out:T.deltaPacketsLost}},{ssrc:s,type:ne.VIDEO,value:{percent_packets_lost_out:T.fractionLost}}]}break}}return[]},xo=c=>c<0?1:c>100?4.5:1+.035*c+7/1e6*c*(c-60)*(100-c),mv=(c,n=x.AUDIO,r,o,a)=>{const t=ut(a,c,$e.INBOUND),s=ut(a,r,$e.INBOUND),p=ut(a,o,$e.INBOUND),_=[],d=[],g=t[n].percent_packets_lost_in,T=t[n].delta_jitter_ms_in,E=s&&s[n].delta_jitter_ms_in||null,y=p&&p[n].delta_jitter_ms_in||null,A=c.data.delta_rtt_connectivity_ms,R=r&&r.data.delta_rtt_connectivity_ms||null,I=o&&o.data.delta_rtt_connectivity_ms||null;A&&_.push(A),R&&_.push(R),I&&_.push(I),T&&d.push(T),r&&E&&d.push(E),o&&y&&d.push(y);const $=_.length>0?$s(_):100,L=d.length>0?$s(d):10,ae=93.2-g,N=.18*ae*ae-27.9*ae+1126.62,F=($+L)/2,Se=F-177.3<0?0:1,ve=.024*F+.11*(F-177.3)*Se,M=N-ve;return xo(M)},gv=(c,n=x.AUDIO,r,o,a)=>{const t=ut(a,c,$e.OUTBOUND),s=ut(a,r,$e.OUTBOUND),p=ut(a,o,$e.OUTBOUND),_=[],d=[],g=t[n].percent_packets_lost_out,T=t[n].delta_rtt_ms_out,E=s&&s[n].delta_rtt_ms_out||null,y=p&&p[n].delta_rtt_ms_out||null,A=t[n].delta_jitter_ms_out,R=s&&s[n].delta_jitter_ms_out||null,I=p&&p[n].delta_jitter_ms_out||null,$=c.data.delta_rtt_connectivity_ms,L=r&&r.data.delta_rtt_connectivity_ms||null,ae=o&&o.data.delta_rtt_connectivity_ms||null;T?_.push(T):$&&_.push($),E?_.push(E):L&&_.push(L),y?_.push(y):ae&&_.push(ae),A&&d.push(A),r&&R&&d.push(R),o&&I&&d.push(I);const N=_.length>0?$s(_):100,F=d.length>0?$s(d):10,Se=93.2-g,ve=.18*Se*Se-27.9*Se+1126.62,M=(N+F)/2,D=M-177.3<0?0:1,q=.024*M+.11*(M-177.3)*D,j=ve-q;return xo(j)},Tv=(c,n=x.AUDIO,r,o,a)=>{const t=ut(a,c,$e.INBOUND),s=ut(a,r,$e.INBOUND),p=ut(a,o,$e.INBOUND),_=[],d=[],g=t[n].percent_packets_lost_in/100,T=t[n].delta_jitter_ms_in,E=s&&s[n].delta_jitter_ms_in||null,y=p&&p[n].delta_jitter_ms_in||null,A=c.data.delta_rtt_connectivity_ms,R=r&&r.data.delta_rtt_connectivity_ms||null,I=o&&o.data.delta_rtt_connectivity_ms||null;A&&_.push(A),R&&_.push(R),I&&_.push(I),T&&d.push(T),s&&E&&d.push(E),p&&y&&d.push(y);const $=_.length>0?$s(_):100,L=d.length>0?$s(d):10,ae=0,N=19.8,F=29.7,Se=30,ve=($+L)/2+Se,M=ve-177.3<0?0:1,D=.024*ve+.11*(ve-177.3)*M,j=93.2-(ae+N*Math.log(1+F*g)+D);return xo(j)},vv=(c,n=x.AUDIO,r,o,a)=>{const t=ut(a,c,$e.OUTBOUND),s=ut(a,r,$e.OUTBOUND),p=ut(a,o,$e.OUTBOUND),_=[],d=[],g=t[n].percent_packets_lost_out/100,T=t[n].delta_rtt_ms_out,E=s&&s[n].delta_rtt_ms_out||null,y=p&&p[n].delta_rtt_ms_out||null,A=t[n].delta_jitter_ms_out,R=s&&s[n].delta_jitter_ms_out||null,I=p&&p[n].delta_jitter_ms_out||null,$=c.data.delta_rtt_connectivity_ms,L=r&&r.data.delta_rtt_connectivity_ms||null,ae=o&&o.data.delta_rtt_connectivity_ms||null;T?_.push(T):$&&_.push($),E?_.push(E):L&&_.push(L),y?_.push(y):ae&&_.push(ae),A&&d.push(A),s&&R&&d.push(R),p&&I&&d.push(I);const N=_.length>0?$s(_):100,F=d.length>0?$s(d):10,Se=0,ve=19.8,M=29.7,D=30,q=(N+F)/2+D,j=q-177.3<0?0:1,z=.024*q+.11*(q-177.3)*j,J=93.2-(Se+ve*Math.log(1+M*g)+z);return xo(J)};class Ev{constructor(n,r){this._callbacks={onreport:null,onticket:null},this._id=JT(),this._moduleName=this._id,this._probeId=r,this._config=n,this._exporter=new sv(n),this._state=hs.IDLE,this.registerToPCEvents(),vn(this._moduleName,`new collector created for probe ${this._probeId}`)}analyze(n,r,o,a){const t=(_,d)=>_===x.AUDIO?d===Kt.INBOUND_RTP?{...g_}:{...T_}:d===Kt.INBOUND_RTP?{...v_}:{...E_},s=GT(r);s.pname=this._config.pname,s.call_id=this._config.cid,s.user_id=this._config.uid,s.count=r?r.count+1:1;let p=null;return n.forEach(_=>{!p&&_.timestamp&&(p=_.timestamp),pv(_,s,s.pname,a).forEach(g=>{if(g.value&&g.type)if(g.ssrc){let T=s[g.type][g.ssrc];T||(T=t(g.type,_.type),T.ssrc=g.ssrc,s[g.type][g.ssrc]=T),Object.keys(g.value).forEach(E=>{T[E]=g.value[E]})}else Object.keys(g.value).forEach(T=>{s[g.type][T]=g.value[T]})})}),s.timestamp=p,Object.keys(s[x.AUDIO]).forEach(_=>{const d=s[x.AUDIO][_];d.direction===$e.INBOUND?(d.mos_emodel_in=mv(s,x.AUDIO,r,o,d.ssrc),d.mos_in=Tv(s,x.AUDIO,r,o,d.ssrc)):(d.mos_emodel_out=gv(s,x.AUDIO,r,o,d.ssrc),d.mos_out=vv(s,x.AUDIO,r,o,d.ssrc))}),s}async takeReferenceStats(){return new Promise((n,r)=>{const o=Date.now();setTimeout(async()=>{try{const a=Date.now()-o,t=Date.now(),s=await this._config.pc.getStats(),p=this.analyze(s,null,null,null),_=Date.now();p.experimental.time_to_measure_ms=_-t,p.experimental.time_to_wait_ms=a,this._exporter.saveReferenceReport(p),Pe(this._moduleName,`got reference report for probe ${this._probeId}`),n()}catch(a){r(a)}},this._config.startAfter)})}async collectStats(){try{if(this._state!==hs.RUNNING||!this._config.pc)return Pe(this._moduleName,`report discarded (too late) for probe ${this._probeId}`),null;const n=Date.now(),r=await this._config.pc.getStats(),o=this.analyze(r,this._exporter.getLastReport(),this._exporter.getBeforeLastReport(),this._exporter.getReferenceReport()),a=Date.now();return o.experimental.time_to_measure_ms=a-n,this._exporter.addReport(o),Pe(this._moduleName,`got report for probe ${this._probeId}#${this._exporter.getReportsNumber()+1}`),this.fireOnReport(o),o}catch(n){return lr(this._moduleName,`got error ${n}`),null}}async start(){Pe(this._moduleName,"starting"),this.state=hs.RUNNING,this._startedTime=this._exporter.start(),Pe(this._moduleName,"started")}async mute(){this.state=hs.MUTED,Pe(this._moduleName,"muted")}async unmute(){this.state=hs.RUNNING,Pe(this._moduleName,"unmuted")}async stop(n){if(Pe(this._moduleName,`stopping${n?" by watchdog":""}...`),this._stoppedTime=this._exporter.stop(),this.state=hs.IDLE,this._config.ticket){const{ticket:r}=this._exporter;this.fireOnTicket(r)}this._exporter.reset(),Pe(this._moduleName,"stopped")}registerCallback(n,r,o){n in this._callbacks?(this._callbacks[n]={callback:r,context:o},Pe(this._moduleName,`registered callback '${n}'`)):lr(this._moduleName,`can't register callback for '${n}' - not found`)}unregisterCallback(n){n in this._callbacks?(this._callbacks[n]=null,delete this._callbacks[n],Pe(this._moduleName,`unregistered callback '${n}'`)):lr(this._moduleName,`can't unregister callback for '${n}' - not found`)}fireOnReport(n){this._callbacks.onreport&&hu(this._callbacks.onreport.callback,this._callbacks.onreport.context,n)}fireOnTicket(n){this._callbacks.onticket&&hu(this._callbacks.onticket.callback,this._callbacks.onticket.context,n)}updateConfig(n){this._config=n,this._exporter.updateConfig(n)}get state(){return this._state}set state(n){this._state=n,Pe(this._moduleName,`state changed to ${n}`)}addCustomEvent(n,r,o,a){this._exporter.addCustomEvent({at:typeof n=="object"?n.toJSON():n,category:r,name:o,description:a})}async registerToPCEvents(){const{pc:n}=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{lr(this._moduleName,"can't get devices")}},n){n.oniceconnectionstatechange=()=>{const o=n.iceConnectionState;o===$i.CONNECTED||o===$i.COMPLETED?this.addCustomEvent(new Date().toJSON(),"call",o,"ICE connection state"):o===$i.DISCONNECTED||o===$i.FAILED?this.addCustomEvent(new Date().toJSON(),"call",o,"ICE connection state"):o===$i.CLOSED&&this.addCustomEvent(new Date().toJSON(),"call","ended","ICE connection state")},n.onicegatheringstatechange=()=>{const o=n.iceGatheringState;this.addCustomEvent(new Date().toJSON(),"call",o,"ICE gathering state")},n.ontrack=o=>{this.addCustomEvent(new Date().toJSON(),"call",`${o.track.kind}track`,"MediaStreamTrack received")},n.onnegotiationneeded=()=>{this.addCustomEvent(new Date().toJSON(),"call","negotiation","Media changed")};const r=n.getReceivers();if(r&&r.length>0){const o=r[0],{transport:a}=o;if(a){const{iceTransport:t}=a;t&&(t.onselectedcandidatepairchange=()=>{this.addCustomEvent(new Date().toJSON(),"call","transport","Candidates Pair changed")})}}}}}class Sv{constructor(n){this._id=n.pname&&n.pname.substr(0,12).padEnd(12," ")||zT(),this._moduleName=this._id,vn(this._moduleName,"probe created"),this._config=n,this._collector=new Ev(this._config,this._id)}set onreport(n){n?this._collector.registerCallback("onreport",n):this._collector.unregisterCallback("onreport")}set onticket(n){n?this._collector.registerCallback("onticket",n):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(n){this._collector.state=n}addCustomEvent(n,r,o,a=new Date().toJSON()){this._collector.addCustomEvent(a,r,n,o)}get isRunning(){return this._collector.state===hs.RUNNING}get isIdle(){return this._collector.state===hs.IDLE}updateUserId(n){this._config.uid=n,this._collector.updateConfig(this._config)}updateCallId(n){this._config.cid=n,this._collector.updateConfig(this._config)}start(){if(!this.isIdle){mo(this._moduleName,"probe is already running");return}this._collector.start()}stop(n=!1){this.isRunning&&this._collector.stop(n)}async takeReferenceStats(){return this._collector.takeReferenceStats()}async collectStats(){return this._collector.collectStats()}}const yt="engine ";class yv{constructor(n){this._config=n,this._probes=[],this._startedTime=null,this._callbacks={onresult:null},vn(yt,`configured for probing every ${this._config.refreshEvery}ms`),vn(yt,`configured for starting after ${this._config.startAfter}ms`),vn(yt,`${!this._config.stopAfter||this._config.stopAfter!==-1?`configured for stopped after ${this._config.stopAfter}ms`:"configured for never stopped"}`),Pe(yt,"engine initialized")}get probes(){return this._probes}get isRunning(){return this._probes.some(n=>n.isRunning)}get isIdle(){return this._probes.every(n=>n.isIdle)}addNewProbe(n,r){if(!n)throw new Error("undefined peer connection");const o=KT(n,r,this._config),a=new Sv(o);return this._probes.push(a),Pe(yt,`${this._probes.length} probes registered`),a}removeExistingProbe(n){if(!n)throw new Error("undefined probe");n.state===hs.RUNNING&&n.stop(),this._probes=this._probes.filter(r=>n.id!==r.id)}async start(){const n=()=>{this._probes.forEach(t=>t.start())},r=async()=>Promise.all(this._probes.map(t=>t.takeReferenceStats())),o=()=>this.isIdle?!1:!this._config.stopAfter||this._config.stopAfter<0?!0:Date.now()<this._startedTime+this._config.stopAfter,a=async()=>{const t=BT(),s=this._probes.filter(p=>p.isRunning);for(const p of s){const _=await p.collectStats();_&&t.probes.push(_),Pe(yt,`got probe ${p.id}`),await Sf(0)}return t.delta_time_to_measure_probes_ms=dn(t.probes,"experimental","time_to_measure_ms"),t.delta_KBytes_in=dn(t.probes,"data","delta_KBytes_in"),t.delta_KBytes_out=dn(t.probes,"data","delta_KBytes_out"),t.delta_kbs_in=dn(t.probes,"data","delta_kbs_in"),t.delta_kbs_out=dn(t.probes,"data","delta_kbs_out"),t.total_time_decoded_in=dn(t.probes,"video","total_time_decoded_in"),t.total_time_encoded_out=dn(t.probes,"video","total_time_encoded_out"),t};for(Pe(yt,"starting to collect"),n(),Pe(yt,"generating reference reports..."),await r(),Pe(yt,"reference reports generated"),this._startedTime=Date.now();o();)if(Pe(yt,`wait ${this._config.refreshEvery}ms before collecting`),await Sf(this._config.refreshEvery),o()){Pe(yt,"collecting...");const t=Date.now(),s=await a(),p=Date.now();s.delta_time_consumed_to_measure_ms=p-t,this.fireOnReports(s),Pe(yt,"collected")}Pe(yt,"reaching end of the collecting period..."),this.isRunning&&setTimeout(()=>{this.stop()},0)}stop(n){const r=o=>{this._probes.forEach(a=>{a.stop(o)})};vn(yt,"stop collecting"),r(n)}registerCallback(n,r,o){n in this._callbacks?(this._callbacks[n]={callback:r,context:o},Pe(yt,`registered callback '${n}'`)):lr(yt,`can't register callback for '${n}' - not found`)}unregisterCallback(n){n in this._callbacks?(this._callbacks[n]=null,delete this._callbacks[n],Pe(this._moduleName,`unregistered callback '${n}'`)):lr(this._moduleName,`can't unregister callback for '${n}' - not found`)}fireOnReports(n){this._callbacks.onresult&&n.probes.length>0&&hu(this._callbacks.onresult.callback,this._callbacks.onresult.context,n)}}const Av="interface ";class Cv{constructor(n){this._config=YT(n),vn(Av,`welcome to ${this._config.name} version ${this._config.version}`),kT(this._config.verbose||!1),this._engine=new yv(this._config)}setupLogLevel(n){LT(n)}get version(){return this._config.version}get name(){return this._config.name}get probes(){return this._engine.probes}createProbe(n,r){return this._engine.addNewProbe(n,r)}startAllProbes(){this._engine.start()}stopAllProbes(){this._engine.stop()}get running(){return this._engine.isRunning}get idle(){return this._engine.isIdle}removeProbe(n){this._engine.removeExistingProbe(n)}set onresult(n){n?this._engine.registerCallback("onresult",n):this._engine.unregisterCallback("onresult")}}function Rv(c,n){return Object.keys(c).filter(r=>n.includes(r)).reduce((r,o)=>{const a=o;return{...r,[a]:c[a]}},{})}const Iv=["mos_in","codec_in","delta_KBytes_in","delta_kbs_in","delta_jitter_ms_in","delta_packets_lost_in"];class bv{constructor(n){this.intervals={},this.emitInterval=n.emitInterval||200,this.onChangeFunction=n.onChangeFunction}start(n,r){n&&n.getTracks().length&&requestAnimationFrame(()=>this.beginCalculation(n,r))}stop(n){this.clearVolumeInterval(n)}clearVolumeInterval(n){console.log("clearVolumeInterval",n),clearInterval(this.intervals[n]),delete this.intervals[n]}clearAllIntervals(){Object.keys(this.intervals).forEach(n=>{clearInterval(this.intervals[n])}),this.intervals={}}beginCalculation(n,r){this.clearVolumeInterval(r);const o=Tn.createAnalyser(),a=Tn.createMediaStreamSource(n),t=Tn.createScriptProcessor(2048,1,1);o.smoothingTimeConstant=.8,o.fftSize=1024,a.connect(o),o.connect(t),t.connect(Tn.destination),this.intervals[r]=setInterval(()=>{const s=new Uint8Array(o.frequencyBinCount);o.getByteFrequencyData(s);let p=0;const _=s.length;for(let g=0;g<_;g++)p+=s[g];const d=p/_;this.onChangeFunction(r,d)},this.emitInterval)}}const to={SELECTED_INPUT_DEVICE:"OpensipsJSInputDevice",SELECTED_OUTPUT_DEVICE:"OpensipsJSOutputDevice"},wv=0;class Ov{constructor(n){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=n,this.context.on(this.context.newRTCSessionEventName,this.newRTCSessionCallback.bind(this)),this.VUMeter=new bv({onChangeFunction:this.emitVolumeChange.bind(this)}),this.initializeMediaDevices()}get sipOptions(){return{...this.context.options.sipOptions,mediaConstraints:this.getUserMediaConstraints}}get currentActiveRoomId(){return this.currentActiveRoomIdValue}set currentActiveRoomId(n){this.currentActiveRoomIdValue=n,this.context.emit("currentActiveRoomChanged",n)}get autoAnswer(){return this.isAutoAnswer}get callAddingInProgress(){return this.isCallAddingInProgress}set callAddingInProgress(n){this.isCallAddingInProgress=n,this.context.emit("callAddingInProgressChanged",n)}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(n=>n.kind==="audioinput")}get getOutputDeviceList(){return this.availableMediaDevices.filter(n=>n.kind==="audiooutput")}get getUserMediaConstraints(){return d_()?{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(n){this.availableMediaDevices=n,this.context.emit("changeAvailableDeviceList",n)}async updateDeviceList(){await navigator.mediaDevices.getUserMedia(this.getUserMediaConstraints);const n=await navigator.mediaDevices.enumerateDevices();this.setAvailableMediaDevices(n)}async initializeMediaDevices(){const n=localStorage.getItem(to.SELECTED_INPUT_DEVICE)||"default",r=localStorage.getItem(to.SELECTED_OUTPUT_DEVICE)||"default";try{const o=await navigator.mediaDevices.getUserMedia(this.getUserMediaConstraints),a=await navigator.mediaDevices.enumerateDevices();this.setAvailableMediaDevices(a),await this.setMicrophone(n),await this.setSpeaker(r),navigator.mediaDevices.addEventListener("devicechange",async()=>{const t=await navigator.mediaDevices.enumerateDevices();this.setAvailableMediaDevices(t)}),o.getTracks().forEach(t=>t.stop())}catch(o){console.error(o)}}setCallTime(n){const r={...n};delete r.callId,this.callTime={...this.callTime,[n.callId]:r},this.context.emit("changeCallTime",this.callTime)}removeCallTime(n){const r={...this.callTime};delete r[n],this.callTime={...r},this.context.emit("changeCallTime",this.callTime)}setTimeInterval(n,r){this.timeIntervals={...this.timeIntervals,[n]:r}}removeTimeInterval(n){const r={...this.timeIntervals};r[n]&&(clearInterval(r[n]),delete r[n],this.timeIntervals={...r})}stopCallTimer(n){this.removeTimeInterval(n),this.removeCallTime(n)}emitVolumeChange(n,r){this.context.emit("changeCallVolume",{callId:n,volume:r})}setMetricsConfig(n){this.metricConfig={...this.metricConfig,...n}}sendDTMF(n,r){if(!/^[A-D0-9]+$/g.test(r))throw new Error("Not allowed character in DTMF input");this.extendedCalls[n].sendDTMF(r)}setIsMuted(n){this.muted=n,this.context.emit("changeIsMuted",n)}processMute(n){const r=this.currentActiveRoomId;this.setIsMuted(n),this.initialStreamValue.getTracks().forEach(o=>o.enabled=!n),this.roomReconfigure(r)}mute(){this.processMute(!0)}unmute(){this.processMute(!1)}async processHold({callId:n,toHold:r,automatic:o}){const a=this.extendedCalls[n];a._automaticHold=o??!1,await new Promise(p=>{const _=()=>{p()};r?a.hold({},_):a.unhold({},_)}),this.updateCall(a);const s=Object.values(this.extendedCalls).filter(p=>p.roomId===this.currentActiveRoomId&&(r?n!==p._id:!0));s.length>1&&await this.doConference(s)}holdCall(n,r=!1){return this.processHold({callId:n,automatic:r,toHold:!0})}unholdCall(n){return this.processHold({callId:n,toHold:!1})}cancelAllOutgoingUnanswered(){Object.values(this.getActiveCalls).filter(n=>n.direction==="outgoing"&&n.status===wv).forEach(n=>this.terminateCall(n._id))}answerCall(n){const r=this.extendedCalls[n];this.cancelAllOutgoingUnanswered(),r.answer(this.sipOptions),this.updateCall(r),this.setActiveRoom(r.roomId),r.connection.addEventListener("track",o=>{this.triggerAddStream(o,r)})}async moveCall(n,r){this.updateCallStatus({callId:n,isMoving:!0}),await this.processRoomChange({callId:n,roomId:r}),this.updateCallStatus({callId:n,isMoving:!1})}updateCall(n){this.activeCalls[n._id]=mf(n),this.context.emit("changeActiveCalls",this.activeCalls)}updateRoom(n){const o={...this.activeRooms[n.roomId],...n};this.activeRooms={...this.activeRooms,[n.roomId]:{...o}},this.context.emit("updateRoom",{room:o,roomList:this.activeRooms})}hasAutoAnswerHeaders(n){const r=/answer-after=0/,a=n.request.getHeader("Call-Info");return a&&r.test(a)}addCall(n,r=!0){this.activeCalls={...this.activeCalls,[n._id]:mf(n)},this.extendedCalls[n._id]=n,r&&this.context.emit("changeActiveCalls",this.activeCalls)}addCallStatus(n){this.callStatus={...this.callStatus,[n]:{isMoving:!1,isTransferring:!1,isMerging:!1}},this.context.emit("changeCallStatus",this.callStatus)}updateCallStatus(n){const o={...{...this.callStatus[n.callId]}};n.isMoving!==void 0&&(o.isMoving=n.isMoving),n.isTransferring!==void 0&&(o.isTransferring=n.isTransferring),n.isMerging!==void 0&&(o.isMerging=n.isMerging),this.callStatus={...this.callStatus,[n.callId]:{...o}},this.context.emit("changeCallStatus",this.callStatus)}removeCallStatus(n){const r={...this.callStatus};delete r[n],this.callStatus={...r},this.context.emit("changeCallStatus",this.callStatus)}addRoom(n){this.activeRooms={...this.activeRooms,[n.roomId]:n},this.context.emit("addRoom",{room:n,roomList:this.activeRooms})}getActiveStream(){const n=Tf(this.initialStreamValue,this.microphoneInputLevel*2);return n.getTracks().forEach(r=>r.enabled=!this.isMuted),this.setActiveStream(n),n}async setMicrophone(n){if(!this.getInputDeviceList.find(({deviceId:o})=>o===n)||(this.setSelectedInputDevice(n),Object.keys(this.getActiveCalls).length===0))return;await this.setupStream();const r=Object.values(this.extendedCalls).filter(o=>o.roomId===this.currentActiveRoomId);r.length===1?Object.values(r).forEach(async o=>{const a=this.getActiveStream();o.connection.getSenders()[0].replaceTrack(a.getTracks()[0]),this.updateCall(o)}):await this.doConference(r)}setActiveStream(n){this.activeStream&&this.stopVUMeter("origin"),this.setupVUMeter(n,"origin"),this.activeStreamValue=n,this.context.emit("changeActiveStream",n)}async setSpeaker(n){if(!this.getOutputDeviceList.find(({deviceId:a})=>a===n))return;this.setSelectedOutputDevice(n);const r=Object.values(this.extendedCalls);if(r.length===0)return;const o=r.filter(a=>a.roomId===this.currentActiveRoomId);o.length===1?r.forEach(a=>{var t;(t=a.audioTag)==null||t.setSinkId(n),this.updateCall(a)}):await this.doConference(o)}removeRoom(n){const r={...this.activeRooms},o={...r[n]};delete r[n],this.activeRooms={...r},this.context.emit("removeRoom",{room:o,roomList:this.activeRooms})}deleteRoomIfEmpty(n){n!==void 0&&Object.values(this.extendedCalls).filter(r=>r.roomId===n).length===0&&(this.removeRoom(n),this.currentActiveRoomId===n&&(this.currentActiveRoomId=void 0))}checkInitialized(){if(!this.context.initialized)throw new Error("[OpenSIPSJS] You must call `start` method first!")}muteReconfigure(n){this.muted?n.mute({audio:!0}):n.unmute({audio:!0})}async roomReconfigure(n){if(n===void 0)return;const r=Object.values(this.extendedCalls).filter(o=>o.roomId===n);if(this.currentActiveRoomId===n?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(n);else if(r.length===1&&this.currentActiveRoomId!==n)r[0].isOnHold().local||await this.holdCall(r[0].id,!0);else if(r.length===1&&this.currentActiveRoomId===n){if(r[0].isOnHold().local&&r[0]._automaticHold&&await this.unholdCall(r[0].id),r[0].connection&&r[0].connection.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(n){await vf.forEach(n,async o=>{o._localHold&&await this.unholdCall(o._id)});const r=[];n.forEach(o=>{o!=null&&o.connection.getReceivers().forEach(a=>{r.push(a.track)})}),await vf.forEach(n,async o=>{if(o==null)return;const a=new MediaStream,t=Tn.createMediaStreamDestination();if(o.connection.getReceivers().forEach(s=>{r.forEach(p=>{a.addTrack(s.track),s.track.id!==p.id&&Tn.createMediaStreamSource(new MediaStream([p])).connect(t)})}),n[0].roomId===this.currentActiveRoomId){const s=this.getActiveStream();Tn.createMediaStreamSource(s).connect(t)}o.connection.getSenders()[0]&&(await o.connection.getSenders()[0].replaceTrack(t.stream.getTracks()[0]),this.muteReconfigure(o))})}processCallerMute(n,r){const o=this.extendedCalls[n];o&&o.connection.getReceivers().length&&(o.localMuted=r,o.connection.getReceivers().forEach(a=>{a.track.enabled=!r}),this.updateCall(o))}muteCaller(n){this.processCallerMute(n,!0)}unmuteCaller(n){this.processCallerMute(n,!1)}terminateCall(n){const r=this.extendedCalls[n];r._status!==8&&r.terminate()}transferCall(n,r){if(r.toString().length===0)return new Error("Target must be passed");const o=this.extendedCalls[n];if(!o._is_confirmed&&!o._is_canceled){const a=`sip:${r}@${this.context.sipDomain}`;o.terminate({status_code:302,reason_phrase:"Moved Temporarily",extraHeaders:[`Contact: ${a}`]});return}this.updateCallStatus({callId:n,isTransferring:!0}),o.refer(`sip:${r}@${this.context.sipDomain}`),this.updateCall(o)}mergeCall(n){const r=Object.values(this.extendedCalls).filter(t=>t.roomId===n);if(r.length!==2)return;const o=r[0],a=r[1];!o||!a||(this.updateCallStatus({callId:o._id,isMerging:!0}),this.updateCallStatus({callId:a._id,isMerging:!0}),o.refer(a.remote_identity.uri.toString(),{replaces:a}),this.updateCall(o))}setDND(n){this.isDNDEnabled=n,this.context.emit("changeIsDND",n)}startCallTimer(n){this.removeTimeInterval(n);const r={callId:n,hours:0,minutes:0,seconds:0,formatted:""};this.setCallTime(r);const o=setInterval(()=>{const a={...this.callTime[n]},t=UT(a);this.setCallTime({callId:n,...t})},1e3);this.setTimeInterval(n,o)}async setActiveRoom(n){const r=this.currentActiveRoomId;n!==r&&(this.currentActiveRoomId=n,await this.roomReconfigure(r),await this.roomReconfigure(n))}getNewRoomId(){const n=Object.keys(this.activeRooms);return n.length===0?1:parseInt(n.sort()[n.length-1])+1}async setupCall(n){var d,g;const r=n.session;if(this.getActiveCalls[r.id]!==void 0)return;const a=this.getNewRoomId(),t={started:new Date,incomingInProgress:!1,roomId:a};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(es.CALL_CONFIRMED,T=>{r.id===T.id&&(this.updateRoom({incomingInProgress:!1,roomId:a}),this.startCallTimer(r.id))}),this.context.subscribe(es.CALL_FAILED,T=>{r.id===T.id&&(this.updateRoom({incomingInProgress:!1,roomId:a}),this.deleteRoomIfEmpty(a))})):r.direction==="outgoing"&&(r.once("confirmed",()=>{this.startCallTimer(r.id)}),this.startCallTimer(r.id));const s=r,p=this.hasAutoAnswerHeaders(n),_=s.direction==="incoming"&&!this.hasActiveCalls&&(p||this.autoAnswer);s.roomId=a,s.localMuted=!1,s.autoAnswer=_,_?this.addCall(s,!1):this.addCall(s),this.addCallStatus(r.id),this.addRoom(t),_&&this.answerCall(s._id)}removeCall(n){const r={...this.activeCalls};delete r[n],this.activeCalls={...r};const o={...this.extendedCalls};delete o[n],this.extendedCalls={...o},this.context.emit("changeActiveCalls",this.activeCalls)}activeCallListRemove(n){const r=this.extendedCalls[n._id];this.stopVUMeter("origin"),r.connection.getSenders().forEach(a=>{a.track.stop()});const o=r.roomId;this.removeCall(n._id),this.roomReconfigure(o)}async newRTCSessionCallback(n){const r=n.session;if(this.isDND){r.terminate({status_code:486,reason_phrase:"Do Not Disturb"});return}if(r.on("ended",o=>{var t,s;this.stopVUMeter(r.id),this.context.logger.log("Session ended for",(s=(t=r._remote_identity)==null?void 0:t._uri)==null?void 0:s._user),this.context.triggerListener({listenerType:es.CALL_ENDED,session:r,event:o});const a=this.getActiveCalls[r.id];a&&this.activeCallListRemove(a),this.stopCallTimer(r.id),this.removeCallStatus(r.id),this.removeCallMetrics(r.id),Object.keys(this.extendedCalls).length||(this.setIsMuted(!1),this.initialStreamValue.getTracks().forEach(p=>p.stop()),this.initialStreamValue=null)}),r.on("progress",o=>{var a,t;this.context.logger.log("Session in progress for",(t=(a=r._remote_identity)==null?void 0:a._uri)==null?void 0:t._user),this.context.triggerListener({listenerType:es.CALL_PROGRESS,session:r,event:o})}),r.on("failed",o=>{var t,s;this.stopVUMeter(r.id),this.context.logger.log("Session failed for",(s=(t=r._remote_identity)==null?void 0:t._uri)==null?void 0:s._user),this.context.triggerListener({listenerType:es.CALL_FAILED,session:r,event:o}),r.id===this.callAddingInProgress&&(this.callAddingInProgress=void 0);const a=this.getActiveCalls[r.id];a&&this.activeCallListRemove(a),this.stopCallTimer(r.id),this.removeCallStatus(r.id),this.removeCallMetrics(r.id),Object.keys(this.extendedCalls).length||(this.setIsMuted(!1),this.initialStreamValue.getTracks().forEach(p=>p.stop()),this.initialStreamValue=null)}),r.on("confirmed",o=>{var a,t;this.context.logger.log("Session confirmed for",(t=(a=r._remote_identity)==null?void 0:a._uri)==null?void 0:t._user),this.context.triggerListener({listenerType:es.CALL_CONFIRMED,session:r,event:o}),this.updateCall(r),r.id===this.callAddingInProgress&&(this.callAddingInProgress=void 0)}),await this.setupCall(n),r.direction==="outgoing"){const o=this.getActiveCalls[r.id].roomId;this.setActiveRoom(o)}}setMuteWhenJoin(n){this.muteWhenJoinEnabled=n,this.context.emit("changeMuteWhenJoin",n)}setMicrophoneSensitivity(n){if(n<0||n>1)throw new Error("Value should be in range from 0 to 1!");this.microphoneInputLevelValue=n,this.roomReconfigure(this.currentActiveRoomId)}setSpeakerVolume(n){this.speakerVolumeValue=n,Object.values(this.extendedCalls).forEach(r=>{r.audioTag&&(r.audioTag.volume=n,this.updateCall(r))})}setAutoAnswer(n){this.isAutoAnswer=n}setSelectedInputDevice(n){localStorage.setItem(to.SELECTED_INPUT_DEVICE,n),this.selectedMediaDevices.input=n,this.context.emit("changeActiveInputMediaDevice",n)}setSelectedOutputDevice(n){localStorage.setItem(to.SELECTED_OUTPUT_DEVICE,n),this.selectedMediaDevices.output=n,this.context.emit("changeActiveOutputMediaDevice",n)}setCallMetrics(n){const r={...n};delete r.callId,this.callMetrics={...this.callMetrics,[n.callId]:r},this.context.emit("changeCallMetrics",this.callMetrics)}removeCallMetrics(n){const r={...this.callMetrics};delete r[n],this.callMetrics={...r},this.context.emit("changeCallMetrics",this.callMetrics)}getCallQuality(n){const r=new Cv(this.metricConfig),o=r.createProbe(n.connection,{cid:n._id}),a=[];let t;o.onreport=s=>{Object.entries(s.audio).forEach(([d,g])=>{g.direction==="inbound"&&!a.includes(d)&&(a.push(d),t=d)});const p=s.audio[t],_=Rv(p,Iv);_.callId=n._id,this.setCallMetrics(r)},this.context.subscribe(es.CALL_ENDED,s=>{s._id===n._id&&r.stopAllProbes()}),r.startAllProbes()}setupVUMeter(n,r){this.VUMeter.start(n,r)}stopVUMeter(n){this.VUMeter.stop(n)}async setupStream(){const n=await navigator.mediaDevices.getUserMedia(this.getUserMediaConstraints);this.initialStreamValue&&(this.initialStreamValue.getTracks().forEach(r=>r.stop()),this.initialStreamValue=null),this.initialStreamValue=n}async triggerAddStream(n,r){this.setIsMuted(this.muteWhenJoin||this.isMuted),this.initialStreamValue||await this.setupStream();const o=Tf(this.initialStreamValue,this.microphoneInputLevel*2),a=this.isMuted||this.muteWhenJoin;o.getTracks().forEach(s=>s.enabled=!a),this.setActiveStream(o),await r.connection.getSenders()[0].replaceTrack(o.getTracks()[0]);const t=new MediaStream([n.track]);mT(t,r,this.selectedOutputDevice,this.speakerVolume),this.setupVUMeter(t,r._id),this.getCallQuality(r),this.updateCall(r)}initCall(n,r){if(this.checkInitialized(),n.length===0)return console.error("Target must be a valid string");this.context.logger.log(`Calling sip:${n}@${this.context.sipDomain}...`);const o=this.context.call(`sip:${n}@${this.context.sipDomain}`,this.sipOptions);this.callAddingInProgress=o.id,r&&this.currentActiveRoomId!==void 0&&this.processRoomChange({callId:o.id,roomId:this.currentActiveRoomId}),o.connection.addEventListener("track",a=>{this.triggerAddStream(a,o)})}async processRoomChange({callId:n,roomId:r}){const o=this.extendedCalls[n].roomId;this.extendedCalls[n].roomId=r;const a=this.extendedCalls[n];return this.updateCall(a),await this.setActiveRoom(r),Promise.all([this.roomReconfigure(o),this.roomReconfigure(r)]).then(()=>{this.deleteRoomIfEmpty(o),this.deleteRoomIfEmpty(r)})}}class Dv{constructor(n){this.context=n}get sipOptions(){return{...this.context.options.sipOptions}}initCall(n){if(n.length===0)return console.error("Target must be a valid string");this.context.logger.log(`Calling sip:${n}@${this.context.sipDomain}...`),this.context.joinVideoCall(`sip:${n}@${this.context.sipDomain}`,this.sipOptions),console.log("video call")}}class Nv{constructor(n){this.activeMessages={},this.extendedMessages={},this.msrpHistory={},this.context=n,this.context.on(this.context.newMSRPSessionEventName,this.newMSRPSessionCallback.bind(this.context))}get isMSRPInitializing(){return this.isMSRPInitializingValue}get getActiveMessages(){return this.activeMessages}msrpAnswer(n){const r=this.extendedMessages[n];this.updateMSRPSession(r)}updateMSRPSession(n){this.activeMessages[n._id]=gf(n),this.context.emit("changeActiveMessages",this.activeMessages)}addMMSRPSession(n){this.activeMessages={...this.activeMessages,[n._id]:gf(n)},this.extendedMessages[n._id]=n,this.context.emit("changeActiveMessages",this.activeMessages)}addMSRPMessage(n,r){const o=this.msrpHistory[r.id]||[];o.push(n),this.msrpHistory={...this.msrpHistory,[r.id]:[...o]},this.context.emit("newMSRPMessage",{message:n,session:r})}messageTerminate(n){const r=this.extendedMessages[n];r._status!==8&&r.terminate()}addMessageSession(n){if(!n._id||this.getActiveMessages[n._id]!==void 0)return;const o=n;this.addMMSRPSession(o)}triggerMSRPListener({listenerType:n,session:r,event:o}){const a=this.context.listenersList[n];!a||!a.length||a.forEach(t=>{t(r,o)})}removeMMSRPSession(n){const r={...this.activeMessages};delete r[n],this.activeMessages={...r};const o={...this.extendedMessages};delete o[n],this.extendedMessages={...o},this.context.emit("changeActiveMessages",this.activeMessages)}activeMessageListRemove(n){this.removeMMSRPSession(n._id)}newMSRPSessionCallback(n){const r=n.session;r.on("ended",o=>{this.triggerMSRPListener({listenerType:es.CALL_ENDED,session:r,event:o});const a=this.getActiveMessages[r.id];this.activeMessageListRemove(a)}),r.on("failed",o=>{this.triggerMSRPListener({listenerType:es.CALL_FAILED,session:r,event:o});const a=this.getActiveMessages[r.id];this.activeMessageListRemove(a)}),r.on("confirmed",o=>{this.triggerMSRPListener({listenerType:es.CALL_CONFIRMED,session:r,event:o}),this.updateMSRPSession(r)}),r.on("newMessage",o=>{this.addMSRPMessage(o,r)}),this.addMessageSession(r)}setIsMSRPInitializing(n){this.isMSRPInitializingValue=n,this.context.emit("isMSRPInitializingChanged",n)}initMSRP(n,r,o){if(n.length===0)return console.error("Target must be a valid string");const a=this.context.startMSRP(n,o);a.on("active",()=>{this.addMessageSession(a),a.sendMSRP(r),this.setIsMSRPInitializing(!1)}),this.setIsMSRPInitializing(!0)}sendMSRP(n,r){const o=this.extendedMessages[n];if(!o)throw new Error(`MSRP session with id ${n} doesn't exist!`);o.sendMSRP(r)}}const Ya={AUDIO:"audio",VIDEO:"video",MSRP:"msrp"};class Uv extends hT{constructor(n,r){if(!n.modules.length)throw new Error("options.modules should include at least 1 module");const o={...n.configuration,sockets:n.socketInterfaces.map(a=>new NT.WebSocketInterface(a))};super(o),this.initialized=!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=[],n.pnExtraHeaders&&Object.keys(n.pnExtraHeaders).length&&this.registrator().setExtraContactParams(n.pnExtraHeaders),this.options=n,this.modules=n.modules,r&&gT(r)&&(this.logger=r)}on(n,r){return super.on(n,r)}off(n,r){return super.off(n,r)}emit(n,r){return super.emit(n,r)}get sipDomain(){return this.options.sipDomain}begin(){if(this.isConnected()){console.error("Connection is already established");return}return this.modules.includes(Ya.AUDIO)&&(this.audio=new Ov(this)),this.modules.includes(Ya.MSRP)&&(this.msrp=new Nv(this)),this.modules.includes(Ya.VIDEO)&&(this.video=new Dv(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.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),setTimeout(this.start.bind(this),5e3))}),this.logger.log("Connecting to",this.options.socketInterfaces[0]),this.start(),this}subscribe(n,r){const a=!this.listenersList[n]||!this.listenersList[n].length?[r]:[...this.listenersList[n],r];this.listenersList={...this.listenersList,[n]:a}}removeIListener(n){const r={...this.listenersList};delete r[n],this.listenersList={...r}}triggerListener({listenerType:n,session:r,event:o}){const a=this.listenersList[n];!a||!a.length||a.forEach(t=>{t(r,o)})}setInitialized(n){this.initialized=n,this.emit("ready",n)}}module.exports=Uv;
154
+ a=path:${s.getHeader("Use-Path")} msrp://${this._ua._configuration.authorization_user}.${this._ua._configuration.realm}:2856/${this.auth_id};ws
155
+ `),this._newMSRPSession("local",this._request),this._id=this._request.call_id+this._from_tag,console.log("dialog be",this._dialog),new l_(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||q.causes.BYE,o=Me.cloneArray(s.extraHeaders),a=s.body;let t,n=s.status_code,p=s.reason_phrase;if(this._status===Re.STATUS_TERMINATED)throw new mn.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&&(p=p||q.REASON_PHRASE[n]||"",t=`SIP ;cause=${n} ;text="${p}"`),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,q.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,p,o,a),console.log("failed 2"),this._failed("local",null,q.causes.REJECTED);break;case Re.STATUS_WAITING_FOR_ACK:case Re.STATUS_CONFIRMED:if(p=s.reason_phrase||q.REASON_PHRASE[n]||"",n&&(n<200||n>=700))throw new TypeError(`Invalid status_code: ${n}`);if(n&&o.push(`Reason: SIP ;cause=${n}; text="${p}"`),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===q.ACK&&(this.sendRequest(q.BYE,{extraHeaders:o,body:a}),_.terminate())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===Bt.C.STATUS_TERMINATED&&(this.sendRequest(q.BYE,{extraHeaders:o,body:a}),_.terminate())}),this._ended("local",null,r),this._dialog=_,this._ua.newDialog(_)}else console.log("here it is"),this.sendRequest(q.BYE,{extraHeaders:o,body:a}),this._ended("local",null,r)}}sendRequest(s,r){return this._dialog.sendRequest(s,r)}authenticate(s){this.status="auth";let r=new rr("");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 o=r.toString();console.log(o);let a=[];for(var t=0;t<o.length;t++)a.push(o.charCodeAt(t).toString(16));console.log(a),this._connection.send(r.toString())}onmessage(s){console.log("onmessage",s);const r=new rr(s.data);if(this.status==="auth"&&r.code===401){const o=this.parseAuth(r.getHeader("WWW-Authenticate")),a=new Pm(this.credentials);a.authenticate({method:"AUTH",ruri:`msrp://${this._ua._configuration.realm}:2856;ws`,body:null},o,Me.createRandomToken(12)),this.authenticate(a)}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 o=/([0-9]{1,3}(\.[0-9]{1,3}){3})/,a=r.candidate.candidate.match(o);this.my_ip=a&&a[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(q.ACK);return}else{const r=new Gl(this,s,"UAC");if(r.error!==void 0){console.log(r.error);return}this.sendRequest(q.ACK),this.sendRequest(q.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 o=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(o)).then(()=>this._progress("remote",s)).catch(a=>{console.log('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)});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,q.causes.MISSING_SDP),console.log("failed 3"),this._failed("remote",s,q.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(o=>this._connection.setLocalDescription(o)).catch(o=>{this._acceptAndTerminate(s,500,o.toString()),console.log("failed 4"),this._failed("local",s,q.causes.WEBRTC_ERROR)})}).then(()=>{this._handleSessionTimersInIncomingResponse(s),this._accepted("remote",s),this.sendRequest(q.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 rr("");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 o=r.toString();console.log(o);let a=[];for(var t=0;t<o.length;t++)a.push(o.charCodeAt(t).toString(16));console.log(a),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,o=s.getHeader("Message-ID"),a=new rr("");a.method="200 OK",a.addHeader("To-Path",`${this.my_addr[1]}`),a.addHeader("From-Path",`${this.my_addr[0]}`),a.addHeader("Message-ID",o),a.ident=r;let t=a.toString();console.log(t);let n=[];for(var p=0;p<t.length;p++)n.push(t.charCodeAt(p).toString(16));console.log(n),this._connection.send(a.toString())}_sendReport(s){let r=s.ident,o=s.getHeader("Message-ID"),a=new rr("");a.method="REPORT",a.addHeader("To-Path",`${s.getHeader("From-Path")}`),a.addHeader("From-Path",`${this.my_addr[0]}`),a.addHeader("Message-ID",o),a.addHeader("Byte-Range","1-25/25"),a.addHeader("Status","000 200 OK"),a.ident=r;let t=a.toString();console.log(t);let n=[];for(var p=0;p<t.length;p++)n.push(t.charCodeAt(p).toString(16));console.log(n),this._connection.send(a.toString())}parseAuth(s){const r={},o=s.replace("Digest","").split(",");for(const a of o){const t=a.trim().split("=");r[t[0]]=t[1].match('^"(.+)"$')[1]}return r}init_incoming(s,r){let o;const a=s.hasHeader("Content-Type")?s.getHeader("Content-Type").toLowerCase():void 0;if(s.body&&a!=="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")&&(o=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,q.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),o&&(this._timers.expiresTimer=setTimeout(()=>{this._status===Re.STATUS_WAITING_FOR_ANSWER&&(s.reply(487),console.log("failed 7"),this._failed("system",null,q.causes.EXPIRES))},o)),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,o){this.emit("_failed",{originator:s,message:r||null,cause:o}),this._close(),this.emit("failed",{originator:s,message:r||null,cause:o})}_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,o){const a=r==="UAS"?s.to_tag:s.from_tag,t=r==="UAS"?s.from_tag:s.to_tag,n=s.call_id+a+t;let p=this._earlyDialogs[n];if(o)return p?!0:(p=new Gl(this,s,r,Gl.C.STATUS_EARLY),p.error?(console.log("failed 8"),this._failed("remote",s,q.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[n]=p,!0));{if(this._from_tag=s.from_tag,this._to_tag=s.to_tag,p)return p.update(s,r),this._dialog=p,delete this._earlyDialogs[n],!0;const _=new Gl(this,s,r);return _.error?(console.log("failed 9"),this._failed("remote",s,q.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,o){console.log("session ended"),this._end_time=new Date,this._close(),console.log('emit "ended"'),this.emit("ended",{originator:s,message:r||null,cause:o})}_handleSessionTimersInIncomingResponse(s){if(!this._sessionTimers.enabled)return;let r;s.session_expires&&s.session_expires>=q.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===q.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,q.causes.CANCELED));else switch(s.method){case q.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:q.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 o=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(o)).then(()=>{this._is_confirmed||this._confirmed("remote",s)}).catch(a=>{this.terminate({cause:q.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),console.log('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a)})}else this._is_confirmed||this._confirmed("remote",s);break;case q.BYE:this._status===Re.STATUS_CONFIRMED||this._status===Re.STATUS_WAITING_FOR_ACK?(s.reply(200),this._ended("remote",s,q.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,q.causes.BYE)):s.reply(403,"Wrong Status");break;case q.INVITE:this._status===Re.STATUS_CONFIRMED?s.hasHeader("replaces")?this._receiveReplaces(s):this._receiveReinvite(s):s.reply(403,"Wrong Status");break;case q.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 fu(this).init_incoming(s):s.reply(415):s.reply(403,"Wrong Status");break;case q.UPDATE:this._status===Re.STATUS_CONFIRMED?this._receiveUpdate(s):s.reply(403,"Wrong Status");break;case q.REFER:this._status===Re.STATUS_CONFIRMED?this._receiveRefer(s):s.reply(403,"Wrong Status");break;case q.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:q.causes.CONNECTION_ERROR,cause:q.causes.CONNECTION_ERROR})}onRequestTimeout(){console.log("onRequestTimeout()"),this._status!==Re.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:q.causes.REQUEST_TIMEOUT,cause:q.causes.REQUEST_TIMEOUT})}onDialogError(){console.log("onDialogError()"),this._status!==Re.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:q.causes.DIALOG_ERROR,cause:q.causes.DIALOG_ERROR})}}const Nt=console,Ef={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2},ST=dT;class yT extends ST{constructor(s){super(s),this._msrp_sessions=[],this._transactions={nist:{},nict:{},ist:{},ict:{}},this._janus_sessions=[]}call(s,r){return super.call(s,r)}joinVideoCall(s,r){Nt.debug("call()");const o=new wo(this);return o.connect(s,r),o}newMSRPSession(s,r){s.on("msgHistoryUpdate",o=>{console.log(o)}),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){const r=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!==Ue.ACK&&s.reply_sl(404);return}if(s.ruri.scheme===Ue.SIPS){s.reply_sl(416);return}if(Bt.checkTransaction(this,s))return;if(r===Ue.INVITE?new Bt.InviteServerTransaction(this,this._transport,s):r!==Ue.ACK&&r!==Ue.CANCEL&&new Bt.NonInviteServerTransaction(this,this._transport,s),r===Ue.OPTIONS){if(this.listeners("newOptions").length===0){s.reply(200);return}new Vc.Options(this).init_incoming(s)}else if(r===Ue.MESSAGE){if(this.listeners("newMessage").length===0){s.reply(405);return}new Vc.Message(this).init_incoming(s)}else if(r===Ue.INVITE&&!s.to_tag&&this.listeners("newRTCSession").length===0){s.reply(405);return}let o,a;if(s.to_tag)o=this._findDialog(s.call_id,s.from_tag,s.to_tag),o?o.receiveRequest(s):r===Ue.NOTIFY?(a=this._findSession(s),a?a.receiveRequest(s):(Nt.debug("received NOTIFY request for a non existent subscription"),s.reply(481,"Subscription does not exist"))):r!==Ue.ACK&&s.reply(481);else switch(r){case Ue.INVITE:if(window.RTCPeerConnection)if(s.hasHeader("replaces")){const t=s.replaces;o=this._findDialog(t.call_id,t.from_tag,t.to_tag),o?(a=o.owner,a.isEnded()?s.reply(603):a.receiveRequest(s)):s.reply(481)}else s.body.search(/MSRP/ig)>-1?(a=new Wa(this),a.init_incoming(s)):s.body.search(/JANUS/ig)>-1||(a=new Cg(this),a.init_incoming(s));else Nt.warn("INVITE received but WebRTC is not supported"),s.reply(488);break;case Ue.BYE:s.reply(481);break;case Ue.CANCEL:a=this._findSession(s),a?a.receiveRequest(s):Nt.debug("received CANCEL request for a non existent session");break;case Ue.ACK:break;case Ue.NOTIFY:this.emit("sipEvent",{event:s.event,request:s}),s.reply(200);break;default:s.reply(405);break}}startMSRP(s,r){Nt.debug("startMSRP()",r);const o=new Wa(this);return o.connect(s),o}startJanus(s,r){Nt.debug("startJanus()",r);const o=new Wa(this);return o.connect(s),o}terminateMSRPSessions(s){Nt.debug("terminateSessions()");for(const r in this._msrp_sessions)this._msrp_sessions[r].isEnded()||this._msrp_sessions[r].terminate(s)}terminateJanusSessions(s){Nt.debug("terminateSessions()");for(const r in this._janus_sessions)this._janus_sessions[r].isEnded()||this._janus_sessions[r].terminate(s)}stop(){if(Nt.debug("stop()"),this._dynConfiguration={},this._status===Ef.STATUS_USER_CLOSED){Nt.debug("UA already closed");return}this._registrator.close();const s=Object.keys(this._sessions).length;for(const o in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,o)){Nt.debug(`closing session ${o}`);try{this._sessions[o].terminate()}catch(a){console.error(a)}}for(const o in this._msrp_sessions)if(Object.prototype.hasOwnProperty.call(this._msrp_sessions,o)){Nt.debug(`closing session ${o}`);try{this._msrp_sessions[o].terminate()}catch(a){console.error(a)}}for(const o in this._janus_sessions)if(Object.prototype.hasOwnProperty.call(this._janus_sessions,o)){Nt.debug(`closing session ${o}`);try{this._janus_sessions[o].terminate()}catch(a){console.error(a)}}for(const o in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,o))try{this._applicants[o].close()}catch(a){console.error(a)}this._status=Ef.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)}}const AT=["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"],CT=["_cancel_reason","_contact","direction","_end_time","_eventsCount","_from_tag","_id","_is_canceled","_is_confirmed","_late_sdp","status","start_time","_remote_identity","target_addr"];function Sf(c){const s={};return AT.forEach(r=>{c[r]!==void 0&&(s[r]=c[r])}),s.localHold=c._localHold,s}function yf(c){const s={};return CT.forEach(r=>{c[r]!==void 0&&(s[r]=c[r])}),s}function Af(c,s){const r=new AudioContext,o=r.createMediaStreamSource(c),a=r.createMediaStreamDestination(),t=r.createGain();return o.connect(t),t.connect(a),t.gain.value=s,a.stream}function RT(c,s,r,o){const a=document.createElement("audio");a.id=s._id,a.className="audioTag",a.srcObject=c,v_()||(a.setSinkId(r),a.volume=o),a.play(),s.audioTag=a}function IT(c){if(c&&typeof c.log=="function"&&typeof c.warn=="function"&&typeof c.error=="function")return!0}function v_(){return/Mobi|Android|iPhone/i.test(navigator.userAgent)}const bT=at,wT=is(),wt=new bT("WebSocketInterface");var OT=class{constructor(s){wt.debug('new() [url:"%s"]',s),this._url=s,this._sip_uri=null,this._via_transport=null,this._ws=null;const r=wT.parse(s,"absoluteURI");if(r===-1)throw wt.warn(`invalid WebSocket URI: ${s}`),new TypeError(`Invalid argument: ${s}`);if(r.scheme!=="wss"&&r.scheme!=="ws")throw wt.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(wt.debug("connect()"),this.isConnected()){wt.debug(`WebSocket ${this._url} is already connected`);return}else if(this.isConnecting()){wt.debug(`WebSocket ${this._url} is connecting`);return}this._ws&&this.disconnect(),wt.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(){wt.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 wt.debug("send()"),this.isConnected()?(this._ws.send(s),!0):(wt.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(){wt.debug(`WebSocket ${this._url} connected`),this.onconnect()}_onClose({wasClean:s,code:r,reason:o}){wt.debug(`WebSocket ${this._url} closed`),s===!1&&wt.debug("WebSocket abrupt disconnection"),this.ondisconnect(!s,r,o)}_onMessage({data:s}){wt.debug("received WebSocket message"),this.ondata(s)}_onError(s){wt.warn(`WebSocket ${this._url} error: `,s)}};const pu=Oo,DT=Ue,NT=vs,UT=St(),PT=T_,xT=Ts(),MT=Iu(),kT=is(),LT=OT,$T=cr("JsSIP");$T("version %s",pu.version);var HT={C:DT,Exceptions:NT,Utils:UT,UA:PT,URI:xT,NameAddrHeader:MT,WebSocketInterface:LT,Grammar:kT,debug:cr,get name(){return pu.title},get version(){return pu.version}};const FT=ot(HT);function Ka(c){return c<10?`0${c}`:`${c}`}function VT(c){let s=c.hours||0,r=c.minutes||0,o=c.seconds||0;o++,o===60&&(o=0,r++,r===60&&(r=0,s++));const a=`${Ka(s)}:${Ka(r)}:${Ka(o)}`;return{seconds:o,minutes:r,hours:s,formatted:a}}var yt={};yt.forEach=async(c,s,r)=>{const o=[];for(let a=0;a<c.length;a++)if(a in c){const t=Promise.resolve(c[a]).then(n=>s.call(r||globalThis,n,a,c));o.push(t)}await Promise.all(o)};yt.forEachSeries=async(c,s,r)=>{for(let o=0;o<c.length;o++)o in c&&await s.call(r||globalThis,await c[o],o,c)};yt.map=async(c,s,r)=>{const o=[];for(let a=0;a<c.length;a++)a in c&&(o[a]=Promise.resolve(c[a]).then(t=>s.call(r||globalThis,t,a,c)));return Promise.all(o)};yt.mapSeries=async(c,s,r)=>{const o=[];for(let a=0;a<c.length;a++)a in c&&(o[a]=await s.call(r||globalThis,await c[a],a,c));return o};yt.find=(c,s,r)=>new Promise((o,a)=>{if(c.length===0)return o();let t=1;for(let n=0;n<c.length;n++){const p=_=>{_?o(c[n]):t===c.length&&o(),t++};Promise.resolve(c[n]).then(_=>s.call(r||globalThis,_,n,c)).then(p).catch(a)}});yt.findSeries=async(c,s,r)=>{for(let o=0;o<c.length;o++)if(await s.call(r||globalThis,await c[o],o,c))return c[o]};yt.findIndex=(c,s,r)=>new Promise((o,a)=>{if(c.length===0)return o(-1);let t=1;for(let n=0;n<c.length;n++){const p=_=>{_?o(n):t===c.length&&o(-1),t++};Promise.resolve(c[n]).then(_=>s.call(r||globalThis,_,n,c)).then(p).catch(a)}});yt.findIndexSeries=async(c,s,r)=>{for(let o=0;o<c.length;o++)if(await s.call(r||globalThis,await c[o],o,c))return o};yt.some=(c,s,r)=>new Promise((o,a)=>{if(c.length===0)return o(!1);let t=1;for(let n=0;n<c.length;n++){if(!(n in c)){t++;continue}const p=_=>{_?o(!0):t===c.length&&o(!1),t++};Promise.resolve(c[n]).then(_=>s.call(r||globalThis,_,n,c)).then(p).catch(a)}});yt.someSeries=async(c,s,r)=>{for(let o=0;o<c.length;o++)if(o in c&&await s.call(r||globalThis,await c[o],o,c))return!0;return!1};yt.every=(c,s,r)=>new Promise((o,a)=>{if(c.length===0)return o(!0);let t=1;for(let n=0;n<c.length;n++){if(!(n in c)){t++;continue}const p=_=>{_?t===c.length&&o(!0):o(!1),t++};Promise.resolve(c[n]).then(_=>s.call(r||globalThis,_,n,c)).then(p).catch(a)}});yt.everySeries=async(c,s,r)=>{for(let o=0;o<c.length;o++)if(o in c&&!await s.call(r||globalThis,await c[o],o,c))return!1;return!0};yt.filter=(c,s,r)=>new Promise(async(o,a)=>{const t=[];for(let p=0;p<c.length;p++)p in c&&(t[p]=Promise.resolve(c[p]).then(_=>s.call(r||globalThis,_,p,c)).catch(a));const n=[];for(let p=0;p<t.length;p++)await t[p]&&n.push(await c[p]);o(n)});yt.filterSeries=async(c,s,r)=>{const o=[];for(let a=0;a<c.length;a++)a in c&&await s.call(r||globalThis,await c[a],a,c)&&o.push(await c[a]);return o};yt.reduce=async(c,s,r)=>{if(c.length===0&&r===void 0)throw TypeError("Reduce of empty array with no initial value");let o,a;for(r!==void 0?(a=r,o=0):(a=c[0],o=1),o;o<c.length;o++)o in c&&(a=await s(await a,await c[o],o,c));return a};var E_={};(function(c){const s=yt;Object.keys(s).forEach(r=>{const o=r.charAt(0).toUpperCase()+r.slice(1);c[`async${o}`]=async function(...a){return s[r](this,...a)}})})(E_);const jT=yt,qT=E_;var Cf=Object.assign(jT,{instanceMethods:qT});const vn=new AudioContext,ts={NEW_CALL:"new_call",CALL_CONFIRMED:"confirmed",CALL_FAILED:"failed",CALL_PROGRESS:"progress",CALL_ENDED:"ended"};var BT={exports:{}};(function(c){var s=function(r){var o=Object.prototype,a=o.hasOwnProperty,t=Object.defineProperty||function(ee,W,G){ee[W]=G.value},n,p=typeof Symbol=="function"?Symbol:{},_=p.iterator||"@@iterator",d=p.asyncIterator||"@@asyncIterator",g=p.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 ae?W:ae,be=Object.create(ge.prototype),xe=new P(re||[]);return t(be,"_invoke",{value:z(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",R="suspendedYield",I="executing",$="completed",L={};function ae(){}function N(){}function F(){}var Se={};T(Se,_,function(){return this});var ve=Object.getPrototypeOf,M=ve&&ve(ve(se([])));M&&M!==o&&a.call(M,_)&&(Se=M);var D=F.prototype=ae.prototype=Object.create(Se);N.prototype=F,t(D,"constructor",{value:F,configurable:!0}),t(F,"constructor",{value:N,configurable:!0}),N.displayName=T(F,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,F):(ee.__proto__=F,T(ee,g,"GeneratorFunction")),ee.prototype=Object.create(D),ee},r.awrap=function(ee){return{__await:ee}};function j(ee,W){function G(be,xe,Ce,le){var ye=y(ee[be],ee,xe);if(ye.type==="throw")le(ye.arg);else{var tt=ye.arg,it=tt.value;return it&&typeof it=="object"&&a.call(it,"__await")?W.resolve(it.__await).then(function(Ee){G("next",Ee,Ce,le)},function(Ee){G("throw",Ee,Ce,le)}):W.resolve(it).then(function(Ee){tt.value=Ee,Ce(tt)},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(j.prototype),T(j.prototype,d,function(){return this}),r.AsyncIterator=j,r.async=function(ee,W,G,re,ge){ge===void 0&&(ge=Promise);var be=new j(E(ee,W,G,re),ge);return r.isGeneratorFunction(W)?be:be.next().then(function(xe){return xe.done?xe.value:be.next()})};function z(ee,W,G){var re=A;return function(be,xe){if(re===I)throw new Error("Generator is already running");if(re===$){if(be==="throw")throw xe;return et()}for(G.method=be,G.arg=xe;;){var Ce=G.delegate;if(Ce){var le=H(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=$,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?$:R,ye.arg===L)continue;return{value:ye.arg,done:G.done}}else ye.type==="throw"&&(re=$,G.method="throw",G.arg=ye.arg)}}}function H(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,H(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(a.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:et}}r.values=se;function et(){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"&&a.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=a.call(ge,"catchLoc"),Ce=a.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&&a.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)}})(BT);var S_={exports:{}};(function(c){(function(s,r){c.exports?c.exports=r():s.log=r()})(b_,function(){var s=function(){},r="undefined",o=typeof window!==r&&typeof window.navigator!==r&&/Trident\/|MSIE /.test(window.navigator.userAgent),a=["trace","debug","info","warn","error"];function t(R,I){var $=R[I];if(typeof $.bind=="function")return $.bind(R);try{return Function.prototype.bind.call($,R)}catch{return function(){return Function.prototype.apply.apply($,[R,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 p(R){return R==="debug"&&(R="log"),typeof console===r?!1:R==="trace"&&o?n:console[R]!==void 0?t(console,R):console.log!==void 0?t(console,"log"):s}function _(R,I){for(var $=0;$<a.length;$++){var L=a[$];this[L]=$<R?s:this.methodFactory(L,R,I)}this.log=this.debug}function d(R,I,$){return function(){typeof console!==r&&(_.call(this,I,$),this[R].apply(this,arguments))}}function g(R,I,$){return p(R)||d.apply(this,arguments)}function T(R,I,$){var L=this,ae;I=I??"WARN";var N="loglevel";typeof R=="string"?N+=":"+R:typeof R=="symbol"&&(N=void 0);function F(D){var B=(a[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,j=B.indexOf(encodeURIComponent(N)+"=");j!==-1&&(D=/^([^;]+)/.exec(B.slice(j))[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=R,L.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},L.methodFactory=$||g,L.getLevel=function(){return ae},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(ae=D,B!==!1&&F(D),_.call(L,D,R),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 $=y[I];return $||($=y[I]=new T(I,E.getLevel(),E.methodFactory)),$};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})})(S_);var Ct=S_.exports;const ps=()=>`${new Date().toISOString()} | metrics`,ms=(c,s,r)=>`${c} | ${s} | ${r}`;Ct.setDefaultLevel(Ct.levels.TRACE);const GT=c=>{Ct.info(ms(ps(),"log ",`set log level to ${c?"verbose":"info"}`)),Ct.setLevel(c?Ct.levels.TRACE:Ct.levels.INFO)},WT=c=>{const s=[...Object.keys(Ct.levels)];s.includes(c)?(Ct.info(ms(ps(),"log ",`update log level to ${c.toLowerCase()}`)),Ct.setLevel(c)):Ct.warn(ms(ps(),"log ","Incorrect log level please choose one of "),s)},Pe=(c,s,r)=>{r?Ct.debug(ms(ps(),c,s),r):Ct.debug(ms(ps(),c,s))},Ya=(c,s)=>{Ct.info(ms(ps(),c,s))},En=(c,s)=>{Ct.info(ms(ps(),c,s))},To=(c,s)=>{Ct.warn(ms(ps(),c,s))},or=(c,s)=>{Ct.error(ms(ps(),c,s))};function KT(c){return Math.floor(Math.random()*c).toString()}function Rf(c,s){let r=s;return c.forEach(o=>{r=r.replace(o,"")}),r}function YT(c,s){let r="";for(let o=0;o<s;o+=1)r+=c[KT(c.length)];return r}function zT({length:c=20,useLetters:s=!0,useNumbers:r=!0,includeSymbols:o=[],excludeSymbols:a=[]}={}){let t="abcdefghijklmnopqrstuvwxyz",n="0123456789",p=[],_=[],d=[];return s&&(a.length&&(t=Rf(a,t)),_=t.split("")),r&&(a.length&&(n=Rf(a,n)),d=n.split("")),p=[..._,...d,...o],YT(p,c)}var JT=zT;const Gi=ot(JT),XT=()=>"WebRTCMetrics",QT=()=>"5.0.3",$e={INBOUND:"inbound",OUTBOUND:"outbound"},ds={IDLE:"idle",RUNNING:"running",MUTED:"muted"},Hi={NEW:"new",CHECKING:"checking",CONNECTED:"connected",COMPLETED:"completed",DISCONNECTED:"disconnected",FAILED:"failed",CLOSED:"closed"},ZT=()=>({...{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:[]}}),y_={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},A_={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},C_={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},R_={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},ev=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(o=>{r.audio[o]={...c.audio[o]}}),Object.keys(c.video).forEach(o=>{r.video[o]={...c.video[o]}}),r}return{...s,audio:{},video:{},data:{...s.data},network:{...s.network},experimental:{...s.experimental}}},tv={refreshEvery:2e3,startAfter:0,stopAfter:-1,verbose:!1,pname:`p-${Gi()}`,cid:`c-${Gi()}`,uid:`u-${Gi()}`,record:!1,ticket:!0},Yt={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"},x={SUCCEEDED:"succeeded",AUDIO:"audio",VIDEO:"video"},Fi={ETHERNET:0,CELLULAR_5G:2,WIFI:3,CELLULAR_4G:5,CELLULAR:10},za={ETHERNET:"ethernet",CELLULAR_4G:"cellular",WIFI:"wifi"},ne={AUDIO:"audio",VIDEO:"video",NETWORK:"network",DATA:"data"},Ja="config ",sv=(c,s={},r)=>{const o={...r,...s};return s.pname||To(Ja,`Argument [String] 'cfg.pname' for the peerConnection name or id is missing - use generated '${r.pname}'`),s.cid||To(Ja,`Argument [String] 'cfg.cid' for the call name or id is missing - use generated '${r.cid}'`),s.uid||To(Ja,`Argument [String] 'cfg.uid' for the user name or id is missing - use generated '${r.uid}'`),o.pc=c,o},nv=(c={})=>{const s={...tv,...c};return s.name=XT(),s.version=QT(),s},ol=(c,s,r,o=!1,a)=>{let t=c.map(n=>{if(!r)return n[s];if(!a)return n[s][r];const p=n[s][a];return p?p[r]:null});return t=t.filter(n=>o?Number.isFinite(n)&&n>0:Number.isFinite(n)),t.length===0?[]:t},Hs=c=>c.reduce((s,r)=>s+r,0)/c.length,rv=()=>`probe-${Gi()}`,iv=()=>`coltr-${Gi()}`,If=c=>new Promise(s=>setTimeout(s,c)),mu=(c,s,r)=>{s?c.call(s,r):c(r)},Ke=(c,s,r,o)=>{const a=ol(c,s,r,!0,o);if(a.length===0)return null;const t=a.reduce((d,g)=>d+g,0)/a.length;return t===0?null:a.map(d=>Math.abs(t-d)).reduce((d,g)=>d+g,0)/a.length*100/t},Je=(c,s,r,o=!1,a)=>{const t=ol(c,s,r,o,a);return t.length===0?null:t.reduce((n,p)=>n+p,0)/t.length},pn=(c,s,r)=>ol(c,s,r).reduce((a,t)=>a+t,0),Ye=(c,s,r,o)=>{const a=ol(c,s,r,!0,o);return a.length===0?null:Math.min(...a)},ze=(c,s,r,o)=>{const a=ol(c,s,r,!1,o);return a.length===0?null:Math.max(...a)},mt=(c,s,r,o)=>{const a=c.slice().pop();if(!a)return null;if(!r)return a[s];if(!o)return a[s][r];const t=a[s][o];return t?t[r]:null},lv=c=>c.slice().pop(),ut=(c,s,r)=>{if(!s)return null;const o={};let a=s[x.AUDIO][c];a||(a=r===$e.INBOUND?{...y_}:{...A_}),o[x.AUDIO]=a;let t=s[x.VIDEO][c];return t||(t=r===$e.INBOUND?{...C_}:{...R_}),o[x.VIDEO]=t,o},Vi="exporter ",ov="2.0",bf=(c,s,r)=>{if(!c||c.length===0)return 0;const o=c[c.length-1];if(!o)return 0;const a=o[s][r];if(a){const t=a.total_rtt_ms_out,n=a.total_rtt_measure_out;return!n||!t?Je(c,s,"delta_rtt_ms_out",!1,r):Number(t/n)}return null},av=(c,s)=>{if(!c||c.length===0)return 0;const r=c[c.length-1];if(!r)return 0;const o=r[s].total_rtt_connectivity_ms,a=r[s].total_rtt_connectivity_measure;return!a||!o?Je(c,s,"delta_rtt_connectivity_ms"):Number(o/a)},uv=c=>mt(c,"network","local_candidate_type")!=="relay"?`direct/${mt(c,"network","local_candidate_protocol")}`:`turn/${mt(c,"network","local_candidate_relay_protocol")}`,cv=c=>{const s=mt(c,"network","remote_candidate_type"),r=mt(c,"network","remote_candidate_protocol");return s!=="relay"?`direct/${r}`:`turn/${r}`};class fv{constructor(s){this._start=null,this._end=null,this._cfg=s,this._referenceReport=null,this._reports=[],this._events=[]}start(){Ya(Vi,"start() - start exporter...");const s=new Date;return this._start=s.toJSON(),s}stop(){Ya(Vi,"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(Vi,`addReport() - add report to exporter at ${s.timestamp}`),this._reports.push(s))}addCustomEvent(s){this._events.push(s)}reset(){Ya(Vi,"resetReports() - reset reports"),this._reports=[],this._referenceReport=null,this._start=null,this._end=null}get ticket(){Pe(Vi,"ticket() - generate ticket");const s=mt(this._reports,"audio","total_packets_lost_in"),r=mt(this._reports,"audio","total_packets_in"),o=mt(this._reports,"video","total_packets_lost_in"),a=mt(this._reports,"video","total_packets_in"),t={},n=lv(this._reports);return n&&(Object.keys(n[x.AUDIO]).forEach(p=>{const _=n[x.AUDIO][p];if(t[_.ssrc]={type:x.AUDIO,direction:_.direction},_.direction===$e.INBOUND){const d={avg:Je(this._reports,x.AUDIO,"delta_jitter_ms_in",!1,p),min:Ye(this._reports,x.AUDIO,"delta_jitter_ms_in",p),max:ze(this._reports,x.AUDIO,"delta_jitter_ms_in",p),volatility:Ke(this._reports,x.AUDIO,"delta_jitter_ms_in",p),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Je(this._reports,x.AUDIO,"delta_kbs_in",!1,p),min:Ye(this._reports,x.AUDIO,"delta_kbs_in",p),max:ze(this._reports,x.AUDIO,"delta_kbs_in",p),volatility:Ke(this._reports,x.AUDIO,"delta_kbs_in",p),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Je(this._reports,x.AUDIO,"delta_KBytes_in",!1,p),min:Ye(this._reports,x.AUDIO,"delta_KBytes_in",p),max:ze(this._reports,x.AUDIO,"delta_KBytes_in",p),volatility:Ke(this._reports,x.AUDIO,"delta_KBytes_in",p),_unit:{avg:"KB",min:"KB",max:"KB",volatility:"percent"}},E={emodel:{avg:Je(this._reports,x.AUDIO,"mos_emodel_in",!1,p),min:Ye(this._reports,x.AUDIO,"mos_emodel_in",p),max:ze(this._reports,x.AUDIO,"mos_emodel_in",p),volatility:Ke(this._reports,x.AUDIO,"mos_emodel_in",p)},effective:{avg:Je(this._reports,x.AUDIO,"mos_in",!1,p),min:Ye(this._reports,x.AUDIO,"mos_in",p),max:ze(this._reports,x.AUDIO,"mos_in",p),volatility:Ke(this._reports,x.AUDIO,"mos_in",p)},_unit:{avg:"number (1-5)",min:"number (1-5)",max:"number (1-5)",volatility:"percent"}},y=mt(this._reports,x.AUDIO,"total_packets_lost_in",p),A=mt(this._reports,x.AUDIO,"total_packets_in",p),R={lost:y,avg:Math.round((y/(y+A)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}};t[p].jitter=d,t[p].mos=E,t[p].traffic=T,t[p].bitrate=g,t[p].loss=R}else{const d={avg:Je(this._reports,x.AUDIO,"delta_jitter_ms_out",!1,p),min:Ye(this._reports,x.AUDIO,"delta_jitter_ms_out",p),max:ze(this._reports,x.AUDIO,"delta_jitter_ms_out",p),volatility:Ke(this._reports,x.AUDIO,"delta_jitter_ms_out",p),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Je(this._reports,x.AUDIO,"delta_kbs_out",!1,p),min:Ye(this._reports,x.AUDIO,"delta_kbs_out",p),max:ze(this._reports,x.AUDIO,"delta_kbs_out",p),volatility:Ke(this._reports,x.AUDIO,"delta_kbs_out",p),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Je(this._reports,x.AUDIO,"delta_KBytes_out",!1,p),min:Ye(this._reports,x.AUDIO,"delta_KBytes_out",p),max:ze(this._reports,x.AUDIO,"delta_KBytes_out",p),volatility:Ke(this._reports,x.AUDIO,"delta_KBytes_out",p),_unit:{avg:"KB",min:"KB",max:"KB",bitrate:"kbs",volatility:"percent"}},E={avg:bf(this._reports,x.AUDIO,p),min:Ye(this._reports,x.AUDIO,"delta_rtt_ms_out",p),max:ze(this._reports,x.AUDIO,"delta_rtt_ms_out",p),volatility:Ke(this._reports,x.AUDIO,"delta_rtt_ms_out",p),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},y=mt(this._reports,x.AUDIO,"total_packets_lost_out",p),A=mt(this._reports,x.AUDIO,"total_packets_out",p),R={lost:y,avg:Math.round((y/(y+A)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}},I={emodel:{avg:Je(this._reports,x.AUDIO,"mos_emodel_out",!1,p),min:Ye(this._reports,x.AUDIO,"mos_emodel_out",p),max:ze(this._reports,x.AUDIO,"mos_emodel_out",p),volatility:Ke(this._reports,x.AUDIO,"mos_emodel_out",p)},effective:{avg:Je(this._reports,x.AUDIO,"mos_out",!1,p),min:Ye(this._reports,x.AUDIO,"mos_out",p),max:ze(this._reports,x.AUDIO,"mos_out",p),volatility:Ke(this._reports,x.AUDIO,"mos_out",p)},_unit:{avg:"number (1-5)",min:"number (1-5)",max:"number (1-5)",volatility:"percent"}};t[p].jitter=d,t[p].rtt=E,t[p].traffic=T,t[p].bitrate=g,t[p].loss=R,t[p].mos=I}}),Object.keys(n[x.VIDEO]).forEach(p=>{const _=n[x.VIDEO][p];if(t[p]={type:x.VIDEO,direction:_.direction},_.direction===$e.INBOUND){const d={avg:Je(this._reports,x.VIDEO,"delta_jitter_ms_in",!1,p),min:Ye(this._reports,x.VIDEO,"delta_jitter_ms_in",p),max:ze(this._reports,x.VIDEO,"delta_jitter_ms_in",p),volatility:Ke(this._reports,x.VIDEO,"delta_jitter_ms_in",p),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Je(this._reports,x.VIDEO,"delta_kbs_in",!1,p),min:Ye(this._reports,x.VIDEO,"delta_kbs_in",p),max:ze(this._reports,x.VIDEO,"delta_kbs_in",p),volatility:Ke(this._reports,x.VIDEO,"delta_kbs_in",p),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Je(this._reports,x.VIDEO,"delta_KBytes_in",!1,p),min:Ye(this._reports,x.VIDEO,"delta_KBytes_in",p),max:ze(this._reports,x.VIDEO,"delta_KBytes_in",p),volatility:Ke(this._reports,x.VIDEO,"delta_KBytes_in",p),_unit:{avg:"KB",min:"KB",max:"KB",volatility:"percent"}},E=mt(this._reports,x.VIDEO,"total_packets_lost_in",p),y=mt(this._reports,x.VIDEO,"total_packets_in",p),A={lost:E,avg:Math.round((E/(E+y)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}};t[p].jitter=d,t[p].traffic=T,t[p].bitrate=g,t[p].loss=A}else{const d={avg:Je(this._reports,x.VIDEO,"delta_jitter_ms_out",!1,p),min:Ye(this._reports,x.VIDEO,"delta_jitter_ms_out",p),max:ze(this._reports,x.VIDEO,"delta_jitter_ms_out",p),volatility:Ke(this._reports,x.VIDEO,"delta_jitter_ms_out",p),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},g={avg:Je(this._reports,x.VIDEO,"delta_kbs_out",!1,p),min:Ye(this._reports,x.VIDEO,"delta_kbs_out",p),max:ze(this._reports,x.VIDEO,"delta_kbs_out",p),volatility:Ke(this._reports,x.VIDEO,"delta_kbs_out",p),_unit:{avg:"kbs",min:"kbs",max:"kbs",volatility:"percent"}},T={avg:Je(this._reports,x.VIDEO,"delta_KBytes_out",!1,p),min:Ye(this._reports,x.VIDEO,"delta_KBytes_out",p),max:ze(this._reports,x.VIDEO,"delta_KBytes_out",p),volatility:Ke(this._reports,x.VIDEO,"delta_KBytes_out",p),_unit:{avg:"KB",min:"KB",max:"KB",volatility:"percent"}},E={avg:bf(this._reports,x.VIDEO,p),min:Ye(this._reports,x.VIDEO,"delta_rtt_ms_out",p),max:ze(this._reports,x.VIDEO,"delta_rtt_ms_out",p),volatility:Ke(this._reports,x.VIDEO,"delta_rtt_ms_out",p),_unit:{avg:"ms",min:"ms",max:"ms",volatility:"percent"}},y=mt(this._reports,x.VIDEO,"total_packets_lost_out",p),A=mt(this._reports,x.VIDEO,"total_packets_out",p),R={lost:y,avg:Math.round((y/(y+A)*100||0)*100)/100,_unit:{avg:"percent",lost:"number"}};t[p].jitter=d,t[p].rtt=E,t[p].traffic=T,t[p].bitrate=g,t[p].loss=R}})),{version:ov,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:av(this._reports,"data"),min:Ye(this._reports,"data","delta_rtt_connectivity_ms"),max:ze(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((o/(o+a)*100||0)*100)/100}},unit:{avg:"percent"}},bitrate:{in:{avg:Je(this._reports,"data","delta_kbs_in"),min:Ye(this._reports,"data","delta_kbs_in"),max:ze(this._reports,"data","delta_kbs_in"),volatility:Ke(this._reports,"data","delta_kbs_in")},out:{avg:Je(this._reports,"data","delta_kbs_out"),min:Ye(this._reports,"data","delta_kbs_out"),max:ze(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:Je(this._reports,"data","delta_KBytes_in"),min:Ye(this._reports,"data","delta_KBytes_in"),max:ze(this._reports,"data","delta_KBytes_in"),volatility:Ke(this._reports,"data","delta_KBytes_in")},out:{avg:Je(this._reports,"data","delta_KBytes_out"),min:Ye(this._reports,"data","delta_KBytes_out"),max:ze(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:cv(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 Ls="extractor ",wf=(c,s,r,o)=>{let a=!1;const t=o[s].total_rtt_ms_out,n=o[s].total_rtt_measure_out,p=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[V.TIMESTAMP]===o[s].timestamp_out||!Object.prototype.hasOwnProperty.call(c,V.ROUND_TRIP_TIME)||Object.prototype.hasOwnProperty.call(c,V.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS)&&(a=!0,Number(c[V.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS])===0||Number(c[V.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS])-_===n))return d;const g=1e3*Number(c[V.ROUND_TRIP_TIME]);let T=t+g,E=n+1;return a&&(T=1e3*Number(c[V.TOTAL_ROUND_TRIP_TIME])-p,E=Number(c[V.TOTAL_ROUND_TRIP_TIME_MEASUREMENTS])-_),{rtt:g,totalRTT:T,totalRTTMeasurements:E}},_v=(c,s,r,o)=>{if(!Object.prototype.hasOwnProperty.call(c,V.CURRENT_ROUND_TRIP_TIME))return{rtt:null,totalRTT:o[s].total_rtt_connectivity_ms,totalRTTMeasurements:o[s].total_rtt_connectivity_measure};const a=1e3*Number(c[V.CURRENT_ROUND_TRIP_TIME]);let t=o[s].total_rtt_connectivity_ms+a,n=o[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])-(r?r[s].total_rtt_connectivity_ms:0)),Object.prototype.hasOwnProperty.call(c,V.RESPONSES_RECEIVED)&&(n=Number(c[V.RESPONSES_RECEIVED])-(r?r[s].total_rtt_connectivity_measure:0)),{rtt:a,totalRTT:t,totalRTTMeasurements:n}},so=(c,s,r)=>c[V.TIMESTAMP]===r[s].timestamp_out||!Object.prototype.hasOwnProperty.call(c,V.JITTER)?null:1e3*(Number(c[V.JITTER])||0),hv=(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[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[V.FRAMES_DECODED],o=c[V.TOTAL_DECODE_TIME],a=o-s[x.VIDEO].total_time_decoded_in,t=r-s[x.VIDEO].total_frames_decoded_in;return{delta_ms_decode_frame:t>0?a*1e3/t:0,frames_decoded:r,total_decode_time:o}},dv=(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[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[V.FRAMES_ENCODED],o=c[V.TOTAL_ENCODE_TIME],a=o-s[x.VIDEO].total_time_encoded_out,t=r-s[x.VIDEO].total_frames_encoded_out;return{delta_ms_encode_frame:t>0&&a?a*1e3/t:0,frames_encoded:r,total_encode_time:o}},Of=(c,s,r,o)=>{if(!Object.prototype.hasOwnProperty.call(c,V.PACKETS_SENT)||!Object.prototype.hasOwnProperty.call(c,V.BYTES_SENT))return{packetsSent:r[s].total_packets_out,packetsLost:r[s].total_packets_lost_out,bytesSent:r[s].total_KBytes_out};const a=Number(c[V.PACKETS_SENT])||0-(o?o[s].total_packets_out:0),t=a-r[s].total_packets_out,n=Number(c[V.BYTES_SENT])/1024-(o?o[s].total_KBytes_out:0),p=n-r[s].total_KBytes_out,_=c[V.TIMESTAMP]||Date.now(),d=o?o.timestamp:null;let g=r.timestamp;!g&&d&&(g=d);const T=g?_-g:0,E=T>0?p*.008*1024/T*1e3:0;return{packetsSent:a,deltaPacketsSent:t,KBytesSent:n,deltaKBytesSent:p,kbsSent:E}},Df=(c,s,r,o)=>{let a=r[s].total_packets_lost_out,t=0,n=0;return Object.prototype.hasOwnProperty.call(c,V.PACKETS_LOST)&&(a=Number(c[V.PACKETS_LOST])||0-(o?o[s].total_packets_lost_out:0),t=a-r[s].total_packets_lost_out),Object.prototype.hasOwnProperty.call(c,V.FRACTION_LOST)&&(n=Number(100*c[V.FRACTION_LOST])),{packetsLost:a,deltaPacketsLost:t,fractionLost:n}},Nf=(c,s,r,o)=>{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: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 a=Number(c[V.PACKETS_RECEIVED])||0-(o?o[s].total_packets_in:0),t=Number(c[V.PACKETS_LOST])||0-(o?o[s].total_packets_lost_in:0),n=t-r[s].total_packets_lost_in,p=a-r[s].total_packets_in,_=a!==r[s].total_packets_in?n*100/(n+p):0,d=Number(c[V.BYTES_RECEIVED])/1024-(o?o[s].total_KBytes_in:0),g=d-r[s].total_KBytes_in,T=c[V.TIMESTAMP]||Date.now(),E=o?o.timestamp:null;let y=r.timestamp;!y&&E&&(y=E);const A=y?T-y:0,R=A>0?g*.008*1024/A*1e3:0;return{percentPacketsLost:_,packetsReceived:a,deltaPacketsReceived:p,packetsLost:t,deltaPacketsLost:n,KBytesReceived:d,deltaKBytesReceived:g,kbsReceived:R}},pv=c=>c[V.CANDIDATE_TYPE]!=="relay"?"":c[V.RELAY_PROTOCOL]||"",mv=c=>{if(!Object.prototype.hasOwnProperty.call(c,V.NETWORK_TYPE))return Fi.WIFI;switch(c[V.NETWORK_TYPE]){case za.ETHERNET:return Fi.ETHERNET;case za.CELLULAR_4G:return Fi.CELLULAR_4G;case za.WIFI:return Fi.WIFI;default:return Fi.CELLULAR}},Uf=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]},gv=c=>{const s=Object.prototype.hasOwnProperty.call(c,V.QUALITY_LIMITATION_REASON)?c[V.QUALITY_LIMITATION_REASON]:null,r=Object.prototype.hasOwnProperty.call(c,V.QUALITY_LIMITATION_RESOLUTION_CHANGES)?c[V.QUALITY_LIMITATION_RESOLUTION_CHANGES]:null,o=Object.prototype.hasOwnProperty.call(c,V.QUALITY_LIMITATION_DURATIONS)?c[V.QUALITY_LIMITATION_DURATIONS]:null;return o&&Object.keys(o).forEach(a=>{o[a]>1e3&&(o[a]=Number(o[a]/1e3))}),{reason:s,durations:o,resolutionChanges:r}},Tv=(c,s,r)=>{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 o=(c[V.PLI]||0)-(r?r[x.VIDEO].total_pli_sent_in:0),a=(c[V.NACK]||0)-(r?r[x.VIDEO].total_nack_sent_in:0);return{pliCount:o,nackCount:a,deltaPliCount:o-s[x.VIDEO].total_pli_sent_in,deltaNackCount:a-s[x.VIDEO].total_nack_sent_in}},vv=(c,s,r)=>{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 o=(c[V.PLI]||0)-(r?r[x.VIDEO].total_pli_received_out:0),a=(c[V.NACK]||0)-(r?r[x.VIDEO].total_nack_received_out:0);return{pliCount:o,nackCount:a,deltaPliCount:o-s[x.VIDEO].total_pli_received_out,deltaNackCount:a-s[x.VIDEO].total_nack_received_out}},Ev=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}),Sv=c=>({clock_rate:c[V.CLOCK_RATE]||null,mime_type:c[V.MIME_TYPE]||null}),yv=(c,s,r)=>{const o=(c[V.BYTES_RECEIVED]||0)/1024-(r?r.data.total_KBytes_in:0),a=(c[V.BYTES_SENT]||0)/1024-(r?r.data.total_KBytes_out:0),t=c[V.TIMESTAMP]||Date.now(),n=o-s.data.total_KBytes_in,p=a-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?p*.008*1024/g*1e3:0;return{total_KBytes_received:o,total_KBytes_sent:a,delta_KBytes_received:n,delta_KBytes_sent:p,kbs_speed_received:T,kbs_speed_sent:E}},Av=c=>{const s=c[V.AVAILABLE_INCOMING_BITRATE]/1024||0,r=c[V.AVAILABLE_OUTGOING_BITRATE]/1024||0;return{kbs_incoming_bandwidth:s,kbs_outgoing_bandwidth:r}},Cv=(c,s,r,o)=>{if(!c)return[];switch(c[V.TYPE]){case Yt.CANDIDATE_PAIR:let a=!1;if(c[V.NOMINATED]&&c[V.STATE]===x.SUCCEEDED&&(a=!0,Pe(Ls,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c),V.SELECTED in c&&!c[V.SELECTED]&&(a=!1)),a){const n=c[V.LOCAL_CANDIDATE_ID],p=c[V.REMOTE_CANDIDATE_ID],_=yv(c,s,o),d=Av(c),g=_v(c,"data",o,s);return[{type:ne.NETWORK,value:{local_candidate_id:n}},{type:ne.NETWORK,value:{remote_candidate_id:p}},{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 Yt.LOCAL_CANDIDATE:if(c[V.ID]===s.network.local_candidate_id)return[{type:ne.NETWORK,value:{infrastructure:mv(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:pv(c)}}];break;case Yt.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 Yt.INBOUND_RTP:{Pe(Ls,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);const n=c[V.SSRC],p=ut(n,s,$e.INBOUND);p&&(p.timestamp=s.timestamp);const _=ut(n,o,$e.INBOUND);if(_&&(_.timestamp=o.timestamp),c[V.MEDIA_TYPE]===x.AUDIO){const d=Nf(c,x.AUDIO,p,_),g=so(c,x.AUDIO,p),T=c[V.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[V.MEDIA_TYPE]===x.VIDEO){const d=hv(c,p),g=Nf(c,x.VIDEO,p,_),T=so(c,x.VIDEO,p),E=c[V.DECODER_IMPLEMENTATION]||null,y=c[V.CODEC_ID]||null,A=Uf(c),R=Tv(c,p,_);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:R.nackCount}},{ssrc:n,type:ne.VIDEO,value:{delta_nack_sent_in:R.deltaNackCount}},{ssrc:n,type:ne.VIDEO,value:{total_pli_sent_in:R.pliCount}},{ssrc:n,type:ne.VIDEO,value:{delta_pli_sent_in:R.deltaPliCount}},{ssrc:n,type:ne.VIDEO,value:{size_in:A}}]}break}case Yt.OUTBOUND_RTP:{Pe(Ls,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);const n=c[V.SSRC],p=ut(n,s,$e.OUTBOUND);p&&(p.timestamp=s.timestamp);const _=ut(n,o,$e.OUTBOUND);if(_&&(_.timestamp=o.timestamp),c[V.MEDIA_TYPE]===x.AUDIO){const d=c[V.CODEC_ID]||null,g=Of(c,x.AUDIO,p,_);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[V.MEDIA_TYPE]===x.VIDEO){const d=c[V.ENCODER_IMPLEMENTATION]||null,g=c[V.CODEC_ID]||null,T=dv(c,p),E=Uf(c),y=gv(c),A=vv(c,p,_),R=Of(c,x.VIDEO,p,_);return[{ssrc:n,type:ne.VIDEO,value:{codec_id_out:g}},{ssrc:n,type:ne.VIDEO,value:{total_packets_out:R.packetsSent}},{ssrc:n,type:ne.VIDEO,value:{delta_packets_out:R.deltaPacketsSent}},{ssrc:n,type:ne.VIDEO,value:{total_KBytes_out:R.KBytesSent}},{ssrc:n,type:ne.VIDEO,value:{delta_KBytes_out:R.deltaKBytesSent}},{ssrc:n,type:ne.VIDEO,value:{delta_kbs_out:R.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 Yt.MEDIA_SOURCE:{Pe(Ls,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);break}case Yt.TRACK:{Pe(Ls,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);break}case Yt.CODEC:const t=[];return Object.keys(s[x.AUDIO]).forEach(n=>{const p=s[x.AUDIO][n];if(p.codec_id_in===c[V.ID]||p.codec_id_out===c[V.ID]){Pe(Ls,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);const _=Ev(c);c[V.ID]===p.codec_id_in?t.push({ssrc:p.ssrc,type:ne.AUDIO,value:{codec_in:_}}):t.push({ssrc:p.ssrc,type:ne.AUDIO,value:{codec_out:_}})}}),Object.keys(s[x.VIDEO]).forEach(n=>{const p=s[x.VIDEO][n];if(p.codec_id_in===c[V.ID]||p.codec_id_out===c[V.ID]){Pe(Ls,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);const _=Sv(c);c[V.ID]===p.codec_id_in?t.push({ssrc:p.ssrc,type:ne.VIDEO,value:{codec_in:_}}):t.push({ssrc:p.ssrc,type:ne.VIDEO,value:{codec_out:_}})}}),t;case Yt.REMOTE_INBOUND_RTP:{Pe(Ls,`analyze() - got stats ${c[V.TYPE]} for ${r}`,c);const n=c[V.SSRC],p=ut(n,s,$e.OUTBOUND),_=ut(n,o,$e.OUTBOUND);if(c[V.KIND]===x.AUDIO){const d=wf(c,x.AUDIO,_,p),g=so(c,x.AUDIO,p),T=Df(c,x.AUDIO,p,_);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[V.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[V.KIND]===x.VIDEO){const d=wf(c,x.VIDEO,_,p),g=so(c,x.VIDEO,p),T=Df(c,x.VIDEO,p,_);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[V.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[]},ko=c=>c<0?1:c>100?4.5:1+.035*c+7/1e6*c*(c-60)*(100-c),Rv=(c,s=x.AUDIO,r,o,a)=>{const t=ut(a,c,$e.INBOUND),n=ut(a,r,$e.INBOUND),p=ut(a,o,$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=p&&p[s].delta_jitter_ms_in||null,A=c.data.delta_rtt_connectivity_ms,R=r&&r.data.delta_rtt_connectivity_ms||null,I=o&&o.data.delta_rtt_connectivity_ms||null;A&&_.push(A),R&&_.push(R),I&&_.push(I),T&&d.push(T),r&&E&&d.push(E),o&&y&&d.push(y);const $=_.length>0?Hs(_):100,L=d.length>0?Hs(d):10,ae=93.2-g,N=.18*ae*ae-27.9*ae+1126.62,F=($+L)/2,Se=F-177.3<0?0:1,ve=.024*F+.11*(F-177.3)*Se,M=N-ve;return ko(M)},Iv=(c,s=x.AUDIO,r,o,a)=>{const t=ut(a,c,$e.OUTBOUND),n=ut(a,r,$e.OUTBOUND),p=ut(a,o,$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=p&&p[s].delta_rtt_ms_out||null,A=t[s].delta_jitter_ms_out,R=n&&n[s].delta_jitter_ms_out||null,I=p&&p[s].delta_jitter_ms_out||null,$=c.data.delta_rtt_connectivity_ms,L=r&&r.data.delta_rtt_connectivity_ms||null,ae=o&&o.data.delta_rtt_connectivity_ms||null;T?_.push(T):$&&_.push($),E?_.push(E):L&&_.push(L),y?_.push(y):ae&&_.push(ae),A&&d.push(A),r&&R&&d.push(R),o&&I&&d.push(I);const N=_.length>0?Hs(_):100,F=d.length>0?Hs(d):10,Se=93.2-g,ve=.18*Se*Se-27.9*Se+1126.62,M=(N+F)/2,D=M-177.3<0?0:1,B=.024*M+.11*(M-177.3)*D,j=ve-B;return ko(j)},bv=(c,s=x.AUDIO,r,o,a)=>{const t=ut(a,c,$e.INBOUND),n=ut(a,r,$e.INBOUND),p=ut(a,o,$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=p&&p[s].delta_jitter_ms_in||null,A=c.data.delta_rtt_connectivity_ms,R=r&&r.data.delta_rtt_connectivity_ms||null,I=o&&o.data.delta_rtt_connectivity_ms||null;A&&_.push(A),R&&_.push(R),I&&_.push(I),T&&d.push(T),n&&E&&d.push(E),p&&y&&d.push(y);const $=_.length>0?Hs(_):100,L=d.length>0?Hs(d):10,ae=0,N=19.8,F=29.7,Se=30,ve=($+L)/2+Se,M=ve-177.3<0?0:1,D=.024*ve+.11*(ve-177.3)*M,j=93.2-(ae+N*Math.log(1+F*g)+D);return ko(j)},wv=(c,s=x.AUDIO,r,o,a)=>{const t=ut(a,c,$e.OUTBOUND),n=ut(a,r,$e.OUTBOUND),p=ut(a,o,$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=p&&p[s].delta_rtt_ms_out||null,A=t[s].delta_jitter_ms_out,R=n&&n[s].delta_jitter_ms_out||null,I=p&&p[s].delta_jitter_ms_out||null,$=c.data.delta_rtt_connectivity_ms,L=r&&r.data.delta_rtt_connectivity_ms||null,ae=o&&o.data.delta_rtt_connectivity_ms||null;T?_.push(T):$&&_.push($),E?_.push(E):L&&_.push(L),y?_.push(y):ae&&_.push(ae),A&&d.push(A),n&&R&&d.push(R),p&&I&&d.push(I);const N=_.length>0?Hs(_):100,F=d.length>0?Hs(d):10,Se=0,ve=19.8,M=29.7,D=30,B=(N+F)/2+D,j=B-177.3<0?0:1,z=.024*B+.11*(B-177.3)*j,X=93.2-(Se+ve*Math.log(1+M*g)+z);return ko(X)};class Ov{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 fv(s),this._state=ds.IDLE,this.registerToPCEvents(),En(this._moduleName,`new collector created for probe ${this._probeId}`)}analyze(s,r,o,a){const t=(_,d)=>_===x.AUDIO?d===Yt.INBOUND_RTP?{...y_}:{...A_}:d===Yt.INBOUND_RTP?{...C_}:{...R_},n=ev(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 p=null;return s.forEach(_=>{!p&&_.timestamp&&(p=_.timestamp),Cv(_,n,n.pname,a).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=p,Object.keys(n[x.AUDIO]).forEach(_=>{const d=n[x.AUDIO][_];d.direction===$e.INBOUND?(d.mos_emodel_in=Rv(n,x.AUDIO,r,o,d.ssrc),d.mos_in=bv(n,x.AUDIO,r,o,d.ssrc)):(d.mos_emodel_out=Iv(n,x.AUDIO,r,o,d.ssrc),d.mos_out=wv(n,x.AUDIO,r,o,d.ssrc))}),n}async takeReferenceStats(){return new Promise((s,r)=>{const o=Date.now();setTimeout(async()=>{try{const a=Date.now()-o,t=Date.now(),n=await this._config.pc.getStats(),p=this.analyze(n,null,null,null),_=Date.now();p.experimental.time_to_measure_ms=_-t,p.experimental.time_to_wait_ms=a,this._exporter.saveReferenceReport(p),Pe(this._moduleName,`got reference report for probe ${this._probeId}`),s()}catch(a){r(a)}},this._config.startAfter)})}async collectStats(){try{if(this._state!==ds.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(),o=this.analyze(r,this._exporter.getLastReport(),this._exporter.getBeforeLastReport(),this._exporter.getReferenceReport()),a=Date.now();return o.experimental.time_to_measure_ms=a-s,this._exporter.addReport(o),Pe(this._moduleName,`got report for probe ${this._probeId}#${this._exporter.getReportsNumber()+1}`),this.fireOnReport(o),o}catch(s){return or(this._moduleName,`got error ${s}`),null}}async start(){Pe(this._moduleName,"starting"),this.state=ds.RUNNING,this._startedTime=this._exporter.start(),Pe(this._moduleName,"started")}async mute(){this.state=ds.MUTED,Pe(this._moduleName,"muted")}async unmute(){this.state=ds.RUNNING,Pe(this._moduleName,"unmuted")}async stop(s){if(Pe(this._moduleName,`stopping${s?" by watchdog":""}...`),this._stoppedTime=this._exporter.stop(),this.state=ds.IDLE,this._config.ticket){const{ticket:r}=this._exporter;this.fireOnTicket(r)}this._exporter.reset(),Pe(this._moduleName,"stopped")}registerCallback(s,r,o){s in this._callbacks?(this._callbacks[s]={callback:r,context:o},Pe(this._moduleName,`registered callback '${s}'`)):or(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}'`)):or(this._moduleName,`can't unregister callback for '${s}' - not found`)}fireOnReport(s){this._callbacks.onreport&&mu(this._callbacks.onreport.callback,this._callbacks.onreport.context,s)}fireOnTicket(s){this._callbacks.onticket&&mu(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,o,a){this._exporter.addCustomEvent({at:typeof s=="object"?s.toJSON():s,category:r,name:o,description:a})}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{or(this._moduleName,"can't get devices")}},s){s.oniceconnectionstatechange=()=>{const o=s.iceConnectionState;o===Hi.CONNECTED||o===Hi.COMPLETED?this.addCustomEvent(new Date().toJSON(),"call",o,"ICE connection state"):o===Hi.DISCONNECTED||o===Hi.FAILED?this.addCustomEvent(new Date().toJSON(),"call",o,"ICE connection state"):o===Hi.CLOSED&&this.addCustomEvent(new Date().toJSON(),"call","ended","ICE connection state")},s.onicegatheringstatechange=()=>{const o=s.iceGatheringState;this.addCustomEvent(new Date().toJSON(),"call",o,"ICE gathering state")},s.ontrack=o=>{this.addCustomEvent(new Date().toJSON(),"call",`${o.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 o=r[0],{transport:a}=o;if(a){const{iceTransport:t}=a;t&&(t.onselectedcandidatepairchange=()=>{this.addCustomEvent(new Date().toJSON(),"call","transport","Candidates Pair changed")})}}}}}class Dv{constructor(s){this._id=s.pname&&s.pname.substr(0,12).padEnd(12," ")||rv(),this._moduleName=this._id,En(this._moduleName,"probe created"),this._config=s,this._collector=new Ov(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,o,a=new Date().toJSON()){this._collector.addCustomEvent(a,r,s,o)}get isRunning(){return this._collector.state===ds.RUNNING}get isIdle(){return this._collector.state===ds.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){To(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 At="engine ";class Nv{constructor(s){this._config=s,this._probes=[],this._startedTime=null,this._callbacks={onresult:null},En(At,`configured for probing every ${this._config.refreshEvery}ms`),En(At,`configured for starting after ${this._config.startAfter}ms`),En(At,`${!this._config.stopAfter||this._config.stopAfter!==-1?`configured for stopped after ${this._config.stopAfter}ms`:"configured for never stopped"}`),Pe(At,"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 o=sv(s,r,this._config),a=new Dv(o);return this._probes.push(a),Pe(At,`${this._probes.length} probes registered`),a}removeExistingProbe(s){if(!s)throw new Error("undefined probe");s.state===ds.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())),o=()=>this.isIdle?!1:!this._config.stopAfter||this._config.stopAfter<0?!0:Date.now()<this._startedTime+this._config.stopAfter,a=async()=>{const t=ZT(),n=this._probes.filter(p=>p.isRunning);for(const p of n){const _=await p.collectStats();_&&t.probes.push(_),Pe(At,`got probe ${p.id}`),await If(0)}return t.delta_time_to_measure_probes_ms=pn(t.probes,"experimental","time_to_measure_ms"),t.delta_KBytes_in=pn(t.probes,"data","delta_KBytes_in"),t.delta_KBytes_out=pn(t.probes,"data","delta_KBytes_out"),t.delta_kbs_in=pn(t.probes,"data","delta_kbs_in"),t.delta_kbs_out=pn(t.probes,"data","delta_kbs_out"),t.total_time_decoded_in=pn(t.probes,"video","total_time_decoded_in"),t.total_time_encoded_out=pn(t.probes,"video","total_time_encoded_out"),t};for(Pe(At,"starting to collect"),s(),Pe(At,"generating reference reports..."),await r(),Pe(At,"reference reports generated"),this._startedTime=Date.now();o();)if(Pe(At,`wait ${this._config.refreshEvery}ms before collecting`),await If(this._config.refreshEvery),o()){Pe(At,"collecting...");const t=Date.now(),n=await a(),p=Date.now();n.delta_time_consumed_to_measure_ms=p-t,this.fireOnReports(n),Pe(At,"collected")}Pe(At,"reaching end of the collecting period..."),this.isRunning&&setTimeout(()=>{this.stop()},0)}stop(s){const r=o=>{this._probes.forEach(a=>{a.stop(o)})};En(At,"stop collecting"),r(s)}registerCallback(s,r,o){s in this._callbacks?(this._callbacks[s]={callback:r,context:o},Pe(At,`registered callback '${s}'`)):or(At,`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}'`)):or(this._moduleName,`can't unregister callback for '${s}' - not found`)}fireOnReports(s){this._callbacks.onresult&&s.probes.length>0&&mu(this._callbacks.onresult.callback,this._callbacks.onresult.context,s)}}const Uv="interface ";class Pv{constructor(s){this._config=nv(s),En(Uv,`welcome to ${this._config.name} version ${this._config.version}`),GT(this._config.verbose||!1),this._engine=new Nv(this._config)}setupLogLevel(s){WT(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 xv(c,s){return Object.keys(c).filter(r=>s.includes(r)).reduce((r,o)=>{const a=o;return{...r,[a]:c[a]}},{})}const Mv=["mos_in","codec_in","delta_KBytes_in","delta_kbs_in","delta_jitter_ms_in","delta_packets_lost_in"];class kv{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 o=vn.createAnalyser(),a=vn.createMediaStreamSource(s),t=vn.createScriptProcessor(2048,1,1);o.smoothingTimeConstant=.8,o.fftSize=1024,a.connect(o),o.connect(t),t.connect(vn.destination),this.intervals[r]=setInterval(()=>{const n=new Uint8Array(o.frequencyBinCount);o.getByteFrequencyData(n);let p=0;const _=n.length;for(let g=0;g<_;g++)p+=n[g];const d=p/_;this.onChangeFunction(r,d)},this.emitInterval)}}const no={SELECTED_INPUT_DEVICE:"OpensipsJSInputDevice",SELECTED_OUTPUT_DEVICE:"OpensipsJSOutputDevice"},Lv=0;class $v{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 kv({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 v_()?{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(no.SELECTED_INPUT_DEVICE)||"default",r=localStorage.getItem(no.SELECTED_OUTPUT_DEVICE)||"default";try{const o=await navigator.mediaDevices.getUserMedia(this.getUserMediaConstraints),a=await navigator.mediaDevices.enumerateDevices();this.setAvailableMediaDevices(a),await this.setMicrophone(s),await this.setSpeaker(r),navigator.mediaDevices.addEventListener("devicechange",async()=>{const t=await navigator.mediaDevices.enumerateDevices();this.setAvailableMediaDevices(t)}),o.getTracks().forEach(t=>t.stop())}catch(o){console.error(o)}}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(o=>o.enabled=!s),this.roomReconfigure(r)}mute(){this.processMute(!0)}unmute(){this.processMute(!1)}async processHold({callId:s,toHold:r,automatic:o}){const a=this.extendedCalls[s];a._automaticHold=o??!1,await new Promise(p=>{const _=()=>{p()};r?a.hold({},_):a.unhold({},_)}),this.updateCall(a);const n=Object.values(this.extendedCalls).filter(p=>p.roomId===this.currentActiveRoomId&&(r?s!==p._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===Lv).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",o=>{this.triggerAddStream(o,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]=Sf(s),this.context.emit("changeActiveCalls",this.activeCalls)}updateRoom(s){const o={...this.activeRooms[s.roomId],...s};this.activeRooms={...this.activeRooms,[s.roomId]:{...o}},this.context.emit("updateRoom",{room:o,roomList:this.activeRooms})}hasAutoAnswerHeaders(s){const r=/answer-after=0/,a=s.request.getHeader("Call-Info");return a&&r.test(a)}addCall(s,r=!0){this.activeCalls={...this.activeCalls,[s._id]:Sf(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 o={...{...this.callStatus[s.callId]}};s.isMoving!==void 0&&(o.isMoving=s.isMoving),s.isTransferring!==void 0&&(o.isTransferring=s.isTransferring),s.isMerging!==void 0&&(o.isMerging=s.isMerging),this.callStatus={...this.callStatus,[s.callId]:{...o}},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=Af(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:o})=>o===s)||(this.setSelectedInputDevice(s),Object.keys(this.getActiveCalls).length===0))return;await this.setupStream();const r=Object.values(this.extendedCalls).filter(o=>o.roomId===this.currentActiveRoomId);r.length===1?Object.values(r).forEach(async o=>{const a=this.getActiveStream();o.connection.getSenders()[0].replaceTrack(a.getTracks()[0]),this.updateCall(o)}):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:a})=>a===s))return;this.setSelectedOutputDevice(s);const r=Object.values(this.extendedCalls);if(r.length===0)return;const o=r.filter(a=>a.roomId===this.currentActiveRoomId);o.length===1?r.forEach(a=>{var t;(t=a.audioTag)==null||t.setSinkId(s),this.updateCall(a)}):await this.doConference(o)}removeRoom(s){const r={...this.activeRooms},o={...r[s]};delete r[s],this.activeRooms={...r},this.context.emit("removeRoom",{room:o,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 o;if(s===void 0)return;const r=Object.values(this.extendedCalls).filter(a=>a.roomId===s);if(this.currentActiveRoomId===s?r.forEach(a=>{a.audioTag&&(this.muteReconfigure(a),a.audioTag.muted=!1,this.updateCall(a))}):r.forEach(a=>{a.audioTag&&(a.audioTag.muted=!0,this.updateCall(a))}),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&&((o=r[0].connection)!=null&&o.getSenders()[0])){const a=this.getActiveStream();await r[0].connection.getSenders()[0].replaceTrack(a.getTracks()[0]),this.muteReconfigure(r[0])}}else r.length>1&&await this.doConference(r)}async doConference(s){await Cf.forEach(s,async o=>{o._localHold&&await this.unholdCall(o._id)});const r=[];s.forEach(o=>{o!=null&&o.connection.getReceivers().forEach(a=>{r.push(a.track)})}),await Cf.forEach(s,async o=>{var n;if(o==null)return;const a=new MediaStream,t=vn.createMediaStreamDestination();if(o.connection.getReceivers().forEach(p=>{r.forEach(_=>{a.addTrack(p.track),p.track.id!==_.id&&vn.createMediaStreamSource(new MediaStream([_])).connect(t)})}),s[0].roomId===this.currentActiveRoomId){const p=this.getActiveStream();vn.createMediaStreamSource(p).connect(t)}(n=o.connection)!=null&&n.getSenders()[0]&&(await o.connection.getSenders()[0].replaceTrack(t.stream.getTracks()[0]),this.muteReconfigure(o))})}processCallerMute(s,r){const o=this.extendedCalls[s];o&&o.connection.getReceivers().length&&(o.localMuted=r,o.connection.getReceivers().forEach(a=>{a.track.enabled=!r}),this.updateCall(o))}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 o=this.extendedCalls[s];if(!o._is_confirmed&&!o._is_canceled){const a=`sip:${r}@${this.context.sipDomain}`;o.terminate({status_code:302,reason_phrase:"Moved Temporarily",extraHeaders:[`Contact: ${a}`]});return}this.updateCallStatus({callId:s,isTransferring:!0}),o.refer(`sip:${r}@${this.context.sipDomain}`),this.updateCall(o)}mergeCall(s){const r=Object.values(this.extendedCalls).filter(t=>t.roomId===s);if(r.length!==2)return;const o=r[0],a=r[1];!o||!a||(this.updateCallStatus({callId:o._id,isMerging:!0}),this.updateCallStatus({callId:a._id,isMerging:!0}),o.refer(a.remote_identity.uri.toString(),{replaces:a}),this.updateCall(o))}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 o=setInterval(()=>{const a={...this.callTime[s]},t=VT(a);this.setCallTime({callId:s,...t})},1e3);this.setTimeInterval(s,o)}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 a=this.getNewRoomId(),t={started:new Date,incomingInProgress:!1,roomId:a};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(ts.CALL_CONFIRMED,T=>{r.id===T.id&&(this.updateRoom({incomingInProgress:!1,roomId:a}),this.startCallTimer(r.id))}),this.context.subscribe(ts.CALL_FAILED,T=>{r.id===T.id&&(this.updateRoom({incomingInProgress:!1,roomId:a}),this.deleteRoomIfEmpty(a))})):r.direction==="outgoing"&&(r.once("confirmed",()=>{this.startCallTimer(r.id)}),this.startCallTimer(r.id));const n=r,p=this.hasAutoAnswerHeaders(s),_=n.direction==="incoming"&&!this.hasActiveCalls&&(p||this.autoAnswer);n.roomId=a,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 o={...this.extendedCalls};delete o[s],this.extendedCalls={...o},this.context.emit("changeActiveCalls",this.activeCalls)}activeCallListRemove(s){var a;const r=this.extendedCalls[s._id];this.stopVUMeter("origin"),(a=r.connection)==null||a.getSenders().forEach(t=>{t.track.stop()});const o=r.roomId;this.removeCall(s._id),this.roomReconfigure(o)}async newRTCSessionCallback(s){const r=s.session;if(this.isDND){r.terminate({status_code:486,reason_phrase:"Do Not Disturb"});return}if(r.on("ended",o=>{var t,n,p;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:ts.CALL_ENDED,session:r,event:o});const a=this.getActiveCalls[r.id];a&&this.activeCallListRemove(a),this.stopCallTimer(r.id),this.removeCallStatus(r.id),this.removeCallMetrics(r.id),Object.keys(this.extendedCalls).length||(this.setIsMuted(!1),(p=this.initialStreamValue)==null||p.getTracks().forEach(_=>_.stop()),this.initialStreamValue=null)}),r.on("progress",o=>{var a,t;this.context.logger.log("Session in progress for",(t=(a=r._remote_identity)==null?void 0:a._uri)==null?void 0:t._user),this.context.triggerListener({listenerType:ts.CALL_PROGRESS,session:r,event:o})}),r.on("failed",o=>{var t,n,p;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:ts.CALL_FAILED,session:r,event:o}),r.id===this.callAddingInProgress&&(this.callAddingInProgress=void 0);const a=this.getActiveCalls[r.id];a&&this.activeCallListRemove(a),this.stopCallTimer(r.id),this.removeCallStatus(r.id),this.removeCallMetrics(r.id),Object.keys(this.extendedCalls).length||(this.setIsMuted(!1),(p=this.initialStreamValue)==null||p.getTracks().forEach(_=>_.stop()),this.initialStreamValue=null)}),r.on("confirmed",o=>{var a,t;this.context.logger.log("Session confirmed for",(t=(a=r._remote_identity)==null?void 0:a._uri)==null?void 0:t._user),this.context.triggerListener({listenerType:ts.CALL_CONFIRMED,session:r,event:o}),this.updateCall(r),r.id===this.callAddingInProgress&&(this.callAddingInProgress=void 0)}),await this.setupCall(s),r.direction==="outgoing"){const o=this.getActiveCalls[r.id].roomId;this.setActiveRoom(o)}}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(no.SELECTED_INPUT_DEVICE,s),this.selectedMediaDevices.input=s,this.context.emit("changeActiveInputMediaDevice",s)}setSelectedOutputDevice(s){localStorage.setItem(no.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 Pv(this.metricConfig),o=r.createProbe(s.connection,{cid:s._id}),a=[];let t;o.onreport=n=>{Object.entries(n.audio).forEach(([d,g])=>{g.direction==="inbound"&&!a.includes(d)&&(a.push(d),t=d)});const p=n.audio[t],_=xv(p,Mv);_.callId=s._id,this.setCallMetrics(r)},this.context.subscribe(ts.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 o=Af(this.initialStreamValue,this.microphoneInputLevel*2),a=this.isMuted||this.muteWhenJoin;o.getTracks().forEach(n=>n.enabled=!a),this.setActiveStream(o),await r.connection.getSenders()[0].replaceTrack(o.getTracks()[0]);const t=new MediaStream([s.track]);RT(t,r,this.selectedOutputDevice,this.speakerVolume),this.setupVUMeter(t,r._id),this.getCallQuality(r),this.updateCall(r)}initCall(s,r){if(this.checkInitialized(),s.length===0)return console.error("Target must be a valid string");this.context.logger.log(`Calling sip:${s}@${this.context.sipDomain}...`);const o=this.context.call(`sip:${s}@${this.context.sipDomain}`,this.sipOptions);this.callAddingInProgress=o.id,r&&this.currentActiveRoomId!==void 0&&this.processRoomChange({callId:o.id,roomId:this.currentActiveRoomId}),o.connection.addEventListener("track",a=>{this.triggerAddStream(a,o)})}async processRoomChange({callId:s,roomId:r}){const o=this.extendedCalls[s].roomId;this.extendedCalls[s].roomId=r;const a=this.extendedCalls[s];return this.updateCall(a),await this.setActiveRoom(r),Promise.all([this.roomReconfigure(o),this.roomReconfigure(r)]).then(()=>{this.deleteRoomIfEmpty(o),this.deleteRoomIfEmpty(r)})}}class Hv{constructor(s){this.context=s}get sipOptions(){return{...this.context.options.sipOptions}}initCall(s){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}`,this.sipOptions),console.log("video call")}}class Fv{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]=yf(s),this.context.emit("changeActiveMessages",this.activeMessages)}addMMSRPSession(s){this.activeMessages={...this.activeMessages,[s._id]:yf(s)},this.extendedMessages[s._id]=s,this.context.emit("changeActiveMessages",this.activeMessages)}addMSRPMessage(s,r){const o=this.msrpHistory[r.id]||[];o.push(s),this.msrpHistory={...this.msrpHistory,[r.id]:[...o]},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 o=s;this.addMMSRPSession(o)}triggerMSRPListener({listenerType:s,session:r,event:o}){const a=this.context.listenersList[s];!a||!a.length||a.forEach(t=>{t(r,o)})}removeMMSRPSession(s){const r={...this.activeMessages};delete r[s],this.activeMessages={...r};const o={...this.extendedMessages};delete o[s],this.extendedMessages={...o},this.context.emit("changeActiveMessages",this.activeMessages)}activeMessageListRemove(s){this.removeMMSRPSession(s._id)}newMSRPSessionCallback(s){const r=s.session;r.on("ended",o=>{this.triggerMSRPListener({listenerType:ts.CALL_ENDED,session:r,event:o});const a=this.getActiveMessages[r.id];this.activeMessageListRemove(a)}),r.on("failed",o=>{this.triggerMSRPListener({listenerType:ts.CALL_FAILED,session:r,event:o});const a=this.getActiveMessages[r.id];this.activeMessageListRemove(a)}),r.on("confirmed",o=>{this.triggerMSRPListener({listenerType:ts.CALL_CONFIRMED,session:r,event:o}),this.updateMSRPSession(r)}),r.on("newMessage",o=>{this.addMSRPMessage(o,r)}),this.addMessageSession(r)}setIsMSRPInitializing(s){this.isMSRPInitializingValue=s,this.context.emit("isMSRPInitializingChanged",s)}initMSRP(s,r,o){if(s.length===0)return console.error("Target must be a valid string");const a=this.context.startMSRP(s,o);a.on("active",()=>{this.addMessageSession(a),a.sendMSRP(r),this.setIsMSRPInitializing(!1)}),this.setIsMSRPInitializing(!0)}sendMSRP(s,r){const o=this.extendedMessages[s];if(!o)throw new Error(`MSRP session with id ${s} doesn't exist!`);o.sendMSRP(r)}}const Xa={AUDIO:"audio",VIDEO:"video",MSRP:"msrp"};class Vv extends yT{constructor(s,r){if(!s.modules.length)throw new Error("options.modules should include at least 1 module");const o={...s.configuration,sockets:s.socketInterfaces.map(a=>new FT.WebSocketInterface(a))};super(o),this.initialized=!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().setExtraContactParams(s.pnExtraHeaders),this.options=s,this.modules=s.modules,r&&IT(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(Xa.AUDIO)&&(this.audio=new $v(this)),this.modules.includes(Xa.MSRP)&&(this.msrp=new Fv(this)),this.modules.includes(Xa.VIDEO)&&(this.video=new Hv(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.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),setTimeout(this.start.bind(this),5e3))}),this.logger.log("Connecting to",this.options.socketInterfaces[0]),this.start(),this}subscribe(s,r){const a=!this.listenersList[s]||!this.listenersList[s].length?[r]:[...this.listenersList[s],r];this.listenersList={...this.listenersList,[s]:a}}removeIListener(s){const r={...this.listenersList};delete r[s],this.listenersList={...r}}triggerListener({listenerType:s,session:r,event:o}){const a=this.listenersList[s];!a||!a.length||a.forEach(t=>{t(r,o)})}setInitialized(s){this.initialized=s,this.emit("ready",s)}}module.exports=Vv;