trtc-sdk-v5 5.12.1-beta.1 → 5.12.1-wasm.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/trtc.esm.js CHANGED
@@ -1,16 +1,14 @@
1
- var s_=Object.create;var fs=Object.defineProperty,n_=Object.defineProperties,bh=Object.getOwnPropertyDescriptor,a_=Object.getOwnPropertyDescriptors,c_=Object.getOwnPropertyNames,Ln=Object.getOwnPropertySymbols,Nh=Object.getPrototypeOf,id=Object.prototype.hasOwnProperty,vh=Object.prototype.propertyIsEnumerable,d_=Reflect.get;var or=Math.pow,td=(o,i,e)=>i in o?fs(o,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[i]=e,D=(o,i)=>{for(var e in i||(i={}))id.call(i,e)&&td(o,e,i[e]);if(Ln)for(var e of Ln(i))vh.call(i,e)&&td(o,e,i[e]);return o},w=(o,i)=>n_(o,a_(i));var Dh=(o,i)=>{var e={};for(var t in o)id.call(o,t)&&i.indexOf(t)<0&&(e[t]=o[t]);if(o!=null&&Ln)for(var t of Ln(o))i.indexOf(t)<0&&vh.call(o,t)&&(e[t]=o[t]);return e};var Ni=(o,i)=>()=>(i||o((i={exports:{}}).exports,i),i.exports),vi=(o,i)=>{for(var e in i)fs(o,e,{get:i[e],enumerable:!0})},l_=(o,i,e,t)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of c_(i))!id.call(o,r)&&r!==e&&fs(o,r,{get:()=>i[r],enumerable:!(t=bh(i,r))||t.enumerable});return o};var Ge=(o,i,e)=>(e=o!=null?s_(Nh(o)):{},l_(i||!o||!o.__esModule?fs(e,"default",{value:o,enumerable:!0}):e,o));var M=(o,i,e,t)=>{for(var r=t>1?void 0:t?bh(i,e):i,s=o.length-1,n;s>=0;s--)(n=o[s])&&(r=(t?n(i,e,r):n(r))||r);return t&&r&&fs(i,e,r),r};var d=(o,i,e)=>td(o,typeof i!="symbol"?i+"":i,e);var We=(o,i,e)=>d_(Nh(o),e,i);var f=(o,i,e)=>new Promise((t,r)=>{var s=c=>{try{a(e.next(c))}catch(l){r(l)}},n=c=>{try{a(e.throw(c))}catch(l){r(l)}},a=c=>c.done?t(c.value):Promise.resolve(c.value).then(s,n);a((e=e.apply(o,i)).next())});var it=Ni((MS,rd)=>{"use strict";var u_=Object.prototype.hasOwnProperty,tt="~";function _s(){}Object.create&&(_s.prototype=Object.create(null),new _s().__proto__||(tt=!1));function h_(o,i,e){this.fn=o,this.context=i,this.once=e||!1}function Mh(o,i,e,t,r){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new h_(e,t||o,r),n=tt?tt+i:i;return o._events[n]?o._events[n].fn?o._events[n]=[o._events[n],s]:o._events[n].push(s):(o._events[n]=s,o._eventsCount++),o}function Pn(o,i){--o._eventsCount===0?o._events=new _s:delete o._events[i]}function je(){this._events=new _s,this._eventsCount=0}je.prototype.eventNames=function(){var i=[],e,t;if(this._eventsCount===0)return i;for(t in e=this._events)u_.call(e,t)&&i.push(tt?t.slice(1):t);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i};je.prototype.listeners=function(i){var e=tt?tt+i:i,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var r=0,s=t.length,n=new Array(s);r<s;r++)n[r]=t[r].fn;return n};je.prototype.listenerCount=function(i){var e=tt?tt+i:i,t=this._events[e];return t?t.fn?1:t.length:0};je.prototype.emit=function(i,e,t,r,s,n){var a=tt?tt+i:i;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,h;if(c.fn){switch(c.once&&this.removeListener(i,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,e),!0;case 3:return c.fn.call(c.context,e,t),!0;case 4:return c.fn.call(c.context,e,t,r),!0;case 5:return c.fn.call(c.context,e,t,r,s),!0;case 6:return c.fn.call(c.context,e,t,r,s,n),!0}for(h=1,u=new Array(l-1);h<l;h++)u[h-1]=arguments[h];c.fn.apply(c.context,u)}else{var m=c.length,g;for(h=0;h<m;h++)switch(c[h].once&&this.removeListener(i,c[h].fn,void 0,!0),l){case 1:c[h].fn.call(c[h].context);break;case 2:c[h].fn.call(c[h].context,e);break;case 3:c[h].fn.call(c[h].context,e,t);break;case 4:c[h].fn.call(c[h].context,e,t,r);break;default:if(!u)for(g=1,u=new Array(l-1);g<l;g++)u[g-1]=arguments[g];c[h].fn.apply(c[h].context,u)}}return!0};je.prototype.on=function(i,e,t){return Mh(this,i,e,t,!1)};je.prototype.once=function(i,e,t){return Mh(this,i,e,t,!0)};je.prototype.removeListener=function(i,e,t,r){var s=tt?tt+i:i;if(!this._events[s])return this;if(!e)return Pn(this,s),this;var n=this._events[s];if(n.fn)n.fn===e&&(!r||n.once)&&(!t||n.context===t)&&Pn(this,s);else{for(var a=0,c=[],l=n.length;a<l;a++)(n[a].fn!==e||r&&!n[a].once||t&&n[a].context!==t)&&c.push(n[a]);c.length?this._events[s]=c.length===1?c[0]:c:Pn(this,s)}return this};je.prototype.removeAllListeners=function(i){var e;return i?(e=tt?tt+i:i,this._events[e]&&Pn(this,e)):(this._events=new _s,this._eventsCount=0),this};je.prototype.off=je.prototype.removeListener;je.prototype.addListener=je.prototype.on;je.prefixed=tt;je.EventEmitter=je;typeof rd!="undefined"&&(rd.exports=je)});var va=Ni((QI,Im)=>{"use strict";var Sm=Im.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(o){return o.encoding?"rtpmap:%d %s/%s/%s":o.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(o){return o.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(o){return o.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(o){return"extmap:%d"+(o.direction?"/%s":"%v")+(o["encrypt-uri"]?" %s":"%v")+" %s"+(o.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(o){return o.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(o){var i="candidate:%s %d %s %d %s %d typ %s";return i+=o.raddr!=null?" raddr %s rport %d":"%v%v",i+=o.tcptype!=null?" tcptype %s":"%v",o.generation!=null&&(i+=" generation %d"),i+=o["network-id"]!=null?" network-id %d":"%v",i+=o["network-cost"]!=null?" network-cost %d":"%v",i}},{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(o){var i="ssrc:%d";return o.attribute!=null&&(i+=" %s",o.value!=null&&(i+=":%s")),i}},{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(o){return o.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(o){return o.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(o){return"imageattr:%s %s %s"+(o.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(o){return"simulcast:%s %s"+(o.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(o){return"ts-refclk:%s"+(o.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(o){var i="mediaclk:";return i+=o.id!=null?"id=%s %s":"%v%s",i+=o.mediaClockValue!=null?"=%s":"",i+=o.rateNumerator!=null?" rate=%s":"",i+=o.rateDenominator!=null?"/%s":"",i}},{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(Sm).forEach(function(o){var i=Sm[o];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Rm=Ni(Gi=>{"use strict";var Bo=function(o){return String(Number(o))===o?Number(o):o},Tg=function(o,i,e,t){if(t&&!e)i[t]=Bo(o[1]);else for(var r=0;r<e.length;r+=1)o[r+1]!=null&&(i[e[r]]=Bo(o[r+1]))},Eg=function(o,i,e){var t=o.name&&o.names;o.push&&!i[o.push]?i[o.push]=[]:t&&!i[o.name]&&(i[o.name]={});var r=o.push?{}:t?i[o.name]:i;Tg(e.match(o.reg),r,o.names,o.name),o.push&&i[o.push].push(r)},Am=va(),Sg=RegExp.prototype.test.bind(/^([a-z])=(.*)/);Gi.parse=function(o){var i={},e=[],t=i;return o.split(/(\r\n|\r|\n)/).filter(Sg).forEach(function(r){var s=r[0],n=r.slice(2);s==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(Am[s]||[]).length;a+=1){var c=Am[s][a];if(c.reg.test(n))return Eg(c,t,n)}}),i.media=e,i};var Cm=function(o,i){var e=i.split(/=(.+)/,2);return e.length===2?o[e[0]]=Bo(e[1]):e.length===1&&i.length>1&&(o[e[0]]=void 0),o};Gi.parseParams=function(o){return o.split(/;\s?/).reduce(Cm,{})};Gi.parseFmtpConfig=Gi.parseParams;Gi.parsePayloads=function(o){return o.toString().split(" ").map(Number)};Gi.parseRemoteCandidates=function(o){for(var i=[],e=o.split(" ").map(Bo),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};Gi.parseImageAttributes=function(o){return o.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(Cm,{})})};Gi.parseSimulcastStreamList=function(o){return o.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=Bo(e):(t=Bo(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var bm=Ni((ZI,ym)=>{"use strict";var _l=va(),Ig=/%[sdv%]/g,Ag=function(o){var i=1,e=arguments,t=e.length;return o.replace(Ig,function(r){if(i>=t)return r;var s=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}})},qs=function(o,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[o+"="+t];if(i.names)for(var s=0;s<i.names.length;s+=1){var n=i.names[s];i.name?r.push(e[i.name][n]):r.push(e[i.names[s]])}else r.push(e[i.name]);return Ag.apply(null,r)},Cg=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Rg=["i","c","b","a"];ym.exports=function(o,i){i=i||{},o.version==null&&(o.version=0),o.name==null&&(o.name=" "),o.media.forEach(function(s){s.payloads==null&&(s.payloads="")});var e=i.outerOrder||Cg,t=i.innerOrder||Rg,r=[];return e.forEach(function(s){_l[s].forEach(function(n){n.name in o&&o[n.name]!=null?r.push(qs(s,n,o)):n.push in o&&o[n.push]!=null&&o[n.push].forEach(function(a){r.push(qs(s,n,a))})})}),o.media.forEach(function(s){r.push(qs("m",_l.m[0],s)),t.forEach(function(n){_l[n].forEach(function(a){a.name in s&&s[a.name]!=null?r.push(qs(n,a,s)):a.push in s&&s[a.push]!=null&&s[a.push].forEach(function(c){r.push(qs(n,a,c))})})})}),r.join(`\r
1
+ var XE=Object.create;var Ln=Object.defineProperty,QE=Object.defineProperties,Ch=Object.getOwnPropertyDescriptor,YE=Object.getOwnPropertyDescriptors,ZE=Object.getOwnPropertyNames,vh=Object.getOwnPropertySymbols,Nh=Object.getPrototypeOf,wh=Object.prototype.hasOwnProperty,KE=Object.prototype.propertyIsEnumerable,eT=Reflect.get;var Zi=Math.pow,ll=(i,t,e)=>t in i?Ln(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,J=(i,t)=>{for(var e in t||(t={}))wh.call(t,e)&&ll(i,e,t[e]);if(vh)for(var e of vh(t))KE.call(t,e)&&ll(i,e,t[e]);return i},Ee=(i,t)=>QE(i,YE(t));var Un=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),mi=(i,t)=>{for(var e in t)Ln(i,e,{get:t[e],enumerable:!0})},tT=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ZE(t))!wh.call(i,o)&&o!==e&&Ln(i,o,{get:()=>t[o],enumerable:!(r=Ch(t,o))||r.enumerable});return i};var Ki=(i,t,e)=>(e=i!=null?XE(Nh(i)):{},tT(t||!i||!i.__esModule?Ln(e,"default",{value:i,enumerable:!0}):e,i));var Z=(i,t,e,r)=>{for(var o=r>1?void 0:r?Ch(t,e):t,s=i.length-1,n;s>=0;s--)(n=i[s])&&(o=(r?n(t,e,o):n(o))||o);return r&&o&&Ln(t,e,o),o};var l=(i,t,e)=>ll(i,typeof t!="symbol"?t+"":t,e);var jt=(i,t,e)=>eT(Nh(i),e,t);var y=(i,t,e)=>new Promise((r,o)=>{var s=u=>{try{a(e.next(u))}catch(m){o(m)}},n=u=>{try{a(e.throw(u))}catch(m){o(m)}},a=u=>u.done?r(u.value):Promise.resolve(u.value).then(s,n);a((e=e.apply(i,t)).next())});var so=Un((YA,om)=>{"use strict";var f_=Object.prototype.hasOwnProperty,qt="~";function ma(){}Object.create&&(ma.prototype=Object.create(null),new ma().__proto__||(qt=!1));function g_(i,t,e){this.fn=i,this.context=t,this.once=e||!1}function mf(i,t,e,r,o){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new g_(e,r||i,o),n=qt?qt+t:t;return i._events[n]?i._events[n].fn?i._events[n]=[i._events[n],s]:i._events[n].push(s):(i._events[n]=s,i._eventsCount++),i}function ld(i,t){--i._eventsCount===0?i._events=new ma:delete i._events[t]}function Bt(){this._events=new ma,this._eventsCount=0}Bt.prototype.eventNames=function(){var t=[],e,r;if(this._eventsCount===0)return t;for(r in e=this._events)f_.call(e,r)&&t.push(qt?r.slice(1):r);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(e)):t};Bt.prototype.listeners=function(t){var e=qt?qt+t:t,r=this._events[e];if(!r)return[];if(r.fn)return[r.fn];for(var o=0,s=r.length,n=new Array(s);o<s;o++)n[o]=r[o].fn;return n};Bt.prototype.listenerCount=function(t){var e=qt?qt+t:t,r=this._events[e];return r?r.fn?1:r.length:0};Bt.prototype.emit=function(t,e,r,o,s,n){var a=qt?qt+t:t;if(!this._events[a])return!1;var u=this._events[a],m=arguments.length,h,g;if(u.fn){switch(u.once&&this.removeListener(t,u.fn,void 0,!0),m){case 1:return u.fn.call(u.context),!0;case 2:return u.fn.call(u.context,e),!0;case 3:return u.fn.call(u.context,e,r),!0;case 4:return u.fn.call(u.context,e,r,o),!0;case 5:return u.fn.call(u.context,e,r,o,s),!0;case 6:return u.fn.call(u.context,e,r,o,s,n),!0}for(g=1,h=new Array(m-1);g<m;g++)h[g-1]=arguments[g];u.fn.apply(u.context,h)}else{var T=u.length,A;for(g=0;g<T;g++)switch(u[g].once&&this.removeListener(t,u[g].fn,void 0,!0),m){case 1:u[g].fn.call(u[g].context);break;case 2:u[g].fn.call(u[g].context,e);break;case 3:u[g].fn.call(u[g].context,e,r);break;case 4:u[g].fn.call(u[g].context,e,r,o);break;default:if(!h)for(A=1,h=new Array(m-1);A<m;A++)h[A-1]=arguments[A];u[g].fn.apply(u[g].context,h)}}return!0};Bt.prototype.on=function(t,e,r){return mf(this,t,e,r,!1)};Bt.prototype.once=function(t,e,r){return mf(this,t,e,r,!0)};Bt.prototype.removeListener=function(t,e,r,o){var s=qt?qt+t:t;if(!this._events[s])return this;if(!e)return ld(this,s),this;var n=this._events[s];if(n.fn)n.fn===e&&(!o||n.once)&&(!r||n.context===r)&&ld(this,s);else{for(var a=0,u=[],m=n.length;a<m;a++)(n[a].fn!==e||o&&!n[a].once||r&&n[a].context!==r)&&u.push(n[a]);u.length?this._events[s]=u.length===1?u[0]:u:ld(this,s)}return this};Bt.prototype.removeAllListeners=function(t){var e;return t?(e=qt?qt+t:t,this._events[e]&&ld(this,e)):(this._events=new ma,this._eventsCount=0),this};Bt.prototype.off=Bt.prototype.removeListener;Bt.prototype.addListener=Bt.prototype.on;Bt.prefixed=qt;Bt.EventEmitter=Bt;typeof om!="undefined"&&(om.exports=Bt)});var _d=Un((wb,Rf)=>{"use strict";var bf=Rf.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(i){return i.encoding?"rtpmap:%d %s/%s/%s":i.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(i){return i.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(i){return i.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(i){return"extmap:%d"+(i.direction?"/%s":"%v")+(i["encrypt-uri"]?" %s":"%v")+" %s"+(i.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(i){return i.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(i){var t="candidate:%s %d %s %d %s %d typ %s";return t+=i.raddr!=null?" raddr %s rport %d":"%v%v",t+=i.tcptype!=null?" tcptype %s":"%v",i.generation!=null&&(t+=" generation %d"),t+=i["network-id"]!=null?" network-id %d":"%v",t+=i["network-cost"]!=null?" network-cost %d":"%v",t}},{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(i){var t="ssrc:%d";return i.attribute!=null&&(t+=" %s",i.value!=null&&(t+=":%s")),t}},{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(i){return i.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(i){return i.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(i){return"imageattr:%s %s %s"+(i.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(i){return"simulcast:%s %s"+(i.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(i){return"ts-refclk:%s"+(i.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(i){var t="mediaclk:";return t+=i.id!=null?"id=%s %s":"%v%s",t+=i.mediaClockValue!=null?"=%s":"",t+=i.rateNumerator!=null?" rate=%s":"",t+=i.rateDenominator!=null?"/%s":"",t}},{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(bf).forEach(function(i){var t=bf[i];t.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Nf=Un(Ri=>{"use strict";var tn=function(i){return String(Number(i))===i?Number(i):i},b_=function(i,t,e,r){if(r&&!e)t[r]=tn(i[1]);else for(var o=0;o<e.length;o+=1)i[o+1]!=null&&(t[e[o]]=tn(i[o+1]))},R_=function(i,t,e){var r=i.name&&i.names;i.push&&!t[i.push]?t[i.push]=[]:r&&!t[i.name]&&(t[i.name]={});var o=i.push?{}:r?t[i.name]:t;b_(e.match(i.reg),o,i.names,i.name),i.push&&t[i.push].push(o)},vf=_d(),v_=RegExp.prototype.test.bind(/^([a-z])=(.*)/);Ri.parse=function(i){var t={},e=[],r=t;return i.split(/(\r\n|\r|\n)/).filter(v_).forEach(function(o){var s=o[0],n=o.slice(2);s==="m"&&(e.push({rtp:[],fmtp:[]}),r=e[e.length-1]);for(var a=0;a<(vf[s]||[]).length;a+=1){var u=vf[s][a];if(u.reg.test(n))return R_(u,r,n)}}),t.media=e,t};var Cf=function(i,t){var e=t.split(/=(.+)/,2);return e.length===2?i[e[0]]=tn(e[1]):e.length===1&&t.length>1&&(i[e[0]]=void 0),i};Ri.parseParams=function(i){return i.split(/;\s?/).reduce(Cf,{})};Ri.parseFmtpConfig=Ri.parseParams;Ri.parsePayloads=function(i){return i.toString().split(" ").map(Number)};Ri.parseRemoteCandidates=function(i){for(var t=[],e=i.split(" ").map(tn),r=0;r<e.length;r+=3)t.push({component:e[r],ip:e[r+1],port:e[r+2]});return t};Ri.parseImageAttributes=function(i){return i.split(" ").map(function(t){return t.substring(1,t.length-1).split(",").reduce(Cf,{})})};Ri.parseSimulcastStreamList=function(i){return i.split(";").map(function(t){return t.split(",").map(function(e){var r,o=!1;return e[0]!=="~"?r=tn(e):(r=tn(e.substring(1,e.length)),o=!0),{scid:r,paused:o}})})}});var Df=Un((Mb,wf)=>{"use strict";var Sm=_d(),C_=/%[sdv%]/g,N_=function(i){var t=1,e=arguments,r=e.length;return i.replace(C_,function(o){if(t>=r)return o;var s=e[t];switch(t+=1,o){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}})},Sa=function(i,t,e){var r=t.format instanceof Function?t.format(t.push?e:e[t.name]):t.format,o=[i+"="+r];if(t.names)for(var s=0;s<t.names.length;s+=1){var n=t.names[s];t.name?o.push(e[t.name][n]):o.push(e[t.names[s]])}else o.push(e[t.name]);return N_.apply(null,o)},w_=["v","o","s","i","u","e","p","c","b","t","r","z","a"],D_=["i","c","b","a"];wf.exports=function(i,t){t=t||{},i.version==null&&(i.version=0),i.name==null&&(i.name=" "),i.media.forEach(function(s){s.payloads==null&&(s.payloads="")});var e=t.outerOrder||w_,r=t.innerOrder||D_,o=[];return e.forEach(function(s){Sm[s].forEach(function(n){n.name in i&&i[n.name]!=null?o.push(Sa(s,n,i)):n.push in i&&i[n.push]!=null&&i[n.push].forEach(function(a){o.push(Sa(s,n,a))})})}),i.media.forEach(function(s){o.push(Sa("m",Sm.m[0],s)),r.forEach(function(n){Sm[n].forEach(function(a){a.name in s&&s[a.name]!=null?o.push(Sa(n,a,s)):a.push in s&&s[a.push]!=null&&s[a.push].forEach(function(u){o.push(Sa(n,a,u))})})})}),o.join(`\r
2
2
  `)+`\r
3
- `}});var Nm=Ni(ui=>{"use strict";var Br=Rm(),yg=bm(),bg=va();ui.grammar=bg;ui.write=yg;ui.parse=Br.parse;ui.parseParams=Br.parseParams;ui.parseFmtpConfig=Br.parseFmtpConfig;ui.parsePayloads=Br.parsePayloads;ui.parseRemoteCandidates=Br.parseRemoteCandidates;ui.parseImageAttributes=Br.parseImageAttributes;ui.parseSimulcastStreamList=Br.parseSimulcastStreamList});var dh=Ni((ZV,mf)=>{"use strict";var hf=mf.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(o){return o.encoding?"rtpmap:%d %s/%s/%s":o.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(o){return o.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(o){return o.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(o){return"extmap:%d"+(o.direction?"/%s":"%v")+(o["encrypt-uri"]?" %s":"%v")+" %s"+(o.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(o){return o.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(o){var i="candidate:%s %d %s %d %s %d typ %s";return i+=o.raddr!=null?" raddr %s rport %d":"%v%v",i+=o.tcptype!=null?" tcptype %s":"%v",o.generation!=null&&(i+=" generation %d"),i+=o["network-id"]!=null?" network-id %d":"%v",i+=o["network-cost"]!=null?" network-cost %d":"%v",i}},{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(o){var i="ssrc:%d";return o.attribute!=null&&(i+=" %s",o.value!=null&&(i+=":%s")),i}},{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(o){return o.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(o){return o.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(o){return"imageattr:%s %s %s"+(o.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(o){return"simulcast:%s %s"+(o.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(o){return"ts-refclk:%s"+(o.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(o){var i="mediaclk:";return i+=o.id!=null?"id=%s %s":"%v%s",i+=o.mediaClockValue!=null?"=%s":"",i+=o.rateNumerator!=null?" rate=%s":"",i+=o.rateDenominator!=null?"/%s":"",i}},{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(hf).forEach(function(o){var i=hf[o];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var _f=Ni(tr=>{"use strict";var ls=function(o){return String(Number(o))===o?Number(o):o},tS=function(o,i,e,t){if(t&&!e)i[t]=ls(o[1]);else for(var r=0;r<e.length;r+=1)o[r+1]!=null&&(i[e[r]]=ls(o[r+1]))},iS=function(o,i,e){var t=o.name&&o.names;o.push&&!i[o.push]?i[o.push]=[]:t&&!i[o.name]&&(i[o.name]={});var r=o.push?{}:t?i[o.name]:i;tS(e.match(o.reg),r,o.names,o.name),o.push&&i[o.push].push(r)},pf=dh(),rS=RegExp.prototype.test.bind(/^([a-z])=(.*)/);tr.parse=function(o){var i={},e=[],t=i;return o.split(/(\r\n|\r|\n)/).filter(rS).forEach(function(r){var s=r[0],n=r.slice(2);s==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(pf[s]||[]).length;a+=1){var c=pf[s][a];if(c.reg.test(n))return iS(c,t,n)}}),i.media=e,i};var ff=function(o,i){var e=i.split(/=(.+)/,2);return e.length===2?o[e[0]]=ls(e[1]):e.length===1&&i.length>1&&(o[e[0]]=void 0),o};tr.parseParams=function(o){return o.split(/;\s?/).reduce(ff,{})};tr.parseFmtpConfig=tr.parseParams;tr.parsePayloads=function(o){return o.toString().split(" ").map(Number)};tr.parseRemoteCandidates=function(o){for(var i=[],e=o.split(" ").map(ls),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};tr.parseImageAttributes=function(o){return o.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(ff,{})})};tr.parseSimulcastStreamList=function(o){return o.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=ls(e):(t=ls(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var Tf=Ni((eU,gf)=>{"use strict";var lh=dh(),oS=/%[sdv%]/g,sS=function(o){var i=1,e=arguments,t=e.length;return o.replace(oS,function(r){if(i>=t)return r;var s=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}})},vn=function(o,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[o+"="+t];if(i.names)for(var s=0;s<i.names.length;s+=1){var n=i.names[s];i.name?r.push(e[i.name][n]):r.push(e[i.names[s]])}else r.push(e[i.name]);return sS.apply(null,r)},nS=["v","o","s","i","u","e","p","c","b","t","r","z","a"],aS=["i","c","b","a"];gf.exports=function(o,i){i=i||{},o.version==null&&(o.version=0),o.name==null&&(o.name=" "),o.media.forEach(function(s){s.payloads==null&&(s.payloads="")});var e=i.outerOrder||nS,t=i.innerOrder||aS,r=[];return e.forEach(function(s){lh[s].forEach(function(n){n.name in o&&o[n.name]!=null?r.push(vn(s,n,o)):n.push in o&&o[n.push]!=null&&o[n.push].forEach(function(a){r.push(vn(s,n,a))})})}),o.media.forEach(function(s){r.push(vn("m",lh.m[0],s)),t.forEach(function(n){lh[n].forEach(function(a){a.name in s&&s[a.name]!=null?r.push(vn(n,a,s)):a.push in s&&s[a.push]!=null&&s[a.push].forEach(function(c){r.push(vn(n,a,c))})})})}),r.join(`\r
4
- `)+`\r
5
- `}});var uh=Ni(ir=>{"use strict";var io=_f(),cS=Tf();ir.write=cS;ir.parse=io.parse;ir.parseParams=io.parseParams;ir.parseFmtpConfig=io.parseFmtpConfig;ir.parsePayloads=io.parsePayloads;ir.parseRemoteCandidates=io.parseRemoteCandidates;ir.parseImageAttributes=io.parseImageAttributes;ir.parseSimulcastStreamList=io.parseSimulcastStreamList});import zG from"webrtc-adapter";var of=Ge(it());var Oh=(B=>(B[B.INVALID_PARAMETER=4096]="INVALID_PARAMETER",B[B.INVALID_OPERATION=4097]="INVALID_OPERATION",B[B.NOT_SUPPORTED=4098]="NOT_SUPPORTED",B[B.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",B[B.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",B[B.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",B[B.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",B[B.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",B[B.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",B[B.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",B[B.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",B[B.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",B[B.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",B[B.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",B[B.CLIENT_BANNED=16448]="CLIENT_BANNED",B[B.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",B[B.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",B[B.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",B[B.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",B[B.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",B[B.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",B[B.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",B[B.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",B[B.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",B[B.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",B[B.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",B[B.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",B[B.API_CALL_ABORTED=16461]="API_CALL_ABORTED",B[B.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",B[B.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",B[B.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",B[B.VIDEO_ENCODE_FAILED=16465]="VIDEO_ENCODE_FAILED",B[B.AUDIO_ENCODE_FAILED=16466]="AUDIO_ENCODE_FAILED",B[B.UNKNOWN=65535]="UNKNOWN",B))(Oh||{}),A=Oh;var m_=function(o){for(let i in A)if(A[i]===o)return i;return"UNKNOWN"},od=class extends Error{constructor({name:e="RtcError",message:t,code:r=A.UNKNOWN,extraCode:s=0,constraint:n}){let a=`<${m_(r)} 0x${r.toString(16)}>`,c=`${t}${n?` constraint: ${n}`:""}${t!=null&&t.includes(a)?"":` ${a}`}`;super(c);d(this,"code");d(this,"extraCode");d(this,"message");d(this,"originMessage");d(this,"name");d(this,"constraint");this.code=r,this.extraCode=s,this.name=e,this.message=c,this.constraint=n,this.originMessage=t}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},v=od;var kh=new Date().getTime(),sd=0,wh=function(o){kh=o,sd=kh-new Date().getTime();let i=new Date;i.setTime(o),b.info(`baseTime from server: ${i} offset: ${sd}`)},gs=function(){return new Date().getTime()+sd},Vn=function(){let o=new Date;return o.setTime(gs()),o.toLocaleString()},ao=function(o){let i=String(o.getMilliseconds());return"padStart"in String.prototype&&(i=i.toString().padStart(3,"0")),`${o.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${i}`};var ft={};vi(ft,{REPORT_TYPE:()=>Ao,buildSSOPackage:()=>Pi,bytes2ms:()=>$h,calculateScaleResolutionDownNumber:()=>Io,convertObjectNumberToInt:()=>Ms,copyProperties:()=>Hh,deepClone:()=>Nr,deepCloneBasic:()=>Qn,deepMerge:()=>Bt,delay:()=>Li,fibonacci:()=>Dr,formatedTime:()=>Qh,getConstructorName:()=>_o,getContainerFromElement:()=>zh,getEnv:()=>Bh,getInternalVersion:()=>jh,getLoggerUrl:()=>wi,getMediaStreamTrackInfo:()=>ta,getMuteStateFromFlag:()=>xi,getNetworkType:()=>Dd,getNumNetworkType:()=>vr,getReconnectionTimeout:()=>Ut,getStringByteLength:()=>Ds,getTurnServer:()=>Xh,getUint32Version:()=>Zn,getValueType:()=>Re,getViewListFromView:()=>Eo,glog:()=>kd,ipv4ToUint32:()=>To,isArray:()=>Se,isAudioWorkletSupported:()=>qh,isBoolean:()=>de,isConstructor:()=>Mr,isEmpty:()=>go,isFunction:()=>ae,isLangChinese:()=>Vt,isMediaStreamTrack:()=>Wh,isNumber:()=>q,isObject:()=>pt,isOverseaSdkAppId:()=>ki,isPlainObject:()=>ze,isPortrait:()=>wd,isPromise:()=>lr,isRemoteTrack:()=>Jh,isRotate90Or270:()=>yt,isString:()=>te,isUndefined:()=>T,loadImage:()=>So,loadVideo:()=>Yh,ms2bytes:()=>Gh,ms2samples:()=>Od,normalizeUrl:()=>ea,performanceNow:()=>P,promiseAny:()=>Or,samples2ms:()=>Md,setNetworkType:()=>Yn,stringify:()=>Rt,stringifyIncludeValue:()=>vs,throttlePromise:()=>Kn});var Ed={};vi(Ed,{AUDIO_MUTE_BIT:()=>Gn,AUDIO_STAT_BIT:()=>cr,AUX_STAT_BIT:()=>Cr,AUX_STREAM_MSID:()=>hd,BACKEND_ENV:()=>$n,BASE_DOC_URL:()=>ii,BASE_HOST:()=>xh,CAPABILITIES_KEYS:()=>qn,CLASS_NAME:()=>L_,CLOUD_CONSOLE_URL:()=>g_,CROSS_ROOM_BIT:()=>ud,DATA_FREEZE_TIMING:()=>Jn,DOC_URL:()=>T_,DTLS_STATE_UNKNOWN:()=>Pt,ENV_NAME:()=>Di,EXCHANGE_SDP_TIMEOUT:()=>gd,IS_WORKER:()=>co,IS_WORKLET:()=>Es,KIBANA_EVENT:()=>ct,LOCAL_STREAM_PUBLISH_STATE:()=>Ph,LOGGER_CMD_TYPE:()=>sr,LOGGER_DOMAIN:()=>ad,LOGGER_DOMAIN_OVERSEA:()=>cd,LOG_LEVEL:()=>xt,LOG_LEVEL_NAME:()=>V_,MAIN_STREAM_MSID:()=>As,MAX_RTT:()=>ys,MICROPHONE_COMMUNICATIONS:()=>P_,MICROPHONE_DEFAULT:()=>br,MUTE_ALL_BIT:()=>I_,NAME:()=>p,NETWORK_TYPE:()=>Un,NOT_SUPPORTED_H264:()=>Rr,PAUSED_RETRY_COUNT:()=>yr,PEERCONNECTION_CONNECTING_TIMEOUT:()=>Cs,PEER_CONNECTION_STATE:()=>ge,PEER_LEAVE_REASON:()=>Td,RECOVER_CAPTURE_INTERVAL:()=>ho,REMOTE_STREAM_TYPE_AUX:()=>pd,REMOTE_STREAM_TYPE_MAIN:()=>md,RENDER_FREEZE_TIMING:()=>O_,SCHEDULE_DOMAIN:()=>Oi,SCHEDULE_TIMEOUT:()=>x_,SDP_SEMANTICS_PLAN_B:()=>lo,SDP_SEMANTICS_UNIFIED_PLAN:()=>dr,SECOND_HOST:()=>f_,SIGNAL_PING_PONG_INTERVAL:()=>S_,SIGNAL_PING_TIMEOUT:()=>E_,SIGNAL_RECONNECTION_COUNT:()=>D_,SMALL_STAT_BIT:()=>Is,SPEAKER_DEFAULT:()=>Rs,STORAGE_EXPIRES_TIME:()=>Bn,STREAM_TYPE_BIG:()=>k_,STREAM_TYPE_SMALL:()=>w_,SUBSCRIBE_SMALL_RETRY_COUNT:()=>uo,SYNC_USER_LIST_INTERVAL:()=>M_,Scene:()=>ri,THIRD_HOST:()=>__,TRANSPORT_DIRECTION:()=>ie,TRTC_ERROR_ASSISTANCE:()=>dd,TRTC_QUALITY_BAD:()=>b_,TRTC_QUALITY_DISCONNECTED:()=>v_,TRTC_QUALITY_EXCELLENT:()=>C_,TRTC_QUALITY_GOOD:()=>R_,TRTC_QUALITY_POOR:()=>y_,TRTC_QUALITY_UNKNOWN:()=>A_,TRTC_QUALITY_VERY_BAD:()=>N_,UPDATE_OFFER_TIMEOUT:()=>_d,VIDEO_MUTE_BIT:()=>Wn,VIDEO_STAT_BIT:()=>ar,audioProfileMap:()=>Fn,defaultBigVideoProfile:()=>nr,defaultSmallVideoProfile:()=>ld,getRetryCount:()=>Mi,getScriptDir:()=>p_,innerVersion:()=>Ts,loggerProxy:()=>Ss,screenProfileMap:()=>Hn,setLoggerProxy:()=>Ar,setRetryCount:()=>fd,setVersion:()=>nd,version:()=>xe,videoProfileMap:()=>Lt});var Ts="4.15.00.1600",xe="5.0.0";function nd(o){xe=o;let[i,e,t]=o.split(".").map(r=>parseInt(r,10));Ts=`${i}.${Math.min(15,e)}.${Math.min(15,t)}.${e.toString().padStart(2,"0")}${t.toString().padStart(2,"0")}`}var co=typeof importScripts!="undefined",Es=typeof registerProcessor!="undefined",p_=()=>{let o=co?self.location.href:document.currentScript.src;return o.substring(0,o.lastIndexOf("/")+1)},Ss="",Ar=o=>Ss=o,xh="web.sdk.qcloud.com",f_="web.sdk.tencent.cn",__="web.sdk.cloud.tencent.cn",g_="https://console.cloud.tencent.com/trtc",ii=`https://${xh}/trtc/webrtc/v5/doc`,T_=`${ii}/zh-cn/`,ad="https://yun.tim.qq.com",cd="https://apisgp.my-imcloud.com",dd="trtc_error_assistance",sr={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},Di={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},xt=(n=>(n[n.TRACE=0]="TRACE",n[n.DEBUG=1]="DEBUG",n[n.INFO=2]="INFO",n[n.WARN=3]="WARN",n[n.ERROR=4]="ERROR",n[n.NONE=5]="NONE",n))(xt||{}),E_=18e3,S_=2e3,Un={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},Bn=7*24*3600*1e3,Fn={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},Lt={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},nr=Lt["480p_2"],ld=Lt["120p_2"],Hn={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},p={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture"},ie={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},$n={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},ri=(e=>(e.LIVE="live",e.RTC="rtc",e))(ri||{}),ar=1,Is=2,Cr=4,cr=8,Gn=64,Wn=16,I_=112,ud=128,As="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",hd="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",md=p.MAIN,pd=p.AUXILIARY,A_=0,C_=1,R_=2,y_=3,b_=4,N_=5,v_=6,Pt="unknown",ge={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Lh=1/0;function fd(o){Lh=o}function Mi(){return Lh}var D_=30,ct={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},M_=1e4,_d=1e4,gd=1e4,dr="unified-plan",lo="plan-b",Rr=1028,Ph=(t=>(t[t.UNPUBLISH=-1]="UNPUBLISH",t[t.PUBLISHING=0]="PUBLISHING",t[t.PUBLISHED=1]="PUBLISHED",t))(Ph||{}),Jn=500,O_=1e3,k_=p.BIG,w_=p.SMALL,Cs=10*1e3,Oi={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},x_=2e3,L_={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},yr=5,br="default",Rs=br,P_="communications",V_=Object.keys(xt),Td=["normal leave","timeout leave","kick","role change"],uo=10,ho=2e3,qn=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],ys=10*1e3;var U_=function(o,i,e,t){function r(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function a(u){try{l(t.next(u))}catch(h){n(h)}}function c(u){try{l(t.throw(u))}catch(h){n(h)}}function l(u){u.done?s(u.value):r(u.value).then(a,c)}l((t=t.apply(o,i||[])).next())})},Sd=Symbol(32),Id=Symbol(16),Ad=Symbol(8),oi=class{constructor(i){this.g=i,this.consumed=0,i&&(this.need=i.next().value)}setG(i){this.g=i,this.demand(i.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(i,e){return e&&this.consume(),this.need=i,this.flush()}read(i){return U_(this,void 0,void 0,function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise((e,t)=>{var r;this.reject=t,this.resolve=n=>{delete this.lastReadPromise,delete this.resolve,delete this.need,e(n)},this.demand(i,!0)||(r=this.pull)===null||r===void 0||r.call(this,i)})})}readU32(){return this.read(Sd)}readU16(){return this.read(Id)}readU8(){return this.read(Ad)}close(){var i;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),(i=this.reject)===null||i===void 0||i.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let i=null,e=this.buffer.subarray(this.consumed),t=0,r=s=>e.length<(t=s);if(typeof this.need=="number"){if(r(this.need))return;i=e.subarray(0,t)}else if(this.need===Sd){if(r(4))return;i=e[0]<<24|e[1]<<16|e[2]<<8|e[3]}else if(this.need===Id){if(r(2))return;i=e[0]<<8|e[1]}else if(this.need===Ad){if(r(1))return;i=e[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(r(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(e.subarray(0,t)),i=this.need}else if(this.g){this.g.throw(new Error("Unsupported type"));return}}else{if(r(this.need.byteLength))return;new Uint8Array(this.need).set(e.subarray(0,t)),i=this.need}return this.consumed+=t,this.g?this.demand(this.g.next(i).value,!0):this.resolve&&this.resolve(i),i}write(i){if(i instanceof Uint8Array?this.malloc(i.length).set(i):"buffer"in i?this.malloc(i.byteLength).set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength)):this.malloc(i.byteLength).set(new Uint8Array(i)),this.g||this.resolve)this.flush();else return new Promise(e=>this.pull=e)}writeU32(i){this.malloc(4).set([i>>24&255,i>>16&255,i>>8&255,i&255]),this.flush()}writeU16(i){this.malloc(2).set([i>>8&255,i&255]),this.flush()}writeU8(i){this.malloc(1)[0]=i,this.flush()}malloc(i){if(this.buffer){let e=this.buffer.length,t=e+i;if(t<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,t);else{let r=new Uint8Array(t);r.set(this.buffer),this.buffer=r}return this.buffer.subarray(e,t)}else return this.buffer=new Uint8Array(i),this.buffer}};oi.U32=Sd;oi.U16=Id;oi.U8=Ad;var B_=128,F_=127,BS=~F_,FS=Math.pow(2,31);function Cd(o){let i=new oi;for(;o>=128;)i.malloc(1)[0]=o&255|B_,o>>>=7;return i.malloc(1)[0]=o&255,i.buffer||new Uint8Array(0)}function jn(o,i=0){let e=new oi,t=i<<3;switch(typeof o){case"boolean":let r=e.malloc(2);r[0]=t,r[1]=o?1:0;break;case"number":e.malloc(1)[0]=t,e.write(Cd(o));break;case"string":e.malloc(1)[0]=t|2;let s=new TextEncoder().encode(o);e.write(Cd(s.length));let n=e.malloc(s.length);for(let c=0;c<s.length;c++)n[c]=s[c];break;case"object":let a=new oi;if(Array.isArray(o))for(let c=0;c<o.length;c++){let l=jn(o[c],c+1);l&&a.write(l)}else{let c=1;for(let l in o){let u=jn(o[l],c++);u&&a.write(u)}}i===0?a.buffer&&e.write(a.buffer):(e.malloc(1)[0]=t|2,a.buffer&&(e.write(Cd(a.buffer.length)),e.write(a.buffer)))}return e.buffer||new Uint8Array(0)}var bs=class{constructor(){d(this,"buffer");this.buffer=[]}get data(){return this.buffer}get length(){return this.buffer.length}writeInt32(i){this.buffer.push(i>>>24&255),this.buffer.push(i>>>16&255),this.buffer.push(i>>>8&255),this.buffer.push(i&255)}writeInt16(i){this.buffer.push(i>>>8&255),this.buffer.push(i&255)}writeByte(i){this.buffer.push(i&255)}writeBytes(i){for(let e=0;e<i.length;e++)this.buffer.push(i[e])}};function Rd(o,i,e){o[e]=i>>>24&255,o[e+1]=i>>>16&255,o[e+2]=i>>>8&255,o[e+3]=i&255}function Xe(o,i){return o[i]<<24|o[i+1]<<16|o[i+2]<<8|o[i+3]}function yd(o,i){return o[i]}function mo(o,i,e){return new TextDecoder().decode(H_(o,i,e))}function H_(o,i,e){return o.slice(i,i+e)}var bd=0,Xn=2654435769,zn=16,vd=4,po=2,fo=7;function $_(o,i,e,t="AVQualityReportSvc.C2S",r=2e3,s=2,n=30){return{version:r,encryption:s,d2:"",d2Len:0,uinType:n,uin:"",uinLen:0,reqHead:{seqNumber:e,appId:o,appidAtThird:new Uint8Array(0),a2:"",a2Len:0,serviceCmd:t,serviceCmdLen:0,cookie:"",cookieLen:0,imei:"",imeiLen:0,ksid:"",ksidLen:0,clientVersionInfo:"",clientVersionInfoLen:0},busiBuff:i}}function Vh(o,i){let e=new bs,t=$_(i,o,bd);bd=bd+1&2147483647,e.writeInt32(0),e.writeInt32(t.version),e.writeByte(t.encryption);let r=new TextEncoder().encode(t.d2);e.writeInt32(r.length+4),r&&e.writeBytes(r),e.writeByte(t.uinType);let s=new TextEncoder().encode(t.uin);e.writeInt32(s.length+4),s.length&&e.writeBytes(s);let n=new bs;n.writeInt32(0),n.writeInt32(t.reqHead.seqNumber),n.writeInt32(t.reqHead.appId),n.writeByte(t.reqHead.appId>>>24&255),n.writeByte(t.reqHead.appId>>>16&255),n.writeByte(t.reqHead.appId>>>8&255),n.writeByte(t.reqHead.appId&255);for(let K=4;K<16;K++)n.writeByte(0);let a=new TextEncoder().encode(t.reqHead.a2);n.writeInt32(a.length+4),a.length&&n.writeBytes(a);let c=new TextEncoder().encode(t.reqHead.serviceCmd);n.writeInt32(c.length+4),c.length&&n.writeBytes(c);let l=new TextEncoder().encode(t.reqHead.cookie);n.writeInt32(l.length+4),l.length&&n.writeBytes(l);let u=new TextEncoder().encode(t.reqHead.imei);n.writeInt32(u.length+4),u.length&&n.writeBytes(u);let h=new TextEncoder().encode(t.reqHead.ksid);n.writeInt32(h.length+4),h.length&&n.writeBytes(h);let m=new TextEncoder().encode(t.reqHead.clientVersionInfo);n.writeInt16(m.length+2),m.length&&n.writeBytes(m);let g=n.length;n.data[0]=g>>>24&255,n.data[1]=g>>>16&255,n.data[2]=g>>>8&255,n.data[3]=g&255,te(o)&&(o=new TextEncoder().encode(o)),n.writeInt32(o.length+4),o.length&&n.writeBytes(o);let S=new Uint8Array(n.data),_=null;t.encryption===1?_=new TextEncoder().encode(t.uin):t.encryption===2&&(_=new Uint8Array(16)),_&&(S=G_(S,_)),e.writeBytes(S);let I=new Uint8Array(e.data),R=I.length;return I[0]=R>>>24&255,I[1]=R>>>16&255,I[2]=R>>>8&255,I[3]=R&255,I}function G_(o,i){let e=o.length,r=(e+1+po+fo)%8;r&&(r=8-r);let s=e+1+po+fo+r,n=new Uint8Array(s),a=0,c=new Uint8Array(8),l=new Uint8Array(8),u=new Uint8Array(8),h=0;c[0]=Math.floor(Math.random()*256)&248|r,h=1;for(let g=0;g<r;g++)c[h]=Math.floor(Math.random()*256)&255,h+=1;for(let g=0;g<po;)if(h<8&&(c[h]=Math.floor(Math.random()*256)&255,h+=1,g+=1),h===8){Nd(c,i,l,u,n,a),a+=8,h=0;for(let S=0;S<8;S++)u[S]=n[a-8+S]}let m=0;for(;m<e;)if(h<8&&(c[h]=o[m],h+=1,m+=1),h===8){Nd(c,i,l,u,n,a),a+=8,h=0;for(let g=0;g<8;g++)u[g]=n[a-8+g]}for(let g=0;g<fo;)if(h<8&&(c[h]=0,h+=1,g+=1),h===8){Nd(c,i,l,u,n,a),a+=8,h=0;for(let S=0;S<8;S++)u[S]=n[a-8+S]}return n}function Nd(o,i,e,t,r,s){for(let n=0;n<8;n++)o[n]^=t[n];W_(o,i,r,s);for(let n=0;n<8;n++)r[s+n]^=e[n];for(let n=0;n<8;n++)e[n]=o[n]}function W_(o,i,e,t){let r=Xe(o,0),s=Xe(o,4),n=[];for(let c=0;c<4;c++)n[c]=Xe(i,c*4);let a=0;for(let c=0;c<zn;c++)a+=Xn,a=a>>>0,r+=(s<<4)+n[0]^s+a^(s>>>5)+n[1],r=r>>>0,s+=(r<<4)+n[2]^r+a^(r>>>5)+n[3],s=s>>>0;Rd(e,r,t),Rd(e,s,t+4)}var Bh=function(){return new URLSearchParams(location.search).get("trtc_env")||""},ki=o=>Number(o)<14e8,wi=function(o,i){let e;Ss?e=Ss:e=ki(o)?cd:ad;let t=Math.floor(Math.random()*or(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${t}&sdkappid=${o}&cmdtype=${i}`},Ns="unknown";function Dd(){if(Ns!=="unknown")return Ns;let{userAgent:o,connection:i}=navigator,e=(o.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let t=i&&i.type&&i.type.toLowerCase(),r=i&&i.effectiveType&&i.effectiveType.toLowerCase();return r==="slow-2"&&(r="2g"),t&&(Ns=Fh(t,r)),Ns}function Fh(o,i){if(Un[o])return o;switch(o){case"cellular":case"wimax":return i||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function Yn(o){Ns=Fh(o)}function vr(){return Un[Dd()]}function Hh(o,i){for(let e of Reflect.ownKeys(i))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let t=Object.getOwnPropertyDescriptor(i,e)||"";Object.defineProperty(o,e,t)}return o}function $h(o,i=48e3){return Md(o/4,i)}function Md(o,i=48e3){return o*1e3/i}function Gh(o,i=48e3){return Od(o,i)*4}function Od(o,i=48e3){return o*i/1e3}var kd=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},Vt=()=>{let o=navigator.language;return o=o.substring(0,2),o==="zh"},ze=function(o){if(!o||typeof o!="object"||Object.prototype.toString.call(o)!="[object Object]")return!1;let i=Object.getPrototypeOf(o);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function Dr(o,i=1,e=1){return o<=1?e:Dr(o-1,e,i+e)}function Ut(o){return o>8?30*1e3:Dr(o)*1e3}function Re(o){return Reflect.apply(Object.prototype.toString,o,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var ae=o=>typeof o=="function",T=o=>typeof o=="undefined",te=o=>typeof o=="string",q=o=>typeof o=="number",de=o=>typeof o=="boolean",pt=o=>Re(o)==="object",Se=o=>Re(o)==="array",Wh=o=>Re(o)==="MediaStreamTrack".toLowerCase(),Jh=o=>o.isRemote,lr=o=>Re(o)==="promise",Mr=o=>ae(o)&&o.prototype.constructor===o,_o=o=>Mr(o)?o.prototype.constructor.name:"",qh=typeof AudioWorkletNode!="undefined";function Or(o){return new Promise((i,e)=>{let t=[];o.forEach(r=>{r.then(i).catch(s=>{t.push(s),t.length===o.length&&e(t)})})})}function P(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Uh=o=>+o<10?`0${o}`:o,jh=o=>{let i=o.match(/^\d+\.\d+\.\d+/)[0];if(!i)return o;let e=i.split("."),t=Uh(e[1])+Uh(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${t}`},J_=Object.prototype.hasOwnProperty,{toString:ZS}=Object.prototype;function go(o){if(o==null)return!0;if(typeof o=="boolean")return!1;if(typeof o=="number")return o===0;if(typeof o=="string"||typeof o=="function"||Array.isArray(o))return o.length===0;if(o instanceof Error)return o.message==="";if(ze(o))switch(Object.prototype.toString.call(o)){case"[object File]":case"[object Map]":case"[object Set]":return o.size===0;case"[object Object]":{for(let i in o)if(J_.call(o,i))return!1;return!0}}return!1}function xi(o,i){return{userId:i,hasAudio:!!(o&cr),hasVideo:!!(o&ar),hasAuxiliary:!!(o&Cr),hasSmall:!!(o&Is),audioMuted:!!(o&Gn),videoMuted:!!(o&Wn),audioAvailable:!!(o&cr)&&!(o&Gn),videoAvailable:!!(o&ar)&&!(o&Wn)}}function Xh(o){let i={urls:o.url.startsWith("turn:")||o.url.startsWith("turns:")?o.url:`turn:${o.url}`};return!T(o.username)&&!T(o.credential)&&(i.username=o.username,i.credential=o.credential,i.credentialType="password",T(o.credentialType)||(i.credentialType=o.credentialType)),i}function To(o,i=!0){if(!te(o))return 0;let e=o.split(".");return i?(Number(e[0])<<24|Number(e[1])<<16|Number(e[2])<<8|Number(e[3]))>>>0:(Number(e[3])<<24|Number(e[2])<<16|Number(e[1])<<8|Number(e[0]))>>>0}var Bt=function(o,i,e,t){if(!(pt(o)&&pt(i)))return 0;let r=0,s=Object.keys(i),n;for(let a=0,c=s.length;a<c;a++)if(n=s[a],!(T(i[n])||e&&e.includes(n)))if(pt(o[n])&&pt(i[n]))r+=Bt(o[n],i[n],e,t);else{if(t&&t.includes(i[n]))continue;o[n]!==i[n]&&(o[n]=Nr(i[n]),r+=1)}return r};function Nr(o){if(Se(o)){let i=[];return o.forEach((e,t)=>{i[t]=Nr(e)}),i}if(pt(o)){let i={};return Object.keys(o).forEach(e=>{i[e]=Nr(o[e])}),i}return o}var Eo=o=>{let i=[];if(Se(o))i=[...o];else if(te(o)){let e=document.getElementById(o);e&&i.push(e)}else o&&i.push(o);return i},zh=o=>te(o)?document.getElementById(o):o,q_=o=>{let i=c=>c<10?`0${c}`:`${c}`,e=o.getFullYear(),t=o.getMonth()+1,r=o.getDate(),s=i(o.getHours()),n=i(o.getMinutes()),a=i(o.getSeconds());return`${e}/${t}/${r} ${s}:${n}:${a}`},Qh=()=>q_(new Date);function Rt(o,{keysToInclude:i,keysToExclude:e}){try{if(Se(o))return`[${o.map(n=>Rt(n,{keysToInclude:i,keysToExclude:e})).join(",")}]`;if(!ze(o)||!Se(i)&&!Se(e))return JSON.stringify(o);let t={},r=new Set(i),s=new Set(e);return Object.keys(o).forEach(n=>{(s.size===0&&r.has(n)||r.size===0&&!s.has(n))&&(t[n]=ze(o[n])||Se(o[n])?JSON.parse(Rt(o[n],{keysToExclude:e,keysToInclude:i})):o[n])}),JSON.stringify(t)}catch(t){return"{}"}}function vs(o,i=!1){let e=[];return Object.keys(o).forEach(t=>{i===o[t]&&e.push(t)}),Rt(o,{keysToInclude:e})}function Ds(o){return o.replace(/[\u4e00-\u9fa5]/g,"aa").length}var wd=()=>{var o,i,e,t;return(o=window.screen)!=null&&o.orientation?!!((t=(e=(i=window.screen)==null?void 0:i.orientation)==null?void 0:e.type)!=null&&t.includes("portrait")):window.orientation===0||window.orientation===180},So=o=>f(void 0,null,function*(){return new Promise((i,e)=>{let t;if(te(o))t=new Image,t.crossOrigin="anonymous",t.src=o;else if(t=o,t.complete){i(t);return}t.onload=()=>i(t),t.onerror=()=>{e(new v({code:A.INVALID_PARAMETER,message:`load image failed, url: ${o}`}))}})}),Zn=o=>{let i=o.split(".");return+i[0]<<24|+i[1]<<16|+i[2]<<8|+i[3]<<0},Ms=o=>(Object.keys(o).forEach(i=>{q(o[i])&&(i.startsWith("uint")||i.startsWith("int"))?o[i]=Math.floor(o[i]):(ze(o[i])||Se(o[i]))&&Ms(o[i])}),o);function Li(o,i){return new Promise(e=>{let t=setTimeout(e,o);i&&i(t)})}function Kn(o,i){let e=null;return function(...t){return e||(e=o.apply(i||this,t),e.finally(()=>e=null),e)}}function ea(o){return o.replace(/(^|[^:])\/{2,}/g,"$1/")}function ta(o){var i;try{let{width:e,height:t,frameRate:r,sampleRate:s,sampleSize:n,channelCount:a}=(i=o.getSettings)==null?void 0:i.call(o),c=o.kind===p.AUDIO?`${s}x${n}@${a}`:`${e}x${t}@${r}`,l=o.stats?` stats: ${JSON.stringify(o.stats).replaceAll('"',"")}`:"";return`${o.id} ${o.readyState} muted:${o.muted} ${o.kind} ${o.label} ${c}${l}`}catch(e){return""}}function Io(o,i){return o.width*o.height===i.width*i.height?1:wd()&&i.width>i.height&&o.height>i.width?Math.max(o.width/i.height,o.height/i.width,1):Math.max(o.width/i.width,o.height/i.height,1)}function yt(o){return o===90||o===270}function Yh(o){return f(this,null,function*(){return new Promise((i,e)=>{let t=document.createElement("video");t.crossOrigin="anonymous",t.src=o,t.muted=!0,t.loop=!0,t.playsInline=!0,t.play().then(()=>i(t)),t.onerror=()=>{e(t.error)}})})}function Qn(o,i=new WeakMap){if(typeof o!="object"||o===null)return o;if(i.has(o))return i.get(o);if(Array.isArray(o)){let e=[];return i.set(o,e),o.forEach((t,r)=>{e[r]=Qn(t,i)}),e}if(Object.prototype.toString.call(o)==="[object Object]"){let e={};return i.set(o,e),Reflect.ownKeys(o).forEach(t=>{e[t]=Qn(o[t],i)}),e}return o}var Ao=(t=>(t[t.END_REPORT=2001]="END_REPORT",t[t.LOG=2002]="LOG",t[t.KEY_METRIC_REPORT=2003]="KEY_METRIC_REPORT",t))(Ao||{});function j_(o,i,e,t){let r={data:o,random:Math.floor(Math.random()*2147483648),sdkAppId:e};return T(t)||(r=w(D({},r),{gzip:+t})),{uint32_sdkappid:0,uint64_from_uin:0,uint32_timestamp:0,uint32_seq:0,msg_common_info:{msg_device_info:{enum_device_type:0,str_device_brand:"",str_device_model:"",str_device_board:"",str_device_cpu_abi:""},msg_system_info:{enum_os_type:0,str_os_version:"",msg_network_info:0},msg_network_info:{enum_network_type:0}},msg_report_content:{uint32_type:i,bytes_report_data:JSON.stringify(r)}}}function Pi(o,i,e,t){try{let r=j_(o,i,e,t),s=jn(r);return Vh(s,e)}catch(r){return JSON.stringify(o)}}function Zh(o){let i=X_(o);return i==null?void 0:i.busiBuff}function X_(o){try{let i={},e=0;i.totalLength=Xe(o,e),e+=4,i.version=Xe(o,e),e+=4,i.encryption=yd(o,e),e+=1,i.uinType=yd(o,e),e+=1,i.uinLength=Xe(o,e),e+=4,i.uin=i.uinLength>4?mo(o,e,i.uinLength-4):"",e+=i.uinLength-4;let t=o.slice(e);if(i.encryption===2){let r=new Uint8Array(16).fill(0);o=z_(t,r),i.decrypted=!0,e=0}else o=t,e=0;return i.rspHeadLength=Xe(o,e),e+=4,i.seqNo=Xe(o,e),e+=4,i.retCode=Xe(o,e),e+=4,i.retStrLength=Xe(o,e),e+=4,i.retStr=i.retStrLength?mo(o,e,i.retStrLength-4):"",e+=i.retStrLength-4,i.serviceCmdLength=Xe(o,e),e+=4,i.serviceCmd=i.serviceCmdLength?mo(o,e,i.serviceCmdLength-4):"",e+=i.serviceCmdLength-4,i.cookieLength=Xe(o,e),e+=4,i.cookie=i.cookieLength?mo(o,e,i.cookieLength-4):"",e+=i.cookieLength-4,i.flag=Xe(o,e),e+=4,i.busiBuffLength=Xe(o,e),e+=4,i.busiBuff=i.busiBuffLength?mo(o,e,i.busiBuffLength-4):"",e+=i.busiBuffLength-4,i}catch(i){}}function Kh(o,i){let e=o[0]<<24|o[1]<<16|o[2]<<8|o[3],t=o[4]<<24|o[5]<<16|o[6]<<8|o[7];e=e>>>0,t=t>>>0;let r=Xn*zn>>>0;for(let s=0;s<zn;s++)t-=(e<<vd)+i[2]^e+r^(e>>>5)+i[3],t=t>>>0,e-=(t<<vd)+i[0]^t+r^(t>>>5)+i[1],e=e>>>0,r-=Xn,r=r>>>0;return new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,e&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255])}function z_(o,i){let e=0,t=new Uint8Array(8).fill(0),r=new Uint8Array(o.slice(0,8)),s=Kh(r,i),n=s[0]&7,a=o.length-1-n-po-fo,c=new Uint8Array(a),l=0,u=t,h=o.slice(0,8);e=8;let m=1;m+=n;for(let S=1;S<=po;)if(m<8)m++,S++;else if(m===8){let _=xd(o,e,u,h,s,i);u=_.ivPreCrypt,h=_.ivCurCrypt,s=_.debiBuf,e=_.bufPos,m=0}let g=a;for(;g>0;)if(m<8)c[l++]=s[m]^u[m],m++,g--;else if(m===8){let S=xd(o,e,u,h,s,i);u=S.ivPreCrypt,h=S.ivCurCrypt,s=S.debiBuf,e=S.bufPos,m=0}for(let S=1;S<=fo;)if(m<8)s[m]^u[m],m++,S++;else if(m===8){if(e>=o.length)break;let _=xd(o,e,u,h,s,i);if(!_.success)break;u=_.ivPreCrypt,h=_.ivCurCrypt,s=_.debiBuf,e=_.bufPos,m=0}return c}function xd(o,i,e,t,r,s){if(i+8>o.length)return{success:!1};let n=new Uint8Array(t),a=o.slice(i,i+8),c=new Uint8Array(8);for(let u=0;u<8;u++)c[u]=r[u]^a[u];let l=Kh(c,s);return{success:!0,ivPreCrypt:n,ivCurCrypt:a,debiBuf:l,bufPos:i+8}}var em=typeof TextDecoder!="undefined"?new TextDecoder:void 0;function Vi({url:o,body:i,method:e="POST",timeout:t,priority:r}){return new Promise((s,n)=>{if("fetch"in window)return fetch(o,{method:e,body:i,priority:r}).then(c=>c.clone().json().then(l=>({data:l}),()=>c.arrayBuffer().then(l=>({data:Zh(new Uint8Array(l))||(em?em.decode(l):l)})))).then(s,n);let a=new XMLHttpRequest;a.onreadystatechange=()=>{if(a.readyState===4)if(a.status>=200&&a.status<300)try{let c=JSON.parse(a.response);s({data:c})}catch(c){s({data:a.response})}else n({status:a.status,statusText:a.statusText||"request failed!"})},a.timeout=t||5e3,a.open(e,o,!0),a.send(i)})}function Ld(o){return f(this,null,function*(){let i=P(),e=JSON.stringify(o);try{if(!CompressionStream||e.length<=2800)return e;let r=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),a=yield(yield(yield new Response(r)).blob()).arrayBuffer();return b.debug(`compressJSON ${e.length} -> ${a.byteLength} ${P()-i}ms`),a}catch(t){return e}})}var Q_=Object.prototype.hasOwnProperty;var si=o=>typeof o=="function",Ui=o=>typeof o=="undefined";var ia=o=>typeof o=="boolean";var Pd=o=>o.isRemote;var Vd=function(o){if(!o||typeof o!="object"||Object.prototype.toString.call(o)!="[object Object]")return!1;let i=Object.getPrototypeOf(o);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function tm(o){if(o==null)return!0;if(typeof o=="boolean")return!1;if(typeof o=="number")return o===0;if(typeof o=="string"||typeof o=="function"||Array.isArray(o))return o.length===0;if(o instanceof Error)return o.message==="";if(Vd(o))switch(Object.prototype.toString.call(o)){case"[object File]":case"[object Map]":case"[object Set]":return o.size===0;case"[object Object]":{for(let i in o)if(Q_.call(o,i))return!1;return!0}}return!1}var Y_=0,Z_=1,im=2;function K_({retryFunction:o,settings:i,onError:e,onRetrying:t,onRetryFailed:r,onRetrySuccess:s,context:n}){return function(...a){let{retries:c=5,timeout:l=1e3}=i,u=0,h=-1,m=Y_,g=(S,_)=>f(this,null,function*(){let I=n||this;try{let R=yield o.apply(I,a);u>0&&s&&s.call(this,u),u=0,S(R)}catch(R){let K=()=>{clearTimeout(h),u=0,m=im,_(R)},G=()=>{m!==im&&u<(si(c)?c():c)?(u++,m=Z_,si(t)&&t.call(this,u,K),h=window.setTimeout(()=>{h=-1,g(S,_)},si(l)?l(u):l)):(K(),si(r)&&r.call(this,R))};si(e)?e.call(this,{error:R,retry:G,reject:_,retryFuncArgs:a,retriedCount:u}):G()}});return new Promise(g)}}var ni=K_;var Co=class{constructor(i){d(this,"userId");d(this,"remoteUserId");d(this,"id");d(this,"sdkAppId");d(this,"type");d(this,"isLocal");this.id=i.id,this.userId=i.userId,this.sdkAppId=i.sdkAppId,this.remoteUserId=i.remoteUserId,this.isLocal=ia(i.isLocal)?i.isLocal:!0,this.type=this.isLocal?"":i.type}createChild(i){return Object.setPrototypeOf(i,this)}setUserId(i){this.userId=i}setSdkAppId(i){this.sdkAppId=i}log(i,e){let t=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${t?`|${t}`:""}]`),b.log(i,e,Ui(this.userId)||tm(this.userId),this.userId,this.sdkAppId)}info(...i){this.log(2,i)}debug(...i){this.log(1,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}};var xo={};vi(xo,{ANDROID_VERSION:()=>Fd,CHROME_MAJOR_VERSION:()=>dt,CHROME_VERSION:()=>Sa,EDGE_VERSION:()=>oa,EDG_MAJOR_VERSION:()=>Hd,EDG_VERSION:()=>sa,FIREFOX_MAJOR_VERSION:()=>bo,FIREFOX_VERSION:()=>ra,HUAWEI_VERSION:()=>fa,IE_VERSION:()=>og,IOS_MAIN_VERSION:()=>Je,IOS_VERSION:()=>_t,IPADQQB_VERSION:()=>ma,IS_ANDROID:()=>pe,IS_ANDROID_WEBVIEW:()=>cg,IS_ANY_SAFARI:()=>ci,IS_CHROME:()=>wo,IS_CHROME_OS:()=>$d,IS_CHROMIUM_BASE:()=>Qe,IS_DESKTOP_IOS_CHROME:()=>Qd,IS_EDG:()=>No,IS_EDGE:()=>kr,IS_ELECTRON:()=>ng,IS_FIREFOX:()=>ne,IS_HEADLESS_CHROME:()=>qd,IS_HONOR:()=>Jd,IS_HUAWEI:()=>Wd,IS_HUAWEIBROWSER:()=>Us,IS_IE:()=>nm,IS_IE8:()=>rg,IS_IOS:()=>Ie,IS_IOS_13_OR_14:()=>zd,IS_IOS_15_1:()=>Xd,IS_IOS_CHROME:()=>am,IS_IPAD:()=>yo,IS_IPADQQB:()=>Ls,IS_IPAD_PRO:()=>Bd,IS_IPHONE:()=>ur,IS_IPOD:()=>sm,IS_LINUX:()=>Ps,IS_LOCAL:()=>Wt,IS_MAC:()=>Gt,IS_MACQQB:()=>xs,IS_MIBROWSER:()=>Vs,IS_MQQB:()=>Oo,IS_NATIVE_ANDROID:()=>ig,IS_OLD_ANDROID:()=>tg,IS_OPENHARMONY:()=>Ea,IS_OPPOBROWSER:()=>Fs,IS_SAFARI:()=>Oe,IS_SAFARI_15_1:()=>dg,IS_SAMSUNGBROWSER:()=>Bs,IS_SOGOU:()=>ks,IS_SOGOUM:()=>Os,IS_TBS:()=>$t,IS_UCBROWSER:()=>Gd,IS_VIVOBROWSER:()=>Hs,IS_WECHAT:()=>Do,IS_WIN:()=>wr,IS_WQQB:()=>ws,IS_WX:()=>sg,IS_X5MQQB:()=>Mo,IS_XWEB:()=>vo,MACQQB_VERSION:()=>ha,MI_VERSION:()=>pa,MQQB_VERSION:()=>Ro,OPENHARMONY_VERSION:()=>ag,OPPO_VERSION:()=>ga,SAFARI_VERSION:()=>Bi,SAMSUNG_VERSION:()=>_a,SOGOUM_VERSION:()=>na,SOGOU_VERSION:()=>aa,TBS_VERSION:()=>ca,UA_DATA_STRING:()=>Ft,USER_AGENT:()=>Ht,VIVO_VERSION:()=>Ta,WECHAT_VERSION:()=>la,WQQB_VERSION:()=>ua,XWEB_VERSION:()=>da,browserInfo:()=>ai,getBrowserCoreNumber:()=>Kd,getBrowserInfo:()=>cm,getChromeMajorVersion:()=>ko,getDeviceModel:()=>Lr,getGPUInfo:()=>Zd,getOSName:()=>Ia,getOSNumber:()=>Pr,getOSString:()=>Hi,getOSType:()=>lg,getTerminalType:()=>el,getUserAgentData:()=>xr,isLocalStorageEnabled:()=>Fi,isMobile:()=>Yd,isVersionLargerThan:()=>jd,isVersionSmallerThan:()=>$s});var Ht=typeof navigator=="undefined"?"":navigator.userAgent,Q=o=>new RegExp(o,"i").test(Ht),Me=o=>{if(Q(o)){let i=new RegExp(`${o}\\/([\\d.]+)`),e=Ht.match(i);if(e&&e[1])return e[1]}return""},Ud=o=>{if(Q(o)){let i=new RegExp(`${o}\\/(\\d+)`),e=Ht.match(i);if(e&&e[1])return parseFloat(e[1])}return NaN},rm=/AppleWebKit\/([\d.]+)/i.exec(Ht),eg=rm?parseFloat(rm[1]):NaN,yo=Q("iPad"),Bd=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&Q("Macintosh"),ur=Q("iPhone")&&!yo,sm=Q("iPod"),Ie=ur||yo||sm||Bd,pe=Q("Android"),Fd=function(){if(pe){let o=Ht.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(o){let i=o[1]&&parseFloat(o[1]),e=o[2]&&parseFloat(o[2]);if(i&&e)return parseFloat(`${o[1]}.${o[2]}`);if(i)return i}}return NaN}(),tg=pe&&Q("webkit")&&Fd<2.3,ig=pe&&Fd<5&&eg<537,ne=Q("Firefox"),ra=Me("Firefox"),bo=Ud("Firefox"),kr=Q("Edge"),oa=Me("Edge"),No=Q("Edg"),sa=Me("Edg"),Hd=Ud("Edg"),Os=Q("SogouMobileBrowser"),na=Me("SogouMobileBrowser"),ks=Q("MetaSr\\s"),aa=Me("MetaSr\\s"),$t=Q("TBS"),ca=Me("TBS"),vo=Q("XWEB"),da=Me("XWEB"),rg=Q("MSIE\\s8\\.0"),nm=Q("MSIE\\/\\d+"),og=function(){if(nm){let o=/MSIE\s(\d+)\.\d/.exec(Ht),i=o&&parseFloat(o[1]);return!i&&/Trident\/7.0/i.test(Ht)&&/rv:11.0/.test(Ht)&&(i=11),i}return NaN}(),Do=Q("(micromessenger|webbrowser)"),la=Me("MicroMessenger"),Mo=!$t&&Q("MQQBrowser")&&Q("COVC"),Oo=!$t&&Q("MQQBrowser")&&!Q("COVC"),Ro=Oo||Mo?Me("MQQBrowser"):"",ws=!$t&&Q(" QQBrowser"),ua=Me(" QQBrowser"),xs=!$t&&Q("QQBrowserLite"),ha=Me("QQBrowserLite"),Ls=!$t&&Q("MQBHD"),ma=Me("MQBHD"),wr=Q("Windows"),Gt=!Ie&&Q("MAC OS X"),Ps=!pe&&Q("Linux"),$d=Q("CrOS"),sg=Q("MicroMessenger"),Gd=Q("UCBrowser"),ng=Q("Electron"),Vs=Q("MiuiBrowser"),pa=Me("MiuiBrowser"),Us=Q("HuaweiBrowser"),Wd=Q("Huawei")||Q("HUAWEI"),Jd=Q("Honor")||Q("HONOR"),fa=Me("HuaweiBrowser"),Bs=Q("SamsungBrowser"),_a=Me("SamsungBrowser"),Fs=Q("HeyTapBrowser"),ga=Me("HeyTapBrowser"),Hs=Q("VivoBrowser"),Ta=Me("VivoBrowser"),Ea=Q("OpenHarmony"),ag=Me("OpenHarmony"),ko=()=>Ud("Chrome"),Qe=Q("Chrome"),wo=!kr&&!ks&&!Os&&!$t&&!vo&&!No&&!ws&&!Vs&&!Us&&!Bs&&!Fs&&!Hs&&Qe,qd=Q("HeadlessChrome"),dt=ko(),Sa=Me("Chrome"),Oe=!Qe&&!Oo&&!Mo&&!xs&&!Ls&&Q("Safari"),ci=Oe||Ie,Bi=Me("Version"),cg=/Android.*(wv|.0.0.0)/.test(Ht),_t=(()=>{if(Bd)return Bi;if(Ie){let o=Ht.match(/OS (\d+)_(\d+)/i);if(o&&o[1]){let i=o[1];return o[2]&&(i+=`.${o[2]}`),i}}return""})();function $s(o,i){let e=o.split(".").map(r=>Number(r)),t=i.split(".").map(r=>Number(r));for(let r=0;r<Math.max(e.length,t.length);r++){let s=e[r]||0,n=t[r]||0;if(s<n)return!0;if(s>n)return!1}return!1}function jd(o,i,e=!1){let t=o.split(".").map(s=>Number(s)),r=i.split(".").map(s=>Number(s));for(let s=0;s<Math.max(t.length,r.length);s++){let n=t[s]||0,a=r[s]||0;if(n>a)return!0;if(n<a)return!1}return e}var Je=Number(_t.split(".")[0]),dg=Bi==="15.1",Xd=_t==="15.1",zd=(()=>{let o=Number(_t.split(".")[0]);return o===14||o===13})(),am=Q("CriOS"),Qd=am&&Bi==="11.1.1",Wt=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",Fi=(()=>{let o;return()=>{if(typeof o=="undefined")try{o=!!window.localStorage}catch(i){o=!1}return o}})(),ai=cm();function cm(){let o=new Map([[ne,["Firefox",ra]],[No,["Edg",sa]],[wo,["Chrome",Sa]],[Oe,["Safari",Bi]],[$t,["TBS",ca]],[vo,["XWEB",da]],[Do&&ur,["WeChat",la]],[ws,["QQ(Win)",ua]],[Oo,["QQ(Mobile)",Ro]],[Mo,["QQ(Mobile X5)",Ro]],[xs,["QQ(Mac)",ha]],[Ls,["QQ(iPad)",ma]],[Vs,["MI",pa]],[Us,["HW",fa]],[Bs,["Samsung",_a]],[Fs,["OPPO",ga]],[Hs,["VIVO",Ta]],[kr,["EDGE",oa]],[Os,["SogouMobile",na]],[ks,["Sogou",aa]]]),i="unknown",e="unknown";return o.has(!0)&&([i,e]=o.get(!0)),{name:i,version:e}}var ce=null;function Yd(){return ce&&typeof ce.mobile=="boolean"?ce.mobile:pe||Ie||ur||yo||Ea}var Ft="";function xr(){return f(this,null,function*(){if(ce)return ce;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return ce=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),ce&&!Ft&&(Ft=`UAData: ${ce.platform}/${ce.platformVersion}`,ce.architecture&&ce.bitness&&(Ft+=` ${ce.architecture}/${ce.bitness}`),ce.mobile&&(Ft+=" mobile"),ce.model&&(Ft+=` model: ${ce.model.replace(/\s+/g,"/")}`),ce.fullVersionList&&(Ft+=` ${ce.fullVersionList.filter(o=>o.brand!=="Not/A)Brand").map(o=>`${o.brand}/${o.version}`).join(",")}`)),ce}catch(o){return null}})}function Zd(){try{let o=document.createElement("canvas"),i=o.getContext("webgl")||o.getContext("experimental-webgl");if(!i)return"";let e=i.getExtension("WEBGL_debug_renderer_info");if(e){let t=i.getParameter(e.UNMASKED_VENDOR_WEBGL),r=i.getParameter(e.UNMASKED_RENDERER_WEBGL);return`${t} ${r}`}return""}catch(o){return""}}function Lr(){return(ce==null?void 0:ce.model)||""}var om=new Map([[pe,"Android"],[Ie,"iOS"],[wr,"Windows"],[Gt,"MacOS"],[Ps,"Linux"],[$d,"ChromeOS"]]),Ia=function(){return om.get(!0)?om.get(!0):ce?ce.platform:"unknown"};function Pr(){return wr?1:pe?2:Gt?3:Ie?4:Ps?5:$d?6:Ea?7:0}function Kd(){return Qe?1:Oe?2:ne?3:0}var Hi=()=>{let o=Ia();return o+=`/${ai.name}/${Oe?ai.version:ai.version.split(".")[0]}`,ce!=null&&ce.platformVersion&&(o+=`/${ce.platformVersion}`),ce!=null&&ce.architecture&&(o+=`/${ce.architecture}`),o};function el(){return pe?4:ur?2:yo?3:Gt?12:wr?5:Ps?13:Ea?22:1}function lg(){return pe?"Android":ur?"iPhone":yo?"iPad":Gt?"Mac":wr?"Windows":Ps?"Linux":"unknown"}var dm=Ge(it(),1),ug=new dm.default,E=ug;var bt=(H=>(H.ROOM_DESTROY="1",H.JOIN_START="21",H.JOIN_SCHEDULE_SUCCESS="22",H.JOIN_SIGNAL_CONNECTION_START="23",H.JOIN_SIGNAL_CONNECTION_END="24",H.JOIN_SEND_CMD="25",H.JOIN_RECEIVED_CMD_RES="26",H.JOIN_SUCCESS="27",H.JOIN_FAILED="28",H.LEAVE_START="51",H.LEAVE_SEND_CMD="52",H.LEAVE_SUCCESS="53",H.PUBLISH_START="61",H.SEND_FIRST_VIDEO_FRAME="62",H.PUBLISH_FAILED="63",H.SUBSCRIBE_START="81",H.SUBSCRIBE_SUCCESS="82",H.SUBSCRIBE_FAILED="84",H.UNSUBSCRIBE_SUCCESS="83",H.LOCAL_TRACK_CAPTURE_START="101",H.LOCAL_TRACK_CAPTURE_SUCCESS="102",H.LOCAL_TRACK_CAPTURE_FAILED="103",H.LOCAL_TRACK_PUBLISHED="104",H.LOCAL_TRACK_UNPUBLISHED="105",H.LOCAL_TRACK_REPLACED="106",H.SWITCH_DEVICE_SUCCESS="107",H.TRACK_MUTED="108",H.TRACK_UNMUTED="109",H.REMOTE_TRACK_SUBSCRIBED="110",H.REMOTE_TRACK_UNSUBSCRIBED="111",H.LOCAL_TRACK_RECAPTURE="112",H.LOCAL_AUDIO_STARTED="113",H.LOCAL_AUDIO_STOPPED="114",H.REMOTE_AUDIO_STARTED="115",H.REMOTE_AUDIO_STOPPED="116",H.PLAY_TRACK_START="151",H.PLAYER_STATE_CHANGED="152",H.VIDEO_LOADED_DATA="153",H.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",H.SIGNAL_CONNECTION_STATE_CHANGED="201",H.PEER_CONNECTION_STATE_CHANGED="202",H.SINGLE_CONNECTION_STAT="203",H.SPC_RECONNECTED="204",H.HEARTBEAT_REPORT="251",H.RECEIVED_PUBLISHED_USER_LIST="252",H.REMOTE_PUBLISH_STATE_CHANGED="253",H.AUDIO_LEVEL_INTERVAL="260",H.NETWORK_QUALITY="261",H.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",H.QUALITY_LIMITATION_CHANGED="263",H.LOG="264",H.AUDIO_PROCESSOR_DEBUG="265",H.SSO="266",H.SWITCH_ROOM_START="401",H.SWITCH_ROOM_SUCCESS="407",H.SWITCH_ROOM_FAILED="408",H))(bt||{});var C=bt;var hg="%cTRTC%c%s",mg="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",pg="display: inline",Aa=class Aa{constructor(){d(this,"_isEnableUploadLog",!0);d(this,"_localJoinedUser",new Map);d(this,"_queue",[]);d(this,"_timeoutId",-1);d(this,"_logLevel",1);d(this,"_logLevelToUpload",2);d(this,"_sso",!1);!co&&!Es&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){E.on(C.JOIN_SCHEDULE_SUCCESS,({schedule:i})=>{var e,t;(e=i==null?void 0:i.config)!=null&&e.logLevelToUpload&&xt[i.config.logLevelToUpload]&&(this._logLevelToUpload=i.config.logLevelToUpload),(t=i==null?void 0:i.config)!=null&&t.sso&&(this._sso=!0)}),E.on(C.JOIN_SUCCESS,({room:i})=>{this.addJoinedUser({userId:i.userId,sdkAppId:i.sdkAppId}),this.startUpload()}),E.once(C.JOIN_FAILED,()=>{this.startUpload()}),E.on(C.LEAVE_SUCCESS,({room:i})=>{this.deleteJoinedUser(i.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(i){this._localJoinedUser.set(i.userId,i),this.startUpload()}deleteJoinedUser(i){this._localJoinedUser.delete(i)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let i={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return i;let e=0;for(;e<this._queue.length&&e!==50;e++){let t=this._queue[e];if(t.forAllJoinedClients)this._localJoinedUser.forEach(({userId:r,sdkAppId:s})=>{i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:s,logs:[t]})});else if(te(t.userId)&&q(t.sdkAppId)){let{userId:r,sdkAppId:s}=t;i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:s,logs:[t]})}}return i.map.size>0&&(i.splicedQueue=this._queue.splice(0,e)),i}upload(){return f(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:i,splicedQueue:e}=this.getLogsToUpload();if(i.size===0)return;try{let r=[...i.values()];for(let s=0;s<r.length;s++){let{userId:n,sdkAppId:a,logs:c}=r[s],l={timestamp:Vn(),sdkAppId:String(a),userId:n,version:xe,log:c.map(h=>h.log).join(`
6
- `)},u=this._sso?Pi(l,2002,a):JSON.stringify(l);yield this.uploadLogWithRetry(u,a,u instanceof Uint8Array),c.forEach(h=>h.uploaded=!0)}}catch(r){}let t=e.filter(r=>!r.uploaded);t.length>0&&(this._queue=t.concat(this._queue))})}uploadLogWithRetry(i,e,t){return ni({retryFunction:()=>Vi({url:wi(e,sr.LOG),body:i,timeout:5e3,priority:"low"}).then(r=>{t&&E.emit(C.SSO,{result:r.data==="ok"})}),settings:{retries:3,timeout:2e3},onError:({retry:r})=>{r()}})()}getPrefix(i){let e=new Date;return e.setTime(gs()),`[${ao(e)}] <${xt[i]}>`}getLogLevel(){return this._logLevel}setLogLevel(i){T(xt[i])||(this._logLevel!==i&&this.info("setLogLevel",i),this._logLevel=i)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(i){if(te(i))return i;try{return i instanceof Error?i.toString():JSON.stringify(i)}catch(e){return""}}log(i,e,t=!0,r,s){var c;e.unshift(this.getPrefix(i));let n={log:e.reduce((l,u)=>`${l} ${this.logChunkToString(u)}`.trim(),""),level:i,userId:r,sdkAppId:s,forAllJoinedClients:t};if(E.emit(C.LOG,{log:n}),this._isEnableUploadLog&&i>=this._logLevelToUpload&&this._queue.push(n),i<this._logLevel)return;let a=((c=xt[i])==null?void 0:c.toLowerCase())||"info";Aa.PRINT_LOG_TAG?console[a](hg,mg,pg,...e):console[a](...e)}debug(...i){this.log(1,i)}info(...i){this.log(2,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}createLogger(i){return new Co(i)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),t=e?Number(e):-1;xt[t]&&(this._logLevelToUpload=t)}getQueue(){return this._queue}};d(Aa,"PRINT_LOG_TAG",!(Ie||pe||qd));var tl=Aa,b=new tl;var fg=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,o=>{let i=Math.random()*16|0;return(o=="x"?i:i&3|8).toString(16)})},Gs=fg;var il=class{constructor(){d(this,"_prefix","TRTC");d(this,"_queue",new Map)}getRealKey(i){return`${this._prefix}_${i}`}checkStorage(){if(!Fi())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(t=>{if(t.startsWith(this._prefix))try{let r=localStorage.getItem(t);if(!r)return!1;let s=JSON.parse(r);if(s&&s.expiresIn<Date.now())return!0}catch(r){return!1}return!1}).forEach(t=>localStorage.removeItem(t))}doFlush(){if(Fi())try{for(let[i,e]of this._queue)localStorage.setItem(i,JSON.stringify(e))}catch(i){b.warn(i)}}getItem(i){if(!Fi())return null;try{let e=localStorage.getItem(this.getRealKey(i));if(!e)return null;let t=JSON.parse(e);return t&&t.expiresIn>=Date.now()?t.value:null}catch(e){b.warn(e)}}setItem(i,e){if(Fi())try{let t={expiresIn:Date.now()+Bn,value:e};this._queue.set(this.getRealKey(i),t)}catch(t){b.warn(t)}}deleteItem(i){if(!Fi())return!1;try{return i=this.getRealKey(i),this._queue.delete(i),localStorage.removeItem(i),!0}catch(e){return b.warn(e),!1}}clear(){if(Fi())try{localStorage.clear()}catch(i){b.warn(i)}}},Lo=new il;var pi={};vi(pi,{HTTPS_API:()=>Vg,IS_GET_CAPABILITIES_SUPPORTED:()=>Nl,IS_GET_SETTINGS_SUPPORTED:()=>mi,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>bl,IS_INSERTABLE_STREAM_SUPPORTED:()=>Ji,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>Ua,IS_RTC_RTP_SENDER_SUPPORTED:()=>zs,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>$o,IS_SEI_SUPPORTED:()=>Ys,IS_SPC_SUPPORTED:()=>Ho,basis:()=>Hg,capabilityCheck:()=>Dl,checkSystemRequirementsInternal:()=>La,decodeSupportStatus:()=>xa,detectVideoCodecCapabilities:()=>Ml,detectVideoDecoderCapabilities:()=>$m,detectVideoEncoderCapabilities:()=>Hm,encodeSupportStatus:()=>Rl,getBrowserInfo:()=>Og,getDisplayResolution:()=>km,isAddTransceiverSupported:()=>ut,isBrowserSupported:()=>Al,isCanvasCaptureStreamAPISupported:()=>Lm,isCanvasSmallStreamSupported:()=>Pa,isGetReceiversSupported:()=>Hr,isGetSendersSupported:()=>mr,isGetTransceiversSupported:()=>hi,isGetUserMediaSupported:()=>wm,isMediaDevicesSupported:()=>wa,isMediaSessionSupported:()=>Um,isMediaStreamTrackProcessorSupported:()=>js,isReplaceTrackSupported:()=>yl,isRequestVideoFrameCallbackSupported:()=>$r,isSIMDSupported:()=>Fg,isScaleResolutionDownBySupported:()=>Pm,isScreenCaptureApiAvailable:()=>Xs,isSelectedCandidatePair:()=>hr,isSetParametersSupported:()=>Qs,isSetSinkIdSupported:()=>xg,isSmallStreamSupported:()=>Va,isStopTransceiverSupported:()=>Bg,isTRTCSupported:()=>wg,isUnifiedPlanDefault:()=>Ug,isUsedInHttpProtocol:()=>Wi,isWebAudioSupported:()=>xm,isWebCodecSupported:()=>Vm,isWebCodecsSupported:()=>Cl,isWebRTCSupported:()=>vl,isWebTransportSupported:()=>Bm});var fl={};vi(fl,{AUDIO_LEVEL_SCALE:()=>Tt,AudioCodecPipelineType:()=>hl,AudioDecoderDowngradeState:()=>nl,AudioPlayerMode:()=>ll,AudioType:()=>mm,BASIC_TYPE:()=>$i,BannedReason:()=>ul,CONNECTION_CLOSED_REASON:()=>ol,CheckPermissionType:()=>pl,ClientEvent:()=>lm,CodecType:()=>Tm,ConnectionEvent:()=>Jt,ConnectionState:()=>gt,DECODE_FAILED_ERROR_CODE:()=>ml,FacingMode:()=>ya,FrameWorkType:()=>Ca,LeaveReason:()=>gm,LocalTrackEvent:()=>Po,MULTI_VIDEO_DATA_TYPE:()=>qt,MediaType:()=>Le,MediaTypeLabel:()=>_g,MonitorEventId:()=>Ws,MutedFlag:()=>hm,NetworkQualityValue:()=>dl,PlayerState:()=>Vr,ReceiveMode:()=>_m,RemoteStreamType:()=>lt,RemoteTrackEvent:()=>Vo,RoomEvent:()=>di,SMALL_MODE:()=>Js,SceneNumber:()=>sl,StreamEvent:()=>um,StreamType:()=>fm,SubscribeMediaType:()=>rl,TIMER_TYPE:()=>Xt,TRACK_ACTION:()=>cl,TRACK_KIND:()=>al,TrackEvent:()=>li,UserRole:()=>rt,UserRoleNumber:()=>Ur,VideoCodec:()=>jt,VideoCodecPipelineType:()=>Na,VideoContentHint:()=>Uo,VideoDecoderDowngradeState:()=>Ra,VideoPlayerMode:()=>ba,VideoType:()=>pm});var Ca=(e=>(e[e.WEBRTC=30]="WEBRTC",e[e.WASM=37]="WASM",e))(Ca||{}),Jt=(_=>(_.TRACK_ADDED="track-added",_.TRACK_UPDATED="track-updated",_.TRACK_SUBSCRIBED="track-subscribed",_.STREAM_ADDED="stream-added",_.STREAM_REMOVED="stream-removed",_.STREAM_UPDATED="stream-updated",_.STREAM_PUBLISHED="stream-published",_.STREAM_SUBSCRIBED="stream-subscribed",_.STREAM_UNSUBSCRIBED="stream-unsubscribed",_.STATE_CHANGED="state-changed",_.ERROR="error",_.CONNECTION_STATE_CHANGED="connection-state-changed",_.FIREWALL_RESTRICTION="firewall-restriction",_.SEI_MESSAGE="sei-message",_.CLOSED="closed",_))(Jt||{}),ol=(n=>(n.REMOTE_LEAVE="remote user exitRoom",n.REMOTE_UNPUBLISH="remote user unpublished",n.LOCAL_LEAVE="you exitRoom",n.LOCAL_UNPUBLISH="you unpublished",n.LOCAL_UNSUBSCRIBE="you unsubscribed",n.SWITCH_ROLE="you switch role to audience",n))(ol||{}),lm=(I=>(I.STREAM_ADDED="stream-added",I.STREAM_REMOVED="stream-removed",I.STREAM_UPDATED="stream-updated",I.STREAM_SUBSCRIBED="stream-subscribed",I.CONNECTION_STATE_CHANGED="connection-state-changed",I.PEER_JOIN="peer-join",I.PEER_LEAVE="peer-leave",I.MUTE_AUDIO="mute-audio",I.MUTE_VIDEO="mute-video",I.UNMUTE_AUDIO="unmute-audio",I.UNMUTE_VIDEO="unmute-video",I.CLIENT_BANNED="client-banned",I.NETWORK_QUALITY="network-quality",I.AUDIO_VOLUME="audio-volume",I.SEI_MESSAGE="sei-message",I.ERROR="error",I))(lm||{}),um=(s=>(s.PLAYER_STATE_CHANGED="player-state-changed",s.SCREEN_SHARING_STOPPED="screen-sharing-stopped",s.CONNECTION_STATE_CHANGED="connection-state-changed",s.DEVICE_AUTO_RECOVERED="device-auto-recovered",s.ERROR="error",s))(um||{}),Po=(a=>(a.DEVICE_AUTO_RECOVERED="1",a.DEVICE_RECOVER_FAILED="5",a.DEVICE_CHANGED="2",a.ERROR="3",a.PUBLISH_STATE_CHANGED="4",a.ENCODE_FAILED="6",a.TRACK_ENDED="7",a))(Po||{}),Vr=(t=>(t.PAUSED="PAUSED",t.PLAYING="PLAYING",t.STOPPED="STOPPED",t))(Vr||{}),di=(ee=>(ee.PEER_JOIN="peer-join",ee.PEER_LEAVE="peer-leave",ee.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",ee.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",ee.BANNED="banned",ee.NETWORK_QUALITY="network-quality",ee.AUDIO_VOLUME="audio-volume",ee.SEI_MESSAGE="sei-message",ee.ERROR="error",ee.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",ee.REMOTE_PUBLISHED="remote-published",ee.REMOTE_UNPUBLISHED="remote-unpublished",ee.FIREWALL_RESTRICTION="firewall-restriction",ee.HEARTBEAT_REPORT="heartbeat-report",ee.CUSTOM_MESSAGE="custom-message",ee.LAYER_DATA="layerData",ee.FIRST_VIDEO_FRAME="first-video-frame",ee.DUMP="dump",ee.AUDIO_FRAME="audio-frame",ee.SUBSCRIBE_SMALL_VIDEO_CHANGED="subscribe-small-video-changed",ee))(di||{}),li=(a=>(a.PLAYER_STATE_CHANGED="player-state-changed",a.MUTE="mute",a.UNMUTE="unmute",a.ERROR="error",a.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",a.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",a.FIRST_VIDEO_FRAME="first-video-frame",a))(li||{}),Vo=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(Vo||{}),hm=(a=>(a[a.VIDEO=1]="VIDEO",a[a.SMALL=2]="SMALL",a[a.AUX=4]="AUX",a[a.AUDIO=8]="AUDIO",a[a.VIDEO_MUTE=16]="VIDEO_MUTE",a[a.AUX_MUTE=32]="AUX_MUTE",a[a.AUDIO_MUTE=64]="AUDIO_MUTE",a))(hm||{}),sl=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(sl||{}),Ur=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(Ur||{}),rt=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(rt||{}),gt=(s=>(s.CONNECTED="CONNECTED",s.DISCONNECTED="DISCONNECTED",s.CONNECTING="CONNECTING",s.RECONNECTED="RECONNECTED",s.RECONNECTING="RECONNECTING",s))(gt||{}),nl=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(nl||{}),Ra=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(Ra||{}),al=(t=>(t.AUDIO="audio",t.VIDEO="video",t.AUXILIARY="auxVideo",t))(al||{}),cl=(e=>(e.ADD="add",e.REMOVE="remove",e))(cl||{}),Le=(s=>(s[s.NULL=0]="NULL",s[s.AUDIO=1]="AUDIO",s[s.AUX_VIDEO=2]="AUX_VIDEO",s[s.BIG_VIDEO=4]="BIG_VIDEO",s[s.SMALL_VIDEO=8]="SMALL_VIDEO",s))(Le||{}),_g={1:"audio",2:"auxVideo",4:"video"},mm=(i=>(i[i.opus=111]="opus",i))(mm||{}),pm=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(pm||{}),fm=(e=>(e.Big="big",e.Small="small",e))(fm||{}),lt=(e=>(e.Main="main",e.Aux="auxiliary",e))(lt||{}),qt=(s=>(s[s.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",s[s.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",s[s.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",s[s.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",s[s.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",s))(qt||{}),Ws=(O=>(O[O.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",O[O.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",O[O.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",O[O.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",O[O.MUTE_AUDIO=32772]="MUTE_AUDIO",O[O.MUTE_VIDEO=32773]="MUTE_VIDEO",O[O.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",O[O.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",O[O.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",O[O.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",O[O.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",O[O.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",O[O.SWITCH_CAMERA=32780]="SWITCH_CAMERA",O[O.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",O[O.REPLACE_VIDEO=32782]="REPLACE_VIDEO",O[O.REPLACE_AUDIO=32783]="REPLACE_AUDIO",O[O.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",O[O.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",O[O.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",O[O.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",O[O.JOIN=32788]="JOIN",O[O.LEAVE=32789]="LEAVE",O[O.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",O[O.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",O[O.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",O[O.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",O[O.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",O[O.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",O[O.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",O[O.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",O[O.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",O[O.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",O[O.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",O[O.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",O[O.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",O[O.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",O[O.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",O[O.PUBLISH_AUX=32805]="PUBLISH_AUX",O[O.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",O[O.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",O[O.VIDEO_ENCODER=4004]="VIDEO_ENCODER",O[O.VIDEO_DECODER=4005]="VIDEO_DECODER",O))(Ws||{}),dl=(a=>(a[a.UNKNOWN=0]="UNKNOWN",a[a.EXCELLENT=1]="EXCELLENT",a[a.GOOD=2]="GOOD",a[a.POOR=3]="POOR",a[a.BAD=4]="BAD",a[a.VERY_BAD=5]="VERY_BAD",a[a.DISCONNECTED=6]="DISCONNECTED",a))(dl||{}),_m=(r=>(r[r.MANUAL=0]="MANUAL",r[r.AUTO_AUDIO=1]="AUTO_AUDIO",r[r.AUTO_VIDEO=2]="AUTO_VIDEO",r[r.AUTO_ALL=3]="AUTO_ALL",r))(_m||{}),ya=(e=>(e.user="user",e.environment="environment",e))(ya||{}),ba=(t=>(t[t.ELEMENT=0]="ELEMENT",t[t.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",t[t.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",t))(ba||{}),ll=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(ll||{}),ul=(r=>(r.BANNED="banned",r.KICK="kick",r.USER_TIME_OUT="user_time_out",r.ROOM_DISBAND="room_disband",r))(ul||{}),gm=(l=>(l[l.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",l[l.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",l[l.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",l[l.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",l[l.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",l[l.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",l[l.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",l[l.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",l[l.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",l))(gm||{}),Tt=1e8,rl=class{constructor(){d(this,"mediaType",0)}set audio(i){i?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(i){i?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(i){i?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(i){i?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},$i=(s=>(s.String="string",s.Number="number",s.Boolean="boolean",s.Array="array",s.Object="object",s))($i||{}),jt=(s=>(s.H264="h264",s.H265="h265",s.VP8="vp8",s.VP9="vp9",s.AV1="av1",s))(jt||{}),Na=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.DUMP=1]="DUMP",r[r.SEI=2]="SEI",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(Na||{}),hl=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",r[r.DUMP=2]="DUMP",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(hl||{}),Tm=(t=>(t.WebRTC="webrtc",t.WebCodecs="webcodecs",t.WebAssembly="webassembly",t))(Tm||{}),ml=(m=>(m[m.SUCCESS=0]="SUCCESS",m[m.FAILED=1]="FAILED",m[m.WEBCODEC_INIT=2]="WEBCODEC_INIT",m[m.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",m[m.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",m[m.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",m[m.WASM_INIT=6]="WASM_INIT",m[m.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",m[m.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",m[m.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",m[m.TEST=10]="TEST",m[m.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",m))(ml||{}),Uo=(r=>(r.NONE="",r.DETAIL="detail",r.MOTION="motion",r.TEXT="text",r))(Uo||{}),Xt=(s=>(s.INTERVAL="interval",s.TIMEOUT="timeout",s.RAF="raf",s.RIC="ric",s.INTERVAL_IN_WORKER="intervalInWorker",s))(Xt||{}),Js=(e=>(e.CANVAS="canvas",e.API="api",e))(Js||{}),pl=(r=>(r[r.NONE=0]="NONE",r[r.MICROPHONE=1]="MICROPHONE",r[r.CAMERA=2]="CAMERA",r[r.BOTH=3]="BOTH",r))(pl||{});var L={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX"},Ue={AVOID_REPEATED_CALL(o){return`previous ${o.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:o,rule:i,fnName:e,value:t}){let r=`${o||i.name}`,s="";return Array.isArray(i.type)?s=i.type.join("|"):s=i.type,`'${r}' must be type of ${s} when calling ${e}(), received type: ${Re(t)}.`},INVALID_PARAMETER_EMPTY({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:o,rule:i,fnName:e,value:t}){let r=`${o||i.name}`,s=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${s} when calling ${e}(), received type: ${Re(t)}.`},INVALID_PARAMETER_RANGE({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_MIN({key:o,rule:i,fnName:e,value:t}){return`the min value of ${o||i.name} is ${i.min}, received: ${t}.`},INVALID_PARAMETER_MAX({key:o,rule:i,fnName:e,value:t}){return`the max value of ${o||i.name} is ${i.max}, received: ${t}.`},API_CALL_TIMEOUT(o){return`${o.commandDesc||o.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(o){return`SignalChannel setup failure: (errorCode: ${o.errorCode}, errorMsg: ${o.errorMsg} }).`},ERROR_MESSAGE(o){let i=`${o.type} failed`;return o.message&&(i=`${i}: ${o.message}.`),i},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(o){return`exchange sdp failed ${o.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING(o){return`'${o}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(o){return`'${o}' must be an integer between [1, 4294967294] when useStringRoomId is false.`},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED({error:o,code:i}){return`Failed to join room - ${o} code: ${i}`},REJOIN_ROOM_FAILED(o){return`reJoin room: ${o.roomId} failed, please check your network.`},INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING(o){return`duplicate ${o} stream publishing, please unpublish your prev ${o} stream and then re-publish.`},INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED({message:o,userId:i,streamType:e}){return`failed to subscribe ${i} ${e} stream, reason: ${o}.`},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED(o){return`switchRole failed, errCode: ${o.code} errMsg: ${o.message}.`},CLIENT_BANNED(o){return`client was banned because of ${o.message}.`},INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED(o){return`startPublishCDNStream failed, errMsg: ${o.message}.`},STOP_PUBLISH_CDN_FAILED(o){return`stopPublishCDNStream failed, errMsg: ${o.message}.`},INVALID_STREAM_ID(o){return`'${o}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK(o){return`cannot replace ${o.kind} track because stream has not ${o.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(o){return`startMixTranscode failed, errMsg: ${o.message}.`},STOP_MIX_TRANSCODE_FAILED(o){return`stopMixTranscode failed, errMsg: ${o.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' cannot be less than 0 when calling ${e}().`},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER(o){return`'${o}' is required and must be between 1 and 15.`},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:o,fnName:i})=>`'${o}' is not found in the document object when calling ${i}().`,INVALID_ELEMENT_ID_TYPE:({key:o,fnName:i,type:e})=>`the element corresponding to '${o}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`,PLAY_FAILED:o=>`${o.media} play failed, browser exception: ${o.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK(o){return`${o}Track is not supported on your browser.`},NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED(o){return`${o.signalResponse} failed, response code is ${o.code} , errMsg: ${o.message}.`},CATCH_HANDLER_ERROR({name:o,event:i}){return`an error was caught in ${o}.on('${i}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:o}){return`experimental api ${o} does not exist.`},REPEAT_JOIN:o=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED({funName:o}){return`failed to call ${o}() because client was destroyed.`},SEI_NOT_SUPPORT:o=>`not support to sendSEIMessage${o===!1?" without using h264 codec":""}`,SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:o,name:i,timesInSecond:e,maxSizeInSecond:t})=>`api ${i} call ${o?"size":"times"} is over ${o?`${t} bytes`:e} in a second.`,CONNECTION_ABORTED(o){return`connection aborted due to: ${o}`},API_CALL_ABORTED(o){let i;return o.message.includes("REMOTE_STREAM_NOT_EXIST")?i=`Subscribe ${o.userId} ${o.streamType} stream aborted, reason: remote user ${o.userId} unpublished stream.`:i=`API aborted, reason: ${o.message}`,i},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:o=>`'streamType' is required when 'userId' is not '*', calling ${o}()`};var Em=(o,i)=>i?`${ii}/${o}/${i}`:`${ii}/${o}/index.html`;var gg=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let o=localStorage==null?void 0:localStorage.getItem(dd);if(o){o=JSON.parse(o);let i=document.createElement("script");i.type="text/javascript",i.text=o.message,document.body.appendChild(i);let e=window.TRTC_ERROR_INFO,t=window.TRTC_ERROR_LINK;return document.body.removeChild(i),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:t}}return{}};function V(o){let{key:i,data:e,link:t,addDocLink:r=!0}=o,s="",n="",a="";ae(Ue[i])?s=Ue[i](e):te(Ue[i])&&(s=Ue[i]);let{TRTC_ERROR_INFO:c,TRTC_ERROR_LINK:l}=gg();t?a=`${t.className}.html#${t.fnName}`:l&&l[i]&&(ae(l[i])?a=l[i](e):te(l[i])&&(a=l[i]));let u=s;return Vt()&&(c&&c[i]&&(ae(c[i])?n=c[i](e):te(c[i])&&(n=c[i])),n&&(r?u=`${n}
7
- \u8BF7\u67E5\u770B\u6587\u6863: ${Em("zh-cn",a)}
3
+ `}});var Mf=Un(Kr=>{"use strict";var Zo=Nf(),M_=Df(),O_=_d();Kr.grammar=O_;Kr.write=M_;Kr.parse=Zo.parse;Kr.parseParams=Zo.parseParams;Kr.parseFmtpConfig=Zo.parseFmtpConfig;Kr.parsePayloads=Zo.parsePayloads;Kr.parseRemoteCandidates=Zo.parseRemoteCandidates;Kr.parseImageAttributes=Zo.parseImageAttributes;Kr.parseSimulcastStreamList=Zo.parseSimulcastStreamList});var Dh=(re=>(re[re.INVALID_PARAMETER=4096]="INVALID_PARAMETER",re[re.INVALID_OPERATION=4097]="INVALID_OPERATION",re[re.NOT_SUPPORTED=4098]="NOT_SUPPORTED",re[re.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",re[re.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",re[re.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",re[re.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",re[re.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",re[re.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",re[re.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",re[re.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",re[re.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",re[re.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",re[re.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",re[re.CLIENT_BANNED=16448]="CLIENT_BANNED",re[re.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",re[re.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",re[re.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",re[re.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",re[re.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",re[re.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",re[re.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",re[re.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",re[re.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",re[re.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",re[re.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",re[re.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",re[re.API_CALL_ABORTED=16461]="API_CALL_ABORTED",re[re.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",re[re.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",re[re.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",re[re.VIDEO_ENCODE_FAILED=16465]="VIDEO_ENCODE_FAILED",re[re.AUDIO_ENCODE_FAILED=16466]="AUDIO_ENCODE_FAILED",re[re.UNKNOWN=65535]="UNKNOWN",re))(Dh||{}),q=Dh;var rT=function(i){for(let t in q)if(q[t]===i)return t;return"UNKNOWN"},ml=class extends Error{constructor({name:e="RtcError",message:r,code:o=q.UNKNOWN,extraCode:s=0,constraint:n}){let a=`<${rT(o)} 0x${o.toString(16)}>`,u=`${r}${n?` constraint: ${n}`:""}${r!=null&&r.includes(a)?"":` ${a}`}`;super(u);l(this,"code");l(this,"extraCode");l(this,"message");l(this,"originMessage");l(this,"name");l(this,"constraint");this.code=o,this.extraCode=s,this.name=e,this.message=u,this.constraint=n,this.originMessage=r}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},de=ml;var pA=new Date().getTime(),iT=0;var Vn=function(){return new Date().getTime()+iT},vc=function(){let i=new Date;return i.setTime(Vn()),i.toLocaleString()},Ns=function(i){let t=String(i.getMilliseconds());return"padStart"in String.prototype&&(t=t.toString().padStart(3,"0")),`${i.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${t}`};var jr={};mi(jr,{REPORT_TYPE:()=>Bs,buildSSOPackage:()=>Ti,bytes2ms:()=>Bh,calculateScaleResolutionDownNumber:()=>Gc,convertObjectNumberToInt:()=>Zn,copyProperties:()=>$h,deepClone:()=>Bo,deepCloneBasic:()=>Vc,deepMerge:()=>Cr,delay:()=>Kn,fibonacci:()=>Ho,formatedTime:()=>$c,getConstructorName:()=>Ls,getContainerFromElement:()=>Xh,getEnv:()=>Uh,getInternalVersion:()=>zh,getLoggerUrl:()=>Ei,getMediaStreamTrackInfo:()=>Wc,getMuteStateFromFlag:()=>Qn,getNetworkType:()=>zn,getNumNetworkType:()=>Fc,getReconnectionTimeout:()=>Wh,getStringByteLength:()=>Qh,getTurnServer:()=>Jh,getUint32Version:()=>Bc,getValueType:()=>ct,getViewListFromView:()=>Fs,glog:()=>Jn,ipv4ToUint32:()=>Vs,isArray:()=>st,isAudioWorkletSupported:()=>qh,isBoolean:()=>Je,isConstructor:()=>Wo,isEmpty:()=>Us,isFunction:()=>We,isLangChinese:()=>vr,isMediaStreamTrack:()=>Gh,isNumber:()=>Pe,isObject:()=>rr,isOverseaSdkAppId:()=>gi,isPlainObject:()=>Ft,isPortrait:()=>kl,isPromise:()=>to,isRemoteTrack:()=>jh,isRotate90Or270:()=>mr,isString:()=>Ne,isUndefined:()=>M,loadImage:()=>$s,loadVideo:()=>Yh,ms2bytes:()=>Hh,ms2samples:()=>xl,normalizeUrl:()=>Go,performanceNow:()=>_e,promiseAny:()=>Xn,samples2ms:()=>Ol,setNetworkType:()=>Fh,stringify:()=>lr,stringifyIncludeValue:()=>Yn,throttlePromise:()=>Hc});var yl={};mi(yl,{AUDIO_MUTE_BIT:()=>Mc,AUDIO_STAT_BIT:()=>Ms,AUX_STAT_BIT:()=>Hn,AUX_STREAM_MSID:()=>fT,BACKEND_ENV:()=>Dc,BASE_DOC_URL:()=>Hr,BASE_HOST:()=>Mh,CAPABILITIES_KEYS:()=>kc,CLASS_NAME:()=>FT,CLOUD_CONSOLE_URL:()=>aT,CROSS_ROOM_BIT:()=>pT,DATA_FREEZE_TIMING:()=>xc,DOC_URL:()=>cT,DTLS_STATE_UNKNOWN:()=>RT,ENV_NAME:()=>pi,EXCHANGE_SDP_TIMEOUT:()=>MT,IS_WORKER:()=>ws,IS_WORKLET:()=>Fn,KIBANA_EVENT:()=>hi,LOCAL_STREAM_PUBLISH_STATE:()=>xh,LOGGER_CMD_TYPE:()=>eo,LOGGER_DOMAIN:()=>fl,LOGGER_DOMAIN_OVERSEA:()=>gl,LOG_LEVEL:()=>br,LOG_LEVEL_NAME:()=>BT,MAIN_STREAM_MSID:()=>hT,MAX_RTT:()=>Gn,MICROPHONE_COMMUNICATIONS:()=>$T,MICROPHONE_DEFAULT:()=>$o,MUTE_ALL_BIT:()=>mT,NAME:()=>O,NETWORK_TYPE:()=>Vo,NOT_SUPPORTED_H264:()=>xT,PAUSED_RETRY_COUNT:()=>Fo,PEERCONNECTION_CONNECTING_TIMEOUT:()=>UT,PEER_CONNECTION_STATE:()=>vT,PEER_LEAVE_REASON:()=>kh,RECOVER_CAPTURE_INTERVAL:()=>Os,REMOTE_STREAM_TYPE_AUX:()=>ET,REMOTE_STREAM_TYPE_MAIN:()=>gT,RENDER_FREEZE_TIMING:()=>kT,SCHEDULE_DOMAIN:()=>fi,SCHEDULE_TIMEOUT:()=>VT,SDP_SEMANTICS_PLAN_B:()=>OT,SDP_SEMANTICS_UNIFIED_PLAN:()=>Il,SECOND_HOST:()=>sT,SIGNAL_PING_PONG_INTERVAL:()=>uT,SIGNAL_PING_TIMEOUT:()=>dT,SIGNAL_RECONNECTION_COUNT:()=>NT,SMALL_STAT_BIT:()=>_l,SPEAKER_DEFAULT:()=>Wn,STORAGE_EXPIRES_TIME:()=>Cc,STREAM_TYPE_BIG:()=>PT,STREAM_TYPE_SMALL:()=>LT,SUBSCRIBE_SMALL_RETRY_COUNT:()=>HT,SYNC_USER_LIST_INTERVAL:()=>wT,Scene:()=>Wr,THIRD_HOST:()=>nT,TRANSPORT_DIRECTION:()=>lT,TRTC_ERROR_ASSISTANCE:()=>El,TRTC_QUALITY_BAD:()=>yT,TRTC_QUALITY_DISCONNECTED:()=>bT,TRTC_QUALITY_EXCELLENT:()=>_T,TRTC_QUALITY_GOOD:()=>ST,TRTC_QUALITY_POOR:()=>IT,TRTC_QUALITY_UNKNOWN:()=>TT,TRTC_QUALITY_VERY_BAD:()=>AT,UPDATE_OFFER_TIMEOUT:()=>DT,VIDEO_MUTE_BIT:()=>Oc,VIDEO_STAT_BIT:()=>Ds,audioProfileMap:()=>Nc,defaultBigVideoProfile:()=>Bn,defaultSmallVideoProfile:()=>Tl,getRetryCount:()=>CT,getScriptDir:()=>oT,innerVersion:()=>pl,loggerProxy:()=>$n,screenProfileMap:()=>wc,setLoggerProxy:()=>Uo,setRetryCount:()=>Sl,setVersion:()=>hl,version:()=>at,videoProfileMap:()=>Rr});var pl="4.15.00.1600",at="5.0.0";function hl(i){at=i;let[t,e,r]=i.split(".").map(o=>parseInt(o,10));pl=`${t}.${Math.min(15,e)}.${Math.min(15,r)}.${e.toString().padStart(2,"0")}${r.toString().padStart(2,"0")}`}var ws=typeof importScripts!="undefined",Fn=typeof registerProcessor!="undefined",oT=()=>{let i=ws?self.location.href:document.currentScript.src;return i.substring(0,i.lastIndexOf("/")+1)},$n="",Uo=i=>$n=i,Mh="web.sdk.qcloud.com",sT="web.sdk.tencent.cn",nT="web.sdk.cloud.tencent.cn",aT="https://console.cloud.tencent.com/trtc",Hr=`https://${Mh}/trtc/webrtc/v5/doc`,cT=`${Hr}/zh-cn/`,fl="https://yun.tim.qq.com",gl="https://apisgp.my-imcloud.com",El="trtc_error_assistance",eo={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},pi={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},br=(n=>(n[n.TRACE=0]="TRACE",n[n.DEBUG=1]="DEBUG",n[n.INFO=2]="INFO",n[n.WARN=3]="WARN",n[n.ERROR=4]="ERROR",n[n.NONE=5]="NONE",n))(br||{}),dT=18e3,uT=2e3,Vo={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},Cc=7*24*3600*1e3,Nc={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},Rr={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},Bn=Rr["480p_2"],Tl=Rr["120p_2"],wc={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},O={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture"},lT={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},Dc={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Wr=(e=>(e.LIVE="live",e.RTC="rtc",e))(Wr||{}),Ds=1,_l=2,Hn=4,Ms=8,Mc=64,Oc=16,mT=112,pT=128,hT="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",fT="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",gT=O.MAIN,ET=O.AUXILIARY,TT=0,_T=1,ST=2,IT=3,yT=4,AT=5,bT=6,RT="unknown",vT={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Oh=1/0;function Sl(i){Oh=i}function CT(){return Oh}var NT=30,hi={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},wT=1e4,DT=1e4,MT=1e4,Il="unified-plan",OT="plan-b",xT=1028,xh=(r=>(r[r.UNPUBLISH=-1]="UNPUBLISH",r[r.PUBLISHING=0]="PUBLISHING",r[r.PUBLISHED=1]="PUBLISHED",r))(xh||{}),xc=500,kT=1e3,PT=O.BIG,LT=O.SMALL,UT=10*1e3,fi={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},VT=2e3,FT={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},Fo=5,$o="default",Wn=$o,$T="communications",BT=Object.keys(br),kh=["normal leave","timeout leave","kick","role change"],HT=10,Os=2e3,kc=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],Gn=10*1e3;var WT=function(i,t,e,r){function o(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function a(h){try{m(r.next(h))}catch(g){n(g)}}function u(h){try{m(r.throw(h))}catch(g){n(g)}}function m(h){h.done?s(h.value):o(h.value).then(a,u)}m((r=r.apply(i,t||[])).next())})},Al=Symbol(32),bl=Symbol(16),Rl=Symbol(8),Gr=class{constructor(t){this.g=t,this.consumed=0,t&&(this.need=t.next().value)}setG(t){this.g=t,this.demand(t.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(t,e){return e&&this.consume(),this.need=t,this.flush()}read(t){return WT(this,void 0,void 0,function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise((e,r)=>{var o;this.reject=r,this.resolve=n=>{delete this.lastReadPromise,delete this.resolve,delete this.need,e(n)},this.demand(t,!0)||(o=this.pull)===null||o===void 0||o.call(this,t)})})}readU32(){return this.read(Al)}readU16(){return this.read(bl)}readU8(){return this.read(Rl)}close(){var t;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),(t=this.reject)===null||t===void 0||t.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let t=null,e=this.buffer.subarray(this.consumed),r=0,o=s=>e.length<(r=s);if(typeof this.need=="number"){if(o(this.need))return;t=e.subarray(0,r)}else if(this.need===Al){if(o(4))return;t=e[0]<<24|e[1]<<16|e[2]<<8|e[3]}else if(this.need===bl){if(o(2))return;t=e[0]<<8|e[1]}else if(this.need===Rl){if(o(1))return;t=e[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(o(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(e.subarray(0,r)),t=this.need}else if(this.g){this.g.throw(new Error("Unsupported type"));return}}else{if(o(this.need.byteLength))return;new Uint8Array(this.need).set(e.subarray(0,r)),t=this.need}return this.consumed+=r,this.g?this.demand(this.g.next(t).value,!0):this.resolve&&this.resolve(t),t}write(t){if(t instanceof Uint8Array?this.malloc(t.length).set(t):"buffer"in t?this.malloc(t.byteLength).set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)):this.malloc(t.byteLength).set(new Uint8Array(t)),this.g||this.resolve)this.flush();else return new Promise(e=>this.pull=e)}writeU32(t){this.malloc(4).set([t>>24&255,t>>16&255,t>>8&255,t&255]),this.flush()}writeU16(t){this.malloc(2).set([t>>8&255,t&255]),this.flush()}writeU8(t){this.malloc(1)[0]=t,this.flush()}malloc(t){if(this.buffer){let e=this.buffer.length,r=e+t;if(r<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,r);else{let o=new Uint8Array(r);o.set(this.buffer),this.buffer=o}return this.buffer.subarray(e,r)}else return this.buffer=new Uint8Array(t),this.buffer}};Gr.U32=Al;Gr.U16=bl;Gr.U8=Rl;var GT=128,jT=127,EA=~jT,TA=Math.pow(2,31);function vl(i){let t=new Gr;for(;i>=128;)t.malloc(1)[0]=i&255|GT,i>>>=7;return t.malloc(1)[0]=i&255,t.buffer||new Uint8Array(0)}function Pc(i,t=0){let e=new Gr,r=t<<3;switch(typeof i){case"boolean":let o=e.malloc(2);o[0]=r,o[1]=i?1:0;break;case"number":e.malloc(1)[0]=r,e.write(vl(i));break;case"string":e.malloc(1)[0]=r|2;let s=new TextEncoder().encode(i);e.write(vl(s.length));let n=e.malloc(s.length);for(let u=0;u<s.length;u++)n[u]=s[u];break;case"object":let a=new Gr;if(Array.isArray(i))for(let u=0;u<i.length;u++){let m=Pc(i[u],u+1);m&&a.write(m)}else{let u=1;for(let m in i){let h=Pc(i[m],u++);h&&a.write(h)}}t===0?a.buffer&&e.write(a.buffer):(e.malloc(1)[0]=r|2,a.buffer&&(e.write(vl(a.buffer.length)),e.write(a.buffer)))}return e.buffer||new Uint8Array(0)}var jn=class{constructor(){l(this,"buffer");this.buffer=[]}get data(){return this.buffer}get length(){return this.buffer.length}writeInt32(t){this.buffer.push(t>>>24&255),this.buffer.push(t>>>16&255),this.buffer.push(t>>>8&255),this.buffer.push(t&255)}writeInt16(t){this.buffer.push(t>>>8&255),this.buffer.push(t&255)}writeByte(t){this.buffer.push(t&255)}writeBytes(t){for(let e=0;e<t.length;e++)this.buffer.push(t[e])}};function Cl(i,t,e){i[e]=t>>>24&255,i[e+1]=t>>>16&255,i[e+2]=t>>>8&255,i[e+3]=t&255}function Vt(i,t){return i[t]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3]}function Nl(i,t){return i[t]}function xs(i,t,e){return new TextDecoder().decode(qT(i,t,e))}function qT(i,t,e){return i.slice(t,t+e)}var wl=0,Lc=2654435769,Uc=16,Ml=4,ks=2,Ps=7;function zT(i,t,e,r="AVQualityReportSvc.C2S",o=2e3,s=2,n=30){return{version:o,encryption:s,d2:"",d2Len:0,uinType:n,uin:"",uinLen:0,reqHead:{seqNumber:e,appId:i,appidAtThird:new Uint8Array(0),a2:"",a2Len:0,serviceCmd:r,serviceCmdLen:0,cookie:"",cookieLen:0,imei:"",imeiLen:0,ksid:"",ksidLen:0,clientVersionInfo:"",clientVersionInfoLen:0},busiBuff:t}}function Ph(i,t){let e=new jn,r=zT(t,i,wl);wl=wl+1&2147483647,e.writeInt32(0),e.writeInt32(r.version),e.writeByte(r.encryption);let o=new TextEncoder().encode(r.d2);e.writeInt32(o.length+4),o&&e.writeBytes(o),e.writeByte(r.uinType);let s=new TextEncoder().encode(r.uin);e.writeInt32(s.length+4),s.length&&e.writeBytes(s);let n=new jn;n.writeInt32(0),n.writeInt32(r.reqHead.seqNumber),n.writeInt32(r.reqHead.appId),n.writeByte(r.reqHead.appId>>>24&255),n.writeByte(r.reqHead.appId>>>16&255),n.writeByte(r.reqHead.appId>>>8&255),n.writeByte(r.reqHead.appId&255);for(let K=4;K<16;K++)n.writeByte(0);let a=new TextEncoder().encode(r.reqHead.a2);n.writeInt32(a.length+4),a.length&&n.writeBytes(a);let u=new TextEncoder().encode(r.reqHead.serviceCmd);n.writeInt32(u.length+4),u.length&&n.writeBytes(u);let m=new TextEncoder().encode(r.reqHead.cookie);n.writeInt32(m.length+4),m.length&&n.writeBytes(m);let h=new TextEncoder().encode(r.reqHead.imei);n.writeInt32(h.length+4),h.length&&n.writeBytes(h);let g=new TextEncoder().encode(r.reqHead.ksid);n.writeInt32(g.length+4),g.length&&n.writeBytes(g);let T=new TextEncoder().encode(r.reqHead.clientVersionInfo);n.writeInt16(T.length+2),T.length&&n.writeBytes(T);let A=n.length;n.data[0]=A>>>24&255,n.data[1]=A>>>16&255,n.data[2]=A>>>8&255,n.data[3]=A&255,Ne(i)&&(i=new TextEncoder().encode(i)),n.writeInt32(i.length+4),i.length&&n.writeBytes(i);let C=new Uint8Array(n.data),N=null;r.encryption===1?N=new TextEncoder().encode(r.uin):r.encryption===2&&(N=new Uint8Array(16)),N&&(C=JT(C,N)),e.writeBytes(C);let D=new Uint8Array(e.data),P=D.length;return D[0]=P>>>24&255,D[1]=P>>>16&255,D[2]=P>>>8&255,D[3]=P&255,D}function JT(i,t){let e=i.length,o=(e+1+ks+Ps)%8;o&&(o=8-o);let s=e+1+ks+Ps+o,n=new Uint8Array(s),a=0,u=new Uint8Array(8),m=new Uint8Array(8),h=new Uint8Array(8),g=0;u[0]=Math.floor(Math.random()*256)&248|o,g=1;for(let A=0;A<o;A++)u[g]=Math.floor(Math.random()*256)&255,g+=1;for(let A=0;A<ks;)if(g<8&&(u[g]=Math.floor(Math.random()*256)&255,g+=1,A+=1),g===8){Dl(u,t,m,h,n,a),a+=8,g=0;for(let C=0;C<8;C++)h[C]=n[a-8+C]}let T=0;for(;T<e;)if(g<8&&(u[g]=i[T],g+=1,T+=1),g===8){Dl(u,t,m,h,n,a),a+=8,g=0;for(let A=0;A<8;A++)h[A]=n[a-8+A]}for(let A=0;A<Ps;)if(g<8&&(u[g]=0,g+=1,A+=1),g===8){Dl(u,t,m,h,n,a),a+=8,g=0;for(let C=0;C<8;C++)h[C]=n[a-8+C]}return n}function Dl(i,t,e,r,o,s){for(let n=0;n<8;n++)i[n]^=r[n];XT(i,t,o,s);for(let n=0;n<8;n++)o[s+n]^=e[n];for(let n=0;n<8;n++)e[n]=i[n]}function XT(i,t,e,r){let o=Vt(i,0),s=Vt(i,4),n=[];for(let u=0;u<4;u++)n[u]=Vt(t,u*4);let a=0;for(let u=0;u<Uc;u++)a+=Lc,a=a>>>0,o+=(s<<4)+n[0]^s+a^(s>>>5)+n[1],o=o>>>0,s+=(o<<4)+n[2]^o+a^(o>>>5)+n[3],s=s>>>0;Cl(e,o,r),Cl(e,s,r+4)}var Uh=function(){return new URLSearchParams(location.search).get("trtc_env")||""},gi=i=>Number(i)<14e8,Ei=function(i,t){let e;$n?e=$n:e=gi(i)?gl:fl;let r=Math.floor(Math.random()*Zi(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${r}&sdkappid=${i}&cmdtype=${t}`},qn="unknown";function zn(){if(qn!=="unknown")return qn;let{userAgent:i,connection:t}=navigator,e=(i.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let r=t&&t.type&&t.type.toLowerCase(),o=t&&t.effectiveType&&t.effectiveType.toLowerCase();return o==="slow-2"&&(o="2g"),r&&(qn=Vh(r,o)),qn}function Vh(i,t){if(Vo[i])return i;switch(i){case"cellular":case"wimax":return t||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function Fh(i){qn=Vh(i)}function Fc(){return Vo[zn()]}function $h(i,t){for(let e of Reflect.ownKeys(t))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let r=Object.getOwnPropertyDescriptor(t,e)||"";Object.defineProperty(i,e,r)}return i}function Bh(i,t=48e3){return Ol(i/4,t)}function Ol(i,t=48e3){return i*1e3/t}function Hh(i,t=48e3){return xl(i,t)*4}function xl(i,t=48e3){return i*t/1e3}var Jn=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},vr=()=>{let i=navigator.language;return i=i.substring(0,2),i==="zh"},Ft=function(i){if(!i||typeof i!="object"||Object.prototype.toString.call(i)!="[object Object]")return!1;let t=Object.getPrototypeOf(i);if(t===null)return!0;let e=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function Ho(i,t=1,e=1){return i<=1?e:Ho(i-1,e,t+e)}function Wh(i){return i>8?30*1e3:Ho(i)*1e3}function ct(i){return Reflect.apply(Object.prototype.toString,i,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var We=i=>typeof i=="function",M=i=>typeof i=="undefined",Ne=i=>typeof i=="string",Pe=i=>typeof i=="number",Je=i=>typeof i=="boolean",rr=i=>ct(i)==="object",st=i=>ct(i)==="array",Gh=i=>ct(i)==="MediaStreamTrack".toLowerCase(),jh=i=>i.isRemote,to=i=>ct(i)==="promise",Wo=i=>We(i)&&i.prototype.constructor===i,Ls=i=>Wo(i)?i.prototype.constructor.name:"",qh=typeof AudioWorkletNode!="undefined";function Xn(i){return new Promise((t,e)=>{let r=[];i.forEach(o=>{o.then(t).catch(s=>{r.push(s),r.length===i.length&&e(r)})})})}function _e(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Lh=i=>+i<10?`0${i}`:i,zh=i=>{let t=i.match(/^\d+\.\d+\.\d+/)[0];if(!t)return i;let e=t.split("."),r=Lh(e[1])+Lh(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${r}`},QT=Object.prototype.hasOwnProperty,{toString:DA}=Object.prototype;function Us(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Ft(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(QT.call(i,t))return!1;return!0}}return!1}function Qn(i,t){return{userId:t,hasAudio:!!(i&Ms),hasVideo:!!(i&Ds),hasAuxiliary:!!(i&Hn),hasSmall:!!(i&_l),audioMuted:!!(i&Mc),videoMuted:!!(i&Oc),audioAvailable:!!(i&Ms)&&!(i&Mc),videoAvailable:!!(i&Ds)&&!(i&Oc)}}function Jh(i){let t={urls:i.url.startsWith("turn:")||i.url.startsWith("turns:")?i.url:`turn:${i.url}`};return!M(i.username)&&!M(i.credential)&&(t.username=i.username,t.credential=i.credential,t.credentialType="password",M(i.credentialType)||(t.credentialType=i.credentialType)),t}function Vs(i,t=!0){if(!Ne(i))return 0;let e=i.split(".");return t?(Number(e[0])<<24|Number(e[1])<<16|Number(e[2])<<8|Number(e[3]))>>>0:(Number(e[3])<<24|Number(e[2])<<16|Number(e[1])<<8|Number(e[0]))>>>0}var Cr=function(i,t,e,r){if(!(rr(i)&&rr(t)))return 0;let o=0,s=Object.keys(t),n;for(let a=0,u=s.length;a<u;a++)if(n=s[a],!(M(t[n])||e&&e.includes(n)))if(rr(i[n])&&rr(t[n]))o+=Cr(i[n],t[n],e,r);else{if(r&&r.includes(t[n]))continue;i[n]!==t[n]&&(i[n]=Bo(t[n]),o+=1)}return o};function Bo(i){if(st(i)){let t=[];return i.forEach((e,r)=>{t[r]=Bo(e)}),t}if(rr(i)){let t={};return Object.keys(i).forEach(e=>{t[e]=Bo(i[e])}),t}return i}var Fs=i=>{let t=[];if(st(i))t=[...i];else if(Ne(i)){let e=document.getElementById(i);e&&t.push(e)}else i&&t.push(i);return t},Xh=i=>Ne(i)?document.getElementById(i):i,YT=i=>{let t=u=>u<10?`0${u}`:`${u}`,e=i.getFullYear(),r=i.getMonth()+1,o=i.getDate(),s=t(i.getHours()),n=t(i.getMinutes()),a=t(i.getSeconds());return`${e}/${r}/${o} ${s}:${n}:${a}`},$c=()=>YT(new Date);function lr(i,{keysToInclude:t,keysToExclude:e}){try{if(st(i))return`[${i.map(n=>lr(n,{keysToInclude:t,keysToExclude:e})).join(",")}]`;if(!Ft(i)||!st(t)&&!st(e))return JSON.stringify(i);let r={},o=new Set(t),s=new Set(e);return Object.keys(i).forEach(n=>{(s.size===0&&o.has(n)||o.size===0&&!s.has(n))&&(r[n]=Ft(i[n])||st(i[n])?JSON.parse(lr(i[n],{keysToExclude:e,keysToInclude:t})):i[n])}),JSON.stringify(r)}catch(r){return"{}"}}function Yn(i,t=!1){let e=[];return Object.keys(i).forEach(r=>{t===i[r]&&e.push(r)}),lr(i,{keysToInclude:e})}function Qh(i){return i.replace(/[\u4e00-\u9fa5]/g,"aa").length}var kl=()=>{var i,t,e,r;return(i=window.screen)!=null&&i.orientation?!!((r=(e=(t=window.screen)==null?void 0:t.orientation)==null?void 0:e.type)!=null&&r.includes("portrait")):window.orientation===0||window.orientation===180},$s=i=>y(void 0,null,function*(){return new Promise((t,e)=>{let r;if(Ne(i))r=new Image,r.crossOrigin="anonymous",r.src=i;else if(r=i,r.complete){t(r);return}r.onload=()=>t(r),r.onerror=()=>{e(new de({code:q.INVALID_PARAMETER,message:`load image failed, url: ${i}`}))}})}),Bc=i=>{let t=i.split(".");return+t[0]<<24|+t[1]<<16|+t[2]<<8|+t[3]<<0},Zn=i=>(Object.keys(i).forEach(t=>{Pe(i[t])&&(t.startsWith("uint")||t.startsWith("int"))?i[t]=Math.floor(i[t]):(Ft(i[t])||st(i[t]))&&Zn(i[t])}),i);function Kn(i,t){return new Promise(e=>{let r=setTimeout(e,i);t&&t(r)})}function Hc(i,t){let e=null;return function(...r){return e||(e=i.apply(t||this,r),e.finally(()=>e=null),e)}}function Go(i){return i.replace(/(^|[^:])\/{2,}/g,"$1/")}function Wc(i){var t;try{let{width:e,height:r,frameRate:o,sampleRate:s,sampleSize:n,channelCount:a}=(t=i.getSettings)==null?void 0:t.call(i),u=i.kind===O.AUDIO?`${s}x${n}@${a}`:`${e}x${r}@${o}`,m=i.stats?` stats: ${JSON.stringify(i.stats).replaceAll('"',"")}`:"";return`${i.id} ${i.readyState} muted:${i.muted} ${i.kind} ${i.label} ${u}${m}`}catch(e){return""}}function Gc(i,t){return i.width*i.height===t.width*t.height?1:kl()&&t.width>t.height&&i.height>t.width?Math.max(i.width/t.height,i.height/t.width,1):Math.max(i.width/t.width,i.height/t.height,1)}function mr(i){return i===90||i===270}function Yh(i){return y(this,null,function*(){return new Promise((t,e)=>{let r=document.createElement("video");r.crossOrigin="anonymous",r.src=i,r.muted=!0,r.loop=!0,r.playsInline=!0,r.play().then(()=>t(r)),r.onerror=()=>{e(r.error)}})})}function Vc(i,t=new WeakMap){if(typeof i!="object"||i===null)return i;if(t.has(i))return t.get(i);if(Array.isArray(i)){let e=[];return t.set(i,e),i.forEach((r,o)=>{e[o]=Vc(r,t)}),e}if(Object.prototype.toString.call(i)==="[object Object]"){let e={};return t.set(i,e),Reflect.ownKeys(i).forEach(r=>{e[r]=Vc(i[r],t)}),e}return i}var Bs=(r=>(r[r.END_REPORT=2001]="END_REPORT",r[r.LOG=2002]="LOG",r[r.KEY_METRIC_REPORT=2003]="KEY_METRIC_REPORT",r))(Bs||{});function ZT(i,t,e,r){let o={data:i,random:Math.floor(Math.random()*2147483648),sdkAppId:e};return M(r)||(o=Ee(J({},o),{gzip:+r})),{uint32_sdkappid:0,uint64_from_uin:0,uint32_timestamp:0,uint32_seq:0,msg_common_info:{msg_device_info:{enum_device_type:0,str_device_brand:"",str_device_model:"",str_device_board:"",str_device_cpu_abi:""},msg_system_info:{enum_os_type:0,str_os_version:"",msg_network_info:0},msg_network_info:{enum_network_type:0}},msg_report_content:{uint32_type:t,bytes_report_data:JSON.stringify(o)}}}function Ti(i,t,e,r){try{let o=ZT(i,t,e,r),s=Pc(o);return Ph(s,e)}catch(o){return JSON.stringify(i)}}function Zh(i){let t=KT(i);return t==null?void 0:t.busiBuff}function KT(i){try{let t={},e=0;t.totalLength=Vt(i,e),e+=4,t.version=Vt(i,e),e+=4,t.encryption=Nl(i,e),e+=1,t.uinType=Nl(i,e),e+=1,t.uinLength=Vt(i,e),e+=4,t.uin=t.uinLength>4?xs(i,e,t.uinLength-4):"",e+=t.uinLength-4;let r=i.slice(e);if(t.encryption===2){let o=new Uint8Array(16).fill(0);i=e_(r,o),t.decrypted=!0,e=0}else i=r,e=0;return t.rspHeadLength=Vt(i,e),e+=4,t.seqNo=Vt(i,e),e+=4,t.retCode=Vt(i,e),e+=4,t.retStrLength=Vt(i,e),e+=4,t.retStr=t.retStrLength?xs(i,e,t.retStrLength-4):"",e+=t.retStrLength-4,t.serviceCmdLength=Vt(i,e),e+=4,t.serviceCmd=t.serviceCmdLength?xs(i,e,t.serviceCmdLength-4):"",e+=t.serviceCmdLength-4,t.cookieLength=Vt(i,e),e+=4,t.cookie=t.cookieLength?xs(i,e,t.cookieLength-4):"",e+=t.cookieLength-4,t.flag=Vt(i,e),e+=4,t.busiBuffLength=Vt(i,e),e+=4,t.busiBuff=t.busiBuffLength?xs(i,e,t.busiBuffLength-4):"",e+=t.busiBuffLength-4,t}catch(t){}}function Kh(i,t){let e=i[0]<<24|i[1]<<16|i[2]<<8|i[3],r=i[4]<<24|i[5]<<16|i[6]<<8|i[7];e=e>>>0,r=r>>>0;let o=Lc*Uc>>>0;for(let s=0;s<Uc;s++)r-=(e<<Ml)+t[2]^e+o^(e>>>5)+t[3],r=r>>>0,e-=(r<<Ml)+t[0]^r+o^(r>>>5)+t[1],e=e>>>0,o-=Lc,o=o>>>0;return new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,e&255,r>>>24&255,r>>>16&255,r>>>8&255,r&255])}function e_(i,t){let e=0,r=new Uint8Array(8).fill(0),o=new Uint8Array(i.slice(0,8)),s=Kh(o,t),n=s[0]&7,a=i.length-1-n-ks-Ps,u=new Uint8Array(a),m=0,h=r,g=i.slice(0,8);e=8;let T=1;T+=n;for(let C=1;C<=ks;)if(T<8)T++,C++;else if(T===8){let N=Pl(i,e,h,g,s,t);h=N.ivPreCrypt,g=N.ivCurCrypt,s=N.debiBuf,e=N.bufPos,T=0}let A=a;for(;A>0;)if(T<8)u[m++]=s[T]^h[T],T++,A--;else if(T===8){let C=Pl(i,e,h,g,s,t);h=C.ivPreCrypt,g=C.ivCurCrypt,s=C.debiBuf,e=C.bufPos,T=0}for(let C=1;C<=Ps;)if(T<8)s[T]^h[T],T++,C++;else if(T===8){if(e>=i.length)break;let N=Pl(i,e,h,g,s,t);if(!N.success)break;h=N.ivPreCrypt,g=N.ivCurCrypt,s=N.debiBuf,e=N.bufPos,T=0}return u}function Pl(i,t,e,r,o,s){if(t+8>i.length)return{success:!1};let n=new Uint8Array(r),a=i.slice(t,t+8),u=new Uint8Array(8);for(let h=0;h<8;h++)u[h]=o[h]^a[h];let m=Kh(u,s);return{success:!0,ivPreCrypt:n,ivCurCrypt:a,debiBuf:m,bufPos:t+8}}var ef=typeof TextDecoder!="undefined"?new TextDecoder:void 0;function _i({url:i,body:t,method:e="POST",timeout:r,priority:o}){return new Promise((s,n)=>{if("fetch"in window)return fetch(i,{method:e,body:t,priority:o}).then(u=>u.clone().json().then(m=>({data:m}),()=>u.arrayBuffer().then(m=>({data:Zh(new Uint8Array(m))||(ef?ef.decode(m):m)})))).then(s,n);let a=new XMLHttpRequest;a.onreadystatechange=()=>{if(a.readyState===4)if(a.status>=200&&a.status<300)try{let u=JSON.parse(a.response);s({data:u})}catch(u){s({data:a.response})}else n({status:a.status,statusText:a.statusText||"request failed!"})},a.timeout=r||5e3,a.open(e,i,!0),a.send(t)})}function Ll(i){return y(this,null,function*(){let t=_e(),e=JSON.stringify(i);try{if(!CompressionStream||e.length<=2800)return e;let o=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),a=yield(yield(yield new Response(o)).blob()).arrayBuffer();return $.debug(`compressJSON ${e.length} -> ${a.byteLength} ${_e()-t}ms`),a}catch(r){return e}})}var t_=Object.prototype.hasOwnProperty;var ro=i=>typeof i=="function",tf=i=>typeof i=="undefined";var rf=i=>typeof i=="boolean";var Ul=i=>i.isRemote;var Vl=function(i){if(!i||typeof i!="object"||Object.prototype.toString.call(i)!="[object Object]")return!1;let t=Object.getPrototypeOf(i);if(t===null)return!0;let e=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function of(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Vl(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(t_.call(i,t))return!1;return!0}}return!1}var r_=0,i_=1,sf=2;function o_({retryFunction:i,settings:t,onError:e,onRetrying:r,onRetryFailed:o,onRetrySuccess:s,context:n}){return function(...a){let{retries:u=5,timeout:m=1e3}=t,h=0,g=-1,T=r_,A=(C,N)=>y(this,null,function*(){let D=n||this;try{let P=yield i.apply(D,a);h>0&&s&&s.call(this,h),h=0,C(P)}catch(P){let K=()=>{clearTimeout(g),h=0,T=sf,N(P)},pe=()=>{T!==sf&&h<(ro(u)?u():u)?(h++,T=i_,ro(r)&&r.call(this,h,K),g=window.setTimeout(()=>{g=-1,A(C,N)},ro(m)?m(h):m)):(K(),ro(o)&&o.call(this,P))};ro(e)?e.call(this,{error:P,retry:pe,reject:N,retryFuncArgs:a,retriedCount:h}):pe()}});return new Promise(A)}}var io=o_;var Hs=class{constructor(t){l(this,"userId");l(this,"remoteUserId");l(this,"id");l(this,"sdkAppId");l(this,"type");l(this,"isLocal");this.id=t.id,this.userId=t.userId,this.sdkAppId=t.sdkAppId,this.remoteUserId=t.remoteUserId,this.isLocal=rf(t.isLocal)?t.isLocal:!0,this.type=this.isLocal?"":t.type}createChild(t){return Object.setPrototypeOf(t,this)}setUserId(t){this.userId=t}setSdkAppId(t){this.sdkAppId=t}log(t,e){let r=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${r?`|${r}`:""}]`),$.log(t,e,tf(this.userId)||of(this.userId),this.userId,this.sdkAppId)}info(...t){this.log(2,t)}debug(...t){this.log(1,t)}warn(...t){this.log(3,t)}error(...t){this.log(4,t)}};var Zs={};mi(Zs,{ANDROID_VERSION:()=>Bl,CHROME_MAJOR_VERSION:()=>Jr,CHROME_VERSION:()=>ud,EDGE_VERSION:()=>zc,EDG_MAJOR_VERSION:()=>Hl,EDG_VERSION:()=>Jc,FIREFOX_MAJOR_VERSION:()=>qc,FIREFOX_VERSION:()=>jc,HUAWEI_VERSION:()=>od,IE_VERSION:()=>d_,IOS_MAIN_VERSION:()=>Mt,IOS_VERSION:()=>Mr,IPADQQB_VERSION:()=>rd,IS_ANDROID:()=>mt,IS_ANDROID_WEBVIEW:()=>p_,IS_ANY_SAFARI:()=>Xr,IS_CHROME:()=>Qs,IS_CHROME_OS:()=>Wl,IS_CHROMIUM_BASE:()=>zr,IS_DESKTOP_IOS_CHROME:()=>Zl,IS_EDG:()=>js,IS_EDGE:()=>jo,IS_ELECTRON:()=>l_,IS_FIREFOX:()=>$t,IS_HEADLESS_CHROME:()=>zl,IS_HONOR:()=>ql,IS_HUAWEI:()=>jl,IS_HUAWEIBROWSER:()=>aa,IS_IE:()=>df,IS_IE8:()=>c_,IS_IOS:()=>lt,IS_IOS_13_OR_14:()=>Yl,IS_IOS_15_1:()=>Ql,IS_IOS_CHROME:()=>uf,IS_IPAD:()=>Gs,IS_IPADQQB:()=>oa,IS_IPAD_PRO:()=>$l,IS_IPHONE:()=>oo,IS_IPOD:()=>cf,IS_LINUX:()=>sa,IS_LOCAL:()=>Or,IS_MAC:()=>Dr,IS_MACQQB:()=>ia,IS_MIBROWSER:()=>na,IS_MQQB:()=>Xs,IS_NATIVE_ANDROID:()=>a_,IS_OLD_ANDROID:()=>n_,IS_OPENHARMONY:()=>cd,IS_OPPOBROWSER:()=>da,IS_SAFARI:()=>_t,IS_SAFARI_15_1:()=>h_,IS_SAMSUNGBROWSER:()=>ca,IS_SOGOU:()=>ta,IS_SOGOUM:()=>ea,IS_TBS:()=>wr,IS_UCBROWSER:()=>Gl,IS_VIVOBROWSER:()=>ua,IS_WECHAT:()=>zs,IS_WIN:()=>qo,IS_WQQB:()=>ra,IS_WX:()=>u_,IS_X5MQQB:()=>Js,IS_XWEB:()=>qs,MACQQB_VERSION:()=>td,MI_VERSION:()=>id,MQQB_VERSION:()=>Ws,OPENHARMONY_VERSION:()=>m_,OPPO_VERSION:()=>nd,SAFARI_VERSION:()=>Si,SAMSUNG_VERSION:()=>sd,SOGOUM_VERSION:()=>Xc,SOGOU_VERSION:()=>Qc,TBS_VERSION:()=>Yc,UA_DATA_STRING:()=>Nr,USER_AGENT:()=>ir,VIVO_VERSION:()=>ad,WECHAT_VERSION:()=>Kc,WQQB_VERSION:()=>ed,XWEB_VERSION:()=>Zc,browserInfo:()=>qr,getBrowserCoreNumber:()=>tm,getBrowserInfo:()=>lf,getChromeMajorVersion:()=>dd,getDeviceModel:()=>la,getGPUInfo:()=>em,getOSName:()=>Ys,getOSNumber:()=>Jo,getOSString:()=>Xo,getOSType:()=>im,getTerminalType:()=>rm,getUserAgentData:()=>zo,isLocalStorageEnabled:()=>Ii,isMobile:()=>Kl,isVersionLargerThan:()=>Xl,isVersionSmallerThan:()=>Jl});var ir=typeof navigator=="undefined"?"":navigator.userAgent,ye=i=>new RegExp(i,"i").test(ir),Tt=i=>{if(ye(i)){let t=new RegExp(`${i}\\/([\\d.]+)`),e=ir.match(t);if(e&&e[1])return e[1]}return""},Fl=i=>{if(ye(i)){let t=new RegExp(`${i}\\/(\\d+)`),e=ir.match(t);if(e&&e[1])return parseFloat(e[1])}return NaN},nf=/AppleWebKit\/([\d.]+)/i.exec(ir),s_=nf?parseFloat(nf[1]):NaN,Gs=ye("iPad"),$l=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&ye("Macintosh"),oo=ye("iPhone")&&!Gs,cf=ye("iPod"),lt=oo||Gs||cf||$l,mt=ye("Android"),Bl=function(){if(mt){let i=ir.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(i){let t=i[1]&&parseFloat(i[1]),e=i[2]&&parseFloat(i[2]);if(t&&e)return parseFloat(`${i[1]}.${i[2]}`);if(t)return t}}return NaN}(),n_=mt&&ye("webkit")&&Bl<2.3,a_=mt&&Bl<5&&s_<537,$t=ye("Firefox"),jc=Tt("Firefox"),qc=Fl("Firefox"),jo=ye("Edge"),zc=Tt("Edge"),js=ye("Edg"),Jc=Tt("Edg"),Hl=Fl("Edg"),ea=ye("SogouMobileBrowser"),Xc=Tt("SogouMobileBrowser"),ta=ye("MetaSr\\s"),Qc=Tt("MetaSr\\s"),wr=ye("TBS"),Yc=Tt("TBS"),qs=ye("XWEB"),Zc=Tt("XWEB"),c_=ye("MSIE\\s8\\.0"),df=ye("MSIE\\/\\d+"),d_=function(){if(df){let i=/MSIE\s(\d+)\.\d/.exec(ir),t=i&&parseFloat(i[1]);return!t&&/Trident\/7.0/i.test(ir)&&/rv:11.0/.test(ir)&&(t=11),t}return NaN}(),zs=ye("(micromessenger|webbrowser)"),Kc=Tt("MicroMessenger"),Js=!wr&&ye("MQQBrowser")&&ye("COVC"),Xs=!wr&&ye("MQQBrowser")&&!ye("COVC"),Ws=Xs||Js?Tt("MQQBrowser"):"",ra=!wr&&ye(" QQBrowser"),ed=Tt(" QQBrowser"),ia=!wr&&ye("QQBrowserLite"),td=Tt("QQBrowserLite"),oa=!wr&&ye("MQBHD"),rd=Tt("MQBHD"),qo=ye("Windows"),Dr=!lt&&ye("MAC OS X"),sa=!mt&&ye("Linux"),Wl=ye("CrOS"),u_=ye("MicroMessenger"),Gl=ye("UCBrowser"),l_=ye("Electron"),na=ye("MiuiBrowser"),id=Tt("MiuiBrowser"),aa=ye("HuaweiBrowser"),jl=ye("Huawei")||ye("HUAWEI"),ql=ye("Honor")||ye("HONOR"),od=Tt("HuaweiBrowser"),ca=ye("SamsungBrowser"),sd=Tt("SamsungBrowser"),da=ye("HeyTapBrowser"),nd=Tt("HeyTapBrowser"),ua=ye("VivoBrowser"),ad=Tt("VivoBrowser"),cd=ye("OpenHarmony"),m_=Tt("OpenHarmony"),dd=()=>Fl("Chrome"),zr=ye("Chrome"),Qs=!jo&&!ta&&!ea&&!wr&&!qs&&!js&&!ra&&!na&&!aa&&!ca&&!da&&!ua&&zr,zl=ye("HeadlessChrome"),Jr=dd(),ud=Tt("Chrome"),_t=!zr&&!Xs&&!Js&&!ia&&!oa&&ye("Safari"),Xr=_t||lt,Si=Tt("Version"),p_=/Android.*(wv|.0.0.0)/.test(ir),Mr=(()=>{if($l)return Si;if(lt){let i=ir.match(/OS (\d+)_(\d+)/i);if(i&&i[1]){let t=i[1];return i[2]&&(t+=`.${i[2]}`),t}}return""})();function Jl(i,t){let e=i.split(".").map(o=>Number(o)),r=t.split(".").map(o=>Number(o));for(let o=0;o<Math.max(e.length,r.length);o++){let s=e[o]||0,n=r[o]||0;if(s<n)return!0;if(s>n)return!1}return!1}function Xl(i,t,e=!1){let r=i.split(".").map(s=>Number(s)),o=t.split(".").map(s=>Number(s));for(let s=0;s<Math.max(r.length,o.length);s++){let n=r[s]||0,a=o[s]||0;if(n>a)return!0;if(n<a)return!1}return e}var Mt=Number(Mr.split(".")[0]),h_=Si==="15.1",Ql=Mr==="15.1",Yl=(()=>{let i=Number(Mr.split(".")[0]);return i===14||i===13})(),uf=ye("CriOS"),Zl=uf&&Si==="11.1.1",Or=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",Ii=(()=>{let i;return()=>{if(typeof i=="undefined")try{i=!!window.localStorage}catch(t){i=!1}return i}})(),qr=lf();function lf(){let i=new Map([[$t,["Firefox",jc]],[js,["Edg",Jc]],[Qs,["Chrome",ud]],[_t,["Safari",Si]],[wr,["TBS",Yc]],[qs,["XWEB",Zc]],[zs&&oo,["WeChat",Kc]],[ra,["QQ(Win)",ed]],[Xs,["QQ(Mobile)",Ws]],[Js,["QQ(Mobile X5)",Ws]],[ia,["QQ(Mac)",td]],[oa,["QQ(iPad)",rd]],[na,["MI",id]],[aa,["HW",od]],[ca,["Samsung",sd]],[da,["OPPO",nd]],[ua,["VIVO",ad]],[jo,["EDGE",zc]],[ea,["SogouMobile",Xc]],[ta,["Sogou",Qc]]]),t="unknown",e="unknown";return i.has(!0)&&([t,e]=i.get(!0)),{name:t,version:e}}var Ge=null;function Kl(){return Ge&&typeof Ge.mobile=="boolean"?Ge.mobile:mt||lt||oo||Gs||cd}var Nr="";function zo(){return y(this,null,function*(){if(Ge)return Ge;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return Ge=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),Ge&&!Nr&&(Nr=`UAData: ${Ge.platform}/${Ge.platformVersion}`,Ge.architecture&&Ge.bitness&&(Nr+=` ${Ge.architecture}/${Ge.bitness}`),Ge.mobile&&(Nr+=" mobile"),Ge.model&&(Nr+=` model: ${Ge.model.replace(/\s+/g,"/")}`),Ge.fullVersionList&&(Nr+=` ${Ge.fullVersionList.filter(i=>i.brand!=="Not/A)Brand").map(i=>`${i.brand}/${i.version}`).join(",")}`)),Ge}catch(i){return null}})}function em(){try{let i=document.createElement("canvas"),t=i.getContext("webgl")||i.getContext("experimental-webgl");if(!t)return"";let e=t.getExtension("WEBGL_debug_renderer_info");if(e){let r=t.getParameter(e.UNMASKED_VENDOR_WEBGL),o=t.getParameter(e.UNMASKED_RENDERER_WEBGL);return`${r} ${o}`}return""}catch(i){return""}}function la(){return(Ge==null?void 0:Ge.model)||""}var af=new Map([[mt,"Android"],[lt,"iOS"],[qo,"Windows"],[Dr,"MacOS"],[sa,"Linux"],[Wl,"ChromeOS"]]),Ys=function(){return af.get(!0)?af.get(!0):Ge?Ge.platform:"unknown"};function Jo(){return qo?1:mt?2:Dr?3:lt?4:sa?5:Wl?6:cd?7:0}function tm(){return zr?1:_t?2:$t?3:0}var Xo=()=>{let i=Ys();return i+=`/${qr.name}/${_t?qr.version:qr.version.split(".")[0]}`,Ge!=null&&Ge.platformVersion&&(i+=`/${Ge.platformVersion}`),Ge!=null&&Ge.architecture&&(i+=`/${Ge.architecture}`),i};function rm(){return mt?4:oo?2:Gs?3:Dr?12:qo?5:sa?13:cd?22:1}function im(){return mt?"Android":oo?"iPhone":Gs?"iPad":Dr?"Mac":qo?"Windows":sa?"Linux":"unknown"}var pf=Ki(so(),1),E_=new pf.default,V=E_;var Qr=(me=>(me.ROOM_DESTROY="1",me.JOIN_START="21",me.JOIN_SCHEDULE_SUCCESS="22",me.JOIN_SIGNAL_CONNECTION_START="23",me.JOIN_SIGNAL_CONNECTION_END="24",me.JOIN_SEND_CMD="25",me.JOIN_RECEIVED_CMD_RES="26",me.JOIN_SUCCESS="27",me.JOIN_FAILED="28",me.LEAVE_START="51",me.LEAVE_SEND_CMD="52",me.LEAVE_SUCCESS="53",me.PUBLISH_START="61",me.SEND_FIRST_VIDEO_FRAME="62",me.PUBLISH_FAILED="63",me.SUBSCRIBE_START="81",me.SUBSCRIBE_SUCCESS="82",me.SUBSCRIBE_FAILED="84",me.UNSUBSCRIBE_SUCCESS="83",me.LOCAL_TRACK_CAPTURE_START="101",me.LOCAL_TRACK_CAPTURE_SUCCESS="102",me.LOCAL_TRACK_CAPTURE_FAILED="103",me.LOCAL_TRACK_PUBLISHED="104",me.LOCAL_TRACK_UNPUBLISHED="105",me.LOCAL_TRACK_REPLACED="106",me.SWITCH_DEVICE_SUCCESS="107",me.TRACK_MUTED="108",me.TRACK_UNMUTED="109",me.REMOTE_TRACK_SUBSCRIBED="110",me.REMOTE_TRACK_UNSUBSCRIBED="111",me.LOCAL_TRACK_RECAPTURE="112",me.LOCAL_AUDIO_STARTED="113",me.LOCAL_AUDIO_STOPPED="114",me.REMOTE_AUDIO_STARTED="115",me.REMOTE_AUDIO_STOPPED="116",me.PLAY_TRACK_START="151",me.PLAYER_STATE_CHANGED="152",me.VIDEO_LOADED_DATA="153",me.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",me.SIGNAL_CONNECTION_STATE_CHANGED="201",me.PEER_CONNECTION_STATE_CHANGED="202",me.SINGLE_CONNECTION_STAT="203",me.SPC_RECONNECTED="204",me.HEARTBEAT_REPORT="251",me.RECEIVED_PUBLISHED_USER_LIST="252",me.REMOTE_PUBLISH_STATE_CHANGED="253",me.AUDIO_LEVEL_INTERVAL="260",me.NETWORK_QUALITY="261",me.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",me.QUALITY_LIMITATION_CHANGED="263",me.LOG="264",me.AUDIO_PROCESSOR_DEBUG="265",me.SSO="266",me.SWITCH_ROOM_START="401",me.SWITCH_ROOM_SUCCESS="407",me.SWITCH_ROOM_FAILED="408",me))(Qr||{});var F=Qr;var T_="%cTRTC%c%s",__="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",S_="display: inline",md=class md{constructor(){l(this,"_isEnableUploadLog",!0);l(this,"_localJoinedUser",new Map);l(this,"_queue",[]);l(this,"_timeoutId",-1);l(this,"_logLevel",1);l(this,"_logLevelToUpload",2);l(this,"_sso",!1);!ws&&!Fn&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){V.on(F.JOIN_SCHEDULE_SUCCESS,({schedule:t})=>{var e,r;(e=t==null?void 0:t.config)!=null&&e.logLevelToUpload&&br[t.config.logLevelToUpload]&&(this._logLevelToUpload=t.config.logLevelToUpload),(r=t==null?void 0:t.config)!=null&&r.sso&&(this._sso=!0)}),V.on(F.JOIN_SUCCESS,({room:t})=>{this.addJoinedUser({userId:t.userId,sdkAppId:t.sdkAppId}),this.startUpload()}),V.once(F.JOIN_FAILED,()=>{this.startUpload()}),V.on(F.LEAVE_SUCCESS,({room:t})=>{this.deleteJoinedUser(t.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(t){this._localJoinedUser.set(t.userId,t),this.startUpload()}deleteJoinedUser(t){this._localJoinedUser.delete(t)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let t={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return t;let e=0;for(;e<this._queue.length&&e!==50;e++){let r=this._queue[e];if(r.forAllJoinedClients)this._localJoinedUser.forEach(({userId:o,sdkAppId:s})=>{t.map.has(o)?t.map.get(o).logs.push(r):t.map.set(o,{userId:o,sdkAppId:s,logs:[r]})});else if(Ne(r.userId)&&Pe(r.sdkAppId)){let{userId:o,sdkAppId:s}=r;t.map.has(o)?t.map.get(o).logs.push(r):t.map.set(o,{userId:o,sdkAppId:s,logs:[r]})}}return t.map.size>0&&(t.splicedQueue=this._queue.splice(0,e)),t}upload(){return y(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:t,splicedQueue:e}=this.getLogsToUpload();if(t.size===0)return;try{let o=[...t.values()];for(let s=0;s<o.length;s++){let{userId:n,sdkAppId:a,logs:u}=o[s],m={timestamp:vc(),sdkAppId:String(a),userId:n,version:at,log:u.map(g=>g.log).join(`
4
+ `)},h=this._sso?Ti(m,2002,a):JSON.stringify(m);yield this.uploadLogWithRetry(h,a,h instanceof Uint8Array),u.forEach(g=>g.uploaded=!0)}}catch(o){}let r=e.filter(o=>!o.uploaded);r.length>0&&(this._queue=r.concat(this._queue))})}uploadLogWithRetry(t,e,r){return io({retryFunction:()=>_i({url:Ei(e,eo.LOG),body:t,timeout:5e3,priority:"low"}).then(o=>{r&&V.emit(F.SSO,{result:o.data==="ok"})}),settings:{retries:3,timeout:2e3},onError:({retry:o})=>{o()}})()}getPrefix(t){let e=new Date;return e.setTime(Vn()),`[${Ns(e)}] <${br[t]}>`}getLogLevel(){return this._logLevel}setLogLevel(t){M(br[t])||(this._logLevel!==t&&this.info("setLogLevel",t),this._logLevel=t)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(t){if(Ne(t))return t;try{return t instanceof Error?t.toString():JSON.stringify(t)}catch(e){return""}}log(t,e,r=!0,o,s){var u;e.unshift(this.getPrefix(t));let n={log:e.reduce((m,h)=>`${m} ${this.logChunkToString(h)}`.trim(),""),level:t,userId:o,sdkAppId:s,forAllJoinedClients:r};if(V.emit(F.LOG,{log:n}),this._isEnableUploadLog&&t>=this._logLevelToUpload&&this._queue.push(n),t<this._logLevel)return;let a=((u=br[t])==null?void 0:u.toLowerCase())||"info";md.PRINT_LOG_TAG?console[a](T_,__,S_,...e):console[a](...e)}debug(...t){this.log(1,t)}info(...t){this.log(2,t)}warn(...t){this.log(3,t)}error(...t){this.log(4,t)}createLogger(t){return new Hs(t)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),r=e?Number(e):-1;br[r]&&(this._logLevelToUpload=r)}getQueue(){return this._queue}};l(md,"PRINT_LOG_TAG",!(lt||mt||zl));var sm=md,$=new sm;var I_=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{let t=Math.random()*16|0;return(i=="x"?t:t&3|8).toString(16)})},pa=I_;var nm=class{constructor(){l(this,"_prefix","TRTC");l(this,"_queue",new Map)}getRealKey(t){return`${this._prefix}_${t}`}checkStorage(){if(!Ii())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(r=>{if(r.startsWith(this._prefix))try{let o=localStorage.getItem(r);if(!o)return!1;let s=JSON.parse(o);if(s&&s.expiresIn<Date.now())return!0}catch(o){return!1}return!1}).forEach(r=>localStorage.removeItem(r))}doFlush(){if(Ii())try{for(let[t,e]of this._queue)localStorage.setItem(t,JSON.stringify(e))}catch(t){$.warn(t)}}getItem(t){if(!Ii())return null;try{let e=localStorage.getItem(this.getRealKey(t));if(!e)return null;let r=JSON.parse(e);return r&&r.expiresIn>=Date.now()?r.value:null}catch(e){$.warn(e)}}setItem(t,e){if(Ii())try{let r={expiresIn:Date.now()+Cc,value:e};this._queue.set(this.getRealKey(t),r)}catch(r){$.warn(r)}}deleteItem(t){if(!Ii())return!1;try{return t=this.getRealKey(t),this._queue.delete(t),localStorage.removeItem(t),!0}catch(e){return $.warn(e),!1}}clear(){if(Ii())try{localStorage.clear()}catch(t){$.warn(t)}}},Ks=new nm;var co={};mi(co,{HTTPS_API:()=>H_,IS_GET_CAPABILITIES_SUPPORTED:()=>wm,IS_GET_SETTINGS_SUPPORTED:()=>on,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>Y_,IS_INSERTABLE_STREAM_SUPPORTED:()=>Aa,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>tS,IS_RTC_RTP_SENDER_SUPPORTED:()=>ya,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>jf,IS_SEI_SUPPORTED:()=>ba,IS_SPC_SUPPORTED:()=>z_,basis:()=>K_,capabilityCheck:()=>Mm,checkSystemRequirementsInternal:()=>vd,decodeSupportStatus:()=>Uf,detectVideoCodecCapabilities:()=>Om,detectVideoDecoderCapabilities:()=>Yf,detectVideoEncoderCapabilities:()=>Qf,encodeSupportStatus:()=>Nm,getBrowserInfo:()=>bd,getDisplayResolution:()=>Vf,isAddTransceiverSupported:()=>Nd,isBrowserSupported:()=>Rm,isCanvasCaptureStreamAPISupported:()=>Bf,isCanvasSmallStreamSupported:()=>Hf,isGetReceiversSupported:()=>j_,isGetSendersSupported:()=>Gf,isGetTransceiversSupported:()=>q_,isGetUserMediaSupported:()=>Ff,isMediaDevicesSupported:()=>Rd,isMediaSessionSupported:()=>zf,isMediaStreamTrackProcessorSupported:()=>Cm,isReplaceTrackSupported:()=>X_,isRequestVideoFrameCallbackSupported:()=>Ci,isSIMDSupported:()=>Z_,isScaleResolutionDownBySupported:()=>Wf,isScreenCaptureApiAvailable:()=>Ia,isSelectedCandidatePair:()=>W_,isSetParametersSupported:()=>Q_,isSetSinkIdSupported:()=>F_,isSmallStreamSupported:()=>Cd,isStopTransceiverSupported:()=>J_,isTRTCSupported:()=>V_,isUnifiedPlanDefault:()=>G_,isUsedInHttpProtocol:()=>vi,isWebAudioSupported:()=>$f,isWebCodecSupported:()=>qf,isWebCodecsSupported:()=>vm,isWebRTCSupported:()=>Dm,isWebTransportSupported:()=>Jf});var _m={};mi(_m,{AUDIO_LEVEL_SCALE:()=>Ai,AudioCodecPipelineType:()=>Ed,AudioDecoderDowngradeState:()=>dm,AudioPlayerMode:()=>pm,AudioType:()=>lm,BASIC_TYPE:()=>bi,BannedReason:()=>hm,CONNECTION_CLOSED_REASON:()=>ff,CheckPermissionType:()=>Tm,ClientEvent:()=>am,CodecType:()=>yf,ConnectionEvent:()=>hf,ConnectionState:()=>hd,DECODE_FAILED_ERROR_CODE:()=>Em,FacingMode:()=>fd,FrameWorkType:()=>pd,LeaveReason:()=>fm,LocalTrackEvent:()=>fa,MULTI_VIDEO_DATA_TYPE:()=>yi,MediaType:()=>Ct,MediaTypeLabel:()=>y_,MonitorEventId:()=>Ea,MutedFlag:()=>Ef,NetworkQualityValue:()=>Sf,PlayerState:()=>Qo,ReceiveMode:()=>If,RemoteStreamType:()=>Zr,RemoteTrackEvent:()=>en,RoomEvent:()=>no,SMALL_MODE:()=>Td,SceneNumber:()=>cm,StreamEvent:()=>gf,StreamType:()=>_f,SubscribeMediaType:()=>ha,TIMER_TYPE:()=>ao,TRACK_ACTION:()=>Tf,TRACK_KIND:()=>um,TrackEvent:()=>Yr,UserRole:()=>Qt,UserRoleNumber:()=>Yo,VideoCodec:()=>gm,VideoCodecPipelineType:()=>Ta,VideoContentHint:()=>_a,VideoDecoderDowngradeState:()=>ga,VideoPlayerMode:()=>gd,VideoType:()=>mm});var pd=(e=>(e[e.WEBRTC=30]="WEBRTC",e[e.WASM=37]="WASM",e))(pd||{}),hf=(N=>(N.TRACK_ADDED="track-added",N.TRACK_UPDATED="track-updated",N.TRACK_SUBSCRIBED="track-subscribed",N.STREAM_ADDED="stream-added",N.STREAM_REMOVED="stream-removed",N.STREAM_UPDATED="stream-updated",N.STREAM_PUBLISHED="stream-published",N.STREAM_SUBSCRIBED="stream-subscribed",N.STREAM_UNSUBSCRIBED="stream-unsubscribed",N.STATE_CHANGED="state-changed",N.ERROR="error",N.CONNECTION_STATE_CHANGED="connection-state-changed",N.FIREWALL_RESTRICTION="firewall-restriction",N.SEI_MESSAGE="sei-message",N.CLOSED="closed",N))(hf||{}),ff=(n=>(n.REMOTE_LEAVE="remote user exitRoom",n.REMOTE_UNPUBLISH="remote user unpublished",n.LOCAL_LEAVE="you exitRoom",n.LOCAL_UNPUBLISH="you unpublished",n.LOCAL_UNSUBSCRIBE="you unsubscribed",n.SWITCH_ROLE="you switch role to audience",n))(ff||{}),am=(D=>(D.STREAM_ADDED="stream-added",D.STREAM_REMOVED="stream-removed",D.STREAM_UPDATED="stream-updated",D.STREAM_SUBSCRIBED="stream-subscribed",D.CONNECTION_STATE_CHANGED="connection-state-changed",D.PEER_JOIN="peer-join",D.PEER_LEAVE="peer-leave",D.MUTE_AUDIO="mute-audio",D.MUTE_VIDEO="mute-video",D.UNMUTE_AUDIO="unmute-audio",D.UNMUTE_VIDEO="unmute-video",D.CLIENT_BANNED="client-banned",D.NETWORK_QUALITY="network-quality",D.AUDIO_VOLUME="audio-volume",D.SEI_MESSAGE="sei-message",D.ERROR="error",D))(am||{}),gf=(s=>(s.PLAYER_STATE_CHANGED="player-state-changed",s.SCREEN_SHARING_STOPPED="screen-sharing-stopped",s.CONNECTION_STATE_CHANGED="connection-state-changed",s.DEVICE_AUTO_RECOVERED="device-auto-recovered",s.ERROR="error",s))(gf||{}),fa=(a=>(a.DEVICE_AUTO_RECOVERED="1",a.DEVICE_RECOVER_FAILED="5",a.DEVICE_CHANGED="2",a.ERROR="3",a.PUBLISH_STATE_CHANGED="4",a.ENCODE_FAILED="6",a.TRACK_ENDED="7",a))(fa||{}),Qo=(r=>(r.PAUSED="PAUSED",r.PLAYING="PLAYING",r.STOPPED="STOPPED",r))(Qo||{}),no=(ce=>(ce.PEER_JOIN="peer-join",ce.PEER_LEAVE="peer-leave",ce.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",ce.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",ce.BANNED="banned",ce.NETWORK_QUALITY="network-quality",ce.AUDIO_VOLUME="audio-volume",ce.SEI_MESSAGE="sei-message",ce.ERROR="error",ce.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",ce.REMOTE_PUBLISHED="remote-published",ce.REMOTE_UNPUBLISHED="remote-unpublished",ce.FIREWALL_RESTRICTION="firewall-restriction",ce.HEARTBEAT_REPORT="heartbeat-report",ce.CUSTOM_MESSAGE="custom-message",ce.LAYER_DATA="layerData",ce.FIRST_VIDEO_FRAME="first-video-frame",ce.DUMP="dump",ce.AUDIO_FRAME="audio-frame",ce.SUBSCRIBE_SMALL_VIDEO_CHANGED="subscribe-small-video-changed",ce))(no||{}),Yr=(a=>(a.PLAYER_STATE_CHANGED="player-state-changed",a.MUTE="mute",a.UNMUTE="unmute",a.ERROR="error",a.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",a.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",a.FIRST_VIDEO_FRAME="first-video-frame",a))(Yr||{}),en=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(en||{}),Ef=(a=>(a[a.VIDEO=1]="VIDEO",a[a.SMALL=2]="SMALL",a[a.AUX=4]="AUX",a[a.AUDIO=8]="AUDIO",a[a.VIDEO_MUTE=16]="VIDEO_MUTE",a[a.AUX_MUTE=32]="AUX_MUTE",a[a.AUDIO_MUTE=64]="AUDIO_MUTE",a))(Ef||{}),cm=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(cm||{}),Yo=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(Yo||{}),Qt=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(Qt||{}),hd=(s=>(s.CONNECTED="CONNECTED",s.DISCONNECTED="DISCONNECTED",s.CONNECTING="CONNECTING",s.RECONNECTED="RECONNECTED",s.RECONNECTING="RECONNECTING",s))(hd||{}),dm=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(dm||{}),ga=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(ga||{}),um=(r=>(r.AUDIO="audio",r.VIDEO="video",r.AUXILIARY="auxVideo",r))(um||{}),Tf=(e=>(e.ADD="add",e.REMOVE="remove",e))(Tf||{}),Ct=(s=>(s[s.NULL=0]="NULL",s[s.AUDIO=1]="AUDIO",s[s.AUX_VIDEO=2]="AUX_VIDEO",s[s.BIG_VIDEO=4]="BIG_VIDEO",s[s.SMALL_VIDEO=8]="SMALL_VIDEO",s))(Ct||{}),y_={1:"audio",2:"auxVideo",4:"video"},lm=(t=>(t[t.opus=111]="opus",t))(lm||{}),mm=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(mm||{}),_f=(e=>(e.Big="big",e.Small="small",e))(_f||{}),Zr=(e=>(e.Main="main",e.Aux="auxiliary",e))(Zr||{}),yi=(s=>(s[s.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",s[s.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",s[s.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",s[s.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",s[s.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",s))(yi||{}),Ea=(j=>(j[j.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",j[j.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",j[j.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",j[j.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",j[j.MUTE_AUDIO=32772]="MUTE_AUDIO",j[j.MUTE_VIDEO=32773]="MUTE_VIDEO",j[j.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",j[j.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",j[j.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",j[j.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",j[j.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",j[j.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",j[j.SWITCH_CAMERA=32780]="SWITCH_CAMERA",j[j.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",j[j.REPLACE_VIDEO=32782]="REPLACE_VIDEO",j[j.REPLACE_AUDIO=32783]="REPLACE_AUDIO",j[j.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",j[j.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",j[j.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",j[j.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",j[j.JOIN=32788]="JOIN",j[j.LEAVE=32789]="LEAVE",j[j.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",j[j.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",j[j.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",j[j.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",j[j.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",j[j.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",j[j.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",j[j.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",j[j.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",j[j.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",j[j.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",j[j.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",j[j.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",j[j.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",j[j.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",j[j.PUBLISH_AUX=32805]="PUBLISH_AUX",j[j.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",j[j.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",j[j.VIDEO_ENCODER=4004]="VIDEO_ENCODER",j[j.VIDEO_DECODER=4005]="VIDEO_DECODER",j))(Ea||{}),Sf=(a=>(a[a.UNKNOWN=0]="UNKNOWN",a[a.EXCELLENT=1]="EXCELLENT",a[a.GOOD=2]="GOOD",a[a.POOR=3]="POOR",a[a.BAD=4]="BAD",a[a.VERY_BAD=5]="VERY_BAD",a[a.DISCONNECTED=6]="DISCONNECTED",a))(Sf||{}),If=(o=>(o[o.MANUAL=0]="MANUAL",o[o.AUTO_AUDIO=1]="AUTO_AUDIO",o[o.AUTO_VIDEO=2]="AUTO_VIDEO",o[o.AUTO_ALL=3]="AUTO_ALL",o))(If||{}),fd=(e=>(e.user="user",e.environment="environment",e))(fd||{}),gd=(r=>(r[r.ELEMENT=0]="ELEMENT",r[r.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",r[r.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",r))(gd||{}),pm=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(pm||{}),hm=(o=>(o.BANNED="banned",o.KICK="kick",o.USER_TIME_OUT="user_time_out",o.ROOM_DISBAND="room_disband",o))(hm||{}),fm=(m=>(m[m.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",m[m.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",m[m.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",m[m.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",m[m.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",m[m.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",m[m.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",m[m.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",m[m.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",m))(fm||{}),Ai=1e8,ha=class{constructor(){l(this,"mediaType",0)}set audio(t){t?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(t){t?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(t){t?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(t){t?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},bi=(s=>(s.String="string",s.Number="number",s.Boolean="boolean",s.Array="array",s.Object="object",s))(bi||{}),gm=(s=>(s.H264="h264",s.H265="h265",s.VP8="vp8",s.VP9="vp9",s.AV1="av1",s))(gm||{}),Ta=(o=>(o[o.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",o[o.DUMP=1]="DUMP",o[o.SEI=2]="SEI",o[o.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",o))(Ta||{}),Ed=(o=>(o[o.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",o[o.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",o[o.DUMP=2]="DUMP",o[o.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",o))(Ed||{}),yf=(r=>(r.WebRTC="webrtc",r.WebCodecs="webcodecs",r.WebAssembly="webassembly",r))(yf||{}),Em=(T=>(T[T.SUCCESS=0]="SUCCESS",T[T.FAILED=1]="FAILED",T[T.WEBCODEC_INIT=2]="WEBCODEC_INIT",T[T.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",T[T.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",T[T.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",T[T.WASM_INIT=6]="WASM_INIT",T[T.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",T[T.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",T[T.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",T[T.TEST=10]="TEST",T[T.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",T))(Em||{}),_a=(o=>(o.NONE="",o.DETAIL="detail",o.MOTION="motion",o.TEXT="text",o))(_a||{}),ao=(s=>(s.INTERVAL="interval",s.TIMEOUT="timeout",s.RAF="raf",s.RIC="ric",s.INTERVAL_IN_WORKER="intervalInWorker",s))(ao||{}),Td=(e=>(e.CANVAS="canvas",e.API="api",e))(Td||{}),Tm=(o=>(o[o.NONE=0]="NONE",o[o.MICROPHONE=1]="MICROPHONE",o[o.CAMERA=2]="CAMERA",o[o.BOTH=3]="BOTH",o))(Tm||{});var $e={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX"},Yt={AVOID_REPEATED_CALL(i){return`previous ${i.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' is a required param when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_TYPE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s="";return Array.isArray(t.type)?s=t.type.join("|"):s=t.type,`'${o}' must be type of ${s} when calling ${e}(), received type: ${ct(r)}.`},INVALID_PARAMETER_EMPTY({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be '${r}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s=`${t.instanceOf.name||t.instanceOf}`;return`'${o}' must be instanceof ${s} when calling ${e}(), received type: ${ct(r)}.`},INVALID_PARAMETER_RANGE({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' must be one of ${t.values.join("|")} when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_MIN({key:i,rule:t,fnName:e,value:r}){return`the min value of ${i||t.name} is ${t.min}, received: ${r}.`},INVALID_PARAMETER_MAX({key:i,rule:t,fnName:e,value:r}){return`the max value of ${i||t.name} is ${t.max}, received: ${r}.`},API_CALL_TIMEOUT(i){return`${i.commandDesc||i.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(i){return`SignalChannel setup failure: (errorCode: ${i.errorCode}, errorMsg: ${i.errorMsg} }).`},ERROR_MESSAGE(i){let t=`${i.type} failed`;return i.message&&(t=`${t}: ${i.message}.`),t},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(i){return`exchange sdp failed ${i.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING(i){return`'${i}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(i){return`'${i}' must be an integer between [1, 4294967294] when useStringRoomId is false.`},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED({error:i,code:t}){return`Failed to join room - ${i} code: ${t}`},REJOIN_ROOM_FAILED(i){return`reJoin room: ${i.roomId} failed, please check your network.`},INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING(i){return`duplicate ${i} stream publishing, please unpublish your prev ${i} stream and then re-publish.`},INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED({message:i,userId:t,streamType:e}){return`failed to subscribe ${t} ${e} stream, reason: ${i}.`},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED(i){return`switchRole failed, errCode: ${i.code} errMsg: ${i.message}.`},CLIENT_BANNED(i){return`client was banned because of ${i.message}.`},INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED(i){return`startPublishCDNStream failed, errMsg: ${i.message}.`},STOP_PUBLISH_CDN_FAILED(i){return`stopPublishCDNStream failed, errMsg: ${i.message}.`},INVALID_STREAM_ID(i){return`'${i}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK(i){return`cannot replace ${i.kind} track because stream has not ${i.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(i){return`startMixTranscode failed, errMsg: ${i.message}.`},STOP_MIX_TRANSCODE_FAILED(i){return`stopMixTranscode failed, errMsg: ${i.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be less than 0 when calling ${e}().`},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER(i){return`'${i}' is required and must be between 1 and 15.`},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:i,fnName:t})=>`'${i}' is not found in the document object when calling ${t}().`,INVALID_ELEMENT_ID_TYPE:({key:i,fnName:t,type:e})=>`the element corresponding to '${i}' must be instanceof HTMLElement when calling ${t}(), received: ${e}.`,PLAY_FAILED:i=>`${i.media} play failed, browser exception: ${i.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK(i){return`${i}Track is not supported on your browser.`},NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED(i){return`${i.signalResponse} failed, response code is ${i.code} , errMsg: ${i.message}.`},CATCH_HANDLER_ERROR({name:i,event:t}){return`an error was caught in ${i}.on('${t}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:i}){return`experimental api ${i} does not exist.`},REPEAT_JOIN:i=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED({funName:i}){return`failed to call ${i}() because client was destroyed.`},SEI_NOT_SUPPORT:i=>`not support to sendSEIMessage${i===!1?" without using h264 codec":""}`,SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:i,name:t,timesInSecond:e,maxSizeInSecond:r})=>`api ${t} call ${i?"size":"times"} is over ${i?`${r} bytes`:e} in a second.`,CONNECTION_ABORTED(i){return`connection aborted due to: ${i}`},API_CALL_ABORTED(i){let t;return i.message.includes("REMOTE_STREAM_NOT_EXIST")?t=`Subscribe ${i.userId} ${i.streamType} stream aborted, reason: remote user ${i.userId} unpublished stream.`:t=`API aborted, reason: ${i.message}`,t},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:i=>`'streamType' is required when 'userId' is not '*', calling ${i}()`};var Af=(i,t)=>t?`${Hr}/${i}/${t}`:`${Hr}/${i}/index.html`;var A_=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let i=localStorage==null?void 0:localStorage.getItem(El);if(i){i=JSON.parse(i);let t=document.createElement("script");t.type="text/javascript",t.text=i.message,document.body.appendChild(t);let e=window.TRTC_ERROR_INFO,r=window.TRTC_ERROR_LINK;return document.body.removeChild(t),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:r}}return{}};function Be(i){let{key:t,data:e,link:r,addDocLink:o=!0}=i,s="",n="",a="";We(Yt[t])?s=Yt[t](e):Ne(Yt[t])&&(s=Yt[t]);let{TRTC_ERROR_INFO:u,TRTC_ERROR_LINK:m}=A_();r?a=`${r.className}.html#${r.fnName}`:m&&m[t]&&(We(m[t])?a=m[t](e):Ne(m[t])&&(a=m[t]));let h=s;return vr()&&(u&&u[t]&&(We(u[t])?n=u[t](e):Ne(u[t])&&(n=u[t])),n&&(o?h=`${n}
5
+ \u8BF7\u67E5\u770B\u6587\u6863: ${Af("zh-cn",a)}
8
6
 
9
- `:u=`${n}
7
+ `:h=`${n}
10
8
 
11
- `,u+=s)),r&&(u+=`
12
- Refer to: ${Em("en",a)}
13
- `),u}var Sl=Ge(Nm(),1);var Ng=1,vg=0,Da=class{constructor(i=!0){d(this,"countMap",new Map);d(this,"distributionMap",new Map);d(this,"version");d(this,"log",b.createLogger({id:"kv"}));i&&(E.on("102",({track:e,cost:t})=>{this.addSuccessEvent({key:e.kind===p.AUDIO?501700:511700,cost:t})}),E.on("103",({track:e,error:t})=>{this.addFailedEvent({key:e.kind===p.AUDIO?501700:511700,error:t})}),E.on("266",({result:e})=>{e?this.addSuccessEvent({key:525700}):this.addFailedEvent({key:525700})}))}getReportData(){let i={msg_sdk_basic_info:{uint32_sdk_version:Zn(this.version||xe),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,t])=>({uint32_key:e,uint32_count:t})),stats_distribution:[...this.distributionMap.entries()].map(([e,t])=>({uint32_key:e,distribution_items:[...t.entries()].map(([r,s])=>({uint32_item_key:r,uint32_item_value:s}))}))};return this.countMap.clear(),this.distributionMap.clear(),i}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(i){let e=+String(i).slice(-3);return e>=700&&e<799}isErrorCodeKey(i){let e=+String(i).slice(-3);return e>=600&&e<699}isCountKey(i){let e=+String(i).slice(-3);return e>=0&&e<599}isNumberKey(i){let e=+String(i).slice(-3);return e>=800&&e<899}addCount({key:i,useUV:e=!1}){if(!this.isCountKey(i)){this.log.debug(`${i} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(i)||this.countMap.set(i,(this.countMap.get(i)||0)+1)}addEnum({key:i,value:e,useUV:t=!0}){var s;if(!this.isEnumKey(i))return this.log.debug(`${i} is not enum key, last 3 number should be 700~799`);if(t&&this.countMap.has(i))return;this.countMap.set(i,(this.countMap.get(i)||0)+1);let r=((s=this.distributionMap)==null?void 0:s.get(i))||new Map;r.set(e,(r.get(e)||0)+1),this.distributionMap.set(i,r)}addNumber({key:i,value:e,split:t=100,useUV:r=!1,max:s=5e3}){var c;if(!this.isNumberKey(i))return this.log.debug(`${i} is not number key, last 3 number should be 800~899`);if(r&&this.countMap.has(i))return;e>s&&(e=s),this.countMap.set(i,(this.countMap.get(i)||0)+1);let n=((c=this.distributionMap)==null?void 0:c.get(i))||new Map,a=0;if(q(t))a=Math.floor(e/t);else for(let l=t.length-1;l>0;l--)if(e>t[l]){a=l;break}n.set(a,(n.get(a)||0)+1),this.distributionMap.set(i,n)}addSuccessEvent({key:i,cost:e,timeKey:t,split:r}){if(i&&(this.addEnum({key:i,value:Ng,useUV:!1}),e)){let s=+String(i).slice(-3);s<800&&s>=700?this.addNumber({key:t||i+100,value:e,split:r}):t||this.log.debug(`time stat ignored, ${i}`)}}addFailedEvent({key:i,error:e}){if(!i)return;let t=A.UNKNOWN;e&&(q(e)?t=e:(!T(e.extraCode)||!T(e.code))&&(t=e.extraCode||e.code)),this.addEnum({key:i,value:vg,useUV:!1}),this.addEnum({key:i,value:Math.abs(t),useUV:!1})}},Ma=(J=>(J[J.enterRoom=500700]="enterRoom",J[J.exitRoom=500701]="exitRoom",J[J.switchRole=500702]="switchRole",J[J.destroy=500703]="destroy",J[J.startLocalAudio=500704]="startLocalAudio",J[J.updateLocalAudio=500705]="updateLocalAudio",J[J.stopLocalAudio=500706]="stopLocalAudio",J[J.startLocalVideo=500707]="startLocalVideo",J[J.updateLocalVideo=500708]="updateLocalVideo",J[J.stopLocalVideo=500709]="stopLocalVideo",J[J.startScreenShare=500710]="startScreenShare",J[J.updateScreenShare=500711]="updateScreenShare",J[J.stopScreenShare=500712]="stopScreenShare",J[J.startRemoteVideo=500713]="startRemoteVideo",J[J.updateRemoteVideo=500714]="updateRemoteVideo",J[J.stopRemoteVideo=500715]="stopRemoteVideo",J[J.muteRemoteAudio=500716]="muteRemoteAudio",J[J.setRemoteAudioVolume=500717]="setRemoteAudioVolume",J[J.use=500718]="use",J[J.switchRoom=500719]="switchRoom",J[J.sendSEIMessage=5e5]="sendSEIMessage",J[J.sendCustomMessage=500001]="sendCustomMessage",J))(Ma||{}),gl=(m=>(m[m.AudioMixer=550700]="AudioMixer",m[m.AIDenoiser=551700]="AIDenoiser",m[m.VirtualBackground=570700]="VirtualBackground",m[m.Beauty=571700]="Beauty",m[m.Watermark=572700]="Watermark",m[m.BasicBeauty=574700]="BasicBeauty",m[m.CDNStreaming=590700]="CDNStreaming",m[m.DeviceDetector=591700]="DeviceDetector",m[m.Debug=592700]="Debug",m[m.SmallStreamAutoSwitcher=593700]="SmallStreamAutoSwitcher",m[m.VideoMixer=594700]="VideoMixer",m[m.AudioProcessor=595700]="AudioProcessor",m))(gl||{}),Tl=(m=>(m[m.AudioMixer=550701]="AudioMixer",m[m.AIDenoiser=551701]="AIDenoiser",m[m.VirtualBackground=570701]="VirtualBackground",m[m.Beauty=571701]="Beauty",m[m.Watermark=572701]="Watermark",m[m.BasicBeauty=574701]="BasicBeauty",m[m.CDNStreaming=590701]="CDNStreaming",m[m.DeviceDetector=591701]="DeviceDetector",m[m.Debug=592701]="Debug",m[m.SmallStreamAutoSwitcher=593701]="SmallStreamAutoSwitcher",m[m.VideoMixer=594701]="VideoMixer",m[m.AudioProcessor=595701]="AudioProcessor",m))(Tl||{}),El=(m=>(m[m.AudioMixer=550702]="AudioMixer",m[m.AIDenoiser=551702]="AIDenoiser",m[m.VirtualBackground=570702]="VirtualBackground",m[m.Beauty=571702]="Beauty",m[m.Watermark=572702]="Watermark",m[m.BasicBeauty=574702]="BasicBeauty",m[m.CDNStreaming=590702]="CDNStreaming",m[m.DeviceDetector=591702]="DeviceDetector",m[m.Debug=592702]="Debug",m[m.SmallStreamAutoSwitcher=593702]="SmallStreamAutoSwitcher",m[m.VideoMixer=594702]="VideoMixer",m[m.AudioProcessor=595702]="AudioProcessor",m))(El||{});var Fo=(R=>(R[R.DECODER_TYPE=514700]="DECODER_TYPE",R[R.DECODER_HW_SW=514701]="DECODER_HW_SW",R[R.DECODE_RESULT=514702]="DECODE_RESULT",R[R.DECODE_FAILED_OS=514703]="DECODE_FAILED_OS",R[R.DOWNGRADE_RESULT=514704]="DOWNGRADE_RESULT",R[R.DOWNGRADE_WEBCODECS_VIDEO=514705]="DOWNGRADE_WEBCODECS_VIDEO",R[R.DOWNGRADE_WEBCODECS_2D=514706]="DOWNGRADE_WEBCODECS_2D",R[R.DOWNGRADE_WASM_WEGBL=514707]="DOWNGRADE_WASM_WEGBL",R[R.DOWNGRADE_WASM_VIDEO=514708]="DOWNGRADE_WASM_VIDEO",R[R.DOWNGRADE_WASM_2D=514709]="DOWNGRADE_WASM_2D",R[R.DECODE_H264_RESULT=514710]="DECODE_H264_RESULT",R[R.DECODE_H265_RESULT=514711]="DECODE_H265_RESULT",R[R.DECODE_VP8_RESULT=514712]="DECODE_VP8_RESULT",R[R.DECODE_CAPABILITIES=514713]="DECODE_CAPABILITIES",R[R.RENDER_FREEZE_RATE=514850]="RENDER_FREEZE_RATE",R[R.DATA_FREEZE_RATE=514851]="DATA_FREEZE_RATE",R[R.VIDEO_CONSUME_RENDER_RATE=514852]="VIDEO_CONSUME_RENDER_RATE",R))(Fo||{});var Dg=new Da(!0),Fr=new Da(!1);var N=Dg;var Z={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}},Mg=new Map([[ne,["Firefox",ra]],[No,["Edg",sa]],[wo,["Chrome",Sa]],[Oe,["Safari",Bi]],[$t,["TBS",ca]],[vo,["XWEB",da]],[Do&&ur,["WeChat",la]],[ws,["QQ(Win)",ua]],[Oo,["QQ(Mobile)",Ro]],[Mo,["QQ(Mobile X5)",Ro]],[xs,["QQ(Mac)",ha]],[Ls,["QQ(iPad)",ma]],[Vs,["MI",pa]],[Us,["HW",fa]],[Bs,["Samsung",_a]],[Fs,["OPPO",ga]],[Hs,["VIVO",Ta]],[kr,["EDGE",oa]],[Os,["SogouMobile",na]],[ks,["Sogou",aa]]]);function Og(){let o=Mg.get(!0),i=o?o[0]:"unknown",e=o?o[1]:"unknown";return{browserName:i,browserVersion:e}}var Al=function(){return!(Gd||kr||No&&Hd<80||ne&&bo<56)},Cl=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every(i=>i in window)},wa=function(){if(!navigator.mediaDevices)return Wi()||b.error(Ue.NOT_SUPPORTED_MEDIA),!1;let o=["getUserMedia","enumerateDevices"];return o.filter(i=>i in navigator.mediaDevices).length===o.length},vm=!1;function Wi(){return location.protocol==="http:"&&!Wt?(vm||b.error(V({key:L.NOT_SUPPORTED_HTTP})),vm=!0,!0):!1}var js=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},Rl=function(){return f(this,null,function*(){var r,s,n;if(Z.detail.isH264EncodeSupported&&Z.detail.isVp8EncodeSupported)return{isH264EncodeSupported:Z.detail.isH264EncodeSupported,isVp8EncodeSupported:Z.detail.isVp8EncodeSupported,isH265EncodeSupported:Z.detail.isH265EncodeSupported};let o,i=!1,e=!1,t=!1;try{let a=new RTCPeerConnection,c=document.createElement(p.CANVAS);c.getContext("2d");let l=c.captureStream(0);return a.addTrack(l.getVideoTracks()[0],l),o=yield a.createOffer(),i=((r=o.sdp)==null?void 0:r.toLowerCase().indexOf("h264"))!==-1,e=((s=o.sdp)==null?void 0:s.toLowerCase().indexOf("vp8"))!==-1,t=((n=o.sdp)==null?void 0:n.toLowerCase().indexOf("h265"))!==-1,a.close(),{isH264EncodeSupported:i,isVp8EncodeSupported:e,isH265EncodeSupported:t}}catch(a){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1}}})},xa=function(){return f(this,null,function*(){var t;if(Z.detail.isH264DecodeSupported&&Z.detail.isVp8DecodeSupported)return{isH264DecodeSupported:Z.detail.isH264DecodeSupported,isVp8DecodeSupported:Z.detail.isVp8DecodeSupported,isH265DecodeSupported:Z.detail.isH265DecodeSupported};let o,i=!1,e=!1;try{let r=new RTCPeerConnection;ut()?(r.addTransceiver(p.VIDEO,{direction:"recvonly"}),o=yield r.createOffer()):o=yield r.createOffer({offerToReceiveVideo:!0}),o.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),o.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0);let s=((t=o.sdp)==null?void 0:t.toLowerCase().indexOf("h265"))!==-1;return r.close(),{isH264DecodeSupported:i,isVp8DecodeSupported:e,isH265DecodeSupported:s}}catch(r){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}}})};function kg(){return f(this,null,function*(){let[o,i]=yield Promise.all([Rl(),xa()]);return{encode:{h264:o.isH264EncodeSupported,vp8:o.isVp8EncodeSupported,h265:o.isH265EncodeSupported},decode:{h264:i.isH264DecodeSupported,vp8:i.isVp8DecodeSupported,h265:i.isH265DecodeSupported}}})}var La=Kn(o=>f(void 0,null,function*(){let i=Date.now(),e=vl(),t=wa(),r=Cl();if(Z.detail.isWebRTCSupported=e,Z.detail.isMediaDevicesSupported=t,Z.detail.isWebCodecsSupported=r,Z.detail.isScreenShareSupported=Xs(),Z.detail.isSmallStreamSupported=Va(),o===37)return Object.assign(Z.detail,yield Pg()),Z.detail.isBrowserSupported=r,Z.result=t&&r,Z.result||b.error(`${navigator.userAgent} ${vs(Z.detail,!1)}`),Dm(o),N.addNumber({key:523800,value:Date.now()-i}),Z;if(Z.result&&Z.detail.isH264EncodeSupported&&Z.detail.isVp8EncodeSupported&&Z.detail.isH265EncodeSupported&&Z.detail.isH264DecodeSupported&&Z.detail.isVp8DecodeSupported&&Z.detail.isH265DecodeSupported)return Z;let s=Al(),{encode:n,decode:a}=yield kg(),{h264:c,vp8:l}=n,{h264:u}=a,{h265:h}=n,{vp8:m,h265:g}=a;if(!c||!l){let S=yield Rl();b.warn(`detect encode again h264:${c} vp8:${l} result: ${JSON.stringify(S)}`),c=S.isH264EncodeSupported,l=S.isVp8EncodeSupported}if(c&&u&&pe&&Qe&&!vo&&!$t){let{encode:S,decode:_}=yield Lg();c=S,u=_}return Z.result=s&&e&&t&&(c||l)&&(u||m),Z.detail.isBrowserSupported=s,Z.detail.isWebRTCSupported=e,Z.detail.isH264EncodeSupported=c,Z.detail.isVp8EncodeSupported=l,Z.detail.isH265EncodeSupported=h,Z.detail.isH264DecodeSupported=u,Z.detail.isVp8DecodeSupported=m,Z.detail.isH265DecodeSupported=g,Z.result||b.error(`${navigator.userAgent} ${vs(Z.detail,!1)}`),Dm(),N.addNumber({key:523800,value:Date.now()-i}),Z})),wg=function(){return Z.result},Xs=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},xg=typeof HTMLMediaElement!="undefined"&&"setSinkId"in HTMLMediaElement.prototype,Oa=null;function Lg(){return f(this,null,function*(){return Oa||(Oa=new Promise(o=>f(this,null,function*(){let i={encode:!1,decode:!1},e=()=>{};try{let t=document.createElement("canvas"),r=t.getContext("2d");t.width=320,t.height=240;let s=setInterval(()=>{r.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),n=-1,a=-1;e=()=>{clearInterval(n),clearInterval(s),clearTimeout(a),l.close(),u.close(),c.getTracks().forEach(_=>_.stop())},a=setTimeout(()=>{e(),o(i)},2*1e3);let c=t.captureStream(),l=new RTCPeerConnection({}),u=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});l.addEventListener("icecandidate",_=>u.addIceCandidate(_.candidate)),u.addEventListener("icecandidate",_=>l.addIceCandidate(_.candidate)),l.addTrack(c.getVideoTracks()[0],c);let h=yield l.createOffer();yield l.setLocalDescription(h),yield u.setRemoteDescription(h);let m=yield u.createAnswer(),g=Sl.default.parse(m.sdp),S=g.media[0].rtp.findIndex(_=>_.codec==="H264");g.media[0].rtp=[g.media[0].rtp[S]],g.media[0].fmtp=g.media[0].fmtp.filter(_=>_.payload===g.media[0].rtp[0].payload),g.media[0].rtcpFb&&(g.media[0].rtcpFb=g.media[0].rtcpFb.filter(_=>_.payload===g.media[0].rtp[0].payload)),m.sdp=Sl.default.write(g),yield u.setLocalDescription(m),yield l.setRemoteDescription(m),n=setInterval(()=>f(this,null,function*(){i.encode&&i.decode&&(e(),o(i));let[_,I]=yield Promise.all([l.getSenders()[0].getStats(),u.getReceivers()[0].getStats()]);i.encode||_.forEach(R=>{R.type==="outbound-rtp"&&R.mediaType===p.VIDEO&&R.bytesSent>0&&(i.encode=!0)}),i.decode||I.forEach(R=>{R.type==="inbound-rtp"&&R.mediaType===p.VIDEO&&R.bytesReceived>0&&(i.decode=!0)})}),100)}catch(t){e(),b.warn("detectH264Supported failed",t),o({encode:!0,decode:!0})}})).then(o=>(o.encode||(o.decode=!0),(!o.encode||!o.decode)&&b.warn(`detectH264Supported encode: ${o.encode} decode: ${o.decode} ${Ft}`),o)),Oa)})}var ka=null;function Pg(){return f(this,null,function*(){return ka||(ka=new Promise(o=>f(this,null,function*(){let i={isH264EncodeSupported:!1,isH264DecodeSupported:!1,isVp8EncodeSupported:!1,isVp8DecodeSupported:!1};if(!Cl()){o(i);return}let e=null,t=null,r=null,s=()=>{r&&clearTimeout(r),e=null,t=null};try{e=document.createElement("canvas"),t=e.getContext("2d"),e.width=320,e.height=240;let n=0,a=()=>{!t||!e||(t.fillStyle=`hsl(${n%360}, 50%, 50%)`,t.fillRect(0,0,e.width,e.height),t.fillStyle="white",t.font="20px Arial",t.fillText(`Frame ${n}`,10,30),n++)};r=setTimeout(()=>{s(),o(i)},5e3);let c=[{type:"h264",encodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"},width:320,height:240,bitrate:1e6},decodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"}}},{type:"vp8",encodeConfig:{codec:"vp8",width:320,height:240,bitrate:1e6},decodeConfig:{codec:"vp8"}}];(yield Promise.all(c.map(u=>f(this,null,function*(){let h={type:u.type,encodeSupported:!1,decodeSupported:!1},m;try{m=yield new Promise((g,S)=>f(this,null,function*(){try{let _=new VideoEncoder({output:R=>{g(R),h.encodeSupported=!0},error:S});_.configure(u.encodeConfig),a();let I=new VideoFrame(e,{timestamp:0});_.encode(I,{keyFrame:!0}),I.close(),yield _.flush(),_.close()}catch(_){S(_)}}))}catch(g){return b.warn(`${u.type} encoder error:`,g),h}try{yield new Promise((g,S)=>f(this,null,function*(){try{let _=new VideoDecoder({output:I=>{h.decodeSupported=!0,g(0),I.close()},error:S});_.configure(u.decodeConfig),_.decode(m),yield _.flush(),_.close()}catch(_){S(_)}}))}catch(g){b.warn(`${u.type} decoder error:`,g)}return h})))).forEach(u=>{u.type==="h264"?(i.isH264EncodeSupported=u.encodeSupported,i.isH264DecodeSupported=u.decodeSupported):u.type==="vp8"&&(i.isVp8EncodeSupported=u.encodeSupported,i.isVp8DecodeSupported=u.decodeSupported)}),s(),o(i)}catch(n){s(),b.warn("detectWebCodecsSupported failed:",n),o(i)}})),ka)})}var Vg=(o,i,e)=>{location.protocol==="http:"&&!Wt&&(o[i]=()=>{throw new v({code:A.INVALID_OPERATION,message:Ue.NOT_SUPPORTED_HTTP})})},hr=function(o){return o.type==="candidate-pair"&&o.nominated&&(o.state==="in-progress"||o.state==="succeeded")?!(de(o.selected)&&!o.selected):!1};function km(){let o="";if(screen.width){let i=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";o+=`${i} * ${e}`}return o}function wm(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function xm(){let o={isSupported:!1},i=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<i.length;e++)if(i[e]in window){o.isSupported=!0;break}return o.isSupported}function Lm(){return"captureStream"in HTMLCanvasElement.prototype}function Pa(){return Do||Ie||dt&&dt<63?!1:!!(Al()&&Lm())}function Pm(){return!(dt<74||kr||Je<11||bo<46)}function Va(){return Pa()||Pm()}var Ug=function(){if(T(window.RTCRtpTransceiver)||!ut()||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let o=null,i=!1;try{o=new RTCPeerConnection({sdpSemantics:dr}),o.addTransceiver(p.AUDIO),i=!0}catch(e){}return o==null||o.close(),i};function Hr(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function mr(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function hi(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function ut(){return Je===11&&!Qd?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var Ho=!(!ut()||Qe&&dt<86);function Bg(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var zs="RTCRtpSender"in window;function yl(){return zs&&"replaceTrack"in window.RTCRtpSender.prototype}function Qs(){return zs&&"setParameters"in window.RTCRtpSender.prototype&&mr()}var bl="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,mi=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Nl=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,Ji=zs&&"createEncodedStreams"in window.RTCRtpSender.prototype&&ko()>=86,$o="RTCRtpScriptTransform"in window,Ys=zs&&(Ji||$o),vl=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(i=>i in window).length>0};function Vm(){let o={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return T(window.AudioDecoder)||(o.AudioDecoder=!0),T(window.AudioEncoder)||(o.AudioEncoder=!0),T(window.VideoDecoder)||(o.VideoDecoder=!0),T(window.VideoEncoder)||(o.VideoEncoder=!0),T(window.ImageDecoder)||(o.ImageDecoder=!0),o}function Um(){return"mediaSession"in navigator&&!T(navigator.mediaSession.setActionHandler)}function Bm(){return!T(window.WebTransport)}function Fg(){return typeof WebAssembly=="undefined"?!1:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function Hg(){let o={browser:`${ai.name}/${ai.version}`,os:Ia(),displayResolution:km(),isScreenShareSupported:Xs(),isWebRTCSupported:vl(),isGetUserMediaSupported:wm(),isWebAudioSupported:xm(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Vm(),isMediaSessionSupported:Um(),isWebTransportSupported:Bm()};return navigator.userAgent.includes("miniProgram")&&(o.browser=`mini/${o.browser}`),o}var Fm="checkResult";function Dm(o=30){Lo.setItem(Fm+o,{ua:navigator.userAgent,checkResult:Z})}function Dl(o){Wi();let i=Lo.getItem(Fm+o);i&&i.ua===navigator.userAgent&&i.checkResult&&$g(i.checkResult.detail,Z.detail)&&(Z=i.checkResult),La(o)}function $g(o,i){return pt(o)?Object.keys(i).every(e=>e in o):!1}function $r(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var Ua="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;function Mm(o){return{h264:1,h265:2,vp8:3,vp9:4,av1:5}[o]}var Om=!1;function Ml(){return f(this,null,function*(){var o;try{if(Om||!((o=navigator==null?void 0:navigator.mediaCapabilities)!=null&&o.encodingInfo))return;let i=Pr(),e=Kd();if(i===0||e===0)return;Om=!0;let t=["H264","VP8","VP9","AV1","H265"],[r,s]=yield Promise.all([Hm(t),$m(t)]);r&&Object.keys(r).forEach(n=>{let a=Mm(n.toLowerCase());N.addEnum({key:513707,value:+`${a}${+r[n].supported}${+r[n].powerEfficient}${i}${e}`,useUV:!1})}),s&&Object.keys(s).forEach(n=>{let a=Mm(n.toLowerCase());N.addEnum({key:514713,value:+`${a}${+s[n].supported}${+s[n].powerEfficient}${i}${e}`,useUV:!1})})}catch(i){b.info("detectVideoCodecCapabilities failed",i)}})}function Hm(o,i=1920,e=1080,t=30,r=3e3){return f(this,null,function*(){let s={};try{for(let n of o){let a=yield navigator.mediaCapabilities.encodingInfo({type:"webrtc",video:{contentType:`video/${n}`,width:i,height:e,bitrate:r,framerate:t}});s[n]=a}}catch(n){}return s})}function $m(o,i=1920,e=1080,t=30,r=3e3){return f(this,null,function*(){let s={};try{for(let n of o){let a=yield navigator.mediaCapabilities.decodingInfo({type:"webrtc",video:{contentType:`video/${n}`,width:i,height:e,bitrate:r,framerate:t}});s[n]=a}}catch(n){}return s})}var Wm=Ge(it(),1);var Gm=Symbol("instance"),AA=Symbol("abortCtrl"),Ba=Symbol("cacheResult"),Zs=class{constructor(i,e,t){this.oldState=i,this.newState=e,this.action=t,this.aborted=!1}abort(i){this.aborted=!0,tn.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},Ks=class extends Error{constructor(i,e,t){super(e),this.state=i,this.message=e,this.cause=t}};function Gg(o){return typeof o=="object"&&o&&"then"in o}var en=new Map;function Te(o,i,e={}){return(t,r,s)=>{let n=e.action||r;if(!e.context){let c=en.get(t)||[];en.has(t)||en.set(t,c),c.push({from:o,to:i,action:n})}let a=s.value;s.value=function(...c){let l=this;if(e.context&&(l=$.get(typeof e.context=="function"?e.context.call(this,...c):e.context)),l.state===i)return e.sync?l[Ba]:Promise.resolve(l[Ba]);l.state instanceof Zs&&l.state.action==e.abortAction&&l.state.abort(l);let u=null;Array.isArray(o)?o.length==0?l.state instanceof Zs&&l.state.abort(l):(typeof l.state!="string"||!o.includes(l.state))&&(u=new Ks(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${o.join("|")}`)):o!==l.state&&(u=new Ks(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${o}`));let h=I=>{if(e.fail&&e.fail.call(this,I),e.sync){if(e.ignoreError)return I;throw I}else return e.ignoreError?Promise.resolve(I):Promise.reject(I)};if(u)return h(u);let m=l.state,g=new Zs(m,i,n);tn.call(l,g);let S=I=>{var R;return l[Ba]=I,g.aborted||(tn.call(l,i),(R=e.success)===null||R===void 0||R.call(this,l[Ba])),I},_=I=>(tn.call(l,m,I),h(I));try{let I=a.apply(this,c);return Gg(I)?I.then(S).catch(_):e.sync?S(I):Promise.resolve(S(I))}catch(I){return _(new Ks(l._state,`${l.name} ${n} from ${o} to ${i} failed: ${I}`,I instanceof Error?I:new Error(String(I))))}}}}var Wg=typeof window!="undefined"&&window.__AFSM__?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:typeof importScripts!="undefined"?(e,t)=>{postMessage({type:e,payload:t})}:()=>{};function tn(o,i){let e=this._state;this._state=o;let t=o.toString();o&&this.emit(t,e),this.emit($.STATECHANGED,o,e,i),this.updateDevTools({value:o,old:e,err:i instanceof Error?i.message:String(i)})}var $=class o extends Wm.default{constructor(i,e,t){super(),this.name=i,this.groupName=e,this._state=o.INIT,i||(i=Date.now().toString(36)),t?Object.setPrototypeOf(this,t):t=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let r=t[Gm];r?this.name=r.name+"-"+r.count++:t[Gm]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let i=Object.getPrototypeOf(this),e=en.get(i)||[],t=new Set,r=[],s=[],n=new Set,a=Object.getPrototypeOf(i);en.has(a)&&(a.stateDiagram.forEach(l=>t.add(l)),a.allStates.forEach(l=>n.add(l))),e.forEach(({from:l,to:u,action:h})=>{typeof l=="string"?r.push({from:l,to:u,action:h}):l.length?l.forEach(m=>{r.push({from:m,to:u,action:h})}):s.push({to:u,action:h})}),r.forEach(({from:l,to:u,action:h})=>{n.add(l),n.add(u),n.add(h+"ing"),t.add(`${l} --> ${h}ing : ${h}`),t.add(`${h}ing --> ${u} : ${h} \u{1F7E2}`),t.add(`${h}ing --> ${l} : ${h} \u{1F534}`)}),s.forEach(({to:l,action:u})=>{t.add(`${u}ing --> ${l} : ${u} \u{1F7E2}`),n.forEach(h=>{h!==l&&t.add(`${h} --> ${u}ing : ${u}`)})});let c=[...t];return Object.defineProperties(i,{stateDiagram:{value:c},allStates:{value:n}}),c}static get(i){let e;return typeof i=="string"?(e=o.instances.get(i),e||o.instances.set(i,e=new o(i,void 0,Object.create(o.prototype)))):(e=o.instances2.get(i),e||o.instances2.set(i,e=new o(i.constructor.name,void 0,Object.create(o.prototype)))),e}static getState(i){var e;return(e=o.get(i))===null||e===void 0?void 0:e.state}updateDevTools(i={}){Wg(o.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){tn.call(this,i)}};$.STATECHANGED="stateChanged";$.UPDATEAFSM="updateAFSM";$.INIT="[*]";$.ON="on";$.OFF="off";$.instances=new Map;$.instances2=new WeakMap;var kl=typeof window!="undefined",Jm=kl&&window.requestIdleCallback||function(o){let i=Date.now();return setTimeout(()=>{o({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-i))}})},1e3)},Jg=kl&&window.cancelIdleCallback||function(o){clearTimeout(o)},qm=kl&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),ke=class ke{static generateTaskID(){return this.currentTaskID++}static run(i,e,t){t!=null&&t.fps&&(t.delay=t.delay||Number((1e3/t.fps).toFixed(2))),i==="interval"?t=D({delay:2e3,count:0,backgroundTask:!0},t):i==="ric"?t=D({delay:1e4,count:0},t):i==="raf"?t=D({fps:60,delay:16.6,count:0,backgroundTask:!0},t):t=D({delay:2e3,count:0,backgroundTask:!0},t);let r=w(D({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:i,callback:e},t),{delay:t.delay});return this.taskMap.set(r.taskID,r),this[i](r),r.taskID}static interval(i){let e=()=>{i.callback(),i.loopCount+=1,ke.isBreakLoop(i)};return i.intervalID=setInterval(e,i.delay)}static intervalInWorker(i){ke.sharedWorker||(ke.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
9
+ `,h+=s)),o&&(h+=`
10
+ Refer to: ${Af("en",a)}
11
+ `),h}var bm=Ki(Mf(),1);var x_=1,k_=0,Sd=class{constructor(t=!0){l(this,"countMap",new Map);l(this,"distributionMap",new Map);l(this,"version");l(this,"log",$.createLogger({id:"kv"}));t&&(V.on("102",({track:e,cost:r})=>{this.addSuccessEvent({key:e.kind===O.AUDIO?501700:511700,cost:r})}),V.on("103",({track:e,error:r})=>{this.addFailedEvent({key:e.kind===O.AUDIO?501700:511700,error:r})}),V.on("266",({result:e})=>{e?this.addSuccessEvent({key:525700}):this.addFailedEvent({key:525700})}))}getReportData(){let t={msg_sdk_basic_info:{uint32_sdk_version:Bc(this.version||at),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,r])=>({uint32_key:e,uint32_count:r})),stats_distribution:[...this.distributionMap.entries()].map(([e,r])=>({uint32_key:e,distribution_items:[...r.entries()].map(([o,s])=>({uint32_item_key:o,uint32_item_value:s}))}))};return this.countMap.clear(),this.distributionMap.clear(),t}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(t){let e=+String(t).slice(-3);return e>=700&&e<799}isErrorCodeKey(t){let e=+String(t).slice(-3);return e>=600&&e<699}isCountKey(t){let e=+String(t).slice(-3);return e>=0&&e<599}isNumberKey(t){let e=+String(t).slice(-3);return e>=800&&e<899}addCount({key:t,useUV:e=!1}){if(!this.isCountKey(t)){this.log.debug(`${t} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(t)||this.countMap.set(t,(this.countMap.get(t)||0)+1)}addEnum({key:t,value:e,useUV:r=!0}){var s;if(!this.isEnumKey(t))return this.log.debug(`${t} is not enum key, last 3 number should be 700~799`);if(r&&this.countMap.has(t))return;this.countMap.set(t,(this.countMap.get(t)||0)+1);let o=((s=this.distributionMap)==null?void 0:s.get(t))||new Map;o.set(e,(o.get(e)||0)+1),this.distributionMap.set(t,o)}addNumber({key:t,value:e,split:r=100,useUV:o=!1,max:s=5e3}){var u;if(!this.isNumberKey(t))return this.log.debug(`${t} is not number key, last 3 number should be 800~899`);if(o&&this.countMap.has(t))return;e>s&&(e=s),this.countMap.set(t,(this.countMap.get(t)||0)+1);let n=((u=this.distributionMap)==null?void 0:u.get(t))||new Map,a=0;if(Pe(r))a=Math.floor(e/r);else for(let m=r.length-1;m>0;m--)if(e>r[m]){a=m;break}n.set(a,(n.get(a)||0)+1),this.distributionMap.set(t,n)}addSuccessEvent({key:t,cost:e,timeKey:r,split:o}){if(t&&(this.addEnum({key:t,value:x_,useUV:!1}),e)){let s=+String(t).slice(-3);s<800&&s>=700?this.addNumber({key:r||t+100,value:e,split:o}):r||this.log.debug(`time stat ignored, ${t}`)}}addFailedEvent({key:t,error:e}){if(!t)return;let r=q.UNKNOWN;e&&(Pe(e)?r=e:(!M(e.extraCode)||!M(e.code))&&(r=e.extraCode||e.code)),this.addEnum({key:t,value:k_,useUV:!1}),this.addEnum({key:t,value:Math.abs(r),useUV:!1})}},Id=(Q=>(Q[Q.enterRoom=500700]="enterRoom",Q[Q.exitRoom=500701]="exitRoom",Q[Q.switchRole=500702]="switchRole",Q[Q.destroy=500703]="destroy",Q[Q.startLocalAudio=500704]="startLocalAudio",Q[Q.updateLocalAudio=500705]="updateLocalAudio",Q[Q.stopLocalAudio=500706]="stopLocalAudio",Q[Q.startLocalVideo=500707]="startLocalVideo",Q[Q.updateLocalVideo=500708]="updateLocalVideo",Q[Q.stopLocalVideo=500709]="stopLocalVideo",Q[Q.startScreenShare=500710]="startScreenShare",Q[Q.updateScreenShare=500711]="updateScreenShare",Q[Q.stopScreenShare=500712]="stopScreenShare",Q[Q.startRemoteVideo=500713]="startRemoteVideo",Q[Q.updateRemoteVideo=500714]="updateRemoteVideo",Q[Q.stopRemoteVideo=500715]="stopRemoteVideo",Q[Q.muteRemoteAudio=500716]="muteRemoteAudio",Q[Q.setRemoteAudioVolume=500717]="setRemoteAudioVolume",Q[Q.use=500718]="use",Q[Q.switchRoom=500719]="switchRoom",Q[Q.sendSEIMessage=5e5]="sendSEIMessage",Q[Q.sendCustomMessage=500001]="sendCustomMessage",Q))(Id||{}),Im=(T=>(T[T.AudioMixer=550700]="AudioMixer",T[T.AIDenoiser=551700]="AIDenoiser",T[T.VirtualBackground=570700]="VirtualBackground",T[T.Beauty=571700]="Beauty",T[T.Watermark=572700]="Watermark",T[T.BasicBeauty=574700]="BasicBeauty",T[T.CDNStreaming=590700]="CDNStreaming",T[T.DeviceDetector=591700]="DeviceDetector",T[T.Debug=592700]="Debug",T[T.SmallStreamAutoSwitcher=593700]="SmallStreamAutoSwitcher",T[T.VideoMixer=594700]="VideoMixer",T[T.AudioProcessor=595700]="AudioProcessor",T))(Im||{}),ym=(T=>(T[T.AudioMixer=550701]="AudioMixer",T[T.AIDenoiser=551701]="AIDenoiser",T[T.VirtualBackground=570701]="VirtualBackground",T[T.Beauty=571701]="Beauty",T[T.Watermark=572701]="Watermark",T[T.BasicBeauty=574701]="BasicBeauty",T[T.CDNStreaming=590701]="CDNStreaming",T[T.DeviceDetector=591701]="DeviceDetector",T[T.Debug=592701]="Debug",T[T.SmallStreamAutoSwitcher=593701]="SmallStreamAutoSwitcher",T[T.VideoMixer=594701]="VideoMixer",T[T.AudioProcessor=595701]="AudioProcessor",T))(ym||{}),Am=(T=>(T[T.AudioMixer=550702]="AudioMixer",T[T.AIDenoiser=551702]="AIDenoiser",T[T.VirtualBackground=570702]="VirtualBackground",T[T.Beauty=571702]="Beauty",T[T.Watermark=572702]="Watermark",T[T.BasicBeauty=574702]="BasicBeauty",T[T.CDNStreaming=590702]="CDNStreaming",T[T.DeviceDetector=591702]="DeviceDetector",T[T.Debug=592702]="Debug",T[T.SmallStreamAutoSwitcher=593702]="SmallStreamAutoSwitcher",T[T.VideoMixer=594702]="VideoMixer",T[T.AudioProcessor=595702]="AudioProcessor",T))(Am||{});var rn=(P=>(P[P.DECODER_TYPE=514700]="DECODER_TYPE",P[P.DECODER_HW_SW=514701]="DECODER_HW_SW",P[P.DECODE_RESULT=514702]="DECODE_RESULT",P[P.DECODE_FAILED_OS=514703]="DECODE_FAILED_OS",P[P.DOWNGRADE_RESULT=514704]="DOWNGRADE_RESULT",P[P.DOWNGRADE_WEBCODECS_VIDEO=514705]="DOWNGRADE_WEBCODECS_VIDEO",P[P.DOWNGRADE_WEBCODECS_2D=514706]="DOWNGRADE_WEBCODECS_2D",P[P.DOWNGRADE_WASM_WEGBL=514707]="DOWNGRADE_WASM_WEGBL",P[P.DOWNGRADE_WASM_VIDEO=514708]="DOWNGRADE_WASM_VIDEO",P[P.DOWNGRADE_WASM_2D=514709]="DOWNGRADE_WASM_2D",P[P.DECODE_H264_RESULT=514710]="DECODE_H264_RESULT",P[P.DECODE_H265_RESULT=514711]="DECODE_H265_RESULT",P[P.DECODE_VP8_RESULT=514712]="DECODE_VP8_RESULT",P[P.DECODE_CAPABILITIES=514713]="DECODE_CAPABILITIES",P[P.RENDER_FREEZE_RATE=514850]="RENDER_FREEZE_RATE",P[P.DATA_FREEZE_RATE=514851]="DATA_FREEZE_RATE",P[P.VIDEO_CONSUME_RENDER_RATE=514852]="VIDEO_CONSUME_RENDER_RATE",P))(rn||{});var P_=new Sd(!0),Ko=new Sd(!1);var z=P_;var be={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}},L_=new Map([[$t,["Firefox",jc]],[js,["Edg",Jc]],[Qs,["Chrome",ud]],[_t,["Safari",Si]],[wr,["TBS",Yc]],[qs,["XWEB",Zc]],[zs&&oo,["WeChat",Kc]],[ra,["QQ(Win)",ed]],[Xs,["QQ(Mobile)",Ws]],[Js,["QQ(Mobile X5)",Ws]],[ia,["QQ(Mac)",td]],[oa,["QQ(iPad)",rd]],[na,["MI",id]],[aa,["HW",od]],[ca,["Samsung",sd]],[da,["OPPO",nd]],[ua,["VIVO",ad]],[jo,["EDGE",zc]],[ea,["SogouMobile",Xc]],[ta,["Sogou",Qc]]]);function bd(){let i=L_.get(!0),t=i?i[0]:"unknown",e=i?i[1]:"unknown";return{browserName:t,browserVersion:e}}var Rm=function(){return!(Gl||jo||js&&Hl<80||$t&&qc<56)},vm=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every(t=>t in window)},Rd=function(){if(!navigator.mediaDevices)return vi()||$.error(Yt.NOT_SUPPORTED_MEDIA),!1;let i=["getUserMedia","enumerateDevices"];return i.filter(t=>t in navigator.mediaDevices).length===i.length},Of=!1;function vi(){return location.protocol==="http:"&&!Or?(Of||$.error(Be({key:$e.NOT_SUPPORTED_HTTP})),Of=!0,!0):!1}var Cm=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},Nm=function(){return y(this,null,function*(){var o,s,n;if(be.detail.isH264EncodeSupported&&be.detail.isVp8EncodeSupported)return{isH264EncodeSupported:be.detail.isH264EncodeSupported,isVp8EncodeSupported:be.detail.isVp8EncodeSupported,isH265EncodeSupported:be.detail.isH265EncodeSupported};let i,t=!1,e=!1,r=!1;try{let a=new RTCPeerConnection,u=document.createElement(O.CANVAS);u.getContext("2d");let m=u.captureStream(0);return a.addTrack(m.getVideoTracks()[0],m),i=yield a.createOffer(),t=((o=i.sdp)==null?void 0:o.toLowerCase().indexOf("h264"))!==-1,e=((s=i.sdp)==null?void 0:s.toLowerCase().indexOf("vp8"))!==-1,r=((n=i.sdp)==null?void 0:n.toLowerCase().indexOf("h265"))!==-1,a.close(),{isH264EncodeSupported:t,isVp8EncodeSupported:e,isH265EncodeSupported:r}}catch(a){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH265EncodeSupported:!1}}})},Uf=function(){return y(this,null,function*(){var r;if(be.detail.isH264DecodeSupported&&be.detail.isVp8DecodeSupported)return{isH264DecodeSupported:be.detail.isH264DecodeSupported,isVp8DecodeSupported:be.detail.isVp8DecodeSupported,isH265DecodeSupported:be.detail.isH265DecodeSupported};let i,t=!1,e=!1;try{let o=new RTCPeerConnection;Nd()?(o.addTransceiver(O.VIDEO,{direction:"recvonly"}),i=yield o.createOffer()):i=yield o.createOffer({offerToReceiveVideo:!0}),i.sdp.toLowerCase().indexOf("h264")!==-1&&(t=!0),i.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0);let s=((r=i.sdp)==null?void 0:r.toLowerCase().indexOf("h265"))!==-1;return o.close(),{isH264DecodeSupported:t,isVp8DecodeSupported:e,isH265DecodeSupported:s}}catch(o){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}}})};function U_(){return y(this,null,function*(){let[i,t]=yield Promise.all([Nm(),Uf()]);return{encode:{h264:i.isH264EncodeSupported,vp8:i.isVp8EncodeSupported,h265:i.isH265EncodeSupported},decode:{h264:t.isH264DecodeSupported,vp8:t.isVp8DecodeSupported,h265:t.isH265DecodeSupported}}})}var vd=Hc(i=>y(void 0,null,function*(){let t=Date.now(),e=Dm(),r=Rd(),o=vm();if(be.detail.isWebRTCSupported=e,be.detail.isMediaDevicesSupported=r,be.detail.isWebCodecsSupported=o,be.detail.isScreenShareSupported=Ia(),be.detail.isSmallStreamSupported=Cd(),i===37)return Object.assign(be.detail,yield B_()),be.detail.isBrowserSupported=o,be.result=r&&o,be.result||$.error(`${navigator.userAgent} ${Yn(be.detail,!1)}`),xf(i),z.addNumber({key:523800,value:Date.now()-t}),be;if(be.result&&be.detail.isH264EncodeSupported&&be.detail.isVp8EncodeSupported&&be.detail.isH265EncodeSupported&&be.detail.isH264DecodeSupported&&be.detail.isVp8DecodeSupported&&be.detail.isH265DecodeSupported)return be;let s=Rm(),{encode:n,decode:a}=yield U_(),{h264:u,vp8:m}=n,{h264:h}=a,{h265:g}=n,{vp8:T,h265:A}=a;if(!u||!m){let C=yield Nm();$.warn(`detect encode again h264:${u} vp8:${m} result: ${JSON.stringify(C)}`),u=C.isH264EncodeSupported,m=C.isVp8EncodeSupported}if(u&&h&&mt&&zr&&!qs&&!wr){let{encode:C,decode:N}=yield $_();u=C,h=N}return be.result=s&&e&&r&&(u||m)&&(h||T),be.detail.isBrowserSupported=s,be.detail.isWebRTCSupported=e,be.detail.isH264EncodeSupported=u,be.detail.isVp8EncodeSupported=m,be.detail.isH265EncodeSupported=g,be.detail.isH264DecodeSupported=h,be.detail.isVp8DecodeSupported=T,be.detail.isH265DecodeSupported=A,be.result||$.error(`${navigator.userAgent} ${Yn(be.detail,!1)}`),xf(),z.addNumber({key:523800,value:Date.now()-t}),be})),V_=function(){return be.result},Ia=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},F_=typeof HTMLMediaElement!="undefined"&&"setSinkId"in HTMLMediaElement.prototype,yd=null;function $_(){return y(this,null,function*(){return yd||(yd=new Promise(i=>y(this,null,function*(){let t={encode:!1,decode:!1},e=()=>{};try{let r=document.createElement("canvas"),o=r.getContext("2d");r.width=320,r.height=240;let s=setInterval(()=>{o.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),n=-1,a=-1;e=()=>{clearInterval(n),clearInterval(s),clearTimeout(a),m.close(),h.close(),u.getTracks().forEach(N=>N.stop())},a=setTimeout(()=>{e(),i(t)},2*1e3);let u=r.captureStream(),m=new RTCPeerConnection({}),h=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});m.addEventListener("icecandidate",N=>h.addIceCandidate(N.candidate)),h.addEventListener("icecandidate",N=>m.addIceCandidate(N.candidate)),m.addTrack(u.getVideoTracks()[0],u);let g=yield m.createOffer();yield m.setLocalDescription(g),yield h.setRemoteDescription(g);let T=yield h.createAnswer(),A=bm.default.parse(T.sdp),C=A.media[0].rtp.findIndex(N=>N.codec==="H264");A.media[0].rtp=[A.media[0].rtp[C]],A.media[0].fmtp=A.media[0].fmtp.filter(N=>N.payload===A.media[0].rtp[0].payload),A.media[0].rtcpFb&&(A.media[0].rtcpFb=A.media[0].rtcpFb.filter(N=>N.payload===A.media[0].rtp[0].payload)),T.sdp=bm.default.write(A),yield h.setLocalDescription(T),yield m.setRemoteDescription(T),n=setInterval(()=>y(this,null,function*(){t.encode&&t.decode&&(e(),i(t));let[N,D]=yield Promise.all([m.getSenders()[0].getStats(),h.getReceivers()[0].getStats()]);t.encode||N.forEach(P=>{P.type==="outbound-rtp"&&P.mediaType===O.VIDEO&&P.bytesSent>0&&(t.encode=!0)}),t.decode||D.forEach(P=>{P.type==="inbound-rtp"&&P.mediaType===O.VIDEO&&P.bytesReceived>0&&(t.decode=!0)})}),100)}catch(r){e(),$.warn("detectH264Supported failed",r),i({encode:!0,decode:!0})}})).then(i=>(i.encode||(i.decode=!0),(!i.encode||!i.decode)&&$.warn(`detectH264Supported encode: ${i.encode} decode: ${i.decode} ${Nr}`),i)),yd)})}var Ad=null;function B_(){return y(this,null,function*(){return Ad||(Ad=new Promise(i=>y(this,null,function*(){let t={isH264EncodeSupported:!1,isH264DecodeSupported:!1,isVp8EncodeSupported:!1,isVp8DecodeSupported:!1};if(!vm()){i(t);return}let e=null,r=null,o=null,s=()=>{o&&clearTimeout(o),e=null,r=null};try{e=document.createElement("canvas"),r=e.getContext("2d"),e.width=320,e.height=240;let n=0,a=()=>{!r||!e||(r.fillStyle=`hsl(${n%360}, 50%, 50%)`,r.fillRect(0,0,e.width,e.height),r.fillStyle="white",r.font="20px Arial",r.fillText(`Frame ${n}`,10,30),n++)};o=setTimeout(()=>{s(),i(t)},5e3);let u=[{type:"h264",encodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"},width:320,height:240,bitrate:1e6},decodeConfig:{codec:"avc1.42E01E",avc:{format:"annexb"}}},{type:"vp8",encodeConfig:{codec:"vp8",width:320,height:240,bitrate:1e6},decodeConfig:{codec:"vp8"}}];(yield Promise.all(u.map(h=>y(this,null,function*(){let g={type:h.type,encodeSupported:!1,decodeSupported:!1},T;try{T=yield new Promise((A,C)=>y(this,null,function*(){try{let N=new VideoEncoder({output:P=>{A(P),g.encodeSupported=!0},error:C});N.configure(h.encodeConfig),a();let D=new VideoFrame(e,{timestamp:0});N.encode(D,{keyFrame:!0}),D.close(),yield N.flush(),N.close()}catch(N){C(N)}}))}catch(A){return $.warn(`${h.type} encoder error:`,A),g}try{yield new Promise((A,C)=>y(this,null,function*(){try{let N=new VideoDecoder({output:D=>{g.decodeSupported=!0,A(0),D.close()},error:C});N.configure(h.decodeConfig),N.decode(T),yield N.flush(),N.close()}catch(N){C(N)}}))}catch(A){$.warn(`${h.type} decoder error:`,A)}return g})))).forEach(h=>{h.type==="h264"?(t.isH264EncodeSupported=h.encodeSupported,t.isH264DecodeSupported=h.decodeSupported):h.type==="vp8"&&(t.isVp8EncodeSupported=h.encodeSupported,t.isVp8DecodeSupported=h.decodeSupported)}),s(),i(t)}catch(n){s(),$.warn("detectWebCodecsSupported failed:",n),i(t)}})),Ad)})}var H_=(i,t,e)=>{location.protocol==="http:"&&!Or&&(i[t]=()=>{throw new de({code:q.INVALID_OPERATION,message:Yt.NOT_SUPPORTED_HTTP})})},W_=function(i){return i.type==="candidate-pair"&&i.nominated&&(i.state==="in-progress"||i.state==="succeeded")?!(Je(i.selected)&&!i.selected):!1};function Vf(){let i="";if(screen.width){let t=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";i+=`${t} * ${e}`}return i}function Ff(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function $f(){let i={isSupported:!1},t=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<t.length;e++)if(t[e]in window){i.isSupported=!0;break}return i.isSupported}function Bf(){return"captureStream"in HTMLCanvasElement.prototype}function Hf(){return zs||lt||Jr&&Jr<63?!1:!!(Rm()&&Bf())}function Wf(){return!(Jr<74||jo||Mt<11||qc<46)}function Cd(){return Hf()||Wf()}var G_=function(){if(M(window.RTCRtpTransceiver)||!Nd()||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let i=null,t=!1;try{i=new RTCPeerConnection({sdpSemantics:Il}),i.addTransceiver(O.AUDIO),t=!0}catch(e){}return i==null||i.close(),t};function j_(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function Gf(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function q_(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function Nd(){return Mt===11&&!Zl?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var z_=!(!Nd()||zr&&Jr<86);function J_(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var ya="RTCRtpSender"in window;function X_(){return ya&&"replaceTrack"in window.RTCRtpSender.prototype}function Q_(){return ya&&"setParameters"in window.RTCRtpSender.prototype&&Gf()}var Y_="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,on=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,wm=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,Aa=ya&&"createEncodedStreams"in window.RTCRtpSender.prototype&&dd()>=86,jf="RTCRtpScriptTransform"in window,ba=ya&&(Aa||jf),Dm=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(t=>t in window).length>0};function qf(){let i={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return M(window.AudioDecoder)||(i.AudioDecoder=!0),M(window.AudioEncoder)||(i.AudioEncoder=!0),M(window.VideoDecoder)||(i.VideoDecoder=!0),M(window.VideoEncoder)||(i.VideoEncoder=!0),M(window.ImageDecoder)||(i.ImageDecoder=!0),i}function zf(){return"mediaSession"in navigator&&!M(navigator.mediaSession.setActionHandler)}function Jf(){return!M(window.WebTransport)}function Z_(){return typeof WebAssembly=="undefined"?!1:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function K_(){let i={browser:`${qr.name}/${qr.version}`,os:Ys(),displayResolution:Vf(),isScreenShareSupported:Ia(),isWebRTCSupported:Dm(),isGetUserMediaSupported:Ff(),isWebAudioSupported:$f(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:qf(),isMediaSessionSupported:zf(),isWebTransportSupported:Jf()};return navigator.userAgent.includes("miniProgram")&&(i.browser=`mini/${i.browser}`),i}var Xf="checkResult";function xf(i=30){Ks.setItem(Xf+i,{ua:navigator.userAgent,checkResult:be})}function Mm(i){vi();let t=Ks.getItem(Xf+i);t&&t.ua===navigator.userAgent&&t.checkResult&&eS(t.checkResult.detail,be.detail)&&(be=t.checkResult),vd(i)}function eS(i,t){return rr(i)?Object.keys(t).every(e=>e in i):!1}function Ci(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var tS="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;function kf(i){return{h264:1,h265:2,vp8:3,vp9:4,av1:5}[i]}var Pf=!1;function Om(){return y(this,null,function*(){var i;try{if(Pf||!((i=navigator==null?void 0:navigator.mediaCapabilities)!=null&&i.encodingInfo))return;let t=Jo(),e=tm();if(t===0||e===0)return;Pf=!0;let r=["H264","VP8","VP9","AV1","H265"],[o,s]=yield Promise.all([Qf(r),Yf(r)]);o&&Object.keys(o).forEach(n=>{let a=kf(n.toLowerCase());z.addEnum({key:513707,value:+`${a}${+o[n].supported}${+o[n].powerEfficient}${t}${e}`,useUV:!1})}),s&&Object.keys(s).forEach(n=>{let a=kf(n.toLowerCase());z.addEnum({key:514713,value:+`${a}${+s[n].supported}${+s[n].powerEfficient}${t}${e}`,useUV:!1})})}catch(t){$.info("detectVideoCodecCapabilities failed",t)}})}function Qf(i,t=1920,e=1080,r=30,o=3e3){return y(this,null,function*(){let s={};try{for(let n of i){let a=yield navigator.mediaCapabilities.encodingInfo({type:"webrtc",video:{contentType:`video/${n}`,width:t,height:e,bitrate:o,framerate:r}});s[n]=a}}catch(n){}return s})}function Yf(i,t=1920,e=1080,r=30,o=3e3){return y(this,null,function*(){let s={};try{for(let n of i){let a=yield navigator.mediaCapabilities.decodingInfo({type:"webrtc",video:{contentType:`video/${n}`,width:t,height:e,bitrate:o,framerate:r}});s[n]=a}}catch(n){}return s})}var Kf=Ki(so(),1);var Zf=Symbol("instance"),tR=Symbol("abortCtrl"),wd=Symbol("cacheResult"),Ra=class{constructor(t,e,r){this.oldState=t,this.newState=e,this.action=r,this.aborted=!1}abort(t){this.aborted=!0,Na.call(t,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},va=class extends Error{constructor(t,e,r){super(e),this.state=t,this.message=e,this.cause=r}};function rS(i){return typeof i=="object"&&i&&"then"in i}var Ca=new Map;function Ye(i,t,e={}){return(r,o,s)=>{let n=e.action||o;if(!e.context){let u=Ca.get(r)||[];Ca.has(r)||Ca.set(r,u),u.push({from:i,to:t,action:n})}let a=s.value;s.value=function(...u){let m=this;if(e.context&&(m=ue.get(typeof e.context=="function"?e.context.call(this,...u):e.context)),m.state===t)return e.sync?m[wd]:Promise.resolve(m[wd]);m.state instanceof Ra&&m.state.action==e.abortAction&&m.state.abort(m);let h=null;Array.isArray(i)?i.length==0?m.state instanceof Ra&&m.state.abort(m):(typeof m.state!="string"||!i.includes(m.state))&&(h=new va(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i.join("|")}`)):i!==m.state&&(h=new va(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i}`));let g=D=>{if(e.fail&&e.fail.call(this,D),e.sync){if(e.ignoreError)return D;throw D}else return e.ignoreError?Promise.resolve(D):Promise.reject(D)};if(h)return g(h);let T=m.state,A=new Ra(T,t,n);Na.call(m,A);let C=D=>{var P;return m[wd]=D,A.aborted||(Na.call(m,t),(P=e.success)===null||P===void 0||P.call(this,m[wd])),D},N=D=>(Na.call(m,T,D),g(D));try{let D=a.apply(this,u);return rS(D)?D.then(C).catch(N):e.sync?C(D):Promise.resolve(C(D))}catch(D){return N(new va(m._state,`${m.name} ${n} from ${i} to ${t} failed: ${D}`,D instanceof Error?D:new Error(String(D))))}}}}var iS=typeof window!="undefined"&&window.__AFSM__?(e,r)=>{window.dispatchEvent(new CustomEvent(e,{detail:r}))}:typeof importScripts!="undefined"?(e,r)=>{postMessage({type:e,payload:r})}:()=>{};function Na(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(ue.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var ue=class i extends Kf.default{constructor(t,e,r){super(),this.name=t,this.groupName=e,this._state=i.INIT,t||(t=Date.now().toString(36)),r?Object.setPrototypeOf(this,r):r=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let o=r[Zf];o?this.name=o.name+"-"+o.count++:r[Zf]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=Ca.get(t)||[],r=new Set,o=[],s=[],n=new Set,a=Object.getPrototypeOf(t);Ca.has(a)&&(a.stateDiagram.forEach(m=>r.add(m)),a.allStates.forEach(m=>n.add(m))),e.forEach(({from:m,to:h,action:g})=>{typeof m=="string"?o.push({from:m,to:h,action:g}):m.length?m.forEach(T=>{o.push({from:T,to:h,action:g})}):s.push({to:h,action:g})}),o.forEach(({from:m,to:h,action:g})=>{n.add(m),n.add(h),n.add(g+"ing"),r.add(`${m} --> ${g}ing : ${g}`),r.add(`${g}ing --> ${h} : ${g} \u{1F7E2}`),r.add(`${g}ing --> ${m} : ${g} \u{1F534}`)}),s.forEach(({to:m,action:h})=>{r.add(`${h}ing --> ${m} : ${h} \u{1F7E2}`),n.forEach(g=>{g!==m&&r.add(`${g} --> ${h}ing : ${h}`)})});let u=[...r];return Object.defineProperties(t,{stateDiagram:{value:u},allStates:{value:n}}),u}static get(t){let e;return typeof t=="string"?(e=i.instances.get(t),e||i.instances.set(t,e=new i(t,void 0,Object.create(i.prototype)))):(e=i.instances2.get(t),e||i.instances2.set(t,e=new i(t.constructor.name,void 0,Object.create(i.prototype)))),e}static getState(t){var e;return(e=i.get(t))===null||e===void 0?void 0:e.state}updateDevTools(t={}){iS(i.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){Na.call(this,t)}};ue.STATECHANGED="stateChanged";ue.UPDATEAFSM="updateAFSM";ue.INIT="[*]";ue.ON="on";ue.OFF="off";ue.instances=new Map;ue.instances2=new WeakMap;var km=typeof window!="undefined",eg=km&&window.requestIdleCallback||function(i){let t=Date.now();return setTimeout(()=>{i({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-t))}})},1e3)},oS=km&&window.cancelIdleCallback||function(i){clearTimeout(i)},tg=km&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),St=class St{static generateTaskID(){return this.currentTaskID++}static run(t,e,r){r!=null&&r.fps&&(r.delay=r.delay||Number((1e3/r.fps).toFixed(2))),t==="interval"?r=J({delay:2e3,count:0,backgroundTask:!0},r):t==="ric"?r=J({delay:1e4,count:0},r):t==="raf"?r=J({fps:60,delay:16.6,count:0,backgroundTask:!0},r):r=J({delay:2e3,count:0,backgroundTask:!0},r);let o=Ee(J({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:t,callback:e},r),{delay:r.delay});return this.taskMap.set(o.taskID,o),this[t](o),o.taskID}static interval(t){let e=()=>{t.callback(),t.loopCount+=1,St.isBreakLoop(t)};return t.intervalID=setInterval(e,t.delay)}static intervalInWorker(t){St.sharedWorker||(St.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
14
12
  const timers = new Map();
15
13
  self.onmessage = function(e) {
16
14
  const { taskId, delay, type } = e.data;
@@ -23,15 +21,15 @@ Refer to: ${Em("en",a)}
23
21
  timers.delete(taskId);
24
22
  }
25
23
  };
26
- `],{type:"application/javascript"}))),ke.sharedWorker.onmessage=e=>{var t;if(e.data.type==="tick"){let r=ke.workerTasks.get(e.data.taskId);r&&(ke.isBreakLoop(r)?((t=ke.sharedWorker)==null||t.postMessage({type:"stop",taskId:r.taskID}),ke.workerTasks.delete(r.taskID)):(r.callback(),r.loopCount+=1))}}),ke.workerTasks.set(i.taskID,i),ke.sharedWorker.postMessage({taskId:i.taskID,delay:i.delay,type:"start"})}static timeout(i){let e=()=>{if(i.callback(),i.loopCount+=1,!ke.isBreakLoop(i))return i.timeoutID=setTimeout(e,i.delay)};return i.timeoutID=setTimeout(e,i.delay)}static ric(i){let e=P(),t,r=()=>{if(t=P()-e,t>=i.delay&&(e=P()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!ke.isBreakLoop(i))return i.ricID=Jm(r,{timeout:i.delay})};return i.ricID=Jm(r,{timeout:i.delay})}static raf(i){let e=P(),t,r=()=>{if(document.hidden&&i.backgroundTask)return t=P()-e,e=P(),i.callback(),i.loopCount+=1,ke.isBreakLoop(i)?void 0:i.timeoutID=setTimeout(r,i.delay-Math.floor(t%i.delay));if(t=P()-e,t>=i.delay&&(e=P()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!ke.isBreakLoop(i))return i.rafID=requestAnimationFrame(r)};if(i.rafID=requestAnimationFrame(r),i.backgroundTask){let s=()=>{if(document.hidden){let n=P()-e;n>=i.delay?r():i.timeoutID=setTimeout(r,i.delay-n)}};document.addEventListener("visibilitychange",s),i.onVisibilitychange=s,document.hidden&&s()}return i.taskID}static hasTask(i){return this.taskMap.has(i)}static clearTask(i){if(!this.taskMap.has(i))return!0;let{intervalID:e,timeoutID:t,rafID:r,ricID:s,onVisibilitychange:n}=this.taskMap.get(i);return e&&clearInterval(e),t&&clearTimeout(t),r&&qm&&qm(r),s&&Jg(s),n&&document.removeEventListener("visibilitychange",n),this.taskMap.delete(i),!0}static isBreakLoop(i){return this.hasTask(i.taskID)?i.count!==0&&i.loopCount>=i.count?(this.clearTask(i.taskID),!0):!1:!0}};d(ke,"taskMap",new Map),d(ke,"currentTaskID",1),d(ke,"sharedWorker",null),d(ke,"workerTasks",new Map);var Ol=ke,re=Ol;var kA={STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",STREAM_UPDATED:"stream-updated",STREAM_SUBSCRIBED:"stream-subscribed",CONNECTION_STATE_CHANGED:"connection-state-changed",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",MUTE_AUDIO:"mute-audio",MUTE_VIDEO:"mute-video",UNMUTE_AUDIO:"unmute-audio",UNMUTE_VIDEO:"unmute-video",CLIENT_BANNED:"client-banned",NETWORK_QUALITY:"network-quality",AUDIO_VOLUME:"audio-volume",SEI_MESSAGE:p.SEI_MESSAGE,ERROR:"error"};var he={LOADED_DATA:p.LOADEDDATA,LOADED_META_DATA:p.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error"};var fi={};vi(fi,{create:()=>Ye,remove:()=>ve});var rn=new WeakMap;function Ye(o,i){rn.has(o)||rn.set(o,[]);let e=rn.get(o),r={add:(s,n)=>("addEventListener"in i?(e.push(i.removeEventListener.bind(i,s,n)),i.addEventListener(s,n)):(e.push(i.off.bind(i,s,n)),i.on(s,n)),r)};return r}function ve(o){let i=rn.get(o);i&&(i.forEach(e=>e()),rn.delete(o))}var wl=class{constructor(){d(this,"_roomIdMap",new Map);d(this,"_configs");d(this,"_sso",!1);typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:xe,env:Di.QCLOUD,browserVersion:ai.name+ai.version,ua:navigator.userAgent}),E.on("22",({schedule:i})=>{var e;(e=i==null?void 0:i.config)!=null&&e.sso&&(this._sso=!0)})}setConfig({sdkAppId:i,env:e,userId:t,roomId:r}){i!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(i)),this._configs.env=e,this._configs.userId=t,this._roomIdMap.set(t,String(r))}logSuccessEvent(i){Wt||!b.isAbleToUpload||this._configs.env===Di.QCLOUD&&this.uploadEventToKibana(w(D({},i),{result:"success"}))}logFailedEvent(i){if(Wt||!b.isAbleToUpload)return;let{eventType:e,code:t,error:r,userId:s}=i,n={roomId:this._roomIdMap.get(s||this._configs.userId),userId:s,eventType:e,result:"failed",code:t||(r==null?void 0:r.extraCode)||(r==null?void 0:r.code)||A.UNKNOWN};this._configs.env===Di.QCLOUD&&this.uploadEventToKibana(w(D({},n),{error:r}))}uploadEventToKibana(i){let e=`stat-${i.eventType}-${i.result}`;(i.eventType==="delta-join"||i.eventType==="delta-leave"||i.eventType==="delta-publish")&&(e=`${i.eventType}:${i.delta}`),this.uploadEvent({log:e,userId:i.userId}),i.result==="failed"&&(e=`stat-${i.eventType}-${i.result}-${i.code}`,this.uploadEvent({log:e,userId:i.userId,error:i.error}))}uploadEvent({log:i,userId:e,error:t}){let r={timestamp:Vn(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:xe,log:i};t&&(r.errorInfo=t.message,t.stack&&(r.errorInfo+=`
27
- ${t.stack}`));let s=this._sso?Pi(r,2002,Number(this._configs.sdkAppId)):JSON.stringify(r);this.sendRequest(wi(this._configs.sdkAppId,sr.LOG),s)}sendRequest(i,e){setTimeout(()=>Vi({url:i,body:e,priority:"low"}).catch(()=>{}),2e3)}},se=new wl;var _i=new WeakMap;function Et({settings:o={retries:5,timeout:2e3},onError:i,onRetrying:e,onRetryFailed:t}){return function(r,s,n){let a=ni({retryFunction:n.value,settings:o,onError({error:c,retry:l,reject:u,retryFuncArgs:h}){var m;i?i.call(this,c,()=>{var g;(g=_i.get(r))!=null&&g.has(s)?l():u(c)},u,h):(m=_i.get(r))!=null&&m.has(s)?l():u(c)},onRetrying(c,l){var u;si(e)&&e.call(this,c,l),(u=_i.get(r))!=null&&u.has(s)&&(_i.get(r).get(s).stopRetry=l)},onRetryFailed:t});return n.value=function(...c){let l=_i.get(r);return l?l.set(s,{args:c}):_i.set(r,new Map([[s,{args:c}]])),a.apply(this,c).finally(()=>{var u;return(u=_i.get(r))==null?void 0:u.delete(s)})},n}}function on({fnName:o,callback:i,validateArgs:e=!0}){return function(t,r,s){let n=s.value;return s.value=function(...a){var c,l;if((c=_i.get(t))!=null&&c.has(o)){let{stopRetry:u,args:h}=_i.get(t).get(o),m=!0;if(e){for(let g of h)if(!a.find(S=>S===g)){m=!1;break}}m&&(i&&i.apply(this,a),u&&u(),(l=_i.get(t))==null||l.delete(o))}return n.apply(this,a)},s}}var gi=class extends ${constructor(e,t){super(e.id,`${t}-player`);this.kind=t;d(this,"id");d(this,"element",null);d(this,"track");d(this,"url");d(this,"attr");d(this,"mode");d(this,"muted");d(this,"_log");d(this,"_pausedRetryCount");d(this,"_isElementPlayingFired",!1);d(this,"_interval");d(this,"_delayDestroyTimeoutId",0);d(this,"_playSuccessResolve");d(this,"_isReplayByRecreateMediaStreamCalled",!1);d(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=yr,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${t}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&((e=this.element)==null?void 0:e.paused)===!1}get isPaused(){var e;return this._state==="PAUSED"||((e=this.element)==null?void 0:e.paused)===!0}get isStopped(){return this._state==="STOPPED"}setAttr(e){this.attr=e}setUrl(e){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),e!==this.url&&(this.url=e,e!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}play(){return f(this,null,function*(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((e,t)=>{this._playSuccessResolve=e,this.element.play().then(e,t)})}catch(e){let t=V({key:L.PLAY_FAILED,data:{media:this.kind,error:e}});if(this._log.warn(e),t.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new v({code:A.PLAY_NOT_ALLOWED,message:t})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!ci?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(p.ENDED),this._interval>0&&re.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){var e;this.isPlaying&&((e=this.element)==null||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():Xd?this.replay():this.play().catch(()=>{})}setMuted(e){this.element&&(this.element.muted=e),this.muted=e}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let e=this.handleElementEvent.bind(this);return Ye(this.element,this.element).add(p.PLAYING,e).add(p.ENDED,e).add(p.PAUSE,e).add(p.ERROR,e).add(p.LOADEDDATA,e).add(p.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let t=this.handleTrackEvent.bind(this);fi==null||fi.create(e,e).add(p.ENDED,t).add(p.MUTE,t).add(p.UNMUTE,t),e.readyState===p.ENDED&&this.handleTrackEvent({type:p.ENDED}),e.muted&&this.handleTrackEvent({type:p.MUTE})}}bindAutoPlayEvent(){E.on(C.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&ve(e)}unbindEvents(){this.element&&ve(this.element),this.unbindTrackEvents(),E.off(C.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case p.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(p.PLAYING),this._interval&&(re.clearTask(this._interval),this._interval=-1);break;case p.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(p.ENDED);break;case p.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(p.PAUSE),Ie&&(this._interval=re.run("timeout",()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case p.ERROR:if(this.element&&this.element.error){this.handlePaused(p.ERROR);let{code:r,message:s}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${r} message: ${s} userAgent: ${navigator.userAgent}`),se.uploadEvent({log:`stat-${this.kind}-${ct.PLAYER_ERROR}-${r}-${navigator.userAgent}`,error:this.element.error}),Jd||Wd?this.emit(he.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case p.LOADEDDATA:this.kind===p.VIDEO&&this.emit(he.LOADED_DATA);break;case p.LOADEDMETADATA:this.kind===p.VIDEO&&this.emit(he.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),se.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),N.addSuccessEvent({key:this.kind===p.AUDIO?506700:516700})}).catch(()=>{var t;this._log.error("replayByRecreateMediaStream failed"),se.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),N.addFailedEvent({key:this.kind===p.AUDIO?506700:516700,error:(t=this.element)==null?void 0:t.error}),this.emit(he.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((t,r)=>{Li(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var s,n,a;this._log.warn(`element onerror ${(n=(s=this.element)==null?void 0:s.error)==null?void 0:n.code} fired after recreated mediaStream`),r((a=this.element)==null?void 0:a.error)}),Li(5e3).then(()=>{var s,n;(!this.isPlaying||(s=this.element)!=null&&s.error)&&r((n=this.element)==null?void 0:n.error),t()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){return f(this,null,function*(){switch(e.type){case p.ENDED:this.handleStopped(p.ENDED);break;case p.MUTE:this.handlePaused(p.MUTE);break;case p.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&(this._log.warn("track unmuted and element is paused, resume"),yield this.resume()),!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(p.UNMUTE));break}})}handlePlaying(e){var t;this._log.debug("handlePlaying",e),(t=this._playSuccessResolve)==null||t.call(this,e),this.emit(he.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this._log.debug("handlePaused",e),this.emit(he.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this._log.debug("handleStopped",e),this.emit(he.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};M([Et({settings:{retries:2,timeout:0},onError(e,t,r,s){s[0]=(s[0]||1e3)+1e3,t()}})],gi.prototype,"doReplayByRecreateMediaStream",1),M([Te([],"PLAYING",{sync:!0})],gi.prototype,"handlePlaying",1),M([Te("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],gi.prototype,"handlePaused",1),M([Te([],"STOPPED",{sync:!0})],gi.prototype,"handleStopped",1);var qi="trtc_autoplay",xl=`${qi}_mask`,Go=`${qi}_wrapper`,jm=`${qi}_header`,Ll=`${qi}_content`,Fa=`${qi}_action_wrapper`,Pl=`${qi}_question`,Vl=`${qi}_collapse`,Ha=`${qi}_action_confirm`,Xm=`${qi}_detail`,zm="#2473E8",Bl="dialog",jg=`${Bl}-show`,Xg=`${Bl}-1`,zg=`${Bl}-2`,Qm=!1,Fl=()=>!!document.querySelector(`.${Go}`),Zm=`${ii}/${Vt()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,Ym=`<br><a href='${Zm}' target='_blank'>${Vt()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,Qg=`${Vt()?`\u6D4F\u89C8\u5668\u81EA\u52A8\u64AD\u653E\u7B56\u7565\uFF1A\u5728\u7528\u6237\u4E0E\u9875\u9762\u4EA7\u751F\u4EA4\u4E92\uFF08\u70B9\u51FB\u3001\u89E6\u6478\uFF09\u4E4B\u524D\uFF0C\u6D4F\u89C8\u5668\u7981\u6B62\u64AD\u653E\u6709\u58F0\u5A92\u4F53\u3002\u8BE5\u5F39\u7A97\u7528\u4E8E\u5E2E\u52A9\u7528\u6237\u6062\u590D\u97F3\u89C6\u9891\u64AD\u653E\u3002${Ym}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${Ym}`}`,Ul=class{constructor(){d(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");d(this,"_dialogNode",null);d(this,"_bodyPosition","");d(this,"_showDetail",!1);d(this,"_isCollapseClicked",!1);d(this,"_isQuestionClicked",!1);if(Vt()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!Qm){let i=document.createElement("style");i.innerHTML=`.${xl}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${xl} div:not(.${Fa}){display:block !important;}.${Go}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${Go} a{color:${zm};}.${jm}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Ll}{margin:8px 0;}.${Fa}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Vl}{margin-right:auto;cursor:pointer}.${Pl}{height:100%;line-height:16px;cursor:pointer;}.${Ha}{margin-left:8px;color:#fff;background:${zm};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${Ha}:hover{opacity:0.9;}.${Vl},.${Ha},.${Ll},.${Pl}{font-size:14px;}@media screen and (max-width:750px){.${Go}{width:80vw;}}`,document.head.appendChild(i),Qm=!0}this.addDiaLog()}createDiaLog(){let i=document.createElement("template");i.innerHTML=`<div class="${xl}"><div class='${Go}'><div class='${jm}'>${location.host}</div><div class='${Ll}'>${this.content}</div><div class='${Xm}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${Qg}</div><div class='${Fa}'></div></div></div>`.trim();let e=document.createElement("button");e.className=Ha,e.innerText=Vt()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let t=document.createElement("div");t.className=Pl,t.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
24
+ `],{type:"application/javascript"}))),St.sharedWorker.onmessage=e=>{var r;if(e.data.type==="tick"){let o=St.workerTasks.get(e.data.taskId);o&&(St.isBreakLoop(o)?((r=St.sharedWorker)==null||r.postMessage({type:"stop",taskId:o.taskID}),St.workerTasks.delete(o.taskID)):(o.callback(),o.loopCount+=1))}}),St.workerTasks.set(t.taskID,t),St.sharedWorker.postMessage({taskId:t.taskID,delay:t.delay,type:"start"})}static timeout(t){let e=()=>{if(t.callback(),t.loopCount+=1,!St.isBreakLoop(t))return t.timeoutID=setTimeout(e,t.delay)};return t.timeoutID=setTimeout(e,t.delay)}static ric(t){let e=_e(),r,o=()=>{if(r=_e()-e,r>=t.delay&&(e=_e()-Math.floor(r%t.delay),t.callback(),t.loopCount+=1),!St.isBreakLoop(t))return t.ricID=eg(o,{timeout:t.delay})};return t.ricID=eg(o,{timeout:t.delay})}static raf(t){let e=_e(),r,o=()=>{if(document.hidden&&t.backgroundTask)return r=_e()-e,e=_e(),t.callback(),t.loopCount+=1,St.isBreakLoop(t)?void 0:t.timeoutID=setTimeout(o,t.delay-Math.floor(r%t.delay));if(r=_e()-e,r>=t.delay&&(e=_e()-Math.floor(r%t.delay),t.callback(),t.loopCount+=1),!St.isBreakLoop(t))return t.rafID=requestAnimationFrame(o)};if(t.rafID=requestAnimationFrame(o),t.backgroundTask){let s=()=>{if(document.hidden){let n=_e()-e;n>=t.delay?o():t.timeoutID=setTimeout(o,t.delay-n)}};document.addEventListener("visibilitychange",s),t.onVisibilitychange=s,document.hidden&&s()}return t.taskID}static hasTask(t){return this.taskMap.has(t)}static clearTask(t){if(!this.taskMap.has(t))return!0;let{intervalID:e,timeoutID:r,rafID:o,ricID:s,onVisibilitychange:n}=this.taskMap.get(t);return e&&clearInterval(e),r&&clearTimeout(r),o&&tg&&tg(o),s&&oS(s),n&&document.removeEventListener("visibilitychange",n),this.taskMap.delete(t),!0}static isBreakLoop(t){return this.hasTask(t.taskID)?t.count!==0&&t.loopCount>=t.count?(this.clearTask(t.taskID),!0):!1:!0}};l(St,"taskMap",new Map),l(St,"currentTaskID",1),l(St,"sharedWorker",null),l(St,"workerTasks",new Map);var xm=St,ht=xm;var lR={STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",STREAM_UPDATED:"stream-updated",STREAM_SUBSCRIBED:"stream-subscribed",CONNECTION_STATE_CHANGED:"connection-state-changed",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",MUTE_AUDIO:"mute-audio",MUTE_VIDEO:"mute-video",UNMUTE_AUDIO:"unmute-audio",UNMUTE_VIDEO:"unmute-video",CLIENT_BANNED:"client-banned",NETWORK_QUALITY:"network-quality",AUDIO_VOLUME:"audio-volume",SEI_MESSAGE:O.SEI_MESSAGE,ERROR:"error"};var tt={LOADED_DATA:O.LOADEDDATA,LOADED_META_DATA:O.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error"};var ei={};mi(ei,{create:()=>Ht,remove:()=>ft});var wa=new WeakMap;function Ht(i,t){wa.has(i)||wa.set(i,[]);let e=wa.get(i),o={add:(s,n)=>("addEventListener"in t?(e.push(t.removeEventListener.bind(t,s,n)),t.addEventListener(s,n)):(e.push(t.off.bind(t,s,n)),t.on(s,n)),o)};return o}function ft(i){let t=wa.get(i);t&&(t.forEach(e=>e()),wa.delete(i))}var Pm=class{constructor(){l(this,"_roomIdMap",new Map);l(this,"_configs");l(this,"_sso",!1);typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:at,env:pi.QCLOUD,browserVersion:qr.name+qr.version,ua:navigator.userAgent}),V.on("22",({schedule:t})=>{var e;(e=t==null?void 0:t.config)!=null&&e.sso&&(this._sso=!0)})}setConfig({sdkAppId:t,env:e,userId:r,roomId:o}){t!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(t)),this._configs.env=e,this._configs.userId=r,this._roomIdMap.set(r,String(o))}logSuccessEvent(t){Or||!$.isAbleToUpload||this._configs.env===pi.QCLOUD&&this.uploadEventToKibana(Ee(J({},t),{result:"success"}))}logFailedEvent(t){if(Or||!$.isAbleToUpload)return;let{eventType:e,code:r,error:o,userId:s}=t,n={roomId:this._roomIdMap.get(s||this._configs.userId),userId:s,eventType:e,result:"failed",code:r||(o==null?void 0:o.extraCode)||(o==null?void 0:o.code)||q.UNKNOWN};this._configs.env===pi.QCLOUD&&this.uploadEventToKibana(Ee(J({},n),{error:o}))}uploadEventToKibana(t){let e=`stat-${t.eventType}-${t.result}`;(t.eventType==="delta-join"||t.eventType==="delta-leave"||t.eventType==="delta-publish")&&(e=`${t.eventType}:${t.delta}`),this.uploadEvent({log:e,userId:t.userId}),t.result==="failed"&&(e=`stat-${t.eventType}-${t.result}-${t.code}`,this.uploadEvent({log:e,userId:t.userId,error:t.error}))}uploadEvent({log:t,userId:e,error:r}){let o={timestamp:vc(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:at,log:t};r&&(o.errorInfo=r.message,r.stack&&(o.errorInfo+=`
25
+ ${r.stack}`));let s=this._sso?Ti(o,2002,Number(this._configs.sdkAppId)):JSON.stringify(o);this.sendRequest(Ei(this._configs.sdkAppId,eo.LOG),s)}sendRequest(t,e){setTimeout(()=>_i({url:t,body:e,priority:"low"}).catch(()=>{}),2e3)}},je=new Pm;var es=new WeakMap;function ts({settings:i={retries:5,timeout:2e3},onError:t,onRetrying:e,onRetryFailed:r}){return function(o,s,n){let a=io({retryFunction:n.value,settings:i,onError({error:u,retry:m,reject:h,retryFuncArgs:g}){var T;t?t.call(this,u,()=>{var A;(A=es.get(o))!=null&&A.has(s)?m():h(u)},h,g):(T=es.get(o))!=null&&T.has(s)?m():h(u)},onRetrying(u,m){var h;ro(e)&&e.call(this,u,m),(h=es.get(o))!=null&&h.has(s)&&(es.get(o).get(s).stopRetry=m)},onRetryFailed:r});return n.value=function(...u){let m=es.get(o);return m?m.set(s,{args:u}):es.set(o,new Map([[s,{args:u}]])),a.apply(this,u).finally(()=>{var h;return(h=es.get(o))==null?void 0:h.delete(s)})},n}}var ti=class extends ue{constructor(e,r){super(e.id,`${r}-player`);this.kind=r;l(this,"id");l(this,"element",null);l(this,"track");l(this,"url");l(this,"attr");l(this,"mode");l(this,"muted");l(this,"_log");l(this,"_pausedRetryCount");l(this,"_isElementPlayingFired",!1);l(this,"_interval");l(this,"_delayDestroyTimeoutId",0);l(this,"_playSuccessResolve");l(this,"_isReplayByRecreateMediaStreamCalled",!1);l(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=Fo,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${r}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&((e=this.element)==null?void 0:e.paused)===!1}get isPaused(){var e;return this._state==="PAUSED"||((e=this.element)==null?void 0:e.paused)===!0}get isStopped(){return this._state==="STOPPED"}setAttr(e){this.attr=e}setUrl(e){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),e!==this.url&&(this.url=e,e!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}play(){return y(this,null,function*(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((e,r)=>{this._playSuccessResolve=e,this.element.play().then(e,r)})}catch(e){let r=Be({key:$e.PLAY_FAILED,data:{media:this.kind,error:e}});if(this._log.warn(e),r.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new de({code:q.PLAY_NOT_ALLOWED,message:r})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!Xr?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(O.ENDED),this._interval>0&&ht.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){var e;this.isPlaying&&((e=this.element)==null||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():Ql?this.replay():this.play().catch(()=>{})}setMuted(e){this.element&&(this.element.muted=e),this.muted=e}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let e=this.handleElementEvent.bind(this);return Ht(this.element,this.element).add(O.PLAYING,e).add(O.ENDED,e).add(O.PAUSE,e).add(O.ERROR,e).add(O.LOADEDDATA,e).add(O.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let r=this.handleTrackEvent.bind(this);ei==null||ei.create(e,e).add(O.ENDED,r).add(O.MUTE,r).add(O.UNMUTE,r),e.readyState===O.ENDED&&this.handleTrackEvent({type:O.ENDED}),e.muted&&this.handleTrackEvent({type:O.MUTE})}}bindAutoPlayEvent(){V.on(F.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&ft(e)}unbindEvents(){this.element&&ft(this.element),this.unbindTrackEvents(),V.off(F.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case O.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(O.PLAYING),this._interval&&(ht.clearTask(this._interval),this._interval=-1);break;case O.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(O.ENDED);break;case O.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(O.PAUSE),lt&&(this._interval=ht.run("timeout",()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case O.ERROR:if(this.element&&this.element.error){this.handlePaused(O.ERROR);let{code:o,message:s}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${o} message: ${s} userAgent: ${navigator.userAgent}`),je.uploadEvent({log:`stat-${this.kind}-${hi.PLAYER_ERROR}-${o}-${navigator.userAgent}`,error:this.element.error}),ql||jl?this.emit(tt.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case O.LOADEDDATA:this.kind===O.VIDEO&&this.emit(tt.LOADED_DATA);break;case O.LOADEDMETADATA:this.kind===O.VIDEO&&this.emit(tt.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),je.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),z.addSuccessEvent({key:this.kind===O.AUDIO?506700:516700})}).catch(()=>{var r;this._log.error("replayByRecreateMediaStream failed"),je.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),z.addFailedEvent({key:this.kind===O.AUDIO?506700:516700,error:(r=this.element)==null?void 0:r.error}),this.emit(tt.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((r,o)=>{Kn(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var s,n,a;this._log.warn(`element onerror ${(n=(s=this.element)==null?void 0:s.error)==null?void 0:n.code} fired after recreated mediaStream`),o((a=this.element)==null?void 0:a.error)}),Kn(5e3).then(()=>{var s,n;(!this.isPlaying||(s=this.element)!=null&&s.error)&&o((n=this.element)==null?void 0:n.error),r()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){return y(this,null,function*(){switch(e.type){case O.ENDED:this.handleStopped(O.ENDED);break;case O.MUTE:this.handlePaused(O.MUTE);break;case O.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&(this._log.warn("track unmuted and element is paused, resume"),yield this.resume()),!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(O.UNMUTE));break}})}handlePlaying(e){var r;this._log.debug("handlePlaying",e),(r=this._playSuccessResolve)==null||r.call(this,e),this.emit(tt.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this._log.debug("handlePaused",e),this.emit(tt.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this._log.debug("handleStopped",e),this.emit(tt.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};Z([ts({settings:{retries:2,timeout:0},onError(e,r,o,s){s[0]=(s[0]||1e3)+1e3,r()}})],ti.prototype,"doReplayByRecreateMediaStream",1),Z([Ye([],"PLAYING",{sync:!0})],ti.prototype,"handlePlaying",1),Z([Ye("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],ti.prototype,"handlePaused",1),Z([Ye([],"STOPPED",{sync:!0})],ti.prototype,"handleStopped",1);var Ni="trtc_autoplay",Lm=`${Ni}_mask`,sn=`${Ni}_wrapper`,rg=`${Ni}_header`,Um=`${Ni}_content`,Dd=`${Ni}_action_wrapper`,Vm=`${Ni}_question`,Fm=`${Ni}_collapse`,Md=`${Ni}_action_confirm`,ig=`${Ni}_detail`,og="#2473E8",Bm="dialog",nS=`${Bm}-show`,aS=`${Bm}-1`,cS=`${Bm}-2`,sg=!1,Hm=()=>!!document.querySelector(`.${sn}`),ag=`${Hr}/${vr()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,ng=`<br><a href='${ag}' target='_blank'>${vr()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,dS=`${vr()?`\u6D4F\u89C8\u5668\u81EA\u52A8\u64AD\u653E\u7B56\u7565\uFF1A\u5728\u7528\u6237\u4E0E\u9875\u9762\u4EA7\u751F\u4EA4\u4E92\uFF08\u70B9\u51FB\u3001\u89E6\u6478\uFF09\u4E4B\u524D\uFF0C\u6D4F\u89C8\u5668\u7981\u6B62\u64AD\u653E\u6709\u58F0\u5A92\u4F53\u3002\u8BE5\u5F39\u7A97\u7528\u4E8E\u5E2E\u52A9\u7528\u6237\u6062\u590D\u97F3\u89C6\u9891\u64AD\u653E\u3002${ng}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${ng}`}`,$m=class{constructor(){l(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");l(this,"_dialogNode",null);l(this,"_bodyPosition","");l(this,"_showDetail",!1);l(this,"_isCollapseClicked",!1);l(this,"_isQuestionClicked",!1);if(vr()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!sg){let t=document.createElement("style");t.innerHTML=`.${Lm}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${Lm} div:not(.${Dd}){display:block !important;}.${sn}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${sn} a{color:${og};}.${rg}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Um}{margin:8px 0;}.${Dd}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Fm}{margin-right:auto;cursor:pointer}.${Vm}{height:100%;line-height:16px;cursor:pointer;}.${Md}{margin-left:8px;color:#fff;background:${og};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${Md}:hover{opacity:0.9;}.${Fm},.${Md},.${Um},.${Vm}{font-size:14px;}@media screen and (max-width:750px){.${sn}{width:80vw;}}`,document.head.appendChild(t),sg=!0}this.addDiaLog()}createDiaLog(){let t=document.createElement("template");t.innerHTML=`<div class="${Lm}"><div class='${sn}'><div class='${rg}'>${location.host}</div><div class='${Um}'>${this.content}</div><div class='${ig}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${dS}</div><div class='${Dd}'></div></div></div>`.trim();let e=document.createElement("button");e.className=Md,e.innerText=vr()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let r=document.createElement("div");r.className=Vm,r.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
28
26
  <svg class="icon" width="18" height="18" p-id="2030" t="1639646523624" version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
29
27
  <path d="m464 784.35c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z" p-id="2031"/>
30
28
  <path d="m512 960c-247.04 0-448-200.96-448-448s200.96-448 448-448 448 200.96 448 448-200.96 448-448 448zm0-831.71c-211.58 0-383.71 172.13-383.71 383.71 0 211.55 172.13 383.71 383.71 383.71 211.55 0 383.71-172.16 383.71-383.71 0-211.58-172.16-383.71-383.71-383.71z" p-id="2032"/>
31
29
  <path d="m512 673.7c-17.665 0-32.001-14.336-32.001-31.999v-54.112c0-52.353 40-92.352 75.328-127.65 25.887-25.92 52.672-52.672 52.672-74.017 0-53.343-43.072-96.735-95.999-96.735-53.823 0-95.999 41.536-95.999 94.559 0 17.665-14.336 31.999-32.001 31.999s-32.001-14.336-32.001-31.999c0-87.424 71.775-158.56 160-158.56s160 72.095 160 160.74c0 47.904-36.32 84.192-71.424 119.3-27.84 27.776-56.576 56.512-56.576 82.336v54.112c0 17.665-14.336 32.032-32.001 32.032z" p-id="2033"/>
32
30
  </svg>
33
- `,t.onclick=this.onQuestionClick.bind(this);let r=document.createElement("div");r.className=Vl,r.innerText=`${Vt()?"\u8BE6\u60C5 >":"Detail >"}`,r.onclick=this.onCollapseClick.bind(this);let s=i.content.firstChild,n=s.querySelector(`.${Fa}`);return n.appendChild(r),n.appendChild(t),n.appendChild(e),s}addDiaLog(){Fl()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${Go}`).onclick=i=>i.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",b.info("show autoplay dialog"),se.uploadEvent({log:jg}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){b.warn("confirm clicked, try resume stream"),E.emit(C.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let i=this._dialogNode.querySelector(`.${Xm}`);i.style.visibility=`${this._showDetail?"hidden":"visible"}`,i.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||se.uploadEvent({log:Xg}),this._isCollapseClicked=!0}onQuestionClick(){window.open(Zm,"_blank"),this._isQuestionClicked||se.uploadEvent({log:zg}),this._isQuestionClicked=!0}},Km=Ul;var ot=class extends gi{constructor(e){super(e,p.VIDEO);d(this,"stat",{});d(this,"_calculateTimeout",-1);d(this,"viewMirror",!1);d(this,"objectFit");d(this,"container");d(this,"canvas");this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,T(e.viewMirror)||(this.viewMirror=e.viewMirror),T(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}get isPlaying(){var e;return this._state!=="PLAYING"||this.element&&this.element.paused?!1:((e=this.track)==null?void 0:e.readyState)==="live"&&!this.track.muted}initializeElement(){var t;let e=document.createElement(p.VIDEO);this.track&&this.mode!==2&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id",`video_${this.id}`),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,(t=this.container)==null||t.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width: 100%; height: 100%; object-fit: ${this.objectFit};background-color: black;`;return this.viewMirror&&(e+="transform: scaleX(-1);"),e}setContainer(e){var t;this.container=e,this.track&&this.elementToRender&&((t=this.container)==null||t.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(p.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(p.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){var t;return e.type===p.MUTE&&((t=this.stat)!=null&&t.fps)&&(this.stat.fps=0),super.handleTrackEvent(e)}handleElementEvent(e){var r,s;if(this.mode===2)return;super.handleElementEvent(e);let t=e.type;if(t===p.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(r=this.container)==null?void 0:r.id}`),this.container&&this.container!==document.getElementById(this.container.id)&&(this._pausedRetryCount=yr,this._log.info(`view container ${(s=this.container)==null?void 0:s.id} is recreated`)),this._pausedRetryCount>0&&!Fl()&&(this._log.info(`[${yr-this._pausedRetryCount+1}/${yr}] ${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let n=this.element.style.transform;t===p.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=n.replace("scaleX(-1)",""):t===p.LEAVE_PICTURE_IN_PICTURE&&!n.includes("scaleX")&&(this.element.style.transform=`${n} scaleX(-1)`)}}setCanvas(e,t=1){var r,s,n,a;this.canvas!==e&&((r=this.canvas)==null||r.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?t:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((s=this.element)==null||s.remove(),(n=this.container)==null||n.appendChild(e)):this.element&&((a=this.container)==null||a.appendChild(this.element)))}setAttr(e){let t=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);t.style=Object.assign({width:"100%",height:"100%"},t.style),super.setAttr(t)}get mirror(){return this.viewMirror}setRect(e,t){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${t}px`)}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit=`${e}`),this.objectFit=e}setPoster(e){this.element&&(this.element.poster=e)}stop(e=0){var t;super.stop(e),(t=this.canvas)==null||t.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(he.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender)))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if($r()&&this.element&&this._calculateTimeout<0){let e=0,t=null,r=(s,n)=>{this.stat.width=n.width,this.stat.height=n.height,t&&(this.stat.fps=Math.round((n.presentedFrames-t.presentedFrames)/(s-e)*1e3)),e=s,t=n,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var a;return(a=this.element)==null?void 0:a.requestVideoFrameCallback(r)},2e3))};this.element.requestVideoFrameCallback(r)}}catch(e){this._log.warn("init stat failed",e)}}};function ji(o,i){return f(this,null,function*(){if(!o.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield o.audioWorklet.addModule(i),b.info("worklet addModule success")}catch(e){throw b.info(`worklet addModule catch error. ${e.message}`),e}})}var sn;typeof AudioContext!="undefined"?sn=AudioContext:typeof webkitAudioContext!="undefined"?sn=webkitAudioContext:typeof mozAudioContext!="undefined"&&(sn=mozAudioContext);var zt,ep=-1,$a=0;tp();function tp(){try{if(zt)return;zt=new sn({sampleRate:48e3}),zt.onstatechange=()=>{b.info(`context state: ${zt.state}${zt.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),Wo()},clearTimeout(ep)}catch(o){b.error(`initAudioContext failed: ${o} typeof AudioContextClass: ${typeof sn}`),ep=setTimeout(tp,1e3)}}var Wo=()=>{zt.state==="suspended"?($a=P(),Jo(),document.addEventListener("click",Wo)):zt.state==="interrupted"?Jo():($a&&(N.addNumber({key:507800,value:P()-$a,split:[0,500,1e3,2e3,3e3,4e3,5e3,1e4,3e4],max:6e4}),$a=0),document.removeEventListener("visibilitychange",Wo),document.removeEventListener("click",Wo))},Hl=0,$l=-1;function Jo(){return new Promise((o,i)=>{if(zt.state==="running")return o();Date.now()-Hl<1e3?(clearTimeout($l),$l=setTimeout(()=>{Hl=Date.now(),zt.resume().then(o,i)},1e3)):(clearTimeout($l),Hl=Date.now(),zt.resume().then(o,i))}).catch(o=>{b.warn(`context resume failed: ${o}`),document.addEventListener("visibilitychange",Wo)})}document.addEventListener("click",Wo);var Ee=o=>zt;var De=class{constructor(i){this.name=i;d(this,"node");d(this,"node2");d(this,"pre",new Set);d(this,"next",new Set);d(this,"context");d(this,"connectedNodes",new Set);d(this,"nextInputChannelMap",new Map);d(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(i){this._channelCount=i,this.setChannelCount(this.node,i),this.setChannelCount(this.node2,i),this.next.forEach(e=>e.channelCount=i)}setChannelCount(i,e){!i||i instanceof ScriptProcessorNode||(i.channelCountMode="explicit",i.channelCount=e||this.channelCount||1)}setContext(i){this.context=i,this.node&&i.addMixWeight()}removeContext(){var i;this.node&&((i=this.context)==null||i.reduceMixWeight()),delete this.context}replaceNode(i){var e;if(i!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=i,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(t){b.error(t)}}setNode(i,e){var t;if(!this.node)try{(t=this.context)==null||t.addMixWeight(),this.node=i,this.setChannelCount(this.node),e&&(this.node2=e,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),N.addSuccessEvent({key:502701})}catch(r){b.error(r),N.addFailedEvent({key:502701,error:r})}}deleteNode(){var i;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(i=this.context)==null||i.reduceMixWeight(),this.preNodeReconnect(),N.addSuccessEvent({key:502702})}catch(e){b.error(e),N.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(i=>{i.node?i.reconnect():i.preNodeReconnect()})}connectNext(i){this.next.forEach(e=>{let t=this.nextInputChannelMap.get(e);i._connect(e.node,t)||e.connectNext(i)})}_connect(i,e=0){return!this.node||!i?!1:((this.node2||this.node).connect(i,0,e),this.connectedNodes.add(i),!0)}_disconnect(){this.connectedNodes.forEach(i=>{var e;return(e=this.node2||this.node)==null?void 0:e.disconnect(i)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(i,e=0){return this.next.add(i),i.pre.add(this),this.nextInputChannelMap.set(i,e),i}},Ga=class extends De{constructor(e=256){super();this.fftSize=e;d(this,"dataArray",new Uint8Array(0))}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let e=this.getByteTimeDomainData(),t=1,r=0,s=0,n=`M${r},${s}`;for(let a=0;a<e.length;a++)s=e[a]/128*100/2,n+=`L${r},${s}`,r+=t;return n}},nn=class{constructor(){d(this,"source",new De);d(this,"gain",new De);d(this,"destination",new De)}get volume(){var i;return((i=this.gain.node)==null?void 0:i.gain.value)||1}setVolume(i){if(i===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(Ee().createGain()),this.gain.node.gain.value=i}replaceSource(i){this.source.replaceNode(an(i))}get track(){var i;return(i=this.stream)==null?void 0:i.getAudioTracks()[0]}get stream(){var i;return(i=this.destination.node)==null?void 0:i.stream}},qo=class extends nn{constructor(e){super();this.context=e;d(this,"aec",new De("aec"));d(this,"mixNode",new De("mixNode"));d(this,"silentNode",new De("silentNode"));d(this,"denoiser",new De("denoiser"));d(this,"voiceChanger",new De("voiceChanger"));this.source.pipeTo(this.aec).pipeTo(this.denoiser).pipeTo(this.voiceChanger).pipeTo(this.gain).pipeTo(this.destination),this.silentNode.pipeTo(this.mixNode).pipeTo(this.aec,1)}connect(){this.context.inputs.has(this)||(this.destination.setNode(this.context.destination),this.source.setContext(this.context),this.aec.setContext(this.context),this.silentNode.setContext(this.context),this.mixNode.setContext(this.context),this.denoiser.setContext(this.context),this.voiceChanger.setContext(this.context),this.gain.setContext(this.context),this.context.inputs.add(this))}disconnect(){this.context.inputs.has(this)&&(this.destination.deleteNode(),this.source.removeContext(),this.aec.removeContext(),this.silentNode.removeContext(),this.mixNode.removeContext(),this.denoiser.removeContext(),this.voiceChanger.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.aec.deleteNode(),this.silentNode.deleteNode(),this.mixNode.deleteNode(),this.denoiser.deleteNode(),this.voiceChanger.deleteNode(),this.source.deleteNode(),this.disconnect()}setVolume(e){if(e===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.context.audioContext.createGain()),this.gain.node.gain.value=e}},Wa=class{constructor(){d(this,"audioContext",Ee("audio-mixer"));d(this,"destination",this.audioContext.createMediaStreamDestination());d(this,"inputs",new Set);d(this,"mixWeight",0);this.destination.channelCount=1}addMixWeight(i=1){this.mixWeight+=i,this.mixWeight-1===i+1>>1&&this.mixOnChange()}reduceMixWeight(i=1){this.addMixWeight(-i)}close(){this.inputs.forEach(i=>i.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},ip=new WeakMap;function an(o){let i=ip.get(o);if(i)return i;let e=Ee();if(o instanceof HTMLAudioElement)i=e.createMediaElementSource(o);else if(o instanceof MediaStreamTrack)i=e.createMediaStreamSource(new MediaStream([o]));else return o;return ip.set(o,i),i}var St=class St{constructor(i){d(this,"_volume",0);d(this,"_volumeDb",0);d(this,"_log");d(this,"_scriptProcessorNode",null);d(this,"_audioWorkletNode",null);d(this,"_interval",200);d(this,"ready",this.preload());let{log:e}=i;this._log=e,E.on(C.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-St.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!St.workletReady){let i='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,s){t=t[0],s=s[0];if(t||s){if(this.isStop)return!1;var i=s&&s[0]?s[0].length:0,h=this.cache.length,a=(i<h?(s[0].set(this.cache.slice(0,i)),this.cache=this.cache.slice(i)):this.unmute&&s[0].set(t[0]),(i<h?s:t)[0]);if(a){let e=0;for(let t=0;t<a.length;++t)e=Math.max(Math.abs(a[t]),e);s=a.reduce((t,e)=>t+e*e,0)/a.length;this.volume=e,this.tick-=a.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,volumeDb:Math.max(10*Math.log10(s)+100,0)/100,cacheLen:h,outputLen:i}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';St.workletReady=ji(St.audioContext,URL.createObjectURL(new Blob([i],{type:"application/javascript"})))}return St.workletReady.then(()=>this.initAudioWorklet()).catch(i=>(this._log.error(`volumeMeter preload error: ${i}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(St.audioContext,"volume-meter");let i=!1;this._audioWorkletNode.port.onmessage=e=>{St.lastMessageTime=Date.now(),this._volume=e.data.volume||0,this._volumeDb=e.data.volumeDb||0,!i&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),i=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(i){this._log.error(`volumeMeter init audio worklet error: ${i}`),se.logFailedEvent({userId:this._log.userId,eventType:ct.LOAD_WORKLET,error:i}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=Ee("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=i=>{St.lastMessageTime=Date.now();let e=i.inputBuffer.getChannelData(0),t=0;for(let r=0;r<e.length;++r)t+=e[r]*e[r];this._volume=Math.sqrt(t/e.length)||0}}catch(i){this._log.error(`volumeMeter init script processor error: ${i}`)}}destroy(){this._scriptProcessorNode&&(this._scriptProcessorNode.onaudioprocess=null),this._audioWorkletNode&&(this._audioWorkletNode.port.postMessage({name:"stop"}),this._audioWorkletNode.port.onmessage=null),this._audioWorkletNode=null,this._scriptProcessorNode=null,E.off(C.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}getVolumeDb(){return Math.floor(this._volumeDb*100)}handleAudioLevelInterval(i){var t;let{interval:e}=i;this._interval=e,(t=this._audioWorkletNode)==null||t.port.postMessage({name:"setIntervalTime",intervalTime:e})}};d(St,"lastMessageTime",0),d(St,"audioContext",Ee("volume-meter")),d(St,"workletReady");var Ja=St,cn=class extends De{constructor(e){super();d(this,"_volumeMeter");this._volumeMeter=new Ja(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return f(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}getVolumeDb(){return this._volumeMeter.getVolumeDb()}write(e){if(this.node){let t=e.allocationSize({planeIndex:0}),r=new Float32Array(t>>2);e.copyTo(r,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:r},[r.buffer]),e.close()}}},Gr=Ja;var np=Ge(it(),1);var op=o=>i=>i.deviceId===o;var dn=class{constructor(i,e="Input"){d(this,"kind");d(this,"type");d(this,"devices",[]);this.kind=i,this.type=e}update(i,e){let t=i.filter(r=>r.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&Xo(this.devices[0])){this.devices=t;return}e&&(t.forEach(r=>{if(r.deviceId&&!this.devices.find(op(r.deviceId))){let s=`${this.kind}${this.type}Added`;b.warn(`${s}: ${JSON.stringify(r)}`),e.emit(s,r)}}),this.devices.forEach(r=>{if(r.deviceId&&!t.find(op(r.deviceId))){let s=`${this.kind}${this.type}Removed`;b.warn(`${s}: ${JSON.stringify(r)}`),e.emit(s,r)}})),this.devices=t}hasDevice(i){return!!this.devices.find(e=>e.deviceId===i)}},Gl=class extends np.EventEmitter{constructor(){super();d(this,"audioInputs",new dn(p.AUDIO));d(this,"videoInputs",new dn(p.VIDEO));d(this,"audioOutputs",new dn(p.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||re.run("interval",()=>{this.update()},{delay:1e4}))}init(){jo().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return f(this,arguments,function*(e=0){let t=yield jo(e);return this.audioInputs.update(t,this),this.videoInputs.update(t,this),this.audioOutputs.update(t,this),this})}},Pe=Es||co?null:new Gl;function Xo(o){return o.deviceId===o.groupId&&o.groupId===""}function jo(){return f(this,arguments,function*(o=0){if(Wi()||!wa())return[];let i=yield navigator.mediaDevices.enumerateDevices();if(o!==0){let e={audio:!1,video:!1};if(i.forEach(t=>{Xo(t)&&(t.kind===p.AUDIO_INPUT?e.audio=!0:t.kind===p.VIDEO_INPUT&&(e.video=!0))}),o===2&&(e.audio=!1),o===1&&(e.video=!1),e.audio||e.video){let t;try{t=yield navigator.mediaDevices.getUserMedia(e),e.audio&&Jo()}catch(r){b.debug("capture before getDevices failed: ",r)}i=yield navigator.mediaDevices.enumerateDevices(),t==null||t.getTracks().forEach(r=>r.stop())}}return i.map((e,t)=>{let r={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${t}`};return e.deviceId.length>0&&Wl.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(r.getCapabilities=()=>e.getCapabilities()),r})})}function ht(o=!1){return Pe.update(o?1:0).then(i=>i.audioInputs.devices)}function It(o=!1){return Pe.update(o?2:0).then(i=>i.videoInputs.devices)}var sp=!1;function ap(){return f(this,null,function*(){try{sp||(sp=!0,b.info(`speakers:${(yield pr()).map(o=>` ${o.deviceId.slice(0,8)}: ${o.label}`)}`))}catch(o){}})}function pr(o=!1){return f(this,null,function*(){return(Ie||Oe)&&(o=!1),Pe.update(o?1:0).then(i=>i.audioOutputs.devices)})}var Wl=new Set;function cp(o){if(o instanceof CanvasCaptureMediaStreamTrack||!(o instanceof MediaStreamTrack))return!1;let i=o.label.toLocaleLowerCase();if(i.includes("camera")||i.includes("webcam"))return!0;let t=`${((o==null?void 0:o.getSettings())||{}).deviceId}_${p.VIDEO_INPUT}`;return!!Wl.has(t)}function dp(o){if(o instanceof CanvasCaptureMediaStreamTrack||!(o instanceof MediaStreamTrack))return!1;let i=o.label.toLocaleLowerCase();if(i.includes("mic")||i.includes("\u9EA6\u514B\u98CE"))return!0;let t=`${((o==null?void 0:o.getSettings())||{}).deviceId}_${p.AUDIO_INPUT}`;return!!Wl.has(t)}function Jl(o,i){return f(this,null,function*(){let t=(yield ht()).find(r=>r.deviceId===br);return!i&&(t==null?void 0:t.groupId)===o||(t==null?void 0:t.groupId)===o&&t.label===i})}function lp(s){return f(this,arguments,function*({newDeviceId:o,oldDeviceId:i,oldGroupId:e,oldLabel:t,kind:r}){return o!==i?!1:r===p.AUDIO&&o===br?yield Jl(e,t):!0})}var qa,ql=class extends nn{constructor(e){super();this.log=e;d(this,"volumeMeter");d(this,"volumeMeterAfter3A");d(this,"volumeDestination");d(this,"analyser",new Ga);this.volumeMeter=new cn({log:this.log}),this.volumeMeterAfter3A=new cn({log:this.log}),this.volumeDestination=new De,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},ja=class o extends gi{constructor(e){super(e,p.AUDIO);d(this,"_outputDeviceId");d(this,"_volume",1);d(this,"_destination",Ee("player").createMediaStreamDestination());d(this,"pipeline");d(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new ql(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((_t==="15.2"||_t==="15.3"||_t==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let r=qa||new Audio;r.setAttribute("autoplay","autoplay"),r.srcObject=this.getMediaStream(),r.muted=this.muted,this.element=r,q(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),r===qa&&(qa=void 0),this.bindElementEvents()}play(e){return f(this,null,function*(){if(this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e==null?void 0:e.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?(this.pipeline.volumeMeter.init(),this.pipeline.volumeMeterAfter3A.init()):this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(Ee("player").createAnalyser()),ap(),We(o.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return f(this,null,function*(){var t,r;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(r=(t=this.element).setSinkId)==null?void 0:r.call(t,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){this.element&&(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}getInternalAudioLevelAfter3A(){return this.pipeline.volumeMeterAfter3A.getInternalAudioLevel()}},Xa=class extends ja{setTrack(i){this.track!==i&&(this.unbindTrackEvents(),this.track=i,this.emit(he.MEDIA_TRACK_CHANGED,i),i&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([i]))))}setVolume(i){this._volume=i,this.element&&(this.element.volume=i)}},za=class extends ja{constructor(e){super(e);d(this,"_sourceElement");d(this,"_output",new De);this.pipeline.source.pipeTo(this.pipeline.gain),this.pipeline.gain.pipeTo(this.pipeline.volumeMeter).pipeTo(this._output),this.pipeline.gain.pipeTo(this.pipeline.destination)}setOutput(){this.mode=1,this._output.setNode(Ee("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var t,r,s;((r=(t=this.element)==null?void 0:t.error)==null?void 0:r.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(he.MEDIA_TRACK_CHANGED,e),e?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([e]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([e])),this.pipeline.source.channelCount=((s=e.getSettings())==null?void 0:s.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}setVolume(e){this._volume=e,this.useDestination?(this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`)):e<=1?this.element?(this._log.info(`set element volume: ${e}`),this.element.volume=e):this._log.info("set element volume: no element"):Ie||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),ve(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let t=this._sourceElement||this.element;t&&ci&&(qa=t),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var Wr=class extends ${constructor({userId:e,sdkAppId:t,mediaType:r,room:s,PlayerClass:n=r===1?za:ot}){var a;super();d(this,"id",Gs());d(this,"userId","");d(this,"isRemote");d(this,"mediaType");d(this,"room");d(this,"user");d(this,"_log");d(this,"_inputTrack");d(this,"_outputTrack");d(this,"isPlayCalled");d(this,"container",null);d(this,"player");d(this,"subVideoPlayerMap");d(this,"muted",!1);d(this,"abortCtrl");d(this,"objectFit","cover");d(this,"mirror");d(this,"rotation");d(this,"isScreen",!1);d(this,"manager");d(this,"trackSettings");d(this,"isFirstVideoFrameEmitted",!1);this.userId=e||"",this.mediaType=r,this._log=b.createLogger({id:`${this.kind[0]}t`,userId:(a=s||this.room)==null?void 0:a.userId,remoteUserId:this instanceof Qt?void 0:this.userId,sdkAppId:t,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof Qt}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(he.PLAYER_STATE_CHANGED,c=>{E.emit(C.PLAYER_STATE_CHANGED,D({track:this},c)),this.emit("player-state-changed",c)}),this.kind===p.VIDEO&&(this.player.on(he.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(he.LOADED_DATA),E.emit(C.VIDEO_LOADED_DATA,{track:this})}),this.player.on(he.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(he.LOADED_META_DATA)}),this.player.on(he.MEDIA_TRACK_CHANGED,c=>{var l;(l=this.subVideoPlayerMap)==null||l.forEach(u=>u.setTrack(c))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(he.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||b}get kind(){return this.mediaType===1?p.AUDIO:p.VIDEO}get strMediaType(){return this.mediaType===4?p.VIDEO:this.mediaType===2?p.SCREEN:p.AUDIO}get streamType(){return(this.mediaType&2)===0?"main":"auxiliary"}get isMediaTrackActive(){return this.mediaTrack?!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled:!1}play(e,t){return f(this,null,function*(){let r=Se(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(t)}`),t&&!T(t.muted)&&this.setPlayerMute(t.muted),t&&!T(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof ot&&(this.player.setObjectFit(this.objectFit),this.container!==r&&r&&(this.container=r,this.player.setContainer(r)),Se(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),t)));return}if(t&&!T(t.muted)?this.setPlayerMute(t.muted):(!this.isRemote||this.kind===p.VIDEO)&&this.setPlayerMute(!0),t&&!T(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof ot&&(this.player.setObjectFit(this.objectFit),t&&!T(t.poster)&&this.player.setPoster(t.poster)),this.isPlayCalled=!0,r&&(this.container=r,this.player instanceof ot&&this.player.setContainer(r)),E.emit(C.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(t)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(t),Se(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),t))}catch(s){throw this.handleAutoPlayFailed(s),s}})}setMirror(e,t){if(this.isScreen||this.kind!==p.VIDEO||T(e)||e===this.mirror)return;this.mirror=e;let r=this.player;t&&(r=t);let s=this.manager;if(de(this.mirror)){r.setViewMirror(this.mirror),!this.isRemote&&s&&(s.mirror=!1);return}switch(this.mirror){case"view":{s&&(s.mirror=!1),r.setViewMirror(!0);break}case"publish":{s&&(s.mirror=!0),r.setViewMirror(!0);break}case"both":s&&(s.mirror=!0),r.setViewMirror(!1)}}playSubContainer(e,t){return f(this,null,function*(){if(!this._outputTrack||this.kind===p.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((s,n)=>{var a;e.find(c=>n===c)||(s.stop(),(a=this.subVideoPlayerMap)==null||a.delete(n))});for(let[s,n]of e.entries()){let a=this.subVideoPlayerMap.get(n);a?t&&(T(t.objectFit)||a.setObjectFit(t.objectFit)):this.subVideoPlayerMap.set(n,new ot({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${s+1}`})}))}let r=[...this.subVideoPlayerMap.values()];for(let s of r)s.setViewMirror(this.player.mirror),yield s.play()})}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return((e=this.player)==null?void 0:e.getInternalAudioLevel())||0}stop(e=!1){this.isPlayCalled&&(this.isPlayCalled=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(Pd(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(t=>{t.stop()}),this.container=null)}resume(){return f(this,null,function*(){var e;this.isPlayCalled&&(yield(e=this.player)==null?void 0:e.resume())})}close(){this.log.info("close"),this.isPlayCalled&&this.stop(!0)}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),E.emit(e?C.TRACK_MUTED:C.TRACK_UNMUTED,{track:this})}setPlayerMute(e){this.player.setMuted(e)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(e){Ye(e,e).add(p.MUTE,this.onTrackMuted).add(p.UNMUTE,this.onTrackUnmuted).add(p.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===p.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){ve(e)}setInputMediaStreamTrack(e){var r;let t=this._inputTrack;if(e!==t)return this._inputTrack=e,this.trackSettings=(r=e.getSettings)==null?void 0:r.call(e),e.enabled=!this.muted,t&&this.uninstallTrackEvent(t),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,t||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var r;let t=this._outputTrack;e!==t&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(r=e.getSettings)==null?void 0:r.call(e).deviceId,e.label),this._outputTrack=e,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!e),this.emit("output-media-track-changed",e))}setMediaType(e){this.mediaType=e}updatePlayingState(e){if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(t=>this.handleAutoPlayFailed(t)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(Pd(this)?this.jitterBufferDelay:0),this.log.info(`playing state updated, stop ${this.kind}`);return}}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(e){if(this.room&&this.room.enableAutoPlayDialog)new Km;else{let t=()=>{this.resume().then(()=>{document.removeEventListener("click",t,!0)})};document.addEventListener("click",t,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof ot?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var n,a,c;if(this.isFirstVideoFrameEmitted)return;let t=(n=this.mediaTrack)==null?void 0:n.getSettings(),r=(t==null?void 0:t.width)||((a=this.player.element)==null?void 0:a.videoWidth)||0,s=(t==null?void 0:t.height)||((c=this.player.element)==null?void 0:c.videoHeight)||0;e===he.LOADED_META_DATA&&!r&&!s||(e===he.LOADED_DATA&&!r&&!s&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,yt(this.rotation)&&([r,s]=[s,r]),this.emit("first-video-frame",{width:r,height:s,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};M([Te([],$.INIT,{sync:!0})],Wr.prototype,"close",1);var Yg=Object.prototype.hasOwnProperty,{toString:ry}=Object.prototype;function Zg(o){if(o==null)return!0;if(typeof o=="boolean")return!1;if(typeof o=="number")return o===0;if(typeof o=="string"||typeof o=="function"||Array.isArray(o))return o.length===0;if(o instanceof Error)return o.message==="";if(ze(o))switch(Object.prototype.toString.call(o)){case"[object File]":case"[object Map]":case"[object Set]":return o.size===0;case"[object Object]":{for(let i in o)if(Yg.call(o,i))return!1;return!0}}return!1}var Ti=Zg;var Kg=function(o){return f(this,null,function*(){let i=tT(o);b.info(`getUserMedia with constraints: ${JSON.stringify(i)}`);let e=[],t=[],r=["label","deviceId","groupId"];i.audio&&(e=yield ht(),b.info(`microphones: ${Rt(e.map(s=>w(D({},s),{groupId:s.groupId.substring(0,8)})),{keysToInclude:r})}`)),i.video&&(t=yield It(),b.info(`cameras: ${Rt(t,{keysToInclude:r})}`));try{let s=yield navigator.mediaDevices.getUserMedia(i);return Nl&&s.getTracks().forEach(n=>{b.info(`${n.kind} capabilities: ${Rt(n.getCapabilities(),{keysToInclude:qn})}`)}),i.audio&&Jo(),s}catch(s){let{message:n}=s;throw s.name==="NotFoundError"&&(o.video&&t&&t.length===0&&(n=V({key:L.CAMERA_NOT_FOUND})),o.audio&&e&&e.length===0&&(n=V({key:L.MICROPHONE_NOT_FOUND}))),new v({code:A.INITIALIZE_FAILED,name:s.name,message:n,constraint:s.constraint})}})},eT=ni({retryFunction:Kg,settings:{retries:3,timeout:500},onError:({error:o,retry:i,reject:e,retryFuncArgs:t,retriedCount:r})=>{let s=r+1;o.name==="NotReadableError"||o.name==="OverconstrainedError"?(s===1?(t[0].video&&(t[0].maxResolution=!1,(!Oe||t[0].width*t[0].height<=1920*1080)&&t[0].frameRate&&(t[0].frameRate=t[0].frameRate>10?10:5)),t[0].retryWhenExactFailed&&t[0].useExactDeviceId&&(t[0].useExactDeviceId=!1)):s===2?t[0].useDeviceIdOnly=!0:s===3&&!t[0].useExactDeviceId&&(t[0].useTrueAsConstraint=!0),i()):e(o),t[0].microphoneId&&up(t[0].microphoneId,!1),t[0].cameraId&&up(t[0].cameraId,!0)},onRetrying:o=>{b.warn(`getUserMedia NotReadableError observed, retrying [${o}/3]`)},onRetryFailed:o=>{se.logFailedEvent({eventType:ct.GET_USER_MEDIA_RETRY,error:o})},onRetrySuccess:o=>{se.logSuccessEvent({eventType:ct.GET_USER_MEDIA_RETRY}),se.uploadEvent({log:`stat-${ct.GET_USER_MEDIA_RETRY}-success-${o}`})}});function up(o,i){return f(this,null,function*(){let t=(i?yield It():yield ht()).find(r=>r.deviceId===o);t&&ae(t.getCapabilities)&&b.warn(Rt(t.getCapabilities(),{keysToInclude:qn}))})}function tT(o){return{audio:iT(o),video:rT(o)}}function iT(o){if(!o.audio)return!1;if(o.useTrueAsConstraint)return!0;let i={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:o.sampleRate};return!Ti(o.microphoneId)&&(i.deviceId=o.useExactDeviceId?{exact:o.microphoneId}:o.microphoneId,o.useDeviceIdOnly)?i:(q(o.channelCount)&&(i.channelCount=o.channelCount),de(o.echoCancellation)&&!o.echoCancellation&&(i.echoCancellation=!1),de(o.noiseSuppression)&&!o.noiseSuppression&&(i.noiseSuppression=!1),de(o.autoGainControl)&&!o.autoGainControl&&(i.autoGainControl=!1),Ti(i)?!0:i)}function rT(o){if(!o.video)return!1;if(o.useTrueAsConstraint)return!0;let{maxResolution:i=!0}=o,e={};return o.cameraId?e.deviceId=o.useExactDeviceId?{exact:o.cameraId}:o.cameraId:o.facingMode&&(e.facingMode=o.facingMode),o.useDeviceIdOnly&&!Ti(e)?e:(o.width&&(e.width={ideal:o.width},i&&!ne&&(e.width.max=o.width)),o.height&&(e.height={ideal:o.height},i&&!ne&&(e.height.max=o.height)),ne&&Gt&&o.width&&o.height&&o.width*o.height<352*288&&(e.width=o.width,e.height=o.height),o.frameRate&&(e.frameRate=o.frameRate),Ti(e)?!0:e)}var hp=eT;function Qa(o){return Y((i,e)=>function(...t){return f(this,null,function*(){return yield o.apply(this,t),i.apply(this,t)})})}function st(o){return Y((i,e)=>function(...t){return f(this,null,function*(){let r=yield i.apply(this,t);return yield o.call(this,...t),r})})}function Ya(o){return Y((i,e)=>function(...t){return f(this,null,function*(){try{return yield i.apply(this,t)}catch(r){o.call(this,r)}})})}function Y(o){return function(i,e,t){return t.value=o(t.value,e),t}}var mp=(()=>{let o=!1,i=document.visibilityState;return()=>{document.visibilityState!==i&&b.info(`visibility change: ${document.visibilityState}`),!o&&(document.addEventListener("visibilitychange",()=>{b.info(`visibility change: ${document.visibilityState}`),i=document.visibilityState}),o=!0)}})();var oT=0,Za=class{constructor(){d(this,"log",b.createLogger({id:`fq${++oT}`}));d(this,"isRunning",!1);d(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(i,e=!1){var s,n;let t=D({},i),r=new Promise((a,c)=>{t.resolve=a,t.reject=c});return t.promise=r,e?this.length<=1?this.queue.push(t):(n=(s=this.lastQueueItem)==null?void 0:s.promise)==null||n.then(t.resolve,t.reject):this.queue.push(t),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),r}shift(){let i=this.queue.shift();return this.log.debug(`shift ${this.length}`),i}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:i,args:e,context:t,resolve:r,reject:s}=this.queue[0];this.isRunning=!0,i.apply(t,e).then(r,s).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},ln=new WeakMap,Ka=new WeakMap;function Nt(o=!1){return function(i,e,t){let r=t.value;return t.value=function(...s){let n=ln.get(this)||new Za;return ln.set(this,n),n.push({fn:r,args:s,context:this},o)},t}}function pp(o){return function(i,e,t){let r=t.value;return t.value=function(...s){let n=ln.get(this);if(n){let a=n.queue.filter((c,l)=>{if(l===0)return!0;let u=!0;return c.args.forEach(h=>{s.find(m=>m===h)||(u=!1)}),u?(c.reject(new v({code:A.API_CALL_ABORTED,message:o})),!1):!0});n.queue=a}return r.apply(this,s)},t}}function ec(o){return function(i,e,t){let r=t.value;return t.value=function(...s){var a,c,l;let n=[];return(c=(a=ln.get(this))==null?void 0:a.queue)==null||c.forEach(u=>n.push(u)),(l=Ka.get(this))==null||l.forEach(u=>u==null?void 0:u.queue.forEach(h=>n.push(h))),n.forEach(u=>{u.reject(new v({code:A.API_CALL_ABORTED,message:o}))}),ln.delete(this),Ka.delete(this),r.apply(this,s)},t}}function Xi(o){return function(i,e,t){let r=t.value,s=n=>o(...n);return t.value=function(...n){let a=Ka.get(this)||new Map,c=a.get(s(n))||new Za;return a.set(s(n),c),Ka.set(this,a),c.push({fn:r,args:n,context:this})},t}}function mt(o,i){return Y((e,t)=>function(...r){let s=o;try{let n=e.apply(this,r),a=P();return lr(n)?n.then(c=>(i?N.addSuccessEvent({key:s,cost:P()-a}):N.addSuccessEvent({key:s}),c)).catch(c=>{throw N.addFailedEvent({key:s,error:c}),c}):(N.addSuccessEvent({key:s}),n)}catch(n){throw N.addFailedEvent({key:s,error:n}),n}})}var Jr=class Jr extends Wr{constructor(e,t){super({mediaType:e,PlayerClass:t});d(this,"isRemote",!1);d(this,"deviceId");d(this,"groupId","");d(this,"label","");d(this,"sourceTrack");d(this,"enableAutoSwitchWhenRecapturing",!0);d(this,"_isRecapturing",!1);d(this,"_lastRecaptureTime",0);d(this,"_onMuteTimeoutId",-1);d(this,"_encodeCheckTimeoutId",-1);d(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}encodeFrame(e,t){throw new Error("Method not implemented.")}installTrackEvent(e){Ye(e,e).add(p.MUTE,this.onTrackMuted).add(p.UNMUTE,this.onTrackUnmuted).add(p.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===p.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){ve(e)}setStateToReady(){}capture(e){return f(this,null,function*(){var t;try{let r=P();E.emit(C.LOCAL_TRACK_CAPTURE_START,{track:this});let s;e.customSource?(s=new MediaStream,s.addTrack(e.customSource)):((t=this.sourceTrack)==null||t.stop(),s=yield hp(e));let n=s.getTracks()[0];return yield this.setInputMediaStreamTrack(n),e.customSource||(this.sourceTrack=n,this.updateDeviceIdInUse(),this.listenDeviceChange()),E.emit(C.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:P()-r}),s}catch(r){throw E.emit(C.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:r}),this.log.error(`getUserMedia error observed ${r}`),r}})}setOutputMediaStreamTrack(e){var t;if(super.setOutputMediaStreamTrack(e),this.setStateToReady(),this.isPublishing||this.isPublished)return(t=this.room)==null?void 0:t.replaceTrack(this)}publish(e,t){return this.room=e,this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),t}unpublish(){this.room&&this.room.localTracks.delete(this),E.emit(C.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return f(this,null,function*(){if(this.mediaTrack&&mi){let{deviceId:e,groupId:t}=this.mediaTrack.getSettings(),{label:r}=this.mediaTrack;(yield lp({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=r,t&&(this.groupId=t),jo().then(n=>{let a=n.find(c=>c.deviceId===e);a&&this.emit("2",a)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.mediaTrack||this.kind===p.AUDIO&&!dp(this.mediaTrack)||this.kind===p.VIDEO&&!cp(this.mediaTrack)||this._isRecapturing||e&&Gt&&Oe)}onTrackMuted(){if(super.onTrackMuted(),mp(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<ho){setTimeout(()=>this.onTrackMuted(),ho);return}this._onMuteTimeoutId=setTimeout(()=>f(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((Ie||pe)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return f(this,null,function*(){if(We(Jr.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<ho){setTimeout(()=>this.onTrackEnded(),ho);return}this.emit("7"),this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return f(this,null,function*(){var r;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),(r=this._inputTrack)==null||r.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let t={useExactDeviceId:!0};if(e==="user"||e==="environment")t.facingMode=e;else{let s;(this.kind==="audio"?yield ht():yield It()).find(a=>a.deviceId===e)&&(s=e),t.deviceId=s}return this.capture(t).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),E.emit(C.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(s=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${s.message}`),this.emit("5",s),E.emit(C.LOCAL_TRACK_RECAPTURE,{track:this,error:s})})})}getRecoverCaptureDeviceId(){return f(this,null,function*(){let e=this instanceof Be;if(e&&this.facingMode)return this.facingMode;let{deviceId:t}=this;if(t){let r=(un.get(t)||0)+1;if(un.set(t,r),r>=3&&this.enableAutoSwitchWhenRecapturing){let s=e?(yield It()).find(n=>!un.has(n.deviceId)):(yield ht()).find(n=>!un.has(n.deviceId));s&&(this.log.warn(`${t} capture fail ${r} times, change new ${s.deviceId}`),t=s.deviceId)}}return t})}stopCapture(){var e;this.sourceTrack&&(this.sourceTrack.stop(),this.uninstallTrackEvent(this.sourceTrack)),(e=this.manager)==null||e.removeInput(this)}close(){super.close(),this.stopCapture()}};M([Te($.INIT,"ready",{ignoreError:!0,sync:!0})],Jr.prototype,"setStateToReady",1),M([Nt()],Jr.prototype,"capture",1),M([Te("ready","publish",{ignoreError:!0,success(){var t,r;this.room.localTracks.add(this),E.emit(C.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var n,a,c,l,u,h;if(!((((a=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:a.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let m=this.kind===p.AUDIO,g=this.stat.bytesSent>0;if(N[g?"addSuccessEvent":"addFailedEvent"]({key:m?503700:513702}),!m){let S=((l=(c=this.room)==null?void 0:c.videoCodec)==null?void 0:l.toUpperCase())||"H264",_={H264:513704,H265:513705,VP8:513706}[S];_&&N[g?"addSuccessEvent":"addFailedEvent"]({key:_})}g||(N.addEnum({key:m?503701:513703,value:Pr()}),se.uploadEvent({log:`stat-encode-failed-${this.kind}-${Lr()||Hi()}`,userId:this.userId}),this.log.warn(m?"encode failed":`${(h=(u=this.room)==null?void 0:u.videoCodec)==null?void 0:h.toUpperCase()} encode failed`),this.emit("6",this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"started",reason:"error",error:new v({message:`${m?"audio":"video"} encode failed`,code:m?A.AUDIO_ENCODE_FAILED:A.VIDEO_ENCODE_FAILED})}))}},5e3))},fail(e){let t="error";if(e.cause instanceof RTCError){let r=e.cause;r.message.includes("timeout")?t="timeout":r.code===A.API_CALL_ABORTED&&(t="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:t,error:e.cause||e})}}),mt(521714,!1)],Jr.prototype,"publish",1),M([Y(e=>function(){return f(this,null,function*(){let t=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:t,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),Te([],"ready",{sync:!0})],Jr.prototype,"unpublish",1);var Qt=Jr,un=new Map;E.on(C.SWITCH_DEVICE_SUCCESS,o=>{o.track.deviceId&&un.delete(o.track.deviceId)});var At=class o extends Qt{constructor(e){super(1,Xa);d(this,"mediaType",1);d(this,"volume",0);d(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});d(this,"playerMuted",!0);d(this,"pipeline");d(this,"earMonitorGainNode",new De);d(this,"_output",new De);d(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});d(this,"mixedAudioReferenceMap",new Map);this.manager=e,this.pipeline=new qo(e),this.pipeline.source.pipeTo(this.player.pipeline.volumeMeter),this.pipeline.gain.pipeTo(this.earMonitorGainNode).pipeTo(this._output),this.pipeline.gain.pipeTo(this.player.pipeline.volumeMeterAfter3A),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}get dbVolume(){return Gr.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}getInternalAudioLevelAfter3A(){if(this.pipeline.aec.node||this.pipeline.denoiser.node)return this.player.getInternalAudioLevelAfter3A()}setInputMediaStreamTrack(e){return f(this,null,function*(){let t=this.trackSettings||{};N.addEnum({key:501701,value:t.channelCount||0,useUV:!1}),N.addEnum({key:501702,value:t.sampleRate||0,useUV:!1}),N.addEnum({key:502700,value:0});let{sampleRate:r,channelCount:s}=t;this._log.info(`local audio track input ${JSON.stringify({sampleRate:r,channelCount:s})}`),this.pipeline.source.channelCount=s||1,this.pipeline.replaceSource(e),yield We(o.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:t,useExactDeviceId:r=!0,retryWhenExactFailed:s=!0}){return super.capture({video:!1,audio:!0,microphoneId:e,echoCancellation:this.profile.echoCancellation,autoGainControl:this.profile.autoGainControl,noiseSuppression:this.profile.noiseSuppression,sampleRate:this.profile.sampleRate,channelCount:this.profile.channelCount,useExactDeviceId:r,retryWhenExactFailed:s,customSource:t})}switchDevice(e){return f(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e)if(e===br){if(yield Jl(this.groupId,this.label))return}else return;try{this.log.info(`switchDevice audio to: ${e}`),this.sourceTrack&&this.sourceTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),E.emit(C.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(t){throw this.log.error(`switch microphone failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}}})}listenDeviceChange(){Pe&&!Pe.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&Pe.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),Ae(this.userId,{eventId:2003,param1:6,streamType:1});let t=yield ht();t[0]?this.recapture(t[0].deviceId):Pe.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(s){return f(this,arguments,function*({echoCancellation:e,noiseSuppression:t,autoGainControl:r}){let n=this.sourceTrack||this.mediaTrack;if(!n)return;let a=n.getConstraints(),c=!1;!T(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,a.echoCancellation=e,c=!0),!T(t)&&t!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=t,a.noiseSuppression=t,c=!0),!T(r)&&r!==this.profile.autoGainControl&&(this.profile.autoGainControl=r,a.autoGainControl=r,c=!0),c&&(ne||Oe?yield n.applyConstraints(a).catch(l=>this._log.warn("update3A failed: ",l)):this.deviceId&&(yield this.recapture(this.deviceId)))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&N.addEnum({key:502700,value:2})}setAudioVolume(e){super.setAudioVolume(0),Ie&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(Ee().createGain()),this._output.setNode(Ee().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}enableTrackAEC(e){if(this.sourceTrack&&!(Oe||Ie))return this.update3A({echoCancellation:e})}addDenoiser(e){var t;if(dt<=92&&((t=this.trackSettings)==null?void 0:t.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}N.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.enableTrackANS(!1)}mixAudioReference(e,t){if(this.mixedAudioReferenceMap.has(t))return;this.log.info(`mixAudioReference() => ${t}`);let r=an(e),s=new De,n=Ee().createGain();n.gain.value=1;let a=new De;s.pipeTo(a).pipeTo(this.pipeline.mixNode),s.setNode(r),a.setNode(n),this.mixedAudioReferenceMap.set(t,[s,a])}unMixAudioReference(e){let[t,r]=this.mixedAudioReferenceMap.get(e)||[];t&&(this.log.info(`unMixAudioReference() => ${e}`),t.deleteNode(),r==null||r.deleteNode(),this.mixedAudioReferenceMap.delete(e))}setAudioReferenceVolume(e,t){let[r,s]=this.mixedAudioReferenceMap.get(e)||[];s!=null&&s.node&&(s.node.gain.value=t/100,this.log.info(`setAudioReferenceVolume() => ${e} ${s.node.gain.value}`))}addAudioProcessor(e,t,r,s){this.pipeline.silentNode.setNode(r),this.pipeline.mixNode.setNode(t),this.pipeline.aec.setNode(e),this.enableTrackAEC(!1)}removeDenoiser(e){if(this.pipeline.denoiser.node===e)return this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0)}removeAudioProcessor(e,t,r,s){this.pipeline.aec.node===e&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}close(){this.mixedAudioReferenceMap.forEach(([e,t])=>{e.deleteNode(),t.deleteNode()}),this.mixedAudioReferenceMap.clear(),this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),Pe.off("audioInputAdded",this.handleMicrophoneAdded,this),Pe.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return f(this,null,function*(){try{yield We(o.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield ht()).find(s=>s.deviceId!==e);if(r)yield We(o.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((t,r)=>r?r({frame:t}):t,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var zi=class{constructor(i,e=!1){this.dataView=i;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,t=[],r=0;for(let n=i;n<=e;n++){let a=this.dataView.getInt8(n);switch(a){case 0:case 1:case 2:case 3:r===2&&(t.push(3),r=0),a==0?r++:r=0,t.push(a);break;default:r=0,t.push(a);break}}t.push(this.dataView.getInt8(this.dataView.byteLength-1));let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=s}removePreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,t=[],r=0;for(let n=i;n<=e;n++)switch(this.dataView.getInt8(n)){case 0:r++,t.push(this.dataView.getInt8(n));break;case 3:r!==2&&t.push(this.dataView.getInt8(n)),r=0;break;default:t.push(this.dataView.getInt8(n)),r=0;break}let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=s}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let i=6;for(let e=6;e<this.dataView.buffer.byteLength&&(i++,this.dataView.getUint8(e)===255);e++);return i}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let i=0,e=6;for(let s=6;s<this.dataView.buffer.byteLength;s++){let n=this.dataView.getUint8(s);if(e++,n===255)i+=255;else{i+=n;break}}let t=new ArrayBuffer(i),r=new DataView(t);for(let s=0;s<t.byteLength;s++,e++)r.setInt8(s,this.dataView.getInt8(e));return r}};var tc=class{constructor(){d(this,"_seiMessageList",[]);d(this,"_smallSeiMessageList",[]);d(this,"_seiPayloadType",243)}encodeSEINalu(i){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,s=[];s.push(0,0,0,1,6,this._seiPayloadType);for(let a=0;a<t;a++)s.push(255);s.push(r);let n=new DataView(i);return s.push(...new Uint8Array(n.buffer)),s.push(128),new zi(new DataView(new Uint8Array(s).buffer),!0)}sendSEI(i,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(i),e!=null&&e.small&&this._smallSeiMessageList.push(i)}isEmpty(){return!this._seiMessageList.length}getNaluCount(i){let e=0,t=0,r=new DataView(i);for(let s=0;s<i.byteLength;s++)switch(r.getUint8(s)){case 0:e++;break;case 1:(e===2||e===3)&&t++,e=0;break;default:e=0;break}return t}encode(i,e){let t=e?this._smallSeiMessageList:this._seiMessageList;if(t.length>0&&i.data.byteLength>0){let s=9-this.getNaluCount(i.data);if(s<=0)return 0;let n=t.splice(0,s).reverse().map(this.encodeSEINalu.bind(this)),a=n.reduce((m,g)=>m+g.dataView.byteLength,0),c=new ArrayBuffer(a+i.data.byteLength),l=new DataView(c),u=new DataView(i.data),h=0;for(let m=0;m<n.length;m++)for(let g=0;g<n[m].dataView.byteLength;g++)l.setInt8(h++,n[m].dataView.getInt8(g));for(let m=0;m<i.data.byteLength;m++)l.setInt8(h++,u.getInt8(m));return i.data=c,n.length}return 0}};var qr=class qr extends Qt{constructor(e,t=4){super(t,ot);d(this,"profile",D({},nr));d(this,"avoidCropping",!1);d(this,"_scaleResolutionDownBy");d(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});d(this,"small");d(this,"isNeedToSetBandwidth");d(this,"muteImage");d(this,"manager");d(this,"_seiCodec",new tc);this.manager=e;let r=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),this.setProfile(w(D({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",r),this.on("publish",r),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!mi||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get contentHint(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)||""}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return f(this,null,function*(){var t,r,s;if(te(e)){if(this.muteImage===e)return;yield(t=this.manager)==null?void 0:t.deleteWatermark("mute"),yield(r=this.manager)==null?void 0:r.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,We(qr.prototype,this,"setMute").call(this,!1)}else this.muteImage&&(yield(s=this.manager)==null?void 0:s.deleteWatermark("mute"),this.muteImage=void 0),We(qr.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:t,useExactDeviceId:r=!0,customSource:s,retryWhenExactFailed:n=!0}){return super.capture({audio:!1,video:!0,facingMode:t||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:r,retryWhenExactFailed:n,customSource:s})}setProfile(e){let t=this.fallbackProfile(e);t.bitrate&&(this.isNeedToSetBandwidth=t.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(t):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(w(D({},this.profile),{width:1920,height:1080})))}applyProfile(){return f(this,null,function*(){var a;if(!this.mediaTrack)return;let{width:e=0,height:t=0}=(this.sourceTrack||this.mediaTrack).getSettings(),r=e*t,s=this.settings,n=s.height!==this.profile.height||s.width!==this.profile.width||s.frameRate!==this.profile.frameRate;if(n&&(Je===16&&this.deviceId?yield this.recapture(this.deviceId):(yield(a=this.sourceTrack||this.mediaTrack)==null?void 0:a.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1})),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth){this.isNeedToSetBandwidth=!1;let{width:c=0,height:l=0}=(this.sourceTrack||this.mediaTrack).getSettings(),u=c*l;if(n&&u&&r&&u===r){this.log.warn("set bandwidth failed: resolution is not changed");return}return this.room.setBandWidth({bandwidth:this.profile.bitrate,type:p.VIDEO,videoType:p.BIG})}})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},t=this.sourceTrack||this.mediaTrack;return mi&&t&&Object.assign(e,t.getSettings()),e}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:Io(this.settings,this.profile)}isAllowed2k4k(e){var t;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((t=this.room.scheduleResult.trtcAutoConf)==null?void 0:t["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return f(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e))return;let t={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?t.facingMode=e:t.deviceId=e,this.sourceTrack&&this.sourceTrack.stop(),yield this.capture(t),E.emit(C.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(t){throw this.log.error(`switch camera failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}})}updateSmallConfig(e){var r,s;this._log.info(`update small stream config: ${JSON.stringify(e)}`);let t=!this.small;this.small=this.fallbackProfile(e,!0),(r=this.manager)==null||r.update(),t&&((s=this.room)==null||s.enableSmall(!0)),this.log.info("update small stream config success")}fallbackProfile(e,t=!1){let r=e.width>e.height,s=D({},e);return e.width*e.height<=160*120&&pe&&Qe&&(this.log.warn(`${t?"small ":""}resolution is ${e.width}*${e.height}, fallback to 240*180 for android chrome`),s.width=r?240:180,s.height=r?180:240,s.bitrate=Math.max(e.bitrate,150)),e.width*e.height>1280*720&&zd&&(s.width=r?1280:720,s.height=r?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),$s(_t,"14.3")&&jd(_t,"14.0",!0)&&this.on("7",()=>{let n=this.profile.width>this.profile.height;this.profile.width*this.profile.height>640*480?(this.profile.width=n?640:480,this.profile.height=n?480:640,this.log.warn("reduce the resolution to 480p on iOS 14.0 ~ 14.2")):this.profile.width*this.profile.height>640*360&&(this.profile.width=n?640:360,this.profile.height=n?360:640,this.log.warn("reduce the resolution to 360p on iOS 14.0 ~ 14.2"))}),!t&&this.avoidCropping&&(Qe||ne)&&!Yd()&&e.width*e.height<=640*360&&e.width/e.height===16/9&&(this._scaleResolutionDownBy=1280/e.width,e.width=1280,e.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),s}stopSmall(){var e,t;this.small&&(delete this.small,(e=this.manager)==null||e.update(),(t=this.room)==null||t.enableSmall(!1))}listenDeviceChange(){Pe&&!Pe.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&Pe.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),Ae(this.userId,{eventId:2003,param1:7,streamType:2});let t=yield It();t[0]?this.recapture(t[0].deviceId):Pe.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return f(this,null,function*(){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)})}encodeFrame(e,t){if(!this.manager)return e;let r=t?8:this.mediaType;return this.manager.encodePipeline.reduceRight((s,n)=>n?n({frame:s,mediaType:r}):s,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,t){return T(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,t)}close(){Pe.off("videoInputAdded",this.handleCameraAdded,this),Pe.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return f(this,null,function*(){try{yield We(qr.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield It()).find(s=>s.deviceId!==e);if(r)yield We(qr.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info(`setContentHint ${e}`),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}setRotation(e){this.manager&&(this.isScreen||T(e)||e!==this.rotation&&(this.rotation=e,this.manager.rotation=e))}};M([st(function(e){this.setContentHint(e.contentHint||"motion")})],qr.prototype,"capture",1);var Be=qr;var jl={};vi(jl,{REPORT_TYPE:()=>Ao,buildSSOPackage:()=>Pi,bytes2ms:()=>$h,calculateScaleResolutionDownNumber:()=>Io,convertObjectNumberToInt:()=>Ms,copyProperties:()=>Hh,deepClone:()=>Nr,deepCloneBasic:()=>Qn,deepMerge:()=>Bt,delay:()=>Li,fibonacci:()=>Dr,formatedTime:()=>Qh,getConstructorName:()=>_o,getContainerFromElement:()=>zh,getEnv:()=>Bh,getInternalVersion:()=>jh,getLoggerUrl:()=>wi,getMediaStreamTrackInfo:()=>ta,getMuteStateFromFlag:()=>xi,getNetworkType:()=>Dd,getNumNetworkType:()=>vr,getReconnectionTimeout:()=>Ut,getStringByteLength:()=>Ds,getTurnServer:()=>Xh,getUint32Version:()=>Zn,getValueType:()=>Re,getViewListFromView:()=>Eo,glog:()=>kd,ipv4ToUint32:()=>To,isArray:()=>Se,isAudioWorkletSupported:()=>qh,isBoolean:()=>de,isConstructor:()=>Mr,isEmpty:()=>go,isFunction:()=>ae,isLangChinese:()=>Vt,isMediaStreamTrack:()=>Wh,isNumber:()=>q,isObject:()=>pt,isOverseaSdkAppId:()=>ki,isPlainObject:()=>ze,isPortrait:()=>wd,isPromise:()=>lr,isRemoteTrack:()=>Jh,isRotate90Or270:()=>yt,isString:()=>te,isUndefined:()=>T,loadImage:()=>So,loadVideo:()=>Yh,ms2bytes:()=>Gh,ms2samples:()=>Od,normalizeUrl:()=>ea,performanceNow:()=>P,promiseAny:()=>Or,samples2ms:()=>Md,setNetworkType:()=>Yn,stringify:()=>Rt,stringifyIncludeValue:()=>vs,throttlePromise:()=>Kn});var aT=[-1,-1,1,-1,-1,1,1,1],cT=[0,0,1,0,0,1,1,1];var Ze=class extends ${constructor(e,t){super();this.context=e;d(this,"name");d(this,"input");d(this,"output");d(this,"texture");d(this,"ctx2d",null);d(this,"fbo");d(this,"width",0);d(this,"height",0);d(this,"x",0);d(this,"y",0);d(this,"program");d(this,"vertexShader");d(this,"fragmentShader");d(this,"totalFrames",0);d(this,"dropFrames",0);d(this,"matchInputSize",!0);d(this,"texCoordBuffer");d(this,"positionBuffer");d(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});d(this,"cost",0);d(this,"_canvas",null);d(this,"_image");d(this,"log");if(this.context.on("disconnect",this.close,this),this.name=t.name,this.log=t.logger,this.matchInputSize=t.matchInputSize!==!1,this.width=t.width||e.width,this.height=t.height||e.height,this._image=t.image,e instanceof Fe){e.ctx&&t.create2d&&(typeof OffscreenCanvas=="function"&&Je!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);return}try{let r=e.ctx;this.texCoordBuffer=this.createBuffer(cT),this.positionBuffer=this.createBuffer(aT),t.createTexture!==!1&&(this.texture=r.createTexture(),this.useTexture(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1)),t.useFbo&&(this.fbo=r.createFramebuffer(),this.useBufferFrame(),this.useTexture(),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,this.width,this.height,0,r.RGBA,r.UNSIGNED_BYTE,null),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,this.texture,0)),t.useDefaultProgram?this.program=e.defaultProgam:(t.vertexShaderSource||t.fragmentShaderSource)&&(this.vertexShader=t.vertexShaderSource?e.createShader(r.VERTEX_SHADER,t.vertexShaderSource):e.defaultVShader,this.fragmentShader=t.fragmentShaderSource?e.createShader(r.FRAGMENT_SHADER,t.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(r){this.context.destroy(new v({code:A.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${r.message||r}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let t=this.context.ctx,r=t.createFramebuffer();return t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),r}connect(e,...t){return e.addInput(this,...t),this.output=e,e}addInput(e,...t){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let t=Date.now();if(this.context instanceof we&&this.render(e)||this.context instanceof Fe&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-t,!0}render2d(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e=0){var t;(t=this.output)==null||t.update(e)}disconnect(...e){var t;(t=this.output)==null||t.removeInput(this,...e),delete this.output}removeInput(e,...t){delete this.input}close(){var e,t;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(t=this.input)==null||t.disconnect(),this.context instanceof we){let r=this.context.ctx;r.deleteBuffer(this.texCoordBuffer),r.deleteBuffer(this.positionBuffer),this.fbo&&r.deleteFramebuffer(this.fbo),this.texture&&r.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&r.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&r.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&r.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var e;this.useTextures((e=this.input)==null?void 0:e.texture)}useTextures(...e){let t=this.context.ctx;e.forEach((r,s)=>{r&&(t.activeTexture(t.TEXTURE0+s),t.bindTexture(t.TEXTURE_2D,r))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let t=this.context.ctx,r=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW),r}setTexBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.texCoordBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}setPosBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.positionBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}changeBufferData(e,t){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,e),r.bufferData(r.ARRAY_BUFFER,new Float32Array(t),r.STATIC_DRAW)}setAttributes(...e){let t=this.context.ctx;e.forEach((r,s)=>{t.enableVertexAttribArray(s),t.bindBuffer(t.ARRAY_BUFFER,r),t.vertexAttribPointer(s,2,t.FLOAT,!1,0,0)})}getVertexPoint(e,t){return[e/this.width*2-1,t/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,t){if(!(this.width===e&&this.height===t)){if(this.width=e,this.height=t,this._canvas&&(this._canvas.width=e,this._canvas.height=t),this.texture&&this.fbo){this.useTexture();let r=this.context.ctx;r.texImage2D(r.TEXTURE_2D,0,r.RGBA,e,t,0,r.RGBA,r.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,t)}}draw(e,t){this.setAttributes(e||this.positionBuffer,t||this.texCoordBuffer);let r=this.context.ctx;r.drawArrays(r.TRIANGLE_STRIP,0,4)}draw2d(e,t,r,s,n,a,c,l,u){let h=!T(a)&&!T(c)&&!T(l)&&!T(u);return this.ctx2d&&e?(e instanceof ImageData?h?this.ctx2d.putImageData(e,t,r,a,c,l,u):this.ctx2d.putImageData(e,t,r):(h?this.ctx2d.drawImage(e,a,c,l,u,t,r,s,n):this.ctx2d.drawImage(e,t,r,s,n),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close()),!0):!1}drawBackGround2d(e){this.ctx2d&&(this.ctx2d.save(),this.ctx2d.fillStyle=e,this.ctx2d.fillRect(0,0,this.width,this.height),this.ctx2d.restore())}getInfo(){var h;let{totalFrames:e,x:t,y:r,width:s,height:n,name:a,cost:c}=this,l=Date.now(),u=(e-this.lastInfo.totalFrames)/((l-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:s,height:n,timestamp:l,fps:u,name:a,cost:c},D({parent:(h=this.input)==null?void 0:h.getInfo()},this.lastInfo)}createTexture(e){let t=this.context.ctx,r=t.createTexture();return this.useTextures(r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),r}};M([Te($.INIT,"connected",{sync:!0})],Ze.prototype,"connect",1),M([Te("connected",$.INIT,{ignoreError:!0,sync:!0})],Ze.prototype,"disconnect",1),M([Te([],"closed",{sync:!0})],Ze.prototype,"close",1);var wu={};vi(wu,{Events:()=>ye,Inspect:()=>vt,LastSink:()=>jr,Sink:()=>W,Subscribe:()=>Xr,TimeoutError:()=>hn,audit:()=>GT,bindCallback:()=>vT,bindNodeCallback:()=>DT,buffer:()=>gT,bufferCount:()=>_T,bufferTime:()=>cE,call:()=>_p,catchError:()=>Du,combineLatest:()=>Tp,concat:()=>uT,concatMap:()=>eE,concatMapTo:()=>tE,count:()=>kT,create:()=>oe,debounce:()=>WT,debounceTime:()=>JT,defer:()=>Ep,delay:()=>dE,deliver:()=>j,dispose:()=>ic,elementAt:()=>qT,empty:()=>fn,every:()=>YT,exhaustMap:()=>oE,exhaustMapTo:()=>sE,filter:()=>Si,find:()=>jT,findIndex:()=>XT,first:()=>zT,fromAnimationFrame:()=>bT,fromArray:()=>ST,fromEvent:()=>me,fromEventPattern:()=>IT,fromFetch:()=>AT,fromIterable:()=>CT,fromPromise:()=>Ap,fromReadableStream:()=>yT,fromReader:()=>RT,groupBy:()=>nE,identity:()=>dT,ignoreElements:()=>PT,iif:()=>mT,inspect:()=>gp,interval:()=>tu,last:()=>QT,map:()=>_n,mapTo:()=>KT,max:()=>wT,merge:()=>Kl,mergeMap:()=>iE,mergeMapTo:()=>rE,min:()=>xT,never:()=>MT,nothing:()=>le,of:()=>ET,pairwise:()=>ZT,pipe:()=>ue,race:()=>eu,range:()=>NT,reduce:()=>iu,retry:()=>mE,scan:()=>vu,share:()=>Qi,shareReplay:()=>hT,skip:()=>UT,skipUntil:()=>BT,skipWhile:()=>ac,startWith:()=>mn,subject:()=>nt,subscribe:()=>be,sum:()=>LT,switchMap:()=>Yo,switchMapTo:()=>Qr,take:()=>Yi,takeLast:()=>VT,takeUntil:()=>He,takeWhile:()=>Cp,tap:()=>ku,throttle:()=>HT,throwError:()=>OT,timeInterval:()=>aE,timeout:()=>hE,timer:()=>pn,toPromise:()=>lE,toReadableStream:()=>uE,withLatestFrom:()=>fT,zip:()=>pT});function le(...o){}var _p=o=>o(),dT=o=>o;function ic(){this.dispose()}var gp=()=>typeof __FASTRX_DEVTOOLS__!="undefined",lT=1,vt=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(i){let e=new zl(i,this,this.streamId++);return ye.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},jr=class{constructor(){this.defers=new Set,this.disposed=!1}next(i){}complete(){this.dispose()}error(i){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=le,this.error=le,this.next=le,this.dispose=le,this.subscribe=le,this.doDefer()}subscribe(i){return i instanceof vt?i.subscribe(this):i(this),this}get bindSubscribe(){return i=>this.subscribe(i)}doDefer(){this.defers.forEach(_p),this.defers.clear()}defer(i){this.defers.add(i)}removeDefer(i){this.defers.delete(i)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},W=class extends jr{constructor(i){super(),this.sink=i,i.defer(this.bindDispose)}next(i){this.sink.next(i)}complete(){this.sink.complete()}error(i){this.sink.error(i)}},Xr=class extends jr{constructor(i,e=le,t=le,r=le){if(super(),this._next=e,this._error=t,this._complete=r,this.then=le,i instanceof vt){let s={toString:()=>"subscribe",id:0,source:i};this.defer(()=>{ye.defer(s,0)}),ye.create(s),ye.pipe(s),this.sourceId=s.id,this.subscribe(i),ye.subscribe({id:s.id,end:!0}),e==le?this._next=n=>ye.next(s,0,n):this.next=n=>{ye.next(s,0,n),e(n)},r==le?this._complete=()=>ye.complete(s,0):this.complete=()=>{this.dispose(),ye.complete(s,0),r()},t==le?this._error=n=>ye.complete(s,0,n):this.error=n=>{this.dispose(),ye.complete(s,0,n),t()}}else this.subscribe(i)}next(i){this._next(i)}complete(){this.dispose(),this._complete()}error(i){this.dispose(),this._error(i)}};function ue(o,...i){return i.reduce((e,t)=>t(e),o)}function oe(o,i,e){if(gp()){let t=Object.defineProperties(Object.setPrototypeOf(o,vt.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:i,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});ye.create(t);for(let r=0;r<e.length;r++){let s=e[r];typeof s=="function"&&s instanceof vt&&ye.addSource(t,s)}return t}return o}function j(o,i){return function(...e){return t=>{if(t instanceof vt){let r=oe(s=>{let n=new o(s,...e);n.sourceId=r.id,n.subscribe(t)},i,arguments);return r.source=t,ye.pipe(r),r}else return r=>t(new o(r,...e))}}}function fr(o,i){window.postMessage({source:"fastrx-devtools-backend",payload:{event:o,payload:i}})}var zl=class extends W{constructor(i,e,t){super(i),this.source=e,this.id=t,this.sourceId=i.sourceId,this.defer(()=>{ye.defer(this.source,this.id)})}next(i){ye.next(this.source,this.id,i),this.sink.next(i)}complete(){ye.complete(this.source,this.id),this.sink.complete()}error(i){ye.complete(this.source,this.id,i),this.sink.error(i)}},ye={addSource(o,i){fr("addSource",{id:o.id,name:o.toString(),source:{id:i.id,name:i.toString()}})},next(o,i,e){fr("next",{id:o.id,streamId:i,data:e&&e.toString()})},subscribe({id:o,end:i},e){fr("subscribe",{id:o,end:i,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(o,i,e){fr("complete",{id:o.id,streamId:i,err:e?e.toString():null})},defer(o,i){fr("defer",{id:o.id,streamId:i})},pipe(o){fr("pipe",{name:o.toString(),id:o.id,source:{id:o.source.id,name:o.source.toString()}})},update(o){fr("update",{id:o.id,name:o.toString()})},create(o){o.id||(o.id=lT++),fr("create",{name:o.toString(),id:o.id})}},hn=class extends Error{constructor(i){super(`timeout after ${i}ms`),this.timeout=i}};var rc=class extends jr{constructor(i){super(),this.source=i,this.sinks=new Set}add(i){i.defer(()=>this.remove(i)),this.sinks.add(i).size===1&&(this.reset(),this.subscribe(this.source))}remove(i){this.sinks.delete(i),this.sinks.size===0&&this.dispose()}next(i){this.sinks.forEach(e=>e.next(i))}complete(){this.sinks.forEach(i=>i.complete()),this.sinks.clear()}error(i){this.sinks.forEach(e=>e.error(i)),this.sinks.clear()}};function Qi(){return o=>{let i=new rc(o);if(o instanceof vt){let e=oe(t=>{i.add(t)},"share",arguments);return i.sourceId=e.id,e.source=o,ye.pipe(e),e}return oe(i.add.bind(i),"share",arguments)}}function Kl(...o){return oe(i=>{let e=new W(i),t=o.length;e.complete=()=>{--t===0&&i.complete()},o.forEach(e.bindSubscribe)},"merge",arguments)}function eu(...o){return oe(i=>{let e=new Map;o.forEach(t=>{let r=new W(i);e.set(t,r),r.complete=()=>{e.delete(t),e.size===0?i.complete():r.dispose()},r.next=s=>{e.delete(t),e.forEach(n=>n.dispose()),r.resetNext(),r.resetComplete(),r.next(s)}}),o.forEach(t=>e.get(t).subscribe(t))},"race",arguments)}function uT(...o){return oe(i=>{let e=0,t=o.length,r=new W(i);r.complete=()=>{e<t&&!r.disposed?(r.doDefer(),r.subscribe(o[e++])):i.complete()},r.complete()},"concat",arguments)}function hT(o){return i=>{let e=new rc(i),t=[];return e.next=function(r){t.push(r),t.length>o&&t.shift(),this.sinks.forEach(s=>s.next(r))},oe(r=>{r.defer(()=>e.remove(r)),t.forEach(s=>r.next(s)),e.add(r)},"shareReplay",arguments)}}function mT(o,i,e){return oe(t=>o()?i(t):e(t),"iif",arguments)}function Tp(...o){return oe(i=>{let e=o.length,t=e,r=e,s=new Array(e),n=()=>{--r===0&&i.complete()},a=(c,l)=>{let u=new W(i);u.next=h=>{--t===0?(u.next=m=>{s[l]=m,i.next(s)},u.next(h)):s[l]=h},u.complete=n,u.subscribe(c)};o.forEach(a)},"combineLatest",arguments)}function pT(...o){return oe(i=>{let e=o.length,t=e,r=new Array(e),s=()=>{--t===0&&i.complete()},n=(a,c)=>{let l=new W(i),u=[];r[c]=u,l.next=h=>{u.push(h),r.every(m=>m.length)&&i.next(r.map(m=>m.shift()))},l.complete=s,l.subscribe(a)};o.forEach(n)},"zip",arguments)}function mn(...o){return i=>oe((e,t=0,r=o.length)=>{for(;t<r&&!e.disposed;)e.next(o[t++]);e.disposed||e.subscribe(i)},"startWith",arguments)}var Ql=class extends W{constructor(i,...e){super(i);let t=new W(this.sink);t.next=r=>this.buffer=r,t.complete=le,t.subscribe(Tp(...e))}next(i){this.buffer&&this.sink.next([i,...this.buffer])}},fT=j(Ql,"withLatestFrom"),Yl=class extends W{constructor(i,e,t){super(i),this.bufferSize=e,this.startBufferEvery=t,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(i){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(i)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(i),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(i=>this.sink.next(i)),super.complete()}},_T=j(Yl,"bufferCount"),Zl=class extends W{constructor(i,e){super(i),this.buffer=[];let t=new W(i);t.next=r=>{i.next(this.buffer),this.buffer=[]},t.complete=le,t.subscribe(e)}next(i){this.buffer.push(i)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},gT=j(Zl,"buffer");var TT=function(o,i,e,t){function r(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function a(u){try{l(t.next(u))}catch(h){n(h)}}function c(u){try{l(t.throw(u))}catch(h){n(h)}}function l(u){u.done?s(u.value):r(u.value).then(a,c)}l((t=t.apply(o,i||[])).next())})};function nt(o){let i=arguments,e=Qi()(oe(t=>{e.next=r=>t.next(r),e.complete=()=>t.complete(),e.error=r=>t.error(r),o&&t.subscribe(o)},"subject",i));return e.next=le,e.complete=le,e.error=le,e}function Ep(o){return oe(i=>i.subscribe(o()),"defer",arguments)}var Sp=o=>i=>{setTimeout(()=>o(i))},Ip=o=>Sp(i=>{for(let e=0;!i.disposed&&e<o.length;e++)i.next(o[e]);i.complete()});function ET(...o){return oe(Ip(o),"of",arguments)}function ST(o){return oe(Ip(o),"fromArray",arguments)}function tu(o){return oe(i=>{let e=0,t=setInterval(()=>i.next(e++),o);return i.defer(()=>{clearInterval(t)}),"interval"},"interval",arguments)}function pn(o,i){return oe(e=>{let t=0,r=setTimeout(()=>{if(e.removeDefer(s),e.next(t++),i){let n=setInterval(()=>e.next(t++),i);e.defer(()=>{clearInterval(n)})}else e.complete()},o),s=()=>{clearTimeout(r)};e.defer(s)},"timer",arguments)}function oc(o,i){return e=>{let t=r=>e.next(r);e.defer(()=>i(t)),o(t)}}function IT(o,i){return oe(oc(o,i),"fromEventPattern",arguments)}function me(o,i){if("on"in o&&"off"in o)return oe(oc(e=>o.on(i,e),e=>o.off(i,e)),"fromEvent",arguments);if("addListener"in o&&"removeListener"in o)return oe(oc(e=>o.addListener(i,e),e=>o.removeListener(i,e)),"fromEvent",arguments);if("addEventListener"in o)return oe(oc(e=>o.addEventListener(i,e),e=>o.removeEventListener(i,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function Ap(o){return oe(i=>{o.then(i.next.bind(i),i.error.bind(i))},"fromPromise",arguments)}function AT(o,i){return oe(Ep(()=>Ap(fetch(o,i))),"fromFetch",arguments)}function CT(o){return oe(Sp(i=>{try{for(let e of o){if(i.disposed)return;i.next(e)}i.complete()}catch(e){i.error(e)}}),"fromIterable",arguments)}function RT(o){let i=e=>TT(this,void 0,void 0,function*(){if(e.disposed)return;let{done:t,value:r}=yield o.read();if(t){e.complete();return}else e.next(r),i(e)});return oe(e=>{i(e)},"fromReader",arguments)}function yT(o){return oe(i=>{let e=new AbortController,t=e.signal;i.defer(()=>e.abort("cancelled")),o.pipeTo(new WritableStream({write(r){i.next(r)},close(){i.complete()},abort(r){i.error(r)}}),{signal:t}).then(()=>i.complete(),r=>i.error(r))},"fromReadableStream",arguments)}function bT(){return oe(o=>{let i=requestAnimationFrame(function e(t){o.disposed||(o.next(t),i=requestAnimationFrame(e))});o.defer(()=>cancelAnimationFrame(i))},"fromAnimationFrame",arguments)}function NT(o,i){return oe((e,t=o,r=i+o)=>{for(;t<r&&!e.disposed;)e.next(t++);return e.complete(),"range"},"range",arguments)}function vT(o,i,...e){return oe(t=>{let r=e.concat(s=>(t.next(s),t.complete()));o.apply(i,r)},"bindCallback",arguments)}function DT(o,i,...e){return oe(t=>{let r=e.concat((s,n)=>s?t.error(s):(t.next(n),t.complete()));o.apply(i,r)},"bindNodeCallback",arguments)}function MT(){return oe(()=>{},"never",arguments)}function OT(o){return oe(i=>i.error(o),"throwError",arguments)}function fn(){return oe(o=>o.complete(),"empty",arguments)}var zr=class extends W{constructor(i,e,t){super(i),this.f=e;let r=()=>{this.sink.next(this.acc),this.sink.complete()};typeof t=="undefined"?this.next=s=>{this.acc=s,this.complete=r,this.resetNext()}:(this.acc=t,this.complete=r)}next(i){this.acc=this.f(this.acc,i)}},iu=j(zr,"reduce"),kT=o=>j(zr,"count")((i,e)=>o(e)?i+1:i,0),wT=()=>j(zr,"max")(Math.max),xT=()=>j(zr,"min")(Math.min),LT=()=>j(zr,"sum")((o,i)=>o+i,0);var ru=class extends W{constructor(i,e,t){super(i),this.filter=e,this.thisArg=t}next(i){this.filter.call(this.thisArg,i)&&this.sink.next(i)}},Si=j(ru,"filter"),ou=class extends W{next(i){}},PT=j(ou,"ignoreElements"),su=class extends W{constructor(i,e){super(i),this.count=e}next(i){this.sink.next(i),--this.count===0&&this.complete()}},Yi=j(su,"take"),nu=class extends W{constructor(i,e){super(i);let t=new W(i);t.next=()=>i.complete(),t.complete=ic,t.subscribe(e)}},He=j(nu,"takeUntil"),au=class extends W{constructor(i,e){super(i),this.f=e}next(i){this.f(i)?this.sink.next(i):this.complete()}},Cp=j(au,"takeWhile"),VT=o=>iu((i,e)=>(i.push(e),i.length>o&&i.shift(),i),[]),cu=class extends W{constructor(i,e){super(i),this.count=e}next(i){--this.count===0&&(this.next=super.next)}},UT=j(cu,"skip"),du=class extends W{constructor(i,e){super(i),i.next=le;let t=new W(i);t.next=()=>{t.dispose(),i.resetNext()},t.complete=ic,t.subscribe(e)}},BT=j(du,"skipUntil"),lu=class extends W{constructor(i,e){super(i),this.f=e}next(i){this.f(i)||(this.next=super.next,this.next(i))}},ac=j(lu,"skipWhile"),FT={leading:!0,trailing:!1},uu=class extends W{constructor(i,e,t){super(i),this.durationSelector=e,this.trailing=t}cacheValue(i){this.last=i,this.disposed&&this.throttle(i)}send(i){this.sink.next(i),this.throttle(i)}throttle(i){this.reset(),this.subscribe(this.durationSelector(i))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},sc=class extends W{constructor(i,e,t=FT){super(i),this.durationSelector=e,this.config=t,this._throttle=new uu(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(i){this._throttle.disposed&&this.config.leading?this._throttle.send(i):this._throttle.cacheValue(i)}complete(){this._throttle.throttle=le,this._throttle.complete(),super.complete()}},HT=j(sc,"throttle"),$T={leading:!1,trailing:!0},GT=o=>j(sc,"audit")(o,$T),hu=class extends W{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},nc=class extends W{constructor(i,e){super(i),this.durationSelector=e,this._debounce=new hu(this.sink),this._debounce.dispose()}next(i){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=i,this._debounce.subscribe(this.durationSelector(i))}complete(){this._debounce.complete(),super.complete()}},WT=j(nc,"debounce"),JT=o=>j(nc,"debounceTime")(i=>pn(o)),mu=class extends W{constructor(i,e,t){super(i),this.count=e,this.defaultValue=t}next(i){this.count--===0&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("not enough elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},qT=j(mu,"elementAt"),jT=o=>i=>Yi(1)(ac(e=>!o(e))(i)),pu=class extends W{constructor(i,e){super(i),this.f=e,this.i=0}next(i){this.f(i)?(this.sink.next(this.i++),this.complete()):++this.i}},XT=j(pu,"findIndex"),fu=class extends W{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},zT=j(fu,"first"),_u=class extends W{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},QT=j(_u,"last"),gu=class extends W{constructor(i,e){super(i),this.predicate=e,this.index=0}next(i){this.predicate(i,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){if(this.result===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.result);super.complete()}},YT=j(gu,"every");var Tu=class extends W{constructor(i,e,t){super(i),this.f=e,typeof t=="undefined"?this.next=r=>{this.acc=r,this.resetNext(),this.sink.next(this.acc)}:this.acc=t}next(i){this.sink.next(this.acc=this.f(this.acc,i))}},vu=j(Tu,"scan"),Eu=class extends W{constructor(){super(...arguments),this.hasLast=!1}next(i){this.hasLast?this.sink.next([this.last,i]):this.hasLast=!0,this.last=i}},ZT=j(Eu,"pairwise"),cc=class extends W{constructor(i,e,t){super(i),this.mapper=e,this.thisArg=t}next(i){super.next(this.mapper.call(this.thisArg,i))}},_n=j(cc,"map"),KT=o=>j(cc,"mapTo")(i=>o),zo=class extends W{constructor(i,e,t){super(i),this.data=e,this.context=t}next(i){let e=this.context.combineResults;e?this.sink.next(e(this.data,i)):this.sink.next(i)}tryComplete(){this.context.resetComplete(),this.dispose()}},Qo=class extends W{constructor(i,e,t){super(i),this.makeSource=e,this.combineResults=t,this.index=0}subInner(i,e){let t=this.currentSink=new e(this.sink,i,this);this.complete=this.tryComplete,t.complete=t.tryComplete,t.subscribe(this.makeSource(i,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},dc=class extends zo{},lc=class extends Qo{next(i){this.subInner(i,dc),this.next=e=>{this.currentSink.dispose(),this.subInner(e,dc)}}},Yo=j(lc,"switchMap");function pc(o){return(i,e)=>o(()=>i,e)}var Qr=pc(j(lc,"switchMapTo")),Su=class extends zo{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},uc=class extends Qo{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(i){this.next2(i),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),Su),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},eE=j(uc,"concatMap"),tE=pc(j(uc,"concatMapTo")),Iu=class extends zo{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},hc=class extends Qo{constructor(){super(...arguments),this.inners=new Set}next(i){this.subInner(i,Iu),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(i=>i.resetComplete()):this.dispose()}},iE=j(hc,"mergeMap"),rE=pc(j(hc,"mergeMapTo")),Au=class extends zo{dispose(){this.context.resetNext(),super.dispose()}},mc=class extends Qo{next(i){this.next=le,this.subInner(i,Au)}},oE=j(mc,"exhaustMap"),sE=pc(j(mc,"exhaustMapTo")),Cu=class extends W{constructor(i,e){super(i),this.f=e,this.groups=new Map}next(i){let e=this.f(i),t=this.groups.get(e);typeof t=="undefined"&&(t=nt(),t.key=e,this.groups.set(e,t),super.next(t)),t.next(i)}complete(){this.groups.forEach(i=>i.complete()),super.complete()}error(i){this.groups.forEach(e=>e.error(i)),super.error(i)}},nE=j(Cu,"groupBy"),Ru=class extends W{constructor(){super(...arguments),this.start=new Date}next(i){this.sink.next({value:i,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},aE=j(Ru,"timeInterval"),yu=class extends W{constructor(i,e){super(i),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(i){this.buffer.push(i)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},cE=j(yu,"bufferTime"),bu=class extends W{constructor(i,e){super(i),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(i){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:t,data:r}=e;super.next(r),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(t))}},i)}next(i){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:i})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},dE=j(bu,"delay"),Nu=class extends W{constructor(i,e){super(i),this.selector=e}error(i){this.dispose(),this.selector(i)(this.sink)}},Du=j(Nu,"catchError");var lE=()=>o=>new Promise((i,e)=>{let t;new Xr(o,r=>t=r,e,()=>i(t))}),uE=()=>o=>{let i;return new ReadableStream({start(e){i=new Xr(o,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){i.dispose()}})},be=(o=le,i=le,e=le)=>t=>new Xr(t,o,i,e),Mu=class extends W{constructor(i,e){super(i),e instanceof Function?this.next=t=>{e(t),i.next(t)}:(e.next&&(this.next=t=>{e.next(t),i.next(t)}),e.complete&&(this.complete=()=>{e.complete(),i.complete()}),e.error&&(this.error=t=>{e.error(t),i.error(t)}))}},ku=j(Mu,"tap"),Ou=class extends W{constructor(i,e){super(i),this.timeout=e,this.id=setTimeout(()=>this.error(new hn(this.timeout)),this.timeout)}next(i){super.next(i),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},hE=j(Ou,"timeout"),mE=(o=1/0)=>i=>{if(i instanceof vt){let e=oe(t=>{let r=o,s=new W(t);s.error=n=>{r-- >0?s.subscribe(i):t.error(n)},s.sourceId=e.id,s.subscribe(i)},"retry",[o]);return e.source=i,ye.pipe(e),e}else return e=>{let t=o,r=new W(e);r.error=s=>{t-- >0?i(r):e.error(s)},i(r)}};var pE=ue(tu(250),_n(()=>performance.now()),Qi());var Rp=o=>i=>{let e=performance.now();ue(pE,ac(t=>t-e<o),Yi(1))(i)};var _E=[0,1,1,1,0,0,1,0],Yr=class extends Ze{constructor(e,t){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},t));d(this,"_intervalId",0);d(this,"_sequence",0);d(this,"checkGLError",!1);d(this,"checkVisibilityChange");e instanceof Fe?this.ctx2d=e.ctx||null:e.available&&(t!=null&&t.mirrorUpAndDown)&&this.setTexBuffer(_E)}start(e){this.log.info(`${this.name} start render ${e} fps`),re.clearTask(this._intervalId),this._intervalId=re.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(re.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof we){let r=this.context.ctx.getError();r&&this.context.destroy(new v({code:A.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${r}`}))}},{fps:this.context.frameRate})}render(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}addInput(e,...t){super.addInput(e,...t),this.start(this.context.frameRate)}update(e=0){this._intervalId&&(re.clearTask(this._intervalId),this._intervalId=0,e===1&&(this.log.info(`${this.name} use requestVideoFrameCallback`),this.checkVisibilityChange=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",this.checkVisibilityChange))},document.addEventListener("visibilitychange",this.checkVisibilityChange))),this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),re.clearTask(this._intervalId)}resize(e,t){super.resize(e,t),this.context.setSize(e,t)}close(){super.close(),re.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},Zo=class extends Yr{constructor(e,t){super(e,t);d(this,"_videoTrack");d(this,"_muteOb");d(this,"_closedOb",me(this,"closed"));d(this,"_subscription");d(this,"_canvasContainer");Number(Bi)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=me(this._videoTrack,"mute"),ue(me(this._videoTrack,"ended"),He(this._closedOb),be(()=>{this.context.destroy(new v({code:A.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=ue(this._muteOb,He(this._closedOb),Qr(Rp(5e3)),Si(()=>{var e;return!!((e=this._videoTrack)!=null&&e.muted)&&!document.hidden}),be(()=>{this.context.destroy(new v({code:A.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var e;(e=this._subscription)==null||e.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(e){return this.putCanvasIntoDom(),super.render(e)}render2d(e){return this.putCanvasIntoDom(),super.render2d(e)}close(){var e,t;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(t=this._canvasContainer)==null||t.remove()}},fc=class extends Zo{render(i){var e;return!!((e=this.input)!=null&&e.requestFrame(i))}};var _c=class extends Zo{constructor(e,t,r){super(e,{name:"smallDestination",logger:r});this.resolution=t}resize(e,t){let r,s=e*t,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${t} small res: ${this.resolution.width}*${this.resolution.height} `),s>n?r=s/n:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${t} small: ${this.resolution.width} * ${this.resolution.height}`),r=s/(160*120)),super.resize(e/Math.sqrt(r),t/Math.sqrt(r))}};var gn=class extends Ze{constructor(e,t){super(e,D({name:"imageSource"},t));d(this,"_lastImage");d(this,"_totalFrames",0);d(this,"_autoResize",!1);d(this,"_canvasRendered");d(this,"_videoCallbackId",0);d(this,"waitingFirstFrame",!0);d(this,"shouldUpdate",!0);this._autoResize=(t==null?void 0:t.autoResize)!==!1,Je===16&&(this._canvasRendered=nt(),ue(this._canvasRendered,mn(this._image),Yo(r=>r instanceof HTMLCanvasElement?me(r,"rendered"):fn()),He(me(this,"closed")),be(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;let e=this.image;this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),$r()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((t,r)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=r.presentedFrames,this.update(1))}))}_render(e,t){var a;let{width:r,height:s}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{videoWidth:r,videoHeight:s}=n,!r||!s)return!1;n.width=r,n.height=s}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:r,height:s}=n,n!==this._lastImage)this._lastImage=n;else if(r===this.width&&s===this.height)return!0}else n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas?({width:r,height:s}=n,this._lastImage=n):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:r,displayHeight:s}=n,(a=this._lastImage)==null||a.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===r&&this.height===s&&this.totalFrames){if(t){this.useTexture();let c=this.context.ctx;c.texSubImage2D(c.TEXTURE_2D,0,0,0,c.RGBA,c.UNSIGNED_BYTE,n)}}else{if(t){this.useTexture();let c=this.context.ctx;c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,n)}this.resize(r,s)}return!0}get image(){return this._image}set image(e){var t;(t=this._canvasRendered)==null||t.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},Tn=class extends gn{constructor(e,t,r){super(e,r);this._player=t;this.name="videoPlayerSource",ue(me(this._player,he.PLAYER_STATE_CHANGED),He(me(this,"closed")),Si(({state:s})=>s==="PLAYING"),be(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},Dt=class extends Tn{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(i,e,t){super(i,new ot({id:t.name,track:e,muted:!0,container:null,objectFit:"contain",log:t.logger}),t),this.name="videoTrackSource",this._player.play()}replaceTrack(i){this.waitingFirstFrame=!0,this._player.setTrack(i),this._player.play()}close(){super.close(),this._player.stop()}},gc=class extends Ze{constructor(e,t,r){super(e,w(D({name:"textSource"},r),{create2d:!0}));d(this,"hasChange",!0);d(this,"content","");this.ctx2d.textBaseline="top",this.content=t.content||"",t.font&&(this.font=t.font),t.color&&(this.color=t.color)}set font(e){this.ctx2d&&(this.ctx2d.font=e,this.hasChange=!0)}get font(){var e;return((e=this.ctx2d)==null?void 0:e.font)||""}set color(e){this.ctx2d&&(this.ctx2d.fillStyle=e,this.hasChange=!0)}get color(){var e;return((e=this.ctx2d)==null?void 0:e.fillStyle)||""}render2d(e){return this.ctx2d&&this.hasChange?(this.ctx2d.clearRect(0,0,this.width,this.height),this.drawMultilineText(0,0),this.hasChange=!1,!0):!1}render(e){return!1}resize(e,t){if(!this.ctx2d)return;let{color:r,font:s}=this;super.resize(e,t),this.color=r,this.font=s}drawMultilineText(e=0,t=0,r=1.2){if(!this.ctx2d)return;let s=this.ctx2d.measureText(this.content);t+=s.fontBoundingBoxAscent||s.actualBoundingBoxAscent||0;let n=this.font.match(/(\d+)px/),c=(n?parseInt(n[1],10):16)*r,l=this.content.split(`
34
- `);for(let u=0;u<l.length;u++)this.ctx2d.fillText(l[u],e,t+u*c)}};var TE=`
31
+ `,r.onclick=this.onQuestionClick.bind(this);let o=document.createElement("div");o.className=Fm,o.innerText=`${vr()?"\u8BE6\u60C5 >":"Detail >"}`,o.onclick=this.onCollapseClick.bind(this);let s=t.content.firstChild,n=s.querySelector(`.${Dd}`);return n.appendChild(o),n.appendChild(r),n.appendChild(e),s}addDiaLog(){Hm()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${sn}`).onclick=t=>t.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",$.info("show autoplay dialog"),je.uploadEvent({log:nS}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){$.warn("confirm clicked, try resume stream"),V.emit(F.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let t=this._dialogNode.querySelector(`.${ig}`);t.style.visibility=`${this._showDetail?"hidden":"visible"}`,t.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||je.uploadEvent({log:aS}),this._isCollapseClicked=!0}onQuestionClick(){window.open(ag,"_blank"),this._isQuestionClicked||je.uploadEvent({log:cS}),this._isQuestionClicked=!0}},cg=$m;var zt=class extends ti{constructor(e){super(e,O.VIDEO);l(this,"stat",{});l(this,"_calculateTimeout",-1);l(this,"viewMirror",!1);l(this,"objectFit");l(this,"container");l(this,"canvas");this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,M(e.viewMirror)||(this.viewMirror=e.viewMirror),M(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}get isPlaying(){var e;return this._state!=="PLAYING"||this.element&&this.element.paused?!1:((e=this.track)==null?void 0:e.readyState)==="live"&&!this.track.muted}initializeElement(){var r;let e=document.createElement(O.VIDEO);this.track&&this.mode!==2&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id",`video_${this.id}`),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,(r=this.container)==null||r.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width: 100%; height: 100%; object-fit: ${this.objectFit};background-color: black;`;return this.viewMirror&&(e+="transform: scaleX(-1);"),e}setContainer(e){var r;this.container=e,this.track&&this.elementToRender&&((r=this.container)==null||r.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(O.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(O.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){var r;return e.type===O.MUTE&&((r=this.stat)!=null&&r.fps)&&(this.stat.fps=0),super.handleTrackEvent(e)}handleElementEvent(e){var o,s;if(this.mode===2)return;super.handleElementEvent(e);let r=e.type;if(r===O.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(o=this.container)==null?void 0:o.id}`),this.container&&this.container!==document.getElementById(this.container.id)&&(this._pausedRetryCount=Fo,this._log.info(`view container ${(s=this.container)==null?void 0:s.id} is recreated`)),this._pausedRetryCount>0&&!Hm()&&(this._log.info(`[${Fo-this._pausedRetryCount+1}/${Fo}] ${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let n=this.element.style.transform;r===O.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=n.replace("scaleX(-1)",""):r===O.LEAVE_PICTURE_IN_PICTURE&&!n.includes("scaleX")&&(this.element.style.transform=`${n} scaleX(-1)`)}}setCanvas(e,r=1){var o,s,n,a;this.canvas!==e&&((o=this.canvas)==null||o.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?r:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((s=this.element)==null||s.remove(),(n=this.container)==null||n.appendChild(e)):this.element&&((a=this.container)==null||a.appendChild(this.element)))}setAttr(e){let r=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);r.style=Object.assign({width:"100%",height:"100%"},r.style),super.setAttr(r)}get mirror(){return this.viewMirror}setRect(e,r){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${r}px`)}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit=`${e}`),this.objectFit=e}setPoster(e){this.element&&(this.element.poster=e)}stop(e=0){var r;super.stop(e),(r=this.canvas)==null||r.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(tt.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender)))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(Ci()&&this.element&&this._calculateTimeout<0){let e=0,r=null,o=(s,n)=>{this.stat.width=n.width,this.stat.height=n.height,r&&(this.stat.fps=Math.round((n.presentedFrames-r.presentedFrames)/(s-e)*1e3)),e=s,r=n,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var a;return(a=this.element)==null?void 0:a.requestVideoFrameCallback(o)},2e3))};this.element.requestVideoFrameCallback(o)}}catch(e){this._log.warn("init stat failed",e)}}};function wi(i,t){return y(this,null,function*(){if(!i.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield i.audioWorklet.addModule(t),$.info("worklet addModule success")}catch(e){throw $.info(`worklet addModule catch error. ${e.message}`),e}})}var Da;typeof AudioContext!="undefined"?Da=AudioContext:typeof webkitAudioContext!="undefined"?Da=webkitAudioContext:typeof mozAudioContext!="undefined"&&(Da=mozAudioContext);var xr,dg=-1,Od=0;ug();function ug(){try{if(xr)return;xr=new Da({sampleRate:48e3}),xr.onstatechange=()=>{$.info(`context state: ${xr.state}${xr.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),nn()},clearTimeout(dg)}catch(i){$.error(`initAudioContext failed: ${i} typeof AudioContextClass: ${typeof Da}`),dg=setTimeout(ug,1e3)}}var nn=()=>{xr.state==="suspended"?(Od=_e(),an(),document.addEventListener("click",nn)):xr.state==="interrupted"?an():(Od&&(z.addNumber({key:507800,value:_e()-Od,split:[0,500,1e3,2e3,3e3,4e3,5e3,1e4,3e4],max:6e4}),Od=0),document.removeEventListener("visibilitychange",nn),document.removeEventListener("click",nn))},Wm=0,Gm=-1;function an(){return new Promise((i,t)=>{if(xr.state==="running")return i();Date.now()-Wm<1e3?(clearTimeout(Gm),Gm=setTimeout(()=>{Wm=Date.now(),xr.resume().then(i,t)},1e3)):(clearTimeout(Gm),Wm=Date.now(),xr.resume().then(i,t))}).catch(i=>{$.warn(`context resume failed: ${i}`),document.addEventListener("visibilitychange",nn)})}document.addEventListener("click",nn);var Xe=i=>xr;var gt=class{constructor(t){this.name=t;l(this,"node");l(this,"node2");l(this,"pre",new Set);l(this,"next",new Set);l(this,"context");l(this,"connectedNodes",new Set);l(this,"nextInputChannelMap",new Map);l(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(t){this._channelCount=t,this.setChannelCount(this.node,t),this.setChannelCount(this.node2,t),this.next.forEach(e=>e.channelCount=t)}setChannelCount(t,e){!t||t instanceof ScriptProcessorNode||(t.channelCountMode="explicit",t.channelCount=e||this.channelCount||1)}setContext(t){this.context=t,this.node&&t.addMixWeight()}removeContext(){var t;this.node&&((t=this.context)==null||t.reduceMixWeight()),delete this.context}replaceNode(t){var e;if(t!==this.node)try{this.node?this._disconnect():(e=this.context)==null||e.addMixWeight(),this.node=t,this.setChannelCount(this.node),this.preNodeReconnect(),this.reconnect()}catch(r){$.error(r)}}setNode(t,e){var r;if(!this.node)try{(r=this.context)==null||r.addMixWeight(),this.node=t,this.setChannelCount(this.node),e&&(this.node2=e,this.setChannelCount(this.node2)),this.preNodeReconnect(),this.reconnect(),z.addSuccessEvent({key:502701})}catch(o){$.error(o),z.addFailedEvent({key:502701,error:o})}}deleteNode(){var t;if(this.node)try{this._disconnect(),delete this.node,delete this.node2,(t=this.context)==null||t.reduceMixWeight(),this.preNodeReconnect(),z.addSuccessEvent({key:502702})}catch(e){$.error(e),z.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(t=>{t.node?t.reconnect():t.preNodeReconnect()})}connectNext(t){this.next.forEach(e=>{let r=this.nextInputChannelMap.get(e);t._connect(e.node,r)||e.connectNext(t)})}_connect(t,e=0){return!this.node||!t?!1:((this.node2||this.node).connect(t,0,e),this.connectedNodes.add(t),!0)}_disconnect(){this.connectedNodes.forEach(t=>{var e;return(e=this.node2||this.node)==null?void 0:e.disconnect(t)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(t,e=0){return this.next.add(t),t.pre.add(this),this.nextInputChannelMap.set(t,e),t}},xd=class extends gt{constructor(e=256){super();this.fftSize=e;l(this,"dataArray",new Uint8Array(0))}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let e=this.getByteTimeDomainData(),r=1,o=0,s=0,n=`M${o},${s}`;for(let a=0;a<e.length;a++)s=e[a]/128*100/2,n+=`L${o},${s}`,o+=r;return n}},Ma=class{constructor(){l(this,"source",new gt);l(this,"gain",new gt);l(this,"destination",new gt)}get volume(){var t;return((t=this.gain.node)==null?void 0:t.gain.value)||1}setVolume(t){if(t===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(Xe().createGain()),this.gain.node.gain.value=t}replaceSource(t){this.source.replaceNode(Oa(t))}get track(){var t;return(t=this.stream)==null?void 0:t.getAudioTracks()[0]}get stream(){var t;return(t=this.destination.node)==null?void 0:t.stream}},cn=class extends Ma{constructor(e){super();this.context=e;l(this,"aec",new gt("aec"));l(this,"mixNode",new gt("mixNode"));l(this,"silentNode",new gt("silentNode"));l(this,"denoiser",new gt("denoiser"));l(this,"voiceChanger",new gt("voiceChanger"));this.source.pipeTo(this.aec).pipeTo(this.denoiser).pipeTo(this.voiceChanger).pipeTo(this.gain).pipeTo(this.destination),this.silentNode.pipeTo(this.mixNode).pipeTo(this.aec,1)}connect(){this.context.inputs.has(this)||(this.destination.setNode(this.context.destination),this.source.setContext(this.context),this.aec.setContext(this.context),this.silentNode.setContext(this.context),this.mixNode.setContext(this.context),this.denoiser.setContext(this.context),this.voiceChanger.setContext(this.context),this.gain.setContext(this.context),this.context.inputs.add(this))}disconnect(){this.context.inputs.has(this)&&(this.destination.deleteNode(),this.source.removeContext(),this.aec.removeContext(),this.silentNode.removeContext(),this.mixNode.removeContext(),this.denoiser.removeContext(),this.voiceChanger.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.aec.deleteNode(),this.silentNode.deleteNode(),this.mixNode.deleteNode(),this.denoiser.deleteNode(),this.voiceChanger.deleteNode(),this.source.deleteNode(),this.disconnect()}setVolume(e){if(e===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.context.audioContext.createGain()),this.gain.node.gain.value=e}},kd=class{constructor(){l(this,"audioContext",Xe("audio-mixer"));l(this,"destination",this.audioContext.createMediaStreamDestination());l(this,"inputs",new Set);l(this,"mixWeight",0);this.destination.channelCount=1}addMixWeight(t=1){this.mixWeight+=t,this.mixWeight-1===t+1>>1&&this.mixOnChange()}reduceMixWeight(t=1){this.addMixWeight(-t)}close(){this.inputs.forEach(t=>t.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},lg=new WeakMap;function Oa(i){let t=lg.get(i);if(t)return t;let e=Xe();if(i instanceof HTMLAudioElement)t=e.createMediaElementSource(i);else if(i instanceof MediaStreamTrack)t=e.createMediaStreamSource(new MediaStream([i]));else return i;return lg.set(i,t),t}var or=class or{constructor(t){l(this,"_volume",0);l(this,"_volumeDb",0);l(this,"_log");l(this,"_scriptProcessorNode",null);l(this,"_audioWorkletNode",null);l(this,"_interval",200);l(this,"ready",this.preload());let{log:e}=t;this._log=e,V.on(F.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-or.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!or.workletReady){let t='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,s){t=t[0],s=s[0];if(t||s){if(this.isStop)return!1;var i=s&&s[0]?s[0].length:0,h=this.cache.length,a=(i<h?(s[0].set(this.cache.slice(0,i)),this.cache=this.cache.slice(i)):this.unmute&&s[0].set(t[0]),(i<h?s:t)[0]);if(a){let e=0;for(let t=0;t<a.length;++t)e=Math.max(Math.abs(a[t]),e);s=a.reduce((t,e)=>t+e*e,0)/a.length;this.volume=e,this.tick-=a.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,volumeDb:Math.max(10*Math.log10(s)+100,0)/100,cacheLen:h,outputLen:i}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';or.workletReady=wi(or.audioContext,URL.createObjectURL(new Blob([t],{type:"application/javascript"})))}return or.workletReady.then(()=>this.initAudioWorklet()).catch(t=>(this._log.error(`volumeMeter preload error: ${t}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(or.audioContext,"volume-meter");let t=!1;this._audioWorkletNode.port.onmessage=e=>{or.lastMessageTime=Date.now(),this._volume=e.data.volume||0,this._volumeDb=e.data.volumeDb||0,!t&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),t=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(t){this._log.error(`volumeMeter init audio worklet error: ${t}`),je.logFailedEvent({userId:this._log.userId,eventType:hi.LOAD_WORKLET,error:t}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=Xe("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=t=>{or.lastMessageTime=Date.now();let e=t.inputBuffer.getChannelData(0),r=0;for(let o=0;o<e.length;++o)r+=e[o]*e[o];this._volume=Math.sqrt(r/e.length)||0}}catch(t){this._log.error(`volumeMeter init script processor error: ${t}`)}}destroy(){this._scriptProcessorNode&&(this._scriptProcessorNode.onaudioprocess=null),this._audioWorkletNode&&(this._audioWorkletNode.port.postMessage({name:"stop"}),this._audioWorkletNode.port.onmessage=null),this._audioWorkletNode=null,this._scriptProcessorNode=null,V.off(F.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}getVolumeDb(){return Math.floor(this._volumeDb*100)}handleAudioLevelInterval(t){var r;let{interval:e}=t;this._interval=e,(r=this._audioWorkletNode)==null||r.port.postMessage({name:"setIntervalTime",intervalTime:e})}};l(or,"lastMessageTime",0),l(or,"audioContext",Xe("volume-meter")),l(or,"workletReady");var Pd=or,xa=class extends gt{constructor(e){super();l(this,"_volumeMeter");this._volumeMeter=new Pd(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return y(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}getVolumeDb(){return this._volumeMeter.getVolumeDb()}write(e){if(this.node){let r=e.allocationSize({planeIndex:0}),o=new Float32Array(r>>2);e.copyTo(o,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:o},[o.buffer]),e.close()}}},Ld=Pd;var fg=Ki(so(),1);var pg=i=>t=>t.deviceId===i;var ka=class{constructor(t,e="Input"){l(this,"kind");l(this,"type");l(this,"devices",[]);this.kind=t,this.type=e}update(t,e){let r=t.filter(o=>o.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&un(this.devices[0])){this.devices=r;return}e&&(r.forEach(o=>{if(o.deviceId&&!this.devices.find(pg(o.deviceId))){let s=`${this.kind}${this.type}Added`;$.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}}),this.devices.forEach(o=>{if(o.deviceId&&!r.find(pg(o.deviceId))){let s=`${this.kind}${this.type}Removed`;$.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}})),this.devices=r}hasDevice(t){return!!this.devices.find(e=>e.deviceId===t)}},jm=class extends fg.EventEmitter{constructor(){super();l(this,"audioInputs",new ka(O.AUDIO));l(this,"videoInputs",new ka(O.VIDEO));l(this,"audioOutputs",new ka(O.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||ht.run("interval",()=>{this.update()},{delay:1e4}))}init(){dn().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return y(this,arguments,function*(e=0){let r=yield dn(e);return this.audioInputs.update(r,this),this.videoInputs.update(r,this),this.audioOutputs.update(r,this),this})}},At=Fn||ws?null:new jm;function un(i){return i.deviceId===i.groupId&&i.groupId===""}function dn(){return y(this,arguments,function*(i=0){if(vi()||!Rd())return[];let t=yield navigator.mediaDevices.enumerateDevices();if(i!==0){let e={audio:!1,video:!1};if(t.forEach(r=>{un(r)&&(r.kind===O.AUDIO_INPUT?e.audio=!0:r.kind===O.VIDEO_INPUT&&(e.video=!0))}),i===2&&(e.audio=!1),i===1&&(e.video=!1),e.audio||e.video){let r;try{r=yield navigator.mediaDevices.getUserMedia(e),e.audio&&an()}catch(o){$.debug("capture before getDevices failed: ",o)}t=yield navigator.mediaDevices.enumerateDevices(),r==null||r.getTracks().forEach(o=>o.stop())}}return t.map((e,r)=>{let o={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${r}`};return e.deviceId.length>0&&qm.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(o.getCapabilities=()=>e.getCapabilities()),o})})}function Zt(i=!1){return At.update(i?1:0).then(t=>t.audioInputs.devices)}function sr(i=!1){return At.update(i?2:0).then(t=>t.videoInputs.devices)}var hg=!1;function gg(){return y(this,null,function*(){try{hg||(hg=!0,$.info(`speakers:${(yield uo()).map(i=>` ${i.deviceId.slice(0,8)}: ${i.label}`)}`))}catch(i){}})}function uo(i=!1){return y(this,null,function*(){return(lt||_t)&&(i=!1),At.update(i?1:0).then(t=>t.audioOutputs.devices)})}var qm=new Set;function Eg(i){if(i instanceof CanvasCaptureMediaStreamTrack||!(i instanceof MediaStreamTrack))return!1;let t=i.label.toLocaleLowerCase();if(t.includes("camera")||t.includes("webcam"))return!0;let r=`${((i==null?void 0:i.getSettings())||{}).deviceId}_${O.VIDEO_INPUT}`;return!!qm.has(r)}function Tg(i){if(i instanceof CanvasCaptureMediaStreamTrack||!(i instanceof MediaStreamTrack))return!1;let t=i.label.toLocaleLowerCase();if(t.includes("mic")||t.includes("\u9EA6\u514B\u98CE"))return!0;let r=`${((i==null?void 0:i.getSettings())||{}).deviceId}_${O.AUDIO_INPUT}`;return!!qm.has(r)}function zm(i,t){return y(this,null,function*(){let r=(yield Zt()).find(o=>o.deviceId===$o);return!t&&(r==null?void 0:r.groupId)===i||(r==null?void 0:r.groupId)===i&&r.label===t})}function _g(s){return y(this,arguments,function*({newDeviceId:i,oldDeviceId:t,oldGroupId:e,oldLabel:r,kind:o}){return i!==t?!1:o===O.AUDIO&&i===$o?yield zm(e,r):!0})}var Ud,Jm=class extends Ma{constructor(e){super();this.log=e;l(this,"volumeMeter");l(this,"volumeMeterAfter3A");l(this,"volumeDestination");l(this,"analyser",new xd);this.volumeMeter=new xa({log:this.log}),this.volumeMeterAfter3A=new xa({log:this.log}),this.volumeDestination=new gt,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},Vd=class i extends ti{constructor(e){super(e,O.AUDIO);l(this,"_outputDeviceId");l(this,"_volume",1);l(this,"_destination",Xe("player").createMediaStreamDestination());l(this,"pipeline");l(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new Jm(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((Mr==="15.2"||Mr==="15.3"||Mr==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let o=Ud||new Audio;o.setAttribute("autoplay","autoplay"),o.srcObject=this.getMediaStream(),o.muted=this.muted,this.element=o,Pe(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),o===Ud&&(Ud=void 0),this.bindElementEvents()}play(e){return y(this,null,function*(){if(this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e==null?void 0:e.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?(this.pipeline.volumeMeter.init(),this.pipeline.volumeMeterAfter3A.init()):this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(Xe("player").createAnalyser()),gg(),jt(i.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return y(this,null,function*(){var r,o;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(o=(r=this.element).setSinkId)==null?void 0:o.call(r,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){this.element&&(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}getInternalAudioLevelAfter3A(){return this.pipeline.volumeMeterAfter3A.getInternalAudioLevel()}},Fd=class extends Vd{setTrack(t){this.track!==t&&(this.unbindTrackEvents(),this.track=t,this.emit(tt.MEDIA_TRACK_CHANGED,t),t&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([t]))))}setVolume(t){this._volume=t,this.element&&(this.element.volume=t)}},$d=class extends Vd{constructor(e){super(e);l(this,"_sourceElement");l(this,"_output",new gt);this.pipeline.source.pipeTo(this.pipeline.gain),this.pipeline.gain.pipeTo(this.pipeline.volumeMeter).pipeTo(this._output),this.pipeline.gain.pipeTo(this.pipeline.destination)}setOutput(){this.mode=1,this._output.setNode(Xe("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var r,o,s;((o=(r=this.element)==null?void 0:r.error)==null?void 0:o.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(tt.MEDIA_TRACK_CHANGED,e),e?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([e]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([e])),this.pipeline.source.channelCount=((s=e.getSettings())==null?void 0:s.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}setVolume(e){this._volume=e,this.useDestination?(this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`)):e<=1?this.element?(this._log.info(`set element volume: ${e}`),this.element.volume=e):this._log.info("set element volume: no element"):lt||(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),ft(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let r=this._sourceElement||this.element;r&&Xr&&(Ud=r),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var rs=class extends ue{constructor({userId:e,sdkAppId:r,mediaType:o,room:s,PlayerClass:n=o===1?$d:zt}){var a;super();l(this,"id",pa());l(this,"userId","");l(this,"isRemote");l(this,"mediaType");l(this,"room");l(this,"user");l(this,"_log");l(this,"_inputTrack");l(this,"_outputTrack");l(this,"isPlayCalled");l(this,"container",null);l(this,"player");l(this,"subVideoPlayerMap");l(this,"muted",!1);l(this,"abortCtrl");l(this,"objectFit","cover");l(this,"mirror");l(this,"rotation");l(this,"isScreen",!1);l(this,"manager");l(this,"trackSettings");l(this,"isFirstVideoFrameEmitted",!1);this.userId=e||"",this.mediaType=o,this._log=$.createLogger({id:`${this.kind[0]}t`,userId:(a=s||this.room)==null?void 0:a.userId,remoteUserId:this instanceof kr?void 0:this.userId,sdkAppId:r,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof kr}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(tt.PLAYER_STATE_CHANGED,u=>{V.emit(F.PLAYER_STATE_CHANGED,J({track:this},u)),this.emit("player-state-changed",u)}),this.kind===O.VIDEO&&(this.player.on(tt.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(tt.LOADED_DATA),V.emit(F.VIDEO_LOADED_DATA,{track:this})}),this.player.on(tt.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(tt.LOADED_META_DATA)}),this.player.on(tt.MEDIA_TRACK_CHANGED,u=>{var m;(m=this.subVideoPlayerMap)==null||m.forEach(h=>h.setTrack(u))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(tt.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||$}get kind(){return this.mediaType===1?O.AUDIO:O.VIDEO}get strMediaType(){return this.mediaType===4?O.VIDEO:this.mediaType===2?O.SCREEN:O.AUDIO}get streamType(){return(this.mediaType&2)===0?"main":"auxiliary"}get isMediaTrackActive(){return this.mediaTrack?!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled:!1}play(e,r){return y(this,null,function*(){let o=st(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(r)}`),r&&!M(r.muted)&&this.setPlayerMute(r.muted),r&&!M(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof zt&&(this.player.setObjectFit(this.objectFit),this.container!==o&&o&&(this.container=o,this.player.setContainer(o)),st(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),r)));return}if(r&&!M(r.muted)?this.setPlayerMute(r.muted):(!this.isRemote||this.kind===O.VIDEO)&&this.setPlayerMute(!0),r&&!M(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof zt&&(this.player.setObjectFit(this.objectFit),r&&!M(r.poster)&&this.player.setPoster(r.poster)),this.isPlayCalled=!0,o&&(this.container=o,this.player instanceof zt&&this.player.setContainer(o)),V.emit(F.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(r)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(r),st(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),r))}catch(s){throw this.handleAutoPlayFailed(s),s}})}setMirror(e,r){if(this.isScreen||this.kind!==O.VIDEO||M(e)||e===this.mirror)return;this.mirror=e;let o=this.player;r&&(o=r);let s=this.manager;if(Je(this.mirror)){o.setViewMirror(this.mirror),!this.isRemote&&s&&(s.mirror=!1);return}switch(this.mirror){case"view":{s&&(s.mirror=!1),o.setViewMirror(!0);break}case"publish":{s&&(s.mirror=!0),o.setViewMirror(!0);break}case"both":s&&(s.mirror=!0),o.setViewMirror(!1)}}playSubContainer(e,r){return y(this,null,function*(){if(!this._outputTrack||this.kind===O.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((s,n)=>{var a;e.find(u=>n===u)||(s.stop(),(a=this.subVideoPlayerMap)==null||a.delete(n))});for(let[s,n]of e.entries()){let a=this.subVideoPlayerMap.get(n);a?r&&(M(r.objectFit)||a.setObjectFit(r.objectFit)):this.subVideoPlayerMap.set(n,new zt({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${s+1}`})}))}let o=[...this.subVideoPlayerMap.values()];for(let s of o)s.setViewMirror(this.player.mirror),yield s.play()})}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return((e=this.player)==null?void 0:e.getInternalAudioLevel())||0}stop(e=!1){this.isPlayCalled&&(this.isPlayCalled=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(Ul(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(r=>{r.stop()}),this.container=null)}resume(){return y(this,null,function*(){var e;this.isPlayCalled&&(yield(e=this.player)==null?void 0:e.resume())})}close(){this.log.info("close"),this.isPlayCalled&&this.stop(!0)}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),V.emit(e?F.TRACK_MUTED:F.TRACK_UNMUTED,{track:this})}setPlayerMute(e){this.player.setMuted(e)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(e){Ht(e,e).add(O.MUTE,this.onTrackMuted).add(O.UNMUTE,this.onTrackUnmuted).add(O.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===O.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){ft(e)}setInputMediaStreamTrack(e){var o;let r=this._inputTrack;if(e!==r)return this._inputTrack=e,this.trackSettings=(o=e.getSettings)==null?void 0:o.call(e),e.enabled=!this.muted,r&&this.uninstallTrackEvent(r),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,r||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var o;let r=this._outputTrack;e!==r&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(o=e.getSettings)==null?void 0:o.call(e).deviceId,e.label),this._outputTrack=e,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!e),this.emit("output-media-track-changed",e))}setMediaType(e){this.mediaType=e}updatePlayingState(e){if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(r=>this.handleAutoPlayFailed(r)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(Ul(this)?this.jitterBufferDelay:0),this.log.info(`playing state updated, stop ${this.kind}`);return}}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(e){if(this.room&&this.room.enableAutoPlayDialog)new cg;else{let r=()=>{this.resume().then(()=>{document.removeEventListener("click",r,!0)})};document.addEventListener("click",r,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof zt?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var n,a,u;if(this.isFirstVideoFrameEmitted)return;let r=(n=this.mediaTrack)==null?void 0:n.getSettings(),o=(r==null?void 0:r.width)||((a=this.player.element)==null?void 0:a.videoWidth)||0,s=(r==null?void 0:r.height)||((u=this.player.element)==null?void 0:u.videoHeight)||0;e===tt.LOADED_META_DATA&&!o&&!s||(e===tt.LOADED_DATA&&!o&&!s&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,mr(this.rotation)&&([o,s]=[s,o]),this.emit("first-video-frame",{width:o,height:s,streamType:this.streamType,userId:this.isRemote?this.userId:""}))}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};Z([Ye([],ue.INIT,{sync:!0})],rs.prototype,"close",1);var uS=Object.prototype.hasOwnProperty,{toString:LC}=Object.prototype;function lS(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Ft(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(uS.call(i,t))return!1;return!0}}return!1}var Pa=lS;var mS=function(i){return y(this,null,function*(){let t=hS(i);$.info(`getUserMedia with constraints: ${JSON.stringify(t)}`);let e=[],r=[],o=["label","deviceId","groupId"];t.audio&&(e=yield Zt(),$.info(`microphones: ${lr(e.map(s=>Ee(J({},s),{groupId:s.groupId.substring(0,8)})),{keysToInclude:o})}`)),t.video&&(r=yield sr(),$.info(`cameras: ${lr(r,{keysToInclude:o})}`));try{let s=yield navigator.mediaDevices.getUserMedia(t);return wm&&s.getTracks().forEach(n=>{$.info(`${n.kind} capabilities: ${lr(n.getCapabilities(),{keysToInclude:kc})}`)}),t.audio&&an(),s}catch(s){let{message:n}=s;throw s.name==="NotFoundError"&&(i.video&&r&&r.length===0&&(n=Be({key:$e.CAMERA_NOT_FOUND})),i.audio&&e&&e.length===0&&(n=Be({key:$e.MICROPHONE_NOT_FOUND}))),new de({code:q.INITIALIZE_FAILED,name:s.name,message:n,constraint:s.constraint})}})},pS=io({retryFunction:mS,settings:{retries:3,timeout:500},onError:({error:i,retry:t,reject:e,retryFuncArgs:r,retriedCount:o})=>{let s=o+1;i.name==="NotReadableError"||i.name==="OverconstrainedError"?(s===1?(r[0].video&&(r[0].maxResolution=!1,(!_t||r[0].width*r[0].height<=1920*1080)&&r[0].frameRate&&(r[0].frameRate=r[0].frameRate>10?10:5)),r[0].retryWhenExactFailed&&r[0].useExactDeviceId&&(r[0].useExactDeviceId=!1)):s===2?r[0].useDeviceIdOnly=!0:s===3&&!r[0].useExactDeviceId&&(r[0].useTrueAsConstraint=!0),t()):e(i),r[0].microphoneId&&Sg(r[0].microphoneId,!1),r[0].cameraId&&Sg(r[0].cameraId,!0)},onRetrying:i=>{$.warn(`getUserMedia NotReadableError observed, retrying [${i}/3]`)},onRetryFailed:i=>{je.logFailedEvent({eventType:hi.GET_USER_MEDIA_RETRY,error:i})},onRetrySuccess:i=>{je.logSuccessEvent({eventType:hi.GET_USER_MEDIA_RETRY}),je.uploadEvent({log:`stat-${hi.GET_USER_MEDIA_RETRY}-success-${i}`})}});function Sg(i,t){return y(this,null,function*(){let r=(t?yield sr():yield Zt()).find(o=>o.deviceId===i);r&&We(r.getCapabilities)&&$.warn(lr(r.getCapabilities(),{keysToInclude:kc}))})}function hS(i){return{audio:fS(i),video:gS(i)}}function fS(i){if(!i.audio)return!1;if(i.useTrueAsConstraint)return!0;let t={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:i.sampleRate};return!Pa(i.microphoneId)&&(t.deviceId=i.useExactDeviceId?{exact:i.microphoneId}:i.microphoneId,i.useDeviceIdOnly)?t:(Pe(i.channelCount)&&(t.channelCount=i.channelCount),Je(i.echoCancellation)&&!i.echoCancellation&&(t.echoCancellation=!1),Je(i.noiseSuppression)&&!i.noiseSuppression&&(t.noiseSuppression=!1),Je(i.autoGainControl)&&!i.autoGainControl&&(t.autoGainControl=!1),Pa(t)?!0:t)}function gS(i){if(!i.video)return!1;if(i.useTrueAsConstraint)return!0;let{maxResolution:t=!0}=i,e={};return i.cameraId?e.deviceId=i.useExactDeviceId?{exact:i.cameraId}:i.cameraId:i.facingMode&&(e.facingMode=i.facingMode),i.useDeviceIdOnly&&!Pa(e)?e:(i.width&&(e.width={ideal:i.width},t&&!$t&&(e.width.max=i.width)),i.height&&(e.height={ideal:i.height},t&&!$t&&(e.height.max=i.height)),$t&&Dr&&i.width&&i.height&&i.width*i.height<352*288&&(e.width=i.width,e.height=i.height),i.frameRate&&(e.frameRate=i.frameRate),Pa(e)?!0:e)}var Ig=pS;function lo(i){return xe((t,e)=>function(...r){return y(this,null,function*(){let o=yield t.apply(this,r);return yield i.call(this,...r),o})})}function yg(i){return xe((t,e)=>function(...r){return y(this,null,function*(){try{return yield t.apply(this,r)}catch(o){i.call(this,o)}})})}function xe(i){return function(t,e,r){return r.value=i(r.value,e),r}}var Ag=(()=>{let i=!1,t=document.visibilityState;return()=>{document.visibilityState!==t&&$.info(`visibility change: ${document.visibilityState}`),!i&&(document.addEventListener("visibilitychange",()=>{$.info(`visibility change: ${document.visibilityState}`),t=document.visibilityState}),i=!0)}})();var ES=0,Bd=class{constructor(){l(this,"log",$.createLogger({id:`fq${++ES}`}));l(this,"isRunning",!1);l(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(t,e=!1){var s,n;let r=J({},t),o=new Promise((a,u)=>{r.resolve=a,r.reject=u});return r.promise=o,e?this.length<=1?this.queue.push(r):(n=(s=this.lastQueueItem)==null?void 0:s.promise)==null||n.then(r.resolve,r.reject):this.queue.push(r),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),o}shift(){let t=this.queue.shift();return this.log.debug(`shift ${this.length}`),t}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:t,args:e,context:r,resolve:o,reject:s}=this.queue[0];this.isRunning=!0,t.apply(r,e).then(o,s).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},bg=new WeakMap,Rg=new WeakMap;function Hd(i=!1){return function(t,e,r){let o=r.value;return r.value=function(...s){let n=bg.get(this)||new Bd;return bg.set(this,n),n.push({fn:o,args:s,context:this},i)},r}}function Wd(i){return function(t,e,r){let o=r.value,s=n=>i(...n);return r.value=function(...n){let a=Rg.get(this)||new Map,u=a.get(s(n))||new Bd;return a.set(s(n),u),Rg.set(this,a),u.push({fn:o,args:n,context:this})},r}}function Gd(i,t){return xe((e,r)=>function(...o){let s=i;try{let n=e.apply(this,o),a=_e();return to(n)?n.then(u=>(t?z.addSuccessEvent({key:s,cost:_e()-a}):z.addSuccessEvent({key:s}),u)).catch(u=>{throw z.addFailedEvent({key:s,error:u}),u}):(z.addSuccessEvent({key:s}),n)}catch(n){throw z.addFailedEvent({key:s,error:n}),n}})}var is=class is extends rs{constructor(e,r){super({mediaType:e,PlayerClass:r});l(this,"isRemote",!1);l(this,"deviceId");l(this,"groupId","");l(this,"label","");l(this,"sourceTrack");l(this,"enableAutoSwitchWhenRecapturing",!0);l(this,"_isRecapturing",!1);l(this,"_lastRecaptureTime",0);l(this,"_onMuteTimeoutId",-1);l(this,"_encodeCheckTimeoutId",-1);l(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}encodeFrame(e,r){throw new Error("Method not implemented.")}installTrackEvent(e){Ht(e,e).add(O.MUTE,this.onTrackMuted).add(O.UNMUTE,this.onTrackUnmuted).add(O.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===O.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){ft(e)}setStateToReady(){}capture(e){return y(this,null,function*(){var r;try{let o=_e();V.emit(F.LOCAL_TRACK_CAPTURE_START,{track:this});let s;e.customSource?(s=new MediaStream,s.addTrack(e.customSource)):((r=this.mediaTrack)==null||r.stop(),s=yield Ig(e));let n=s.getTracks()[0];return yield this.setInputMediaStreamTrack(n),e.customSource||(this.sourceTrack=n,this.updateDeviceIdInUse(),this.listenDeviceChange()),V.emit(F.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:_e()-o}),s}catch(o){throw V.emit(F.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:o}),this.log.error(`getUserMedia error observed ${o}`),o}})}setOutputMediaStreamTrack(e){var r;if(super.setOutputMediaStreamTrack(e),this.setStateToReady(),this.isPublishing||this.isPublished)return(r=this.room)==null?void 0:r.replaceTrack(this)}publish(e,r){return this.room=e,this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),r}unpublish(){this.room&&this.room.localTracks.delete(this),V.emit(F.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return y(this,null,function*(){if(this.mediaTrack&&on){let{deviceId:e,groupId:r}=this.mediaTrack.getSettings(),{label:o}=this.mediaTrack;(yield _g({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=o,r&&(this.groupId=r),dn().then(n=>{let a=n.find(u=>u.deviceId===e);a&&this.emit("2",a)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.mediaTrack||this.kind===O.AUDIO&&!Tg(this.mediaTrack)||this.kind===O.VIDEO&&!Eg(this.mediaTrack)||this._isRecapturing||e&&Dr&&_t)}onTrackMuted(){if(super.onTrackMuted(),Ag(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<Os){setTimeout(()=>this.onTrackMuted(),Os);return}this._onMuteTimeoutId=setTimeout(()=>y(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((lt||mt)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return y(this,null,function*(){if(jt(is.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<Os){setTimeout(()=>this.onTrackEnded(),Os);return}this.emit("7"),this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return y(this,null,function*(){var o;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),(o=this._inputTrack)==null||o.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let r={useExactDeviceId:!0};if(e==="user"||e==="environment")r.facingMode=e;else{let s;(this.kind==="audio"?yield Zt():yield sr()).find(a=>a.deviceId===e)&&(s=e),r.deviceId=s}return this.capture(r).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),V.emit(F.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(s=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${s.message}`),this.emit("5",s),V.emit(F.LOCAL_TRACK_RECAPTURE,{track:this,error:s})})})}getRecoverCaptureDeviceId(){return y(this,null,function*(){let e=this instanceof nr;if(e&&this.facingMode)return this.facingMode;let{deviceId:r}=this;if(r){let o=(La.get(r)||0)+1;if(La.set(r,o),o>=3&&this.enableAutoSwitchWhenRecapturing){let s=e?(yield sr()).find(n=>!La.has(n.deviceId)):(yield Zt()).find(n=>!La.has(n.deviceId));s&&(this.log.warn(`${r} capture fail ${o} times, change new ${s.deviceId}`),r=s.deviceId)}}return r})}stopCapture(){var e;this.sourceTrack&&(this.sourceTrack.stop(),this.uninstallTrackEvent(this.sourceTrack)),(e=this.manager)==null||e.removeInput(this)}close(){super.close(),this.stopCapture()}};Z([Ye(ue.INIT,"ready",{ignoreError:!0,sync:!0})],is.prototype,"setStateToReady",1),Z([Hd()],is.prototype,"capture",1),Z([Ye("ready","publish",{ignoreError:!0,success(){var r,o;this.room.localTracks.add(this),V.emit(F.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var n,a,u,m,h,g;if(!((((a=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:a.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let T=this.kind===O.AUDIO,A=this.stat.bytesSent>0;if(z[A?"addSuccessEvent":"addFailedEvent"]({key:T?503700:513702}),!T){let C=((m=(u=this.room)==null?void 0:u.videoCodec)==null?void 0:m.toUpperCase())||"H264",N={H264:513704,H265:513705,VP8:513706}[C];N&&z[A?"addSuccessEvent":"addFailedEvent"]({key:N})}A||(z.addEnum({key:T?503701:513703,value:Jo()}),je.uploadEvent({log:`stat-encode-failed-${this.kind}-${la()||Xo()}`,userId:this.userId}),this.log.warn(T?"encode failed":`${(g=(h=this.room)==null?void 0:h.videoCodec)==null?void 0:g.toUpperCase()} encode failed`),this.emit("6",this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"started",reason:"error",error:new de({message:`${T?"audio":"video"} encode failed`,code:T?q.AUDIO_ENCODE_FAILED:q.VIDEO_ENCODE_FAILED})}))}},5e3))},fail(e){let r="error";if(e.cause instanceof RTCError){let o=e.cause;o.message.includes("timeout")?r="timeout":o.code===q.API_CALL_ABORTED&&(r="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:r,error:e.cause||e})}}),Gd(521714,!1)],is.prototype,"publish",1),Z([xe(e=>function(){return y(this,null,function*(){let r=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:r,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),Ye([],"ready",{sync:!0})],is.prototype,"unpublish",1);var kr=is,La=new Map;V.on(F.SWITCH_DEVICE_SUCCESS,i=>{i.track.deviceId&&La.delete(i.track.deviceId)});var ri=class i extends kr{constructor(e){super(1,Fd);l(this,"mediaType",1);l(this,"volume",0);l(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});l(this,"playerMuted",!0);l(this,"pipeline");l(this,"earMonitorGainNode",new gt);l(this,"_output",new gt);l(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});l(this,"mixedAudioReferenceMap",new Map);this.manager=e,this.pipeline=new cn(e),this.pipeline.source.pipeTo(this.player.pipeline.volumeMeter),this.pipeline.gain.pipeTo(this.earMonitorGainNode).pipeTo(this._output),this.pipeline.gain.pipeTo(this.player.pipeline.volumeMeterAfter3A),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}get dbVolume(){return Ld.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}getInternalAudioLevelAfter3A(){if(this.pipeline.aec.node||this.pipeline.denoiser.node)return this.player.getInternalAudioLevelAfter3A()}setInputMediaStreamTrack(e){return y(this,null,function*(){let r=this.trackSettings||{};z.addEnum({key:501701,value:r.channelCount||0,useUV:!1}),z.addEnum({key:501702,value:r.sampleRate||0,useUV:!1}),z.addEnum({key:502700,value:0});let{sampleRate:o,channelCount:s}=r;this._log.info(`local audio track input ${JSON.stringify({sampleRate:o,channelCount:s})}`),this.pipeline.source.channelCount=s||1,this.pipeline.replaceSource(e),yield jt(i.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:r,useExactDeviceId:o=!0,retryWhenExactFailed:s=!0}){return super.capture({video:!1,audio:!0,microphoneId:e,echoCancellation:this.profile.echoCancellation,autoGainControl:this.profile.autoGainControl,noiseSuppression:this.profile.noiseSuppression,sampleRate:this.profile.sampleRate,channelCount:this.profile.channelCount,useExactDeviceId:o,retryWhenExactFailed:s,customSource:r})}switchDevice(e){return y(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e)if(e===$o){if(yield zm(this.groupId,this.label))return}else return;try{this.log.info(`switchDevice audio to: ${e}`),this.mediaTrack&&this.mediaTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),V.emit(F.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(r){throw this.log.error(`switch microphone failed ${r}`),this.deviceId&&this.recapture(this.deviceId),r}}})}listenDeviceChange(){At&&!At.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&At.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return y(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),nt(this.userId,{eventId:2003,param1:6,streamType:1});let r=yield Zt();r[0]?this.recapture(r[0].deviceId):At.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(s){return y(this,arguments,function*({echoCancellation:e,noiseSuppression:r,autoGainControl:o}){let n=this.sourceTrack||this.mediaTrack;if(!n)return;let a=n.getConstraints(),u=!1;!M(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,a.echoCancellation=e,u=!0),!M(r)&&r!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=r,a.noiseSuppression=r,u=!0),!M(o)&&o!==this.profile.autoGainControl&&(this.profile.autoGainControl=o,a.autoGainControl=o,u=!0),u&&($t||_t?yield n.applyConstraints(a).catch(m=>this._log.warn("update3A failed: ",m)):this.deviceId&&(yield this.recapture(this.deviceId)))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&z.addEnum({key:502700,value:2})}setAudioVolume(e){super.setAudioVolume(0),lt&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(Xe().createGain()),this._output.setNode(Xe().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}enableTrackAEC(e){if(this.sourceTrack&&!(_t||lt))return this.update3A({echoCancellation:e})}addDenoiser(e){var r;if(Jr<=92&&((r=this.trackSettings)==null?void 0:r.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}z.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.enableTrackANS(!1)}mixAudioReference(e,r){if(this.mixedAudioReferenceMap.has(r))return;this.log.info(`mixAudioReference() => ${r}`);let o=Oa(e),s=new gt,n=Xe().createGain();n.gain.value=1;let a=new gt;s.pipeTo(a).pipeTo(this.pipeline.mixNode),s.setNode(o),a.setNode(n),this.mixedAudioReferenceMap.set(r,[s,a])}unMixAudioReference(e){let[r,o]=this.mixedAudioReferenceMap.get(e)||[];r&&(this.log.info(`unMixAudioReference() => ${e}`),r.deleteNode(),o==null||o.deleteNode(),this.mixedAudioReferenceMap.delete(e))}setAudioReferenceVolume(e,r){let[o,s]=this.mixedAudioReferenceMap.get(e)||[];s!=null&&s.node&&(s.node.gain.value=r/100,this.log.info(`setAudioReferenceVolume() => ${e} ${s.node.gain.value}`))}addAudioProcessor(e,r,o,s){this.pipeline.silentNode.setNode(o),this.pipeline.mixNode.setNode(r),this.pipeline.aec.setNode(e),this.enableTrackAEC(!1)}removeDenoiser(e){if(this.pipeline.denoiser.node===e)return this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0)}removeAudioProcessor(e,r,o,s){this.pipeline.aec.node===e&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}close(){this.mixedAudioReferenceMap.forEach(([e,r])=>{e.deleteNode(),r.deleteNode()}),this.mixedAudioReferenceMap.clear(),this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),At.off("audioInputAdded",this.handleMicrophoneAdded,this),At.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return y(this,null,function*(){try{yield jt(i.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield Zt()).find(s=>s.deviceId!==e);if(o)yield jt(i.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((r,o)=>o?o({frame:r}):r,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var os=class{constructor(t,e=!1){this.dataView=t;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let t=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,r=[],o=0;for(let n=t;n<=e;n++){let a=this.dataView.getInt8(n);switch(a){case 0:case 1:case 2:case 3:o===2&&(r.push(3),o=0),a==0?o++:o=0,r.push(a);break;default:o=0,r.push(a);break}}r.push(this.dataView.getInt8(this.dataView.byteLength-1));let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=s}removePreventionByte(){let t=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,r=[],o=0;for(let n=t;n<=e;n++)switch(this.dataView.getInt8(n)){case 0:o++,r.push(this.dataView.getInt8(n));break;case 3:o!==2&&r.push(this.dataView.getInt8(n)),o=0;break;default:r.push(this.dataView.getInt8(n)),o=0;break}let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=s}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let t=6;for(let e=6;e<this.dataView.buffer.byteLength&&(t++,this.dataView.getUint8(e)===255);e++);return t}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let t=0,e=6;for(let s=6;s<this.dataView.buffer.byteLength;s++){let n=this.dataView.getUint8(s);if(e++,n===255)t+=255;else{t+=n;break}}let r=new ArrayBuffer(t),o=new DataView(r);for(let s=0;s<r.byteLength;s++,e++)o.setInt8(s,this.dataView.getInt8(e));return o}};var jd=class{constructor(){l(this,"_seiMessageList",[]);l(this,"_smallSeiMessageList",[]);l(this,"_seiPayloadType",243)}encodeSEINalu(t){let e=t.byteLength,r=parseInt(String(e/255),10),o=e%255,s=[];s.push(0,0,0,1,6,this._seiPayloadType);for(let a=0;a<r;a++)s.push(255);s.push(o);let n=new DataView(t);return s.push(...new Uint8Array(n.buffer)),s.push(128),new os(new DataView(new Uint8Array(s).buffer),!0)}sendSEI(t,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(t),e!=null&&e.small&&this._smallSeiMessageList.push(t)}isEmpty(){return!this._seiMessageList.length}getNaluCount(t){let e=0,r=0,o=new DataView(t);for(let s=0;s<t.byteLength;s++)switch(o.getUint8(s)){case 0:e++;break;case 1:(e===2||e===3)&&r++,e=0;break;default:e=0;break}return r}encode(t,e){let r=e?this._smallSeiMessageList:this._seiMessageList;if(r.length>0&&t.data.byteLength>0){let s=9-this.getNaluCount(t.data);if(s<=0)return 0;let n=r.splice(0,s).reverse().map(this.encodeSEINalu.bind(this)),a=n.reduce((T,A)=>T+A.dataView.byteLength,0),u=new ArrayBuffer(a+t.data.byteLength),m=new DataView(u),h=new DataView(t.data),g=0;for(let T=0;T<n.length;T++)for(let A=0;A<n[T].dataView.byteLength;A++)m.setInt8(g++,n[T].dataView.getInt8(A));for(let T=0;T<t.data.byteLength;T++)m.setInt8(g++,h.getInt8(T));return t.data=u,n.length}return 0}};var ss=class ss extends kr{constructor(e,r=4){super(r,zt);l(this,"profile",J({},Bn));l(this,"avoidCropping",!1);l(this,"_scaleResolutionDownBy");l(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});l(this,"small");l(this,"isNeedToSetBandwidth");l(this,"muteImage");l(this,"manager");l(this,"_seiCodec",new jd);this.manager=e;let o=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),this.setProfile(Ee(J({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",o),this.on("publish",o),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!on||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get contentHint(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)||""}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return y(this,null,function*(){var r,o,s;if(Ne(e)){if(this.muteImage===e)return;yield(r=this.manager)==null?void 0:r.deleteWatermark("mute"),yield(o=this.manager)==null?void 0:o.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,jt(ss.prototype,this,"setMute").call(this,!1)}else this.muteImage&&(yield(s=this.manager)==null?void 0:s.deleteWatermark("mute"),this.muteImage=void 0),jt(ss.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:r,useExactDeviceId:o=!0,customSource:s,retryWhenExactFailed:n=!0}){return super.capture({audio:!1,video:!0,facingMode:r||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:o,retryWhenExactFailed:n,customSource:s})}setProfile(e){let r=this.fallbackProfile(e);r.bitrate&&(this.isNeedToSetBandwidth=r.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(r):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(Ee(J({},this.profile),{width:1920,height:1080})))}applyProfile(){return y(this,null,function*(){var a;if(!this.mediaTrack)return;let{width:e=0,height:r=0}=(this.sourceTrack||this.mediaTrack).getSettings(),o=e*r,s=this.settings,n=s.height!==this.profile.height||s.width!==this.profile.width||s.frameRate!==this.profile.frameRate;if(n&&(Mt===16&&this.deviceId?yield this.recapture(this.deviceId):(yield(a=this.sourceTrack||this.mediaTrack)==null?void 0:a.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1})),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth){this.isNeedToSetBandwidth=!1;let{width:u=0,height:m=0}=(this.sourceTrack||this.mediaTrack).getSettings(),h=u*m;if(n&&h&&o&&h===o){this.log.warn("set bandwidth failed: resolution is not changed");return}return this.room.setBandWidth({bandwidth:this.profile.bitrate,type:O.VIDEO,videoType:O.BIG})}})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},r=this.sourceTrack||this.mediaTrack;return on&&r&&Object.assign(e,r.getSettings()),e}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:Gc(this.settings,this.profile)}isAllowed2k4k(e){var r;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((r=this.room.scheduleResult.trtcAutoConf)==null?void 0:r["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return y(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e))return;let r={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?r.facingMode=e:r.deviceId=e,this.mediaTrack.stop(),yield this.capture(r),V.emit(F.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(r){throw this.log.error(`switch camera failed ${r}`),this.deviceId&&this.recapture(this.deviceId),r}})}updateSmallConfig(e){var o,s;this._log.info(`update small stream config: ${JSON.stringify(e)}`);let r=!this.small;this.small=this.fallbackProfile(e,!0),(o=this.manager)==null||o.update(),r&&((s=this.room)==null||s.enableSmall(!0)),this.log.info("update small stream config success")}fallbackProfile(e,r=!1){let o=e.width>e.height,s=J({},e);return e.width*e.height<=160*120&&mt&&zr&&(this.log.warn(`${r?"small ":""}resolution is ${e.width}*${e.height}, fallback to 240*180 for android chrome`),s.width=o?240:180,s.height=o?180:240,s.bitrate=Math.max(e.bitrate,150)),e.width*e.height>1280*720&&Yl&&(s.width=o?1280:720,s.height=o?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),Jl(Mr,"14.3")&&Xl(Mr,"14.0",!0)&&this.on("7",()=>{let n=this.profile.width>this.profile.height;this.profile.width*this.profile.height>640*480?(this.profile.width=n?640:480,this.profile.height=n?480:640,this.log.warn("reduce the resolution to 480p on iOS 14.0 ~ 14.2")):this.profile.width*this.profile.height>640*360&&(this.profile.width=n?640:360,this.profile.height=n?360:640,this.log.warn("reduce the resolution to 360p on iOS 14.0 ~ 14.2"))}),!r&&this.avoidCropping&&(zr||$t)&&!Kl()&&e.width*e.height<=640*360&&e.width/e.height===16/9&&(this._scaleResolutionDownBy=1280/e.width,e.width=1280,e.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),s}stopSmall(){var e,r;this.small&&(delete this.small,(e=this.manager)==null||e.update(),(r=this.room)==null||r.enableSmall(!1))}listenDeviceChange(){At&&!At.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&At.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return y(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),nt(this.userId,{eventId:2003,param1:7,streamType:2});let r=yield sr();r[0]?this.recapture(r[0].deviceId):At.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return y(this,null,function*(){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)})}encodeFrame(e,r){if(!this.manager)return e;let o=r?8:this.mediaType;return this.manager.encodePipeline.reduceRight((s,n)=>n?n({frame:s,mediaType:o}):s,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,r){return M(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,r)}close(){At.off("videoInputAdded",this.handleCameraAdded,this),At.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return y(this,null,function*(){try{yield jt(ss.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield sr()).find(s=>s.deviceId!==e);if(o)yield jt(ss.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info(`setContentHint ${e}`),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}setRotation(e){this.manager&&(this.isScreen||M(e)||e!==this.rotation&&(this.rotation=e,this.manager.rotation=e))}};Z([lo(function(e){this.setContentHint(e.contentHint||"motion")})],ss.prototype,"capture",1);var nr=ss;var Qm={};mi(Qm,{REPORT_TYPE:()=>Bs,buildSSOPackage:()=>Ti,bytes2ms:()=>Bh,calculateScaleResolutionDownNumber:()=>Gc,convertObjectNumberToInt:()=>Zn,copyProperties:()=>$h,deepClone:()=>Bo,deepCloneBasic:()=>Vc,deepMerge:()=>Cr,delay:()=>Kn,fibonacci:()=>Ho,formatedTime:()=>$c,getConstructorName:()=>Ls,getContainerFromElement:()=>Xh,getEnv:()=>Uh,getInternalVersion:()=>zh,getLoggerUrl:()=>Ei,getMediaStreamTrackInfo:()=>Wc,getMuteStateFromFlag:()=>Qn,getNetworkType:()=>zn,getNumNetworkType:()=>Fc,getReconnectionTimeout:()=>Wh,getStringByteLength:()=>Qh,getTurnServer:()=>Jh,getUint32Version:()=>Bc,getValueType:()=>ct,getViewListFromView:()=>Fs,glog:()=>Jn,ipv4ToUint32:()=>Vs,isArray:()=>st,isAudioWorkletSupported:()=>qh,isBoolean:()=>Je,isConstructor:()=>Wo,isEmpty:()=>Us,isFunction:()=>We,isLangChinese:()=>vr,isMediaStreamTrack:()=>Gh,isNumber:()=>Pe,isObject:()=>rr,isOverseaSdkAppId:()=>gi,isPlainObject:()=>Ft,isPortrait:()=>kl,isPromise:()=>to,isRemoteTrack:()=>jh,isRotate90Or270:()=>mr,isString:()=>Ne,isUndefined:()=>M,loadImage:()=>$s,loadVideo:()=>Yh,ms2bytes:()=>Hh,ms2samples:()=>xl,normalizeUrl:()=>Go,performanceNow:()=>_e,promiseAny:()=>Xn,samples2ms:()=>Ol,setNetworkType:()=>Fh,stringify:()=>lr,stringifyIncludeValue:()=>Yn,throttlePromise:()=>Hc});var _S=[-1,-1,1,-1,-1,1,1,1],SS=[0,0,1,0,0,1,1,1];var Wt=class extends ue{constructor(e,r){super();this.context=e;l(this,"name");l(this,"input");l(this,"output");l(this,"texture");l(this,"ctx2d",null);l(this,"fbo");l(this,"width",0);l(this,"height",0);l(this,"x",0);l(this,"y",0);l(this,"program");l(this,"vertexShader");l(this,"fragmentShader");l(this,"totalFrames",0);l(this,"dropFrames",0);l(this,"matchInputSize",!0);l(this,"texCoordBuffer");l(this,"positionBuffer");l(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});l(this,"cost",0);l(this,"_canvas",null);l(this,"_image");l(this,"log");if(this.context.on("disconnect",this.close,this),this.name=r.name,this.log=r.logger,this.matchInputSize=r.matchInputSize!==!1,this.width=r.width||e.width,this.height=r.height||e.height,this._image=r.image,e instanceof Nt){e.ctx&&r.create2d&&(typeof OffscreenCanvas=="function"&&Mt!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);return}try{let o=e.ctx;this.texCoordBuffer=this.createBuffer(SS),this.positionBuffer=this.createBuffer(_S),r.createTexture!==!1&&(this.texture=o.createTexture(),this.useTexture(),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.pixelStorei(o.PACK_ALIGNMENT,1),o.pixelStorei(o.UNPACK_ALIGNMENT,1)),r.useFbo&&(this.fbo=o.createFramebuffer(),this.useBufferFrame(),this.useTexture(),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,this.width,this.height,0,o.RGBA,o.UNSIGNED_BYTE,null),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.texture,0)),r.useDefaultProgram?this.program=e.defaultProgam:(r.vertexShaderSource||r.fragmentShaderSource)&&(this.vertexShader=r.vertexShaderSource?e.createShader(o.VERTEX_SHADER,r.vertexShaderSource):e.defaultVShader,this.fragmentShader=r.fragmentShaderSource?e.createShader(o.FRAGMENT_SHADER,r.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(o){this.context.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${o.message||o}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let r=this.context.ctx,o=r.createFramebuffer();return r.bindFramebuffer(r.FRAMEBUFFER,o),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e,0),o}connect(e,...r){return e.addInput(this,...r),this.output=e,e}addInput(e,...r){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let r=Date.now();if(this.context instanceof It&&this.render(e)||this.context instanceof Nt&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-r,!0}render2d(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e=0){var r;(r=this.output)==null||r.update(e)}disconnect(...e){var r;(r=this.output)==null||r.removeInput(this,...e),delete this.output}removeInput(e,...r){delete this.input}close(){var e,r;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(r=this.input)==null||r.disconnect(),this.context instanceof It){let o=this.context.ctx;o.deleteBuffer(this.texCoordBuffer),o.deleteBuffer(this.positionBuffer),this.fbo&&o.deleteFramebuffer(this.fbo),this.texture&&o.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&o.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&o.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&o.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var e;this.useTextures((e=this.input)==null?void 0:e.texture)}useTextures(...e){let r=this.context.ctx;e.forEach((o,s)=>{o&&(r.activeTexture(r.TEXTURE0+s),r.bindTexture(r.TEXTURE_2D,o))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let r=this.context.ctx,o=r.createBuffer();return r.bindBuffer(r.ARRAY_BUFFER,o),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW),o}setTexBuffer(e){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.texCoordBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW)}setPosBuffer(e){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.positionBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW)}changeBufferData(e,r){let o=this.context.ctx;o.bindBuffer(o.ARRAY_BUFFER,e),o.bufferData(o.ARRAY_BUFFER,new Float32Array(r),o.STATIC_DRAW)}setAttributes(...e){let r=this.context.ctx;e.forEach((o,s)=>{r.enableVertexAttribArray(s),r.bindBuffer(r.ARRAY_BUFFER,o),r.vertexAttribPointer(s,2,r.FLOAT,!1,0,0)})}getVertexPoint(e,r){return[e/this.width*2-1,r/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,r){if(!(this.width===e&&this.height===r)){if(this.width=e,this.height=r,this._canvas&&(this._canvas.width=e,this._canvas.height=r),this.texture&&this.fbo){this.useTexture();let o=this.context.ctx;o.texImage2D(o.TEXTURE_2D,0,o.RGBA,e,r,0,o.RGBA,o.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,r)}}draw(e,r){this.setAttributes(e||this.positionBuffer,r||this.texCoordBuffer);let o=this.context.ctx;o.drawArrays(o.TRIANGLE_STRIP,0,4)}draw2d(e,r,o,s,n,a,u,m,h){let g=!M(a)&&!M(u)&&!M(m)&&!M(h);return this.ctx2d&&e?(e instanceof ImageData?g?this.ctx2d.putImageData(e,r,o,a,u,m,h):this.ctx2d.putImageData(e,r,o):(g?this.ctx2d.drawImage(e,a,u,m,h,r,o,s,n):this.ctx2d.drawImage(e,r,o,s,n),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close()),!0):!1}drawBackGround2d(e){this.ctx2d&&(this.ctx2d.save(),this.ctx2d.fillStyle=e,this.ctx2d.fillRect(0,0,this.width,this.height),this.ctx2d.restore())}getInfo(){var g;let{totalFrames:e,x:r,y:o,width:s,height:n,name:a,cost:u}=this,m=Date.now(),h=(e-this.lastInfo.totalFrames)/((m-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:n,timestamp:m,fps:h,name:a,cost:u},J({parent:(g=this.input)==null?void 0:g.getInfo()},this.lastInfo)}createTexture(e){let r=this.context.ctx,o=r.createTexture();return this.useTextures(o),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),o}};Z([Ye(ue.INIT,"connected",{sync:!0})],Wt.prototype,"connect",1),Z([Ye("connected",ue.INIT,{ignoreError:!0,sync:!0})],Wt.prototype,"disconnect",1),Z([Ye([],"closed",{sync:!0})],Wt.prototype,"close",1);var Lp={};mi(Lp,{Events:()=>dt,Inspect:()=>pr,LastSink:()=>ns,Sink:()=>fe,Subscribe:()=>as,TimeoutError:()=>Ua,audit:()=>tI,bindCallback:()=>$S,bindNodeCallback:()=>BS,buffer:()=>wS,bufferCount:()=>NS,bufferTime:()=>SI,call:()=>Ng,catchError:()=>Op,combineLatest:()=>Dg,concat:()=>AS,concatMap:()=>mI,concatMapTo:()=>pI,count:()=>GS,create:()=>ke,debounce:()=>rI,debounceTime:()=>iI,defer:()=>Mg,delay:()=>II,deliver:()=>Se,dispose:()=>qd,elementAt:()=>oI,empty:()=>$a,every:()=>dI,exhaustMap:()=>gI,exhaustMapTo:()=>EI,filter:()=>ar,find:()=>sI,findIndex:()=>nI,first:()=>aI,fromAnimationFrame:()=>VS,fromArray:()=>OS,fromEvent:()=>we,fromEventPattern:()=>xS,fromFetch:()=>kS,fromIterable:()=>PS,fromPromise:()=>kg,fromReadableStream:()=>US,fromReader:()=>LS,groupBy:()=>TI,identity:()=>IS,ignoreElements:()=>JS,iif:()=>RS,inspect:()=>wg,interval:()=>op,last:()=>cI,map:()=>po,mapTo:()=>lI,max:()=>jS,merge:()=>rp,mergeMap:()=>hI,mergeMapTo:()=>fI,min:()=>qS,never:()=>HS,nothing:()=>He,of:()=>MS,pairwise:()=>uI,pipe:()=>Re,race:()=>ip,range:()=>FS,reduce:()=>sp,retry:()=>bI,scan:()=>Mp,share:()=>Di,shareReplay:()=>bS,skip:()=>QS,skipUntil:()=>YS,skipWhile:()=>Yd,startWith:()=>Va,subject:()=>bt,subscribe:()=>Le,sum:()=>zS,switchMap:()=>ho,switchMapTo:()=>Mi,take:()=>Pr,takeLast:()=>XS,takeUntil:()=>Ze,takeWhile:()=>Pg,tap:()=>Ba,throttle:()=>KS,throwError:()=>WS,timeInterval:()=>_I,timeout:()=>Pp,timer:()=>Fa,toPromise:()=>yI,toReadableStream:()=>AI,withLatestFrom:()=>CS,zip:()=>vS});function He(...i){}var Ng=i=>i(),IS=i=>i;function qd(){this.dispose()}var wg=()=>typeof __FASTRX_DEVTOOLS__!="undefined",yS=1,pr=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(t){let e=new Zm(t,this,this.streamId++);return dt.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},ns=class{constructor(){this.defers=new Set,this.disposed=!1}next(t){}complete(){this.dispose()}error(t){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=He,this.error=He,this.next=He,this.dispose=He,this.subscribe=He,this.doDefer()}subscribe(t){return t instanceof pr?t.subscribe(this):t(this),this}get bindSubscribe(){return t=>this.subscribe(t)}doDefer(){this.defers.forEach(Ng),this.defers.clear()}defer(t){this.defers.add(t)}removeDefer(t){this.defers.delete(t)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},fe=class extends ns{constructor(t){super(),this.sink=t,t.defer(this.bindDispose)}next(t){this.sink.next(t)}complete(){this.sink.complete()}error(t){this.sink.error(t)}},as=class extends ns{constructor(t,e=He,r=He,o=He){if(super(),this._next=e,this._error=r,this._complete=o,this.then=He,t instanceof pr){let s={toString:()=>"subscribe",id:0,source:t};this.defer(()=>{dt.defer(s,0)}),dt.create(s),dt.pipe(s),this.sourceId=s.id,this.subscribe(t),dt.subscribe({id:s.id,end:!0}),e==He?this._next=n=>dt.next(s,0,n):this.next=n=>{dt.next(s,0,n),e(n)},o==He?this._complete=()=>dt.complete(s,0):this.complete=()=>{this.dispose(),dt.complete(s,0),o()},r==He?this._error=n=>dt.complete(s,0,n):this.error=n=>{this.dispose(),dt.complete(s,0,n),r()}}else this.subscribe(t)}next(t){this._next(t)}complete(){this.dispose(),this._complete()}error(t){this.dispose(),this._error(t)}};function Re(i,...t){return t.reduce((e,r)=>r(e),i)}function ke(i,t,e){if(wg()){let r=Object.defineProperties(Object.setPrototypeOf(i,pr.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:t,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});dt.create(r);for(let o=0;o<e.length;o++){let s=e[o];typeof s=="function"&&s instanceof pr&&dt.addSource(r,s)}return r}return i}function Se(i,t){return function(...e){return r=>{if(r instanceof pr){let o=ke(s=>{let n=new i(s,...e);n.sourceId=o.id,n.subscribe(r)},t,arguments);return o.source=r,dt.pipe(o),o}else return o=>r(new i(o,...e))}}}function mo(i,t){window.postMessage({source:"fastrx-devtools-backend",payload:{event:i,payload:t}})}var Zm=class extends fe{constructor(t,e,r){super(t),this.source=e,this.id=r,this.sourceId=t.sourceId,this.defer(()=>{dt.defer(this.source,this.id)})}next(t){dt.next(this.source,this.id,t),this.sink.next(t)}complete(){dt.complete(this.source,this.id),this.sink.complete()}error(t){dt.complete(this.source,this.id,t),this.sink.error(t)}},dt={addSource(i,t){mo("addSource",{id:i.id,name:i.toString(),source:{id:t.id,name:t.toString()}})},next(i,t,e){mo("next",{id:i.id,streamId:t,data:e&&e.toString()})},subscribe({id:i,end:t},e){mo("subscribe",{id:i,end:t,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(i,t,e){mo("complete",{id:i.id,streamId:t,err:e?e.toString():null})},defer(i,t){mo("defer",{id:i.id,streamId:t})},pipe(i){mo("pipe",{name:i.toString(),id:i.id,source:{id:i.source.id,name:i.source.toString()}})},update(i){mo("update",{id:i.id,name:i.toString()})},create(i){i.id||(i.id=yS++),mo("create",{name:i.toString(),id:i.id})}},Ua=class extends Error{constructor(t){super(`timeout after ${t}ms`),this.timeout=t}};var zd=class extends ns{constructor(t){super(),this.source=t,this.sinks=new Set}add(t){t.defer(()=>this.remove(t)),this.sinks.add(t).size===1&&(this.reset(),this.subscribe(this.source))}remove(t){this.sinks.delete(t),this.sinks.size===0&&this.dispose()}next(t){this.sinks.forEach(e=>e.next(t))}complete(){this.sinks.forEach(t=>t.complete()),this.sinks.clear()}error(t){this.sinks.forEach(e=>e.error(t)),this.sinks.clear()}};function Di(){return i=>{let t=new zd(i);if(i instanceof pr){let e=ke(r=>{t.add(r)},"share",arguments);return t.sourceId=e.id,e.source=i,dt.pipe(e),e}return ke(t.add.bind(t),"share",arguments)}}function rp(...i){return ke(t=>{let e=new fe(t),r=i.length;e.complete=()=>{--r===0&&t.complete()},i.forEach(e.bindSubscribe)},"merge",arguments)}function ip(...i){return ke(t=>{let e=new Map;i.forEach(r=>{let o=new fe(t);e.set(r,o),o.complete=()=>{e.delete(r),e.size===0?t.complete():o.dispose()},o.next=s=>{e.delete(r),e.forEach(n=>n.dispose()),o.resetNext(),o.resetComplete(),o.next(s)}}),i.forEach(r=>e.get(r).subscribe(r))},"race",arguments)}function AS(...i){return ke(t=>{let e=0,r=i.length,o=new fe(t);o.complete=()=>{e<r&&!o.disposed?(o.doDefer(),o.subscribe(i[e++])):t.complete()},o.complete()},"concat",arguments)}function bS(i){return t=>{let e=new zd(t),r=[];return e.next=function(o){r.push(o),r.length>i&&r.shift(),this.sinks.forEach(s=>s.next(o))},ke(o=>{o.defer(()=>e.remove(o)),r.forEach(s=>o.next(s)),e.add(o)},"shareReplay",arguments)}}function RS(i,t,e){return ke(r=>i()?t(r):e(r),"iif",arguments)}function Dg(...i){return ke(t=>{let e=i.length,r=e,o=e,s=new Array(e),n=()=>{--o===0&&t.complete()},a=(u,m)=>{let h=new fe(t);h.next=g=>{--r===0?(h.next=T=>{s[m]=T,t.next(s)},h.next(g)):s[m]=g},h.complete=n,h.subscribe(u)};i.forEach(a)},"combineLatest",arguments)}function vS(...i){return ke(t=>{let e=i.length,r=e,o=new Array(e),s=()=>{--r===0&&t.complete()},n=(a,u)=>{let m=new fe(t),h=[];o[u]=h,m.next=g=>{h.push(g),o.every(T=>T.length)&&t.next(o.map(T=>T.shift()))},m.complete=s,m.subscribe(a)};i.forEach(n)},"zip",arguments)}function Va(...i){return t=>ke((e,r=0,o=i.length)=>{for(;r<o&&!e.disposed;)e.next(i[r++]);e.disposed||e.subscribe(t)},"startWith",arguments)}var Km=class extends fe{constructor(t,...e){super(t);let r=new fe(this.sink);r.next=o=>this.buffer=o,r.complete=He,r.subscribe(Dg(...e))}next(t){this.buffer&&this.sink.next([t,...this.buffer])}},CS=Se(Km,"withLatestFrom"),ep=class extends fe{constructor(t,e,r){super(t),this.bufferSize=e,this.startBufferEvery=r,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(t){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(t)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(t),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(t=>this.sink.next(t)),super.complete()}},NS=Se(ep,"bufferCount"),tp=class extends fe{constructor(t,e){super(t),this.buffer=[];let r=new fe(t);r.next=o=>{t.next(this.buffer),this.buffer=[]},r.complete=He,r.subscribe(e)}next(t){this.buffer.push(t)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},wS=Se(tp,"buffer");var DS=function(i,t,e,r){function o(s){return s instanceof e?s:new e(function(n){n(s)})}return new(e||(e=Promise))(function(s,n){function a(h){try{m(r.next(h))}catch(g){n(g)}}function u(h){try{m(r.throw(h))}catch(g){n(g)}}function m(h){h.done?s(h.value):o(h.value).then(a,u)}m((r=r.apply(i,t||[])).next())})};function bt(i){let t=arguments,e=Di()(ke(r=>{e.next=o=>r.next(o),e.complete=()=>r.complete(),e.error=o=>r.error(o),i&&r.subscribe(i)},"subject",t));return e.next=He,e.complete=He,e.error=He,e}function Mg(i){return ke(t=>t.subscribe(i()),"defer",arguments)}var Og=i=>t=>{setTimeout(()=>i(t))},xg=i=>Og(t=>{for(let e=0;!t.disposed&&e<i.length;e++)t.next(i[e]);t.complete()});function MS(...i){return ke(xg(i),"of",arguments)}function OS(i){return ke(xg(i),"fromArray",arguments)}function op(i){return ke(t=>{let e=0,r=setInterval(()=>t.next(e++),i);return t.defer(()=>{clearInterval(r)}),"interval"},"interval",arguments)}function Fa(i,t){return ke(e=>{let r=0,o=setTimeout(()=>{if(e.removeDefer(s),e.next(r++),t){let n=setInterval(()=>e.next(r++),t);e.defer(()=>{clearInterval(n)})}else e.complete()},i),s=()=>{clearTimeout(o)};e.defer(s)},"timer",arguments)}function Jd(i,t){return e=>{let r=o=>e.next(o);e.defer(()=>t(r)),i(r)}}function xS(i,t){return ke(Jd(i,t),"fromEventPattern",arguments)}function we(i,t){if("on"in i&&"off"in i)return ke(Jd(e=>i.on(t,e),e=>i.off(t,e)),"fromEvent",arguments);if("addListener"in i&&"removeListener"in i)return ke(Jd(e=>i.addListener(t,e),e=>i.removeListener(t,e)),"fromEvent",arguments);if("addEventListener"in i)return ke(Jd(e=>i.addEventListener(t,e),e=>i.removeEventListener(t,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function kg(i){return ke(t=>{i.then(t.next.bind(t),t.error.bind(t))},"fromPromise",arguments)}function kS(i,t){return ke(Mg(()=>kg(fetch(i,t))),"fromFetch",arguments)}function PS(i){return ke(Og(t=>{try{for(let e of i){if(t.disposed)return;t.next(e)}t.complete()}catch(e){t.error(e)}}),"fromIterable",arguments)}function LS(i){let t=e=>DS(this,void 0,void 0,function*(){if(e.disposed)return;let{done:r,value:o}=yield i.read();if(r){e.complete();return}else e.next(o),t(e)});return ke(e=>{t(e)},"fromReader",arguments)}function US(i){return ke(t=>{let e=new AbortController,r=e.signal;t.defer(()=>e.abort("cancelled")),i.pipeTo(new WritableStream({write(o){t.next(o)},close(){t.complete()},abort(o){t.error(o)}}),{signal:r}).then(()=>t.complete(),o=>t.error(o))},"fromReadableStream",arguments)}function VS(){return ke(i=>{let t=requestAnimationFrame(function e(r){i.disposed||(i.next(r),t=requestAnimationFrame(e))});i.defer(()=>cancelAnimationFrame(t))},"fromAnimationFrame",arguments)}function FS(i,t){return ke((e,r=i,o=t+i)=>{for(;r<o&&!e.disposed;)e.next(r++);return e.complete(),"range"},"range",arguments)}function $S(i,t,...e){return ke(r=>{let o=e.concat(s=>(r.next(s),r.complete()));i.apply(t,o)},"bindCallback",arguments)}function BS(i,t,...e){return ke(r=>{let o=e.concat((s,n)=>s?r.error(s):(r.next(n),r.complete()));i.apply(t,o)},"bindNodeCallback",arguments)}function HS(){return ke(()=>{},"never",arguments)}function WS(i){return ke(t=>t.error(i),"throwError",arguments)}function $a(){return ke(i=>i.complete(),"empty",arguments)}var cs=class extends fe{constructor(t,e,r){super(t),this.f=e;let o=()=>{this.sink.next(this.acc),this.sink.complete()};typeof r=="undefined"?this.next=s=>{this.acc=s,this.complete=o,this.resetNext()}:(this.acc=r,this.complete=o)}next(t){this.acc=this.f(this.acc,t)}},sp=Se(cs,"reduce"),GS=i=>Se(cs,"count")((t,e)=>i(e)?t+1:t,0),jS=()=>Se(cs,"max")(Math.max),qS=()=>Se(cs,"min")(Math.min),zS=()=>Se(cs,"sum")((i,t)=>i+t,0);var np=class extends fe{constructor(t,e,r){super(t),this.filter=e,this.thisArg=r}next(t){this.filter.call(this.thisArg,t)&&this.sink.next(t)}},ar=Se(np,"filter"),ap=class extends fe{next(t){}},JS=Se(ap,"ignoreElements"),cp=class extends fe{constructor(t,e){super(t),this.count=e}next(t){this.sink.next(t),--this.count===0&&this.complete()}},Pr=Se(cp,"take"),dp=class extends fe{constructor(t,e){super(t);let r=new fe(t);r.next=()=>t.complete(),r.complete=qd,r.subscribe(e)}},Ze=Se(dp,"takeUntil"),up=class extends fe{constructor(t,e){super(t),this.f=e}next(t){this.f(t)?this.sink.next(t):this.complete()}},Pg=Se(up,"takeWhile"),XS=i=>sp((t,e)=>(t.push(e),t.length>i&&t.shift(),t),[]),lp=class extends fe{constructor(t,e){super(t),this.count=e}next(t){--this.count===0&&(this.next=super.next)}},QS=Se(lp,"skip"),mp=class extends fe{constructor(t,e){super(t),t.next=He;let r=new fe(t);r.next=()=>{r.dispose(),t.resetNext()},r.complete=qd,r.subscribe(e)}},YS=Se(mp,"skipUntil"),pp=class extends fe{constructor(t,e){super(t),this.f=e}next(t){this.f(t)||(this.next=super.next,this.next(t))}},Yd=Se(pp,"skipWhile"),ZS={leading:!0,trailing:!1},hp=class extends fe{constructor(t,e,r){super(t),this.durationSelector=e,this.trailing=r}cacheValue(t){this.last=t,this.disposed&&this.throttle(t)}send(t){this.sink.next(t),this.throttle(t)}throttle(t){this.reset(),this.subscribe(this.durationSelector(t))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},Xd=class extends fe{constructor(t,e,r=ZS){super(t),this.durationSelector=e,this.config=r,this._throttle=new hp(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(t){this._throttle.disposed&&this.config.leading?this._throttle.send(t):this._throttle.cacheValue(t)}complete(){this._throttle.throttle=He,this._throttle.complete(),super.complete()}},KS=Se(Xd,"throttle"),eI={leading:!1,trailing:!0},tI=i=>Se(Xd,"audit")(i,eI),fp=class extends fe{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},Qd=class extends fe{constructor(t,e){super(t),this.durationSelector=e,this._debounce=new fp(this.sink),this._debounce.dispose()}next(t){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=t,this._debounce.subscribe(this.durationSelector(t))}complete(){this._debounce.complete(),super.complete()}},rI=Se(Qd,"debounce"),iI=i=>Se(Qd,"debounceTime")(t=>Fa(i)),gp=class extends fe{constructor(t,e,r){super(t),this.count=e,this.defaultValue=r}next(t){this.count--===0&&(this.defaultValue=t,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("not enough elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},oI=Se(gp,"elementAt"),sI=i=>t=>Pr(1)(Yd(e=>!i(e))(t)),Ep=class extends fe{constructor(t,e){super(t),this.f=e,this.i=0}next(t){this.f(t)?(this.sink.next(this.i++),this.complete()):++this.i}},nI=Se(Ep,"findIndex"),Tp=class extends fe{constructor(t,e,r){super(t),this.f=e,this.defaultValue=r,this.index=0}next(t){(!this.f||this.f(t,this.index++))&&(this.defaultValue=t,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},aI=Se(Tp,"first"),_p=class extends fe{constructor(t,e,r){super(t),this.f=e,this.defaultValue=r,this.index=0}next(t){(!this.f||this.f(t,this.index++))&&(this.defaultValue=t)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},cI=Se(_p,"last"),Sp=class extends fe{constructor(t,e){super(t),this.predicate=e,this.index=0}next(t){this.predicate(t,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){if(this.result===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.result);super.complete()}},dI=Se(Sp,"every");var Ip=class extends fe{constructor(t,e,r){super(t),this.f=e,typeof r=="undefined"?this.next=o=>{this.acc=o,this.resetNext(),this.sink.next(this.acc)}:this.acc=r}next(t){this.sink.next(this.acc=this.f(this.acc,t))}},Mp=Se(Ip,"scan"),yp=class extends fe{constructor(){super(...arguments),this.hasLast=!1}next(t){this.hasLast?this.sink.next([this.last,t]):this.hasLast=!0,this.last=t}},uI=Se(yp,"pairwise"),Zd=class extends fe{constructor(t,e,r){super(t),this.mapper=e,this.thisArg=r}next(t){super.next(this.mapper.call(this.thisArg,t))}},po=Se(Zd,"map"),lI=i=>Se(Zd,"mapTo")(t=>i),ln=class extends fe{constructor(t,e,r){super(t),this.data=e,this.context=r}next(t){let e=this.context.combineResults;e?this.sink.next(e(this.data,t)):this.sink.next(t)}tryComplete(){this.context.resetComplete(),this.dispose()}},mn=class extends fe{constructor(t,e,r){super(t),this.makeSource=e,this.combineResults=r,this.index=0}subInner(t,e){let r=this.currentSink=new e(this.sink,t,this);this.complete=this.tryComplete,r.complete=r.tryComplete,r.subscribe(this.makeSource(t,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},Kd=class extends ln{},eu=class extends mn{next(t){this.subInner(t,Kd),this.next=e=>{this.currentSink.dispose(),this.subInner(e,Kd)}}},ho=Se(eu,"switchMap");function ou(i){return(t,e)=>i(()=>t,e)}var Mi=ou(Se(eu,"switchMapTo")),Ap=class extends ln{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},tu=class extends mn{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(t){this.next2(t),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),Ap),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},mI=Se(tu,"concatMap"),pI=ou(Se(tu,"concatMapTo")),bp=class extends ln{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},ru=class extends mn{constructor(){super(...arguments),this.inners=new Set}next(t){this.subInner(t,bp),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(t=>t.resetComplete()):this.dispose()}},hI=Se(ru,"mergeMap"),fI=ou(Se(ru,"mergeMapTo")),Rp=class extends ln{dispose(){this.context.resetNext(),super.dispose()}},iu=class extends mn{next(t){this.next=He,this.subInner(t,Rp)}},gI=Se(iu,"exhaustMap"),EI=ou(Se(iu,"exhaustMapTo")),vp=class extends fe{constructor(t,e){super(t),this.f=e,this.groups=new Map}next(t){let e=this.f(t),r=this.groups.get(e);typeof r=="undefined"&&(r=bt(),r.key=e,this.groups.set(e,r),super.next(r)),r.next(t)}complete(){this.groups.forEach(t=>t.complete()),super.complete()}error(t){this.groups.forEach(e=>e.error(t)),super.error(t)}},TI=Se(vp,"groupBy"),Cp=class extends fe{constructor(){super(...arguments),this.start=new Date}next(t){this.sink.next({value:t,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},_I=Se(Cp,"timeInterval"),Np=class extends fe{constructor(t,e){super(t),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(t){this.buffer.push(t)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},SI=Se(Np,"bufferTime"),wp=class extends fe{constructor(t,e){super(t),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(t){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:r,data:o}=e;super.next(o),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(r))}},t)}next(t){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:t})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},II=Se(wp,"delay"),Dp=class extends fe{constructor(t,e){super(t),this.selector=e}error(t){this.dispose(),this.selector(t)(this.sink)}},Op=Se(Dp,"catchError");var yI=()=>i=>new Promise((t,e)=>{let r;new as(i,o=>r=o,e,()=>t(r))}),AI=()=>i=>{let t;return new ReadableStream({start(e){t=new as(i,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){t.dispose()}})},Le=(i=He,t=He,e=He)=>r=>new as(r,i,t,e),xp=class extends fe{constructor(t,e){super(t),e instanceof Function?this.next=r=>{e(r),t.next(r)}:(e.next&&(this.next=r=>{e.next(r),t.next(r)}),e.complete&&(this.complete=()=>{e.complete(),t.complete()}),e.error&&(this.error=r=>{e.error(r),t.error(r)}))}},Ba=Se(xp,"tap"),kp=class extends fe{constructor(t,e){super(t),this.timeout=e,this.id=setTimeout(()=>this.error(new Ua(this.timeout)),this.timeout)}next(t){super.next(t),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},Pp=Se(kp,"timeout"),bI=(i=1/0)=>t=>{if(t instanceof pr){let e=ke(r=>{let o=i,s=new fe(r);s.error=n=>{o-- >0?s.subscribe(t):r.error(n)},s.sourceId=e.id,s.subscribe(t)},"retry",[i]);return e.source=t,dt.pipe(e),e}else return e=>{let r=i,o=new fe(e);o.error=s=>{r-- >0?t(o):e.error(s)},t(o)}};var Lg=Re(op(250),po(()=>performance.now()),Di()),Ug=i=>t=>{let e=0,r=performance.now();Re(Lg,po(o=>(o-r)/i>>0),ar(o=>o!=e?(e=o,!0):!1))(t)},su=i=>t=>{let e=performance.now();Re(Lg,Yd(r=>r-e<i),Pr(1))(t)};var vI=[0,1,1,1,0,0,1,0],ds=class extends Wt{constructor(e,r){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},r));l(this,"_intervalId",0);l(this,"_sequence",0);l(this,"checkGLError",!1);l(this,"checkVisibilityChange");e instanceof Nt?this.ctx2d=e.ctx||null:e.available&&(r!=null&&r.mirrorUpAndDown)&&this.setTexBuffer(vI)}start(e){this.log.info(`${this.name} start render ${e} fps`),ht.clearTask(this._intervalId),this._intervalId=ht.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(ht.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof It){let o=this.context.ctx.getError();o&&this.context.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${o}`}))}},{fps:this.context.frameRate})}render(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}addInput(e,...r){super.addInput(e,...r),this.start(this.context.frameRate)}update(e=0){this._intervalId&&(ht.clearTask(this._intervalId),this._intervalId=0,e===1&&(this.log.info(`${this.name} use requestVideoFrameCallback`),this.checkVisibilityChange=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",this.checkVisibilityChange))},document.addEventListener("visibilitychange",this.checkVisibilityChange))),this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),ht.clearTask(this._intervalId)}resize(e,r){super.resize(e,r),this.context.setSize(e,r)}close(){super.close(),ht.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},pn=class extends ds{constructor(e,r){super(e,r);l(this,"_videoTrack");l(this,"_muteOb");l(this,"_closedOb",we(this,"closed"));l(this,"_subscription");l(this,"_canvasContainer");Number(Si)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=we(this._videoTrack,"mute"),Re(we(this._videoTrack,"ended"),Ze(this._closedOb),Le(()=>{this.context.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=Re(this._muteOb,Ze(this._closedOb),Mi(su(5e3)),ar(()=>{var e;return!!((e=this._videoTrack)!=null&&e.muted)&&!document.hidden}),Le(()=>{this.context.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var e;(e=this._subscription)==null||e.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(e){return this.putCanvasIntoDom(),super.render(e)}render2d(e){return this.putCanvasIntoDom(),super.render2d(e)}close(){var e,r;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(r=this._canvasContainer)==null||r.remove()}},nu=class extends pn{render(t){var e;return!!((e=this.input)!=null&&e.requestFrame(t))}};var au=class extends pn{constructor(e,r,o){super(e,{name:"smallDestination",logger:o});this.resolution=r}resize(e,r){let o,s=e*r,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${r} small res: ${this.resolution.width}*${this.resolution.height} `),s>n?o=s/n:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${r} small: ${this.resolution.width} * ${this.resolution.height}`),o=s/(160*120)),super.resize(e/Math.sqrt(o),r/Math.sqrt(o))}};var Ha=class extends Wt{constructor(e,r){super(e,J({name:"imageSource"},r));l(this,"_lastImage");l(this,"_totalFrames",0);l(this,"_autoResize",!1);l(this,"_canvasRendered");l(this,"_videoCallbackId",0);l(this,"waitingFirstFrame",!0);l(this,"shouldUpdate",!0);this._autoResize=(r==null?void 0:r.autoResize)!==!1,Mt===16&&(this._canvasRendered=bt(),Re(this._canvasRendered,Va(this._image),ho(o=>o instanceof HTMLCanvasElement?we(o,"rendered"):$a()),Ze(we(this,"closed")),Le(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;let e=this.image;this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),Ci()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((r,o)=>{this.waitingFirstFrame&&this.onFirstFrame(),document.hidden||(this._totalFrames=o.presentedFrames,this.update(1))}))}_render(e,r){var a;let{width:o,height:s}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{videoWidth:o,videoHeight:s}=n,!o||!s)return!1;n.width=o,n.height=s}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:o,height:s}=n,n!==this._lastImage)this._lastImage=n;else if(o===this.width&&s===this.height)return!0}else n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas?({width:o,height:s}=n,this._lastImage=n):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:o,displayHeight:s}=n,(a=this._lastImage)==null||a.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===o&&this.height===s&&this.totalFrames){if(r){this.useTexture();let u=this.context.ctx;u.texSubImage2D(u.TEXTURE_2D,0,0,0,u.RGBA,u.UNSIGNED_BYTE,n)}}else{if(r){this.useTexture();let u=this.context.ctx;u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,n)}this.resize(o,s)}return!0}get image(){return this._image}set image(e){var r;(r=this._canvasRendered)==null||r.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},Wa=class extends Ha{constructor(e,r,o){super(e,o);this._player=r;this.name="videoPlayerSource",Re(we(this._player,tt.PLAYER_STATE_CHANGED),Ze(we(this,"closed")),ar(({state:s})=>s==="PLAYING"),Le(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},hr=class extends Wa{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(t,e,r){super(t,new zt({id:r.name,track:e,muted:!0,container:null,objectFit:"contain",log:r.logger}),r),this.name="videoTrackSource",this._player.play()}replaceTrack(t){this.waitingFirstFrame=!0,this._player.setTrack(t),this._player.play()}close(){super.close(),this._player.stop()}},cu=class extends Wt{constructor(e,r,o){super(e,Ee(J({name:"textSource"},o),{create2d:!0}));l(this,"hasChange",!0);l(this,"content","");this.ctx2d.textBaseline="top",this.content=r.content||"",r.font&&(this.font=r.font),r.color&&(this.color=r.color)}set font(e){this.ctx2d&&(this.ctx2d.font=e,this.hasChange=!0)}get font(){var e;return((e=this.ctx2d)==null?void 0:e.font)||""}set color(e){this.ctx2d&&(this.ctx2d.fillStyle=e,this.hasChange=!0)}get color(){var e;return((e=this.ctx2d)==null?void 0:e.fillStyle)||""}render2d(e){return this.ctx2d&&this.hasChange?(this.ctx2d.clearRect(0,0,this.width,this.height),this.drawMultilineText(0,0),this.hasChange=!1,!0):!1}render(e){return!1}resize(e,r){if(!this.ctx2d)return;let{color:o,font:s}=this;super.resize(e,r),this.color=o,this.font=s}drawMultilineText(e=0,r=0,o=1.2){if(!this.ctx2d)return;let s=this.ctx2d.measureText(this.content);r+=s.fontBoundingBoxAscent||s.actualBoundingBoxAscent||0;let n=this.font.match(/(\d+)px/),u=(n?parseInt(n[1],10):16)*o,m=this.content.split(`
32
+ `);for(let h=0;h<m.length;h++)this.ctx2d.fillText(m[h],e,r+h*u)}};var NI=`
35
33
  // \u9876\u70B9\u7740\u8272\u5668
36
34
  attribute vec4 a_position;
37
35
  attribute vec2 a_texCoord;
@@ -41,7 +39,7 @@ void main() {
41
39
  gl_Position = a_position;
42
40
  v_texCoord = a_texCoord;
43
41
  }
44
- `,EE=`
42
+ `,wI=`
45
43
  // \u7247\u5143\u7740\u8272\u5668
46
44
  precision mediump float;
47
45
  varying vec2 v_texCoord;
@@ -49,32 +47,66 @@ uniform sampler2D u_texture;
49
47
 
50
48
  void main() {
51
49
  gl_FragColor = texture2D(u_texture, v_texCoord);
52
- } `;var Zr=class extends ${constructor(e){super();d(this,"frameRate");d(this,"_canvas");d(this,"log");d(this,"hasAlpha",!1);d(this,"name");d(this,"error");this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}set width(e){this._canvas&&(this._canvas.width=e)}get width(){var e;return((e=this._canvas)==null?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return((e=this._canvas)==null?void 0:e.height)||0}setSize(e,t){this._canvas&&(this._canvas.width=e,this._canvas.height=t)}createVideoTrackSource(e,t){return new Dt(this,e,{logger:this.log,name:t})}createVideoTrackDestination(e){return new Zo(this,e)}createVideoImageSource(e,t){return new gn(this,t?Object.assign(t,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,t){return new Tn(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}createTextSource(e,t){return new gc(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};d(Zr,"_ids",0);var SE={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},Ko=class Ko extends Zr{constructor(){super(...arguments);d(this,"defaultProgam");d(this,"defaultVShader");d(this,"defaultFShader");d(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Zr._ids++}`),this.ctx=this._canvas.getContext("webgl2",SE),!this.ctx)throw new v({code:A.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,TE),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,EE),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new v({code:A.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(e){let t="";return e&&(t=e.message,this.error=e,N.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${t}`?`: ${t}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),e}set width(e){var t;(t=this.ctx)==null||t.viewport(0,0,e,this.height),super.width=e}set height(e){var t;(t=this.ctx)==null||t.viewport(0,0,this.width,e),super.height=e}setSize(e,t){var r;(r=this.ctx)==null||r.viewport(0,0,e,t),super.setSize(e,t)}createShader(e,t){let r=this.ctx,s=r.createShader(e);return r.shaderSource(s,t),r.compileShader(s),s}createProgram(e,t){let r=this.ctx,s=r.createProgram();return r.attachShader(s,e),r.attachShader(s,t),r.linkProgram(s),r.getProgramParameter(s,r.LINK_STATUS)||this.log.error(r.getProgramInfoLog(s)),s}};d(Ko,"UNAVAILABLE","unavailable"),M([Te($.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),N.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),N.addSuccessEvent({key:512700})}})],Ko.prototype,"create",1),M([Te("created",$.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(Ko.UNAVAILABLE,e),this.removeAllListeners()}})],Ko.prototype,"destroy",1);var we=Ko,Fe=class extends Zr{constructor(){super(...arguments);d(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Zr._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new v({code:A.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}destroy(e){let t="";e&&(t=e.message,this.error=e,N.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${t?`: ${t}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),N.addSuccessEvent({key:512703})}};M([Te($.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),N.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),N.addSuccessEvent({key:512701})}})],Fe.prototype,"create",1),M([Te("created",$.INIT,{ignoreError:!0,sync:!0})],Fe.prototype,"destroy",1);function IE(o,i,e,t,r,s=!1){s&&([e,t]=[t,e]);let n={sWidth:o,sHeight:i,dWidth:e,dHeight:t,sx:0,sy:0,dx:0,dy:0};if(o===0||i===0)return n;switch(r){case void 0:case"fill":break;case"contain":{let a=Math.min(e/o,t/i);n.dWidth=o*a,n.dHeight=i*a,n.dx=(e-n.dWidth)/2,n.dy=(t-n.dHeight)/2;break}case"cover":{let a=Math.max(e/o,t/i),c=e/a,l=t/a;n.sx=(o-c)/2,n.sy=(i-l)/2,n.sWidth=c,n.sHeight=l;break}}return n}var xu=class{constructor(i,e){this.node=i;this.layout=e;d(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get fillMode(){return this.layout.fillMode}get rotation(){return this.layout.rotation}get hidden(){return!!this.layout.hidden}},es=class extends Ze{constructor(e,t){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:t});d(this,"inputs",[]);d(this,"backgroundColor","black")}addInput(e,t){let r=0,s=this.inputs.length;for(;r<s;){let a=Math.floor((r+s)/2);if(this.inputs[a].layout.zIndex<t.zIndex)r=a+1;else if(this.inputs[a].layout.zIndex>t.zIndex)s=a;else throw new Error(`input already exists at zIndex ${t.zIndex}`)}let n=new xu(e,t);this.inputs.splice(r,0,n)}changeInputLayout(e,t){let r=this.inputs.findIndex(S=>S.node===e);if(r<0)return;let{x:s,y:n,width:a,height:c,zIndex:l,fillMode:u,rotation:h,hidden:m}=t;if(!T(l)&&this.inputs.some(S=>S.layout.zIndex===l&&S.node!==e))throw new Error(`input already exists at zIndex ${t.zIndex}`);let g=this.inputs[r];T(s)||(g.layout.x=s),T(n)||(g.layout.y=n),T(a)||(g.layout.width=a),T(c)||(g.layout.height=c),T(h)||(g.layout.rotation=h),T(m)||(g.layout.hidden=m),u&&(g.layout.fillMode=u),!T(l)&&l!==g.layout.zIndex&&(g.layout.zIndex=l,this.inputs.sort((S,_)=>S.layout.zIndex-_.layout.zIndex))}hasInput(e){return this.inputs.some(t=>t.node===e)}hasNoInput(){return this.inputs.length===0}resize(e,t){if(!this.matchInputSize){super.resize(e,t);return}let r=this.inputs.reduce((s,n)=>n?Object.assign(s,{width:Math.max(s.width,n.right),height:Math.max(s.height,n.bottom)}):s,{width:0,height:0});super.resize(r.width,r.height),this.context instanceof we&&this.inputs.forEach(s=>{if(s){let n=this.layout2texCoords(s);s.positionBuffer?this.changeBufferData(s.positionBuffer,n):s.positionBuffer=this.createBuffer(n)}})}connect(e,...t){return super.connect(e,...t),this.drawBackGround2d(this.backgroundColor),this.matchInputSize&&this.resize(0,0),e}removeInput(e){this.inputs=this.inputs.filter(t=>t.node!==e),this.inputs.length===0&&this.drawBackGround2d(this.backgroundColor)}render(e){let t=this.context.ctx;if(t.clearColor(0,0,0,0),this.inputs.reduce((s,n)=>n.node.requestFrame(e)||s,!1)&&t){this.useProgram(),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let s=0;s<this.inputs.length;s++){let n=this.inputs[s];n&&(n.node.useTexture(),this.draw(n.positionBuffer))}return!0}return!1}render2d(e){if(this.inputs.forEach(t=>t.node.requestFrame(e)),this.ctx2d){this.drawBackGround2d(this.backgroundColor);for(let t=0;t<this.inputs.length;t++){let r=this.inputs[t];if(r.hidden)continue;let s=IE(r.node.width,r.node.height,r.width,r.height,r.fillMode,yt(r.rotation));this.draw2d(r.node.image,r.x+s.dx,r.y+s.dy,s.dWidth,s.dHeight,s.sx,s.sy,s.sWidth,s.sHeight)}return!0}return!1}debugLayout(e,t,r,s,n=!1){this.ctx2d&&(n&&([r,s]=[s,r]),this.ctx2d.save(),this.ctx2d.strokeStyle="red",this.ctx2d.lineWidth=2,this.ctx2d.strokeRect(e,t,r,s),this.ctx2d.restore())}getInfo(){let{totalFrames:e,x:t,y:r,width:s,height:n,name:a}=this,c=Date.now(),l=(e-this.lastInfo.totalFrames)/((c-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:s,height:n,timestamp:c,fps:l,name:a},D({parent:this.inputs.filter(u=>u).map(u=>u.node.getInfo())},this.lastInfo)}removeAllInputs(){this.inputs.forEach(e=>{var t;if(e.node.disconnect(),e.positionBuffer&&this.context instanceof we)try{(t=this.context.ctx)==null||t.deleteBuffer(e.positionBuffer)}catch(r){}})}close(){super.close(),this.removeAllInputs()}};var AE=[1,0,0,0,1,1,0,1],Mt=class extends Ze{constructor(e,t,r,s){super(e,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"transform",logger:t});d(this,"mirror",!1);d(this,"rotation",0);if(r&&(this.mirror=r),s&&(this.rotation=s),e instanceof we)try{this.setTexBuffer(AE)}catch(n){e.destroy(new v({code:A.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${n.message||n}`}))}}draw2d(e,t,r,s,n){if(this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height),this.ctx2d.save(),this.mirror&&(this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0)),this.rotation===90?(this.ctx2d.translate(s,0),this.ctx2d.rotate(Math.PI/2),this.ctx2d.scale(n/s,s/n)):this.rotation===180?(this.ctx2d.translate(this.width,this.height),this.ctx2d.rotate(Math.PI)):this.rotation===270&&(this.ctx2d.translate(0,n),this.ctx2d.rotate(3*Math.PI/2),this.ctx2d.scale(n/s,s/n));let a=super.draw2d(e,t,r,s,n);return this.ctx2d.restore(),a}return!1}render(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}resize(e,t){yt(this.rotation)&&([e,t]=[t,e]),super.resize(e,t)}};var Kr=class extends Qt{constructor(e,t=4){super(t,ot);d(this,"inputLocalVideoTracks",new Map);d(this,"inputLocalScreenTracks",new Map);d(this,"cameraNodeMap",new Map);d(this,"screenNodeMap",new Map);d(this,"textNodeMap",new Map);d(this,"imageNodeMap",new Map);d(this,"videoNodeMap",new Map);d(this,"videoContext");d(this,"mixNode");d(this,"destination");d(this,"manager");d(this,"stat");d(this,"_checkId",0);d(this,"autoSetFps",!0);this.manager=e,this.log.id+="mix",this.create2dVideoContext(),this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}),this.mixNode=new es(this.videoContext,this.log),this.mixNode.matchInputSize=!1}listenDeviceChange(){throw new Error("Method not implemented.")}enablePrintDetail(e=2e3){this._checkId=re.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}create2dVideoContext(){this.videoContext?this.videoContext.destroy():this.videoContext=new Fe({frameRate:15,logger:this.log,name:"mix-ctx"}),this.videoContext.create({alpha:!1})}setFps(e){this.autoSetFps=!1,this.videoContext.frameRate=e;for(let t of[...this.cameraNodeMap.values(),...this.screenNodeMap.values()])t.shouldUpdate=!1;setTimeout(()=>{var t;return(t=this.destination)==null?void 0:t.start(this.videoContext.frameRate)},500)}setFpsAuto(){var s;if(!this.autoSetFps)return;for(let n of[...this.cameraNodeMap.values(),...this.screenNodeMap.values()])n.shouldUpdate=!1;let e=null,t=0,r=!0;for(let[n,a]of this.inputLocalVideoTracks)a.profile.frameRate>t&&(t=a.profile.frameRate,e=n);for(let[n,a]of this.inputLocalScreenTracks)a.profile.frameRate>t&&(t=a.profile.frameRate,e=n,r=!1);if(e!==null){let n=r?this.cameraNodeMap.get(e):this.screenNodeMap.get(e);n&&(n.shouldUpdate=!0,n.tryVideoFrameCallback()),this.log.info("set mix fps: ",t)}else(s=this.destination)==null||s.start(this.videoContext.frameRate),this.log.info("fallback to timer, fps: ",this.videoContext.frameRate)}setMixBackground(e){this.mixNode&&(this.mixNode.backgroundColor=e)}resizeMixCanvas(e,t){var r;(r=this.mixNode)==null||r.resize(e,t)}startMix(){return f(this,null,function*(){var e;if(!this.mixNode||!this.destination)throw new Error("can't mix without necessary conditions");this.mixNode.disconnect(),this.mixNode.connect(this.destination),ci&&this.player.setCanvas(this.videoContext._canvas),this.setOutputMediaStreamTrack(this.destination.videoTrack),(e=this.manager)==null||e.changeInput(this)})}addCameraSource(e,t,r){if(this.inputLocalVideoTracks.has(e)||this.cameraNodeMap.has(e))throw new Error(`There is already a cameraSource with the same ID: ${e}`);let{mediaTrack:s}=t;if(!s)throw new Error("no mediaTrack, add cameraSource failed");let n;Je===16&&s instanceof CanvasCaptureMediaStreamTrack?n=this.videoContext.createVideoImageSource(s.canvas,{name:"cameraCanvasSource",logger:this.log}):n=this.videoContext.createVideoTrackSource(s,"cameraNodeSource"),n.resize(t.settings.width,t.settings.height),n.shouldUpdate=!1,this._connectMix(n,r,"cover"),this.inputLocalVideoTracks.set(e,t),this.cameraNodeMap.set(e,n),this.setFpsAuto()}addScreenSource(e,t,r){if(this.inputLocalScreenTracks.has(e)||this.screenNodeMap.has(e))throw new Error(`There is already a screenSource with the same ID: ${e}`);let{mediaTrack:s}=t;if(!s)throw new Error("no mediaTrack, add cameraSource failed");let n=this.videoContext.createVideoTrackSource(s,"screenNodeSource");n.resize(t.settings.width,t.settings.height),n.shouldUpdate=!1,this._connectMix(n,r),this.inputLocalScreenTracks.set(e,t),this.screenNodeMap.set(e,n),this.setFpsAuto()}addTextSource(e){let{id:t,content:r="",font:s,color:n,layout:a}=e;if(this.textNodeMap.has(t))throw new Error(`There is already a textSource with the same ID: ${t}`);let c=this.videoContext.createTextSource({content:r,font:s,color:n});c.resize(a.width,a.height),this._connectMix(c,a),this.textNodeMap.set(t,c)}addImageSource(e,t,r){if(this.imageNodeMap.has(e))throw new Error(`There is already a imageSource with the same ID: ${e}`);let s=this.videoContext.createVideoImageSource(t,{autoResize:!1,logger:this.log});s.resize(t.width,t.height),this._connectMix(s,r),this.imageNodeMap.set(e,s)}addVideoSource(e,t,r){if(this.videoNodeMap.has(e))throw new Error(`There is already a videoSource with the same ID: ${e}`);let s=this.videoContext.createVideoImageSource(t,{autoResize:!1,logger:this.log});s.resize(t.videoWidth,t.videoHeight),s.shouldUpdate=!1,this._connectMix(s,r),this.videoNodeMap.set(e,s)}updateCameraSource(e,t,r=null,s){let n=this.cameraNodeMap.get(e);if(n){if(r){if(Je===16&&r instanceof CanvasCaptureMediaStreamTrack)if(n instanceof Dt){let l=n.output;n.close(),n=this.videoContext.createVideoImageSource(r.canvas,{name:"cameraCanvasSource",logger:this.log}),n.connect(l),this.cameraNodeMap.set(e,n)}else n.image=r.canvas;else if(n instanceof Dt)n.replaceTrack(r);else{let l=n.output;n.close(),n=this.videoContext.createVideoTrackSource(r,"cameraNodeSource"),n.connect(l),this.cameraNodeMap.set(e,n)}let{width:a,height:c}=r.getSettings();a&&c&&n.resize(a,c)}s&&n.resize(s.width,s.height),(s||r)&&this.setFpsAuto(),this._changeMixLayout(n,t)}}updateScreenSource(e,t){let r=this.screenNodeMap.get(e);r&&this._changeMixLayout(r,t)}updateTextSource(e){let{id:t,content:r,font:s,color:n,layout:a}=e,c=this.textNodeMap.get(t);c&&(T(r)||(c.content=r),T(s)||(c.font=s),T(n)||(c.color=n),c.resize(a.width,a.height),this._changeMixLayout(c,a))}updateImageSource(e,t,r){let s=this.imageNodeMap.get(e);s&&(r&&(s.image=r,s.resize(r.width,r.height)),this._changeMixLayout(s,t))}updateVideoSource(e,t,r){let s=this.videoNodeMap.get(e);if(s){if(r){let n=s.image;n instanceof HTMLVideoElement&&this.stopVideoElement(n),s.image=r,s.resize(r.videoWidth,r.videoHeight)}this._changeMixLayout(s,t)}}_connectMix(e,t,r="contain"){if(!this.mixNode)return;let{mirror:s,rotation:n}=t;e.disconnect();let a=new Mt(this.videoContext,this.log,s,n);a=e.connect(a),t.fillMode||(t.fillMode=r),a.connect(this.mixNode,t)}_changeMixLayout(e,t){if(!this.mixNode)return;let{mirror:r,rotation:s}=t,n=e.output||e;n instanceof Mt&&(T(r)||(n.mirror=r),T(s)||(n.rotation=s),n.resize(e.width,e.height)),this.mixNode.changeInputLayout(n,t)}removeCameraSource(e){let t=this.inputLocalVideoTracks.get(e);if(!t)return;t.close(),this.inputLocalVideoTracks.delete(e);let r=this.cameraNodeMap.get(e);r&&(r.output instanceof Mt&&r.output.close(),r.close(),this.cameraNodeMap.delete(e)),this.checkAfterRemove(!0)}removeScreenSource(e){let t=this.inputLocalScreenTracks.get(e);if(!t)return;t.close(),this.inputLocalScreenTracks.delete(e);let r=this.screenNodeMap.get(e);r&&(r.output instanceof Mt&&r.output.close(),r.close(),this.screenNodeMap.delete(e)),this.checkAfterRemove(!0)}removeTextSource(e){let t=this.textNodeMap.get(e);t&&(t.output instanceof Mt&&t.output.close(),t.close(),this.textNodeMap.delete(e)),this.checkAfterRemove()}removeImageSource(e){let t=this.imageNodeMap.get(e);t&&(t.output instanceof Mt&&t.output.close(),t.close(),this.imageNodeMap.delete(e)),this.checkAfterRemove()}removeVideoSource(e){let t=this.videoNodeMap.get(e);t&&(t.output instanceof Mt&&t.output.close(),t.image instanceof HTMLVideoElement&&this.stopVideoElement(t.image),t.close(),this.videoNodeMap.delete(e)),this.checkAfterRemove()}checkAfterRemove(e=!1){e&&this.setFpsAuto()}stopVideoElement(e){e.pause(),e.src="",e.srcObject=null,e.remove()}close(){var e;super.close(),re.clearTask(this._checkId),(e=this.videoContext)==null||e.destroy(),delete this.mixNode,delete this.destination;for(let t of[...this.inputLocalVideoTracks.values(),...this.inputLocalScreenTracks.values()])t.close();this.inputLocalVideoTracks.clear(),this.inputLocalScreenTracks.clear(),this.cameraNodeMap.clear(),this.screenNodeMap.clear(),this.textNodeMap.clear(),this.imageNodeMap.clear();for(let t of this.videoNodeMap.values())t.image instanceof HTMLVideoElement&&this.stopVideoElement(t.image);this.videoNodeMap.clear(),this.log.info("localMixVideoTrack close, stop mix")}};var Tc=Gs();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:Tc,exposeOrigin:!0,permittedOrigins:["*"]})}catch(o){}var CE=function(o){return f(this,null,function*(){let i=null,e=bE(o);b.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let t=yield navigator.mediaDevices.getDisplayMedia(e);o.systemAudio&&t.getAudioTracks().length===0&&(wo&&dt<74||Oe||ne)&&b.warn("Your browser not support capture system audio");let r=t.getVideoTracks()[0];if(r){if(o.frameRate)try{yield r.applyConstraints({frameRate:{min:o.frameRate,ideal:o.frameRate},width:o.width,height:o.height})}catch(s){b.warn(`screen applyConstraints failed: ${s}`)}o.captureElement&&(yield RE(r,o.captureElement))}if(o.audio){let s=yE(o);b.info(`getUserMedia with constraints: ${JSON.stringify(s)}`),i=yield navigator.mediaDevices.getUserMedia(s),t.addTrack(i.getAudioTracks()[0])}return t})};function RE(o,i){return f(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&ae(o.cropTo))try{if(!(((e=o.getCaptureHandle())==null?void 0:e.handle)===Tc))return;let r=yield CropTarget.fromElement(i);yield o.cropTo(r)}catch(t){b.warn(`cropTo target failed ${t}`)}})}function yE(o){let i={echoCancellation:o.echoCancellation,autoGainControl:o.autoGainControl,noiseSuppression:o.noiseSuppression,sampleRate:o.sampleRate,channelCount:o.channelCount};return T(o.microphoneId)||(i.deviceId=o.microphoneId),{audio:i,video:!1}}function bE(o){let i={preferCurrentTab:o.preferDisplaySurface==="current-tab"||!!o.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:Oe?{max:o.width}:{ideal:o.width,max:o.width},height:Oe?{max:o.height}:{ideal:o.height,max:o.height},frameRate:o.frameRate,displaySurface:o.preferDisplaySurface||"monitor"};if(i.video=e,o.systemAudio){let{echoCancellation:t=!0,noiseSuppression:r=!1,autoGainControl:s=!1}=o;i.audio={echoCancellation:t,noiseSuppression:r,autoGainControl:s,sampleRate:48e3}}return i}var yp=CE;var Ke=class extends Be{constructor(e){super(e,2);d(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});d(this,"objectFit","contain");d(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}get isShareCurrentTab(){var e,t;try{return Tc===((t=(e=this.mediaTrack)==null?void 0:e.getCaptureHandle())==null?void 0:t.handle)}catch(r){return}}capture(u){return f(this,arguments,function*({systemAudio:e=!1,autoGainControl:t,echoCancellation:r,noiseSuppression:s,audioTrack:n,videoTrack:a,captureElement:c,preferDisplaySurface:l}){try{let h;return a||n?(h=new MediaStream,a&&h.addTrack(a),n&&h.addTrack(n)):(h=yield yp({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:t,echoCancellation:r,noiseSuppression:s,captureElement:c,preferDisplaySurface:l}),this.sourceTrack=h.getVideoTracks()[0]),yield this.setInputMediaStreamTrack(h.getVideoTracks()[0]),h}catch(h){throw this.log.error(`getDisplayMedia error observed ${h}`),h instanceof v?h:new v({code:A.INITIALIZE_FAILED,name:h.name,message:h.message})}})}switchDevice(e){return f(this,null,function*(){throw new Error("Method not implemented.")})}};M([st(function(e){this.setContentHint(e.contentHint||"detail")})],Ke.prototype,"capture",1);var Ii=class extends At{constructor(i){super(i),this._log.id=`s-${this._log.id}`}addAudioProcessor(i,e,t,r){this.pipeline.silentNode.setNode(t),this.pipeline.mixNode.setNode(e),this.pipeline.aec.setNode(r),this.enableTrackAEC(!1)}removeAudioProcessor(i,e,t,r){this.pipeline.aec.node===r&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}};var NE='registerProcessor("dumper",class extends AudioWorkletProcessor{constructor(e){super(),this.sourceSampleRate=e.processorOptions.sourceSampleRate||48e3,this.targetSampleRate=e.processorOptions.targetSampleRate||48e3,this.port.onmessage=e=>{this.port2=e.data.port}}process(e){return(this.port2||this.port).postMessage(this.resampleAll(e,this.sourceSampleRate,this.targetSampleRate)),!0}resampleAll(r,s,a){if(s===a)return r;var o=[];for(let t=0;t<r.length;t++){o[t]=[];for(let e=0;e<r[t].length;e++)o[t][e]=this.resample(r[t][e],s,a)}return o}resample(t,e,r){if(e===r)return t;var s=Math.round(t.length*(this.targetSampleRate/this.sourceSampleRate)),a=new Float32Array(s),o=(t.length-1)/(s-1);a[0]=t[0];for(let e=1;e<s-1;e++){var l=e*o,p=Math.floor(l),h=Math.ceil(l);a[e]=t[p]+(t[h]-t[p])*(l-p)}return a[s-1]=t[t.length-1],a}});',Lu;function En(o,i=48e3,e=1,t){return f(this,null,function*(){let r=Ee("dump");Lu||(Lu=ji(r,URL.createObjectURL(new Blob([NE],{type:"application/javascript"})))),yield Lu;let s=r.sampleRate,n=new AudioWorkletNode(r,"dumper",{numberOfInputs:o.length,numberOfOutputs:0,processorOptions:{sourceSampleRate:s,targetSampleRate:i}});return n.channelCountMode="explicit",n.channelCount=e,t&&n.port.postMessage({port:t},[t]),o.forEach((a,c)=>a.connect(n,0,c)),new ReadableStream({start(a){n.port.onmessage=c=>{a.enqueue(c.data)}},cancel(){o.forEach(a=>a.disconnect(n)),n.port.close()}})})}var Ec=class extends Wa{constructor(e){super();this.room=e;d(this,"_localAudioTrack");d(this,"_localScreenAudioTrack");d(this,"log",b.createLogger({id:"am"}));d(this,"denoiser");d(this,"voiceChanger");d(this,"mixChangedDebounce");d(this,"audioProcessor");d(this,"encodePipeline",[]);d(this,"decodePipeline",[]);d(this,"getPCMAbortCtrlMap",new Map);d(this,"audioFrameEventConfigMap",new Map);d(this,"audioReferenceMap",new Map);d(this,"isLocalAudioNeedAudioProcess",!1);d(this,"isScreenAudioNeedAudioProcess",!1);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.installEvent()}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}get _localScreenAudioPipeline(){var e;return(e=this._localScreenAudioTrack)==null?void 0:e.pipeline}dump(e){var u,h;if(!this._localAudioTrack)return;let t=[],r=[];(u=this._localAudioPipline)!=null&&u.source.node&&(t.push(this._localAudioPipline.source.node),r.push("mic")),(h=this._localAudioPipline)!=null&&h.denoiser.node&&(t.push(this._localAudioPipline.denoiser.node),r.push("mic-processed")),this.mixWeight>1&&(t.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),r.push("mix")),this.log.info(`dump audio track ${r}, duration: ${e}`);let s=new AbortController,n=[],a=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),s.abort("timeout")},e*1e3),c=()=>{for(let m=0;m<r.length;m++){let g=URL.createObjectURL(new Blob(n[m])),S=document.createElement("a");S.href=g,S.download=`${r[m]}.pcm`,S.style.display="none",document.body.appendChild(S),S.click(),URL.revokeObjectURL(g),S.remove()}clearTimeout(a),s.abort("download")},l=En(t).then(m=>m.pipeTo(new WritableStream({write(g){g.forEach((S,_)=>n[_]=n[_]?n[_].concat(S[0]):[S[0]])}}),s).catch(g=>c));return{then:l.then.bind(l),download:c}}getPCM(e,t){var R,K,G;if(typeof WritableStream=="undefined"){this.log.warn("getPCM failed: browser not support WritableStream");return}let{enable:r,sampleRate:s=48e3,channelCount:n=1,port:a}=(t===""?this.audioFrameEventConfigMap.get(""):this.audioFrameEventConfigMap.get(t)||this.audioFrameEventConfigMap.get("*"))||{};if(!r)return;this.log.info(`getPCM ${t||"local"}`);let c=Math.floor(s*.04),l=new Float32Array(c),u=new Float32Array(c),h,m,g=0,S=new AbortController,_=t===""?(R=this._localAudioTrack)==null?void 0:R.mediaTrack:(G=(K=this.room)==null?void 0:K.remotePublishedUserMap.get(t))==null?void 0:G.remoteAudioTrack.mediaTrack;if(!_){this.log.info(`getPCM failed: ${t||"local"} has no audio track`);return}let I=Ee().createMediaStreamSource(new MediaStream([_]));return En([I],s,n,a).then(ee=>ee.pipeTo(new WritableStream({write(_e){_e[0][0]&&(g+_e[0][0].length>c?(l.set(_e[0][0].subarray(0,c-g),g),h=_e[0][0].subarray(c-g),_e[0][1]&&(u.set(_e[0][1].subarray(0,c-g),g),m=_e[0][1].subarray(c-g)),g+=c-g):(h&&(l.set(h,g),g+=h.length,h=void 0),m&&(u.set(m,g),m=void 0),l.set(_e[0][0],g),_e[0][1]&&u.set(_e[0][1],g),g+=_e[0][0].length),g>=c&&(g=0,e({userId:t,sampleRate:s,channelCount:n,data:n===1?l:[l,u]}),l=new Float32Array(c),u=new Float32Array(c)))}}),S).catch(_e=>this.log.warn(`stop getPCM reason:${_e}`))),S}get hasScreenAudioTrack(){return!T(this._localScreenAudioTrack)}get hasAudioTrack(){return!T(this._localAudioTrack)}changeInput(e){if(e instanceof Ii)return this._localScreenAudioTrack=e,this.isScreenAudioNeedAudioProcess&&this.audioProcessor&&(e.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((t,r)=>{e.mixAudioReference(t,r)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof At)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),this.isLocalAudioNeedAudioProcess&&this.audioProcessor&&(e.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((t,r)=>{e.mixAudioReference(t,r)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof Yt)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixAudioReference(e,t){var r;(r=this._localAudioTrack)==null||r.mixAudioReference(e,t)}unMixAudioReference(e){var t;(t=this._localAudioTrack)==null||t.unMixAudioReference(e)}setAudioReferenceVolume(e,t){var r;(r=this._localAudioTrack)==null||r.setAudioReferenceVolume(e,t)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,t;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(t=this._localScreenAudioTrack)==null?void 0:t.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof Ii?delete this._localScreenAudioTrack:e instanceof At?delete this._localAudioTrack:e instanceof Yt}addDenoiser(e){var t;this.denoiser=e,(t=this._localAudioTrack)==null||t.addDenoiser(e)}addAudioProcessor(e,t,r,s){var n;this.audioProcessor=[e,t,r,s],this.isLocalAudioNeedAudioProcess&&this._localAudioTrack&&(this._localAudioTrack.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((a,c)=>{var l;(l=this._localAudioTrack)==null||l.mixAudioReference(a,c)})),this.isScreenAudioNeedAudioProcess&&this._localScreenAudioTrack&&((n=this._localScreenAudioTrack)==null||n.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((a,c)=>{var l;(l=this._localScreenAudioTrack)==null||l.mixAudioReference(a,c)}))}removeDenoiser(e){var t;return delete this.denoiser,(t=this._localAudioTrack)==null?void 0:t.removeDenoiser(e)}addVoiceChanger(e,t){var r;this.voiceChanger=[e,t],(r=this._localAudioTrack)==null||r.pipeline.voiceChanger.setNode(e,t)}removeVoiceChanger(){var e;delete this.voiceChanger,(e=this._localAudioTrack)==null||e.pipeline.voiceChanger.deleteNode()}removeAudioProcessor(e,t,r,s){var n;delete this.audioProcessor,(n=this._localAudioTrack)==null||n.removeAudioProcessor(e,t,r,s)}destroy(){this.close(),this.audioReferenceMap.clear(),this.getPCMAbortCtrlMap.forEach(e=>e==null?void 0:e.abort("destroy")),this.getPCMAbortCtrlMap.clear(),this.audioFrameEventConfigMap.clear(),this.uninstallEvent()}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}handleLocalTrackStarted({room:e,userId:t}){var s;if(e!==this.room||this.getPCMAbortCtrlMap.get(t))return;let r=this.getPCM(n=>{var a;(a=this.room)==null||a.emit("audio-frame",n)},"");this.getPCMAbortCtrlMap.set(t,r),this.getPCMAbortCtrlMap.get(t)&&((s=this._localAudioTrack)==null||s.on("input-media-track-changed",()=>{let n=this.getPCMAbortCtrlMap.get(t);n&&(n.abort("inputMediaTrackChanged"),n=this.getPCM(a=>{var c;(c=this.room)==null||c.emit("audio-frame",a)},""),this.getPCMAbortCtrlMap.set(t,n))}))}handleLocalTrackStopped({room:e,userId:t}){if(e!==this.room)return;let r=this.getPCMAbortCtrlMap.get(t);r&&(r.abort("stopLocalAudio"),this.getPCMAbortCtrlMap.delete(t))}handleRemoteTrackStarted({room:e,userId:t}){if(e===this.room&&!this.getPCMAbortCtrlMap.get(t)){let r=this.room.audioManager.getPCM(s=>{var n;(n=this.room)==null||n.emit("audio-frame",s)},t);this.getPCMAbortCtrlMap.set(t,r)}}handleRemoteTrackStopped({room:e,userId:t}){if(e!==this.room)return;let r=this.getPCMAbortCtrlMap.get(t);r&&(r.abort("stopRemoteAudio"),this.getPCMAbortCtrlMap.delete(t))}installEvent(){E.on("113",this.handleLocalTrackStarted,this),E.on("114",this.handleLocalTrackStopped,this),E.on("115",this.handleRemoteTrackStarted,this),E.on("116",this.handleRemoteTrackStopped,this)}uninstallEvent(){E.off("113",this.handleLocalTrackStarted),E.off("114",this.handleLocalTrackStopped),E.off("115",this.handleRemoteTrackStarted),E.off("116",this.handleRemoteTrackStopped)}updateAudioReference({type:e,audioReference:t,refId:r,volume:s}){if(e==="add"){if(this.audioReferenceMap.get(r)||!t||(this.audioReferenceMap.set(r,t),!this.audioProcessor))return;this.mixAudioReference(t,r)}else if(e==="remove")this.audioReferenceMap.get(r)&&(this.audioReferenceMap.delete(r),this.unMixAudioReference(r));else if(e==="updateVolume"){if(!this.audioProcessor||T(s))return;this.setAudioReferenceVolume(r,s)}}};function Sc(o=30,i=2){return Y((e,t)=>function(...r){return new Promise((s,n)=>{let a=setTimeout(()=>{let c=new v({code:A.API_CALL_TIMEOUT,message:`checkPendingPromise ${t}() timeout ${o}s`});b.warn(c),i===2?n(c):i===1&&s()},o*1e3);e.apply(this,r).then(s,n).finally(()=>{clearTimeout(a)})})})}var Ai=class Ai extends Wr{constructor(e,t,r){super({userId:t.userId,sdkAppId:e.sdkAppId,mediaType:r,room:e});this.room=e;this.user=t;d(this,"tinyId");d(this,"isRemote",!0);d(this,"jitterBufferDelay",0);d(this,"availableState");d(this,"remotePublishState");d(this,"_triggerCheckDecodeSubject",nt(me(this,Ai.STATE_SUBSCRIBE)));this.tinyId=t.tinyId,this.availableState=new $(`${t.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new $(`${t.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),ue(Kl(me(this,$.STATECHANGED),me(this.remotePublishState,$.STATECHANGED)),_n(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),be(c=>{this.availableState.state!==(c?$.ON:$.OFF)&&(this.availableState.state=c?$.ON:$.OFF),this.updatePlayingState(c)}));let s=ue(me(this.player,he.ERROR),Si(c=>c.code===MediaError.MEDIA_ERR_DECODE)),n=ue(pn(5e3),Si(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived?!1:this.player.isPlaying||(this.kind===p.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)?(this.reportDecodeResult(!0),!1):!0)),a=ue(eu(s,n),He(me(this,$.INIT)));ue(this._triggerCheckDecodeSubject,Si(()=>!this.ignoreDecodeError),Qr(a),be(c=>{this.reportDecodeResult(!1,c)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get ignoreDecodeError(){var t,r;return(((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===Ai.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===$.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,t){var s,n;let r=this.kind===p.AUDIO;if(N[e?"addSuccessEvent":"addFailedEvent"]({key:r?504700:514702}),!r){let a=((s=this.room)==null?void 0:s.downlinkVideoCodec.toUpperCase())||"H264";N[e?"addSuccessEvent":"addFailedEvent"]({key:Fo[`DECODE_${a}_RESULT`]}),e||this.log.warn(`${(n=this.room)==null?void 0:n.downlinkVideoCodec} decode failed`)}e||(N.addEnum({key:r?504701:514703,value:Pr()}),se.uploadEvent({log:`stat-decode-failed-${this.kind}-${Lr()||Hi()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===p.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:t}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isRemotePublished||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isRemotePublished} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?$.ON:$.OFF}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};d(Ai,"STATE_SUBSCRIBE","subscribe"),M([Sc(5,1)],Ai.prototype,"waitHasMediaTrack",1),M([Te($.INIT,Ai.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),E.emit(C.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),mt(521716,!1)],Ai.prototype,"subscribe",1),M([Te(Ai.STATE_SUBSCRIBE,$.INIT,{sync:!0,success(){this.log.info("unsubscribed"),E.emit(C.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],Ai.prototype,"unsubscribe",1);var ts=Ai;var Yt=class extends ts{constructor(e,t){super(e,t,1);d(this,"volume",0);d(this,"mediaType",1);d(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return Gr.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}decodeFrame(e){if(!this.manager)return e;let t=e;for(let r of this.manager.decodePipeline)if(r&&(t=r({frame:t,track:this}),!t))return;return t}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get isRemotePublished(){return this.user.muteState.audioAvailable}};function DE(o){return[15,30,45,60].reduce((e,t)=>Math.abs(t-o)<Math.abs(e-o)?t:e)}var Ci=class extends ts{constructor(e,t,r=4){super(e,t,r);d(this,"mediaType",4);d(this,"source");d(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager,this.once("first-video-frame",s=>{this.room.emit("first-video-frame",s)})}play(e,t){return(de(t==null?void 0:t.canvasRender)?t.canvasRender:Je===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,t).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new Fe({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let t=new Yr(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(t),this.player.setCanvas(e._canvas),$r()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let t=this.decodeFPS,r=DE(t);if(!q(t)||t<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${t} `);return}if(r===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${r} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${t}, closest: ${r}, current: ${e.frameRate}`),e.frameRate=r}get decodeFPS(){var n;let{msg_video_status:e}=((n=this.room.heartbeatReport)==null?void 0:n.msg_down_stream_info.find(a=>a.msg_user_info.str_identifier===this.userId))||{},t=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let r=e.find(a=>a.uint32_video_stream_type===t);return(r==null?void 0:r.uint32_video_dec_fps)||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),super.stop()}decodeFrame(e){if(!this.manager)return e;for(let t of this.manager.decodePipeline)if(t&&(e=t({frame:e,track:this}),!e))return;return e}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(e){this.room.changeType(e,this.user)}get isRemotePublished(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},is=class extends Ci{constructor(e,t){super(e,t,2);d(this,"mediaType",2);d(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var rs=new Map;E.on(C.JOIN_SUCCESS,({room:o})=>{Ae(o.userId,{eventId:32788})});E.on(C.LEAVE_START,({room:o})=>{Ae(o.userId,{eventId:32789})});E.on(C.LOCAL_TRACK_PUBLISHED,({track:o})=>{if(o.room){let i=32769;o.mediaType===4?i=32768:o.mediaType===2&&(i=32805),Ae(o.room.userId,{eventId:i})}});E.on(C.LOCAL_TRACK_UNPUBLISHED,({track:o})=>{if(o.room){let i=32771;o.mediaType===4?i=32770:o.mediaType===2&&(i=32806),Ae(o.room.userId,{eventId:i})}});E.on(C.TRACK_MUTED,({track:o})=>{o.room&&(o.kind===p.AUDIO?Ae(o.room.userId,{eventId:o.isRemote?32785:32772,remoteUserId:o.isRemote?o.userId:void 0}):Ae(o.room.userId,{eventId:o.isRemote?32784:32773,remoteUserId:o.isRemote?o.userId:void 0}))});E.on(C.TRACK_UNMUTED,({track:o})=>{o.room&&(o.kind===p.AUDIO?Ae(o.room.userId,{eventId:o.isRemote?32787:32774,remoteUserId:o.isRemote?o.userId:void 0}):Ae(o.room.userId,{eventId:o.isRemote?32786:32775,remoteUserId:o.isRemote?o.userId:void 0}))});E.on(C.REMOTE_TRACK_SUBSCRIBED,({track:o})=>{o.room&&(o.mediaType===1&&Ae(o.room.userId,{eventId:32777,remoteUserId:o.userId}),o.mediaType===4&&Ae(o.room.userId,{eventId:32776,remoteUserId:o.userId}),o.mediaType===8&&Ae(o.room.userId,{eventId:32803,remoteUserId:o.userId}))});E.on(C.REMOTE_TRACK_UNSUBSCRIBED,({track:o})=>{o.room&&(o.mediaType===1&&Ae(o.room.userId,{eventId:32779,remoteUserId:o.userId}),o.mediaType===4&&Ae(o.room.userId,{eventId:32778,remoteUserId:o.userId}),o.mediaType===8&&Ae(o.room.userId,{eventId:32804,remoteUserId:o.userId}))});E.on(C.SWITCH_DEVICE_SUCCESS,({track:o})=>{o.room&&Ae(o.room.userId,{eventId:o.kind===p.VIDEO?32780:32781})});E.on(C.LOCAL_TRACK_REPLACED,({track:o})=>{o.room&&Ae(o.room.userId,{eventId:o.kind===p.VIDEO?32782:32783})});E.on(C.SIGNAL_CONNECTION_STATE_CHANGED,({room:o,prevState:i,state:e})=>{let t;switch(e){case"CONNECTED":i==="RECONNECTING"?t=32795:t=32791;break;case"DISCONNECTED":i==="RECONNECTING"?t=32796:t=32790;break;case"RECONNECTING":t=32794;break}t&&Ae(o.userId,{eventId:t})});E.on(C.PEER_CONNECTION_STATE_CHANGED,({room:o,prevState:i,state:e,remoteUserId:t})=>{let r=!!t,s;switch(e){case"CONNECTED":i==="RECONNECTING"?s=r?32801:32798:s=r?32793:32792;break;case"DISCONNECTED":i==="RECONNECTING"&&(s=r?32802:32799);break;case"RECONNECTING":s=r?32800:32797;break}s&&Ae(o.userId,{eventId:s,remoteUserId:t})});E.on(C.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:o,userId:i,remoteUserId:e,codec:t,isHWCodec:r,prevImplementation:s,streamType:n})=>{let a=r?1:0;s||(a=r?3:2);let c={H264:0,H265:1,VP8:2}[t.toUpperCase()],l={eventId:4004,param1:a,param2:c,streamType:n||2};e&&(l.remoteUserId=e,l.eventId=4005),Ae(i,l),N.addEnum({key:e?514701:513701,value:a}),N.addEnum({key:e?514700:513700,value:c})});E.on(C.LOCAL_TRACK_RECAPTURE,({track:o,error:i})=>{if(o.userId){let e={eventId:2003,param1:0};o.kind===p.AUDIO?(e.streamType=1,i&&(e.param1=2)):(e.streamType=o.streamType==="auxiliary"?7:2,i&&(e.param1=8)),Ae(o.userId,e)}});function Ae(o,i){let e=w(D({},i),{timestamp:gs()});rs.has(o)?rs.get(o).push(e):rs.set(o,[e])}function bp(o){if(rs.has(o)){let i=rs.get(o).map(e=>({uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,uint32_param1:e.param1,uint32_param2:e.param2,uint32_video_stream_type:e.streamType}));return rs.delete(o),i}return[]}function Np(...o){return Y((i,e)=>function(...t){return ME.call(this,o,t,e,this._name),i.apply(this,t)})}function ME(o,i,e,t){try{if(Se(o))for(let r=0;r<o.length;r++)Ic.call(this,{rule:o[r],value:i[r],key:o[r].name,fnName:e,className:t});else Ic.call(this,{rule:o,value:i[0],key:o.name,fnName:e,className:t})}catch(r){throw b.error(r),r}}function Ic({rule:o,value:i,key:e,fnName:t,className:r}){if(T(i)){if(o.required)throw new v({code:A.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_REQUIRED,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(T(o.defaultValue))return;i=o.defaultValue}if(Array.isArray(o.type)){let a=!1;for(let c=0;c<o.type.length;c++)o.type[c]===null&&i===null&&(a=!0),ae(o.type[c])&&i instanceof o.type[c]&&(a=!0),te(o.type[c])&&Re(i)===o.type[c].toLowerCase()&&(a=!0);if(!a)throw new v({code:A.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_TYPE,data:{key:e,rule:{type:o.type.map(c=>Mr(c)?_o(c):te(c)?c:Re(c))},fnName:t,value:i},link:{className:r,fnName:t}})})}else if(!T(o.type)&&Re(i)!==o.type)throw new v({code:A.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_TYPE,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(o.allowEmpty===!1){let a=q(i)&&(i===0||Number.isNaN(i)),c=te(i)&&i.trim()==="";if(a||c)throw new v({code:A.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_EMPTY,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})})}if(o.notLessThanZero&&q(i)&&i<0)throw new v({code:A.INVALID_PARAMETER,message:V({key:L.CANNOT_LESS_THAN_ZERO,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(!T(o.min)&&q(i)&&i<o.min)throw new v({code:A.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_MIN,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(!T(o.max)&&q(i)&&i>o.max)throw new v({code:A.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_MAX,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(te(o.instanceOf)){if(!i||i._name!==o.instanceOf)throw new v({code:A.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})})}else if(ae(o.instanceOf)&&!(i instanceof o.instanceOf))throw new v({code:A.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});if(o.values&&!o.values.includes(i))throw new v({code:A.INVALID_PARAMETER,message:V({key:L.INVALID_PARAMETER_RANGE,data:{key:e,rule:o,fnName:t,value:i},link:{className:r,fnName:t}})});let{properties:s}=o;ze(s)&&pt(i)&&Object.keys(s).forEach(a=>{Ic.call(this,{rule:s[a],value:i&&i[a],key:`${e}.${a}`,fnName:t,className:r})});let{arrayItem:n}=o;ze(n)&&Se(i)&&i.forEach((a,c)=>{Ic.call(this,{rule:n,value:a,key:`${e}[${c}]`,fnName:t,className:r})}),ae(o.validate)&&o.validate.call(this,i,e,t,r,this)}var vp=Ge(it(),1);var Ac=class extends vp.EventEmitter{constructor(e,t,r="userId"){super();this.mySelfId=e;this._log=t;this.key=r;d(this,"userMap",new Map);d(this,"remotePublishedUserMap",new Map)}get hasRobotUser(){return!![...this.remotePublishedUserMap.values()].find(e=>e.isRobot)}getPublishedUser(e){return this.remotePublishedUserMap.get(e)}addUser(e){let t=e[this.key],{userId:r,tinyId:s,role:n}=e;if(this.userMap.has(t))return;let a={userId:r,tinyId:s,role:n===20?"anchor":"audience"};this.userMap.set(t,a),this.emit("1",a)}deleteUser(e,t){let r=this.userMap.get(e);if(!r)return;let s=`peer leave [${e}]`;T(t)||(s+=`:${Td[t]}`),this._log.info(s);let n=this.remotePublishedUserMap.get(e);if(n){let a=n.muteState;n.flag=0,this.emit("5",n.userId),this.deleteRemotePublishedUser(e),this.emit("6",{prevMuteState:a,muteState:n.muteState,flag:0})}this.userMap.delete(e),this.emit("2",r.userId)}setUserList(e){this.userMap.forEach(t=>{e.findIndex(r=>r[this.key]===t[this.key])<0&&this.deleteUser(t[this.key],0)}),e.forEach(t=>{!this.userMap.has(t[this.key])&&t[this.key]!==this.mySelfId&&this.addUser(t)})}addRemotePublishedUser(e){this.remotePublishedUserMap.has(e[this.key])||this.remotePublishedUserMap.set(e[this.key],e)}deleteRemotePublishedUser(e){this.remotePublishedUserMap.has(e)&&this.remotePublishedUserMap.delete(e)}setRemotePublishedUserList(e){this.remotePublishedUserMap.forEach(t=>{let r=t[this.key];if(e.findIndex(s=>s[this.key]===t[this.key])<0){this._log.info(`remote [${r}] unpublish`);let s=t.muteState;t.flag=0,this.emit("5",t.userId),this.deleteRemotePublishedUser(r),this.emit("6",{prevMuteState:s,muteState:t.muteState,flag:0})}}),e.forEach(t=>{var u;let r=t[this.key];if(r===this.mySelfId)return;let{flag:s,userId:n,tinyId:a}=t,c=xi(s,n),l=(u=this.remotePublishedUserMap.get(r))==null?void 0:u.muteState;if(l){let h=this.remotePublishedUserMap.get(r);h&&h.flag!==s&&(h.flag=s,this._log.info(`remote publish updated: ${JSON.stringify(h.muteState)}`),this.emit("6",{prevMuteState:l,muteState:c,flag:s}))}else this._log.info(`remote publish. state: ${JSON.stringify(c)}`),this.addUser({userId:n,tinyId:a,role:20}),this.emit("3",t),this.emit("6",{prevMuteState:xi(0,n),muteState:c,flag:s})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}};function Pu({timesInSecond:o,maxSizeInSecond:i,getSize:e}){return Y((t,r)=>{let s=new WeakMap;return E.on(C.ROOM_DESTROY,({room:n})=>s.delete(n)),function(...n){let a=s.get(this);if(a||(a={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},s.set(this,a)),a.timestamp===0?a.timestamp=Date.now():Date.now()-a.timestamp>1e3&&(a.timestamp=Date.now(),a.callCountInSecond=0,a.totalSizeInSecond=0),e&&(a.totalSizeInSecond+=e(...n)),a.timestamp!==0&&Date.now()-a.timestamp<1e3&&(a.callCountInSecond>=o||a.totalSizeInSecond>i))throw new v({code:A.INVALID_OPERATION,message:V({key:L.CALL_FREQUENCY_LIMIT,data:{isTimes:a.callCountInSecond>=o,isSize:a.totalSizeInSecond>i,name:r,timesInSecond:o,maxSizeInSecond:i}})});a.callCountInSecond++,t.call(this,...n)}})}var OE="2025-08-01 11:33:48",Dp=!0,Mp=function(){var o;if(Dp){Dp=!1,b.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${ii}/en/index.html`),console.info(`* Changelog: ${ii}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),b.info("TRTC Web SDK Version:",xe),Wt||b.debug("Build Time:",OE);let i=`UA: ${navigator.userAgent}
53
- CPU core: ${navigator.hardwareConcurrency}, GPU: ${Zd()}`,e=navigator.deviceMemory;e&&(i+=`, minRAM: ${e}GB`),b.info(i),b.info(`URL: ${location.href}${((o=self.frameElement)==null?void 0:o.tagName)==="IFRAME"?" in iframe":""}`),xr().then(t=>{t&&b.info(Ft)})}};var Ot={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"};var U={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},kt=(y=>(y[y.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",y[y.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",y[y.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",y[y.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",y[y.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",y[y.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",y[y.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",y[y.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",y[y.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",y[y.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",y[y.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",y[y.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",y[y.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",y[y.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",y[y.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",y[y.INVALID_ROOM_ID_REQUIRED=5015]="INVALID_ROOM_ID_REQUIRED",y[y.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",y[y.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",y[y.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",y[y.INVALID_ROOM_ID_TYPE_MISMATCH=5019]="INVALID_ROOM_ID_TYPE_MISMATCH",y[y.INVALID_ROOM_ID_DUPLICATE=5020]="INVALID_ROOM_ID_DUPLICATE",y[y.INVALID_OPERATION=5100]="INVALID_OPERATION",y[y.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",y[y.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",y[y.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",y[y.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",y[y.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",y[y.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",y[y.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",y[y.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",y[y.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",y[y.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",y[y.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",y[y.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",y[y.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",y[y.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",y[y.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",y[y.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",y[y.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",y[y.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",y[y.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",y[y.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",y[y.DEVICE_ERROR=5300]="DEVICE_ERROR",y[y.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",y[y.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",y[y.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",y[y.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",y[y.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",y[y.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",y[y.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",y[y.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",y[y.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",y[y.SERVER_ERROR=5400]="SERVER_ERROR",y[y.NEED_TO_BUY=5401]="NEED_TO_BUY",y[y.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",y[y.OPERATION_FAILED=5500]="OPERATION_FAILED",y[y.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",y[y.REJOIN_FAILED=5502]="REJOIN_FAILED",y[y.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",y[y.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",y[y.VIDEO_ENCODE_FAILED=5505]="VIDEO_ENCODE_FAILED",y[y.AUDIO_ENCODE_FAILED=5506]="AUDIO_ENCODE_FAILED",y[y.VIDEO_DECODE_FAILED=5507]="VIDEO_DECODE_FAILED",y[y.AUDIO_DECODE_FAILED=5508]="AUDIO_DECODE_FAILED",y[y.OPERATION_ABORT=5998]="OPERATION_ABORT",y[y.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",y))(kt||{});function kp({code:o,params:i,enableDocLink:e=!1}){let t="",r,s=kt[o];try{r=Op[s]}catch(n){r=Op.UNKNOWN_ERROR}return ae(r)?t=r(i):te(r)&&(t=r),i.fnName&&!t.includes(i.fnName)&&(t[t.length-1]!=="."&&(t+="."),t+=` thrown from ${i.fnName}()`),e&&(t+=" doc:"),t}var Op=w(D({},Ue),{INVALID_PARAMETER({fnName:o}){return`the parameters of the '${o}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:o,rule:i,fnName:e,value:t}){let r=`${o||i.name}`,s="";return Array.isArray(i.type)?s=i.type.join("|"):s=i.type,`'${r}' must be type of ${s} when calling ${e}(), received type: ${Re(t)}.`},INVALID_PARAMETER_EMPTY({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:o,rule:i,fnName:e,value:t}){let r=`${o||i.name}`,s=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${s} when calling ${e}(), received type: ${Re(t)}.`},INVALID_PARAMETER_RANGE({key:o,rule:i,fnName:e,value:t}){return`'${o||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:o,rule:i,fnName:e}){return`'${o||i.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:o,rule:i,value:e}){return`the min value of ${o||i.name} is ${i.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:o,rule:i,value:e}){return`the max value of ${o||i.name} is ${i.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:o,fnName:i}){return`'${o}' is not found in the document object when calling ${i}().`},INVALID_ELEMENT_ID_TYPE({key:o,fnName:i,type:e}){return`the element corresponding to '${o}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`},INVALID_STREAM_ID({key:o}){return`'${o}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:o}){return`'${o}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:o}){return`'${o}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:o}){return`'${o}' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.`},INVALID_ROOM_ID_REQUIRED(){return"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required."},INVALID_ROOM_ID_TYPE_MISMATCH({key:o}){return`The type of target roomId must match the current roomId. Current room is using '${o}', but received '${o==="strRoomId"?"roomId":"strRoomId"}'.`},INVALID_ROOM_ID_DUPLICATE({key:o}){return`the target '${o}' must not be the same as the current '${o}'.`},INVALID_STREAM_TYPE:({fnName:o})=>`'streamType' is required when 'userId' is not '*', calling ${o}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:o}){return`the API '${o}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:o}){return`cannot ${o} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:o,value:i}){return`cannot ${o} because remote user(userId: ${i.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:o,value:i}){return`cannot ${o} because remote user(userId: ${i.userId}) does not publishing ${i.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:o}){return`you are already ${o}(), cannot repeated call '${o}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:o}){return`cannot call '${o}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:o}){return`cannot call '${o}' because the microphone or screen share is not turned on.`},INVALID_BUFFER_EMPTY:({key:o})=>`the buffer size of paramerter '${o}' cannot be empty`,INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>"role: 'audience' cannot call this api.",INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:({fnName:o})=>`you need to call ${o}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:o}){return`the current browser does not support the capability of the function '${o}' you are calling, please check the API documentation.`},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION({fnName:o}){return`cannot call ${o} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:o,error:i}){return`'${o}' got device exception${i?`, error: ${i.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:o,deviceType:i=eo(o),error:e}){return`NotFoundError, no ${i} detected, please check your device and the configuration on '${o}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:o,deviceType:i=eo(o),error:e}){return`NotAllowedError, you have disabled ${i} access, please allow the current application to use the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:o,deviceType:i=eo(o),error:e}){return`NotReadableError, the ${i} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:o,deviceType:i=eo(o),error:e}){return`OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct${e?`, error: ${e.toString()}.`:"."}`},DEVICE_INVALID_STATE_ERROR({fnName:o,deviceType:i=eo(o),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:o,deviceType:i=eo(o),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${i}, and it is recommended to turn on the ${i} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:o,deviceType:i=eo(o),error:e}){return`AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal${e?` error: ${e.toString()}.`:"."}`},CAMERA_RECOVER_FAILED({error:o}){return`camera recover capture failed ${(o==null?void 0:o.name)||""}: ${(o==null?void 0:o.originMessage)||(o==null?void 0:o.message)}`},MICROPHONE_RECOVER_FAILED({error:o}){return`microphone recover capture failed ${(o==null?void 0:o.name)||""}: ${(o==null?void 0:o.originMessage)||(o==null?void 0:o.message)}`},OPERATION_FAILED({fnName:o,error:i}){return`'${o}' failed, reason: ${i==null?void 0:i.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:o}){return`an error was caught on trtc.on('${o}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:o,error:i}){return`video context error ${o} ${(i==null?void 0:i.name)||""} ${(i==null?void 0:i.message)||""}`},SERVER_ERROR({fnName:o,error:i}){return`'${o}' got server error: ${i==null?void 0:i.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:o,url:i}){return`You need to buy packages for ${o}. Refer to: ${i}`},ACCOUNT_NO_MONEY:({fnParams:o})=>`your TRTC account run out of credit, please recharge.${o.sdkAppId?` SDKAppId: ${o.sdkAppId}`:""}`,OPERATION_ABORT({fnName:o}){return`'${o}' abort`},UNKNOWN_ERROR({fnName:o,error:i}){return`'${o}' throw unknown exception${i?`, error: ${i.toString()}.`:"."}`}});function eo(o){if(!o)return"camera";let i=o.toLowerCase();return i.includes("screen")?"screen share":i.includes("audio")?"microphone":"camera"}var Vu=class o extends Error{constructor({code:e,extraCode:t,message:r="",messageParams:s,fnName:n="",originError:a,data:c}){var u;let l;r?l=r:l=kp({code:e===U.SERVER_ERROR?e:t||e,params:D({fnName:n,error:a},s)});super(l);d(this,"name","RtcError");d(this,"code");d(this,"extraCode");d(this,"functionName");d(this,"message");d(this,"data");d(this,"handler");d(this,"originError");this.name=kt[e],this.code=e,this.extraCode=t,this.functionName=n,this.originError=a,this.message=l,this.data=c,this.extraCode===5302&&((u=this.originError)!=null&&u.message.includes("system"))&&(this.handler=()=>{let h={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},m={startLocalVideo:"webcam",startLocalAudio:"microphone"},g=document.createElement("a");wr?g.href=`ms-settings:privacy-${m[this.functionName]}`:Gt&&(g.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${h[this.functionName]}`),g.href.length>0&&g.click()})}static convertFrom(e,t,r){let s=e;if(e instanceof v){let{stack:n}=e,a={code:U.UNKNOWN_ERROR,fnName:t,originError:e};switch(e.getCode()){case A.INVALID_PARAMETER:a.code=U.INVALID_PARAMETER,a.message=e.message;break;case A.INVALID_OPERATION:a.code=U.INVALID_OPERATION;break;case A.NOT_SUPPORTED:case A.NOT_SUPPORTED_H264:a.code=U.ENV_NOT_SUPPORTED,e.getCode()===A.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes(Ue.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case A.JOIN_ROOM_FAILED:a.messageParams={fnParams:r};case A.SERVER_TIMEOUT:case A.SWITCH_ROLE_FAILED:case A.SWITCH_ROOM_FAILED:a.code=U.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case A.API_CALL_ABORTED:a.code=U.OPERATION_ABORT;break;case A.DEVICE_NOT_FOUND:case A.DEVICE_AUTO_RECOVER_FAILED:case A.INITIALIZE_FAILED:a.code=5300,e.name&&(a.extraCode=kE(e.name));break;case A.VIDEO_ENCODE_FAILED:a.extraCode=5505;case A.AUDIO_ENCODE_FAILED:a.extraCode=5506,a.code=U.OPERATION_FAILED;break;case A.UNKNOWN:break;default:a.code=U.OPERATION_FAILED}s=new o(a),n&&(s.stack+=n.substr(n.indexOf(`
54
- `)))}else{if(e instanceof o)return e;s=new o({code:U.UNKNOWN_ERROR,fnName:t,originError:e})}return s}};function kE(o){let i;switch(o){case"NotFoundError":i=5301;break;case"NotAllowedError":i=5302;break;case"NotReadableError":i=5303;break;case"OverconstrainedError":i=5304;break;case"InvalidStateError":i=5305;break;case"SecurityError":i=5306;break;case"AbortError":i=5307;break;default:i=5300}return i}var x=Vu;function _r(o){return o==="sub"?"auxiliary":o==="auxiliary"?"sub":"main"}function Sn(o){return o===Ot.QOS_PREFERENCE_CLEAR?"detail":o===Ot.QOS_PREFERENCE_SMOOTH?"motion":""}function os(o,i){let e=i?ld:nr;return Vd(o)?D(D({},e),o):Lt[o]?Lt[o]:e}var wp={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{type:["string","object","boolean"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},xp={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},ss={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(o,i,e){if(te(o)&&!document.getElementById(o))throw new x({code:U.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:i}})}},Lp={name:"userId",required:!0,type:"string"},Pp={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[Ot.AUDIO_PROFILE_STANDARD,Ot.AUDIO_PROFILE_STANDARD_STEREO,Ot.AUDIO_PROFILE_HIGH,Ot.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function ns(o,i){if(!o)throw new x({code:U.INVALID_OPERATION,extraCode:5101,fnName:i})}function Vp(o,i,e){if(!o)throw new x({code:U.INVALID_OPERATION,extraCode:5102,fnName:i,messageParams:{value:e}})}function Up(o,i,e){if(!(/^[1-9]\d*$/.test(String(o))&&o<4294967295))throw new x({code:U.INVALID_PARAMETER,extraCode:5013,fnName:i,messageParams:{key:e}})}function Bp(o,i,e){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(o))throw new x({code:U.INVALID_PARAMETER,extraCode:5012,fnName:i,messageParams:{key:e}})}var zk={type:"number",notLessThanZero:!0},wE=(o,i)=>o.width*o.height>=i.width*i.height&&o.frameRate>=i.frameRate&&o.bitrate>=i.bitrate;function Fp(o){var t;if(!((t=o==null?void 0:o.option)!=null&&t.small))return;if(!Va()){b.warn("small stream is not supported"),delete o.option.small;return}let i=os(o.option.profile),e=os(o.option.small,!0);if(!wE(i,e)){b.warn(`small stream profile must be less than big stream profile. Big: ${JSON.stringify(i)}, Small: ${JSON.stringify(e)}`),delete o.option.small;return}}var xE={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(o,i,e){if(this._room.isJoined)throw new x({code:U.INVALID_OPERATION,extraCode:5104,fnName:e});if(o.roomId){if(te(o.roomId))throw new x({code:U.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:i}});Up(o.roomId,e,i)}else if(o.strRoomId)Bp(o.strRoomId,e,i);else throw new x({code:U.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"},playoutDelay:{type:"object",properties:{min:{type:"number",min:0,max:1e3},max:{type:"number",min:0,max:1e4}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:ss,mute:{type:["boolean","string"]},publish:{type:"boolean"},capture:{required:!1,type:"boolean"},option:wp},validate(o){var i,e;if(!((i=o==null?void 0:o.option)!=null&&i.videoTrack)&&Wi())throw new x({code:U.ENV_NOT_SUPPORTED,extraCode:5201});(e=o==null?void 0:o.option)!=null&&e.small&&Fp(o)}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:w(D({},ss),{required:!1}),publish:{type:"boolean"},capture:{required:!1,type:"boolean"},mute:{type:["boolean","string"]},option:wp},validate(o){var i;(i=o==null?void 0:o.option)!=null&&i.small&&Fp(o)}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:Pp},validate(o){var i;if(!((i=o==null?void 0:o.option)!=null&&i.audioTrack)&&Wi())throw new x({code:U.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:Pp}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:ss,publish:{type:"boolean"},option:xp},validate(o,i,e,t,r){var s;if(!((s=o==null?void 0:o.option)!=null&&s.videoTrack)){if(Wi())throw new x({code:U.ENV_NOT_SUPPORTED,extraCode:5201});if(!Xs())throw new x({code:U.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:ss,publish:{type:"boolean"},option:xp}},muteRemoteAudio:[Lp,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[Lp,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:ss,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(o,i,e){ns(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(o.userId);if(Vp(!!t,e,o),t&&(o.streamType==="main"&&!t.muteState.videoAvailable||o.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new x({code:U.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:o}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:w(D({},ss),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(o,i,e){ns(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(o.userId);if(Vp(!!t,e,o),t&&(o.streamType==="main"&&!t.muteState.videoAvailable||o.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new x({code:U.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:o}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(o,i,e){if(o.userId!=="*"&&T(o.streamType))throw new x({code:U.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(o,i,e){ns(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(o,i,e,t){if(!Ys)throw new x({code:U.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new x({code:U.INVALID_OPERATION,fnName:e,extraCode:5108});if(o.byteLength>1e3)throw new x({code:U.INVALID_PARAMETER,extraCode:5018,fnName:e});if(o.byteLength===0)throw new x({code:U.INVALID_PARAMETER,extraCode:5017,messageParams:{key:i},fnName:e});ns(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(o,i,e){if(!o&&!this._room.isMainStreamPublished||o&&!this._room.isAuxStreamPublished)throw new x({code:U.INVALID_OPERATION,extraCode:5109,messageParams:{key:i},fnName:e})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(o,i,e,t){if(o.byteLength>1e3)throw new x({code:U.INVALID_PARAMETER,extraCode:5018,fnName:e});if(o.byteLength===0)throw new x({code:U.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:i}})}}},validate(o,i,e){if(ns(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new x({code:U.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:i}})}},switchRoom:{name:"switchRoomConfig",type:"object",required:!0,validate(o,i,e){if(ns(this._room.isJoined,e),this._room.useStringRoomId&&o.strRoomId===this._room.roomId||!this._room.useStringRoomId&&o.roomId===Number(this._room.roomId))throw new x({code:U.INVALID_PARAMETER,extraCode:5020,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(o.roomId&&this._room.useStringRoomId||!o.roomId&&o.strRoomId&&!this._room.useStringRoomId)throw new x({code:U.INVALID_PARAMETER,extraCode:5019,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(o.roomId)Up(o.roomId,e,i);else if(o.strRoomId)Bp(o.strRoomId,e,i);else throw new x({code:U.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{roomId:{type:"number"},strRoomId:{type:"string"},privateMapKey:{type:"string"},userSig:{type:"string",required:!0},autoSubscribeCount:{type:"number",min:0,max:50}}}},Ve={TRTC:xE};var et=class extends Error{};function LE(o,i){let e=Nr(o);for(let t=0;t<i.length;t++)Bt(e[t],i[t]);return e}function PE(o){this._resolve=Promise.resolve(o)}function VE(o){this._reject=Promise.reject(o)}var gr=class gr{constructor(i,e){this.instance=i;this.group=e;d(this,"started",!1);d(this,"ops",[]);d(this,"startSame",()=>!0);d(this,"mergeUpdate",LE);let t=gr.instances.get(i);t?t.set(e,this):gr.instances.set(i,new Map([[e,this]]))}static get(i,e){if(!e)return;let t=gr.instances.get(i);return t&&t.get(e)||new gr(i,e)}static gets(i,e){let t=gr.instances.get(i),r=[];return t&&t.forEach((s,n)=>{e.test(n)&&r.push(s)}),r}action(i,e,t){let r=a=>{var c;return i===0?this.started=!0:i===3&&(this.started=!1),this.ops.shift(),(c=this.currentOp)==null||c.action(),a},s=a=>{var c,l;throw this.ops.shift(),i===0&&((c=this.currentOp)==null?void 0:c.type)===2&&this.ops.shift().reject(new et("start failed")),(l=this.currentOp)==null||l.action(),a},n={type:i,action:()=>e(...n.args).then(r,s),args:t,resolve:PE,reject:VE};try{switch(this.state){case 1:if(i===0)throw new et("already started");break;case 4:if(i===2)throw new et("not started");break;default:return this.cacheOp(n)}}catch(a){return Promise.reject(a)}return this.ops.push(n),n.promise=e(...n.args).then(r,s)}cacheOp(i){if(this.ops.length===1)switch(this.state){case 0:case 2:if(i.type===0)throw new et("already start");break;case 3:switch(i.type){case 2:throw new et("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new et("unknown state")}else switch(i.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let t=new et("keep stop");if(this.ops.slice(1).forEach(r=>r.reject(t)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,i.args),this.lastOp.promise;case 3:throw new et("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new et("start not allowed after update");case 0:throw new et("duplicate start");case 3:if(this.startSame(this.currentOp.args,i.args))throw this.ops.pop().reject(new et("keep start")),new et("already start")}}i.promise=new Promise((t,r)=>{i._resolve?i._resolve.then(t):i.resolve=t,i._reject?i._reject.catch(r):i.reject=r});let{action:e}=i;return i.action=()=>e().then(i.resolve,i.reject),this.ops.push(i),i.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}};d(gr,"instances",new WeakMap);var Zi=gr;var Cc=new WeakMap,Rc=(o,i)=>{if(i instanceof et){let{stack:e}=i;i=new x({code:U.OPERATION_ABORT,message:`${o} abort: ${i.message}`,fnName:o}),e&&(i.stack+=e.substr(e.indexOf(`
55
- `)))}throw i};function Tr(o,i){return Y((e,t)=>function(...r){let s=Zi.get(this,typeof o=="string"?o:o.call(this,...r));return s?(i&&(s.startSame=i.bind(this)),s.action(0,e.bind(this),r).catch(Rc.bind(null,t))):e.apply(this,r)})}function to(o,i){let{merge:e,debounce:t}=i||{};return Y((r,s)=>function(...n){let a=Zi.get(this,typeof o=="string"?o:o.call(this,...n));if(!a)return r.apply(this,n);if(e&&(a.mergeUpdate=e.bind(this)),t&&t.isNeedToDebounce.apply(this,n)){let{delay:c,getKey:l}=t;return new Promise((u,h)=>{var S,_;let m=(S=Cc.get(this))==null?void 0:S.get(l(...n));if(m){let{timeoutId:I,resolve:R}=m;clearTimeout(I),R()}let g=setTimeout(()=>{if(a.state===3||a.state===4)return u();a.action(2,r.bind(this),n).catch(Rc.bind(null,s)).then(u,h)},c);Cc.has(this)?(_=Cc.get(this))==null||_.set(l(...n),{timeoutId:g,resolve:u}):Cc.set(this,new Map([[l(...n),{timeoutId:g,resolve:u}]]))})}return a.action(2,r.bind(this),n).catch(Rc.bind(null,s))})}function Er(o){return Y((i,e)=>function(...t){let r=typeof o=="function"?o.call(this,...t):o;if(r instanceof RegExp)return Promise.all(Zi.gets(this,r).map(n=>n.action(3,()=>Promise.resolve(),t))).then(()=>i.call(this,...t));let s=Zi.get(this,r);return s?s.action(3,i.bind(this),t).catch(Rc.bind(null,e)):i.apply(this,t)})}var k={ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",KICKED_OUT:"kicked-out",REMOTE_USER_ENTER:"remote-user-enter",REMOTE_USER_EXIT:"remote-user-exit",REMOTE_AUDIO_AVAILABLE:"remote-audio-available",REMOTE_AUDIO_UNAVAILABLE:"remote-audio-unavailable",REMOTE_VIDEO_AVAILABLE:"remote-video-available",REMOTE_VIDEO_UNAVAILABLE:"remote-video-unavailable",AUDIO_VOLUME:"audio-volume",AUDIO_FRAME:"audio-frame",NETWORK_QUALITY:"network-quality",CONNECTION_STATE_CHANGED:"connection-state-changed",AUDIO_PLAY_STATE_CHANGED:"audio-play-state-changed",VIDEO_PLAY_STATE_CHANGED:"video-play-state-changed",SCREEN_SHARE_STOPPED:"screen-share-stopped",DEVICE_CHANGED:"device-changed",PUBLISH_STATE_CHANGED:"publish-state-changed",TRACK:"track",STATISTICS:"statistics",SEI_MESSAGE:"sei-message",CUSTOM_MESSAGE:"custom-message",VIDEO_DECODE_DOWNGRADE_STATE_CHANGED:"video-decode-downgrade-state-changed",LAYER_DATA:"layerData",FIRST_VIDEO_FRAME:"first-video-frame"},Hp=new Set([k.ERROR,k.AUTOPLAY_FAILED,k.KICKED_OUT,k.REMOTE_USER_ENTER,k.REMOTE_USER_EXIT,k.REMOTE_AUDIO_AVAILABLE,k.REMOTE_AUDIO_UNAVAILABLE,k.REMOTE_VIDEO_AVAILABLE,k.REMOTE_VIDEO_UNAVAILABLE,k.CONNECTION_STATE_CHANGED,k.PUBLISH_STATE_CHANGED,k.SCREEN_SHARE_STOPPED,k.DEVICE_CHANGED,k.FIRST_VIDEO_FRAME]);var Hu={};vi(Hu,{ScheduleRequestType:()=>Gp,getAbilityConfig:()=>BE,getScheduleDomain:()=>Nc,isNeedToSchedule:()=>yc,scheduleProxy:()=>Ri,sendScheduleRequest:()=>Fu,setIsNeedToSchedule:()=>Zt,setScheduleProxy:()=>bc});var Bu=null,yc=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(Oi).map(o=>`<link rel="dns-prefetch" href="https://${o}">`).join(`\r
56
- `));function Zt(o){de(o)&&o!==yc&&(yc=o,b.info(`setIsNeedToSchedule ${o}`))}E.on("28",()=>Zt(!0));E.on("63",()=>Zt(!0));E.on("84",()=>Zt(!0));E.on("201",o=>{o.state==="RECONNECTING"&&Zt(!0)});E.on("202",o=>{o.state==="RECONNECTING"&&Zt(!0)});function UE(o,i,e){let t={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let r=performance.getEntriesByType("resource"),s=Sr(o,"config",p.MAIN),n=Sr(o,"config",p.BACKUP);for(let a of r)if(a.startTime>=e&&(a.name===s||a.name===n)&&a.transferSize>0){let c=a.name===s?p.MAIN:p.BACKUP,l=Math.round(a.duration),u=Math.round(a.domainLookupStart-a.startTime),h=a.redirectStart>0?Math.round(a.redirectEnd-a.redirectStart):0,m=a.fetchStart>0?Math.round(a.domainLookupStart-a.fetchStart):0,g=Math.round(a.domainLookupEnd-a.domainLookupStart),S=Math.round(a.requestStart-a.secureConnectionStart),_=Math.round(a.secureConnectionStart-a.connectStart),I=Math.round(a.responseStart-a.requestStart),R=Math.round(a.responseEnd-a.responseStart),K=[g,S,_,I,R];se.uploadEvent({log:`stat-schedule-net:${l}(${u}(${h}->${m})->${K.join("->")}) ${c}`,userId:i}),t=w(D({},t),{totalCost:l,local:u,dns:g,tcp:_,tls:S,request:I,response:R});break}}catch(r){b.error("getScheduleDetailCost error",r)}return t}function Fu(l){return f(this,arguments,function*({userId:o,sdkAppId:i,useStringRoomId:e,roomId:t,userSig:r,version:s,frameWorkType:n,role:a,latencyLevel:c}){if(!yc&&Bu)return{isCached:!0,result:Bu};let u={delta:0,count:[1,1],msg:[],detail:[]};try{let h=new FormData;h.append("userId",String(o)),h.append("sdkAppId",String(i)),h.append("isStrGroupId",String(e)),h.append("groupId",String(t)),h.append("sdkVersion",s),h.append("userSig",String(r));let m=yield xr();m!=null&&m.model&&h.append("model",String(m==null?void 0:m.model)),a&&h.append("role",String(a)),c&&h.append("latencyLevel",String(c)),n&&h.append("frameWorkType",String(n));let g=P(),S=yield HE(h,u,i);S.config&&(S.config.loggerDomain&&Ar(S.config.loggerDomain),de(S.config.scheduleCache)&&Zt(!S.config.scheduleCache)),u.delta=P()-g;let _=UE(Number(i),o,g);return Bu=S,{isCached:!1,result:S,detailCost:_}}catch(h){let m=Se(h)?h[0]:h,g=q(m.code)?m.code:0,S=`schedule failed${m.message?`: ${m.message}`:""}`,_=new v({code:A.SCHEDULE_FAILED,extraCode:g,message:V({key:L.JOIN_ROOM_FAILED,data:{error:S,code:g}})});throw b.error(S,g),_}})}var Ri={main:"",backup:""};function bc(o){Se(o)?(Ri.main=o[0],Ri.backup=o[1]):Ri.main=o}var Gp=(t=>(t.CONFIG="config",t.TRTC_AUTO_CONF="trtcAutoConf",t.AUDIO_AI_AUTH="audioAiAuth",t))(Gp||{});function Sr(o,i,e=p.MAIN,t=!1){return`https://${Ri[e]||Nc(o,e,t)}/api/v1/${i}`}function BE(o,i,e){let t=Sr(o,i),r=Sr(o,i,p.BACKUP),s=new URLSearchParams(e).toString(),n=fetch(`${t}?${s}`).then(c=>c.json()),a=fetch(`${r}?${s}`).then(c=>c.json());return Or([n,a])}function Nc(o,i=p.MAIN,e=!1){let t;return ki(o)?e?t=i===p.MAIN?Oi.MAIN_OVERSEA_BACKUP:Oi.BACKUP_OVERSEA:t=i===p.MAIN?Oi.MAIN_OVERSEA:Oi.BACKUP_OVERSEA:t=i===p.MAIN?Oi.MAIN:Oi.BACKUP,t}function FE(o,i,e){return new Promise((t,r)=>{Vi({url:o,body:i,timeout:e.timeout,priority:"high"}).then(s=>{s.data.code===0?t(s.data.data):r({code:s.data.code,message:s.data.msg})}).catch(r)})}var $p=(o,i)=>ni({retryFunction:FE,settings:{retries:3,timeout:0},onError:i,onRetrying:o});function HE(o,i,e){return new Promise((t,r)=>{let s=null;Or([$p(n=>i.count[0]=n+1,({error:n,retry:a,retriedCount:c,retryFuncArgs:l})=>{i.msg[0]=n.message,s||(c>=1&&(l[0]=Sr(e,"config",p.MAIN,!0)),a())})(Sr(e,"config",p.MAIN),o,{get timeout(){return Dr(2+i.count[0])*1e3}}),$p(n=>i.count[1]=n+1,({error:n,retry:a,retriedCount:c,retryFuncArgs:l})=>{i.msg[1]=n.message,s||(c>=2&&(l[0]=Sr(e,"config",p.BACKUP,!0)),a())})(Sr(e,"config",p.BACKUP),o,{get timeout(){return Dr(2+i.count[1])*1e3}})]).then(n=>{s=n,t(s)}).catch(r)})}var $E=o=>o.startsWith("data:application/octet-stream;base64,"),GE=o=>o.startsWith("file://"),In=class{constructor(){d(this,"_log");this._log=b.createLogger({id:"fd"})}download(i,e){return f(this,null,function*(){let{type:t="blob"}=e||{};i=ea(i);try{let r=P(),s;if(ae(fetch)?s=yield this.downloadWithFetch(i,t):s=yield this.downloadWithXHR(i,t),!s||!s.data)throw new Error("data is empty");let n=P()-r;return this._log.info(`downloaded: ${i}, return type: ${t}, cost: ${n}ms`),N.addSuccessEvent({key:522700,cost:P()-r}),s.data}catch(r){throw this._log.error(`failed to download: ${i}, error: ${r}`),N.addFailedEvent({key:522700,error:r}),r}})}downloadWithFetch(i,e){return f(this,null,function*(){this._log.info(`download with fetch: ${i}, return type: ${e}`);try{let t=yield fetch(i);if(!t.ok){let s=new Error(`network response was not ok: ${t.status}`);throw s.status=t.status,s}let r;return e==="arraybuffer"?r=yield t.arrayBuffer():r=yield t.blob(),{data:r}}catch(t){throw t}})}downloadWithXHR(i,e){return this._log.info(`download with xhr: ${i}, return type: ${e}`),new Promise((t,r)=>{let s=new XMLHttpRequest;s.open("GET",i,!0),s.responseType=e,s.onload=()=>{if(s.status===200||s.status===0&&s.response)t({data:s.response});else{let n=new Error(`XHR failed, status: ${s.status}`);n.status=s.status,r(n)}},s.onerror=r,s.send(null)})}loadWasm(i,e){return f(this,null,function*(){this._log.info(`loadWasm ${i}, importObject: ${JSON.stringify(e)}`);let t=P(),r=null,s=null;if(ae(WebAssembly.instantiateStreaming)&&!$E(i)&&!GE(i)&&ae(fetch))try{let n=fetch(i);r=(yield WebAssembly.instantiateStreaming(n,e)).instance}catch(n){s=n}if(!r)try{let n=yield this.download(i,{type:"arraybuffer"});r=(yield WebAssembly.instantiate(n,e)).instance}catch(n){s=n}if(r){let n=P()-t;return this._log.info(`loadedWasm ${i}, cost: ${n}ms`),N.addSuccessEvent({key:522701,cost:n}),r}throw this._log.error(`failed to loadWasm ${i}, error: ${s}`),N.addFailedEvent({key:522701,error:s}),s})}loadScript(i){this._log.info(`loadScript ${i}`);let e=P();return new Promise((t,r)=>{let s=document.createElement("script");s.type="text/javascript",s.onload=()=>{this._log.info(`loadedScript ${i}, cost: ${P()-e}ms`),N.addSuccessEvent({key:522702,cost:P()-e,split:1e3}),t(s)},s.onerror=n=>{this._log.error(`failed to loadScript ${i}, error: ${(n==null?void 0:n.message)||JSON.stringify(n)}`),N.addFailedEvent({key:522702}),r(n)},s.crossOrigin="anonymous",s.src=i,document.head.append?document.head.append(s):document.getElementsByTagName("head")[0].appendChild(s)})}};M([Et({settings:{timeout:0,retries:3},onError(i,e,t){var r;(i==null?void 0:i.status)===404||(r=i==null?void 0:i.message)!=null&&r.includes("404")?(this._log.warn("download 404, stop retry"),t(i)):e()},onRetrying(i){this._log.warn(`download retrying: ${i}`)}})],In.prototype,"download",1),M([Et({settings:{timeout:3e3,retries:3},onRetrying(i){this._log.warn(`loadScript retrying: ${i}`)}})],In.prototype,"loadScript",1);var $u=new In;function Wp({TRTC:o,room:i,errorModule:e,assetsPath:t}){return{TRTC:o,LocalMixVideoTrack:Kr,LocalVideoTrack:Be,LocalScreenTrack:Ke,room:i,assetsPath:t,fileDownloader:$u,innerEmitter:E,constants:Ed,environment:xo,utils:jl,eventLogger:se,log:this.room.getLogger(),loggerManager:b,errorModule:e,kvStatManager:N,rtcDectection:pi,trtc:this,rx:wu,enums:fl,schedule:Hu,getDevices:jo,initVisionTaskRegistry:(r,s="/mediapipe/vision.js")=>f(this,null,function*(){window.VisionTaskRegistry||(yield $u.loadScript(`${r}/${s}`.replace(/([^:]\/)\/+/g,"$1"))),yield(yield window.VisionTaskRegistry.getInstance(r)).preloadModels([window.VisionTaskType.ImageSegmenter])}),clearStarted:(r,s)=>{let n=r.getAlias(),a=Zi.instances.get(this);if(a)if(s){let c=a.get(n+s);if(!c)return;c.started=!1}else a.forEach((c,l)=>{l.startsWith(n)&&(c.started=!1)})},startGetPCM:En,createAudioNode:an}}var Jp=(o,i)=>{let{emit:e}=o;return o.emit=(...t)=>{try{return e.apply(o,t)}catch(r){let s=V({key:L.CATCH_HANDLER_ERROR,data:{name:i,event:t[0]},addDocLink:!1});return b.warn(`${s}
50
+ } `;var us=class extends ue{constructor(e){super();l(this,"frameRate");l(this,"_canvas");l(this,"log");l(this,"hasAlpha",!1);l(this,"name");l(this,"error");this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}set width(e){this._canvas&&(this._canvas.width=e)}get width(){var e;return((e=this._canvas)==null?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return((e=this._canvas)==null?void 0:e.height)||0}setSize(e,r){this._canvas&&(this._canvas.width=e,this._canvas.height=r)}createVideoTrackSource(e,r){return new hr(this,e,{logger:this.log,name:r})}createVideoTrackDestination(e){return new pn(this,e)}createVideoImageSource(e,r){return new Ha(this,r?Object.assign(r,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,r){return new Wa(this,e,r?Object.assign(r,{logger:this.log}):{logger:this.log})}createTextSource(e,r){return new cu(this,e,r?Object.assign(r,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};l(us,"_ids",0);var DI={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},hn=class hn extends us{constructor(){super(...arguments);l(this,"defaultProgam");l(this,"defaultVShader");l(this,"defaultFShader");l(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${us._ids++}`),this.ctx=this._canvas.getContext("webgl2",DI),!this.ctx)throw new de({code:q.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,NI),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,wI),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(e){let r="";return e&&(r=e.message,this.error=e,z.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${r}`?`: ${r}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),e}set width(e){var r;(r=this.ctx)==null||r.viewport(0,0,e,this.height),super.width=e}set height(e){var r;(r=this.ctx)==null||r.viewport(0,0,this.width,e),super.height=e}setSize(e,r){var o;(o=this.ctx)==null||o.viewport(0,0,e,r),super.setSize(e,r)}createShader(e,r){let o=this.ctx,s=o.createShader(e);return o.shaderSource(s,r),o.compileShader(s),s}createProgram(e,r){let o=this.ctx,s=o.createProgram();return o.attachShader(s,e),o.attachShader(s,r),o.linkProgram(s),o.getProgramParameter(s,o.LINK_STATUS)||this.log.error(o.getProgramInfoLog(s)),s}};l(hn,"UNAVAILABLE","unavailable"),Z([Ye(ue.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),z.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),z.addSuccessEvent({key:512700})}})],hn.prototype,"create",1),Z([Ye("created",ue.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(hn.UNAVAILABLE,e),this.removeAllListeners()}})],hn.prototype,"destroy",1);var It=hn,Nt=class extends us{constructor(){super(...arguments);l(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${us._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new de({code:q.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this._canvas.addEventListener("contextlost",()=>{this.log.error("2d context lost")}),this._canvas.addEventListener("contextrestored",()=>{this.log.warn("2d context restored")})}destroy(e){let r="";e&&(r=e.message,this.error=e,z.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${r?`: ${r}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),z.addSuccessEvent({key:512703})}};Z([Ye(ue.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),z.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),z.addSuccessEvent({key:512701})}})],Nt.prototype,"create",1),Z([Ye("created",ue.INIT,{ignoreError:!0,sync:!0})],Nt.prototype,"destroy",1);function MI(i,t,e,r,o,s=!1){s&&([e,r]=[r,e]);let n={sWidth:i,sHeight:t,dWidth:e,dHeight:r,sx:0,sy:0,dx:0,dy:0};if(i===0||t===0)return n;switch(o){case void 0:case"fill":break;case"contain":{let a=Math.min(e/i,r/t);n.dWidth=i*a,n.dHeight=t*a,n.dx=(e-n.dWidth)/2,n.dy=(r-n.dHeight)/2;break}case"cover":{let a=Math.max(e/i,r/t),u=e/a,m=r/a;n.sx=(i-u)/2,n.sy=(t-m)/2,n.sWidth=u,n.sHeight=m;break}}return n}var Up=class{constructor(t,e){this.node=t;this.layout=e;l(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}get fillMode(){return this.layout.fillMode}get rotation(){return this.layout.rotation}get hidden(){return!!this.layout.hidden}},fn=class extends Wt{constructor(e,r){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:r});l(this,"inputs",[]);l(this,"backgroundColor","black")}addInput(e,r){let o=0,s=this.inputs.length;for(;o<s;){let a=Math.floor((o+s)/2);if(this.inputs[a].layout.zIndex<r.zIndex)o=a+1;else if(this.inputs[a].layout.zIndex>r.zIndex)s=a;else throw new Error(`input already exists at zIndex ${r.zIndex}`)}let n=new Up(e,r);this.inputs.splice(o,0,n)}changeInputLayout(e,r){let o=this.inputs.findIndex(C=>C.node===e);if(o<0)return;let{x:s,y:n,width:a,height:u,zIndex:m,fillMode:h,rotation:g,hidden:T}=r;if(!M(m)&&this.inputs.some(C=>C.layout.zIndex===m&&C.node!==e))throw new Error(`input already exists at zIndex ${r.zIndex}`);let A=this.inputs[o];M(s)||(A.layout.x=s),M(n)||(A.layout.y=n),M(a)||(A.layout.width=a),M(u)||(A.layout.height=u),M(g)||(A.layout.rotation=g),M(T)||(A.layout.hidden=T),h&&(A.layout.fillMode=h),!M(m)&&m!==A.layout.zIndex&&(A.layout.zIndex=m,this.inputs.sort((C,N)=>C.layout.zIndex-N.layout.zIndex))}hasInput(e){return this.inputs.some(r=>r.node===e)}hasNoInput(){return this.inputs.length===0}resize(e,r){if(!this.matchInputSize){super.resize(e,r);return}let o=this.inputs.reduce((s,n)=>n?Object.assign(s,{width:Math.max(s.width,n.right),height:Math.max(s.height,n.bottom)}):s,{width:0,height:0});super.resize(o.width,o.height),this.context instanceof It&&this.inputs.forEach(s=>{if(s){let n=this.layout2texCoords(s);s.positionBuffer?this.changeBufferData(s.positionBuffer,n):s.positionBuffer=this.createBuffer(n)}})}connect(e,...r){return super.connect(e,...r),this.drawBackGround2d(this.backgroundColor),this.matchInputSize&&this.resize(0,0),e}removeInput(e){this.inputs=this.inputs.filter(r=>r.node!==e),this.inputs.length===0&&this.drawBackGround2d(this.backgroundColor)}render(e){let r=this.context.ctx;if(r.clearColor(0,0,0,0),this.inputs.reduce((s,n)=>n.node.requestFrame(e)||s,!1)&&r){this.useProgram(),r.enable(r.BLEND),r.blendFunc(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let s=0;s<this.inputs.length;s++){let n=this.inputs[s];n&&(n.node.useTexture(),this.draw(n.positionBuffer))}return!0}return!1}render2d(e){if(this.inputs.forEach(r=>r.node.requestFrame(e)),this.ctx2d){this.drawBackGround2d(this.backgroundColor);for(let r=0;r<this.inputs.length;r++){let o=this.inputs[r];if(o.hidden)continue;let s=MI(o.node.width,o.node.height,o.width,o.height,o.fillMode,mr(o.rotation));this.draw2d(o.node.image,o.x+s.dx,o.y+s.dy,s.dWidth,s.dHeight,s.sx,s.sy,s.sWidth,s.sHeight)}return!0}return!1}debugLayout(e,r,o,s,n=!1){this.ctx2d&&(n&&([o,s]=[s,o]),this.ctx2d.save(),this.ctx2d.strokeStyle="red",this.ctx2d.lineWidth=2,this.ctx2d.strokeRect(e,r,o,s),this.ctx2d.restore())}getInfo(){let{totalFrames:e,x:r,y:o,width:s,height:n,name:a}=this,u=Date.now(),m=(e-this.lastInfo.totalFrames)/((u-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:n,timestamp:u,fps:m,name:a},J({parent:this.inputs.filter(h=>h).map(h=>h.node.getInfo())},this.lastInfo)}removeAllInputs(){this.inputs.forEach(e=>{var r;if(e.node.disconnect(),e.positionBuffer&&this.context instanceof It)try{(r=this.context.ctx)==null||r.deleteBuffer(e.positionBuffer)}catch(o){}})}close(){super.close(),this.removeAllInputs()}};var OI=[1,0,0,0,1,1,0,1],fr=class extends Wt{constructor(e,r,o,s){super(e,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"transform",logger:r});l(this,"mirror",!1);l(this,"rotation",0);if(o&&(this.mirror=o),s&&(this.rotation=s),e instanceof It)try{this.setTexBuffer(OI)}catch(n){e.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${n.message||n}`}))}}draw2d(e,r,o,s,n){if(this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height),this.ctx2d.save(),this.mirror&&(this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0)),this.rotation===90?(this.ctx2d.translate(s,0),this.ctx2d.rotate(Math.PI/2),this.ctx2d.scale(n/s,s/n)):this.rotation===180?(this.ctx2d.translate(this.width,this.height),this.ctx2d.rotate(Math.PI)):this.rotation===270&&(this.ctx2d.translate(0,n),this.ctx2d.rotate(3*Math.PI/2),this.ctx2d.scale(n/s,s/n));let a=super.draw2d(e,r,o,s,n);return this.ctx2d.restore(),a}return!1}render(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}resize(e,r){mr(this.rotation)&&([e,r]=[r,e]),super.resize(e,r)}};var ls=class extends kr{constructor(e,r=4){super(r,zt);l(this,"inputLocalVideoTracks",new Map);l(this,"inputLocalScreenTracks",new Map);l(this,"cameraNodeMap",new Map);l(this,"screenNodeMap",new Map);l(this,"textNodeMap",new Map);l(this,"imageNodeMap",new Map);l(this,"videoNodeMap",new Map);l(this,"videoContext");l(this,"mixNode");l(this,"destination");l(this,"manager");l(this,"stat");l(this,"_checkId",0);l(this,"autoSetFps",!0);this.manager=e,this.log.id+="mix",this.create2dVideoContext(),this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}),this.mixNode=new fn(this.videoContext,this.log),this.mixNode.matchInputSize=!1}listenDeviceChange(){throw new Error("Method not implemented.")}enablePrintDetail(e=2e3){this._checkId=ht.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}create2dVideoContext(){this.videoContext?this.videoContext.destroy():this.videoContext=new Nt({frameRate:15,logger:this.log,name:"mix-ctx"}),this.videoContext.create({alpha:!1})}setFps(e){this.autoSetFps=!1,this.videoContext.frameRate=e;for(let r of[...this.cameraNodeMap.values(),...this.screenNodeMap.values()])r.shouldUpdate=!1;setTimeout(()=>{var r;return(r=this.destination)==null?void 0:r.start(this.videoContext.frameRate)},500)}setFpsAuto(){var s;if(!this.autoSetFps)return;for(let n of[...this.cameraNodeMap.values(),...this.screenNodeMap.values()])n.shouldUpdate=!1;let e=null,r=0,o=!0;for(let[n,a]of this.inputLocalVideoTracks)a.profile.frameRate>r&&(r=a.profile.frameRate,e=n);for(let[n,a]of this.inputLocalScreenTracks)a.profile.frameRate>r&&(r=a.profile.frameRate,e=n,o=!1);if(e!==null){let n=o?this.cameraNodeMap.get(e):this.screenNodeMap.get(e);n&&(n.shouldUpdate=!0,n.tryVideoFrameCallback()),this.log.info("set mix fps: ",r)}else(s=this.destination)==null||s.start(this.videoContext.frameRate),this.log.info("fallback to timer, fps: ",this.videoContext.frameRate)}setMixBackground(e){this.mixNode&&(this.mixNode.backgroundColor=e)}resizeMixCanvas(e,r){var o;(o=this.mixNode)==null||o.resize(e,r)}startMix(){return y(this,null,function*(){var e;if(!this.mixNode||!this.destination)throw new Error("can't mix without necessary conditions");this.mixNode.disconnect(),this.mixNode.connect(this.destination),Xr&&this.player.setCanvas(this.videoContext._canvas),this.setOutputMediaStreamTrack(this.destination.videoTrack),(e=this.manager)==null||e.changeInput(this)})}addCameraSource(e,r,o){if(this.inputLocalVideoTracks.has(e)||this.cameraNodeMap.has(e))throw new Error(`There is already a cameraSource with the same ID: ${e}`);let{mediaTrack:s}=r;if(!s)throw new Error("no mediaTrack, add cameraSource failed");let n;Mt===16&&s instanceof CanvasCaptureMediaStreamTrack?n=this.videoContext.createVideoImageSource(s.canvas,{name:"cameraCanvasSource",logger:this.log}):n=this.videoContext.createVideoTrackSource(s,"cameraNodeSource"),n.resize(r.settings.width,r.settings.height),n.shouldUpdate=!1,this._connectMix(n,o,"cover"),this.inputLocalVideoTracks.set(e,r),this.cameraNodeMap.set(e,n),this.setFpsAuto()}addScreenSource(e,r,o){if(this.inputLocalScreenTracks.has(e)||this.screenNodeMap.has(e))throw new Error(`There is already a screenSource with the same ID: ${e}`);let{mediaTrack:s}=r;if(!s)throw new Error("no mediaTrack, add cameraSource failed");let n=this.videoContext.createVideoTrackSource(s,"screenNodeSource");n.resize(r.settings.width,r.settings.height),n.shouldUpdate=!1,this._connectMix(n,o),this.inputLocalScreenTracks.set(e,r),this.screenNodeMap.set(e,n),this.setFpsAuto()}addTextSource(e){let{id:r,content:o="",font:s,color:n,layout:a}=e;if(this.textNodeMap.has(r))throw new Error(`There is already a textSource with the same ID: ${r}`);let u=this.videoContext.createTextSource({content:o,font:s,color:n});u.resize(a.width,a.height),this._connectMix(u,a),this.textNodeMap.set(r,u)}addImageSource(e,r,o){if(this.imageNodeMap.has(e))throw new Error(`There is already a imageSource with the same ID: ${e}`);let s=this.videoContext.createVideoImageSource(r,{autoResize:!1,logger:this.log});s.resize(r.width,r.height),this._connectMix(s,o),this.imageNodeMap.set(e,s)}addVideoSource(e,r,o){if(this.videoNodeMap.has(e))throw new Error(`There is already a videoSource with the same ID: ${e}`);let s=this.videoContext.createVideoImageSource(r,{autoResize:!1,logger:this.log});s.resize(r.videoWidth,r.videoHeight),s.shouldUpdate=!1,this._connectMix(s,o),this.videoNodeMap.set(e,s)}updateCameraSource(e,r,o=null,s){let n=this.cameraNodeMap.get(e);if(n){if(o){if(Mt===16&&o instanceof CanvasCaptureMediaStreamTrack)if(n instanceof hr){let m=n.output;n.close(),n=this.videoContext.createVideoImageSource(o.canvas,{name:"cameraCanvasSource",logger:this.log}),n.connect(m),this.cameraNodeMap.set(e,n)}else n.image=o.canvas;else if(n instanceof hr)n.replaceTrack(o);else{let m=n.output;n.close(),n=this.videoContext.createVideoTrackSource(o,"cameraNodeSource"),n.connect(m),this.cameraNodeMap.set(e,n)}let{width:a,height:u}=o.getSettings();a&&u&&n.resize(a,u)}s&&n.resize(s.width,s.height),(s||o)&&this.setFpsAuto(),this._changeMixLayout(n,r)}}updateScreenSource(e,r){let o=this.screenNodeMap.get(e);o&&this._changeMixLayout(o,r)}updateTextSource(e){let{id:r,content:o,font:s,color:n,layout:a}=e,u=this.textNodeMap.get(r);u&&(M(o)||(u.content=o),M(s)||(u.font=s),M(n)||(u.color=n),u.resize(a.width,a.height),this._changeMixLayout(u,a))}updateImageSource(e,r,o){let s=this.imageNodeMap.get(e);s&&(o&&(s.image=o,s.resize(o.width,o.height)),this._changeMixLayout(s,r))}updateVideoSource(e,r,o){let s=this.videoNodeMap.get(e);if(s){if(o){let n=s.image;n instanceof HTMLVideoElement&&this.stopVideoElement(n),s.image=o,s.resize(o.videoWidth,o.videoHeight)}this._changeMixLayout(s,r)}}_connectMix(e,r,o="contain"){if(!this.mixNode)return;let{mirror:s,rotation:n}=r;e.disconnect();let a=new fr(this.videoContext,this.log,s,n);a=e.connect(a),r.fillMode||(r.fillMode=o),a.connect(this.mixNode,r)}_changeMixLayout(e,r){if(!this.mixNode)return;let{mirror:o,rotation:s}=r,n=e.output||e;n instanceof fr&&(M(o)||(n.mirror=o),M(s)||(n.rotation=s),n.resize(e.width,e.height)),this.mixNode.changeInputLayout(n,r)}removeCameraSource(e){let r=this.inputLocalVideoTracks.get(e);if(!r)return;r.close(),this.inputLocalVideoTracks.delete(e);let o=this.cameraNodeMap.get(e);o&&(o.output instanceof fr&&o.output.close(),o.close(),this.cameraNodeMap.delete(e)),this.checkAfterRemove(!0)}removeScreenSource(e){let r=this.inputLocalScreenTracks.get(e);if(!r)return;r.close(),this.inputLocalScreenTracks.delete(e);let o=this.screenNodeMap.get(e);o&&(o.output instanceof fr&&o.output.close(),o.close(),this.screenNodeMap.delete(e)),this.checkAfterRemove(!0)}removeTextSource(e){let r=this.textNodeMap.get(e);r&&(r.output instanceof fr&&r.output.close(),r.close(),this.textNodeMap.delete(e)),this.checkAfterRemove()}removeImageSource(e){let r=this.imageNodeMap.get(e);r&&(r.output instanceof fr&&r.output.close(),r.close(),this.imageNodeMap.delete(e)),this.checkAfterRemove()}removeVideoSource(e){let r=this.videoNodeMap.get(e);r&&(r.output instanceof fr&&r.output.close(),r.image instanceof HTMLVideoElement&&this.stopVideoElement(r.image),r.close(),this.videoNodeMap.delete(e)),this.checkAfterRemove()}checkAfterRemove(e=!1){e&&this.setFpsAuto()}stopVideoElement(e){e.pause(),e.src="",e.srcObject=null,e.remove()}close(){var e;super.close(),ht.clearTask(this._checkId),(e=this.videoContext)==null||e.destroy(),delete this.mixNode,delete this.destination;for(let r of[...this.inputLocalVideoTracks.values(),...this.inputLocalScreenTracks.values()])r.close();this.inputLocalVideoTracks.clear(),this.inputLocalScreenTracks.clear(),this.cameraNodeMap.clear(),this.screenNodeMap.clear(),this.textNodeMap.clear(),this.imageNodeMap.clear();for(let r of this.videoNodeMap.values())r.image instanceof HTMLVideoElement&&this.stopVideoElement(r.image);this.videoNodeMap.clear(),this.log.info("localMixVideoTrack close, stop mix")}};var du=pa();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:du,exposeOrigin:!0,permittedOrigins:["*"]})}catch(i){}var xI=function(i){return y(this,null,function*(){let t=null,e=LI(i);$.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let r=yield navigator.mediaDevices.getDisplayMedia(e);i.systemAudio&&r.getAudioTracks().length===0&&(Qs&&Jr<74||_t||$t)&&$.warn("Your browser not support capture system audio");let o=r.getVideoTracks()[0];if(o){if(i.frameRate)try{yield o.applyConstraints({frameRate:{min:i.frameRate,ideal:i.frameRate},width:i.width,height:i.height})}catch(s){$.warn(`screen applyConstraints failed: ${s}`)}i.captureElement&&(yield kI(o,i.captureElement))}if(i.audio){let s=PI(i);$.info(`getUserMedia with constraints: ${JSON.stringify(s)}`),t=yield navigator.mediaDevices.getUserMedia(s),r.addTrack(t.getAudioTracks()[0])}return r})};function kI(i,t){return y(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&We(i.cropTo))try{if(!(((e=i.getCaptureHandle())==null?void 0:e.handle)===du))return;let o=yield CropTarget.fromElement(t);yield i.cropTo(o)}catch(r){$.warn(`cropTo target failed ${r}`)}})}function PI(i){let t={echoCancellation:i.echoCancellation,autoGainControl:i.autoGainControl,noiseSuppression:i.noiseSuppression,sampleRate:i.sampleRate,channelCount:i.channelCount};return M(i.microphoneId)||(t.deviceId=i.microphoneId),{audio:t,video:!1}}function LI(i){let t={preferCurrentTab:i.preferDisplaySurface==="current-tab"||!!i.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:_t?{max:i.width}:{ideal:i.width,max:i.width},height:_t?{max:i.height}:{ideal:i.height,max:i.height},frameRate:i.frameRate,displaySurface:i.preferDisplaySurface||"monitor"};if(t.video=e,i.systemAudio){let{echoCancellation:r=!0,noiseSuppression:o=!1,autoGainControl:s=!1}=i;t.audio={echoCancellation:r,noiseSuppression:o,autoGainControl:s,sampleRate:48e3}}return t}var Vg=xI;var ii=class extends nr{constructor(e){super(e,2);l(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});l(this,"objectFit","contain");l(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}get isShareCurrentTab(){var e,r;try{return du===((r=(e=this.mediaTrack)==null?void 0:e.getCaptureHandle())==null?void 0:r.handle)}catch(o){return}}capture(h){return y(this,arguments,function*({systemAudio:e=!1,autoGainControl:r,echoCancellation:o,noiseSuppression:s,audioTrack:n,videoTrack:a,captureElement:u,preferDisplaySurface:m}){try{let g;return a||n?(g=new MediaStream,a&&g.addTrack(a),n&&g.addTrack(n)):(g=yield Vg({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:r,echoCancellation:o,noiseSuppression:s,captureElement:u,preferDisplaySurface:m}),this.sourceTrack=g.getVideoTracks()[0]),yield this.setInputMediaStreamTrack(g.getVideoTracks()[0]),g}catch(g){throw this.log.error(`getDisplayMedia error observed ${g}`),g instanceof de?g:new de({code:q.INITIALIZE_FAILED,name:g.name,message:g.message})}})}switchDevice(e){return y(this,null,function*(){throw new Error("Method not implemented.")})}};Z([lo(function(e){this.setContentHint(e.contentHint||"detail")})],ii.prototype,"capture",1);var ms=class extends ri{constructor(t){super(t),this._log.id=`s-${this._log.id}`}addAudioProcessor(t,e,r,o){this.pipeline.silentNode.setNode(r),this.pipeline.mixNode.setNode(e),this.pipeline.aec.setNode(o),this.enableTrackAEC(!1)}removeAudioProcessor(t,e,r,o){this.pipeline.aec.node===o&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}};var UI='registerProcessor("dumper",class extends AudioWorkletProcessor{constructor(e){super(),this.sourceSampleRate=e.processorOptions.sourceSampleRate||48e3,this.targetSampleRate=e.processorOptions.targetSampleRate||48e3,this.port.onmessage=e=>{this.port2=e.data.port}}process(e){return(this.port2||this.port).postMessage(this.resampleAll(e,this.sourceSampleRate,this.targetSampleRate)),!0}resampleAll(r,s,a){if(s===a)return r;var o=[];for(let t=0;t<r.length;t++){o[t]=[];for(let e=0;e<r[t].length;e++)o[t][e]=this.resample(r[t][e],s,a)}return o}resample(t,e,r){if(e===r)return t;var s=Math.round(t.length*(this.targetSampleRate/this.sourceSampleRate)),a=new Float32Array(s),o=(t.length-1)/(s-1);a[0]=t[0];for(let e=1;e<s-1;e++){var l=e*o,p=Math.floor(l),h=Math.ceil(l);a[e]=t[p]+(t[h]-t[p])*(l-p)}return a[s-1]=t[t.length-1],a}});',Vp;function Ga(i,t=48e3,e=1,r){return y(this,null,function*(){let o=Xe("dump");Vp||(Vp=wi(o,URL.createObjectURL(new Blob([UI],{type:"application/javascript"})))),yield Vp;let s=o.sampleRate,n=new AudioWorkletNode(o,"dumper",{numberOfInputs:i.length,numberOfOutputs:0,processorOptions:{sourceSampleRate:s,targetSampleRate:t}});return n.channelCountMode="explicit",n.channelCount=e,r&&n.port.postMessage({port:r},[r]),i.forEach((a,u)=>a.connect(n,0,u)),new ReadableStream({start(a){n.port.onmessage=u=>{a.enqueue(u.data)}},cancel(){i.forEach(a=>a.disconnect(n)),n.port.close()}})})}var uu=class extends kd{constructor(e){super();this.room=e;l(this,"_localAudioTrack");l(this,"_localScreenAudioTrack");l(this,"log",$.createLogger({id:"am"}));l(this,"denoiser");l(this,"voiceChanger");l(this,"mixChangedDebounce");l(this,"audioProcessor");l(this,"encodePipeline",[]);l(this,"decodePipeline",[]);l(this,"getPCMAbortCtrlMap",new Map);l(this,"audioFrameEventConfigMap",new Map);l(this,"audioReferenceMap",new Map);l(this,"isLocalAudioNeedAudioProcess",!1);l(this,"isScreenAudioNeedAudioProcess",!1);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.installEvent()}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}get _localScreenAudioPipeline(){var e;return(e=this._localScreenAudioTrack)==null?void 0:e.pipeline}dump(e){var h,g;if(!this._localAudioTrack)return;let r=[],o=[];(h=this._localAudioPipline)!=null&&h.source.node&&(r.push(this._localAudioPipline.source.node),o.push("mic")),(g=this._localAudioPipline)!=null&&g.denoiser.node&&(r.push(this._localAudioPipline.denoiser.node),o.push("mic-processed")),this.mixWeight>1&&(r.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),o.push("mix")),this.log.info(`dump audio track ${o}, duration: ${e}`);let s=new AbortController,n=[],a=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),s.abort("timeout")},e*1e3),u=()=>{for(let T=0;T<o.length;T++){let A=URL.createObjectURL(new Blob(n[T])),C=document.createElement("a");C.href=A,C.download=`${o[T]}.pcm`,C.style.display="none",document.body.appendChild(C),C.click(),URL.revokeObjectURL(A),C.remove()}clearTimeout(a),s.abort("download")},m=Ga(r).then(T=>T.pipeTo(new WritableStream({write(A){A.forEach((C,N)=>n[N]=n[N]?n[N].concat(C[0]):[C[0]])}}),s).catch(A=>u));return{then:m.then.bind(m),download:u}}getPCM(e,r){var P,K,pe;if(typeof WritableStream=="undefined"){this.log.warn("getPCM failed: browser not support WritableStream");return}let{enable:o,sampleRate:s=48e3,channelCount:n=1,port:a}=(r===""?this.audioFrameEventConfigMap.get(""):this.audioFrameEventConfigMap.get(r)||this.audioFrameEventConfigMap.get("*"))||{};if(!o)return;this.log.info(`getPCM ${r||"local"}`);let u=Math.floor(s*.04),m=new Float32Array(u),h=new Float32Array(u),g,T,A=0,C=new AbortController,N=r===""?(P=this._localAudioTrack)==null?void 0:P.mediaTrack:(pe=(K=this.room)==null?void 0:K.remotePublishedUserMap.get(r))==null?void 0:pe.remoteAudioTrack.mediaTrack;if(!N){this.log.info(`getPCM failed: ${r||"local"} has no audio track`);return}let D=Xe().createMediaStreamSource(new MediaStream([N]));return Ga([D],s,n,a).then(ce=>ce.pipeTo(new WritableStream({write(Qe){Qe[0][0]&&(A+Qe[0][0].length>u?(m.set(Qe[0][0].subarray(0,u-A),A),g=Qe[0][0].subarray(u-A),Qe[0][1]&&(h.set(Qe[0][1].subarray(0,u-A),A),T=Qe[0][1].subarray(u-A)),A+=u-A):(g&&(m.set(g,A),A+=g.length,g=void 0),T&&(h.set(T,A),T=void 0),m.set(Qe[0][0],A),Qe[0][1]&&h.set(Qe[0][1],A),A+=Qe[0][0].length),A>=u&&(A=0,e({userId:r,sampleRate:s,channelCount:n,data:n===1?m:[m,h]}),m=new Float32Array(u),h=new Float32Array(u)))}}),C).catch(Qe=>this.log.warn(`stop getPCM reason:${Qe}`))),C}get hasScreenAudioTrack(){return!M(this._localScreenAudioTrack)}get hasAudioTrack(){return!M(this._localAudioTrack)}changeInput(e){if(e instanceof ms)return this._localScreenAudioTrack=e,this.isScreenAudioNeedAudioProcess&&this.audioProcessor&&(e.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((r,o)=>{e.mixAudioReference(r,o)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof ri)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),this.isLocalAudioNeedAudioProcess&&this.audioProcessor&&(e.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((r,o)=>{e.mixAudioReference(r,o)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof Oi)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixAudioReference(e,r){var o;(o=this._localAudioTrack)==null||o.mixAudioReference(e,r)}unMixAudioReference(e){var r;(r=this._localAudioTrack)==null||r.unMixAudioReference(e)}setAudioReferenceVolume(e,r){var o;(o=this._localAudioTrack)==null||o.setAudioReferenceVolume(e,r)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,r;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(r=this._localScreenAudioTrack)==null?void 0:r.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof ms?delete this._localScreenAudioTrack:e instanceof ri?delete this._localAudioTrack:e instanceof Oi}addDenoiser(e){var r;this.denoiser=e,(r=this._localAudioTrack)==null||r.addDenoiser(e)}addAudioProcessor(e,r,o,s){var n;this.audioProcessor=[e,r,o,s],this.isLocalAudioNeedAudioProcess&&this._localAudioTrack&&(this._localAudioTrack.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((a,u)=>{var m;(m=this._localAudioTrack)==null||m.mixAudioReference(a,u)})),this.isScreenAudioNeedAudioProcess&&this._localScreenAudioTrack&&((n=this._localScreenAudioTrack)==null||n.addAudioProcessor(...this.audioProcessor),this.audioReferenceMap.forEach((a,u)=>{var m;(m=this._localScreenAudioTrack)==null||m.mixAudioReference(a,u)}))}removeDenoiser(e){var r;return delete this.denoiser,(r=this._localAudioTrack)==null?void 0:r.removeDenoiser(e)}addVoiceChanger(e,r){var o;this.voiceChanger=[e,r],(o=this._localAudioTrack)==null||o.pipeline.voiceChanger.setNode(e,r)}removeVoiceChanger(){var e;delete this.voiceChanger,(e=this._localAudioTrack)==null||e.pipeline.voiceChanger.deleteNode()}removeAudioProcessor(e,r,o,s){var n;delete this.audioProcessor,(n=this._localAudioTrack)==null||n.removeAudioProcessor(e,r,o,s)}destroy(){this.close(),this.audioReferenceMap.clear(),this.getPCMAbortCtrlMap.forEach(e=>e==null?void 0:e.abort("destroy")),this.getPCMAbortCtrlMap.clear(),this.audioFrameEventConfigMap.clear(),this.uninstallEvent()}addEncodeProcessor({processor:e,type:r}){var o;this.encodePipeline.includes(e)||(this.encodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}addDecodeProcessor({processor:e,type:r}){var o;this.decodePipeline.includes(e)||(this.decodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}handleLocalTrackStarted({room:e,userId:r}){var s;if(e!==this.room||this.getPCMAbortCtrlMap.get(r))return;let o=this.getPCM(n=>{var a;(a=this.room)==null||a.emit("audio-frame",n)},"");this.getPCMAbortCtrlMap.set(r,o),this.getPCMAbortCtrlMap.get(r)&&((s=this._localAudioTrack)==null||s.on("input-media-track-changed",()=>{let n=this.getPCMAbortCtrlMap.get(r);n&&(n.abort("inputMediaTrackChanged"),n=this.getPCM(a=>{var u;(u=this.room)==null||u.emit("audio-frame",a)},""),this.getPCMAbortCtrlMap.set(r,n))}))}handleLocalTrackStopped({room:e,userId:r}){if(e!==this.room)return;let o=this.getPCMAbortCtrlMap.get(r);o&&(o.abort("stopLocalAudio"),this.getPCMAbortCtrlMap.delete(r))}handleRemoteTrackStarted({room:e,userId:r}){if(e===this.room&&!this.getPCMAbortCtrlMap.get(r)){let o=this.room.audioManager.getPCM(s=>{var n;(n=this.room)==null||n.emit("audio-frame",s)},r);this.getPCMAbortCtrlMap.set(r,o)}}handleRemoteTrackStopped({room:e,userId:r}){if(e!==this.room)return;let o=this.getPCMAbortCtrlMap.get(r);o&&(o.abort("stopRemoteAudio"),this.getPCMAbortCtrlMap.delete(r))}installEvent(){V.on("113",this.handleLocalTrackStarted,this),V.on("114",this.handleLocalTrackStopped,this),V.on("115",this.handleRemoteTrackStarted,this),V.on("116",this.handleRemoteTrackStopped,this)}uninstallEvent(){V.off("113",this.handleLocalTrackStarted),V.off("114",this.handleLocalTrackStopped),V.off("115",this.handleRemoteTrackStarted),V.off("116",this.handleRemoteTrackStopped)}updateAudioReference({type:e,audioReference:r,refId:o,volume:s}){if(e==="add"){if(this.audioReferenceMap.get(o)||!r||(this.audioReferenceMap.set(o,r),!this.audioProcessor))return;this.mixAudioReference(r,o)}else if(e==="remove")this.audioReferenceMap.get(o)&&(this.audioReferenceMap.delete(o),this.unMixAudioReference(o));else if(e==="updateVolume"){if(!this.audioProcessor||M(s))return;this.setAudioReferenceVolume(o,s)}}};function Fg(i=30,t=2){return xe((e,r)=>function(...o){return new Promise((s,n)=>{let a=setTimeout(()=>{let u=new de({code:q.API_CALL_TIMEOUT,message:`checkPendingPromise ${r}() timeout ${i}s`});$.warn(u),t===2?n(u):t===1&&s()},i*1e3);e.apply(this,o).then(s,n).finally(()=>{clearTimeout(a)})})})}var oi=class oi extends rs{constructor(e,r,o){super({userId:r.userId,sdkAppId:e.sdkAppId,mediaType:o,room:e});this.room=e;this.user=r;l(this,"tinyId");l(this,"isRemote",!0);l(this,"jitterBufferDelay",0);l(this,"availableState");l(this,"remotePublishState");l(this,"_triggerCheckDecodeSubject",bt(we(this,oi.STATE_SUBSCRIBE)));this.tinyId=r.tinyId,this.availableState=new ue(`${r.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new ue(`${r.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),Re(rp(we(this,ue.STATECHANGED),we(this.remotePublishState,ue.STATECHANGED)),po(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),Le(u=>{this.availableState.state!==(u?ue.ON:ue.OFF)&&(this.availableState.state=u?ue.ON:ue.OFF),this.updatePlayingState(u)}));let s=Re(we(this.player,tt.ERROR),ar(u=>u.code===MediaError.MEDIA_ERR_DECODE)),n=Re(Fa(5e3),ar(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived?!1:this.player.isPlaying||(this.kind===O.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)?(this.reportDecodeResult(!0),!1):!0)),a=Re(ip(s,n),Ze(we(this,ue.INIT)));Re(this._triggerCheckDecodeSubject,ar(()=>!this.ignoreDecodeError),Mi(a),Le(u=>{this.reportDecodeResult(!1,u)}))}setMute(e){this.isRemotePublished&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isRemotePublished&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}checkDecodeResult(){this._triggerCheckDecodeSubject.next(!0)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get ignoreDecodeError(){var r,o;return(((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===oi.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===ue.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,r){var s,n;let o=this.kind===O.AUDIO;if(z[e?"addSuccessEvent":"addFailedEvent"]({key:o?504700:514702}),!o){let a=((s=this.room)==null?void 0:s.downlinkVideoCodec.toUpperCase())||"H264";z[e?"addSuccessEvent":"addFailedEvent"]({key:rn[`DECODE_${a}_RESULT`]}),e||this.log.warn(`${(n=this.room)==null?void 0:n.downlinkVideoCodec} decode failed`)}e||(z.addEnum({key:o?504701:514703,value:Jo()}),je.uploadEvent({log:`stat-decode-failed-${this.kind}-${la()||Xo()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===O.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:r}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isRemotePublished||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isRemotePublished} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.remotePublishState.state=this.isRemotePublished?ue.ON:ue.OFF}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};l(oi,"STATE_SUBSCRIBE","subscribe"),Z([Fg(5,1)],oi.prototype,"waitHasMediaTrack",1),Z([Ye(ue.INIT,oi.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),V.emit(F.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),Gd(521716,!1)],oi.prototype,"subscribe",1),Z([Ye(oi.STATE_SUBSCRIBE,ue.INIT,{sync:!0,success(){this.log.info("unsubscribed"),V.emit(F.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],oi.prototype,"unsubscribe",1);var gn=oi;var Oi=class extends gn{constructor(e,r){super(e,r,1);l(this,"volume",0);l(this,"mediaType",1);l(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return Ld.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}decodeFrame(e){if(!this.manager)return e;let r=e;for(let o of this.manager.decodePipeline)if(o&&(r=o({frame:r,track:this}),!r))return;return r}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get isRemotePublished(){return this.user.muteState.audioAvailable}};function FI(i){return[15,30,45,60].reduce((e,r)=>Math.abs(r-i)<Math.abs(e-i)?r:e)}var fo=class extends gn{constructor(e,r,o=4){super(e,r,o);l(this,"mediaType",4);l(this,"source");l(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager,this.once("first-video-frame",s=>{this.room.emit("first-video-frame",s)})}play(e,r){return(Je(r==null?void 0:r.canvasRender)?r.canvasRender:Mt===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,r).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new Nt({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let r=new ds(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(r),this.player.setCanvas(e._canvas),Ci()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let r=this.decodeFPS,o=FI(r);if(!Pe(r)||r<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${r} `);return}if(o===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${o} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${r}, closest: ${o}, current: ${e.frameRate}`),e.frameRate=o}get decodeFPS(){var n;let{msg_video_status:e}=((n=this.room.heartbeatReport)==null?void 0:n.msg_down_stream_info.find(a=>a.msg_user_info.str_identifier===this.userId))||{},r=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let o=e.find(a=>a.uint32_video_stream_type===r);return(o==null?void 0:o.uint32_video_dec_fps)||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),super.stop()}decodeFrame(e){if(!this.manager)return e;for(let r of this.manager.decodePipeline)if(r&&(e=r({frame:e,track:this}),!e))return;return e}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(e){this.room.changeType(e,this.user)}get isRemotePublished(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},lu=class extends fo{constructor(e,r){super(e,r,2);l(this,"mediaType",2);l(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var En=new Map;V.on(F.JOIN_SUCCESS,({room:i})=>{nt(i.userId,{eventId:32788})});V.on(F.LEAVE_START,({room:i})=>{nt(i.userId,{eventId:32789})});V.on(F.LOCAL_TRACK_PUBLISHED,({track:i})=>{if(i.room){let t=32769;i.mediaType===4?t=32768:i.mediaType===2&&(t=32805),nt(i.room.userId,{eventId:t})}});V.on(F.LOCAL_TRACK_UNPUBLISHED,({track:i})=>{if(i.room){let t=32771;i.mediaType===4?t=32770:i.mediaType===2&&(t=32806),nt(i.room.userId,{eventId:t})}});V.on(F.TRACK_MUTED,({track:i})=>{i.room&&(i.kind===O.AUDIO?nt(i.room.userId,{eventId:i.isRemote?32785:32772,remoteUserId:i.isRemote?i.userId:void 0}):nt(i.room.userId,{eventId:i.isRemote?32784:32773,remoteUserId:i.isRemote?i.userId:void 0}))});V.on(F.TRACK_UNMUTED,({track:i})=>{i.room&&(i.kind===O.AUDIO?nt(i.room.userId,{eventId:i.isRemote?32787:32774,remoteUserId:i.isRemote?i.userId:void 0}):nt(i.room.userId,{eventId:i.isRemote?32786:32775,remoteUserId:i.isRemote?i.userId:void 0}))});V.on(F.REMOTE_TRACK_SUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&nt(i.room.userId,{eventId:32777,remoteUserId:i.userId}),i.mediaType===4&&nt(i.room.userId,{eventId:32776,remoteUserId:i.userId}),i.mediaType===8&&nt(i.room.userId,{eventId:32803,remoteUserId:i.userId}))});V.on(F.REMOTE_TRACK_UNSUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&nt(i.room.userId,{eventId:32779,remoteUserId:i.userId}),i.mediaType===4&&nt(i.room.userId,{eventId:32778,remoteUserId:i.userId}),i.mediaType===8&&nt(i.room.userId,{eventId:32804,remoteUserId:i.userId}))});V.on(F.SWITCH_DEVICE_SUCCESS,({track:i})=>{i.room&&nt(i.room.userId,{eventId:i.kind===O.VIDEO?32780:32781})});V.on(F.LOCAL_TRACK_REPLACED,({track:i})=>{i.room&&nt(i.room.userId,{eventId:i.kind===O.VIDEO?32782:32783})});V.on(F.SIGNAL_CONNECTION_STATE_CHANGED,({room:i,prevState:t,state:e})=>{let r;switch(e){case"CONNECTED":t==="RECONNECTING"?r=32795:r=32791;break;case"DISCONNECTED":t==="RECONNECTING"?r=32796:r=32790;break;case"RECONNECTING":r=32794;break}r&&nt(i.userId,{eventId:r})});V.on(F.PEER_CONNECTION_STATE_CHANGED,({room:i,prevState:t,state:e,remoteUserId:r})=>{let o=!!r,s;switch(e){case"CONNECTED":t==="RECONNECTING"?s=o?32801:32798:s=o?32793:32792;break;case"DISCONNECTED":t==="RECONNECTING"&&(s=o?32802:32799);break;case"RECONNECTING":s=o?32800:32797;break}s&&nt(i.userId,{eventId:s,remoteUserId:r})});V.on(F.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:i,userId:t,remoteUserId:e,codec:r,isHWCodec:o,prevImplementation:s,streamType:n})=>{let a=o?1:0;s||(a=o?3:2);let u={H264:0,H265:1,VP8:2}[r.toUpperCase()],m={eventId:4004,param1:a,param2:u,streamType:n||2};e&&(m.remoteUserId=e,m.eventId=4005),nt(t,m),z.addEnum({key:e?514701:513701,value:a}),z.addEnum({key:e?514700:513700,value:u})});V.on(F.LOCAL_TRACK_RECAPTURE,({track:i,error:t})=>{if(i.userId){let e={eventId:2003,param1:0};i.kind===O.AUDIO?(e.streamType=1,t&&(e.param1=2)):(e.streamType=i.streamType==="auxiliary"?7:2,t&&(e.param1=8)),nt(i.userId,e)}});function nt(i,t){let e=Ee(J({},t),{timestamp:Vn()});En.has(i)?En.get(i).push(e):En.set(i,[e])}function $g(i){if(En.has(i)){let t=En.get(i).map(e=>({uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,uint32_param1:e.param1,uint32_param2:e.param2,uint32_video_stream_type:e.streamType}));return En.delete(i),t}return[]}function Bg(...i){return xe((t,e)=>function(...r){return $I.call(this,i,r,e,this._name),t.apply(this,r)})}function $I(i,t,e,r){try{if(st(i))for(let o=0;o<i.length;o++)mu.call(this,{rule:i[o],value:t[o],key:i[o].name,fnName:e,className:r});else mu.call(this,{rule:i,value:t[0],key:i.name,fnName:e,className:r})}catch(o){throw $.error(o),o}}function mu({rule:i,value:t,key:e,fnName:r,className:o}){if(M(t)){if(i.required)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_REQUIRED,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(M(i.defaultValue))return;t=i.defaultValue}if(Array.isArray(i.type)){let a=!1;for(let u=0;u<i.type.length;u++)i.type[u]===null&&t===null&&(a=!0),We(i.type[u])&&t instanceof i.type[u]&&(a=!0),Ne(i.type[u])&&ct(t)===i.type[u].toLowerCase()&&(a=!0);if(!a)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_TYPE,data:{key:e,rule:{type:i.type.map(u=>Wo(u)?Ls(u):Ne(u)?u:ct(u))},fnName:r,value:t},link:{className:o,fnName:r}})})}else if(!M(i.type)&&ct(t)!==i.type)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_TYPE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(i.allowEmpty===!1){let a=Pe(t)&&(t===0||Number.isNaN(t)),u=Ne(t)&&t.trim()==="";if(a||u)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_EMPTY,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})})}if(i.notLessThanZero&&Pe(t)&&t<0)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.CANNOT_LESS_THAN_ZERO,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(!M(i.min)&&Pe(t)&&t<i.min)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_MIN,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(!M(i.max)&&Pe(t)&&t>i.max)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_MAX,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(Ne(i.instanceOf)){if(!t||t._name!==i.instanceOf)throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})})}else if(We(i.instanceOf)&&!(t instanceof i.instanceOf))throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(i.values&&!i.values.includes(t))throw new de({code:q.INVALID_PARAMETER,message:Be({key:$e.INVALID_PARAMETER_RANGE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});let{properties:s}=i;Ft(s)&&rr(t)&&Object.keys(s).forEach(a=>{mu.call(this,{rule:s[a],value:t&&t[a],key:`${e}.${a}`,fnName:r,className:o})});let{arrayItem:n}=i;Ft(n)&&st(t)&&t.forEach((a,u)=>{mu.call(this,{rule:n,value:a,key:`${e}[${u}]`,fnName:r,className:o})}),We(i.validate)&&i.validate.call(this,t,e,r,o,this)}var BI=Ki(so(),1);var HI=Object.create,Eu=Object.defineProperty,WI=Object.defineProperties,jg=Object.getOwnPropertyDescriptor,GI=Object.getOwnPropertyDescriptors,qg=Object.getOwnPropertyNames,Hg=Object.getOwnPropertySymbols,jI=Object.getPrototypeOf,zg=Object.prototype.hasOwnProperty,qI=Object.prototype.propertyIsEnumerable,Bp=(i,t,e)=>t in i?Eu(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,hu=(i,t)=>{for(var e in t||(t={}))zg.call(t,e)&&Bp(i,e,t[e]);if(Hg)for(var e of Hg(t))qI.call(t,e)&&Bp(i,e,t[e]);return i},fu=(i,t)=>WI(i,GI(t)),zI=(i,t)=>function(){return t||(0,i[qg(i)[0]])((t={exports:{}}).exports,t),t.exports},JI=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of qg(t))zg.call(i,o)||o===e||Eu(i,o,{get:()=>t[o],enumerable:!(r=jg(t,o))||r.enumerable});return i},XI=(i,t,e)=>(e=i!=null?HI(jI(i)):{},JI(!t&&i&&i.__esModule?e:Eu(e,"default",{value:i,enumerable:!0}),i)),xi=(i,t,e,r)=>{for(var o,s=r>1?void 0:r?jg(t,e):t,n=i.length-1;n>=0;n--)(o=i[n])&&(s=(r?o(t,e,s):o(s))||s);return r&&s&&Eu(t,e,s),s},Lr=(i,t,e)=>Bp(i,typeof t!="symbol"?t+"":t,e),QI=zI({"../node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js"(i,t){"use strict";var e=Object.prototype.hasOwnProperty,r="~";function o(){}function s(m,h,g){this.fn=m,this.context=h,this.once=g||!1}function n(m,h,g,T,A){if(typeof g!="function")throw new TypeError("The listener must be a function");var C=new s(g,T||m,A),N=r?r+h:h;return m._events[N]?m._events[N].fn?m._events[N]=[m._events[N],C]:m._events[N].push(C):(m._events[N]=C,m._eventsCount++),m}function a(m,h){--m._eventsCount==0?m._events=new o:delete m._events[h]}function u(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),new o().__proto__||(r=!1)),u.prototype.eventNames=function(){var m,h,g=[];if(this._eventsCount===0)return g;for(h in m=this._events)e.call(m,h)&&g.push(r?h.slice(1):h);return Object.getOwnPropertySymbols?g.concat(Object.getOwnPropertySymbols(m)):g},u.prototype.listeners=function(m){var h=r?r+m:m,g=this._events[h];if(!g)return[];if(g.fn)return[g.fn];for(var T=0,A=g.length,C=new Array(A);T<A;T++)C[T]=g[T].fn;return C},u.prototype.listenerCount=function(m){var h=r?r+m:m,g=this._events[h];return g?g.fn?1:g.length:0},u.prototype.emit=function(m,h,g,T,A,C){var N=r?r+m:m;if(!this._events[N])return!1;var D,P,K=this._events[N],pe=arguments.length;if(K.fn){switch(K.once&&this.removeListener(m,K.fn,void 0,!0),pe){case 1:return K.fn.call(K.context),!0;case 2:return K.fn.call(K.context,h),!0;case 3:return K.fn.call(K.context,h,g),!0;case 4:return K.fn.call(K.context,h,g,T),!0;case 5:return K.fn.call(K.context,h,g,T,A),!0;case 6:return K.fn.call(K.context,h,g,T,A,C),!0}for(P=1,D=new Array(pe-1);P<pe;P++)D[P-1]=arguments[P];K.fn.apply(K.context,D)}else{var ce,Qe=K.length;for(P=0;P<Qe;P++)switch(K[P].once&&this.removeListener(m,K[P].fn,void 0,!0),pe){case 1:K[P].fn.call(K[P].context);break;case 2:K[P].fn.call(K[P].context,h);break;case 3:K[P].fn.call(K[P].context,h,g);break;case 4:K[P].fn.call(K[P].context,h,g,T);break;default:if(!D)for(ce=1,D=new Array(pe-1);ce<pe;ce++)D[ce-1]=arguments[ce];K[P].fn.apply(K[P].context,D)}}return!0},u.prototype.on=function(m,h,g){return n(this,m,h,g,!1)},u.prototype.once=function(m,h,g){return n(this,m,h,g,!0)},u.prototype.removeListener=function(m,h,g,T){var A=r?r+m:m;if(!this._events[A])return this;if(!h)return a(this,A),this;var C=this._events[A];if(C.fn)C.fn!==h||T&&!C.once||g&&C.context!==g||a(this,A);else{for(var N=0,D=[],P=C.length;N<P;N++)(C[N].fn!==h||T&&!C[N].once||g&&C[N].context!==g)&&D.push(C[N]);D.length?this._events[A]=D.length===1?D[0]:D:a(this,A)}return this},u.prototype.removeAllListeners=function(m){var h;return m?(h=r?r+m:m,this._events[h]&&a(this,h)):(this._events=new o,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=r,u.EventEmitter=u,t!==void 0&&(t.exports=u)}}),YI=XI(QI(),1),Wg=Symbol("instance"),_x=Symbol("abortCtrl"),pu=Symbol("cacheResult"),Fp=class{constructor(i,t,e){this.oldState=i,this.newState=t,this.action=e,this.aborted=!1}abort(i){this.aborted=!0,za.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},gu=class extends Error{constructor(i,t,e){super(t),this.state=i,this.message=t,this.cause=e}};function ZI(i){return typeof i=="object"&&i&&"then"in i}var qa=new Map;function go(i,t,e={}){return(r,o,s)=>{let n=e.action||o;if(!e.context){let u=qa.get(r)||[];qa.has(r)||qa.set(r,u),u.push({from:i,to:t,action:n})}let a=s.value;s.value=function(...u){let m=this;if(e.context&&(m=Jt.get(typeof e.context=="function"?e.context.call(this,...u):e.context)),m.state===t)return e.sync?m[pu]:Promise.resolve(m[pu]);m.state instanceof Fp&&m.state.action==e.abortAction&&m.state.abort(m);let h=null;Array.isArray(i)?i.length==0?m.state instanceof Fp&&m.state.abort(m):typeof m.state=="string"&&i.includes(m.state)||(h=new gu(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i.join("|")}`)):i!==m.state&&(h=new gu(m._state,`${m.name} ${n} to ${t} failed: current state ${m._state} not from ${i}`));let g=D=>{if(e.fail&&e.fail.call(this,D),e.sync){if(e.ignoreError)return D;throw D}return e.ignoreError?Promise.resolve(D):Promise.reject(D)};if(h)return g(h);let T=m.state,A=new Fp(T,t,n);za.call(m,A);let C=D=>{var P;return m[pu]=D,A.aborted||(za.call(m,t),(P=e.success)===null||P===void 0||P.call(this,m[pu])),D},N=D=>(za.call(m,T,D),g(D));try{let D=a.apply(this,u);return ZI(D)?D.then(C).catch(N):e.sync?C(D):Promise.resolve(C(D))}catch(D){return N(new gu(m._state,`${m.name} ${n} from ${i} to ${t} failed: ${D}`,D instanceof Error?D:new Error(String(D))))}}}}function KI(...i){return(t,e,r)=>{let o=r.value,s=e;r.value=function(...n){if(!i.includes(this.state.toString()))throw new gu(this.state,`${this.name} ${s} failed: current state ${this.state} not in ${i}`);return o.apply(this,n)}}}var ey=typeof window!="undefined"&&window.__AFSM__?(e,r)=>{window.dispatchEvent(new CustomEvent(e,{detail:r}))}:typeof importScripts!="undefined"?(e,r)=>{postMessage({type:e,payload:r})}:()=>{};function za(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(Jt.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var Jt=class gr extends YI.default{constructor(t,e,r){super(),this.name=t,this.groupName=e,this._state=gr.INIT,t||(t=Date.now().toString(36)),r?Object.setPrototypeOf(this,r):r=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let o=r[Wg];o?this.name=o.name+"-"+o.count++:r[Wg]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=qa.get(t)||[],r=new Set,o=[],s=[],n=new Set,a=Object.getPrototypeOf(t);qa.has(a)&&(a.stateDiagram.forEach(m=>r.add(m)),a.allStates.forEach(m=>n.add(m))),e.forEach(({from:m,to:h,action:g})=>{typeof m=="string"?o.push({from:m,to:h,action:g}):m.length?m.forEach(T=>{o.push({from:T,to:h,action:g})}):s.push({to:h,action:g})}),o.forEach(({from:m,to:h,action:g})=>{n.add(m),n.add(h),n.add(g+"ing"),r.add(`${m} --> ${g}ing : ${g}`),r.add(`${g}ing --> ${h} : ${g} \u{1F7E2}`),r.add(`${g}ing --> ${m} : ${g} \u{1F534}`)}),s.forEach(({to:m,action:h})=>{r.add(`${h}ing --> ${m} : ${h} \u{1F7E2}`),n.forEach(g=>{g!==m&&r.add(`${g} --> ${h}ing : ${h}`)})});let u=[...r];return Object.defineProperties(t,{stateDiagram:{value:u},allStates:{value:n}}),u}static get(t){let e;return typeof t=="string"?(e=gr.instances.get(t),e||gr.instances.set(t,e=new gr(t,void 0,Object.create(gr.prototype)))):(e=gr.instances2.get(t),e||gr.instances2.set(t,e=new gr(t.constructor.name,void 0,Object.create(gr.prototype)))),e}static getState(t){var e;return(e=gr.get(t))===null||e===void 0?void 0:e.state}updateDevTools(t={}){ey(gr.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){za.call(this,t)}};Jt.STATECHANGED="stateChanged",Jt.UPDATEAFSM="updateAFSM",Jt.INIT="[*]",Jt.ON="on",Jt.OFF="off",Jt.instances=new Map,Jt.instances2=new WeakMap;var Tn=class extends Jt{constructor(){super(...arguments),Lr(this,"decoder"),Lr(this,"config")}initialize(){return y(this,null,function*(){this.decoder=new VideoDecoder({output:i=>{this.emit("videoFrame",i)},error:i=>{this.close(),this.emit("error",i)}})})}configure(i){this.config=i,this.decoder.configure(fu(hu({},i),{codec:this.getCodec(i)}))}getCodec(i){switch(i.codec){case"hevc":return"hvc1.1.6.L0.12.34.56.78.9A.BC";case"av1":return"av01.0.05M.08";case"avc":return"avc1.420028";default:return i.codec}}decode(i){this.decoder.state==="configured"&&this.decoder.decode(new EncodedVideoChunk(i))}flush(){this.decoder.flush()}reset(){this.decoder.reset()}close(){this.decoder.state!=="closed"&&this.decoder.close()}};function ty(){var i;self.onmessage=t=>{if(t.data.type==="init"){let{canvas:e,wasmScript:r,wasmBinary:o}=t.data,s=e==null?void 0:e.getContext("2d"),n=0,a=0,u={wasmBinary:o,postRun:()=>{i=new u.VideoDecoder({videoInfo(m,h){n=m,a=h,console.log("video info",m,h)},yuvData(m,h){let g=n*a,T=g>>2,A=u.HEAPU32[m>>2],C=u.HEAPU32[1+(m>>2)],N=u.HEAPU32[2+(m>>2)],D=u.HEAPU8.subarray(A,A+g),P=u.HEAPU8.subarray(C,C+T),K=u.HEAPU8.subarray(N,N+T),pe=new Uint8Array(g+T+T);pe.set(D),pe.set(P,g),pe.set(K,g+T);let ce=new VideoFrame(pe,{codedWidth:n,codedHeight:a,format:"I420",timestamp:h});e?(s==null||s.drawImage(ce,0,0,e.width,e.height),s==null||s.commit()):self.postMessage({type:"yuvData",videoFrame:ce},[ce])}}),self.postMessage({type:"ready"})}};Function("var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;return "+r)()(u)}else if(t.data.type==="decode"){let{packet:e}=t.data;i==null||i.decode(e.data,e.type=="key",e.timestamp)}else if(t.data.type==="setCodec"){let{codec:e,format:r,description:o}=t.data;i==null||i.setCodec(e,r,o!=null?o:"")}}}xi([go([Jt.INIT,"closed"],"initialized")],Tn.prototype,"initialize",1),xi([go("initialized","configured",{sync:!0})],Tn.prototype,"configure",1),xi([KI("configured")],Tn.prototype,"decode",1),xi([go([],Jt.INIT,{sync:!0})],Tn.prototype,"reset",1),xi([go([],"closed",{ignoreError:!0,sync:!0})],Tn.prototype,"close",1);var ja=class extends Jt{constructor(i,t,e=!1,r,o=!1){super(),this.createModule=i,this.wasmBinary=t,this.workerMode=e,this.canvas=r,this.yuvMode=o,Lr(this,"worker"),Lr(this,"decoder"),Lr(this,"config"),Lr(this,"module",{}),Lr(this,"width",0),Lr(this,"height",0)}initialize(i){return y(this,null,function*(){var t;if(this.workerMode){let r=new RegExp("\\{(.+)\\}","s").exec(ty.toString())[1];this.worker=new Worker(URL.createObjectURL(new Blob([r],{type:"text/javascript"})));let o=(t=this.canvas)==null?void 0:t.transferControlToOffscreen(),s=yield this.wasmBinary;return console.warn("worker mode",s),this.worker.postMessage({type:"init",canvas:o,wasmScript:this.createModule.toString(),wasmBinary:s},o?[o,s]:[s]),new Promise(n=>{this.worker.onmessage=a=>{if(a.data.type==="ready")delete this.wasmBinary,n(),console.warn("worker mode initialize success");else if(a.data.type==="yuvData"){let{videoFrame:u}=a.data;this.emit("videoFrame",u)}}})}let e=this.module;return this.wasmBinary&&(e.wasmBinary=yield this.wasmBinary),e.print=r=>console.log(r),e.printErr=r=>console.log(`[JS] ERROR: ${r}`),e.onAbort=()=>console.log("[JS] FATAL: WASM ABORTED"),new Promise(r=>{e.postRun=o=>{this.decoder=new this.module.VideoDecoder(this),console.log("video soft decoder initialize success"),r()},i&&Object.assign(e,i),this.createModule(e)})})}configure(i){var t,e,r;this.config=i;let o=this.config.codec.startsWith("avc")?"avc":"hevc",s=this.config.description?o=="avc"?"avcc":"hvcc":"annexb";(e=this.decoder)==null||e.setCodec(o,s,(t=this.config.description)!=null?t:""),(r=this.worker)==null||r.postMessage({type:"setCodec",codec:o,format:s,description:this.config.description})}decode(i){var t,e;(t=this.decoder)==null||t.decode(i.data,i.type=="key",i.timestamp),this.state==="configured"&&((e=this.worker)==null||e.postMessage({type:"decode",packet:i}))}flush(){}reset(){this.config=void 0,this.decoder&&this.decoder.clear()}close(){this.removeAllListeners(),this.decoder&&(this.decoder.clear(),this.decoder.delete())}videoInfo(i,t){this.width=i,this.height=t;let e={width:i,height:t};this.emit("videoCodecInfo",e)}yuvData(i,t){if(!this.module)return;let e=this.width*this.height,r=e>>2,o=this.module.HEAPU32[i>>2],s=this.module.HEAPU32[1+(i>>2)],n=this.module.HEAPU32[2+(i>>2)],a=this.module.HEAPU8.subarray(o,o+e),u=this.module.HEAPU8.subarray(s,s+r),m=this.module.HEAPU8.subarray(n,n+r);if(this.yuvMode)return void this.emit("videoFrame",{y:a,u,v:m,timestamp:t});let h=new Uint8Array(e+r+r);h.set(a),h.set(u,e),h.set(m,e+r),this.emit("videoFrame",new VideoFrame(h,{codedWidth:this.width,codedHeight:this.height,format:"I420",timestamp:t}))}errorInfo(i){let t={errMsg:i};this.emit("error",t)}};xi([go([Jt.INIT,"closed"],"initialized")],ja.prototype,"initialize",1),xi([go("initialized","configured",{sync:!0})],ja.prototype,"configure",1),xi([go([],Jt.INIT,{sync:!0})],ja.prototype,"reset",1),xi([go([],"closed",{sync:!0})],ja.prototype,"close",1);var ry=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e,r,o=t;o.ready=new Promise((c,d)=>{e=c,r=d});var s,n,a,u=Object.assign({},o),m="./this.program",h=typeof window=="object",g=typeof importScripts=="function",T=(typeof process=="object"&&typeof process.versions=="object"&&process.versions.node,"");(h||g)&&(g?T=self.location.href:typeof document!="undefined"&&document.currentScript&&(T=document.currentScript.src),i&&(T=i),T=T.indexOf("blob:")!==0?T.substr(0,T.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=c=>{var d=new XMLHttpRequest;return d.open("GET",c,!1),d.send(null),d.responseText},g&&(a=c=>{var d=new XMLHttpRequest;return d.open("GET",c,!1),d.responseType="arraybuffer",d.send(null),new Uint8Array(d.response)}),n=(c,d,p)=>{var f=new XMLHttpRequest;f.open("GET",c,!0),f.responseType="arraybuffer",f.onload=()=>{f.status==200||f.status==0&&f.response?d(f.response):p()},f.onerror=p,f.send(null)});var A,C=o.print||console.log.bind(console),N=o.printErr||console.error.bind(console);Object.assign(o,u),u=null,o.arguments&&o.arguments,o.thisProgram&&(m=o.thisProgram),o.quit&&o.quit,o.wasmBinary&&(A=o.wasmBinary);var D,P;o.noExitRuntime,typeof WebAssembly!="object"&&Vr("no native wasm support detected");var K,pe,ce,Qe,Q,Ue,Ro,Rn,vn,Cn=!1,Ur=[],Ts=[],Vi=[],cr=0,ai=null,ci=null;function re(c){cr++,o.monitorRunDependencies&&o.monitorRunDependencies(cr)}function vo(c){if(cr--,o.monitorRunDependencies&&o.monitorRunDependencies(cr),cr==0&&(ai!==null&&(clearInterval(ai),ai=null),ci)){var d=ci;ci=null,d()}}function Vr(c){o.onAbort&&o.onAbort(c),N(c="Aborted("+c+")"),Cn=!0,c+=". Build with -sASSERTIONS for more info.";var d=new WebAssembly.RuntimeError(c);throw r(d),d}var di,Nn,Te,Ke;function kt(c){return c.startsWith("data:application/octet-stream;base64,")}function j(c){if(c==di&&A)return new Uint8Array(A);if(a)return a(c);throw"both async and sync fetching of the wasm failed"}function Fr(c,d,p){return function(f){return A||!h&&!g||typeof fetch!="function"?Promise.resolve().then(()=>j(f)):fetch(f,{credentials:"same-origin"}).then(S=>{if(!S.ok)throw"failed to load wasm binary file at '"+f+"'";return S.arrayBuffer()}).catch(()=>j(f))}(c).then(f=>WebAssembly.instantiate(f,d)).then(f=>f).then(p,f=>{N("failed to asynchronously prepare wasm: "+f),Vr(f)})}kt(di="videodec.wasm")||(Nn=di,di=o.locateFile?o.locateFile(Nn,T):T+Nn);var Fi=c=>{for(;c.length>0;)c.shift()(o)};function $i(c){this.excPtr=c,this.ptr=c-24,this.set_type=function(d){Ue[this.ptr+4>>2]=d},this.get_type=function(){return Ue[this.ptr+4>>2]},this.set_destructor=function(d){Ue[this.ptr+8>>2]=d},this.get_destructor=function(){return Ue[this.ptr+8>>2]},this.set_caught=function(d){d=d?1:0,K[this.ptr+12|0]=d},this.get_caught=function(){return K[this.ptr+12|0]!=0},this.set_rethrown=function(d){d=d?1:0,K[this.ptr+13|0]=d},this.get_rethrown=function(){return K[this.ptr+13|0]!=0},this.init=function(d,p){this.set_adjusted_ptr(0),this.set_type(d),this.set_destructor(p)},this.set_adjusted_ptr=function(d){Ue[this.ptr+16>>2]=d},this.get_adjusted_ptr=function(){return Ue[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Pn(this.get_type()))return Ue[this.excPtr>>2];var d=this.get_adjusted_ptr();return d!==0?d:this.excPtr}}var le={isAbs:c=>c.charAt(0)==="/",splitPath:c=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(c).slice(1),normalizeArray:(c,d)=>{for(var p=0,f=c.length-1;f>=0;f--){var S=c[f];S==="."?c.splice(f,1):S===".."?(c.splice(f,1),p++):p&&(c.splice(f,1),p--)}if(d)for(;p;p--)c.unshift("..");return c},normalize:c=>{var d=le.isAbs(c),p=c.substr(-1)==="/";return(c=le.normalizeArray(c.split("/").filter(f=>!!f),!d).join("/"))||d||(c="."),c&&p&&(c+="/"),(d?"/":"")+c},dirname:c=>{var d=le.splitPath(c),p=d[0],f=d[1];return p||f?(f&&(f=f.substr(0,f.length-1)),p+f):"."},basename:c=>{if(c==="/")return"/";var d=(c=(c=le.normalize(c)).replace(/\/$/,"")).lastIndexOf("/");return d===-1?c:c.substr(d+1)},join:function(){var c=Array.prototype.slice.call(arguments);return le.normalize(c.join("/"))},join2:(c,d)=>le.normalize(c+"/"+d)},wn=c=>(wn=(()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return d=>crypto.getRandomValues(d);Vr("initRandomDevice")})())(c),Xt={resolve:function(){for(var c="",d=!1,p=arguments.length-1;p>=-1&&!d;p--){var f=p>=0?arguments[p]:E.cwd();if(typeof f!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!f)return"";c=f+"/"+c,d=le.isAbs(f)}return(d?"/":"")+(c=le.normalizeArray(c.split("/").filter(S=>!!S),!d).join("/"))||"."},relative:(c,d)=>{function p(L){for(var Y=0;Y<L.length&&L[Y]==="";Y++);for(var ne=L.length-1;ne>=0&&L[ne]==="";ne--);return Y>ne?[]:L.slice(Y,ne-Y+1)}c=Xt.resolve(c).substr(1),d=Xt.resolve(d).substr(1);for(var f=p(c.split("/")),S=p(d.split("/")),b=Math.min(f.length,S.length),R=b,v=0;v<b;v++)if(f[v]!==S[v]){R=v;break}var U=[];for(v=R;v<f.length;v++)U.push("..");return(U=U.concat(S.slice(R))).join("/")}},Bi=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,Pt=(c,d,p)=>{for(var f=d+p,S=d;c[S]&&!(S>=f);)++S;if(S-d>16&&c.buffer&&Bi)return Bi.decode(c.subarray(d,S));for(var b="";d<S;){var R=c[d++];if(128&R){var v=63&c[d++];if((224&R)!=192){var U=63&c[d++];if((R=(240&R)==224?(15&R)<<12|v<<6|U:(7&R)<<18|v<<12|U<<6|63&c[d++])<65536)b+=String.fromCharCode(R);else{var L=R-65536;b+=String.fromCharCode(55296|L>>10,56320|1023&L)}}else b+=String.fromCharCode((31&R)<<6|v)}else b+=String.fromCharCode(R)}return b},Dn=[],Co=c=>{for(var d=0,p=0;p<c.length;++p){var f=c.charCodeAt(p);f<=127?d++:f<=2047?d+=2:f>=55296&&f<=57343?(d+=4,++p):d+=3}return d},No=(c,d,p,f)=>{if(!(f>0))return 0;for(var S=p,b=p+f-1,R=0;R<c.length;++R){var v=c.charCodeAt(R);if(v>=55296&&v<=57343&&(v=65536+((1023&v)<<10)|1023&c.charCodeAt(++R)),v<=127){if(p>=b)break;d[p++]=v}else if(v<=2047){if(p+1>=b)break;d[p++]=192|v>>6,d[p++]=128|63&v}else if(v<=65535){if(p+2>=b)break;d[p++]=224|v>>12,d[p++]=128|v>>6&63,d[p++]=128|63&v}else{if(p+3>=b)break;d[p++]=240|v>>18,d[p++]=128|v>>12&63,d[p++]=128|v>>6&63,d[p++]=128|63&v}}return d[p]=0,p-S};function _s(c,d,p){var f=p>0?p:Co(c)+1,S=new Array(f),b=No(c,S,0,S.length);return d&&(S.length=b),S}var _r={ttys:[],init:function(){},shutdown:function(){},register:function(c,d){_r.ttys[c]={input:[],output:[],ops:d},E.registerDevice(c,_r.stream_ops)},stream_ops:{open:function(c){var d=_r.ttys[c.node.rdev];if(!d)throw new E.ErrnoError(43);c.tty=d,c.seekable=!1},close:function(c){c.tty.ops.fsync(c.tty)},fsync:function(c){c.tty.ops.fsync(c.tty)},read:function(c,d,p,f,S){if(!c.tty||!c.tty.ops.get_char)throw new E.ErrnoError(60);for(var b=0,R=0;R<f;R++){var v;try{v=c.tty.ops.get_char(c.tty)}catch(U){throw new E.ErrnoError(29)}if(v===void 0&&b===0)throw new E.ErrnoError(6);if(v==null)break;b++,d[p+R]=v}return b&&(c.node.timestamp=Date.now()),b},write:function(c,d,p,f,S){if(!c.tty||!c.tty.ops.put_char)throw new E.ErrnoError(60);try{for(var b=0;b<f;b++)c.tty.ops.put_char(c.tty,d[p+b])}catch(R){throw new E.ErrnoError(29)}return f&&(c.node.timestamp=Date.now()),b}},default_tty_ops:{get_char:function(c){return(()=>{if(!Dn.length){var d=null;if(typeof window!="undefined"&&typeof window.prompt=="function"?(d=window.prompt("Input: "))!==null&&(d+=`
51
+ `):typeof readline=="function"&&(d=readline())!==null&&(d+=`
52
+ `),!d)return null;Dn=_s(d,!0)}return Dn.shift()})()},put_char:function(c,d){d===null||d===10?(C(Pt(c.output,0)),c.output=[]):d!=0&&c.output.push(d)},fsync:function(c){c.output&&c.output.length>0&&(C(Pt(c.output,0)),c.output=[])},ioctl_tcgets:function(c){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(c,d,p){return 0},ioctl_tiocgwinsz:function(c){return[24,80]}},default_tty1_ops:{put_char:function(c,d){d===null||d===10?(N(Pt(c.output,0)),c.output=[]):d!=0&&c.output.push(d)},fsync:function(c){c.output&&c.output.length>0&&(N(Pt(c.output,0)),c.output=[])}}},me=c=>{Vr()},Ae={ops_table:null,mount:c=>Ae.createNode(null,"/",16895,0),createNode(c,d,p,f){if(E.isBlkdev(p)||E.isFIFO(p))throw new E.ErrnoError(63);Ae.ops_table||(Ae.ops_table={dir:{node:{getattr:Ae.node_ops.getattr,setattr:Ae.node_ops.setattr,lookup:Ae.node_ops.lookup,mknod:Ae.node_ops.mknod,rename:Ae.node_ops.rename,unlink:Ae.node_ops.unlink,rmdir:Ae.node_ops.rmdir,readdir:Ae.node_ops.readdir,symlink:Ae.node_ops.symlink},stream:{llseek:Ae.stream_ops.llseek}},file:{node:{getattr:Ae.node_ops.getattr,setattr:Ae.node_ops.setattr},stream:{llseek:Ae.stream_ops.llseek,read:Ae.stream_ops.read,write:Ae.stream_ops.write,allocate:Ae.stream_ops.allocate,mmap:Ae.stream_ops.mmap,msync:Ae.stream_ops.msync}},link:{node:{getattr:Ae.node_ops.getattr,setattr:Ae.node_ops.setattr,readlink:Ae.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Ae.node_ops.getattr,setattr:Ae.node_ops.setattr},stream:E.chrdev_stream_ops}});var S=E.createNode(c,d,p,f);return E.isDir(S.mode)?(S.node_ops=Ae.ops_table.dir.node,S.stream_ops=Ae.ops_table.dir.stream,S.contents={}):E.isFile(S.mode)?(S.node_ops=Ae.ops_table.file.node,S.stream_ops=Ae.ops_table.file.stream,S.usedBytes=0,S.contents=null):E.isLink(S.mode)?(S.node_ops=Ae.ops_table.link.node,S.stream_ops=Ae.ops_table.link.stream):E.isChrdev(S.mode)&&(S.node_ops=Ae.ops_table.chrdev.node,S.stream_ops=Ae.ops_table.chrdev.stream),S.timestamp=Date.now(),c&&(c.contents[d]=S,c.timestamp=S.timestamp),S},getFileDataAsTypedArray:c=>c.contents?c.contents.subarray?c.contents.subarray(0,c.usedBytes):new Uint8Array(c.contents):new Uint8Array(0),expandFileStorage(c,d){var p=c.contents?c.contents.length:0;if(!(p>=d)){d=Math.max(d,p*(p<1048576?2:1.125)>>>0),p!=0&&(d=Math.max(d,256));var f=c.contents;c.contents=new Uint8Array(d),c.usedBytes>0&&c.contents.set(f.subarray(0,c.usedBytes),0)}},resizeFileStorage(c,d){if(c.usedBytes!=d)if(d==0)c.contents=null,c.usedBytes=0;else{var p=c.contents;c.contents=new Uint8Array(d),p&&c.contents.set(p.subarray(0,Math.min(d,c.usedBytes))),c.usedBytes=d}},node_ops:{getattr(c){var d={};return d.dev=E.isChrdev(c.mode)?c.id:1,d.ino=c.id,d.mode=c.mode,d.nlink=1,d.uid=0,d.gid=0,d.rdev=c.rdev,E.isDir(c.mode)?d.size=4096:E.isFile(c.mode)?d.size=c.usedBytes:E.isLink(c.mode)?d.size=c.link.length:d.size=0,d.atime=new Date(c.timestamp),d.mtime=new Date(c.timestamp),d.ctime=new Date(c.timestamp),d.blksize=4096,d.blocks=Math.ceil(d.size/d.blksize),d},setattr(c,d){d.mode!==void 0&&(c.mode=d.mode),d.timestamp!==void 0&&(c.timestamp=d.timestamp),d.size!==void 0&&Ae.resizeFileStorage(c,d.size)},lookup(c,d){throw E.genericErrors[44]},mknod:(c,d,p,f)=>Ae.createNode(c,d,p,f),rename(c,d,p){if(E.isDir(c.mode)){var f;try{f=E.lookupNode(d,p)}catch(b){}if(f)for(var S in f.contents)throw new E.ErrnoError(55)}delete c.parent.contents[c.name],c.parent.timestamp=Date.now(),c.name=p,d.contents[p]=c,d.timestamp=c.parent.timestamp,c.parent=d},unlink(c,d){delete c.contents[d],c.timestamp=Date.now()},rmdir(c,d){var p=E.lookupNode(c,d);for(var f in p.contents)throw new E.ErrnoError(55);delete c.contents[d],c.timestamp=Date.now()},readdir(c){var d=[".",".."];for(var p in c.contents)c.contents.hasOwnProperty(p)&&d.push(p);return d},symlink(c,d,p){var f=Ae.createNode(c,d,41471,0);return f.link=p,f},readlink(c){if(!E.isLink(c.mode))throw new E.ErrnoError(28);return c.link}},stream_ops:{read(c,d,p,f,S){var b=c.node.contents;if(S>=c.node.usedBytes)return 0;var R=Math.min(c.node.usedBytes-S,f);if(R>8&&b.subarray)d.set(b.subarray(S,S+R),p);else for(var v=0;v<R;v++)d[p+v]=b[S+v];return R},write(c,d,p,f,S,b){if(!f)return 0;var R=c.node;if(R.timestamp=Date.now(),d.subarray&&(!R.contents||R.contents.subarray)){if(b)return R.contents=d.subarray(p,p+f),R.usedBytes=f,f;if(R.usedBytes===0&&S===0)return R.contents=d.slice(p,p+f),R.usedBytes=f,f;if(S+f<=R.usedBytes)return R.contents.set(d.subarray(p,p+f),S),f}if(Ae.expandFileStorage(R,S+f),R.contents.subarray&&d.subarray)R.contents.set(d.subarray(p,p+f),S);else for(var v=0;v<f;v++)R.contents[S+v]=d[p+v];return R.usedBytes=Math.max(R.usedBytes,S+f),f},llseek(c,d,p){var f=d;if(p===1?f+=c.position:p===2&&E.isFile(c.node.mode)&&(f+=c.node.usedBytes),f<0)throw new E.ErrnoError(28);return f},allocate(c,d,p){Ae.expandFileStorage(c.node,d+p),c.node.usedBytes=Math.max(c.node.usedBytes,d+p)},mmap(c,d,p,f,S){if(!E.isFile(c.node.mode))throw new E.ErrnoError(43);var b,R,v=c.node.contents;if(2&S||v.buffer!==K.buffer){if((p>0||p+d<v.length)&&(v=v.subarray?v.subarray(p,p+d):Array.prototype.slice.call(v,p,p+d)),R=!0,!(b=me()))throw new E.ErrnoError(48);K.set(v,b)}else R=!1,b=v.byteOffset;return{ptr:b,allocated:R}},msync:(c,d,p,f,S)=>(Ae.stream_ops.write(c,d,0,f,p,!1),0)}},el=(c,d,p,f)=>{var S=f?"":`al ${c}`;n(c,b=>{var R;R=`Loading data file "${c}" failed (no arrayBuffer).`,b||Vr(R),d(new Uint8Array(b)),S&&vo()},b=>{if(!p)throw`Loading data file "${c}" failed.`;p()}),S&&re()},tl=o.preloadPlugins||[];function ui(c,d){var p=0;return c&&(p|=365),d&&(p|=146),p}var E={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(c,d={})=>{if(!(c=Xt.resolve(c)))return{path:"",node:null};if((d=Object.assign({follow_mount:!0,recurse_count:0},d)).recurse_count>8)throw new E.ErrnoError(32);for(var p=c.split("/").filter(L=>!!L),f=E.root,S="/",b=0;b<p.length;b++){var R=b===p.length-1;if(R&&d.parent)break;if(f=E.lookupNode(f,p[b]),S=le.join2(S,p[b]),E.isMountpoint(f)&&(!R||R&&d.follow_mount)&&(f=f.mounted.root),!R||d.follow)for(var v=0;E.isLink(f.mode);){var U=E.readlink(S);if(S=Xt.resolve(le.dirname(S),U),f=E.lookupPath(S,{recurse_count:d.recurse_count+1}).node,v++>40)throw new E.ErrnoError(32)}}return{path:S,node:f}},getPath:c=>{for(var d;;){if(E.isRoot(c)){var p=c.mount.mountpoint;return d?p[p.length-1]!=="/"?`${p}/${d}`:p+d:p}d=d?`${c.name}/${d}`:c.name,c=c.parent}},hashName:(c,d)=>{for(var p=0,f=0;f<d.length;f++)p=(p<<5)-p+d.charCodeAt(f)|0;return(c+p>>>0)%E.nameTable.length},hashAddNode:c=>{var d=E.hashName(c.parent.id,c.name);c.name_next=E.nameTable[d],E.nameTable[d]=c},hashRemoveNode:c=>{var d=E.hashName(c.parent.id,c.name);if(E.nameTable[d]===c)E.nameTable[d]=c.name_next;else for(var p=E.nameTable[d];p;){if(p.name_next===c){p.name_next=c.name_next;break}p=p.name_next}},lookupNode:(c,d)=>{var p=E.mayLookup(c);if(p)throw new E.ErrnoError(p,c);for(var f=E.hashName(c.id,d),S=E.nameTable[f];S;S=S.name_next){var b=S.name;if(S.parent.id===c.id&&b===d)return S}return E.lookup(c,d)},createNode:(c,d,p,f)=>{var S=new E.FSNode(c,d,p,f);return E.hashAddNode(S),S},destroyNode:c=>{E.hashRemoveNode(c)},isRoot:c=>c===c.parent,isMountpoint:c=>!!c.mounted,isFile:c=>(61440&c)==32768,isDir:c=>(61440&c)==16384,isLink:c=>(61440&c)==40960,isChrdev:c=>(61440&c)==8192,isBlkdev:c=>(61440&c)==24576,isFIFO:c=>(61440&c)==4096,isSocket:c=>!(49152&~c),flagsToPermissionString:c=>{var d=["r","w","rw"][3&c];return 512&c&&(d+="w"),d},nodePermissions:(c,d)=>E.ignorePermissions||(!d.includes("r")||292&c.mode)&&(!d.includes("w")||146&c.mode)&&(!d.includes("x")||73&c.mode)?0:2,mayLookup:c=>{var d=E.nodePermissions(c,"x");return d||(c.node_ops.lookup?0:2)},mayCreate:(c,d)=>{try{return E.lookupNode(c,d),20}catch(p){}return E.nodePermissions(c,"wx")},mayDelete:(c,d,p)=>{var f;try{f=E.lookupNode(c,d)}catch(b){return b.errno}var S=E.nodePermissions(c,"wx");if(S)return S;if(p){if(!E.isDir(f.mode))return 54;if(E.isRoot(f)||E.getPath(f)===E.cwd())return 10}else if(E.isDir(f.mode))return 31;return 0},mayOpen:(c,d)=>c?E.isLink(c.mode)?32:E.isDir(c.mode)&&(E.flagsToPermissionString(d)!=="r"||512&d)?31:E.nodePermissions(c,E.flagsToPermissionString(d)):44,MAX_OPEN_FDS:4096,nextfd:()=>{for(var c=0;c<=E.MAX_OPEN_FDS;c++)if(!E.streams[c])return c;throw new E.ErrnoError(33)},getStreamChecked:c=>{var d=E.getStream(c);if(!d)throw new E.ErrnoError(8);return d},getStream:c=>E.streams[c],createStream:(c,d=-1)=>(E.FSStream||(E.FSStream=function(){this.shared={}},E.FSStream.prototype={},Object.defineProperties(E.FSStream.prototype,{object:{get(){return this.node},set(p){this.node=p}},isRead:{get(){return(2097155&this.flags)!=1}},isWrite:{get(){return!!(2097155&this.flags)}},isAppend:{get(){return 1024&this.flags}},flags:{get(){return this.shared.flags},set(p){this.shared.flags=p}},position:{get(){return this.shared.position},set(p){this.shared.position=p}}})),c=Object.assign(new E.FSStream,c),d==-1&&(d=E.nextfd()),c.fd=d,E.streams[d]=c,c),closeStream:c=>{E.streams[c]=null},chrdev_stream_ops:{open:c=>{var d=E.getDevice(c.node.rdev);c.stream_ops=d.stream_ops,c.stream_ops.open&&c.stream_ops.open(c)},llseek:()=>{throw new E.ErrnoError(70)}},major:c=>c>>8,minor:c=>255&c,makedev:(c,d)=>c<<8|d,registerDevice:(c,d)=>{E.devices[c]={stream_ops:d}},getDevice:c=>E.devices[c],getMounts:c=>{for(var d=[],p=[c];p.length;){var f=p.pop();d.push(f),p.push.apply(p,f.mounts)}return d},syncfs:(c,d)=>{typeof c=="function"&&(d=c,c=!1),E.syncFSRequests++,E.syncFSRequests>1&&N(`warning: ${E.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var p=E.getMounts(E.root.mount),f=0;function S(R){return E.syncFSRequests--,d(R)}function b(R){if(R)return b.errored?void 0:(b.errored=!0,S(R));++f>=p.length&&S(null)}p.forEach(R=>{if(!R.type.syncfs)return b(null);R.type.syncfs(R,c,b)})},mount:(c,d,p)=>{var f,S=p==="/",b=!p;if(S&&E.root)throw new E.ErrnoError(10);if(!S&&!b){var R=E.lookupPath(p,{follow_mount:!1});if(p=R.path,f=R.node,E.isMountpoint(f))throw new E.ErrnoError(10);if(!E.isDir(f.mode))throw new E.ErrnoError(54)}var v={type:c,opts:d,mountpoint:p,mounts:[]},U=c.mount(v);return U.mount=v,v.root=U,S?E.root=U:f&&(f.mounted=v,f.mount&&f.mount.mounts.push(v)),U},unmount:c=>{var d=E.lookupPath(c,{follow_mount:!1});if(!E.isMountpoint(d.node))throw new E.ErrnoError(28);var p=d.node,f=p.mounted,S=E.getMounts(f);Object.keys(E.nameTable).forEach(R=>{for(var v=E.nameTable[R];v;){var U=v.name_next;S.includes(v.mount)&&E.destroyNode(v),v=U}}),p.mounted=null;var b=p.mount.mounts.indexOf(f);p.mount.mounts.splice(b,1)},lookup:(c,d)=>c.node_ops.lookup(c,d),mknod:(c,d,p)=>{var f=E.lookupPath(c,{parent:!0}).node,S=le.basename(c);if(!S||S==="."||S==="..")throw new E.ErrnoError(28);var b=E.mayCreate(f,S);if(b)throw new E.ErrnoError(b);if(!f.node_ops.mknod)throw new E.ErrnoError(63);return f.node_ops.mknod(f,S,d,p)},create:(c,d)=>(d=d!==void 0?d:438,d&=4095,d|=32768,E.mknod(c,d,0)),mkdir:(c,d)=>(d=d!==void 0?d:511,d&=1023,d|=16384,E.mknod(c,d,0)),mkdirTree:(c,d)=>{for(var p=c.split("/"),f="",S=0;S<p.length;++S)if(p[S]){f+="/"+p[S];try{E.mkdir(f,d)}catch(b){if(b.errno!=20)throw b}}},mkdev:(c,d,p)=>(p===void 0&&(p=d,d=438),d|=8192,E.mknod(c,d,p)),symlink:(c,d)=>{if(!Xt.resolve(c))throw new E.ErrnoError(44);var p=E.lookupPath(d,{parent:!0}).node;if(!p)throw new E.ErrnoError(44);var f=le.basename(d),S=E.mayCreate(p,f);if(S)throw new E.ErrnoError(S);if(!p.node_ops.symlink)throw new E.ErrnoError(63);return p.node_ops.symlink(p,f,c)},rename:(c,d)=>{var p,f,S=le.dirname(c),b=le.dirname(d),R=le.basename(c),v=le.basename(d);if(p=E.lookupPath(c,{parent:!0}).node,f=E.lookupPath(d,{parent:!0}).node,!p||!f)throw new E.ErrnoError(44);if(p.mount!==f.mount)throw new E.ErrnoError(75);var U,L=E.lookupNode(p,R),Y=Xt.relative(c,b);if(Y.charAt(0)!==".")throw new E.ErrnoError(28);if((Y=Xt.relative(d,S)).charAt(0)!==".")throw new E.ErrnoError(55);try{U=E.lookupNode(f,v)}catch(oe){}if(L!==U){var ne=E.isDir(L.mode),ae=E.mayDelete(p,R,ne);if(ae)throw new E.ErrnoError(ae);if(ae=U?E.mayDelete(f,v,ne):E.mayCreate(f,v))throw new E.ErrnoError(ae);if(!p.node_ops.rename)throw new E.ErrnoError(63);if(E.isMountpoint(L)||U&&E.isMountpoint(U))throw new E.ErrnoError(10);if(f!==p&&(ae=E.nodePermissions(p,"w")))throw new E.ErrnoError(ae);E.hashRemoveNode(L);try{p.node_ops.rename(L,f,v)}catch(oe){throw oe}finally{E.hashAddNode(L)}}},rmdir:c=>{var d=E.lookupPath(c,{parent:!0}).node,p=le.basename(c),f=E.lookupNode(d,p),S=E.mayDelete(d,p,!0);if(S)throw new E.ErrnoError(S);if(!d.node_ops.rmdir)throw new E.ErrnoError(63);if(E.isMountpoint(f))throw new E.ErrnoError(10);d.node_ops.rmdir(d,p),E.destroyNode(f)},readdir:c=>{var d=E.lookupPath(c,{follow:!0}).node;if(!d.node_ops.readdir)throw new E.ErrnoError(54);return d.node_ops.readdir(d)},unlink:c=>{var d=E.lookupPath(c,{parent:!0}).node;if(!d)throw new E.ErrnoError(44);var p=le.basename(c),f=E.lookupNode(d,p),S=E.mayDelete(d,p,!1);if(S)throw new E.ErrnoError(S);if(!d.node_ops.unlink)throw new E.ErrnoError(63);if(E.isMountpoint(f))throw new E.ErrnoError(10);d.node_ops.unlink(d,p),E.destroyNode(f)},readlink:c=>{var d=E.lookupPath(c).node;if(!d)throw new E.ErrnoError(44);if(!d.node_ops.readlink)throw new E.ErrnoError(28);return Xt.resolve(E.getPath(d.parent),d.node_ops.readlink(d))},stat:(c,d)=>{var p=E.lookupPath(c,{follow:!d}).node;if(!p)throw new E.ErrnoError(44);if(!p.node_ops.getattr)throw new E.ErrnoError(63);return p.node_ops.getattr(p)},lstat:c=>E.stat(c,!0),chmod:(c,d,p)=>{var f;if(typeof c=="string"?f=E.lookupPath(c,{follow:!p}).node:f=c,!f.node_ops.setattr)throw new E.ErrnoError(63);f.node_ops.setattr(f,{mode:4095&d|-4096&f.mode,timestamp:Date.now()})},lchmod:(c,d)=>{E.chmod(c,d,!0)},fchmod:(c,d)=>{var p=E.getStreamChecked(c);E.chmod(p.node,d)},chown:(c,d,p,f)=>{var S;if(typeof c=="string"?S=E.lookupPath(c,{follow:!f}).node:S=c,!S.node_ops.setattr)throw new E.ErrnoError(63);S.node_ops.setattr(S,{timestamp:Date.now()})},lchown:(c,d,p)=>{E.chown(c,d,p,!0)},fchown:(c,d,p)=>{var f=E.getStreamChecked(c);E.chown(f.node,d,p)},truncate:(c,d)=>{if(d<0)throw new E.ErrnoError(28);var p;if(typeof c=="string"?p=E.lookupPath(c,{follow:!0}).node:p=c,!p.node_ops.setattr)throw new E.ErrnoError(63);if(E.isDir(p.mode))throw new E.ErrnoError(31);if(!E.isFile(p.mode))throw new E.ErrnoError(28);var f=E.nodePermissions(p,"w");if(f)throw new E.ErrnoError(f);p.node_ops.setattr(p,{size:d,timestamp:Date.now()})},ftruncate:(c,d)=>{var p=E.getStreamChecked(c);if(!(2097155&p.flags))throw new E.ErrnoError(28);E.truncate(p.node,d)},utime:(c,d,p)=>{var f=E.lookupPath(c,{follow:!0}).node;f.node_ops.setattr(f,{timestamp:Math.max(d,p)})},open:(c,d,p)=>{if(c==="")throw new E.ErrnoError(44);var f;if(p=p===void 0?438:p,p=64&(d=typeof d=="string"?function(v){var U={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[v];if(U===void 0)throw new Error(`Unknown file open mode: ${v}`);return U}(d):d)?4095&p|32768:0,typeof c=="object")f=c;else{c=le.normalize(c);try{f=E.lookupPath(c,{follow:!(131072&d)}).node}catch(v){}}var S=!1;if(64&d)if(f){if(128&d)throw new E.ErrnoError(20)}else f=E.mknod(c,p,0),S=!0;if(!f)throw new E.ErrnoError(44);if(E.isChrdev(f.mode)&&(d&=-513),65536&d&&!E.isDir(f.mode))throw new E.ErrnoError(54);if(!S){var b=E.mayOpen(f,d);if(b)throw new E.ErrnoError(b)}512&d&&!S&&E.truncate(f,0),d&=-131713;var R=E.createStream({node:f,path:E.getPath(f),flags:d,seekable:!0,position:0,stream_ops:f.stream_ops,ungotten:[],error:!1});return R.stream_ops.open&&R.stream_ops.open(R),!o.logReadFiles||1&d||(E.readFiles||(E.readFiles={}),c in E.readFiles||(E.readFiles[c]=1)),R},close:c=>{if(E.isClosed(c))throw new E.ErrnoError(8);c.getdents&&(c.getdents=null);try{c.stream_ops.close&&c.stream_ops.close(c)}catch(d){throw d}finally{E.closeStream(c.fd)}c.fd=null},isClosed:c=>c.fd===null,llseek:(c,d,p)=>{if(E.isClosed(c))throw new E.ErrnoError(8);if(!c.seekable||!c.stream_ops.llseek)throw new E.ErrnoError(70);if(p!=0&&p!=1&&p!=2)throw new E.ErrnoError(28);return c.position=c.stream_ops.llseek(c,d,p),c.ungotten=[],c.position},read:(c,d,p,f,S)=>{if(f<0||S<0)throw new E.ErrnoError(28);if(E.isClosed(c))throw new E.ErrnoError(8);if((2097155&c.flags)==1)throw new E.ErrnoError(8);if(E.isDir(c.node.mode))throw new E.ErrnoError(31);if(!c.stream_ops.read)throw new E.ErrnoError(28);var b=S!==void 0;if(b){if(!c.seekable)throw new E.ErrnoError(70)}else S=c.position;var R=c.stream_ops.read(c,d,p,f,S);return b||(c.position+=R),R},write:(c,d,p,f,S,b)=>{if(f<0||S<0)throw new E.ErrnoError(28);if(E.isClosed(c))throw new E.ErrnoError(8);if(!(2097155&c.flags))throw new E.ErrnoError(8);if(E.isDir(c.node.mode))throw new E.ErrnoError(31);if(!c.stream_ops.write)throw new E.ErrnoError(28);c.seekable&&1024&c.flags&&E.llseek(c,0,2);var R=S!==void 0;if(R){if(!c.seekable)throw new E.ErrnoError(70)}else S=c.position;var v=c.stream_ops.write(c,d,p,f,S,b);return R||(c.position+=v),v},allocate:(c,d,p)=>{if(E.isClosed(c))throw new E.ErrnoError(8);if(d<0||p<=0)throw new E.ErrnoError(28);if(!(2097155&c.flags))throw new E.ErrnoError(8);if(!E.isFile(c.node.mode)&&!E.isDir(c.node.mode))throw new E.ErrnoError(43);if(!c.stream_ops.allocate)throw new E.ErrnoError(138);c.stream_ops.allocate(c,d,p)},mmap:(c,d,p,f,S)=>{if(2&f&&!(2&S)&&(2097155&c.flags)!=2)throw new E.ErrnoError(2);if((2097155&c.flags)==1)throw new E.ErrnoError(2);if(!c.stream_ops.mmap)throw new E.ErrnoError(43);return c.stream_ops.mmap(c,d,p,f,S)},msync:(c,d,p,f,S)=>c.stream_ops.msync?c.stream_ops.msync(c,d,p,f,S):0,munmap:c=>0,ioctl:(c,d,p)=>{if(!c.stream_ops.ioctl)throw new E.ErrnoError(59);return c.stream_ops.ioctl(c,d,p)},readFile:(c,d={})=>{if(d.flags=d.flags||0,d.encoding=d.encoding||"binary",d.encoding!=="utf8"&&d.encoding!=="binary")throw new Error(`Invalid encoding type "${d.encoding}"`);var p,f=E.open(c,d.flags),S=E.stat(c).size,b=new Uint8Array(S);return E.read(f,b,0,S,0),d.encoding==="utf8"?p=Pt(b,0):d.encoding==="binary"&&(p=b),E.close(f),p},writeFile:(c,d,p={})=>{p.flags=p.flags||577;var f=E.open(c,p.flags,p.mode);if(typeof d=="string"){var S=new Uint8Array(Co(d)+1),b=No(d,S,0,S.length);E.write(f,S,0,b,void 0,p.canOwn)}else{if(!ArrayBuffer.isView(d))throw new Error("Unsupported data type");E.write(f,d,0,d.byteLength,void 0,p.canOwn)}E.close(f)},cwd:()=>E.currentPath,chdir:c=>{var d=E.lookupPath(c,{follow:!0});if(d.node===null)throw new E.ErrnoError(44);if(!E.isDir(d.node.mode))throw new E.ErrnoError(54);var p=E.nodePermissions(d.node,"x");if(p)throw new E.ErrnoError(p);E.currentPath=d.path},createDefaultDirectories:()=>{E.mkdir("/tmp"),E.mkdir("/home"),E.mkdir("/home/web_user")},createDefaultDevices:()=>{E.mkdir("/dev"),E.registerDevice(E.makedev(1,3),{read:()=>0,write:(f,S,b,R,v)=>R}),E.mkdev("/dev/null",E.makedev(1,3)),_r.register(E.makedev(5,0),_r.default_tty_ops),_r.register(E.makedev(6,0),_r.default_tty1_ops),E.mkdev("/dev/tty",E.makedev(5,0)),E.mkdev("/dev/tty1",E.makedev(6,0));var c=new Uint8Array(1024),d=0,p=()=>(d===0&&(d=wn(c).byteLength),c[--d]);E.createDevice("/dev","random",p),E.createDevice("/dev","urandom",p),E.mkdir("/dev/shm"),E.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{E.mkdir("/proc");var c=E.mkdir("/proc/self");E.mkdir("/proc/self/fd"),E.mount({mount:()=>{var d=E.createNode(c,"fd",16895,73);return d.node_ops={lookup:(p,f)=>{var S=+f,b=E.getStreamChecked(S),R={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>b.path}};return R.parent=R,R}},d}},{},"/proc/self/fd")},createStandardStreams:()=>{o.stdin?E.createDevice("/dev","stdin",o.stdin):E.symlink("/dev/tty","/dev/stdin"),o.stdout?E.createDevice("/dev","stdout",null,o.stdout):E.symlink("/dev/tty","/dev/stdout"),o.stderr?E.createDevice("/dev","stderr",null,o.stderr):E.symlink("/dev/tty1","/dev/stderr"),E.open("/dev/stdin",0),E.open("/dev/stdout",1),E.open("/dev/stderr",1)},ensureErrnoError:()=>{E.ErrnoError||(E.ErrnoError=function(c,d){this.name="ErrnoError",this.node=d,this.setErrno=function(p){this.errno=p},this.setErrno(c),this.message="FS error"},E.ErrnoError.prototype=new Error,E.ErrnoError.prototype.constructor=E.ErrnoError,[44].forEach(c=>{E.genericErrors[c]=new E.ErrnoError(c),E.genericErrors[c].stack="<generic error, no stack>"}))},staticInit:()=>{E.ensureErrnoError(),E.nameTable=new Array(4096),E.mount(Ae,{},"/"),E.createDefaultDirectories(),E.createDefaultDevices(),E.createSpecialDirectories(),E.filesystems={MEMFS:Ae}},init:(c,d,p)=>{E.init.initialized=!0,E.ensureErrnoError(),o.stdin=c||o.stdin,o.stdout=d||o.stdout,o.stderr=p||o.stderr,E.createStandardStreams()},quit:()=>{E.init.initialized=!1;for(var c=0;c<E.streams.length;c++){var d=E.streams[c];d&&E.close(d)}},findObject:(c,d)=>{var p=E.analyzePath(c,d);return p.exists?p.object:null},analyzePath:(c,d)=>{try{c=(f=E.lookupPath(c,{follow:!d})).path}catch(S){}var p={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var f=E.lookupPath(c,{parent:!0});p.parentExists=!0,p.parentPath=f.path,p.parentObject=f.node,p.name=le.basename(c),f=E.lookupPath(c,{follow:!d}),p.exists=!0,p.path=f.path,p.object=f.node,p.name=f.node.name,p.isRoot=f.path==="/"}catch(S){p.error=S.errno}return p},createPath:(c,d,p,f)=>{c=typeof c=="string"?c:E.getPath(c);for(var S=d.split("/").reverse();S.length;){var b=S.pop();if(b){var R=le.join2(c,b);try{E.mkdir(R)}catch(v){}c=R}}return R},createFile:(c,d,p,f,S)=>{var b=le.join2(typeof c=="string"?c:E.getPath(c),d),R=ui(f,S);return E.create(b,R)},createDataFile:(c,d,p,f,S,b)=>{var R=d;c&&(c=typeof c=="string"?c:E.getPath(c),R=d?le.join2(c,d):c);var v=ui(f,S),U=E.create(R,v);if(p){if(typeof p=="string"){for(var L=new Array(p.length),Y=0,ne=p.length;Y<ne;++Y)L[Y]=p.charCodeAt(Y);p=L}E.chmod(U,146|v);var ae=E.open(U,577);E.write(ae,p,0,p.length,0,b),E.close(ae),E.chmod(U,v)}return U},createDevice:(c,d,p,f)=>{var S=le.join2(typeof c=="string"?c:E.getPath(c),d),b=ui(!!p,!!f);E.createDevice.major||(E.createDevice.major=64);var R=E.makedev(E.createDevice.major++,0);return E.registerDevice(R,{open:v=>{v.seekable=!1},close:v=>{f&&f.buffer&&f.buffer.length&&f(10)},read:(v,U,L,Y,ne)=>{for(var ae=0,oe=0;oe<Y;oe++){var Ce;try{Ce=p()}catch(Fe){throw new E.ErrnoError(29)}if(Ce===void 0&&ae===0)throw new E.ErrnoError(6);if(Ce==null)break;ae++,U[L+oe]=Ce}return ae&&(v.node.timestamp=Date.now()),ae},write:(v,U,L,Y,ne)=>{for(var ae=0;ae<Y;ae++)try{f(U[L+ae])}catch(oe){throw new E.ErrnoError(29)}return Y&&(v.node.timestamp=Date.now()),ae}}),E.mkdev(S,b,R)},forceLoadFile:c=>{if(c.isDevice||c.isFolder||c.link||c.contents)return!0;if(typeof XMLHttpRequest!="undefined")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!s)throw new Error("Cannot load without read() or XMLHttpRequest.");try{c.contents=_s(s(c.url),!0),c.usedBytes=c.contents.length}catch(d){throw new E.ErrnoError(29)}},createLazyFile:(c,d,p,f,S)=>{function b(){this.lengthKnown=!1,this.chunks=[]}if(b.prototype.get=function(ne){if(!(ne>this.length-1||ne<0)){var ae=ne%this.chunkSize,oe=ne/this.chunkSize|0;return this.getter(oe)[ae]}},b.prototype.setDataGetter=function(ne){this.getter=ne},b.prototype.cacheLength=function(){var ne=new XMLHttpRequest;if(ne.open("HEAD",p,!1),ne.send(null),!(ne.status>=200&&ne.status<300||ne.status===304))throw new Error("Couldn't load "+p+". Status: "+ne.status);var ae,oe=Number(ne.getResponseHeader("Content-length")),Ce=(ae=ne.getResponseHeader("Accept-Ranges"))&&ae==="bytes",Fe=(ae=ne.getResponseHeader("Content-Encoding"))&&ae==="gzip",Oe=1048576;Ce||(Oe=oe);var ot=this;ot.setDataGetter(et=>{var Et=et*Oe,Yi=(et+1)*Oe-1;if(Yi=Math.min(Yi,oe-1),ot.chunks[et]===void 0&&(ot.chunks[et]=((ur,Lo)=>{if(ur>Lo)throw new Error("invalid range ("+ur+", "+Lo+") or no bytes requested!");if(Lo>oe-1)throw new Error("only "+oe+" bytes available! programmer error!");var ut=new XMLHttpRequest;if(ut.open("GET",p,!1),oe!==Oe&&ut.setRequestHeader("Range","bytes="+ur+"-"+Lo),ut.responseType="arraybuffer",ut.overrideMimeType&&ut.overrideMimeType("text/plain; charset=x-user-defined"),ut.send(null),!(ut.status>=200&&ut.status<300||ut.status===304))throw new Error("Couldn't load "+p+". Status: "+ut.status);return ut.response!==void 0?new Uint8Array(ut.response||[]):_s(ut.responseText||"",!0)})(Et,Yi)),ot.chunks[et]===void 0)throw new Error("doXHR failed!");return ot.chunks[et]}),!Fe&&oe||(Oe=oe=1,oe=this.getter(0).length,Oe=oe,C("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=oe,this._chunkSize=Oe,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!g)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var R=new b;Object.defineProperties(R,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var v={isDevice:!1,contents:R}}else v={isDevice:!1,url:p};var U=E.createFile(c,d,v,f,S);v.contents?U.contents=v.contents:v.url&&(U.contents=null,U.url=v.url),Object.defineProperties(U,{usedBytes:{get:function(){return this.contents.length}}});var L={};function Y(ne,ae,oe,Ce,Fe){var Oe=ne.node.contents;if(Fe>=Oe.length)return 0;var ot=Math.min(Oe.length-Fe,Ce);if(Oe.slice)for(var et=0;et<ot;et++)ae[oe+et]=Oe[Fe+et];else for(et=0;et<ot;et++)ae[oe+et]=Oe.get(Fe+et);return ot}return Object.keys(U.stream_ops).forEach(ne=>{var ae=U.stream_ops[ne];L[ne]=function(){return E.forceLoadFile(U),ae.apply(null,arguments)}}),L.read=(ne,ae,oe,Ce,Fe)=>(E.forceLoadFile(U),Y(ne,ae,oe,Ce,Fe)),L.mmap=(ne,ae,oe,Ce,Fe)=>{E.forceLoadFile(U);var Oe=me();if(!Oe)throw new E.ErrnoError(48);return Y(ne,K,Oe,ae,oe),{ptr:Oe,allocated:!0}},U.stream_ops=L,U}},Hi=(c,d)=>c?Pt(pe,c,d):"",yt={DEFAULT_POLLMASK:5,calculateAt:function(c,d,p){if(le.isAbs(d))return d;var f;if(c===-100?f=E.cwd():f=yt.getStreamFromFD(c).path,d.length==0){if(!p)throw new E.ErrnoError(44);return f}return le.join2(f,d)},doStat:function(c,d,p){try{var f=c(d)}catch(v){if(v&&v.node&&le.normalize(d)!==le.normalize(E.getPath(v.node)))return-54;throw v}Q[p>>2]=f.dev,Q[p+4>>2]=f.mode,Ue[p+8>>2]=f.nlink,Q[p+12>>2]=f.uid,Q[p+16>>2]=f.gid,Q[p+20>>2]=f.rdev,Ke=[f.size>>>0,(Te=f.size,+Math.abs(Te)>=1?Te>0?+Math.floor(Te/4294967296)>>>0:~~+Math.ceil((Te-+(~~Te>>>0))/4294967296)>>>0:0)],Q[p+24>>2]=Ke[0],Q[p+28>>2]=Ke[1],Q[p+32>>2]=4096,Q[p+36>>2]=f.blocks;var S=f.atime.getTime(),b=f.mtime.getTime(),R=f.ctime.getTime();return Ke=[Math.floor(S/1e3)>>>0,(Te=Math.floor(S/1e3),+Math.abs(Te)>=1?Te>0?+Math.floor(Te/4294967296)>>>0:~~+Math.ceil((Te-+(~~Te>>>0))/4294967296)>>>0:0)],Q[p+40>>2]=Ke[0],Q[p+44>>2]=Ke[1],Ue[p+48>>2]=S%1e3*1e3,Ke=[Math.floor(b/1e3)>>>0,(Te=Math.floor(b/1e3),+Math.abs(Te)>=1?Te>0?+Math.floor(Te/4294967296)>>>0:~~+Math.ceil((Te-+(~~Te>>>0))/4294967296)>>>0:0)],Q[p+56>>2]=Ke[0],Q[p+60>>2]=Ke[1],Ue[p+64>>2]=b%1e3*1e3,Ke=[Math.floor(R/1e3)>>>0,(Te=Math.floor(R/1e3),+Math.abs(Te)>=1?Te>0?+Math.floor(Te/4294967296)>>>0:~~+Math.ceil((Te-+(~~Te>>>0))/4294967296)>>>0:0)],Q[p+72>>2]=Ke[0],Q[p+76>>2]=Ke[1],Ue[p+80>>2]=R%1e3*1e3,Ke=[f.ino>>>0,(Te=f.ino,+Math.abs(Te)>=1?Te>0?+Math.floor(Te/4294967296)>>>0:~~+Math.ceil((Te-+(~~Te>>>0))/4294967296)>>>0:0)],Q[p+88>>2]=Ke[0],Q[p+92>>2]=Ke[1],0},doMsync:function(c,d,p,f,S){if(!E.isFile(d.node.mode))throw new E.ErrnoError(43);if(2&f)return 0;var b=pe.slice(c,c+p);E.msync(d,b,S,p,f)},varargs:void 0,get:()=>(yt.varargs+=4,Q[yt.varargs-4>>2]),getStr:c=>Hi(c),getStreamFromFD:function(c){return E.getStreamChecked(c)}};function li(c){switch(c){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${c}`)}}var sc=void 0;function k(c){for(var d="",p=c;pe[p];)d+=sc[pe[p++]];return d}var Wi={},dr={},Ss={},Gi=void 0;function Ve(c){throw new Gi(c)}var nc=void 0;function Kt(c){throw new nc(c)}function $r(c,d,p){function f(v){var U=p(v);U.length!==c.length&&Kt("Mismatched type converter count");for(var L=0;L<c.length;++L)er(c[L],U[L])}c.forEach(function(v){Ss[v]=d});var S=new Array(d.length),b=[],R=0;d.forEach((v,U)=>{dr.hasOwnProperty(v)?S[U]=dr[v]:(b.push(v),Wi.hasOwnProperty(v)||(Wi[v]=[]),Wi[v].push(()=>{S[U]=dr[v],++R===b.length&&f(S)}))}),b.length===0&&f(S)}function er(c,d,p={}){if(!("argPackAdvance"in d))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(f,S,b={}){var R=S.name;if(f||Ve(`type "${R}" must have a positive integer typeid pointer`),dr.hasOwnProperty(f)){if(b.ignoreDuplicateRegistrations)return;Ve(`Cannot register type '${R}' twice`)}if(dr[f]=S,delete Ss[f],Wi.hasOwnProperty(f)){var v=Wi[f];delete Wi[f],v.forEach(U=>U())}}(c,d,p)}function ac(c){if(!(this instanceof Sr)||!(c instanceof Sr))return!1;for(var d=this.$$.ptrType.registeredClass,p=this.$$.ptr,f=c.$$.ptrType.registeredClass,S=c.$$.ptr;d.baseClass;)p=d.upcast(p),d=d.baseClass;for(;f.baseClass;)S=f.upcast(S),f=f.baseClass;return d===f&&p===S}function Mn(c){Ve(c.$$.ptrType.registeredClass.name+" instance already deleted")}var wo=!1;function cc(c){}function dc(c){c.count.value-=1,c.count.value===0&&function(d){d.smartPtr?d.smartPtrType.rawDestructor(d.smartPtr):d.ptrType.registeredClass.rawDestructor(d.ptr)}(c)}function uc(c,d,p){if(d===p)return c;if(p.baseClass===void 0)return null;var f=uc(c,d,p.baseClass);return f===null?null:p.downcast(f)}var Do={};function rl(){return Object.keys(Oo).length}function il(){var c=[];for(var d in Oo)Oo.hasOwnProperty(d)&&c.push(Oo[d]);return c}var Mo=[];function tr(){for(;Mo.length;){var c=Mo.pop();c.$$.deleteScheduled=!1,c.delete()}}var Br=void 0;function lc(c){Br=c,Mo.length&&Br&&Br(tr)}var Oo={};function ji(c,d){return d=function(p,f){for(f===void 0&&Ve("ptr should not be undefined");p.baseClass;)f=p.upcast(f),p=p.baseClass;return f}(c,d),Oo[d]}function xo(c,d){return d.ptrType&&d.ptr||Kt("makeClassHandle requires ptr and ptrType"),!!d.smartPtrType!=!!d.smartPtr&&Kt("Both smartPtrType and smartPtr must be specified"),d.count={value:1},qi(Object.create(c,{$$:{value:d}}))}function mc(c){var d=this.getPointee(c);if(!d)return this.destructor(c),null;var p=ji(this.registeredClass,d);if(p!==void 0){if(p.$$.count.value===0)return p.$$.ptr=d,p.$$.smartPtr=c,p.clone();var f=p.clone();return this.destructor(c),f}function S(){return this.isSmartPointer?xo(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:d,smartPtrType:this,smartPtr:c}):xo(this.registeredClass.instancePrototype,{ptrType:this,ptr:c})}var b,R=this.registeredClass.getActualType(d),v=Do[R];if(!v)return S.call(this);b=this.isConst?v.constPointerType:v.pointerType;var U=uc(d,this.registeredClass,b.registeredClass);return U===null?S.call(this):this.isSmartPointer?xo(b.registeredClass.instancePrototype,{ptrType:b,ptr:U,smartPtrType:this,smartPtr:c}):xo(b.registeredClass.instancePrototype,{ptrType:b,ptr:U})}var qi=function(c){return typeof FinalizationRegistry=="undefined"?(qi=d=>d,c):(wo=new FinalizationRegistry(d=>{dc(d.$$)}),cc=d=>wo.unregister(d),(qi=d=>{var p=d.$$;if(p.smartPtr){var f={$$:p};wo.register(d,f,d)}return d})(c))};function pc(){if(this.$$.ptr||Mn(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var c,d=qi(Object.create(Object.getPrototypeOf(this),{$$:{value:(c=this.$$,{count:c.count,deleteScheduled:c.deleteScheduled,preservePointerOnDelete:c.preservePointerOnDelete,ptr:c.ptr,ptrType:c.ptrType,smartPtr:c.smartPtr,smartPtrType:c.smartPtrType})}}));return d.$$.count.value+=1,d.$$.deleteScheduled=!1,d}function ol(){this.$$.ptr||Mn(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ve("Object already scheduled for deletion"),cc(this),dc(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function hc(){return!this.$$.ptr}function fc(){return this.$$.ptr||Mn(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ve("Object already scheduled for deletion"),Mo.push(this),Mo.length===1&&Br&&Br(tr),this.$$.deleteScheduled=!0,this}function Sr(){}function Lt(c){if(c===void 0)return"_unknown";var d=(c=c.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return d>=48&&d<=57?`_${c}`:c}function Is(c,d){return c=Lt(c),{[c]:function(){return d.apply(this,arguments)}}[c]}function gc(c,d,p){if(c[d].overloadTable===void 0){var f=c[d];c[d]=function(){return c[d].overloadTable.hasOwnProperty(arguments.length)||Ve(`Function '${p}' called with an invalid number of arguments (${arguments.length}) - expects one of (${c[d].overloadTable})!`),c[d].overloadTable[arguments.length].apply(this,arguments)},c[d].overloadTable=[],c[d].overloadTable[f.argCount]=f}}function ys(c,d,p,f,S,b,R,v){this.name=c,this.constructor=d,this.instancePrototype=p,this.rawDestructor=f,this.baseClass=S,this.getActualType=b,this.upcast=R,this.downcast=v,this.pureVirtualFunctions=[]}function ko(c,d,p){for(;d!==p;)d.upcast||Ve(`Expected null or instance of ${p.name}, got an instance of ${d.name}`),c=d.upcast(c),d=d.baseClass;return c}function sl(c,d){if(d===null)return this.isReference&&Ve(`null is not a valid ${this.name}`),0;d.$$||Ve(`Cannot pass "${vs(d)}" as a ${this.name}`),d.$$.ptr||Ve(`Cannot pass deleted object as a pointer of type ${this.name}`);var p=d.$$.ptrType.registeredClass;return ko(d.$$.ptr,p,this.registeredClass)}function nl(c,d){var p;if(d===null)return this.isReference&&Ve(`null is not a valid ${this.name}`),this.isSmartPointer?(p=this.rawConstructor(),c!==null&&c.push(this.rawDestructor,p),p):0;d.$$||Ve(`Cannot pass "${vs(d)}" as a ${this.name}`),d.$$.ptr||Ve(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&d.$$.ptrType.isConst&&Ve(`Cannot convert argument of type ${d.$$.smartPtrType?d.$$.smartPtrType.name:d.$$.ptrType.name} to parameter type ${this.name}`);var f=d.$$.ptrType.registeredClass;if(p=ko(d.$$.ptr,f,this.registeredClass),this.isSmartPointer)switch(d.$$.smartPtr===void 0&&Ve("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:d.$$.smartPtrType===this?p=d.$$.smartPtr:Ve(`Cannot convert argument of type ${d.$$.smartPtrType?d.$$.smartPtrType.name:d.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:p=d.$$.smartPtr;break;case 2:if(d.$$.smartPtrType===this)p=d.$$.smartPtr;else{var S=d.clone();p=this.rawShare(p,Xi.toHandle(function(){S.delete()})),c!==null&&c.push(this.rawDestructor,p)}break;default:Ve("Unsupporting sharing policy")}return p}function Ec(c,d){if(d===null)return this.isReference&&Ve(`null is not a valid ${this.name}`),0;d.$$||Ve(`Cannot pass "${vs(d)}" as a ${this.name}`),d.$$.ptr||Ve(`Cannot pass deleted object as a pointer of type ${this.name}`),d.$$.ptrType.isConst&&Ve(`Cannot convert argument of type ${d.$$.ptrType.name} to parameter type ${this.name}`);var p=d.$$.ptrType.registeredClass;return ko(d.$$.ptr,p,this.registeredClass)}function Po(c){return this.fromWireType(Q[c>>2])}function al(c){return this.rawGetPointee&&(c=this.rawGetPointee(c)),c}function Tc(c){this.rawDestructor&&this.rawDestructor(c)}function cl(c){c!==null&&c.delete()}function Ir(c,d,p,f,S,b,R,v,U,L,Y){this.name=c,this.registeredClass=d,this.isReference=p,this.isConst=f,this.isSmartPointer=S,this.pointeeType=b,this.sharingPolicy=R,this.rawGetPointee=v,this.rawConstructor=U,this.rawShare=L,this.rawDestructor=Y,S||d.baseClass!==void 0?this.toWireType=nl:f?(this.toWireType=sl,this.destructorFunction=null):(this.toWireType=Ec,this.destructorFunction=null)}var As=[],_c=c=>{var d=As[c];return d||(c>=As.length&&(As.length=c+1),As[c]=d=vn.get(c)),d},dl=(c,d,p)=>c.includes("j")?((f,S,b)=>{var R=o["dynCall_"+f];return b&&b.length?R.apply(null,[S].concat(b)):R.call(null,S)})(c,d,p):_c(d).apply(null,p);function zi(c,d){var p,f,S,b=(c=k(c)).includes("j")?(p=c,f=d,S=[],function(){return S.length=0,Object.assign(S,arguments),dl(p,f,S)}):_c(d);return typeof b!="function"&&Ve(`unknown function pointer with signature ${c}: ${d}`),b}var Sc=void 0;function bs(c){var d=Ar(c),p=k(d);return vt(d),p}function Rs(c,d){var p=[],f={};throw d.forEach(function S(b){f[b]||dr[b]||(Ss[b]?Ss[b].forEach(S):(p.push(b),f[b]=!0))}),new Sc(`${c}: `+p.map(bs).join([", "]))}function On(c,d){for(var p=[],f=0;f<c;f++)p.push(Ue[d+4*f>>2]);return p}function Ic(c){for(;c.length;){var d=c.pop();c.pop()(d)}}function xn(c,d){if(!(c instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof c} which is not a function`);var p=Is(c.name||"unknownFunctionName",function(){});p.prototype=c.prototype;var f=new p,S=c.apply(f,d);return S instanceof Object?S:f}function Ji(c,d,p,f,S,b){var R=d.length;R<2&&Ve("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var v=d[1]!==null&&p!==null,U=!1,L=1;L<d.length;++L)if(d[L]!==null&&d[L].destructorFunction===void 0){U=!0;break}var Y=d[0].name!=="void",ne="",ae="";for(L=0;L<R-2;++L)ne+=(L!==0?", ":"")+"arg"+L,ae+=(L!==0?", ":"")+"arg"+L+"Wired";var oe=`
53
+ return function ${Lt(c)}(${ne}) {
54
+ if (arguments.length !== ${R-2}) {
55
+ throwBindingError('function ${c} called with ${arguments.length} arguments, expected ${R-2} args!');
56
+ }`;U&&(oe+=`var destructors = [];
57
+ `);var Ce=U?"destructors":"null",Fe=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],Oe=[Ve,f,S,Ic,d[0],d[1]];for(v&&(oe+="var thisWired = classParam.toWireType("+Ce+`, this);
58
+ `),L=0;L<R-2;++L)oe+="var arg"+L+"Wired = argType"+L+".toWireType("+Ce+", arg"+L+"); // "+d[L+2].name+`
59
+ `,Fe.push("argType"+L),Oe.push(d[L+2]);if(v&&(ae="thisWired"+(ae.length>0?", ":"")+ae),oe+=(Y||b?"var rv = ":"")+"invoker(fn"+(ae.length>0?", ":"")+ae+`);
60
+ `,U)oe+=`runDestructors(destructors);
61
+ `;else for(L=v?1:2;L<d.length;++L){var ot=L===1?"thisWired":"arg"+(L-2)+"Wired";d[L].destructorFunction!==null&&(oe+=ot+"_dtor("+ot+"); // "+d[L].name+`
62
+ `,Fe.push(ot+"_dtor"),Oe.push(d[L].destructorFunction))}return Y&&(oe+=`var ret = retType.fromWireType(rv);
63
+ return ret;
64
+ `),oe+=`}
65
+ `,Fe.push(oe),xn(Function,Fe).apply(null,Oe)}function yc(){this.allocated=[void 0],this.freelist=[]}var Ut=new yc;function Ac(c){c>=Ut.reserved&&--Ut.get(c).refcount==0&&Ut.free(c)}function yr(){for(var c=0,d=Ut.reserved;d<Ut.allocated.length;++d)Ut.allocated[d]!==void 0&&++c;return c}var Xi={toValue:c=>(c||Ve("Cannot use deleted val. handle = "+c),Ut.get(c).value),toHandle:c=>{switch(c){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Ut.allocate({refcount:1,value:c})}}};function vs(c){if(c===null)return"null";var d=typeof c;return d==="object"||d==="array"||d==="function"?c.toString():""+c}function bc(c,d){switch(d){case 2:return function(p){return this.fromWireType(Ro[p>>2])};case 3:return function(p){return this.fromWireType(Rn[p>>3])};default:throw new TypeError("Unknown float type: "+c)}}function Rc(c,d,p){switch(d){case 0:return p?function(f){return K[f]}:function(f){return pe[f]};case 1:return p?function(f){return ce[f>>1]}:function(f){return Qe[f>>1]};case 2:return p?function(f){return Q[f>>2]}:function(f){return Ue[f>>2]};default:throw new TypeError("Unknown integer type: "+c)}}var I=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,_=(c,d)=>{for(var p=c,f=p>>1,S=f+d/2;!(f>=S)&&Qe[f];)++f;if((p=f<<1)-c>32&&I)return I.decode(pe.subarray(c,p));for(var b="",R=0;!(R>=d/2);++R){var v=ce[c+2*R>>1];if(v==0)break;b+=String.fromCharCode(v)}return b},w=(c,d,p)=>{if(p===void 0&&(p=2147483647),p<2)return 0;for(var f=d,S=(p-=2)<2*c.length?p/2:c.length,b=0;b<S;++b){var R=c.charCodeAt(b);ce[d>>1]=R,d+=2}return ce[d>>1]=0,d-f},x=c=>2*c.length,B=(c,d)=>{for(var p=0,f="";!(p>=d/4);){var S=Q[c+4*p>>2];if(S==0)break;if(++p,S>=65536){var b=S-65536;f+=String.fromCharCode(55296|b>>10,56320|1023&b)}else f+=String.fromCharCode(S)}return f},H=(c,d,p)=>{if(p===void 0&&(p=2147483647),p<4)return 0;for(var f=d,S=f+p-4,b=0;b<c.length;++b){var R=c.charCodeAt(b);if(R>=55296&&R<=57343&&(R=65536+((1023&R)<<10)|1023&c.charCodeAt(++b)),Q[d>>2]=R,(d+=4)+4>S)break}return Q[d>>2]=0,d-f},G=c=>{for(var d=0,p=0;p<c.length;++p){var f=c.charCodeAt(p);f>=55296&&f<=57343&&++p,d+=4}return d},X={},ee=[],W=[],he={},De=()=>{if(!De.strings){var c={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:m||"./this.program"};for(var d in he)he[d]===void 0?delete c[d]:c[d]=he[d];var p=[];for(var d in c)p.push(`${d}=${c[d]}`);De.strings=p}return De.strings},ve,ge,Me,it=function(c,d,p,f){c||(c=this),this.parent=c,this.mount=c.mount,this.mounted=null,this.id=E.nextInode++,this.name=d,this.mode=p,this.node_ops={},this.stream_ops={},this.rdev=f},qe=365,pt=146;Object.defineProperties(it.prototype,{read:{get:function(){return(this.mode&qe)===qe},set:function(c){c?this.mode|=qe:this.mode&=-366}},write:{get:function(){return(this.mode&pt)===pt},set:function(c){c?this.mode|=pt:this.mode&=-147}},isFolder:{get:function(){return E.isDir(this.mode)}},isDevice:{get:function(){return E.isChrdev(this.mode)}}}),E.FSNode=it,E.createPreloadedFile=function(c,d,p,f,S,b,R,v,U,L){var Y=d?Xt.resolve(le.join2(c,d)):c;function ne(ae){function oe(Ce){L&&L(),v||E.createDataFile(c,d,Ce,f,S,U),b&&b(),vo()}(function(Ce,Fe,Oe,ot){typeof Browser!="undefined"&&Browser.init();var et=!1;return tl.forEach(function(Et){et||Et.canHandle(Fe)&&(Et.handle(Ce,Fe,Oe,ot),et=!0)}),et})(ae,Y,oe,()=>{R&&R(),vo()})||oe(ae)}re(),typeof p=="string"?el(p,ae=>ne(ae),R):ne(p)},E.staticInit(),function(){for(var c=new Array(256),d=0;d<256;++d)c[d]=String.fromCharCode(d);sc=c}(),Gi=o.BindingError=class extends Error{constructor(c){super(c),this.name="BindingError"}},nc=o.InternalError=class extends Error{constructor(c){super(c),this.name="InternalError"}},Sr.prototype.isAliasOf=ac,Sr.prototype.clone=pc,Sr.prototype.delete=ol,Sr.prototype.isDeleted=hc,Sr.prototype.deleteLater=fc,o.getInheritedInstanceCount=rl,o.getLiveInheritedInstances=il,o.flushPendingDeletes=tr,o.setDelayFunction=lc,Ir.prototype.getPointee=al,Ir.prototype.destructor=Tc,Ir.prototype.argPackAdvance=8,Ir.prototype.readValueFromPointer=Po,Ir.prototype.deleteObject=cl,Ir.prototype.fromWireType=mc,Sc=o.UnboundTypeError=(ve=Error,(Me=Is(ge="UnboundTypeError",function(c){this.name=ge,this.message=c;var d=new Error(c).stack;d!==void 0&&(this.stack=this.toString()+`
66
+ `+d.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(ve.prototype),Me.prototype.constructor=Me,Me.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},Me),Object.assign(yc.prototype,{get(c){return this.allocated[c]},has(c){return this.allocated[c]!==void 0},allocate(c){var d=this.freelist.pop()||this.allocated.length;return this.allocated[d]=c,d},free(c){this.allocated[c]=void 0,this.freelist.push(c)}}),Ut.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Ut.reserved=Ut.allocated.length,o.count_emval_handles=yr;var ze,Dt={p:function(c,d,p){throw new $i(c).init(d,p),c},C:function(c,d,p){yt.varargs=p;try{var f=yt.getStreamFromFD(c);switch(d){case 0:return(S=yt.get())<0?-28:E.createStream(f,S).fd;case 1:case 2:case 6:case 7:return 0;case 3:return f.flags;case 4:var S=yt.get();return f.flags|=S,0;case 5:return S=yt.get(),ce[S+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return b=28,Q[kn()>>2]=b,-1}}catch(R){if(E===void 0||R.name!=="ErrnoError")throw R;return-R.errno}var b},w:function(c,d,p,f){yt.varargs=f;try{d=yt.getStr(d),d=yt.calculateAt(c,d);var S=f?yt.get():0;return E.open(d,p,S).fd}catch(b){if(E===void 0||b.name!=="ErrnoError")throw b;return-b.errno}},t:function(c,d,p,f,S){},n:function(c,d,p,f,S){var b=li(p);er(c,{name:d=k(d),fromWireType:function(R){return!!R},toWireType:function(R,v){return v?f:S},argPackAdvance:8,readValueFromPointer:function(R){var v;if(p===1)v=K;else if(p===2)v=ce;else{if(p!==4)throw new TypeError("Unknown boolean type size: "+d);v=Q}return this.fromWireType(v[R>>b])},destructorFunction:null})},r:function(c,d,p,f,S,b,R,v,U,L,Y,ne,ae){Y=k(Y),b=zi(S,b),v&&(v=zi(R,v)),L&&(L=zi(U,L)),ae=zi(ne,ae);var oe=Lt(Y);(function(Ce,Fe,Oe){o.hasOwnProperty(Ce)?((Oe===void 0||o[Ce].overloadTable!==void 0&&o[Ce].overloadTable[Oe]!==void 0)&&Ve(`Cannot register public name '${Ce}' twice`),gc(o,Ce,Ce),o.hasOwnProperty(Oe)&&Ve(`Cannot register multiple overloads of a function with the same number of arguments (${Oe})!`),o[Ce].overloadTable[Oe]=Fe):(o[Ce]=Fe,Oe!==void 0&&(o[Ce].numArguments=Oe))})(oe,function(){Rs(`Cannot construct ${Y} due to unbound types`,[f])}),$r([c,d,p],f?[f]:[],function(Ce){var Fe,Oe;Ce=Ce[0],Oe=f?(Fe=Ce.registeredClass).instancePrototype:Sr.prototype;var ot=Is(oe,function(){if(Object.getPrototypeOf(this)!==et)throw new Gi("Use 'new' to construct "+Y);if(Et.constructor_body===void 0)throw new Gi(Y+" has no accessible constructor");var ut=Et.constructor_body[arguments.length];if(ut===void 0)throw new Gi(`Tried to invoke ctor of ${Y} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Et.constructor_body).toString()}) parameters instead!`);return ut.apply(this,arguments)}),et=Object.create(Oe,{constructor:{value:ot}});ot.prototype=et;var Et=new ys(Y,ot,et,ae,Fe,b,v,L);Et.baseClass&&(Et.baseClass.__derivedClasses===void 0&&(Et.baseClass.__derivedClasses=[]),Et.baseClass.__derivedClasses.push(Et));var Yi=new Ir(Y,Et,!0,!1,!1),ur=new Ir(Y+"*",Et,!1,!1,!1),Lo=new Ir(Y+" const*",Et,!1,!0,!1);return Do[c]={pointerType:ur,constPointerType:Lo},function(ut,Rh,ul){o.hasOwnProperty(ut)||Kt("Replacing nonexistant public symbol"),o[ut].overloadTable!==void 0&&ul!==void 0?o[ut].overloadTable[ul]=Rh:(o[ut]=Rh,o[ut].argCount=ul)}(oe,ot),[Yi,ur,Lo]})},q:function(c,d,p,f,S,b){var R=On(d,p);S=zi(f,S),$r([],[c],function(v){var U=`constructor ${(v=v[0]).name}`;if(v.registeredClass.constructor_body===void 0&&(v.registeredClass.constructor_body=[]),v.registeredClass.constructor_body[d-1]!==void 0)throw new Gi(`Cannot register multiple constructors with identical number of parameters (${d-1}) for class '${v.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return v.registeredClass.constructor_body[d-1]=()=>{Rs(`Cannot construct ${v.name} due to unbound types`,R)},$r([],R,function(L){return L.splice(1,0,null),v.registeredClass.constructor_body[d-1]=Ji(U,L,null,S,b),[]}),[]})},d:function(c,d,p,f,S,b,R,v,U){var L=On(p,f);d=k(d),b=zi(S,b),$r([],[c],function(Y){var ne=`${(Y=Y[0]).name}.${d}`;function ae(){Rs(`Cannot call ${ne} due to unbound types`,L)}d.startsWith("@@")&&(d=Symbol[d.substring(2)]),v&&Y.registeredClass.pureVirtualFunctions.push(d);var oe=Y.registeredClass.instancePrototype,Ce=oe[d];return Ce===void 0||Ce.overloadTable===void 0&&Ce.className!==Y.name&&Ce.argCount===p-2?(ae.argCount=p-2,ae.className=Y.name,oe[d]=ae):(gc(oe,d,ne),oe[d].overloadTable[p-2]=ae),$r([],L,function(Fe){var Oe=Ji(ne,Fe,Y,b,R,U);return oe[d].overloadTable===void 0?(Oe.argCount=p-2,oe[d]=Oe):oe[d].overloadTable[p-2]=Oe,[]}),[]})},D:function(c,d){er(c,{name:d=k(d),fromWireType:function(p){var f=Xi.toValue(p);return Ac(p),f},toWireType:function(p,f){return Xi.toHandle(f)},argPackAdvance:8,readValueFromPointer:Po,destructorFunction:null})},k:function(c,d,p){var f=li(p);er(c,{name:d=k(d),fromWireType:function(S){return S},toWireType:function(S,b){return b},argPackAdvance:8,readValueFromPointer:bc(d,f),destructorFunction:null})},c:function(c,d,p,f,S){d=k(d),S===-1&&(S=4294967295);var b=li(p),R=L=>L;if(f===0){var v=32-8*p;R=L=>L<<v>>>v}var U=d.includes("unsigned");er(c,{name:d,fromWireType:R,toWireType:U?function(L,Y){return this.name,Y>>>0}:function(L,Y){return this.name,Y},argPackAdvance:8,readValueFromPointer:Rc(d,b,f!==0),destructorFunction:null})},b:function(c,d,p){var f=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][d];function S(b){var R=Ue,v=R[b>>=2],U=R[b+1];return new f(R.buffer,U,v)}er(c,{name:p=k(p),fromWireType:S,argPackAdvance:8,readValueFromPointer:S},{ignoreDuplicateRegistrations:!0})},j:function(c,d){var p=(d=k(d))==="std::string";er(c,{name:d,fromWireType:function(f){var S,b=Ue[f>>2],R=f+4;if(p)for(var v=R,U=0;U<=b;++U){var L=R+U;if(U==b||pe[L]==0){var Y=Hi(v,L-v);S===void 0?S=Y:(S+="\0",S+=Y),v=L+1}}else{var ne=new Array(b);for(U=0;U<b;++U)ne[U]=String.fromCharCode(pe[R+U]);S=ne.join("")}return vt(f),S},toWireType:function(f,S){var b;S instanceof ArrayBuffer&&(S=new Uint8Array(S));var R=typeof S=="string";R||S instanceof Uint8Array||S instanceof Uint8ClampedArray||S instanceof Int8Array||Ve("Cannot pass non-string to std::string"),b=p&&R?Co(S):S.length;var v=Qi(4+b+1),U=v+4;if(Ue[v>>2]=b,p&&R)No(S,pe,U,b+1);else if(R)for(var L=0;L<b;++L){var Y=S.charCodeAt(L);Y>255&&(vt(U),Ve("String has UTF-16 code units that do not fit in 8 bits")),pe[U+L]=Y}else for(L=0;L<b;++L)pe[U+L]=S[L];return f!==null&&f.push(vt,v),v},argPackAdvance:8,readValueFromPointer:Po,destructorFunction:function(f){vt(f)}})},f:function(c,d,p){var f,S,b,R,v;p=k(p),d===2?(f=_,S=w,R=x,b=()=>Qe,v=1):d===4&&(f=B,S=H,R=G,b=()=>Ue,v=2),er(c,{name:p,fromWireType:function(U){for(var L,Y=Ue[U>>2],ne=b(),ae=U+4,oe=0;oe<=Y;++oe){var Ce=U+4+oe*d;if(oe==Y||ne[Ce>>v]==0){var Fe=f(ae,Ce-ae);L===void 0?L=Fe:(L+="\0",L+=Fe),ae=Ce+d}}return vt(U),L},toWireType:function(U,L){typeof L!="string"&&Ve(`Cannot pass non-string to C++ string type ${p}`);var Y=R(L),ne=Qi(4+Y+d);return Ue[ne>>2]=Y>>v,S(L,ne+4,Y+d),U!==null&&U.push(vt,ne),ne},argPackAdvance:8,readValueFromPointer:Po,destructorFunction:function(U){vt(U)}})},o:function(c,d){er(c,{isVoid:!0,name:d=k(d),argPackAdvance:0,fromWireType:function(){},toWireType:function(p,f){}})},g:function(c,d,p,f){var S,b;(c=ee[c])(d=Xi.toValue(d),p=(b=X[S=p])===void 0?k(S):b,null,f)},m:Ac,l:function(c,d){var p=function(Fe,Oe){for(var ot,et,Et,Yi=new Array(Fe),ur=0;ur<Fe;++ur)Yi[ur]=(ot=Ue[Oe+4*ur>>2],et="parameter "+ur,Et=void 0,(Et=dr[ot])===void 0&&Ve(et+" has unknown type "+bs(ot)),Et);return Yi}(c,d),f=p[0],S=f.name+"_$"+p.slice(1).map(function(Fe){return Fe.name}).join("_")+"$",b=W[S];if(b!==void 0)return b;for(var R=["retType"],v=[f],U="",L=0;L<c-1;++L)U+=(L!==0?", ":"")+"arg"+L,R.push("argType"+L),v.push(p[1+L]);var Y="return function "+Lt("methodCaller_"+S)+`(handle, name, destructors, args) {
67
+ `,ne=0;for(L=0;L<c-1;++L)Y+=" var arg"+L+" = argType"+L+".readValueFromPointer(args"+(ne?"+"+ne:"")+`);
68
+ `,ne+=p[L+1].argPackAdvance;for(Y+=" var rv = handle[name]("+U+`);
69
+ `,L=0;L<c-1;++L)p[L+1].deleteObject&&(Y+=" argType"+L+".deleteObject(arg"+L+`);
70
+ `);f.isVoid||(Y+=` return retType.toWireType(destructors, rv);
71
+ `),Y+=`};
72
+ `,R.push(Y);var ae,oe,Ce=xn(Function,R).apply(null,v);return ae=Ce,oe=ee.length,ee.push(ae),b=oe,W[S]=b,b},a:()=>{Vr("")},e:function(){return Date.now()},v:()=>pe.length,A:(c,d,p)=>pe.copyWithin(c,d,d+p),u:c=>{pe.length,Vr("OOM")},y:(c,d)=>{var p=0;return De().forEach(function(f,S){var b=d+p;Ue[c+4*S>>2]=b,((R,v)=>{for(var U=0;U<R.length;++U)K[0|v++]=R.charCodeAt(U);K[0|v]=0})(f,b),p+=f.length+1}),0},z:(c,d)=>{var p=De();Ue[c>>2]=p.length;var f=0;return p.forEach(function(S){f+=S.length+1}),Ue[d>>2]=f,0},i:function(c){try{var d=yt.getStreamFromFD(c);return E.close(d),0}catch(p){if(E===void 0||p.name!=="ErrnoError")throw p;return p.errno}},x:function(c,d){try{var p=yt.getStreamFromFD(c),f=p.tty?2:E.isDir(p.mode)?3:E.isLink(p.mode)?7:4;return K[d|0]=f,ce[d+2>>1]=0,Ke=[0,(Te=0,+Math.abs(Te)>=1?Te>0?+Math.floor(Te/4294967296)>>>0:~~+Math.ceil((Te-+(~~Te>>>0))/4294967296)>>>0:0)],Q[d+8>>2]=Ke[0],Q[d+12>>2]=Ke[1],Ke=[0,(Te=0,+Math.abs(Te)>=1?Te>0?+Math.floor(Te/4294967296)>>>0:~~+Math.ceil((Te-+(~~Te>>>0))/4294967296)>>>0:0)],Q[d+16>>2]=Ke[0],Q[d+20>>2]=Ke[1],0}catch(S){if(E===void 0||S.name!=="ErrnoError")throw S;return S.errno}},B:function(c,d,p,f){try{var S=((b,R,v,U)=>{for(var L=0,Y=0;Y<v;Y++){var ne=Ue[R>>2],ae=Ue[R+4>>2];R+=8;var oe=E.read(b,K,ne,ae,U);if(oe<0)return-1;if(L+=oe,oe<ae)break;U!==void 0&&(U+=oe)}return L})(yt.getStreamFromFD(c),d,p);return Ue[f>>2]=S,0}catch(b){if(E===void 0||b.name!=="ErrnoError")throw b;return b.errno}},s:function(c,d,p,f,S){var b,R,v=(R=p)+2097152>>>0<4194305-!!(b=d)?(b>>>0)+4294967296*R:NaN;try{if(isNaN(v))return 61;var U=yt.getStreamFromFD(c);return E.llseek(U,v,f),Ke=[U.position>>>0,(Te=U.position,+Math.abs(Te)>=1?Te>0?+Math.floor(Te/4294967296)>>>0:~~+Math.ceil((Te-+(~~Te>>>0))/4294967296)>>>0:0)],Q[S>>2]=Ke[0],Q[S+4>>2]=Ke[1],U.getdents&&v===0&&f===0&&(U.getdents=null),0}catch(L){if(E===void 0||L.name!=="ErrnoError")throw L;return L.errno}},h:function(c,d,p,f){try{var S=((b,R,v,U)=>{for(var L=0,Y=0;Y<v;Y++){var ne=Ue[R>>2],ae=Ue[R+4>>2];R+=8;var oe=E.write(b,K,ne,ae,U);if(oe<0)return-1;L+=oe,U!==void 0&&(U+=oe)}return L})(yt.getStreamFromFD(c),d,p);return Ue[f>>2]=S,0}catch(b){if(E===void 0||b.name!=="ErrnoError")throw b;return b.errno}}},Qi=(function(){var c,d,p,f,S={a:Dt};function b(R,v){var U,L,Y=R.exports;return D=(P=Y).E,U=D.buffer,o.HEAP8=K=new Int8Array(U),o.HEAP16=ce=new Int16Array(U),o.HEAP32=Q=new Int32Array(U),o.HEAPU8=pe=new Uint8Array(U),o.HEAPU16=Qe=new Uint16Array(U),o.HEAPU32=Ue=new Uint32Array(U),o.HEAPF32=Ro=new Float32Array(U),o.HEAPF64=Rn=new Float64Array(U),vn=P.H,L=P.F,Ts.unshift(L),vo(),Y}if(re(),o.instantiateWasm)try{return o.instantiateWasm(S,b)}catch(R){N("Module.instantiateWasm callback failed with error: "+R),r(R)}(c=A,d=di,p=S,f=function(R){b(R.instance)},c||typeof WebAssembly.instantiateStreaming!="function"||kt(d)||typeof fetch!="function"?Fr(d,p,f):fetch(d,{credentials:"same-origin"}).then(R=>WebAssembly.instantiateStreaming(R,p).then(f,function(v){return N("wasm streaming compile failed: "+v),N("falling back to ArrayBuffer instantiation"),Fr(d,p,f)}))).catch(r)}(),c=>(Qi=P.G)(c)),vt=c=>(vt=P.I)(c),kn=()=>(kn=P.J)(),Ar=c=>(Ar=P.K)(c),Pn=(o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=P.L)(),c=>(Pn=P.M)(c));o.dynCall_jiji=(c,d,p,f,S)=>(o.dynCall_jiji=P.N)(c,d,p,f,S),o._ff_h264_cabac_tables=67061;function Cs(){function c(){ze||(ze=!0,o.calledRun=!0,Cn||(o.noFSInit||E.init.initialized||E.init(),E.ignorePermissions=!1,_r.init(),Fi(Ts),e(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)d=o.postRun.shift(),Vi.unshift(d);var d;Fi(Vi)}()))}cr>0||(function(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)d=o.preRun.shift(),Ur.unshift(d);var d;Fi(Ur)}(),cr>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),c()},1)):c()))}if(ci=function c(){ze||Cs(),ze||(ci=c)},o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Cs(),t.ready}})(),iy=ry,oy=class extends ja{constructor(i){super(iy,i!=null&&i.wasmPath?fetch(i==null?void 0:i.wasmPath).then(t=>t.arrayBuffer()):void 0,i==null?void 0:i.workerMode,i==null?void 0:i.canvas,i==null?void 0:i.yuvMode)}},Sx=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e,r,o=t;o.ready=new Promise((I,_)=>{e=I,r=_});var s,n=Object.assign({},o),a=typeof window=="object",u=typeof importScripts=="function",m=(typeof process=="object"&&typeof process.versions=="object"&&process.versions.node,"");(a||u)&&(u?m=self.location.href:typeof document!="undefined"&&document.currentScript&&(m=document.currentScript.src),i&&(m=i),m=m.indexOf("blob:")!==0?m.substr(0,m.replace(/[?#].*/,"").lastIndexOf("/")+1):"",u&&(s=I=>{var _=new XMLHttpRequest;return _.open("GET",I,!1),_.responseType="arraybuffer",_.send(null),new Uint8Array(_.response)}));var h,g=o.print||console.log.bind(console),T=o.printErr||console.error.bind(console);Object.assign(o,n),n=null,o.arguments&&o.arguments,o.thisProgram&&o.thisProgram,o.quit&&o.quit,o.wasmBinary&&(h=o.wasmBinary);var A,C;o.noExitRuntime,typeof WebAssembly!="object"&&cr("no native wasm support detected");var N,D,P,K,pe,ce,Qe,Q,Ue,Ro=!1,Rn=[],vn=[],Cn=[],Ur=0,Ts=null,Vi=null;function cr(I){o.onAbort&&o.onAbort(I),T(I="Aborted("+I+")"),Ro=!0,I+=". Build with -sASSERTIONS for more info.";var _=new WebAssembly.RuntimeError(I);throw r(_),_}var ai,ci;function re(I){return I.startsWith("data:application/octet-stream;base64,")}function vo(I){if(I==ai&&h)return new Uint8Array(h);if(s)return s(I);throw"both async and sync fetching of the wasm failed"}function Vr(I,_,w){return function(x){return h||!a&&!u||typeof fetch!="function"?Promise.resolve().then(()=>vo(x)):fetch(x,{credentials:"same-origin"}).then(B=>{if(!B.ok)throw"failed to load wasm binary file at '"+x+"'";return B.arrayBuffer()}).catch(()=>vo(x))}(I).then(x=>WebAssembly.instantiate(x,_)).then(x=>x).then(w,x=>{T("failed to asynchronously prepare wasm: "+x),cr(x)})}re(ai="videodec_simd.wasm")||(ci=ai,ai=o.locateFile?o.locateFile(ci,m):m+ci);var di=I=>{for(;I.length>0;)I.shift()(o)};function Nn(I){this.excPtr=I,this.ptr=I-24,this.set_type=function(_){ce[this.ptr+4>>2]=_},this.get_type=function(){return ce[this.ptr+4>>2]},this.set_destructor=function(_){ce[this.ptr+8>>2]=_},this.get_destructor=function(){return ce[this.ptr+8>>2]},this.set_caught=function(_){_=_?1:0,N[this.ptr+12|0]=_},this.get_caught=function(){return N[this.ptr+12|0]!=0},this.set_rethrown=function(_){_=_?1:0,N[this.ptr+13|0]=_},this.get_rethrown=function(){return N[this.ptr+13|0]!=0},this.init=function(_,w){this.set_adjusted_ptr(0),this.set_type(_),this.set_destructor(w)},this.set_adjusted_ptr=function(_){ce[this.ptr+16>>2]=_},this.get_adjusted_ptr=function(){return ce[this.ptr+16>>2]},this.get_exception_ptr=function(){if(bc(this.get_type()))return ce[this.excPtr>>2];var _=this.get_adjusted_ptr();return _!==0?_:this.excPtr}}function Te(I){switch(I){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${I}`)}}var Ke=void 0;function kt(I){for(var _="",w=I;D[w];)_+=Ke[D[w++]];return _}var j={},Fr={},Fi={},$i=void 0;function le(I){throw new $i(I)}var wn=void 0;function Xt(I){throw new wn(I)}function Bi(I,_,w){function x(X){var ee=w(X);ee.length!==I.length&&Xt("Mismatched type converter count");for(var W=0;W<I.length;++W)Pt(I[W],ee[W])}I.forEach(function(X){Fi[X]=_});var B=new Array(_.length),H=[],G=0;_.forEach((X,ee)=>{Fr.hasOwnProperty(X)?B[ee]=Fr[X]:(H.push(X),j.hasOwnProperty(X)||(j[X]=[]),j[X].push(()=>{B[ee]=Fr[X],++G===H.length&&x(B)}))}),H.length===0&&x(B)}function Pt(I,_,w={}){if(!("argPackAdvance"in _))throw new TypeError("registerType registeredInstance requires argPackAdvance");return function(x,B,H={}){var G=B.name;if(x||le(`type "${G}" must have a positive integer typeid pointer`),Fr.hasOwnProperty(x)){if(H.ignoreDuplicateRegistrations)return;le(`Cannot register type '${G}' twice`)}if(Fr[x]=B,delete Fi[x],j.hasOwnProperty(x)){var X=j[x];delete j[x],X.forEach(ee=>ee())}}(I,_,w)}function Dn(I){if(!(this instanceof Kt)||!(I instanceof Kt))return!1;for(var _=this.$$.ptrType.registeredClass,w=this.$$.ptr,x=I.$$.ptrType.registeredClass,B=I.$$.ptr;_.baseClass;)w=_.upcast(w),_=_.baseClass;for(;x.baseClass;)B=x.upcast(B),x=x.baseClass;return _===x&&w===B}function Co(I){le(I.$$.ptrType.registeredClass.name+" instance already deleted")}var No=!1;function _s(I){}function _r(I){I.count.value-=1,I.count.value===0&&function(_){_.smartPtr?_.smartPtrType.rawDestructor(_.smartPtr):_.ptrType.registeredClass.rawDestructor(_.ptr)}(I)}function me(I,_,w){if(_===w)return I;if(w.baseClass===void 0)return null;var x=me(I,_,w.baseClass);return x===null?null:w.downcast(x)}var Ae={};function el(){return Object.keys(li).length}function tl(){var I=[];for(var _ in li)li.hasOwnProperty(_)&&I.push(li[_]);return I}var ui=[];function E(){for(;ui.length;){var I=ui.pop();I.$$.deleteScheduled=!1,I.delete()}}var Hi=void 0;function yt(I){Hi=I,ui.length&&Hi&&Hi(E)}var li={};function sc(I,_){return _=function(w,x){for(x===void 0&&le("ptr should not be undefined");w.baseClass;)x=w.upcast(x),w=w.baseClass;return x}(I,_),li[_]}function k(I,_){return _.ptrType&&_.ptr||Xt("makeClassHandle requires ptr and ptrType"),!!_.smartPtrType!=!!_.smartPtr&&Xt("Both smartPtrType and smartPtr must be specified"),_.count={value:1},dr(Object.create(I,{$$:{value:_}}))}function Wi(I){var _=this.getPointee(I);if(!_)return this.destructor(I),null;var w=sc(this.registeredClass,_);if(w!==void 0){if(w.$$.count.value===0)return w.$$.ptr=_,w.$$.smartPtr=I,w.clone();var x=w.clone();return this.destructor(I),x}function B(){return this.isSmartPointer?k(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:_,smartPtrType:this,smartPtr:I}):k(this.registeredClass.instancePrototype,{ptrType:this,ptr:I})}var H,G=this.registeredClass.getActualType(_),X=Ae[G];if(!X)return B.call(this);H=this.isConst?X.constPointerType:X.pointerType;var ee=me(_,this.registeredClass,H.registeredClass);return ee===null?B.call(this):this.isSmartPointer?k(H.registeredClass.instancePrototype,{ptrType:H,ptr:ee,smartPtrType:this,smartPtr:I}):k(H.registeredClass.instancePrototype,{ptrType:H,ptr:ee})}var dr=function(I){return typeof FinalizationRegistry=="undefined"?(dr=_=>_,I):(No=new FinalizationRegistry(_=>{_r(_.$$)}),_s=_=>No.unregister(_),(dr=_=>{var w=_.$$;if(w.smartPtr){var x={$$:w};No.register(_,x,_)}return _})(I))};function Ss(){if(this.$$.ptr||Co(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var I,_=dr(Object.create(Object.getPrototypeOf(this),{$$:{value:(I=this.$$,{count:I.count,deleteScheduled:I.deleteScheduled,preservePointerOnDelete:I.preservePointerOnDelete,ptr:I.ptr,ptrType:I.ptrType,smartPtr:I.smartPtr,smartPtrType:I.smartPtrType})}}));return _.$$.count.value+=1,_.$$.deleteScheduled=!1,_}function Gi(){this.$$.ptr||Co(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&le("Object already scheduled for deletion"),_s(this),_r(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ve(){return!this.$$.ptr}function nc(){return this.$$.ptr||Co(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&le("Object already scheduled for deletion"),ui.push(this),ui.length===1&&Hi&&Hi(E),this.$$.deleteScheduled=!0,this}function Kt(){}function $r(I){if(I===void 0)return"_unknown";var _=(I=I.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return _>=48&&_<=57?`_${I}`:I}function er(I,_){return I=$r(I),{[I]:function(){return _.apply(this,arguments)}}[I]}function ac(I,_,w){if(I[_].overloadTable===void 0){var x=I[_];I[_]=function(){return I[_].overloadTable.hasOwnProperty(arguments.length)||le(`Function '${w}' called with an invalid number of arguments (${arguments.length}) - expects one of (${I[_].overloadTable})!`),I[_].overloadTable[arguments.length].apply(this,arguments)},I[_].overloadTable=[],I[_].overloadTable[x.argCount]=x}}function Mn(I,_,w,x,B,H,G,X){this.name=I,this.constructor=_,this.instancePrototype=w,this.rawDestructor=x,this.baseClass=B,this.getActualType=H,this.upcast=G,this.downcast=X,this.pureVirtualFunctions=[]}function wo(I,_,w){for(;_!==w;)_.upcast||le(`Expected null or instance of ${w.name}, got an instance of ${_.name}`),I=_.upcast(I),_=_.baseClass;return I}function cc(I,_){if(_===null)return this.isReference&&le(`null is not a valid ${this.name}`),0;_.$$||le(`Cannot pass "${ko(_)}" as a ${this.name}`),_.$$.ptr||le(`Cannot pass deleted object as a pointer of type ${this.name}`);var w=_.$$.ptrType.registeredClass;return wo(_.$$.ptr,w,this.registeredClass)}function dc(I,_){var w;if(_===null)return this.isReference&&le(`null is not a valid ${this.name}`),this.isSmartPointer?(w=this.rawConstructor(),I!==null&&I.push(this.rawDestructor,w),w):0;_.$$||le(`Cannot pass "${ko(_)}" as a ${this.name}`),_.$$.ptr||le(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&_.$$.ptrType.isConst&&le(`Cannot convert argument of type ${_.$$.smartPtrType?_.$$.smartPtrType.name:_.$$.ptrType.name} to parameter type ${this.name}`);var x=_.$$.ptrType.registeredClass;if(w=wo(_.$$.ptr,x,this.registeredClass),this.isSmartPointer)switch(_.$$.smartPtr===void 0&&le("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:_.$$.smartPtrType===this?w=_.$$.smartPtr:le(`Cannot convert argument of type ${_.$$.smartPtrType?_.$$.smartPtrType.name:_.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:w=_.$$.smartPtr;break;case 2:if(_.$$.smartPtrType===this)w=_.$$.smartPtr;else{var B=_.clone();w=this.rawShare(w,ys.toHandle(function(){B.delete()})),I!==null&&I.push(this.rawDestructor,w)}break;default:le("Unsupporting sharing policy")}return w}function uc(I,_){if(_===null)return this.isReference&&le(`null is not a valid ${this.name}`),0;_.$$||le(`Cannot pass "${ko(_)}" as a ${this.name}`),_.$$.ptr||le(`Cannot pass deleted object as a pointer of type ${this.name}`),_.$$.ptrType.isConst&&le(`Cannot convert argument of type ${_.$$.ptrType.name} to parameter type ${this.name}`);var w=_.$$.ptrType.registeredClass;return wo(_.$$.ptr,w,this.registeredClass)}function Do(I){return this.fromWireType(pe[I>>2])}function rl(I){return this.rawGetPointee&&(I=this.rawGetPointee(I)),I}function il(I){this.rawDestructor&&this.rawDestructor(I)}function Mo(I){I!==null&&I.delete()}function tr(I,_,w,x,B,H,G,X,ee,W,he){this.name=I,this.registeredClass=_,this.isReference=w,this.isConst=x,this.isSmartPointer=B,this.pointeeType=H,this.sharingPolicy=G,this.rawGetPointee=X,this.rawConstructor=ee,this.rawShare=W,this.rawDestructor=he,B||_.baseClass!==void 0?this.toWireType=dc:x?(this.toWireType=cc,this.destructorFunction=null):(this.toWireType=uc,this.destructorFunction=null)}var Br=[],lc=I=>{var _=Br[I];return _||(I>=Br.length&&(Br.length=I+1),Br[I]=_=Ue.get(I)),_},Oo=(I,_,w)=>I.includes("j")?((x,B,H)=>{var G=o["dynCall_"+x];return H&&H.length?G.apply(null,[B].concat(H)):G.call(null,B)})(I,_,w):lc(_).apply(null,w);function ji(I,_){var w,x,B,H=(I=kt(I)).includes("j")?(w=I,x=_,B=[],function(){return B.length=0,Object.assign(B,arguments),Oo(w,x,B)}):lc(_);return typeof H!="function"&&le(`unknown function pointer with signature ${I}: ${_}`),H}var xo=void 0;function mc(I){var _=vs(I),w=kt(_);return yr(_),w}function qi(I,_){var w=[],x={};throw _.forEach(function B(H){x[H]||Fr[H]||(Fi[H]?Fi[H].forEach(B):(w.push(H),x[H]=!0))}),new xo(`${I}: `+w.map(mc).join([", "]))}function pc(I,_){for(var w=[],x=0;x<I;x++)w.push(ce[_+4*x>>2]);return w}function ol(I){for(;I.length;){var _=I.pop();I.pop()(_)}}function hc(I,_){if(!(I instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof I} which is not a function`);var w=er(I.name||"unknownFunctionName",function(){});w.prototype=I.prototype;var x=new w,B=I.apply(x,_);return B instanceof Object?B:x}function fc(I,_,w,x,B,H){var G=_.length;G<2&&le("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var X=_[1]!==null&&w!==null,ee=!1,W=1;W<_.length;++W)if(_[W]!==null&&_[W].destructorFunction===void 0){ee=!0;break}var he=_[0].name!=="void",De="",ve="";for(W=0;W<G-2;++W)De+=(W!==0?", ":"")+"arg"+W,ve+=(W!==0?", ":"")+"arg"+W+"Wired";var ge=`
73
+ return function ${$r(I)}(${De}) {
74
+ if (arguments.length !== ${G-2}) {
75
+ throwBindingError('function ${I} called with ${arguments.length} arguments, expected ${G-2} args!');
76
+ }`;ee&&(ge+=`var destructors = [];
77
+ `);var Me=ee?"destructors":"null",it=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],qe=[le,x,B,ol,_[0],_[1]];for(X&&(ge+="var thisWired = classParam.toWireType("+Me+`, this);
78
+ `),W=0;W<G-2;++W)ge+="var arg"+W+"Wired = argType"+W+".toWireType("+Me+", arg"+W+"); // "+_[W+2].name+`
79
+ `,it.push("argType"+W),qe.push(_[W+2]);if(X&&(ve="thisWired"+(ve.length>0?", ":"")+ve),ge+=(he||H?"var rv = ":"")+"invoker(fn"+(ve.length>0?", ":"")+ve+`);
80
+ `,ee)ge+=`runDestructors(destructors);
81
+ `;else for(W=X?1:2;W<_.length;++W){var pt=W===1?"thisWired":"arg"+(W-2)+"Wired";_[W].destructorFunction!==null&&(ge+=pt+"_dtor("+pt+"); // "+_[W].name+`
82
+ `,it.push(pt+"_dtor"),qe.push(_[W].destructorFunction))}return he&&(ge+=`var ret = retType.fromWireType(rv);
83
+ return ret;
84
+ `),ge+=`}
85
+ `,it.push(ge),hc(Function,it).apply(null,qe)}function Sr(){this.allocated=[void 0],this.freelist=[]}var Lt=new Sr;function Is(I){I>=Lt.reserved&&--Lt.get(I).refcount==0&&Lt.free(I)}function gc(){for(var I=0,_=Lt.reserved;_<Lt.allocated.length;++_)Lt.allocated[_]!==void 0&&++I;return I}var ys={toValue:I=>(I||le("Cannot use deleted val. handle = "+I),Lt.get(I).value),toHandle:I=>{switch(I){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Lt.allocate({refcount:1,value:I})}}};function ko(I){if(I===null)return"null";var _=typeof I;return _==="object"||_==="array"||_==="function"?I.toString():""+I}function sl(I,_){switch(_){case 2:return function(w){return this.fromWireType(Qe[w>>2])};case 3:return function(w){return this.fromWireType(Q[w>>3])};default:throw new TypeError("Unknown float type: "+I)}}function nl(I,_,w){switch(_){case 0:return w?function(x){return N[x]}:function(x){return D[x]};case 1:return w?function(x){return P[x>>1]}:function(x){return K[x>>1]};case 2:return w?function(x){return pe[x>>2]}:function(x){return ce[x>>2]};default:throw new TypeError("Unknown integer type: "+I)}}var Ec=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,Po=(I,_,w)=>{for(var x=_+w,B=_;I[B]&&!(B>=x);)++B;if(B-_>16&&I.buffer&&Ec)return Ec.decode(I.subarray(_,B));for(var H="";_<B;){var G=I[_++];if(128&G){var X=63&I[_++];if((224&G)!=192){var ee=63&I[_++];if((G=(240&G)==224?(15&G)<<12|X<<6|ee:(7&G)<<18|X<<12|ee<<6|63&I[_++])<65536)H+=String.fromCharCode(G);else{var W=G-65536;H+=String.fromCharCode(55296|W>>10,56320|1023&W)}}else H+=String.fromCharCode((31&G)<<6|X)}else H+=String.fromCharCode(G)}return H},al=(I,_)=>I?Po(D,I,_):"",Tc=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,cl=(I,_)=>{for(var w=I,x=w>>1,B=x+_/2;!(x>=B)&&K[x];)++x;if((w=x<<1)-I>32&&Tc)return Tc.decode(D.subarray(I,w));for(var H="",G=0;!(G>=_/2);++G){var X=P[I+2*G>>1];if(X==0)break;H+=String.fromCharCode(X)}return H},Ir=(I,_,w)=>{if(w===void 0&&(w=2147483647),w<2)return 0;for(var x=_,B=(w-=2)<2*I.length?w/2:I.length,H=0;H<B;++H){var G=I.charCodeAt(H);P[_>>1]=G,_+=2}return P[_>>1]=0,_-x},As=I=>2*I.length,_c=(I,_)=>{for(var w=0,x="";!(w>=_/4);){var B=pe[I+4*w>>2];if(B==0)break;if(++w,B>=65536){var H=B-65536;x+=String.fromCharCode(55296|H>>10,56320|1023&H)}else x+=String.fromCharCode(B)}return x},dl=(I,_,w)=>{if(w===void 0&&(w=2147483647),w<4)return 0;for(var x=_,B=x+w-4,H=0;H<I.length;++H){var G=I.charCodeAt(H);if(G>=55296&&G<=57343&&(G=65536+((1023&G)<<10)|1023&I.charCodeAt(++H)),pe[_>>2]=G,(_+=4)+4>B)break}return pe[_>>2]=0,_-x},zi=I=>{for(var _=0,w=0;w<I.length;++w){var x=I.charCodeAt(w);x>=55296&&x<=57343&&++w,_+=4}return _},Sc={},bs=[],Rs=[],On;On=()=>performance.now();var Ic,xn,Ji,yc=[null,[],[]];(function(){for(var I=new Array(256),_=0;_<256;++_)I[_]=String.fromCharCode(_);Ke=I})(),$i=o.BindingError=class extends Error{constructor(I){super(I),this.name="BindingError"}},wn=o.InternalError=class extends Error{constructor(I){super(I),this.name="InternalError"}},Kt.prototype.isAliasOf=Dn,Kt.prototype.clone=Ss,Kt.prototype.delete=Gi,Kt.prototype.isDeleted=Ve,Kt.prototype.deleteLater=nc,o.getInheritedInstanceCount=el,o.getLiveInheritedInstances=tl,o.flushPendingDeletes=E,o.setDelayFunction=yt,tr.prototype.getPointee=rl,tr.prototype.destructor=il,tr.prototype.argPackAdvance=8,tr.prototype.readValueFromPointer=Do,tr.prototype.deleteObject=Mo,tr.prototype.fromWireType=Wi,xo=o.UnboundTypeError=(Ic=Error,(Ji=er(xn="UnboundTypeError",function(I){this.name=xn,this.message=I;var _=new Error(I).stack;_!==void 0&&(this.stack=this.toString()+`
86
+ `+_.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(Ic.prototype),Ji.prototype.constructor=Ji,Ji.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},Ji),Object.assign(Sr.prototype,{get(I){return this.allocated[I]},has(I){return this.allocated[I]!==void 0},allocate(I){var _=this.freelist.pop()||this.allocated.length;return this.allocated[_]=I,_},free(I){this.allocated[I]=void 0,this.freelist.push(I)}}),Lt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Lt.reserved=Lt.allocated.length,o.count_emval_handles=gc;var Ut,Ac={o:function(I,_,w){throw new Nn(I).init(_,w),I},r:function(I,_,w,x,B){},m:function(I,_,w,x,B){var H=Te(w);Pt(I,{name:_=kt(_),fromWireType:function(G){return!!G},toWireType:function(G,X){return X?x:B},argPackAdvance:8,readValueFromPointer:function(G){var X;if(w===1)X=N;else if(w===2)X=P;else{if(w!==4)throw new TypeError("Unknown boolean type size: "+_);X=pe}return this.fromWireType(X[G>>H])},destructorFunction:null})},q:function(I,_,w,x,B,H,G,X,ee,W,he,De,ve){he=kt(he),H=ji(B,H),X&&(X=ji(G,X)),W&&(W=ji(ee,W)),ve=ji(De,ve);var ge=$r(he);(function(Me,it,qe){o.hasOwnProperty(Me)?((qe===void 0||o[Me].overloadTable!==void 0&&o[Me].overloadTable[qe]!==void 0)&&le(`Cannot register public name '${Me}' twice`),ac(o,Me,Me),o.hasOwnProperty(qe)&&le(`Cannot register multiple overloads of a function with the same number of arguments (${qe})!`),o[Me].overloadTable[qe]=it):(o[Me]=it,qe!==void 0&&(o[Me].numArguments=qe))})(ge,function(){qi(`Cannot construct ${he} due to unbound types`,[x])}),Bi([I,_,w],x?[x]:[],function(Me){var it,qe;Me=Me[0],qe=x?(it=Me.registeredClass).instancePrototype:Kt.prototype;var pt=er(ge,function(){if(Object.getPrototypeOf(this)!==ze)throw new $i("Use 'new' to construct "+he);if(Dt.constructor_body===void 0)throw new $i(he+" has no accessible constructor");var Ar=Dt.constructor_body[arguments.length];if(Ar===void 0)throw new $i(`Tried to invoke ctor of ${he} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Dt.constructor_body).toString()}) parameters instead!`);return Ar.apply(this,arguments)}),ze=Object.create(qe,{constructor:{value:pt}});pt.prototype=ze;var Dt=new Mn(he,pt,ze,ve,it,H,X,W);Dt.baseClass&&(Dt.baseClass.__derivedClasses===void 0&&(Dt.baseClass.__derivedClasses=[]),Dt.baseClass.__derivedClasses.push(Dt));var Qi=new tr(he,Dt,!0,!1,!1),vt=new tr(he+"*",Dt,!1,!1,!1),kn=new tr(he+" const*",Dt,!1,!0,!1);return Ae[I]={pointerType:vt,constPointerType:kn},function(Ar,Pn,Cs){o.hasOwnProperty(Ar)||Xt("Replacing nonexistant public symbol"),o[Ar].overloadTable!==void 0&&Cs!==void 0?o[Ar].overloadTable[Cs]=Pn:(o[Ar]=Pn,o[Ar].argCount=Cs)}(ge,pt),[Qi,vt,kn]})},p:function(I,_,w,x,B,H){var G=pc(_,w);B=ji(x,B),Bi([],[I],function(X){var ee=`constructor ${(X=X[0]).name}`;if(X.registeredClass.constructor_body===void 0&&(X.registeredClass.constructor_body=[]),X.registeredClass.constructor_body[_-1]!==void 0)throw new $i(`Cannot register multiple constructors with identical number of parameters (${_-1}) for class '${X.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return X.registeredClass.constructor_body[_-1]=()=>{qi(`Cannot construct ${X.name} due to unbound types`,G)},Bi([],G,function(W){return W.splice(1,0,null),X.registeredClass.constructor_body[_-1]=fc(ee,W,null,B,H),[]}),[]})},d:function(I,_,w,x,B,H,G,X,ee){var W=pc(w,x);_=kt(_),H=ji(B,H),Bi([],[I],function(he){var De=`${(he=he[0]).name}.${_}`;function ve(){qi(`Cannot call ${De} due to unbound types`,W)}_.startsWith("@@")&&(_=Symbol[_.substring(2)]),X&&he.registeredClass.pureVirtualFunctions.push(_);var ge=he.registeredClass.instancePrototype,Me=ge[_];return Me===void 0||Me.overloadTable===void 0&&Me.className!==he.name&&Me.argCount===w-2?(ve.argCount=w-2,ve.className=he.name,ge[_]=ve):(ac(ge,_,De),ge[_].overloadTable[w-2]=ve),Bi([],W,function(it){var qe=fc(De,it,he,H,G,ee);return ge[_].overloadTable===void 0?(qe.argCount=w-2,ge[_]=qe):ge[_].overloadTable[w-2]=qe,[]}),[]})},u:function(I,_){Pt(I,{name:_=kt(_),fromWireType:function(w){var x=ys.toValue(w);return Is(w),x},toWireType:function(w,x){return ys.toHandle(x)},argPackAdvance:8,readValueFromPointer:Do,destructorFunction:null})},k:function(I,_,w){var x=Te(w);Pt(I,{name:_=kt(_),fromWireType:function(B){return B},toWireType:function(B,H){return H},argPackAdvance:8,readValueFromPointer:sl(_,x),destructorFunction:null})},b:function(I,_,w,x,B){_=kt(_),B===-1&&(B=4294967295);var H=Te(w),G=W=>W;if(x===0){var X=32-8*w;G=W=>W<<X>>>X}var ee=_.includes("unsigned");Pt(I,{name:_,fromWireType:G,toWireType:ee?function(W,he){return this.name,he>>>0}:function(W,he){return this.name,he},argPackAdvance:8,readValueFromPointer:nl(_,H,x!==0),destructorFunction:null})},a:function(I,_,w){var x=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][_];function B(H){var G=ce,X=G[H>>=2],ee=G[H+1];return new x(G.buffer,ee,X)}Pt(I,{name:w=kt(w),fromWireType:B,argPackAdvance:8,readValueFromPointer:B},{ignoreDuplicateRegistrations:!0})},j:function(I,_){var w=(_=kt(_))==="std::string";Pt(I,{name:_,fromWireType:function(x){var B,H=ce[x>>2],G=x+4;if(w)for(var X=G,ee=0;ee<=H;++ee){var W=G+ee;if(ee==H||D[W]==0){var he=al(X,W-X);B===void 0?B=he:(B+="\0",B+=he),X=W+1}}else{var De=new Array(H);for(ee=0;ee<H;++ee)De[ee]=String.fromCharCode(D[G+ee]);B=De.join("")}return yr(x),B},toWireType:function(x,B){var H;B instanceof ArrayBuffer&&(B=new Uint8Array(B));var G=typeof B=="string";G||B instanceof Uint8Array||B instanceof Uint8ClampedArray||B instanceof Int8Array||le("Cannot pass non-string to std::string"),H=w&&G?(De=>{for(var ve=0,ge=0;ge<De.length;++ge){var Me=De.charCodeAt(ge);Me<=127?ve++:Me<=2047?ve+=2:Me>=55296&&Me<=57343?(ve+=4,++ge):ve+=3}return ve})(B):B.length;var X=Xi(4+H+1),ee=X+4;if(ce[X>>2]=H,w&&G)((De,ve,ge,Me)=>{if(!(Me>0))return 0;for(var it=ge,qe=ge+Me-1,pt=0;pt<De.length;++pt){var ze=De.charCodeAt(pt);if(ze>=55296&&ze<=57343&&(ze=65536+((1023&ze)<<10)|1023&De.charCodeAt(++pt)),ze<=127){if(ge>=qe)break;ve[ge++]=ze}else if(ze<=2047){if(ge+1>=qe)break;ve[ge++]=192|ze>>6,ve[ge++]=128|63&ze}else if(ze<=65535){if(ge+2>=qe)break;ve[ge++]=224|ze>>12,ve[ge++]=128|ze>>6&63,ve[ge++]=128|63&ze}else{if(ge+3>=qe)break;ve[ge++]=240|ze>>18,ve[ge++]=128|ze>>12&63,ve[ge++]=128|ze>>6&63,ve[ge++]=128|63&ze}}ve[ge]=0})(B,D,ee,H+1);else if(G)for(var W=0;W<H;++W){var he=B.charCodeAt(W);he>255&&(yr(ee),le("String has UTF-16 code units that do not fit in 8 bits")),D[ee+W]=he}else for(W=0;W<H;++W)D[ee+W]=B[W];return x!==null&&x.push(yr,X),X},argPackAdvance:8,readValueFromPointer:Do,destructorFunction:function(x){yr(x)}})},g:function(I,_,w){var x,B,H,G,X;w=kt(w),_===2?(x=cl,B=Ir,G=As,H=()=>K,X=1):_===4&&(x=_c,B=dl,G=zi,H=()=>ce,X=2),Pt(I,{name:w,fromWireType:function(ee){for(var W,he=ce[ee>>2],De=H(),ve=ee+4,ge=0;ge<=he;++ge){var Me=ee+4+ge*_;if(ge==he||De[Me>>X]==0){var it=x(ve,Me-ve);W===void 0?W=it:(W+="\0",W+=it),ve=Me+_}}return yr(ee),W},toWireType:function(ee,W){typeof W!="string"&&le(`Cannot pass non-string to C++ string type ${w}`);var he=G(W),De=Xi(4+he+_);return ce[De>>2]=he>>X,B(W,De+4,he+_),ee!==null&&ee.push(yr,De),De},argPackAdvance:8,readValueFromPointer:Do,destructorFunction:function(ee){yr(ee)}})},n:function(I,_){Pt(I,{isVoid:!0,name:_=kt(_),argPackAdvance:0,fromWireType:function(){},toWireType:function(w,x){}})},e:function(I,_,w,x){var B,H;(I=bs[I])(_=ys.toValue(_),w=(H=Sc[B=w])===void 0?kt(B):H,null,x)},l:Is,h:function(I,_){var w=function(it,qe){for(var pt,ze,Dt,Qi=new Array(it),vt=0;vt<it;++vt)Qi[vt]=(pt=ce[qe+4*vt>>2],ze="parameter "+vt,Dt=void 0,(Dt=Fr[pt])===void 0&&le(ze+" has unknown type "+mc(pt)),Dt);return Qi}(I,_),x=w[0],B=x.name+"_$"+w.slice(1).map(function(it){return it.name}).join("_")+"$",H=Rs[B];if(H!==void 0)return H;for(var G=["retType"],X=[x],ee="",W=0;W<I-1;++W)ee+=(W!==0?", ":"")+"arg"+W,G.push("argType"+W),X.push(w[1+W]);var he="return function "+$r("methodCaller_"+B)+`(handle, name, destructors, args) {
87
+ `,De=0;for(W=0;W<I-1;++W)he+=" var arg"+W+" = argType"+W+".readValueFromPointer(args"+(De?"+"+De:"")+`);
88
+ `,De+=w[W+1].argPackAdvance;for(he+=" var rv = handle[name]("+ee+`);
89
+ `,W=0;W<I-1;++W)w[W+1].deleteObject&&(he+=" argType"+W+".deleteObject(arg"+W+`);
90
+ `);x.isVoid||(he+=` return retType.toWireType(destructors, rv);
91
+ `),he+=`};
92
+ `,G.push(he);var ve,ge,Me=hc(Function,G).apply(null,X);return ve=Me,ge=bs.length,bs.push(ve),H=ge,Rs[B]=H,H},f:()=>{cr("")},c:On,t:(I,_,w)=>D.copyWithin(I,_,_+w),s:I=>{D.length,cr("OOM")},i:(I,_,w,x)=>{for(var B,H,G,X=0,ee=0;ee<w;ee++){var W=ce[_>>2],he=ce[_+4>>2];_+=8;for(var De=0;De<he;De++)B=I,H=D[W+De],G=void 0,G=yc[B],H===0||H===10?((B===1?g:T)(Po(G,0)),G.length=0):G.push(H);X+=he}return ce[x>>2]=X,0}},yr=(function(){var I,_,w,x,B={a:Ac};function H(G,X){var ee,W,he=G.exports;return A=(C=he).v,ee=A.buffer,o.HEAP8=N=new Int8Array(ee),o.HEAP16=P=new Int16Array(ee),o.HEAP32=pe=new Int32Array(ee),o.HEAPU8=D=new Uint8Array(ee),o.HEAPU16=K=new Uint16Array(ee),o.HEAPU32=ce=new Uint32Array(ee),o.HEAPF32=Qe=new Float32Array(ee),o.HEAPF64=Q=new Float64Array(ee),Ue=C.z,W=C.w,vn.unshift(W),function(){if(Ur--,o.monitorRunDependencies&&o.monitorRunDependencies(Ur),Ur==0&&(Ts!==null&&(clearInterval(Ts),Ts=null),Vi)){var De=Vi;Vi=null,De()}}(),he}if(Ur++,o.monitorRunDependencies&&o.monitorRunDependencies(Ur),o.instantiateWasm)try{return o.instantiateWasm(B,H)}catch(G){T("Module.instantiateWasm callback failed with error: "+G),r(G)}(I=h,_=ai,w=B,x=function(G){H(G.instance)},I||typeof WebAssembly.instantiateStreaming!="function"||re(_)||typeof fetch!="function"?Vr(_,w,x):fetch(_,{credentials:"same-origin"}).then(G=>WebAssembly.instantiateStreaming(G,w).then(x,function(X){return T("wasm streaming compile failed: "+X),T("falling back to ArrayBuffer instantiation"),Vr(_,w,x)}))).catch(r)}(),I=>(yr=C.x)(I)),Xi=I=>(Xi=C.y)(I),vs=I=>(vs=C.A)(I),bc=(o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=C.B)(),I=>(bc=C.C)(I));o.dynCall_jiji=(I,_,w,x,B)=>(o.dynCall_jiji=C.D)(I,_,w,x,B);function Rc(){function I(){Ut||(Ut=!0,o.calledRun=!0,Ro||(di(vn),e(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)_=o.postRun.shift(),Cn.unshift(_);var _;di(Cn)}()))}Ur>0||(function(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)_=o.preRun.shift(),Rn.unshift(_);var _;di(Rn)}(),Ur>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),I()},1)):I()))}if(Vi=function I(){Ut||Rc(),Ut||(Vi=I)},o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Rc(),t.ready}})();var sy="web.sdk.qcloud.com",ny=`https://${sy}/trtc/webrtc/v5/doc`,Ix=`${ny}/zh-cn/`,Jg=(i=>(i[i.TRACE=0]="TRACE",i[i.DEBUG=1]="DEBUG",i[i.INFO=2]="INFO",i[i.WARN=3]="WARN",i[i.ERROR=4]="ERROR",i[i.NONE=5]="NONE",i))(Jg||{});var Xg={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},yx=Xg["480p_2"],Ax=Xg["120p_2"],Tu={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture"},bx=Tu.MAIN,Rx=Tu.AUXILIARY,vx=Tu.BIG,Cx=Tu.SMALL;var Nx=Object.keys(Jg);var ay=function(i,t,e,r){return new(e||(e=Promise))(function(o,s){function n(m){try{u(r.next(m))}catch(h){s(h)}}function a(m){try{u(r.throw(m))}catch(h){s(h)}}function u(m){var h;m.done?o(m.value):(h=m.value,h instanceof e?h:new e(function(g){g(h)})).then(n,a)}u((r=r.apply(i,t||[])).next())})},Hp=Symbol(32),Wp=Symbol(16),Gp=Symbol(8),$p=class{constructor(i){this.g=i,this.consumed=0,i&&(this.need=i.next().value)}setG(i){this.g=i,this.demand(i.next().value,!0)}consume(){this.buffer&&this.consumed&&(this.buffer.copyWithin(0,this.consumed),this.buffer=this.buffer.subarray(0,this.buffer.length-this.consumed),this.consumed=0)}demand(i,t){return t&&this.consume(),this.need=i,this.flush()}read(i){return ay(this,void 0,void 0,function*(){return this.lastReadPromise&&(yield this.lastReadPromise),this.lastReadPromise=new Promise((t,e)=>{var r;this.reject=e,this.resolve=o=>{delete this.lastReadPromise,delete this.resolve,delete this.need,t(o)},this.demand(i,!0)||(r=this.pull)===null||r===void 0||r.call(this,i)})})}readU32(){return this.read(Hp)}readU16(){return this.read(Wp)}readU8(){return this.read(Gp)}close(){var i;this.g&&this.g.return(),this.buffer&&this.buffer.subarray(0,0),(i=this.reject)===null||i===void 0||i.call(this,new Error("EOF")),delete this.lastReadPromise}flush(){if(!this.buffer||!this.need)return;let i=null,t=this.buffer.subarray(this.consumed),e=0,r=o=>t.length<(e=o);if(typeof this.need=="number"){if(r(this.need))return;i=t.subarray(0,e)}else if(this.need===Hp){if(r(4))return;i=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===Wp){if(r(2))return;i=t[0]<<8|t[1]}else if(this.need===Gp){if(r(1))return;i=t[0]}else if("buffer"in this.need){if("byteOffset"in this.need){if(r(this.need.byteLength-this.need.byteOffset))return;new Uint8Array(this.need.buffer,this.need.byteOffset).set(t.subarray(0,e)),i=this.need}else if(this.g)return void this.g.throw(new Error("Unsupported type"))}else{if(r(this.need.byteLength))return;new Uint8Array(this.need).set(t.subarray(0,e)),i=this.need}return this.consumed+=e,this.g?this.demand(this.g.next(i).value,!0):this.resolve&&this.resolve(i),i}write(i){if(i instanceof Uint8Array?this.malloc(i.length).set(i):"buffer"in i?this.malloc(i.byteLength).set(new Uint8Array(i.buffer,i.byteOffset,i.byteLength)):this.malloc(i.byteLength).set(new Uint8Array(i)),!this.g&&!this.resolve)return new Promise(t=>this.pull=t);this.flush()}writeU32(i){this.malloc(4).set([i>>24&255,i>>16&255,i>>8&255,255&i]),this.flush()}writeU16(i){this.malloc(2).set([i>>8&255,255&i]),this.flush()}writeU8(i){this.malloc(1)[0]=i,this.flush()}malloc(i){if(this.buffer){let t=this.buffer.length,e=t+i;if(e<=this.buffer.buffer.byteLength-this.buffer.byteOffset)this.buffer=new Uint8Array(this.buffer.buffer,this.buffer.byteOffset,e);else{let r=new Uint8Array(e);r.set(this.buffer),this.buffer=r}return this.buffer.subarray(t,e)}return this.buffer=new Uint8Array(i),this.buffer}};$p.U32=Hp,$p.U16=Wp,$p.U8=Gp;var cy=127,wx=~cy,Dx=Math.pow(2,31),Mx=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{};function Gg(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}var{toString:Ox}=Object.prototype,Qg=class Yg{constructor(t){this.core=t,Lr(this,"contextMap",new Map),Lr(this,"decodeProcessorMap",new WeakMap),this.addKVReportBeforeExitRoom=this.addKVReportBeforeExitRoom.bind(this),this.createDecoder=this.createDecoder.bind(this),this.core.innerEmitter.on("51",this.addKVReportBeforeExitRoom)}getAlias(){return"videoDecoder"}getGroup(t){return t!=null&&t.track?`${t.track.userId}${t.track.streamType}`:"*"}getName(){return Yg.Name}getValidateRule(t){return{type:this.core.enums.BASIC_TYPE.Object}}createDecoder(t,e){switch(t){case"wasm":return new oy(fu(hu({},e),{wasmPath:`${this.core.assetsPath||"."}/videodec.wasm`}));case"webCodecs":return new Tn;case"mse":throw new Error("mse decoder not supported yet");default:throw new Error("Unsupported decoder type")}}start(t){this.decodeProcessorMap.set(t.track,this.decode(t)),this.core.room.videoManager.addDecodeProcessor({processor:({frame:e,track:r})=>{var o;return((o=this.decodeProcessorMap.get(r))==null?void 0:o({frame:e,track:r}))||e},type:3})}decode(t){let{pipe:e,take:r,subscribe:o}=this.core.rx;return({frame:s,track:n})=>{if(n!==t.track||s.type==="empty")return s;if(this.contextMap.has(n))return this.contextMap.get(n).decode(s);let a=this.core.room.videoManager.createDecodeContext(fu(hu({},t),{createDecoder:this.createDecoder}));return e(a.trackDoneOB,r(1),o(()=>{this.core.clearStarted(this,this.getGroup(t)),this.stop({track:n})})),this.contextMap.set(n,a),a.decode(s)}}stop(t){if(t!=null&&t.track){let e=this.contextMap.get(t.track);e&&(e.close("stop"),this.report(e,t.track),this.contextMap.delete(t.track))}else this.contextMap.forEach((e,r)=>{e.close("stop"),this.contextMap.delete(r)});this.contextMap.size===0&&this.core.room.videoManager.removeDecodeProcessor({type:3})}report(t,e){if(t.isReported)return;t.isReported=!0;let r=Gg()-t.startPerformanceTime,{renderFreezeTotal:o,dataFreezeTotal:s}=this.getRemoteTrackFreezeDuration(e,t),n=`report health data: ${t.track.userId} ${t.track.streamType} ${t.type}+${t.renderer} goodType\uFF1A${t.goodType} ${t.failedReason?`failedReason: ${t.failedReason}`:""}`;r&&(this.core.kvStatManager.addNumber({key:514850,value:Math.floor(o/r*100),split:1,max:100}),n+=` RENDER_FREEZE_RATE: ${Math.floor(o/r*100)}%`),r&&(this.core.kvStatManager.addNumber({key:514851,value:Math.floor(s/r*100),split:1,max:100}),n+=` DATA_FREEZE_RATE: ${Math.floor(s/r*100)}%`),t.inputFrameCount&&(this.core.kvStatManager.addNumber({key:514852,value:Math.floor(t.decodedFrameCount/t.inputFrameCount*100),split:1,max:100}),n+=` VIDEO_CONSUME_RENDER_RATE: ${Math.floor(t.decodedFrameCount/t.inputFrameCount*100)}%`),this.core.log.info(n)}addKVReportBeforeExitRoom({room:t}){t===this.core.room&&this.contextMap.forEach((e,r)=>{this.report(e,r)})}update(t){let e=this.contextMap.get(t.track);e&&(t.type!=="mock"?(e.close("update"),this.contextMap.set(t.track,this.core.room.videoManager.createDecodeContext(fu(hu({},t),{createDecoder:this.createDecoder})))):e.mock(this.core.enums.DECODE_FAILED_ERROR_CODE.TEST))}getRemoteTrackFreezeDuration(t,e){let r=this.core.room.badCaseDetector.getRenderFreezeMap().get(`${t.userId}_${t.streamType}`),o=this.core.room.badCaseDetector.getDataFreezeMap().get(`${t.userId}_${t.streamType}`),s=0;r&&r.freezeTimeline.forEach(({startTime:a,endTime:u})=>{a>e.startPerformanceTime&&(s+=u===0?Gg()-a:u-a)});let n=0;return o&&o.durationItemList.forEach(a=>{a.startTime>e.startPerformanceTime&&(n+=a.getDuration())}),{renderFreezeTotal:s,dataFreezeTotal:n}}destroy(){this.core.innerEmitter.off("51",this.addKVReportBeforeExitRoom)}};Lr(Qg,"Name","TRTCVideoDecoder");var jp=Qg;var vE=Ki(so());function qp({timesInSecond:i,maxSizeInSecond:t,getSize:e}){return xe((r,o)=>{let s=new WeakMap;return V.on(F.ROOM_DESTROY,({room:n})=>s.delete(n)),function(...n){let a=s.get(this);if(a||(a={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},s.set(this,a)),a.timestamp===0?a.timestamp=Date.now():Date.now()-a.timestamp>1e3&&(a.timestamp=Date.now(),a.callCountInSecond=0,a.totalSizeInSecond=0),e&&(a.totalSizeInSecond+=e(...n)),a.timestamp!==0&&Date.now()-a.timestamp<1e3&&(a.callCountInSecond>=i||a.totalSizeInSecond>t))throw new de({code:q.INVALID_OPERATION,message:Be({key:$e.CALL_FREQUENCY_LIMIT,data:{isTimes:a.callCountInSecond>=i,isSize:a.totalSizeInSecond>t,name:o,timesInSecond:i,maxSizeInSecond:t}})});a.callCountInSecond++,r.call(this,...n)}})}var dy="2025-08-01 11:47:13",Zg=!0,Kg=function(){var i;if(Zg){Zg=!1,$.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${Hr}/en/index.html`),console.info(`* Changelog: ${Hr}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),$.info("TRTC Web SDK Version:",at),Or||$.debug("Build Time:",dy);let t=`UA: ${navigator.userAgent}
93
+ CPU core: ${navigator.hardwareConcurrency}, GPU: ${em()}`,e=navigator.deviceMemory;e&&(t+=`, minRAM: ${e}GB`),$.info(t),$.info(`URL: ${location.href}${((i=self.frameElement)==null?void 0:i.tagName)==="IFRAME"?" in iframe":""}`),zo().then(r=>{r&&$.info(Nr)})}};var Er={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"};var se={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},Tr=(k=>(k[k.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",k[k.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",k[k.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",k[k.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",k[k.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",k[k.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",k[k.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",k[k.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",k[k.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",k[k.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",k[k.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",k[k.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",k[k.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",k[k.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",k[k.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",k[k.INVALID_ROOM_ID_REQUIRED=5015]="INVALID_ROOM_ID_REQUIRED",k[k.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",k[k.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",k[k.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",k[k.INVALID_ROOM_ID_TYPE_MISMATCH=5019]="INVALID_ROOM_ID_TYPE_MISMATCH",k[k.INVALID_ROOM_ID_DUPLICATE=5020]="INVALID_ROOM_ID_DUPLICATE",k[k.INVALID_OPERATION=5100]="INVALID_OPERATION",k[k.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",k[k.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",k[k.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",k[k.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",k[k.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",k[k.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",k[k.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",k[k.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",k[k.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",k[k.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",k[k.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",k[k.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",k[k.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",k[k.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",k[k.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",k[k.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",k[k.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",k[k.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",k[k.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",k[k.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",k[k.DEVICE_ERROR=5300]="DEVICE_ERROR",k[k.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",k[k.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",k[k.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",k[k.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",k[k.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",k[k.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",k[k.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",k[k.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",k[k.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",k[k.SERVER_ERROR=5400]="SERVER_ERROR",k[k.NEED_TO_BUY=5401]="NEED_TO_BUY",k[k.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",k[k.OPERATION_FAILED=5500]="OPERATION_FAILED",k[k.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",k[k.REJOIN_FAILED=5502]="REJOIN_FAILED",k[k.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",k[k.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",k[k.VIDEO_ENCODE_FAILED=5505]="VIDEO_ENCODE_FAILED",k[k.AUDIO_ENCODE_FAILED=5506]="AUDIO_ENCODE_FAILED",k[k.VIDEO_DECODE_FAILED=5507]="VIDEO_DECODE_FAILED",k[k.AUDIO_DECODE_FAILED=5508]="AUDIO_DECODE_FAILED",k[k.OPERATION_ABORT=5998]="OPERATION_ABORT",k[k.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",k))(Tr||{});function tE({code:i,params:t,enableDocLink:e=!1}){let r="",o,s=Tr[i];try{o=eE[s]}catch(n){o=eE.UNKNOWN_ERROR}return We(o)?r=o(t):Ne(o)&&(r=o),t.fnName&&!r.includes(t.fnName)&&(r[r.length-1]!=="."&&(r+="."),r+=` thrown from ${t.fnName}()`),e&&(r+=" doc:"),r}var eE=Ee(J({},Yt),{INVALID_PARAMETER({fnName:i}){return`the parameters of the '${i}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' is a required param when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_TYPE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s="";return Array.isArray(t.type)?s=t.type.join("|"):s=t.type,`'${o}' must be type of ${s} when calling ${e}(), received type: ${ct(r)}.`},INVALID_PARAMETER_EMPTY({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be '${r}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s=`${t.instanceOf.name||t.instanceOf}`;return`'${o}' must be instanceof ${s} when calling ${e}(), received type: ${ct(r)}.`},INVALID_PARAMETER_RANGE({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' must be one of ${t.values.join("|")} when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:i,rule:t,fnName:e}){return`'${i||t.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:i,rule:t,value:e}){return`the min value of ${i||t.name} is ${t.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:i,rule:t,value:e}){return`the max value of ${i||t.name} is ${t.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:i,fnName:t}){return`'${i}' is not found in the document object when calling ${t}().`},INVALID_ELEMENT_ID_TYPE({key:i,fnName:t,type:e}){return`the element corresponding to '${i}' must be instanceof HTMLElement when calling ${t}(), received: ${e}.`},INVALID_STREAM_ID({key:i}){return`'${i}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:i}){return`'${i}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:i}){return`'${i}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:i}){return`'${i}' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.`},INVALID_ROOM_ID_REQUIRED(){return"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required."},INVALID_ROOM_ID_TYPE_MISMATCH({key:i}){return`The type of target roomId must match the current roomId. Current room is using '${i}', but received '${i==="strRoomId"?"roomId":"strRoomId"}'.`},INVALID_ROOM_ID_DUPLICATE({key:i}){return`the target '${i}' must not be the same as the current '${i}'.`},INVALID_STREAM_TYPE:({fnName:i})=>`'streamType' is required when 'userId' is not '*', calling ${i}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:i}){return`the API '${i}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:i}){return`cannot ${i} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:i,value:t}){return`cannot ${i} because remote user(userId: ${t.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:i,value:t}){return`cannot ${i} because remote user(userId: ${t.userId}) does not publishing ${t.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:i}){return`you are already ${i}(), cannot repeated call '${i}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:i}){return`cannot call '${i}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:i}){return`cannot call '${i}' because the microphone or screen share is not turned on.`},INVALID_BUFFER_EMPTY:({key:i})=>`the buffer size of paramerter '${i}' cannot be empty`,INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>"role: 'audience' cannot call this api.",INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:({fnName:i})=>`you need to call ${i}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:i}){return`the current browser does not support the capability of the function '${i}' you are calling, please check the API documentation.`},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION({fnName:i}){return`cannot call ${i} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:i,error:t}){return`'${i}' got device exception${t?`, error: ${t.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`NotFoundError, no ${t} detected, please check your device and the configuration on '${i}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`NotAllowedError, you have disabled ${t} access, please allow the current application to use the ${t}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`NotReadableError, the ${t} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct${e?`, error: ${e.toString()}.`:"."}`},DEVICE_INVALID_STATE_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${t}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${t}, and it is recommended to turn on the ${t} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:i,deviceType:t=ps(i),error:e}){return`AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal${e?` error: ${e.toString()}.`:"."}`},CAMERA_RECOVER_FAILED({error:i}){return`camera recover capture failed ${(i==null?void 0:i.name)||""}: ${(i==null?void 0:i.originMessage)||(i==null?void 0:i.message)}`},MICROPHONE_RECOVER_FAILED({error:i}){return`microphone recover capture failed ${(i==null?void 0:i.name)||""}: ${(i==null?void 0:i.originMessage)||(i==null?void 0:i.message)}`},OPERATION_FAILED({fnName:i,error:t}){return`'${i}' failed, reason: ${t==null?void 0:t.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:i}){return`an error was caught on trtc.on('${i}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:i,error:t}){return`video context error ${i} ${(t==null?void 0:t.name)||""} ${(t==null?void 0:t.message)||""}`},SERVER_ERROR({fnName:i,error:t}){return`'${i}' got server error: ${t==null?void 0:t.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:i,url:t}){return`You need to buy packages for ${i}. Refer to: ${t}`},ACCOUNT_NO_MONEY:({fnParams:i})=>`your TRTC account run out of credit, please recharge.${i.sdkAppId?` SDKAppId: ${i.sdkAppId}`:""}`,OPERATION_ABORT({fnName:i}){return`'${i}' abort`},UNKNOWN_ERROR({fnName:i,error:t}){return`'${i}' throw unknown exception${t?`, error: ${t.toString()}.`:"."}`}});function ps(i){if(!i)return"camera";let t=i.toLowerCase();return t.includes("screen")?"screen share":t.includes("audio")?"microphone":"camera"}var zp=class i extends Error{constructor({code:e,extraCode:r,message:o="",messageParams:s,fnName:n="",originError:a,data:u}){var h;let m;o?m=o:m=tE({code:e===se.SERVER_ERROR?e:r||e,params:J({fnName:n,error:a},s)});super(m);l(this,"name","RtcError");l(this,"code");l(this,"extraCode");l(this,"functionName");l(this,"message");l(this,"data");l(this,"handler");l(this,"originError");this.name=Tr[e],this.code=e,this.extraCode=r,this.functionName=n,this.originError=a,this.message=m,this.data=u,this.extraCode===5302&&((h=this.originError)!=null&&h.message.includes("system"))&&(this.handler=()=>{let g={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},T={startLocalVideo:"webcam",startLocalAudio:"microphone"},A=document.createElement("a");qo?A.href=`ms-settings:privacy-${T[this.functionName]}`:Dr&&(A.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${g[this.functionName]}`),A.href.length>0&&A.click()})}static convertFrom(e,r,o){let s=e;if(e instanceof de){let{stack:n}=e,a={code:se.UNKNOWN_ERROR,fnName:r,originError:e};switch(e.getCode()){case q.INVALID_PARAMETER:a.code=se.INVALID_PARAMETER,a.message=e.message;break;case q.INVALID_OPERATION:a.code=se.INVALID_OPERATION;break;case q.NOT_SUPPORTED:case q.NOT_SUPPORTED_H264:a.code=se.ENV_NOT_SUPPORTED,e.getCode()===q.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes(Yt.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case q.JOIN_ROOM_FAILED:a.messageParams={fnParams:o};case q.SERVER_TIMEOUT:case q.SWITCH_ROLE_FAILED:case q.SWITCH_ROOM_FAILED:a.code=se.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case q.API_CALL_ABORTED:a.code=se.OPERATION_ABORT;break;case q.DEVICE_NOT_FOUND:case q.DEVICE_AUTO_RECOVER_FAILED:case q.INITIALIZE_FAILED:a.code=5300,e.name&&(a.extraCode=uy(e.name));break;case q.VIDEO_ENCODE_FAILED:a.extraCode=5505;case q.AUDIO_ENCODE_FAILED:a.extraCode=5506,a.code=se.OPERATION_FAILED;break;case q.UNKNOWN:break;default:a.code=se.OPERATION_FAILED}s=new i(a),n&&(s.stack+=n.substr(n.indexOf(`
94
+ `)))}else{if(e instanceof i)return e;s=new i({code:se.UNKNOWN_ERROR,fnName:r,originError:e})}return s}};function uy(i){let t;switch(i){case"NotFoundError":t=5301;break;case"NotAllowedError":t=5302;break;case"NotReadableError":t=5303;break;case"OverconstrainedError":t=5304;break;case"InvalidStateError":t=5305;break;case"SecurityError":t=5306;break;case"AbortError":t=5307;break;default:t=5300}return t}var ie=zp;function Eo(i){return i==="sub"?"auxiliary":i==="auxiliary"?"sub":"main"}function Ja(i){return i===Er.QOS_PREFERENCE_CLEAR?"detail":i===Er.QOS_PREFERENCE_SMOOTH?"motion":""}function _n(i,t){let e=t?Tl:Bn;return Vl(i)?J(J({},e),i):Rr[i]?Rr[i]:e}var rE={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{type:["string","object","boolean"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},iE={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},Sn={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(i,t,e){if(Ne(i)&&!document.getElementById(i))throw new ie({code:se.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:t}})}},oE={name:"userId",required:!0,type:"string"},sE={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[Er.AUDIO_PROFILE_STANDARD,Er.AUDIO_PROFILE_STANDARD_STEREO,Er.AUDIO_PROFILE_HIGH,Er.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function In(i,t){if(!i)throw new ie({code:se.INVALID_OPERATION,extraCode:5101,fnName:t})}function nE(i,t,e){if(!i)throw new ie({code:se.INVALID_OPERATION,extraCode:5102,fnName:t,messageParams:{value:e}})}function aE(i,t,e){if(!(/^[1-9]\d*$/.test(String(i))&&i<4294967295))throw new ie({code:se.INVALID_PARAMETER,extraCode:5013,fnName:t,messageParams:{key:e}})}function cE(i,t,e){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(i))throw new ie({code:se.INVALID_PARAMETER,extraCode:5012,fnName:t,messageParams:{key:e}})}var eP={type:"number",notLessThanZero:!0},ly=(i,t)=>i.width*i.height>=t.width*t.height&&i.frameRate>=t.frameRate&&i.bitrate>=t.bitrate;function dE(i){var r;if(!((r=i==null?void 0:i.option)!=null&&r.small))return;if(!Cd()){$.warn("small stream is not supported"),delete i.option.small;return}let t=_n(i.option.profile),e=_n(i.option.small,!0);if(!ly(t,e)){$.warn(`small stream profile must be less than big stream profile. Big: ${JSON.stringify(t)}, Small: ${JSON.stringify(e)}`),delete i.option.small;return}}var my={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(i,t,e){if(this._room.isJoined)throw new ie({code:se.INVALID_OPERATION,extraCode:5104,fnName:e});if(i.roomId){if(Ne(i.roomId))throw new ie({code:se.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:t}});aE(i.roomId,e,t)}else if(i.strRoomId)cE(i.strRoomId,e,t);else throw new ie({code:se.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"},playoutDelay:{type:"object",properties:{min:{type:"number",min:0,max:1e3},max:{type:"number",min:0,max:1e4}}}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:Sn,mute:{type:["boolean","string"]},publish:{type:"boolean"},capture:{required:!1,type:"boolean"},option:rE},validate(i){var t,e;if(!((t=i==null?void 0:i.option)!=null&&t.videoTrack)&&vi())throw new ie({code:se.ENV_NOT_SUPPORTED,extraCode:5201});(e=i==null?void 0:i.option)!=null&&e.small&&dE(i)}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:Ee(J({},Sn),{required:!1}),publish:{type:"boolean"},capture:{required:!1,type:"boolean"},mute:{type:["boolean","string"]},option:rE},validate(i){var t;(t=i==null?void 0:i.option)!=null&&t.small&&dE(i)}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:sE},validate(i){var t;if(!((t=i==null?void 0:i.option)!=null&&t.audioTrack)&&vi())throw new ie({code:se.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:sE}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:Sn,publish:{type:"boolean"},option:iE},validate(i,t,e,r,o){var s;if(!((s=i==null?void 0:i.option)!=null&&s.videoTrack)){if(vi())throw new ie({code:se.ENV_NOT_SUPPORTED,extraCode:5201});if(!Ia())throw new ie({code:se.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:Sn,publish:{type:"boolean"},option:iE}},muteRemoteAudio:[oE,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[oE,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:Sn,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(i,t,e){In(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(nE(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new ie({code:se.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:Ee(J({},Sn),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(i,t,e){In(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(nE(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new ie({code:se.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(i,t,e){if(i.userId!=="*"&&M(i.streamType))throw new ie({code:se.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(i,t,e){In(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(i,t,e,r){if(!ba)throw new ie({code:se.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new ie({code:se.INVALID_OPERATION,fnName:e,extraCode:5108});if(i.byteLength>1e3)throw new ie({code:se.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new ie({code:se.INVALID_PARAMETER,extraCode:5017,messageParams:{key:t},fnName:e});In(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(i,t,e){if(!i&&!this._room.isMainStreamPublished||i&&!this._room.isAuxStreamPublished)throw new ie({code:se.INVALID_OPERATION,extraCode:5109,messageParams:{key:t},fnName:e})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(i,t,e,r){if(i.byteLength>1e3)throw new ie({code:se.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new ie({code:se.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:t}})}}},validate(i,t,e){if(In(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new ie({code:se.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:t}})}},switchRoom:{name:"switchRoomConfig",type:"object",required:!0,validate(i,t,e){if(In(this._room.isJoined,e),this._room.useStringRoomId&&i.strRoomId===this._room.roomId||!this._room.useStringRoomId&&i.roomId===Number(this._room.roomId))throw new ie({code:se.INVALID_PARAMETER,extraCode:5020,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(i.roomId&&this._room.useStringRoomId||!i.roomId&&i.strRoomId&&!this._room.useStringRoomId)throw new ie({code:se.INVALID_PARAMETER,extraCode:5019,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(i.roomId)aE(i.roomId,e,t);else if(i.strRoomId)cE(i.strRoomId,e,t);else throw new ie({code:se.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{roomId:{type:"number"},strRoomId:{type:"string"},privateMapKey:{type:"string"},userSig:{type:"string",required:!0},autoSubscribeCount:{type:"number",min:0,max:50}}}},Rt={TRTC:my};var Gt=class extends Error{};function py(i,t){let e=Bo(i);for(let r=0;r<t.length;r++)Cr(e[r],t[r]);return e}function hy(i){this._resolve=Promise.resolve(i)}function fy(i){this._reject=Promise.reject(i)}var To=class To{constructor(t,e){this.instance=t;this.group=e;l(this,"started",!1);l(this,"ops",[]);l(this,"startSame",()=>!0);l(this,"mergeUpdate",py);let r=To.instances.get(t);r?r.set(e,this):To.instances.set(t,new Map([[e,this]]))}static get(t,e){if(!e)return;let r=To.instances.get(t);return r&&r.get(e)||new To(t,e)}static gets(t,e){let r=To.instances.get(t),o=[];return r&&r.forEach((s,n)=>{e.test(n)&&o.push(s)}),o}action(t,e,r){let o=a=>{var u;return t===0?this.started=!0:t===3&&(this.started=!1),this.ops.shift(),(u=this.currentOp)==null||u.action(),a},s=a=>{var u,m;throw this.ops.shift(),t===0&&((u=this.currentOp)==null?void 0:u.type)===2&&this.ops.shift().reject(new Gt("start failed")),(m=this.currentOp)==null||m.action(),a},n={type:t,action:()=>e(...n.args).then(o,s),args:r,resolve:hy,reject:fy};try{switch(this.state){case 1:if(t===0)throw new Gt("already started");break;case 4:if(t===2)throw new Gt("not started");break;default:return this.cacheOp(n)}}catch(a){return Promise.reject(a)}return this.ops.push(n),n.promise=e(...n.args).then(o,s)}cacheOp(t){if(this.ops.length===1)switch(this.state){case 0:case 2:if(t.type===0)throw new Gt("already start");break;case 3:switch(t.type){case 2:throw new Gt("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new Gt("unknown state")}else switch(t.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let r=new Gt("keep stop");if(this.ops.slice(1).forEach(o=>o.reject(r)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,t.args),this.lastOp.promise;case 3:throw new Gt("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new Gt("start not allowed after update");case 0:throw new Gt("duplicate start");case 3:if(this.startSame(this.currentOp.args,t.args))throw this.ops.pop().reject(new Gt("keep start")),new Gt("already start")}}t.promise=new Promise((r,o)=>{t._resolve?t._resolve.then(r):t.resolve=r,t._reject?t._reject.catch(o):t.reject=o});let{action:e}=t;return t.action=()=>e().then(t.resolve,t.reject),this.ops.push(t),t.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}};l(To,"instances",new WeakMap);var ki=To;var _u=new WeakMap,Su=(i,t)=>{if(t instanceof Gt){let{stack:e}=t;t=new ie({code:se.OPERATION_ABORT,message:`${i} abort: ${t.message}`,fnName:i}),e&&(t.stack+=e.substr(e.indexOf(`
95
+ `)))}throw t};function _o(i,t){return xe((e,r)=>function(...o){let s=ki.get(this,typeof i=="string"?i:i.call(this,...o));return s?(t&&(s.startSame=t.bind(this)),s.action(0,e.bind(this),o).catch(Su.bind(null,r))):e.apply(this,o)})}function hs(i,t){let{merge:e,debounce:r}=t||{};return xe((o,s)=>function(...n){let a=ki.get(this,typeof i=="string"?i:i.call(this,...n));if(!a)return o.apply(this,n);if(e&&(a.mergeUpdate=e.bind(this)),r&&r.isNeedToDebounce.apply(this,n)){let{delay:u,getKey:m}=r;return new Promise((h,g)=>{var C,N;let T=(C=_u.get(this))==null?void 0:C.get(m(...n));if(T){let{timeoutId:D,resolve:P}=T;clearTimeout(D),P()}let A=setTimeout(()=>{if(a.state===3||a.state===4)return h();a.action(2,o.bind(this),n).catch(Su.bind(null,s)).then(h,g)},u);_u.has(this)?(N=_u.get(this))==null||N.set(m(...n),{timeoutId:A,resolve:h}):_u.set(this,new Map([[m(...n),{timeoutId:A,resolve:h}]]))})}return a.action(2,o.bind(this),n).catch(Su.bind(null,s))})}function So(i){return xe((t,e)=>function(...r){let o=typeof i=="function"?i.call(this,...r):i;if(o instanceof RegExp)return Promise.all(ki.gets(this,o).map(n=>n.action(3,()=>Promise.resolve(),r))).then(()=>t.call(this,...r));let s=ki.get(this,o);return s?s.action(3,t.bind(this),r).catch(Su.bind(null,e)):t.apply(this,r)})}var te={ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",KICKED_OUT:"kicked-out",REMOTE_USER_ENTER:"remote-user-enter",REMOTE_USER_EXIT:"remote-user-exit",REMOTE_AUDIO_AVAILABLE:"remote-audio-available",REMOTE_AUDIO_UNAVAILABLE:"remote-audio-unavailable",REMOTE_VIDEO_AVAILABLE:"remote-video-available",REMOTE_VIDEO_UNAVAILABLE:"remote-video-unavailable",AUDIO_VOLUME:"audio-volume",AUDIO_FRAME:"audio-frame",NETWORK_QUALITY:"network-quality",CONNECTION_STATE_CHANGED:"connection-state-changed",AUDIO_PLAY_STATE_CHANGED:"audio-play-state-changed",VIDEO_PLAY_STATE_CHANGED:"video-play-state-changed",SCREEN_SHARE_STOPPED:"screen-share-stopped",DEVICE_CHANGED:"device-changed",PUBLISH_STATE_CHANGED:"publish-state-changed",TRACK:"track",STATISTICS:"statistics",SEI_MESSAGE:"sei-message",CUSTOM_MESSAGE:"custom-message",VIDEO_DECODE_DOWNGRADE_STATE_CHANGED:"video-decode-downgrade-state-changed",LAYER_DATA:"layerData",FIRST_VIDEO_FRAME:"first-video-frame"},uE=new Set([te.ERROR,te.AUTOPLAY_FAILED,te.KICKED_OUT,te.REMOTE_USER_ENTER,te.REMOTE_USER_EXIT,te.REMOTE_AUDIO_AVAILABLE,te.REMOTE_AUDIO_UNAVAILABLE,te.REMOTE_VIDEO_AVAILABLE,te.REMOTE_VIDEO_UNAVAILABLE,te.CONNECTION_STATE_CHANGED,te.PUBLISH_STATE_CHANGED,te.SCREEN_SHARE_STOPPED,te.DEVICE_CHANGED,te.FIRST_VIDEO_FRAME]);var Yp={};mi(Yp,{ScheduleRequestType:()=>mE,getAbilityConfig:()=>Ey,getScheduleDomain:()=>Au,isNeedToSchedule:()=>Iu,scheduleProxy:()=>si,sendScheduleRequest:()=>Qp,setIsNeedToSchedule:()=>fs,setScheduleProxy:()=>yu});var Xp=null,Iu=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(fi).map(i=>`<link rel="dns-prefetch" href="https://${i}">`).join(`\r
96
+ `));function fs(i){Je(i)&&i!==Iu&&(Iu=i,$.info(`setIsNeedToSchedule ${i}`))}V.on("28",()=>fs(!0));V.on("63",()=>fs(!0));V.on("84",()=>fs(!0));V.on("201",i=>{i.state==="RECONNECTING"&&fs(!0)});V.on("202",i=>{i.state==="RECONNECTING"&&fs(!0)});function gy(i,t,e){let r={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let o=performance.getEntriesByType("resource"),s=Io(i,"config",O.MAIN),n=Io(i,"config",O.BACKUP);for(let a of o)if(a.startTime>=e&&(a.name===s||a.name===n)&&a.transferSize>0){let u=a.name===s?O.MAIN:O.BACKUP,m=Math.round(a.duration),h=Math.round(a.domainLookupStart-a.startTime),g=a.redirectStart>0?Math.round(a.redirectEnd-a.redirectStart):0,T=a.fetchStart>0?Math.round(a.domainLookupStart-a.fetchStart):0,A=Math.round(a.domainLookupEnd-a.domainLookupStart),C=Math.round(a.requestStart-a.secureConnectionStart),N=Math.round(a.secureConnectionStart-a.connectStart),D=Math.round(a.responseStart-a.requestStart),P=Math.round(a.responseEnd-a.responseStart),K=[A,C,N,D,P];je.uploadEvent({log:`stat-schedule-net:${m}(${h}(${g}->${T})->${K.join("->")}) ${u}`,userId:t}),r=Ee(J({},r),{totalCost:m,local:h,dns:A,tcp:N,tls:C,request:D,response:P});break}}catch(o){$.error("getScheduleDetailCost error",o)}return r}function Qp(m){return y(this,arguments,function*({userId:i,sdkAppId:t,useStringRoomId:e,roomId:r,userSig:o,version:s,frameWorkType:n,role:a,latencyLevel:u}){if(!Iu&&Xp)return{isCached:!0,result:Xp};let h={delta:0,count:[1,1],msg:[],detail:[]};try{let g=new FormData;g.append("userId",String(i)),g.append("sdkAppId",String(t)),g.append("isStrGroupId",String(e)),g.append("groupId",String(r)),g.append("sdkVersion",s),g.append("userSig",String(o));let T=yield zo();T!=null&&T.model&&g.append("model",String(T==null?void 0:T.model)),a&&g.append("role",String(a)),u&&g.append("latencyLevel",String(u)),n&&g.append("frameWorkType",String(n));let A=_e(),C=yield _y(g,h,t);C.config&&(C.config.loggerDomain&&Uo(C.config.loggerDomain),Je(C.config.scheduleCache)&&fs(!C.config.scheduleCache)),h.delta=_e()-A;let N=gy(Number(t),i,A);return Xp=C,{isCached:!1,result:C,detailCost:N}}catch(g){let T=st(g)?g[0]:g,A=Pe(T.code)?T.code:0,C=`schedule failed${T.message?`: ${T.message}`:""}`,N=new de({code:q.SCHEDULE_FAILED,extraCode:A,message:Be({key:$e.JOIN_ROOM_FAILED,data:{error:C,code:A}})});throw $.error(C,A),N}})}var si={main:"",backup:""};function yu(i){st(i)?(si.main=i[0],si.backup=i[1]):si.main=i}var mE=(r=>(r.CONFIG="config",r.TRTC_AUTO_CONF="trtcAutoConf",r.AUDIO_AI_AUTH="audioAiAuth",r))(mE||{});function Io(i,t,e=O.MAIN,r=!1){return`https://${si[e]||Au(i,e,r)}/api/v1/${t}`}function Ey(i,t,e){let r=Io(i,t),o=Io(i,t,O.BACKUP),s=new URLSearchParams(e).toString(),n=fetch(`${r}?${s}`).then(u=>u.json()),a=fetch(`${o}?${s}`).then(u=>u.json());return Xn([n,a])}function Au(i,t=O.MAIN,e=!1){let r;return gi(i)?e?r=t===O.MAIN?fi.MAIN_OVERSEA_BACKUP:fi.BACKUP_OVERSEA:r=t===O.MAIN?fi.MAIN_OVERSEA:fi.BACKUP_OVERSEA:r=t===O.MAIN?fi.MAIN:fi.BACKUP,r}function Ty(i,t,e){return new Promise((r,o)=>{_i({url:i,body:t,timeout:e.timeout,priority:"high"}).then(s=>{s.data.code===0?r(s.data.data):o({code:s.data.code,message:s.data.msg})}).catch(o)})}var lE=(i,t)=>io({retryFunction:Ty,settings:{retries:3,timeout:0},onError:t,onRetrying:i});function _y(i,t,e){return new Promise((r,o)=>{let s=null;Xn([lE(n=>t.count[0]=n+1,({error:n,retry:a,retriedCount:u,retryFuncArgs:m})=>{t.msg[0]=n.message,s||(u>=1&&(m[0]=Io(e,"config",O.MAIN,!0)),a())})(Io(e,"config",O.MAIN),i,{get timeout(){return Ho(2+t.count[0])*1e3}}),lE(n=>t.count[1]=n+1,({error:n,retry:a,retriedCount:u,retryFuncArgs:m})=>{t.msg[1]=n.message,s||(u>=2&&(m[0]=Io(e,"config",O.BACKUP,!0)),a())})(Io(e,"config",O.BACKUP),i,{get timeout(){return Ho(2+t.count[1])*1e3}})]).then(n=>{s=n,r(s)}).catch(o)})}var Sy=i=>i.startsWith("data:application/octet-stream;base64,"),Iy=i=>i.startsWith("file://"),Xa=class{constructor(){l(this,"_log");this._log=$.createLogger({id:"fd"})}download(t,e){return y(this,null,function*(){let{type:r="blob"}=e||{};t=Go(t);try{let o=_e(),s;if(We(fetch)?s=yield this.downloadWithFetch(t,r):s=yield this.downloadWithXHR(t,r),!s||!s.data)throw new Error("data is empty");let n=_e()-o;return this._log.info(`downloaded: ${t}, return type: ${r}, cost: ${n}ms`),z.addSuccessEvent({key:522700,cost:_e()-o}),s.data}catch(o){throw this._log.error(`failed to download: ${t}, error: ${o}`),z.addFailedEvent({key:522700,error:o}),o}})}downloadWithFetch(t,e){return y(this,null,function*(){this._log.info(`download with fetch: ${t}, return type: ${e}`);try{let r=yield fetch(t);if(!r.ok){let s=new Error(`network response was not ok: ${r.status}`);throw s.status=r.status,s}let o;return e==="arraybuffer"?o=yield r.arrayBuffer():o=yield r.blob(),{data:o}}catch(r){throw r}})}downloadWithXHR(t,e){return this._log.info(`download with xhr: ${t}, return type: ${e}`),new Promise((r,o)=>{let s=new XMLHttpRequest;s.open("GET",t,!0),s.responseType=e,s.onload=()=>{if(s.status===200||s.status===0&&s.response)r({data:s.response});else{let n=new Error(`XHR failed, status: ${s.status}`);n.status=s.status,o(n)}},s.onerror=o,s.send(null)})}loadWasm(t,e){return y(this,null,function*(){this._log.info(`loadWasm ${t}, importObject: ${JSON.stringify(e)}`);let r=_e(),o=null,s=null;if(We(WebAssembly.instantiateStreaming)&&!Sy(t)&&!Iy(t)&&We(fetch))try{let n=fetch(t);o=(yield WebAssembly.instantiateStreaming(n,e)).instance}catch(n){s=n}if(!o)try{let n=yield this.download(t,{type:"arraybuffer"});o=(yield WebAssembly.instantiate(n,e)).instance}catch(n){s=n}if(o){let n=_e()-r;return this._log.info(`loadedWasm ${t}, cost: ${n}ms`),z.addSuccessEvent({key:522701,cost:n}),o}throw this._log.error(`failed to loadWasm ${t}, error: ${s}`),z.addFailedEvent({key:522701,error:s}),s})}loadScript(t){this._log.info(`loadScript ${t}`);let e=_e();return new Promise((r,o)=>{let s=document.createElement("script");s.type="text/javascript",s.onload=()=>{this._log.info(`loadedScript ${t}, cost: ${_e()-e}ms`),z.addSuccessEvent({key:522702,cost:_e()-e,split:1e3}),r(s)},s.onerror=n=>{this._log.error(`failed to loadScript ${t}, error: ${(n==null?void 0:n.message)||JSON.stringify(n)}`),z.addFailedEvent({key:522702}),o(n)},s.crossOrigin="anonymous",s.src=t,document.head.append?document.head.append(s):document.getElementsByTagName("head")[0].appendChild(s)})}};Z([ts({settings:{timeout:0,retries:3},onError(t,e,r){var o;(t==null?void 0:t.status)===404||(o=t==null?void 0:t.message)!=null&&o.includes("404")?(this._log.warn("download 404, stop retry"),r(t)):e()},onRetrying(t){this._log.warn(`download retrying: ${t}`)}})],Xa.prototype,"download",1),Z([ts({settings:{timeout:3e3,retries:3},onRetrying(t){this._log.warn(`loadScript retrying: ${t}`)}})],Xa.prototype,"loadScript",1);var Zp=new Xa;function pE({TRTC:i,room:t,errorModule:e,assetsPath:r}){return{TRTC:i,LocalMixVideoTrack:ls,LocalVideoTrack:nr,LocalScreenTrack:ii,room:t,assetsPath:r,fileDownloader:Zp,innerEmitter:V,constants:yl,environment:Zs,utils:Qm,eventLogger:je,log:this.room.getLogger(),loggerManager:$,errorModule:e,kvStatManager:z,rtcDectection:co,trtc:this,rx:Lp,enums:_m,schedule:Yp,getDevices:dn,initVisionTaskRegistry:(o,s="/mediapipe/vision.js")=>y(this,null,function*(){window.VisionTaskRegistry||(yield Zp.loadScript(`${o}/${s}`.replace(/([^:]\/)\/+/g,"$1"))),yield(yield window.VisionTaskRegistry.getInstance(o)).preloadModels([window.VisionTaskType.ImageSegmenter])}),clearStarted:(o,s)=>{let n=o.getAlias(),a=ki.instances.get(this);if(a)if(s){let u=a.get(n+s);if(!u)return;u.started=!1}else a.forEach((u,m)=>{m.startsWith(n)&&(u.started=!1)})},startGetPCM:Ga,createAudioNode:Oa}}var hE=(i,t)=>{let{emit:e}=i;return i.emit=(...r)=>{try{return e.apply(i,r)}catch(o){let s=Be({key:$e.CATCH_HANDLER_ERROR,data:{name:t,event:r[0]},addDocLink:!1});return $.warn(`${s}
57
97
 
58
- ${r.stack}`),!1}},o};var as=new WeakMap;function qp(o){let i=as.get(o);i&&(i.forEach(e=>clearTimeout(e)),as.delete(o))}function jp(o,i){return Y((e,t)=>function(...r){let s=as.get(this);s||(s=new Map,as.set(this,s));let n=i(...r),a=s.get(n);if(!a||a<=0){e.apply(this,r);let c=setTimeout(()=>{var l;(l=as.get(this))==null||l.delete(n)},o);s.set(n,c)}else{clearTimeout(a);let c=window.setTimeout(()=>{var l;e.apply(this,r),(l=as.get(this))==null||l.delete(n)},o);s.set(n,c)}})}var zp="trtc-sdk-v5",Qp="5.12.1-beta.1";function qe(...o){return Y((i,e)=>function(...t){try{Dc.call(this,o,t,e,this._name)}catch(r){return Promise.reject(r)}return i.apply(this,t)})}function Gu(...o){return Y((i,e)=>function(...t){try{Dc.call(this,o,t,e,this._name)}catch(r){throw r}return i.apply(this,t)})}function Dc(o,i,e,t){if(Se(o))for(let r=0;r<o.length;r++)vc.call(this,{rule:o[r],value:i[r],key:o[r].name,fnName:e,className:t});else vc.call(this,{rule:o,value:i[0],key:o.name,fnName:e,className:t})}function vc({rule:o,value:i,key:e,fnName:t,className:r}){function s(c){return{code:U.INVALID_PARAMETER,extraCode:c,fnName:t,messageParams:{key:e,rule:o,value:i}}}if(T(i)){if(o.required)throw new x(s(5001));if(T(o.defaultValue)){ae(o.validate)&&o.validate.call(this,i,e,t,r,this);return}i=o.defaultValue}if(Array.isArray(o.type)){let c=!1;for(let l=0;l<o.type.length;l++)o.type[l]===null&&i===null&&(c=!0),ae(o.type[l])&&i instanceof o.type[l]&&(c=!0),te(o.type[l])&&Re(i)===o.type[l].toLowerCase()&&(c=!0);if(!c)throw new x({code:U.INVALID_PARAMETER,extraCode:5002,fnName:t,messageParams:{key:e,rule:{type:o.type.map(l=>Mr(l)?_o(l):te(l)?l:Re(l))},value:i}})}else if(!T(o.type)&&Re(i)!==o.type)throw new x(s(5002));if(o.allowEmpty===!1){let c=q(i)&&(i===0||Number.isNaN(i)),l=te(i)&&i.trim()==="";if(c||l)throw new x(s(5003))}if(o.notLessThanZero&&q(i)&&i<0)throw new x(s(5006));if(!T(o.min)&&q(i)&&i<o.min)throw new x(s(5007));if(!T(o.max)&&q(i)&&i>o.max)throw new x(s(5008));if(te(o.instanceOf)){if(!i||i._name!==o.instanceOf)throw new x(s(5004))}else if(ae(o.instanceOf)&&!(i instanceof o.instanceOf))throw new x(s(5004));if(Array.isArray(o.values)&&!o.values.includes(i))throw new x(s(5005));let{properties:n}=o;ze(n)&&pt(i)&&Object.keys(n).forEach(c=>{vc.call(this,{rule:n[c],value:i&&i[c],key:`${c}`,fnName:t,className:r})});let{arrayItem:a}=o;ze(a)&&Se(i)&&i.forEach((c,l)=>{vc.call(this,{rule:a,value:c,key:`${e}[${l}]`,fnName:t,className:r})}),ae(o.validate)&&o.validate.call(this,i,e,t,r,this)}function fe(o={}){let{getRemoteId:i=()=>"",replaceArg:e,getKVReportKey:t,ignoreLog:r,ignoreErrorLog:s}=o;return Y((n,a)=>function(...c){var g,S,_;function l(I,R,K){if(K&&K.includes(I))return"hided";if(e){let G=e(...c);if(c[G.argIndex]===R)return G.value}if(R===c||I in c)return R;try{return R instanceof HTMLElement?`id: ${R.id} type:${Re(R)}`:R instanceof MediaStreamTrack?ta(R):(JSON.stringify(R),R)}catch(G){return`type:${Re(R)}`}}let u=this._log||b;if(r!=null&&r(...c))return n.apply(this,c);c.length>0?u.info(`${a}() ${JSON.stringify(c,(I,R)=>l(I,R,["userSig","privateMapKey"]))}`):u.info(`${a}()`);let h=t?t(...c):Ma[a],m=(s==null?void 0:s(...c))||!1;try{let I=n.apply(this,c),R=P();if(lr(I)){let K=`${a.includes("Plugin")?`${((S=(g=c[0]).getName)==null?void 0:S.call(g))||""} `:" "}`;return I.then(G=>(u.info(`${a}() success ${K}${i.call(this,...c)}`),N.addSuccessEvent({key:h,cost:P()-R}),G)).catch(G=>{var J;G=x.convertFrom.call(this,G,a,c.length===1?c[0]:c);let ee=G.extraCode||G.code,_e=(J=G.message)!=null&&J.includes(ee)?"":` code:${ee}`;throw m||u.error(`${a}() failed ${K}${i.call(this,...c)} ${G}${_e} params: ${JSON.stringify(c,l)}`),N.addFailedEvent({key:h,error:G}),G})}return N.addSuccessEvent({key:h}),I}catch(I){I=x.convertFrom.call(this,I,a);let R=I.extraCode||I.code,K=(_=I.message)!=null&&_.includes(R)?"":` code:${R}`;throw m||u.error(`${a}() failed ${I}${K} params: ${JSON.stringify(c,l)}`),N.addFailedEvent({key:h,error:I}),I}})}var Mc=o=>Y((i,e)=>function(t,r){return f(this,null,function*(){let s=this._plugins.get(t);if(!s)throw this._log.error(`plugin ${String(t)} is not found`),new x({code:U.OPERATION_ABORT,message:`plugin ${String(t)} is not found`,fnName:e});if(ae(s.constructor.isSupported)&&!s.constructor.isSupported())throw this._log.error(`plugin ${String(t)} is not supported`),new x({code:U.ENV_NOT_SUPPORTED,message:`plugin ${String(t)} is not supported`,extraCode:5210,fnName:e});return Dc.call(this,s.getValidateRule(o),[r],e,"TRTC"),i.call(this,s,r)})});var Oc=0,Wu,Ki=class Ki{constructor(i){this.core=i;d(this,"log");d(this,"customAudioReferenceMap",new Map);d(this,"audioRefId",0);d(this,"audioContext",Ee());d(this,"localAudioWorkletNode");d(this,"screenAudioWorkletNode");d(this,"mixNode");d(this,"silentNode");Oc=Oc+1,this.log=i.log.createChild({id:`${this.getAlias()}${Oc}`}),this.log.info(`created id=${this.getAlias()}${Oc}`)}static getStartValidateRule(i){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,t,r,s){if(!i.room.audioManager.hasAudioTrack&&!i.room.audioManager.hasScreenAudioTrack)throw new x({code:U.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return Wu||(Wu=this.doPreload(i)),Wu}doPreload(i){return f(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield ji(this.audioContext,t)}catch(r){this.log.error(`preload audioProcessor failed. ${r}`)}finally{URL.revokeObjectURL(t)}})}getName(){return Ki.Name}getAlias(){return"ap"}getGroup(){return"ap"}getValidateRule(i){switch(i){case"start":return Ki.getStartValidateRule(this.core);case"update":return Ki.updateValidateRule;case"stop":return Ki.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e}=this.core,{sdkAppId:t,userId:r,assetsPath:s=this.core.assetsPath,audioReference:n,processLevel:a,enableDump:c,isLocalAudioNeedAudioProcess:l=!0,isScreenAudioNeedAudioProcess:u=!0}=i;if(this.core.room.audioManager.isLocalAudioNeedAudioProcess=l,this.core.room.audioManager.isScreenAudioNeedAudioProcess=u,!s)throw new x({code:U.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(yield this.preload(`${s}/audioProcessor-wasm.js`),!this.localAudioWorkletNode||!this.screenAudioWorkletNode){let h=String(Date.now()).slice(0,-3),{auth:m,sign:g,status:S,message:_}=yield JE(w(D({},i),{timestamp:h}));if(!m)throw this.log.info(`audioProcessor: ${r} auth result: ${m}. Message: ${_}`),new x({code:U.INVALID_PARAMETER,message:_});this.localAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.localAudioWorkletNode,"localAudio",t,r,h,g,S,e),this.screenAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.screenAudioWorkletNode,"screenAudio",t,r,h,g,S,e)}this.mixNode||(this.mixNode=this.audioContext.createGain(),this.mixNode.gain.value=1),this.silentNode||(this.silentNode=this.audioContext.createConstantSource(),this.silentNode.offset.setValueAtTime(0,this.audioContext.currentTime),this.silentNode.start()),this.localAudioWorkletNode.port.postMessage({type:"enable"}),this.screenAudioWorkletNode.port.postMessage({type:"enable"}),e.audioManager.addAudioProcessor(this.localAudioWorkletNode,this.mixNode,this.silentNode,this.screenAudioWorkletNode),T(n)||n.forEach(h=>{this.customAudioReferenceMap.set(h,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:h,refId:`o-${this.audioRefId++}`})}),T(a)||this.localAudioWorkletNode.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:a}}),T(c)||this.localAudioWorkletNode.port.postMessage({type:"dump",data:{enable:c}})})}update(i){return f(this,null,function*(){if(!this.localAudioWorkletNode||!this.screenAudioWorkletNode)return;let{audioReference:e,enableDump:t,processLevel:r}=i;T(e)||(this.customAudioReferenceMap.forEach((s,n)=>{this.customAudioReferenceMap.delete(n),this.core.room.audioManager.updateAudioReference({type:"remove",refId:s})}),e.forEach(s=>{this.customAudioReferenceMap.set(s,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:s,refId:`o-${this.audioRefId++}`})})),T(r)||this.localAudioWorkletNode.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:r}}),T(t)||(this.localAudioWorkletNode.port.postMessage({type:"dump",data:{enable:t}}),this.screenAudioWorkletNode.port.postMessage({type:"dump",data:{enable:t}}))})}stop(){return f(this,null,function*(){if(!this.localAudioWorkletNode||!this.mixNode||!this.silentNode||!this.screenAudioWorkletNode)return;let{room:i}=this.core;this.localAudioWorkletNode.port.postMessage({type:"disable"}),this.screenAudioWorkletNode.port.postMessage({type:"disable"}),yield i.audioManager.removeAudioProcessor(this.localAudioWorkletNode,this.mixNode,this.silentNode,this.screenAudioWorkletNode)})}destroy(){this.localAudioWorkletNode&&(this.localAudioWorkletNode.port.onmessage=null),this.screenAudioWorkletNode&&(this.screenAudioWorkletNode.port.onmessage=null)}initWorkletNode(i,e,t,r,s,n,a,c){i.port.postMessage({type:"init",data:{sdkAppId:String(t),userId:r,timestamp:s,sign:n,status:a}}),i.port.onmessage=l=>{var h;let{data:u}=l;switch(u.type){case"cost":let m=(u==null?void 0:u.value)>10?"info":"debug";this.log[m](`[${e}] avg cost: ${u.value} max: ${u==null?void 0:u.max}(${ao(new Date(u==null?void 0:u.maxCostTimestamp))}) hist: ${(h=u==null?void 0:u.hist)==null?void 0:h.join(" ")}`);return;case"log":this.log[u.logLevel](`[${e}] ${u.value}`);return;case"dump":E.emit("265",{room:c,data:u.value,type:e==="localAudio"?"dump":"dump-screen-audio"});return}}}};d(Ki,"updateValidateRule",{type:"object"}),d(Ki,"stopValidateRule",{type:"object"}),d(Ki,"Name","AudioProcessor");var kc=Ki;function WE(o,i=p.MAIN){return`https://${Ri[i]||Nc(o,i)}/api/v1/audioAiAuth`}function JE(r){return f(this,arguments,function*({sdkAppId:o,userId:i,userSig:e,timestamp:t}){let n=`${WE(o)}?sdkAppId=${o}&userId=${i}&userSig=${e}&timestamp=${t}`,a=yield fetch(n),{data:{errCode:c,errMsg:l,sign:u,status:h}}=yield a.json();if(h==="1")return{auth:!0,sign:u,status:h,message:l};let m=ki(o)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",g="Init RTCAudioProcessor failed.",S="";switch(c){case 1:S="Please check your params.";break;case 2:S=`You need to buy packages. Refer to: ${m}`;break;case 3:S="Server is invalid. Please contact our engineer. ";break;case 4:S=`Your packages is not active. Refer to: ${m}`;break;case 5:S=`Your packages is expired. Refer to: ${m}`;break;case 6:S="Your version is not supported.";break}return{auth:!1,status:h,message:l?`${g} Reason: ${l}. ${S}`:`${g}, ${S}`}})}var wc=0,Ju=class{constructor(i,e){d(this,"player");d(this,"publisher");d(this,"mixInput");this.mixInput=new qo(e),i.url?(this.player=new Audio(i.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(i.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(i.track),this.mixInput.connect()}updateSettings(i){this.player&&(T(i.volume)||(this.volume=i.volume),T(i.loop)||(this.loop=i.loop),T(i.playbackRate)||(this.playbackRate=i.playbackRate))}updateListener(i){if(this.player){if(i.onDurationChange){let{onDurationChange:e}=i;this.player.ondurationchange=t=>{e(t.target.duration)}}if(i.onTimeUpdate){let e=i.onTimeUpdate,{player:t}=this;t.ontimeupdate=()=>{e(t.currentTime,t.duration)}}i.onEnded&&(this.player.onended=i.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(i){this.player&&(i<0&&i>this.player.duration||(this.player.currentTime=i,this.publisher.currentTime=i))}play(){var i,e;return(i=this.publisher)==null||i.play(),(e=this.player)==null?void 0:e.play()}pause(){var i,e;(i=this.player)==null||i.pause(),(e=this.publisher)==null||e.pause()}stop(){var i;(i=this.player)==null||i.pause(),this.mixInput.disconnect()}setOperation(i){i==="pause"&&this.pause(),i==="resume"&&(this.pause(),this.play()),i==="stop"&&(this.pause(),this.seek(0))}set volume(i){!this.player||!this.publisher||(this.player.volume=i,this.publisher.volume=i)}set loop(i){!this.player||!this.publisher||(this.player.loop=i,this.publisher.loop=i)}set playbackRate(i){!this.player||!this.publisher||(this.player.playbackRate=i,this.publisher.playbackRate=i)}};function cs(o,i){if(i&&typeof i!="function")throw new x({code:U.INVALID_PARAMETER,message:`start audioMixer plugin: param ${o} should be a function.`})}var yi=class yi{constructor(i){this.core=i;d(this,"log");d(this,"mixedMusicMap",new Map);d(this,"cacheMusicMap",new Map);wc=wc+1,this.log=i.log.createChild({id:`${this.getAlias()}${wc}`}),this.log.info(`created id=${this.getAlias()}${wc}`)}getName(){return yi.Name}getAlias(){return"ax"}getGroup(i){return i==null?void 0:i.id}getValidateRule(i){switch(i){case"start":return yi.startValidateRule;case"update":return yi.updateValidateRule;case"stop":return yi.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${i.id} url: ${i.url}, track: ${i.track}`);let{id:t,url:r}=i;if(this.mixedMusicMap.has(t))return;let s=this.cacheMusicMap.get(t);s?i.url?s.reset():(s.mixInput.replaceSource(i.track),s.mixInput.connect()):(s=new Ju(i,e.audioManager),this.cacheMusicMap.set(t,s)),s.updateListener(i),s.updateSettings(i),yield s.play(),this.mixedMusicMap.set(t,s),s.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"add",audioReference:s.mixInput.source.node,refId:`ax-${t}`}),this.log.info(`start mix audio track ${t} success.`),N.addEnum({key:502700,value:3}),this.kvUpload(i)})}update(i){return f(this,null,function*(){let{id:e,operation:t,seekFrom:r,playbackRate:s}=i;this.log.info(`update music source, ${JSON.stringify(i)}`);let n=this.mixedMusicMap.get(e);if(!n){this.log.warn(`update music source failed, music id: ${e} not found.`);return}n.updateSettings(i),n.updateListener(i),T(t)||n.setOperation(t),T(r)||n.seek(r),this.kvUpload(i)})}stop(e){return f(this,arguments,function*({id:i}){if(this.mixedMusicMap.has(i)){this.log.info(`remove music source, music id: ${i}`);let t=this.mixedMusicMap.get(i);t!=null&&t.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:t.mixInput.source.node,refId:`ax-${i}`}),t==null||t.stop(),this.mixedMusicMap.delete(i)}i==="*"&&this.destroyAllMusic()})}kvUpload(i){let{track:e,loop:t,volume:r,playbackRate:s,operation:n,seekFrom:a,onTimeUpdate:c,onDurationChange:l,onEnded:u}=i;e&&N.addCount({key:502711}),t&&N.addCount({key:502703}),r&&N.addCount({key:502704}),s&&N.addCount({key:502705}),n&&N.addCount({key:502706}),a&&N.addCount({key:502707}),typeof c!="function"&&N.addCount({key:502709}),typeof u!="function"&&N.addCount({key:502710}),typeof l!="function"&&N.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((i,e)=>{i!=null&&i.mixInput.track&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:i.mixInput.track,refId:e}),this.stop({id:e})})}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}};d(yi,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(i,e,t){if(i.url&&i.url!=="*"){let r=i.url.split("?")[0],s=["mp3","ogg","wav","flac"],n=r.split(".").pop(),a=s.indexOf(n)>=0,c=r.startsWith("blob"),l=r.startsWith("data");if(!(a||c||l))throw new x({code:U.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:t})}if(!i.url&&!i.track)throw new x({code:U.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:t});cs("onTimeUpdate",i.onTimeUpdate),cs("onEnded",i.onEnded),cs("onDurationChange",i.onDurationChange)}}),d(yi,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(i,e,t){cs("onTimeUpdate",i.onTimeUpdate),cs("onEnded",i.onEnded),cs("onDurationChange",i.onDurationChange)}}),d(yi,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),d(yi,"Name","AudioMixer");var xc=yi;var Lc=0,qu,er=class er{constructor(i){this.core=i;d(this,"log");d(this,"audioContext",Ee("denoiser"));d(this,"workletNode");Lc=Lc+1,this.log=i.log.createChild({id:`${this.getAlias()}${Lc}`}),this.log.info(`created id=${this.getAlias()}${Lc}`)}static startValidateRule(i){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,t,r,s){if(!i.room.audioManager.hasAudioTrack)throw new x({code:U.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return qu||(qu=this.doPreload(i)),qu}doPreload(i){return f(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield ji(this.audioContext,t)}catch(r){throw this.log.error("load worklet failed",r),r}finally{URL.revokeObjectURL(t)}})}getName(){return er.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(i){switch(i){case"start":return er.startValidateRule(this.core);case"update":return er.updateValidateRule;case"stop":return er.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e,schedule:t}=this.core,{assetsPath:r=this.core.assetsPath}=i;if(!r)throw new x({code:U.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(yield this.preload(`${r}/denoiser-wasm.js`),!this.workletNode){let s=String(Date.now()).slice(0,-3),{auth:n,sign:a,status:c,message:l}=yield jE(t,w(D({},i),{timestamp:s}));if(!n)throw this.log.info(`RTCAIDenoiser: ${i.userId} auth result: ${n}. Message: ${l}`),new x({code:U.INVALID_PARAMETER,message:l});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(i.sdkAppId),userId:i.userId,timestamp:s,sign:a,status:c}}),this.workletNode.port.onmessage=u=>{var m;let{data:h}=u;if(h.type==="cost"){let g=(h==null?void 0:h.max)>20?"warn":(h==null?void 0:h.max)>10?"info":"debug";this.log[g](`avg cost: ${h.value} max: ${h==null?void 0:h.max}(${ao(new Date(h==null?void 0:h.maxCostTimestamp))}) hist: ${(m=h==null?void 0:h.hist)==null?void 0:m.join(" ")}`)}else h.type==="log"&&this.log[h.logLevel](`${h.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return f(this,null,function*(){})}stop(){return f(this,null,function*(){if(!this.workletNode)return;let{room:i}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield i.audioManager.removeDenoiser(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};d(er,"updateValidateRule",{type:"object"}),d(er,"stopValidateRule",{type:"object"}),d(er,"Name","AIDenoiser");var Pc=er;function jE(s,n){return f(this,arguments,function*(o,{sdkAppId:i,userId:e,userSig:t,timestamp:r}){try{let{data:{errCode:a,errMsg:c,sign:l,status:u}}=yield o.getAbilityConfig(i,o.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:i,userId:e,userSig:t,timestamp:r});if(u==="1")return{auth:!0,sign:l,status:u,message:c};let h=ki(i)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",m="Init RTCAIDenoiser failed.",g="";switch(a){case 1:g="Please check your params.";break;case 2:g=`You need to buy packages. Refer to: ${h}`;break;case 3:g="Server is invalid. Please contact our engineer. ";break;case 4:g=`Your packages is not active. Refer to: ${h}`;break;case 5:g=`Your packages is expired. Refer to: ${h}`;break;case 6:g="Your version is not supported.";break}return{auth:!1,status:u,message:c?`${m} Reason: ${c}. ${g}`:`${m}, ${g}`}}catch(a){return{auth:!1,status:"0",message:`Init RTCAIDenoiser failed. All requests failed. ${a}`}}})}var Zp=Ge(it(),1);var ju=class extends Zp.EventEmitter{constructor(){super();d(this,"observer");d(this,"state","nominal");this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return f(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!pe&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){se.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let t=this.stateNum,r=e[e.length-1];this.state=r.state,(this.stateNum>3||t>3)&&b.info(`${r.source}: ${r.state}`),this.emit("state-changed",{type:r.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(t){se.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:t})}}},XE=new ju,Xu=XE;function zu([o,i]){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,s=[];s.push(0,0,0,1,6,o);for(let a=0;a<t;a++)s.push(255);s.push(r);let n=new DataView(i);return s.push(...new Uint8Array(n.buffer)),s.push(128),new zi(new DataView(new Uint8Array(s).buffer),!0)}function Qu(o){return o.type==="empty"||o.data.byteLength===0}function Yu(o){return o.getInt32(0)===1&&o.getInt8(4)===6}function Zu(o){let i=0,e=0,t=new DataView(o);for(let r=0;r<o.byteLength;r++)switch(t.getUint8(r)){case 0:i++;break;case 1:(i===2||i===3)&&e++,i=0;break;default:i=0;break}return e}function Ku({frame:o,seiMessageList:i}){if(!i||i.length===0||o.data.byteLength===0)return o;let t=9-Zu(o.data);if(t<=0)return o;let r=i.splice(0,t).reverse().map(zu),s=r.reduce((u,h)=>u+h.dataView.byteLength,0),n=new ArrayBuffer(s+o.data.byteLength),a=new DataView(n),c=new DataView(o.data),l=0;for(let u=0;u<r.length;u++)for(let h=0;h<r[u].dataView.byteLength;h++)a.setInt8(l++,r[u].dataView.getInt8(h));for(let u=0;u<o.data.byteLength;u++)a.setInt8(l++,c.getInt8(u));return o.data=n,o}function eh({frame:o,onSEI:i}){try{let e=new DataView(o.data);if(Qu(o)||!Yu(e))return o;let t=[],r=0,s=-1,n=-1;for(let a=0;a<o.data.byteLength;a++){let c=e.getUint8(a);if(c===0)r++;else if(c===1){if(r===2||r===3){let l=a-r;if(s===-1?s=l:n===-1&&(n=l,t.push(new zi(new DataView(e.buffer.slice(s,n)))),s=l,n=-1),!(e.getUint8(a+1)===6)){o.data=e.buffer.slice(l);break}}r=0}else r=0}i==null||i(t.reverse())}catch(e){}return o}var th=0,An=class An{constructor(i){this.core=i;d(this,"log");d(this,"_seiMessageList",[]);d(this,"_smallSeiMessageList",[]);d(this,"_subStreamSeiMessageList",[]);th++,this.log=i.log.createChild({id:`${this.getAlias()}${th}`}),this.log.info(`[sei] created id=${this.getAlias()}${th}`),this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:i,mediaType:e}){try{let t=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return Ku({frame:i,seiMessageList:t})}catch(t){this.log.warn(t)}return i}decode({frame:i,track:e}){return eh({frame:i,onSEI:t=>{t.forEach(r=>{this.core.trtc.emit(k.SEI_MESSAGE,{seiPayloadType:r.seiPayloadType,data:r.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(i){switch(i){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:Ji?this.encode:Ku,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:Ji?this.decode:eh,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:i,options:e}){var s;let t=[e.seiPayloadType,i],r=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(t):(this._seiMessageList.push(t),r&&this._smallSeiMessageList.push(t)),(s=this.core.room.scriptTransformWorker)==null||s.postMessage({type:"sei",data:t,isMain:!e.toSubStream,small:r})}getName(){return An.Name}getAlias(){return"sei"}getGroup(){return"sei"}};d(An,"autoStart",!0),d(An,"Name","SEI");var Vc=An;function ih({frame:o,onDump:i}){return i==null||i(),o}function rh({frame:o,onDump:i}){return i==null||i(),o}var Kp={"play() error: NotAllowedError:":{tips:o=>o.includes("main <video>")||o.includes("main <audio>")?"Remote stream auto play is restricted and playback fails":"Local stream playback failure, generally only occurs in Android WeChat devices, no need to handle",color:"red",class:"red"},"updateStream() try to recover local stream":{tips:"Device acquisition exception, automatic recovery is in progress"},"updateStream() recover local stream successfully":{tips:"Device acquisition exception, automatic recovery is successful"},"updateStream() failed to recover local stream":{tips:"Device acquisition exception, automatic recovery failed"},"main stream - video track is muted":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is muted":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is muted":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unable to provide media output":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is unable to provide media output":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is unable to provide media output":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unmuted":{tips:"Received enough playback video data"},"main stream - audio track is unmuted":{tips:"Received enough playback audio data"},"auxiliary stream - video track is unmuted":{tips:"Received enough playback screen sharing data"},"main stream - audio player track is ended":{tips:"Remote audio track stopped"},"main stream - video player track is ended":{tips:"Remote video track stopped"},"auxiliary stream - video player track is ended":{tips:"Received enough playback screen sharing data"},"stream - video track is muted":{tips:"Camera capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"stream - video track is unable to provide media output":{tips:"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked, and the customer needs to re-acquire. SDK v4.11.4+ will automatically resume acquisition without customer intervention",color:"orange"},"video track is unable to provide media output":{tips:o=>o.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"stream - audio track is muted":{tips:"Microphone capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"audio track is unable to provide media output":{tips:o=>o.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"Microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio track is unable to provide media output":{tips:"The microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"is adding audio track to current published local stream":{tips:"add audio track",color:"orange"},"is removing audio track from current published local stream":{tips:"remove audio track",color:"orange"},"is removing video track from current published local stream":{tips:"remove video track",color:"orange"},"is adding video track to current published local stream":{tips:"add video track",color:"orange"},"is replacing audio track to current published local main stream":{tips:"replace audio track",color:"orange"},"is replacing video track to current published local main stream":{tips:"replace video track",color:"orange"},"downlink network quality change":{tips:"Downstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"uplink network quality change":{tips:"Upstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"localStream mute video":{tips:"mute upstream video stream",color:"orange"},"localStream unmute video":{tips:"unmute upstream video stream",color:"orange"},"localStream mute audio":{tips:"mute upstream audio stream",color:"orange"},"localStream unmute audio":{tips:"unmute upstream audio stream",color:"orange"},"black detected":{tips:"Detect black screen, which means fps = 0. It is usually caused by network, and the network will be recovered after a while. If the network is normal but has not been restored, it is an abnormal situation."},'main stream start to play with options: {"muted":true}':{tips:"Play the remote stream in silent mode. Generally, the remote stream does not need to be played in silent mode. You need to confirm whether the parameters passed in the client stream.play API call are correct.",color:"orange"},"main stream - audio player is starting playing":{tips:"Remote stream audio playback success",color:"#0dd90d",class:"success"},"main stream - video player is starting playing":{tips:"Remote stream video playback success",color:"#0dd90d",class:"success"},"video player is playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"audio player is playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"stream - video player is starting playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"stream - audio player is starting playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"switch camera success":{tips:"Switch camera success",color:"#0dd90d",class:"success"},"switch microphone success":{tips:"Switch microphone success",color:"#0dd90d",class:"success"},gotStream:{tips:"Local stream capture success"},"local stream is published successfully":{tips:"Publish success",color:"#0dd90d",class:"success"},"encoderImplementation change to OpenH264":{tips:"Use software encoding"},"encoderImplementation change to ExternalEncoder":{tips:"Use hardware encoding"},"getUserMedia with constraints":{tips:"Start media (camera/microphone) capture"},"getDisplayMedia with constraints":{tips:"Start screen sharing capture"},"client-banned":{tips:"Kicked out of the room",color:"red",class:"red",textColor:"#fff"},user_timeout:{tips:"The backend is too long without receiving SDK heartbeat, which is usually caused by the JS thread being blocked for a long time. If the reproduction probability is high, the application browser Performance tool analyzes where the JS thread is blocked.",color:"red",class:"red",textColor:"#fff"},"schedule failed":{tips:"Signaling request failed, does not affect the normal room entry process, SDK will connect to the default signaling domain."},"updateStream() video flag is true, but no camera detected, set video to false":{tips:"When trying to resume camera acquisition, the camera acquisition is not resumed because it is detected that there is no camera.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to bandwidth":{tips:"bandwidth estimation is not enough to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to cpu":{tips:"cpu load is too high to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: hidden":{tips:"User page switched to backend, in mobile devices, this will cause the device to pause the capture, and it will be restored when the user switches backend to the frontend.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: visible":{tips:"User page switched to frontend",color:"orange",class:"orange",textColor:"#fff"},"main stream - audio player is paused":{tips:`The remote stream audio playback is paused, which usually has two possibilities:
98
+ ${o.stack}`),!1}},i};var yn=new WeakMap;function fE(i){let t=yn.get(i);t&&(t.forEach(e=>clearTimeout(e)),yn.delete(i))}function gE(i,t){return xe((e,r)=>function(...o){let s=yn.get(this);s||(s=new Map,yn.set(this,s));let n=t(...o),a=s.get(n);if(!a||a<=0){e.apply(this,o);let u=setTimeout(()=>{var m;(m=yn.get(this))==null||m.delete(n)},i);s.set(n,u)}else{clearTimeout(a);let u=window.setTimeout(()=>{var m;e.apply(this,o),(m=yn.get(this))==null||m.delete(n)},i);s.set(n,u)}})}var TE="trtc-sdk-v5",_E="5.12.1-wasm.1";function Ot(...i){return xe((t,e)=>function(...r){try{Ru.call(this,i,r,e,this._name)}catch(o){return Promise.reject(o)}return t.apply(this,r)})}function Kp(...i){return xe((t,e)=>function(...r){try{Ru.call(this,i,r,e,this._name)}catch(o){throw o}return t.apply(this,r)})}function Ru(i,t,e,r){if(st(i))for(let o=0;o<i.length;o++)bu.call(this,{rule:i[o],value:t[o],key:i[o].name,fnName:e,className:r});else bu.call(this,{rule:i,value:t[0],key:i.name,fnName:e,className:r})}function bu({rule:i,value:t,key:e,fnName:r,className:o}){function s(u){return{code:se.INVALID_PARAMETER,extraCode:u,fnName:r,messageParams:{key:e,rule:i,value:t}}}if(M(t)){if(i.required)throw new ie(s(5001));if(M(i.defaultValue)){We(i.validate)&&i.validate.call(this,t,e,r,o,this);return}t=i.defaultValue}if(Array.isArray(i.type)){let u=!1;for(let m=0;m<i.type.length;m++)i.type[m]===null&&t===null&&(u=!0),We(i.type[m])&&t instanceof i.type[m]&&(u=!0),Ne(i.type[m])&&ct(t)===i.type[m].toLowerCase()&&(u=!0);if(!u)throw new ie({code:se.INVALID_PARAMETER,extraCode:5002,fnName:r,messageParams:{key:e,rule:{type:i.type.map(m=>Wo(m)?Ls(m):Ne(m)?m:ct(m))},value:t}})}else if(!M(i.type)&&ct(t)!==i.type)throw new ie(s(5002));if(i.allowEmpty===!1){let u=Pe(t)&&(t===0||Number.isNaN(t)),m=Ne(t)&&t.trim()==="";if(u||m)throw new ie(s(5003))}if(i.notLessThanZero&&Pe(t)&&t<0)throw new ie(s(5006));if(!M(i.min)&&Pe(t)&&t<i.min)throw new ie(s(5007));if(!M(i.max)&&Pe(t)&&t>i.max)throw new ie(s(5008));if(Ne(i.instanceOf)){if(!t||t._name!==i.instanceOf)throw new ie(s(5004))}else if(We(i.instanceOf)&&!(t instanceof i.instanceOf))throw new ie(s(5004));if(Array.isArray(i.values)&&!i.values.includes(t))throw new ie(s(5005));let{properties:n}=i;Ft(n)&&rr(t)&&Object.keys(n).forEach(u=>{bu.call(this,{rule:n[u],value:t&&t[u],key:`${u}`,fnName:r,className:o})});let{arrayItem:a}=i;Ft(a)&&st(t)&&t.forEach((u,m)=>{bu.call(this,{rule:a,value:u,key:`${e}[${m}]`,fnName:r,className:o})}),We(i.validate)&&i.validate.call(this,t,e,r,o,this)}function rt(i={}){let{getRemoteId:t=()=>"",replaceArg:e,getKVReportKey:r,ignoreLog:o,ignoreErrorLog:s}=i;return xe((n,a)=>function(...u){var A,C,N;function m(D,P,K){if(K&&K.includes(D))return"hided";if(e){let pe=e(...u);if(u[pe.argIndex]===P)return pe.value}if(P===u||D in u)return P;try{return P instanceof HTMLElement?`id: ${P.id} type:${ct(P)}`:P instanceof MediaStreamTrack?Wc(P):(JSON.stringify(P),P)}catch(pe){return`type:${ct(P)}`}}let h=this._log||$;if(o!=null&&o(...u))return n.apply(this,u);u.length>0?h.info(`${a}() ${JSON.stringify(u,(D,P)=>m(D,P,["userSig","privateMapKey"]))}`):h.info(`${a}()`);let g=r?r(...u):Id[a],T=(s==null?void 0:s(...u))||!1;try{let D=n.apply(this,u),P=_e();if(to(D)){let K=`${a.includes("Plugin")?`${((C=(A=u[0]).getName)==null?void 0:C.call(A))||""} `:" "}`;return D.then(pe=>(h.info(`${a}() success ${K}${t.call(this,...u)}`),z.addSuccessEvent({key:g,cost:_e()-P}),pe)).catch(pe=>{var Q;pe=ie.convertFrom.call(this,pe,a,u.length===1?u[0]:u);let ce=pe.extraCode||pe.code,Qe=(Q=pe.message)!=null&&Q.includes(ce)?"":` code:${ce}`;throw T||h.error(`${a}() failed ${K}${t.call(this,...u)} ${pe}${Qe} params: ${JSON.stringify(u,m)}`),z.addFailedEvent({key:g,error:pe}),pe})}return z.addSuccessEvent({key:g}),D}catch(D){D=ie.convertFrom.call(this,D,a);let P=D.extraCode||D.code,K=(N=D.message)!=null&&N.includes(P)?"":` code:${P}`;throw T||h.error(`${a}() failed ${D}${K} params: ${JSON.stringify(u,m)}`),z.addFailedEvent({key:g,error:D}),D}})}var vu=i=>xe((t,e)=>function(r,o){return y(this,null,function*(){let s=this._plugins.get(r);if(!s)throw this._log.error(`plugin ${String(r)} is not found`),new ie({code:se.OPERATION_ABORT,message:`plugin ${String(r)} is not found`,fnName:e});if(We(s.constructor.isSupported)&&!s.constructor.isSupported())throw this._log.error(`plugin ${String(r)} is not supported`),new ie({code:se.ENV_NOT_SUPPORTED,message:`plugin ${String(r)} is not supported`,extraCode:5210,fnName:e});return Ru.call(this,s.getValidateRule(i),[o],e,"TRTC"),t.call(this,s,o)})});var Cu=0,eh,Pi=class Pi{constructor(t){this.core=t;l(this,"log");l(this,"customAudioReferenceMap",new Map);l(this,"audioRefId",0);l(this,"audioContext",Xe());l(this,"localAudioWorkletNode");l(this,"screenAudioWorkletNode");l(this,"mixNode");l(this,"silentNode");Cu=Cu+1,this.log=t.log.createChild({id:`${this.getAlias()}${Cu}`}),this.log.info(`created id=${this.getAlias()}${Cu}`)}static getStartValidateRule(t){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,r,o,s){if(!t.room.audioManager.hasAudioTrack&&!t.room.audioManager.hasScreenAudioTrack)throw new ie({code:se.INVALID_OPERATION,extraCode:5106,fnName:o})}}}preload(t){return eh||(eh=this.doPreload(t)),eh}doPreload(t){return y(this,null,function*(){let e=yield this.core.fileDownloader.download(t,{type:"blob"}),r=URL.createObjectURL(e);try{yield wi(this.audioContext,r)}catch(o){this.log.error(`preload audioProcessor failed. ${o}`)}finally{URL.revokeObjectURL(r)}})}getName(){return Pi.Name}getAlias(){return"ap"}getGroup(){return"ap"}getValidateRule(t){switch(t){case"start":return Pi.getStartValidateRule(this.core);case"update":return Pi.updateValidateRule;case"stop":return Pi.stopValidateRule}}start(t){return y(this,null,function*(){let{room:e}=this.core,{sdkAppId:r,userId:o,assetsPath:s=this.core.assetsPath,audioReference:n,processLevel:a,enableDump:u,isLocalAudioNeedAudioProcess:m=!0,isScreenAudioNeedAudioProcess:h=!0}=t;if(this.core.room.audioManager.isLocalAudioNeedAudioProcess=m,this.core.room.audioManager.isScreenAudioNeedAudioProcess=h,!s)throw new ie({code:se.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(yield this.preload(`${s}/audioProcessor-wasm.js`),!this.localAudioWorkletNode||!this.screenAudioWorkletNode){let g=String(Date.now()).slice(0,-3),{auth:T,sign:A,status:C,message:N}=yield Ay(Ee(J({},t),{timestamp:g}));if(!T)throw this.log.info(`audioProcessor: ${o} auth result: ${T}. Message: ${N}`),new ie({code:se.INVALID_PARAMETER,message:N});this.localAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.localAudioWorkletNode,"localAudio",r,o,g,A,C,e),this.screenAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.screenAudioWorkletNode,"screenAudio",r,o,g,A,C,e)}this.mixNode||(this.mixNode=this.audioContext.createGain(),this.mixNode.gain.value=1),this.silentNode||(this.silentNode=this.audioContext.createConstantSource(),this.silentNode.offset.setValueAtTime(0,this.audioContext.currentTime),this.silentNode.start()),this.localAudioWorkletNode.port.postMessage({type:"enable"}),this.screenAudioWorkletNode.port.postMessage({type:"enable"}),e.audioManager.addAudioProcessor(this.localAudioWorkletNode,this.mixNode,this.silentNode,this.screenAudioWorkletNode),M(n)||n.forEach(g=>{this.customAudioReferenceMap.set(g,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:g,refId:`o-${this.audioRefId++}`})}),M(a)||this.localAudioWorkletNode.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:a}}),M(u)||this.localAudioWorkletNode.port.postMessage({type:"dump",data:{enable:u}})})}update(t){return y(this,null,function*(){if(!this.localAudioWorkletNode||!this.screenAudioWorkletNode)return;let{audioReference:e,enableDump:r,processLevel:o}=t;M(e)||(this.customAudioReferenceMap.forEach((s,n)=>{this.customAudioReferenceMap.delete(n),this.core.room.audioManager.updateAudioReference({type:"remove",refId:s})}),e.forEach(s=>{this.customAudioReferenceMap.set(s,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:s,refId:`o-${this.audioRefId++}`})})),M(o)||this.localAudioWorkletNode.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:o}}),M(r)||(this.localAudioWorkletNode.port.postMessage({type:"dump",data:{enable:r}}),this.screenAudioWorkletNode.port.postMessage({type:"dump",data:{enable:r}}))})}stop(){return y(this,null,function*(){if(!this.localAudioWorkletNode||!this.mixNode||!this.silentNode||!this.screenAudioWorkletNode)return;let{room:t}=this.core;this.localAudioWorkletNode.port.postMessage({type:"disable"}),this.screenAudioWorkletNode.port.postMessage({type:"disable"}),yield t.audioManager.removeAudioProcessor(this.localAudioWorkletNode,this.mixNode,this.silentNode,this.screenAudioWorkletNode)})}destroy(){this.localAudioWorkletNode&&(this.localAudioWorkletNode.port.onmessage=null),this.screenAudioWorkletNode&&(this.screenAudioWorkletNode.port.onmessage=null)}initWorkletNode(t,e,r,o,s,n,a,u){t.port.postMessage({type:"init",data:{sdkAppId:String(r),userId:o,timestamp:s,sign:n,status:a}}),t.port.onmessage=m=>{var g;let{data:h}=m;switch(h.type){case"cost":let T=(h==null?void 0:h.value)>10?"info":"debug";this.log[T](`[${e}] avg cost: ${h.value} max: ${h==null?void 0:h.max}(${Ns(new Date(h==null?void 0:h.maxCostTimestamp))}) hist: ${(g=h==null?void 0:h.hist)==null?void 0:g.join(" ")}`);return;case"log":this.log[h.logLevel](`[${e}] ${h.value}`);return;case"dump":V.emit("265",{room:u,data:h.value,type:e==="localAudio"?"dump":"dump-screen-audio"});return}}}};l(Pi,"updateValidateRule",{type:"object"}),l(Pi,"stopValidateRule",{type:"object"}),l(Pi,"Name","AudioProcessor");var Nu=Pi;function yy(i,t=O.MAIN){return`https://${si[t]||Au(i,t)}/api/v1/audioAiAuth`}function Ay(o){return y(this,arguments,function*({sdkAppId:i,userId:t,userSig:e,timestamp:r}){let n=`${yy(i)}?sdkAppId=${i}&userId=${t}&userSig=${e}&timestamp=${r}`,a=yield fetch(n),{data:{errCode:u,errMsg:m,sign:h,status:g}}=yield a.json();if(g==="1")return{auth:!0,sign:h,status:g,message:m};let T=gi(i)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",A="Init RTCAudioProcessor failed.",C="";switch(u){case 1:C="Please check your params.";break;case 2:C=`You need to buy packages. Refer to: ${T}`;break;case 3:C="Server is invalid. Please contact our engineer. ";break;case 4:C=`Your packages is not active. Refer to: ${T}`;break;case 5:C=`Your packages is expired. Refer to: ${T}`;break;case 6:C="Your version is not supported.";break}return{auth:!1,status:g,message:m?`${A} Reason: ${m}. ${C}`:`${A}, ${C}`}})}var wu=0,th=class{constructor(t,e){l(this,"player");l(this,"publisher");l(this,"mixInput");this.mixInput=new cn(e),t.url?(this.player=new Audio(t.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(t.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(t.track),this.mixInput.connect()}updateSettings(t){this.player&&(M(t.volume)||(this.volume=t.volume),M(t.loop)||(this.loop=t.loop),M(t.playbackRate)||(this.playbackRate=t.playbackRate))}updateListener(t){if(this.player){if(t.onDurationChange){let{onDurationChange:e}=t;this.player.ondurationchange=r=>{e(r.target.duration)}}if(t.onTimeUpdate){let e=t.onTimeUpdate,{player:r}=this;r.ontimeupdate=()=>{e(r.currentTime,r.duration)}}t.onEnded&&(this.player.onended=t.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(t){this.player&&(t<0&&t>this.player.duration||(this.player.currentTime=t,this.publisher.currentTime=t))}play(){var t,e;return(t=this.publisher)==null||t.play(),(e=this.player)==null?void 0:e.play()}pause(){var t,e;(t=this.player)==null||t.pause(),(e=this.publisher)==null||e.pause()}stop(){var t;(t=this.player)==null||t.pause(),this.mixInput.disconnect()}setOperation(t){t==="pause"&&this.pause(),t==="resume"&&(this.pause(),this.play()),t==="stop"&&(this.pause(),this.seek(0))}set volume(t){!this.player||!this.publisher||(this.player.volume=t,this.publisher.volume=t)}set loop(t){!this.player||!this.publisher||(this.player.loop=t,this.publisher.loop=t)}set playbackRate(t){!this.player||!this.publisher||(this.player.playbackRate=t,this.publisher.playbackRate=t)}};function An(i,t){if(t&&typeof t!="function")throw new ie({code:se.INVALID_PARAMETER,message:`start audioMixer plugin: param ${i} should be a function.`})}var ni=class ni{constructor(t){this.core=t;l(this,"log");l(this,"mixedMusicMap",new Map);l(this,"cacheMusicMap",new Map);wu=wu+1,this.log=t.log.createChild({id:`${this.getAlias()}${wu}`}),this.log.info(`created id=${this.getAlias()}${wu}`)}getName(){return ni.Name}getAlias(){return"ax"}getGroup(t){return t==null?void 0:t.id}getValidateRule(t){switch(t){case"start":return ni.startValidateRule;case"update":return ni.updateValidateRule;case"stop":return ni.stopValidateRule}}start(t){return y(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${t.id} url: ${t.url}, track: ${t.track}`);let{id:r,url:o}=t;if(this.mixedMusicMap.has(r))return;let s=this.cacheMusicMap.get(r);s?t.url?s.reset():(s.mixInput.replaceSource(t.track),s.mixInput.connect()):(s=new th(t,e.audioManager),this.cacheMusicMap.set(r,s)),s.updateListener(t),s.updateSettings(t),yield s.play(),this.mixedMusicMap.set(r,s),s.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"add",audioReference:s.mixInput.source.node,refId:`ax-${r}`}),this.log.info(`start mix audio track ${r} success.`),z.addEnum({key:502700,value:3}),this.kvUpload(t)})}update(t){return y(this,null,function*(){let{id:e,operation:r,seekFrom:o,playbackRate:s}=t;this.log.info(`update music source, ${JSON.stringify(t)}`);let n=this.mixedMusicMap.get(e);if(!n){this.log.warn(`update music source failed, music id: ${e} not found.`);return}n.updateSettings(t),n.updateListener(t),M(r)||n.setOperation(r),M(o)||n.seek(o),this.kvUpload(t)})}stop(e){return y(this,arguments,function*({id:t}){if(this.mixedMusicMap.has(t)){this.log.info(`remove music source, music id: ${t}`);let r=this.mixedMusicMap.get(t);r!=null&&r.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:r.mixInput.source.node,refId:`ax-${t}`}),r==null||r.stop(),this.mixedMusicMap.delete(t)}t==="*"&&this.destroyAllMusic()})}kvUpload(t){let{track:e,loop:r,volume:o,playbackRate:s,operation:n,seekFrom:a,onTimeUpdate:u,onDurationChange:m,onEnded:h}=t;e&&z.addCount({key:502711}),r&&z.addCount({key:502703}),o&&z.addCount({key:502704}),s&&z.addCount({key:502705}),n&&z.addCount({key:502706}),a&&z.addCount({key:502707}),typeof u!="function"&&z.addCount({key:502709}),typeof h!="function"&&z.addCount({key:502710}),typeof m!="function"&&z.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((t,e)=>{t!=null&&t.mixInput.track&&this.core.room.audioManager.updateAudioReference({type:"remove",audioReference:t.mixInput.track,refId:e}),this.stop({id:e})})}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}};l(ni,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(t,e,r){if(t.url&&t.url!=="*"){let o=t.url.split("?")[0],s=["mp3","ogg","wav","flac"],n=o.split(".").pop(),a=s.indexOf(n)>=0,u=o.startsWith("blob"),m=o.startsWith("data");if(!(a||u||m))throw new ie({code:se.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:r})}if(!t.url&&!t.track)throw new ie({code:se.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:r});An("onTimeUpdate",t.onTimeUpdate),An("onEnded",t.onEnded),An("onDurationChange",t.onDurationChange)}}),l(ni,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(t,e,r){An("onTimeUpdate",t.onTimeUpdate),An("onEnded",t.onEnded),An("onDurationChange",t.onDurationChange)}}),l(ni,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),l(ni,"Name","AudioMixer");var Du=ni;var Mu=0,rh,Li=class Li{constructor(t){this.core=t;l(this,"log");l(this,"audioContext",Xe("denoiser"));l(this,"workletNode");Mu=Mu+1,this.log=t.log.createChild({id:`${this.getAlias()}${Mu}`}),this.log.info(`created id=${this.getAlias()}${Mu}`)}static startValidateRule(t){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,r,o,s){if(!t.room.audioManager.hasAudioTrack)throw new ie({code:se.INVALID_OPERATION,extraCode:5106,fnName:o})}}}preload(t){return rh||(rh=this.doPreload(t)),rh}doPreload(t){return y(this,null,function*(){let e=yield this.core.fileDownloader.download(t,{type:"blob"}),r=URL.createObjectURL(e);try{yield wi(this.audioContext,r)}catch(o){throw this.log.error("load worklet failed",o),o}finally{URL.revokeObjectURL(r)}})}getName(){return Li.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(t){switch(t){case"start":return Li.startValidateRule(this.core);case"update":return Li.updateValidateRule;case"stop":return Li.stopValidateRule}}start(t){return y(this,null,function*(){let{room:e,schedule:r}=this.core,{assetsPath:o=this.core.assetsPath}=t;if(!o)throw new ie({code:se.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(yield this.preload(`${o}/denoiser-wasm.js`),!this.workletNode){let s=String(Date.now()).slice(0,-3),{auth:n,sign:a,status:u,message:m}=yield Ry(r,Ee(J({},t),{timestamp:s}));if(!n)throw this.log.info(`RTCAIDenoiser: ${t.userId} auth result: ${n}. Message: ${m}`),new ie({code:se.INVALID_PARAMETER,message:m});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(t.sdkAppId),userId:t.userId,timestamp:s,sign:a,status:u}}),this.workletNode.port.onmessage=h=>{var T;let{data:g}=h;if(g.type==="cost"){let A=(g==null?void 0:g.max)>20?"warn":(g==null?void 0:g.max)>10?"info":"debug";this.log[A](`avg cost: ${g.value} max: ${g==null?void 0:g.max}(${Ns(new Date(g==null?void 0:g.maxCostTimestamp))}) hist: ${(T=g==null?void 0:g.hist)==null?void 0:T.join(" ")}`)}else g.type==="log"&&this.log[g.logLevel](`${g.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return y(this,null,function*(){})}stop(){return y(this,null,function*(){if(!this.workletNode)return;let{room:t}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield t.audioManager.removeDenoiser(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};l(Li,"updateValidateRule",{type:"object"}),l(Li,"stopValidateRule",{type:"object"}),l(Li,"Name","AIDenoiser");var Ou=Li;function Ry(s,n){return y(this,arguments,function*(i,{sdkAppId:t,userId:e,userSig:r,timestamp:o}){try{let{data:{errCode:a,errMsg:u,sign:m,status:h}}=yield i.getAbilityConfig(t,i.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:t,userId:e,userSig:r,timestamp:o});if(h==="1")return{auth:!0,sign:m,status:h,message:u};let g=gi(t)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",T="Init RTCAIDenoiser failed.",A="";switch(a){case 1:A="Please check your params.";break;case 2:A=`You need to buy packages. Refer to: ${g}`;break;case 3:A="Server is invalid. Please contact our engineer. ";break;case 4:A=`Your packages is not active. Refer to: ${g}`;break;case 5:A=`Your packages is expired. Refer to: ${g}`;break;case 6:A="Your version is not supported.";break}return{auth:!1,status:h,message:u?`${T} Reason: ${u}. ${A}`:`${T}, ${A}`}}catch(a){return{auth:!1,status:"0",message:`Init RTCAIDenoiser failed. All requests failed. ${a}`}}})}var IE=Ki(so(),1);var ih=class extends IE.EventEmitter{constructor(){super();l(this,"observer");l(this,"state","nominal");this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return y(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!mt&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){je.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let r=this.stateNum,o=e[e.length-1];this.state=o.state,(this.stateNum>3||r>3)&&$.info(`${o.source}: ${o.state}`),this.emit("state-changed",{type:o.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(r){je.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:r})}}},vy=new ih,oh=vy;function Cy([i,t]){let e=t.byteLength,r=parseInt(String(e/255),10),o=e%255,s=[];s.push(0,0,0,1,6,i);for(let a=0;a<r;a++)s.push(255);s.push(o);let n=new DataView(t);return s.push(...new Uint8Array(n.buffer)),s.push(128),new os(new DataView(new Uint8Array(s).buffer),!0)}function Ny(i){return i.type==="empty"||i.data.byteLength===0}function wy(i){return i.getInt32(0)===1&&i.getInt8(4)===6}function Dy(i){let t=0,e=0,r=new DataView(i);for(let o=0;o<i.byteLength;o++)switch(r.getUint8(o)){case 0:t++;break;case 1:(t===2||t===3)&&e++,t=0;break;default:t=0;break}return e}function sh({frame:i,seiMessageList:t}){if(!t||t.length===0||i.data.byteLength===0)return i;let r=9-Dy(i.data);if(r<=0)return i;let o=t.splice(0,r).reverse().map(Cy),s=o.reduce((h,g)=>h+g.dataView.byteLength,0),n=new ArrayBuffer(s+i.data.byteLength),a=new DataView(n),u=new DataView(i.data),m=0;for(let h=0;h<o.length;h++)for(let g=0;g<o[h].dataView.byteLength;g++)a.setInt8(m++,o[h].dataView.getInt8(g));for(let h=0;h<i.data.byteLength;h++)a.setInt8(m++,u.getInt8(h));return i.data=n,i}function nh({frame:i,onSEI:t}){try{let e=new DataView(i.data);if(Ny(i)||!wy(e))return i;let r=[],o=0,s=-1,n=-1;for(let a=0;a<i.data.byteLength;a++){let u=e.getUint8(a);if(u===0)o++;else if(u===1){if(o===2||o===3){let m=a-o;if(s===-1?s=m:n===-1&&(n=m,r.push(new os(new DataView(e.buffer.slice(s,n)))),s=m,n=-1),!(e.getUint8(a+1)===6)){i.data=e.buffer.slice(m);break}}o=0}else o=0}t==null||t(r.reverse())}catch(e){}return i}var ah=0,Qa=class Qa{constructor(t){this.core=t;l(this,"log");l(this,"_seiMessageList",[]);l(this,"_smallSeiMessageList",[]);l(this,"_subStreamSeiMessageList",[]);ah++,this.log=t.log.createChild({id:`${this.getAlias()}${ah}`}),this.log.info(`[sei] created id=${this.getAlias()}${ah}`),this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:t,mediaType:e}){try{let r=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return sh({frame:t,seiMessageList:r})}catch(r){this.log.warn(r)}return t}decode({frame:t,track:e}){return nh({frame:t,onSEI:r=>{r.forEach(o=>{this.core.trtc.emit(te.SEI_MESSAGE,{seiPayloadType:o.seiPayloadType,data:o.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(t){switch(t){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:Aa?this.encode:sh,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:Aa?this.decode:nh,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:t,options:e}){var s;let r=[e.seiPayloadType,t],o=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(r):(this._seiMessageList.push(r),o&&this._smallSeiMessageList.push(r)),(s=this.core.room.scriptTransformWorker)==null||s.postMessage({type:"sei",data:r,isMain:!e.toSubStream,small:o})}getName(){return Qa.Name}getAlias(){return"sei"}getGroup(){return"sei"}};l(Qa,"autoStart",!0),l(Qa,"Name","SEI");var xu=Qa;function ch({frame:i,onDump:t}){return t==null||t(),i}function dh({frame:i,onDump:t}){return t==null||t(),i}var yE={"play() error: NotAllowedError:":{tips:i=>i.includes("main <video>")||i.includes("main <audio>")?"Remote stream auto play is restricted and playback fails":"Local stream playback failure, generally only occurs in Android WeChat devices, no need to handle",color:"red",class:"red"},"updateStream() try to recover local stream":{tips:"Device acquisition exception, automatic recovery is in progress"},"updateStream() recover local stream successfully":{tips:"Device acquisition exception, automatic recovery is successful"},"updateStream() failed to recover local stream":{tips:"Device acquisition exception, automatic recovery failed"},"main stream - video track is muted":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is muted":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is muted":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unable to provide media output":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is unable to provide media output":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is unable to provide media output":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unmuted":{tips:"Received enough playback video data"},"main stream - audio track is unmuted":{tips:"Received enough playback audio data"},"auxiliary stream - video track is unmuted":{tips:"Received enough playback screen sharing data"},"main stream - audio player track is ended":{tips:"Remote audio track stopped"},"main stream - video player track is ended":{tips:"Remote video track stopped"},"auxiliary stream - video player track is ended":{tips:"Received enough playback screen sharing data"},"stream - video track is muted":{tips:"Camera capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"stream - video track is unable to provide media output":{tips:"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked, and the customer needs to re-acquire. SDK v4.11.4+ will automatically resume acquisition without customer intervention",color:"orange"},"video track is unable to provide media output":{tips:i=>i.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"stream - audio track is muted":{tips:"Microphone capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"audio track is unable to provide media output":{tips:i=>i.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"Microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio track is unable to provide media output":{tips:"The microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"is adding audio track to current published local stream":{tips:"add audio track",color:"orange"},"is removing audio track from current published local stream":{tips:"remove audio track",color:"orange"},"is removing video track from current published local stream":{tips:"remove video track",color:"orange"},"is adding video track to current published local stream":{tips:"add video track",color:"orange"},"is replacing audio track to current published local main stream":{tips:"replace audio track",color:"orange"},"is replacing video track to current published local main stream":{tips:"replace video track",color:"orange"},"downlink network quality change":{tips:"Downstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"uplink network quality change":{tips:"Upstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"localStream mute video":{tips:"mute upstream video stream",color:"orange"},"localStream unmute video":{tips:"unmute upstream video stream",color:"orange"},"localStream mute audio":{tips:"mute upstream audio stream",color:"orange"},"localStream unmute audio":{tips:"unmute upstream audio stream",color:"orange"},"black detected":{tips:"Detect black screen, which means fps = 0. It is usually caused by network, and the network will be recovered after a while. If the network is normal but has not been restored, it is an abnormal situation."},'main stream start to play with options: {"muted":true}':{tips:"Play the remote stream in silent mode. Generally, the remote stream does not need to be played in silent mode. You need to confirm whether the parameters passed in the client stream.play API call are correct.",color:"orange"},"main stream - audio player is starting playing":{tips:"Remote stream audio playback success",color:"#0dd90d",class:"success"},"main stream - video player is starting playing":{tips:"Remote stream video playback success",color:"#0dd90d",class:"success"},"video player is playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"audio player is playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"stream - video player is starting playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"stream - audio player is starting playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"switch camera success":{tips:"Switch camera success",color:"#0dd90d",class:"success"},"switch microphone success":{tips:"Switch microphone success",color:"#0dd90d",class:"success"},gotStream:{tips:"Local stream capture success"},"local stream is published successfully":{tips:"Publish success",color:"#0dd90d",class:"success"},"encoderImplementation change to OpenH264":{tips:"Use software encoding"},"encoderImplementation change to ExternalEncoder":{tips:"Use hardware encoding"},"getUserMedia with constraints":{tips:"Start media (camera/microphone) capture"},"getDisplayMedia with constraints":{tips:"Start screen sharing capture"},"client-banned":{tips:"Kicked out of the room",color:"red",class:"red",textColor:"#fff"},user_timeout:{tips:"The backend is too long without receiving SDK heartbeat, which is usually caused by the JS thread being blocked for a long time. If the reproduction probability is high, the application browser Performance tool analyzes where the JS thread is blocked.",color:"red",class:"red",textColor:"#fff"},"schedule failed":{tips:"Signaling request failed, does not affect the normal room entry process, SDK will connect to the default signaling domain."},"updateStream() video flag is true, but no camera detected, set video to false":{tips:"When trying to resume camera acquisition, the camera acquisition is not resumed because it is detected that there is no camera.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to bandwidth":{tips:"bandwidth estimation is not enough to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to cpu":{tips:"cpu load is too high to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: hidden":{tips:"User page switched to backend, in mobile devices, this will cause the device to pause the capture, and it will be restored when the user switches backend to the frontend.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: visible":{tips:"User page switched to frontend",color:"orange",class:"orange",textColor:"#fff"},"main stream - audio player is paused":{tips:`The remote stream audio playback is paused, which usually has two possibilities:
59
99
  1. The business side passes in the div tag container for playing audio and video to be removed by the business side from the DOM.
60
100
  2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},"main stream - video player is paused":{tips:`The remote stream video playback is paused, which usually has two possibilities:
61
101
  1. The business side passes in the div tag container for playing audio and video to be removed by the business side from the DOM.
62
- 2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},'"displaySurface":"window"':{tips:"Screen sharing captures the application window",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"monitor"':{tips:"Screen sharing captures the entire screen",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"browser"':{tips:"Screen sharing captures a certain tab page",color:"blue",class:"blue",textColor:"#fff"},updateMediaSettings:{tips:"The resolution and frame rate below are the actual resolution and frame rate captured",color:"blue",class:"blue",textColor:"#fff"},"main stream start to play with":{tips:"Call remoteStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"stream start to play with":{tips:"Call localStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"main setAudioVolume to 0":{tips:"Business side calls remoteStream.setAudioVolume(0) interface to set the playback volume to 0, which will cause the playback to be silent",color:"orange",class:"orange",textColor:"#fff"},"screen sharing was stopped because the video track is ended":{tips:"Screen sharing capture stopped, possible reasons: user clicks the stop button, the window/page shared by the user is closed, etc.",color:"orange",class:"orange",textColor:"#fff"},"Join() => joining room":{tips:"Call client.join interface",color:"blue",class:"blue",textColor:"#fff"},"publish() => publishing local stream":{tips:"Call client.publish interface",color:"blue",class:"blue",textColor:"#fff"},"subscribe() => subscribe to":{tips:"Call client.subscribe interface",color:"blue",class:"blue",textColor:"#fff"},"switchRole() => switch role":{tips:"Call client.switchRole interface",color:"blue",class:"blue",textColor:"#fff"}};["enterRoom","exitRoom","switchRole","destroy","startLocalAudio","updateLocalAudio","stopLocalAudio","startLocalVideo","updateLocalVideo","stopLocalVideo","startScreenShare","updateScreenShare","stopScreenShare","startRemoteVideo","updateRemoteVideo","stopRemoteVideo","muteRemoteAudio","setRemoteAudioVolume"].forEach(o=>{Kp[`${o}()`]={tips:`Call trtc.${o}`,color:"blue",class:"blue",textColor:"#fff"}});var NL=Object.keys(Kp);var zE=0,Uc,Cn=class Cn{constructor(i){this.core=i;d(this,"_core");d(this,"log");d(this,"dumpLocalVideoMap",{});d(this,"dumpRemoteVideoMap",{});d(this,"dialog");this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${++zE}`}),this.log.info("created")}getName(){return Cn.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(i){switch(i){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return f(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog(),this.addVideoProcessor())})}update(e){return f(this,arguments,function*({forceOpen:i}){T(i)&&(i?(yield this.openDebugDiaLog(),this.addVideoProcessor()):(this.closeDebugDiaLog(),this.removeVideoProcessor()))})}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return f(this,null,function*(){var i;if(!this.dialog)try{if(Uc)yield Uc;else{let e=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((i=window.sessionStorage)==null?void 0:i.getItem("TRTC_DEBUG_DIALOG_PATH"))||`https://unpkg.com/${zp}@${xe}/assets/debug-dialog.js`;Uc=this._core.fileDownloader.loadScript(e),yield Uc}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(e){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(e))}})}closeDebugDiaLog(){this.dialog&&(this.dialog.closeDialog(),this.dialog=null)}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):ih,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):rh,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:i,mediaType:e}){return ih({frame:i,onDump:()=>{if(!e)return;let t=e===2?"sub":"main",r=this.dumpLocalVideoMap[t];r&&(r.data.push(i.data.slice(0)),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}decodeVideo({frame:i,track:e}){return rh({frame:i,onDump:()=>{if(!e)return;let t=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];t&&(t.data.push(i.data.slice(0)),t.duration>0&&Date.now()-t.startTimestamp>t.duration*1e3&&t.onDumpEnd())}})}};d(Cn,"Name","Debug"),d(Cn,"autoStart",!0);var Bc=Cn;var ef=o=>{switch(o){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},Fc=class{constructor(i,e,t){d(this,"trackDoneOB");d(this,"startOB");d(this,"stopOB");d(this,"inputFrameCount",0);d(this,"decodedFrameCount",0);d(this,"type","auto");d(this,"config");d(this,"decoder");d(this,"_decodeSink");let{kvStatManager:r,trtc:s}=i;this.config=t.config,this.trackDoneOB=me(e,$.INIT),this.stopOB=nt(),this.startOB=nt(),t.type==="auto"?this.type="webCodecs":this.type=t.type;let n=nt(),a=c=>{let l=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),ue(l,He(this.stopOB),be(()=>{},u=>{e.log.error(u),r.addFailedEvent({key:ef(this.type),error:u}),c>4?this.startOB.error(u):this.startOB.next(c+1)})),ue(l,Yi(1),Du(fn))};ue(this.startOB,mn(0),Yo(a),He(this.stopOB),be(()=>{e.player.setOutput(),n.next("STARTED")},c=>{n.next("FAILED")},()=>{r.addSuccessEvent({key:ef(this.type)}),r.addSuccessEvent({key:504702})}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.startOB.next(0)}close(i){this.stopOB.next(i)}pipe(i){return Qi()(e=>f(this,null,function*(){this._decodeSink=e,e.defer(()=>{var r;(r=this.decoder)==null||r.close()});let{type:t}=this;try{switch(t){case"webCodecs":this.decoder=new AudioDecoder({error:r=>{i.log.error(r),e.error(4)},output:r=>{this.decodedFrameCount++,e.next(r),i.player.write(r)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(r){i.log.error(r),e.error(t==="webCodecs"?2:6)}}))}decodeFrame(i){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:i.data,timestamp:i.timestamp,type:"key"}))}},QE={type:"object"},Rn=class Rn{constructor(i){this.core=i;d(this,"log");d(this,"contextMap",new Map);d(this,"decodeProcessorMap",new WeakMap);this.log=i.log.createChild({id:`${this.getAlias()}`})}getAlias(){return Rn.Name}getGroup(i){return i.track.userId+i.track.streamType}getName(){return Rn.Name}getValidateRule(i){return QE}start(i){let{track:e}=i;this.decodeProcessorMap.set(e,this.decode(i)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:t,track:r})=>this.decodeProcessorMap.has(r)?this.decodeProcessorMap.get(r)({frame:t,track:r}):t,type:3})}decode(i){return({frame:e,track:t})=>{if(t!==i.track)return e;if(this.contextMap.has(t))return this.contextMap.get(t).decodeFrame(e);let r=new Fc(this.core,t,i);return ue(r.trackDoneOB,Yi(1),be(()=>{this.core.clearStarted(this,this.getGroup(i)),this.stop({track:t})})),this.contextMap.set(t,r),r.decodeFrame(e)}}stop({track:i}){let e=this.contextMap.get(i);e&&(e.close("stop"),this.contextMap.delete(i),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(i){let e=this.contextMap.get(i.track);if(e){if(i.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(i.track,new Fc(this.core,i.track,i))}}};d(Rn,"Name","TRTCAudioDecoder");var yn=Rn;var Hc=class{constructor(){d(this,"log");this.log=b.createLogger({id:"exp"})}call(i,e){return f(this,null,function*(){return ae(this[i])?this[i](e):Promise.reject(new v({code:A.INVALID_PARAMETER,message:V({key:L.API_NOT_EXIST,data:{name:i}})}))})}enableAudioFrameEvent(i){return f(this,null,function*(){let{trtcInstance:e,enable:t,userId:r,sampleRate:s=48e3,channelCount:n=1,port:a}=i,{audioManager:c}=e.room,{getPCMAbortCtrlMap:l,audioFrameEventConfigMap:u}=c;if(u.set(r,{enable:t,sampleRate:s,channelCount:n,port:a}),t)if(r==="*")e.room.remotePublishedUserMap.forEach(h=>{if(h.remoteAudioTrack.isAvailable){if(l.get(h.userId))return;let m=c.getPCM(g=>{e.emit(k.AUDIO_FRAME,g)},h.userId);l.set(h.userId,m)}});else{if(l.get(r))return;let h=c.getPCM(m=>{e.emit(k.AUDIO_FRAME,m)},r);l.set(r,h)}else if(r==="*")e.room.remotePublishedUserMap.forEach(h=>{if(h.remoteAudioTrack.isSubscribed){let{userId:m}=h,g=l.get(m);g==null||g.abort("disable"),l.delete(m)}});else{let h=l.get(r);h==null||h.abort("disable"),l.delete(r)}})}};M([Np({name:"options",type:"object",required:!0,properties:{enable:{required:!0,type:"boolean"},userId:{required:!0,type:"string"},sampleRate:{type:"number",values:[8e3,16e3,32e3,44100,48e3]},channelCount:{type:"number",values:[1,2]},port:{type:"messageport"}}})],Hc.prototype,"enableAudioFrameEvent",1);var tf=new Hc;var rf=0,bn=new Set,$e=null;nd(Qp);Lo.checkStorage();var YE={RtcError:x,ErrorCode:U,ErrorCodeDictionary:kt},X=class X extends of.EventEmitter{constructor(e,t){super();d(this,"_room");d(this,"_eventListened",new Set);d(this,"_localVideoTrack",null);d(this,"_localAudioTrack",null);d(this,"_localScreenTrack",null);d(this,"_localScreenAudioTrack",null);d(this,"_localVideoConfig",null);d(this,"_localScreenConfig",null);d(this,"_localAudioConfig",null);d(this,"_remoteVideoConfigMap",new Map);d(this,"_remoteAudioConfigMap",new Map);d(this,"_remoteAudioVolumeMap",new Map);d(this,"_remoteAudioMuteMap",new Map);d(this,"_mediaTrackMap",new WeakMap);d(this,"_log",b.createLogger({id:`t${++rf}`}));d(this,"_plugins",new Map);d(this,"_networkQuality",null);d(this,"_speakerId");d(this,"enterRoomParams");d(this,"_enableAutoSwitchWhenRecapturing",!0);this._room=new e(D({logger:this._log,frameWorkType:X.frameWorkType},t)),this._room.videoDecodeFallbackType=t.videoDecodeFallback,de(t.enableAutoSwitchWhenRecapturing)&&(this._enableAutoSwitchWhenRecapturing=t.enableAutoSwitchWhenRecapturing),this._log.info(`create() ${JSON.stringify(t,(r,s)=>r==="plugins"?s.map(n=>n.Name):s)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(r){return this._room.audioManager.dump(r)}}}),t.plugins&&t.plugins.forEach(r=>{this._use(r,t.assetsPath)}),this._use(xc,t.assetsPath),this._use(kc,t.assetsPath),this._use(Pc,t.assetsPath),this._use(yn,t.assetsPath),this._use(Bc),t.enableSEI&&Ys&&this._use(Vc),this._room.on("audio-volume",r=>{var s,n;!r.find(a=>a.userId==="")&&this._localAudioTrack&&r.push({userId:"",volume:Math.floor(((s=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?s:this._localAudioTrack.getAudioLevel())*100),floatVolume:(n=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?n:this._localAudioTrack.getInternalAudioLevel()}),t.volumeType===1&&r.forEach(a=>{var l;let c=a.userId===""?this._localAudioTrack:(l=this.room.remotePublishedUserMap.get(a.userId))==null?void 0:l.remoteAudioTrack;c&&(a.volume=c.dbVolume)}),this.emit(k.AUDIO_VOLUME,{result:r.sort((a,c)=>c.volume-a.volume)})}),this._room.videoManager.on("error",r=>{this._log.error(new x({code:U.OPERATION_FAILED,extraCode:5504,message:r.message,originError:r}))}),this._listenEvents(),this._initActiveSpeaker(),Jp(this,"trtc")}static create(e){}static _create(e,t){Mp();let r=new X(e,t||{});return bn.add(r),r}get room(){return this._room}_listenEvents(){Ye(this,this._room).add("peer-join",e=>{let{userId:t}=e;this.emit(k.REMOTE_USER_ENTER,{userId:t})}).add("peer-leave",e=>{this.emit(k.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().finally(()=>{this.emit(k.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(k.ERROR,x.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(k.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let t=w(D({},e),{uplinkRTT:Math.min(e.uplinkRTT,ys),downlinkRTT:Math.min(e.downlinkRTT,ys)});this.emit(k.NETWORK_QUALITY,t)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{Ye(r,r).add("player-state-changed",s=>{let n=w(D({},s),{userId:e.userId});r.kind===p.VIDEO&&(n.streamType=_r(r.streamType)),this.emit(r.kind===p.AUDIO?k.AUDIO_PLAY_STATE_CHANGED:k.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",s=>{s.getCode()===A.PLAY_NOT_ALLOWED&&this.emit(k.AUTOPLAY_FAILED,{userId:r.userId,mediaType:r.strMediaType,resume:()=>r.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{ve(r)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:t})=>{let{userId:r}=t,s=e.audioAvailable,n=e.videoAvailable,{audioAvailable:a,videoAvailable:c}=t;a||this._remoteAudioConfigMap.delete(r),c||this._removeRemoteVideoConfig(r,"main"),t.hasAuxiliary||this._removeRemoteVideoConfig(r,"sub"),n!==c&&(c?this._onVideoAvailable({userId:r,streamType:"main"}):this._onVideoUnavailable({userId:r,streamType:"main"}),this.emit(c?k.REMOTE_VIDEO_AVAILABLE:k.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"main"})),s!==a&&(a?this._onAudioAvailable({userId:r}):this._onAudioUnavailable({userId:r,muteState:t}),this.emit(a?k.REMOTE_AUDIO_AVAILABLE:k.REMOTE_AUDIO_UNAVAILABLE,{userId:r})),e.hasAuxiliary!==t.hasAuxiliary&&(t.hasAuxiliary?this._onVideoAvailable({userId:r,streamType:"sub"}):this._onVideoUnavailable({userId:r,streamType:"sub"}),this.emit(t.hasAuxiliary?k.REMOTE_VIDEO_AVAILABLE:k.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"sub"}))}).add("sei-message",e=>{this.emit(k.SEI_MESSAGE,w(D({},e),{streamType:_r(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(k.ERROR,new x({code:U.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var s,n,a,c,l,u,h;let t={2:"big",3:"small",7:"sub"},r={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((s=e.msg_down_stream_info[0])==null?void 0:s.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((a=this._networkQuality)==null?void 0:a.downlinkRTT)||0,ys),upLoss:((c=this._networkQuality)==null?void 0:c.uplinkLoss)||0,downLoss:((l=this._networkQuality)==null?void 0:l.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((u=e.msg_up_stream_info.msg_audio_status)==null?void 0:u.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((h=e.msg_up_stream_info.msg_audio_status)==null?void 0:h.uint32_audio_level)||0)/Tt},video:e.msg_up_stream_info.msg_video_status.filter(m=>t[m.uint32_video_stream_type]).map(m=>({bitrate:(m.uint32_video_codec_bitrate||0)/1e3,width:m.uint32_video_width,height:m.uint32_video_height,frameRate:m.uint32_video_enc_fps,videoType:t[m.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(m=>({userId:m.msg_user_info.str_identifier,audio:{bitrate:(m.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(m.msg_audio_status.uint32_audio_level||0)/Tt,point2pointDelay:(m.msg_audio_status.uint32_audio_p2p_delay||0)+(m.msg_audio_status.uint32_audio_cache_ms||0),jitterBufferDelay:m.msg_audio_status.uint32_audio_cache_ms||0},video:m.msg_video_status.map(g=>({bitrate:(g.uint32_video_codec_bitrate||0)/1e3,width:g.uint32_video_width,height:g.uint32_video_height,frameRate:g.uint32_video_dec_fps,videoType:t[g.uint32_video_stream_type],point2pointDelay:(g.uint32_video_p2p_delay||0)+(g.uint32_video_cache_ms||0),jitterBufferDelay:g.uint32_video_cache_ms||0,codec:g.uint32_video_codec}))}))};this.emit(k.STATISTICS,r)}).add("custom-message",e=>{this.emit(k.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(k.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(k.FIRST_VIDEO_FRAME,w(D({},e),{streamType:_r(e.streamType)}))}).add("audio-frame",e=>{this.emit(k.AUDIO_FRAME,e)}),Ye(this,Pe).add("audioInputAdded",e=>{this.emit(k.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(k.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>f(this,null,function*(){if(this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),$e&&$e.deviceId===Rs){let t=(yield pr()).find(r=>r.deviceId===Rs);t&&$e.groupId!==t.groupId&&($e=t,this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}})).add("audioOutputRemoved",e=>f(this,null,function*(){this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let t=(yield pr())[0];if(!t||!$e||$e.groupId===t.groupId)return;let r=$e.deviceId===e.deviceId,s=$e.deviceId===Rs&&$e.deviceId===t.deviceId;(r||s)&&($e=t,this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}))}use(e){let t,r;"plugin"in e?(t=e.plugin,r=e.assetsPath):t=e,this._use(t,r)}_use(e,t){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let s=new e(Wp.call(this,{TRTC:X,room:this._room,errorModule:YE,assetsPath:t}));this._plugins.set(e.Name,s),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return f(this,null,function*(){var c,l;this.enterRoomParams=e;let{scene:t="rtc",enableAutoPlayDialog:r=!0,autoReceiveAudio:s=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!te(e.proxy)&&e.proxy.turnServer&&((l=(c=this._room).setTurnServer)==null||l.call(c,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=r,this._room.autoReceiveAudio=s,this._room.autoReceiveVideo=n,de(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);let a={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8,useH265:e.useH265,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,t,X.frameWorkType),this._checkTrackToPublish(),Xu.start()})}exitRoom(){return f(this,null,function*(){return yield this._exitRoom()})}switchRoom(e){return f(this,null,function*(){if(this.room.isSwitchRoomSupported())yield this._room.switchRoom(e);else{yield this.exitRoom();let t=D(D({},this.enterRoomParams),e);yield this.enterRoom(t)}})}switchRole(e,t){return f(this,null,function*(){t!=null&&t.privateMapKey&&(this._room.privateMapKey=t.privateMapKey),t!=null&&t.latencyLevel&&(this._room.latencyLevel=t.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){ve(this),this.removeAllListeners(),this._room.destroy(),bn.delete(this),bn.size===0&&Xu.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var t;return(t=e.destroy)==null?void 0:t.call(e)}),this._plugins.clear(),E.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return f(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:t=!0,mute:r,option:s}=e,n=new At(this._room.audioManager),a={},c={muted:!0};s&&(T(s.microphoneId)?T(s.audioTrack)||(a.customSource=s.audioTrack):a.deviceId=s.microphoneId,s&&q(s.captureVolume)&&n.setCaptureVolume(s.captureVolume),T(s.profile)||(te(s.profile)?Fn[s.profile]&&n.setProfile(Fn[s.profile]):n.setProfile(s.profile)),q(s.earMonitorVolume)&&(c.muted=!(s.earMonitorVolume>0),c.volume=s.earMonitorVolume),T(s.echoCancellation)||(n.profile.echoCancellation=s.echoCancellation),T(s.noiseSuppression)||(n.profile.noiseSuppression=s.noiseSuppression),T(s.autoGainControl)||(n.profile.autoGainControl=s.autoGainControl),de(this._enableAutoSwitchWhenRecapturing)&&(n.enableAutoSwitchWhenRecapturing=this._enableAutoSwitchWhenRecapturing)),n.on("5",l=>{this.emit(k.ERROR,new x({code:U.DEVICE_ERROR,extraCode:5309,messageParams:{error:l}}))}),n.on("2",l=>{this.emit(k.DEVICE_CHANGED,{type:"microphone",action:"active",device:l})}),n.on("4",l=>{let u;l.error&&(u=x.convertFrom(l.error)),this.emit(k.PUBLISH_STATE_CHANGED,w(D({},l),{error:u}))}),n.on("6",()=>{this.emit(k.ERROR,new x({code:U.OPERATION_FAILED,extraCode:5506,message:"audio encode failed"}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(a),T(r)||n.setMute(r),Ye(n,n).add("player-state-changed",l=>{this.emit(k.AUDIO_PLAY_STATE_CHANGED,w(D({},l),{userId:""}))}),t&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=w(D({},e),{publish:t}),yield this._updateAudioPlayOption({playOption:c,track:n}),E.emit("113",{userId:"",room:this.room})})}updateLocalAudio(e){return f(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:t,mute:r,option:s}=e,n={};s&&(s.microphoneId?yield this._localAudioTrack.switchDevice(s.microphoneId):T(s.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(s.audioTrack)),T(s.captureVolume)||this._localAudioTrack.setCaptureVolume(s.captureVolume),T(s.earMonitorVolume)||(n.muted=!(s.earMonitorVolume>0),n.volume=s.earMonitorVolume),yield this._localAudioTrack.update3A(s)),this._room.isJoined&&!T(t)&&(t&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!t&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),T(r)||this._localAudioTrack.setMute(r),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),Bt(this._localAudioConfig,e)})}stopLocalAudio(){return f(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),E.emit("114",{userId:"",room:this.room}),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),ve(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null)})}startLocalVideo(){return f(this,arguments,function*(e={publish:!0,view:null,capture:!0}){var h;if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:t,publish:r=!0,capture:s=!0,mute:n,option:a}=e,c=new Be(this._room.videoManager),l={},u={};a&&(de(a.avoidCropping)&&(c.avoidCropping=a.avoidCropping),a.cameraId?l.deviceId=a.cameraId:T(a.useFrontCamera)?T(a.videoTrack)||(l.customSource=a.videoTrack):l.facingMode=a.useFrontCamera?p.FACING_MODE_USER:p.FACING_MODE_ENVIRONMENT,T(a.retryWhenExactFailed)||(l.retryWhenExactFailed=a.retryWhenExactFailed),a.qosPreference&&(l.contentHint=Sn(a.qosPreference)),T(a.profile)||(te(a.profile)?Lt[a.profile]&&c.setProfile(Lt[a.profile]):c.setProfile(a.profile)),T(a.fillMode)||(u.objectFit=a.fillMode),T(a.mirror)||(u.mirror=a.mirror),T(a.small)||(T(a.smallMode)||(this._room.smallMode=a.smallMode),de(a.small)&&a.small===!1?c.stopSmall():c.updateSmallConfig(os(a.small,!0))),T(a.rotation)||c.setRotation(a.rotation),de(this._enableAutoSwitchWhenRecapturing)&&(c.enableAutoSwitchWhenRecapturing=this._enableAutoSwitchWhenRecapturing)),c.once("first-video-frame",m=>{this.emit(k.FIRST_VIDEO_FRAME,w(D({},m),{streamType:_r(m.streamType)}))}),c.on("5",m=>{this.emit(k.ERROR,new x({code:U.DEVICE_ERROR,extraCode:5308,messageParams:{error:m}}))}),c.on("2",m=>{this.emit(k.DEVICE_CHANGED,{type:"camera",action:"active",device:m})}),c.on("4",m=>{let g;m.error&&(g=x.convertFrom(m.error)),this.emit(k.PUBLISH_STATE_CHANGED,w(D({},m),{error:g}))}),c.on("6",()=>{this.emit(k.ERROR,new x({code:U.OPERATION_FAILED,extraCode:5505,message:"video encode failed"}))}),this._listenOutputTrackChanged(c),s?yield c.capture(l):(h=c.manager)==null||h.changeInput(c),T(n)||(yield c.setMute(n)),Ye(c,c).add("player-state-changed",m=>{this.emit(k.VIDEO_PLAY_STATE_CHANGED,w(D({},m),{userId:"",streamType:"main"}))}),r&&this._room.isJoined&&this._room.publish(c).catch(()=>{}),this._localVideoTrack=c,this._localVideoConfig=w(D({},e),{view:t,publish:r,capture:s}),yield this._updateVideoPlayOption({view:t,playOption:u,track:c})})}updateLocalVideo(e){return f(this,null,function*(){var l,u,h;if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:t,publish:r,mute:s,capture:n,option:a}=e,c={};if(this._localVideoConfig.capture)n!==!1?a!=null&&a.cameraId?yield this._localVideoTrack.switchDevice(a==null?void 0:a.cameraId):T(a==null?void 0:a.useFrontCamera)?T(a==null?void 0:a.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(a==null?void 0:a.videoTrack)):yield this._localVideoTrack.switchDevice(a!=null&&a.useFrontCamera?p.FACING_MODE_USER:p.FACING_MODE_ENVIRONMENT):this._localVideoTrack.stopCapture();else if(n){let m={};m.deviceId=(a==null?void 0:a.cameraId)||((l=this._localVideoConfig.option)==null?void 0:l.cameraId),m.facingMode=a!=null&&a.useFrontCamera||(u=this._localVideoConfig.option)!=null&&u.useFrontCamera?p.FACING_MODE_USER:p.FACING_MODE_ENVIRONMENT,m.customSource=(a==null?void 0:a.videoTrack)||((h=this._localVideoConfig.option)==null?void 0:h.videoTrack),yield this._localVideoTrack.capture(m)}a&&(T(a.profile)||(te(a.profile)?Lt[a.profile]&&this._localVideoTrack.setProfile(Lt[a.profile]):this._localVideoTrack.setProfile(a.profile),(!a.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(a.cameraId))&&T(a.useFrontCamera)&&(yield this._localVideoTrack.applyProfile())),T(a.fillMode)||(c.objectFit=a.fillMode),T(a.mirror)||(c.mirror=a.mirror),T(a.rotation)||this._localVideoTrack.setRotation(a.rotation),a.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(Sn(a.qosPreference)),T(a.small)||(de(a.small)&&!a.small?this._localVideoTrack.stopSmall():this._localVideoTrack.updateSmallConfig(os(a.small,!0)))),this._room.isJoined&&T(r)&&this._localVideoConfig.publish&&n&&!this._localVideoConfig.capture&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._room.isJoined&&((r!=null?r:this._localVideoConfig.publish)?this._room.publish(this._localVideoTrack).catch(()=>{}):this._room.unpublish(this._localVideoTrack).catch(()=>{})),T(s)||(yield this._localVideoTrack.setMute(s)),yield this._updateVideoPlayOption({view:t,playOption:c,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),Bt(this._localVideoConfig,e)})}stopLocalVideo(){return f(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),ve(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return f(this,arguments,function*(e={publish:!0,view:null}){if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:t=null,publish:r=!0,muteSystemAudio:s,option:n}=e,a=new Ke(this._room.videoManager);a.on("4",m=>{let g;m.error&&(g=x.convertFrom(m.error)),this.emit(k.PUBLISH_STATE_CHANGED,w(D({},m),{error:g}))}),a.once("first-video-frame",m=>{this.emit(k.FIRST_VIDEO_FRAME,w(D({},m),{streamType:_r(m.streamType)}))}),this._listenOutputTrackChanged(a),e.streamType==="main"&&(a.mediaType=4);let c=null,l={},u={};n&&(T(n.profile)||(te(n.profile)?Hn[n.profile]&&a.setProfile(Hn[n.profile]):a.setProfile(n.profile)),n.systemAudio&&(l.systemAudio=!0,l.echoCancellation=n.echoCancellation,l.noiseSuppression=n.noiseSuppression,l.autoGainControl=n.autoGainControl),T(n.fillMode)||(u.objectFit=n.fillMode),n.videoTrack&&(l.videoTrack=n.videoTrack),n.audioTrack&&(l.audioTrack=n.audioTrack),n.captureElement&&(l.captureElement=n.captureElement),n.preferDisplaySurface&&(l.preferDisplaySurface=n.preferDisplaySurface),n.qosPreference&&(l.contentHint=Sn(n.qosPreference)));let h=yield a.capture(l);if(a.mediaTrack.addEventListener(p.ENDED,()=>{this._stopScreenShare(),this.emit(k.SCREEN_SHARE_STOPPED)}),h.getAudioTracks()[0]&&(c=new Ii(this._room.audioManager),yield c.setInputMediaStreamTrack(h.getAudioTracks()[0]),de(s)&&c.mediaTrack&&(c.mediaTrack.enabled=!s),this._speakerId&&c.setAudioOutput(this._speakerId)),Ye(a,a).add("player-state-changed",m=>{this.emit(k.VIDEO_PLAY_STATE_CHANGED,w(D({},m),{userId:"",streamType:"sub"}))}),r&&this._room.isJoined){let m=[a];c&&(m.push(c),this._checkScreenAudioEchoCancellation(a,c)),this._room.publish(...m).catch(()=>{})}this._localScreenTrack=a,this._localScreenAudioTrack=c,this._localScreenConfig=w(D({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:u,track:a})})}updateScreenShare(e){return f(this,null,function*(){var c;if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:t,publish:r,muteSystemAudio:s,option:n}=e,a={};if(n&&(T(n.fillMode)||(a.objectFit=n.fillMode),n.qosPreference)){let l=Sn(n.qosPreference);this._localScreenTrack.setContentHint(l)}this._room.isJoined&&!T(r)&&(r&&!this._localScreenConfig.publish&&(this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})),this._localScreenConfig.publish&&!r&&(this._room.unpublish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.unpublish(this._localScreenAudioTrack).catch(()=>{}))),(c=this._localScreenAudioTrack)!=null&&c.mediaTrack&&de(s)&&(this._localScreenAudioTrack.mediaTrack.enabled=!s),yield this._updateVideoPlayOption({view:t,playOption:a,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),Bt(this._localScreenConfig,e)})}stopScreenShare(){return f(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return f(this,null,function*(){let{view:t,userId:r,streamType:s,option:n}=e,a=`${r}_${s}`;if(this._remoteVideoConfigMap.has(a)){this._log.warn(`remote video has already started. userId:${r}, streamType:${s}`);return}let c=this._room.remotePublishedUserMap.get(r);if(!c)return;let l={},u=s==="main"?c.remoteVideoTrack:c.remoteAuxiliaryTrack;u.on("decode-failed",h=>{this.emit(k.ERROR,new x({code:U.OPERATION_FAILED,extraCode:5507,message:"video decode failed"}))}),this._listenOutputTrackChanged(u),n&&(T(n.fillMode)||(l.objectFit=n.fillMode),T(n.mirror)||(l.mirror=n.mirror),T(n.poster)||(l.poster=n.poster),l.canvasRender=n.canvasRender,s==="main"&&!T(n.small)&&(!c.remoteVideoTrack.isSubscribing&&!c.remoteVideoTrack.isSubscribed&&c.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,u.user))),yield this._room.subscribe(u),yield this._enableVideoDecodeFallback(u,s),yield this._updateVideoPlayOption({view:t,playOption:l,track:u}),this._emitTrackEvent(u),this._remoteVideoConfigMap.set(a,{config:e}),n&&!T(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:u,view:t,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return f(this,null,function*(){var I,R;let{view:t,userId:r,streamType:s,option:n}=e,a=`${r}_${s}`,c=this._remoteVideoConfigMap.get(a);if(!c||!this._room.remotePublishedUserMap.has(r))return;let l={};n&&(T(n.fillMode)||(l.objectFit=n.fillMode),T(n.mirror)||(l.mirror=n.mirror));let u=null,h=this._room.remotePublishedUserMap.get(r);if(s==="main"&&(h!=null&&h.muteState.hasVideo)&&(u=h.remoteVideoTrack),s==="sub"&&(h!=null&&h.muteState.hasAuxiliary)&&(u=h.remoteAuxiliaryTrack),!u)return;let{config:m}=c;s==="main"&&n&&!T(n.small)&&this._room.changeType(n.small,u.user),yield this._updateVideoPlayOption({view:t,playOption:l,track:u,prevConfig:m}),Bt(m,e);let g=T(n==null?void 0:n.receiveWhenViewVisible)?(I=m.option)==null?void 0:I.receiveWhenViewVisible:n.receiveWhenViewVisible,S=T(t)?m.view:t,_=T(n==null?void 0:n.viewRoot)?(R=m.option)==null?void 0:R.viewRoot:n.viewRoot;this._observeView({remoteTrack:u,view:S,receiveWhenViewVisible:g,viewRoot:_})})}stopRemoteVideo(e){return f(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,t=!0){return f(this,null,function*(){let r=[],s=this._room.remotePublishedUserMap.get(e.userId);if(s){let{muteState:n,remoteVideoTrack:a,remoteAuxiliaryTrack:c}=s;e.streamType==="main"&&(a.stop(),n.hasVideo&&r.push(a)),e.streamType==="sub"&&(c.stop(),n.hasAuxiliary&&r.push(c))}for(let n of r)t&&(yield this._room.unsubscribe(n),this._mediaTrackMap.delete(n.outMediaTrack));this._removeRemoteVideoConfig(e.userId,e.streamType)})}_removeRemoteVideoConfig(e,t){let r=`${e}_${t}`,s=this._remoteVideoConfigMap.get(r);s&&s.observer&&s.observer.disconnect(),this._remoteVideoConfigMap.delete(r)}muteRemoteAudio(e,t){return f(this,null,function*(){this._remoteAudioMuteMap.set(e,t);try{if(e==="*")if(t)yield this._stopRemoteAudio({userId:e});else{let r=[...this._room.remotePublishedUserMap.values()];for(let s of r)s.muteState.hasAudio&&!this._remoteAudioConfigMap.has(s.userId)&&(yield this._startRemoteAudio({userId:s.userId}))}else t?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}))}catch(r){throw this._remoteAudioMuteMap.delete(e),r}})}setRemoteAudioVolume(e,t){if(e==="*"){let r=[...this._room.remotePublishedUserMap.values()];for(let s of r)this._remoteAudioVolumeMap.set(s.userId,t),s.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:s.remoteAudioTrack})}else if(e){let r=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,t),r&&r.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:r.remoteAudioTrack})}}startPlugin(e,t){return f(this,null,function*(){return e.start(t)})}updatePlugin(e,t){return f(this,null,function*(){return e.update(t)})}stopPlugin(e,t){return f(this,null,function*(){return e.stop(t)})}enableAudioVolumeEvaluation(e=2e3,t=!1){this._room.enableAudioVolumeEvaluation(e,t)}on(e,t,r){if(this.listeners(e).includes(t))return this;if(this._log.debug("on",e),super.on(e,t,r),this._eventListened.add(e),this.listeners(k.AUDIO_FRAME).length>0){let{audioFrameEventConfigMap:s}=this.room.audioManager;s.get("")||s.set("",{enable:!0}),this._localAudioTrack&&this.room.audioManager.handleLocalTrackStarted({userId:"",room:this.room})}return this}emit(e,...t){try{Hp.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(t)}`)}catch(r){}return super.emit(e,...t)}off(e,t,r){if(this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners()):super.off(e,t,r),(e===X.EVENT.AUDIO_FRAME||e==="*")&&this.listeners(X.EVENT.AUDIO_FRAME).length===0){let{getPCMAbortCtrlMap:s}=this.room.audioManager;s.forEach(n=>{n==null||n.abort("off")}),s.clear()}return this}getAudioTrack(e={userId:"",streamType:"main"}){let t,r=null,s="main",n=!1;if(te(e)?t=e:(t=e.userId,n=e.processed===!0,e.streamType&&(s=e.streamType)),t){let a=this._room.remotePublishedUserMap.get(t);a&&(r=a.remoteAudioTrack)}else r=s==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return r?n&&r.outMediaTrack&&r.outMediaTrack!==r.mediaTrack?r.outMediaTrack.clone():r.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:t="",streamType:r="main",processed:s=!1}=e,n=null;if(t==="")r==="main"&&this._localVideoTrack&&(n=this._localVideoTrack),r==="sub"&&this._localScreenTrack&&(n=this._localScreenTrack);else{let a=this._room.remotePublishedUserMap.get(t);a&&(n=r==="main"?a.remoteVideoTrack:a.remoteAuxiliaryTrack)}return n?s&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:t,streamType:r="main"}=e;if(t){let s=this._room.remotePublishedUserMap.get(t);if(r==="main"&&(s!=null&&s.muteState.hasVideo))return s.remoteVideoTrack.getVideoFrame();if(r==="sub"&&(s!=null&&s.muteState.hasAuxiliary))return s.remoteAuxiliaryTrack.getVideoFrame()}else{if(r==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(r==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var t,r;this._speakerId=e,(t=this._localAudioTrack)==null||t.setAudioOutput(e),(r=this._localScreenAudioTrack)==null||r.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(s=>s.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return f(this,null,function*(){(yield pr()).forEach(r=>{r.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}),$e=r)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/TRTC.html#.setCurrentSpeaker')})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return f(this,null,function*(){let{userId:t}=e;if(this._remoteAudioConfigMap.has(t)){this._log.warn(`remote audio has already started. userId:${t}`);return}let r=this._room.remotePublishedUserMap.get(t);if(!r)return;let s={},n=r.remoteAudioTrack;n.on("decode-failed",a=>{this.emit(k.ERROR,new x({code:U.OPERATION_FAILED,extraCode:5506,message:"audio decode failed"}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let a=this._remoteAudioVolumeMap.get(t),c=q(a)?a:100;s.volume=c,this._remoteAudioConfigMap.set(t,e),yield this._room.subscribe(n),ue(me(n,"decode-failed"),He(me(n,$.INIT)),be(()=>{this.startPlugin(yn.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:s,track:n}),E.emit("115",{userId:t,room:this.room}),n.outMediaTrack&&this.room.audioManager.updateAudioReference({type:"add",audioReference:n.outMediaTrack,refId:`ra-${t}`})}catch(a){throw this._remoteAudioConfigMap.delete(t),a}this._emitTrackEvent(n)})}_stopRemoteAudio(e,t=!0){return f(this,null,function*(){let r=this._room.remotePublishedUserMap.get(e.userId);r&&(r.remoteAudioTrack.stop(),r.muteState.hasAudio&&t&&(yield this._room.unsubscribe(r.remoteAudioTrack)),this._mediaTrackMap.delete(r.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`),E.emit("116",{userId:e.userId,room:this.room}),this.room.audioManager.updateAudioReference({type:"remove",refId:`ra-${e.userId}`})})}_enableVideoDecodeFallback(e,t){let r=this._room.videoDecodeFallbackType;if(!r||!this._plugins.has("TRTCVideoDecoder"))return;e.log.debug("remote video will fall back when decode failed",e.id);let s;ue(me(e,"decode-failed"),He(me(e,$.INIT)),ku(()=>{this._room.downlinkVideoCodec!=="h265"&&this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:r})}),Qr(me(e,"decode-downgrade-state-changed")),be(n=>{s=n.state,this.emit(k.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,w(D({},n),{streamType:t,userId:e.userId}))},n=>{e.log.error("fallback",n)},()=>{s==="STARTED"&&e.log.info("fallback complete")}))}_updateVideoPlayOption(n){return f(this,arguments,function*({view:e,playOption:t,track:r,prevConfig:s}){if(r.setMirror(t.mirror),T(e)&&s&&s.view&&!go(t)){let a=Eo(s.view);a.length>0&&(yield r.play(a,t))}if(!T(e)){let a=Eo(e);a.length>0?yield r.play(a,t):r.stop()}})}_updateAudioPlayOption(s){return f(this,arguments,function*({playOption:e={},track:t,prevConfig:r}){if(!t.isPlayCalled)try{yield t.play(null,e)}catch(n){}if(T(e.muted)||t.setPlayerMute(e.muted),T(e.volume)||t.setAudioVolume(e.volume/100),t instanceof At&&t.mediaTrack){let n=e.muted===!1&&!T(e.volume)&&e.volume>0?"add":"remove";this.room.audioManager.updateAudioReference({type:n,audioReference:t.mediaTrack,refId:"em"})}else if(t instanceof Yt){let n=e.muted?0:e.volume;if(T(n))return;this.room.audioManager.updateAudioReference({type:"updateVolume",refId:`ra-${t.userId}`,volume:e.volume})}})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e,t=!0){let r=e.isRemote?e.userId:"";e.outMediaTrack&&(t&&this._mediaTrackMap.get(e.outMediaTrack)===r||(this._mediaTrackMap.set(e.outMediaTrack,r),this.emit(k.TRACK,{userId:r,streamType:_r(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var t,r,s;let e=[];if((t=this._localAudioConfig)!=null&&t.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(r=this._localVideoConfig)!=null&&r.publish&&this._localVideoTrack&&e.push(this._localVideoTrack),(s=this._localScreenConfig)!=null&&s.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack),this._checkScreenAudioEchoCancellation(this._localScreenTrack,this._localScreenAudioTrack)),e.length!==0)return this._room.publish(...e).catch(()=>{})}_observeView({remoteTrack:e,view:t,receiveWhenViewVisible:r=!1,viewRoot:s}){if(T(t))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${_r(e.streamType)}`);if(!n)return;let a=n.observer||void 0;if(t===null||Se(t)&&t.length===0||!r){a==null||a.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let l=n.visibleViewMap||new Map,u=-1;(!a||a.root!==s)&&(a==null||a.disconnect(),l.clear(),a=new IntersectionObserver(m=>{m.forEach(g=>{l.set(g.target,g.isIntersecting),e.log.info(`view ${g.target.id} is${g.isIntersecting?"":" not"} visible`)}),clearTimeout(u),u=window.setTimeout(()=>{[...l.values()].find(S=>S)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:s}));let h=new Set(Eo(t));l.forEach((m,g)=>{h.has(g)||(a.unobserve(g),l.delete(g))}),h.forEach(m=>{l.set(m,!0),a.observe(m)}),a.takeRecords().forEach(m=>{l.set(m.target,m.isIntersecting)}),n.visibleViewMap=l,n.observer=a}_exitRoom(){return f(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch()}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let t=e.includes("main")?"main":"sub",r=e.split(`_${t}`)[0];r&&this._stopRemoteVideo({userId:r,streamType:t}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),this._remoteAudioVolumeMap.clear(),qp(this),this._room.remotePublishedUserMap.forEach(e=>{ve(e.remoteAudioTrack),ve(e.remoteVideoTrack),ve(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return f(this,null,function*(){var e,t;if(this._localScreenTrack){if(this._room.isJoined){let r=[this._localScreenTrack];this._localScreenAudioTrack&&r.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...r).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(((t=this._localScreenAudioTrack.trackSettings)==null?void 0:t.echoCancellation)===!1&&this.stopPlugin("AudioProcessor"),this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),ve(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_checkScreenAudioEchoCancellation(e,t){return f(this,null,function*(){var s,n;if(!e||!t)return;let r=(s=e.trackSettings)==null?void 0:s.displaySurface;if(((n=t.trackSettings)==null?void 0:n.echoCancellation)===!1&&(r==="monitor"||r==="browser"&&e.isShareCurrentTab)){this._log.warn("echoCancellation of screen audio track is disable. Try starting audioProcessor plugin");try{yield this.startPlugin("AudioProcessor",{sdkAppId:Number(this.room.sdkAppId),userId:this._room.userId,userSig:this.room.userSig,isScreenAudioNeedAudioProcess:!0,isLocalAudioNeedAudioProcess:!1})}catch(a){this._log.warn("start audioProcessor plugin failed: ",a)}}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!$e||Xo($e))&&(this._initActiveSpeaker(),E.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return f(this,null,function*(){if($e&&!Xo($e))this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:$e});else{let e=yield pr();e[0]&&!Xo(e[0])?($e=e[0],this.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):E.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable({userId:e}){let t=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(t===!1||this._room.autoReceiveAudio&&!t)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:t}){if(!this._room.autoReceiveVideo)return;let r=this._room.remotePublishedUserMap.get(e);if(r){let s=t==="main"?r.remoteVideoTrack:r.remoteAuxiliaryTrack,n=[s];this._room.autoReceiveAudio&&r.remoteAudioTrack.isAvailable&&n.push(r.remoteAudioTrack),this._room.subscribe(...n).then(()=>{this._emitTrackEvent(s)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:t}){t.hasAudio&&t.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:t}){this._stopRemoteVideo({userId:e,streamType:t},!1).catch(()=>{})}sendSEIMessage(e,t){var s;let r=this._plugins.get("SEI");r&&(r.update({buffer:e,options:w(D({seiPayloadType:243},t),{small:!!((s=this._localVideoTrack)!=null&&s.small)})}),N.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var t,r;(r=(t=this._room).sendCustomMessage)==null||r.call(t,e),N.addCount({key:500001,useUV:!0})}callExperimentalAPI(e,t){return f(this,null,function*(){return this._log.info(`callExperimentalAPI(${e}, ${JSON.stringify(t)})`),tf.call(e,D({trtcInstance:this},t))})}static setLogLevel(e,t){b.setLogLevel(e),T(t)||(t?b.enableUploadLog():b.disableUploadLog())}static isSupported(){return La(X.frameWorkType)}static getCameraList(e=!0){return It(e)}static getMicrophoneList(e=!0){return ht(e)}static getSpeakerList(e=!0){return pr(e)}static setCurrentSpeaker(e){return f(this,null,function*(){if(pe&&(e===Ot.SPEAKER||e===Ot.HEADSET)){let r=yield X.getMicrophoneList(),s="";if(r.forEach(n=>{n.label===e&&(s=n.deviceId)}),!s)return;bn.forEach(n=>f(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:s}}))}));return}(yield pr()).forEach(r=>{r.deviceId===e&&(bn.forEach(s=>{s._setCurrentSpeaker(e),s.emit(k.DEVICE_CHANGED,{type:"speaker",action:"active",device:r})}),$e=r)})})}static _addKVStat({type:e,key:t,value:r,base:s,useUV:n,version:a,max:c}){switch(a&&(Fr.version=a),e){case"count":Fr.addCount({key:t,useUV:n});break;case"enum":Fr.addEnum({key:t,value:r,useUV:n});break;case"number":Fr.addNumber({key:t,value:r,split:s,max:c});break}}};d(X,"_loggerManager",b),d(X,"EVENT",k),d(X,"ERROR_CODE",U),d(X,"TYPE",Ot),d(X,"frameWorkType",30),M([fe({replaceArg:e=>({argIndex:0,value:{name:"plugin"in e?e.plugin.Name:e.Name,assetsPath:"assetsPath"in e?e==null?void 0:e.assetsPath:"default"}})})],X.prototype,"use",1),M([qe(Ve.TRTC.enterRoom),Tr("room",([e],[t])=>(e.roomId||e.strRoomId)===(t.roomId||t.strRoomId)&&e.userId===t.userId&&e.sdkAppId===t.sdkAppId),Y(e=>function(t){return this._log.setUserId(t.userId),this._log.setSdkAppId(t.sdkAppId),e.call(this,t)}),fe()],X.prototype,"enterRoom",1),M([fe()],X.prototype,"exitRoom",1),M([qe(Ve.TRTC.switchRoom),fe(),Nt()],X.prototype,"switchRoom",1),M([qe(Ve.TRTC.switchRole),to("room",{merge:(e,t)=>t}),fe()],X.prototype,"switchRole",1),M([fe()],X.prototype,"destroy",1),M([qe(Ve.TRTC.startLocalAudio),Tr("audio",([e],[t])=>{var r,s;return((r=e==null?void 0:e.option)==null?void 0:r.microphoneId)===((s=t==null?void 0:t.option)==null?void 0:s.microphoneId)}),fe()],X.prototype,"startLocalAudio",1),M([qe(Ve.TRTC.updateLocalAudio),to("audio",{debounce:{delay:200,getKey:()=>`${rf}-localAudio`,isNeedToDebounce:e=>{var t;return!T((t=e.option)==null?void 0:t.captureVolume)}}}),fe()],X.prototype,"updateLocalAudio",1),M([Er("audio"),fe()],X.prototype,"stopLocalAudio",1),M([qe(Ve.TRTC.startLocalVideo),Tr("video",([e],[t])=>{var r,s;return((r=e==null?void 0:e.option)==null?void 0:r.cameraId)===((s=t==null?void 0:t.option)==null?void 0:s.cameraId)}),fe()],X.prototype,"startLocalVideo",1),M([qe(Ve.TRTC.updateLocalVideo),to("video"),fe()],X.prototype,"updateLocalVideo",1),M([Er("video"),fe()],X.prototype,"stopLocalVideo",1),M([qe(Ve.TRTC.startScreenShare),Tr("screen",()=>!0),fe()],X.prototype,"startScreenShare",1),M([qe(Ve.TRTC.updateScreenShare),to("screen"),fe()],X.prototype,"updateScreenShare",1),M([fe()],X.prototype,"stopScreenShare",1),M([qe(Ve.TRTC.startRemoteVideo),Tr(e=>`v${e.userId}${e.streamType}`,()=>!0),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],X.prototype,"startRemoteVideo",1),M([qe(Ve.TRTC.updateRemoteVideo),to(e=>`v${e.userId}${e.streamType}`),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],X.prototype,"updateRemoteVideo",1),M([qe(Ve.TRTC.stopRemoteVideo),Y(e=>function(t){return f(this,null,function*(){if(t.userId==="*"){let r=[];return this._room.remotePublishedUserMap.forEach(s=>{this._remoteVideoConfigMap.has(`${s.userId}_main`)&&r.push(this.stopRemoteVideo({streamType:"main",userId:s.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${s.userId}_sub`)&&r.push(this.stopRemoteVideo({streamType:"sub",userId:s.userId}).catch(()=>{}))}),Promise.all(r)}return e.call(this,t)})}),fe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],X.prototype,"stopRemoteVideo",1),M([Er(e=>`v${e.userId}${e.streamType}`)],X.prototype,"_stopRemoteVideo",1),M([qe(...Ve.TRTC.muteRemoteAudio),fe({getRemoteId:e=>e})],X.prototype,"muteRemoteAudio",1),M([Gu(...Ve.TRTC.setRemoteAudioVolume),jp(200,e=>e),fe({getRemoteId:e=>e})],X.prototype,"setRemoteAudioVolume",1),M([Mc("start"),st(e=>{var t;return(t=e.afterStart)==null?void 0:t.call(e)}),Tr((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>gl[e.getName()],ignoreLog:e=>e.getName()==="Debug",ignoreErrorLog:e=>e.getName()==="AudioProcessor"})],X.prototype,"startPlugin",1),M([Mc("update"),to((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t),{merge:(e,t)=>(Bt(e[1],t[1]),e)}),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Tl[e.getName()]})],X.prototype,"updatePlugin",1),M([Mc("stop"),Er((e,t)=>{if(e.disableRandomCall)return null;let r=e.getGroup(t),s=e.getAlias();return r==="*"?new RegExp(`${s}.*`):s+r}),fe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>El[e.getName()]})],X.prototype,"stopPlugin",1),M([Gu(...Ve.TRTC.enableAudioVolumeEvaluation)],X.prototype,"enableAudioVolumeEvaluation",1),M([fe()],X.prototype,"getVideoSnapshot",1),M([fe()],X.prototype,"_setCurrentSpeaker",1),M([Tr(e=>`a${e.userId}`,()=>!0)],X.prototype,"_startRemoteAudio",1),M([Y(e=>function(t){return f(this,null,function*(){return t.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(r=>this._stopRemoteAudio(w(D({},t),{userId:r.userId})).catch(()=>{}))):e.call(this,t)})}),Er(e=>`a${e.userId}`)],X.prototype,"_stopRemoteAudio",1),M([Er("room")],X.prototype,"_exitRoom",1),M([Er("screen")],X.prototype,"_stopScreenShare",1),M([qe(...Ve.TRTC.sendSEIMessage),Pu({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],X.prototype,"sendSEIMessage",1),M([qe(Ve.TRTC.sendCustomMessage),Pu({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],X.prototype,"sendCustomMessage",1),M([qe(Ve.TRTC.create)],X,"_create",1);var oh=X,Nn=oh;var sh=class{constructor(){d(this,"_set",new Set);E.on(C.LEAVE_SUCCESS,this.delete,this),E.on(C.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess,this)}add({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,e||i.roomId,i.sdkAppId,i.useStringRoomId);this._set.add(t)}delete({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,i.roomId||e,i.sdkAppId,i.useStringRoomId);this._set.delete(t)}getKey(i,e,t,r){return`${t}_${e}_${i}_${r}`}isJoined({userId:i,roomId:e,sdkAppId:t,room:r}){return r.scene==="rtc"?!1:this._set.has(this.getKey(i,e,t,r.useStringRoomId))}handleSwitchRoomSuccess({room:i,currentRoomId:e,targetRoomId:t}){i.scene!=="rtc"&&(this._set.delete(this.getKey(i.userId,e,i.sdkAppId,i.useStringRoomId)),this._set.add(this.getKey(i.userId,t,i.sdkAppId,i.useStringRoomId)))}};function ZE(){return f(this,null,function*(){let o,i;try{let g=yield ht();o=g&&g.length}catch(g){}try{let g=yield It();i=g&&g.length}catch(g){}let e={microphone:o,camera:i},{isH264EncodeSupported:t,isVp8EncodeSupported:r,isH264DecodeSupported:s,isVp8DecodeSupported:n,isH265EncodeSupported:a,isH265DecodeSupported:c}=this.checkSystemResult.detail,l=pi.basis(),u={webRTC:l.isWebRTCSupported,getUserMedia:l.isGetUserMediaSupported,webSocket:l.isWebSocketsSupported,screenShare:l.isScreenShareSupported,webAudio:l.isWebAudioSupported,h264Encode:t,h264Decode:s,vp8Encode:r,vp8Decode:n,h265Encode:a,h265Decode:c},h={browser:l.browser,os:l.os,trtc:u,devices:e},m={isWebCodecSupported:l.isWebCodecSupported,isMediaSessionSupported:l.isMediaSessionSupported,isWebTransportSupported:l.isWebTransportSupported};se.uploadEvent({log:`trtcstats-${JSON.stringify(h)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(h)}`),se.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(m)}`,userId:this.userId}),Ml()})}function sf(){return Y(o=>{let i=new sh;return function(e,t,r){return f(this,null,function*(){let s=String(e.roomId||e.strRoomId);if(this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.userSig=e.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=t,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new v({code:A.INVALID_OPERATION,message:V({key:L.INVALID_JOIN})});if(this.checkDestroy(),i.isJoined({userId:this.userId,roomId:s,sdkAppId:this.sdkAppId,room:this}))throw new v({code:A.INVALID_OPERATION,message:V({key:L.REPEAT_JOIN,data:this.userId})});i.add({room:this,roomId:s}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${s} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),E.emit(C.JOIN_START,{room:this,roomId:s,params:e});let n=ft.getEnv();n||(n=Di.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith($n.OLD_CLOUD_LADDER)?n=Di.OLD_CLOUD_LADDER:this.proxy_ws.startsWith($n.WEBRTC)&&(n=Di.WEBRTC))),se.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:s}),pi.checkSystemRequirementsInternal(r).then(a=>{this.checkSystemResult=a,ZE.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!ft.getEnv()&&(yield this.schedule(e,r));let a=yield o.call(this,e,t,r);return this.roomId=s,this._joinedTimestamp=ft.performanceNow(),E.emit(C.JOIN_SUCCESS,{room:this}),r===30&&!e.component&&se.uploadEvent({log:`stat-conv-${Number(Wt)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw i.delete({room:this,roomId:s}),E.emit(C.JOIN_FAILED,{room:this,error:a}),a}})}})}var nf=()=>Y(o=>function(...i){return f(this,null,function*(){E.emit(C.LEAVE_START,{room:this}),yield o.call(this,...i),E.emit(C.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function af(){return Y(o=>function(...i){let e=o.apply(this,i);return i.forEach(t=>!t.isSubscribed&&t.subscribe(e)),e})}var df=Ge(it());var Ne={SETUP_SUCCESS:"1",CONNECTION_STATE_CHANGED:"2",CONNECTED:"3",RECONNECT_FAILED:"4",SETUP_FAILED:"5",DISCONNECTED:"6"};var Kt={CLIENT_BANNED:9,CHANNEL_SETUP_RESULT:19,CHANNEL_RECONNECT_RESULT:514,JOIN_ROOM_RESULT:20,PEER_JOIN:4134,PEER_LEAVE:4135,STREAM_ADDED:16,STREAM_REMOVED:18,UPLINK_NETWORK_STATS:22,UPDATE_REMOTE_MUTE_STAT:23,PUBLISH_RESULT:4098,PUBLISH_STATE_CHANGE_RESULT:4112,UNPUBLISH_RESULT:4100,SUBSCRIBE_RESULT:4102,UNSUBSCRIBE_RESULT:4104,SUBSCRIBE_CHANGE_RESULT:4106,MUTE_RESULT:4108,UPDATE_OFFER_RESULT:4128,START_PUBLISH_TENCENT_CDN_RES:1286,STOP_PUBLISH_TENCENT_CDN_RES:1288,START_PUBLISH_GIVEN_CDN_RES:777,STOP_PUBLISH_GIVEN_CDN_RES:779,START_MIX_TRANSCODE_RES:781,STOP_MIX_TRANSCODE_RES:783,START_PUBLISH_CDN_STREAM_RES:8196,UPDATE_PUBLISH_CDN_STREAM_RES:8198,STOP_PUBLISH_CDN_STREAM_RES:8200,USER_LIST_RES:4137,SWITCH_ROLE_RES:4110,UPDATE_CONSTRAINT_CONFIG_RES:772,REBUILD_PEER_CONNECTION_RES:4150,SPC_PUBLISH_RESULT:4146,SPC_SUBSCRIBE_RESULT:4156,ABILITY_STATUS_REPORT_RESULT:4158,SERVER_FIRST_PACKAGE_RECEIVED:5e3,RECEIVE_CUSTOM_MSG:4140,FALLBACK_CODEC:66,SEND_SWITCH_ROOM_RES:4160,SEND_SWITCH_ROOM_SUBED_REQ:4161},cf=[Kt.UPDATE_REMOTE_MUTE_STAT,Kt.UPLINK_NETWORK_STATS,Kt.USER_LIST_RES,Kt.MUTE_RESULT,Kt.SERVER_FIRST_PACKAGE_RECEIVED,Kt.RECEIVE_CUSTOM_MSG],F={CLIENT_BANNED:"client-banned",CHANNEL_SETUP_RESULT:"channel-setup-result",CHANNEL_RECONNECT_RESULT:"channel-reconnect-result",JOIN_ROOM_RESULT:"join-room-result",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",UPLINK_NETWORK_STATS:"uplink-network-stats",UPDATE_REMOTE_MUTE_STAT:"update-remote-mute-stat",PUBLISH_RESULT:"publish-result",PUBLISH_STATE_CHANGE_RESULT:"publish-state-change-result",UNPUBLISH_RESULT:"unpublish-result",SUBSCRIBE_RESULT:"subscribe-result",SUBSCRIBE_CHANGE_RESULT:"subscribe-change-result",UNSUBSCRIBE_RESULT:"unsubscribe-result",UPDATE_OFFER_RESULT:"update-offer-result",START_PUBLISH_TENCENT_CDN_RES:"start-publish-tencent-cdn-res",STOP_PUBLISH_TENCENT_CDN_RES:"stop-publish-tencent-cdn-res",START_PUBLISH_GIVEN_CDN_RES:"start-publish-given-cdn-res",STOP_PUBLISH_GIVEN_CDN_RES:"stop-publish-given-cdn-res",START_MIX_TRANSCODE_RES:"start-mix-transcode-res",STOP_MIX_TRANSCODE_RES:"stop-mix-transcode-res",START_PUBLISH_CDN_STREAM_RES:"start-publish-cdn-stream-res",UPDATE_PUBLISH_CDN_STREAM_RES:"update-publish-cdn-stream-res",STOP_PUBLISH_CDN_STREAM_RES:"stop-publish-cdn-stream-res",USER_LIST_RES:"user-list-res",SWITCH_ROLE_RES:"switch_role_res",MUTE_RESULT:"mute-result",UPDATE_CONSTRAINT_CONFIG_RES:"update-contraint-config-res",REBUILD_PEER_CONNECTION_RES:"rebuild-pc-res",SPC_PUBLISH_RESULT:"spc-publish-result",SPC_SUBSCRIBE_RESULT:"spc-subscribe-result",ABILITY_STATUS_REPORT_RESULT:"ability-status-report",SERVER_FIRST_PACKAGE_RECEIVED:"first-pkg-received",RECEIVE_CUSTOM_MSG:"receive-custom-msg",FALLBACK_CODEC:"fallback-codec",SEND_SWITCH_ROOM_RES:"send-switch-room-res",SEND_SWITCH_ROOM_SUBED_REQ:"send-switch-room-subed-res"},z={PUBLISH_CHANGE:"publish_change",JOIN_ROOM:"join",LEAVE_ROOM:"leave",ON_QUALITY_REPORT:"quality_report",UPDATE_MUTE_STAT:"mute_uplink",PUBLISH:"publish",PUBLISH_STATE_CHANGE:"publish_state_change",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",RECEIVE_DATA_USER_LIST:"receive_data_userlist",UNSUBSCRIBE:"unsubscribe",SUBSCRIBE_CHANGE:"subscribe_change",START_PUBLISH_TENCENT_CDN:"start_publishing",STOP_PUBLISH_TENCENT_CDN:"stop_publishing",START_PUBLISH_GIVEN_CDN:"start_push_user_cdn",STOP_PUBLISH_GIVEN_CDN:"stop_push_user_cdn",START_MIX_TRANSCODE:"start_mcu_mix",STOP_MIX_TRANSCODE:"stop_mcu_mix",START_PUBLISH_CDN_STREAM:"start_publish_cdn_stream",UPDATE_PUBLISH_CDN_STREAM:"update_publish_cdn_stream",STOP_PUBLISH_CDN_STREAM:"stop_publish_cdn_stream",GET_USER_LIST:"get_user_list",SWITCH_ROLE:"change_role",UPDATE_CONSTRAINT_CONFIG:"update_constraint_config",REBUILD_PEER_CONNECTION:"rebuild_pc",READY_TO_RECEIVE_DATA:"ready_to_receive",SPC_JOIN_ROOM:"join/v2",SPC_PUBLISH:"publish/v2",SPC_SUBSCRIBE:"subscribe/v3",ABILITY_STATUS_REPORT:"ability_status_report",RECONNECT_WS:"reconnect",SEND_CUSTOM_MSG:"channel_msg",SWITCH_ROOM:"switch_room"};var $c=new Set;function lf(o){let i=[...$c.values()].find(e=>e.room.userId===o&&!e.room.isJoined);return i||null}var ds=class extends df.default{constructor(e){var r,s,n;super();d(this,"room");d(this,"sdkAppId");d(this,"userId");d(this,"userSig");d(this,"url");d(this,"backupUrl");d(this,"destroyed",!1);d(this,"_socketInUse");d(this,"_socket");d(this,"_backupSocket");d(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0,bakRelayIps:[]});d(this,"_currentState","DISCONNECTED");d(this,"_isReconnecting",!1);d(this,"_seq",0);d(this,"_log");d(this,"_lastMessageTime",-1);d(this,"_connectStartTime",-1);d(this,"_stopConnectRetry");d(this,"bytesSent",0);d(this,"bytesReceived",0);d(this,"keepAlive",!1);d(this,"signalDomainWhenUnifiedProxy");d(this,"stopKeepAliveTimeout");d(this,"rtt",0);this.room=e.room,this.sdkAppId=e.sdkAppId,this.userId=e.userId,this.userSig=e.userSig,this.signalDomainWhenUnifiedProxy=e.signalDomainWhenUnifiedProxy;let t=((s=(r=this.room.scheduleResult)==null?void 0:r.config)==null?void 0:s.keepAliveClient)||0;(n=this.room.joinParams)!=null&&n.keepAlive&&!t&&(t=1),t-$c.size>0&&this.room.enableSPC&&(this.keepAlive=!0,$c.add(this)),this.url=e.url,this.backupUrl=e.backupUrl,this._seq=0,this._log=b.createLogger({id:"ws",userId:this.userId,sdkAppId:this.sdkAppId}),this.onmessage=this.onmessage.bind(this),this.onerror=this.onerror.bind(this),this.onclose=this.onclose.bind(this)}get race(){return this.room.enableSPC&&!this.room.proxy_ws}get urlParam(){let e=`?sdkAppId=${encodeURIComponent(this.sdkAppId)}&userId=${encodeURIComponent(this.userId)}&userSig=${encodeURIComponent(this.userSig)}&keepAlive=${encodeURIComponent(Number(this.keepAlive))}`;this.signalDomainWhenUnifiedProxy&&(e+=`&signalDomain=${encodeURIComponent(this.signalDomainWhenUnifiedProxy)}`);let t=new URLSearchParams(location.search).get("clientIp");return t&&(e+=`&clientIp=${t}`),this.race?`${e}&race=1`:e}get _urlWithParam(){return`${this.url}${this.race?"/v2/ws":""}${this.urlParam}`}get _backupUrlWithParam(){return`${this.backupUrl}${this.race?"/v2/ws":""}${this.urlParam}`}get isConnected(){return this._currentState==="CONNECTED"}get isConnecting(){return this._currentState==="CONNECTING"}get isOnline(){return this._currentState==="CONNECTED"&&Date.now()-this._lastMessageTime<12*1e3}connect(){return f(this,arguments,function*(e=10*1e3){if(this.isConnected)return Promise.resolve();this._log.info(`connect to [${this.url}, ${this.backupUrl}] ${this.race?"race":""}${e?` timeout: ${e}`:""} keepAlive: ${Number(this.keepAlive)}`),this.emitConnectionStateChanged("CONNECTING"),this._connectStartTime=P();let t=[this.connectWS({url:this._urlWithParam,isMain:!0,timeout:e})];this.race&&this._backupUrlWithParam!==this._urlWithParam&&t.push(this.connectWS({url:this._backupUrlWithParam,isMain:!1,timeout:e})),this._socketInUse=yield Or(t),this.unbindAndCloseSocket(this._socketInUse===this._socket?p.BACKUP:p.MAIN),this.emitConnectionStateChanged("CONNECTED")})}connectWS({url:e,timeout:t,isMain:r}){let s=new WebSocket(e);this.bindSocket(s),r?this._socket=s:this._backupSocket=s;let n=-1;return new Promise((a,c)=>{s.onclose=c,s.onerror=c,s.onopen=()=>a(s),t&&(n=setTimeout(()=>{this.unbindAndCloseSocket(r?p.MAIN:p.BACKUP),c(new v({code:A.SIGNAL_CHANNEL_SETUP_FAILED,message:"ws connect timeout"}))},t))}).finally(()=>{s.onclose=null,s.onerror=null,s.onopen=null,clearTimeout(n)})}bindSocket(e){e.addEventListener("close",this.onclose),e.addEventListener("error",this.onerror),e.addEventListener("message",this.onmessage)}unbindSocket(e){e.removeEventListener("close",this.onclose),e.removeEventListener("error",this.onerror),e.removeEventListener("message",this.onmessage)}unbindAndCloseSocket(e){if(e===p.MAIN){if(this._socket){this.unbindSocket(this._socket);try{this._socket.close(1e3)}catch(t){}this._socket=null}}else if(this._backupSocket){this.unbindSocket(this._backupSocket);try{this._backupSocket.close(1e3)}catch(t){}this._backupSocket=null}}onclose(e){e.target===this._socketInUse&&(this._log.warn(`${e.target===this._socket?"main":"backup"} is closed code:${e.code} ${e.reason}`),this.emitConnectionStateChanged("DISCONNECTED"),(!e.wasClean||e.code!==1e3)&&this.startReconnection(),this.room.isJoining&&this.emit(Ne.SETUP_FAILED,new v({code:A.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onclose"})))}onerror(e){this._log.error(`${e.target===this._socket?"main":"backup"} error observed`),this.emitConnectionStateChanged("DISCONNECTED"),e.target===this._socketInUse&&(this.unbindAndCloseSocket(p.MAIN),this.unbindAndCloseSocket(p.BACKUP),this._socketInUse=null,this.reconnect()),this.room.isJoining&&this.emit(Ne.SETUP_FAILED,new v({code:A.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onerror"}))}onmessage(e){if(!this.isConnected)return;this._lastMessageTime=Date.now(),this.bytesReceived+=Ds(e.data);let t=JSON.parse(e.data),{cmd:r,data:s}=t,n=Object.values(Kt),c=Object.keys(Kt)[n.indexOf(r)],l=F[c]||r;switch(cf.includes(r)||(this._log.debug(`received ${r} msg: ${e.data}`),l&&this._log.info(`Received event: [ ${l} ]`)),r){case Kt.CHANNEL_SETUP_RESULT:{if(t.code===0)this._signalInfo.clientIp=s.clientIp,this._signalInfo.signalIp=s.signalInnerIp,s.svrTime&&wh(s.svrTime),this._log.info(`ChannelSetup Success ${P()-this._connectStartTime}`),N.addSuccessEvent({key:521701,cost:P()-this._connectStartTime}),this._connectStartTime=-1,this.emit(Ne.SETUP_SUCCESS,{signalInfo:this._signalInfo});else{let u=new v({code:A.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:t.code,message:V({key:L.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:t.code,errorMsg:t.message}})});this._log.error(`${t.code}, ${t.message}`),this.close(),N.addFailedEvent({key:521701,error:u}),this.emit(Ne.SETUP_FAILED,u)}break}case Kt.JOIN_ROOM_RESULT:{t.code===0&&(this._signalInfo.relayIp=s.relayOuterIp,this._signalInfo.relayInnerIp=s.relayInnerIp,this._signalInfo.bakRelayIps=s.bakRelayIps,this._signalInfo.relayPort=s.relayPort,this._signalInfo.tinyId=t.tinyId,this._signalInfo.endReportExtend=s.endReportExtend,this._log.info(`signalIp:${this._signalInfo.signalIp} clientIp:${this._signalInfo.clientIp} relayIp: ${this._signalInfo.relayIp}`)),this.emit(l,{data:t});break}default:this.emit(String(l),{data:t});break}}reGetSignalChannelUrl(){return f(this,null,function*(){try{if(!this.room.joinParams)return;Zt(!0),yield this.room.schedule(this.room.joinParams);let{mainUrl:e,backupUrl:t}=this.room.getSignalChannelUrl();this.url=e,this.backupUrl=t}catch(e){}})}startReconnection(){if(!this._socketInUse)return;this._socketInUse.onclose=null,this._socketInUse.close(4011);let e=this._socketInUse===this._socket;this.unbindAndCloseSocket(e?p.MAIN:p.BACKUP),this._socketInUse=null,this.emitConnectionStateChanged("DISCONNECTED"),this.reconnect()}reconnect(){return f(this,null,function*(){if(!this._isReconnecting){if(!this.room.isJoined&&this.keepAlive){this.close();return}this._isReconnecting=!0;try{this._log.warn("reconnect"),yield this.connect();let{roomId:e,useStringRoomId:t}=this.room,{relayIp:r,relayInnerIp:s,relayPort:n}=this._signalInfo,{data:a}=yield this.sendWaitForResponse({command:z.RECONNECT_WS,data:{roomId:e,useStringRoomId:t,relayInnerIp:s,relayOuterIp:r,relayPort:n},responseCommand:F.CHANNEL_RECONNECT_RESULT});a.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),N.addSuccessEvent({key:521702,cost:P()-this._connectStartTime}),this._connectStartTime=-1,this.room.syncUserList(),this.room.checkConnectionsToReconnect()):(N.addFailedEvent({key:521702,error:a.code}),this._log.warn(`reconnect failed, ${a.code} ${a.message}`),this.room.reJoin())}catch(e){this._log.error(e),this.room.reJoin()}}})}send(e,t={}){if(this.isConnected&&!this.room.isLeft){let r={cmd:e,data:t,userId:this.userId,tinyId:this._signalInfo.tinyId,seq:++this._seq},s=JSON.stringify(r);return this._socketInUse.send(s),this.bytesSent+=Ds(s),r.seq}}sendWaitForResponse({command:e,data:t,timeout:r=5e3,responseCommand:s,commandDesc:n,enableLog:a=!0,addReceiveTime:c=!1}){return new Promise((l,u)=>{let h=setTimeout(()=>{this.off(s,g);let _=new v({code:A.API_CALL_TIMEOUT,message:V({key:L.API_CALL_TIMEOUT,data:{commandDesc:n,command:e}})});a&&this._log.warn(_),u(_)},r),m=Date.now(),g=_=>{_.data.seq===S&&(clearTimeout(h),this.off(s,g),c&&(_.data.receiveTime=Date.now()),l(_))};this.on(s,g);let S=this.send(e,t)})}sendWaitForResponseWithRetry(e){let{commandDesc:t,command:r,retries:s=0,retryTimeout:n=0}=e;return ni({retryFunction:this.sendWaitForResponse,onError:({retry:a})=>{this.isOnline?a():(this._log.warn(`retry ${r} when connected`),this.once(Ne.CONNECTED,a))},onRetrying:a=>{this._log.warn(`${t||r} timeout observed, retrying [${a}/${s}]`)},settings:{retries:s,timeout:n},context:this})(e)}getCurrentState(){return this._currentState}getSignalInfo(){return this._signalInfo}stopReconnection(){this._isReconnecting=!1,this._stopConnectRetry&&this._stopConnectRetry()}close(){this._log.info("closed"),clearTimeout(this.stopKeepAliveTimeout),$c.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,bakRelayIps:[],endReportExtend:void 0},this._socketInUse=null,this.bytesSent=0,this.bytesReceived=0,this._stopConnectRetry&&this._stopConnectRetry(),this.unbindAndCloseSocket(p.MAIN),this.unbindAndCloseSocket(p.BACKUP),this.emitConnectionStateChanged("DISCONNECTED")}destroy(){this.close(),this.destroyed=!0}getBackupRelayIpPair(){var t;let e=(t=this._signalInfo.bakRelayIps)==null?void 0:t.shift();return e&&(e.relayPort=e.relayPort||this._signalInfo.relayPort),e}clearBakRelayIps(){this._signalInfo.bakRelayIps=[]}stopKeepAliveIn(e=3600){if(this.keepAlive){this._log.info(`stopKeepAlive in ${e}s`),this.stopKeepAliveTimeout=setTimeout(()=>{this.keepAlive=!1,this._log.info(`close due to not used ${e}s`),this.close(),this.off(F.JOIN_ROOM_RESULT,t)},e*1e3);let t=r=>{r.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(F.JOIN_ROOM_RESULT,t))};this.on(F.JOIN_ROOM_RESULT,t)}}emitConnectionStateChanged(e){e!==this._currentState&&(this._log.info(`${this._currentState} -> ${e}`),this.emit(Ne.CONNECTION_STATE_CHANGED,{prevState:this._currentState,state:e}),this._currentState=e,e==="CONNECTED"?this.emit(Ne.CONNECTED):e==="DISCONNECTED"&&this.emit(Ne.DISCONNECTED))}};M([Et({settings:{retries:1/0,timeout:2e3},onError(e,t){!this.room.isDestroyed&&!this.destroyed&&t()},onRetrying(e,t){this._log.warn(`retrying to connect ${e}`),e>=3&&e%3===0&&this.reGetSignalChannelUrl(),t&&(this._stopConnectRetry=t,(this.room.isDestroyed||this.destroyed)&&t())}})],ds.prototype,"connect",1);var uf=Ge(it());var nh=0,ah=!1,Gc=new Set,eS=o=>nh>2&&!ah&&Gc.size===0&&o,ch=!1,at=class{constructor(i){d(this,"userId");d(this,"tinyId");d(this,"_sdpSemantics");d(this,"_isUplink");d(this,"_room");d(this,"_log");d(this,"_signalChannel");d(this,"_isErrorObserved",!1);d(this,"_waitForPeerConnectionConnectedPromise");d(this,"_waitForPeerConnectionConnectedPromiseReject",null);d(this,"_peerConnection",null);d(this,"_emitter",new uf.default);d(this,"_currentState","DISCONNECTED");d(this,"_isReconnecting",!1);d(this,"_reconnectionCount",0);d(this,"_reconnectionTimer",-1);d(this,"_isFirstConnection",!0);d(this,"_prevTime",-1);d(this,"_localAddress");d(this,"_remoteAddress");this.userId=i.userId,this.tinyId=i.tinyId,this._room=i.room,this._sdpSemantics=i.room.sdpSemantics,this._isUplink=i.isUplink,this._log=b.createLogger({id:"n-mpc",userId:this._room.userId,remoteUserId:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink}),this._signalChannel=i.signalChannel}beforeConnect(){this._prevTime<0&&(this._prevTime=P())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,N.addSuccessEvent({key:521705,cost:Math.min(P()-this._prevTime,30*1e3)})):this._isReconnecting&&N.addSuccessEvent({key:521706,cost:P()-this._prevTime}),this._prevTime=-1}catch(i){throw this._isFirstConnection?(this._isFirstConnection=!1,N.addFailedEvent({key:521705,error:i})):this._isReconnecting&&this._reconnectionCount>=3&&N.addFailedEvent({key:521706,error:i}),i}}initialize(){let i={iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"};this._peerConnection=new RTCPeerConnection(i),this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this)}close(i){this._log.info("close connection"),this._emitter.emit("closed",i),this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),Gc.delete(this)}closePeerConnection(i=!1){this._peerConnection&&(this._log.info("close pc"),this._peerConnection.onconnectionstatechange=null,this._peerConnection.close(),this._peerConnection=null,i&&this.emitConnectionStateChangedEvent("DISCONNECTED")),this._waitForPeerConnectionConnectedPromiseReject&&this._waitForPeerConnectionConnectedPromiseReject(new v({code:A.API_CALL_ABORTED,message:"connection closed"}))}getDTLSTransportState(){if(!this._peerConnection)return Pt;let i=null;if(this._isUplink){if(!mr()||this._peerConnection.getSenders().length===0)return Pt;i=this._peerConnection.getSenders()[0].transport}else{if(!Hr()||this._peerConnection.getReceivers().length===0)return Pt;i=this._peerConnection.getReceivers()[0].transport}return i?i.state:Pt}onConnectionStateChange(i){let e=this._peerConnection.iceConnectionState,t=this.getDTLSTransportState();if(this._log.info(`connectionState: ${i.target.connectionState}, ICE: ${e}, DTLS: ${t}`),i.target.connectionState===ge.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),i.target.connectionState===ge.FAILED||i.target.connectionState===ge.CLOSED){let r=`connection ${i.target.connectionState}. ICE Transport state: ${e}, DTLS Transport state: ${t}`,s=new v({message:r,code:A.ICE_TRANSPORT_ERROR});this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection(),this._isErrorObserved||this._emitter.emit("error",s)}(i.target.connectionState===ge.CONNECTED||i.target.connectionState===ge.COMPLETED)&&(this.logSelectedCandidate(),se.logSuccessEvent({userId:this._room.userId,eventType:ct.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(i){return i===this._currentState?!1:(i==="CONNECTED"?(nh=0,ah=!1,ch=!0,Gc.add(this)):Gc.delete(this),E.emit(C.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:i,remoteUserId:this._isUplink?void 0:this.userId}),this._emitter.emit("connection-state-changed",{prevState:this._currentState,state:i}),this._currentState=i,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}logSelectedCandidate(){return f(this,null,function*(){if(!this._peerConnection)return;let i=yield this._peerConnection.getStats();for(let[,e]of i)if(hr(e)){let t=i.get(e.localCandidateId),r=i.get(e.remoteCandidateId);t&&(this._log.info(`local candidate: ${t.candidateType} ${t.protocol}:${t.ip||t.address}:${t.port} ${t.networkType||""} ${t.candidateType==="relay"?`relayProtocol:${t.relayProtocol}`:""}`),this._localAddress=`${t.ip||t.address}:${t.port}`),r&&(this._log.info(`remote candidate: ${r.candidateType} ${r.protocol}:${r.ip||r.address}:${r.port}`),this._remoteAddress=`${r.protocol}:${r.ip||r.address}`);break}})}getCurrentState(){return this._currentState}waitForPeerConnectionConnected(){return this._waitForPeerConnectionConnectedPromise?this._waitForPeerConnectionConnectedPromise:(this._waitForPeerConnectionConnectedPromise=new Promise((i,e)=>{if(this._currentState==="CONNECTED")return i();this._waitForPeerConnectionConnectedPromiseReject=e;let t=a=>{a.state==="CONNECTED"&&(clearTimeout(n),s(),i())},r=({room:a})=>{a===this._room&&(clearTimeout(n),s(),e(new v({code:A.API_CALL_ABORTED,message:V({key:L.CONNECTION_ABORTED,data:"leave room"})})))},s=()=>{E.off(C.LEAVE_SUCCESS,r,this),this._emitter.off("connection-state-changed",t,this)},n=setTimeout(()=>{s();let a=new v({code:A.API_CALL_TIMEOUT,message:"connection timeout"});nh+=1,eS(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),ah=!0,this._emitter.emit("firewall-restriction")),e(a)},Cs);E.on(C.LEAVE_SUCCESS,r,this),this._emitter.on("connection-state-changed",t,this)}),this._waitForPeerConnectionConnectedPromise=this._waitForPeerConnectionConnectedPromise.finally(()=>{this._waitForPeerConnectionConnectedPromise=null,this._waitForPeerConnectionConnectedPromiseReject=null}),this._waitForPeerConnectionConnectedPromise)}getReconnectionCount(){return this._reconnectionCount}startReconnection(){this._isReconnecting=!0,this.reconnect()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}stopReconnection(){this._log.info("stop reconnection"),this._isReconnecting=!1,this._reconnectionCount=0,this.clearReconnectionTimer(),this._signalChannel.off(Ne.CONNECTED,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=Mi()){this._log.warn(`SDK has tried reconnect for ${this._reconnectionCount} times, but all failed, please check your network`),this.stopReconnection();let i=new v({code:this._isUplink?A.UPLINK_RECONNECTION_FAILED:A.DOWNLINK_RECONNECTION_FAILED,message:V({key:this._isUplink?L.UPLINK_RECONNECTION_FAILED:L.DOWNLINK_RECONNECTION_FAILED})});return this.emitConnectionStateChangedEvent("DISCONNECTED"),this._emitter.emit("error",i),-1}return this._signalChannel.isConnected?(this._reconnectionCount+=1,this._log.warn(`reconnect() trying [${this._reconnectionCount}]`),1):(this._log.warn("reconnect() signal channel is not connected, suspend reconnection until signal is connected"),this._signalChannel.once(Ne.CONNECTED,this.reconnect,this),-1)}on(i,e,t){this._emitter.on(i,e,t)}off(i,e,t){this._emitter.off(i,e,t)}getIsReconnecting(){return this._isReconnecting}get isH264(){var i,e;return!!((e=(i=this._peerConnection)==null?void 0:i.remoteDescription)!=null&&e.sdp.includes("H264"))}setOffer(i){var e;return(e=this._peerConnection)==null?void 0:e.setLocalDescription(i)}setAnswer(i){var e;return(e=this._peerConnection)==null?void 0:e.setRemoteDescription(i)}};M([mt(521712,!1)],at.prototype,"setOffer",1),M([mt(521713,!1)],at.prototype,"setAnswer",1);var hh=Ge(uh());var Ce=function(o){return hh.default.parse(o)},wt=function(o){return hh.default.write(o)},Ef=function(o){let i=Ce(o);return i.media.forEach(e=>{e.type===p.AUDIO&&e.fmtp.forEach(t=>{t.config+=";sprop-stereo=1;stereo=1"})}),wt(i)};function Sf(o){let i=Ce(o);return i.media.forEach(e=>{var t,r;if(e.type===p.VIDEO){let s=new Set;e.rtp.forEach(({payload:a,codec:c})=>c==="H264"&&s.add(a)),e.fmtp.forEach(({payload:a,config:c})=>{let l=c.match(/apt=(\d+)/);l&&l[1]&&s.has(Number(l[1]))&&s.add(a)});let n=({payload:a})=>!s.has(a);e.rtp=e.rtp.filter(n),e.rtcpFb=(t=e.rtcpFb)==null?void 0:t.filter(n),e.fmtp=e.fmtp.filter(n),e.payloads=(r=e.payloads)==null?void 0:r.split(" ").filter(a=>!s.has(Number(a))).join(" ")}}),wt(i)}function Wc(o){return Object.keys(o).filter(i=>o[i])}var us=class us extends at{constructor(e){super(w(D({},e),{isUplink:!1}));d(this,"_flag",0);d(this,"isRobot",!1);d(this,"role","anchor");d(this,"remoteAudioTrack");d(this,"remoteVideoTrack");d(this,"remoteAuxiliaryTrack");d(this,"ssrc",{audio:0,video:0,auxiliary:0});d(this,"_isSDPExchanging",!1);d(this,"_videoCodec");this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new Yt(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new Ci(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new is(this._room,this)}get videoCodec(){var t,r;let e=(r=(t=this._peerConnection)==null?void 0:t.remoteDescription)==null?void 0:r.sdp;return e?e.includes("H264")?"h264":"vp8":this._videoCodec||"h264"}set videoCodec(e){this._videoCodec=e}get subscribeState(){let e={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?e.smallVideo=!0:e.video=!0),this.remoteAudioTrack.isSubscribed&&(e.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(e.auxiliary=!0),e}get muteState(){return xi(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,s;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(s=this.remoteAuxiliaryTrack)==null||s.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===p.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){super.initialize(),this.installEvents(),this._peerConnection.ontrack=this.onTrack.bind(this)}close(e){super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents()}installEvents(){}uninstallEvents(){this._emitter.removeAllListeners()}emitConnectionStateChangedEvent(e){var s,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((s=this.remoteVideoTrack)==null||s.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){let t=e.streams[0],{track:r}=e,s=t.id===As?p.MAIN:p.AUXILIARY;this._log.debug(`ontrack ${s} ${r.kind}`);let n=p.AUDIO;r.kind===p.VIDEO&&(n=s===p.MAIN?p.VIDEO:p.AUXILIARY);let a=this.remoteAudioTrack;n===p.VIDEO?a=this.remoteVideoTrack:n===p.AUXILIARY&&(a=this.remoteAuxiliaryTrack),a.setInputMediaStreamTrack(r)}addRRTRLine(e){let t=e.split(`\r
63
- `),r=new Map;t.forEach((n,a)=>{/^a=rtcp-fb:/.test(n)&&t[a+1]&&!/^a=rtcp-fb:/.test(t[a+1])&&r.set(a+1,`${n.match(/^a=rtcp-fb:\d+/)[0]} rrtr`)});let s=[...r];for(let n=0;n<s.length;n++){let[a,c]=s[n];t.splice(a+n,0,c)}return t.join(`\r
64
- `)}addSPSDescription(e){let t=Ce(e);return t.media.forEach(r=>{r.type===p.VIDEO&&r.fmtp.forEach(s=>{s.config+=";sps-pps-idr-in-keyframe=1"})}),wt(t)}removeSDESDescription(e){let t=["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"],r=Ce(e);return r.media.forEach(s=>{s.ext&&(s.ext=s.ext.filter(n=>!t.includes(n.uri)))}),wt(r)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,t){return f(this,null,function*(){var r,s;try{if((((r=this._peerConnection)==null?void 0:r.connectionState)===ge.NEW||((s=this._peerConnection)==null?void 0:s.connectionState)===ge.CONNECTING)&&(yield this.waitForPeerConnectionConnected()),this.isSubscriptionStateNotChanged(e)){this._peerConnection||(this.initialize(),yield this.connect(e));return}if(this._log.info(`subscribe ${t} ${JSON.stringify(e)}`),this._peerConnection||this._isSDPExchanging){let n="subscribe_change";Object.values(e).find(a=>a===!0)||(n="unsubscribe"),yield this.sendSubscription(n,e)}else this.initialize(),yield this.connect(e)}catch(n){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${n.message} ${JSON.stringify(this.muteState)}`),new v({code:A.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):n}})}unsubscribe(r){return f(this,arguments,function*({remoteTracks:e,streamType:t}){if(this._currentState==="CONNECTED"&&(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed)){this._log.info(`${t} stream already unsubscribed`);return}let s=D({},this.subscribeState);e.forEach(a=>{switch(a.mediaType){case 1:s.audio=!1;break;case 4:s.video=!1;break;case 8:s.smallVideo=!1;break;case 2:s.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(s).find(a=>a===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${Wc(s)}]`),yield this.sendSubscription(n,s),n==="unsubscribe"&&(this.closePeerConnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"))})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},s=z.UNSUBSCRIBE,n=F.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},s=z.SUBSCRIBE_CHANGE,n=F.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponse({command:s,data:r,responseCommand:n,timeout:1e4}).then(({data:a})=>{if(a.code!==0){let c=new v({code:a.code,message:V({key:L.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(c),c}})}connect(){return f(this,arguments,function*(e=this.subscribeState){try{yield this.exchangeSDP(e),yield this.waitForPeerConnectionConnected()}catch(t){throw this.closePeerConnection(!0),t}})}exchangeSDP(e){return f(this,null,function*(){try{this._isSDPExchanging=!0,yield this.createOffer(),this._log.info("createOffer success, sending offer");let{type:t,sdp:r}=this._peerConnection.localDescription,s={type:t,sdp:r,srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo},n=yield this._signalChannel.sendWaitForResponse({command:z.SUBSCRIBE,commandDesc:"exchange sdp",data:s,responseCommand:F.SUBSCRIBE_RESULT,timeout:gd});if(!this._peerConnection){let a=new v({code:A.INVALID_OPERATION,message:V({key:L.CONNECTION_CLOSED})});throw this._log.warn(a),a}yield this.onSubscribeResult(n),this._isSDPExchanging=!1}catch(t){throw this._isSDPExchanging=!1,t}})}createOffer(){return f(this,null,function*(){let e={voiceActivityDetection:!1};ut()&&this._sdpSemantics===dr?(this._peerConnection.addTransceiver(p.AUDIO,{direction:ie.RECVONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:ie.RECVONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:ie.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let t=yield this._peerConnection.createOffer(e);if(t.sdp){let{isH264DecodeSupported:r}=yield xa();r||(this._log.warn("remove h264 desc from sdp"),t.sdp=Sf(t.sdp)),t.sdp=this.addRRTRLine(t.sdp),t.sdp=this.addSPSDescription(t.sdp),t.sdp=Ef(t.sdp),this._sdpSemantics===dr&&(t.sdp=this.removeSDESDescription(t.sdp))}yield this.setOffer(t)})}onSubscribeResult(e){return f(this,null,function*(){let{code:t,message:r=""}=e&&e.data||{},{type:s,sdp:n}=e&&e.data&&e.data.data||{};if(t===Rr)throw new v({code:A.NOT_SUPPORTED_H264,message:V({key:L.NOT_SUPPORTED_H264DECODE})});try{if(t!==0)throw new v({code:t,message:V({key:L.EXCHANGE_SDP_FAILED,data:{errMsg:r}})});this._log.debug(`accept remote answer: ${n}`),yield this.setAnswer({type:s,sdp:n}),this.updateSSRC(n)}catch(a){throw this._log.error(a),a}})}updateSSRC(e){try{Ce(e).media.forEach(r=>{if(r.ssrcs)if(r.type===p.AUDIO){let s=r.ssrcs.find(n=>{var a;return(a=n.value)==null?void 0:a.includes(As)});s&&(this.ssrc.audio=Number(s.id))}else{let s=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(As)}),n=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(hd)});s&&(this.ssrc.video=Number(s.id)),n&&(this.ssrc.auxiliary=Number(n.id))}})}catch(t){}}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}reconnect(){return f(this,null,function*(){if(!(We(us.prototype,this,"beforeReconnect").call(this)<0))try{this.closePeerConnection(),this.initialize(),yield this.connect(),this.stopReconnection(),this._log.warn("reconnect() success")}catch(t){let r=Ut(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}getIsReconnecting(){return this._isReconnecting}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}getCurrentState(){return this._currentState}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}get audioReceiver(){var e;return((e=this._peerConnection)==null?void 0:e.getReceivers()[0])||null}};M([Y(e=>function(...t){return new Promise((r,s)=>{let n=a=>{this._emitter.off("closed",n),s(new v({code:A.API_CALL_ABORTED,message:V({key:L.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,s).finally(()=>{this._emitter.off("closed",n)})})})],us.prototype,"subscribe",1),M([mt(521717,!1)],us.prototype,"unsubscribe",1),M([st(at.prototype.afterConnect),Qa(at.prototype.beforeConnect)],us.prototype,"connect",1);var mh=us,ph=mh;var Af={voiceActivityDetection:!1},hs=class hs extends at{constructor(e){super(w(D({},e),{isUplink:!0}));d(this,"localMainAudioTrack",null);d(this,"localMainVideoTrack",null);d(this,"localAuxAudioTrack",null);d(this,"localAuxVideoTrack",null);d(this,"ssrc",{audio:0,video:0,small:0,auxiliary:0});d(this,"_isPublishingAux",!1);d(this,"_publishingLocalAudioTrack");d(this,"_publishingLocalVideoTrack");d(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});d(this,"flag",0)}get videoCodec(){return this._mediaSettings.videoCodec.toLowerCase()||"h264"}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,s,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(hi()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((s=a[2])!=null&&s.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(c=>{c.track&&(c.track.kind===p.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}initialize(){super.initialize(),this.installEvents()}reset(){this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),this.uninstallEvents()}close(e){super.close(e),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this._emitter.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this._emitter.on("connection-state-changed",this.handleConnectionStateChange,this)}uninstallEvents(){this._emitter.off("connection-state-changed",this.handleConnectionStateChange,this)}emitConnectionStateChangedEvent(e,t){var n,a,c;let r=this._currentState,s=super.emitConnectionStateChangedEvent(e);return s&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(c=this._publishingLocalVideoTrack)==null||c.emit("connection-state-changed",{prevState:r,state:e}))),s}publish(s){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){this._peerConnection||this.initialize(),e&&(this._publishingLocalAudioTrack=e),t&&(this._publishingLocalVideoTrack=t),this._isPublishingAux=r;let n;t&&!r&&t.small&&(n=this._room.videoManager.smallTrack),this.sendMediaSettings(),ut()?yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:n,isAuxiliary:r}):yield this.publishByAddTrack({localAudioTrack:e,localVideoTrack:t,smallTrack:n}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,r?(t&&(this.localAuxVideoTrack=t),e&&(this.localAuxAudioTrack=e)):(t&&(this.localMainVideoTrack=t),e&&(this.localMainAudioTrack=e)),this.installTrackMuteEvents(e,t),this.sendMutedFlag()})}publishByTransceiver(n){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:s}){this._log.info("publish by transceiver");let a=new MediaStream,c=t==null?void 0:t.outMediaTrack,l=e==null?void 0:e.outMediaTrack;l&&a.addTrack(l),c&&a.addTrack(c);let u=this._peerConnection.getTransceivers();if(u.length===0)this._peerConnection.addTransceiver(l||p.AUDIO,{direction:ie.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(s?p.VIDEO:c||p.VIDEO,{direction:ie.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(r||p.VIDEO,{direction:ie.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(s?c||p.VIDEO:p.VIDEO,{direction:ie.SENDONLY,streams:[a]}),yield this.connect();else{let h=[];if(l&&(u[0].sender.track||h.push(0),yield u[0].sender.replaceTrack(l),yield this.setBandwidth({bandwidth:(e==null?void 0:e.profile.bitrate)||40,type:p.AUDIO})),c){let m=s?3:1;yield u[m].sender.replaceTrack(c),yield this.setBandwidth({bandwidth:t.profile.bitrate,type:p.VIDEO,videoType:s?p.AUXILIARY:p.BIG}),h.push(m),r&&(yield u[2].sender.replaceTrack(r),yield this.setBandwidth({bandwidth:t.small.bitrate,type:p.VIDEO,videoType:p.SMALL}),h.push(2))}yield this.setTransceiverDirection(ie.SENDONLY,h),yield this.doPublishChange(),t==null||t.emit("connection-state-changed",{prevState:"DISCONNECTED",state:"CONNECTING"}),t==null||t.emit("connection-state-changed",{prevState:"CONNECTING",state:"CONNECTED"})}})}publishByAddTrack(s){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r}){this._log.info("publish by addtrack");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack;if(this._peerConnection&&this._peerConnection.connectionState!=="new"){e&&a&&(yield this.addTrack(e)),n&&(yield this.addTrack(t));return}let c=new MediaStream;if(a&&c.addTrack(a),n&&c.addTrack(n),a&&this._peerConnection.addTrack(a,c),n&&(this._peerConnection.addTrack(n,c),r)){let l=new MediaStream;l.addTrack(r),this._peerConnection.addTrack(r,l)}yield this.connect()})}enableSmall(e){return f(this,null,function*(){let t=this._peerConnection.getTransceivers();e?this._room.videoManager.smallTrack&&(yield t[2].sender.replaceTrack(this._room.videoManager.smallTrack),yield this.setTransceiverDirection(ie.SENDONLY,[2])):(yield t[2].sender.replaceTrack(null),yield this.setTransceiverDirection(ie.INACTIVE,[2])),this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){if(!hi()){if(e&&e.outMediaTrack&&!t&&this.localMainVideoTrack){yield this.removeTrack(e),this.localMainAudioTrack=null;return}if(t&&t.outMediaTrack&&!e&&this.localMainAudioTrack){yield this.removeTrack(t),this.localMainVideoTrack=null;return}yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),this.emitConnectionStateChangedEvent("DISCONNECTED",t);return}let s=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),c=[];e&&(s?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localAuxAudioTrack&&!this.localMainAudioTrack&&(yield a[0].replaceTrack(null),c.push(0))),n&&(s?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=w(D({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),c.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=w(D({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),c.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.setTransceiverDirection(ie.INACTIVE,c),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return f(this,null,function*(){let t={state:this.publishState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponse({command:z.PUBLISH_STATE_CHANGE,data:t,responseCommand:F.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:z.UNPUBLISH,commandDesc:"unpublish",responseCommand:F.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===A.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:t}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":t&&(this._mediaSettings.videoCodec="VP8");let r=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:s,localAuxVideoTrack:n}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?n=this._publishingLocalVideoTrack:s=this._publishingLocalVideoTrack),mi){if(r&&r.outMediaTrack){let a=r.outMediaTrack.getSettings();this._mediaSettings.audioChannel=a.channelCount||1,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=a.sampleRate||0}if(s&&s.outMediaTrack){let a=s.outMediaTrack.getSettings();this._mediaSettings.videoWidth=a.width||0,this._mediaSettings.videoHeight=a.height||0,this._mediaSettings.videoFps=a.frameRate||0,this._mediaSettings.videoBps=s.profile.bitrate*1e3,s.small&&(this._mediaSettings.smallVideoWidth=s.small.width,this._mediaSettings.smallVideoHeight=s.small.height,this._mediaSettings.smallVideoFps=s.small.frameRate,this._mediaSettings.smallVideoBps=s.small.bitrate*1e3)}if(n&&n.outMediaTrack){let a=n.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=a.width||0,this._mediaSettings.auxVideoHeight=a.height||0,this._mediaSettings.auxVideoFps=a.frameRate||0,this._mediaSettings.auxVideoBps=n.profile.bitrate*1e3}}else r&&r.outMediaTrack&&(this._mediaSettings.audioChannel=r.profile.channelCount,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=r.profile.sampleRate),s&&s.outMediaTrack&&(this._mediaSettings.videoWidth=s.profile.width,this._mediaSettings.videoHeight=s.profile.height,this._mediaSettings.videoFps=s.profile.frameRate,this._mediaSettings.videoBps=s.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:z.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:F.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?p.AUXILIARY:p.MAIN} stream`),ut()?yield this.addTrackByTransceiver(e,t):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,t){return f(this,null,function*(){var s;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===p.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((s=this.localMainVideoTrack)!=null&&s.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===ie.INACTIVE&&(yield this.setTransceiverDirection(ie.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}addTrackBySender(e){return f(this,null,function*(){if(!e.outMediaTrack)return;let t=e.outMediaTrack;hi()&&this._peerConnection.getTransceivers().findIndex(s=>s.direction==="stopped")>=0&&(this._log.warn("transceiver is stopping, negotiate sdp first"),yield this.updateOffer("remove",t));let r=this._peerConnection.getSenders().find(s=>s.track&&s.track.kind===t.kind);if(r&&r.track){this._log.warn("sender already exists, remove sender first");let s=r.track;this.removeSender(r),yield this.updateOffer("remove",s)}if(t&&this._peerConnection.addTrack(t,new MediaStream([t])),t.kind===p.VIDEO&&e instanceof Be&&e.small){let s=new MediaStream,{smallTrack:n}=this._room.videoManager;s.addTrack(n),this._peerConnection.addTrack(n,s)}yield this.updateOffer("add",t)})}isNeedToResetOfferOrder(){if(this._sdpSemantics===lo||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,t=Ce(e);for(let r=0;r<t.media.length;r++)if(Number(t.media[r].mid)===0&&t.media[r].type===p.VIDEO)return!0;return!1}removeSender(e){let t=null;hi()&&(t=this._peerConnection.getTransceivers().find(r=>r.sender&&r.sender.track===e.track)),this._peerConnection.removeTrack(e),t&&ae(t.stop)&&(this._log.info("stop transceiver"),t.stop())}removeTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?p.AUXILIARY:p.MAIN} stream`),ut()?yield this.removeTrackByTransceiver(e,t):yield this.removeTrackBySender(e)})}removeTrackByTransceiver(e,t){return f(this,null,function*(){if(!e.outMediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===p.AUDIO)yield r[0].sender.replaceTrack(null);else{let s=t?3:1;yield r[s].sender.replaceTrack(null),s===1&&e.small&&(yield r[2].sender.replaceTrack(null)),yield this.setTransceiverDirection(ie.INACTIVE,[s])}this.updateMediaSettings(),yield this.doPublishChange()})}setTransceiverDirection(e,t){return f(this,null,function*(){if(!ne)return;let r=!1,s=!1;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let n=this._peerConnection.getTransceivers();if(t.forEach(l=>{n[l].direction!==e&&(n[l].direction=e,r=!0)}),r){this._log.info("updating offer");let l=yield this._peerConnection.createOffer();yield this.setOffer(l)}let a=-1,c=this._peerConnection.remoteDescription.sdp.split(`\r
65
- `).map(l=>{if(l.match(new RegExp(`a=(${ie.INACTIVE}|${ie.RECVONLY}|${ie.SENDONLY})`))&&a++,t.includes(a)){if(e===ie.INACTIVE&&l.includes(`a=${ie.RECVONLY}`))return s=!0,`a=${e}`;if(e===ie.SENDONLY&&l.includes(`a=${ie.INACTIVE}`))return s=!0,`a=${ie.RECVONLY}`}return l}).join(`\r
66
- `);s&&(this._log.info("updating answer"),yield this.setAnswer({type:"answer",sdp:c}))})}removeTrackBySender(e){return f(this,null,function*(){if(!e.outMediaTrack)return;if(e.kind===p.VIDEO&&this.isNeedToResetOfferOrder()&&this.localMainAudioTrack){this.reset(),this.initialize(),yield this.publish({localAudioTrack:this.localMainAudioTrack,isAuxiliary:!1});return}let t=this._peerConnection.getSenders().find(r=>r.track===e.outMediaTrack);t&&(this.removeSender(t),e.kind===p.VIDEO&&e.small&&this._peerConnection.getSenders().forEach(r=>{r.track&&r.track.kind===p.VIDEO&&this.removeSender(r)})),yield this.updateOffer("remove",e.outMediaTrack)})}replaceTrack(e){return f(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders();if(!t||t.length===0||!e.mediaTrack)return!1;let r;if(ut()?r=e.kind===p.AUDIO?t[0]:t[1]:r=t.find(a=>a.track&&a.track.kind===e.kind),!r)return!1;let s=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${e.kind} track on ${s?p.AUXILIARY:p.MAIN} stream`),e.kind===p.AUDIO?yield r.replaceTrack(e.outMediaTrack):e.kind===p.VIDEO&&(s?t[3]&&(yield t[3].replaceTrack(e.outMediaTrack)):yield r.replaceTrack(e.outMediaTrack)),!0})}updateOffer(e,t){return f(this,null,function*(){try{let r=yield this._peerConnection.createOffer(Af);ne&&r.sdp&&(r.sdp=this.setSDPDirection(r.sdp,"sendrecv")),yield this.setOffer(r);let s=this.updateMediaSettings(),n={action:e,trackId:t.id,kind:t.kind===p.VIDEO?"bigVideo":t.kind,type:"offer",sdp:this._peerConnection.localDescription.sdp,constraintConfig:s,state:this.publishState};this._log.info("createOffer success, sending updated offer to remote server"),this._log.debug(`updatedOffer: ${n.sdp}`);let a=yield this._signalChannel.sendWaitForResponse({command:z.PUBLISH_CHANGE,data:n,responseCommand:F.UPDATE_OFFER_RESULT,timeout:_d,commandDesc:"update offer"}),{code:c,message:l}=a.data;c!==0&&this.checkPublishResultCode(c,l),yield this.acceptAnswer(a.data.data),r.sdp&&this.updateSSRC(r.sdp)}catch(r){throw this._log.error(r),r}})}setBandwidth(n){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r,sdp:s}){if(!Qs())return s?t===p.VIDEO?this.updateVideoBandwidthRestriction(s,e,r):this.updateAudioBandwidthRestriction(s,e):void 0;let a,c=this._peerConnection.getSenders();if(ut()){let l=0;t===p.VIDEO&&(r===p.SMALL?l=2:r===p.AUXILIARY?l=3:l=1),a=c[l]}else a=c.find(l=>l.track&&l.track.kind===t);if(a){let l=a.getParameters();(!l.encodings||l.encodings.length===0)&&(l.encodings=[{}]),l.encodings[0].maxBitrate=e*1e3;try{return yield a.setParameters(l),this._log.info(`${r||""}${t} bandwidth ${e} kbps`),s}catch(u){if(this._log.info(`failed to set bandwidth by setting maxBitrate: ${u}`),s)return t===p.VIDEO?this.updateVideoBandwidthRestriction(s,e,r):this.updateAudioBandwidthRestriction(s,e)}}return s})}updateVideoBandwidthRestriction(e,t,r){let s="AS";ne&&(s="TIAS",t=t*1e3);let n=0,a=-1;return r===p.SMALL?n=1:r===p.AUXILIARY&&(n=2),e=e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/g,c=>(a+=1,a===n?`${c}b=${s}:${t}\r
67
- `:c)),e}updateAudioBandwidthRestriction(e,t){let r="AS";return ne&&(r="TIAS",t=t*1e3),e=e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,`m=audio $1\r
68
- c=IN $2\r
69
- b=${r}:${t}\r
70
- `),e}removeBandwidthRestriction(e){return e.replace(/b=AS:.*\r\n/,"").replace(/b=TIAS:.*\r\n/,"")}removeVideoOrientation(e){return e.replace(/urn:3gpp:video-orientation/,"")}connect(){return f(this,null,function*(){try{yield this.exchangeSDP(),yield this.waitForPeerConnectionConnected()}catch(e){throw this.closePeerConnection(!0),this.uninstallEvents(),e}})}exchangeSDP(){return f(this,null,function*(){try{yield this.createOffer(),this._log.info("createOffer success, sending offer to remote server"),yield this.doExchangeSDP()}catch(e){throw e}})}createOffer(){return f(this,null,function*(){try{let e=yield this._peerConnection.createOffer(Af);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:z.PUBLISH,responseCommand:F.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof Ke||this.localAuxVideoTrack instanceof Ke,state:this.publishState,constraintConfig:this._mediaSettings},enableLog:!1};return this._log.debug(`sending sdp offer: ${e.data.sdp}`),this._signalChannel.sendWaitForResponse(e).then(t=>{let{code:r,message:s,data:n}=t.data;return r===0?this.acceptAnswer(n):this.checkPublishResultCode(r,s)})}setSDPDirection(e,t,r="all"){let s=Ce(e);return s.media.forEach(n=>{(r==="all"||n.type===r)&&(n.direction=t)}),wt(s)}acceptAnswer(e){return f(this,null,function*(){var t,r,s,n,a;try{let c;if(this._publishingLocalAudioTrack||this._publishingLocalVideoTrack||this.isMainStreamPublished){let h=((t=this._publishingLocalVideoTrack)==null?void 0:t.profile.bitrate)||((r=this.localMainVideoTrack)==null?void 0:r.profile.bitrate),m=((s=this._publishingLocalAudioTrack)==null?void 0:s.profile.bitrate)||((n=this.localMainAudioTrack)==null?void 0:n.profile.bitrate);if(h){let g=this._isPublishingAux?p.AUXILIARY:p.BIG;c=yield this.setBandwidth({bandwidth:h,type:p.VIDEO,sdp:c,videoType:g})}m&&(c=yield this.setBandwidth({bandwidth:m,type:p.AUDIO,sdp:c}))}if(c=this.removeVideoOrientation(e.sdp),(a=this._publishingLocalVideoTrack)!=null&&a.small){let{smallStreamConfig:h}=this._room;c=yield this.setBandwidth({bandwidth:this._publishingLocalVideoTrack.small.bitrate||h.bitrate,type:p.VIDEO,videoType:p.SMALL,sdp:c})}let u={type:e.type,sdp:c};yield this.setAnswer(u),this._log.debug(`accepted answer: ${c}`)}catch(c){throw this._log.error(`failed to accept remote answer ${c}`),c}})}sendMutedFlag(e){var s,n,a;if(e===this.localAuxAudioTrack||e===this.localAuxVideoTrack)return;let r={audio:!!((s=this.localMainAudioTrack)!=null&&s.muted),bigVideo:!!((n=this.localMainVideoTrack)!=null&&n.muted),auxVideo:!!((a=this.localAuxVideoTrack)!=null&&a.muted)};this._log.info(`send muted state: ${JSON.stringify(r)}`),this._signalChannel.send(z.UPDATE_MUTE_STAT,r)}getIsReconnecting(){return this._isReconnecting}reconnect(){return f(this,null,function*(){if(!(We(hs.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:z.UNPUBLISH,responseCommand:F.UNPUBLISH_RESULT,enableLog:!1}),this.closePeerConnection(),this.initialize(),this.isMainStreamPublished&&(yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0})),this._log.warn("reconnect() uplink reconnect successfully"),this.stopReconnection()}catch(t){let r=Ut(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&E.emit(C.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{Ce(e).media.forEach((r,s)=>{if(r.type===p.AUDIO){let n=r.ssrcs&&r.ssrcs[0];n&&(this.ssrc.audio=Number(n.id))}else{if(this._sdpSemantics===lo&&r.ssrcGroups){r.ssrcGroups.forEach((a,c)=>{let l=Number(a.ssrcs.split(" ")[0]);c===0?this.ssrc.video=l:c===1&&(this.ssrc.small=l)});return}let n=r.ssrcs&&r.ssrcs[0];if(!n)return;switch(s){case 1:this.ssrc.video=Number(n.id);break;case 2:this.ssrc.small=Number(n.id);break;case 3:this.ssrc.auxiliary=Number(n.id);break;default:break}}})}catch(t){}}getVideoTrackId(e=p.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===p.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===p.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===p.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===p.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===Rr?(this._log.error(Ue.NOT_SUPPORTED_H264ENCODE),new v({code:A.NOT_SUPPORTED_H264,message:V({key:L.NOT_SUPPORTED_H264ENCODE})})):new v({code:A.UNKNOWN,message:V({key:L.SIGNAL_RESPONSE_FAILED,data:{signalResponse:F.PUBLISH_RESULT,code:e,message:t}})})}};M([Y(e=>function(...t){return new Promise((r,s)=>{let n=a=>{this._emitter.off("closed",n),s(new v({code:A.API_CALL_ABORTED,message:V({key:L.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,s).finally(()=>{this._emitter.off("closed",n)})})})],hs.prototype,"publish",1),M([mt(521715,!1)],hs.prototype,"unpublish",1),M([st(at.prototype.afterConnect),Qa(at.prototype.beforeConnect)],hs.prototype,"connect",1);var fh=hs,Dn=fh;var Mn=class{constructor(i,e){this.room=i;d(this,"_log");d(this,"_prevReportTime",0);d(this,"_prevReport",{});d(this,"_prevStats",null);d(this,"_prevEncoderImplementation","");d(this,"_prevAuxEncoderImpl","");d(this,"_prevQualityLimitationReason","");d(this,"_prevAuxQualityLimitationReason","");d(this,"_prevDecoderImplementationMap",new Map);d(this,"_decodeMap",new Map);d(this,"totalBytesSent",0);d(this,"totalBytesReceived",0);d(this,"_spcStats",null);this._log=e}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}getSenderStats(i){return f(this,null,function*(){var s;let e={audio:{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0},video:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},small:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},auxiliary:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},rtt:0},t=i.getPeerConnection(),r=i.getSSRC();if(t)try{if((this._spcStats||(yield t.getStats())).forEach(a=>{var u,h,m;let c,l;if(a.type==="outbound-rtp")if((a.mediaType||a.kind)===p.VIDEO){if(a.ssrc===r.video?(c=p.VIDEO,l=i.localMainVideoTrack):a.ssrc===r.small?c=p.SMALL:a.ssrc===r.auxiliary&&(l=i.localAuxVideoTrack,c=p.AUXILIARY),!c)return;if(e[c].bytesSent=a.bytesSent,e[c].packetsSent=a.packetsSent,e[c].framesEncoded=a.framesEncoded,T(a.keyFramesEncoded)||(e[c].keyFramesEncoded=a.keyFramesEncoded),T(a.nackCount)||(e[c].nackCount=a.nackCount),T(a.pliCount)||(e[c].pliCount=a.pliCount),T(a.retransmittedPacketsSent)||(e[c].retransmittedPacketsSent=a.retransmittedPacketsSent),T(a.totalEncodeTime)||(e[c].totalEncodeTime=a.totalEncodeTime),T(a.totalPacketSendDelay)||(e[c].totalPacketSendDelay=a.totalPacketSendDelay),!T(a.encoderImplementation)&&(c===p.VIDEO&&this._prevEncoderImplementation!==a.encoderImplementation||c===p.AUXILIARY&&this._prevAuxEncoderImpl!==a.encoderImplementation)){let S=2,_=this._prevEncoderImplementation;c===p.AUXILIARY&&(S=7,_=this._prevAuxEncoderImpl),E.emit("262",{userId:i.userId,streamType:S,prevImplementation:_,implementation:a.encoderImplementation,codec:i.videoCodec,isHWCodec:a.powerEfficientEncoder}),this[c===p.VIDEO?"_prevEncoderImplementation":"_prevAuxEncoderImpl"]=a.encoderImplementation,this._log.info(`${c===p.AUXILIARY?"aux ":""}encoderImplementation change to ${a.encoderImplementation}(${i.videoCodec}) HWEncoder: ${a.powerEfficientEncoder}`)}a.ssrc===r.video?!T(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`qualityLimitationReason change to ${a.qualityLimitationReason}`),E.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevQualityLimitationReason,streamType:2,isQosClearFirst:(u=i.localMainVideoTrack)==null?void 0:u.isQosClearFirst}),this._prevQualityLimitationReason=a.qualityLimitationReason):a.ssrc===r.auxiliary&&!T(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevAuxQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`aux qualityLimitationReason change to ${a.qualityLimitationReason}`),E.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevAuxQualityLimitationReason,streamType:7,isQosClearFirst:(h=i.localAuxVideoTrack)==null?void 0:h.isQosClearFirst}),this._prevAuxQualityLimitationReason=a.qualityLimitationReason)}else e.audio.bytesSent=a.bytesSent,e.audio.packetsSent=a.packetsSent;else a.type==="candidate-pair"?hr(a)&&(this.totalBytesSent=a.bytesSent,q(a.currentRoundTripTime)&&(e.rtt=Math.floor(a.currentRoundTripTime*1e3))):a.type==="media-source"&&(a.kind===p.AUDIO?(e.audio.audioLevel=a.audioLevel||0,e.audio.totalAudioEnergy=a.totalAudioEnergy||0,a.echoReturnLoss,a.totalSamplesDuration&&(e.audio.totalSamplesDuration=a.totalSamplesDuration)):a.kind===p.VIDEO&&(a.trackIdentifier===i.getVideoTrackId(p.VIDEO)?e.video.fpsCapture=a.framesPerSecond:a.trackIdentifier===i.getVideoTrackId(p.AUXILIARY)?e.auxiliary.fpsCapture=a.framesPerSecond:e.small.fpsCapture=a.framesPerSecond));if(!T(a.audioLevel)&&((m=i.localMainAudioTrack)!=null&&m.mediaTrack)&&a.trackIdentifier===i.localMainAudioTrack.mediaTrack.id&&(e.audio.audioLevel=a.audioLevel||0),!T(a.frameWidth)){let g=p.SMALL;a.trackIdentifier===i.getVideoTrackId(p.VIDEO)||a.ssrc===r.video?g=p.VIDEO:(a.trackIdentifier===i.getVideoTrackId(p.AUXILIARY)||a.ssrc===r.auxiliary)&&(g=p.AUXILIARY),e[g].frameWidth=a.frameWidth,e[g].frameHeight=a.frameHeight,e[g].framesSent=a.framesSent}}),i.localMainAudioTrack){let a=i.localMainAudioTrack.getInternalAudioLevel(),c=i.localMainAudioTrack.getInternalAudioLevelAfter3A();e.audio.audioCaptureEnergyAfter3a=c,e.audio.micAudioLevel=a,e.audio.audioLevel===0&&(e.audio.audioLevel=a)}this.totalBytesSent||(this.totalBytesSent+=e.audio.bytesSent+e.video.bytesSent+e.auxiliary.bytesSent),Object.keys(e).forEach(a=>{a===p.AUDIO?(i.localMainAudioTrack&&(i.localMainAudioTrack.stat=e[a]),i.localAuxAudioTrack&&(i.localAuxAudioTrack.stat=e[a])):a===p.VIDEO?i.localMainVideoTrack&&(i.localMainVideoTrack.stat=e[a]):a===p.AUXILIARY&&i.localAuxVideoTrack&&(i.localAuxVideoTrack.stat=e[a])})}catch(n){this._log.warn(`failed to getStats on sender connection ${n}`)}return e.rtt===0&&(e.rtt=((s=this.room.networkQuality)==null?void 0:s.uplinkRTT)||0),e})}getReceiverStats(i){return f(this,null,function*(){var r,s,n;let e={tinyId:i.tinyId,userId:i.userId,rtt:0,hasAudio:!1,hasVideo:!1,hasAuxiliary:!1,isSmallSubscribed:!1,audio:{bytesReceived:0,packetsReceived:0,packetsLost:0,p2pDelay:0,totalJitter:0,totalJitterCount:0,audioLevel:0,totalAudioEnergy:0,insertedSamplesForDeceleration:0,removedSamplesForAcceleration:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,freezeCount:0,totalFreezesDuration:0,totalJitter:0,totalJitterCount:0,p2pDelay:0,codec:""},auxiliary:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,totalJitter:0,totalJitterCount:0,p2pDelay:0,codec:""}},t=i.getPeerConnection();if(t)try{let{ssrc:a}=i,{muteState:c,subscribeState:l}=i;(this._spcStats||(yield t.getStats())).forEach(h=>{var m,g;if(h.type==="codec"&&this._decodeMap.set(h.id,h),h.type==="inbound-rtp"){let S=(h.mediaType||h.kind)===p.AUDIO;if(S){if(h.ssrc!==a.audio||!c.hasAudio)return;e.audio.packetsReceived=h.packetsReceived,e.audio.bytesReceived=h.bytesReceived,e.audio.packetsLost=h.packetsLost,h.insertedSamplesForDeceleration&&(e.audio.insertedSamplesForDeceleration=h.insertedSamplesForDeceleration),h.removedSamplesForAcceleration&&(e.audio.removedSamplesForAcceleration=h.removedSamplesForAcceleration),h.totalSamplesDuration&&(e.audio.totalSamplesDuration=h.totalSamplesDuration),h.totalSamplesReceived&&(e.audio.totalSamplesReceived=h.totalSamplesReceived),h.concealedSamples&&(e.audio.concealedSamples=h.concealedSamples),h.silentConcealedSamples&&(e.audio.silentConcealedSamples=h.silentConcealedSamples);let{remoteAudioTrack:_}=i;_.stat.packetsReceived=h.packetsReceived,_.stat.bytesReceived=h.bytesReceived,_.stat.packetsLost=h.packetsLost,e.audio.p2pDelay=_.stat.end2EndDelay,e.hasAudio=!0}else{if(ne&&h.bytesReceived===0)return;let _;h.ssrc===a.video&&c.hasVideo&&(e.video.packetsReceived=h.packetsReceived,e.video.bytesReceived=h.bytesReceived,e.video.packetsLost=h.packetsLost,e.video.framesReceived=h.framesReceived,e.video.framesDecoded=h.framesDecoded,e.video.fpsDecoded=h.framesPerSecond,e.hasVideo=!0,i.videoCodec=jt[(m=this._decodeMap.get(h.codecId))==null?void 0:m.mimeType.split("/")[1]]||"h264",e.video.codec=i.videoCodec,_=i.remoteVideoTrack,c.hasSmall&&l.smallVideo&&(e.isSmallSubscribed=!0),h.decoderImplementation&&(!this._prevDecoderImplementationMap.has(e.userId)||this._prevDecoderImplementationMap.get(e.userId)!==h.decoderImplementation)&&(this._log.info(`${e.userId} decoderImplementation change to ${h.decoderImplementation}(${i.videoCodec}) HWDecoder: ${h.powerEfficientDecoder}`),E.emit("262",{userId:this.room.userId,remoteUserId:e.userId,prevImplementation:this._prevDecoderImplementationMap.get(e.userId),implementation:h.decoderImplementation,codec:i.videoCodec,isHWCodec:h.powerEfficientDecoder}),this._prevDecoderImplementationMap.set(e.userId,h.decoderImplementation))),h.ssrc===a.auxiliary&&c.hasAuxiliary&&(e.auxiliary.packetsReceived=h.packetsReceived,e.auxiliary.bytesReceived=h.bytesReceived,e.auxiliary.packetsLost=h.packetsLost,e.auxiliary.framesReceived=h.framesReceived,e.auxiliary.framesDecoded=h.framesDecoded,e.auxiliary.fpsDecoded=h.framesPerSecond,_=i.remoteAuxiliaryTrack,e.auxiliary.p2pDelay=_.stat.end2EndDelay,e.hasAuxiliary=!0,e.video.codec=((g=this._decodeMap.get(h.codecId))==null?void 0:g.mimeType.split("/")[1].toLowerCase())||"h264"),_&&(_.stat.packetsReceived=h.packetsReceived,_.stat.bytesReceived=h.bytesReceived,_.stat.packetsLost=h.packetsLost,_.stat.framesReceived=h.framesReceived,_.stat.framesDecoded=h.framesDecoded,h.jitterBufferDelay&&(_.stat.jitterBufferDelay=Math.floor(h.jitterBufferDelay/h.jitterBufferEmittedCount*1e3)),e.video.p2pDelay=_.stat.end2EndDelay)}h.jitterBufferDelay&&(S?(e.audio.totalJitter=h.jitterBufferDelay,e.audio.totalJitterCount=h.jitterBufferEmittedCount):h.ssrc===a.video&&c.hasVideo?(e.video.totalJitter=h.jitterBufferDelay,e.video.totalJitterCount=h.jitterBufferEmittedCount):h.ssrc===a.auxiliary&&c.hasAuxiliary&&(e.auxiliary.totalJitter=h.jitterBufferDelay,e.auxiliary.totalJitterCount=h.jitterBufferEmittedCount))}else h.type==="candidate-pair"&&hr(h)&&(this.totalBytesReceived=h.bytesReceived,q(h.currentRoundTripTime)&&(e.rtt=Math.floor(h.currentRoundTripTime*1e3)));T(h.frameWidth)||((h.trackIdentifier===i.getMainStreamVideoTrackId()||h.ssrc===a.video)&&(e.video.frameWidth=h.frameWidth,e.video.frameHeight=h.frameHeight,i.remoteVideoTrack.stat.frameWidth=h.frameWidth,i.remoteVideoTrack.stat.frameHeight=h.frameHeight),(h.trackIdentifier===i.getAuxStreamVideoTrackId()||h.ssrc===a.auxiliary)&&(e.auxiliary.frameWidth=h.frameWidth,e.auxiliary.frameHeight=h.frameHeight,i.remoteAuxiliaryTrack.stat.frameWidth=h.frameWidth,i.remoteAuxiliaryTrack.stat.frameHeight=h.frameHeight)),!T(h.audioLevel)&&i.muteState.audioAvailable&&i.remoteAudioTrack.mediaTrack&&h.trackIdentifier===i.remoteAudioTrack.mediaTrack.id&&(e.audio.audioLevel=h.audioLevel||0,e.audio.totalAudioEnergy=h.totalAudioEnergy||0)}),e.audio.audioLevel===0&&i.muteState.audioAvailable&&(e.audio.audioLevel=i.remoteAudioTrack.getInternalAudioLevel()||0),this.totalBytesReceived||(this.totalBytesReceived+=e.audio.bytesReceived+e.video.bytesReceived+e.auxiliary.bytesReceived),T((r=i.remoteVideoTrack.player.stat)==null?void 0:r.fps)||(e.video.fpsRender=i.remoteVideoTrack.player.stat.fps),T((s=i.remoteAuxiliaryTrack.player.stat)==null?void 0:s.fps)||(e.auxiliary.fpsRender=i.remoteAuxiliaryTrack.player.stat.fps)}catch(a){this._log.warn(`failed to getStats on receiver connection ${a}`)}return e.rtt===0&&(e.rtt=((n=this.room.networkQuality)==null?void 0:n.uplinkRTT)||0),e})}getStats(i,e){return f(this,null,function*(){let t={},r=[];if(this.room.singlePC){let s=this.room.singlePC.getPeerConnection();if(!s)return{senderStats:t,receiverStats:r};let n=P(),a=yield s.getStats(),c=P();c-n>2e3&&this._log.warn(`getStats cost ${c-n}ms`);let l=[],u=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source","codec"]);a.forEach(h=>u.has(h.type)&&l.push(h)),this._spcStats=l}i&&(t=yield this.getSenderStats(i));for(let[s,n]of e){let a=yield this.getReceiverStats(n);r.push(a)}return{senderStats:t,receiverStats:r}})}getDifferenceValue(i,e){if(Ti(i))return e;let t=e-i;return t<0?0:t}prepareReport({stats:i,report:e,freezeMap:t}){var m,g,S;if(!Ti(i.senderStats)){let _={uint32_audio_level:i.senderStats.audio.audioLevel*Tt,uint32_audio_energy:(i.senderStats.audio.totalAudioEnergy||0)*1e6,uint32_audio_codec_bitrate:i.senderStats.audio.bytesSent};i.senderStats.audio.micAudioLevel&&(_.uint32_mic_audio_level=i.senderStats.audio.micAudioLevel*Tt),i.senderStats.audio.audioCaptureEnergyAfter3a&&(_.uint32_audio_capture_energy_after3a=i.senderStats.audio.audioCaptureEnergyAfter3a*Tt),i.senderStats.audio.totalSamplesDuration&&(e.msg_device_info.uint32_audio_capture_cost=i.senderStats.audio.totalSamplesDuration);let I=[];if(i.senderStats.video.bytesSent){let K={uint32_video_stream_type:2,uint32_video_codec_fps:i.senderStats.video.framesSent,uint32_video_capture_fps:i.senderStats.video.fpsCapture,uint32_video_width:i.senderStats.video.frameWidth,uint32_video_height:i.senderStats.video.frameHeight,uint32_video_codec_bitrate:i.senderStats.video.bytesSent,uint32_video_enc_fps:i.senderStats.video.framesEncoded,uint32_key_frame_count:i.senderStats.video.keyFramesEncoded,uint32_nack_count:i.senderStats.video.nackCount,uint32_pli_count:i.senderStats.video.pliCount,uint32_encode_cost:(i.senderStats.video.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.video.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.video.retransmittedPacketsSent};I.push(K)}if(i.senderStats.small.bytesSent){let K={uint32_video_stream_type:3,uint32_video_codec_fps:i.senderStats.small.framesSent||0,uint32_video_capture_fps:i.senderStats.small.fpsCapture||0,uint32_video_width:i.senderStats.small.frameWidth||0,uint32_video_height:i.senderStats.small.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.small.bytesSent,uint32_video_enc_fps:i.senderStats.small.framesEncoded||0,uint32_key_frame_count:i.senderStats.small.keyFramesEncoded,uint32_nack_count:i.senderStats.small.nackCount,uint32_pli_count:i.senderStats.small.pliCount,uint32_encode_cost:(i.senderStats.small.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.small.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.small.retransmittedPacketsSent};I.push(K)}if(i.senderStats.auxiliary.bytesSent){let K={uint32_video_stream_type:7,uint32_video_codec_fps:i.senderStats.auxiliary.framesSent||0,uint32_video_capture_fps:i.senderStats.auxiliary.fpsCapture||0,uint32_video_width:i.senderStats.auxiliary.frameWidth||0,uint32_video_height:i.senderStats.auxiliary.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.auxiliary.bytesSent,uint32_video_enc_fps:i.senderStats.auxiliary.framesEncoded||0,uint32_key_frame_count:i.senderStats.auxiliary.keyFramesEncoded,uint32_nack_count:i.senderStats.auxiliary.nackCount,uint32_pli_count:i.senderStats.auxiliary.pliCount,uint32_encode_cost:(i.senderStats.auxiliary.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.auxiliary.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.auxiliary.retransmittedPacketsSent};I.push(K)}let R={uint32_bitrate:0,uint32_lost:0,uint32_rtt:i.senderStats.rtt};e.msg_up_stream_info={msg_audio_status:_,msg_video_status:I,msg_network_status:R}}let r=(m=Ee())==null?void 0:m.playoutStats;r&&(e.msg_device_info.uint32_audio_play_cost=r.totalFramesDuration);let{statInterval:s}=this;e.msg_down_stream_info=[],i.receiverStats.forEach(_=>{let I={msg_user_info:{str_identifier:_.userId,uint64_tinyid:_.tinyId},msg_network_status:{uint32_rtt:_.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(_.hasAudio){let R={uint32_audio_p2p_delay:_.audio.p2pDelay,uint32_audio_cache_ms:_.audio.totalJitter,uint32_audio_cache_ms_count:_.audio.totalJitterCount,uint32_audio_codec_bitrate:_.audio.bytesReceived,uint32_audio_total_bitrate:_.audio.bytesReceived,uint32_audio_level:_.audio.audioLevel*1e8,uint32_audio_energy:_.audio.totalAudioEnergy*1e6,uint32_audio_receive:_.audio.packetsReceived,uint32_audio_origin_lost:_.audio.packetsLost};I.msg_audio_status=R}if(_.hasVideo){let R=t.get(`${_.userId}_${md}`),K=R?R.duration:0,G={uint32_video_stream_type:_.isSmallSubscribed?3:2,uint32_video_receive_fps:_.video.framesReceived,uint32_video_width:_.video.frameWidth,uint32_video_height:_.video.frameHeight,uint32_video_codec_bitrate:_.video.bytesReceived,uint32_video_receive:_.video.packetsReceived,uint32_video_origin_lost:_.video.packetsLost,uint32_video_block_time:K,uint32_video_dec_fps:_.video.framesDecoded,uint32_video_codec_fps:_.video.fpsRender,uint32_video_cache_ms:_.video.totalJitter,uint32_video_cache_ms_count:_.video.totalJitterCount,uint32_video_p2p_delay:_.video.p2pDelay,uint32_video_codec:_.video.codec};I.msg_video_status.push(G)}if(_.hasAuxiliary){let R=t.get(`${_.userId}_${pd}`),K=R?R.duration:0,G={uint32_video_stream_type:7,uint32_video_receive_fps:_.auxiliary.framesReceived,uint32_video_width:_.auxiliary.frameWidth,uint32_video_height:_.auxiliary.frameHeight,uint32_video_codec_bitrate:_.auxiliary.bytesReceived,uint32_video_receive:_.auxiliary.packetsReceived+_.auxiliary.packetsLost,uint32_video_origin_lost:_.auxiliary.packetsLost,uint32_video_block_time:K,uint32_video_dec_fps:_.auxiliary.framesDecoded,uint32_video_codec_fps:_.video.fpsRender,uint32_video_cache_ms:_.auxiliary.totalJitter,uint32_video_cache_ms_count:_.auxiliary.totalJitterCount,uint32_video_p2p_delay:_.auxiliary.p2pDelay,uint32_video_codec:_.video.codec};I.msg_video_status.push(G)}e.msg_down_stream_info.push(I)});let n=this._prevReport,a=this._prevStats;if(this._prevReport=JSON.parse(JSON.stringify(e)),this._prevStats=JSON.parse(JSON.stringify(i)),e.msg_up_stream_info.msg_audio_status&&n.msg_up_stream_info.msg_audio_status){let _=n.msg_up_stream_info.msg_audio_status,I=e.msg_up_stream_info.msg_audio_status;if(_.uint32_audio_codec_bitrate===0)I.uint32_audio_codec_bitrate=0;else{let R=this.getDifferenceValue(_.uint32_audio_codec_bitrate,I.uint32_audio_codec_bitrate);I.uint32_audio_codec_bitrate=Math.round(R*8/s),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=I.uint32_audio_codec_bitrate}(g=n.msg_device_info)!=null&&g.uint32_audio_capture_cost?e.msg_device_info.uint32_audio_capture_cost=2*Math.floor(this.getDifferenceValue(n.msg_device_info.uint32_audio_capture_cost,e.msg_device_info.uint32_audio_capture_cost)*1e3/s):delete e.msg_device_info.uint32_audio_capture_cost}let c=n.msg_up_stream_info.msg_video_status;e.msg_up_stream_info.msg_video_status.forEach(_=>{let I=c.find(_e=>_e.uint32_video_stream_type===_.uint32_video_stream_type);if(!I||I.uint32_video_codec_bitrate===0){_.uint32_video_codec_bitrate=0,_.uint32_video_enc_fps=0,_.uint32_video_codec_fps=0;return}let R=0,K=0,G=0;I&&_.uint32_video_codec_bitrate>=I.uint32_video_codec_bitrate&&(R=I.uint32_video_codec_bitrate,K=I.uint32_video_enc_fps,G=I.uint32_video_codec_fps);let ee=this.getDifferenceValue(R,_.uint32_video_codec_bitrate);_.uint32_video_codec_bitrate=Math.round(ee*8/s),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=_.uint32_video_codec_bitrate,_.uint32_video_enc_fps=Math.round(this.getDifferenceValue(K,_.uint32_video_enc_fps)/s),_.uint32_video_codec_fps=Math.round(this.getDifferenceValue(G,_.uint32_video_codec_fps)/s),I.uint32_video_width===0&&I.uint32_video_height===0&&I.uint32_video_codec_fps===0&&(_.uint32_video_codec_fps=_.uint32_video_enc_fps),T(I.uint32_key_frame_count)||(_.uint32_key_frame_count=Math.round(this.getDifferenceValue(I.uint32_key_frame_count,_.uint32_key_frame_count))),T(I.uint32_nack_count)||(_.uint32_nack_count=Math.round(this.getDifferenceValue(I.uint32_nack_count,_.uint32_nack_count))),T(I.uint32_pli_count)||(_.uint32_pli_count=Math.round(this.getDifferenceValue(I.uint32_pli_count,_.uint32_pli_count))),T(I.uint32_video_arq_packets)||(_.uint32_video_arq_packets=Math.round(this.getDifferenceValue(I.uint32_video_arq_packets,_.uint32_video_arq_packets))),T(I.uint32_encode_cost)||(_.uint32_encode_cost=Math.round(this.getDifferenceValue(I.uint32_encode_cost,_.uint32_encode_cost)/s)),T(I.uint32_send_packet_cost)||(_.uint32_send_packet_cost=Math.round(this.getDifferenceValue(I.uint32_send_packet_cost,_.uint32_send_packet_cost)/s))});let u=n.msg_down_stream_info;e.msg_down_stream_info=e.msg_down_stream_info.filter(_=>u.find(I=>I.msg_user_info.uint64_tinyid===_.msg_user_info.uint64_tinyid));let h=e.msg_down_stream_info;return h.forEach(_=>{let I=u.find(R=>R.msg_user_info.uint64_tinyid===_.msg_user_info.uint64_tinyid);if(!Ti(_.msg_audio_status)&&!Ti(I.msg_audio_status)){let R=_.msg_audio_status,K=I.msg_audio_status,G=this.getDifferenceValue(K.uint32_audio_cache_ms_count,R.uint32_audio_cache_ms_count);delete R.uint32_audio_cache_ms_count,R.uint32_audio_cache_ms=Math.floor(1e3*this.getDifferenceValue(K.uint32_audio_cache_ms,R.uint32_audio_cache_ms)/G)||0;let ee=this.room.remotePublishedUserMap.get(_.msg_user_info.str_identifier);ee&&(ee.remoteAudioTrack.stat.jitterBufferDelay=R.uint32_audio_cache_ms),R.uint32_audio_origin_lost=this.getDifferenceValue(K.uint32_audio_origin_lost,R.uint32_audio_origin_lost),R.uint32_audio_receive=this.getDifferenceValue(K.uint32_audio_receive,R.uint32_audio_receive),R.uint32_audio_receive+=R.uint32_audio_origin_lost;let _e=this.getDifferenceValue(K.uint32_audio_codec_bitrate,R.uint32_audio_codec_bitrate);R.uint32_audio_codec_bitrate=Math.round(_e*8/s),R.uint32_audio_total_bitrate=Math.round(_e*8/s)}else _.msg_audio_status={};if(_.msg_video_status&&I.msg_video_status){let R=I.msg_video_status;_.msg_video_status=_.msg_video_status.filter(G=>R.find(ee=>ee.uint32_video_stream_type===G.uint32_video_stream_type)),_.msg_video_status.forEach(G=>{let ee=R.find(o_=>o_.uint32_video_stream_type===G.uint32_video_stream_type),_e=ee.uint32_video_receive,J=ee.uint32_video_origin_lost,Zf=ee.uint32_video_codec_bitrate,Kf=ee.uint32_video_receive_fps,e_=ee.uint32_video_dec_fps;G.uint32_video_origin_lost=this.getDifferenceValue(J,G.uint32_video_origin_lost),G.uint32_video_receive=this.getDifferenceValue(_e,G.uint32_video_receive)+G.uint32_video_origin_lost;let t_=this.getDifferenceValue(Zf,G.uint32_video_codec_bitrate);G.uint32_video_codec_bitrate=Math.round(t_*8/s);let i_=this.getDifferenceValue(Kf,G.uint32_video_receive_fps);G.uint32_video_receive_fps=Math.round(i_/s),G.uint32_video_dec_fps=Math.round(this.getDifferenceValue(e_,G.uint32_video_dec_fps)/s);let r_=this.getDifferenceValue(ee.uint32_video_cache_ms_count,G.uint32_video_cache_ms_count);delete G.uint32_video_cache_ms_count,G.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(ee.uint32_video_cache_ms,G.uint32_video_cache_ms)/r_)||0})}}),(S=n.msg_device_info)!=null&&S.uint32_audio_play_cost?e.msg_device_info.uint32_audio_play_cost=2*Math.floor(this.getDifferenceValue(n.msg_device_info.uint32_audio_play_cost,e.msg_device_info.uint32_audio_play_cost)/s):delete e.msg_device_info.uint32_audio_play_cost,a&&i.receiverStats.forEach(_=>{if(_.audio.concealedSamples&&_.audio.totalSamplesReceived){let I=a.receiverStats.find(R=>R.userId===_.userId);if(I&&I.audio.concealedSamples&&I.audio.totalSamplesReceived){let R=(_.audio.silentConcealedSamples||0)-(I.audio.silentConcealedSamples||0),K=_.audio.concealedSamples-I.audio.concealedSamples,G=_.audio.totalSamplesReceived-I.audio.totalSamplesReceived,ee=Math.floor((K-R)/G*1e3*s);if(ee>s*1e3/5){let _e=h.find(J=>J.msg_user_info.str_identifier===_.userId);_e&&(_e.msg_audio_status.uint32_audio_block_time=ee)}}}}),e}getStatsReport(r){return f(this,arguments,function*({uplinkConnection:i,downlinkConnections:e,freezeMap:t}){let s={msg_device_info:{},msg_up_stream_info:{msg_audio_status:{uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_capture_energy_after3a:0},msg_video_status:[],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}},msg_down_stream_info:[{msg_user_info:{str_identifier:"",uint64_tinyid:0},msg_audio_status:{uint32_audio_cache_ms:0,uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_total_bitrate:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_final_lost:0},msg_video_status:[{uint32_video_cache_ms:0,uint32_video_stream_type:0,uint32_video_receive_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_codec_bitrate:0,uint32_video_receive:0,uint32_video_origin_lost:0,uint32_video_block_time:0,uint32_video_dec_fps:0}],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}}]},n=yield this.getStats(i,e);return JSON.stringify(this._prevReport)==="{}"&&(this._prevReport=JSON.parse(JSON.stringify(s))),this.prepareReport({stats:n,report:s,freezeMap:t}),this._prevReportTime=Date.now(),s})}reset(){this._prevReportTime=0,this._prevReport={},this._prevEncoderImplementation="",this._prevQualityLimitationReason="",this._prevDecoderImplementationMap=new Map}};var yf=Ge(it());function Cf(o){let i={totalCost:0,local:0,redirect:0,httpCache:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let e=performance.getEntriesByType("resource").reverse();for(let t of e)if(t.name===o){let r=Math.round(t.duration),s=Math.max(Math.round(t.domainLookupStart-t.startTime),0),n=t.redirectStart>0?Math.max(Math.round(t.redirectEnd-t.redirectStart),0):0,a=t.fetchStart>0?Math.max(Math.round(t.domainLookupStart-t.fetchStart),0):0,c=Math.round(t.domainLookupEnd-t.domainLookupStart),l=Math.round(t.requestStart-t.secureConnectionStart),u=Math.round(t.secureConnectionStart-t.connectStart),h=Math.round(t.responseStart-t.requestStart),m=Math.round(t.responseEnd-(t.responseStart||t.startTime));i=w(D({},i),{totalCost:r,local:s,redirect:n,httpCache:a,dns:c,tcp:u,tls:l,request:h,response:m});break}}catch(e){}return i}function Rf(o){return new Promise(i=>f(this,null,function*(){let e=setTimeout(()=>{i({totalCost:1e4,local:0,dns:0,tcp:0,tls:0,request:0,response:0})},1e4),t=Date.now(),r=`https://${o}/?t=${t}`;try{yield fetch(r)}catch(n){}clearTimeout(e);let s=Cf(r);s.totalCost===0&&(s.totalCost=Date.now()-t),i(s)}))}var lS=700,ro=class ro extends yf.default{constructor({signalChannel:e,room:t}){super();d(this,"_room");d(this,"_signalChannel");d(this,"_log");d(this,"uplinkRTT",0);d(this,"uplinkLoss",0);d(this,"downlinkRTT",0);d(this,"downlinkLoss",0);d(this,"pingResults",{});d(this,"_downlinkPrevStatMap",new Map);d(this,"_downlinkLossAndRTTMap",new Map);d(this,"_interval",-1);d(this,"_uplinkNetworkQuality",0);d(this,"_downlinkNetworkQuality",0);this._room=t,this._signalChannel=e,this._log=b.createLogger({id:"q",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this.initialize()}get uplinkNetworkQuality(){return this._uplinkNetworkQuality}set uplinkNetworkQuality(e){e!==this._uplinkNetworkQuality&&this._log.info(`uplink ${this.uplinkNetworkQuality} -> ${e}, rtt: ${this.uplinkRTT}, loss: ${this.uplinkLoss} ws-rtt: ${this._signalChannel.rtt}`),this._uplinkNetworkQuality=e}get downlinkNetworkQuality(){return this._downlinkNetworkQuality}set downlinkNetworkQuality(e){if(e!==this._downlinkNetworkQuality){let{rtt:t,loss:r}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this._log.info(`downlink ${this.downlinkNetworkQuality} -> ${e}, rtt: ${t}, loss: ${r} ws-rtt: ${this._signalChannel.rtt}`)}this._downlinkNetworkQuality=e}initialize(){this._signalChannel.on(F.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(Ne.CONNECTION_STATE_CHANGED,this.handleSignalConnectionStateChange.bind(this)),this.start()}handleUplinkNetworkQuality(e){var c,l;if(e.data.code!==0)return;let t=e.data.data;if(t.delay&&this.updateDelay(t.delay),this._room.signalChannel&&t.wsRtt&&(this._room.signalChannel.rtt=t.wsRtt),!this._room.uplinkConnection){this.uplinkNetworkQuality=0,this.uplinkLoss=0,this.uplinkRTT=0;return}let r=(l=(c=this._room)==null?void 0:c.uplinkConnection)==null?void 0:l.getPeerConnection();if(r&&this.isPeerConnectionDisconnected(r)){this.uplinkNetworkQuality=6,this.uplinkLoss=0,this.uplinkRTT=0;return}let s=t.expectAudPkg+t.expectVidPkg,n=t.recvAudPkg+t.recvVidPkg,a=s-n;s===0&&n===0||(a<=0?this.uplinkLoss=0:this.uplinkLoss=Math.round(a/s*100),this.uplinkRTT=t.rtt,this.uplinkNetworkQuality=this.getNetworkQuality(this.uplinkLoss,this.uplinkRTT))}handleDownlinkNetworkQuality(){return f(this,null,function*(){if(this._room.remotePublishedUserMap.size===0){this.downlinkNetworkQuality=0;return}let e=[...this._room.remotePublishedUserMap.values()],t=e.filter(a=>{var c;return((c=a.getPeerConnection())==null?void 0:c.connectionState)===ge.CONNECTED});if(e.filter(a=>this.isPeerConnectionDisconnected(a.getPeerConnection())).length===e.length){this.downlinkNetworkQuality=6;return}for(let a=0;a<t.length;a++){let c=t[a].getPeerConnection();if(!c)return;let{rtt:l,totalPacketsLost:u,totalPacketsReceived:h}=yield this.getStat(c);if(!this._downlinkPrevStatMap.has(c)){this._downlinkPrevStatMap.set(c,{totalPacketsLost:u,totalPacketsReceived:h});continue}let m=0,g=this._downlinkPrevStatMap.get(c),S=u-g.totalPacketsLost,_=h-g.totalPacketsReceived;S<=0||_<0?m=0:m=Math.round(S/(S+_)*100),this._downlinkPrevStatMap.set(c,{totalPacketsLost:u,totalPacketsReceived:h}),this._downlinkLossAndRTTMap.set(c,{rtt:l,loss:m,userId:t[a].getUserId(),audioDelay:t[a].remoteAudioTrack.stat.end2EndDelay,videoDelay:t[a].remoteVideoTrack.stat.end2EndDelay})}if([...this._downlinkPrevStatMap.keys()].forEach(a=>{this.isPeerConnectionDisconnected(a)&&(this._downlinkPrevStatMap.delete(a),this._downlinkLossAndRTTMap.delete(a))}),this._downlinkLossAndRTTMap.size===0){this.downlinkRTT=0,this.downlinkLoss=0,this.downlinkNetworkQuality=0;return}let{rtt:s,loss:n}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this.downlinkRTT=s,this.downlinkLoss=n,this.downlinkNetworkQuality=this.getNetworkQuality(n,s)})}getStat(e){return f(this,null,function*(){let t={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!Hr())return t;let r=e.getReceivers();try{for(let s=0;s<r.length;s++)(yield r[s].getStats()).forEach(c=>{c.type==="candidate-pair"&&q(c.currentRoundTripTime)&&(t.rtt=Math.round(c.currentRoundTripTime*1e3)),c.type==="inbound-rtp"&&(c.mediaType===p.AUDIO||c.mediaType===p.VIDEO)&&(t.totalPacketsLost+=c.packetsLost,t.totalPacketsReceived+=c.packetsReceived)});return t.rtt===0&&(t.rtt=this.uplinkRTT),t}catch(s){return t}})}getAverageLossAndRTT(e){let t={rtt:0,loss:0};return Array.isArray(e)&&e.length>0&&(e.forEach(r=>{t.rtt+=r.rtt,t.loss+=r.loss}),Object.keys(t).forEach(r=>{t[r]=Math.round(t[r]/e.length)})),t}getNetworkQuality(e,t){return e>50||t>500?5:e>30||t>350?4:e>20||t>200?3:e>10||t>100?2:e>=0||t>=0?1:0}handleSignalConnectionStateChange(e){e.state==="DISCONNECTED"?(this.uplinkRTT=0,this.uplinkLoss=0,this.uplinkNetworkQuality=6):e.state==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}handleUplinkConnectionStateChange({state:e}){e==="DISCONNECTED"?(this.uplinkLoss=0,this.uplinkRTT=0,this.uplinkNetworkQuality=6):e==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}isPeerConnectionDisconnected(e){return!!(e&&(e.connectionState===ge.DISCONNECTED||e.connectionState===ge.FAILED||e.connectionState===ge.CLOSED))}setUplinkConnection(e){this._room.uplinkConnection=e,this._room.uplinkConnection?this._room.uplinkConnection.on("connection-state-changed",this.handleUplinkConnectionStateChange.bind(this)):(this.uplinkNetworkQuality=0,this.uplinkRTT=0,this.uplinkLoss=0)}start(){if(this._interval!==-1){this._log.info("network quality calculating is already started");return}this._log.debug("start network quality calculating"),this._interval=re.run("ric",()=>{var n;this.handleDownlinkNetworkQuality();let e=[...this._downlinkLossAndRTTMap.values()];E.emit(C.NETWORK_QUALITY,{room:this._room,uplink:{rtt:this.uplinkRTT,loss:this.uplinkLoss},downlinks:e});let t=(n=this._room.scheduleResult.config)==null?void 0:n.pingDomainInfo,r={uplinkNetworkQuality:this.uplinkNetworkQuality,downlinkNetworkQuality:this.downlinkNetworkQuality,uplinkRTT:this.uplinkRTT,uplinkLoss:this.uplinkLoss,downlinkRTT:this.downlinkRTT,downlinkLoss:this.downlinkLoss};t&&(r=w(D({},r),{pingResults:this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold?this.pingResults:{}})),this.emit(ro.EVENT_NETWORK_QUALITY,r);let s=Date.now();if(t&&(this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold)&&s-ro.lastPingTime>t.interval*1e3){ro.lastPingTime=Date.now();let a=t.domain.map(c=>Rf(c).then(l=>({domain:c,cost:l.totalCost})));Promise.all(a).then(c=>{this.pingResults.isPoorNetwork=c.some(l=>l.cost>lS),this.pingResults.timestamp=s,this.pingResults.data=c,c.forEach(l=>{N.addSuccessEvent({key:521718,cost:l.cost})}),this._log.warn(`All ping results: ${JSON.stringify(c)}`)}).catch(c=>{this._log.warn(`Error during pinging domains: ${c}`)})}},{delay:2e3})}stop(){this._log.debug("stopped"),this._interval!==-1&&(re.clearTask(this._interval),this._interval=-1),this._downlinkLossAndRTTMap.clear(),this._downlinkPrevStatMap.clear()}updateDelay(e){let{tinyIdToUserIdMap:t}=this._room;e.forEach(({srcTinyId:r,videoDelay:s,audioDelay:n})=>{let a=t.get(r);if(a){let c=this._room.remotePublishedUserMap.get(a);c==null||c.setDelay({videoDelay:s,audioDelay:n})}})}};d(ro,"EVENT_NETWORK_QUALITY","0"),d(ro,"lastPingTime",0);var ms=ro;function uS({fn:o,context:i}){return function(...e){try{let t=o.apply(i,e);return lr(t)?t.catch(r=>b.error(`${o.name}() error observed ${r}`)):t}catch(t){b.error(`${o.name}() error observed ${t}`)}}}var Jc=class{constructor(i){d(this,"_frameWorkType");d(this,"_component");d(this,"_language");d(this,"connectionType");d(this,"_room");d(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});d(this,"_keyPrefix");d(this,"_log");d(this,"_intervalId");d(this,"_firstPublishedUserList");d(this,"_networkQuality");d(this,"_basicInfo");d(this,"_pathJoinRoom");d(this,"_pathLeaveRoom");d(this,"_pathMainVideoMap");d(this,"_pathMainAudioMap");d(this,"_pathAuxiliaryMap");d(this,"_remoteStreamStatMap");d(this,"_localStreamStat");d(this,"_eventMap",new Map);d(this,"_captureCostSum",0);d(this,"_captureCostCount",0);d(this,"isDestroyed",!1);this._frameWorkType=i.frameWorkType||30,this._component=i.component||0,this.connectionType=i.connectionType||1,this._language=i.language||0,this._room=i.room,this._keyPrefix="key_point",this._log=b.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&ae(this[e])&&(this[e]=uS({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:xe,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,xr().then(i=>{this._basicInfo.string_os_version=Hi(),i?this._basicInfo.string_device_name=i.mobile?i.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(i,e){return this._eventMap.set(i,e),E.on(i,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(C.JOIN_START,this.handleJoinStart).addEvent(C.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(C.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(C.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(C.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(C.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(C.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(C.JOIN_FAILED,this.handleJoinFailed).addEvent(C.LEAVE_START,this.handleLeaveStart).addEvent(C.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(C.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(C.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(C.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(C.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(C.PUBLISH_START,this.handlePublishStart).addEvent(C.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(C.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(C.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(C.PLAY_TRACK_START,this.handlePlayStart).addEvent(C.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(C.PLAYER_STATE_CHANGED,({track:i,state:e,type:t})=>{!i.isRemote||!this.hitTest(i.room)||e==="PLAYING"&&(t===p.AUDIO?this.handleAudioPlaying(i):this.handleVideoPlaying(i))}).addEvent(C.SWITCH_ROOM_START,this.handleSwitchRoomStart).addEvent(C.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess).addEvent(C.SWITCH_ROOM_FAILED,this.handleSwitchRoomFailed).addEvent(C.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(C.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(C.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(C.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let r=e.hasAudio||e.hasVideo||e.hasSmall,s=e.hasAuxiliary,n=t.hasAudio||t.hasVideo||t.hasSmall,a=t.hasAuxiliary;!r&&n&&this.handleRemoteStreamAdded(t.userId,"main"),!s&&a&&this.handleRemoteStreamAdded(t.userId,"auxiliary")}).addEvent(C.SINGLE_CONNECTION_STAT,({room:i,stat:e})=>{this.hitTest(i)&&(this._pathJoinRoom.int32_ice_cost=e.ice,this._pathJoinRoom.int32_dtls_cost=e.dtls,this._pathJoinRoom.int32_peer_connection_cost=e.peerConnection)})}uninstallEvents(){window.removeEventListener("pagehide",this.handleUnload),this._eventMap.forEach((i,e)=>E.off(e,i)),this._eventMap.clear()}destroy(){this.uninstallEvents(),re.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(i){this.hitTest(i.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),i.params&&(T(i.params.frameWorkType)||(this._frameWorkType=i.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),T(i.params.component)||(this._component=i.params.component,this._basicInfo.uint32_component=this._component),T(i.params.language)||(this._language=i.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:i,detailCost:e}){if(this.hitTest(i)&&e){let{totalCost:t,local:r,dns:s,tcp:n,tls:a,request:c,response:l}=e;this._pathJoinRoom.int32_schedule_cost=t,this._pathJoinRoom.int32_schedule_local=r,this._pathJoinRoom.int32_schedule_dns=s,this._pathJoinRoom.int32_schedule_tcp=n,this._pathJoinRoom.int32_schedule_tls=a,this._pathJoinRoom.int32_schedule_request=c,this._pathJoinRoom.int32_schedule_response=l}}handleSignalConnectionStart({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd({room:i,error:e}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),e&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=e instanceof v?Number(e.getExtraCode()||e.getCode()):A.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=i.code,i.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=i.room.getSignalInfo())}handleJoinFailed({room:i,error:e}){this.hitTest(i)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=e.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=i.publishedUserList||[])}handleSendFirstVideoFrame({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(i){this.hitTest(i.room)&&this._pathLeaveRoom.uint64_end_time===0&&(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0?this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time:this._log.warn("pathJoinRoom endTime is 0"),this.report())}handleLeaveSendCMD(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleSwitchRoomStart(i){if(this.hitTest(i.room)){let e=Date.now();this.report().then(()=>{this._pathJoinRoom.uint64_start_time=e,this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=e})}}handleSwitchRoomSuccess({room:i}){if(this.hitTest(i)&&this._pathJoinRoom.uint64_end_time===0){let e=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=e,this._pathJoinRoom.uint64_end_time=e,this._pathJoinRoom.int32_end_ret}}handleSwitchRoomFailed({room:i,error:e}){if(this.hitTest(i)){let t=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=t,this._pathJoinRoom.uint64_end_time=t,e&&(this._pathJoinRoom.int32_end_ret=e instanceof v?Number(e.getExtraCode()||e.getCode()):A.UNKNOWN)}}handleRemoteStreamAdded(i,e){var r;let t=`${i}_${e}`;if(!this._remoteStreamStatMap.has(t)){let s={userId:i,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:w(D({},hS),{msg_user_info:new On({userId:i,tinyId:(r=this._room.remotePublishedUserMap.get(i))==null?void 0:r.tinyId,role:20})})};s.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(t,s)}}handleSubscribeStart({room:i,remotePublishedUser:e,streamType:t,subscribeState:r}){if(!this.hitTest(i))return;let{userId:s,tinyId:n,role:a}=e,c=new On({userId:s,tinyId:n,role:a==="anchor"?20:21}),l=Date.now(),u=`${s}_${t}`,h=this._remoteStreamStatMap.get(u);h&&h.subscribeStartTime===0&&(h.subscribeStartTime=l),t==="main"?(e.muteState.hasVideo&&(r.video||r.smallVideo)&&!this._pathMainVideoMap.has(u)&&this._pathMainVideoMap.set(u,{statsToReport:{msg_user_info:c,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:s,sendSubscribeCMDTime:l}),e.muteState.hasAudio&&r.audio&&!this._pathMainAudioMap.has(u)&&this._pathMainAudioMap.set(u,{statsToReport:{msg_user_info:c,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:s,sendSubscribeCMDTime:l})):e.muteState.hasAuxiliary&&r.auxiliary&&!this._pathAuxiliaryMap.has(u)&&this._pathAuxiliaryMap.set(u,{sendSubscribeCMDTime:l})}handleSubscribed({room:i,remotePublishedUser:e,streamType:t}){if(this.hitTest(i)){let r=`${e.userId}_${t}`,s=this._remoteStreamStatMap.get(r);s&&s.subscribedTime===0&&(s.subscribedTime=Date.now())}}handlePlayStart({track:i}){if(!i.isRemote||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._remoteStreamStatMap.get(e);(t==null?void 0:t.playStreamTime)===0&&(t.playStreamTime=Date.now())}handleVideoLoadedData({track:i}){if(!i.isRemote||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._pathMainVideoMap.get(e);t&&t.statsToReport.uint64_combine_first_frame_time===0&&(t.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(i){let e=`${i.userId}_${i.streamType}`,t=Date.now(),r=this._pathMainVideoMap.get(e),s=this._remoteStreamStatMap.get(e);if(s){let{statsToReport:n}=s;if(!n.uint32_video_render_first&&i.streamType==="main"?this.hasVideoFlag(i.userId):this.hasAuxFlag(i.userId)){let a=t-this._pathJoinRoom.uint64_start_time;n.uint32_video_render_first=a,N.addNumber({key:516820,value:a})}}(r==null?void 0:r.statsToReport.uint64_render_first_frame_time)===0&&(r.statsToReport.uint64_render_first_frame_time=t)}handleAudioPlaying(i){let e=`${i.userId}_${i.streamType}`,t=this._pathMainAudioMap.get(e);t&&t.statsToReport.uint64_play_first_frame_time===0&&(t.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(i){this.hitTest(i.room)&&(this._networkQuality.totalUplinkLoss+=i.uplink.loss,this._networkQuality.totalUplinkRTT+=i.uplink.rtt,this._networkQuality.count++,i.downlinks.forEach(({rtt:e,loss:t,userId:r,videoDelay:s,audioDelay:n})=>{let a=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(a)a.totalRTT+=e,a.totalLoss+=t,s&&(a.totalVideoDelay=(a.totalVideoDelay||0)+s,a.videoDelayCount=(a.videoDelayCount||0)+1),n&&(a.totalAudioDelay=(a.totalAudioDelay||0)+n,a.audioDelayCount=(a.audioDelayCount||0)+1),a.count++;else{let c,l,u,h;s&&(l=s,u=1),n&&(c=n,h=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(r,{totalRTT:e,totalLoss:t,count:1,totalAudioDelay:c,totalVideoDelay:l,audioDelayCount:h,videoDelayCount:u})}}))}handleHeartbeatStats(i){if(this.hitTest(i.room)){let{msg_device_info:e,msg_up_stream_info:t,msg_down_stream_info:r}=i.report;if(t.msg_video_status[0]){let{uint32_video_codec_bitrate:s,uint32_video_enc_fps:n,uint32_video_width:a,uint32_video_height:c}=t.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=s,this._localStreamStat.totalVideoFPS+=n,this._localStreamStat.totalVideoWidth+=a,this._localStreamStat.totalVideoHeight+=c,this._localStreamStat.videoCount++}if(t.msg_audio_status){let{uint32_audio_level:s}=t.msg_audio_status;Math.floor(s/Tt*100)>0&&(this._localStreamStat.totalAudioLevel+=s/Tt,this._localStreamStat.audioLevelCount++)}r.forEach(s=>{let{msg_user_info:n,msg_audio_status:a,msg_video_status:c}=s,l=n.str_identifier,u=this._room.remotePublishedUserMap.get(l);if(c.forEach(h=>{let m=h.uint32_video_stream_type===2,g=h.uint32_video_stream_type===7,S=`${l}_${m?"main":"auxiliary"}`,_=this._remoteStreamStatMap.get(S);if(_&&(m&&(u!=null&&u.remoteVideoTrack.isSubscribed)||g&&(u!=null&&u.remoteAuxiliaryTrack))){_.totalVideoFPS+=h.uint32_video_receive_fps,_.totalVideoBitrate+=h.uint32_video_codec_bitrate,_.videoCount++,_.statsToReport.uint32_video_width===0&&(_.statsToReport.uint32_video_width=h.uint32_video_width),_.statsToReport.uint32_video_height===0&&(_.statsToReport.uint32_video_height=h.uint32_video_height);let I=m?u.remoteVideoTrack:u.remoteAuxiliaryTrack;I.stat.jitterBufferDelay&&(_.videoJitterBufferDelay=I.stat.jitterBufferDelay),I.stat.framesReceived&&(_.statsToReport.uint32_video_consume_render_rate=Math.floor(I.stat.framesDecoded/I.stat.framesReceived*or(10,6)))}}),!go(a)){let h=`${l}_main`,m=this._remoteStreamStatMap.get(h);this._remoteStreamStatMap.has(h)&&m&&u!=null&&u.remoteAudioTrack.isSubscribed&&(m.totalAudioBitrate+=a.uint32_audio_codec_bitrate,m.audioCount++,u.remoteAudioTrack.stat.jitterBufferDelay&&(m.audioJitterBufferDelay=u.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(a.uint32_audio_level/Tt*100)>0&&(m.totalAudioLevel+=a.uint32_audio_level/Tt,m.audioLevelCount++))}}),e.uint32_audio_capture_cost&&(this._captureCostSum+=e.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0))}}handlePublishStart({room:i}){this.hitTest(i)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed({track:i,error:e}){let r={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof v?e.getExtraCode()||e.getCode():A.UNKNOWN);i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=r,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=r,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&ar)>=0}hasAudioFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&cr)>=0}hasAuxFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Cr)>=0}hitTest(i){return i===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let i=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=i<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((i,e)=>{let{userId:t}=i,r=this._networkQuality.totalDownlinkRTTAndLossMap.get(t);if(r){let{totalLoss:u,count:h,audioDelayCount:m,videoDelayCount:g,totalAudioDelay:S,totalVideoDelay:_}=r;i.statsToReport.uint32_avg_down_loss=Math.floor(u/h),m&&S&&(i.statsToReport.uint32_audio_network_p2p_delay=Math.floor(S/m),i.audioJitterBufferDelay&&(i.statsToReport.uint32_p2p_delay=Math.floor(i.statsToReport.uint32_audio_network_p2p_delay+i.audioJitterBufferDelay))),g&&_&&(i.statsToReport.uint32_video_network_p2p_delay=Math.floor(_/g))}i.videoCount>0&&(i.statsToReport.uint32_video_avg_fps=Math.floor(i.totalVideoFPS/i.videoCount),i.statsToReport.uint32_video_avg_bitrate=Math.floor(i.totalVideoBitrate/i.videoCount)),i.audioCount>0&&(i.statsToReport.uint32_audio_recv_bitrate=i.statsToReport.uint32_audio_bitrate=Math.floor(i.totalAudioBitrate/i.audioCount)),i.audioLevelCount>0&&(i.statsToReport.uint32_audio_play_db=Math.floor(i.totalAudioLevel/i.audioLevelCount*100));let{callDurationCalculator:s}=this._room;s&&(i.statsToReport.uint32_audio_play_time=s.getDuration(e,p.AUDIO),i.statsToReport.uint32_video_play_time=s.getDuration(e,p.VIDEO)),i.statsToReport.uint32_video_render_first&&(i.statsToReport.uint32_video_render_first=Math.min(i.statsToReport.uint32_video_render_first,oo));let{badCaseDetector:n}=this._room,{dataFreeze:a,count:c}=n.getDataFreezeDuration(e),{renderFreeze:l}=n.getRenderFreezeDuration(e);i.statsToReport.uint32_video_block_count=c,i.statsToReport.uint32_video_block_time=Math.min(a,i.statsToReport.uint32_video_play_time),i.statsToReport.uint32_video_external_block_time=Math.min(l,i.statsToReport.uint32_video_play_time),n.isBlackStream(e)&&i.statsToReport.uint32_video_avg_fps===0?i.statsToReport.uint32_video_black_screen_subjective=1:i.statsToReport.uint32_video_black_screen_subjective=0}),this._pathMainAudioMap.forEach((i,e)=>{if(!this.hasAudioFlag(i.userId)){this._pathMainAudioMap.delete(e);return}i.statsToReport.uint64_play_first_frame_time-i.statsToReport.uint64_start_enter_time>oo&&(i.statsToReport.uint64_play_first_frame_time=i.statsToReport.uint64_start_enter_time+oo)}),this._pathMainVideoMap.forEach((i,e)=>{if(!this.hasVideoFlag(i.userId)){this._pathMainVideoMap.delete(e);return}i.statsToReport.uint64_render_first_frame_time-i.statsToReport.uint64_start_enter_time>oo&&(i.statsToReport.uint64_render_first_frame_time=i.statsToReport.uint64_start_enter_time+oo)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>oo&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+oo)}getReportData(){this._basicInfo.uint32_networkType=vr();let i={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new On({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:To(this._signalInfo.relayIp),uint32_client_ip:To(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*or(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:To(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return Ms(i),i}report(){return f(this,null,function*(){try{this.prepareReport();let i=this.getReportData();yield this.upload(i),this.initData()}catch(i){this._log.warn(i)}finally{this.isDestroyed&&(this._room=null)}})}upload(i){return f(this,null,function*(){var c,l;if(i.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),t=(l=(c=this._room.scheduleResult)==null?void 0:c.config)!=null&&l.sso?Pi(i,2001,e):yield Ld(i),r=t instanceof ArrayBuffer,s=`${wi(e,sr.KEY_POINT)}&gzip=${+r}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,t));let a=[this.uploadKVStat(N),this.uploadKVStat(Fr)];n||a.push(Vi({url:s,body:t,priority:"low"})),yield Promise.all(a)})}setConnectionType(i){this.connectionType=i,this._basicInfo.uint32_connection_type=i}uploadKVStat(i){return f(this,null,function*(){var a,c;let e=i.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=w(D({},e.msg_sdk_basic_info),{bytes_device_name:this._basicInfo.string_device_name||"",bytes_os_version:this._basicInfo.string_os_version||"",uint32_framework:this._frameWorkType,uint32_network_type:this._basicInfo.uint32_networkType||0}),this._log.debug(e);let t=(c=(a=this._room.scheduleResult)==null?void 0:a.config)!=null&&c.sso?Pi(e,2003,this._room.sdkAppId):yield Ld(e),r=t instanceof ArrayBuffer,s=`${wi(+this._room.sdkAppId,sr.KV_STAT)}&gzip=${+r}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,t)),n||Vi({url:s,body:t})})}};M([Et({settings:{timeout:500,retries:3}})],Jc.prototype,"upload",1);var oo=5e3,hS={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},On=class{constructor(i){d(this,"str_identifier");d(this,"str_tinyid");d(this,"uint32_role");this.str_identifier=String(i.userId),this.str_tinyid=String(i.tinyId||0),this.uint32_role=i.role}},bf=Jc;var _h=class{constructor(){d(this,"_startTime");d(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=P())}stop(){this._endTime===0&&(this._endTime=P())}getDuration(){return this._endTime===0?P()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},qc=_h;var gh=class{constructor(i){d(this,"_room",null);d(this,"_durationMap");d(this,"_eventMap",new Map);this._room=i.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(C.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(C.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(C.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{var n;let{userId:r}=t;if(!this.hitTest(i))return;e.hasAudio&&!t.hasAudio&&this.stopDurationItem(`${r}_main`,p.AUDIO),e.hasVideo&&!t.hasVideo&&this.stopDurationItem(`${r}_main`,p.VIDEO),e.hasAuxiliary&&!t.hasAuxiliary&&this.stopDurationItem(`${r}_auxiliary`,p.VIDEO);let s=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(r);s&&(!e.hasAudio&&t.hasAudio&&s.remoteAudioTrack.isSubscribed&&this.addDuractionItem(r,p.AUDIO,"main"),!e.hasVideo&&t.hasVideo&&s.remoteVideoTrack.isSubscribed&&this.addDuractionItem(r,p.VIDEO,"main"),!e.hasAuxiliary&&t.hasAuxiliary&&s.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(r,p.VIDEO,"auxiliary"))}),this._eventMap.forEach((i,e)=>E.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>E.off(e,i,this)),this._eventMap.clear()}handleSubscribed({track:i}){if(!this.hitTest(i.room))return;let{userId:e,streamType:t,kind:r}=i;i.isSubscribed?this.addDuractionItem(e,r,t):this.stopDurationItem(`${e}_${t}`,r)}handleUnsubscribed({track:i}){this.hitTest(i.room)&&this.stopDurationItem(`${i.userId}_${i.streamType}`,i.kind)}isRecording(i){return i.findIndex(e=>e.endTime===0)>=0}addDuractionItem(i,e,t){let r=`${i}_${t}`,s=new qc,n=this._durationMap.get(r);n?this.isRecording(n[e])||n[e].push(s):this._durationMap.set(r,{userId:i,type:t,audio:e===p.AUDIO?[s]:[],video:e===p.AUDIO?[]:[s]})}stopDurationItem(i,e){if(this._durationMap.has(i)){let r=this._durationMap.get(i)[e].find(s=>s.endTime===0);r&&r.stop()}}hitTest(i){return this._room===i}getDuration(i,e){return this._durationMap.has(i)?this._durationMap.get(i)[e].reduce((r,s)=>r+s.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},Nf=gh;var Th=class{constructor(i){d(this,"_room");d(this,"_renderFreezeMap",new Map);d(this,"_isVideoPlayingEventFiredMap",new Map);d(this,"_dataFreezeMap",new Map);d(this,"_monitorFreezeData",new Map);d(this,"_eventMap",new Map);this._room=i.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(C.LEAVE_SUCCESS,({room:i})=>{this.hitTest(i)&&this.stop()}).set(C.PLAY_TRACK_START,this.onPlayTrackStart).set(C.UNSUBSCRIBE_SUCCESS,({room:i,streamType:e,remotePublishedUser:t})=>{if(!this.hitTest(i))return;let{userId:r}=t,s=`${r}_${e}`;this.stopDataFreeze({key:s,userId:r,type:e})}).set(C.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let{userId:r}=t;if(e.hasVideo&&!t.hasVideo){let s="main",n=`${t.userId}_${s}`;this.stopDataFreeze({key:n,userId:r,type:s})}if(e.hasAuxiliary&&!t.hasAuxiliary){let s="auxiliary",n=`${t.userId}_${s}`;this.stopDataFreeze({key:n,userId:r,type:s})}}).set(C.PLAYER_STATE_CHANGED,({track:i,state:e,reason:t,type:r})=>{if(!(!i.isRemote||!i.room||!this.hitTest(i.room)||r!==p.VIDEO)){if(e==="PLAYING"){let s=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.set(s,!0)}t===p.MUTE?this.onVideoTrackMuted(i):t===p.UNMUTE&&this.onVideoTrackUnmuted(i)}}).set(C.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((i,e)=>E.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>E.off(e,i,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`,s=this._dataFreezeMap.get(r),n=new qc;s?s.durationItemList.push(n):this._dataFreezeMap.set(r,{userId:e,type:t,durationItemList:[n],isFreezing(){let a=this.durationItemList[this.durationItemList.length-1];return a&&a.endTime===0}})}onVideoTrackUnmuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`;this.stopDataFreeze({key:r,userId:e,type:t})}onHearBeatReport({room:i,report:e}){this.hitTest(i)&&e.msg_down_stream_info.forEach(t=>{let r=this._room.remotePublishedUserMap.get(t.msg_user_info.str_identifier);if(!r)return;let{userId:s,muteState:n}=r;t.msg_video_status.forEach(a=>{a.uint32_video_stream_type===2&&n.hasVideo&&!n.videoMuted&&r.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:a.uint32_video_dec_fps,type:"main"}),a.uint32_video_stream_type===7&&n.hasAuxiliary&&r.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:a.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:i,userId:e,type:t}){let r=this._dataFreezeMap.get(i);if(!r||!r.isFreezing())return;let s=r.durationItemList[r.durationItemList.length-1];s.stop();let n=s.getDuration();n>Jn?this._monitorFreezeData.set(i,{userId:e,type:t,duration:n}):r.durationItemList.pop()}getTotalDuration(i){return i.reduce((e,t)=>{let r=t.getDuration();return e+Math.min(r,5e3)},0)}handleRenderFreeze(r){return f(this,arguments,function*({userId:i,fps:e,type:t}){let s=`${i}_${t}`,n=this._renderFreezeMap.get(s);if(e<=2){let a=P();n&&!n.isFreeze&&(n.freezeTimeline.push({startTime:a,endTime:0}),n.isFreeze=!0),n||this._renderFreezeMap.set(s,{userId:i,type:t,isFreeze:!0,freezeTimeline:[{startTime:a,endTime:0}],renderFreezeTotal:0})}else if(n&&n.isFreeze){n.isFreeze=!1;let a=n.freezeTimeline.pop();if(a){a.endTime=P();let c=a.endTime-a.startTime;n.freezeTimeline.push(a),n.renderFreezeTotal+=Math.min(5e3,c)}}})}onPlayTrackStart({track:i}){if(!i.isRemote||!this.hitTest(i.room)||i.kind!==p.VIDEO||!i.isRemotePublished)return;let e=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(i){let e={dataFreeze:0,count:0},t=this._dataFreezeMap.get(i);if(t){if(t.isFreezing()){let r=t.durationItemList[t.durationItemList.length-1];r.stop(),r.getDuration()<Jn&&t.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(t.durationItemList),e.count=t.durationItemList.length}return e}getRenderFreezeDuration(i){let e=this._renderFreezeMap.get(i),t=0,r=0;if(e)if(!e.isFreeze)t=e.renderFreezeTotal;else{let s=P(),n=e.freezeTimeline[e.freezeTimeline.length-1],a=s-n.startTime;t=e.renderFreezeTotal+Math.min(a,5e3),r=e.freezeTimeline.length}return{renderFreeze:t,count:r}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(i){return this._isVideoPlayingEventFiredMap.has(i)?!this._isVideoPlayingEventFiredMap.get(i):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(i){return i===this._room}destroy(){this.uninstallEvents()}},vf=Th;var Mf=Ge(it(),1);var jc=class{constructor(i,e,t,r,s=4/3){this.vbMode=i;this.faceDetectorHash=e;this.visionTaskRegistry=t;this.logger=r;d(this,"animationState");d(this,"originalAspect");d(this,"totalOffsetX",0);d(this,"totalOffsetY",0);d(this,"defaultScaleRatio",.1);d(this,"isRecovering",!1);d(this,"boundaryY",280);d(this,"lastActionTime",0);d(this,"restTime",400);this.animationState={current:null,target:null,animating:!1,debounceTimer:null,startTime:0,duration:3e3,debounceTime:150,movementThreshold:30,debounceThreshold:15},this.addEvent(this.vbMode,!!this.faceDetectorHash),this.originalAspect=s||4/3}addEvent(i,e,t){let s=[{key:570704,error:t!=null?t:e?void 0:11},{key:570705,error:t!=null?t:e?void 0:22}][i-1];s&&(e?N.addSuccessEvent({key:s.key}):N.addFailedEvent({key:s.key,error:s.error}))}actionCentering(i){let e=Date.now();if(this.animation(),!this.faceDetectorHash||e-this.lastActionTime<this.restTime||this.animationState.animating)return;let{videoWidth:t,videoHeight:r}=i;this.animationState.debounceThreshold=t/30,this.animationState.movementThreshold=t/20,this.boundaryY=r*.6;try{let s=this.visionTaskRegistry.getResult(this.faceDetectorHash);if(s.detections.length<=0){this.vbMode===1&&this.recoverOriginal(t,r);return}let n=s.detections[0].boundingBox,a=n.originX,c=n.originY,l=n.width,u=n.height;this.vbMode===1?this.dualStageCropping(t,r,a,c,l,u):this.vbMode===2&&this.movingPortrait(t,r,a,c,l,u)}catch(s){this.logger.error(s)}this.lastActionTime=e}calculateBoundary(i,e,t,r){let s,n;return i>e/2?(s=e-t-r,n=t-s):(s=t,n=0),{min:s,offset:n}}calculateTargetPosition(i,e,t,r,s,n,a=.4){let c=i+t/2,l=e+r/2,u,h,{min:m,offset:g}=this.calculateBoundary(c,s,i,t),{min:S,offset:_}=this.calculateBoundary(l,n,e,r);return u=2*m+t,h=2*S+r,u/h>this.originalAspect?(u=h*this.originalAspect,g=c-u/2):(h=u/this.originalAspect,_=l-h/2),t/s>a&&(g=0,_=0,u=s,h=n),g=Math.max(0,Math.min(g,s-u)),_=Math.max(0,Math.min(_,n-h)),{sx:g,sy:_,cropWidth:u,cropHeight:h,timestamp:Date.now()}}processFacePositionCrop(i,e,t){if(!this.animationState.current||!this.animationState.target){let a={sx:0,sy:0,cropWidth:e,cropHeight:t,timestamp:Date.now()};this.animationState.current=a,this.animationState.target=a;return}let r=this.positionDistance(this.animationState.target,i),s=this.positionDistance(this.animationState.current,i),n=this.animationState.current.cropWidth/e;r>this.animationState.debounceThreshold*n&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&s>this.animationState.movementThreshold*n&&(this.animationState.target=i,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}processFacePositionPortrait(i){if(!this.animationState.current||!this.animationState.target){this.animationState.current=D({},i),this.animationState.target=D({},i);return}let e=this.positionDistance(this.animationState.current,i),t=this.positionDistance(this.animationState.target,i);e>this.animationState.debounceThreshold&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&t>this.animationState.movementThreshold&&(this.animationState.current=i,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}animation(){if(!this.animationState.animating)return;let i=Date.now()-this.animationState.startTime,e=Math.min(i/this.animationState.duration,1),t=r=>r<.5?2*r*r:-1+(4-2*r)*r;if(this.animationState.current&&this.animationState.target){let r=(this.animationState.target.sx-this.animationState.current.sx)*t(e);this.animationState.current.sx+=r,this.totalOffsetX+=r;let s=(this.animationState.target.sy-this.animationState.current.sy)*t(e);if(this.animationState.current.sy+=s,this.totalOffsetY+=s,this.animationState.current.cropWidth+=(this.animationState.target.cropWidth-this.animationState.current.cropWidth)*t(e),this.animationState.current.cropHeight+=(this.animationState.target.cropHeight-this.animationState.current.cropHeight)*t(e),this.animationState.current.scaleRatio&&this.animationState.target.scaleRatio&&(this.animationState.current.scaleRatio+=(this.animationState.target.scaleRatio-this.animationState.current.scaleRatio)*t(e)),q(this.animationState.current.scaleOffsetX)&&q(this.animationState.target.scaleOffsetX)&&q(this.animationState.current.scaleOffsetY)&&q(this.animationState.target.scaleOffsetY)){let n=(this.animationState.target.scaleOffsetX-this.animationState.current.scaleOffsetX)*t(e);this.animationState.current.scaleOffsetX+=n;let a=(this.animationState.target.scaleOffsetY-this.animationState.current.scaleOffsetY)*t(e);this.animationState.current.scaleOffsetY+=a}}e>=1&&(this.animationState.animating=!1,this.animationState.current=this.animationState.target,this.isRecovering=!1)}positionDistance(i,e){return Math.sqrt(or(i.sx-e.sx,2)+or(i.sy-e.sy,2))}recoverOriginal(i,e){this.animationState.target={sx:0,sy:0,cropWidth:i,cropHeight:e,timestamp:Date.now()},this.animationState.animating=!0,this.animationState.startTime=Date.now(),this.isRecovering=!0}dualStageCropping(i,e,t,r,s,n,a=.3){if(this.isRecovering)return;let c=this.calculateTargetPosition(t,r,s,n,i,e);this.processFacePositionCrop(c,i,e),s*n/c.cropWidth/c.cropHeight>a&&this.recoverOriginal(i,e)}movingPortrait(i,e,t,r,s,n){var c,l,u,h,m,g,S,_,I,R,K,G;let a={sx:t+s/2+this.totalOffsetX,sy:r+n/2+this.totalOffsetY,cropWidth:i,cropHeight:e,scaleRatio:(l=(c=this.animationState.current)==null?void 0:c.scaleRatio)!=null?l:1,scaleOffsetX:(h=(u=this.animationState.current)==null?void 0:u.scaleOffsetX)!=null?h:0,scaleOffsetY:(g=(m=this.animationState.current)==null?void 0:m.scaleOffsetY)!=null?g:0,timestamp:Date.now()};this.animationState.target={sx:i/2,sy:r+n/2,cropWidth:i,cropHeight:e,scaleRatio:(_=(S=this.animationState.target)==null?void 0:S.scaleRatio)!=null?_:1,scaleOffsetX:(R=(I=this.animationState.target)==null?void 0:I.scaleOffsetX)!=null?R:0,scaleOffsetY:(G=(K=this.animationState.target)==null?void 0:K.scaleOffsetY)!=null?G:0,timestamp:Date.now()},this.animationState.animating||(this.animationState.target.scaleRatio=Math.sqrt(s*n/i/e/this.defaultScaleRatio),this.animationState.target.scaleOffsetX=-this.animationState.target.scaleRatio/2+.5,this.animationState.target.scaleOffsetY=-this.animationState.target.scaleRatio+1,(this.animationState.target.sy-this.animationState.target.scaleOffsetY*this.animationState.target.cropHeight)/this.animationState.target.scaleRatio<this.boundaryY&&(this.animationState.target.scaleOffsetY=(this.animationState.target.sy-this.boundaryY*this.animationState.target.scaleRatio)/this.animationState.target.cropHeight)),this.processFacePositionPortrait(a)}set aspectRatio(i){this.originalAspect=i}get current(){return this.animationState.current}get offset(){return{offsetX:this.totalOffsetX,offsetY:this.totalOffsetY}}get targetCrop(){return this.animationState.target}};var mS=`#version 300 es
102
+ 2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},'"displaySurface":"window"':{tips:"Screen sharing captures the application window",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"monitor"':{tips:"Screen sharing captures the entire screen",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"browser"':{tips:"Screen sharing captures a certain tab page",color:"blue",class:"blue",textColor:"#fff"},updateMediaSettings:{tips:"The resolution and frame rate below are the actual resolution and frame rate captured",color:"blue",class:"blue",textColor:"#fff"},"main stream start to play with":{tips:"Call remoteStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"stream start to play with":{tips:"Call localStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"main setAudioVolume to 0":{tips:"Business side calls remoteStream.setAudioVolume(0) interface to set the playback volume to 0, which will cause the playback to be silent",color:"orange",class:"orange",textColor:"#fff"},"screen sharing was stopped because the video track is ended":{tips:"Screen sharing capture stopped, possible reasons: user clicks the stop button, the window/page shared by the user is closed, etc.",color:"orange",class:"orange",textColor:"#fff"},"Join() => joining room":{tips:"Call client.join interface",color:"blue",class:"blue",textColor:"#fff"},"publish() => publishing local stream":{tips:"Call client.publish interface",color:"blue",class:"blue",textColor:"#fff"},"subscribe() => subscribe to":{tips:"Call client.subscribe interface",color:"blue",class:"blue",textColor:"#fff"},"switchRole() => switch role":{tips:"Call client.switchRole interface",color:"blue",class:"blue",textColor:"#fff"}};["enterRoom","exitRoom","switchRole","destroy","startLocalAudio","updateLocalAudio","stopLocalAudio","startLocalVideo","updateLocalVideo","stopLocalVideo","startScreenShare","updateScreenShare","stopScreenShare","startRemoteVideo","updateRemoteVideo","stopRemoteVideo","muteRemoteAudio","setRemoteAudioVolume"].forEach(i=>{yE[`${i}()`]={tips:`Call trtc.${i}`,color:"blue",class:"blue",textColor:"#fff"}});var OU=Object.keys(yE);var My=0,ku,Ya=class Ya{constructor(t){this.core=t;l(this,"_core");l(this,"log");l(this,"dumpLocalVideoMap",{});l(this,"dumpRemoteVideoMap",{});l(this,"dialog");this._core=t,this.log=t.log.createChild({id:`${this.getAlias()}${++My}`}),this.log.info("created")}getName(){return Ya.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(t){switch(t){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return y(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog(),this.addVideoProcessor())})}update(e){return y(this,arguments,function*({forceOpen:t}){M(t)&&(t?(yield this.openDebugDiaLog(),this.addVideoProcessor()):(this.closeDebugDiaLog(),this.removeVideoProcessor()))})}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return y(this,null,function*(){var t;if(!this.dialog)try{if(ku)yield ku;else{let e=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((t=window.sessionStorage)==null?void 0:t.getItem("TRTC_DEBUG_DIALOG_PATH"))||`https://unpkg.com/${TE}@${at}/assets/debug-dialog.js`;ku=this._core.fileDownloader.loadScript(e),yield ku}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(e){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(e))}})}closeDebugDiaLog(){this.dialog&&(this.dialog.closeDialog(),this.dialog=null)}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):ch,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):dh,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:t,mediaType:e}){return ch({frame:t,onDump:()=>{if(!e)return;let r=e===2?"sub":"main",o=this.dumpLocalVideoMap[r];o&&(o.data.push(t.data.slice(0)),o.duration>0&&Date.now()-o.startTimestamp>o.duration*1e3&&o.onDumpEnd())}})}decodeVideo({frame:t,track:e}){return dh({frame:t,onDump:()=>{if(!e)return;let r=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];r&&(r.data.push(t.data.slice(0)),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}};l(Ya,"Name","Debug"),l(Ya,"autoStart",!0);var Pu=Ya;var AE=i=>{switch(i){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},Lu=class{constructor(t,e,r){l(this,"trackDoneOB");l(this,"startOB");l(this,"stopOB");l(this,"inputFrameCount",0);l(this,"decodedFrameCount",0);l(this,"type","auto");l(this,"config");l(this,"decoder");l(this,"_decodeSink");let{kvStatManager:o,trtc:s}=t;this.config=r.config,this.trackDoneOB=we(e,ue.INIT),this.stopOB=bt(),this.startOB=bt(),r.type==="auto"?this.type="webCodecs":this.type=r.type;let n=bt(),a=u=>{let m=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),Re(m,Ze(this.stopOB),Le(()=>{},h=>{e.log.error(h),o.addFailedEvent({key:AE(this.type),error:h}),u>4?this.startOB.error(h):this.startOB.next(u+1)})),Re(m,Pr(1),Op($a))};Re(this.startOB,Va(0),ho(a),Ze(this.stopOB),Le(()=>{e.player.setOutput(),n.next("STARTED")},u=>{n.next("FAILED")},()=>{o.addSuccessEvent({key:AE(this.type)}),o.addSuccessEvent({key:504702})}))}mock(t){this._decodeSink?this._decodeSink.error(t):this.startOB.next(0)}close(t){this.stopOB.next(t)}pipe(t){return Di()(e=>y(this,null,function*(){this._decodeSink=e,e.defer(()=>{var o;(o=this.decoder)==null||o.close()});let{type:r}=this;try{switch(r){case"webCodecs":this.decoder=new AudioDecoder({error:o=>{t.log.error(o),e.error(4)},output:o=>{this.decodedFrameCount++,e.next(o),t.player.write(o)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(o){t.log.error(o),e.error(r==="webCodecs"?2:6)}}))}decodeFrame(t){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:t.data,timestamp:t.timestamp,type:"key"}))}},Oy={type:"object"},Za=class Za{constructor(t){this.core=t;l(this,"log");l(this,"contextMap",new Map);l(this,"decodeProcessorMap",new WeakMap);this.log=t.log.createChild({id:`${this.getAlias()}`})}getAlias(){return Za.Name}getGroup(t){return t.track.userId+t.track.streamType}getName(){return Za.Name}getValidateRule(t){return Oy}start(t){let{track:e}=t;this.decodeProcessorMap.set(e,this.decode(t)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:r,track:o})=>this.decodeProcessorMap.has(o)?this.decodeProcessorMap.get(o)({frame:r,track:o}):r,type:3})}decode(t){return({frame:e,track:r})=>{if(r!==t.track)return e;if(this.contextMap.has(r))return this.contextMap.get(r).decodeFrame(e);let o=new Lu(this.core,r,t);return Re(o.trackDoneOB,Pr(1),Le(()=>{this.core.clearStarted(this,this.getGroup(t)),this.stop({track:r})})),this.contextMap.set(r,o),o.decodeFrame(e)}}stop({track:t}){let e=this.contextMap.get(t);e&&(e.close("stop"),this.contextMap.delete(t),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(t){let e=this.contextMap.get(t.track);if(e){if(t.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(t.track,new Lu(this.core,t.track,t))}}};l(Za,"Name","TRTCAudioDecoder");var Ka=Za;var Uu=class{constructor(){l(this,"log");this.log=$.createLogger({id:"exp"})}call(t,e){return y(this,null,function*(){return We(this[t])?this[t](e):Promise.reject(new de({code:q.INVALID_PARAMETER,message:Be({key:$e.API_NOT_EXIST,data:{name:t}})}))})}enableAudioFrameEvent(t){return y(this,null,function*(){let{trtcInstance:e,enable:r,userId:o,sampleRate:s=48e3,channelCount:n=1,port:a}=t,{audioManager:u}=e.room,{getPCMAbortCtrlMap:m,audioFrameEventConfigMap:h}=u;if(h.set(o,{enable:r,sampleRate:s,channelCount:n,port:a}),r)if(o==="*")e.room.remotePublishedUserMap.forEach(g=>{if(g.remoteAudioTrack.isAvailable){if(m.get(g.userId))return;let T=u.getPCM(A=>{e.emit(te.AUDIO_FRAME,A)},g.userId);m.set(g.userId,T)}});else{if(m.get(o))return;let g=u.getPCM(T=>{e.emit(te.AUDIO_FRAME,T)},o);m.set(o,g)}else if(o==="*")e.room.remotePublishedUserMap.forEach(g=>{if(g.remoteAudioTrack.isSubscribed){let{userId:T}=g,A=m.get(T);A==null||A.abort("disable"),m.delete(T)}});else{let g=m.get(o);g==null||g.abort("disable"),m.delete(o)}})}};Z([Bg({name:"options",type:"object",required:!0,properties:{enable:{required:!0,type:"boolean"},userId:{required:!0,type:"string"},sampleRate:{type:"number",values:[8e3,16e3,32e3,44100,48e3]},channelCount:{type:"number",values:[1,2]},port:{type:"messageport"}}})],Uu.prototype,"enableAudioFrameEvent",1);var bE=new Uu;var RE=0,ec=new Set,wt=null;hl(_E);Ks.checkStorage();var xy={RtcError:ie,ErrorCode:se,ErrorCodeDictionary:Tr},Ie=class Ie extends vE.EventEmitter{constructor(e,r){super();l(this,"_room");l(this,"_eventListened",new Set);l(this,"_localVideoTrack",null);l(this,"_localAudioTrack",null);l(this,"_localScreenTrack",null);l(this,"_localScreenAudioTrack",null);l(this,"_localVideoConfig",null);l(this,"_localScreenConfig",null);l(this,"_localAudioConfig",null);l(this,"_remoteVideoConfigMap",new Map);l(this,"_remoteAudioConfigMap",new Map);l(this,"_remoteAudioVolumeMap",new Map);l(this,"_remoteAudioMuteMap",new Map);l(this,"_mediaTrackMap",new WeakMap);l(this,"_log",$.createLogger({id:`t${++RE}`}));l(this,"_plugins",new Map);l(this,"_networkQuality",null);l(this,"_speakerId");l(this,"enterRoomParams");l(this,"_enableAutoSwitchWhenRecapturing",!0);this._room=new e(J({logger:this._log,frameWorkType:Ie.frameWorkType},r)),this._room.videoDecodeFallbackType=r.videoDecodeFallback,Je(r.enableAutoSwitchWhenRecapturing)&&(this._enableAutoSwitchWhenRecapturing=r.enableAutoSwitchWhenRecapturing),this._log.info(`create() ${JSON.stringify(r,(o,s)=>o==="plugins"?s.map(n=>n.Name):s)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(o){return this._room.audioManager.dump(o)}}}),r.plugins&&r.plugins.forEach(o=>{this._use(o,r.assetsPath)}),this._use(Du,r.assetsPath),this._use(Nu,r.assetsPath),this._use(Ou,r.assetsPath),this._use(Ka,r.assetsPath),this._use(Pu),r.enableSEI&&ba&&this._use(xu),this._room.on("audio-volume",o=>{var s,n;!o.find(a=>a.userId==="")&&this._localAudioTrack&&o.push({userId:"",volume:Math.floor(((s=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?s:this._localAudioTrack.getAudioLevel())*100),floatVolume:(n=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?n:this._localAudioTrack.getInternalAudioLevel()}),r.volumeType===1&&o.forEach(a=>{var m;let u=a.userId===""?this._localAudioTrack:(m=this.room.remotePublishedUserMap.get(a.userId))==null?void 0:m.remoteAudioTrack;u&&(a.volume=u.dbVolume)}),this.emit(te.AUDIO_VOLUME,{result:o.sort((a,u)=>u.volume-a.volume)})}),this._room.videoManager.on("error",o=>{this._log.error(new ie({code:se.OPERATION_FAILED,extraCode:5504,message:o.message,originError:o}))}),this._listenEvents(),this._initActiveSpeaker(),hE(this,"trtc")}static create(e){}static _create(e,r){Kg();let o=new Ie(e,r||{});return ec.add(o),o}get room(){return this._room}_listenEvents(){Ht(this,this._room).add("peer-join",e=>{let{userId:r}=e;this.emit(te.REMOTE_USER_ENTER,{userId:r})}).add("peer-leave",e=>{this.emit(te.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().finally(()=>{this.emit(te.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(te.ERROR,ie.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(te.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let r=Ee(J({},e),{uplinkRTT:Math.min(e.uplinkRTT,Gn),downlinkRTT:Math.min(e.downlinkRTT,Gn)});this.emit(te.NETWORK_QUALITY,r)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{Ht(o,o).add("player-state-changed",s=>{let n=Ee(J({},s),{userId:e.userId});o.kind===O.VIDEO&&(n.streamType=Eo(o.streamType)),this.emit(o.kind===O.AUDIO?te.AUDIO_PLAY_STATE_CHANGED:te.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",s=>{s.getCode()===q.PLAY_NOT_ALLOWED&&this.emit(te.AUTOPLAY_FAILED,{userId:o.userId,mediaType:o.strMediaType,resume:()=>o.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{ft(o)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:r})=>{let{userId:o}=r,s=e.audioAvailable,n=e.videoAvailable,{audioAvailable:a,videoAvailable:u}=r;a||this._remoteAudioConfigMap.delete(o),u||this._removeRemoteVideoConfig(o,"main"),r.hasAuxiliary||this._removeRemoteVideoConfig(o,"sub"),n!==u&&(u?this._onVideoAvailable({userId:o,streamType:"main"}):this._onVideoUnavailable({userId:o,streamType:"main"}),this.emit(u?te.REMOTE_VIDEO_AVAILABLE:te.REMOTE_VIDEO_UNAVAILABLE,{userId:o,streamType:"main"})),s!==a&&(a?this._onAudioAvailable({userId:o}):this._onAudioUnavailable({userId:o,muteState:r}),this.emit(a?te.REMOTE_AUDIO_AVAILABLE:te.REMOTE_AUDIO_UNAVAILABLE,{userId:o})),e.hasAuxiliary!==r.hasAuxiliary&&(r.hasAuxiliary?this._onVideoAvailable({userId:o,streamType:"sub"}):this._onVideoUnavailable({userId:o,streamType:"sub"}),this.emit(r.hasAuxiliary?te.REMOTE_VIDEO_AVAILABLE:te.REMOTE_VIDEO_UNAVAILABLE,{userId:o,streamType:"sub"}))}).add("sei-message",e=>{this.emit(te.SEI_MESSAGE,Ee(J({},e),{streamType:Eo(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(te.ERROR,new ie({code:se.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var s,n,a,u,m,h,g;let r={2:"big",3:"small",7:"sub"},o={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((s=e.msg_down_stream_info[0])==null?void 0:s.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((a=this._networkQuality)==null?void 0:a.downlinkRTT)||0,Gn),upLoss:((u=this._networkQuality)==null?void 0:u.uplinkLoss)||0,downLoss:((m=this._networkQuality)==null?void 0:m.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((h=e.msg_up_stream_info.msg_audio_status)==null?void 0:h.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((g=e.msg_up_stream_info.msg_audio_status)==null?void 0:g.uint32_audio_level)||0)/Ai},video:e.msg_up_stream_info.msg_video_status.filter(T=>r[T.uint32_video_stream_type]).map(T=>({bitrate:(T.uint32_video_codec_bitrate||0)/1e3,width:T.uint32_video_width,height:T.uint32_video_height,frameRate:T.uint32_video_enc_fps,videoType:r[T.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(T=>({userId:T.msg_user_info.str_identifier,audio:{bitrate:(T.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(T.msg_audio_status.uint32_audio_level||0)/Ai,point2pointDelay:(T.msg_audio_status.uint32_audio_p2p_delay||0)+(T.msg_audio_status.uint32_audio_cache_ms||0),jitterBufferDelay:T.msg_audio_status.uint32_audio_cache_ms||0},video:T.msg_video_status.map(A=>({bitrate:(A.uint32_video_codec_bitrate||0)/1e3,width:A.uint32_video_width,height:A.uint32_video_height,frameRate:A.uint32_video_dec_fps,videoType:r[A.uint32_video_stream_type],point2pointDelay:(A.uint32_video_p2p_delay||0)+(A.uint32_video_cache_ms||0),jitterBufferDelay:A.uint32_video_cache_ms||0,codec:A.uint32_video_codec}))}))};this.emit(te.STATISTICS,o)}).add("custom-message",e=>{this.emit(te.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(te.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(te.FIRST_VIDEO_FRAME,Ee(J({},e),{streamType:Eo(e.streamType)}))}).add("audio-frame",e=>{this.emit(te.AUDIO_FRAME,e)}),Ht(this,At).add("audioInputAdded",e=>{this.emit(te.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(te.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(te.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(te.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>y(this,null,function*(){if(this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),wt&&wt.deviceId===Wn){let r=(yield uo()).find(o=>o.deviceId===Wn);r&&wt.groupId!==r.groupId&&(wt=r,this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))}})).add("audioOutputRemoved",e=>y(this,null,function*(){this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let r=(yield uo())[0];if(!r||!wt||wt.groupId===r.groupId)return;let o=wt.deviceId===e.deviceId,s=wt.deviceId===Wn&&wt.deviceId===r.deviceId;(o||s)&&(wt=r,this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))}))}use(e){let r,o;"plugin"in e?(r=e.plugin,o=e.assetsPath):r=e,this._use(r,o)}_use(e,r){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let s=new e(pE.call(this,{TRTC:Ie,room:this._room,errorModule:xy,assetsPath:r}));this._plugins.set(e.Name,s),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return y(this,null,function*(){var u,m;this.enterRoomParams=e;let{scene:r="rtc",enableAutoPlayDialog:o=!0,autoReceiveAudio:s=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!Ne(e.proxy)&&e.proxy.turnServer&&((m=(u=this._room).setTurnServer)==null||m.call(u,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=o,this._room.autoReceiveAudio=s,this._room.autoReceiveVideo=n,Je(e.preferHW)&&(this._room.preferHW=e.preferHW),e.playoutDelay&&(this._room.playoutDelay=e.playoutDelay),e.jitterBufferDelay&&(this._room.jitterBufferDelay=e.jitterBufferDelay);let a={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8,useH265:e.useH265,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,r,Ie.frameWorkType),this._checkTrackToPublish(),oh.start()})}exitRoom(){return y(this,null,function*(){return yield this._exitRoom()})}switchRoom(e){return y(this,null,function*(){if(this.room.isSwitchRoomSupported())yield this._room.switchRoom(e);else{yield this.exitRoom();let r=J(J({},this.enterRoomParams),e);yield this.enterRoom(r)}})}switchRole(e,r){return y(this,null,function*(){r!=null&&r.privateMapKey&&(this._room.privateMapKey=r.privateMapKey),r!=null&&r.latencyLevel&&(this._room.latencyLevel=r.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){ft(this),this.removeAllListeners(),this._room.destroy(),ec.delete(this),ec.size===0&&oh.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var r;return(r=e.destroy)==null?void 0:r.call(e)}),this._plugins.clear(),V.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return y(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:r=!0,mute:o,option:s}=e,n=new ri(this._room.audioManager),a={},u={muted:!0};s&&(M(s.microphoneId)?M(s.audioTrack)||(a.customSource=s.audioTrack):a.deviceId=s.microphoneId,s&&Pe(s.captureVolume)&&n.setCaptureVolume(s.captureVolume),M(s.profile)||(Ne(s.profile)?Nc[s.profile]&&n.setProfile(Nc[s.profile]):n.setProfile(s.profile)),Pe(s.earMonitorVolume)&&(u.muted=!(s.earMonitorVolume>0),u.volume=s.earMonitorVolume),M(s.echoCancellation)||(n.profile.echoCancellation=s.echoCancellation),M(s.noiseSuppression)||(n.profile.noiseSuppression=s.noiseSuppression),M(s.autoGainControl)||(n.profile.autoGainControl=s.autoGainControl),Je(this._enableAutoSwitchWhenRecapturing)&&(n.enableAutoSwitchWhenRecapturing=this._enableAutoSwitchWhenRecapturing)),n.on("5",m=>{this.emit(te.ERROR,new ie({code:se.DEVICE_ERROR,extraCode:5309,messageParams:{error:m}}))}),n.on("2",m=>{this.emit(te.DEVICE_CHANGED,{type:"microphone",action:"active",device:m})}),n.on("4",m=>{let h;m.error&&(h=ie.convertFrom(m.error)),this.emit(te.PUBLISH_STATE_CHANGED,Ee(J({},m),{error:h}))}),n.on("6",()=>{this.emit(te.ERROR,new ie({code:se.OPERATION_FAILED,extraCode:5506,message:"audio encode failed"}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(a),M(o)||n.setMute(o),Ht(n,n).add("player-state-changed",m=>{this.emit(te.AUDIO_PLAY_STATE_CHANGED,Ee(J({},m),{userId:""}))}),r&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=Ee(J({},e),{publish:r}),yield this._updateAudioPlayOption({playOption:u,track:n}),V.emit("113",{userId:"",room:this.room})})}updateLocalAudio(e){return y(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:r,mute:o,option:s}=e,n={};s&&(s.microphoneId?yield this._localAudioTrack.switchDevice(s.microphoneId):M(s.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(s.audioTrack)),M(s.captureVolume)||this._localAudioTrack.setCaptureVolume(s.captureVolume),M(s.earMonitorVolume)||(n.muted=!(s.earMonitorVolume>0),n.volume=s.earMonitorVolume),yield this._localAudioTrack.update3A(s)),this._room.isJoined&&!M(r)&&(r&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!r&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),M(o)||this._localAudioTrack.setMute(o),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),Cr(this._localAudioConfig,e)})}stopLocalAudio(){return y(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),V.emit("114",{userId:"",room:this.room}),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),ft(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null)})}startLocalVideo(){return y(this,arguments,function*(e={publish:!0,view:null,capture:!0}){var g;if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:r,publish:o=!0,capture:s=!0,mute:n,option:a}=e,u=new nr(this._room.videoManager),m={},h={};a&&(Je(a.avoidCropping)&&(u.avoidCropping=a.avoidCropping),a.cameraId?m.deviceId=a.cameraId:M(a.useFrontCamera)?M(a.videoTrack)||(m.customSource=a.videoTrack):m.facingMode=a.useFrontCamera?O.FACING_MODE_USER:O.FACING_MODE_ENVIRONMENT,M(a.retryWhenExactFailed)||(m.retryWhenExactFailed=a.retryWhenExactFailed),a.qosPreference&&(m.contentHint=Ja(a.qosPreference)),M(a.profile)||(Ne(a.profile)?Rr[a.profile]&&u.setProfile(Rr[a.profile]):u.setProfile(a.profile)),M(a.fillMode)||(h.objectFit=a.fillMode),M(a.mirror)||(h.mirror=a.mirror),M(a.small)||(M(a.smallMode)||(this._room.smallMode=a.smallMode),Je(a.small)&&a.small===!1?u.stopSmall():u.updateSmallConfig(_n(a.small,!0))),M(a.rotation)||u.setRotation(a.rotation),Je(this._enableAutoSwitchWhenRecapturing)&&(u.enableAutoSwitchWhenRecapturing=this._enableAutoSwitchWhenRecapturing)),u.once("first-video-frame",T=>{this.emit(te.FIRST_VIDEO_FRAME,Ee(J({},T),{streamType:Eo(T.streamType)}))}),u.on("5",T=>{this.emit(te.ERROR,new ie({code:se.DEVICE_ERROR,extraCode:5308,messageParams:{error:T}}))}),u.on("2",T=>{this.emit(te.DEVICE_CHANGED,{type:"camera",action:"active",device:T})}),u.on("4",T=>{let A;T.error&&(A=ie.convertFrom(T.error)),this.emit(te.PUBLISH_STATE_CHANGED,Ee(J({},T),{error:A}))}),u.on("6",()=>{this.emit(te.ERROR,new ie({code:se.OPERATION_FAILED,extraCode:5505,message:"video encode failed"}))}),this._listenOutputTrackChanged(u),s?yield u.capture(m):(g=u.manager)==null||g.changeInput(u),M(n)||(yield u.setMute(n)),Ht(u,u).add("player-state-changed",T=>{this.emit(te.VIDEO_PLAY_STATE_CHANGED,Ee(J({},T),{userId:"",streamType:"main"}))}),o&&this._room.isJoined&&this._room.publish(u).catch(()=>{}),this._localVideoTrack=u,this._localVideoConfig=Ee(J({},e),{view:r,publish:o,capture:s}),yield this._updateVideoPlayOption({view:r,playOption:h,track:u})})}updateLocalVideo(e){return y(this,null,function*(){var m,h,g;if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:r,publish:o,mute:s,capture:n,option:a}=e,u={};if(this._localVideoConfig.capture)n!==!1?a!=null&&a.cameraId?yield this._localVideoTrack.switchDevice(a==null?void 0:a.cameraId):M(a==null?void 0:a.useFrontCamera)?M(a==null?void 0:a.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(a==null?void 0:a.videoTrack)):yield this._localVideoTrack.switchDevice(a!=null&&a.useFrontCamera?O.FACING_MODE_USER:O.FACING_MODE_ENVIRONMENT):this._localVideoTrack.stopCapture();else if(n){let T={};T.deviceId=(a==null?void 0:a.cameraId)||((m=this._localVideoConfig.option)==null?void 0:m.cameraId),T.facingMode=a!=null&&a.useFrontCamera||(h=this._localVideoConfig.option)!=null&&h.useFrontCamera?O.FACING_MODE_USER:O.FACING_MODE_ENVIRONMENT,T.customSource=(a==null?void 0:a.videoTrack)||((g=this._localVideoConfig.option)==null?void 0:g.videoTrack),yield this._localVideoTrack.capture(T)}a&&(M(a.profile)||(Ne(a.profile)?Rr[a.profile]&&this._localVideoTrack.setProfile(Rr[a.profile]):this._localVideoTrack.setProfile(a.profile),(!a.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(a.cameraId))&&M(a.useFrontCamera)&&(yield this._localVideoTrack.applyProfile())),M(a.fillMode)||(u.objectFit=a.fillMode),M(a.mirror)||(u.mirror=a.mirror),M(a.rotation)||this._localVideoTrack.setRotation(a.rotation),a.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(Ja(a.qosPreference)),M(a.small)||(Je(a.small)&&!a.small?this._localVideoTrack.stopSmall():this._localVideoTrack.updateSmallConfig(_n(a.small,!0)))),this._room.isJoined&&M(o)&&this._localVideoConfig.publish&&n&&!this._localVideoConfig.capture&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._room.isJoined&&((o!=null?o:this._localVideoConfig.publish)?this._room.publish(this._localVideoTrack).catch(()=>{}):this._room.unpublish(this._localVideoTrack).catch(()=>{})),M(s)||(yield this._localVideoTrack.setMute(s)),yield this._updateVideoPlayOption({view:r,playOption:u,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),Cr(this._localVideoConfig,e)})}stopLocalVideo(){return y(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),ft(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return y(this,arguments,function*(e={publish:!0,view:null}){if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:r=null,publish:o=!0,muteSystemAudio:s,option:n}=e,a=new ii(this._room.videoManager);a.on("4",T=>{let A;T.error&&(A=ie.convertFrom(T.error)),this.emit(te.PUBLISH_STATE_CHANGED,Ee(J({},T),{error:A}))}),a.once("first-video-frame",T=>{this.emit(te.FIRST_VIDEO_FRAME,Ee(J({},T),{streamType:Eo(T.streamType)}))}),this._listenOutputTrackChanged(a),e.streamType==="main"&&(a.mediaType=4);let u=null,m={},h={};n&&(M(n.profile)||(Ne(n.profile)?wc[n.profile]&&a.setProfile(wc[n.profile]):a.setProfile(n.profile)),n.systemAudio&&(m.systemAudio=!0,m.echoCancellation=n.echoCancellation,m.noiseSuppression=n.noiseSuppression,m.autoGainControl=n.autoGainControl),M(n.fillMode)||(h.objectFit=n.fillMode),n.videoTrack&&(m.videoTrack=n.videoTrack),n.audioTrack&&(m.audioTrack=n.audioTrack),n.captureElement&&(m.captureElement=n.captureElement),n.preferDisplaySurface&&(m.preferDisplaySurface=n.preferDisplaySurface),n.qosPreference&&(m.contentHint=Ja(n.qosPreference)));let g=yield a.capture(m);if(a.mediaTrack.addEventListener(O.ENDED,()=>{this._stopScreenShare(),this.emit(te.SCREEN_SHARE_STOPPED)}),g.getAudioTracks()[0]&&(u=new ms(this._room.audioManager),yield u.setInputMediaStreamTrack(g.getAudioTracks()[0]),Je(s)&&u.mediaTrack&&(u.mediaTrack.enabled=!s),this._speakerId&&u.setAudioOutput(this._speakerId)),Ht(a,a).add("player-state-changed",T=>{this.emit(te.VIDEO_PLAY_STATE_CHANGED,Ee(J({},T),{userId:"",streamType:"sub"}))}),o&&this._room.isJoined){let T=[a];u&&(T.push(u),this._checkScreenAudioEchoCancellation(a,u)),this._room.publish(...T).catch(()=>{})}this._localScreenTrack=a,this._localScreenAudioTrack=u,this._localScreenConfig=Ee(J({},e),{view:r,publish:o}),yield this._updateVideoPlayOption({view:r,playOption:h,track:a})})}updateScreenShare(e){return y(this,null,function*(){var u;if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:r,publish:o,muteSystemAudio:s,option:n}=e,a={};if(n&&(M(n.fillMode)||(a.objectFit=n.fillMode),n.qosPreference)){let m=Ja(n.qosPreference);this._localScreenTrack.setContentHint(m)}this._room.isJoined&&!M(o)&&(o&&!this._localScreenConfig.publish&&(this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})),this._localScreenConfig.publish&&!o&&(this._room.unpublish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.unpublish(this._localScreenAudioTrack).catch(()=>{}))),(u=this._localScreenAudioTrack)!=null&&u.mediaTrack&&Je(s)&&(this._localScreenAudioTrack.mediaTrack.enabled=!s),yield this._updateVideoPlayOption({view:r,playOption:a,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),Cr(this._localScreenConfig,e)})}stopScreenShare(){return y(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return y(this,null,function*(){let{view:r,userId:o,streamType:s,option:n}=e,a=`${o}_${s}`;if(this._remoteVideoConfigMap.has(a)){this._log.warn(`remote video has already started. userId:${o}, streamType:${s}`);return}let u=this._room.remotePublishedUserMap.get(o);if(!u)return;let m={},h=s==="main"?u.remoteVideoTrack:u.remoteAuxiliaryTrack;h.on("decode-failed",g=>{this.emit(te.ERROR,new ie({code:se.OPERATION_FAILED,extraCode:5507,message:"video decode failed"}))}),this._listenOutputTrackChanged(h),n&&(M(n.fillMode)||(m.objectFit=n.fillMode),M(n.mirror)||(m.mirror=n.mirror),M(n.poster)||(m.poster=n.poster),m.canvasRender=n.canvasRender,s==="main"&&!M(n.small)&&(!u.remoteVideoTrack.isSubscribing&&!u.remoteVideoTrack.isSubscribed&&u.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,h.user))),yield this._room.subscribe(h),yield this._enableVideoDecodeFallback(h,s),yield this._updateVideoPlayOption({view:r,playOption:m,track:h}),this._emitTrackEvent(h),this._remoteVideoConfigMap.set(a,{config:e}),n&&!M(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:h,view:r,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return y(this,null,function*(){var D,P;let{view:r,userId:o,streamType:s,option:n}=e,a=`${o}_${s}`,u=this._remoteVideoConfigMap.get(a);if(!u||!this._room.remotePublishedUserMap.has(o))return;let m={};n&&(M(n.fillMode)||(m.objectFit=n.fillMode),M(n.mirror)||(m.mirror=n.mirror));let h=null,g=this._room.remotePublishedUserMap.get(o);if(s==="main"&&(g!=null&&g.muteState.hasVideo)&&(h=g.remoteVideoTrack),s==="sub"&&(g!=null&&g.muteState.hasAuxiliary)&&(h=g.remoteAuxiliaryTrack),!h)return;let{config:T}=u;s==="main"&&n&&!M(n.small)&&this._room.changeType(n.small,h.user),yield this._updateVideoPlayOption({view:r,playOption:m,track:h,prevConfig:T}),Cr(T,e);let A=M(n==null?void 0:n.receiveWhenViewVisible)?(D=T.option)==null?void 0:D.receiveWhenViewVisible:n.receiveWhenViewVisible,C=M(r)?T.view:r,N=M(n==null?void 0:n.viewRoot)?(P=T.option)==null?void 0:P.viewRoot:n.viewRoot;this._observeView({remoteTrack:h,view:C,receiveWhenViewVisible:A,viewRoot:N})})}stopRemoteVideo(e){return y(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,r=!0){return y(this,null,function*(){let o=[],s=this._room.remotePublishedUserMap.get(e.userId);if(s){let{muteState:n,remoteVideoTrack:a,remoteAuxiliaryTrack:u}=s;e.streamType==="main"&&(a.stop(),n.hasVideo&&o.push(a)),e.streamType==="sub"&&(u.stop(),n.hasAuxiliary&&o.push(u))}for(let n of o)r&&(yield this._room.unsubscribe(n),this._mediaTrackMap.delete(n.outMediaTrack));this._removeRemoteVideoConfig(e.userId,e.streamType)})}_removeRemoteVideoConfig(e,r){let o=`${e}_${r}`,s=this._remoteVideoConfigMap.get(o);s&&s.observer&&s.observer.disconnect(),this._remoteVideoConfigMap.delete(o)}muteRemoteAudio(e,r){return y(this,null,function*(){this._remoteAudioMuteMap.set(e,r);try{if(e==="*")if(r)yield this._stopRemoteAudio({userId:e});else{let o=[...this._room.remotePublishedUserMap.values()];for(let s of o)s.muteState.hasAudio&&!this._remoteAudioConfigMap.has(s.userId)&&(yield this._startRemoteAudio({userId:s.userId}))}else r?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}))}catch(o){throw this._remoteAudioMuteMap.delete(e),o}})}setRemoteAudioVolume(e,r){if(e==="*"){let o=[...this._room.remotePublishedUserMap.values()];for(let s of o)this._remoteAudioVolumeMap.set(s.userId,r),s.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:r},track:s.remoteAudioTrack})}else if(e){let o=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,r),o&&o.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:r},track:o.remoteAudioTrack})}}startPlugin(e,r){return y(this,null,function*(){return e.start(r)})}updatePlugin(e,r){return y(this,null,function*(){return e.update(r)})}stopPlugin(e,r){return y(this,null,function*(){return e.stop(r)})}enableAudioVolumeEvaluation(e=2e3,r=!1){this._room.enableAudioVolumeEvaluation(e,r)}on(e,r,o){if(this.listeners(e).includes(r))return this;if(this._log.debug("on",e),super.on(e,r,o),this._eventListened.add(e),this.listeners(te.AUDIO_FRAME).length>0){let{audioFrameEventConfigMap:s}=this.room.audioManager;s.get("")||s.set("",{enable:!0}),this._localAudioTrack&&this.room.audioManager.handleLocalTrackStarted({userId:"",room:this.room})}return this}emit(e,...r){try{uE.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(r)}`)}catch(o){}return super.emit(e,...r)}off(e,r,o){if(this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners()):super.off(e,r,o),(e===Ie.EVENT.AUDIO_FRAME||e==="*")&&this.listeners(Ie.EVENT.AUDIO_FRAME).length===0){let{getPCMAbortCtrlMap:s}=this.room.audioManager;s.forEach(n=>{n==null||n.abort("off")}),s.clear()}return this}getAudioTrack(e={userId:"",streamType:"main"}){let r,o=null,s="main",n=!1;if(Ne(e)?r=e:(r=e.userId,n=e.processed===!0,e.streamType&&(s=e.streamType)),r){let a=this._room.remotePublishedUserMap.get(r);a&&(o=a.remoteAudioTrack)}else o=s==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return o?n&&o.outMediaTrack&&o.outMediaTrack!==o.mediaTrack?o.outMediaTrack.clone():o.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:r="",streamType:o="main",processed:s=!1}=e,n=null;if(r==="")o==="main"&&this._localVideoTrack&&(n=this._localVideoTrack),o==="sub"&&this._localScreenTrack&&(n=this._localScreenTrack);else{let a=this._room.remotePublishedUserMap.get(r);a&&(n=o==="main"?a.remoteVideoTrack:a.remoteAuxiliaryTrack)}return n?s&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:r,streamType:o="main"}=e;if(r){let s=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(s!=null&&s.muteState.hasVideo))return s.remoteVideoTrack.getVideoFrame();if(o==="sub"&&(s!=null&&s.muteState.hasAuxiliary))return s.remoteAuxiliaryTrack.getVideoFrame()}else{if(o==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(o==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var r,o;this._speakerId=e,(r=this._localAudioTrack)==null||r.setAudioOutput(e),(o=this._localScreenAudioTrack)==null||o.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(s=>s.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return y(this,null,function*(){(yield uo()).forEach(o=>{o.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}),wt=o)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/TRTC.html#.setCurrentSpeaker')})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return y(this,null,function*(){let{userId:r}=e;if(this._remoteAudioConfigMap.has(r)){this._log.warn(`remote audio has already started. userId:${r}`);return}let o=this._room.remotePublishedUserMap.get(r);if(!o)return;let s={},n=o.remoteAudioTrack;n.on("decode-failed",a=>{this.emit(te.ERROR,new ie({code:se.OPERATION_FAILED,extraCode:5506,message:"audio decode failed"}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let a=this._remoteAudioVolumeMap.get(r),u=Pe(a)?a:100;s.volume=u,this._remoteAudioConfigMap.set(r,e),yield this._room.subscribe(n),Re(we(n,"decode-failed"),Ze(we(n,ue.INIT)),Le(()=>{this.startPlugin(Ka.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:s,track:n}),V.emit("115",{userId:r,room:this.room}),n.outMediaTrack&&this.room.audioManager.updateAudioReference({type:"add",audioReference:n.outMediaTrack,refId:`ra-${r}`})}catch(a){throw this._remoteAudioConfigMap.delete(r),a}this._emitTrackEvent(n)})}_stopRemoteAudio(e,r=!0){return y(this,null,function*(){let o=this._room.remotePublishedUserMap.get(e.userId);o&&(o.remoteAudioTrack.stop(),o.muteState.hasAudio&&r&&(yield this._room.unsubscribe(o.remoteAudioTrack)),this._mediaTrackMap.delete(o.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`),V.emit("116",{userId:e.userId,room:this.room}),this.room.audioManager.updateAudioReference({type:"remove",refId:`ra-${e.userId}`})})}_enableVideoDecodeFallback(e,r){let o=this._room.videoDecodeFallbackType;if(!o||!this._plugins.has("TRTCVideoDecoder"))return;e.log.debug("remote video will fall back when decode failed",e.id);let s;Re(we(e,"decode-failed"),Ze(we(e,ue.INIT)),Ba(()=>{this._room.downlinkVideoCodec!=="h265"&&this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:o})}),Mi(we(e,"decode-downgrade-state-changed")),Le(n=>{s=n.state,this.emit(te.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,Ee(J({},n),{streamType:r,userId:e.userId}))},n=>{e.log.error("fallback",n)},()=>{s==="STARTED"&&e.log.info("fallback complete")}))}_updateVideoPlayOption(n){return y(this,arguments,function*({view:e,playOption:r,track:o,prevConfig:s}){if(o.setMirror(r.mirror),M(e)&&s&&s.view&&!Us(r)){let a=Fs(s.view);a.length>0&&(yield o.play(a,r))}if(!M(e)){let a=Fs(e);a.length>0?yield o.play(a,r):o.stop()}})}_updateAudioPlayOption(s){return y(this,arguments,function*({playOption:e={},track:r,prevConfig:o}){if(!r.isPlayCalled)try{yield r.play(null,e)}catch(n){}if(M(e.muted)||r.setPlayerMute(e.muted),M(e.volume)||r.setAudioVolume(e.volume/100),r instanceof ri&&r.mediaTrack){let n=e.muted===!1&&!M(e.volume)&&e.volume>0?"add":"remove";this.room.audioManager.updateAudioReference({type:n,audioReference:r.mediaTrack,refId:"em"})}else if(r instanceof Oi){let n=e.muted?0:e.volume;if(M(n))return;this.room.audioManager.updateAudioReference({type:"updateVolume",refId:`ra-${r.userId}`,volume:e.volume})}})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e,r=!0){let o=e.isRemote?e.userId:"";e.outMediaTrack&&(r&&this._mediaTrackMap.get(e.outMediaTrack)===o||(this._mediaTrackMap.set(e.outMediaTrack,o),this.emit(te.TRACK,{userId:o,streamType:Eo(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var r,o,s;let e=[];if((r=this._localAudioConfig)!=null&&r.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(o=this._localVideoConfig)!=null&&o.publish&&this._localVideoTrack&&e.push(this._localVideoTrack),(s=this._localScreenConfig)!=null&&s.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack),this._checkScreenAudioEchoCancellation(this._localScreenTrack,this._localScreenAudioTrack)),e.length!==0)return this._room.publish(...e).catch(()=>{})}_observeView({remoteTrack:e,view:r,receiveWhenViewVisible:o=!1,viewRoot:s}){if(M(r))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${Eo(e.streamType)}`);if(!n)return;let a=n.observer||void 0;if(r===null||st(r)&&r.length===0||!o){a==null||a.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let m=n.visibleViewMap||new Map,h=-1;(!a||a.root!==s)&&(a==null||a.disconnect(),m.clear(),a=new IntersectionObserver(T=>{T.forEach(A=>{m.set(A.target,A.isIntersecting),e.log.info(`view ${A.target.id} is${A.isIntersecting?"":" not"} visible`)}),clearTimeout(h),h=window.setTimeout(()=>{[...m.values()].find(C=>C)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:s}));let g=new Set(Fs(r));m.forEach((T,A)=>{g.has(A)||(a.unobserve(A),m.delete(A))}),g.forEach(T=>{m.set(T,!0),a.observe(T)}),a.takeRecords().forEach(T=>{m.set(T.target,T.isIntersecting)}),n.visibleViewMap=m,n.observer=a}_exitRoom(){return y(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch()}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let r=e.includes("main")?"main":"sub",o=e.split(`_${r}`)[0];o&&this._stopRemoteVideo({userId:o,streamType:r}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),this._remoteAudioVolumeMap.clear(),fE(this),this._room.remotePublishedUserMap.forEach(e=>{ft(e.remoteAudioTrack),ft(e.remoteVideoTrack),ft(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return y(this,null,function*(){var e,r;if(this._localScreenTrack){if(this._room.isJoined){let o=[this._localScreenTrack];this._localScreenAudioTrack&&o.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...o).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(((r=this._localScreenAudioTrack.trackSettings)==null?void 0:r.echoCancellation)===!1&&this.stopPlugin("AudioProcessor"),this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),ft(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_checkScreenAudioEchoCancellation(e,r){return y(this,null,function*(){var s,n;if(!e||!r)return;let o=(s=e.trackSettings)==null?void 0:s.displaySurface;if(((n=r.trackSettings)==null?void 0:n.echoCancellation)===!1&&(o==="monitor"||o==="browser"&&e.isShareCurrentTab)){this._log.warn("echoCancellation of screen audio track is disable. Try starting audioProcessor plugin");try{yield this.startPlugin("AudioProcessor",{sdkAppId:Number(this.room.sdkAppId),userId:this._room.userId,userSig:this.room.userSig,isScreenAudioNeedAudioProcess:!0,isLocalAudioNeedAudioProcess:!1})}catch(a){this._log.warn("start audioProcessor plugin failed: ",a)}}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!wt||un(wt))&&(this._initActiveSpeaker(),V.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return y(this,null,function*(){if(wt&&!un(wt))this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"active",device:wt});else{let e=yield uo();e[0]&&!un(e[0])?(wt=e[0],this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):V.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable({userId:e}){let r=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(r===!1||this._room.autoReceiveAudio&&!r)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:r}){if(!this._room.autoReceiveVideo)return;let o=this._room.remotePublishedUserMap.get(e);if(o){let s=r==="main"?o.remoteVideoTrack:o.remoteAuxiliaryTrack,n=[s];this._room.autoReceiveAudio&&o.remoteAudioTrack.isAvailable&&n.push(o.remoteAudioTrack),this._room.subscribe(...n).then(()=>{this._emitTrackEvent(s)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:r}){r.hasAudio&&r.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:r}){this._stopRemoteVideo({userId:e,streamType:r},!1).catch(()=>{})}sendSEIMessage(e,r){var s;let o=this._plugins.get("SEI");o&&(o.update({buffer:e,options:Ee(J({seiPayloadType:243},r),{small:!!((s=this._localVideoTrack)!=null&&s.small)})}),z.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var r,o;(o=(r=this._room).sendCustomMessage)==null||o.call(r,e),z.addCount({key:500001,useUV:!0})}callExperimentalAPI(e,r){return y(this,null,function*(){return this._log.info(`callExperimentalAPI(${e}, ${JSON.stringify(r)})`),bE.call(e,J({trtcInstance:this},r))})}static setLogLevel(e,r){$.setLogLevel(e),M(r)||(r?$.enableUploadLog():$.disableUploadLog())}static isSupported(){return vd(Ie.frameWorkType)}static getCameraList(e=!0){return sr(e)}static getMicrophoneList(e=!0){return Zt(e)}static getSpeakerList(e=!0){return uo(e)}static setCurrentSpeaker(e){return y(this,null,function*(){if(mt&&(e===Er.SPEAKER||e===Er.HEADSET)){let o=yield Ie.getMicrophoneList(),s="";if(o.forEach(n=>{n.label===e&&(s=n.deviceId)}),!s)return;ec.forEach(n=>y(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:s}}))}));return}(yield uo()).forEach(o=>{o.deviceId===e&&(ec.forEach(s=>{s._setCurrentSpeaker(e),s.emit(te.DEVICE_CHANGED,{type:"speaker",action:"active",device:o})}),wt=o)})})}static _addKVStat({type:e,key:r,value:o,base:s,useUV:n,version:a,max:u}){switch(a&&(Ko.version=a),e){case"count":Ko.addCount({key:r,useUV:n});break;case"enum":Ko.addEnum({key:r,value:o,useUV:n});break;case"number":Ko.addNumber({key:r,value:o,split:s,max:u});break}}};l(Ie,"_loggerManager",$),l(Ie,"EVENT",te),l(Ie,"ERROR_CODE",se),l(Ie,"TYPE",Er),l(Ie,"frameWorkType",30),Z([rt({replaceArg:e=>({argIndex:0,value:{name:"plugin"in e?e.plugin.Name:e.Name,assetsPath:"assetsPath"in e?e==null?void 0:e.assetsPath:"default"}})})],Ie.prototype,"use",1),Z([Ot(Rt.TRTC.enterRoom),_o("room",([e],[r])=>(e.roomId||e.strRoomId)===(r.roomId||r.strRoomId)&&e.userId===r.userId&&e.sdkAppId===r.sdkAppId),xe(e=>function(r){return this._log.setUserId(r.userId),this._log.setSdkAppId(r.sdkAppId),e.call(this,r)}),rt()],Ie.prototype,"enterRoom",1),Z([rt()],Ie.prototype,"exitRoom",1),Z([Ot(Rt.TRTC.switchRoom),rt(),Hd()],Ie.prototype,"switchRoom",1),Z([Ot(Rt.TRTC.switchRole),hs("room",{merge:(e,r)=>r}),rt()],Ie.prototype,"switchRole",1),Z([rt()],Ie.prototype,"destroy",1),Z([Ot(Rt.TRTC.startLocalAudio),_o("audio",([e],[r])=>{var o,s;return((o=e==null?void 0:e.option)==null?void 0:o.microphoneId)===((s=r==null?void 0:r.option)==null?void 0:s.microphoneId)}),rt()],Ie.prototype,"startLocalAudio",1),Z([Ot(Rt.TRTC.updateLocalAudio),hs("audio",{debounce:{delay:200,getKey:()=>`${RE}-localAudio`,isNeedToDebounce:e=>{var r;return!M((r=e.option)==null?void 0:r.captureVolume)}}}),rt()],Ie.prototype,"updateLocalAudio",1),Z([So("audio"),rt()],Ie.prototype,"stopLocalAudio",1),Z([Ot(Rt.TRTC.startLocalVideo),_o("video",([e],[r])=>{var o,s;return((o=e==null?void 0:e.option)==null?void 0:o.cameraId)===((s=r==null?void 0:r.option)==null?void 0:s.cameraId)}),rt()],Ie.prototype,"startLocalVideo",1),Z([Ot(Rt.TRTC.updateLocalVideo),hs("video"),rt()],Ie.prototype,"updateLocalVideo",1),Z([So("video"),rt()],Ie.prototype,"stopLocalVideo",1),Z([Ot(Rt.TRTC.startScreenShare),_o("screen",()=>!0),rt()],Ie.prototype,"startScreenShare",1),Z([Ot(Rt.TRTC.updateScreenShare),hs("screen"),rt()],Ie.prototype,"updateScreenShare",1),Z([rt()],Ie.prototype,"stopScreenShare",1),Z([Ot(Rt.TRTC.startRemoteVideo),_o(e=>`v${e.userId}${e.streamType}`,()=>!0),rt({getRemoteId:e=>`${e.userId}_${e.streamType}`})],Ie.prototype,"startRemoteVideo",1),Z([Ot(Rt.TRTC.updateRemoteVideo),hs(e=>`v${e.userId}${e.streamType}`),rt({getRemoteId:e=>`${e.userId}_${e.streamType}`})],Ie.prototype,"updateRemoteVideo",1),Z([Ot(Rt.TRTC.stopRemoteVideo),xe(e=>function(r){return y(this,null,function*(){if(r.userId==="*"){let o=[];return this._room.remotePublishedUserMap.forEach(s=>{this._remoteVideoConfigMap.has(`${s.userId}_main`)&&o.push(this.stopRemoteVideo({streamType:"main",userId:s.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${s.userId}_sub`)&&o.push(this.stopRemoteVideo({streamType:"sub",userId:s.userId}).catch(()=>{}))}),Promise.all(o)}return e.call(this,r)})}),rt({getRemoteId:e=>`${e.userId}_${e.streamType}`})],Ie.prototype,"stopRemoteVideo",1),Z([So(e=>`v${e.userId}${e.streamType}`)],Ie.prototype,"_stopRemoteVideo",1),Z([Ot(...Rt.TRTC.muteRemoteAudio),rt({getRemoteId:e=>e})],Ie.prototype,"muteRemoteAudio",1),Z([Kp(...Rt.TRTC.setRemoteAudioVolume),gE(200,e=>e),rt({getRemoteId:e=>e})],Ie.prototype,"setRemoteAudioVolume",1),Z([vu("start"),lo(e=>{var r;return(r=e.afterStart)==null?void 0:r.call(e)}),_o((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r)),rt({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Im[e.getName()],ignoreLog:e=>e.getName()==="Debug",ignoreErrorLog:e=>e.getName()==="AudioProcessor"})],Ie.prototype,"startPlugin",1),Z([vu("update"),hs((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r),{merge:(e,r)=>(Cr(e[1],r[1]),e)}),rt({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>ym[e.getName()]})],Ie.prototype,"updatePlugin",1),Z([vu("stop"),So((e,r)=>{if(e.disableRandomCall)return null;let o=e.getGroup(r),s=e.getAlias();return o==="*"?new RegExp(`${s}.*`):s+o}),rt({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Am[e.getName()]})],Ie.prototype,"stopPlugin",1),Z([Kp(...Rt.TRTC.enableAudioVolumeEvaluation)],Ie.prototype,"enableAudioVolumeEvaluation",1),Z([rt()],Ie.prototype,"getVideoSnapshot",1),Z([rt()],Ie.prototype,"_setCurrentSpeaker",1),Z([_o(e=>`a${e.userId}`,()=>!0)],Ie.prototype,"_startRemoteAudio",1),Z([xe(e=>function(r){return y(this,null,function*(){return r.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(o=>this._stopRemoteAudio(Ee(J({},r),{userId:o.userId})).catch(()=>{}))):e.call(this,r)})}),So(e=>`a${e.userId}`)],Ie.prototype,"_stopRemoteAudio",1),Z([So("room")],Ie.prototype,"_exitRoom",1),Z([So("screen")],Ie.prototype,"_stopScreenShare",1),Z([Ot(...Rt.TRTC.sendSEIMessage),qp({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],Ie.prototype,"sendSEIMessage",1),Z([Ot(Rt.TRTC.sendCustomMessage),qp({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],Ie.prototype,"sendCustomMessage",1),Z([Ot(Rt.TRTC.create)],Ie,"_create",1);var uh=Ie,bn=uh;var Vu=class{constructor(t,e){l(this,"_flag");l(this,"terminalType");l(this,"userId");l(this,"tinyId");l(this,"role");l(this,"remoteAudioTrack");l(this,"remoteVideoTrack");l(this,"remoteAuxiliaryTrack");this.userId=e.userId||"",this.tinyId=e.tinyId||"",this.role=e.role||"audience",this.terminalType=e.terminalType,this.remoteAudioTrack=new Oi(t,this),this.remoteVideoTrack=new fo(t,this),this.remoteAuxiliaryTrack=new lu(t,this),this.flag=e.flag||0}get subscribeState(){let t={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?t.smallVideo=!0:t.video=!0),this.remoteAudioTrack.isSubscribed&&(t.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(t.auxiliary=!0),t}get muteState(){return Qn(this.flag,this.userId)}get flag(){return this._flag}set flag(t){if(t===this._flag)return;let e,r=this.muteState;this._flag=t;let o=this.muteState;for(e in o)r[e]!=o[e]&&console.log(this.userId,e,r[e],"->",o[e]);this.remoteAudioTrack.onFlagChanged(),this.remoteVideoTrack.onFlagChanged(),this.remoteAuxiliaryTrack.onFlagChanged()}};var lh=class{constructor(){l(this,"_set",new Set);V.on(F.LEAVE_SUCCESS,this.delete,this),V.on(F.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess,this)}add({room:t,roomId:e}){if(t.scene==="rtc")return;let r=this.getKey(t.userId,e||t.roomId,t.sdkAppId,t.useStringRoomId);this._set.add(r)}delete({room:t,roomId:e}){if(t.scene==="rtc")return;let r=this.getKey(t.userId,t.roomId||e,t.sdkAppId,t.useStringRoomId);this._set.delete(r)}getKey(t,e,r,o){return`${r}_${e}_${t}_${o}`}isJoined({userId:t,roomId:e,sdkAppId:r,room:o}){return o.scene==="rtc"?!1:this._set.has(this.getKey(t,e,r,o.useStringRoomId))}handleSwitchRoomSuccess({room:t,currentRoomId:e,targetRoomId:r}){t.scene!=="rtc"&&(this._set.delete(this.getKey(t.userId,e,t.sdkAppId,t.useStringRoomId)),this._set.add(this.getKey(t.userId,r,t.sdkAppId,t.useStringRoomId)))}};function ky(){return y(this,null,function*(){let i,t;try{let A=yield Zt();i=A&&A.length}catch(A){}try{let A=yield sr();t=A&&A.length}catch(A){}let e={microphone:i,camera:t},{isH264EncodeSupported:r,isVp8EncodeSupported:o,isH264DecodeSupported:s,isVp8DecodeSupported:n,isH265EncodeSupported:a,isH265DecodeSupported:u}=this.checkSystemResult.detail,m=co.basis(),h={webRTC:m.isWebRTCSupported,getUserMedia:m.isGetUserMediaSupported,webSocket:m.isWebSocketsSupported,screenShare:m.isScreenShareSupported,webAudio:m.isWebAudioSupported,h264Encode:r,h264Decode:s,vp8Encode:o,vp8Decode:n,h265Encode:a,h265Decode:u},g={browser:m.browser,os:m.os,trtc:h,devices:e},T={isWebCodecSupported:m.isWebCodecSupported,isMediaSessionSupported:m.isMediaSessionSupported,isWebTransportSupported:m.isWebTransportSupported};je.uploadEvent({log:`trtcstats-${JSON.stringify(g)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(g)}`),je.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(T)}`,userId:this.userId}),Om()})}function CE(){return xe(i=>{let t=new lh;return function(e,r,o){return y(this,null,function*(){let s=String(e.roomId||e.strRoomId);if(this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.userSig=e.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=r,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new de({code:q.INVALID_OPERATION,message:Be({key:$e.INVALID_JOIN})});if(this.checkDestroy(),t.isJoined({userId:this.userId,roomId:s,sdkAppId:this.sdkAppId,room:this}))throw new de({code:q.INVALID_OPERATION,message:Be({key:$e.REPEAT_JOIN,data:this.userId})});t.add({room:this,roomId:s}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${s} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),V.emit(F.JOIN_START,{room:this,roomId:s,params:e});let n=jr.getEnv();n||(n=pi.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(Dc.OLD_CLOUD_LADDER)?n=pi.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(Dc.WEBRTC)&&(n=pi.WEBRTC))),je.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:s}),co.checkSystemRequirementsInternal(o).then(a=>{this.checkSystemResult=a,ky.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!jr.getEnv()&&(yield this.schedule(e,o));let a=yield i.call(this,e,r,o);return this.roomId=s,this._joinedTimestamp=jr.performanceNow(),V.emit(F.JOIN_SUCCESS,{room:this}),o===30&&!e.component&&je.uploadEvent({log:`stat-conv-${Number(Or)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw t.delete({room:this,roomId:s}),V.emit(F.JOIN_FAILED,{room:this,error:a}),a}})}})}var NE=()=>xe(i=>function(...t){return y(this,null,function*(){V.emit(F.LEAVE_START,{room:this}),yield i.call(this,...t),V.emit(F.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function wE(){return xe(i=>function(...t){return y(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(t=t.filter(r=>r.outMediaTrack&&r.state==="ready"),!t.length))return;V.emit("61",{room:this});let e=i.apply(this,t);return t.forEach(r=>r.publish(this,e)),e})})}function DE(){return xe(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>r.unpublish()),e})}function ME(){return xe(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>!r.isSubscribed&&r.subscribe(e)),e})}function Py({fn:i,context:t}){return function(...e){try{let r=i.apply(t,e);return to(r)?r.catch(o=>$.error(`${i.name}() error observed ${o}`)):r}catch(r){$.error(`${i.name}() error observed ${r}`)}}}var Fu=class{constructor(t){l(this,"_frameWorkType");l(this,"_component");l(this,"_language");l(this,"connectionType");l(this,"_room");l(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});l(this,"_keyPrefix");l(this,"_log");l(this,"_intervalId");l(this,"_firstPublishedUserList");l(this,"_networkQuality");l(this,"_basicInfo");l(this,"_pathJoinRoom");l(this,"_pathLeaveRoom");l(this,"_pathMainVideoMap");l(this,"_pathMainAudioMap");l(this,"_pathAuxiliaryMap");l(this,"_remoteStreamStatMap");l(this,"_localStreamStat");l(this,"_eventMap",new Map);l(this,"_captureCostSum",0);l(this,"_captureCostCount",0);l(this,"isDestroyed",!1);this._frameWorkType=t.frameWorkType||30,this._component=t.component||0,this.connectionType=t.connectionType||1,this._language=t.language||0,this._room=t.room,this._keyPrefix="key_point",this._log=$.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&We(this[e])&&(this[e]=Py({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:at,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,zo().then(t=>{this._basicInfo.string_os_version=Xo(),t?this._basicInfo.string_device_name=t.mobile?t.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(t,e){return this._eventMap.set(t,e),V.on(t,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(F.JOIN_START,this.handleJoinStart).addEvent(F.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(F.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(F.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(F.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(F.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(F.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(F.JOIN_FAILED,this.handleJoinFailed).addEvent(F.LEAVE_START,this.handleLeaveStart).addEvent(F.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(F.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(F.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(F.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(F.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(F.PUBLISH_START,this.handlePublishStart).addEvent(F.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(F.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(F.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(F.PLAY_TRACK_START,this.handlePlayStart).addEvent(F.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(F.PLAYER_STATE_CHANGED,({track:t,state:e,type:r})=>{!t.isRemote||!this.hitTest(t.room)||e==="PLAYING"&&(r===O.AUDIO?this.handleAudioPlaying(t):this.handleVideoPlaying(t))}).addEvent(F.SWITCH_ROOM_START,this.handleSwitchRoomStart).addEvent(F.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess).addEvent(F.SWITCH_ROOM_FAILED,this.handleSwitchRoomFailed).addEvent(F.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(F.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(F.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(F.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{if(!this.hitTest(t))return;let o=e.hasAudio||e.hasVideo||e.hasSmall,s=e.hasAuxiliary,n=r.hasAudio||r.hasVideo||r.hasSmall,a=r.hasAuxiliary;!o&&n&&this.handleRemoteStreamAdded(r.userId,"main"),!s&&a&&this.handleRemoteStreamAdded(r.userId,"auxiliary")}).addEvent(F.SINGLE_CONNECTION_STAT,({room:t,stat:e})=>{this.hitTest(t)&&(this._pathJoinRoom.int32_ice_cost=e.ice,this._pathJoinRoom.int32_dtls_cost=e.dtls,this._pathJoinRoom.int32_peer_connection_cost=e.peerConnection)})}uninstallEvents(){window.removeEventListener("pagehide",this.handleUnload),this._eventMap.forEach((t,e)=>V.off(e,t)),this._eventMap.clear()}destroy(){this.uninstallEvents(),ht.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(t){this.hitTest(t.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),t.params&&(M(t.params.frameWorkType)||(this._frameWorkType=t.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),M(t.params.component)||(this._component=t.params.component,this._basicInfo.uint32_component=this._component),M(t.params.language)||(this._language=t.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:t,detailCost:e}){if(this.hitTest(t)&&e){let{totalCost:r,local:o,dns:s,tcp:n,tls:a,request:u,response:m}=e;this._pathJoinRoom.int32_schedule_cost=r,this._pathJoinRoom.int32_schedule_local=o,this._pathJoinRoom.int32_schedule_dns=s,this._pathJoinRoom.int32_schedule_tcp=n,this._pathJoinRoom.int32_schedule_tls=a,this._pathJoinRoom.int32_schedule_request=u,this._pathJoinRoom.int32_schedule_response=m}}handleSignalConnectionStart({room:t}){this.hitTest(t)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd({room:t,error:e}){this.hitTest(t)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),e&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=e instanceof de?Number(e.getExtraCode()||e.getCode()):q.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=t.code,t.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=t.room.getSignalInfo())}handleJoinFailed({room:t,error:e}){this.hitTest(t)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=e.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=t.publishedUserList||[])}handleSendFirstVideoFrame({room:t}){this.hitTest(t)&&this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(t){this.hitTest(t.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(t){this.hitTest(t.room)&&this._pathLeaveRoom.uint64_end_time===0&&(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0?this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time:this._log.warn("pathJoinRoom endTime is 0"),this.report())}handleLeaveSendCMD(t){this.hitTest(t.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleSwitchRoomStart(t){if(this.hitTest(t.room)){let e=Date.now();this.report().then(()=>{this._pathJoinRoom.uint64_start_time=e,this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=e})}}handleSwitchRoomSuccess({room:t}){if(this.hitTest(t)&&this._pathJoinRoom.uint64_end_time===0){let e=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=e,this._pathJoinRoom.uint64_end_time=e,this._pathJoinRoom.int32_end_ret}}handleSwitchRoomFailed({room:t,error:e}){if(this.hitTest(t)){let r=Date.now();this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=r,this._pathJoinRoom.uint64_end_time=r,e&&(this._pathJoinRoom.int32_end_ret=e instanceof de?Number(e.getExtraCode()||e.getCode()):q.UNKNOWN)}}handleRemoteStreamAdded(t,e){var o;let r=`${t}_${e}`;if(!this._remoteStreamStatMap.has(r)){let s={userId:t,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:Ee(J({},Ly),{msg_user_info:new tc({userId:t,tinyId:(o=this._room.remotePublishedUserMap.get(t))==null?void 0:o.tinyId,role:20})})};s.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(r,s)}}handleSubscribeStart({room:t,remotePublishedUser:e,streamType:r,subscribeState:o}){if(!this.hitTest(t))return;let{userId:s,tinyId:n,role:a}=e,u=new tc({userId:s,tinyId:n,role:a==="anchor"?20:21}),m=Date.now(),h=`${s}_${r}`,g=this._remoteStreamStatMap.get(h);g&&g.subscribeStartTime===0&&(g.subscribeStartTime=m),r==="main"?(e.muteState.hasVideo&&(o.video||o.smallVideo)&&!this._pathMainVideoMap.has(h)&&this._pathMainVideoMap.set(h,{statsToReport:{msg_user_info:u,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:s,sendSubscribeCMDTime:m}),e.muteState.hasAudio&&o.audio&&!this._pathMainAudioMap.has(h)&&this._pathMainAudioMap.set(h,{statsToReport:{msg_user_info:u,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:s,sendSubscribeCMDTime:m})):e.muteState.hasAuxiliary&&o.auxiliary&&!this._pathAuxiliaryMap.has(h)&&this._pathAuxiliaryMap.set(h,{sendSubscribeCMDTime:m})}handleSubscribed({room:t,remotePublishedUser:e,streamType:r}){if(this.hitTest(t)){let o=`${e.userId}_${r}`,s=this._remoteStreamStatMap.get(o);s&&s.subscribedTime===0&&(s.subscribedTime=Date.now())}}handlePlayStart({track:t}){if(!t.isRemote||!this.hitTest(t.room))return;let e=`${t.userId}_${t.streamType}`,r=this._remoteStreamStatMap.get(e);(r==null?void 0:r.playStreamTime)===0&&(r.playStreamTime=Date.now())}handleVideoLoadedData({track:t}){if(!t.isRemote||!this.hitTest(t.room))return;let e=`${t.userId}_${t.streamType}`,r=this._pathMainVideoMap.get(e);r&&r.statsToReport.uint64_combine_first_frame_time===0&&(r.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(t){let e=`${t.userId}_${t.streamType}`,r=Date.now(),o=this._pathMainVideoMap.get(e),s=this._remoteStreamStatMap.get(e);if(s){let{statsToReport:n}=s;if(!n.uint32_video_render_first&&t.streamType==="main"?this.hasVideoFlag(t.userId):this.hasAuxFlag(t.userId)){let a=r-this._pathJoinRoom.uint64_start_time;n.uint32_video_render_first=a,z.addNumber({key:516820,value:a})}}(o==null?void 0:o.statsToReport.uint64_render_first_frame_time)===0&&(o.statsToReport.uint64_render_first_frame_time=r)}handleAudioPlaying(t){let e=`${t.userId}_${t.streamType}`,r=this._pathMainAudioMap.get(e);r&&r.statsToReport.uint64_play_first_frame_time===0&&(r.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(t){this.hitTest(t.room)&&(this._networkQuality.totalUplinkLoss+=t.uplink.loss,this._networkQuality.totalUplinkRTT+=t.uplink.rtt,this._networkQuality.count++,t.downlinks.forEach(({rtt:e,loss:r,userId:o,videoDelay:s,audioDelay:n})=>{let a=this._networkQuality.totalDownlinkRTTAndLossMap.get(o);if(a)a.totalRTT+=e,a.totalLoss+=r,s&&(a.totalVideoDelay=(a.totalVideoDelay||0)+s,a.videoDelayCount=(a.videoDelayCount||0)+1),n&&(a.totalAudioDelay=(a.totalAudioDelay||0)+n,a.audioDelayCount=(a.audioDelayCount||0)+1),a.count++;else{let u,m,h,g;s&&(m=s,h=1),n&&(u=n,g=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(o,{totalRTT:e,totalLoss:r,count:1,totalAudioDelay:u,totalVideoDelay:m,audioDelayCount:g,videoDelayCount:h})}}))}handleHeartbeatStats(t){if(this.hitTest(t.room)){let{msg_device_info:e,msg_up_stream_info:r,msg_down_stream_info:o}=t.report;if(r.msg_video_status[0]){let{uint32_video_codec_bitrate:s,uint32_video_enc_fps:n,uint32_video_width:a,uint32_video_height:u}=r.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=s,this._localStreamStat.totalVideoFPS+=n,this._localStreamStat.totalVideoWidth+=a,this._localStreamStat.totalVideoHeight+=u,this._localStreamStat.videoCount++}if(r.msg_audio_status){let{uint32_audio_level:s}=r.msg_audio_status;Math.floor(s/Ai*100)>0&&(this._localStreamStat.totalAudioLevel+=s/Ai,this._localStreamStat.audioLevelCount++)}o.forEach(s=>{let{msg_user_info:n,msg_audio_status:a,msg_video_status:u}=s,m=n.str_identifier,h=this._room.remotePublishedUserMap.get(m);if(u.forEach(g=>{let T=g.uint32_video_stream_type===2,A=g.uint32_video_stream_type===7,C=`${m}_${T?"main":"auxiliary"}`,N=this._remoteStreamStatMap.get(C);if(N&&(T&&(h!=null&&h.remoteVideoTrack.isSubscribed)||A&&(h!=null&&h.remoteAuxiliaryTrack))){N.totalVideoFPS+=g.uint32_video_receive_fps,N.totalVideoBitrate+=g.uint32_video_codec_bitrate,N.videoCount++,N.statsToReport.uint32_video_width===0&&(N.statsToReport.uint32_video_width=g.uint32_video_width),N.statsToReport.uint32_video_height===0&&(N.statsToReport.uint32_video_height=g.uint32_video_height);let D=T?h.remoteVideoTrack:h.remoteAuxiliaryTrack;D.stat.jitterBufferDelay&&(N.videoJitterBufferDelay=D.stat.jitterBufferDelay),D.stat.framesReceived&&(N.statsToReport.uint32_video_consume_render_rate=Math.floor(D.stat.framesDecoded/D.stat.framesReceived*Zi(10,6)))}}),!Us(a)){let g=`${m}_main`,T=this._remoteStreamStatMap.get(g);this._remoteStreamStatMap.has(g)&&T&&h!=null&&h.remoteAudioTrack.isSubscribed&&(T.totalAudioBitrate+=a.uint32_audio_codec_bitrate,T.audioCount++,h.remoteAudioTrack.stat.jitterBufferDelay&&(T.audioJitterBufferDelay=h.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(a.uint32_audio_level/Ai*100)>0&&(T.totalAudioLevel+=a.uint32_audio_level/Ai,T.audioLevelCount++))}}),e.uint32_audio_capture_cost&&(this._captureCostSum+=e.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0))}}handlePublishStart({room:t}){this.hitTest(t)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:t}){t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:t}){t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed({track:t,error:e}){let o={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof de?e.getExtraCode()||e.getCode():q.UNKNOWN);t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=o,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=o,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&Ds)>=0}hasAudioFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&Ms)>=0}hasAuxFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&Hn)>=0}hitTest(t){return t===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let t=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=t<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((t,e)=>{let{userId:r}=t,o=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(o){let{totalLoss:h,count:g,audioDelayCount:T,videoDelayCount:A,totalAudioDelay:C,totalVideoDelay:N}=o;t.statsToReport.uint32_avg_down_loss=Math.floor(h/g),T&&C&&(t.statsToReport.uint32_audio_network_p2p_delay=Math.floor(C/T),t.audioJitterBufferDelay&&(t.statsToReport.uint32_p2p_delay=Math.floor(t.statsToReport.uint32_audio_network_p2p_delay+t.audioJitterBufferDelay))),A&&N&&(t.statsToReport.uint32_video_network_p2p_delay=Math.floor(N/A))}t.videoCount>0&&(t.statsToReport.uint32_video_avg_fps=Math.floor(t.totalVideoFPS/t.videoCount),t.statsToReport.uint32_video_avg_bitrate=Math.floor(t.totalVideoBitrate/t.videoCount)),t.audioCount>0&&(t.statsToReport.uint32_audio_recv_bitrate=t.statsToReport.uint32_audio_bitrate=Math.floor(t.totalAudioBitrate/t.audioCount)),t.audioLevelCount>0&&(t.statsToReport.uint32_audio_play_db=Math.floor(t.totalAudioLevel/t.audioLevelCount*100));let{callDurationCalculator:s}=this._room;s&&(t.statsToReport.uint32_audio_play_time=s.getDuration(e,O.AUDIO),t.statsToReport.uint32_video_play_time=s.getDuration(e,O.VIDEO)),t.statsToReport.uint32_video_render_first&&(t.statsToReport.uint32_video_render_first=Math.min(t.statsToReport.uint32_video_render_first,gs));let{badCaseDetector:n}=this._room,{dataFreeze:a,count:u}=n.getDataFreezeDuration(e),{renderFreeze:m}=n.getRenderFreezeDuration(e);t.statsToReport.uint32_video_block_count=u,t.statsToReport.uint32_video_block_time=Math.min(a,t.statsToReport.uint32_video_play_time),t.statsToReport.uint32_video_external_block_time=Math.min(m,t.statsToReport.uint32_video_play_time),n.isBlackStream(e)&&t.statsToReport.uint32_video_avg_fps===0?t.statsToReport.uint32_video_black_screen_subjective=1:t.statsToReport.uint32_video_black_screen_subjective=0}),this._pathMainAudioMap.forEach((t,e)=>{if(!this.hasAudioFlag(t.userId)){this._pathMainAudioMap.delete(e);return}t.statsToReport.uint64_play_first_frame_time-t.statsToReport.uint64_start_enter_time>gs&&(t.statsToReport.uint64_play_first_frame_time=t.statsToReport.uint64_start_enter_time+gs)}),this._pathMainVideoMap.forEach((t,e)=>{if(!this.hasVideoFlag(t.userId)){this._pathMainVideoMap.delete(e);return}t.statsToReport.uint64_render_first_frame_time-t.statsToReport.uint64_start_enter_time>gs&&(t.statsToReport.uint64_render_first_frame_time=t.statsToReport.uint64_start_enter_time+gs)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>gs&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+gs)}getReportData(){this._basicInfo.uint32_networkType=Fc();let t={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new tc({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:Vs(this._signalInfo.relayIp),uint32_client_ip:Vs(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*Zi(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:Vs(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return Zn(t),t}report(){return y(this,null,function*(){try{this.prepareReport();let t=this.getReportData();yield this.upload(t),this.initData()}catch(t){this._log.warn(t)}finally{this.isDestroyed&&(this._room=null)}})}upload(t){return y(this,null,function*(){var u,m;if(t.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),r=(m=(u=this._room.scheduleResult)==null?void 0:u.config)!=null&&m.sso?Ti(t,2001,e):yield Ll(t),o=r instanceof ArrayBuffer,s=`${Ei(e,eo.KEY_POINT)}&gzip=${+o}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,r));let a=[this.uploadKVStat(z),this.uploadKVStat(Ko)];n||a.push(_i({url:s,body:r,priority:"low"})),yield Promise.all(a)})}setConnectionType(t){this.connectionType=t,this._basicInfo.uint32_connection_type=t}uploadKVStat(t){return y(this,null,function*(){var a,u;let e=t.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=Ee(J({},e.msg_sdk_basic_info),{bytes_device_name:this._basicInfo.string_device_name||"",bytes_os_version:this._basicInfo.string_os_version||"",uint32_framework:this._frameWorkType,uint32_network_type:this._basicInfo.uint32_networkType||0}),this._log.debug(e);let r=(u=(a=this._room.scheduleResult)==null?void 0:a.config)!=null&&u.sso?Ti(e,2003,this._room.sdkAppId):yield Ll(e),o=r instanceof ArrayBuffer,s=`${Ei(+this._room.sdkAppId,eo.KV_STAT)}&gzip=${+o}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,r)),n||_i({url:s,body:r})})}};Z([ts({settings:{timeout:500,retries:3}})],Fu.prototype,"upload",1);var gs=5e3,Ly={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},tc=class{constructor(t){l(this,"str_identifier");l(this,"str_tinyid");l(this,"uint32_role");this.str_identifier=String(t.userId),this.str_tinyid=String(t.tinyId||0),this.uint32_role=t.role}},OE=Fu;var mh=class{constructor(){l(this,"_startTime");l(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=_e())}stop(){this._endTime===0&&(this._endTime=_e())}getDuration(){return this._endTime===0?_e()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},$u=mh;var ph=class{constructor(t){l(this,"_room",null);l(this,"_durationMap");l(this,"_eventMap",new Map);this._room=t.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(F.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(F.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(F.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{var n;let{userId:o}=r;if(!this.hitTest(t))return;e.hasAudio&&!r.hasAudio&&this.stopDurationItem(`${o}_main`,O.AUDIO),e.hasVideo&&!r.hasVideo&&this.stopDurationItem(`${o}_main`,O.VIDEO),e.hasAuxiliary&&!r.hasAuxiliary&&this.stopDurationItem(`${o}_auxiliary`,O.VIDEO);let s=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(o);s&&(!e.hasAudio&&r.hasAudio&&s.remoteAudioTrack.isSubscribed&&this.addDuractionItem(o,O.AUDIO,"main"),!e.hasVideo&&r.hasVideo&&s.remoteVideoTrack.isSubscribed&&this.addDuractionItem(o,O.VIDEO,"main"),!e.hasAuxiliary&&r.hasAuxiliary&&s.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(o,O.VIDEO,"auxiliary"))}),this._eventMap.forEach((t,e)=>V.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>V.off(e,t,this)),this._eventMap.clear()}handleSubscribed({track:t}){if(!this.hitTest(t.room))return;let{userId:e,streamType:r,kind:o}=t;t.isSubscribed?this.addDuractionItem(e,o,r):this.stopDurationItem(`${e}_${r}`,o)}handleUnsubscribed({track:t}){this.hitTest(t.room)&&this.stopDurationItem(`${t.userId}_${t.streamType}`,t.kind)}isRecording(t){return t.findIndex(e=>e.endTime===0)>=0}addDuractionItem(t,e,r){let o=`${t}_${r}`,s=new $u,n=this._durationMap.get(o);n?this.isRecording(n[e])||n[e].push(s):this._durationMap.set(o,{userId:t,type:r,audio:e===O.AUDIO?[s]:[],video:e===O.AUDIO?[]:[s]})}stopDurationItem(t,e){if(this._durationMap.has(t)){let o=this._durationMap.get(t)[e].find(s=>s.endTime===0);o&&o.stop()}}hitTest(t){return this._room===t}getDuration(t,e){return this._durationMap.has(t)?this._durationMap.get(t)[e].reduce((o,s)=>o+s.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},xE=ph;var hh=class{constructor(t){l(this,"_room");l(this,"_renderFreezeMap",new Map);l(this,"_isVideoPlayingEventFiredMap",new Map);l(this,"_dataFreezeMap",new Map);l(this,"_monitorFreezeData",new Map);l(this,"_eventMap",new Map);this._room=t.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(F.LEAVE_SUCCESS,({room:t})=>{this.hitTest(t)&&this.stop()}).set(F.PLAY_TRACK_START,this.onPlayTrackStart).set(F.UNSUBSCRIBE_SUCCESS,({room:t,streamType:e,remotePublishedUser:r})=>{if(!this.hitTest(t))return;let{userId:o}=r,s=`${o}_${e}`;this.stopDataFreeze({key:s,userId:o,type:e})}).set(F.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{if(!this.hitTest(t))return;let{userId:o}=r;if(e.hasVideo&&!r.hasVideo){let s="main",n=`${r.userId}_${s}`;this.stopDataFreeze({key:n,userId:o,type:s})}if(e.hasAuxiliary&&!r.hasAuxiliary){let s="auxiliary",n=`${r.userId}_${s}`;this.stopDataFreeze({key:n,userId:o,type:s})}}).set(F.PLAYER_STATE_CHANGED,({track:t,state:e,reason:r,type:o})=>{if(!(!t.isRemote||!t.room||!this.hitTest(t.room)||o!==O.VIDEO)){if(e==="PLAYING"){let s=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.set(s,!0)}r===O.MUTE?this.onVideoTrackMuted(t):r===O.UNMUTE&&this.onVideoTrackUnmuted(t)}}).set(F.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((t,e)=>V.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>V.off(e,t,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(t){if(!t.isSubscribed)return;let{userId:e,streamType:r}=t,o=`${e}_${r}`,s=this._dataFreezeMap.get(o),n=new $u;s?s.durationItemList.push(n):this._dataFreezeMap.set(o,{userId:e,type:r,durationItemList:[n],isFreezing(){let a=this.durationItemList[this.durationItemList.length-1];return a&&a.endTime===0}})}onVideoTrackUnmuted(t){if(!t.isSubscribed)return;let{userId:e,streamType:r}=t,o=`${e}_${r}`;this.stopDataFreeze({key:o,userId:e,type:r})}onHearBeatReport({room:t,report:e}){this.hitTest(t)&&e.msg_down_stream_info.forEach(r=>{let o=this._room.remotePublishedUserMap.get(r.msg_user_info.str_identifier);if(!o)return;let{userId:s,muteState:n}=o;r.msg_video_status.forEach(a=>{a.uint32_video_stream_type===2&&n.hasVideo&&!n.videoMuted&&o.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:a.uint32_video_dec_fps,type:"main"}),a.uint32_video_stream_type===7&&n.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:a.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:t,userId:e,type:r}){let o=this._dataFreezeMap.get(t);if(!o||!o.isFreezing())return;let s=o.durationItemList[o.durationItemList.length-1];s.stop();let n=s.getDuration();n>xc?this._monitorFreezeData.set(t,{userId:e,type:r,duration:n}):o.durationItemList.pop()}getTotalDuration(t){return t.reduce((e,r)=>{let o=r.getDuration();return e+Math.min(o,5e3)},0)}handleRenderFreeze(o){return y(this,arguments,function*({userId:t,fps:e,type:r}){let s=`${t}_${r}`,n=this._renderFreezeMap.get(s);if(e<=2){let a=_e();n&&!n.isFreeze&&(n.freezeTimeline.push({startTime:a,endTime:0}),n.isFreeze=!0),n||this._renderFreezeMap.set(s,{userId:t,type:r,isFreeze:!0,freezeTimeline:[{startTime:a,endTime:0}],renderFreezeTotal:0})}else if(n&&n.isFreeze){n.isFreeze=!1;let a=n.freezeTimeline.pop();if(a){a.endTime=_e();let u=a.endTime-a.startTime;n.freezeTimeline.push(a),n.renderFreezeTotal+=Math.min(5e3,u)}}})}onPlayTrackStart({track:t}){if(!t.isRemote||!this.hitTest(t.room)||t.kind!==O.VIDEO||!t.isRemotePublished)return;let e=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(t){let e={dataFreeze:0,count:0},r=this._dataFreezeMap.get(t);if(r){if(r.isFreezing()){let o=r.durationItemList[r.durationItemList.length-1];o.stop(),o.getDuration()<xc&&r.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(r.durationItemList),e.count=r.durationItemList.length}return e}getRenderFreezeDuration(t){let e=this._renderFreezeMap.get(t),r=0,o=0;if(e)if(!e.isFreeze)r=e.renderFreezeTotal;else{let s=_e(),n=e.freezeTimeline[e.freezeTimeline.length-1],a=s-n.startTime;r=e.renderFreezeTotal+Math.min(a,5e3),o=e.freezeTimeline.length}return{renderFreeze:r,count:o}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(t){return this._isVideoPlayingEventFiredMap.has(t)?!this._isVideoPlayingEventFiredMap.get(t):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(t){return t===this._room}destroy(){this.uninstallEvents()}},kE=hh;var LE=Ki(so(),1);var Bu=class{constructor(t,e,r,o,s=4/3){this.vbMode=t;this.faceDetectorHash=e;this.visionTaskRegistry=r;this.logger=o;l(this,"animationState");l(this,"originalAspect");l(this,"totalOffsetX",0);l(this,"totalOffsetY",0);l(this,"defaultScaleRatio",.1);l(this,"isRecovering",!1);l(this,"boundaryY",280);l(this,"lastActionTime",0);l(this,"restTime",400);this.animationState={current:null,target:null,animating:!1,debounceTimer:null,startTime:0,duration:3e3,debounceTime:150,movementThreshold:30,debounceThreshold:15},this.addEvent(this.vbMode,!!this.faceDetectorHash),this.originalAspect=s||4/3}addEvent(t,e,r){let s=[{key:570704,error:r!=null?r:e?void 0:11},{key:570705,error:r!=null?r:e?void 0:22}][t-1];s&&(e?z.addSuccessEvent({key:s.key}):z.addFailedEvent({key:s.key,error:s.error}))}actionCentering(t){let e=Date.now();if(this.animation(),!this.faceDetectorHash||e-this.lastActionTime<this.restTime||this.animationState.animating)return;let{videoWidth:r,videoHeight:o}=t;this.animationState.debounceThreshold=r/30,this.animationState.movementThreshold=r/20,this.boundaryY=o*.6;try{let s=this.visionTaskRegistry.getResult(this.faceDetectorHash);if(s.detections.length<=0){this.vbMode===1&&this.recoverOriginal(r,o);return}let n=s.detections[0].boundingBox,a=n.originX,u=n.originY,m=n.width,h=n.height;this.vbMode===1?this.dualStageCropping(r,o,a,u,m,h):this.vbMode===2&&this.movingPortrait(r,o,a,u,m,h)}catch(s){this.logger.error(s)}this.lastActionTime=e}calculateBoundary(t,e,r,o){let s,n;return t>e/2?(s=e-r-o,n=r-s):(s=r,n=0),{min:s,offset:n}}calculateTargetPosition(t,e,r,o,s,n,a=.4){let u=t+r/2,m=e+o/2,h,g,{min:T,offset:A}=this.calculateBoundary(u,s,t,r),{min:C,offset:N}=this.calculateBoundary(m,n,e,o);return h=2*T+r,g=2*C+o,h/g>this.originalAspect?(h=g*this.originalAspect,A=u-h/2):(g=h/this.originalAspect,N=m-g/2),r/s>a&&(A=0,N=0,h=s,g=n),A=Math.max(0,Math.min(A,s-h)),N=Math.max(0,Math.min(N,n-g)),{sx:A,sy:N,cropWidth:h,cropHeight:g,timestamp:Date.now()}}processFacePositionCrop(t,e,r){if(!this.animationState.current||!this.animationState.target){let a={sx:0,sy:0,cropWidth:e,cropHeight:r,timestamp:Date.now()};this.animationState.current=a,this.animationState.target=a;return}let o=this.positionDistance(this.animationState.target,t),s=this.positionDistance(this.animationState.current,t),n=this.animationState.current.cropWidth/e;o>this.animationState.debounceThreshold*n&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&s>this.animationState.movementThreshold*n&&(this.animationState.target=t,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}processFacePositionPortrait(t){if(!this.animationState.current||!this.animationState.target){this.animationState.current=J({},t),this.animationState.target=J({},t);return}let e=this.positionDistance(this.animationState.current,t),r=this.positionDistance(this.animationState.target,t);e>this.animationState.debounceThreshold&&(clearTimeout(this.animationState.debounceTimer),this.animationState.animating=!1),!this.animationState.animating&&r>this.animationState.movementThreshold&&(this.animationState.current=t,this.animationState.debounceTimer=setTimeout(()=>{this.animationState.startTime=Date.now(),this.animationState.animating=!0},this.animationState.debounceTime))}animation(){if(!this.animationState.animating)return;let t=Date.now()-this.animationState.startTime,e=Math.min(t/this.animationState.duration,1),r=o=>o<.5?2*o*o:-1+(4-2*o)*o;if(this.animationState.current&&this.animationState.target){let o=(this.animationState.target.sx-this.animationState.current.sx)*r(e);this.animationState.current.sx+=o,this.totalOffsetX+=o;let s=(this.animationState.target.sy-this.animationState.current.sy)*r(e);if(this.animationState.current.sy+=s,this.totalOffsetY+=s,this.animationState.current.cropWidth+=(this.animationState.target.cropWidth-this.animationState.current.cropWidth)*r(e),this.animationState.current.cropHeight+=(this.animationState.target.cropHeight-this.animationState.current.cropHeight)*r(e),this.animationState.current.scaleRatio&&this.animationState.target.scaleRatio&&(this.animationState.current.scaleRatio+=(this.animationState.target.scaleRatio-this.animationState.current.scaleRatio)*r(e)),Pe(this.animationState.current.scaleOffsetX)&&Pe(this.animationState.target.scaleOffsetX)&&Pe(this.animationState.current.scaleOffsetY)&&Pe(this.animationState.target.scaleOffsetY)){let n=(this.animationState.target.scaleOffsetX-this.animationState.current.scaleOffsetX)*r(e);this.animationState.current.scaleOffsetX+=n;let a=(this.animationState.target.scaleOffsetY-this.animationState.current.scaleOffsetY)*r(e);this.animationState.current.scaleOffsetY+=a}}e>=1&&(this.animationState.animating=!1,this.animationState.current=this.animationState.target,this.isRecovering=!1)}positionDistance(t,e){return Math.sqrt(Zi(t.sx-e.sx,2)+Zi(t.sy-e.sy,2))}recoverOriginal(t,e){this.animationState.target={sx:0,sy:0,cropWidth:t,cropHeight:e,timestamp:Date.now()},this.animationState.animating=!0,this.animationState.startTime=Date.now(),this.isRecovering=!0}dualStageCropping(t,e,r,o,s,n,a=.3){if(this.isRecovering)return;let u=this.calculateTargetPosition(r,o,s,n,t,e);this.processFacePositionCrop(u,t,e),s*n/u.cropWidth/u.cropHeight>a&&this.recoverOriginal(t,e)}movingPortrait(t,e,r,o,s,n){var u,m,h,g,T,A,C,N,D,P,K,pe;let a={sx:r+s/2+this.totalOffsetX,sy:o+n/2+this.totalOffsetY,cropWidth:t,cropHeight:e,scaleRatio:(m=(u=this.animationState.current)==null?void 0:u.scaleRatio)!=null?m:1,scaleOffsetX:(g=(h=this.animationState.current)==null?void 0:h.scaleOffsetX)!=null?g:0,scaleOffsetY:(A=(T=this.animationState.current)==null?void 0:T.scaleOffsetY)!=null?A:0,timestamp:Date.now()};this.animationState.target={sx:t/2,sy:o+n/2,cropWidth:t,cropHeight:e,scaleRatio:(N=(C=this.animationState.target)==null?void 0:C.scaleRatio)!=null?N:1,scaleOffsetX:(P=(D=this.animationState.target)==null?void 0:D.scaleOffsetX)!=null?P:0,scaleOffsetY:(pe=(K=this.animationState.target)==null?void 0:K.scaleOffsetY)!=null?pe:0,timestamp:Date.now()},this.animationState.animating||(this.animationState.target.scaleRatio=Math.sqrt(s*n/t/e/this.defaultScaleRatio),this.animationState.target.scaleOffsetX=-this.animationState.target.scaleRatio/2+.5,this.animationState.target.scaleOffsetY=-this.animationState.target.scaleRatio+1,(this.animationState.target.sy-this.animationState.target.scaleOffsetY*this.animationState.target.cropHeight)/this.animationState.target.scaleRatio<this.boundaryY&&(this.animationState.target.scaleOffsetY=(this.animationState.target.sy-this.boundaryY*this.animationState.target.scaleRatio)/this.animationState.target.cropHeight)),this.processFacePositionPortrait(a)}set aspectRatio(t){this.originalAspect=t}get current(){return this.animationState.current}get offset(){return{offsetX:this.totalOffsetX,offsetY:this.totalOffsetY}}get targetCrop(){return this.animationState.target}};var Uy=`#version 300 es
71
103
  in vec2 a_position;
72
104
  in vec2 a_texCoord;
73
105
  out vec2 v_texCoord;
74
106
  void main() {
75
107
  gl_Position = vec4(a_position.x, a_position.y, 0, 1);
76
108
  v_texCoord = a_texCoord;
77
- }`,pS=`#version 300 es
109
+ }`,Vy=`#version 300 es
78
110
  precision highp float;
79
111
  uniform sampler2D u_texture;
80
112
  uniform sampler2D mask;
@@ -83,7 +115,7 @@ in vec2 v_texCoord;
83
115
  out vec4 outColor;
84
116
  void main() {
85
117
  outColor = vec4(texture(u_texture, v_texCoord).rgb, texture(mask, v_texCoord).a);
86
- }`,Xc=class extends Dt{constructor(e,t){super(e,t.input,{name:"vb",create2d:!1,useDefaultProgram:!1,useFbo:!1,createTexture:!0,width:t.width,height:t.height,logger:e.log});d(this,"_bgTexture");d(this,"_waterMarkTexture");d(this,"_lastMaskTexture");d(this,"_lastMaskFbo");d(this,"_textureValid",!1);d(this,"_selfieTextureValid",!1);d(this,"_selfieSegmentationHash");d(this,"wasm");d(this,"_prePrograme");d(this,"_segmentationMask");d(this,"_weixin",!1);d(this,"_centerFace");d(this,"_textureMatrixLocation");d(this,"_offsetMatrixLocation");d(this,"_enableFaceCentering",!1);d(this,"_mat4");d(this,"_onAbort");d(this,"_visionTaskRegistry");this.init(t).catch(r=>{e.log.error(r),e.destroy(new v({code:A.VIDEO_MANAGER_ERROR,extraCode:6,message:`init vb node error ${r.message||r}`}))})}init(e){return f(this,null,function*(){var n;let t=e.Wasm,r=this.context.ctx;if(e.mat4&&(this._mat4=e.mat4),this._enableFaceCentering=(n=e.enableFaceCentering)!=null?n:!1,this.wasm=new t.AllIn1(r),this.wasm.blurRadius=e.blurRadius||3,this.wasm.mirror=!!e.mirror,this.wasm.rotation=e.rotation||0,this.wasm.vbMode=e.bg==="blur"?1:e.bg instanceof HTMLImageElement?2:e.bg==="green"?3:0,this._onAbort=e.onAbort,e.waterMark){let{x:a,y:c,width:l,height:u}=e.waterMark;this.wasm.setWaterMark(a,c,l,u)}if(e.beautyParams){let{beauty:a,brightness:c,ruddy:l}=e.beautyParams;this.wasm.setBeauty(a,c,l,e==null?void 0:e.width,e==null?void 0:e.height)}this.program=this.wasm.init(),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.uniform1i(r.getUniformLocation(this.program,"mask"),1),e.bg instanceof HTMLImageElement&&(r.uniform1i(r.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(e.bg)),e.waterMark&&(r.uniform1i(r.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(e.waterMark.image));let s=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);if(this._textureMatrixLocation=r.getUniformLocation(this.program,"u_textureMatrix"),r.uniformMatrix4fv(this._textureMatrixLocation,!1,s),this._offsetMatrixLocation=r.getUniformLocation(this.program,"u_offsetMatrix"),r.uniformMatrix4fv(this._offsetMatrixLocation,!1,s),r.uniform1i(r.getUniformLocation(this.program,"lastMask"),4),this._weixin){let a=this.context.createShader(r.FRAGMENT_SHADER,pS),c=this.context.createShader(r.VERTEX_SHADER,mS);this._prePrograme=this.context.createProgram(c,a),r.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.uniform1i(r.getUniformLocation(this._prePrograme,"mask"),1)}yield this.initVisionTasks(e)})}initVisionTasks(e){return f(this,null,function*(){if(e.bg){if(this._visionTaskRegistry=yield window.VisionTaskRegistry.getInstance(),!window.VisionTaskRegistry||!this._visionTaskRegistry||!this._visionTaskRegistry.visionWasm)throw new Error("Virtual background assets not found. Please redeploy the assets of the npm package.");if(this._visionTaskRegistry.video=this.image,this._selfieSegmentationHash=yield this._visionTaskRegistry.register(window.VisionTaskType.ImageSegmenter,{canvas:this.context._canvas}),this._enableFaceCentering)try{this._visionTaskRegistry.models.has(window.VisionTaskType.FaceDetector)||(yield this._visionTaskRegistry.preloadModels([window.VisionTaskType.FaceDetector]));let t=yield this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector);if(!t)return;this._centerFace=new jc(this.wasm.vbMode,t,this._visionTaskRegistry,this.context.log)}catch(t){this.log.error("Face detector model not found. Please redeploy the assets of the npm package.")}}})}onPredict(e){let t=this.context.ctx;this._weixin&&(this._lastMaskTexture||(this._lastMaskTexture=this.createTexture(this.image),this._lastMaskFbo=this.createFramebuffer(this._lastMaskTexture))),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),this.useTexture(),this.bindMaskTexture(e),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this._bgTexture||null),t.activeTexture(t.TEXTURE3),t.bindTexture(t.TEXTURE_2D,this._waterMarkTexture||null),this.useBufferFrame(),this._segmentationMask=e,this.totalFrames++,this.centerFace(),yt(this.wasm.rotation)&&this.resize(this.image.height,this.image.width),t.drawArrays(t.TRIANGLE_STRIP,0,4)}bindMaskTexture(e){let t=this.context.ctx;if(!e.confidenceMasks)return;let r=e.confidenceMasks[0].getAsWebGLTexture();t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,r),e.close()}onFirstFrame(){this.waitingFirstFrame=!1;let e=this.context.ctx;this.useTexture(),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.image)}render(e){let t=this.context.ctx,{image:r}=this;this.tryVideoFrameCallback();let{videoWidth:s,videoHeight:n}=r;if(s===0||n===0||!this.available)return!1;r.width=s,r.height=n;let a=!1;if(this.totalFrames)this.useTexture(),a=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(this.program)this.useTexture();else return!1;a=this._textureValid,this._textureValid=!0}this.width!==s||this.height!==n||!a?(this.resize(s,n),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r)):t.texSubImage2D(t.TEXTURE_2D,0,0,0,t.RGBA,t.UNSIGNED_BYTE,r),this._weixin&&(t.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask&&(this.bindMaskTexture(this._segmentationMask),t.bindFramebuffer(t.FRAMEBUFFER,this._lastMaskFbo||null)),t.drawArrays(t.TRIANGLE_STRIP,0,4),this.useTexture(),this._segmentationMask?t.copyTexSubImage2D(t.TEXTURE_2D,0,0,0,0,0,s,n):t.copyTexImage2D(t.TEXTURE_2D,0,t.RGBA,0,0,s,n,0));try{if(this._selfieSegmentationHash&&this._visionTaskRegistry){let c=this._visionTaskRegistry.getResult(this._selfieSegmentationHash);this.onPredict(c)}}catch(c){this._onAbort&&this._onAbort(c)}return this.totalFrames||(t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this._bgTexture||null),t.activeTexture(t.TEXTURE3),t.bindTexture(t.TEXTURE_2D,this._waterMarkTexture||null),t.drawArrays(t.TRIANGLE_STRIP,0,4)),this._visionTaskRegistry&&this._visionTaskRegistry.resetHashResults(),!1}centerFace(){if(!this._centerFace||!this._enableFaceCentering)return;let e=this.context.ctx;this._centerFace.aspectRatio=e.canvas.width/e.canvas.height,this._centerFace.actionCentering(this.image);let{current:t,offset:r}=this._centerFace;if(t&&(this.wasm.vbMode===1&&this.drawImage(t.sx,t.sy,t.cropWidth,t.cropHeight),r&&this.wasm.vbMode===2)){if(!this._mat4)return;let s=this._mat4.create(),{scaleRatio:n=1,scaleOffsetX:a=0,scaleOffsetY:c=0}=t;this._mat4.fromTranslation(s,[-r.offsetX/e.canvas.width+a,c,0]),this._mat4.scale(s,s,[n,n,1]),e.uniformMatrix4fv(this._offsetMatrixLocation,!1,s)}}drawImage(e,t,r,s){let n=this.context.ctx;if(!this._mat4)return;let{width:a,height:c}=n.canvas,l=this._mat4.create();this._mat4.fromTranslation(l,[e/a,1-(t+s)/c,0]),this._mat4.scale(l,l,[r/a,s/c,1]),n.uniformMatrix4fv(this._textureMatrixLocation,!1,l)}close(){var t;super.close();let e=this.context.ctx;this._bgTexture&&e.deleteTexture(this._bgTexture),this._waterMarkTexture&&e.deleteTexture(this._waterMarkTexture),this._lastMaskTexture&&e.deleteTexture(this._lastMaskTexture),this._lastMaskFbo&&e.deleteFramebuffer(this._lastMaskFbo),this._prePrograme&&e.deleteProgram(this._prePrograme),(t=this.wasm)==null||t.close()}};var zc=class extends Ze{constructor(e){super(e,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:e.log,fragmentShaderSource:`
118
+ }`,Hu=class extends hr{constructor(e,r){super(e,r.input,{name:"vb",create2d:!1,useDefaultProgram:!1,useFbo:!1,createTexture:!0,width:r.width,height:r.height,logger:e.log});l(this,"_bgTexture");l(this,"_waterMarkTexture");l(this,"_lastMaskTexture");l(this,"_lastMaskFbo");l(this,"_textureValid",!1);l(this,"_selfieTextureValid",!1);l(this,"_selfieSegmentationHash");l(this,"wasm");l(this,"_prePrograme");l(this,"_segmentationMask");l(this,"_weixin",!1);l(this,"_centerFace");l(this,"_textureMatrixLocation");l(this,"_offsetMatrixLocation");l(this,"_enableFaceCentering",!1);l(this,"_mat4");l(this,"_onAbort");l(this,"_visionTaskRegistry");this.init(r).catch(o=>{e.log.error(o),e.destroy(new de({code:q.VIDEO_MANAGER_ERROR,extraCode:6,message:`init vb node error ${o.message||o}`}))})}init(e){return y(this,null,function*(){var n;let r=e.Wasm,o=this.context.ctx;if(e.mat4&&(this._mat4=e.mat4),this._enableFaceCentering=(n=e.enableFaceCentering)!=null?n:!1,this.wasm=new r.AllIn1(o),this.wasm.blurRadius=e.blurRadius||3,this.wasm.mirror=!!e.mirror,this.wasm.rotation=e.rotation||0,this.wasm.vbMode=e.bg==="blur"?1:e.bg instanceof HTMLImageElement?2:e.bg==="green"?3:0,this._onAbort=e.onAbort,e.waterMark){let{x:a,y:u,width:m,height:h}=e.waterMark;this.wasm.setWaterMark(a,u,m,h)}if(e.beautyParams){let{beauty:a,brightness:u,ruddy:m}=e.beautyParams;this.wasm.setBeauty(a,u,m,e==null?void 0:e.width,e==null?void 0:e.height)}this.program=this.wasm.init(),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),o.uniform1i(o.getUniformLocation(this.program,"mask"),1),e.bg instanceof HTMLImageElement&&(o.uniform1i(o.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(e.bg)),e.waterMark&&(o.uniform1i(o.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(e.waterMark.image));let s=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);if(this._textureMatrixLocation=o.getUniformLocation(this.program,"u_textureMatrix"),o.uniformMatrix4fv(this._textureMatrixLocation,!1,s),this._offsetMatrixLocation=o.getUniformLocation(this.program,"u_offsetMatrix"),o.uniformMatrix4fv(this._offsetMatrixLocation,!1,s),o.uniform1i(o.getUniformLocation(this.program,"lastMask"),4),this._weixin){let a=this.context.createShader(o.FRAGMENT_SHADER,Vy),u=this.context.createShader(o.VERTEX_SHADER,Uy);this._prePrograme=this.context.createProgram(u,a),o.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),o.uniform1i(o.getUniformLocation(this._prePrograme,"mask"),1)}yield this.initVisionTasks(e)})}initVisionTasks(e){return y(this,null,function*(){if(e.bg){if(this._visionTaskRegistry=yield window.VisionTaskRegistry.getInstance(),!window.VisionTaskRegistry||!this._visionTaskRegistry||!this._visionTaskRegistry.visionWasm)throw new Error("Virtual background assets not found. Please redeploy the assets of the npm package.");if(this._visionTaskRegistry.video=this.image,this._selfieSegmentationHash=yield this._visionTaskRegistry.register(window.VisionTaskType.ImageSegmenter,{canvas:this.context._canvas}),this._enableFaceCentering)try{this._visionTaskRegistry.models.has(window.VisionTaskType.FaceDetector)||(yield this._visionTaskRegistry.preloadModels([window.VisionTaskType.FaceDetector]));let r=yield this._visionTaskRegistry.register(window.VisionTaskType.FaceDetector);if(!r)return;this._centerFace=new Bu(this.wasm.vbMode,r,this._visionTaskRegistry,this.context.log)}catch(r){this.log.error("Face detector model not found. Please redeploy the assets of the npm package.")}}})}onPredict(e){let r=this.context.ctx;this._weixin&&(this._lastMaskTexture||(this._lastMaskTexture=this.createTexture(this.image),this._lastMaskFbo=this.createFramebuffer(this._lastMaskTexture))),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),this.useTexture(),this.bindMaskTexture(e),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this._bgTexture||null),r.activeTexture(r.TEXTURE3),r.bindTexture(r.TEXTURE_2D,this._waterMarkTexture||null),this.useBufferFrame(),this._segmentationMask=e,this.totalFrames++,this.centerFace(),mr(this.wasm.rotation)&&this.resize(this.image.height,this.image.width),r.drawArrays(r.TRIANGLE_STRIP,0,4)}bindMaskTexture(e){let r=this.context.ctx;if(!e.confidenceMasks)return;let o=e.confidenceMasks[0].getAsWebGLTexture();r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,o),e.close()}onFirstFrame(){this.waitingFirstFrame=!1;let e=this.context.ctx;this.useTexture(),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.image)}render(e){let r=this.context.ctx,{image:o}=this;this.tryVideoFrameCallback();let{videoWidth:s,videoHeight:n}=o;if(s===0||n===0||!this.available)return!1;o.width=s,o.height=n;let a=!1;if(this.totalFrames)this.useTexture(),a=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(this.program)this.useTexture();else return!1;a=this._textureValid,this._textureValid=!0}this.width!==s||this.height!==n||!a?(this.resize(s,n),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,o)):r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,o),this._weixin&&(r.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask&&(this.bindMaskTexture(this._segmentationMask),r.bindFramebuffer(r.FRAMEBUFFER,this._lastMaskFbo||null)),r.drawArrays(r.TRIANGLE_STRIP,0,4),this.useTexture(),this._segmentationMask?r.copyTexSubImage2D(r.TEXTURE_2D,0,0,0,0,0,s,n):r.copyTexImage2D(r.TEXTURE_2D,0,r.RGBA,0,0,s,n,0));try{if(this._selfieSegmentationHash&&this._visionTaskRegistry){let u=this._visionTaskRegistry.getResult(this._selfieSegmentationHash);this.onPredict(u)}}catch(u){this._onAbort&&this._onAbort(u)}return this.totalFrames||(r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this._bgTexture||null),r.activeTexture(r.TEXTURE3),r.bindTexture(r.TEXTURE_2D,this._waterMarkTexture||null),r.drawArrays(r.TRIANGLE_STRIP,0,4)),this._visionTaskRegistry&&this._visionTaskRegistry.resetHashResults(),!1}centerFace(){if(!this._centerFace||!this._enableFaceCentering)return;let e=this.context.ctx;this._centerFace.aspectRatio=e.canvas.width/e.canvas.height,this._centerFace.actionCentering(this.image);let{current:r,offset:o}=this._centerFace;if(r&&(this.wasm.vbMode===1&&this.drawImage(r.sx,r.sy,r.cropWidth,r.cropHeight),o&&this.wasm.vbMode===2)){if(!this._mat4)return;let s=this._mat4.create(),{scaleRatio:n=1,scaleOffsetX:a=0,scaleOffsetY:u=0}=r;this._mat4.fromTranslation(s,[-o.offsetX/e.canvas.width+a,u,0]),this._mat4.scale(s,s,[n,n,1]),e.uniformMatrix4fv(this._offsetMatrixLocation,!1,s)}}drawImage(e,r,o,s){let n=this.context.ctx;if(!this._mat4)return;let{width:a,height:u}=n.canvas,m=this._mat4.create();this._mat4.fromTranslation(m,[e/a,1-(r+s)/u,0]),this._mat4.scale(m,m,[o/a,s/u,1]),n.uniformMatrix4fv(this._textureMatrixLocation,!1,m)}close(){var r;super.close();let e=this.context.ctx;this._bgTexture&&e.deleteTexture(this._bgTexture),this._waterMarkTexture&&e.deleteTexture(this._waterMarkTexture),this._lastMaskTexture&&e.deleteTexture(this._lastMaskTexture),this._lastMaskFbo&&e.deleteFramebuffer(this._lastMaskFbo),this._prePrograme&&e.deleteProgram(this._prePrograme),(r=this.wasm)==null||r.close()}};var Wu=class extends Wt{constructor(e){super(e,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:e.log,fragmentShaderSource:`
87
119
  precision highp float;
88
120
  uniform sampler2D ySampler;
89
121
  uniform sampler2D uSampler;
@@ -108,15 +140,4 @@ void main() {
108
140
  void main() {
109
141
  gl_Position = vertexPos;
110
142
  textureCoord = texturePos;
111
- }`});d(this,"yTextureRef");d(this,"uTextureRef");d(this,"vTextureRef");d(this,"Y");d(this,"U");d(this,"V");this.useProgram();let t=this.context.ctx;t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=e._canvas}_initTexture(e,t){let r=this.context.ctx,s=r.createTexture();return r.bindTexture(r.TEXTURE_2D,s),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.bindTexture(r.TEXTURE_2D,null),r.uniform1i(r.getUniformLocation(this.program,e),t),s}render(e){let t=this.context.ctx,r=this.width,s=this.height;return this.useProgram(),t.viewport(0,0,r,s),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.yTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r,s,t.LUMINANCE,t.UNSIGNED_BYTE,this.Y),t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,this.uTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r/2,s/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.U),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this.vTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r/2,s/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,t){super.resize(e,t);let r=this.context.ctx;r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e,t,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null)}};var Eh=[o=>{o.codec="avc1.42e01f"},o=>{delete o.hardwareAcceleration}],Df=(o,i)=>{switch(o){case"webCodecs":return i==="videoFrame"?514705:514706;case"wasm":return i==="webgl"?514707:i==="videoFrame"?514708:514709}throw new Error("decoder type not supported")};function fS(o){return o[0]===0&&o[1]===0&&o[2]===0&&o[3]===1}var _S=0,Qc=class{constructor(i){d(this,"id",_S++);d(this,"trackDoneOB");d(this,"startOB");d(this,"stopOB");d(this,"decoder");d(this,"videoContext");d(this,"gop",0);d(this,"gop_helper",0);d(this,"waitFirstKeyFrame",!0);d(this,"startTimestamp",0);d(this,"startTime",0);d(this,"startPerformanceTime",0);d(this,"inputFrameCount",0);d(this,"decodedFrameCount",0);d(this,"decodeFrameCount",0);d(this,"downgradeLevel",0);d(this,"lastDowngradeTime",0);d(this,"lastFrameDiff",0);d(this,"lastDecodeFrameTimestamp",0);d(this,"config");d(this,"gop_before_configure",[]);d(this,"videoElement");d(this,"type","wasm");d(this,"goodType");d(this,"renderer","2d");d(this,"wasmOption");d(this,"createDecoder");d(this,"_decodeSink");d(this,"isReported",!1);d(this,"track");d(this,"stateChangeOB");d(this,"failedReason");let{track:e,createDecoder:t}=i;if(this.stateChangeOB=nt(),this.track=e,this.createDecoder=t,this.wasmOption={yuvMode:i.renderer==="webgl",wasmPath:i.wasmPath,workerMode:i.workerMode,canvas:i.canvas},this.config=i.config,this.videoElement=i.videoElement,this.renderer=i.renderer,this.trackDoneOB=me(e.availableState,$.OFF),this.stopOB=nt(),i.type==="auto"){switch(i.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}else this.type=i.type;this.changeRenderer(this.renderer),ue(this.stateChangeOB,vu((r,s)=>(r!==s&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:r,state:s}),s),"INITIALIZED"),He(this.stopOB),be()),this.start()}start(i=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=ue(this.pipe(this.track),He(this.stopOB),Qi());ue(e,be(()=>{this.track.stat.framesDecoded++},t=>{if(this.track.log.error(`${this.id} play failed: ${t} retryCount: ${i}`),N.addFailedEvent({key:Df(this.type,this.renderer),error:t}),i>4)this.failedReason=t,this.stateChangeOB.next("FAILED"),N.addFailedEvent({key:514704});else{if(this.goodType){this.start(i);return}switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.start(i+1)}},()=>{this.track.log.warn(`${this.id} decoderOB completed`),N.addSuccessEvent({key:Df(this.type,this.renderer)}),N.addSuccessEvent({key:514704})})),ue(e,Yi(1),be(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.start()}close(i){this.stopOB.next(i)}changeRenderer(i){this.renderer=i,this.renderer==="videoFrame"&&!js()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(i,e=!1){var a,c;if(this.failedReason)return;this.inputFrameCount++;let t=new Uint8Array(i.data);if(!fS(t)||t.length<5)return this.stateChangeOB.next("FAILED"),this.close(`not h26x frame ${t.subarray(0,5)}`),i;let r=t[4]&31,s=!1;switch(r){case 5:case 7:s=!0;break}if(((a=this.decoder)==null?void 0:a.state)!=="configured")return this.track.log.debug(`not configured ${this.inputFrameCount}`),s&&(this.gop_before_configure=[]),this.gop_before_configure.push({data:i.data,timestamp:i.timestamp,type:i.type}),i;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(l=>this.decode(l,!0)),this.gop_before_configure=[]);let{timestamp:n}=i;if(s?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame)if(s)this.waitFirstKeyFrame=!1,this.startTimestamp=n,this.startTime=Date.now(),this.startPerformanceTime=P();else{this.track.log.debug(`wait first key frame ${this.inputFrameCount} ${t.subarray(0,5).join(" ")}`);return}switch(this.downgradeLevel){case 0:break;case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}(this.decodeFrameCount<10||this.decodeFrameCount%500===0)&&this.track.log.debug(`decode ${this.decodeFrameCount} gop: ${this.gop} ${n} ${(c=i.getMetadata)==null?void 0:c.call(i).rtpTimestamp}`),this.decodeFrameCount++,this.lastDecodeFrameTimestamp=n,this.decoder.decode({data:i.data,type:i.type,timestamp:this.lastDecodeFrameTimestamp});return}return i}checkDowngradeByFrameDiff(){let i=this.downgradeLevel,e=this.decodeFrameCount-this.decodedFrameCount;e>this.lastFrameDiff?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):e<=this.lastFrameDiff&&this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==i&&this.track.log.debug(`downgrade level ${i} to ${this.downgradeLevel} ${this.decodeFrameCount} frameDiff: ${e}, lastFrameDiff: ${this.lastFrameDiff}`),this.lastFrameDiff=e,this.lastDowngradeTime=Date.now()}checkDowngradeByTimestampDiff(i){let e=this.downgradeLevel;this.lastDecodeFrameTimestamp-i>9e4?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==e&&this.track.log.debug(`downgrade level ${e} to ${this.downgradeLevel}`)}pipe(i){return e=>f(this,null,function*(){this._decodeSink=e;let t,r=i.mediaTrack;e.defer(()=>{var a;r&&(i.player.setCanvas(),i.setInputMediaStreamTrack(r)),t==null||t.close(),(a=this.videoContext)==null||a.destroy(),delete this._decodeSink});let{renderer:s,type:n}=this;i.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`);try{switch(n){case"wasm":t=this.createDecoder(n,this.wasmOption);break;case"webCodecs":for(let c=0;c<=Eh.length;c++){let{supported:l}=yield VideoDecoder.isConfigSupported(this.config);if(l)break;if(c===Eh.length){e.error(3);return}Eh[c](this.config)}t=this.createDecoder(n);break;default:throw new Error("not supported yet")}let a=0;if(t.on("videoFrame",c=>{this.decodedFrameCount++,a++,(a<=10||a%500===0)&&i.log.debug(`frame ${a} ${this.decodedFrameCount}/${this.decodeFrameCount} decoded ${c.timestamp}`),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(c.timestamp)),e.next(c)}),t.on("error",c=>{i.log.error(c),e.error(n==="webCodecs"?4:8)}),yield t.initialize(this.videoElement),!this._decodeSink)return;if(t.configure(this.config),n==="wasm"&&s==="webgl"){this.videoContext=new we({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create(),this.videoContext.on(we.UNAVAILABLE,l=>{i.log.error(l),e.error(7)});let c=new zc(this.videoContext);t.on("videoCodecInfo",l=>c.resize(l.width,l.height)),t.on("videoFrame",l=>{({y:c.Y,u:c.U,v:c.V}=l),this.downgradeLevel===1?this.decodedFrameCount%2===0&&c.render(this.decodedFrameCount):c.render(this.decodedFrameCount)}),i.source=c,i.player.setCanvas(this.videoContext._canvas,2)}else if(s==="videoFrame"){i.player.setCanvas();let c=new MediaStreamTrackGenerator({kind:"video"}),l=c.writable.getWriter();i.setInputMediaStreamTrack(c),t.on("videoFrame",u=>l.write(u))}else{this.videoContext=new Fe({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create({alpha:!1});let c=this.videoContext.createVideoImageSource();t.on("videoFrame",u=>{try{c.image=u,c.update()}catch(h){delete this.goodType,i.log.error(h),e.error(11)}});let l=new Yr(this.videoContext,{name:"remotePlayer",logger:i.log});c.connect(l),i.source=c,i.player.setCanvas(this.videoContext._canvas,2)}this.decoder=t}catch(a){i.log.error(a),e.error(n==="webCodecs"?2:6)}})}};var kn=class extends Mf.EventEmitter{constructor(e){super();this.room=e;d(this,"videoContext");d(this,"_glVideoContext");d(this,"_2dVideoContext");d(this,"destination");d(this,"smallVideoContext");d(this,"smallDestination");d(this,"smallTrackSource");d(this,"smallImageSource");d(this,"_isMirror",!1);d(this,"_rotation",0);d(this,"cameraTrack");d(this,"cameraNode");d(this,"transformNode");d(this,"mixNode");d(this,"screenTrack");d(this,"screenNode");d(this,"selfModel",!1);d(this,"blurRadius",3);d(this,"arTrack");d(this,"_enableFaceCentering",!1);d(this,"onAbort");d(this,"Wasm");d(this,"waterMarkNode");d(this,"_waterMarkOption");d(this,"watermarkImageList",[]);d(this,"_beautyParams");d(this,"isUsingArTrack",!1);d(this,"mixTrack");d(this,"_isMixScreen",!1);d(this,"_virtualBackground");d(this,"_virtualBackgroundAbortCallback");d(this,"virtualBackgroundInstance");d(this,"_bgAssetPath");d(this,"log",b.createLogger({id:"vm"}));d(this,"_mat4");d(this,"_checkId",0);d(this,"_use2d",!1);d(this,"_autoSwitchRenderMode",!0);d(this,"encodePipeline",[]);d(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new Fe({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get smallMode(){var e;return((e=this.room)==null?void 0:e.smallMode)||"canvas"}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get _isRotate(){return this._rotation!==0}get _isTransform(){return this._isMirror||this._isRotate}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(e){if(this._autoSwitchRenderMode=e==="auto",this._autoSwitchRenderMode)return;let t=e==="2d";this._use2d!==t&&(this._use2d=t,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get cameraResolution(){var r;let{width:e,height:t}=((r=this.cameraTrack)==null?void 0:r.settings)||{};return yt(this._rotation)?{width:t,height:e}:{width:e,height:t}}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new Fe({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new we({frameRate:15,logger:this.log,name:"m"});else if(this._glVideoContext.available)return this._glVideoContext;return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(),this._glVideoContext.on(we.UNAVAILABLE,e=>{var t;this.emit("error",e),this.log.warn("video context unavailable",e),(t=this._virtualBackgroundAbortCallback)==null||t.call(this,e),this.update().catch(r=>{this.log.error(r)})})}catch(e){this.emit("error",e)}}initVirtualBackground(e,t){this.onAbort=e,this._mat4=t}enablePrintDetail(e=2e3){this._checkId=re.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,t;(e=this._2dVideoContext)==null||e.destroy(),(t=this._glVideoContext)==null||t.destroy(),this.smallVideoContext.destroy(),re.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(ci||this._isMixScreen||this._isTransform||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",t){let r=e==="videoCtxGl"?512700:512701;t?N.addFailedEvent({key:r,error:t}):N.addSuccessEvent({key:r})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let t=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(t)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new we({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var e;return(e=this.smallDestination)==null?void 0:e.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var e;return(e=this.cameraTrack)==null?void 0:e.mediaTrack}setSmallVideo(e,t){if(this.smallMode!=="api")if(e){if(!this.smallVideoContext.available){if(this.smallVideoContext.create({alpha:!1}),!this.smallVideoContext.available)return;this.smallDestination=new _c(this.smallVideoContext,e,this.log),this.smallVideoContext.on(we.UNAVAILABLE,r=>{this.log.warn("small video context lost",r)})}if(this.smallVideoContext.frameRate=e.frameRate,this.smallDestination.resolution=e,t)this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=t:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(t),this.smallImageSource.resize(t.width,t.height),this.smallImageSource.connect(this.smallDestination));else if(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource)this.smallTrackSource.replaceTrack(this.initialTrack);else{this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource");let{width:r,height:s}=this.cameraTrack.settings;this.smallTrackSource.resize(r,s),this.smallTrackSource.connect(this.smallDestination)}}else this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource)}_setMainOutput(e){var t;try{let r=this.cameraTrack,{small:s,player:n}=r;ci&&n.setCanvas(e);let a=e&&((t=this.destination)==null?void 0:t.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),a=this.arTrack),this.log.info(`set main output ${a?a.label:"no output track"}`),this.setSmallVideo(s,e),r.setOutputMediaStreamTrack(a)}catch(r){this.log.error("set main output failed",r)}}update(e=!1){return f(this,null,function*(){var s;if(!this.cameraTrack||!this.initialTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:t,profile:r}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams)this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),Je===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof Dt?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof Dt?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(t.width,t.height);else if(e&&this.cameraNode&&this.destination)this.cameraNode.replaceTrack(this.initialTrack);else{this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new fc(this.videoContext,{name:"mainDestination",logger:this.log});let{width:n,height:a}=this.cameraResolution,c=yield this.getWatermarkImage(n,a);this._waterMarkOption={x:0,y:0,width:c.width,height:c.height,image:c},this.cameraNode=new Xc(this.videoContext,{input:this.initialTrack,width:n,height:a,mirror:this._isMirror,rotation:this._rotation,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,Wasm:this.Wasm,enableFaceCentering:this._enableFaceCentering,onAbort:this.onAbort,mat4:this._mat4}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute()}if(this.videoContext.frameRate=r.frameRate,this._use2d){let n=this.cameraNode;if(n.disconnect(),this._isTransform&&(this.transformNode?(this.transformNode.mirror=this._isMirror,this.transformNode.rotation=this._rotation):this.transformNode=new Mt(this.videoContext,this.log,this._isMirror,this._rotation),n=n.connect(this.transformNode),n.disconnect(),this.log.info(`start mirror ${this._isMirror} rotate ${this.rotation}`)),this.mixNode&&this.mixNode.close(),delete this.mixNode,this._isMixScreen||this._hasWaterMark){if(this.mixNode=new es(this.videoContext,this.log),n.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption)this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y;else if(this.waterMarkNode){let{width:c,height:l}=this.cameraResolution;this.waterMarkNode.image=yield this.getWatermarkImage(c,l),c&&l&&this.waterMarkNode.resize(c,l)}(s=this.waterMarkNode)==null||s.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&(this.screenNode||(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource"),this.screenNode.resize(this.screenTrack.settings.width,this.screenTrack.settings.height)),this.screenNode.shouldUpdate=!1,this.screenNode.connect(this.mixNode,{zIndex:0})),n=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)}n.connect(this.destination)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}clearLastFrame(){var e;this.destination&&((e=this.destination.ctx2d)==null||e.clearRect(0,0,this.destination.width,this.destination.height))}changeInput(e){var t,r,s,n,a;if(e instanceof Ke)return this.log.info("change screen input",(t=e.mediaTrack)==null?void 0:t.label),this.setScreenTrack(e);if(e instanceof Be)return this.log.info("change video input",(r=e.mediaTrack)==null?void 0:r.label),this.setCameraTrack(e);if(e instanceof Ci){this.log.info("change remote input",(s=e.mediaTrack)==null?void 0:s.label);let c=e.mediaTrack;return e.setOutputMediaStreamTrack(c)}if(e instanceof Kr)return this.log.info("change mix input",(n=e.outMediaTrack)==null?void 0:n.label),this.setMixTrack(e);this.log.warn("change unknown input",(a=e.mediaTrack)==null?void 0:a.label)}removeInput(e){var t;e instanceof Ke?((t=this.screenNode)==null||t.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof Be?this._isMixScreen?(delete this.cameraNode,this.cameraTrack._inputTrack=null,this.update()):(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof Ci?e.source&&e.source.context.destroy():e instanceof Kr&&(delete this.mixTrack,this.update())}setMixTrack(e){this.mixTrack=e}setCameraTrack(e){return this.cameraTrack=e,this.update(!0)}setScreenTrack(e){return f(this,null,function*(){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):yield this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)})}getWatermarkImage(e,t){return f(this,null,function*(){let r=document.createElement("canvas");t&&e&&(r.height=t,r.width=e);let s=r.getContext("2d");if(!s)throw new v({code:A.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((n,a)=>n.zIndex-a.zIndex),this.watermarkImageList.forEach(({image:n,x:a,y:c,width:l,height:u})=>{s.drawImage(n,a,c,l,u)}),So(r.toDataURL())})}pushWaterMarkImageList(e){let{type:t}=e;this.watermarkImageList.some(s=>s.imageUrl===e.imageUrl&&s.height===e.height&&s.width===e.width&&s.x===e.x&&s.y===e.y&&s.type===e.type&&s.zIndex===e.zIndex)||((t==="mute"||t==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(s=>s.type!==t)),this.watermarkImageList.push(e))}setBeautyParams(e){return f(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return f(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return f(this,null,function*(){let t;try{t=yield So((e==null?void 0:e.imageElement)||e.imageUrl)}catch(h){throw new v({code:A.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:r=0,y:s=0,width:n=t.width,height:a=t.height,type:c="watermark",zIndex:l=2}=e;this.watermarkImageList.some(h=>h.type===c)?(this.watermarkImageList=this.watermarkImageList.filter(h=>h.type!==c),this.pushWaterMarkImageList({x:r,y:s,width:n,height:a,image:t,zIndex:l,type:c,imageUrl:e.imageUrl}),t=yield this.getWatermarkImage(this.cameraResolution.width,this.cameraResolution.height),this._waterMarkOption={x:0,y:0,width:t.width,height:t.height,image:t},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(t.width,t.height),this.waterMarkNode.image=t):this.update()):(this.pushWaterMarkImageList({x:r,y:s,width:n,height:a,image:t,zIndex:l,type:c,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(h,m)=>h==="imageUrl"?void 0:m))})}deleteWatermark(e="watermark"){return f(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(t=>t.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(t,r)=>t==="imageUrl"?void 0:r)),yield this.freshWatermark()})}freshWatermark(){return f(this,null,function*(){var s;(s=this.waterMarkNode)==null||s.close(),delete this.waterMarkNode,delete this._waterMarkOption;let{width:e,height:t}=this.cameraResolution,r=yield this.getWatermarkImage(e,t);this._waterMarkOption={x:0,y:0,width:r.width,height:r.height,image:r},this.update()})}setVirtualBackground(e){return f(this,null,function*(){var t;if(!e)delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;else{if(e.onAbort&&(this._virtualBackgroundAbortCallback=e.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=e.assetPath,e.type==="image"?this._virtualBackground=yield So(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type),this._enableFaceCentering=(t=e.enableFaceCentering)!=null?t:this._enableFaceCentering}if(this.log.info(`${this._virtualBackground?"start":"stop"} virtual background, ${(e==null?void 0:e.type)||""}, ${this.blurRadius||""}`),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new v({code:A.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var t;this._isMixScreen=e,this._isMixScreen||((t=this.screenNode)==null||t.close(),delete this.screenNode),this.update()}set mirror(e){var t;this._isMirror!==e&&(this._isMirror=e,this._isTransform||((t=this.transformNode)==null||t.close(),delete this.transformNode),this.update())}get mirror(){return this._isMirror}set rotation(e){var t;this._rotation!==e&&(this._rotation=e,this._isTransform||((t=this.transformNode)==null||t.close(),delete this.transformNode),this.update())}get rotation(){return this._rotation}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return f(this,null,function*(){var e;(e=this.cameraTrack)!=null&&e.mediaTrack&&(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var e;this.isUsingArTrack=!1,(e=this.arTrack)==null||e.stop(),this.arTrack=void 0,this.update()}createDecodeContext(e){return new Qc(e)}clear(){var e;(e=this.videoContext)==null||e.disconnect(),delete this.destination,delete this.cameraNode,delete this.transformNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};M([Ya(function(e){this.log.error("update failed",e)})],kn.prototype,"update",1);var gS=0;var Yc=class extends ${constructor(e){super("room");d(this,"seq",++gS);d(this,"sdkAppId");d(this,"userId");d(this,"userSig");d(this,"privateMapKey");d(this,"latencyLevel");d(this,"tinyId");d(this,"scene");d(this,"roomId");d(this,"useStringRoomId");d(this,"role","anchor");d(this,"joinParams",null);d(this,"localTracks",new Set);d(this,"enableAutoPlayDialog",!0);d(this,"autoReceiveAudio",!0);d(this,"autoReceiveVideo",!0);d(this,"proxy_ws");d(this,"proxy_wt");d(this,"proxy_unified");d(this,"checkSystemResult",{result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0,isH265EncodeSupported:!0,isH265DecodeSupported:!0}});d(this,"keyPointManager");d(this,"audioManager");d(this,"videoManager");d(this,"callDurationCalculator");d(this,"badCaseDetector");d(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});d(this,"videoDecodeFallbackType");d(this,"smallMode","canvas");d(this,"_isUsingCachedSchedule",!1);d(this,"_log",b.createLogger({id:`r${this.seq}`}));d(this,"_joinedTimestamp",0);d(this,"_sdkType");d(this,"heartbeatReport");d(this,"quality");d(this,"enableSEI");d(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,de(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),de(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),de(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new bf({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new Nf({room:this}),this.badCaseDetector=new vf({room:this}),this.audioManager=new Ec(this),this.videoManager=new kn(this)}get scriptTransformWorker(){}get isMainStreamPublished(){for(let e of this.localTracks)if(e.mediaType&4)return!0;return!1}get isAuxStreamPublished(){for(let e of this.localTracks)if(e.mediaType&2)return!0;return!1}get hasAuxStream(){for(let e of this.remotePublishedUserMap.values())if(e.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainVideoTrack(){for(let e of this.localTracks)if(e.mediaType&4)return e;return null}get localAuxVideoTrack(){for(let e of this.localTracks)if(e.mediaType&2)return e;return null}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(e){return f(this,null,function*(){return this.publish(e)})}removeTrack(e){return f(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return f(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(te(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(ze(e)){let{websocketProxy:t,webtransportProxy:r,loggerProxy:s,scheduleProxy:n,unifiedProxy:a}=e;this.proxy_ws=t,this.proxy_wt=r,this.proxy_unified=a,a?(bc([a,a]),Ar(`https://${a}`)):(s&&Ar(s),n&&bc(n))}E.once(C.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:Ri.main,sched_back_domain:Ri.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return f(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(t=>{e[t.userId]=t.remoteAudioTrack.stat}),e})}getTransportStats(){return f(this,null,function*(){var t;let e={rtt:((t=this.quality)==null?void 0:t.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let r of this.quality.downlinkInfo)e.downlinksRTT[r.userId]=r.rtt;return e})}getRemoteVideoStats(){return f(this,arguments,function*(e="main"){let t={};return this.remotePublishedUserMap.forEach(r=>{let s=e==="auxiliary"?r.remoteAuxiliaryTrack:r.remoteVideoTrack;t[r.userId]=s.stat}),t})}checkDestroy(){if(this.isDestroyed)throw new v({code:A.INVALID_OPERATION,message:V({key:L.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(Ue.INVALID_DESTROY),new v({code:A.INVALID_OPERATION,message:V({key:L.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,E.emit(C.ROOM_DESTROY,{room:this})}schedule(e,t){return f(this,null,function*(){var s,n,a,c;let r=P();try{let{isCached:l,result:u,detailCost:h}=yield Fu({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:xe,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:t,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=l,this._log.info(`schedule cache:${+l} ${Rt(u,{keysToExclude:["username","credential"]})}`),l&&E.once(C.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=D(D({},this.scheduleResult),u),q((s=u.config)==null?void 0:s.retryCount)&&fd(u.config.retryCount),te((n=u.config)==null?void 0:n.loggerDomain)&&Ar(u.config.loggerDomain),this.videoDecodeFallbackType=((a=u.config)==null?void 0:a.videoDecodeFallback)||this.videoDecodeFallbackType,this.smallMode=((c=u.config)==null?void 0:c.smallMode)||this.smallMode,E.emit(C.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:h}),N.addSuccessEvent({key:521700,cost:P()-r})}catch(l){throw N.addFailedEvent({key:521700,error:l}),l}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}switchRoom(e){return Promise.reject()}isSwitchRoomSupported(){return!1}};var $f=Ge(it());var Sh=Ge(uh());var Of=o=>{let i=Ce(o),e={audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0};return i.media.forEach((t,r)=>{var s;if(t.ssrcs&&!T(t.ssrcs[0].id)){let n=Number(t.ssrcs[0].id),a=Number((s=t.ssrcs.filter(c=>c.attribute==="cname")[1])==null?void 0:s.id);switch(r){case 0:e.audioSsrc=n;break;case 1:e.bigVideoSsrc=n,e.bigVideoRtxSsrc=a;break;case 2:e.smallVideoSsrc=n,e.smallVideoRtxSsrc=a;break;case 3:e.auxVideoSsrc=n,e.auxVideoRtxSsrc=a;break}}}),e};function kf(o){var e;let i=[];for(let t=0;t<o.rtp.length;t++){if(["rtx","red","ulpfec"].includes(o.rtp[t].codec))continue;let r=o.fmtp.filter(s=>s.payload===o.rtp[t].payload)[0];i.push({payload:o.rtp[t].payload,codec:o.rtp[t].codec,fmtp:r?r.config:"",rate:o.rtp[t].rate,rtx:((e=o.rtp[t+1])==null?void 0:e.codec)==="rtx"?o.rtp[t+1].payload:0,rtcpfb:((o==null?void 0:o.rtcpFb)||[]).filter(s=>s.payload===o.rtp[t].payload).map(({type:s,subtype:n})=>({id:s,params:n?[n]:[]}))})}return i}function TS(){return f(this,null,function*(){let o=new RTCPeerConnection;o.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_RECVONLY});let i=yield o.createOffer();if(!i.sdp)return[];let e=Ce(i.sdp),t=kf(e.media[0]);return o.close(),t})}var wf=(o,i,e)=>f(void 0,null,function*(){var l;let t=Ce(o),r={ice:{ufrag:"",password:""},dtls:{hash:"",fingerprint:"",setup:""},audio:{codecs:[],extensions:[]},video:{codecs:[],decoders:[],extensions:[]},useDataChannel:!1};r.ice.ufrag=String(t.media[0].iceUfrag),r.ice.password=t.media[0].icePwd||"",t.fingerprint&&(r.dtls.hash=t.fingerprint.type,r.dtls.fingerprint=t.fingerprint.hash,r.dtls.setup=t.setup||""),t.media[0].fingerprint&&(r.dtls.hash=t.media[0].fingerprint.type,r.dtls.fingerprint=t.media[0].fingerprint.hash),r.dtls.setup=t.media[0].setup||"";let s=t.media[0],n=t.media[1];s.ext&&(r.audio.extensions=s.ext.map(u=>({id:u.value,uri:u.uri}))),n.ext&&(r.video.extensions=n.ext.map(u=>({id:u.value,uri:u.uri})));let a={codec:s.rtp[0].codec,fmtp:s.fmtp[0].config,payload:s.fmtp[0].payload,rate:s.rtp[0].rate,channels:s.rtp[0].encoding,rtcpfb:[],rtx:0};(l=s.rtcpFb)==null||l.forEach(({payload:u,type:h,subtype:m})=>{if(u===a.payload){let g={id:h,params:[]};m&&g.params.push(m),a.rtcpfb.push(g)}}),r.audio.codecs.push(a);let c=["h264","vp8","h265"];return i&&c.shift(),e&&c.pop(),r.video.codecs=[...kf(n)].filter(u=>c.includes(u.codec.toLocaleLowerCase())),r.video.decoders=(yield TS()).filter(u=>["h264","vp8","h265"].includes(u.codec.toLocaleLowerCase())),r}),xf=({serverAbility:o,clientAbility:i,offerSDP:e,enableCustomMessage:t})=>{let r=Ce(e),s={extmapAllowMixed:"extmap-allow-mixed",groups:r.groups,icelite:"ice-lite",media:[],msidSemantic:{semantic:"",token:"WMS"},name:"-",origin:{address:"127.0.0.1",username:"-",sessionId:String(Date.now()),sessionVersion:1,netType:"IN",ipVer:4},timing:{start:0,stop:0},version:0},n={candidates:o.candidates.map(a=>({component:1,foundation:"1",generation:0,ip:a.ip,port:a.port,priority:a.priority,transport:a.foundation,type:a.type})),connection:{version:4,ip:"0.0.0.0"},direction:p.TRANSCEIVER_DIRECTION_RECVONLY,ext:o.audio.extensions.map(a=>({value:a.id,uri:a.uri})),fingerprint:{type:o.dtls.hash,hash:o.dtls.fingerprint},fmtp:[{payload:o.audio.codecs[0].payload,config:o.audio.codecs[0].fmtp}],icePwd:o.ice.password,iceUfrag:o.ice.ufrag,mid:"0",payloads:String(o.audio.codecs[0].payload),port:r.media[0].port,protocol:r.media[0].protocol,type:p.AUDIO,setup:o.dtls.setup,rtcpFb:o.audio.codecs[0].rtcpfb.map(a=>({payload:o.audio.codecs[0].payload,type:a.id,subtype:a.params[0]})),rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[{payload:o.audio.codecs[0].payload,codec:o.audio.codecs[0].codec,rate:o.audio.codecs[0].rate,encoding:o.audio.codecs[0].channels}]};return s.media.push(n),[1,2,3].forEach(a=>{s.media.push(Ih({mid:a,serverAbility:o,clientAbility:i,parsedOffer:r}))}),t&&s.media.push(r.media.find(a=>a.mid==="dc")),wt(s)},Ih=({mid:o,serverAbility:i,clientAbility:e,parsedOffer:t,isDownlink:r=!1})=>{let s={candidates:i.candidates.map(n=>({component:1,foundation:"1",generation:0,ip:n.ip,port:n.port,priority:n.priority,transport:n.foundation,type:n.type})),connection:{version:4,ip:"0.0.0.0"},direction:p.TRANSCEIVER_DIRECTION_RECVONLY,ext:i.video.extensions.map(n=>({value:n.id,uri:n.uri})),fingerprint:{type:i.dtls.hash,hash:i.dtls.fingerprint},fmtp:[],icePwd:i.ice.password,iceUfrag:i.ice.ufrag,mid:String(o),payloads:"",port:t.media[0].port,protocol:t.media[0].protocol,type:p.VIDEO,setup:i.dtls.setup,rtcpFb:[],rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[]};if(r){let n=i.video.decoders;(!n||n.length===0)&&(n=i.video.codecs),(!n||n.length===0)&&(n=e.video.decoders),n.forEach(a=>{so(s,a)})}else{let n;i.useH265?n=i.video.codecs.findIndex(c=>c.codec.toLowerCase()==="h265"):n=i.video.codecs.findIndex(c=>c.codec.toLowerCase()===(i.useVp8?"vp8":"h264"));let a=i.video.codecs[n]||e.video.codecs[0];so(s,a)}return s},so=(o,i)=>{o.payloads=`${o.payloads} ${i.payload}`.trim(),o.fmtp.push({payload:i.payload,config:i.fmtp}),o.rtcpFb=[...o.rtcpFb||[],...i.rtcpfb.map(e=>({payload:i.payload,type:e.id,subtype:e.params[0]}))],o.rtp.push({payload:i.payload,codec:i.codec.toUpperCase(),rate:i.rate}),i.rtx&&(o.payloads=`${o.payloads} ${i.rtx}`,o.fmtp.push({payload:i.rtx,config:`apt=${i.payload}`}),o.rtp.push({payload:i.rtx,codec:"rtx",rate:i.rate}))};function ES(o){let i=new Set(["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"]);o.ext&&(o.ext=o.ext.filter(e=>!i.has(e.uri)))}function SS(o){if(!o.rtcpFb)return;let i=[];o.rtcpFb.forEach((e,t)=>{var r;i.push(e),o.rtcpFb&&((r=o.rtcpFb[t+1])==null?void 0:r.payload)!==e.payload&&e.type!=="rrtr"&&i.push({payload:e.payload,type:"rrtr"})}),o.rtcpFb=i}function IS(o){o.type===p.VIDEO&&o.fmtp&&o.fmtp.forEach(i=>{i.config.includes("apt")||(i.config+=";sps-pps-idr-in-keyframe=1")})}function AS(o){o.type===p.AUDIO&&o.fmtp&&o.fmtp.forEach(i=>{i.config+=";sprop-stereo=1;stereo=1"})}var Lf=(o,i,e)=>{let t=Sh.default.parse(o);return t.media.forEach((r,s)=>{var n;if((r.type===p.AUDIO||r.type===p.VIDEO)&&(SS(r),IS(r),AS(r),ES(r),r.type===p.VIDEO)){if(s<4)r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[],i.video.codecs.forEach(a=>so(r,a));else if(e){r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[];let a=e.video.decoders;(!a||a.length===0)&&(a=e.video.codecs),(!a||a.length===0)&&(a=i.video.decoders),a.forEach(c=>so(r,c))}}(n=r.payloads)!=null&&n.includes("datachannel")&&t.groups&&r.mid&&(t.groups[0].mids=t.groups[0].mids.replace(r.mid,"dc"),r.mid="dc")}),Sh.default.write(t)};var Pf=Ge(it());var Zc=class extends Pf.EventEmitter{constructor(e){super();this.room=e;d(this,"mainFpsHealth",1);d(this,"mainBitrateHealth",1);d(this,"badMainBitrateHealthCount",0);d(this,"lastEmitBadHealthTime",0);d(this,"log");!pe&&Qe&&E.on("262",this.onVideoCodecChanged,this),this.log=e.getLogger().createChild({id:"h-d"})}onVideoCodecChanged({remoteUserId:e,streamType:t,isHWCodec:r,codec:s}){if(!(e||t===7||s!=="h264")){if(!r){this.room.off("heartbeat-report",this.onHeartbeatReport,this);return}this.room.listeners("heartbeat-report").includes(this.onHeartbeatReport)||this.room.on("heartbeat-report",this.onHeartbeatReport,this)}}onHeartbeatReport(e){Date.now()-this.lastEmitBadHealthTime<30*1e3||(e.msg_up_stream_info.msg_video_status.forEach(t=>{if(t.uint32_video_enc_fps&&t.uint32_video_capture_fps){let r=t.uint32_video_enc_fps/t.uint32_video_capture_fps;t.uint32_video_stream_type===2&&(this.mainFpsHealth=r)}if(t.uint32_video_codec_bitrate&&t.uint32_video_stream_type===2){let{localMainVideoTrack:r}=this.room;r&&(this.mainBitrateHealth=t.uint32_video_codec_bitrate/1e3/r.profile.bitrate)}}),this.log.debug(`mainBitrateHealth: ${this.mainBitrateHealth} mainFpsHealth: ${this.mainFpsHealth}`),this.mainBitrateHealth>.5&&(this.badMainBitrateHealthCount=0),this.mainFpsHealth>.9&&this.mainBitrateHealth<.5&&(this.badMainBitrateHealthCount++,this.badMainBitrateHealthCount>3&&(this.badMainBitrateHealthCount=0,this.lastEmitBadHealthTime=Date.now(),this.log.warn(`bad main bitrate health: ${this.mainBitrateHealth}`),this.emit("1",{isAux:!1}))))}destroy(){E.off("262",this.onVideoCodecChanged,this),this.room.off("heartbeat-report",this.onHeartbeatReport,this)}};d(Zc,"EVENT_BAD_HEALTH","bad_health");var Vf=Zc;function Uf({seiMessageList:o,isAudio:i,isMain:e}){return new TransformStream({transform(t,r){let s=t;i?audioEncodePipeline.forEach(n=>{s=n({frame:s})}):videoEncodePipeline.forEach(n=>{s=n({frame:s,seiMessageList:o,onDump:()=>{self.postMessage({type:"dump",isAudio:i,data:s.data,userId:"",streamType:e?"main":"auxiliary"})}})}),r.enqueue(s)}})}function Bf(o,i,e){return new TransformStream({transform(t,r){let s=t;videoDecodePipeline.forEach(n=>{s=n({frame:s,onSEI:a=>{a.forEach(c=>{self.postMessage({type:"sei",seiPayloadType:c.seiPayloadType,data:c.seiPayload.buffer,userId:o,streamType:i})})},onDump:()=>{self.postMessage({type:"dump",isAudio:e,data:s.data,userId:o,streamType:i})}})}),r.enqueue(s)}})}function Ff(o){let i=[zi],e=[Zu,Qu,Yu,zu,Uf,Bf],t=()=>{let l=[],u=[],h=[];self.onmessage=m=>{m.data.type==="sei"&&(m.data.isMain?(l.push(m.data.data),m.data.small&&h.push(m.data.data)):u.push(m.data.data))},self.onrtctransform=m=>{let{options:g}=m.transformer,S=g.isReceiver?Bf(g.userId,g.streamType,g.isAudio):Uf({isAudio:g.isAudio,seiMessageList:g.isMain?g.small?h:l:u,isMain:g.isMain});m.transformer.readable.pipeThrough(S).pipeTo(m.transformer.writable)}},r=`const videoEncodePipeline=[${o.videoEncodePipeline.toString()}];
112
- const videoDecodePipeline=[${o.videoDecodePipeline.toString()}];
113
- const audioEncodePipeline = [${o.audioEncodePipeline.toString()}];
114
- const audioDecodePipeline = [${o.audioDecodePipeline.toString()}];`,s=`(()=>{${i.map(l=>`const ${l.name}=(()=>${l.toString()})()`).join(`
115
- `)}
116
- ${e.map(l=>l.toString()).join(`
117
- `)};(${t})();${r}})()`,n=new Blob([s],{type:"text/javascript"}),a=URL.createObjectURL(n),c=new Worker(a);return URL.revokeObjectURL(a),c}var bi=(l=>(l.TRACK="track",l.DATA_CHANNEL_MESSAGE="data_channel_msg",l[l.CONNECTION_STATE_CHANGED="connection-state-changed"]="CONNECTION_STATE_CHANGED",l[l.FIREWALL_RESTRICTION="firewall-restriction"]="FIREWALL_RESTRICTION",l.RECONNECTED="spc-reconnected",l.RECONNECT_FAILED="spc-reconnect-failed",l.ERROR="error",l.SEI_MESSAGE="sei-message",l.DUMP="dump",l))(bi||{}),Gf=0,Wf=!1,CS=new Set,RS=o=>Gf>2&&!Wf&&CS.size===0&&o,yS=1,ei=class extends $f.default{constructor({signalChannel:e,room:t,enableCustomMessage:r}){super();d(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0});d(this,"currentState","DISCONNECTED");d(this,"_room");d(this,"_signalChannel");d(this,"_peerConnection",null);d(this,"_datachannel",null);d(this,"_enableCustomMessage");d(this,"_log");d(this,"_downlinkMIDMap",new Map);d(this,"_downlinkMIDUserIDMap",new Map);d(this,"_reconnectionTimer",-1);d(this,"reconnectionCount",0);d(this,"clientAbility");d(this,"_serverAbility",null);d(this,"addDownlinkQueue",new Set);d(this,"removeDownlinkQueue",new Set);d(this,"_parsedAnswer",null);d(this,"_updateSDPPromise",null);d(this,"_waitForPCConnectedPromise");d(this,"clearWaitForConnectedPromise");d(this,"clearConnectTimeout");d(this,"_isSDPLogged",!1);d(this,"enableInsertableStreams",!1);d(this,"insertableStreamsAbortMap",new Map);d(this,"receiverRemoteTrackMap",new WeakMap);d(this,"scriptTransformWorker");d(this,"_isRelayTried",!1);d(this,"_rttOverCount",0);d(this,"originOffer",null);d(this,"autoSubscribedSsrcGroups",new Map);d(this,"autoSubscribedUserMap",new Map);d(this,"_h265DecodeFailed",!1);this._room=t,this._enableCustomMessage=r,this._signalChannel=e,this._log=b.createLogger({id:`spc${yS++}`,userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(Ji?this.enableInsertableStreams=!0:this.initScriptTransformWorker()),this._room.healthDetector.on("1",this.onBadHealth,this)}get isH264EncodeSupported(){let e=this._room.checkSystemResult.detail.isH264EncodeSupported;return this._serverAbility&&(e=e&&!!this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="h264")),e}addAbortController(e,t){var r;(r=this.insertableStreamsAbortMap.get(e))==null||r.abort("destory"),this.insertableStreamsAbortMap.set(e,t)}get isVP8EncodeSupported(){let e=this._room.checkSystemResult.detail.isVp8EncodeSupported;return this._serverAbility&&(e=e&&this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="vp8")),e}get isH265EncodeSupported(){let e=this._room.checkSystemResult.detail.isH265EncodeSupported;return this._serverAbility&&(e=e&&!!this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="h265")),e}get videoCodec(){var t,r,s;let e=(t=this._parsedAnswer)==null?void 0:t.media[1].rtp.find(n=>["h264","vp8","h265"].includes(n.codec.toLowerCase()));return e?e.codec.toLowerCase():(r=this._serverAbility)!=null&&r.useH265?"h265":(s=this._serverAbility)!=null&&s.useVp8?"vp8":"h264"}get downlinkVideoCodec(){var e,t,r;return(e=this._serverAbility)!=null&&e.useH265&&((t=this._serverAbility)!=null&&t.video.decoders.find(s=>s.codec.toLowerCase()==="h265"))&&!this._h265DecodeFailed?"h265":(r=this._serverAbility)!=null&&r.video.decoders.find(s=>s.codec.toLowerCase()==="h264")?"h264":"vp8"}get isUsingH264(){return this.videoCodec==="h264"}get isUsingH265(){return this.videoCodec==="h265"}get isUsingVP8(){return this.videoCodec==="vp8"}get is42001fSupported(){return this.clientAbility?!!this.clientAbility.video.codecs.find(e=>e.fmtp.includes("42001f")):!1}get uplinkSSRC(){return this._peerConnection&&this._peerConnection.localDescription?Of(this._peerConnection.localDescription.sdp):{audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0}}onBadHealth({isAux:e}){this.useHWEncoder(!1,e?7:2)}initScriptTransformWorker(){$o&&(this.scriptTransformWorker=Ff({videoEncodePipeline:this._room.videoManager.encodePipeline,videoDecodePipeline:this._room.videoManager.decodePipeline,audioEncodePipeline:this._room.audioManager.encodePipeline,audioDecodePipeline:this._room.audioManager.decodePipeline}),this.scriptTransformWorker.onmessage=e=>{e.data.type==="sei"&&this.emit("sei-message",e.data),e.data.type==="dump"&&this.emit("dump",e.data)},this.scriptTransformWorker.onerror=e=>{this._log.error("scriptTransformWorker error: ",e)})}get isReconnecting(){return this.currentState==="RECONNECTING"||this._reconnectionTimer>0||this.reconnectionCount>0}get dtlsTransport(){if(!this._peerConnection)return null;let e=this._peerConnection.getSenders();return e.length===0?null:e[0].transport}getPeerConnectionConfig(e){var s;let t={encodedInsertableStreams:this.enableInsertableStreams,offerExtmapAllowMixed:!0,iceServers:e,iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._room.sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"},r=(s=this._peerConnection)==null?void 0:s.getConfiguration().encodedInsertableStreams;return ia(r)&&(t.encodedInsertableStreams=r),this._log.debug("getPeerConnectionConfig",JSON.stringify(t)),t}initialize(e){return f(this,null,function*(){var r,s;let t;try{return this._peerConnection=new RTCPeerConnection(this.getPeerConnectionConfig(e)),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let n=this._peerConnection.iceConnectionState;this._log.debug(`ice state: ${n}`),n==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():n==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),this._signalChannel.clearBakRelayIps(),N.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):n==="failed"&&N.addFailedEvent({key:521711})},this._peerConnection.onsignalingstatechange=()=>{var a;let n=((a=this._peerConnection)==null?void 0:a.signalingState)||"";this._log[n==="closed"?"debug":"info"](`signaling state: ${n}`)},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=n=>this.emit("track",n),this._enableCustomMessage&&(this._datachannel=this._peerConnection.createDataChannel(`${this._room.userId}dc`),this._datachannel.binaryType="arraybuffer",this._datachannel.onopen=()=>{this._log.info("datachannel open")},this._datachannel.onclose=()=>{this._log.warn("datachannel close")},this._datachannel.onmessage=n=>{let a=new Ch(n.data);this.emit("data_channel_msg",{data:a})},this._datachannel.onerror=n=>{this._log.warn("datachannel error",n)}),this._peerConnection.addTransceiver(p.AUDIO,{direction:p.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_SENDONLY}),t=yield this._peerConnection.createOffer(),this.clientAbility=yield wf(t.sdp,((r=this._room.scheduleResult.config)==null?void 0:r.remove264FromSDP)||!1,((s=this._room.scheduleResult.config)==null?void 0:s.remove265FromSDP)||!1),this.originOffer=t,this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:n}=this;n&&(this._log.debug(`dtls state: ${n.state}`),n.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():n.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),N.addSuccessEvent({key:521707}),this.clientAbility}catch(n){throw N.addFailedEvent({key:521707,error:n}),this._log.error(`initialize failed ${n}
118
- offer: ${t==null?void 0:t.sdp}`),n}})}setIceServers(e){return f(this,null,function*(){var t;if(!(!this._peerConnection||e.length===0))try{if(this._log.info("setIceServers",JSON.stringify(e,(r,s)=>r==="username"||r==="credential"?"hided":s)),this._peerConnection.setConfiguration(this.getPeerConnectionConfig(e)),(t=this._peerConnection)!=null&&t.localDescription||!this.originOffer){this._log.warn("setIceServers already has localDescription or no origin Offer");return}yield this.setOffer(this.originOffer)}catch(r){this._log.warn("setIceServers error ",r)}})}setPriority(e="high"){if(this._peerConnection)try{this._peerConnection.getSenders().forEach(r=>{let s=r.getParameters();s.encodings[0]&&(s.encodings[0].priority=e,s.encodings[0].networkPriority=e,r.setParameters(s).catch(n=>{this._log.warn("setPriority error ",n)}))})}catch(t){this._log.warn("setPriority error ",t)}}connect(e,t=!1){return f(this,null,function*(){var r,s,n;try{if(this.currentState==="CONNECTED")return;!((r=this._peerConnection)!=null&&r.localDescription)&&this.originOffer&&(yield this.setOffer(this.originOffer));let a=P(),c={type:"answer",sdp:xf({serverAbility:e,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableCustomMessage})};this._serverAbility=e,yield this.setAnswer(c),yield this.waitForPeerConnectionConnected();let l=((s=this._room.scheduleResult.config)==null?void 0:s.priority)||((n=this._room.joinParams)==null?void 0:n.priority)||new URLSearchParams(location.search).get("priority");l&&this.setPriority(l),t||N.addSuccessEvent({key:521703,cost:P()-a})}catch(a){let c=a instanceof v&&a.code===A.API_CALL_ABORTED;throw c||this._log.error(`connect failed: ${a}`,e),this.reset(),!c&&!this.isReconnecting&&(N.addFailedEvent({key:521703,error:a}),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection()),a}})}reconnect(){return f(this,null,function*(){if(this._reconnectionTimer!==-1){this._log.warn("reconnect() is reconnecting, ignore current reconnection");return}if(!this._signalChannel.isConnected){this._log.warn("reconnect() wait signal channel is connected"),this._signalChannel.once(Ne.CONNECTED,this.reconnect,this);return}try{this.reconnectionCount+=1,this._log.warn(`reconnect() trying [${this.reconnectionCount}]`),this.reset();let e=this._signalChannel.getBackupRelayIpPair(),t=yield this.initialize(this._room.getIceServers(e!=null&&e.iceServer?[e.iceServer]:[])),r=D({ability:t},e),s=yield this._signalChannel.sendWaitForResponse({command:z.REBUILD_PEER_CONNECTION,responseCommand:F.REBUILD_PEER_CONNECTION_RES,data:r,enableLog:!1});if(s.data.code!==0)throw new v({code:s.data.code,message:s.data.message});yield this.connect(s.data.data.ability,!0),N.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),E.emit(C.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(e){if(!this.isReconnecting)return;if(e!=null&&e.message.includes("timeout")){let t=Ut(this.reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${t/1e3}s`),yield Li(t,r=>{this._reconnectionTimer=r}),this.clearReconnectionTimer(),yield this.reconnect()}else this._log.error(`reconnect() failed ${e==null?void 0:e.code} ${e}`),N.addFailedEvent({key:521704,error:e}),this.reconnectionCount>=Mi()&&this._log.warn(`SDK has tried reconnect for ${Mi()} times, but all failed, please check your network`),this.stopReconnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.emit("error")}})}getPeerConnection(){return this._peerConnection}startReconnection(){return f(this,null,function*(){this.isReconnecting||(this._log.warn("start reconnect"),this._updateSDPPromise=null,this.emitConnectionStateChangedEvent("RECONNECTING"),yield this.reconnect())})}stopReconnection(){var e;this.isReconnecting&&(this._log.info("stop reconnect"),this.reconnectionCount=0,this.clearReconnectionTimer(),(e=this.clearConnectTimeout)==null||e.call(this),this._signalChannel.off(Ne.CONNECTED,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var e;!this.isReconnecting&&((e=this._peerConnection)==null?void 0:e.connectionState)===ge.CLOSED&&this.startReconnection()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}onConnectionStateChange(e){var s;let t=((s=this._peerConnection)==null?void 0:s.iceConnectionState)||"closed",r=this.getDTLSTransportState();this._log.info(`connectionState: ${e.target.connectionState} ICE: ${t} DTLS: ${r}`),e.target.connectionState===ge.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(e.target.connectionState===ge.FAILED||e.target.connectionState===ge.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(e.target.connectionState===ge.CONNECTED||e.target.connectionState===ge.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),E.emit(C.SINGLE_CONNECTION_STAT,{room:this._room,stat:{ice:this.stat.iceEndTime-this.stat.iceStartTime,dtls:this.stat.dtlsEndTime-this.stat.dtlsStartTime,peerConnection:this.stat.peerConnectionEndTime-this.stat.peerConnectionStartTime}}),this.logSelectedCandidate(),this.emitConnectionStateChangedEvent("CONNECTED"))}getDTLSTransportState(){if(!this._peerConnection)return Pt;let e=null;return!mr()||this._peerConnection.getSenders().length===0?Pt:(e=this._peerConnection.getSenders()[0].transport,!Hr()||this._peerConnection.getReceivers().length===0?Pt:e?e.state:Pt)}emitConnectionStateChangedEvent(e){e!==this.currentState&&(this.currentState==="RECONNECTING"&&e==="CONNECTING"||(this.emit(bi.CONNECTION_STATE_CHANGED,{prevState:this.currentState,state:e}),this.currentState=e))}logSelectedCandidate(){return f(this,null,function*(){if(!this._peerConnection)return;let e=yield this._peerConnection.getStats();for(let[t,r]of e)if(hr(r)){let s=e.get(r.localCandidateId),n=e.get(r.remoteCandidateId);s&&(this._log.info(`local candidate: ${s.candidateType} ${s.protocol}:${s.ip||s.address}:${s.port} ${s.networkType||""} ${s.candidateType==="relay"?`relayProtocol:${s.relayProtocol}`:""}`),s.networkType&&Yn(s.networkType)),n&&this._log.info(`remote candidate: ${n.candidateType} ${n.protocol}:${n.ip||n.address}:${n.port}`);break}})}waitForPeerConnectionConnected(){return this._waitForPCConnectedPromise?this._waitForPCConnectedPromise:(this._waitForPCConnectedPromise=new Promise((e,t)=>{if(this.currentState==="CONNECTED")return e();let r=c=>{c.state==="CONNECTED"&&(clearTimeout(a),n(),e())},s=({room:c})=>{c===this._room&&(clearTimeout(a),n(),t(new v({code:A.API_CALL_ABORTED,message:V({key:L.CONNECTION_ABORTED,data:"leave room"})})))},n=()=>{E.off(C.LEAVE_SUCCESS,s,this),this.off(bi.CONNECTION_STATE_CHANGED,r,this)},a=setTimeout(()=>{n();let c=new v({code:A.API_CALL_TIMEOUT,message:"connection timeout"});Gf+=1,RS(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),Wf=!0,this.emit(bi.FIREWALL_RESTRICTION)),t(c)},Cs);this.clearConnectTimeout=()=>{n(),clearTimeout(a),delete this.clearConnectTimeout},this.clearWaitForConnectedPromise=()=>{this._waitForPCConnectedPromise=null,t(new v({code:A.API_CALL_TIMEOUT,message:"connection timeout"}))},E.on(C.LEAVE_SUCCESS,s,this),this.on(bi.CONNECTION_STATE_CHANGED,r,this)}),this._waitForPCConnectedPromise=this._waitForPCConnectedPromise.finally(()=>{this._waitForPCConnectedPromise=null,delete this.clearConnectTimeout}),this._waitForPCConnectedPromise)}waitForReconnected(){return this.isReconnecting?new Promise((e,t)=>{this.once("spc-reconnected",e),this.once("error",t)}):Promise.resolve()}addDownlink(e){return f(this,null,function*(){if(this._log.info(`addDownlink(${e.userId}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise),this.updateLocalAndRemoteSDPConfig(e),this.addDownlinkQueue.size===0)try{yield this.updateSDP(),this._log.info(`addDownlink(${e.userId}) done`)}catch(t){this._log.error(`addDownlink(${e.userId}) failed ${t}`),yield this.startReconnection()}})}updateLocalAndRemoteSDPConfig({ssrc:e,userId:t,tinyId:r}){if(!this._peerConnection)return;this._log.info(`updateLocalAndRemoteSDPConfig ${t} ${JSON.stringify(e)}`);let s=this._peerConnection.getTransceivers().slice(4).filter(m=>m.direction==="inactive").slice(0,3).map(m=>(m.direction=p.TRANSCEIVER_DIRECTION_RECVONLY,Number(m.mid)));this._parsedAnswer||(this._parsedAnswer=Ce(this._peerConnection.remoteDescription.sdp));let n=this._parsedAnswer.media.filter(m=>{var g;return(g=m.ssrcs)==null?void 0:g.find(S=>{var _;return(_=S.value)==null?void 0:_.includes(r)})}),a,c,l;if(n.length===3)a=n[0],c=n[1],l=n[2];else if(s.length===3)a=this._parsedAnswer.media.find(m=>Number(m.mid)===Number(s[0])),c=this._parsedAnswer.media.find(m=>Number(m.mid)===Number(s[1])),l=this._parsedAnswer.media.find(m=>Number(m.mid)===Number(s[2]));else if(s.length===0){this._peerConnection.addTransceiver(p.AUDIO,{direction:p.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(p.VIDEO,{direction:p.TRANSCEIVER_DIRECTION_RECVONLY}),a=JSON.parse(JSON.stringify(this._parsedAnswer.media[0]));let m=Ih({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:Ce(this._peerConnection.localDescription.sdp),isDownlink:!0});c=JSON.parse(JSON.stringify(m)),l=JSON.parse(JSON.stringify(m)),a.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(a),c.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(c),l.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(l)}a.direction=p.TRANSCEIVER_DIRECTION_SENDONLY;let u=`${r}-${e.audio}`;a.ssrcs=[{id:e.audio,attribute:"cname",value:`${u}`},{id:e.audio,attribute:"msid",value:`${u}-${p.MAIN} ${u}-audio`}],c.direction=p.TRANSCEIVER_DIRECTION_SENDONLY,c.ssrcs=[{id:e.video,attribute:"cname",value:`${u}`},{id:e.video,attribute:"msid",value:`${u}-${p.MAIN} ${u}-bigvideo`},{id:e.videoRtx,attribute:"cname",value:`${u}`},{id:e.videoRtx,attribute:"msid",value:`${u}-${p.MAIN} ${u}-bigvideo`}],c.ssrcGroups=[{semantics:"FID",ssrcs:`${e.video} ${e.videoRtx}`}],l.direction=p.TRANSCEIVER_DIRECTION_SENDONLY;let h=`${u}-aux`;l.ssrcs=[{id:e.auxiliary,attribute:"cname",value:h},{id:e.auxiliary,attribute:"msid",value:`${h} ${u}-aux${p.VIDEO}`},{id:e.auxiliaryRtx,attribute:"cname",value:`${h} ${u}-aux${p.VIDEO}`},{id:e.auxiliaryRtx,attribute:"msid",value:`${h} ${u}-aux${p.VIDEO}`}],l.ssrcGroups=[{semantics:"FID",ssrcs:`${e.auxiliary} ${e.auxiliaryRtx}`}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(m=>m.mid).join(" ")),this._downlinkMIDMap.set(t,[a.mid,c.mid,l.mid]),this._downlinkMIDUserIDMap.set(a.mid,t),this._downlinkMIDUserIDMap.set(c.mid,t),this._downlinkMIDUserIDMap.set(l.mid,t)}removeDownlink(e){return f(this,null,function*(){if(!this._downlinkMIDMap.has(e)||!this._peerConnection)return;this._log.info(`removeDownlink(${e}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise);let t=this._downlinkMIDMap.get(e),r=!1;this._peerConnection.getTransceivers().forEach(s=>{t!=null&&t.includes(Number(s.mid))&&(r=!0,s.direction="inactive")}),this._parsedAnswer||(this._parsedAnswer=Ce(this._peerConnection.remoteDescription.sdp)),this._parsedAnswer.media.forEach(s=>{t!=null&&t.includes(Number(s.mid))&&(r=!0,s.direction="inactive",s.ssrcs=[],s.ssrcGroups=[])}),this.removeDownlinkQueue.size===0&&r&&(yield this.updateSDP()),this._downlinkMIDMap.delete(e),t==null||t.forEach(s=>this._downlinkMIDUserIDMap.delete(s)),this._log.info(`removeDownlink(${e}) done`)})}setBandwidth(e){return f(this,null,function*(){if(!this._peerConnection)return;let{audio:t,bigVideo:r,smallVideo:s,auxVideo:n}=e;try{if(Qs()){let a=this._peerConnection.getSenders().slice(0,4);for(let l=0;l<a.length;l++){let u=a[l],h;l===0&&t?h=t:l===1&&r?h=r:l===2&&s?h=s:l===3&&n&&(h=n),h&&(yield this.setSenderMaxBitrate(u,h))}let c=!1;r&&a[1].track&&(c=this.setStartBitrate(1,r)),n&&a[3].track&&(c=this.setStartBitrate(3,n)||c),c&&(yield this.updateSDP())}else yield this.setBandwidthBySDP(e);this._log.info(`setBandwidth ${JSON.stringify(e)}`)}catch(a){this._log.error(`failed to set bandwidth: ${a}`)}})}setStartBitrate(e,t){var r,s;return(r=this._peerConnection)!=null&&r.remoteDescription&&(this._parsedAnswer||(this._parsedAnswer=Ce(this._peerConnection.remoteDescription.sdp)),(s=this._parsedAnswer.media[e])!=null&&s.fmtp[0])?(this._parsedAnswer.media[e].fmtp[0].config+=`;x-google-start-bitrate=${t>5e3?5e3:t}`,!0):!1}setSenderMaxBitrate(e,t){let r=e.getParameters();return(!r.encodings||r.encodings.length===0)&&(r.encodings=[{}]),t==="unlimited"?delete r.encodings[0].maxBitrate:r.encodings[0].maxBitrate=t*1e3,e.setParameters(r)}setBandwidthBySDP({audio:e,bigVideo:t,smallVideo:r,auxVideo:s}){if(!this._peerConnection||!this._peerConnection.localDescription)return;let n=Ce(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=Ce(this._peerConnection.remoteDescription.sdp));let a=ne?"TIAS":"AS";e&&(n.media[0].bandwidth=[{type:a,limit:ne?e*1e3:e}],this._parsedAnswer.media[0].bandwidth=[{type:a,limit:ne?e*1e3:e}]),t&&(n.media[1].bandwidth=[{type:a,limit:ne?t*1e3:t}],this._parsedAnswer.media[1].bandwidth=[{type:a,limit:ne?t*1e3:t}]),r&&(n.media[2].bandwidth=[{type:a,limit:ne?r*1e3:r}],this._parsedAnswer.media[2].bandwidth=[{type:a,limit:ne?r*1e3:r}]),s&&(n.media[3].bandwidth=[{type:a,limit:ne?s*1e3:s}],this._parsedAnswer.media[3].bandwidth=[{type:a,limit:ne?s*1e3:s}]);let c={type:"offer",sdp:wt(n)};return this.updateSDP({localDescription:c})}setScaleResolutionDownBy(e,t,r){let s=e.getParameters();(!s.encodings||s.encodings.length===0)&&(s.encodings=[{}]);let n=s.encodings[0].scaleResolutionDownBy;if(T(n)?t===1:t===n)return;let a=`setScaleResolutionDownBy ${r} ${t}`;return n&&(a+=` prevScale: ${n}`),this._log.warn(a),s.encodings[0].scaleResolutionDownBy=t,e.setParameters(s)}setDegradationPreference(e,t,r){if(Qe&&dt<83||Ie&&$s(_t,"12.1")||ne&&bo<138)return;let s=e.getParameters(),n="balanced";if(t==="motion"?n="maintain-framerate":t==="detail"&&(n="maintain-resolution"),s.degradationPreference===n)return;let a=`setDegradationPreference ${r} ${n}`;return this._log.info(a),s.degradationPreference=n,e.setParameters(s).catch(c=>this._log.warn(`${a} failed: ${c}`))}updateSDP({localDescription:e}={}){if(!this._parsedAnswer)return Promise.resolve();let t=wt(this._parsedAnswer);return this._updateSDPPromise=new Promise((r,s)=>f(this,null,function*(){var n,a;try{!e&&this._peerConnection&&(this._log.info("creating offer"),e=yield this._peerConnection.createOffer()),e&&(yield this.setOffer(e)),yield this.setAnswer({type:"answer",sdp:t}),this._updateSDPPromise=null,r()}catch(c){this._log.error(c),!this._isSDPLogged&&this._peerConnection&&(this._log.warn(`current offer: ${this.filterSDPDirection((n=this._peerConnection.localDescription)==null?void 0:n.sdp)}
119
- next offer: ${this.filterSDPDirection(e==null?void 0:e.sdp)}`),this._log.warn(`current answer: ${this.filterSDPDirection((a=this._peerConnection.remoteDescription)==null?void 0:a.sdp)}
120
- next answer: ${this.filterSDPDirection(t)}`),this._log.warn(`offer: ${e==null?void 0:e.sdp}`),this._log.warn(`answer: ${t}`),this._log.warn(`transceivers: ${JSON.stringify(this._peerConnection.getTransceivers().map(({mid:l,currentDirection:u,direction:h,stopped:m})=>({mid:l,currentDirection:u,direction:h,stopped:m})))}`),this._log.warn(`parsedAnswer: ${JSON.stringify(this._parsedAnswer)}`),this._isSDPLogged=!0),this._updateSDPPromise=null,s(c)}})),this._updateSDPPromise}setTransceiverDirection(e,t){return f(this,null,function*(){if(!ne||!this._peerConnection||!this._parsedAnswer)return;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let r=this._peerConnection.getTransceivers();t.forEach(s=>{r[s].direction!==e&&(r[s].direction=e)});for(let s of t){let n=this._parsedAnswer.media[s].direction;e===ie.INACTIVE&&n===ie.RECVONLY&&(this._parsedAnswer.media[s].direction=e),e===ie.SENDONLY&&n===ie.INACTIVE&&(this._parsedAnswer.media[s].direction=ie.RECVONLY)}yield this.updateSDP()})}filterSDPDirection(e=""){return Ce(e).media.map(r=>r.direction)}setOffer(e){this._log.info("setting offer");let t=Lf(e.sdp,this.clientAbility,this._serverAbility);return this._log.debug(t),this._peerConnection.setLocalDescription({type:"offer",sdp:t})}setAnswer(e){return this._log.info("setting answer"),this._log.debug(e.sdp),this._peerConnection.setRemoteDescription(e)}switchVideoEncoder(e){return f(this,null,function*(){if(e==="h265"&&!this._parsedAnswer&&(this._parsedAnswer=Ce(this._peerConnection.remoteDescription.sdp)),!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let t=!1;this._parsedAnswer.media.forEach(r=>{var s;if(r.type===p.VIDEO){let n=this._serverAbility.video.codecs.find(a=>a.codec.toLowerCase()===e);n&&!((s=r.payloads)!=null&&s.includes(String(n.payload)))&&(r.fmtp=[],r.payloads="",r.rtp=[],r.rtcpFb=[],so(r,n),t=!0)}}),t&&(this._log.warn(`switch video encoder to ${e}`),yield this.updateSDP())})}useHWEncoder(e=!0,t){return f(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let r=!1,s=[];T(t)?s=this._parsedAnswer.media.slice(1,4):t===2?s.push(this._parsedAnswer.media[1]):t===3?s.push(this._parsedAnswer.media[2]):t===7&&s.push(this._parsedAnswer.media[3]),s.forEach(n=>{var a;if(n.type===p.VIDEO){let c;e&&this.is42001fSupported?c=this.clientAbility.video.codecs.find(l=>l.fmtp.includes("42001f")):e||(c=this._serverAbility.video.codecs.find(l=>l.codec.toLowerCase()===(this._serverAbility.useVp8?"vp8":"h264"))),c&&!((a=n.payloads)!=null&&a.includes(String(c.payload)))&&(n.fmtp=[],n.payloads="",n.rtp=[],n.rtcpFb=[],so(n,c),r=!0)}}),r&&(this._log.warn(`use ${e?"hw":"sw"} encoder`),yield this.updateSDP())})}sendDataChannelMessage(e){var t;(t=this._datachannel)==null||t.send(e)}reset(){var e;this._peerConnection&&(this._peerConnection.close(),this._peerConnection.removeEventListener("track",this._peerConnection._onaddstreampoly,this),this._peerConnection._onaddstreampoly=null,this._peerConnection=null),(e=this.clearWaitForConnectedPromise)==null||e.call(this),this._parsedAnswer=null,this.originOffer=null}close(){this._log.info("close pc"),this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(e=>si(e.abort)&&e.abort("destroy")),this.insertableStreamsAbortMap.clear(),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this._downlinkMIDMap.clear(),this.stopReconnection(),this.removeAllListeners(),this._room.healthDetector.off("1",this.onBadHealth,this)}getReceiversByUserId(e){if(!this._peerConnection)return[];let t=this._peerConnection.getReceivers();return(this._downlinkMIDMap.get(e)||[]).map(r=>t[r])}get isUsingRelay(){return this._room.getIceTransportPolicy()==="relay"}detectTCPAndUDP({uplinkRTT:e,downlinkRTT:t}){var u;if(this.currentState!=="CONNECTED"||this._isRelayTried&&!this._room.forceRelay||this._room.getIceServers().length===0)return;let r=this._signalChannel.rtt,s=Math.max(e,t),{rttRatioThreshold:n,rttThreshold:a}=((u=this._room.scheduleResult.config)==null?void 0:u.useTurnTcpInfo)||{};if(!n||!a||!r||!s)return;let c=Math.floor(s/r),l=(this._isRelayTried||c>n)&&s>a;if(!l){this._rttOverCount=0;return}++this._rttOverCount<5||(this._log.warn(`detectTCPAndUDP ws-rtt: ${r} upRTT: ${e} downRTT: ${t} ratio: ${c} over-count: ${this._rttOverCount} isOver: ${l} isRelayTried: ${this._isRelayTried} force-relay: ${this._room.forceRelay}`),!this.isUsingRelay&&!this._isRelayTried?(this._isRelayTried=!0,this._rttOverCount=0,this.switchRelay(!0)):this._room.forceRelay&&this.switchRelay(!1))}switchRelay(e,t=!1){return f(this,null,function*(){if(this.isUsingRelay===e)return;let r=e?"relay":"udp",s=e?521709:521710;try{this._room.forceRelay=e,this._log.warn(`switchRelay ${r}`);let n=Date.now();yield this.doSwitchRelay(r),this._log.warn(`switchRelay ${r} success`),N.addSuccessEvent({key:s,cost:Date.now()-n})}catch(n){this._log.warn(`switchRelay ${r} failed`,n),N.addFailedEvent({key:s,error:n}),t?this._room.reJoin():yield this.switchRelay(!e,!0)}})}doSwitchRelay(e){return new Promise((t,r)=>{let s=setTimeout(()=>{this.stopReconnection(),r(new Error(`switch ${e} timeout`))},1e4);this.startReconnection().then(t,r).finally(()=>clearTimeout(s))})}removeRTCListener(){this._peerConnection&&(this._peerConnection.oniceconnectionstatechange=null,this._peerConnection.onconnectionstatechange=null,this._peerConnection.onsignalingstatechange=null,this._peerConnection.ontrack=null),this.dtlsTransport&&(this.dtlsTransport.onstatechange=null)}requestRemoteFallbackToH264(){this._log.warn("H265 decode failed, remote need to fallback h264"),this._h265DecodeFailed=!0,this._signalChannel.sendWaitForResponse({command:z.UPDATE_CONSTRAINT_CONFIG,data:{videoDecCodec:"h264"},responseCommand:F.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)})}};M([ec("reconnect")],ei.prototype,"startReconnection",1),M([Xi(e=>e.userId)],ei.prototype,"addDownlink",1),M([Xi(e=>e)],ei.prototype,"removeDownlink",1),M([Nt(!0)],ei.prototype,"updateSDP",1),M([mt(521712,!1)],ei.prototype,"setOffer",1),M([mt(521713,!1)],ei.prototype,"setAnswer",1);var Ah=class{constructor(i){d(this,"tag");d(this,"len");d(this,"data");let e=new DataView(i);this.tag=e.getUint16(),this.len=e.getUint16(2),this.data=new Uint8Array(i).slice(4,4+this.len).buffer}},Ch=class{constructor(i){d(this,"tinyId");d(this,"data");let e=new DataView(i),t=0,r=[];for(;t<e.byteLength;){let s=e.getUint16(t+2),n=new Ah(new Uint8Array(i).slice(t,t+2+2+s).buffer);r.push(n),t+=4+s}r.forEach(s=>{s.tag===1?this.tinyId=new TextDecoder().decode(s.data):s.tag===2&&(this.data=s.data)})}},Hf=new Set;function Ct(){let o=Math.floor(Math.random()*4294967296);return Hf.has(o)?Ct():(Hf.add(o),o)}var Jf=Ge(it());var no=class extends Jf.default{constructor(e){super();d(this,"userId");d(this,"tinyId");d(this,"_sdpSemantics");d(this,"_isUplink");d(this,"_room");d(this,"_log");d(this,"_currentState","DISCONNECTED");d(this,"_prevTime",-1);d(this,"_blackSmallVideoDetectionId");this.userId=e.userId,this.tinyId=e.tinyId,this._room=e.room,this._sdpSemantics=e.room.sdpSemantics,this._isUplink=e.isUplink,this._log=b.createLogger({id:"n",userId:this._room.userId,remoteUserId:this._isUplink?void 0:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink})}get _peerConnection(){var e;return((e=this.singlePC)==null?void 0:e.getPeerConnection())||null}get singlePC(){return this._room.singlePC}get _signalChannel(){return this._room.signalChannel}close(e){this._log.info("close connection"),this.emit("closed",e)}emitConnectionStateChangedEvent(e){return e===this._currentState?!1:(E.emit(C.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:e,remoteUserId:this._isUplink?void 0:this.userId}),this.emit("connection-state-changed",{prevState:this._currentState,state:e}),this._currentState=e,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}getCurrentState(){return this._currentState}get isH264(){var e,t;return!!((t=(e=this._peerConnection)==null?void 0:e.remoteDescription)!=null&&t.sdp.includes("H264"))}};var Rh=class{constructor(){d(this,"worker");d(this,"callbacks",new Map);d(this,"_log");d(this,"sleep",{});d(this,"heartbeatListenerCleaner",new Map);d(this,"userIdMap",new Map);this._log=b.createLogger({id:"bvd"})}getWorker(){if(!this.worker){let i=`
121
- const tracks=new Map;let canvas,ctx;const log=(...t)=>postMessage({type:"log",message:"[worker] "+t.join(" ")});function startDetection(e,t,a){if(!tracks.has(e)){const c={reader:a.getReader(),blackCount:0,timeoutId:null,intervalId:null};tracks.set(e,c),c.timeoutId=setTimeout(()=>stopDetection(e,"timeout"),t),c.intervalId=setInterval(async()=>{try{await isFrameBlack(e)?(c.blackCount++,postMessage({type:"blackCount",trackId:e,count:c.blackCount}),3<=c.blackCount&&(postMessage({type:"black",trackId:e}),stopDetection(e,"black"))):c.blackCount=0}catch(t){log("check black video error:",t.message),stopDetection(e,"error")}},1e3)}}function stopDetection(t,e){var a=tracks.get(t);a&&(a.timeoutId&&clearTimeout(a.timeoutId),a.intervalId&&clearInterval(a.intervalId),a.reader&&a.reader.cancel(),tracks.delete(t),postMessage({type:e,trackId:t}))}async function isFrameBlack(t){t=tracks.get(t);if(!t)return!1;var t=t.reader,{done:t,value:e}=await t.read();if(!e||t)return!1;canvas||(canvas=new OffscreenCanvas(e.codedWidth,e.codedHeight),ctx=canvas.getContext("2d",{willReadFrequently:!0})),canvas.width===e.codedWidth&&canvas.height===e.codedHeight||(canvas.width=e.codedWidth,canvas.height=e.codedHeight,ctx=canvas.getContext("2d",{willReadFrequently:!0})),ctx.drawImage(e,0,0,canvas.width,canvas.height);t=getFrameBlackRatio(ctx.getImageData(0,0,canvas.width,canvas.height));return e.close(),1===t}function getFrameBlackRatio(t){var e=t.data;let a=0;for(let t=0;t<100;t++){var c=4*Math.floor(Math.random()*(e.length/4)),[c,r,n,o]=[e[c],e[1+c],e[2+c],e[3+c]];0<o&&0===c&&0===r&&0===n&&a++}return a/100}self.onmessage=t=>{var{type:t,trackId:e,timeout:a,readable:c}=t.data;"addTrack"===t&&startDetection(e,a,c),"removeTrack"===t&&stopDetection(e)};
122
- `,e=new Blob([i],{type:"application/javascript"}),t=URL.createObjectURL(e);this.worker=new Worker(t),URL.revokeObjectURL(t),this.worker.onerror=r=>this._log.warn("worker error:",r.message,r.filename||"unknown",r.lineno||"unknown"),this.worker.onmessage=r=>{var l;let{type:s,trackId:n,message:a,count:c}=r.data;if(s==="black")(l=this.callbacks.get(n))==null||l();else if(s==="log")this._log.warn(a);else if(s==="blackCount"){let u=this.userIdMap.get(n);this._log.warn(`${u||n} black count: ${c}`)}}}return this.worker}start({track:i,isUplink:e,room:t,userId:r,onBlack:s}){if(this._log.debug("start detect black video",i.id),!js()||!s||!i||typeof Worker=="undefined"){this._log.warn("black video detector not supported");return}let n=a=>{var l,u,h,m;let c;if(e)c=(u=(l=a.msg_up_stream_info)==null?void 0:l.msg_video_status)==null?void 0:u.filter(g=>g.uint32_video_stream_type===3)[0];else{let g=(h=a.msg_down_stream_info)==null?void 0:h.filter(S=>{var _;return((_=S.msg_user_info)==null?void 0:_.str_identifier)===r})[0];c=(m=g==null?void 0:g.msg_video_status)==null?void 0:m.filter(S=>S.uint32_video_stream_type===3)[0]}if(c){let g=(c.uint32_video_codec_bitrate||0)/1e3;if(this.sleep[i.id]&&this.sleep[i.id]>0){this.sleep[i.id]-=1;return}g>0&&g<10&&(this.sleep[i.id]=30,this._log.info("track bitrate",g,"start check"),this.checkOnce(i,30*1e3))}};return t.on("heartbeat-report",n),this.heartbeatListenerCleaner.set(i.id,()=>t.off("heartbeat-report",n)),this.callbacks.set(i.id,s),this.userIdMap.set(i.id,r),i.id}checkOnce(i,e){try{let t=this.getWorker();if(!t)throw new Error("Worker not available");let r=new MediaStreamTrackProcessor({track:i});t.postMessage({type:"addTrack",trackId:i.id,timeout:e,readable:r.readable},[r.readable])}catch(t){this._log.warn("check error:",t),this.stop(i.id)}}stop(i){if(i){this.worker&&this.worker.postMessage({type:"removeTrack",trackId:i}),this.callbacks.delete(i),delete this.sleep[i];let e=this.heartbeatListenerCleaner.get(i);e&&e(),this.heartbeatListenerCleaner.delete(i),this.userIdMap.delete(i)}}destroy(){this.callbacks.forEach((i,e)=>this.stop(e)),this.worker&&(this.worker.terminate(),this.worker=null)}},rr=new Rh;var wn=class extends no{constructor(e){super(w(D({},e),{isUplink:!0}));d(this,"localMainAudioTrack",null);d(this,"localMainVideoTrack",null);d(this,"localAuxAudioTrack",null);d(this,"localAuxVideoTrack",null);d(this,"_isPublishingAux",!1);d(this,"_publishingLocalAudioTrack");d(this,"_publishingLocalVideoTrack");d(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,videoDecCodec:"",audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});d(this,"_flag",0);d(this,"_checkPublishStateTimeoutId",-1);this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.videoCodec)||"h264"}get ssrc(){if(!this.singlePC)return{audio:0,video:0,videoRtx:0,small:0,smallRtx:0,auxiliary:0,auxiliaryRtx:0};let{audioSsrc:e,bigVideoSsrc:t,bigVideoRtxSsrc:r,smallVideoSsrc:s,smallVideoRtxSsrc:n,auxVideoSsrc:a,auxVideoRtxSsrc:c}=this.singlePC.uplinkSSRC;return{audio:e||0,video:t||0,videoRtx:r||0,small:s||0,smallRtx:n||0,auxiliary:a||0,auxiliaryRtx:c||0}}get flag(){return this._flag}set flag(e){this._flag!==e&&(this._flag=e,this.checkPublishState())}checkPublishState(e=!1){if(!e&&this._checkPublishStateTimeoutId>0)return;let{publishState:t,serverPublishState:r}=this,s=Object.keys(t).find(n=>t[n]!==r[n]);if(s)if(e)this._log.warn(`publish state not matched, ${s} local:${t[s]} server:${r[s]} ${Hi()} ${Lr()}`),N.addCount({key:521e3});else{this._checkPublishStateTimeoutId=re.run("timeout",()=>this.checkPublishState(!0),{delay:10*1e3,count:1});return}re.clearTask(this._checkPublishStateTimeoutId),this._checkPublishStateTimeoutId=-1}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,s,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(hi()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((s=a[2])!=null&&s.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(c=>{c.track&&(c.track.kind===p.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}get publishingState(){let{publishState:e}=this,t=D({},e);return this._publishingLocalAudioTrack&&(t.audio=!0),this._publishingLocalVideoTrack&&(this._isPublishingAux?t.auxVideo=!0:(t.bigVideo=!0,this._publishingLocalVideoTrack.small&&(t.smallVideo=!0))),t}get serverPublishState(){return{audio:!!(this.flag&cr),bigVideo:!!(this.flag&ar),smallVideo:!!(this.flag&Is),auxVideo:!!(this.flag&Cr)}}get muteState(){var e,t,r;return{audio:!!((e=this.localMainAudioTrack)!=null&&e.muted),bigVideo:!!((t=this.localMainVideoTrack)!=null&&t.muted),auxVideo:!!((r=this.localAuxVideoTrack)!=null&&r.muted)}}initialize(){this.installEvents()}close(e){var r;let t=((r=this._peerConnection)==null?void 0:r.getSenders())||[];for(let s of t)s.replaceTrack(null);super.close(e),this.uninstallEvents(),this.uninstallTrackMuteEvents(this.localMainAudioTrack,this.localMainVideoTrack,this.localAuxVideoTrack),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this.on("connection-state-changed",this.handleConnectionStateChange,this),this.installSPCEvents()}installSPCEvents(){var e,t;(e=this.singlePC)!=null&&e.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||(t=this.singlePC)==null||t.on("spc-reconnected",this.onSinglePCReconnected,this)}uninstallSPCEvents(){var e;(e=this.singlePC)==null||e.off("spc-reconnected",this.onSinglePCReconnected,this)}uninstallEvents(){this.off("connection-state-changed",this.handleConnectionStateChange,this),this.uninstallSPCEvents()}emitConnectionStateChangedEvent(e,t){var n,a,c;let r=this._currentState,s=super.emitConnectionStateChangedEvent(e);return s&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(c=this._publishingLocalVideoTrack)==null||c.emit("connection-state-changed",{prevState:r,state:e}))),s}onVideoEncodeFailed(e){if(!e||!e.isMediaTrackActive)return;let{videoCodec:t,singlePC:r}=this;if(!r)return;let n={h265:{supported:r.isH264EncodeSupported,target:"h264",log:"h265 encoder not working, switch to h264"},h264:{supported:r.isVP8EncodeSupported,target:"vp8",log:"h264 encoder not working, switch to vp8"},vp8:{supported:!1,target:"vp8",log:"vp8 encoder not working, no fallback available"}}[t];this._log.warn(n.log),n!=null&&n.supported&&r.switchVideoEncoder(n.target)}publish(s){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){var l,u,h,m,g,S,_;if(!this.singlePC)return;this.installEvents(),yield this.singlePC.waitForPeerConnectionConnected();let{publishState:n,muteState:a}=this;if(e&&(this._publishingLocalAudioTrack=e,n.audio=!0,a.audio=e.muted),t){if(!this.singlePC.isH264EncodeSupported&&!this.singlePC.isVP8EncodeSupported)throw new v({code:A.NOT_SUPPORTED_H264,message:V({key:L.NOT_SUPPORTED_H264ENCODE})});this.singlePC.isUsingH264&&!this.singlePC.isH264EncodeSupported&&this.singlePC.isVP8EncodeSupported&&(this._log.warn("h264 encoder not supported"),yield this.singlePC.switchVideoEncoder("vp8")),pe&&ko()===115&&t.profile.width*t.profile.height<=640*360&&(this._log.warn(`fallback video to defaultBigVideoProfile: ${JSON.stringify(nr)}`),t.setProfile(nr),yield t.applyProfile()),this._publishingLocalVideoTrack=t,r?(n.auxVideo=!0,a.auxVideo=t.muted):(n.bigVideo=!0,a.bigVideo=t.muted)}this._isPublishingAux=r;let c;if(t&&!r&&t.small&&(c=this._room.videoManager.smallTrack,n.smallVideo=!0),yield this._signalChannel.sendWaitForResponseWithRetry({command:z.SPC_PUBLISH,responseCommand:F.SPC_PUBLISH_RESULT,data:w(D({},this.singlePC.uplinkSSRC),{state:n,muteState:a}),retries:3}),yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:c,isAuxiliary:r}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,t){this[r?"localAuxVideoTrack":"localMainVideoTrack"]=t,yield this.singlePC.setDegradationPreference(this._peerConnection.getSenders()[r?3:1],t.contentHint,t.streamType);let{scaleResolutionDownBy:I}=t;yield this.singlePC.setScaleResolutionDownBy(this._peerConnection.getSenders()[r?3:1],I,t.streamType)}e&&(this[r?"localAuxAudioTrack":"localMainAudioTrack"]=e),yield this.singlePC.setBandwidth({audio:((l=this.localMainAudioTrack)==null?void 0:l.profile.bitrate)||((u=this.localAuxAudioTrack)==null?void 0:u.profile.bitrate),bigVideo:(h=this.localMainVideoTrack)==null?void 0:h.profile.bitrate,smallVideo:(g=(m=this.localMainVideoTrack)==null?void 0:m.small)==null?void 0:g.bitrate,auxVideo:(S=this.localAuxVideoTrack)==null?void 0:S.profile.bitrate}),this.sendMediaSettings(),this.installTrackMuteEvents(e,t),(this._room.preferHW||(_=this._room.scheduleResult.config)!=null&&_.preferHW)&&t&&t.profile.width*t.profile.height>=1280*720&&this.singlePC.useHWEncoder(!0,r?7:2)})}publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:s}){if(!ut())return;this._log.info("publish by transceiver");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack,c=this._peerConnection.getTransceivers(),l=[],u=[],h=(g,S,_)=>{var R;let I=c[S].sender.replaceTrack(_);u.push(S),(R=this.singlePC)!=null&&R.enableInsertableStreams&&I.then(()=>this.createEncodedStreams(c[S].sender,g)),this.initSenderTransform(c[S].sender,g),l.push(I)};a&&h(e.mediaType,0,a),n&&h(t.mediaType,s?3:1,n),t!=null&&t.small&&l.push(this.publishSmall(this._room.videoManager.smallMode,t));let m=this.singlePC.setTransceiverDirection(ie.SENDONLY,u);return l.push(m),Promise.all(l)}getTrackByMediaType(e){switch(e){case 1:return this.localMainAudioTrack||this._publishingLocalAudioTrack;case 4:case 8:return this.localMainVideoTrack||this._publishingLocalVideoTrack;case 2:return this.localAuxVideoTrack||this._publishingLocalVideoTrack;default:return null}}createEncodedStreams(e,t){var a,c;if(this.singlePC.insertableStreamsAbortMap.has(e))return;let r=e.createEncodedStreams(),s=new AbortController;(a=this.singlePC)==null||a.addAbortController(e,s),((c=this.getTrackByMediaType(t))!=null&&c.enableEncodeFrame?r.readable.pipeThrough(new TransformStream({transform:(l,u)=>{var m,g;let h=this.getTrackByMediaType(t);u.enqueue(((m=this.singlePC)!=null&&m.isUsingH264||(g=this.singlePC)!=null&&g.isUsingH265)&&h?h.encodeFrame(l,t===8):l)}}),s):r.readable).pipeTo(r.writable,s).catch(l=>{this._log.debug("encoded stream error",l),l!=="destory"&&this._log.warn(l)})}initSenderTransform(e,t){if(!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||!$o)return;let r=t!==2,s=t===8;e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!1,isAudio:t===1,isMain:r,isSmall:s}))}enableSmall(e){return f(this,null,function*(){e?yield this.publishSmall(this._room.videoManager.smallMode):yield this.unpublishSmall()})}publishSmall(r){return f(this,arguments,function*(e,t=this.localMainVideoTrack){var l;if(!this.singlePC)return;if(e==="canvas"&&!Pa()){this._log.warn("canvas mode small stream is not supported");return}let s=this._peerConnection.getTransceivers(),{sender:n}=s[2],a=yield this.doPublishSmall(e,t),c=e==="canvas"?524700:524701;if(N.addSuccessEvent({key:c}),!a){N.addFailedEvent({key:c,error:10001});return}(l=this.singlePC)!=null&&l.enableInsertableStreams&&this.createEncodedStreams(n,8),this.initSenderTransform(n,8),yield this.singlePC.setTransceiverDirection(ie.SENDONLY,[2]),this.updateMediaSettings(),yield this.doPublishChange(),this._blackSmallVideoDetectionId=rr.start({track:n.track,room:this._room,isUplink:!0,userId:this.userId,onBlack:()=>{this._log.warn("small video is black");let u=e==="canvas"?524700:524701;N.addFailedEvent({key:u,error:10002}),rr.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0}})})}doPublishSmall(r){return f(this,arguments,function*(e,t=this.localMainVideoTrack){if(!this.singlePC)return null;this._log.info("publish small",e);let s=this._peerConnection.getTransceivers(),{sender:n}=s[2];if(e==="canvas"&&this._room.videoManager.smallTrack)return yield n.replaceTrack(this._room.videoManager.smallTrack),"canvas";if(e==="api"&&(t!=null&&t.outMediaTrack)&&(t!=null&&t.small)){yield n.replaceTrack(t==null?void 0:t.outMediaTrack);let a=n.getParameters(),c=Io(t==null?void 0:t.profile,t==null?void 0:t.small);return this._log.info("small scaleResolutionDownBy",c),a.encodings[0].scaleResolutionDownBy=c,n.setParameters(a),"api"}return this._log.warn(`small track can not be enabled, smallMode: ${this._room.videoManager.smallMode}, smallTrack: ${!!this._room.videoManager.smallTrack}, bigVideoTrack: ${!!(t!=null&&t.outMediaTrack)}`),null})}unpublishSmall(){return f(this,null,function*(){if(!this.singlePC)return;this._log.info("unpublish small"),yield this._peerConnection.getTransceivers()[2].sender.replaceTrack(null),yield this.singlePC.setTransceiverDirection(ie.INACTIVE,[2]),this.updateMediaSettings(),yield this.doPublishChange(),rr.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){var l;yield(l=this.singlePC)==null?void 0:l.waitForPeerConnectionConnected();let s=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),c=[];e&&(s?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localMainAudioTrack&&!this.localAuxAudioTrack&&(yield a[0].replaceTrack(null),c.push(0))),n&&(s?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=w(D({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),c.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=w(D({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),c.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.singlePC.setTransceiverDirection(ie.INACTIVE,c),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return f(this,null,function*(){let t={state:this.publishingState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponseWithRetry({command:z.PUBLISH_STATE_CHANGE,data:t,responseCommand:F.PUBLISH_STATE_CHANGE_RESULT,enableLog:e,retries:3});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:z.UNPUBLISH,commandDesc:"unpublish",responseCommand:F.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===A.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){var s,n;this._mediaSettings.videoCodec=((s=this.singlePC)==null?void 0:s.videoCodec)||"h264",this._mediaSettings.videoDecCodec=((n=this.singlePC)==null?void 0:n.downlinkVideoCodec)||"h264";let e=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:t,localAuxVideoTrack:r}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?r=this._publishingLocalVideoTrack:t=this._publishingLocalVideoTrack),mi){if(e&&e.outMediaTrack){let a=e.outMediaTrack.getSettings();this._mediaSettings.audioChannel=a.channelCount||1,this._mediaSettings.audioBps=e.profile.bitrate*1e3,this._mediaSettings.audioFs=a.sampleRate||0}if(t&&t.outMediaTrack){let a=t.outMediaTrack.getSettings(),{scaleResolutionDownBy:c}=t;this._mediaSettings.videoWidth=a.width/c||0,this._mediaSettings.videoHeight=a.height/c||0,this._mediaSettings.videoFps=a.frameRate||0,this._mediaSettings.videoBps=t.profile.bitrate*1e3,t.small&&(this._mediaSettings.smallVideoWidth=t.small.width,this._mediaSettings.smallVideoHeight=t.small.height,this._mediaSettings.smallVideoFps=t.small.frameRate,this._mediaSettings.smallVideoBps=t.small.bitrate*1e3)}if(r&&r.outMediaTrack){let a=r.outMediaTrack.getSettings(),{scaleResolutionDownBy:c}=r;this._mediaSettings.auxVideoWidth=a.width/c||0,this._mediaSettings.auxVideoHeight=a.height/c||0,this._mediaSettings.auxVideoFps=a.frameRate||0,this._mediaSettings.auxVideoBps=r.profile.bitrate*1e3}}else e&&e.outMediaTrack&&(this._mediaSettings.audioChannel=e.profile.channelCount,this._mediaSettings.audioBps=e.profile.bitrate*1e3,this._mediaSettings.audioFs=e.profile.sampleRate),t&&t.outMediaTrack&&(this._mediaSettings.videoWidth=t.profile.width,this._mediaSettings.videoHeight=t.profile.height,this._mediaSettings.videoFps=t.profile.frameRate,this._mediaSettings.videoBps=t.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:z.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:F.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?p.AUXILIARY:p.MAIN} stream`),hi()&&(yield this.addTrackByTransceiver(e,t))})}addTrackByTransceiver(e,t){return f(this,null,function*(){var s;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===p.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((s=this.localMainVideoTrack)!=null&&s.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===ie.INACTIVE&&(yield this.singlePC.setTransceiverDirection(ie.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}removeTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?p.AUXILIARY:p.MAIN} stream`),hi()&&(yield this.removeTrackByTransceiver(e,t))})}removeTrackByTransceiver(e,t){return f(this,null,function*(){if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===p.AUDIO)yield r[0].sender.replaceTrack(null);else{let s=t?3:1;yield r[s].sender.replaceTrack(null),s===1&&this._room.videoManager.hasSmall&&(yield r[2].sender.replaceTrack(null)),yield this.singlePC.setTransceiverDirection(ie.INACTIVE,[s])}this.updateMediaSettings(),yield this.doPublishChange()})}replaceTrack(e){return f(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders(),r=e.outMediaTrack||e.mediaTrack;if(!t||t.length===0||!r||t.find(a=>a.track===r))return!1;let s=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${r.kind} track ${r.id} ${r.label} on ${s?p.AUXILIARY:p.MAIN} stream`),r.kind===p.AUDIO&&t[0]&&(yield t[0].replaceTrack(r)),r.kind===p.VIDEO&&(!s&&t[1]&&(yield t[1].replaceTrack(r)),s&&t[3]&&(yield t[3].replaceTrack(r))),!0})}setBandwidth(s){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r}){if(this.singlePC){let n={};t===p.AUDIO?n.audio=e:r==="big"?n.bigVideo=e:r==="small"?n.smallVideo=e:n.auxVideo=e,yield this.singlePC.setBandwidth(n)}})}sendMutedFlag(e){e===this.localAuxAudioTrack||e===this.localAuxVideoTrack||(this._log.info(`send muted state: ${JSON.stringify(this.muteState)}`),this._signalChannel.sendWaitForResponseWithRetry({command:z.UPDATE_MUTE_STAT,responseCommand:F.MUTE_RESULT,data:this.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&E.emit(C.SEND_FIRST_VIDEO_FRAME,{room:this._room})}getVideoTrackId(e=p.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===p.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===p.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===p.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===p.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===Rr?(this._log.error(Ue.NOT_SUPPORTED_H264ENCODE),new v({code:A.NOT_SUPPORTED_H264,message:V({key:L.NOT_SUPPORTED_H264ENCODE})})):new v({code:A.UNKNOWN,message:V({key:L.SIGNAL_RESPONSE_FAILED,data:{signalResponse:F.PUBLISH_RESULT,code:e,message:t}})})}onSinglePCReconnected(){return f(this,null,function*(){this.isMainStreamPublished&&(this._log.warn("republish main stream"),yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(this._log.warn("republish aux stream"),yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0}))})}};M([st(function({localVideoTrack:e}){e==null||e.once("6",this.onVideoEncodeFailed,this)})],wn.prototype,"publish",1),M([st(function({localVideoTrack:e}){e==null||e.off("6",this.onVideoEncodeFailed,this)})],wn.prototype,"unpublish",1);var yh=wn;function qf(o){return Object.keys(o).filter(i=>o[i])}var ps=class extends no{constructor(e){super(w(D({},e),{isUplink:!1}));d(this,"_flag",0);d(this,"isRobot",!1);d(this,"role","anchor");d(this,"remoteAudioTrack");d(this,"remoteVideoTrack");d(this,"remoteAuxiliaryTrack");d(this,"ssrc",{audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0});d(this,"jitterBufferTimeoutId",-1);d(this,"_videoCodec");this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=new Yt(this._room,this),this.remoteVideoTrack=new Ci(this._room,this),this.remoteAuxiliaryTrack=new is(this._room,this),this.initialize()}get videoCodec(){var e;return this._videoCodec||((e=this.singlePC)==null?void 0:e.downlinkVideoCodec)||"h264"}set videoCodec(e){this._videoCodec=e}get subscribeState(){return{audio:this.remoteAudioTrack.isSubscribed||this.remoteAudioTrack.isSubscribing,video:this.remoteVideoTrack.isBig&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),smallVideo:this.remoteVideoTrack.isSmall&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),auxiliary:this.remoteAuxiliaryTrack.isSubscribed||this.remoteAuxiliaryTrack.isSubscribing}}get muteState(){return xi(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,s;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(s=this.remoteAuxiliaryTrack)==null||s.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===p.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){this.installEvents()}close(e){clearTimeout(this.jitterBufferTimeoutId),super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents(),this.removeDownlink()}installEvents(){this.singlePC&&(this.listeners("track").includes(this.onTrack)||this.singlePC.on("track",this.onTrack,this),this.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||this.singlePC.on("spc-reconnected",this.onSinglePCReconnected,this),this.remoteVideoTrack.on("decode-failed",this.onDecodeFailed,this))}uninstallEvents(){this.singlePC&&(this.singlePC.off("track",this.onTrack,this),this.singlePC.off("spc-reconnected",this.onSinglePCReconnected,this),this.remoteVideoTrack.off("decode-failed",this.onDecodeFailed,this))}emitConnectionStateChangedEvent(e){var s,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((s=this.remoteVideoTrack)==null||s.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){var u,h;let t=e.streams[0],{track:r,receiver:s}=e;if(!t.id.includes(this.tinyId))return;let a=t.id.includes("aux")?"auxiliary":"main";this._log.debug(`ontrack ${a} ${r.kind}`);let c=p.AUDIO;r.kind===p.VIDEO&&(c=a===p.MAIN?p.VIDEO:p.AUXILIARY);let l=this.remoteAudioTrack;c===p.VIDEO?l=this.remoteVideoTrack:c===p.AUXILIARY&&(l=this.remoteAuxiliaryTrack),(u=this.singlePC)==null||u.receiverRemoteTrackMap.set(s,l),(h=this.singlePC)!=null&&h.scriptTransformWorker&&this.initReceiverTransform(s,a,r.kind===p.AUDIO),this.singlePC.enableInsertableStreams&&this.createEncodedStreams(s),l.setInputMediaStreamTrack(r)}createEncodedStreams(e){if(!this.singlePC.insertableStreamsAbortMap.has(e)){let t=e.createEncodedStreams(),r=new AbortController,s={abortController:r,enqueue:n=>{var c,l,u;let a=(c=this.singlePC)==null?void 0:c.receiverRemoteTrackMap.get(e);return!a||a.kind==="video"&&!((l=this.singlePC)!=null&&l.isUsingH264)&&!((u=this.singlePC)!=null&&u.isUsingH265)?n:a.decodeFrame(n)}};t.readable.pipeThrough(new TransformStream({transform:(n,a)=>{let c=s.enqueue(n);c&&a.enqueue(c)}})).pipeTo(t.writable,r).catch(n=>{n!=="destory"&&this._log.warn(n)}),this.singlePC.addAbortController(e,r)}}initReceiverTransform(e,t,r){!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!0,isAudio:r,userId:this.userId,streamType:t}))}subscribe(e,t){return f(this,null,function*(){var r,s;try{let n=!0;if(this._log.info(`subscribe ${t} ${qf(e)}`),this.hasSSRC){let a="subscribe_change";Object.values(e).find(c=>c===!0)||(a="unsubscribe"),yield this.sendSubscription(a,e)}else{if((r=this.singlePC)!=null&&r.autoSubscribedUserMap.size){let a=this.singlePC.autoSubscribedUserMap.get(this.userId);if(a){this.singlePC.autoSubscribedUserMap.delete(this.userId);let c=(s=this.singlePC.autoSubscribedSsrcGroups.get(this._room.roomId))==null?void 0:s[a.groupIndex];c&&(this.ssrc={audio:c.audioSsrc,video:c.bigVideoSsrc,videoRtx:c.bigVideoRtxSsrc,auxiliary:c.auxVideoSsrc,auxiliaryRtx:c.auxVideoRtxSsrc},n=!1)}}yield this.doSubscribe(e,n),this.checkTrackEnded(e)}if(e.smallVideo){let{user:a,mediaTrack:c}=this.remoteVideoTrack;N.addSuccessEvent({key:524702}),this._blackSmallVideoDetectionId=rr.start({track:c,isUplink:!1,room:this._room,userId:this.userId,onBlack:()=>{this._log.warn("small video is black, auto change to big"),this._room.changeType(!1,a),N.addFailedEvent({key:524702}),rr.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0}})}else rr.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0}catch(n){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${n.message} ${JSON.stringify(this.muteState)}`),new v({code:A.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):n}})}checkTrackEnded(e){var t,r,s;if((e.audio&&((t=this.remoteAudioTrack.mediaTrack)==null?void 0:t.readyState)==="ended"||e.video&&((r=this.remoteVideoTrack.mediaTrack)==null?void 0:r.readyState)==="ended"||e.auxiliary&&((s=this.remoteAuxiliaryTrack.mediaTrack)==null?void 0:s.readState)==="ended")&&this.singlePC&&!this.singlePC.isReconnecting){if(this._log.warn("remote track ended start spc reconnect"),Qe&&dt<92)return;this.singlePC.startReconnection()}}unsubscribe(r){return f(this,arguments,function*({remoteTracks:e,streamType:t}){var a;if(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed){this._log.info(`${t} stream already unsubscribed`);return}let s=D({},this.subscribeState);e.forEach(c=>{switch(c.mediaType){case 1:s.audio=!1;break;case 4:s.video=!1;break;case 8:s.smallVideo=!1;break;case 2:s.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(s).find(c=>c===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${qf(s)}]`),n==="unsubscribe"&&((a=this.singlePC)==null||a.removeDownlinkQueue.add(this.tinyId)),yield this.sendSubscription(n,s),t==="main"&&(rr.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0),n==="unsubscribe"&&(yield this.removeDownlink())})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},s=z.UNSUBSCRIBE,n=F.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},s=z.SUBSCRIBE_CHANGE,n=F.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponseWithRetry({command:s,data:r,responseCommand:n,timeout:1e4,retries:3}).then(({data:a})=>{if(a.code!==0){let c=new v({code:a.code,message:V({key:L.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(c),c}})}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}onSinglePCReconnected(){return f(this,null,function*(){(this.ssrc.audio||this.ssrc.video||this.ssrc.auxiliary)&&(this._log.warn(`resubscribe ${JSON.stringify(this.subscribeState)}`),yield this.doSubscribe(this.subscribeState),this.remoteAudioTrack.checkDecodeResult(),this.remoteVideoTrack.checkDecodeResult(),this.remoteAuxiliaryTrack.checkDecodeResult())})}get hasSSRC(){return this.ssrc.audio&&this.ssrc.video&&this.ssrc.auxiliary}doSubscribe(){return f(this,arguments,function*(e=this.subscribeState,t=!0){if(this.singlePC){this.singlePC.addDownlinkQueue.add(this.tinyId),yield this.singlePC.waitForPeerConnectionConnected();try{if(t||!this.hasSSRC){let r={audioSsrc:Ct(),bigVideoSsrc:Ct(),bigVideoRtxSsrc:Ct(),auxVideoSsrc:Ct(),auxVideoRtxSsrc:Ct()},{audioSsrc:s,bigVideoSsrc:n,bigVideoRtxSsrc:a,auxVideoSsrc:c,auxVideoRtxSsrc:l}=r;this.ssrc={audio:s,video:n,videoRtx:a,auxiliary:c,auxiliaryRtx:l},this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc});try{let u=yield this._signalChannel.sendWaitForResponseWithRetry({command:z.SPC_SUBSCRIBE,responseCommand:F.SPC_SUBSCRIBE_RESULT,data:{srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:!1,ssrc:r},retries:3,retryTimeout:0});if(u.data.code!==0&&u.data.code!==-10036)throw new v({code:u.data.code,message:u.data.message})}catch(u){throw yield this.removeDownlink(),u}return}this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc})}finally{if(!Ua)return;let{main:r,aux:s}=this._room.jitterBufferDelay||{},{jitterDelay:n=r,jitterDelayAux:a=s}=this._room.scheduleResult.config||{};(q(n)||q(a))&&this.setJitterBufferDelay({mainDelay:n,auxDelay:a})}}})}removeDownlink(){return f(this,null,function*(){if(!this.singlePC)return;this.ssrc={audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0},this.singlePC.removeDownlinkQueue.delete(this.tinyId);let e=this._room.scheduleResult.config;(e!=null&&e.jitterDelay||e!=null&&e.jitterDelayAux)&&this.setJitterBufferDelay({mainDelay:0,auxDelay:0}),yield this.singlePC.removeDownlink(this.userId)})}setJitterBufferDelay({mainDelay:e,auxDelay:t}){if(!Ua||!this.singlePC||!this._peerConnection||Ui(e)&&Ui(t))return Promise.resolve();this._log.info(`set jitterBuffer main: ${e} aux: ${t}`);let r=this.singlePC.getReceiversByUserId(this.userId);return q(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),q(t)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=t,Ui(e)&&(this.remoteAudioTrack.jitterBufferDelay=t)),new Promise(s=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:s})})}doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:s}){try{if(e===0&&t===0)return r.forEach(a=>a.jitterBufferTarget=0),s();if(r.forEach(a=>{var h;let c=a.track===this.remoteAuxiliaryTrack.outMediaTrack||Ui(e)&&a.track===this.remoteAudioTrack.outMediaTrack;if(c&&Ui(t)||!c&&Ui(e))return;let l=c?t||0:e,u=(a.jitterBufferTarget||0)+100;u>l||(a.jitterBufferTarget=u,this._log.debug(`set ${c?"aux ":""}${(h=a==null?void 0:a.track)==null?void 0:h.kind} jitterBuffer delay ${u} -> ${l}`))}),!r.find(a=>{let c=a.track===this.remoteAuxiliaryTrack.outMediaTrack?t||0:e;return a.jitterBufferTarget<c}))return this._log.info(`set jitterBuffer main: ${e} aux: ${t} done`),s();this.jitterBufferTimeoutId=setTimeout(()=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:s})},1e3)}catch(n){this._log.warn(`set jitterBuffer delay error: ${n}`),clearTimeout(this.jitterBufferTimeoutId),s()}}get audioReceiver(){var e;return((e=this.singlePC)==null?void 0:e.getReceiversByUserId(this.userId)[0])||null}onDecodeFailed(){this._room.downlinkVideoCodec==="h265"&&this._room.requestRemoteFallbackToH264()}};M([Nt(),Y(e=>function(...t){return new Promise((r,s)=>{let n=a=>{this.off("closed",n),s(new v({code:A.API_CALL_ABORTED,message:V({key:L.CONNECTION_ABORTED,data:a})}))};this.on("closed",n),e.apply(this,t).then(r,s).finally(()=>{this.off("closed",n)})})})],ps.prototype,"subscribe",1),M([Nt()],ps.prototype,"unsubscribe",1),M([Xi(()=>"jitter")],ps.prototype,"setJitterBufferDelay",1);var jf=ps;function Xf(){return Y(o=>function(...i){return f(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(i=i.filter(t=>t.outMediaTrack&&t.state==="ready"),!i.length))return;E.emit("61",{room:this});let e=o.apply(this,i);return i.forEach(t=>t.publish(this,e)),e})})}function zf(){return Y(o=>function(...i){let e=o.apply(this,i);return i.forEach(t=>t.unpublish()),e})}var Qf=Ge(it());function NS(){return Math.floor(Math.random()*16383)}var ed=class ed extends Qf.EventEmitter{constructor(e,t){super();this.room=e;this.signalChannel=t;d(this,"log");d(this,"cmdIdSeqMap",new Map);d(this,"messageMap",new Map);this.log=b.createLogger({id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),t.on(F.RECEIVE_CUSTOM_MSG,this.onReceiveMsg),this.room.on("peer-leave",r=>{[...this.messageMap.keys()].forEach(s=>{s.split("_").slice(0,-1).join("_")===r&&this.messageMap.delete(s)})})}send({cmdId:e,data:t}){let r=this.cmdIdSeqMap.get(e)||NS(),s={cmdId:e,msg:btoa(String.fromCharCode(...new Uint8Array(t))),ordered:!0,reliable:!0,streamSeq:r};this.cmdIdSeqMap.set(e,r+1),this.signalChannel.send(z.SEND_CUSTOM_MSG,s),this.log.debug(`send custom msg: ${JSON.stringify(s)}`)}onReceiveMsg(e){let{data:t}=e.data,r=this.room.tinyIdToUserIdMap.get(t.srcTinyId);if(r){let s={userId:r,cmdId:t.cmdId,seq:t.streamSeq,data:Uint8Array.from(atob(t.msg),n=>n.charCodeAt(0)).buffer};if(t.ordered){let n=`${r}_${s.cmdId}`,a=this.messageMap.get(n);if(!a||a.lastSeq===0)a||(a={lastSeq:0,cachedMessageMap:new Map},this.messageMap.set(n,a),setTimeout(()=>this.emitMessage(s,!0),100)),a.cachedMessageMap.set(s.seq,{message:s});else if(Math.abs(a.lastSeq-s.seq)>ed.SEQ_INTERVAL)this.messageMap.set(n,{lastSeq:s.seq,cachedMessageMap:new Map}),this.emitMessage(s);else if(s.seq>a.lastSeq){if(s.seq===a.lastSeq+1)this.emitMessage(s);else if(!a.cachedMessageMap.has(s.seq)){let c=setTimeout(()=>this.emitMessage(s,!0),5e3);a.cachedMessageMap.set(s.seq,{message:s,timeoutId:c})}}else this.log.debug(`drop message ${s.userId}-${s.cmdId}-${s.seq}`)}else this.emit("message",s)}else{this.log.warn(`receive msg from unknown user, wait peer-join tinyId: ${t.srcTinyId}`);let s=n=>{n.tinyId===t.srcTinyId&&(this.room.off("peer-join",s),this.onReceiveMsg(e))};this.room.on("peer-join",s),Li(2e3).then(()=>this.room.off("peer-join",s))}}emitMessage(e,t=!1){var a;let r=this.messageMap.get(`${e.userId}_${e.cmdId}`),s=e;if(r){if(t){let c=[...r.cachedMessageMap.values()].sort((l,u)=>l.message.seq-u.message.seq);c[0]&&(s=c[0].message)}r.lastSeq!==0&&s.seq-r.lastSeq>1&&this.log.debug(`msg lost userId: ${s.userId} seq: ${r.lastSeq} -> ${s.seq}`),r.lastSeq=s.seq,clearTimeout((a=r.cachedMessageMap.get(s.seq))==null?void 0:a.timeoutId),r.cachedMessageMap.delete(s.seq)}this.log.debug(`receive custom msg: ${JSON.stringify(s)}`),this.emit("message",s);let n=r==null?void 0:r.cachedMessageMap.get(s.seq+1);n&&this.emitMessage(n.message)}};d(ed,"SEQ_INTERVAL",300);var Kc=ed;var{isString:Yf,isUndefined:Ir,getNetworkType:vS,isEmpty:xn}=ft,ti=class extends Yc{constructor(e){super(e);d(this,"_businessInfo");d(this,"userManager");d(this,"_version");d(this,"_heartbeat",-1);d(this,"_lastHeartBeatTime",-1);d(this,"_stats");d(this,"_joinTimeout",-1);d(this,"_firstPublishedList",null);d(this,"_joinReject",null);d(this,"_isRelayChanged",!1);d(this,"sdpSemantics");d(this,"signalChannel",null);d(this,"uplinkConnection",null);d(this,"singlePC",null);d(this,"enableSPC",Ho);d(this,"_changeBigSmallRecords",new Map);d(this,"networkQuality");d(this,"_iceTransportPolicy");d(this,"forceRelay",!1);d(this,"_turnServers",[]);d(this,"_iceServersFromJoin");d(this,"_syncUserListInterval",-1);d(this,"_smallStreamConfig",{bitrate:100,frameRate:15,height:120,width:160});d(this,"enableSEI",!1);d(this,"_enableAudioVolumeEvaluation",!1);d(this,"_audioVolumeIntervalId",0);d(this,"_enableMultiAuxStream",!1);d(this,"_pureAudioPushMode",!1);d(this,"_customMessageManager");d(this,"preferHW",!1);d(this,"healthDetector");d(this,"playoutDelay");d(this,"jitterBufferDelay");d(this,"_updateAudioLevelTaskId",-1);this._stats=new Mn(this,this._log),this.userManager=new Ac(this.userId,this._log),this._version=xe,this.sdpSemantics=lo,Ir(e.sdpSemantics)?pi.isUnifiedPlanDefault()&&(this.sdpSemantics=dr):this.sdpSemantics=e.sdpSemantics,this._log.info(`sdpSemantics: ${this.sdpSemantics}, netType: ${vS()}`),e.iceTransportPolicy&&(this._iceTransportPolicy=e.iceTransportPolicy),this._enableMultiAuxStream=Ir(e.enableMultiAuxStream)?!1:e.enableMultiAuxStream,this.enableSEI=e.enableSEI&&Ho,!Ir(e.enableSPC)&&Ho&&(this.enableSPC=e.enableSPC),this.preferHW=!!e.preferHW,this._initBusinessInfo(e),this.healthDetector=new Vf(this)}get isMainStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isMainStreamPublished)}get isMainAudioPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.localMainAudioTrack)}get isAuxStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isAuxStreamPublished)}get hasAuxStream(){return[...this.remotePublishedUserMap.values()].findIndex(e=>e.muteState.hasAuxiliary)>=0}get userMap(){return this.userManager.userMap}get remotePublishedUserMap(){return this.userManager.remotePublishedUserMap}get tinyIdToUserIdMap(){return new Map([...this.userMap.values()].map(e=>[e.tinyId,e.userId]))}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.videoCodec)||"h264"}get downlinkVideoCodec(){var e;return((e=this.singlePC)==null?void 0:e.downlinkVideoCodec)||"h264"}join(e,t,r){return f(this,null,function*(){return this.userManager.mySelfId=this.userId,this.userManager.on("1",s=>{this.emit("peer-join",s)}),this.userManager.on("2",s=>{this.closeDownLinkConnection(s,"remote user exitRoom"),this.emit("peer-leave",s)}),this.userManager.on("3",this.createDownlinkConnection,this),this.userManager.on("5",this.closeDownLinkConnection,this),this.userManager.on("6",n=>{var s=Dh(n,[]);E.emit(C.REMOTE_PUBLISH_STATE_CHANGED,D({room:this},s)),this.emit("remote-publish-state-changed",D({},s))}),this.joinParams=e,new Promise((s,n)=>f(this,null,function*(){var a,c;this._joinReject=n;try{this.checkDestroy();try{yield Promise.all([this.initialize(),this.initSinglePC()])}catch(u){if(u instanceof v&&u.code===A.SPC_INITIALIZED_FAILED)(a=this.signalChannel)==null||a.destroy(),yield this.initialize();else return n(u)}let l=P();yield this.doJoin(e,(c=this.singlePC)==null?void 0:c.clientAbility),N.addSuccessEvent({key:521708,cost:P()-l}),s(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(l){N.addFailedEvent({key:521708,error:l}),n(l)}this._joinReject=null}))})}initSinglePC(){return f(this,null,function*(){if(!(!this.enableSPC||this.singlePC)){this.singlePC=new ei({signalChannel:this.signalChannel,room:this,enableCustomMessage:!1}),this.singlePC.on("sei-message",e=>this.emit("sei-message",e)),this.singlePC.on("dump",e=>this.emit("dump",e)),this.singlePC.once("error",()=>this.fallbackToMPC());try{return yield this.singlePC.initialize()}catch(e){throw this.fallbackToMPC(),new v({code:A.SPC_INITIALIZED_FAILED,message:e==null?void 0:e.message})}}})}doJoin(e,t){return new Promise((r,s)=>f(this,null,function*(){var c,l,u;e.privateMapKey&&(this.privateMapKey=e.privateMapKey),e.latencyLevel&&(this.latencyLevel=e.latencyLevel),this.signalChannel.once(Ne.SETUP_FAILED,h=>{this.clearJoinTimeout(),E.emit(C.JOIN_SIGNAL_CONNECTION_END,{room:this,error:h}),s(h)}),de((l=(c=this.scheduleResult)==null?void 0:c.config)==null?void 0:l.singlePC)&&Ho&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2),t&&this.playoutDelay&&(t.playoutDelay=this.playoutDelay);let n={roomId:String(e.roomId||e.strRoomId),useStringRoomId:this.useStringRoomId,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel,trtcRole:e.role,trtcScene:this.scene==="live"?2:1,sdpSemantics:this.sdpSemantics,version:this._version,ua:navigator&&navigator.userAgent||"",terminalType:el(),netType:vr(),bussinessInfo:this._businessInfo,ability:t,sdkType:this._sdkType,userSig:this.userSig,receiveMix:!0};this._log.debug(`join room signal data: ${JSON.stringify(n)}`);let a=5e3;(u=this.scheduleResult.config)!=null&&u.enterRoomTimeout&&this.scheduleResult.config.enterRoomTimeout>=1&&(a=this.scheduleResult.config.enterRoomTimeout*1e3),this._joinTimeout=window.setTimeout(()=>{s(new v({code:A.JOIN_ROOM_FAILED,message:V({key:L.JOIN_ROOM_TIMEOUT})}))},a),E.emit(C.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?z.SPC_JOIN_ROOM:z.JOIN_ROOM,n),this.signalChannel.once(F.JOIN_ROOM_RESULT,h=>f(this,null,function*(){this.clearJoinTimeout();let{code:m,message:g,data:S,tinyId:_}=h.data;E.emit(C.JOIN_RECEIVED_CMD_RES,{room:this,code:m}),m===0?(this._log.info("Join room success, start heartbeat"),_&&(this.tinyId=_),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=S.publishers,this._iceServersFromJoin=S.iceServer?[S.iceServer]:[],this.singlePC&&this.singlePC.setIceServers(this.getIceServers()).then(()=>{var I;(I=this.singlePC)==null||I.connect(w(D({},S.ability),{useVp8:S.ability.useVp8||!!e.useVp8,useH265:S.ability.useH265||!!e.useH265})).catch(()=>{})}),r()):(this._log.error(`Join room failed result: ${m} error: ${g}`),s(new v({code:A.JOIN_ROOM_FAILED,extraCode:m,message:V({key:L.JOIN_ROOM_FAILED,data:{error:g,code:m}})})))}))}))}reJoin(){return f(this,null,function*(){if(!this.isJoined){this._log.warn("reJoin abort");return}try{this._log.warn(`reJoin pending: ${this.joinParams.roomId}`);let e,t=[];if(this.singlePC&&(this.singlePC.close(),this.singlePC=null,t.push(this.initSinglePC().then(r=>(e=r,r)))),this.signalChannel&&(this.signalChannel.close(),t.push(this.signalChannel.connect())),yield Promise.all(t),yield this.doJoin(w(D({},this.joinParams),{role:this.role==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel}),e),this._log.warn("reJoin success"),se.logSuccessEvent({userId:this.userId,eventType:ct.REJOIN}),this.singlePC){let r=s=>{var n;s.state==="CONNECTED"&&((n=this.singlePC)==null||n.off(bi.CONNECTION_STATE_CHANGED,r),this.uplinkConnection instanceof yh&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(a=>{a.installEvents(),a.onSinglePCReconnected()}))};this.singlePC.on(bi.CONNECTION_STATE_CHANGED,r),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof Dn&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(e){this._log.warn(`reJoin fail ${e}`),this.reset(),se.logFailedEvent({userId:this.userId,eventType:ct.REJOIN,error:e}),this.emit("error",new v({code:A.JOIN_ROOM_FAILED,message:V({key:L.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}})}initialize(){return f(this,null,function*(){let{mainUrl:e,backupUrl:t}=this.getSignalChannelUrl(),r=this.signalChannel||lf(this.userId),s=!!(r&&r.isConnected&&r.keepAlive&&r.userId===this.userId&&r.room===this),n;return Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(n=this.scheduleResult.domains[0]),this._log.info(`${s?"reuse":"setup"} signal channel`),s?(r.url=e,r.backupUrl=t,r.room=this,this.signalChannel=r):(r&&r.close(),this.signalChannel=new ds({sdkAppId:this.sdkAppId,userId:this.userId,userSig:this.userSig,url:e,backupUrl:t,room:this,signalDomainWhenUnifiedProxy:this.proxy_unified?n:void 0}),this._customMessageManager=new Kc(this,this.signalChannel),this._customMessageManager.on("message",a=>{this.emit("custom-message",a)})),this.networkQuality||(this.networkQuality=new ms({signalChannel:this.signalChannel,room:this}),this.networkQuality.on(ms.EVENT_NETWORK_QUALITY,a=>{var c;this.emit("network-quality",a),(c=this.singlePC)==null||c.detectTCPAndUDP(a)})),Ye(this,this.signalChannel).add(Ne.CONNECTION_STATE_CHANGED,a=>{E.emit(C.SIGNAL_CONNECTION_STATE_CHANGED,D({room:this},a)),this.emit("signal-connection-state-changed",a)}).add(Ne.RECONNECT_FAILED,a=>{this.reset(),this.emit("error",a)}).add(F.PEER_JOIN,a=>{let{srcTinyId:c,userId:l,role:u}=a.data.data;this.userManager.addUser({userId:l,tinyId:c,role:u})}).add(F.PEER_LEAVE,a=>{let{userId:c,reason:l=0}=a.data.data;this.userManager.deleteUser(c,l)}).add(F.UPDATE_REMOTE_MUTE_STAT,a=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=10*1e3&&this.doHeartbeat(),this.onPublishedUserList(a.data)}).add(F.CLIENT_BANNED,a=>{let c=a.data.data,{reason:l}=c;if(se.uploadEvent({log:`stat-banned:${l}`,userId:this.userId}),l==="user_time_out"){this._log.warn(`${l} last heart beat time: ${this._lastHeartBeatTime} interval: ${Date.now()-this._lastHeartBeatTime}, visibility: ${document.visibilityState}`),this.reJoin();return}this._log[l==="kick"?"error":"info"](`user was banned because of [${l}]`),this.reset(),this.emit("banned",{reason:l})}).add(F.SEND_SWITCH_ROOM_SUBED_REQ,a=>{if(!this.singlePC)return;let{subList:c}=a.data.data;c.forEach(l=>{this.singlePC.autoSubscribedUserMap.set(l.userId,l)})}).add(F.FALLBACK_CODEC,a=>f(this,null,function*(){var l,u,h,m,g;let c=a.data.data;this._log.warn(`fallback codec enableH265Enc: ${(l=c.videoControlInfo)==null?void 0:l.enableH265Enc}`),((u=c.videoControlInfo)==null?void 0:u.enableH265Enc)===0&&((h=this.singlePC)==null?void 0:h.videoCodec)==="h265"&&(N.addCount({key:513e3}),yield(m=this.singlePC)==null?void 0:m.switchVideoEncoder("h264"),yield(g=this.uplinkConnection)==null?void 0:g.sendMediaSettings())})),this.signalChannel.once(Ne.SETUP_SUCCESS,a=>{this.tinyId=a.signalInfo.tinyId,E.emit(C.JOIN_SIGNAL_CONNECTION_END,{room:this})}),E.emit(C.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),s&&E.emit(C.JOIN_SIGNAL_CONNECTION_END,{room:this}),s})}setSignalChannel(e){this.signalChannel=e,e||ve(this)}leave(){return f(this,null,function*(){var e;try{yield this.doHeartbeat()}catch(t){}this._log.info("leave() => leaving room"),E.emit(C.LEAVE_SEND_CMD,{room:this}),(e=this.signalChannel)==null||e.send(z.LEAVE_ROOM)})}clearNetworkQuality(){this.networkQuality&&(this.networkQuality.stop(),delete this.networkQuality)}closeConnections(){this.remotePublishedUserMap.forEach(e=>{this.closeDownLinkConnection(e.userId,"you exitRoom")})}clearJoinTimeout(){clearTimeout(this._joinTimeout),this._joinTimeout=-1}startHeartbeat(){this._heartbeat===-1&&(this._heartbeat=re.run("ric",this.doHeartbeat.bind(this),{delay:2e3}))}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),re.clearTask(this._heartbeat),this._heartbeat=-1,this._lastHeartBeatTime=-1)}doHeartbeat(){return f(this,null,function*(){var n;let e=this.badCaseDetector.getMonitorFreeze(),t=yield this._stats.getStatsReport({uplinkConnection:this.uplinkConnection,downlinkConnections:this.remotePublishedUserMap,freezeMap:e});this.badCaseDetector.resetMonitor();let r=(n=this.signalChannel)!=null&&n.isConnected?bp(this.userId):[],s=w(D({str_sdk_version:Ts,uint64_datetime:new Date().getTime(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyId},msg_event_msg:r,str_acc_ip:this.getSignalInfo().relayIp,str_client_ip:this.getSignalInfo().clientIp},t),{msg_device_info:D({uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:vr()},t.msg_device_info)});if(this.heartbeatReport=s,E.emit(C.HEARTBEAT_REPORT,{room:this,report:s}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(z.ON_QUALITY_REPORT,s);let a=Date.now();this._lastHeartBeatTime>0&&a-this._lastHeartBeatTime>1e4&&this._log.warn(`heartbeat took ${a-this._lastHeartBeatTime}`),this._lastHeartBeatTime=a,this.signalChannel.isOnline||(this._log.warn("signal channel is not online"),this.signalChannel.startReconnection())}this.emit("heartbeat-report",w(D({},s),{bytes_sent:this._stats.totalBytesSent+this.signalChannel.bytesSent,bytes_received:this._stats.totalBytesReceived+this.signalChannel.bytesReceived}))}!this._isRelayChanged&&this.isRelayMaybeFailed()&&(this.reJoin(),this._isRelayChanged=!0)})}onPublishedUserList(e){if(!this.isJoined)return;let t=e.data.userList.filter(r=>r.flag!==ud).map(({userId:r,srcTinyId:s,flag:n})=>{r===this.userId&&this.uplinkConnection&&(this.uplinkConnection.flag=n);let a=this.remotePublishedUserMap.get(r);return a&&this.checkSubscribeBigSmallVideo(a),{userId:r,tinyId:s,flag:n}});e.data.mixRobotList.forEach(({userId:r,srcTinyId:s,flag:n,mixUserList:a})=>{t.unshift({userId:r,tinyId:s,flag:n,isRobot:!0,mixUserList:a})}),e.data.fakeMixUser&&(e.data.fakeMixUser.tinyId=e.data.fakeMixUser.srcTinyId,t.push(e.data.fakeMixUser)),E.emit(C.RECEIVED_PUBLISHED_USER_LIST,{room:this,publishedUserList:t}),this.userManager.setRemotePublishedUserList(t)}closeUplink(e="you unpublished"){this.uplinkConnection&&(this.localTracks.size>0&&this.uplinkConnection.doUnpublish(),this.uplinkConnection.close(e),this.uplinkConnection instanceof Dn&&(this.uplinkConnection=null)),this.localTracks.forEach(t=>t.unpublish()),this.localTracks.clear()}createDownlinkConnection({userId:e,tinyId:t,flag:r,isRobot:s}){let n=new(this.singlePC?jf:ph)({userId:e,tinyId:t,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:r,isRobot:s});this.userManager.addRemotePublishedUser(n),this.installDownlinkEvents(n,e),this.emit("remote-published",n)}closeDownLinkConnection(e,t="remote user unpublished"){let r=this.remotePublishedUserMap.get(e);r&&(r.close(t),this.emit("remote-unpublished",r))}installDownlinkEvents(e,t){e.on("error",r=>{let s=r.getCode();s!==A.ICE_TRANSPORT_ERROR&&(s===A.DOWNLINK_RECONNECTION_FAILED&&this.closeDownLinkConnection(t),this.emit("error",r))}),e.on("connection-state-changed",r=>{this.emit("media-connection-state-changed",w(D({},r),{userId:e.userId}))}),e.on("firewall-restriction",()=>{this.emit("firewall-restriction")})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=re.run("ric",this.syncUserList.bind(this)))}stopSyncUserListInterval(){re.clearTask(this._syncUserListInterval),this._syncUserListInterval=-1}syncUserList(){return this.getUserList().then(e=>{this.userManager.setUserList(e)}).catch(e=>{this._log.debug(`sync user list failed: ${e}`)})}getUserList(){var e;return(e=this.signalChannel)!=null&&e.isConnected?this.signalChannel.sendWaitForResponse({command:z.GET_USER_LIST,responseCommand:F.USER_LIST_RES,enableLog:!1,timeout:2e3}).then(({data:t})=>{let{code:r,message:s}=t;if(r===0)return(t.data&&t.data.userList||[]).map(({userId:a,srcTinyId:c,role:l})=>({userId:a,tinyId:c,role:l}));throw V({key:L.SIGNAL_RESPONSE_FAILED,data:{signalResponse:F.USER_LIST_RES,code:r,message:s}})}):Promise.reject("not connected")}getAllConnections(){let e=[...this.remotePublishedUserMap.values()];return this.uplinkConnection&&e.push(this.uplinkConnection),e}isRelayMaybeFailed(){if(this.signalChannel&&!this.signalChannel.isOnline||!ch)return!1;if(this.singlePC)return this.singlePC.reconnectionCount>6;let e=this.getAllConnections();if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(e[t].getReconnectionCount()<6)return!1;return!0}checkConnectionsToReconnect(){var e;this.singlePC?((e=this.singlePC.getPeerConnection())==null?void 0:e.connectionState)===ge.CLOSED&&!this.singlePC.isReconnecting&&(this._log.warn("spc pc is closed but not reconnect"),this.singlePC.startReconnection()):this.getAllConnections().forEach(r=>{if(r instanceof at&&!r.getIsReconnecting()){let s=r.getPeerConnection();s&&s.connectionState===ge.CLOSED&&(this._log.warn(`[${r.getUserId()}] pc is closed but not reconnect`),r.startReconnection())}})}fallbackToMPC(){return f(this,null,function*(){var e;if(this._log.warn("fallback to multi pc"),se.uploadEvent({log:"stat-fallback",userId:this.userId}),this.enableSPC=!1,(e=this.singlePC)==null||e.close(),this.singlePC=null,this.isJoined&&(yield this.reJoin()),this.uplinkConnection){let t=this.uplinkConnection;this.uplinkConnection=new Dn({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),t.isMainStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localMainAudioTrack,localVideoTrack:t.localMainVideoTrack,isAuxiliary:!1})),t.isAuxStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localAuxAudioTrack,localVideoTrack:t.localAuxVideoTrack,isAuxiliary:!0})),t.close()}for(let t of[...this.remotePublishedUserMap.values()]){let r=new ph({userId:t.userId,tinyId:t.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:t.flag,remoteAudioTrack:t.remoteAudioTrack,remoteVideoTrack:t.remoteVideoTrack,remoteAuxiliaryTrack:t.remoteAuxiliaryTrack});this.installDownlinkEvents(r,t.userId),this.remotePublishedUserMap.set(t.userId,r),t.isMainStreamSubscribed&&(yield r.subscribe(t.subscribeState,"main")),t.isAuxStreamSubscribed&&(yield r.subscribe(t.subscribeState,"auxiliary"))}})}destroy(){this.isDestroyed||(this.signalChannel&&(this._log.info("destroying SignalChannel"),this.signalChannel.close(),this.signalChannel=null),super.destroy(),this._joinReject&&(this._joinReject(new v({code:A.INVALID_OPERATION,message:V({key:L.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.removeAllListeners(),this.healthDetector.destroy(),re.clearTask(this._audioVolumeIntervalId))}switchRole(e){return f(this,null,function*(){this.role!==e&&(e==="audience"&&this.uplinkConnection&&this.closeUplink("you switch role to audience"),yield this.doSwitchRole(e))})}doSwitchRole(e){let t={command:z.SWITCH_ROLE,data:{role:e==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:F.SWITCH_ROLE_RES,retries:1};return this._log.info(`switchRole signal data: ${JSON.stringify(t.data)}`),this.signalChannel.sendWaitForResponseWithRetry(t).then(r=>{let{code:s,message:n}=r.data;if(s!==0)throw new v({code:A.SWITCH_ROLE_FAILED,message:V({key:L.SWITCH_ROLE_FAILED,data:{message:n,code:s}})});this.role=e}).catch(r=>{throw r instanceof v&&r.getCode()===A.API_CALL_TIMEOUT&&(r=new v({code:A.SWITCH_ROLE_FAILED,message:V({key:L.SWITCH_ROLE_TIMEOUT})})),this._log.error(r),r})}publish(...e){return f(this,null,function*(){let t={},r={};e.forEach(c=>{c instanceof At&&(c instanceof Ii?r.audio=c:t.audio=c),c instanceof Be&&(c instanceof Ke&&c.mediaType===2?r.video=c:t.video=c)});let s=xn(t),n=xn(r);(!s||!n)&&!this.uplinkConnection&&(this.singlePC?this.uplinkConnection=new yh({userId:this.userId,tinyId:this.tinyId,room:this}):this.uplinkConnection=new Dn({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),this.uplinkConnection.on("connection-state-changed",c=>{this.emit("media-connection-state-changed",w(D({},c),{userId:this.userId}))}),this.uplinkConnection.on("firewall-restriction",()=>{this.emit("firewall-restriction")}),this.uplinkConnection.on("error",c=>{let l=c.getCode();l!==A.ICE_TRANSPORT_ERROR&&(l===A.UPLINK_RECONNECTION_FAILED&&this.closeUplink(),this.emit("error",c))}));let a=e.map(c=>c.kind).join(",");s||(this._log.info(`publish() => main ${a}`),yield this.uplinkConnection.publish({localAudioTrack:t.audio,localVideoTrack:t.video,isAuxiliary:!1}),this._log.info("main is published")),n||(this._log.info(`publish() => aux ${a}`),yield this.uplinkConnection.publish({localAudioTrack:r.audio,localVideoTrack:r.video,isAuxiliary:!0}),this._log.info("aux is published"))})}unpublish(...e){return f(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||!this.isMainStreamPublished&&!this.isAuxStreamPublished||!this.uplinkConnection)return;let t={},r={};e.forEach(s=>{!s.mediaTrack||!s.isPublished||(s instanceof At&&(s instanceof Ii?r.audio=s:t.audio=s),s instanceof Be&&(s instanceof Ke&&s.mediaType===2?r.video=s:t.video=s))});try{let s=e.map(n=>n.kind).join(",");xn(t)||(this._log.info(`unpublish() => main ${s}`),yield this.uplinkConnection.unpublish({localAudioTrack:t.audio,localVideoTrack:t.video})),xn(r)||(this._log.info(`unpublish() => aux ${s}`),yield this.uplinkConnection.unpublish({localAudioTrack:r.audio,localVideoTrack:r.video}))}catch(s){}this.localTracks.size===0&&this.closeUplink("you unpublished")})}addTrack(e){if(!this.uplinkConnection||!e.mediaTrack)return Promise.resolve();let t=this.uplinkConnection.addTrack(e);return e.publish(this,t),t}removeTrack(e){return!this.uplinkConnection||!e.mediaTrack?Promise.resolve():this.uplinkConnection.removeTrack(e).then(t=>(e.unpublish(),t))}replaceTrack(e){return!this.uplinkConnection||!e.mediaTrack||!yl()?Promise.resolve():this.uplinkConnection.replaceTrack(e).then(t=>{t&&E.emit(C.LOCAL_TRACK_REPLACED,{track:e})})}setBandWidth(e){return f(this,null,function*(){this.uplinkConnection&&(yield this.uplinkConnection.setBandwidth(e),yield this.uplinkConnection.sendMediaSettings())})}enableSmall(e){return f(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainVideoTrack)return Promise.resolve();e&&this.uplinkConnection.localMainVideoTrack.small&&(yield this.setBandWidth({type:p.VIDEO,videoType:p.SMALL,bandwidth:this.uplinkConnection.localMainVideoTrack.small.bitrate})),yield this.uplinkConnection.enableSmall(e)})}subscribe(...e){return f(this,null,function*(){if(e=e.filter(n=>!n.isSubscribed),e.length===0)return;let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let s=e.find(n=>n.mediaType===2)?"auxiliary":"main";try{let n=D({},r.subscribeState);e.forEach(c=>{switch(c.mediaType){case 1:n.audio=!0;break;case 4:n.video=!0;break;case 8:n.smallVideo=!0;break;case 2:n.auxiliary=!0;break}});let a=this._changeBigSmallRecords.get(t);a&&a.options.smallVideo&&r.muteState.hasSmall&&n.video&&(n.video=!1,n.smallVideo=!0),E.emit(C.SUBSCRIBE_START,{room:this,streamType:s,remotePublishedUser:r,subscribeState:n}),this._log.info(`subscribe() => ${t} ${s} [${Wc(n)}] prev: [${Wc(r.subscribeState)}]`),yield r.subscribe(n,s),this._log.info(`subscribe ${t} ${s} done`);for(let c of e)c.mediaTrack||(yield c.waitHasMediaTrack());E.emit(C.SUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:r})}catch(n){let a=n instanceof v?n.getCode():A.UNKNOWN,c=n;throw n instanceof v?a===A.REMOTE_STREAM_NOT_EXIST&&(c=new v({code:A.API_CALL_ABORTED,message:V({key:L.API_CALL_ABORTED,data:{message:n.message,userId:t,streamType:s}})}),this._log.warn(c)):(c=new v({code:a,message:V({key:L.SUBSCRIBE_FAILED,data:{message:n.message,userId:t,streamType:s}})}),this._log.error(c)),c}})}unsubscribe(...e){return f(this,null,function*(){let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let s=e.find(n=>n.mediaType===2)?"auxiliary":"main";this._log.info(`unsubscribe() => ${t} ${s}`);try{yield r.unsubscribe({remoteTracks:e,streamType:s})}catch(n){this._log.warn(`unsubscribe() => failed ${n}`)}e.forEach(n=>{n.unsubscribe(),n.mediaType===8&&n.setMediaType(4)}),E.emit(C.UNSUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:r})})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAudioVolumeEvaluation(e=2e3,t){if(e<=0){this._enableAudioVolumeEvaluation=!1,re.clearTask(this._audioVolumeIntervalId);return}e=Math.floor(Math.max(e,100)),E.emit(C.AUDIO_LEVEL_INTERVAL,{interval:e}),this._audioVolumeIntervalId&&re.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=re.run("intervalInWorker",()=>{var s;Gr.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(e,t);let r=[];(s=this.remotePublishedUserMap)==null||s.forEach(n=>{if(n.muteState.hasAudio){!Gr.isRunning&&n.muteState.audioAvailable&&n.remoteAudioTrack.isSubscribed?this.updateDownlinkAudioLevelFromReceiver(n):n.remoteAudioTrack.volume=0;let a=Math.floor(n.remoteAudioTrack.getAudioLevel()*100);r.push({userId:n.userId,volume:a,floatVolume:n.remoteAudioTrack.getInternalAudioLevel()})}}),this.emit("audio-volume",r)},{delay:e,backgroundTask:t})}updateAudioLevelFromSenderStat(e,t){return f(this,null,function*(){var n;if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack||this._updateAudioLevelTaskId!==-1)return;let r=(n=this.uplinkConnection.getPeerConnection())==null?void 0:n.getSenders()[0];if(!r)return;let s=Math.max(e,500);this._log.warn(`updateAudioLevelFromSenderStat ${s}`),this._updateAudioLevelTaskId=re.run("intervalInWorker",()=>f(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack){this.stopUpdateAudioLevelFromSenderStat();return}let a=yield r.getStats();if(this._updateAudioLevelTaskId<0)return;let{localMainAudioTrack:c}=this.uplinkConnection;a.forEach(l=>{l.type==="media-source"&&l.audioLevel&&(c.volume=l.audioLevel)})}),{delay:s,backgroundTask:t})})}stopUpdateAudioLevelFromSenderStat(){var e;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),re.clearTask(this._updateAudioLevelTaskId),this._updateAudioLevelTaskId=-1,(e=this.uplinkConnection)!=null&&e.localMainAudioTrack&&(this.uplinkConnection.localMainAudioTrack.volume=0))}updateDownlinkAudioLevelFromReceiver(e){var s;let{audioReceiver:t}=e;if(!bl||!t)return;let r=(s=t.getSynchronizationSources()[0])==null?void 0:s.audioLevel;q(r)?e.remoteAudioTrack.volume=Math.min(r*2,1):t.getStats().then(n=>{n.forEach(a=>{a.type==="inbound-rtp"&&q(a.audioLevel)&&(e.remoteAudioTrack.volume=a.audioLevel)})})}getLocalAudioStats(){return f(this,null,function*(){var t;let e={};return e[this.userId]={bytesSent:0,packetsSent:0,audioLevel:0},(t=this.uplinkConnection)!=null&&t.localMainAudioTrack&&(e[this.userId]=this.uplinkConnection.localMainAudioTrack.stat),e})}getLocalVideoStats(){return f(this,null,function*(){var t,r;let e={};return e[this.userId]=((r=(t=this.uplinkConnection)==null?void 0:t.localMainVideoTrack)==null?void 0:r.stat)||{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0},e})}getTransportStats(){return f(this,null,function*(){let e={rtt:0,downlinksRTT:{}};if(this.uplinkConnection){let t=yield this._stats.getSenderStats(this.uplinkConnection);e.rtt=t.rtt}for(let[,t]of this.remotePublishedUserMap){let r=yield this._stats.getReceiverStats(t);e.downlinksRTT[r.userId]=r.rtt}return e})}getRemoteVideoStats(e){return f(this,null,function*(){let t={};for(let[r,s]of this.remotePublishedUserMap)e==="main"&&s.muteState.hasVideo&&(t[r]=s.remoteVideoTrack.stat),e==="auxiliary"&&s.muteState.hasAuxiliary&&(t[r]=s.remoteAuxiliaryTrack.stat);return t})}getRemoteAudioStats(){return f(this,null,function*(){let e={};for(let[t,r]of this.remotePublishedUserMap)r.muteState.hasAudio&&(e[t]=r.remoteAudioTrack.stat);return e})}setTurnServer(e,t){this._log.info(`set turn server: ${JSON.stringify(e)} ${t||""}`);let r=[];Array.isArray(e)?e.forEach(s=>r.push(ft.getTurnServer(s))):ft.isPlainObject(e)&&r.push(ft.getTurnServer(e)),this._turnServers=r,t&&(this._iceTransportPolicy=t)}sendStartMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:z.START_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:F.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"})}sendStopMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:z.STOP_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:F.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"})}sendStartPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?z.START_PUBLISH_TENCENT_CDN:z.START_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?F.START_PUBLISH_TENCENT_CDN_RES:F.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"})}sendStopPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?z.STOP_PUBLISH_TENCENT_CDN:z.STOP_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?F.STOP_PUBLISH_TENCENT_CDN_RES:F.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"})}sendStartPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:z.START_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:F.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"})}sendUpdatePushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:z.UPDATE_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:F.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"})}sendStopPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:z.STOP_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:F.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"})}sendAbilityStatus(e){var t;(t=this.signalChannel)==null||t.sendWaitForResponse({command:z.ABILITY_STATUS_REPORT,data:e,timeout:5e3,responseCommand:F.ABILITY_STATUS_REPORT_RESULT,commandDesc:"ability status report"}).catch(r=>{})}getIceServers(e){var t,r;return this._turnServers.length>0?this._turnServers:(t=this.scheduleResult.iceServers)!=null&&t.length?this.scheduleResult.iceServers:e!=null&&e.length?e:(r=this._iceServersFromJoin)!=null&&r.length?this._iceServersFromJoin:[]}getIceTransportPolicy(){return this.forceRelay?"relay":this._iceTransportPolicy||this.scheduleResult.iceTransportPolicy||"all"}getLogger(){return this._log}enableAIVoice(){throw new Error("Method not implemented.")}getSignalChannelUrl(){let e={mainUrl:"",backupUrl:""},t=ft.getEnv();return t?(e.mainUrl=`wss://${t}.rtc.qq.com`,e.backupUrl=e.mainUrl):this.proxy_ws?(e.mainUrl=this.proxy_ws,e.backupUrl=e.mainUrl):this.proxy_unified?(e.mainUrl=`wss://${this.proxy_unified}`,e.backupUrl=e.mainUrl):Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(e.mainUrl=`wss://${this.scheduleResult.domains[0]}`,e.backupUrl=e.mainUrl,this.scheduleResult.domains[1]&&(e.backupUrl=`wss://${this.scheduleResult.domains[1]}`)),e}getSignalInfo(){var e;return((e=this.signalChannel)==null?void 0:e.getSignalInfo())||{clientIp:"",relayIp:""}}reset(e=!1){this.stopSyncUserListInterval(),this.stopHeartbeat(),this.closeConnections(),this.clearNetworkQuality(),this.closeUplink("you exitRoom"),this.signalChannel&&(e&&this.signalChannel.keepAlive&&this.signalChannel.isConnected?this.signalChannel.stopKeepAliveIn(3600):(this.signalChannel.close(),this.setSignalChannel(null))),this._stats.reset(),this.userManager.clear(),this.userManager.removeAllListeners(),this.singlePC&&(this.singlePC.close(),this.singlePC=null),this.scheduleResult={domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null}}checkSubscribeBigSmallVideo(e){return f(this,null,function*(){let{subscribeState:t,userId:r,muteState:{hasSmall:s,hasVideo:n}}=e;if(!s&&!n||!t.video&&!t.smallVideo)return;let a=this._changeBigSmallRecords.get(r);if(!a||a.isSubscribing||a.reSubscribeCount<=0)return;let{options:c,reSubscribeCount:l}=a;if(c.video&&t.video||c.smallVideo&&t.smallVideo&&s)return;let u={audio:e.remoteAudioTrack.isSubscribed||e.remoteAudioTrack.isSubscribing,auxiliary:e.remoteAuxiliaryTrack.isSubscribed||e.remoteAuxiliaryTrack.isSubscribing,video:c.video,smallVideo:c.smallVideo};try{if(!s&&u.smallVideo&&(u.video=!0,u.smallVideo=!1),u.smallVideo===t.smallVideo&&u.video===t.video)return;a.isSubscribing=!0,a.reSubscribeCount=l-1,yield e.subscribe(u,"main"),e.remoteVideoTrack.setMediaType(u.smallVideo?8:4),this._log.info(`change [${r}] to ${u.smallVideo?"small":"big"} video successfully. count ${uo-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount=uo}catch(h){this._log.info(`change [${r}] to ${u.smallVideo?"small":"big"} video failed. count ${uo-a.reSubscribeCount}. reason: ${h}`),a.isSubscribing=!1,a.reSubscribeCount===0&&this._changeBigSmallRecords.delete(r)}})}changeType(e,t){let s={options:{video:!e,smallVideo:e},isSubscribing:!1,reSubscribeCount:uo};this._changeBigSmallRecords.set(t.userId,s),this._log.info(`set [${t.userId}] video prefer type: ${e?"small":"big"}`),this.emit("subscribe-small-video-changed",{userId:t.userId,isSmall:e});let n=this.remotePublishedUserMap.get(t.userId);n&&this.checkSubscribeBigSmallVideo(n)}get smallStreamConfig(){return this._smallStreamConfig}_initBusinessInfo(e){this._businessInfo=e.businessInfo;let t={};if(Yf(e.businessInfo)&&(t=JSON.parse(e.businessInfo)),!Ir(e.pureAudioPushMode)){if(!Number.isInteger(Number(e.pureAudioPushMode)))throw new v({code:A.INVALID_PARAMETER,message:V({key:L.INVALID_PURE_AUDIO})});this._pureAudioPushMode=e.pureAudioPushMode,t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.pure_audio_push_mod=this._pureAudioPushMode}if(!Ir(e.userDefineRecordId)){let r=/^[A-Za-z0-9_-]{1,64}$/gi;if(e.userDefineRecordId.match(r)===null)throw new v({code:A.INVALID_PARAMETER,message:V({key:L.INVALID_USER_DEFINE_RECORDID})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_record_id=e.userDefineRecordId}if(!Ir(e.userDefinePushArgs))if(Yf(e.userDefinePushArgs)&&String(e.userDefinePushArgs)&&String(e.userDefinePushArgs).length<=256)t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_push_args=e.userDefinePushArgs;else throw new v({code:A.INVALID_PARAMETER,message:V({key:L.INVALID_USER_DEFINE_PUSH_ARGS})});xn(t)||(this._businessInfo=JSON.stringify(t))}sendCustomMessage(e){var t;(t=this._customMessageManager)==null||t.send(e)}enableInsertableStreams(){return f(this,null,function*(){if(this.singlePC&&!this.singlePC.enableInsertableStreams&&Ji)return this.singlePC.enableInsertableStreams=!0,yield this.singlePC.waitForPeerConnectionConnected(),yield this.singlePC.startReconnection()})}sendSignalMessage(e){var t;return this.signalChannel?(t=this.signalChannel)==null?void 0:t.sendWaitForResponseWithRetry(e):Promise.reject(new v({code:A.INVALID_OPERATION,message:"not join"}))}get enableCodecPipeline(){return this.videoManager.encodePipeline.length>0||this.videoManager.decodePipeline.length>0||this.audioManager.encodePipeline.length>0||this.audioManager.decodePipeline.length>0}get scriptTransformWorker(){var e;return(e=this.singlePC)==null?void 0:e.scriptTransformWorker}switchRoom(e){return f(this,null,function*(){var _,I;if(!this.signalChannel)return;let{roomId:t,strRoomId:r,userSig:s,privateMapKey:n}=e,a=((_=this.scheduleResult.config)==null?void 0:_.autoSubscribeCount)||(e==null?void 0:e.autoSubscribeCount)||1,c=String(this.useStringRoomId?r:t),l=[];for(let R=0;R<a;R++)l.push({audioSsrc:Ct(),bigVideoSsrc:Ct(),bigVideoRtxSsrc:Ct(),auxVideoSsrc:Ct(),auxVideoRtxSsrc:Ct()});let u={currRoomId:this.roomId,targetRoomId:c,useStringRoomId:this.useStringRoomId,ability:(I=this.singlePC)==null?void 0:I.clientAbility,userSig:s!=null?s:this.userSig,privateMapKey:n!=null?n:this.privateMapKey,subscribe:l};this.singlePC&&(this.singlePC.autoSubscribedUserMap.clear(),this.singlePC.autoSubscribedSsrcGroups.clear(),this.singlePC.autoSubscribedSsrcGroups.set(c,l));let h=this.roomId;this.roomId=this.useStringRoomId?r:String(t),E.emit(C.SWITCH_ROOM_START,{room:this});let m=yield this.signalChannel.sendWaitForResponse({command:z.SWITCH_ROOM,responseCommand:F.SEND_SWITCH_ROOM_RES,data:u}),{code:g,message:S}=m.data;if(g===0)Ir(s)||(this.userSig=s),Ir(n)||(this.privateMapKey=n),E.emit(C.SWITCH_ROOM_SUCCESS,{room:this,currentRoomId:h,targetRoomId:c});else{this._log.error(`switch room failed. result: ${g} error: ${S}`),this.roomId=h,this.singlePC&&this.singlePC.autoSubscribedSsrcGroups.clear();let R=new v({code:A.SWITCH_ROOM_FAILED,extraCode:g,message:S});throw E.emit(C.SWITCH_ROOM_FAILED,{room:this,error:R}),R}})}isSwitchRoomSupported(){var t;let e="unable to use switchRoom API, fallback to exitRoom and enterRoom.";return((t=this.scheduleResult.config)==null?void 0:t.switchRoom)!==!0?(this._log.warn(`${e} Reason: this sdkAppId is not supported, please contact us [https://trtc.io/contact] to enable it.`),!1):this.scene!=="live"?(this._log.warn(`${e} Reason: the scene is not 'live'.`),!1):this.role!=="audience"?(this._log.warn(`${e} Reason: the role is not 'audience'.`),!1):this.singlePC?!0:(this._log.warn(`${e} Reason: is not using single peerConnection.`),!1)}requestRemoteFallbackToH264(){var e;(e=this.singlePC)==null||e.requestRemoteFallbackToH264()}};M([Te(["left",$.INIT],"joined"),Et({settings:{retries:1,timeout:0},onRetrying(e){this._log.warn(`join retry ${e}`)},onRetryFailed(e){this._log.error("join failed",e)},onError(e,t){this._isUsingCachedSchedule&&!this.isDestroyed?(this._log.warn("is using cached schedule, retry join"),Zt(!0),this.reset(),t()):this.signalChannel&&this.signalChannel.isConnected&&this.signalChannel.keepAlive?(this._log.warn("is using keepAlive ws, retry join"),this.signalChannel.close(),this.reset(),t()):(this.reset(),t())}}),sf()],ti.prototype,"join",1),M([Te("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),nf(),ec("leave room"),on({fnName:"publish",validateArgs:!1}),on({fnName:"unsubscribe",validateArgs:!1})],ti.prototype,"leave",1),M([Nt(),Xf(),Et({settings:{retries:Mi,timeout:e=>Ut(e)},onError(e,t,r){var s;(s=e.message)!=null&&s.includes("timeout")?(this._log.warn("publish timeout"),t()):(this._log.error(`publish failed: ${e}`),r(e),E.emit(C.PUBLISH_FAILED,{room:this}))}})],ti.prototype,"publish",1),M([on({fnName:"publish"}),pp("api-call"),Nt(),zf(),st(function(){var e,t;this.localTracks.size===0&&mr()&&((t=(e=this.singlePC)==null?void 0:e.getPeerConnection())==null||t.getSenders().forEach(r=>r.track&&r.replaceTrack(null)))})],ti.prototype,"unpublish",1),M([Ya(e=>{if(e.code!==A.API_CALL_ABORTED)throw e}),Xi(e=>e.userId)],ti.prototype,"replaceTrack",1),M([Xi((...e)=>e[0].userId),Sc(),af(),Et({settings:{retries:Mi,timeout:e=>Ut(e)},onError(e,t,r,s){e.message.includes("timeout")?(this._log.warn("subscribe timeout"),t()):(this._log.error(`subscribe failed: ${e}`),r(e),E.emit(C.SUBSCRIBE_FAILED,{room:this,remoteTracks:s}))}})],ti.prototype,"subscribe",1),M([on({fnName:"subscribe",callback(...e){this.singlePC||e.forEach(t=>{let r=this.remotePublishedUserMap.get(t.userId);r&&!r.isMainStreamSubscribed&&!r.isAuxStreamSubscribed&&r.close("you unsubscribed")})}}),Xi((...e)=>e[0].userId)],ti.prototype,"unsubscribe",1);Nn.create=Nn._create.bind(Nn,ti);Dl(30);var eW=Nn;export{eW as default};
143
+ }`});l(this,"yTextureRef");l(this,"uTextureRef");l(this,"vTextureRef");l(this,"Y");l(this,"U");l(this,"V");this.useProgram();let r=this.context.ctx;r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=e._canvas}_initTexture(e,r){let o=this.context.ctx,s=o.createTexture();return o.bindTexture(o.TEXTURE_2D,s),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.bindTexture(o.TEXTURE_2D,null),o.uniform1i(o.getUniformLocation(this.program,e),r),s}render(e){let r=this.context.ctx,o=this.width,s=this.height;return this.useProgram(),r.viewport(0,0,o,s),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o,s,r.LUMINANCE,r.UNSIGNED_BYTE,this.Y),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o/2,s/2,r.LUMINANCE,r.UNSIGNED_BYTE,this.U),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o/2,s/2,r.LUMINANCE,r.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,r){super.resize(e,r);let o=this.context.ctx;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this.yTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,r,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this.uTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,r/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this.vTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,r/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null)}};var Ui=[i=>{i.codec="avc1.42e01f"},i=>{delete i.hardwareAcceleration}],PE=(i,t)=>{switch(i){case"webCodecs":return t==="videoFrame"?514705:514706;case"wasm":return t==="webgl"?514707:t==="videoFrame"?514708:514709}throw new Error("decoder type not supported")};function Fy(i){return i[0]===0&&i[1]===0&&i[2]===0&&i[3]===1}var $y=0,Gu=class{constructor(t){l(this,"id",$y++);l(this,"trackDoneOB");l(this,"startOB");l(this,"stopOB");l(this,"decoder");l(this,"videoContext");l(this,"gop",0);l(this,"gop_helper",0);l(this,"waitFirstKeyFrame",!0);l(this,"startTimestamp",0);l(this,"startTime",0);l(this,"startPerformanceTime",0);l(this,"inputFrameCount",0);l(this,"decodedFrameCount",0);l(this,"decodeFrameCount",0);l(this,"downgradeLevel",0);l(this,"lastDowngradeTime",0);l(this,"lastFrameDiff",0);l(this,"lastDecodeFrameTimestamp",0);l(this,"config");l(this,"gop_before_configure",[]);l(this,"videoElement");l(this,"type","wasm");l(this,"goodType");l(this,"renderer","2d");l(this,"wasmOption");l(this,"createDecoder");l(this,"_decodeSink");l(this,"isReported",!1);l(this,"track");l(this,"stateChangeOB");l(this,"failedReason");let{track:e,createDecoder:r}=t;if(this.stateChangeOB=bt(),this.track=e,this.createDecoder=r,this.wasmOption={yuvMode:t.renderer==="webgl",wasmPath:t.wasmPath,workerMode:t.workerMode,canvas:t.canvas},this.config=t.config,this.videoElement=t.videoElement,this.renderer=t.renderer,this.trackDoneOB=we(e.availableState,ue.OFF),this.stopOB=bt(),t.type==="auto"){switch(t.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}else this.type=t.type;this.changeRenderer(this.renderer),Re(this.stateChangeOB,Mp((o,s)=>(o!==s&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:o,state:s}),s),"INITIALIZED"),Ze(this.stopOB),Le()),this.start()}start(t=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=Re(this.pipe(this.track),Ze(this.stopOB),Di());Re(e,Le(()=>{this.track.stat.framesDecoded++},r=>{if(this.track.log.error(`${this.id} play failed: ${r} retryCount: ${t}`),z.addFailedEvent({key:PE(this.type,this.renderer),error:r}),t>4)this.failedReason=r,this.stateChangeOB.next("FAILED"),z.addFailedEvent({key:514704});else{if(this.goodType){this.start(t);return}switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.start(t+1)}},()=>{this.track.log.warn(`${this.id} decoderOB completed`),z.addSuccessEvent({key:PE(this.type,this.renderer)}),z.addSuccessEvent({key:514704})})),Re(e,Pr(1),Le(()=>{this.track.player.handlePlaying("canvas"),this.goodType=this.type,this.stateChangeOB.next("STARTED")}))}mock(t){this._decodeSink?this._decodeSink.error(t):this.start()}close(t){this.stopOB.next(t)}changeRenderer(t){this.renderer=t,this.renderer==="videoFrame"&&!Cm()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(t,e=!1){var a,u;if(this.failedReason)return;this.inputFrameCount++;let r=new Uint8Array(t.data);if(!Fy(r)||r.length<5)return this.stateChangeOB.next("FAILED"),this.close(`not h26x frame ${r.subarray(0,5)}`),t;let o=r[4]&31,s=!1;switch(o){case 5:case 7:s=!0;break}if(((a=this.decoder)==null?void 0:a.state)!=="configured")return this.track.log.debug(`not configured ${this.inputFrameCount}`),s&&(this.gop_before_configure=[]),this.gop_before_configure.push({data:t.data,timestamp:t.timestamp,type:t.type}),t;this.gop_before_configure.length>0&&!e&&(this.gop_before_configure.forEach(m=>this.decode(m,!0)),this.gop_before_configure=[]);let{timestamp:n}=t;if(s?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame)if(s)this.waitFirstKeyFrame=!1,this.startTimestamp=n,this.startTime=Date.now(),this.startPerformanceTime=_e();else{this.track.log.debug(`wait first key frame ${this.inputFrameCount} ${r.subarray(0,5).join(" ")}`);return}switch(this.downgradeLevel){case 0:break;case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}(this.decodeFrameCount<10||this.decodeFrameCount%500===0)&&this.track.log.debug(`decode ${this.decodeFrameCount} gop: ${this.gop} ${n} ${(u=t.getMetadata)==null?void 0:u.call(t).rtpTimestamp}`),this.decodeFrameCount++,this.lastDecodeFrameTimestamp=n,this.decoder.decode({data:t.data,type:t.type,timestamp:this.lastDecodeFrameTimestamp});return}return t}checkDowngradeByFrameDiff(){let t=this.downgradeLevel,e=this.decodeFrameCount-this.decodedFrameCount;e>this.lastFrameDiff?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):e<=this.lastFrameDiff&&this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==t&&this.track.log.debug(`downgrade level ${t} to ${this.downgradeLevel} ${this.decodeFrameCount} frameDiff: ${e}, lastFrameDiff: ${this.lastFrameDiff}`),this.lastFrameDiff=e,this.lastDowngradeTime=Date.now()}checkDowngradeByTimestampDiff(t){let e=this.downgradeLevel;this.lastDecodeFrameTimestamp-t>9e4?(this.downgradeLevel++,this.downgradeLevel>4&&(this.downgradeLevel=4)):this.downgradeLevel>0&&this.downgradeLevel--,this.downgradeLevel!==e&&this.track.log.debug(`downgrade level ${e} to ${this.downgradeLevel}`)}pipe(t){return e=>y(this,null,function*(){this._decodeSink=e;let r,o=t.mediaTrack;e.defer(()=>{var a;o&&(t.player.setCanvas(),t.setInputMediaStreamTrack(o)),r==null||r.close(),(a=this.videoContext)==null||a.destroy(),delete this._decodeSink});let{renderer:s,type:n}=this;t.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`);try{switch(n){case"wasm":r=this.createDecoder(n,this.wasmOption);break;case"webCodecs":for(let u=0;u<=Ui.length;u++){let{supported:m}=yield VideoDecoder.isConfigSupported(this.config);if(m)break;if(u===Ui.length){e.error(3);return}Ui[u](this.config)}r=this.createDecoder(n);break;default:throw new Error("not supported yet")}let a=0;if(r.on("videoFrame",u=>{this.decodedFrameCount++,a++,(a<=10||a%500===0)&&t.log.debug(`frame ${a} ${this.decodedFrameCount}/${this.decodeFrameCount} decoded ${u.timestamp}`),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(u.timestamp)),e.next(u)}),r.on("error",u=>{t.log.error(u),e.error(n==="webCodecs"?4:8)}),yield r.initialize(this.videoElement),!this._decodeSink)return;if(r.configure(this.config),n==="wasm"&&s==="webgl"){this.videoContext=new It({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create(),this.videoContext.on(It.UNAVAILABLE,m=>{t.log.error(m),e.error(7)});let u=new Wu(this.videoContext);r.on("videoCodecInfo",m=>u.resize(m.width,m.height)),r.on("videoFrame",m=>{({y:u.Y,u:u.U,v:u.V}=m),this.downgradeLevel===1?this.decodedFrameCount%2===0&&u.render(this.decodedFrameCount):u.render(this.decodedFrameCount)}),t.source=u,t.player.setCanvas(this.videoContext._canvas,2)}else if(s==="videoFrame"){t.player.setCanvas();let u=new MediaStreamTrackGenerator({kind:"video"}),m=u.writable.getWriter();t.setInputMediaStreamTrack(u),r.on("videoFrame",h=>m.write(h))}else{this.videoContext=new Nt({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create({alpha:!1});let u=this.videoContext.createVideoImageSource();r.on("videoFrame",h=>{try{u.image=h,u.update()}catch(g){delete this.goodType,t.log.error(g),e.error(11)}});let m=new ds(this.videoContext,{name:"remotePlayer",logger:t.log});u.connect(m),t.source=u,t.player.setCanvas(this.videoContext._canvas,2)}this.decoder=r}catch(a){t.log.error(a),e.error(n==="webCodecs"?2:6)}})}};var rc=class extends LE.EventEmitter{constructor(e){super();this.room=e;l(this,"videoContext");l(this,"_glVideoContext");l(this,"_2dVideoContext");l(this,"destination");l(this,"smallVideoContext");l(this,"smallDestination");l(this,"smallTrackSource");l(this,"smallImageSource");l(this,"_isMirror",!1);l(this,"_rotation",0);l(this,"cameraTrack");l(this,"cameraNode");l(this,"transformNode");l(this,"mixNode");l(this,"screenTrack");l(this,"screenNode");l(this,"selfModel",!1);l(this,"blurRadius",3);l(this,"arTrack");l(this,"_enableFaceCentering",!1);l(this,"onAbort");l(this,"Wasm");l(this,"waterMarkNode");l(this,"_waterMarkOption");l(this,"watermarkImageList",[]);l(this,"_beautyParams");l(this,"isUsingArTrack",!1);l(this,"mixTrack");l(this,"_isMixScreen",!1);l(this,"_virtualBackground");l(this,"_virtualBackgroundAbortCallback");l(this,"virtualBackgroundInstance");l(this,"_bgAssetPath");l(this,"log",$.createLogger({id:"vm"}));l(this,"_mat4");l(this,"_checkId",0);l(this,"_use2d",!1);l(this,"_autoSwitchRenderMode",!0);l(this,"encodePipeline",[]);l(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new Nt({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get smallMode(){var e;return((e=this.room)==null?void 0:e.smallMode)||"canvas"}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get _isRotate(){return this._rotation!==0}get _isTransform(){return this._isMirror||this._isRotate}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(e){if(this._autoSwitchRenderMode=e==="auto",this._autoSwitchRenderMode)return;let r=e==="2d";this._use2d!==r&&(this._use2d=r,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get cameraResolution(){var o;let{width:e,height:r}=((o=this.cameraTrack)==null?void 0:o.settings)||{};return mr(this._rotation)?{width:r,height:e}:{width:e,height:r}}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new Nt({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new It({frameRate:15,logger:this.log,name:"m"});else if(this._glVideoContext.available)return this._glVideoContext;return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(),this._glVideoContext.on(It.UNAVAILABLE,e=>{var r;this.emit("error",e),this.log.warn("video context unavailable",e),(r=this._virtualBackgroundAbortCallback)==null||r.call(this,e),this.update().catch(o=>{this.log.error(o)})})}catch(e){this.emit("error",e)}}initVirtualBackground(e,r){this.onAbort=e,this._mat4=r}enablePrintDetail(e=2e3){this._checkId=ht.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,r;(e=this._2dVideoContext)==null||e.destroy(),(r=this._glVideoContext)==null||r.destroy(),this.smallVideoContext.destroy(),ht.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(Xr||this._isMixScreen||this._isTransform||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",r){let o=e==="videoCtxGl"?512700:512701;r?z.addFailedEvent({key:o,error:r}):z.addSuccessEvent({key:o})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let r=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(r)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new It({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var e;return(e=this.smallDestination)==null?void 0:e.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var e;return(e=this.cameraTrack)==null?void 0:e.mediaTrack}setSmallVideo(e,r){if(this.smallMode!=="api")if(e){if(!this.smallVideoContext.available){if(this.smallVideoContext.create({alpha:!1}),!this.smallVideoContext.available)return;this.smallDestination=new au(this.smallVideoContext,e,this.log),this.smallVideoContext.on(It.UNAVAILABLE,o=>{this.log.warn("small video context lost",o)})}if(this.smallVideoContext.frameRate=e.frameRate,this.smallDestination.resolution=e,r)this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=r:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(r),this.smallImageSource.resize(r.width,r.height),this.smallImageSource.connect(this.smallDestination));else if(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource)this.smallTrackSource.replaceTrack(this.initialTrack);else{this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource");let{width:o,height:s}=this.cameraTrack.settings;this.smallTrackSource.resize(o,s),this.smallTrackSource.connect(this.smallDestination)}}else this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource)}_setMainOutput(e){var r;try{let o=this.cameraTrack,{small:s,player:n}=o;Xr&&n.setCanvas(e);let a=e&&((r=this.destination)==null?void 0:r.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),a=this.arTrack),this.log.info(`set main output ${a?a.label:"no output track"}`),this.setSmallVideo(s,e),o.setOutputMediaStreamTrack(a)}catch(o){this.log.error("set main output failed",o)}}update(e=!1){return y(this,null,function*(){var s;if(!this.cameraTrack||!this.initialTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:r,profile:o}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams)this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),Mt===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof hr?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof hr?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(r.width,r.height);else if(e&&this.cameraNode&&this.destination)this.cameraNode.replaceTrack(this.initialTrack);else{this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new nu(this.videoContext,{name:"mainDestination",logger:this.log});let{width:n,height:a}=this.cameraResolution,u=yield this.getWatermarkImage(n,a);this._waterMarkOption={x:0,y:0,width:u.width,height:u.height,image:u},this.cameraNode=new Hu(this.videoContext,{input:this.initialTrack,width:n,height:a,mirror:this._isMirror,rotation:this._rotation,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,Wasm:this.Wasm,enableFaceCentering:this._enableFaceCentering,onAbort:this.onAbort,mat4:this._mat4}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute()}if(this.videoContext.frameRate=o.frameRate,this._use2d){let n=this.cameraNode;if(n.disconnect(),this._isTransform&&(this.transformNode?(this.transformNode.mirror=this._isMirror,this.transformNode.rotation=this._rotation):this.transformNode=new fr(this.videoContext,this.log,this._isMirror,this._rotation),n=n.connect(this.transformNode),n.disconnect(),this.log.info(`start mirror ${this._isMirror} rotate ${this.rotation}`)),this.mixNode&&this.mixNode.close(),delete this.mixNode,this._isMixScreen||this._hasWaterMark){if(this.mixNode=new fn(this.videoContext,this.log),n.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption)this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y;else if(this.waterMarkNode){let{width:u,height:m}=this.cameraResolution;this.waterMarkNode.image=yield this.getWatermarkImage(u,m),u&&m&&this.waterMarkNode.resize(u,m)}(s=this.waterMarkNode)==null||s.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&(this.screenNode||(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource"),this.screenNode.resize(this.screenTrack.settings.width,this.screenTrack.settings.height)),this.screenNode.shouldUpdate=!1,this.screenNode.connect(this.mixNode,{zIndex:0})),n=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)}n.connect(this.destination)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}clearLastFrame(){var e;this.destination&&((e=this.destination.ctx2d)==null||e.clearRect(0,0,this.destination.width,this.destination.height))}changeInput(e){var r,o,s,n,a;if(e instanceof ii)return this.log.info("change screen input",(r=e.mediaTrack)==null?void 0:r.label),this.setScreenTrack(e);if(e instanceof nr)return this.log.info("change video input",(o=e.mediaTrack)==null?void 0:o.label),this.setCameraTrack(e);if(e instanceof fo){this.log.info("change remote input",(s=e.mediaTrack)==null?void 0:s.label);let u=e.mediaTrack;return e.setOutputMediaStreamTrack(u)}if(e instanceof ls)return this.log.info("change mix input",(n=e.outMediaTrack)==null?void 0:n.label),this.setMixTrack(e);this.log.warn("change unknown input",(a=e.mediaTrack)==null?void 0:a.label)}removeInput(e){var r;e instanceof ii?((r=this.screenNode)==null||r.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof nr?this._isMixScreen?(delete this.cameraNode,this.cameraTrack._inputTrack=null,this.update()):(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof fo?e.source&&e.source.context.destroy():e instanceof ls&&(delete this.mixTrack,this.update())}setMixTrack(e){this.mixTrack=e}setCameraTrack(e){return this.cameraTrack=e,this.update(!0)}setScreenTrack(e){return y(this,null,function*(){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):yield this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)})}getWatermarkImage(e,r){return y(this,null,function*(){let o=document.createElement("canvas");r&&e&&(o.height=r,o.width=e);let s=o.getContext("2d");if(!s)throw new de({code:q.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((n,a)=>n.zIndex-a.zIndex),this.watermarkImageList.forEach(({image:n,x:a,y:u,width:m,height:h})=>{s.drawImage(n,a,u,m,h)}),$s(o.toDataURL())})}pushWaterMarkImageList(e){let{type:r}=e;this.watermarkImageList.some(s=>s.imageUrl===e.imageUrl&&s.height===e.height&&s.width===e.width&&s.x===e.x&&s.y===e.y&&s.type===e.type&&s.zIndex===e.zIndex)||((r==="mute"||r==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(s=>s.type!==r)),this.watermarkImageList.push(e))}setBeautyParams(e){return y(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return y(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return y(this,null,function*(){let r;try{r=yield $s((e==null?void 0:e.imageElement)||e.imageUrl)}catch(g){throw new de({code:q.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:o=0,y:s=0,width:n=r.width,height:a=r.height,type:u="watermark",zIndex:m=2}=e;this.watermarkImageList.some(g=>g.type===u)?(this.watermarkImageList=this.watermarkImageList.filter(g=>g.type!==u),this.pushWaterMarkImageList({x:o,y:s,width:n,height:a,image:r,zIndex:m,type:u,imageUrl:e.imageUrl}),r=yield this.getWatermarkImage(this.cameraResolution.width,this.cameraResolution.height),this._waterMarkOption={x:0,y:0,width:r.width,height:r.height,image:r},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(r.width,r.height),this.waterMarkNode.image=r):this.update()):(this.pushWaterMarkImageList({x:o,y:s,width:n,height:a,image:r,zIndex:m,type:u,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(g,T)=>g==="imageUrl"?void 0:T))})}deleteWatermark(e="watermark"){return y(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(r=>r.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(r,o)=>r==="imageUrl"?void 0:o)),yield this.freshWatermark()})}freshWatermark(){return y(this,null,function*(){var s;(s=this.waterMarkNode)==null||s.close(),delete this.waterMarkNode,delete this._waterMarkOption;let{width:e,height:r}=this.cameraResolution,o=yield this.getWatermarkImage(e,r);this._waterMarkOption={x:0,y:0,width:o.width,height:o.height,image:o},this.update()})}setVirtualBackground(e){return y(this,null,function*(){var r;if(!e)delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;else{if(e.onAbort&&(this._virtualBackgroundAbortCallback=e.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=e.assetPath,e.type==="image"?this._virtualBackground=yield $s(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type),this._enableFaceCentering=(r=e.enableFaceCentering)!=null?r:this._enableFaceCentering}if(this.log.info(`${this._virtualBackground?"start":"stop"} virtual background, ${(e==null?void 0:e.type)||""}, ${this.blurRadius||""}`),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new de({code:q.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var r;this._isMixScreen=e,this._isMixScreen||((r=this.screenNode)==null||r.close(),delete this.screenNode),this.update()}set mirror(e){var r;this._isMirror!==e&&(this._isMirror=e,this._isTransform||((r=this.transformNode)==null||r.close(),delete this.transformNode),this.update())}get mirror(){return this._isMirror}set rotation(e){var r;this._rotation!==e&&(this._rotation=e,this._isTransform||((r=this.transformNode)==null||r.close(),delete this.transformNode),this.update())}get rotation(){return this._rotation}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return y(this,null,function*(){var e;(e=this.cameraTrack)!=null&&e.mediaTrack&&(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var e;this.isUsingArTrack=!1,(e=this.arTrack)==null||e.stop(),this.arTrack=void 0,this.update()}createDecodeContext(e){return new Gu(e)}clear(){var e;(e=this.videoContext)==null||e.disconnect(),delete this.destination,delete this.cameraNode,delete this.transformNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor({processor:e,type:r}){var o;this.encodePipeline.includes(e)||(this.encodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}addDecodeProcessor({processor:e,type:r}){var o;this.decodePipeline.includes(e)||(this.decodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};Z([yg(function(e){this.log.error("update failed",e)})],rc.prototype,"update",1);var By=0;var ju=class extends ue{constructor(e){super("room");l(this,"seq",++By);l(this,"sdkAppId");l(this,"userId");l(this,"userSig");l(this,"privateMapKey");l(this,"latencyLevel");l(this,"tinyId");l(this,"scene");l(this,"roomId");l(this,"useStringRoomId");l(this,"role","anchor");l(this,"joinParams",null);l(this,"localTracks",new Set);l(this,"enableAutoPlayDialog",!0);l(this,"autoReceiveAudio",!0);l(this,"autoReceiveVideo",!0);l(this,"proxy_ws");l(this,"proxy_wt");l(this,"proxy_unified");l(this,"checkSystemResult",{result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0,isH265EncodeSupported:!0,isH265DecodeSupported:!0}});l(this,"keyPointManager");l(this,"audioManager");l(this,"videoManager");l(this,"callDurationCalculator");l(this,"badCaseDetector");l(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});l(this,"videoDecodeFallbackType");l(this,"smallMode","canvas");l(this,"_isUsingCachedSchedule",!1);l(this,"_log",$.createLogger({id:`r${this.seq}`}));l(this,"_joinedTimestamp",0);l(this,"_sdkType");l(this,"heartbeatReport");l(this,"quality");l(this,"enableSEI");l(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,Je(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),Je(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),Je(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new OE({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new xE({room:this}),this.badCaseDetector=new kE({room:this}),this.audioManager=new uu(this),this.videoManager=new rc(this)}get scriptTransformWorker(){}get isMainStreamPublished(){for(let e of this.localTracks)if(e.mediaType&4)return!0;return!1}get isAuxStreamPublished(){for(let e of this.localTracks)if(e.mediaType&2)return!0;return!1}get hasAuxStream(){for(let e of this.remotePublishedUserMap.values())if(e.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainVideoTrack(){for(let e of this.localTracks)if(e.mediaType&4)return e;return null}get localAuxVideoTrack(){for(let e of this.localTracks)if(e.mediaType&2)return e;return null}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(e){return y(this,null,function*(){return this.publish(e)})}removeTrack(e){return y(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return y(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(Ne(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(Ft(e)){let{websocketProxy:r,webtransportProxy:o,loggerProxy:s,scheduleProxy:n,unifiedProxy:a}=e;this.proxy_ws=r,this.proxy_wt=o,this.proxy_unified=a,a?(yu([a,a]),Uo(`https://${a}`)):(s&&Uo(s),n&&yu(n))}V.once(F.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:si.main,sched_back_domain:si.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return y(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(r=>{e[r.userId]=r.remoteAudioTrack.stat}),e})}getTransportStats(){return y(this,null,function*(){var r;let e={rtt:((r=this.quality)==null?void 0:r.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let o of this.quality.downlinkInfo)e.downlinksRTT[o.userId]=o.rtt;return e})}getRemoteVideoStats(){return y(this,arguments,function*(e="main"){let r={};return this.remotePublishedUserMap.forEach(o=>{let s=e==="auxiliary"?o.remoteAuxiliaryTrack:o.remoteVideoTrack;r[o.userId]=s.stat}),r})}checkDestroy(){if(this.isDestroyed)throw new de({code:q.INVALID_OPERATION,message:Be({key:$e.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(Yt.INVALID_DESTROY),new de({code:q.INVALID_OPERATION,message:Be({key:$e.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,V.emit(F.ROOM_DESTROY,{room:this})}schedule(e,r){return y(this,null,function*(){var s,n,a,u;let o=_e();try{let{isCached:m,result:h,detailCost:g}=yield Qp({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:at,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:r,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=m,this._log.info(`schedule cache:${+m} ${lr(h,{keysToExclude:["username","credential"]})}`),m&&V.once(F.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=J(J({},this.scheduleResult),h),Pe((s=h.config)==null?void 0:s.retryCount)&&Sl(h.config.retryCount),Ne((n=h.config)==null?void 0:n.loggerDomain)&&Uo(h.config.loggerDomain),this.videoDecodeFallbackType=((a=h.config)==null?void 0:a.videoDecodeFallback)||this.videoDecodeFallbackType,this.smallMode=((u=h.config)==null?void 0:u.smallMode)||this.smallMode,V.emit(F.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:g}),z.addSuccessEvent({key:521700,cost:_e()-o})}catch(m){throw z.addFailedEvent({key:521700,error:m}),m}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}switchRoom(e){return Promise.reject()}isSwitchRoomSupported(){return!1}};function UE(i,t=!1){let e=Object.defineProperties(bt(),{postMessage:{value:i.postMessage.bind(i)},port:{get(){return i},set(o){i.onmessage=He,i.onmessageerror=He,i=o,r()}}});function r(){i.onmessage=o=>{o.data?o.ports.length||t?e.next(o):e.next(o.data):(e.complete(),i.close())},i.onmessageerror=o=>{e.error(o),i.close()}}return r(),e}var fh=class extends fe{constructor(t,e){super(t);let r=new fe(t);r.next=He,e(r)}},UB=Se(fh,"takeUntilComplete");var xt={useWt:!0,useAINS:!0,useHardDecoder:"prefer-software",useHardEncoder:"prefer-software",unreliable:!1,debug:!1,assetsPath:"",enableUpload:!0},VE="__INLINE__WORKER__",FE="__INLINE__WASM__",{debug:$E}=console;xt.debug||(console.debug=()=>{});var Hy=!VE.startsWith("__"),Wy=!FE.startsWith("__");function qu(){let i=Go(`${xt.assetsPath?`${xt.assetsPath}/`:""}worker.js`);return Hy?URL.createObjectURL(new Blob([atob(VE)],{type:"application/javascript"})):i.startsWith("http")?fetch(i).then(t=>t.blob().then(e=>URL.createObjectURL(e))):i}var ic;function zu(){return y(this,null,function*(){let i=xt.assetsPath?`${xt.assetsPath}/`:"";return ic||(Wy?ic=new TextEncoder().encode(atob(FE)).buffer:ic=yield fetch(Go(`${i}av_processing.wasm`)).then(t=>t.arrayBuffer()),ic)})}var gh=class{constructor(){l(this,"playPort");l(this,"playPortSent",!1);l(this,"worklet");l(this,"workletPromise")}init(){return this.workletPromise||(this.workletPromise=this._init()),this.workletPromise}_init(){return y(this,null,function*(){let t=Xe("player"),e=qu();try{yield t.audioWorklet.addModule(typeof e=="string"?e:yield e),$.info("global audio player worklet addModule success",e)}catch(r){throw $.error("global audio player worklet addModule failed:",r),r}return this.worklet=new AudioWorkletNode(t,"global-audio-player",{processorOptions:{wasm:yield zu(),flag:xt},numberOfInputs:2}),$.info("global audio player worklet created",t.state),this.worklet.connect(t.destination),this.playPort=this.worklet.port,this.playPort})}playAudio(t){return y(this,null,function*(){this.playPortSent||(this.playPortSent=!0,t(yield this.init()))})}},Ju=new gh;var Eh=(()=>{if(typeof self=="undefined")return!1;if(!("top"in self&&self!==top)){if("showOpenFilePicker"in self)return"showOpenFilePicker"}return!1})(),jB=Eh?Promise.resolve().then(function(){return zy}):Promise.resolve().then(function(){return Ky});var qB=Eh?Promise.resolve().then(function(){return Xy}):Promise.resolve().then(function(){return tA});var Gy=Eh?Promise.resolve().then(function(){return Yy}):Promise.resolve().then(function(){return iA});function Th(...i){return y(this,null,function*(){return(yield Gy).default(...i)})}var jy=i=>y(void 0,null,function*(){let t=yield i.getFile();return t.handle=i,t}),qy=(...t)=>y(void 0,[...t],function*(i=[{}]){Array.isArray(i)||(i=[i]);let e=[];i.forEach((s,n)=>{e[n]={description:s.description||"Files",accept:{}},s.mimeTypes?s.mimeTypes.map(a=>{e[n].accept[a]=s.extensions||[]}):e[n].accept["*/*"]=s.extensions||[]});let r=yield window.showOpenFilePicker({id:i[0].id,startIn:i[0].startIn,types:e,multiple:i[0].multiple||!1,excludeAcceptAllOption:i[0].excludeAcceptAllOption||!1}),o=yield Promise.all(r.map(jy));return i[0].multiple?o:o[0]}),zy={__proto__:null,default:qy};function Xu(i){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var r=e.done;return Promise.resolve(e.value).then(function(o){return{value:o,done:r}})}return Xu=function(e){this.s=e,this.n=e.next},Xu.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return r===void 0?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return r===void 0?Promise.reject(e):t(r.apply(this.s,arguments))}},new Xu(i)}var BE=(o,s,...n)=>y(void 0,[o,s,...n],function*(i,t,e=i.name,r){let a=[],u=[];var m,h=!1,g=!1;try{for(var T,A=function(C){var N,D,P,K=2;for(typeof Symbol!="undefined"&&(D=Symbol.asyncIterator,P=Symbol.iterator);K--;){if(D&&(N=C[D])!=null)return N.call(C);if(P&&(N=C[P])!=null)return new Xu(N.call(C));D="@@asyncIterator",P="@@iterator"}throw new TypeError("Object is not async iterable")}(i.values());h=!(T=yield A.next()).done;h=!1){let C=T.value,N=`${e}/${C.name}`;C.kind==="file"?u.push(C.getFile().then(D=>(D.directoryHandle=i,D.handle=C,Object.defineProperty(D,"webkitRelativePath",{configurable:!0,enumerable:!0,get:()=>N})))):C.kind!=="directory"||!t||r&&r(C)||a.push(BE(C,t,N,r))}}catch(C){g=!0,m=C}finally{try{h&&A.return!=null&&(yield A.return())}finally{if(g)throw m}}return[...(yield Promise.all(a)).flat(),...yield Promise.all(u)]}),Jy=(...t)=>y(void 0,[...t],function*(i={}){i.recursive=i.recursive||!1,i.mode=i.mode||"read";let e=yield window.showDirectoryPicker({id:i.id,startIn:i.startIn,mode:i.mode});return BE(e,i.recursive,void 0,i.skipDirectory)}),Xy={__proto__:null,default:Jy},Qy=(s,...n)=>y(void 0,[s,...n],function*(i,t=[{}],e=null,r=!1,o=null){Array.isArray(t)||(t=[t]),t[0].fileName=t[0].fileName||"Untitled";let a=[],u=null;if(i instanceof Blob&&i.type?u=i.type:i.headers&&i.headers.get("content-type")&&(u=i.headers.get("content-type")),t.forEach((g,T)=>{a[T]={description:g.description||"Files",accept:{}},g.mimeTypes?(T===0&&u&&g.mimeTypes.push(u),g.mimeTypes.map(A=>{a[T].accept[A]=g.extensions||[]})):u?a[T].accept[u]=g.extensions||[]:a[T].accept["*/*"]=g.extensions||[]}),e)try{yield e.getFile()}catch(g){if(e=null,r)throw g}let m=e||(yield window.showSaveFilePicker({suggestedName:t[0].fileName,id:t[0].id,startIn:t[0].startIn,types:a,excludeAcceptAllOption:t[0].excludeAcceptAllOption||!1}));!e&&o&&o(m);let h=yield m.createWritable();return"stream"in i?(yield i.stream().pipeTo(h),m):"body"in i?(yield i.body.pipeTo(h),m):(yield h.write(yield i),yield h.close(),m)}),Yy={__proto__:null,default:Qy},Zy=(...t)=>y(void 0,[...t],function*(i=[{}]){return Array.isArray(i)||(i=[i]),new Promise((e,r)=>{let o=document.createElement("input");o.type="file";let s=[...i.map(m=>m.mimeTypes||[]),...i.map(m=>m.extensions||[])].join();o.multiple=i[0].multiple||!1,o.accept=s||"",o.style.display="none",document.body.append(o);let n=m=>{typeof a=="function"&&a(),e(m)},a=i[0].legacySetup&&i[0].legacySetup(n,()=>a(r),o),u=()=>{window.removeEventListener("focus",u),o.remove()};o.addEventListener("click",()=>{window.addEventListener("focus",u)}),o.addEventListener("change",()=>{window.removeEventListener("focus",u),o.remove(),n(o.multiple?Array.from(o.files):o.files[0])}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),Ky={__proto__:null,default:Zy},eA=(...t)=>y(void 0,[...t],function*(i=[{}]){return Array.isArray(i)||(i=[i]),i[0].recursive=i[0].recursive||!1,new Promise((e,r)=>{let o=document.createElement("input");o.type="file",o.webkitdirectory=!0;let s=a=>{typeof n=="function"&&n(),e(a)},n=i[0].legacySetup&&i[0].legacySetup(s,()=>n(r),o);o.addEventListener("change",()=>{let a=Array.from(o.files);i[0].recursive?i[0].recursive&&i[0].skipDirectory&&(a=a.filter(u=>u.webkitRelativePath.split("/").every(m=>!i[0].skipDirectory({name:m,kind:"directory"})))):a=a.filter(u=>u.webkitRelativePath.split("/").length===2),s(a)}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),tA={__proto__:null,default:eA},rA=(e,...r)=>y(void 0,[e,...r],function*(i,t={}){Array.isArray(t)&&(t=t[0]);let o=document.createElement("a"),s=i;"body"in i&&(s=yield function(u,m){return y(this,null,function*(){let h=u.getReader(),g=new ReadableStream({start:C=>function N(){return y(this,null,function*(){return h.read().then(({done:D,value:P})=>{if(!D)return C.enqueue(P),N();C.close()})})}()}),T=new Response(g),A=yield T.blob();return h.releaseLock(),new Blob([A],{type:m})})}(i.body,i.headers.get("content-type"))),o.download=t.fileName||"Untitled",o.href=URL.createObjectURL(yield s);let n=()=>{typeof a=="function"&&a()},a=t.legacySetup&&t.legacySetup(n,()=>a(),o);return o.addEventListener("click",()=>{setTimeout(()=>URL.revokeObjectURL(o.href),3e4),n()}),o.click(),null}),iA={__proto__:null,default:rA};var _h=class{constructor(t){this.name=t;l(this,"ready");l(this,"worker");l(this,"ports");l(this,"ids",1);l(this,"transactions",new Map);l(this,"log");l(this,"addTransaction",t=>(this.transactions.set(++this.ids,t),this.ids))}postMessage(t,e){var r;(r=this.worker)==null||r.postMessage(t,e)}create(t){return y(this,null,function*(){if(this.ready)return this.ready;t||(t=this.name),console.time(`createWorker_${t}`);let e=qu(),r=new Worker(typeof e=="string"?e:yield e,{name:t});return this.worker=r,this.ready=new Promise((o,s)=>y(this,null,function*(){r.onmessage=({data:{id:n,type:a,payload:u}})=>{var m;if(n)(m=this.transactions.get(n))==null||m(u),this.transactions.delete(n);else switch(a){case"error":console.timeEnd(`createWorker_${t}`),console.warn("worker error:",u),s(u);break;case"ready":console.timeEnd(`createWorker_${t}`),o(this);break;case"updateAFSM":if(u.value){let h=typeof u.old=="string"?u.old:`${u.old.action}ing`,g=typeof u.value=="string"?u.value:`${u.value.action}ing`;console.log($c(),u.group,u.name,h,"\u{1F449}",g)}break;case"log":console.log(u);break;case"glog":window.dispatchEvent(new CustomEvent(a,{detail:u}));break}},r.postMessage({wasm:yield zu(),flag:xt},this.ports)}))})}destroy(){var t;console.log("destroy worker",this.name),delete this.ready,(t=this.worker)==null||t.terminate()}},Sh=class{constructor(t,e,r){this.worker=t;l(this,"channel",new MessageChannel);l(this,"ready");this.ready=new Promise((o,s)=>{this.worker.postMessage({id:this.worker.addTransaction(o),payload:e},[this.channel.port2])}).then(o=>(o.err===0&&(this.worker.sessionCount++,this.channel.port1.onmessage=r),o))}postMessage(...t){this.channel.port1.postMessage(...t)}destroy(){--this.worker.sessionCount===0&&this.worker.destroy()}},Ih=class i extends _h{constructor(){super("main");l(this,"switchValue",new Map);l(this,"extendChannel");l(this,"sessionCount",0)}setSwitchValue(e,r){var o;this.switchValue.set(e,r),(o=this.extendChannel)==null||o.port1.postMessage([e,r])}create(){return y(this,null,function*(){return this.ready?this.ready:(this.extendChannel=new MessageChannel,this.ports=[this.extendChannel.port2],yield jt(i.prototype,this,"create").call(this),this.switchValue.forEach((e,r)=>{this.extendChannel.port1.postMessage([r,e])}),this)})}},yo=new Ih,Es,oA=-1;function HE(i){return console.log(i),Es.push(i.slice()),Es.length>1e3&&Es.shift(),i}function WE(i){return y(this,null,function*(){switch(oA){case 0:this.edpl.willDecodeAudio=HE;break;case 2:this.edpl.didEncodeAudio=HE;break}yield yo.create(),V.emit(F.JOIN_SEND_CMD,{room:this});let t=new Sh(yo,i,o=>{let s=o.data;if(typeof s=="string")this.onWorkerEvent(s);else if(s==null)this.onWorkerEvent("client-banned",0),t.destroy();else{let{cmd:n,payload:a}=s;this.onWorkerEvent(n,a)}}),{err:e,data:r}=yield t.ready;if(typeof e=="number"){if(V.emit(F.JOIN_RECEIVED_CMD_RES,{room:this,code:e}),e===0)return Object.assign(this,r,{session:t});throw new de({code:q.JOIN_ROOM_FAILED,extraCode:Number(e),message:Be({key:$e.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:e,errorMsg:""}})})}else throw e})}Object.defineProperties(window,{useAINS:{set:yh},useWt:{set:sA},enableDebug:{set(i){console.debug=i?$E:()=>{},yo.setSwitchValue("enableDebug",i)}},useV2:{set:Ah},dump:{value(){if(Es||(console.warn("dump audio will be activated at next time join room"),Es=[]),!Es.length){console.warn("no audio data to dump,try it later");return}let i=[];return Es.forEach(t=>{i.push(new Uint16Array([t.length])),i.push(t)}),Th(new Blob(i),{fileName:"audio dump hex",extensions:[".hex"]})}},dumpAudio:{value(i="audio",t=2e3){let e=[],r=new Promise(o=>{let s=new MessageChannel;yo.extendChannel.port1.postMessage(["dump",i],[s.port1]),s.port2.onmessage=({data:n})=>{console.log(n),e.push(n),e.length>t&&(s.port2.onmessage=null,yo.extendChannel.port1.postMessage(["dump",i]),s.port2.close(),o(new Blob(e)))}});return Th(r,{fileName:i,extensions:[".pcm"]})}},hardDec:{set(i){switch(i){case!0:xt.useHardDecoder="prefer-hardware";break;case!1:xt.useHardDecoder="prefer-software";break;default:xt.useHardDecoder="no-preference"}}}});function yh(i){return y(this,null,function*(){yo.setSwitchValue("useAINS",i)})}function Ah(i){return y(this,null,function*(){yo.setSwitchValue("useV2",i)})}function sA(i){return y(this,null,function*(){yo.setSwitchValue("useWt",i)})}function GE(i){let t=new MediaStreamTrackGenerator({kind:"audio"});i.setInputMediaStreamTrack(t),i.player.setVolume(0),this.postMessage({cmd:"pullAudio",payload:{tinyId:i.tinyId,writable:t.writable}},[t.writable])}function jE(i){return y(this,null,function*(){var o;this._log.info("pull video",i);let t=Date.now(),e=0,r=new MessageChannel;this.postMessage({cmd:"pullVideo",payload:{mediaType:i.mediaType,tinyId:i.tinyId}},[r.port1]),(o=i.stat).framesReceived||(o.framesReceived=0),Re(UE(r.port2),Ze(we(i,ue.INIT)),Le(s=>{let{data:n,packetsReceived:a}=s;i.stat.packetsReceived=a,i.stat.framesReceived++,e++;let u=n[4]&31;if(e<=10){let h=Array.from(n.slice(0,10)).map(g=>g.toString(16).padStart(2,"0")).join(" ");this._log.info(`Frame ${e} - Size: ${n.length} bytes, Type: ${u}, Timestamp: ${Date.now()-t}ms First 10 bytes: ${h}`)}let m;switch(u){case 5:case 7:m="key";break;default:m="delta";break}i.isAvailable?i.decodeFrame({data:n.buffer,type:m,timestamp:(Date.now()-t)*1e3}):console.warn("track is not available")},()=>{},()=>{r.port2.postMessage(null),r.port2.close()}))})}var Qu=[];function zE(i){var u;let t=bt();if(this.state!=="joined")throw new Error("Room is not joined");if(i.state==="publish")return;for(let m=0;m<=Qu.length;m++)if(!Qu[m]){Qu[m]=this,this.index=m;break}let e=i.profile;this._log.info("start push audio",this.index,e);let r=new MessageChannel,o=i.enableEncodeFrame?new MessageChannel:null;(u=this.session)==null||u.postMessage({cmd:"pushAudio",payload:J({index:this.index},e)},o?[r.port2,o.port2]:[r.port2]),r.port1.onmessage=m=>{m.data==null||(typeof m.data=="number"?t.next(m.data):o&&o.port1.postMessage(Ee(J({},m.data),{data:new Uint8Array(i.encodeFrame({data:m.data.data.buffer,timestamp:m.data.timestamp}).data)})))};let s=new MediaStream,n,a=m=>{let h=s.getAudioTracks()[0];h&&(n.disconnect(),s.removeTrack(h)),s.addTrack(m),this._log.info("push audio track:",m.readyState,m.getSettings().deviceId),n=Xe("player").createMediaStreamSource(s),n.connect(Ju.worklet,0,this.index)};Re(we(i,"output-media-track-changed"),Ze(we(i,"ready")),Le(a,console.error,()=>{this._log.info("stop push audio",e),i.volume=0,n.disconnect(),Qu[this.index]=null,o&&o.port1.postMessage(null),r.port1.postMessage(null)})),Re(t,Ba(m=>i.volume=m),Mi(su(1e3)),Le(()=>{i.volume=0})),a(i.outMediaTrack)}var vH=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium"});var bh=class{constructor(t,e,r,o){this.localTrack=t;this.type=e;this.config=r;this.port=o;l(this,"track");l(this,"label");l(this,"insertKeyFrame",!0);l(this,"encoder");l(this,"tsMap",new Map);t._log.info("create Video Encoder",r)}trans(t,e,r){return y(this,null,function*(){yield this.recreate(r),e.signal.addEventListener("abort",()=>{this.encoder.close()});let o=0;return t.pipeThrough(new TransformStream({transform:(s,n)=>{this.encoder.state==="configured"&&(this.tsMap.set(o,Date.now()),this.encode(s),o++,n.enqueue(s))}}),e)})}encode(t){this.encoder.encode(t,{keyFrame:this.insertKeyFrame}),this.insertKeyFrame=!1}start(t,e,r){return y(this,null,function*(){yield this.recreate(r);let o=0;t.pipeTo(new WritableStream({write:s=>{this.encoder.state==="configured"&&(o<10&&this.localTrack.log.info(`capture ${this.label} track frame:`,o,Date.now(),s.timestamp,s.displayWidth,s.displayHeight),(s.displayWidth!==this.config.width||s.displayHeight!==this.config.height)&&(this.localTrack.log.info("resize video track frame:",s.displayWidth,s.displayHeight,this.config.width,this.config.height),this.configure({width:s.displayWidth,height:s.displayHeight})),this.tsMap.set(o,Date.now()),this.encode(s),o<10&&this.localTrack.log.info(`encode ${this.label} track frame:`,o),o++,s.close())}}),e).catch(s=>{var n;this.localTrack.log.warn(s),(n=this.encoder)==null||n.close()})})}recreate(t,e=0){return y(this,null,function*(){let r=0,o=new VideoEncoder({output:s=>{let n=this.tsMap.get(r);if(this.tsMap.delete(s.timestamp),r<10&&(r===0&&e===0&&V.emit(F.SEND_FIRST_VIDEO_FRAME,{room:t}),this.localTrack.log.info(`encoded ${this.label} track frame:`,r,Date.now(),s.timestamp)),r++,this.track.enabled===!1)return;let a=null;if(this.localTrack.enableEncodeFrame){a=new Uint8Array(s.byteLength),s.copyTo(a);let u=this.localTrack.encodeFrame({data:a.buffer},this.type===3);a=new Uint8Array(u.data)}a?(this.localTrack.stat.bytesSent+=a.length,this.port.postMessage({chunk:{type:s.type,timestamp:s.timestamp,data:a,duration:s.duration},timestamp:n},[a.buffer])):(this.localTrack.stat.bytesSent+=s.byteLength,this.port.postMessage({chunk:s,timestamp:n}))},error:s=>{this.localTrack.log.warn(s,this.config),setTimeout(()=>this.recreate(t,e+1),100)}});return this.encoder=o,yield this.configure({},r===0?e:0),o})}configure(t,e=0){return y(this,null,function*(){var r;if(Object.assign(this.config,t),e===0)for(let o=0;o<=Ui.length;o++){let{supported:s}=yield VideoDecoder.isConfigSupported(this.config);if(s)break;if(o===Ui.length)return;Ui[o](this.config)}else e<=Ui.length&&Ui[e-1](this.config);(r=this.encoder)==null||r.configure(this.config)})}close(){this.port.postMessage(null),this.port.close()}};function Yu(i,t){return y(this,null,function*(){let e=i.mediaType===2,r=e?"screen":"video",o={codec:"avc1.640028",latencyMode:"realtime",avc:{format:"annexb"},hardwareAcceleration:xt.useHardEncoder,width:t.profile.width,height:t.profile.height,framerate:t.profile.frameRate,bitrate:t.profile.bitrate*1e3},s=new MessageChannel;this.postMessage({cmd:"pushVideo",payload:t},[s.port1]);let n=new bh(i,t.type,o,s.port2);return s.port2.onmessage=a=>{if(a.data===260)n.insertKeyFrame=!0;else if(!e){let{bitrate:u}=a.data;Jn({configureBr:[a.data.bitrate,u]}),n.configure({bitrate:u})}},this._log.info("start push",r,t),n})}function JE(i){return y(this,null,function*(){var h;let t=i.mediaType===2,e=t?"screen":"video",r={type:t?7:2,profile:i.profile,trackType:t?"screen":"camera",crypto:!!((h=i.manager)!=null&&h.encodePipeline[0])};!t&&i.outMediaTrack instanceof CanvasCaptureMediaStreamTrack&&(r.trackType="canvas");let{trackType:o}=r,{width:s,height:n}=i.outMediaTrack.getSettings();r.profile.width=s,r.profile.height=n;let a=yield Yu.call(this,i,r);this._log.info("VideoEncoder created",r);let u,m=g=>y(this,null,function*(){if(u==null||u.abort("track changed"),!g)return;u=new AbortController;let{width:T,height:A,displaySurface:C}=g.getSettings();T&&(a.config.width=T),A&&(a.config.height=A);let N=ir.match(/Chrome\/(\d+)/);(N==null?void 0:N[1])==="114"&&C==="browser"&&delete a.config.hardwareAcceleration,this._log.info("push",e,"track:",g.readyState,g.getSettings());let D;if(typeof MediaStreamTrackProcessor!="undefined")D=new MediaStreamTrackProcessor({track:g}).readable;else{let K;D=new ReadableStream({pull(pe){return y(this,null,function*(){if(Ci())return new Promise(ce=>{var Qe;(Qe=i.player.element)==null||Qe.requestVideoFrameCallback((Q,Ue)=>{let Ro=new VideoFrame(i.player.element);pe.enqueue(Ro),ce()})})})}})}let P="small"in i&&i.small;return P?(this.smallEncoder||(this.smallEncoder=yield Yu.call(this,i,{profile:P,type:3,trackType:o})),this.smallEncoder.track=g,this.smallEncoder.label="small",D=yield this.smallEncoder.trans(D,u,this)):this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder),a.track=g,a.label=e,a.start(D,u,this)});return Re(we(i,"output-media-track-changed"),Ze(we(i,"ready")),Le(m,console.error,()=>{var g;this._log.info("stop push",e,r),u.abort("unpublish"),a.close(),(g=this.smallEncoder)==null||g.close()})),m(i.outMediaTrack)})}var Ao=class Ao extends ue{constructor(e){var r,o;super((o=(r=e.roomid)==null?void 0:r.toString())!=null?o:e.name,"volumeEvaluation");this.room=e;l(this,"enableInBackground",!1);l(this,"interval",400);e.on("joined",()=>{this.emit(Ao.INTERVALCHANGED,this.interval)}),Re(we(this,Ao.INTERVALCHANGED),ho(s=>this.room.state==="joined"?this.room.fromWorker("getAudioEnergy",s):Re(Ug(s),po(()=>[]))),Le(s=>{s.forEach(n=>{this.room.remotePublishedUserMap.has(n.userId)&&(this.room.remotePublishedUserMap.get(n.userId).remoteAudioTrack.volume=n.volume)}),(!document.hidden||this.enableInBackground)&&this.state==ue.ON&&this.room.emit("audio-volume",s)}))}start(e,r){this.interval=e,this.enableInBackground=r,this.emit(Ao.INTERVALCHANGED,this.interval)}stop(){}};l(Ao,"INTERVALCHANGED","intervalChanged"),Z([Ye([ue.INIT,ue.OFF],ue.ON)],Ao.prototype,"start",1),Z([Ye([],ue.OFF)],Ao.prototype,"stop",1);var Zu=Ao;var bo=class bo extends ju{constructor(e){super(e);l(this,"index",0);l(this,"session");l(this,"tinyid");l(this,"roomid");l(this,"openid");l(this,"socketid");l(this,"relayip");l(this,"clientip");l(this,"remotePublishedUserMap",new Map);l(this,"bussinessInfo");l(this,"token");l(this,"audioVolumeEvalution",new Zu(this));l(this,"enableAIVoice",yh);l(this,"AbilityOption",{AVLimit:{EncVideoCodec:"H265",EncVideoWidth:0,EncVideoHeight:0,EncVideoBr:"0",EncVideoFps:0,EncAudioCodec:"opus",EncAudioFS:0,EncAudioCh:0,EncAudioBr:"0"},GeneralLimit:{CPULimit:{uint32_CPU_num:navigator.hardwareConcurrency||0,str_CPU_name:navigator.platform,uint32_CPU_maxfreq:0,model:"",uint32_total_memory:0},uint32_terminal_type:rm(),uint32_device_type:0,str_os_verion:im(),uint32_link_type:1,str_client_version:at,uint32_net_type:Vo[jr.getNetworkType()],ua:navigator.userAgent,version:""}});l(this,"joinAbortController",new AbortController);l(this,"smallAbortCtrl");l(this,"smallEncoder");e.tinyId&&(this.tinyId=e.tinyId,Ah(!0)),this._log||(this._log=e.logger),this.bussinessInfo=e.bussinessInfo,e.encodedDataProcessingListener&&this.setEncodedDataProcessingListener(e.encodedDataProcessingListener)}replaceTrack(e){return y(this,null,function*(){})}getLogger(){return this._log}postMessage(e,r){this.session&&(e?typeof e=="string"?this.session.postMessage({cmd:e,payload:r}):this.session.postMessage(e,r):this.session.postMessage(null))}sendMessage(e,r){return new Promise((o,s)=>{this.state!="joined"&&s("join room first");let n=new MessageChannel;this.postMessage({cmd:e,payload:r},[n.port1]),n.port2.onmessageerror=s,n.port2.onmessage=a=>{n.port2.close(),o(a.data)}})}fromWorker(e,r){if(this.state!="joined")throw"join room first";return o=>{var n;let s=new MessageChannel;s.port2.onmessage=a=>{a.data?o.next(a.data):o.complete()},s.port2.onmessageerror=a=>o.error(a),o.defer(()=>{s.port2.postMessage(null),s.port2.close()}),(n=this.session)==null||n.postMessage({cmd:e,payload:r},[s.port1])}}switchRole(e){return y(this,null,function*(){if(e!==this.role)return this._log.info(`switchRole() => switch role to: ${e}`),e=="audience"&&this.unpublish(...this.localTracks),this.sendMessage("switchRole",e=="audience"?21:20).then(r=>{this.role=e})})}join(e,r,o){return y(this,null,function*(){var u,m,h;let s=jr.getEnv(),n=bd(),a={isH264EncodeSupported:this.checkSystemResult.detail.isH264EncodeSupported,isVp8EncodeSupported:this.checkSystemResult.detail.isVp8EncodeSupported,frameWorkType:o,params:e,proxy_wt:(u=this.proxy_wt)==null?void 0:u.replace("https://",""),proxy_ws:(m=this.proxy_ws)==null?void 0:m.replace("wss://",""),proxy_cloud:(h=this.scheduleResult.iceServers)!=null&&h.length?this.scheduleResult.iceServers[0].urls:[],proxy_unified:this.proxy_unified,domains:this.scheduleResult.domains,env:s,osName:Ys(),browserInfo:bd(),tinyId:this.tinyId,joinReq:{useStrRoomid:!!this.useStringRoomId,roomid:String(e.roomId||e.strRoomId),sdkAppID:String(e.sdkAppId),userSig:e.userSig,privMapEncrypt:e.privateMapKey||"",privMap:"",pstnBizType:0,role:"user",jsSdkVersion:at,browserVersion:n.browserName+n.browserVersion,closeLocalMedia:!0,trtcscene:r==="live"?2:1,trtcrole:e.role,bussinessInfo:e.businessInfo||this.bussinessInfo||"",isAuxUser:0,autoSubscribe:this.autoReceiveAudio&&this.autoReceiveVideo,AbilityOption:this.AbilityOption}};yield WE.call(this,a),console.log(this),Ju.playAudio(g=>this.postMessage({cmd:"setAudioWorkletPort"},[g])),this.checkDestroy()})}leave(){return y(this,null,function*(){this.remotePublishedUserMap.forEach(e=>{e.remoteAudioTrack.close(),e.remoteAuxiliaryTrack.close(),e.remoteVideoTrack.close()}),this.postMessage(null),this.remotePublishedUserMap.clear(),this.localTracks.forEach((e,r)=>r.unpublish())})}getSignalInfo(){return{tinyId:this.tinyid,clientIp:this.clientip,signalIp:"",relayIp:this.relayip,relayInnerIp:"",relayPort:0}}enableAudioVolumeEvaluation(e=2e3,r=!1){e<=0?this.audioVolumeEvalution.stop():this.audioVolumeEvalution.start(e,r)}getLocalAudioStats(){return this.sendMessage("getLocalAudioStats")}getLocalVideoStats(){return this.sendMessage("getLocalVideoStats")}afterJoin(){return y(this,null,function*(){let e=Ze(we(this,"left"));Re(r=>y(this,null,function*(){let o=new MessageChannel;o.port2.onmessage=s=>{s.data?r.next({data:s.data,port:o.port2}):r.complete()},o.port2.onmessageerror=s=>r.error(s),r.defer(()=>{o.port2.postMessage(null),o.port2.close()}),this.postMessage({cmd:"decodeAudio",payload:!!this.audioManager.decodePipeline[0]},[o.port1])}),e,Le(({data:r,port:o})=>{let s=this.audioManager.decodePipeline[0]({frame:{data:r.data.buffer}});o.postMessage(Ee(J({},r),{data:new Uint8Array(s.data)}),[s.data])}))})}onWorkerEvent(e,r){switch(e!=="network-quality"&&console.info(this.userId,"onWorkerEvent",e,JSON.stringify(r)),e){case F.RECEIVED_PUBLISHED_USER_LIST:V.emit(e,J({room:this},r));return;case"1":if(r.userId===this.userId)return;this.emit("peer-join",r);return;case"2":this.emit("peer-leave",r);return;case"3":let o=new Vu(this,r);this.remotePublishedUserMap.set(r.userId,o),this.emit("remote-published",o);return;case"5":{let g=r,T=this.remotePublishedUserMap.get(g);T&&(T.remoteVideoTrack.close(),T.remoteAuxiliaryTrack.close(),T.remoteAudioTrack.close(),this.remotePublishedUserMap.delete(g),this.emit("remote-unpublished",T))}return;case"banned":switch(r){case 8:this.emit("banned",{reason:"kick",message:""});return;case 2:case 6:case 4:this.emit("banned",{reason:"banned",message:""});return;case 7:case 5:this.emit("banned",{reason:"room_disband",message:""});return}break;case"6":{let{prevMuteState:g,muteState:T,flag:A}=r,C=this.remotePublishedUserMap.get(T.userId);if(!C){this.emit("remote-publish-state-changed",r);return}C.flag=A}V.emit(F.REMOTE_PUBLISH_STATE_CHANGED,J({room:this},r)),this.emit("remote-publish-state-changed",r);return;case"network-quality":this.quality=J({},r);let{uplinkLoss:s,uplinkRTT:n,uplinkInfo:a,downlinkInfo:u,msg_down_stream_info:m}=r,h={str_sdk_version:at,uint64_datetime:Date.now(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyid},msg_device_info:{uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:Vo[zn()]},msg_event_msg:$g(this.userId),str_acc_ip:this.relayip,str_client_ip:this.clientip,msg_up_stream_info:a,msg_down_stream_info:m};V.emit(F.HEARTBEAT_REPORT,{room:this,report:h}),this.emit("heartbeat-report",h),V.emit(F.NETWORK_QUALITY,{room:this,uplink:{rtt:n,loss:s},downlinks:u}),delete r.downlinkInfo;break;case"signal-connection-state-changed":V.emit(F.SIGNAL_CONNECTION_STATE_CHANGED,J({room:this},r));return}this.emit(e,r)}sendStartPublishCDN(e,r){return e.roomid=this.roomId,e.sdkAppID=String(this.sdkAppId),e.socketid=this.socketid,r&&(e.request_time=e.pushRequestTime),this.sendMessage("publishCdn",e)}sendStopPublishCDN(e,r){return e.roomid=this.roomId,e.sdkAppID=String(this.sdkAppId),e.socketid=this.socketid,r&&(e.request_time=e.pushRequestTime),this.sendMessage("stopPublishCdn",e)}sendStartMixTranscode(e){return this.sendMessage("startMcuMix",e)}sendStopMixTranscode(e){return this.sendMessage("stopMcuMix",e)}publish(...e){return y(this,null,function*(){let r=e.reduce((a,u)=>u.mediaType|a,0),o=this.sendMessage("publish",r).then(a=>a.err!==0?Promise.reject(a.err):a),s=0,n=a=>y(this,null,function*(){switch(yield o,a.muted&&(s|=a.mediaType),Ht(a,a).add("mute",()=>{this.postMessage("mute",{mediaType:a.mediaType,userId:this.userId,srctinyid:this.tinyid,remove:!0})}).add("unmute",()=>{this.postMessage("unmute",{mediaType:a.mediaType,userId:this.userId,srctinyid:this.tinyid,add:!0})}),a.mediaType){case 1:zE.call(this,a);break;default:yield JE.call(this,a)}});yield Promise.all(e.map(n)),s&&this.postMessage("mute",{mediaType:s,srctinyid:this.tinyid,userId:this.openid,remove:!0})})}unpublish(...e){return y(this,null,function*(){e.forEach(ft)})}subscribe(...e){return y(this,null,function*(){let r=e.reduce((g,T)=>T.mediaType|g,0),{userId:o,tinyId:s,streamType:n}=e[0],a=this.remotePublishedUserMap.get(o),u=J({},a.subscribeState),m=Object.assign(new ha,u);m.mediaType|=r,V.emit(F.SUBSCRIBE_START,{room:this,streamType:n,remotePublishedUser:a,subscribeState:m});let h=yield this.sendMessage("subscribe",{mediaType:m.mediaType,userId:o,srctinyid:s,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8,2].filter(g=>m.mediaType&g).map(g=>({mediaType:g,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}});console.dir("subscribe",h),yield Promise.all(e.filter(g=>!g.isSubscribed).map(g=>{switch(g.mediaType){case 1:return GE.call(this,g);default:return jE.call(this,g)}})),V.emit(F.SUBSCRIBE_SUCCESS,{room:this,streamType:n,remotePublishedUser:a})})}unsubscribe(...e){return y(this,null,function*(){let r=0;for(let o of e)r|=o.mediaType;if(e.length){let{userId:o,streamType:s,tinyId:n}=e[0];yield this.sendMessage("unSubscribe",{mediaType:r,srctinyid:n,userId:o});for(let a of e)a.unsubscribe();V.emit(F.UNSUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:this.remotePublishedUserMap.get(o)})}})}enableSmall(e){return y(this,null,function*(){var r;if(e){if(this.videoManager.smallTrack){let o=this.videoManager.cameraTrack;this.smallEncoder=yield Yu.call(this,o,{profile:o.small,type:3,trackType:"camera"});let s=new MediaStreamTrackProcessor({track:this.videoManager.smallTrack}).readable;this.smallEncoder.track=this.videoManager.smallTrack,this.smallEncoder.label="small",this.smallAbortCtrl=new AbortController,this.smallEncoder.start(s,this.smallAbortCtrl,this),this._log.info("push small")}}else(r=this.smallAbortCtrl)==null||r.abort("stop"),this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder)})}changeType(e,r){let o=this.remotePublishedUserMap.get(r.userId);if(!o)return;let s=e?8:4;if(o.remoteVideoTrack.mediaType===s)return;let n={srctinyid:o.tinyId,mediaType:s,userId:r.userId,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8].filter(a=>s&a).map(a=>({mediaType:a,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}};o.remoteVideoTrack.mediaType=n.mediaType,this.postMessage("changetype",n)}destroy(){this.isDestroyed||(super.destroy(),this.isDestroyed=!0,this.joinAbortController.abort("destroy"))}};Z([lo(bo.prototype.afterJoin),Ye(["left",ue.INIT],"joined"),CE()],bo.prototype,"join",1),Z([Ye("joined","left",{ignoreError:!0}),NE()],bo.prototype,"leave",1),Z([Wd((...e)=>0),wE()],bo.prototype,"publish",1),Z([Wd((...e)=>0),DE()],bo.prototype,"unpublish",1),Z([Wd((...e)=>e[0].userId),ME()],bo.prototype,"subscribe",1);var Ku=bo;bn.frameWorkType=37;bn.create=function(i){let t=bn._create.call(this,Ku,i);return t._use(jp,i==null?void 0:i.assetsPath),i!=null&&i.assetsPath&&(xt.assetsPath=i==null?void 0:i.assetsPath),console.log("trtc wasm sdk:",at,"created",xt),t};Object.assign(bn.prototype,{_setCurrentSpeaker(i){let t=Xe("player");return t!=null&&t.setSinkId?t.setSinkId(i):Promise.reject("not support")},_enableVideoDecodeFallback(i,t){return y(this,null,function*(){return this.startPlugin(jp.Name,{type:"webCodecs",renderer:"videoFrame",track:i,config:{codec:"avc1.420028"},fallback:"wasm"}),new Promise((e,r)=>{Re(we(i,"decode-downgrade-state-changed"),ar(o=>o.state==="STARTED"),Pr(1),Pp(1e4),Ze(we(i,ue.INIT)),Le(e,r))})})}});Mm(37);var Y4=bn;export{Y4 as default};