trtc-sdk-v5 5.15.1-wasm.3 → 5.15.2-beta.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/assets/debug-dialog.js +1 -1
- package/package.json +6 -4
- package/plugins/cdn-streaming/package.json +1 -1
- package/plugins/chorus/package.json +1 -1
- package/plugins/cross-room/package.json +1 -1
- package/plugins/custom-encryption/package.json +1 -1
- package/plugins/device-detector/package.json +1 -1
- package/plugins/lebplayer/package.json +1 -1
- package/plugins/realtime-transcriber/package.json +1 -1
- package/plugins/small-stream-auto-switcher/package.json +1 -1
- package/plugins/video-decoder/package.json +1 -1
- package/plugins/video-effect/basic-beauty/package.json +1 -1
- package/plugins/video-effect/beauty/package.json +1 -1
- package/plugins/video-effect/face-detection/package.json +1 -1
- package/plugins/video-effect/video-mixer/package.json +1 -1
- package/plugins/video-effect/virtual-background/package.json +1 -1
- package/plugins/video-effect/watermark/package.json +1 -1
- package/plugins/voice-changer/package.json +1 -1
- package/trtc.esm.js +41 -69
- package/trtc.js +1 -1
- package/assets/av_processing.wasm +0 -0
- package/assets/worker.js +0 -17
package/trtc.esm.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
var EI=Object.create;var _a=Object.defineProperty,_I=Object.defineProperties,Yf=Object.getOwnPropertyDescriptor,TI=Object.getOwnPropertyDescriptors,II=Object.getOwnPropertyNames,_d=Object.getOwnPropertySymbols,Zf=Object.getPrototypeOf,gm=Object.prototype.hasOwnProperty,Kf=Object.prototype.propertyIsEnumerable,SI=Reflect.get;var ni=Math.pow,fm=(i,t,e)=>t in i?_a(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Q=(i,t)=>{for(var e in t||(t={}))gm.call(t,e)&&fm(i,e,t[e]);if(_d)for(var e of _d(t))Kf.call(t,e)&&fm(i,e,t[e]);return i},Te=(i,t)=>_I(i,TI(t));var eg=(i,t)=>{var e={};for(var r in i)gm.call(i,r)&&t.indexOf(r)<0&&(e[r]=i[r]);if(i!=null&&_d)for(var r of _d(i))t.indexOf(r)<0&&Kf.call(i,r)&&(e[r]=i[r]);return e};var Ta=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),vi=(i,t)=>{for(var e in t)_a(i,e,{get:t[e],enumerable:!0})},AI=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of II(t))!gm.call(i,o)&&o!==e&&_a(i,o,{get:()=>t[o],enumerable:!(r=Yf(t,o))||r.enumerable});return i};var ai=(i,t,e)=>(e=i!=null?EI(Zf(i)):{},AI(t||!i||!i.__esModule?_a(e,"default",{value:i,enumerable:!0}):e,i));var Z=(i,t,e,r)=>{for(var o=r>1?void 0:r?Yf(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&&_a(t,e,o),o};var m=(i,t,e)=>fm(i,typeof t!="symbol"?t+"":t,e);var Dt=(i,t,e)=>SI(Zf(i),e,t);var b=(i,t,e)=>new Promise((r,o)=>{var s=d=>{try{a(e.next(d))}catch(l){o(l)}},n=d=>{try{a(e.throw(d))}catch(l){o(l)}},a=d=>d.done?r(d.value):Promise.resolve(d.value).then(s,n);a((e=e.apply(i,t)).next())});var mi=Ta((UC,oh)=>{"use strict";var $S=Object.prototype.hasOwnProperty,Zt="~";function ja(){}Object.create&&(ja.prototype=Object.create(null),new ja().__proto__||(Zt=!1));function HS(i,t,e){this.fn=i,this.context=t,this.once=e||!1}function Hg(i,t,e,r,o){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new HS(e,r||i,o),n=Zt?Zt+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 mu(i,t){--i._eventsCount===0?i._events=new ja:delete i._events[t]}function Xt(){this._events=new ja,this._eventsCount=0}Xt.prototype.eventNames=function(){var t=[],e,r;if(this._eventsCount===0)return t;for(r in e=this._events)$S.call(e,r)&&t.push(Zt?r.slice(1):r);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(e)):t};Xt.prototype.listeners=function(t){var e=Zt?Zt+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};Xt.prototype.listenerCount=function(t){var e=Zt?Zt+t:t,r=this._events[e];return r?r.fn?1:r.length:0};Xt.prototype.emit=function(t,e,r,o,s,n){var a=Zt?Zt+t:t;if(!this._events[a])return!1;var d=this._events[a],l=arguments.length,p,f;if(d.fn){switch(d.once&&this.removeListener(t,d.fn,void 0,!0),l){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,e),!0;case 3:return d.fn.call(d.context,e,r),!0;case 4:return d.fn.call(d.context,e,r,o),!0;case 5:return d.fn.call(d.context,e,r,o,s),!0;case 6:return d.fn.call(d.context,e,r,o,s,n),!0}for(f=1,p=new Array(l-1);f<l;f++)p[f-1]=arguments[f];d.fn.apply(d.context,p)}else{var _=d.length,I;for(f=0;f<_;f++)switch(d[f].once&&this.removeListener(t,d[f].fn,void 0,!0),l){case 1:d[f].fn.call(d[f].context);break;case 2:d[f].fn.call(d[f].context,e);break;case 3:d[f].fn.call(d[f].context,e,r);break;case 4:d[f].fn.call(d[f].context,e,r,o);break;default:if(!p)for(I=1,p=new Array(l-1);I<l;I++)p[I-1]=arguments[I];d[f].fn.apply(d[f].context,p)}}return!0};Xt.prototype.on=function(t,e,r){return Hg(this,t,e,r,!1)};Xt.prototype.once=function(t,e,r){return Hg(this,t,e,r,!0)};Xt.prototype.removeListener=function(t,e,r,o){var s=Zt?Zt+t:t;if(!this._events[s])return this;if(!e)return mu(this,s),this;var n=this._events[s];if(n.fn)n.fn===e&&(!o||n.once)&&(!r||n.context===r)&&mu(this,s);else{for(var a=0,d=[],l=n.length;a<l;a++)(n[a].fn!==e||o&&!n[a].once||r&&n[a].context!==r)&&d.push(n[a]);d.length?this._events[s]=d.length===1?d[0]:d:mu(this,s)}return this};Xt.prototype.removeAllListeners=function(t){var e;return t?(e=Zt?Zt+t:t,this._events[e]&&mu(this,e)):(this._events=new ja,this._eventsCount=0),this};Xt.prototype.off=Xt.prototype.removeListener;Xt.prototype.addListener=Xt.prototype.on;Xt.prefixed=Zt;Xt.EventEmitter=Xt;typeof oh!="undefined"&&(oh.exports=Xt)});var Su=Ta((IN,tE)=>{"use strict";var eE=tE.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(eE).forEach(function(i){var t=eE[i];t.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var oE=Ta(Wi=>{"use strict";var vn=function(i){return String(Number(i))===i?Number(i):i},QS=function(i,t,e,r){if(r&&!e)t[r]=vn(i[1]);else for(var o=0;o<e.length;o+=1)i[o+1]!=null&&(t[e[o]]=vn(i[o+1]))},YS=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;QS(e.match(i.reg),o,i.names,i.name),i.push&&t[i.push].push(o)},rE=Su(),ZS=RegExp.prototype.test.bind(/^([a-z])=(.*)/);Wi.parse=function(i){var t={},e=[],r=t;return i.split(/(\r\n|\r|\n)/).filter(ZS).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<(rE[s]||[]).length;a+=1){var d=rE[s][a];if(d.reg.test(n))return YS(d,r,n)}}),t.media=e,t};var iE=function(i,t){var e=t.split(/=(.+)/,2);return e.length===2?i[e[0]]=vn(e[1]):e.length===1&&t.length>1&&(i[e[0]]=void 0),i};Wi.parseParams=function(i){return i.split(/;\s?/).reduce(iE,{})};Wi.parseFmtpConfig=Wi.parseParams;Wi.parsePayloads=function(i){return i.toString().split(" ").map(Number)};Wi.parseRemoteCandidates=function(i){for(var t=[],e=i.split(" ").map(vn),r=0;r<e.length;r+=3)t.push({component:e[r],ip:e[r+1],port:e[r+2]});return t};Wi.parseImageAttributes=function(i){return i.split(" ").map(function(t){return t.substring(1,t.length-1).split(",").reduce(iE,{})})};Wi.parseSimulcastStreamList=function(i){return i.split(";").map(function(t){return t.split(",").map(function(e){var r,o=!1;return e[0]!=="~"?r=vn(e):(r=vn(e.substring(1,e.length)),o=!0),{scid:r,paused:o}})})}});var nE=Ta((AN,sE)=>{"use strict";var Sh=Su(),KS=/%[sdv%]/g,eA=function(i){var t=1,e=arguments,r=e.length;return i.replace(KS,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""}})},ec=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 eA.apply(null,o)},tA=["v","o","s","i","u","e","p","c","b","t","r","z","a"],rA=["i","c","b","a"];sE.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||tA,r=t.innerOrder||rA,o=[];return e.forEach(function(s){Sh[s].forEach(function(n){n.name in i&&i[n.name]!=null?o.push(ec(s,n,i)):n.push in i&&i[n.push]!=null&&i[n.push].forEach(function(a){o.push(ec(s,n,a))})})}),i.media.forEach(function(s){o.push(ec("m",Sh.m[0],s)),r.forEach(function(n){Sh[n].forEach(function(a){a.name in s&&s[a.name]!=null?o.push(ec(n,a,s)):a.push in s&&s[a.push]!=null&&s[a.push].forEach(function(d){o.push(ec(n,a,d))})})})}),o.join(`\r
|
|
1
|
+
var hg=Object.create;var Xo=Object.defineProperty,mg=Object.defineProperties,Mm=Object.getOwnPropertyDescriptor,pg=Object.getOwnPropertyDescriptors,fg=Object.getOwnPropertyNames,Aa=Object.getOwnPropertySymbols,Om=Object.getPrototypeOf,ol=Object.prototype.hasOwnProperty,Pm=Object.prototype.propertyIsEnumerable,_g=Reflect.get;var gr=Math.pow,sl=(s,i,e)=>i in s?Xo(s,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[i]=e,M=(s,i)=>{for(var e in i||(i={}))ol.call(i,e)&&sl(s,e,i[e]);if(Aa)for(var e of Aa(i))Pm.call(i,e)&&sl(s,e,i[e]);return s},w=(s,i)=>mg(s,pg(i));var Ra=(s,i)=>{var e={};for(var t in s)ol.call(s,t)&&i.indexOf(t)<0&&(e[t]=s[t]);if(s!=null&&Aa)for(var t of Aa(s))i.indexOf(t)<0&&Pm.call(s,t)&&(e[t]=s[t]);return e};var Fi=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports),Bi=(s,i)=>{for(var e in i)Xo(s,e,{get:i[e],enumerable:!0})},gg=(s,i,e,t)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of fg(i))!ol.call(s,r)&&r!==e&&Xo(s,r,{get:()=>i[r],enumerable:!(t=Mm(i,r))||t.enumerable});return s};var Ge=(s,i,e)=>(e=s!=null?hg(Om(s)):{},gg(i||!s||!s.__esModule?Xo(e,"default",{value:s,enumerable:!0}):e,s));var O=(s,i,e,t)=>{for(var r=t>1?void 0:t?Mm(i,e):i,o=s.length-1,n;o>=0;o--)(n=s[o])&&(r=(t?n(i,e,r):n(r))||r);return t&&r&&Xo(i,e,r),r};var d=(s,i,e)=>sl(s,typeof i!="symbol"?i+"":i,e);var xe=(s,i,e)=>_g(Om(s),e,i);var f=(s,i,e)=>new Promise((t,r)=>{var o=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(o,n);a((e=e.apply(s,i)).next())});var Ze=Fi((zI,nl)=>{"use strict";var Eg=Object.prototype.hasOwnProperty,mt="~";function zo(){}Object.create&&(zo.prototype=Object.create(null),new zo().__proto__||(mt=!1));function Tg(s,i,e){this.fn=s,this.context=i,this.once=e||!1}function km(s,i,e,t,r){if(typeof e!="function")throw new TypeError("The listener must be a function");var o=new Tg(e,t||s,r),n=mt?mt+i:i;return s._events[n]?s._events[n].fn?s._events[n]=[s._events[n],o]:s._events[n].push(o):(s._events[n]=o,s._eventsCount++),s}function Ca(s,i){--s._eventsCount===0?s._events=new zo:delete s._events[i]}function at(){this._events=new zo,this._eventsCount=0}at.prototype.eventNames=function(){var i=[],e,t;if(this._eventsCount===0)return i;for(t in e=this._events)Eg.call(e,t)&&i.push(mt?t.slice(1):t);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i};at.prototype.listeners=function(i){var e=mt?mt+i:i,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var r=0,o=t.length,n=new Array(o);r<o;r++)n[r]=t[r].fn;return n};at.prototype.listenerCount=function(i){var e=mt?mt+i:i,t=this._events[e];return t?t.fn?1:t.length:0};at.prototype.emit=function(i,e,t,r,o,n){var a=mt?mt+i:i;if(!this._events[a])return!1;var c=this._events[a],l=arguments.length,u,m;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,o),!0;case 6:return c.fn.call(c.context,e,t,r,o,n),!0}for(m=1,u=new Array(l-1);m<l;m++)u[m-1]=arguments[m];c.fn.apply(c.context,u)}else{var p=c.length,h;for(m=0;m<p;m++)switch(c[m].once&&this.removeListener(i,c[m].fn,void 0,!0),l){case 1:c[m].fn.call(c[m].context);break;case 2:c[m].fn.call(c[m].context,e);break;case 3:c[m].fn.call(c[m].context,e,t);break;case 4:c[m].fn.call(c[m].context,e,t,r);break;default:if(!u)for(h=1,u=new Array(l-1);h<l;h++)u[h-1]=arguments[h];c[m].fn.apply(c[m].context,u)}}return!0};at.prototype.on=function(i,e,t){return km(this,i,e,t,!1)};at.prototype.once=function(i,e,t){return km(this,i,e,t,!0)};at.prototype.removeListener=function(i,e,t,r){var o=mt?mt+i:i;if(!this._events[o])return this;if(!e)return Ca(this,o),this;var n=this._events[o];if(n.fn)n.fn===e&&(!r||n.once)&&(!t||n.context===t)&&Ca(this,o);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[o]=c.length===1?c[0]:c:Ca(this,o)}return this};at.prototype.removeAllListeners=function(i){var e;return i?(e=mt?mt+i:i,this._events[e]&&Ca(this,e)):(this._events=new zo,this._eventsCount=0),this};at.prototype.off=at.prototype.removeListener;at.prototype.addListener=at.prototype.on;at.prefixed=mt;at.EventEmitter=at;typeof nl!="undefined"&&(nl.exports=at)});var vc=Fi((IR,Np)=>{"use strict";var vp=Np.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(s){return s.encoding?"rtpmap:%d %s/%s/%s":s.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(s){return s.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(s){return s.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(s){return"extmap:%d"+(s.direction?"/%s":"%v")+(s["encrypt-uri"]?" %s":"%v")+" %s"+(s.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(s){return s.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(s){var i="candidate:%s %d %s %d %s %d typ %s";return i+=s.raddr!=null?" raddr %s rport %d":"%v%v",i+=s.tcptype!=null?" tcptype %s":"%v",s.generation!=null&&(i+=" generation %d"),i+=s["network-id"]!=null?" network-id %d":"%v",i+=s["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(s){var i="ssrc:%d";return s.attribute!=null&&(i+=" %s",s.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(s){return s.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(s){return s.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(s){return"imageattr:%s %s %s"+(s.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(s){return"simulcast:%s %s"+(s.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(s){return"ts-refclk:%s"+(s.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(s){var i="mediaclk:";return i+=s.id!=null?"id=%s %s":"%v%s",i+=s.mediaClockValue!=null?"=%s":"",i+=s.rateNumerator!=null?" rate=%s":"",i+=s.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(vp).forEach(function(s){var i=vp[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Op=Fi(er=>{"use strict";var ho=function(s){return String(Number(s))===s?Number(s):s},ME=function(s,i,e,t){if(t&&!e)i[t]=ho(s[1]);else for(var r=0;r<e.length;r+=1)s[r+1]!=null&&(i[e[r]]=ho(s[r+1]))},OE=function(s,i,e){var t=s.name&&s.names;s.push&&!i[s.push]?i[s.push]=[]:t&&!i[s.name]&&(i[s.name]={});var r=s.push?{}:t?i[s.name]:i;ME(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},Dp=vc(),PE=RegExp.prototype.test.bind(/^([a-z])=(.*)/);er.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(PE).forEach(function(r){var o=r[0],n=r.slice(2);o==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(Dp[o]||[]).length;a+=1){var c=Dp[o][a];if(c.reg.test(n))return OE(c,t,n)}}),i.media=e,i};var Mp=function(s,i){var e=i.split(/=(.+)/,2);return e.length===2?s[e[0]]=ho(e[1]):e.length===1&&i.length>1&&(s[e[0]]=void 0),s};er.parseParams=function(s){return s.split(/;\s?/).reduce(Mp,{})};er.parseFmtpConfig=er.parseParams;er.parsePayloads=function(s){return s.toString().split(" ").map(Number)};er.parseRemoteCandidates=function(s){for(var i=[],e=s.split(" ").map(ho),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};er.parseImageAttributes=function(s){return s.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(Mp,{})})};er.parseSimulcastStreamList=function(s){return s.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=ho(e):(t=ho(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var kp=Fi((RR,Pp)=>{"use strict";var _u=vc(),kE=/%[sdv%]/g,LE=function(s){var i=1,e=arguments,t=e.length;return s.replace(kE,function(r){if(i>=t)return r;var o=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},Dn=function(s,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[s+"="+t];if(i.names)for(var o=0;o<i.names.length;o+=1){var n=i.names[o];i.name?r.push(e[i.name][n]):r.push(e[i.names[o]])}else r.push(e[i.name]);return LE.apply(null,r)},wE=["v","o","s","i","u","e","p","c","b","t","r","z","a"],xE=["i","c","b","a"];Pp.exports=function(s,i){i=i||{},s.version==null&&(s.version=0),s.name==null&&(s.name=" "),s.media.forEach(function(o){o.payloads==null&&(o.payloads="")});var e=i.outerOrder||wE,t=i.innerOrder||xE,r=[];return e.forEach(function(o){_u[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(Dn(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(Dn(o,n,a))})})}),s.media.forEach(function(o){r.push(Dn("m",_u.m[0],o)),t.forEach(function(n){_u[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(Dn(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(c){r.push(Dn(n,a,c))})})})}),r.join(`\r
|
|
2
2
|
`)+`\r
|
|
3
|
-
`}});var aE=Ta(hi=>{"use strict";var Ts=oE(),iA=nE(),oA=Su();hi.grammar=oA;hi.write=iA;hi.parse=Ts.parse;hi.parseParams=Ts.parseParams;hi.parseFmtpConfig=Ts.parseFmtpConfig;hi.parsePayloads=Ts.parsePayloads;hi.parseRemoteCandidates=Ts.parseRemoteCandidates;hi.parseImageAttributes=Ts.parseImageAttributes;hi.parseSimulcastStreamList=Ts.parseSimulcastStreamList});var tg=(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))(tg||{}),z=tg;var yI=function(i){for(let t in z)if(z[t]===i)return t;return"UNKNOWN"},Ia=class extends Error{constructor({name:e="RtcError",message:r,code:o=z.UNKNOWN,extraCode:s=0,constraint:n}){let a=`<${yI(o)} 0x${o.toString(16)}>`,d=`${r}${n?` constraint: ${n}`:""}${r!=null&&r.includes(a)?"":` ${a}`}`;super(d);m(this,"code");m(this,"extraCode");m(this,"message");m(this,"originMessage");m(this,"name");m(this,"constraint");this.code=o,this.extraCode=s,this.name=e,this.message=d,this.constraint=n,this.originMessage=r}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},ce=Ia;var rg=0;var ig=function(){return rg},Ci=function(){return Date.now()+rg},Td=function(){let i=new Date;return i.setTime(Ci()),i.toLocaleString()},Ks=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 ui={};vi(ui,{REPORT_TYPE:()=>pn,buildSSOPackage:()=>Oi,bytes2ms:()=>_g,calculateScaleResolutionDownNumber:()=>Fd,concatArrayBuffers:()=>Bd,convertObjectNumberToInt:()=>Ma,copyProperties:()=>Eg,deepClone:()=>ns,deepCloneBasic:()=>Pd,deepMerge:()=>$r,delay:()=>Hr,fibonacci:()=>as,formatedTime:()=>xd,getConstructorName:()=>dn,getContainerFromElement:()=>Cg,getEnv:()=>mg,getFirst16Bits:()=>wg,getInternalVersion:()=>Rg,getLast16Bits:()=>$d,getLoggerUrl:()=>Mi,getMediaStreamTrackInfo:()=>Vd,getMuteStateFromFlag:()=>ds,getNetworkType:()=>cn,getNumNetworkType:()=>Ld,getReconnectionTimeout:()=>Ig,getStringByteLength:()=>Ng,getTestSignalDomain:()=>hg,getTurnServer:()=>vg,getUint32Version:()=>kd,getValueType:()=>gt,getViewListFromView:()=>mn,glog:()=>Na,ipv4ToUint32:()=>ln,isArray:()=>ut,isAudioWorkletSupported:()=>yg,isBoolean:()=>Ze,isConstructor:()=>cs,isEmpty:()=>un,isFunction:()=>Xe,isLangChinese:()=>Br,isMediaStreamTrack:()=>Sg,isNumber:()=>Be,isObject:()=>fr,isOverseaSdkAppId:()=>Rr,isPlainObject:()=>Jt,isPortrait:()=>Bm,isPromise:()=>ho,isRemoteTrack:()=>Ag,isRotate90Or270:()=>gr,isSetSinkIdSupported:()=>bg,isString:()=>Oe,isUndefined:()=>O,loadImage:()=>hn,loadVideo:()=>Dg,ms2bytes:()=>Tg,ms2samples:()=>Fm,normalizeUrl:()=>us,performanceNow:()=>pe,promiseAny:()=>Da,samples2ms:()=>Vm,setNetworkTypeFromWebRTC:()=>gg,stringify:()=>br,stringifyIncludeValue:()=>wa,throttlePromise:()=>Ud});var Nm={};vi(Nm,{ASR_ROBOT_FROM_TYPE:()=>cg,AUDIO_MUTE_BIT:()=>vd,AUDIO_STAT_BIT:()=>rn,AUX_STAT_BIT:()=>ba,AUX_STREAM_MSID:()=>xI,BACKEND_ENV:()=>Rd,BASE_DOC_URL:()=>ir,BASE_HOST:()=>og,CAPABILITIES_KEYS:()=>Dd,CLASS_NAME:()=>sS,CLOUD_CONSOLE_URL:()=>CI,CROSS_ROOM_BIT:()=>PI,DATA_CHANNEL_FROM_TYPE_BIT:()=>bm,DATA_FREEZE_TIMING:()=>Nd,DOC_BILLING_CN:()=>Id,DOC_BILLING_OVERSEA:()=>Sd,DOC_URL:()=>NI,DTLS_STATE_UNKNOWN:()=>jI,ENV_NAME:()=>Ni,EXCHANGE_SDP_TIMEOUT:()=>YI,IS_WORKER:()=>en,IS_WORKLET:()=>Sa,KIBANA_EVENT:()=>Ot,LOCAL_STREAM_PUBLISH_STATE:()=>ng,LOGGER_CMD_TYPE:()=>mo,LOGGER_DOMAIN:()=>Tm,LOGGER_DOMAIN_OVERSEA:()=>Im,LOG_LEVEL:()=>Vr,LOG_LEVEL_NAME:()=>aS,MAIN_STREAM_MSID:()=>LI,MAX_RTT:()=>va,MICROPHONE_COMMUNICATIONS:()=>nS,MICROPHONE_DEFAULT:()=>ss,MUTE_ALL_BIT:()=>OI,NAME:()=>M,NETWORK_TYPE:()=>os,NOT_SUPPORTED_H264:()=>KI,PAUSED_RETRY_COUNT:()=>wi,PEERCONNECTION_CONNECTING_TIMEOUT:()=>iS,PEER_CONNECTION_STATE:()=>qI,PEER_LEAVE_REASON:()=>ag,RECOVER_CAPTURE_INTERVAL:()=>on,REMOTE_STREAM_TYPE_AUX:()=>UI,REMOTE_STREAM_TYPE_MAIN:()=>kI,RENDER_FREEZE_TIMING:()=>eS,SCHEDULE_DOMAIN:()=>Di,SCHEDULE_TIMEOUT:()=>oS,SDP_SEMANTICS_PLAN_B:()=>ZI,SDP_SEMANTICS_UNIFIED_PLAN:()=>vm,SECOND_HOST:()=>RI,SIGNAL_PING_PONG_INTERVAL:()=>wI,SIGNAL_PING_TIMEOUT:()=>DI,SIGNAL_RECONNECTION_COUNT:()=>JI,SMALL_STAT_BIT:()=>ym,SPEAKER_DEFAULT:()=>Ra,STORAGE_EXPIRES_TIME:()=>Ad,STREAM_TYPE_BIG:()=>tS,STREAM_TYPE_SMALL:()=>rS,SUBSCRIBE_SMALL_RETRY_COUNT:()=>cS,SYNC_USER_LIST_INTERVAL:()=>XI,Scene:()=>ci,THIRD_HOST:()=>vI,TRANSPORT_DIRECTION:()=>MI,TRTC_ERROR_ASSISTANCE:()=>Sm,TRTC_QUALITY_BAD:()=>HI,TRTC_QUALITY_DISCONNECTED:()=>GI,TRTC_QUALITY_EXCELLENT:()=>FI,TRTC_QUALITY_GOOD:()=>BI,TRTC_QUALITY_POOR:()=>$I,TRTC_QUALITY_UNKNOWN:()=>VI,TRTC_QUALITY_VERY_BAD:()=>WI,UPDATE_OFFER_TIMEOUT:()=>QI,VIDEO_MUTE_BIT:()=>Cd,VIDEO_STAT_BIT:()=>tn,WEBGL_ATTRIBUTES:()=>Cm,audioProfileMap:()=>yd,defaultBigVideoProfile:()=>ya,defaultSmallVideoProfile:()=>Am,getRetryCount:()=>zI,getScriptDir:()=>bI,innerVersion:()=>Em,loggerProxy:()=>Aa,screenProfileMap:()=>bd,setLoggerProxy:()=>is,setRetryCount:()=>Rm,setVersion:()=>_m,version:()=>ft,videoProfileMap:()=>Fr});var Em="4.15.00.1600",ft="5.0.0";function _m(i){ft=i;let[t,e,r]=i.split(".").map(o=>parseInt(o,10));Em=`${t}.${Math.min(15,e)}.${Math.min(15,r)}.${e.toString().padStart(2,"0")}${r.toString().padStart(2,"0")}`}var en=typeof importScripts!="undefined",Sa=typeof registerProcessor!="undefined",bI=()=>{let i=en?self.location.href:document.currentScript.src;return i.substring(0,i.lastIndexOf("/")+1)},Aa="",is=i=>Aa=i,og="web.sdk.qcloud.com",RI="web.sdk.tencent.cn",vI="web.sdk.cloud.tencent.cn",CI="https://console.cloud.tencent.com/trtc",ir=`https://${og}/trtc/webrtc/doc`,NI=`${ir}/zh-cn/`,Id="https://cloud.tencent.com/document/product/647/85386",Sd="https://trtc.io/document/56025",Tm="https://yun.tim.qq.com",Im="https://apisgp.my-imcloud.com",Sm="trtc_error_assistance",mo={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},Ni={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},Vr=(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))(Vr||{}),DI=18e3,wI=2e3,os={unknown:0,wifi:1,"4g":2,"3g":3,"2g":4,wired:5,"5g":6},Ad=168*3600*1e3,yd={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}},Fr={"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}},ya=Fr["480p_2"],Am=Fr["120p_2"],bd={"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}},M={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",LOADSTART:"loadstart",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",FULLSCREEN_CHANGE:"fullscreenchange",RESIZE:"resize",TIME_UPDATE:"timeupdate"},MI={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},Rd={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},ci=(e=>(e.LIVE="live",e.RTC="rtc",e))(ci||{}),tn=1,ym=2,ba=4,rn=8,vd=64,Cd=16,OI=112,PI=128,bm=256,LI="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",xI="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",kI=M.MAIN,UI=M.AUXILIARY,VI=0,FI=1,BI=2,$I=3,HI=4,WI=5,GI=6,jI="unknown",qI={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},sg=1/0;function Rm(i){sg=i}function zI(){return sg}var JI=30,Ot={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",VIDEO_ENCODE_FAILED_DURING_CALL:"video-encode-failed-during-call",VIDEO_ENCODE_RESUME_DURING_CALL:"video-encode-resume-during-call",AUDIO_ENCODE_FAILED_DURING_CALL:"audio-encode-failed-during-call",AUDIO_ENCODE_RESUME_DURING_CALL:"audio-encode-resume-during-call",VIDEO_DECODE_FAILED_DURING_CALL:"video-decode-failed-during-call",VIDEO_DECODE_RESUME_DURING_CALL:"video-decode-resume-during-call",AUDIO_DECODE_FAILED_DURING_CALL:"audio-decode-failed-during-call",AUDIO_DECODE_RESUME_DURING_CALL:"audio-decode-resume-during-call",VIDEO_HARDWARE_DECODE_FAILED:"video-hardware-decode-failed",VIDEO_HARDWARE_DECODE_RESUME:"video-hardware-decode-resume"},XI=1e4,QI=1e4,YI=1e4,vm="unified-plan",ZI="plan-b",KI=1028,ng=(r=>(r[r.UNPUBLISH=-1]="UNPUBLISH",r[r.PUBLISHING=0]="PUBLISHING",r[r.PUBLISHED=1]="PUBLISHED",r))(ng||{}),Nd=500,eS=1e3,tS=M.BIG,rS=M.SMALL,iS=10*1e3,Di={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"},oS=2e3,sS={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},wi=5,ss="default",Ra=ss,nS="communications",aS=Object.keys(Vr),ag=["normal leave","timeout leave","kick","role change"],cS=10,on=2e3,Dd=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],va=10*1e3,cg=14,Cm={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"};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(p){try{l(r.next(p))}catch(f){n(f)}}function d(p){try{l(r.throw(p))}catch(f){n(f)}}function l(p){p.done?s(p.value):o(p.value).then(a,d)}l((r=r.apply(i,t||[])).next())})},Dm=Symbol(32),wm=Symbol(16),Mm=Symbol(8),di=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 dS(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(Dm)}readU16(){return this.read(wm)}readU8(){return this.read(Mm)}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===Dm){if(o(4))return;t=e[0]<<24|e[1]<<16|e[2]<<8|e[3]}else if(this.need===wm){if(o(2))return;t=e[0]<<8|e[1]}else if(this.need===Mm){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}};di.U32=Dm;di.U16=wm;di.U8=Mm;var uS=128,lS=127,rC=~lS,iC=Math.pow(2,31);function Om(i){let t=new di;for(;i>=128;)t.malloc(1)[0]=i&255|uS,i>>>=7;return t.malloc(1)[0]=i&255,t.buffer||new Uint8Array(0)}function wd(i,t=0){let e=new di,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(Om(i));break;case"string":e.malloc(1)[0]=r|2;let s=new TextEncoder().encode(i);e.write(Om(s.length));let n=e.malloc(s.length);for(let d=0;d<s.length;d++)n[d]=s[d];break;case"object":let a=new di;if(Array.isArray(i))for(let d=0;d<i.length;d++){let l=wd(i[d],d+1);l&&a.write(l)}else{let d=1;for(let l in i){let p=wd(i[l],d++);p&&a.write(p)}}t===0?a.buffer&&e.write(a.buffer):(e.malloc(1)[0]=r|2,a.buffer&&(e.write(Om(a.buffer.length)),e.write(a.buffer)))}return e.buffer||new Uint8Array(0)}var Ca=class{constructor(){m(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 Pm(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 zt(i,t){return i[t]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3]}function Lm(i,t){return i[t]}function sn(i,t,e){return new TextDecoder().decode(mS(i,t,e))}function mS(i,t,e){return i.slice(t,t+e)}var xm=0,Md=2654435769,Od=16,Um=4,nn=2,an=7;function hS(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 dg(i,t){let e=new Ca,r=hS(t,i,xm);xm=xm+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 Ca;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 W=4;W<16;W++)n.writeByte(0);let a=new TextEncoder().encode(r.reqHead.a2);n.writeInt32(a.length+4),a.length&&n.writeBytes(a);let d=new TextEncoder().encode(r.reqHead.serviceCmd);n.writeInt32(d.length+4),d.length&&n.writeBytes(d);let l=new TextEncoder().encode(r.reqHead.cookie);n.writeInt32(l.length+4),l.length&&n.writeBytes(l);let p=new TextEncoder().encode(r.reqHead.imei);n.writeInt32(p.length+4),p.length&&n.writeBytes(p);let f=new TextEncoder().encode(r.reqHead.ksid);n.writeInt32(f.length+4),f.length&&n.writeBytes(f);let _=new TextEncoder().encode(r.reqHead.clientVersionInfo);n.writeInt16(_.length+2),_.length&&n.writeBytes(_);let I=n.length;n.data[0]=I>>>24&255,n.data[1]=I>>>16&255,n.data[2]=I>>>8&255,n.data[3]=I&255,Oe(i)&&(i=new TextEncoder().encode(i)),n.writeInt32(i.length+4),i.length&&n.writeBytes(i);let R=new Uint8Array(n.data),y=null;r.encryption===1?y=new TextEncoder().encode(r.uin):r.encryption===2&&(y=new Uint8Array(16)),y&&(R=pS(R,y)),e.writeBytes(R);let N=new Uint8Array(e.data),P=N.length;return N[0]=P>>>24&255,N[1]=P>>>16&255,N[2]=P>>>8&255,N[3]=P&255,N}function pS(i,t){let e=i.length,o=(e+1+nn+an)%8;o&&(o=8-o);let s=e+1+nn+an+o,n=new Uint8Array(s),a=0,d=new Uint8Array(8),l=new Uint8Array(8),p=new Uint8Array(8),f=0;d[0]=Math.floor(Math.random()*256)&248|o,f=1;for(let I=0;I<o;I++)d[f]=Math.floor(Math.random()*256)&255,f+=1;for(let I=0;I<nn;)if(f<8&&(d[f]=Math.floor(Math.random()*256)&255,f+=1,I+=1),f===8){km(d,t,l,p,n,a),a+=8,f=0;for(let R=0;R<8;R++)p[R]=n[a-8+R]}let _=0;for(;_<e;)if(f<8&&(d[f]=i[_],f+=1,_+=1),f===8){km(d,t,l,p,n,a),a+=8,f=0;for(let I=0;I<8;I++)p[I]=n[a-8+I]}for(let I=0;I<an;)if(f<8&&(d[f]=0,f+=1,I+=1),f===8){km(d,t,l,p,n,a),a+=8,f=0;for(let R=0;R<8;R++)p[R]=n[a-8+R]}return n}function km(i,t,e,r,o,s){for(let n=0;n<8;n++)i[n]^=r[n];fS(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 fS(i,t,e,r){let o=zt(i,0),s=zt(i,4),n=[];for(let d=0;d<4;d++)n[d]=zt(t,d*4);let a=0;for(let d=0;d<Od;d++)a+=Md,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;Pm(e,o,r),Pm(e,s,r+4)}var mg=function(){return new URLSearchParams(location.search).get("trtc_env")||""},gS=".rtc.qq.com",hg=function(i){return i.includes(".")?i:`${i}${gS}`},Rr=i=>Number(i)<14e8,Mi=function(i,t){let e;Aa?e=Aa:e=Rr(i)?Im:Tm;let r=Math.floor(Math.random()*ni(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${r}&sdkappid=${i}&cmdtype=${t}`},pg="unknown";function cn(){_S();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?fg(r,o):pg}function ES(){B.warn("netType changed",cn())}var ug=!1;function _S(){var i;ug||(ug=!0,(i=navigator.connection)==null||i.addEventListener("typechange",ES))}function fg(i,t){if(os[i])return i;switch(i){case"cellular":case"wimax":return t||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function gg(i){pg=fg(i)}function Ld(){return os[cn()]}function Eg(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 _g(i,t=48e3){return Vm(i/4,t)}function Vm(i,t=48e3){return i*1e3/t}function Tg(i,t=48e3){return Fm(i,t)*4}function Fm(i,t=48e3){return i*t/1e3}var Na=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},Br=()=>{let i=navigator.language;return i=i.substring(0,2),i==="zh"},Jt=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 as(i,t=1,e=1){return i<=1?e:as(i-1,e,t+e)}function Ig(i){return i>8?30*1e3:as(i)*1e3}function gt(i){return Reflect.apply(Object.prototype.toString,i,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var Xe=i=>typeof i=="function",O=i=>typeof i=="undefined",Oe=i=>typeof i=="string",Be=i=>typeof i=="number",Ze=i=>typeof i=="boolean",fr=i=>gt(i)==="object",ut=i=>gt(i)==="array",Sg=i=>gt(i)==="MediaStreamTrack".toLowerCase(),Ag=i=>i.isRemote,ho=i=>gt(i)==="promise",cs=i=>Xe(i)&&i.prototype.constructor===i,dn=i=>cs(i)?i.prototype.constructor.name:"",yg=typeof AudioWorkletNode!="undefined",bg=typeof HTMLMediaElement!="undefined"&&"setSinkId"in HTMLMediaElement.prototype;function Da(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 pe(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var lg=i=>+i<10?`0${i}`:i,Rg=i=>{let t=i.match(/^\d+\.\d+\.\d+/)[0];if(!t)return i;let e=t.split("."),r=lg(e[1])+lg(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${r}`},TS=Object.prototype.hasOwnProperty,{toString:gC}=Object.prototype;function un(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(Jt(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(TS.call(i,t))return!1;return!0}}return!1}function ds(i,t){return{userId:t,hasAudio:!!(i&rn),hasVideo:!!(i&tn),hasAuxiliary:!!(i&ba),hasSmall:!!(i&ym),audioMuted:!!(i&vd),videoMuted:!!(i&Cd),audioAvailable:!!(i&rn)&&!(i&vd),videoAvailable:!!(i&tn)&&!(i&Cd),hasDatachannel:!!(i&bm)}}function vg(i){let t={urls:i.url.startsWith("turn:")||i.url.startsWith("turns:")?i.url:`turn:${i.url}`};return!O(i.username)&&!O(i.credential)&&(t.username=i.username,t.credential=i.credential,t.credentialType="password",O(i.credentialType)||(t.credentialType=i.credentialType)),t}function ln(i,t=!0){if(!Oe(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 $r=function(i,t,e,r){if(!(fr(i)&&fr(t)))return 0;let o=0,s=Object.keys(t),n;for(let a=0,d=s.length;a<d;a++)if(n=s[a],!(O(t[n])||e&&e.includes(n)))if(fr(i[n])&&fr(t[n]))o+=$r(i[n],t[n],e,r);else{if(r&&r.includes(t[n]))continue;i[n]!==t[n]&&(i[n]=ns(t[n]),o+=1)}return o};function ns(i){if(ut(i)){let t=[];return i.forEach((e,r)=>{t[r]=ns(e)}),t}if(fr(i)){let t={};return Object.keys(i).forEach(e=>{t[e]=ns(i[e])}),t}return i}var mn=i=>{let t=[];if(ut(i))t=[...i];else if(Oe(i)){let e=document.getElementById(i);e&&t.push(e)}else i&&t.push(i);return t},Cg=i=>Oe(i)?document.getElementById(i):i,IS=i=>{let t=d=>d<10?`0${d}`:`${d}`,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}`},xd=()=>IS(new Date);function br(i,{keysToInclude:t,keysToExclude:e}){try{if(ut(i))return`[${i.map(n=>br(n,{keysToInclude:t,keysToExclude:e})).join(",")}]`;if(!Jt(i)||!ut(t)&&!ut(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]=Jt(i[n])||ut(i[n])?JSON.parse(br(i[n],{keysToExclude:e,keysToInclude:t})):i[n])}),JSON.stringify(r)}catch(r){return"{}"}}function wa(i,t=!1){let e=[];return Object.keys(i).forEach(r=>{t===i[r]&&e.push(r)}),br(i,{keysToInclude:e})}function Ng(i){return i.replace(/[\u4e00-\u9fa5]/g,"aa").length}var Bm=()=>{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},hn=i=>b(null,null,function*(){return new Promise((t,e)=>{let r;if(Oe(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 ce({code:z.INVALID_PARAMETER,message:`load image failed, url: ${i}`}))}})}),kd=i=>{let t=i.split(".");return+t[0]<<24|+t[1]<<16|+t[2]<<8|+t[3]<<0},Ma=i=>(Object.keys(i).forEach(t=>{Be(i[t])&&(t.startsWith("uint")||t.startsWith("int"))?i[t]=Math.floor(i[t]):(Jt(i[t])||ut(i[t]))&&Ma(i[t])}),i);function Hr(i,t){return new Promise(e=>{let r=setTimeout(e,i);t&&t(r)})}function Ud(i,t){let e=null;return function(...r){return e||(e=i.apply(t||this,r),e.finally(()=>e=null),e)}}function us(i){return i.replace(/(^|[^:])\/{2,}/g,"$1/")}function Vd(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),d=i.kind===M.AUDIO?`${s}x${n}@${a}`:`${e}x${r}@${o}`,l=i.stats?` stats: ${JSON.stringify(i.stats).replaceAll('"',"")}`:"";return`${i.id} ${i.readyState} muted:${i.muted} ${i.kind} ${i.label} ${d}${l}`}catch(e){return""}}function Fd(i,t){return i.width*i.height===t.width*t.height?1:Bm()&&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 gr(i){return i===90||i===270}function Dg(i){return b(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 Pd(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]=Pd(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]=Pd(i[r],t)}),e}return i}var pn=(r=>(r[r.END_REPORT=2001]="END_REPORT",r[r.LOG=2002]="LOG",r[r.KEY_METRIC_REPORT=2003]="KEY_METRIC_REPORT",r))(pn||{});function SS(i,t,e,r){let o={data:i,random:Math.floor(Math.random()*2147483648),sdkAppId:e};return O(r)||(o=Te(Q({},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 Oi(i,t,e,r){try{let o=SS(i,t,e,r),s=wd(o);return dg(s,e)}catch(o){return JSON.stringify(i)}}function Bd(i,t){let e=new Uint8Array(i.byteLength+t.byteLength);return e.set(new Uint8Array(i),0),e.set(new Uint8Array(t),i.byteLength),e.buffer}function $d(i){return(i&65535)>>>0}function wg(i){return(i&4294901760)>>>0}function Mg(i){let t=AS(i);return t==null?void 0:t.busiBuff}function AS(i){try{let t={},e=0;t.totalLength=zt(i,e),e+=4,t.version=zt(i,e),e+=4,t.encryption=Lm(i,e),e+=1,t.uinType=Lm(i,e),e+=1,t.uinLength=zt(i,e),e+=4,t.uin=t.uinLength>4?sn(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=yS(r,o),t.decrypted=!0,e=0}else i=r,e=0;return t.rspHeadLength=zt(i,e),e+=4,t.seqNo=zt(i,e),e+=4,t.retCode=zt(i,e),e+=4,t.retStrLength=zt(i,e),e+=4,t.retStr=t.retStrLength?sn(i,e,t.retStrLength-4):"",e+=t.retStrLength-4,t.serviceCmdLength=zt(i,e),e+=4,t.serviceCmd=t.serviceCmdLength?sn(i,e,t.serviceCmdLength-4):"",e+=t.serviceCmdLength-4,t.cookieLength=zt(i,e),e+=4,t.cookie=t.cookieLength?sn(i,e,t.cookieLength-4):"",e+=t.cookieLength-4,t.flag=zt(i,e),e+=4,t.busiBuffLength=zt(i,e),e+=4,t.busiBuff=t.busiBuffLength?sn(i,e,t.busiBuffLength-4):"",e+=t.busiBuffLength-4,t}catch(t){}}function Og(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=Md*Od>>>0;for(let s=0;s<Od;s++)r-=(e<<Um)+t[2]^e+o^(e>>>5)+t[3],r=r>>>0,e-=(r<<Um)+t[0]^r+o^(r>>>5)+t[1],e=e>>>0,o-=Md,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 yS(i,t){let e=0,r=new Uint8Array(8).fill(0),o=new Uint8Array(i.slice(0,8)),s=Og(o,t),n=s[0]&7,a=i.length-1-n-nn-an,d=new Uint8Array(a),l=0,p=r,f=i.slice(0,8);e=8;let _=1;_+=n;for(let R=1;R<=nn;)if(_<8)_++,R++;else if(_===8){let y=$m(i,e,p,f,s,t);p=y.ivPreCrypt,f=y.ivCurCrypt,s=y.debiBuf,e=y.bufPos,_=0}let I=a;for(;I>0;)if(_<8)d[l++]=s[_]^p[_],_++,I--;else if(_===8){let R=$m(i,e,p,f,s,t);p=R.ivPreCrypt,f=R.ivCurCrypt,s=R.debiBuf,e=R.bufPos,_=0}for(let R=1;R<=an;)if(_<8)s[_]^p[_],_++,R++;else if(_===8){if(e>=i.length)break;let y=$m(i,e,p,f,s,t);if(!y.success)break;p=y.ivPreCrypt,f=y.ivCurCrypt,s=y.debiBuf,e=y.bufPos,_=0}return d}function $m(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),d=new Uint8Array(8);for(let p=0;p<8;p++)d[p]=o[p]^a[p];let l=Og(d,s);return{success:!0,ivPreCrypt:n,ivCurCrypt:a,debiBuf:l,bufPos:t+8}}var Pg=typeof TextDecoder!="undefined"?new TextDecoder:void 0;function Pi({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(d=>d.clone().json().then(l=>({data:l}),()=>d.arrayBuffer().then(l=>({data:Mg(new Uint8Array(l))||(Pg?Pg.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 d=JSON.parse(a.response);s({data:d})}catch(d){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 Hm(i){return b(this,null,function*(){let t=pe(),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 B.debug(`compressJSON ${e.length} -> ${a.byteLength} ${pe()-t}ms`),a}catch(r){return e}})}var bS=Object.prototype.hasOwnProperty;var po=i=>typeof i=="function",ls=i=>typeof i=="undefined";var Lg=i=>typeof i=="boolean";var Hd=i=>i.isRemote;var Wm=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 xg(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(Wm(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(bS.call(i,t))return!1;return!0}}return!1}var RS=0,vS=1,kg=2;function CS({retryFunction:i,settings:t,onError:e,onRetrying:r,onRetryFailed:o,onRetrySuccess:s,context:n}){return function(...a){let{retries:d=5,timeout:l=1e3}=t,p=0,f=-1,_=RS,I=(R,y)=>b(this,null,function*(){let N=n||this;try{let P=yield i.apply(N,a);p>0&&s&&s.call(this,p),p=0,R(P)}catch(P){let W=()=>{clearTimeout(f),p=0,_=kg,y(P)},G=()=>{_!==kg&&p<(po(d)?d():d)?(p++,_=vS,po(r)&&r.call(this,p,W),f=window.setTimeout(()=>{f=-1,I(R,y)},po(l)?l(p):l)):(W(),po(o)&&o.call(this,P))};po(e)?e.call(this,{error:P,retry:G,reject:y,retryFuncArgs:a,retriedCount:p}):G()}});return new Promise(I)}}var fo=CS;var go=class i{constructor(t){m(this,"_parentPath");m(this,"userId");m(this,"remoteUserId");m(this,"id");m(this,"sdkAppId");m(this,"type");m(this,"isLocal");this.id=t.id,this.userId=t.userId,this.sdkAppId=t.sdkAppId,this.remoteUserId=t.remoteUserId,this.isLocal=Lg(t.isLocal)?t.isLocal:!0,this.type=this.isLocal?"":t.type}getFullId(){return this._parentPath&&this.id?`${this._parentPath}-${this.id}`:this._parentPath?this._parentPath:this.id}createChild(t){let e=new i({id:t.id,userId:ls(t.userId)?this.userId:t.userId,sdkAppId:ls(t.sdkAppId)?this.sdkAppId:t.sdkAppId,type:ls(t.type)?this.type:t.type,isLocal:ls(t.isLocal)?this.isLocal:t.isLocal,remoteUserId:ls(t.remoteUserId)?this.remoteUserId:t.remoteUserId});return e.bindParent(this),e}bindParent(t){let e=t.getFullId();this._parentPath!==e&&(this.debug(`bind logger parent: ${t.id}`),this._parentPath=e,this.userId=t.userId||this.userId,this.sdkAppId=t.sdkAppId||this.sdkAppId)}setUserId(t){this.userId=t}setSdkAppId(t){this.sdkAppId=t}log(t,e){let r=this.isLocal?this.userId:this.remoteUserId,o=this.getFullId();e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${o}${r?`|${r}`:""}]`),B.log(t,e,ls(this.userId)||xg(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 bn={};vi(bn,{ANDROID_VERSION:()=>jd,CHROME_MAJOR_VERSION:()=>Ut,CHROME_VERSION:()=>uu,EDGE_VERSION:()=>Jd,EDG_MAJOR_VERSION:()=>jm,EDG_VERSION:()=>Xd,ELECTRON_MAJOR_VERSION:()=>Qm,FIREFOX_MAJOR_VERSION:()=>zd,FIREFOX_VERSION:()=>qd,HUAWEI_VERSION:()=>su,IE_VERSION:()=>OS,IOS_MAIN_VERSION:()=>Pt,IOS_VERSION:()=>Er,IPADQQB_VERSION:()=>iu,IS_ANDROID:()=>rt,IS_ANDROID_WEBVIEW:()=>kS,IS_ANY_SAFARI:()=>vr,IS_CHROME:()=>An,IS_CHROME_OS:()=>qm,IS_CHROMIUM_128_TO_143:()=>_o,IS_CHROMIUM_BASE:()=>qr,IS_DESKTOP_IOS_CHROME:()=>eh,IS_EDG:()=>En,IS_EDGE:()=>hs,IS_ELECTRON:()=>LS,IS_FIREFOX:()=>nt,IS_HEADLESS_CHROME:()=>Xm,IS_HONOR:()=>Jm,IS_HUAWEI:()=>$a,IS_HUAWEIBROWSER:()=>Ba,IS_IE:()=>Bg,IS_IE8:()=>MS,IS_IOS:()=>it,IS_IOS_13_OR_14:()=>Km,IS_IOS_15_1:()=>Zm,IS_IOS_CHROME:()=>Oa,IS_IPAD:()=>gn,IS_IPADQQB:()=>Ua,IS_IPAD_PRO:()=>Gm,IS_IPHONE:()=>Eo,IS_IPOD:()=>Fg,IS_LINUX:()=>Va,IS_LOCAL:()=>zr,IS_MAC:()=>jr,IS_MACQQB:()=>ka,IS_MIBROWSER:()=>Fa,IS_MQQB:()=>Tn,IS_NATIVE_ANDROID:()=>wS,IS_OLD_ANDROID:()=>DS,IS_OPENHARMONY:()=>Sn,IS_OPPOBROWSER:()=>In,IS_SAFARI:()=>ct,IS_SAFARI_15_1:()=>US,IS_SAMSUNGBROWSER:()=>Ha,IS_SOGOU:()=>La,IS_SOGOUM:()=>Pa,IS_TBS:()=>Gr,IS_UCBROWSER:()=>zm,IS_VIVOBROWSER:()=>Wa,IS_WECHAT:()=>xi,IS_WIN:()=>ps,IS_WQQB:()=>xa,IS_WX:()=>PS,IS_X5MQQB:()=>_n,IS_XWEB:()=>Li,MACQQB_VERSION:()=>ru,MI_VERSION:()=>ou,MQQB_VERSION:()=>fn,OPENHARMONY_VERSION:()=>xS,OPPO_VERSION:()=>au,SAFARI_VERSION:()=>ki,SAMSUNG_VERSION:()=>nu,SOGOUM_VERSION:()=>Qd,SOGOU_VERSION:()=>Yd,TBS_VERSION:()=>Zd,UA_DATA_STRING:()=>Wr,USER_AGENT:()=>or,VIVO_VERSION:()=>cu,WECHAT_VERSION:()=>eu,WQQB_VERSION:()=>tu,XWEB_VERSION:()=>Kd,browserInfo:()=>li,getBrowserCoreNumber:()=>th,getBrowserInfo:()=>$g,getChromeMajorVersion:()=>du,getDeviceModel:()=>Vi,getDeviceModelFromUA:()=>lu,getGPUInfo:()=>To,getOSName:()=>yn,getOSNumber:()=>Es,getOSString:()=>Jr,getOSType:()=>ih,getTerminalType:()=>rh,getUserAgentData:()=>gs,isAMDGPU:()=>VS,isAppleSiliconGPU:()=>BS,isLocalStorageEnabled:()=>Ui,isMobile:()=>fs,isNvidiaGPU:()=>FS,isRealIOS:()=>ms,isVersionLargerThan:()=>Ga,isVersionSmallerThan:()=>Ym});var or=typeof navigator=="undefined"?"":navigator.userAgent,Re=i=>new RegExp(i,"i").test(or),At=i=>{if(Re(i)){let t=new RegExp(`${i}\\/([\\d.]+)`),e=or.match(t);if(e&&e[1])return e[1]}return""},Gd=i=>{if(Re(i)){let t=new RegExp(`${i}\\/(\\d+)`),e=or.match(t);if(e&&e[1])return parseFloat(e[1])}return NaN},Ug=/AppleWebKit\/([\d.]+)/i.exec(or),NS=Ug?parseFloat(Ug[1]):NaN,gn=Re("iPad"),Gm=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&Re("Macintosh"),Eo=Re("iPhone")&&!gn,Fg=Re("iPod"),it=Eo||gn||Fg||Gm,ms=()=>{try{return it&&navigator.maxTouchPoints>1&&navigator.vendor.includes("Apple")}catch(i){return it}},rt=Re("Android"),jd=(function(){if(rt){let i=or.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})(),DS=rt&&Re("webkit")&&jd<2.3,wS=rt&&jd<5&&NS<537,nt=Re("Firefox"),qd=At("Firefox"),zd=Gd("Firefox"),hs=Re("Edge"),Jd=At("Edge"),En=Re("Edg"),Xd=At("Edg"),jm=Gd("Edg"),Pa=Re("SogouMobileBrowser"),Qd=At("SogouMobileBrowser"),La=Re("MetaSr\\s"),Yd=At("MetaSr\\s"),Gr=Re("TBS"),Zd=At("TBS"),Li=Re("XWEB"),Kd=At("XWEB"),MS=Re("MSIE\\s8\\.0"),Bg=Re("MSIE\\/\\d+"),OS=(function(){if(Bg){let i=/MSIE\s(\d+)\.\d/.exec(or),t=i&&parseFloat(i[1]);return!t&&/Trident\/7.0/i.test(or)&&/rv:11.0/.test(or)&&(t=11),t}return NaN})(),xi=Re("(micromessenger|webbrowser)"),eu=At("MicroMessenger"),_n=!Gr&&Re("MQQBrowser")&&Re("COVC"),Tn=!Gr&&Re("MQQBrowser")&&!Re("COVC"),fn=Tn||_n?At("MQQBrowser"):"",xa=!Gr&&Re(" QQBrowser"),tu=At(" QQBrowser"),ka=!Gr&&Re("QQBrowserLite"),ru=At("QQBrowserLite"),Ua=!Gr&&Re("MQBHD"),iu=At("MQBHD"),ps=Re("Windows"),jr=!it&&Re("MAC OS X"),Va=!rt&&Re("Linux"),qm=Re("CrOS"),PS=Re("MicroMessenger"),zm=Re("UCBrowser"),LS=Re("Electron"),Fa=Re("MiuiBrowser"),ou=At("MiuiBrowser"),Ba=Re("HuaweiBrowser"),$a=Re("Huawei")||Re("HUAWEI"),Jm=Re("Honor")||Re("HONOR"),su=At("HuaweiBrowser"),Ha=Re("SamsungBrowser"),nu=At("SamsungBrowser"),In=Re("HeyTapBrowser"),au=At("HeyTapBrowser"),Wa=Re("VivoBrowser"),cu=At("VivoBrowser"),Sn=Re("OpenHarmony"),xS=At("OpenHarmony"),du=()=>Gd("Chrome"),Oa=Re("CriOS"),qr=Re("Chrome"),An=!hs&&!La&&!Pa&&!Gr&&!Li&&!En&&!xa&&!Fa&&!Ba&&!Ha&&!In&&!Wa&&qr,Xm=Re("HeadlessChrome"),Ut=du(),_o=qr&&Ut>=128&&Ut<=143,uu=At("Chrome"),Qm=Gd("Electron"),ct=!qr&&!Tn&&!_n&&!ka&&!Ua&&Re("Safari"),vr=ct||it,ki=At("Version"),kS=/Android.*(wv|.0.0.0)/.test(or),Er=(()=>{if(Gm)return ki;if(it){let i=or.match(/OS (\d+)_(\d+)/i);if(i&&i[1]){let t=i[1];return i[2]&&(t+=`.${i[2]}`),t}}return""})();function Ym(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 Ga(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 Pt=Number(Er.split(".")[0]),US=ki==="15.1",Zm=Er==="15.1",Km=(()=>{let i=Number(Er.split(".")[0]);return i===14||i===13})(),eh=Oa&&ki==="11.1.1",zr=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",Ui=(()=>{let i;return()=>{if(typeof i=="undefined")try{i=!!window.localStorage}catch(t){i=!1}return i}})(),li=$g();function $g(){let i=new Map([[nt,["Firefox",qd]],[En,["Edg",Xd]],[An,["Chrome",uu]],[Oa,["ChiOS",At("CriOS")]],[ct&&!Oa,["Safari",ki]],[Gr,["TBS",Zd]],[Li,["XWEB",Kd]],[xi&&Eo,["WeChat",eu]],[xa,["QQ(Win)",tu]],[Tn,["QQ(Mobile)",fn]],[_n,["QQ(Mobile X5)",fn]],[ka,["QQ(Mac)",ru]],[Ua,["QQ(iPad)",iu]],[Fa,["MI",ou]],[Ba,["HW",su]],[Ha,["Samsung",nu]],[In,["OPPO",au]],[Wa,["VIVO",cu]],[hs,["EDGE",Jd]],[Pa,["SogouMobile",Qd]],[La,["Sogou",Yd]]]),t="unknown",e="unknown";return i.has(!0)&&([t,e]=i.get(!0)),{name:t,version:e}}var Qe=null;function fs(){return Qe&&typeof Qe.mobile=="boolean"?Qe.mobile:rt||it||Eo||gn||Sn}var Wr="";function gs(){return b(this,null,function*(){if(Qe)return Qe;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return Qe=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),Qe&&!Wr&&(Wr=`UAData: ${Qe.platform}/${Qe.platformVersion}`,Qe.architecture&&Qe.bitness&&(Wr+=` ${Qe.architecture}/${Qe.bitness}`),Qe.mobile&&(Wr+=" mobile"),Qe.model&&(Wr+=` model: ${Qe.model.replace(/\s+/g,"/")}`),Qe.fullVersionList&&(Wr+=` ${Qe.fullVersionList.filter(i=>i.brand!=="Not/A)Brand").map(i=>`${i.brand}/${i.version}`).join(",")}`)),Qe}catch(i){return null}})}var Wd="";function To(){try{if(Wd)return Wd;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 Wd=`${r} ${o}`,Wd}return""}catch(i){return""}}function VS(){try{let i=To();return i.includes("AMD")||i.includes("ATI")}catch(i){return!1}}function FS(){try{let i=To();return i.includes("NVIDIA")||i.includes("GeForce")}catch(i){return!1}}function BS(){try{return To().includes("Apple M")}catch(i){return!1}}function Vi(){return(Qe==null?void 0:Qe.model)||lu()||""}function lu(){let i=/;\s*([^;)]+)\s+Build\//,t=or.match(i);return t!=null&&t[1]?t[1].trim():null}var Vg=new Map([[rt,"Android"],[it,"iOS"],[ps,"Windows"],[jr,"MacOS"],[Va,"Linux"],[qm,"ChromeOS"]]),yn=function(){return Vg.get(!0)?Vg.get(!0):Qe?Qe.platform:"unknown"};function Es(){return ps?1:rt?2:jr?3:it?4:Va?5:qm?6:Sn?7:0}function th(){return xi||Li?4:qr?1:ct?2:nt?3:0}var Jr=()=>{let i=yn();return Qe!=null&&Qe.platformVersion?i+=`/${Qe.platformVersion}`:it?i+=`/${Er}`:rt&&(i+=`/${jd}`),i+=`/${li.name}/${ct&&!Oa?li.version:li.version.split(".")[0]}`,Qe!=null&&Qe.architecture&&(i+=`/${Qe.architecture}`),i};function rh(){return rt?4:Eo?2:gn?3:jr?12:ps?5:Va?13:Sn?22:1}function ih(){return rt?"Android":Eo?"iPhone":gn?"iPad":jr?"Mac":ps?"Windows":Va?"Linux":"unknown"}var Wg=ai(mi(),1),WS=new Wg.default,x=WS;var _r=(se=>(se.ROOM_DESTROY="1",se.JOIN_START="21",se.JOIN_SCHEDULE_SUCCESS="22",se.JOIN_SIGNAL_CONNECTION_START="23",se.JOIN_SIGNAL_CONNECTION_END="24",se.JOIN_SEND_CMD="25",se.JOIN_RECEIVED_CMD_RES="26",se.JOIN_SUCCESS="27",se.JOIN_FAILED="28",se.LEAVE_START="51",se.LEAVE_SEND_CMD="52",se.LEAVE_SUCCESS="53",se.PUBLISH_START="61",se.SEND_FIRST_VIDEO_FRAME="62",se.PUBLISH_FAILED="63",se.SUBSCRIBE_START="81",se.SUBSCRIBE_SUCCESS="82",se.SUBSCRIBE_FAILED="84",se.UNSUBSCRIBE_SUCCESS="83",se.LOCAL_TRACK_CAPTURE_START="101",se.LOCAL_TRACK_CAPTURE_SUCCESS="102",se.LOCAL_TRACK_CAPTURE_FAILED="103",se.LOCAL_TRACK_PUBLISHED="104",se.LOCAL_TRACK_UNPUBLISHED="105",se.LOCAL_TRACK_REPLACED="106",se.SWITCH_DEVICE_SUCCESS="107",se.TRACK_MUTED="108",se.TRACK_UNMUTED="109",se.REMOTE_TRACK_SUBSCRIBED="110",se.REMOTE_TRACK_UNSUBSCRIBED="111",se.LOCAL_TRACK_RECAPTURE="112",se.LOCAL_AUDIO_STARTED="113",se.LOCAL_AUDIO_STOPPED="114",se.REMOTE_AUDIO_STARTED="115",se.REMOTE_AUDIO_STOPPED="116",se.PLAY_TRACK_START="151",se.PLAYER_STATE_CHANGED="152",se.VIDEO_LOADED_DATA="153",se.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",se.AUDIO_CONTEXT_LONG_SUSPENDED="155",se.REMOTE_VIDEO_PLAY_START="156",se.REMOTE_VIDEO_PLAY_FINISH="157",se.SIGNAL_CONNECTION_STATE_CHANGED="201",se.PEER_CONNECTION_STATE_CHANGED="202",se.SINGLE_CONNECTION_STAT="203",se.SPC_RECONNECTED="204",se.HEARTBEAT_REPORT="251",se.RECEIVED_PUBLISHED_USER_LIST="252",se.REMOTE_PUBLISH_STATE_CHANGED="253",se.AUDIO_LEVEL_INTERVAL="260",se.NETWORK_QUALITY="261",se.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",se.QUALITY_LIMITATION_CHANGED="263",se.LOG="264",se.AUDIO_PROCESSOR_DEBUG="265",se.SSO_SWITCH="266",se.SEI_MESSAGE="267",se.USER_PAUSE_IN_PIP="268",se.USER_RESUME_IN_PIP="269",se.ENTER_PICTURE_IN_PICTURE="270",se.LEAVE_PICTURE_IN_PICTURE="271",se.SWITCH_ROOM_START="401",se.SWITCH_ROOM_SUCCESS="407",se.SWITCH_ROOM_FAILED="408",se))(_r||{});var V=_r;var sh=class{constructor(){m(this,"enable",!1);m(this,"ssoFailCount",0);x.on("22",({schedule:t})=>{var e;(e=t==null?void 0:t.config)!=null&&e.sso&&x.emit("266",{enable:!0})}),x.on("266",({enable:t})=>{this.enable=t})}handleUploadFailed(){this.ssoFailCount++,this.ssoFailCount>3&&x.emit("266",{enable:!1})}},Io=new sh;var GS="%cTRTC%c%s",jS="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",qS="display: inline",hu=class hu{constructor(){m(this,"_isEnableUploadLog",!0);m(this,"_localJoinedUser",new Map);m(this,"_queue",[]);m(this,"_timeoutId",-1);m(this,"_logLevel",1);m(this,"_logLevelToUpload",2);!en&&!Sa&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){x.on(V.JOIN_SCHEDULE_SUCCESS,({schedule:t})=>{var e;(e=t==null?void 0:t.config)!=null&&e.logLevelToUpload&&Vr[t.config.logLevelToUpload]&&(this._logLevelToUpload=t.config.logLevelToUpload)}),x.on(V.JOIN_START,({params:t})=>{this.addJoinedUser({userId:t.userId,sdkAppId:t.sdkAppId}),this.startUpload()}),x.on(V.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(Oe(r.userId)&&Be(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 b(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:d}=o[s],l={timestamp:Td(),sdkAppId:String(a),userId:n,version:ft,log:d.map(_=>_.log).join(`
|
|
4
|
-
`)},p=JSON.stringify(l),f=Io.enable?Oi(l,2002,a):p;yield this.uploadLogWithRetry(f,a,f instanceof Uint8Array,p),d.forEach(_=>_.uploaded=!0)}}catch(o){}let r=e.filter(o=>!o.uploaded);r.length>0&&(this._queue=r.concat(this._queue))})}uploadLogWithRetry(t,e,r,o){return fo({retryFunction:()=>Pi({url:Mi(e,mo.LOG),body:t,timeout:5e3,priority:"low"}).then(s=>{r&&s.data!=="ok"&&(Io.handleUploadFailed(),this.uploadLogWithRetry(o,e,!1,o))}),settings:{retries:3,timeout:2e3},onError:({retry:s})=>{s()}})()}getPrefix(t){let e=new Date;return e.setTime(Ci()),`[${Ks(e)}] <${Vr[t]}>`}getLogLevel(){return this._logLevel}setLogLevel(t){O(Vr[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(Oe(t))return t;try{return t instanceof Error?t.toString():JSON.stringify(t)}catch(e){return""}}addLogToQueue(t,e,r=!0,o,s){let n={log:e.reduce((a,d)=>`${a} ${this.logChunkToString(d)}`.trim(),""),level:t,userId:o,sdkAppId:s,forAllJoinedClients:r};x.emit(V.LOG,{log:n}),this._isEnableUploadLog&&t>=this._logLevelToUpload&&this._queue.push(n)}log(t,e,r=!0,o,s){var a;if(e.unshift(this.getPrefix(t)),this.addLogToQueue(t,e,r,o,s),t<this._logLevel)return;let n=((a=Vr[t])==null?void 0:a.toLowerCase())||"info";hu.PRINT_LOG_TAG?console[n](GS,jS,qS,...e):console[n](...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){if(t.parent instanceof go){let e=t,{parent:r}=e,o=eg(e,["parent"]),s=new go(o);return s.bindParent(r),s}return new go(t)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),r=e?Number(e):-1;Vr[r]&&(this._logLevelToUpload=r)}getQueue(){return this._queue}};m(hu,"PRINT_LOG_TAG",!(it||rt||Xm));var nh=hu,B=new nh;var zS=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)})},qa=zS;var ah=class{constructor(){m(this,"_prefix","TRTC");m(this,"_queue",new Map)}getRealKey(t){return`${this._prefix}_${t}`}checkStorage(){if(!Ui())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(Ui())try{for(let[t,e]of this._queue)localStorage.setItem(t,JSON.stringify(e))}catch(t){B.warn(t)}}getItem(t){if(!Ui())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){B.warn(e)}}setItem(t,e){if(Ui())try{let r={expiresIn:Date.now()+Ad,value:e};this._queue.set(this.getRealKey(t),r)}catch(r){B.warn(r)}}deleteItem(t){if(!Ui())return!1;try{return t=this.getRealKey(t),this._queue.delete(t),localStorage.removeItem(t),!0}catch(e){return B.warn(e),!1}}clear(){if(Ui())try{localStorage.clear()}catch(t){B.warn(t)}}},Rn=new ah;var Ro={};vi(Ro,{HTTPS_API:()=>fA,IS_GET_CAPABILITIES_FROM_INPUTDEVICE_SUPPORTED:()=>Mh,IS_GET_CAPABILITIES_SUPPORTED:()=>wh,IS_GET_SETTINGS_SUPPORTED:()=>Nn,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>bA,IS_INSERTABLE_STREAM_SUPPORTED:()=>Ss,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>CA,IS_RTC_RTP_SENDER_SUPPORTED:()=>rc,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>SE,IS_SEI_SUPPORTED:()=>ic,IS_SPC_SUPPORTED:()=>IA,basis:()=>RA,capabilityCheck:()=>Lh,checkSystemRequirementsInternal:()=>Nu,decodeSupportStatus:()=>hE,detectVideoCodecCapabilities:()=>xh,detectVideoDecoderCapabilities:()=>vE,detectVideoEncoderCapabilities:()=>RE,encodeSupportStatus:()=>Dh,getBrowserInfo:()=>vu,getDisplayResolution:()=>pE,getH264ProfileLevelIds:()=>CE,isAddTransceiverSupported:()=>wu,isBrowserSupported:()=>vh,isCanvasCaptureStreamAPISupported:()=>EE,isCanvasSmallStreamSupported:()=>_E,isGetReceiversSupported:()=>_A,isGetSendersSupported:()=>IE,isGetTransceiversSupported:()=>TA,isGetUserMediaSupported:()=>fE,isMediaDevicesSupported:()=>Cu,isMediaSessionSupported:()=>AE,isMediaStreamTrackGeneratorSupported:()=>dA,isMediaStreamTrackProcessorSupported:()=>Nh,isReplaceTrackSupported:()=>AA,isRequestVideoFrameCallbackSupported:()=>Qr,isSIMDSupported:()=>Ph,isScaleResolutionDownBySupported:()=>TE,isScreenCaptureApiAvailable:()=>tc,isSelectedCandidatePair:()=>gA,isSetParametersSupported:()=>yA,isSetSinkIdSupported:()=>mA,isSmallStreamSupported:()=>Du,isStopTransceiverSupported:()=>SA,isTRTCSupported:()=>lA,isUnifiedPlanDefault:()=>EA,isUsedInHttpProtocol:()=>Gi,isWebAudioSupported:()=>gE,isWebCodecSupported:()=>Mu,isWebCodecsSupported:()=>Ch,isWebRTCSupported:()=>Oh,isWebTransportSupported:()=>yE});var Ih={};vi(Ih,{AUDIO_LEVEL_SCALE:()=>$i,AlphaStitchingType:()=>Ka,AudioCodecPipelineType:()=>Ya,AudioDecoderDowngradeState:()=>uh,AudioPlayerMode:()=>ph,AudioType:()=>mh,BASIC_TYPE:()=>Hi,BannedReason:()=>fh,CONNECTION_CLOSED_REASON:()=>jg,CheckPermissionType:()=>Th,ClientEvent:()=>ch,CodecType:()=>Zg,ConnectionEvent:()=>Gg,ConnectionState:()=>fu,DECODE_FAILED_ERROR_CODE:()=>_h,DenoiserMode:()=>Eh,DeviceType:()=>Iu,FacingMode:()=>gu,FrameWorkType:()=>pu,LeaveReason:()=>gh,LocalTrackEvent:()=>So,MULTI_VIDEO_DATA_TYPE:()=>Bi,MediaType:()=>Lt,MediaTypeLabel:()=>JS,MonitorEventId:()=>Xa,MutedFlag:()=>zg,NetworkQualityValue:()=>Qg,PlayerState:()=>Ao,ReceiveMode:()=>Yg,RemoteStreamType:()=>Xr,RemoteTrackEvent:()=>yo,RoomEvent:()=>Fi,SMALL_MODE:()=>Tu,SceneNumber:()=>dh,StreamEvent:()=>qg,StreamType:()=>Xg,SubscribeMediaType:()=>za,TIMER_TYPE:()=>bo,TRACK_ACTION:()=>Jg,TRACK_KIND:()=>lh,TrackEvent:()=>Cr,UserRole:()=>Kt,UserRoleNumber:()=>_s,VideoCodec:()=>Eu,VideoCodecPipelineType:()=>_u,VideoContentHint:()=>Za,VideoDecoderDowngradeState:()=>Ja,VideoPlayerMode:()=>Qa,VideoType:()=>hh});var pu=(e=>(e[e.WEBRTC=30]="WEBRTC",e[e.WASM=37]="WASM",e))(pu||{}),Gg=(y=>(y.TRACK_ADDED="track-added",y.TRACK_UPDATED="track-updated",y.TRACK_SUBSCRIBED="track-subscribed",y.STREAM_ADDED="stream-added",y.STREAM_REMOVED="stream-removed",y.STREAM_UPDATED="stream-updated",y.STREAM_PUBLISHED="stream-published",y.STREAM_SUBSCRIBED="stream-subscribed",y.STREAM_UNSUBSCRIBED="stream-unsubscribed",y.STATE_CHANGED="state-changed",y.ERROR="error",y.CONNECTION_STATE_CHANGED="connection-state-changed",y.FIREWALL_RESTRICTION="firewall-restriction",y.SEI_MESSAGE="sei-message",y.CLOSED="closed",y))(Gg||{}),jg=(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))(jg||{}),ch=(N=>(N.STREAM_ADDED="stream-added",N.STREAM_REMOVED="stream-removed",N.STREAM_UPDATED="stream-updated",N.STREAM_SUBSCRIBED="stream-subscribed",N.CONNECTION_STATE_CHANGED="connection-state-changed",N.PEER_JOIN="peer-join",N.PEER_LEAVE="peer-leave",N.MUTE_AUDIO="mute-audio",N.MUTE_VIDEO="mute-video",N.UNMUTE_AUDIO="unmute-audio",N.UNMUTE_VIDEO="unmute-video",N.CLIENT_BANNED="client-banned",N.NETWORK_QUALITY="network-quality",N.AUDIO_VOLUME="audio-volume",N.SEI_MESSAGE="sei-message",N.ERROR="error",N))(ch||{}),qg=(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))(qg||{}),So=(d=>(d.DEVICE_AUTO_RECOVERED="1",d.DEVICE_RECOVER_FAILED="5",d.DEVICE_CHANGED="2",d.ERROR="3",d.PUBLISH_STATE_CHANGED="4",d.ENCODE_FAILED="6",d.TRACK_ENDED="7",d.RENDER="render",d))(So||{}),Ao=(r=>(r.PAUSED="PAUSED",r.PLAYING="PLAYING",r.STOPPED="STOPPED",r))(Ao||{}),Fi=(Ye=>(Ye.PEER_JOIN="peer-join",Ye.PEER_LEAVE="peer-leave",Ye.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",Ye.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",Ye.BANNED="banned",Ye.NETWORK_QUALITY="network-quality",Ye.AUDIO_VOLUME="audio-volume",Ye.SEI_MESSAGE="sei-message",Ye.ERROR="error",Ye.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",Ye.REMOTE_PUBLISHED="remote-published",Ye.REMOTE_UNPUBLISHED="remote-unpublished",Ye.FIREWALL_RESTRICTION="firewall-restriction",Ye.HEARTBEAT_REPORT="heartbeat-report",Ye.CUSTOM_MESSAGE="custom-message",Ye.LAYER_DATA="layerData",Ye.FIRST_VIDEO_FRAME="first-video-frame",Ye.DUMP="dump",Ye.AUDIO_FRAME="audio-frame",Ye.SUBSCRIBE_SMALL_VIDEO_CHANGED="subscribe-small-video-changed",Ye.LOCAL_PUBLISH_FLAG_CHANGED="local-publish-flag-changed",Ye.NTP_TIME_UPDATED="ntp-time-updated",Ye.DATA_CHANNEL_MESSAGE="data-channel-message",Ye.ASR_ROBOT_PEER_JOIN="asr-robot-peer-join",Ye.ASR_ROBOT_PEER_LEAVE="asr-robot-peer-leave",Ye))(Fi||{}),Cr=(d=>(d.PLAYER_STATE_CHANGED="player-state-changed",d.MUTE="mute",d.UNMUTE="unmute",d.ERROR="error",d.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",d.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",d.FIRST_VIDEO_FRAME="first-video-frame",d.VIDEO_SIZE_CHANGED="video-size-changed",d))(Cr||{}),yo=(s=>(s.DECODE_FAILED="decode-failed",s.DECODE_FAILED_DURING_CALL="decode-failed-during-call",s.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",s.REMOTE_PUBLISH_CHANGED="remote-publish-changed",s.AUDIO_FRAME_WITH_NTP="audio-frame-with-ntp",s))(yo||{}),zg=(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))(zg||{}),dh=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(dh||{}),_s=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(_s||{}),Kt=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(Kt||{}),fu=(s=>(s.CONNECTED="CONNECTED",s.DISCONNECTED="DISCONNECTED",s.CONNECTING="CONNECTING",s.RECONNECTED="RECONNECTED",s.RECONNECTING="RECONNECTING",s))(fu||{}),uh=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(uh||{}),Ja=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(Ja||{}),lh=(r=>(r.AUDIO="audio",r.VIDEO="video",r.AUXILIARY="auxVideo",r))(lh||{}),Jg=(e=>(e.ADD="add",e.REMOVE="remove",e))(Jg||{}),Lt=(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))(Lt||{}),JS={1:"audio",2:"auxVideo",4:"video"},mh=(t=>(t[t.opus=111]="opus",t))(mh||{}),hh=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(hh||{}),Xg=(e=>(e.Big="big",e.Small="small",e))(Xg||{}),Xr=(e=>(e.Main="main",e.Aux="auxiliary",e))(Xr||{}),Bi=(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))(Bi||{}),Xa=(H=>(H[H.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",H[H.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",H[H.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",H[H.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",H[H.MUTE_AUDIO=32772]="MUTE_AUDIO",H[H.MUTE_VIDEO=32773]="MUTE_VIDEO",H[H.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",H[H.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",H[H.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",H[H.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",H[H.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",H[H.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",H[H.SWITCH_CAMERA=32780]="SWITCH_CAMERA",H[H.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",H[H.REPLACE_VIDEO=32782]="REPLACE_VIDEO",H[H.REPLACE_AUDIO=32783]="REPLACE_AUDIO",H[H.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",H[H.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",H[H.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",H[H.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",H[H.JOIN=32788]="JOIN",H[H.LEAVE=32789]="LEAVE",H[H.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",H[H.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",H[H.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",H[H.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",H[H.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",H[H.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",H[H.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",H[H.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",H[H.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",H[H.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",H[H.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",H[H.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",H[H.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",H[H.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",H[H.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",H[H.PUBLISH_AUX=32805]="PUBLISH_AUX",H[H.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",H[H.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",H[H.VIDEO_ENCODER=4004]="VIDEO_ENCODER",H[H.VIDEO_DECODER=4005]="VIDEO_DECODER",H))(Xa||{}),Qg=(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))(Qg||{}),Yg=(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))(Yg||{}),gu=(e=>(e.user="user",e.environment="environment",e))(gu||{}),Qa=(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))(Qa||{}),ph=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(ph||{}),fh=(o=>(o.BANNED="banned",o.KICK="kick",o.USER_TIME_OUT="user_time_out",o.ROOM_DISBAND="room_disband",o))(fh||{}),gh=(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))(gh||{}),$i=1e8,Eh=(e=>(e[e.NORMAL=0]="NORMAL",e[e.FAR_FIELD_REDUCTION=1]="FAR_FIELD_REDUCTION",e))(Eh||{}),za=class{constructor(){m(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)}},Hi=(s=>(s.String="string",s.Number="number",s.Boolean="boolean",s.Array="array",s.Object="object",s))(Hi||{}),Eu=(s=>(s.H264="h264",s.H265="h265",s.VP8="vp8",s.VP9="vp9",s.AV1="av1",s))(Eu||{}),_u=(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))(_u||{}),Ya=(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))(Ya||{}),Zg=(r=>(r.WebRTC="webrtc",r.WebCodecs="webcodecs",r.WebAssembly="webassembly",r))(Zg||{}),_h=(_=>(_[_.SUCCESS=0]="SUCCESS",_[_.FAILED=1]="FAILED",_[_.WEBCODEC_INIT=2]="WEBCODEC_INIT",_[_.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",_[_.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",_[_.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",_[_.WASM_INIT=6]="WASM_INIT",_[_.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",_[_.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",_[_.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",_[_.TEST=10]="TEST",_[_.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",_))(_h||{}),Za=(o=>(o.NONE="",o.DETAIL="detail",o.MOTION="motion",o.TEXT="text",o))(Za||{}),bo=(s=>(s.INTERVAL="interval",s.TIMEOUT="timeout",s.RAF="raf",s.RIC="ric",s.INTERVAL_IN_WORKER="intervalInWorker",s))(bo||{}),Tu=(e=>(e.CANVAS="canvas",e.API="api",e))(Tu||{}),Th=(o=>(o[o.NONE=0]="NONE",o[o.MICROPHONE=1]="MICROPHONE",o[o.CAMERA=2]="CAMERA",o[o.BOTH=3]="BOTH",o))(Th||{}),Iu=(e=>(e.CAMERA="camera",e.MICROPHONE="microphone",e))(Iu||{}),Ka=(r=>(r[r.none=0]="none",r[r.horizontal=1]="horizontal",r[r.vertical=2]="vertical",r))(Ka||{});var Ge={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"},sr={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: ${gt(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: ${gt(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 Kg=(i,t)=>t?`${ir}/${i}/${t}`:`${ir}/${i}/index.html`;var XS=()=>{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(Sm);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 je(i){let{key:t,data:e,link:r,addDocLink:o=!0}=i,s="",n="",a="";Xe(sr[t])?s=sr[t](e):Oe(sr[t])&&(s=sr[t]);let{TRTC_ERROR_INFO:d,TRTC_ERROR_LINK:l}=XS();r?a=`${r.className}.html#${r.fnName}`:l&&l[t]&&(Xe(l[t])?a=l[t](e):Oe(l[t])&&(a=l[t]));let p=s;return Br()&&(d&&d[t]&&(Xe(d[t])?n=d[t](e):Oe(d[t])&&(n=d[t])),n&&(o?p=`${n}
|
|
5
|
-
\u8BF7\u67E5\u770B\u6587\u6863: ${Kg("zh-cn",a)}
|
|
3
|
+
`}});var Lp=Fi(Ni=>{"use strict";var ls=Op(),UE=kp(),VE=vc();Ni.grammar=VE;Ni.write=UE;Ni.parse=ls.parse;Ni.parseParams=ls.parseParams;Ni.parseFmtpConfig=ls.parseFmtpConfig;Ni.parsePayloads=ls.parsePayloads;Ni.parseRemoteCandidates=ls.parseRemoteCandidates;Ni.parseImageAttributes=ls.parseImageAttributes;Ni.parseSimulcastStreamList=ls.parseSimulcastStreamList});var lm=Fi((_B,D_)=>{"use strict";var N_=D_.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(s){return s.encoding?"rtpmap:%d %s/%s/%s":s.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(s){return s.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(s){return s.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(s){return"extmap:%d"+(s.direction?"/%s":"%v")+(s["encrypt-uri"]?" %s":"%v")+" %s"+(s.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(s){return s.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(s){var i="candidate:%s %d %s %d %s %d typ %s";return i+=s.raddr!=null?" raddr %s rport %d":"%v%v",i+=s.tcptype!=null?" tcptype %s":"%v",s.generation!=null&&(i+=" generation %d"),i+=s["network-id"]!=null?" network-id %d":"%v",i+=s["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(s){var i="ssrc:%d";return s.attribute!=null&&(i+=" %s",s.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(s){return s.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(s){return s.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(s){return"imageattr:%s %s %s"+(s.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(s){return"simulcast:%s %s"+(s.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(s){return"ts-refclk:%s"+(s.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(s){var i="mediaclk:";return i+=s.id!=null?"id=%s %s":"%v%s",i+=s.mediaClockValue!=null?"=%s":"",i+=s.rateNumerator!=null?" rate=%s":"",i+=s.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(N_).forEach(function(s){var i=N_[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var P_=Fi(mr=>{"use strict";var Ho=function(s){return String(Number(s))===s?Number(s):s},II=function(s,i,e,t){if(t&&!e)i[t]=Ho(s[1]);else for(var r=0;r<e.length;r+=1)s[r+1]!=null&&(i[e[r]]=Ho(s[r+1]))},AI=function(s,i,e){var t=s.name&&s.names;s.push&&!i[s.push]?i[s.push]=[]:t&&!i[s.name]&&(i[s.name]={});var r=s.push?{}:t?i[s.name]:i;II(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},M_=lm(),RI=RegExp.prototype.test.bind(/^([a-z])=(.*)/);mr.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(RI).forEach(function(r){var o=r[0],n=r.slice(2);o==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(M_[o]||[]).length;a+=1){var c=M_[o][a];if(c.reg.test(n))return AI(c,t,n)}}),i.media=e,i};var O_=function(s,i){var e=i.split(/=(.+)/,2);return e.length===2?s[e[0]]=Ho(e[1]):e.length===1&&i.length>1&&(s[e[0]]=void 0),s};mr.parseParams=function(s){return s.split(/;\s?/).reduce(O_,{})};mr.parseFmtpConfig=mr.parseParams;mr.parsePayloads=function(s){return s.toString().split(" ").map(Number)};mr.parseRemoteCandidates=function(s){for(var i=[],e=s.split(" ").map(Ho),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};mr.parseImageAttributes=function(s){return s.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(O_,{})})};mr.parseSimulcastStreamList=function(s){return s.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=Ho(e):(t=Ho(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var L_=Fi((EB,k_)=>{"use strict";var um=lm(),CI=/%[sdv%]/g,yI=function(s){var i=1,e=arguments,t=e.length;return s.replace(CI,function(r){if(i>=t)return r;var o=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},_a=function(s,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[s+"="+t];if(i.names)for(var o=0;o<i.names.length;o+=1){var n=i.names[o];i.name?r.push(e[i.name][n]):r.push(e[i.names[o]])}else r.push(e[i.name]);return yI.apply(null,r)},bI=["v","o","s","i","u","e","p","c","b","t","r","z","a"],vI=["i","c","b","a"];k_.exports=function(s,i){i=i||{},s.version==null&&(s.version=0),s.name==null&&(s.name=" "),s.media.forEach(function(o){o.payloads==null&&(o.payloads="")});var e=i.outerOrder||bI,t=i.innerOrder||vI,r=[];return e.forEach(function(o){um[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(_a(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(_a(o,n,a))})})}),s.media.forEach(function(o){r.push(_a("m",um.m[0],o)),t.forEach(function(n){um[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(_a(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(c){r.push(_a(n,a,c))})})})}),r.join(`\r
|
|
4
|
+
`)+`\r
|
|
5
|
+
`}});var hm=Fi(pr=>{"use strict";var Ms=P_(),NI=L_();pr.write=NI;pr.parse=Ms.parse;pr.parseParams=Ms.parseParams;pr.parseFmtpConfig=Ms.parseFmtpConfig;pr.parsePayloads=Ms.parsePayloads;pr.parseRemoteCandidates=Ms.parseRemoteCandidates;pr.parseImageAttributes=Ms.parseImageAttributes;pr.parseSimulcastStreamList=Ms.parseSimulcastStreamList});import N5 from"webrtc-adapter";var T_=Ge(Ze());var Lm=(F=>(F[F.INVALID_PARAMETER=4096]="INVALID_PARAMETER",F[F.INVALID_OPERATION=4097]="INVALID_OPERATION",F[F.NOT_SUPPORTED=4098]="NOT_SUPPORTED",F[F.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",F[F.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",F[F.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",F[F.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",F[F.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",F[F.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",F[F.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",F[F.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",F[F.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",F[F.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",F[F.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",F[F.CLIENT_BANNED=16448]="CLIENT_BANNED",F[F.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",F[F.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",F[F.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",F[F.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",F[F.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",F[F.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",F[F.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",F[F.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",F[F.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",F[F.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",F[F.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",F[F.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",F[F.API_CALL_ABORTED=16461]="API_CALL_ABORTED",F[F.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",F[F.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",F[F.SWITCH_ROOM_FAILED=16464]="SWITCH_ROOM_FAILED",F[F.VIDEO_ENCODE_FAILED=16465]="VIDEO_ENCODE_FAILED",F[F.AUDIO_ENCODE_FAILED=16466]="AUDIO_ENCODE_FAILED",F[F.UNKNOWN=65535]="UNKNOWN",F))(Lm||{}),I=Lm;var Sg=function(s){for(let i in I)if(I[i]===s)return i;return"UNKNOWN"},Qo=class extends Error{constructor({name:e="RtcError",message:t,code:r=I.UNKNOWN,extraCode:o=0,constraint:n}){let a=`<${Sg(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=o,this.name=e,this.message=c,this.constraint=n,this.originMessage=t}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},D=Qo;var al=0,wm=!0,ya=function(s){al=s;let i=new Date;i.setTime(i.getTime()+s),C[wm?"info":"debug"](`baseTime from server: ${i} offset: ${s}`),wm=!1},xm=function(){return al},Hi=function(){return Date.now()+al},ba=function(){let s=new Date;return s.setTime(Hi()),s.toLocaleString()},xs=function(s){let i=String(s.getMilliseconds());return"padStart"in String.prototype&&(i=i.toString().padStart(3,"0")),`${s.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${i}`};var Tt={};Bi(Tt,{REPORT_TYPE:()=>Ys,buildSSOPackage:()=>qi,bytes2ms:()=>Xm,calculateScaleResolutionDownNumber:()=>Qs,concatArrayBuffers:()=>Xa,convertObjectNumberToInt:()=>dn,copyProperties:()=>qm,deepClone:()=>Yr,deepCloneBasic:()=>Ha,deepMerge:()=>ni,delay:()=>Ke,fibonacci:()=>Kr,formatedTime:()=>rp,getConstructorName:()=>Js,getContainerFromElement:()=>ip,getEnv:()=>Gm,getFirst16Bits:()=>op,getInternalVersion:()=>ep,getLast16Bits:()=>za,getLoggerUrl:()=>ji,getMediaStreamTrackInfo:()=>qa,getMuteStateFromFlag:()=>oi,getNetworkType:()=>$a,getNumNetworkType:()=>Zr,getReconnectionTimeout:()=>si,getStringByteLength:()=>cn,getTestSignalDomain:()=>Wm,getTurnServer:()=>tp,getUint32Version:()=>Wa,getValueType:()=>Pe,getViewListFromView:()=>Xs,glog:()=>wl,ipv4ToUint32:()=>qs,isArray:()=>Ie,isAudioWorkletSupported:()=>Zm,isBoolean:()=>pe,isConstructor:()=>es,isEmpty:()=>js,isFunction:()=>me,isLangChinese:()=>ri,isMediaStreamTrack:()=>Qm,isNumber:()=>te,isObject:()=>vt,isOverseaSdkAppId:()=>$t,isPlainObject:()=>dt,isPortrait:()=>xl,isPromise:()=>Rr,isRemoteTrack:()=>Ym,isRotate90Or270:()=>Nt,isSetSinkIdSupported:()=>Km,isString:()=>ne,isUndefined:()=>T,loadImage:()=>zs,loadVideo:()=>sp,ms2bytes:()=>zm,ms2samples:()=>Ll,normalizeUrl:()=>ja,performanceNow:()=>x,promiseAny:()=>ts,samples2ms:()=>kl,setNetworkTypeFromWebRTC:()=>Ga,stringify:()=>Et,stringifyIncludeValue:()=>an,throttlePromise:()=>Ja});var Rl={};Bi(Rl,{ASR_ROBOT_FROM_TYPE:()=>Hs,AUDIO_MUTE_BIT:()=>La,AUDIO_STAT_BIT:()=>Ir,AUX_STAT_BIT:()=>Xr,AUX_STREAM_MSID:()=>fl,BACKEND_ENV:()=>ka,BASE_DOC_URL:()=>gt,BASE_HOST:()=>Um,CAPABILITIES_KEYS:()=>Ua,CLASS_NAME:()=>$g,CLOUD_CONSOLE_URL:()=>Cg,CROSS_ROOM_BIT:()=>ml,DATA_CHANNEL_FROM_TYPE_BIT:()=>pl,DATA_FREEZE_TIMING:()=>xa,DOC_BILLING_CN:()=>va,DOC_BILLING_OVERSEA:()=>Na,DOC_URL:()=>yg,DTLS_STATE_UNKNOWN:()=>ii,ENV_NAME:()=>$i,EXCHANGE_SDP_TIMEOUT:()=>Sl,IS_WORKER:()=>Us,IS_WORKLET:()=>Zo,KIBANA_EVENT:()=>Oe,LOCAL_STREAM_PUBLISH_STATE:()=>Fm,LOGGER_CMD_TYPE:()=>Er,LOGGER_DOMAIN:()=>dl,LOGGER_DOMAIN_OVERSEA:()=>ll,LOG_LEVEL:()=>ei,LOG_LEVEL_NAME:()=>Wg,MAIN_STREAM_MSID:()=>tn,MAX_RTT:()=>on,MICROPHONE_COMMUNICATIONS:()=>Gg,MICROPHONE_DEFAULT:()=>Qr,MUTE_ALL_BIT:()=>Ng,NAME:()=>_,NETWORK_TYPE:()=>Da,NOT_SUPPORTED_H264:()=>zr,PAUSED_RETRY_COUNT:()=>Ji,PEERCONNECTION_CONNECTING_TIMEOUT:()=>rn,PEER_CONNECTION_STATE:()=>be,PEER_LEAVE_REASON:()=>Il,RECOVER_CAPTURE_INTERVAL:()=>Bs,REMOTE_STREAM_TYPE_AUX:()=>gl,REMOTE_STREAM_TYPE_MAIN:()=>_l,RENDER_FREEZE_TIMING:()=>Vg,SCHEDULE_DOMAIN:()=>Wi,SCHEDULE_TIMEOUT:()=>Hg,SDP_SEMANTICS_PLAN_B:()=>Vs,SDP_SEMANTICS_UNIFIED_PLAN:()=>Ar,SECOND_HOST:()=>Ag,SIGNAL_PING_PONG_INTERVAL:()=>vg,SIGNAL_PING_TIMEOUT:()=>bg,SIGNAL_RECONNECTION_COUNT:()=>xg,SMALL_STAT_BIT:()=>en,SPEAKER_DEFAULT:()=>sn,STORAGE_EXPIRES_TIME:()=>Ma,STREAM_TYPE_BIG:()=>Fg,STREAM_TYPE_SMALL:()=>Bg,SUBSCRIBE_SMALL_RETRY_COUNT:()=>Fs,SYNC_USER_LIST_INTERVAL:()=>Ug,Scene:()=>Ri,THIRD_HOST:()=>Rg,TRANSPORT_DIRECTION:()=>de,TRTC_ERROR_ASSISTANCE:()=>ul,TRTC_QUALITY_BAD:()=>kg,TRTC_QUALITY_DISCONNECTED:()=>wg,TRTC_QUALITY_EXCELLENT:()=>Mg,TRTC_QUALITY_GOOD:()=>Og,TRTC_QUALITY_POOR:()=>Pg,TRTC_QUALITY_UNKNOWN:()=>Dg,TRTC_QUALITY_VERY_BAD:()=>Lg,UPDATE_OFFER_TIMEOUT:()=>Tl,VIDEO_MUTE_BIT:()=>wa,VIDEO_STAT_BIT:()=>Sr,WEBGL_ATTRIBUTES:()=>Al,audioProfileMap:()=>Oa,defaultBigVideoProfile:()=>Tr,defaultSmallVideoProfile:()=>hl,getRetryCount:()=>Gi,getScriptDir:()=>Ig,innerVersion:()=>Yo,loggerProxy:()=>Ko,screenProfileMap:()=>Pa,setLoggerProxy:()=>qr,setRetryCount:()=>El,setVersion:()=>cl,version:()=>We,videoProfileMap:()=>ti});var Yo="4.15.00.1600",We="5.0.0";function cl(s){We=s;let[i,e,t]=s.split(".").map(r=>parseInt(r,10));Yo=`${i}.${Math.min(15,e)}.${Math.min(15,t)}.${e.toString().padStart(2,"0")}${t.toString().padStart(2,"0")}`}var Us=typeof importScripts!="undefined",Zo=typeof registerProcessor!="undefined",Ig=()=>{let s=Us?self.location.href:document.currentScript.src;return s.substring(0,s.lastIndexOf("/")+1)},Ko="",qr=s=>Ko=s,Um="web.sdk.qcloud.com",Ag="web.sdk.tencent.cn",Rg="web.sdk.cloud.tencent.cn",Cg="https://console.cloud.tencent.com/trtc",gt=`https://${Um}/trtc/webrtc/doc`,yg=`${gt}/zh-cn/`,va="https://cloud.tencent.com/document/product/647/85386",Na="https://trtc.io/document/56025",dl="https://yun.tim.qq.com",ll="https://apisgp.my-imcloud.com",ul="trtc_error_assistance",Er={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},$i={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},ei=(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))(ei||{}),bg=18e3,vg=2e3,Da={unknown:0,wifi:1,"4g":2,"3g":3,"2g":4,wired:5,"5g":6},Ma=168*3600*1e3,Oa={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}},ti={"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}},Tr=ti["480p_2"],hl=ti["120p_2"],Pa={"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}},_={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",LOADSTART:"loadstart",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",FULLSCREEN_CHANGE:"fullscreenchange",RESIZE:"resize",TIME_UPDATE:"timeupdate"},de={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},ka={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Ri=(e=>(e.LIVE="live",e.RTC="rtc",e))(Ri||{}),Sr=1,en=2,Xr=4,Ir=8,La=64,wa=16,Ng=112,ml=128,pl=256,tn="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",fl="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",_l=_.MAIN,gl=_.AUXILIARY,Dg=0,Mg=1,Og=2,Pg=3,kg=4,Lg=5,wg=6,ii="unknown",be={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Vm=1/0;function El(s){Vm=s}function Gi(){return Vm}var xg=30,Oe={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",VIDEO_ENCODE_FAILED_DURING_CALL:"video-encode-failed-during-call",VIDEO_ENCODE_RESUME_DURING_CALL:"video-encode-resume-during-call",AUDIO_ENCODE_FAILED_DURING_CALL:"audio-encode-failed-during-call",AUDIO_ENCODE_RESUME_DURING_CALL:"audio-encode-resume-during-call",VIDEO_DECODE_FAILED_DURING_CALL:"video-decode-failed-during-call",VIDEO_DECODE_RESUME_DURING_CALL:"video-decode-resume-during-call",AUDIO_DECODE_FAILED_DURING_CALL:"audio-decode-failed-during-call",AUDIO_DECODE_RESUME_DURING_CALL:"audio-decode-resume-during-call",VIDEO_HARDWARE_DECODE_FAILED:"video-hardware-decode-failed",VIDEO_HARDWARE_DECODE_RESUME:"video-hardware-decode-resume"},Ug=1e4,Tl=1e4,Sl=1e4,Ar="unified-plan",Vs="plan-b",zr=1028,Fm=(t=>(t[t.UNPUBLISH=-1]="UNPUBLISH",t[t.PUBLISHING=0]="PUBLISHING",t[t.PUBLISHED=1]="PUBLISHED",t))(Fm||{}),xa=500,Vg=1e3,Fg=_.BIG,Bg=_.SMALL,rn=10*1e3,Wi={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"},Hg=2e3,$g={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},Ji=5,Qr="default",sn=Qr,Gg="communications",Wg=Object.keys(ei),Il=["normal leave","timeout leave","kick","role change"],Fs=10,Bs=2e3,Ua=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],on=10*1e3,Hs=14,Al={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"};var Jg=function(s,i,e,t){function r(o){return o instanceof e?o:new e(function(n){n(o)})}return new(e||(e=Promise))(function(o,n){function a(u){try{l(t.next(u))}catch(m){n(m)}}function c(u){try{l(t.throw(u))}catch(m){n(m)}}function l(u){u.done?o(u.value):r(u.value).then(a,c)}l((t=t.apply(s,i||[])).next())})},Cl=Symbol(32),yl=Symbol(16),bl=Symbol(8),Ci=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 Jg(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(Cl)}readU16(){return this.read(yl)}readU8(){return this.read(bl)}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=o=>e.length<(t=o);if(typeof this.need=="number"){if(r(this.need))return;i=e.subarray(0,t)}else if(this.need===Cl){if(r(4))return;i=e[0]<<24|e[1]<<16|e[2]<<8|e[3]}else if(this.need===yl){if(r(2))return;i=e[0]<<8|e[1]}else if(this.need===bl){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}};Ci.U32=Cl;Ci.U16=yl;Ci.U8=bl;var jg=128,qg=127,sA=~qg,oA=Math.pow(2,31);function vl(s){let i=new Ci;for(;s>=128;)i.malloc(1)[0]=s&255|jg,s>>>=7;return i.malloc(1)[0]=s&255,i.buffer||new Uint8Array(0)}function Va(s,i=0){let e=new Ci,t=i<<3;switch(typeof s){case"boolean":let r=e.malloc(2);r[0]=t,r[1]=s?1:0;break;case"number":e.malloc(1)[0]=t,e.write(vl(s));break;case"string":e.malloc(1)[0]=t|2;let o=new TextEncoder().encode(s);e.write(vl(o.length));let n=e.malloc(o.length);for(let c=0;c<o.length;c++)n[c]=o[c];break;case"object":let a=new Ci;if(Array.isArray(s))for(let c=0;c<s.length;c++){let l=Va(s[c],c+1);l&&a.write(l)}else{let c=1;for(let l in s){let u=Va(s[l],c++);u&&a.write(u)}}i===0?a.buffer&&e.write(a.buffer):(e.malloc(1)[0]=t|2,a.buffer&&(e.write(vl(a.buffer.length)),e.write(a.buffer)))}return e.buffer||new Uint8Array(0)}var nn=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 Nl(s,i,e){s[e]=i>>>24&255,s[e+1]=i>>>16&255,s[e+2]=i>>>8&255,s[e+3]=i&255}function ct(s,i){return s[i]<<24|s[i+1]<<16|s[i+2]<<8|s[i+3]}function Dl(s,i){return s[i]}function $s(s,i,e){return new TextDecoder().decode(Xg(s,i,e))}function Xg(s,i,e){return s.slice(i,i+e)}var Ml=0,Fa=2654435769,Ba=16,Pl=4,Gs=2,Ws=7;function zg(s,i,e,t="AVQualityReportSvc.C2S",r=2e3,o=2,n=30){return{version:r,encryption:o,d2:"",d2Len:0,uinType:n,uin:"",uinLen:0,reqHead:{seqNumber:e,appId:s,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 Bm(s,i){let e=new nn,t=zg(i,s,Ml);Ml=Ml+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 o=new TextEncoder().encode(t.uin);e.writeInt32(o.length+4),o.length&&e.writeBytes(o);let n=new nn;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 j=4;j<16;j++)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 m=new TextEncoder().encode(t.reqHead.ksid);n.writeInt32(m.length+4),m.length&&n.writeBytes(m);let p=new TextEncoder().encode(t.reqHead.clientVersionInfo);n.writeInt16(p.length+2),p.length&&n.writeBytes(p);let h=n.length;n.data[0]=h>>>24&255,n.data[1]=h>>>16&255,n.data[2]=h>>>8&255,n.data[3]=h&255,ne(s)&&(s=new TextEncoder().encode(s)),n.writeInt32(s.length+4),s.length&&n.writeBytes(s);let E=new Uint8Array(n.data),g=null;t.encryption===1?g=new TextEncoder().encode(t.uin):t.encryption===2&&(g=new Uint8Array(16)),g&&(E=Qg(E,g)),e.writeBytes(E);let R=new Uint8Array(e.data),N=R.length;return R[0]=N>>>24&255,R[1]=N>>>16&255,R[2]=N>>>8&255,R[3]=N&255,R}function Qg(s,i){let e=s.length,r=(e+1+Gs+Ws)%8;r&&(r=8-r);let o=e+1+Gs+Ws+r,n=new Uint8Array(o),a=0,c=new Uint8Array(8),l=new Uint8Array(8),u=new Uint8Array(8),m=0;c[0]=Math.floor(Math.random()*256)&248|r,m=1;for(let h=0;h<r;h++)c[m]=Math.floor(Math.random()*256)&255,m+=1;for(let h=0;h<Gs;)if(m<8&&(c[m]=Math.floor(Math.random()*256)&255,m+=1,h+=1),m===8){Ol(c,i,l,u,n,a),a+=8,m=0;for(let E=0;E<8;E++)u[E]=n[a-8+E]}let p=0;for(;p<e;)if(m<8&&(c[m]=s[p],m+=1,p+=1),m===8){Ol(c,i,l,u,n,a),a+=8,m=0;for(let h=0;h<8;h++)u[h]=n[a-8+h]}for(let h=0;h<Ws;)if(m<8&&(c[m]=0,m+=1,h+=1),m===8){Ol(c,i,l,u,n,a),a+=8,m=0;for(let E=0;E<8;E++)u[E]=n[a-8+E]}return n}function Ol(s,i,e,t,r,o){for(let n=0;n<8;n++)s[n]^=t[n];Yg(s,i,r,o);for(let n=0;n<8;n++)r[o+n]^=e[n];for(let n=0;n<8;n++)e[n]=s[n]}function Yg(s,i,e,t){let r=ct(s,0),o=ct(s,4),n=[];for(let c=0;c<4;c++)n[c]=ct(i,c*4);let a=0;for(let c=0;c<Ba;c++)a+=Fa,a=a>>>0,r+=(o<<4)+n[0]^o+a^(o>>>5)+n[1],r=r>>>0,o+=(r<<4)+n[2]^r+a^(r>>>5)+n[3],o=o>>>0;Nl(e,r,t),Nl(e,o,t+4)}var Gm=function(){return new URLSearchParams(location.search).get("trtc_env")||""},Zg=".rtc.qq.com",Wm=function(s){return s.includes(".")?s:`${s}${Zg}`},$t=s=>Number(s)<14e8,ji=function(s,i){let e;Ko?e=Ko:e=$t(s)?ll:dl;let t=Math.floor(Math.random()*gr(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${t}&sdkappid=${s}&cmdtype=${i}`},Jm="unknown";function $a(){eE();let{userAgent:s,connection:i}=navigator,e=(s.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?jm(t,r):Jm}function Kg(){C.warn("netType changed",$a())}var Hm=!1;function eE(){var s;Hm||(Hm=!0,(s=navigator.connection)==null||s.addEventListener("typechange",Kg))}function jm(s,i){if(Da[s])return s;switch(s){case"cellular":case"wimax":return i||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function Ga(s){Jm=jm(s)}function Zr(){return Da[$a()]}function qm(s,i){for(let e of Reflect.ownKeys(i))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let t=Object.getOwnPropertyDescriptor(i,e)||"";Object.defineProperty(s,e,t)}return s}function Xm(s,i=48e3){return kl(s/4,i)}function kl(s,i=48e3){return s*1e3/i}function zm(s,i=48e3){return Ll(s,i)*4}function Ll(s,i=48e3){return s*i/1e3}var wl=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},ri=()=>{let s=navigator.language;return s=s.substring(0,2),s==="zh"},dt=function(s){if(!s||typeof s!="object"||Object.prototype.toString.call(s)!="[object Object]")return!1;let i=Object.getPrototypeOf(s);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 Kr(s,i=1,e=1){return s<=1?e:Kr(s-1,e,i+e)}function si(s){return s>8?30*1e3:Kr(s)*1e3}function Pe(s){return Reflect.apply(Object.prototype.toString,s,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var me=s=>typeof s=="function",T=s=>typeof s=="undefined",ne=s=>typeof s=="string",te=s=>typeof s=="number",pe=s=>typeof s=="boolean",vt=s=>Pe(s)==="object",Ie=s=>Pe(s)==="array",Qm=s=>Pe(s)==="MediaStreamTrack".toLowerCase(),Ym=s=>s.isRemote,Rr=s=>Pe(s)==="promise",es=s=>me(s)&&s.prototype.constructor===s,Js=s=>es(s)?s.prototype.constructor.name:"",Zm=typeof AudioWorkletNode!="undefined",Km=typeof HTMLMediaElement!="undefined"&&"setSinkId"in HTMLMediaElement.prototype;function ts(s){return new Promise((i,e)=>{let t=[];s.forEach(r=>{r.then(i).catch(o=>{t.push(o),t.length===s.length&&e(t)})})})}function x(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var $m=s=>+s<10?`0${s}`:s,ep=s=>{let i=s.match(/^\d+\.\d+\.\d+/)[0];if(!i)return s;let e=i.split("."),t=$m(e[1])+$m(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${t}`},tE=Object.prototype.hasOwnProperty,{toString:EA}=Object.prototype;function js(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(dt(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(tE.call(s,i))return!1;return!0}}return!1}function oi(s,i){return{userId:i,hasAudio:!!(s&Ir),hasVideo:!!(s&Sr),hasAuxiliary:!!(s&Xr),hasSmall:!!(s&en),audioMuted:!!(s&La),videoMuted:!!(s&wa),audioAvailable:!!(s&Ir)&&!(s&La),videoAvailable:!!(s&Sr)&&!(s&wa),hasDatachannel:!!(s&pl)}}function tp(s){let i={urls:s.url.startsWith("turn:")||s.url.startsWith("turns:")?s.url:`turn:${s.url}`};return!T(s.username)&&!T(s.credential)&&(i.username=s.username,i.credential=s.credential,i.credentialType="password",T(s.credentialType)||(i.credentialType=s.credentialType)),i}function qs(s,i=!0){if(!ne(s))return 0;let e=s.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 ni=function(s,i,e,t){if(!(vt(s)&&vt(i)))return 0;let r=0,o=Object.keys(i),n;for(let a=0,c=o.length;a<c;a++)if(n=o[a],!(T(i[n])||e&&e.includes(n)))if(vt(s[n])&&vt(i[n]))r+=ni(s[n],i[n],e,t);else{if(t&&t.includes(i[n]))continue;s[n]!==i[n]&&(s[n]=Yr(i[n]),r+=1)}return r};function Yr(s){if(Ie(s)){let i=[];return s.forEach((e,t)=>{i[t]=Yr(e)}),i}if(vt(s)){let i={};return Object.keys(s).forEach(e=>{i[e]=Yr(s[e])}),i}return s}var Xs=s=>{let i=[];if(Ie(s))i=[...s];else if(ne(s)){let e=document.getElementById(s);e&&i.push(e)}else s&&i.push(s);return i},ip=s=>ne(s)?document.getElementById(s):s,iE=s=>{let i=c=>c<10?`0${c}`:`${c}`,e=s.getFullYear(),t=s.getMonth()+1,r=s.getDate(),o=i(s.getHours()),n=i(s.getMinutes()),a=i(s.getSeconds());return`${e}/${t}/${r} ${o}:${n}:${a}`},rp=()=>iE(new Date);function Et(s,{keysToInclude:i,keysToExclude:e}){try{if(Ie(s))return`[${s.map(n=>Et(n,{keysToInclude:i,keysToExclude:e})).join(",")}]`;if(!dt(s)||!Ie(i)&&!Ie(e))return JSON.stringify(s);let t={},r=new Set(i),o=new Set(e);return Object.keys(s).forEach(n=>{(o.size===0&&r.has(n)||r.size===0&&!o.has(n))&&(t[n]=dt(s[n])||Ie(s[n])?JSON.parse(Et(s[n],{keysToExclude:e,keysToInclude:i})):s[n])}),JSON.stringify(t)}catch(t){return"{}"}}function an(s,i=!1){let e=[];return Object.keys(s).forEach(t=>{i===s[t]&&e.push(t)}),Et(s,{keysToInclude:e})}function cn(s){return s.replace(/[\u4e00-\u9fa5]/g,"aa").length}var xl=()=>{var s,i,e,t;return(s=window.screen)!=null&&s.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},zs=s=>f(null,null,function*(){return new Promise((i,e)=>{let t;if(ne(s))t=new Image,t.crossOrigin="anonymous",t.src=s;else if(t=s,t.complete){i(t);return}t.onload=()=>i(t),t.onerror=()=>{e(new D({code:I.INVALID_PARAMETER,message:`load image failed, url: ${s}`}))}})}),Wa=s=>{let i=s.split(".");return+i[0]<<24|+i[1]<<16|+i[2]<<8|+i[3]<<0},dn=s=>(Object.keys(s).forEach(i=>{te(s[i])&&(i.startsWith("uint")||i.startsWith("int"))?s[i]=Math.floor(s[i]):(dt(s[i])||Ie(s[i]))&&dn(s[i])}),s);function Ke(s,i){return new Promise(e=>{let t=setTimeout(e,s);i&&i(t)})}function Ja(s,i){let e=null;return function(...t){return e||(e=s.apply(i||this,t),e.finally(()=>e=null),e)}}function ja(s){return s.replace(/(^|[^:])\/{2,}/g,"$1/")}function qa(s){var i;try{let{width:e,height:t,frameRate:r,sampleRate:o,sampleSize:n,channelCount:a}=(i=s.getSettings)==null?void 0:i.call(s),c=s.kind===_.AUDIO?`${o}x${n}@${a}`:`${e}x${t}@${r}`,l=s.stats?` stats: ${JSON.stringify(s.stats).replaceAll('"',"")}`:"";return`${s.id} ${s.readyState} muted:${s.muted} ${s.kind} ${s.label} ${c}${l}`}catch(e){return""}}function Qs(s,i){return s.width*s.height===i.width*i.height?1:xl()&&i.width>i.height&&s.height>i.width?Math.max(s.width/i.height,s.height/i.width,1):Math.max(s.width/i.width,s.height/i.height,1)}function Nt(s){return s===90||s===270}function sp(s){return f(this,null,function*(){return new Promise((i,e)=>{let t=document.createElement("video");t.crossOrigin="anonymous",t.src=s,t.muted=!0,t.loop=!0,t.playsInline=!0,t.play().then(()=>i(t)),t.onerror=()=>{e(t.error)}})})}function Ha(s,i=new WeakMap){if(typeof s!="object"||s===null)return s;if(i.has(s))return i.get(s);if(Array.isArray(s)){let e=[];return i.set(s,e),s.forEach((t,r)=>{e[r]=Ha(t,i)}),e}if(Object.prototype.toString.call(s)==="[object Object]"){let e={};return i.set(s,e),Reflect.ownKeys(s).forEach(t=>{e[t]=Ha(s[t],i)}),e}return s}var Ys=(t=>(t[t.END_REPORT=2001]="END_REPORT",t[t.LOG=2002]="LOG",t[t.KEY_METRIC_REPORT=2003]="KEY_METRIC_REPORT",t))(Ys||{});function rE(s,i,e,t){let r={data:s,random:Math.floor(Math.random()*2147483648),sdkAppId:e};return T(t)||(r=w(M({},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 qi(s,i,e,t){try{let r=rE(s,i,e,t),o=Va(r);return Bm(o,e)}catch(r){return JSON.stringify(s)}}function Xa(s,i){let e=new Uint8Array(s.byteLength+i.byteLength);return e.set(new Uint8Array(s),0),e.set(new Uint8Array(i),s.byteLength),e.buffer}function za(s){return(s&65535)>>>0}function op(s){return(s&4294901760)>>>0}function np(s){let i=sE(s);return i==null?void 0:i.busiBuff}function sE(s){try{let i={},e=0;i.totalLength=ct(s,e),e+=4,i.version=ct(s,e),e+=4,i.encryption=Dl(s,e),e+=1,i.uinType=Dl(s,e),e+=1,i.uinLength=ct(s,e),e+=4,i.uin=i.uinLength>4?$s(s,e,i.uinLength-4):"",e+=i.uinLength-4;let t=s.slice(e);if(i.encryption===2){let r=new Uint8Array(16).fill(0);s=oE(t,r),i.decrypted=!0,e=0}else s=t,e=0;return i.rspHeadLength=ct(s,e),e+=4,i.seqNo=ct(s,e),e+=4,i.retCode=ct(s,e),e+=4,i.retStrLength=ct(s,e),e+=4,i.retStr=i.retStrLength?$s(s,e,i.retStrLength-4):"",e+=i.retStrLength-4,i.serviceCmdLength=ct(s,e),e+=4,i.serviceCmd=i.serviceCmdLength?$s(s,e,i.serviceCmdLength-4):"",e+=i.serviceCmdLength-4,i.cookieLength=ct(s,e),e+=4,i.cookie=i.cookieLength?$s(s,e,i.cookieLength-4):"",e+=i.cookieLength-4,i.flag=ct(s,e),e+=4,i.busiBuffLength=ct(s,e),e+=4,i.busiBuff=i.busiBuffLength?$s(s,e,i.busiBuffLength-4):"",e+=i.busiBuffLength-4,i}catch(i){}}function ap(s,i){let e=s[0]<<24|s[1]<<16|s[2]<<8|s[3],t=s[4]<<24|s[5]<<16|s[6]<<8|s[7];e=e>>>0,t=t>>>0;let r=Fa*Ba>>>0;for(let o=0;o<Ba;o++)t-=(e<<Pl)+i[2]^e+r^(e>>>5)+i[3],t=t>>>0,e-=(t<<Pl)+i[0]^t+r^(t>>>5)+i[1],e=e>>>0,r-=Fa,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 oE(s,i){let e=0,t=new Uint8Array(8).fill(0),r=new Uint8Array(s.slice(0,8)),o=ap(r,i),n=o[0]&7,a=s.length-1-n-Gs-Ws,c=new Uint8Array(a),l=0,u=t,m=s.slice(0,8);e=8;let p=1;p+=n;for(let E=1;E<=Gs;)if(p<8)p++,E++;else if(p===8){let g=Ul(s,e,u,m,o,i);u=g.ivPreCrypt,m=g.ivCurCrypt,o=g.debiBuf,e=g.bufPos,p=0}let h=a;for(;h>0;)if(p<8)c[l++]=o[p]^u[p],p++,h--;else if(p===8){let E=Ul(s,e,u,m,o,i);u=E.ivPreCrypt,m=E.ivCurCrypt,o=E.debiBuf,e=E.bufPos,p=0}for(let E=1;E<=Ws;)if(p<8)o[p]^u[p],p++,E++;else if(p===8){if(e>=s.length)break;let g=Ul(s,e,u,m,o,i);if(!g.success)break;u=g.ivPreCrypt,m=g.ivCurCrypt,o=g.debiBuf,e=g.bufPos,p=0}return c}function Ul(s,i,e,t,r,o){if(i+8>s.length)return{success:!1};let n=new Uint8Array(t),a=s.slice(i,i+8),c=new Uint8Array(8);for(let u=0;u<8;u++)c[u]=r[u]^a[u];let l=ap(c,o);return{success:!0,ivPreCrypt:n,ivCurCrypt:a,debiBuf:l,bufPos:i+8}}var cp=typeof TextDecoder!="undefined"?new TextDecoder:void 0;function Xi({url:s,body:i,method:e="POST",timeout:t,priority:r}){return new Promise((o,n)=>{if("fetch"in window)return fetch(s,{method:e,body:i,priority:r}).then(c=>c.clone().json().then(l=>({data:l}),()=>c.arrayBuffer().then(l=>({data:np(new Uint8Array(l))||(cp?cp.decode(l):l)})))).then(o,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);o({data:c})}catch(c){o({data:a.response})}else n({status:a.status,statusText:a.statusText||"request failed!"})},a.timeout=t||5e3,a.open(e,s,!0),a.send(i)})}function Vl(s){return f(this,null,function*(){let i=x(),e=JSON.stringify(s);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 C.debug(`compressJSON ${e.length} -> ${a.byteLength} ${x()-i}ms`),a}catch(t){return e}})}var nE=Object.prototype.hasOwnProperty;var yi=s=>typeof s=="function",St=s=>typeof s=="undefined",Qa=s=>typeof s=="string";var Ya=s=>typeof s=="boolean";var Za=s=>s.isRemote;var Fl=function(s){if(!s||typeof s!="object"||Object.prototype.toString.call(s)!="[object Object]")return!1;let i=Object.getPrototypeOf(s);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 dp(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(Fl(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(nE.call(s,i))return!1;return!0}}return!1}var aE=0,cE=1,lp=2;function dE({retryFunction:s,settings:i,onError:e,onRetrying:t,onRetryFailed:r,onRetrySuccess:o,context:n}){return function(...a){let{retries:c=5,timeout:l=1e3}=i,u=0,m=-1,p=aE,h=(E,g)=>f(this,null,function*(){let R=n||this;try{let N=yield s.apply(R,a);u>0&&o&&o.call(this,u),u=0,E(N)}catch(N){let j=()=>{clearTimeout(m),u=0,p=lp,g(N)},V=()=>{p!==lp&&u<(yi(c)?c():c)?(u++,p=cE,yi(t)&&t.call(this,u,j),m=window.setTimeout(()=>{m=-1,h(E,g)},yi(l)?l(u):l)):(j(),yi(r)&&r.call(this,N))};yi(e)?e.call(this,{error:N,retry:V,reject:g,retryFuncArgs:a,retriedCount:u}):V()}});return new Promise(h)}}var bi=dE;var Cr=class s{constructor(i){d(this,"_parentPath");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=Ya(i.isLocal)?i.isLocal:!0,this.type=this.isLocal?"":i.type}getFullId(){return this._parentPath&&this.id?`${this._parentPath}-${this.id}`:this._parentPath?this._parentPath:this.id}createChild(i){let e=new s({id:i.id,userId:St(i.userId)?this.userId:i.userId,sdkAppId:St(i.sdkAppId)?this.sdkAppId:i.sdkAppId,type:St(i.type)?this.type:i.type,isLocal:St(i.isLocal)?this.isLocal:i.isLocal,remoteUserId:St(i.remoteUserId)?this.remoteUserId:i.remoteUserId});return e.bindParent(this),e}bindParent(i){let e=i.getFullId();this._parentPath!==e&&(this.debug(`bind logger parent: ${i.id}`),this._parentPath=e,this.userId=i.userId||this.userId,this.sdkAppId=i.sdkAppId||this.sdkAppId)}setUserId(i){this.userId=i}setSdkAppId(i){this.sdkAppId=i}log(i,e){let t=this.isLocal?this.userId:this.remoteUserId,r=this.getFullId();e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${r}${t?`|${t}`:""}]`),C.log(i,e,St(this.userId)||dp(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 co={};Bi(co,{ANDROID_VERSION:()=>tc,CHROME_MAJOR_VERSION:()=>et,CHROME_VERSION:()=>Ec,EDGE_VERSION:()=>rc,EDG_MAJOR_VERSION:()=>Hl,EDG_VERSION:()=>sc,ELECTRON_MAJOR_VERSION:()=>jl,FIREFOX_MAJOR_VERSION:()=>eo,FIREFOX_VERSION:()=>ic,HUAWEI_VERSION:()=>pc,IE_VERSION:()=>pE,IOS_MAIN_VERSION:()=>qe,IOS_VERSION:()=>pt,IPADQQB_VERSION:()=>hc,IS_ANDROID:()=>fe,IS_ANDROID_WEBVIEW:()=>EE,IS_ANY_SAFARI:()=>Wt,IS_CHROME:()=>ao,IS_CHROME_OS:()=>$l,IS_CHROMIUM_128_TO_143:()=>br,IS_CHROMIUM_BASE:()=>tt,IS_DESKTOP_IOS_CHROME:()=>zl,IS_EDG:()=>to,IS_EDGE:()=>rs,IS_ELECTRON:()=>_E,IS_FIREFOX:()=>re,IS_HEADLESS_CHROME:()=>Jl,IS_HONOR:()=>Wl,IS_HUAWEI:()=>Tn,IS_HUAWEIBROWSER:()=>En,IS_IE:()=>pp,IS_IE8:()=>mE,IS_IOS:()=>Ee,IS_IOS_13_OR_14:()=>Xl,IS_IOS_15_1:()=>ql,IS_IOS_CHROME:()=>ln,IS_IPAD:()=>Ks,IS_IPADQQB:()=>fn,IS_IPAD_PRO:()=>Bl,IS_IPHONE:()=>yr,IS_IPOD:()=>mp,IS_LINUX:()=>_n,IS_LOCAL:()=>li,IS_MAC:()=>di,IS_MACQQB:()=>pn,IS_MIBROWSER:()=>gn,IS_MQQB:()=>ro,IS_NATIVE_ANDROID:()=>hE,IS_OLD_ANDROID:()=>uE,IS_OPENHARMONY:()=>oo,IS_OPPOBROWSER:()=>so,IS_SAFARI:()=>ye,IS_SAFARI_15_1:()=>TE,IS_SAMSUNGBROWSER:()=>Sn,IS_SOGOU:()=>hn,IS_SOGOUM:()=>un,IS_TBS:()=>ci,IS_UCBROWSER:()=>Gl,IS_VIVOBROWSER:()=>In,IS_WECHAT:()=>Qi,IS_WIN:()=>ss,IS_WQQB:()=>mn,IS_WX:()=>fE,IS_X5MQQB:()=>io,IS_XWEB:()=>zi,MACQQB_VERSION:()=>uc,MI_VERSION:()=>mc,MQQB_VERSION:()=>Zs,OPENHARMONY_VERSION:()=>gE,OPPO_VERSION:()=>_c,SAFARI_VERSION:()=>Yi,SAMSUNG_VERSION:()=>fc,SOGOUM_VERSION:()=>oc,SOGOU_VERSION:()=>nc,TBS_VERSION:()=>ac,UA_DATA_STRING:()=>ai,USER_AGENT:()=>Gt,VIVO_VERSION:()=>gc,WECHAT_VERSION:()=>dc,WQQB_VERSION:()=>lc,XWEB_VERSION:()=>cc,browserInfo:()=>vi,getBrowserCoreNumber:()=>Yl,getBrowserInfo:()=>fp,getChromeMajorVersion:()=>no,getDeviceModel:()=>Dt,getDeviceModelFromUA:()=>Tc,getGPUInfo:()=>vr,getOSName:()=>Sc,getOSNumber:()=>as,getOSString:()=>Mt,getOSType:()=>AE,getTerminalType:()=>Zl,getUserAgentData:()=>ns,isAMDGPU:()=>Ql,isAppleSiliconGPU:()=>IE,isLocalStorageEnabled:()=>Zi,isMobile:()=>os,isNvidiaGPU:()=>SE,isRealIOS:()=>is,isVersionLargerThan:()=>Rn,isVersionSmallerThan:()=>An});var Gt=typeof navigator=="undefined"?"":navigator.userAgent,ie=s=>new RegExp(s,"i").test(Gt),Ve=s=>{if(ie(s)){let i=new RegExp(`${s}\\/([\\d.]+)`),e=Gt.match(i);if(e&&e[1])return e[1]}return""},ec=s=>{if(ie(s)){let i=new RegExp(`${s}\\/(\\d+)`),e=Gt.match(i);if(e&&e[1])return parseFloat(e[1])}return NaN},up=/AppleWebKit\/([\d.]+)/i.exec(Gt),lE=up?parseFloat(up[1]):NaN,Ks=ie("iPad"),Bl=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&ie("Macintosh"),yr=ie("iPhone")&&!Ks,mp=ie("iPod"),Ee=yr||Ks||mp||Bl,is=()=>{try{return Ee&&navigator.maxTouchPoints>1&&navigator.vendor.includes("Apple")}catch(s){return Ee}},fe=ie("Android"),tc=(function(){if(fe){let s=Gt.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(s){let i=s[1]&&parseFloat(s[1]),e=s[2]&&parseFloat(s[2]);if(i&&e)return parseFloat(`${s[1]}.${s[2]}`);if(i)return i}}return NaN})(),uE=fe&&ie("webkit")&&tc<2.3,hE=fe&&tc<5&&lE<537,re=ie("Firefox"),ic=Ve("Firefox"),eo=ec("Firefox"),rs=ie("Edge"),rc=Ve("Edge"),to=ie("Edg"),sc=Ve("Edg"),Hl=ec("Edg"),un=ie("SogouMobileBrowser"),oc=Ve("SogouMobileBrowser"),hn=ie("MetaSr\\s"),nc=Ve("MetaSr\\s"),ci=ie("TBS"),ac=Ve("TBS"),zi=ie("XWEB"),cc=Ve("XWEB"),mE=ie("MSIE\\s8\\.0"),pp=ie("MSIE\\/\\d+"),pE=(function(){if(pp){let s=/MSIE\s(\d+)\.\d/.exec(Gt),i=s&&parseFloat(s[1]);return!i&&/Trident\/7.0/i.test(Gt)&&/rv:11.0/.test(Gt)&&(i=11),i}return NaN})(),Qi=ie("(micromessenger|webbrowser)"),dc=Ve("MicroMessenger"),io=!ci&&ie("MQQBrowser")&&ie("COVC"),ro=!ci&&ie("MQQBrowser")&&!ie("COVC"),Zs=ro||io?Ve("MQQBrowser"):"",mn=!ci&&ie(" QQBrowser"),lc=Ve(" QQBrowser"),pn=!ci&&ie("QQBrowserLite"),uc=Ve("QQBrowserLite"),fn=!ci&&ie("MQBHD"),hc=Ve("MQBHD"),ss=ie("Windows"),di=!Ee&&ie("MAC OS X"),_n=!fe&&ie("Linux"),$l=ie("CrOS"),fE=ie("MicroMessenger"),Gl=ie("UCBrowser"),_E=ie("Electron"),gn=ie("MiuiBrowser"),mc=Ve("MiuiBrowser"),En=ie("HuaweiBrowser"),Tn=ie("Huawei")||ie("HUAWEI"),Wl=ie("Honor")||ie("HONOR"),pc=Ve("HuaweiBrowser"),Sn=ie("SamsungBrowser"),fc=Ve("SamsungBrowser"),so=ie("HeyTapBrowser"),_c=Ve("HeyTapBrowser"),In=ie("VivoBrowser"),gc=Ve("VivoBrowser"),oo=ie("OpenHarmony"),gE=Ve("OpenHarmony"),no=()=>ec("Chrome"),ln=ie("CriOS"),tt=ie("Chrome"),ao=!rs&&!hn&&!un&&!ci&&!zi&&!to&&!mn&&!gn&&!En&&!Sn&&!so&&!In&&tt,Jl=ie("HeadlessChrome"),et=no(),br=tt&&et>=128&&et<=143,Ec=Ve("Chrome"),jl=ec("Electron"),ye=!tt&&!ro&&!io&&!pn&&!fn&&ie("Safari"),Wt=ye||Ee,Yi=Ve("Version"),EE=/Android.*(wv|.0.0.0)/.test(Gt),pt=(()=>{if(Bl)return Yi;if(Ee){let s=Gt.match(/OS (\d+)_(\d+)/i);if(s&&s[1]){let i=s[1];return s[2]&&(i+=`.${s[2]}`),i}}return""})();function An(s,i){let e=s.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 o=e[r]||0,n=t[r]||0;if(o<n)return!0;if(o>n)return!1}return!1}function Rn(s,i,e=!1){let t=s.split(".").map(o=>Number(o)),r=i.split(".").map(o=>Number(o));for(let o=0;o<Math.max(t.length,r.length);o++){let n=t[o]||0,a=r[o]||0;if(n>a)return!0;if(n<a)return!1}return e}var qe=Number(pt.split(".")[0]),TE=Yi==="15.1",ql=pt==="15.1",Xl=(()=>{let s=Number(pt.split(".")[0]);return s===14||s===13})(),zl=ln&&Yi==="11.1.1",li=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",Zi=(()=>{let s;return()=>{if(typeof s=="undefined")try{s=!!window.localStorage}catch(i){s=!1}return s}})(),vi=fp();function fp(){let s=new Map([[re,["Firefox",ic]],[to,["Edg",sc]],[ao,["Chrome",Ec]],[ln,["ChiOS",Ve("CriOS")]],[ye&&!ln,["Safari",Yi]],[ci,["TBS",ac]],[zi,["XWEB",cc]],[Qi&&yr,["WeChat",dc]],[mn,["QQ(Win)",lc]],[ro,["QQ(Mobile)",Zs]],[io,["QQ(Mobile X5)",Zs]],[pn,["QQ(Mac)",uc]],[fn,["QQ(iPad)",hc]],[gn,["MI",mc]],[En,["HW",pc]],[Sn,["Samsung",fc]],[so,["OPPO",_c]],[In,["VIVO",gc]],[rs,["EDGE",rc]],[un,["SogouMobile",oc]],[hn,["Sogou",nc]]]),i="unknown",e="unknown";return s.has(!0)&&([i,e]=s.get(!0)),{name:i,version:e}}var _e=null;function os(){return _e&&typeof _e.mobile=="boolean"?_e.mobile:fe||Ee||yr||Ks||oo}var ai="";function ns(){return f(this,null,function*(){if(_e)return _e;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return _e=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),_e&&!ai&&(ai=`UAData: ${_e.platform}/${_e.platformVersion}`,_e.architecture&&_e.bitness&&(ai+=` ${_e.architecture}/${_e.bitness}`),_e.mobile&&(ai+=" mobile"),_e.model&&(ai+=` model: ${_e.model.replace(/\s+/g,"/")}`),_e.fullVersionList&&(ai+=` ${_e.fullVersionList.filter(s=>s.brand!=="Not/A)Brand").map(s=>`${s.brand}/${s.version}`).join(",")}`)),_e}catch(s){return null}})}var Ka="";function vr(){try{if(Ka)return Ka;let s=document.createElement("canvas"),i=s.getContext("webgl")||s.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 Ka=`${t} ${r}`,Ka}return""}catch(s){return""}}function Ql(){try{let s=vr();return s.includes("AMD")||s.includes("ATI")}catch(s){return!1}}function SE(){try{let s=vr();return s.includes("NVIDIA")||s.includes("GeForce")}catch(s){return!1}}function IE(){try{return vr().includes("Apple M")}catch(s){return!1}}function Dt(){return(_e==null?void 0:_e.model)||Tc()||""}function Tc(){let s=/;\s*([^;)]+)\s+Build\//,i=Gt.match(s);return i!=null&&i[1]?i[1].trim():null}var hp=new Map([[fe,"Android"],[Ee,"iOS"],[ss,"Windows"],[di,"MacOS"],[_n,"Linux"],[$l,"ChromeOS"]]),Sc=function(){return hp.get(!0)?hp.get(!0):_e?_e.platform:"unknown"};function as(){return ss?1:fe?2:di?3:Ee?4:_n?5:$l?6:oo?7:0}function Yl(){return Qi||zi?4:tt?1:ye?2:re?3:0}var Mt=()=>{let s=Sc();return _e!=null&&_e.platformVersion?s+=`/${_e.platformVersion}`:Ee?s+=`/${pt}`:fe&&(s+=`/${tc}`),s+=`/${vi.name}/${ye&&!ln?vi.version:vi.version.split(".")[0]}`,_e!=null&&_e.architecture&&(s+=`/${_e.architecture}`),s};function Zl(){return fe?4:yr?2:Ks?3:di?12:ss?5:_n?13:oo?22:1}function AE(){return fe?"Android":yr?"iPhone":Ks?"iPad":di?"Mac":ss?"Windows":_n?"Linux":"unknown"}var _p=Ge(Ze(),1),RE=new _p.default,S=RE;var ft=(J=>(J.ROOM_DESTROY="1",J.JOIN_START="21",J.JOIN_SCHEDULE_SUCCESS="22",J.JOIN_SIGNAL_CONNECTION_START="23",J.JOIN_SIGNAL_CONNECTION_END="24",J.JOIN_SEND_CMD="25",J.JOIN_RECEIVED_CMD_RES="26",J.JOIN_SUCCESS="27",J.JOIN_FAILED="28",J.LEAVE_START="51",J.LEAVE_SEND_CMD="52",J.LEAVE_SUCCESS="53",J.PUBLISH_START="61",J.SEND_FIRST_VIDEO_FRAME="62",J.PUBLISH_FAILED="63",J.SUBSCRIBE_START="81",J.SUBSCRIBE_SUCCESS="82",J.SUBSCRIBE_FAILED="84",J.UNSUBSCRIBE_SUCCESS="83",J.LOCAL_TRACK_CAPTURE_START="101",J.LOCAL_TRACK_CAPTURE_SUCCESS="102",J.LOCAL_TRACK_CAPTURE_FAILED="103",J.LOCAL_TRACK_PUBLISHED="104",J.LOCAL_TRACK_UNPUBLISHED="105",J.LOCAL_TRACK_REPLACED="106",J.SWITCH_DEVICE_SUCCESS="107",J.TRACK_MUTED="108",J.TRACK_UNMUTED="109",J.REMOTE_TRACK_SUBSCRIBED="110",J.REMOTE_TRACK_UNSUBSCRIBED="111",J.LOCAL_TRACK_RECAPTURE="112",J.LOCAL_AUDIO_STARTED="113",J.LOCAL_AUDIO_STOPPED="114",J.REMOTE_AUDIO_STARTED="115",J.REMOTE_AUDIO_STOPPED="116",J.PLAY_TRACK_START="151",J.PLAYER_STATE_CHANGED="152",J.VIDEO_LOADED_DATA="153",J.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",J.AUDIO_CONTEXT_LONG_SUSPENDED="155",J.REMOTE_VIDEO_PLAY_START="156",J.REMOTE_VIDEO_PLAY_FINISH="157",J.SIGNAL_CONNECTION_STATE_CHANGED="201",J.PEER_CONNECTION_STATE_CHANGED="202",J.SINGLE_CONNECTION_STAT="203",J.SPC_RECONNECTED="204",J.HEARTBEAT_REPORT="251",J.RECEIVED_PUBLISHED_USER_LIST="252",J.REMOTE_PUBLISH_STATE_CHANGED="253",J.AUDIO_LEVEL_INTERVAL="260",J.NETWORK_QUALITY="261",J.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",J.QUALITY_LIMITATION_CHANGED="263",J.LOG="264",J.AUDIO_PROCESSOR_DEBUG="265",J.SSO_SWITCH="266",J.SEI_MESSAGE="267",J.USER_PAUSE_IN_PIP="268",J.USER_RESUME_IN_PIP="269",J.ENTER_PICTURE_IN_PICTURE="270",J.LEAVE_PICTURE_IN_PICTURE="271",J.SWITCH_ROOM_START="401",J.SWITCH_ROOM_SUCCESS="407",J.SWITCH_ROOM_FAILED="408",J))(ft||{});var A=ft;var Kl=class{constructor(){d(this,"enable",!1);d(this,"ssoFailCount",0);S.on("22",({schedule:i})=>{var e;(e=i==null?void 0:i.config)!=null&&e.sso&&S.emit("266",{enable:!0})}),S.on("266",({enable:i})=>{this.enable=i})}handleUploadFailed(){this.ssoFailCount++,this.ssoFailCount>3&&S.emit("266",{enable:!1})}},Nr=new Kl;var CE="%cTRTC%c%s",yE="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",bE="display: inline",Ic=class Ic{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);!Us&&!Zo&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){S.on(A.JOIN_SCHEDULE_SUCCESS,({schedule:i})=>{var e;(e=i==null?void 0:i.config)!=null&&e.logLevelToUpload&&ei[i.config.logLevelToUpload]&&(this._logLevelToUpload=i.config.logLevelToUpload)}),S.on(A.JOIN_START,({params:i})=>{this.addJoinedUser({userId:i.userId,sdkAppId:i.sdkAppId}),this.startUpload()}),S.on(A.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:o})=>{i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:o,logs:[t]})});else if(ne(t.userId)&&te(t.sdkAppId)){let{userId:r,sdkAppId:o}=t;i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:o,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 o=0;o<r.length;o++){let{userId:n,sdkAppId:a,logs:c}=r[o],l={timestamp:ba(),sdkAppId:String(a),userId:n,version:We,log:c.map(p=>p.log).join(`
|
|
6
|
+
`)},u=JSON.stringify(l),m=Nr.enable?qi(l,2002,a):u;yield this.uploadLogWithRetry(m,a,m instanceof Uint8Array,u),c.forEach(p=>p.uploaded=!0)}}catch(r){}let t=e.filter(r=>!r.uploaded);t.length>0&&(this._queue=t.concat(this._queue))})}uploadLogWithRetry(i,e,t,r){return bi({retryFunction:()=>Xi({url:ji(e,Er.LOG),body:i,timeout:5e3,priority:"low"}).then(o=>{t&&o.data!=="ok"&&(Nr.handleUploadFailed(),this.uploadLogWithRetry(r,e,!1,r))}),settings:{retries:3,timeout:2e3},onError:({retry:o})=>{o()}})()}getPrefix(i){let e=new Date;return e.setTime(Hi()),`[${xs(e)}] <${ei[i]}>`}getLogLevel(){return this._logLevel}setLogLevel(i){T(ei[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(ne(i))return i;try{return i instanceof Error?i.toString():JSON.stringify(i)}catch(e){return""}}addLogToQueue(i,e,t=!0,r,o){let n={log:e.reduce((a,c)=>`${a} ${this.logChunkToString(c)}`.trim(),""),level:i,userId:r,sdkAppId:o,forAllJoinedClients:t};S.emit(A.LOG,{log:n}),this._isEnableUploadLog&&i>=this._logLevelToUpload&&this._queue.push(n)}log(i,e,t=!0,r,o){var a;if(e.unshift(this.getPrefix(i)),this.addLogToQueue(i,e,t,r,o),i<this._logLevel)return;let n=((a=ei[i])==null?void 0:a.toLowerCase())||"info";Ic.PRINT_LOG_TAG?console[n](CE,yE,bE,...e):console[n](...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){if(i.parent instanceof Cr){let e=i,{parent:t}=e,r=Ra(e,["parent"]),o=new Cr(r);return o.bindParent(t),o}return new Cr(i)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),t=e?Number(e):-1;ei[t]&&(this._logLevelToUpload=t)}getQueue(){return this._queue}};d(Ic,"PRINT_LOG_TAG",!(Ee||fe||Jl));var eu=Ic,C=new eu;var vE=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,s=>{let i=Math.random()*16|0;return(s=="x"?i:i&3|8).toString(16)})},Cn=vE;var tu=class{constructor(){d(this,"_prefix","TRTC");d(this,"_queue",new Map)}getRealKey(i){return`${this._prefix}_${i}`}checkStorage(){if(!Zi())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 o=JSON.parse(r);if(o&&o.expiresIn<Date.now())return!0}catch(r){return!1}return!1}).forEach(t=>localStorage.removeItem(t))}doFlush(){if(Zi())try{for(let[i,e]of this._queue)localStorage.setItem(i,JSON.stringify(e))}catch(i){C.warn(i)}}getItem(i){if(!Zi())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){C.warn(e)}}setItem(i,e){if(Zi())try{let t={expiresIn:Date.now()+Ma,value:e};this._queue.set(this.getRealKey(i),t)}catch(t){C.warn(t)}}deleteItem(i){if(!Zi())return!1;try{return i=this.getRealKey(i),this._queue.delete(i),localStorage.removeItem(i),!0}catch(e){return C.warn(e),!1}}clear(){if(Zi())try{localStorage.clear()}catch(i){C.warn(i)}}},lo=new tu;var Mi={};Bi(Mi,{HTTPS_API:()=>QE,IS_GET_CAPABILITIES_FROM_INPUTDEVICE_SUPPORTED:()=>vu,IS_GET_CAPABILITIES_SUPPORTED:()=>bu,IS_GET_SETTINGS_SUPPORTED:()=>Di,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>yu,IS_INSERTABLE_STREAM_SUPPORTED:()=>fi,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>_o,IS_RTC_RTP_SENDER_SUPPORTED:()=>kn,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>fo,IS_SEI_SUPPORTED:()=>wn,IS_SPC_SUPPORTED:()=>po,basis:()=>KE,capabilityCheck:()=>Mu,checkSystemRequirementsInternal:()=>Lc,decodeSupportStatus:()=>kc,detectVideoCodecCapabilities:()=>Ou,detectVideoDecoderCapabilities:()=>Xp,detectVideoEncoderCapabilities:()=>qp,encodeSupportStatus:()=>Ru,getBrowserInfo:()=>GE,getDisplayResolution:()=>Fp,getH264ProfileLevelIds:()=>zp,isAddTransceiverSupported:()=>It,isBrowserSupported:()=>Au,isCanvasCaptureStreamAPISupported:()=>$p,isCanvasSmallStreamSupported:()=>wc,isGetReceiversSupported:()=>hs,isGetSendersSupported:()=>Pr,isGetTransceiversSupported:()=>kr,isGetUserMediaSupported:()=>Bp,isMediaDevicesSupported:()=>Pc,isMediaSessionSupported:()=>Wp,isMediaStreamTrackGeneratorSupported:()=>WE,isMediaStreamTrackProcessorSupported:()=>On,isReplaceTrackSupported:()=>Cu,isRequestVideoFrameCallbackSupported:()=>ir,isSIMDSupported:()=>Du,isScaleResolutionDownBySupported:()=>Gp,isScreenCaptureApiAvailable:()=>Pn,isSelectedCandidatePair:()=>Or,isSetParametersSupported:()=>Ln,isSetSinkIdSupported:()=>qE,isSmallStreamSupported:()=>xc,isStopTransceiverSupported:()=>ZE,isTRTCSupported:()=>jE,isUnifiedPlanDefault:()=>YE,isUsedInHttpProtocol:()=>tr,isWebAudioSupported:()=>Hp,isWebCodecSupported:()=>Uc,isWebCodecsSupported:()=>Mn,isWebRTCSupported:()=>Nu,isWebTransportSupported:()=>Jp});var fu={};Bi(fu,{AUDIO_LEVEL_SCALE:()=>Pt,AlphaStitchingType:()=>Nn,AudioCodecPipelineType:()=>bn,AudioDecoderDowngradeState:()=>ou,AudioPlayerMode:()=>du,AudioType:()=>Sp,BASIC_TYPE:()=>Ki,BannedReason:()=>lu,CONNECTION_CLOSED_REASON:()=>ru,CheckPermissionType:()=>pu,ClientEvent:()=>gp,CodecType:()=>yp,ConnectionEvent:()=>ui,ConnectionState:()=>Ot,DECODE_FAILED_ERROR_CODE:()=>mu,DenoiserMode:()=>uu,DeviceType:()=>bc,FacingMode:()=>Cc,FrameWorkType:()=>Ac,LeaveReason:()=>Cp,LocalTrackEvent:()=>cs,MULTI_VIDEO_DATA_TYPE:()=>mi,MediaType:()=>Je,MediaTypeLabel:()=>NE,MonitorEventId:()=>yn,MutedFlag:()=>Tp,NetworkQualityValue:()=>cu,PlayerState:()=>Dr,ReceiveMode:()=>Rp,RemoteStreamType:()=>ut,RemoteTrackEvent:()=>Mr,RoomEvent:()=>hi,SMALL_MODE:()=>vn,SceneNumber:()=>su,StreamEvent:()=>Ep,StreamType:()=>Ap,SubscribeMediaType:()=>iu,TIMER_TYPE:()=>pi,TRACK_ACTION:()=>au,TRACK_KIND:()=>nu,TrackEvent:()=>Jt,UserRole:()=>lt,UserRoleNumber:()=>ds,VideoCodec:()=>jt,VideoCodecPipelineType:()=>hu,VideoContentHint:()=>uo,VideoDecoderDowngradeState:()=>Rc,VideoPlayerMode:()=>yc,VideoType:()=>Ip});var Ac=(e=>(e[e.WEBRTC=30]="WEBRTC",e[e.WASM=37]="WASM",e))(Ac||{}),ui=(g=>(g.TRACK_ADDED="track-added",g.TRACK_UPDATED="track-updated",g.TRACK_SUBSCRIBED="track-subscribed",g.STREAM_ADDED="stream-added",g.STREAM_REMOVED="stream-removed",g.STREAM_UPDATED="stream-updated",g.STREAM_PUBLISHED="stream-published",g.STREAM_SUBSCRIBED="stream-subscribed",g.STREAM_UNSUBSCRIBED="stream-unsubscribed",g.STATE_CHANGED="state-changed",g.ERROR="error",g.CONNECTION_STATE_CHANGED="connection-state-changed",g.FIREWALL_RESTRICTION="firewall-restriction",g.SEI_MESSAGE="sei-message",g.CLOSED="closed",g))(ui||{}),ru=(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))(ru||{}),gp=(R=>(R.STREAM_ADDED="stream-added",R.STREAM_REMOVED="stream-removed",R.STREAM_UPDATED="stream-updated",R.STREAM_SUBSCRIBED="stream-subscribed",R.CONNECTION_STATE_CHANGED="connection-state-changed",R.PEER_JOIN="peer-join",R.PEER_LEAVE="peer-leave",R.MUTE_AUDIO="mute-audio",R.MUTE_VIDEO="mute-video",R.UNMUTE_AUDIO="unmute-audio",R.UNMUTE_VIDEO="unmute-video",R.CLIENT_BANNED="client-banned",R.NETWORK_QUALITY="network-quality",R.AUDIO_VOLUME="audio-volume",R.SEI_MESSAGE="sei-message",R.ERROR="error",R))(gp||{}),Ep=(o=>(o.PLAYER_STATE_CHANGED="player-state-changed",o.SCREEN_SHARING_STOPPED="screen-sharing-stopped",o.CONNECTION_STATE_CHANGED="connection-state-changed",o.DEVICE_AUTO_RECOVERED="device-auto-recovered",o.ERROR="error",o))(Ep||{}),cs=(c=>(c.DEVICE_AUTO_RECOVERED="1",c.DEVICE_RECOVER_FAILED="5",c.DEVICE_CHANGED="2",c.ERROR="3",c.PUBLISH_STATE_CHANGED="4",c.ENCODE_FAILED="6",c.TRACK_ENDED="7",c.RENDER="render",c))(cs||{}),Dr=(t=>(t.PAUSED="PAUSED",t.PLAYING="PLAYING",t.STOPPED="STOPPED",t))(Dr||{}),hi=(X=>(X.PEER_JOIN="peer-join",X.PEER_LEAVE="peer-leave",X.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",X.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",X.BANNED="banned",X.NETWORK_QUALITY="network-quality",X.AUDIO_VOLUME="audio-volume",X.SEI_MESSAGE="sei-message",X.ERROR="error",X.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",X.REMOTE_PUBLISHED="remote-published",X.REMOTE_UNPUBLISHED="remote-unpublished",X.FIREWALL_RESTRICTION="firewall-restriction",X.HEARTBEAT_REPORT="heartbeat-report",X.CUSTOM_MESSAGE="custom-message",X.LAYER_DATA="layerData",X.FIRST_VIDEO_FRAME="first-video-frame",X.DUMP="dump",X.AUDIO_FRAME="audio-frame",X.SUBSCRIBE_SMALL_VIDEO_CHANGED="subscribe-small-video-changed",X.LOCAL_PUBLISH_FLAG_CHANGED="local-publish-flag-changed",X.NTP_TIME_UPDATED="ntp-time-updated",X.DATA_CHANNEL_MESSAGE="data-channel-message",X.ASR_ROBOT_PEER_JOIN="asr-robot-peer-join",X.ASR_ROBOT_PEER_LEAVE="asr-robot-peer-leave",X))(hi||{}),Jt=(c=>(c.PLAYER_STATE_CHANGED="player-state-changed",c.MUTE="mute",c.UNMUTE="unmute",c.ERROR="error",c.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",c.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",c.FIRST_VIDEO_FRAME="first-video-frame",c.VIDEO_SIZE_CHANGED="video-size-changed",c))(Jt||{}),Mr=(o=>(o.DECODE_FAILED="decode-failed",o.DECODE_FAILED_DURING_CALL="decode-failed-during-call",o.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",o.REMOTE_PUBLISH_CHANGED="remote-publish-changed",o.AUDIO_FRAME_WITH_NTP="audio-frame-with-ntp",o))(Mr||{}),Tp=(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))(Tp||{}),su=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(su||{}),ds=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(ds||{}),lt=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(lt||{}),Ot=(o=>(o.CONNECTED="CONNECTED",o.DISCONNECTED="DISCONNECTED",o.CONNECTING="CONNECTING",o.RECONNECTED="RECONNECTED",o.RECONNECTING="RECONNECTING",o))(Ot||{}),ou=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(ou||{}),Rc=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(Rc||{}),nu=(t=>(t.AUDIO="audio",t.VIDEO="video",t.AUXILIARY="auxVideo",t))(nu||{}),au=(e=>(e.ADD="add",e.REMOVE="remove",e))(au||{}),Je=(o=>(o[o.NULL=0]="NULL",o[o.AUDIO=1]="AUDIO",o[o.AUX_VIDEO=2]="AUX_VIDEO",o[o.BIG_VIDEO=4]="BIG_VIDEO",o[o.SMALL_VIDEO=8]="SMALL_VIDEO",o))(Je||{}),NE={1:"audio",2:"auxVideo",4:"video"},Sp=(i=>(i[i.opus=111]="opus",i))(Sp||{}),Ip=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(Ip||{}),Ap=(e=>(e.Big="big",e.Small="small",e))(Ap||{}),ut=(e=>(e.Main="main",e.Aux="auxiliary",e))(ut||{}),mi=(o=>(o[o.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",o[o.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",o[o.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",o[o.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",o[o.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",o))(mi||{}),yn=(k=>(k[k.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",k[k.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",k[k.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",k[k.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",k[k.MUTE_AUDIO=32772]="MUTE_AUDIO",k[k.MUTE_VIDEO=32773]="MUTE_VIDEO",k[k.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",k[k.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",k[k.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",k[k.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",k[k.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",k[k.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",k[k.SWITCH_CAMERA=32780]="SWITCH_CAMERA",k[k.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",k[k.REPLACE_VIDEO=32782]="REPLACE_VIDEO",k[k.REPLACE_AUDIO=32783]="REPLACE_AUDIO",k[k.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",k[k.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",k[k.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",k[k.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",k[k.JOIN=32788]="JOIN",k[k.LEAVE=32789]="LEAVE",k[k.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",k[k.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",k[k.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",k[k.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",k[k.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",k[k.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",k[k.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",k[k.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",k[k.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",k[k.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",k[k.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",k[k.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",k[k.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",k[k.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",k[k.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",k[k.PUBLISH_AUX=32805]="PUBLISH_AUX",k[k.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",k[k.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",k[k.VIDEO_ENCODER=4004]="VIDEO_ENCODER",k[k.VIDEO_DECODER=4005]="VIDEO_DECODER",k))(yn||{}),cu=(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))(cu||{}),Rp=(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))(Rp||{}),Cc=(e=>(e.user="user",e.environment="environment",e))(Cc||{}),yc=(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))(yc||{}),du=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(du||{}),lu=(r=>(r.BANNED="banned",r.KICK="kick",r.USER_TIME_OUT="user_time_out",r.ROOM_DISBAND="room_disband",r))(lu||{}),Cp=(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))(Cp||{}),Pt=1e8,uu=(e=>(e[e.NORMAL=0]="NORMAL",e[e.FAR_FIELD_REDUCTION=1]="FAR_FIELD_REDUCTION",e))(uu||{}),iu=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)}},Ki=(o=>(o.String="string",o.Number="number",o.Boolean="boolean",o.Array="array",o.Object="object",o))(Ki||{}),jt=(o=>(o.H264="h264",o.H265="h265",o.VP8="vp8",o.VP9="vp9",o.AV1="av1",o))(jt||{}),hu=(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))(hu||{}),bn=(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))(bn||{}),yp=(t=>(t.WebRTC="webrtc",t.WebCodecs="webcodecs",t.WebAssembly="webassembly",t))(yp||{}),mu=(p=>(p[p.SUCCESS=0]="SUCCESS",p[p.FAILED=1]="FAILED",p[p.WEBCODEC_INIT=2]="WEBCODEC_INIT",p[p.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",p[p.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",p[p.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",p[p.WASM_INIT=6]="WASM_INIT",p[p.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",p[p.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",p[p.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",p[p.TEST=10]="TEST",p[p.RENDER_2D_ERROR=11]="RENDER_2D_ERROR",p))(mu||{}),uo=(r=>(r.NONE="",r.DETAIL="detail",r.MOTION="motion",r.TEXT="text",r))(uo||{}),pi=(o=>(o.INTERVAL="interval",o.TIMEOUT="timeout",o.RAF="raf",o.RIC="ric",o.INTERVAL_IN_WORKER="intervalInWorker",o))(pi||{}),vn=(e=>(e.CANVAS="canvas",e.API="api",e))(vn||{}),pu=(r=>(r[r.NONE=0]="NONE",r[r.MICROPHONE=1]="MICROPHONE",r[r.CAMERA=2]="CAMERA",r[r.BOTH=3]="BOTH",r))(pu||{}),bc=(e=>(e.CAMERA="camera",e.MICROPHONE="microphone",e))(bc||{}),Nn=(t=>(t[t.none=0]="none",t[t.horizontal=1]="horizontal",t[t.vertical=2]="vertical",t))(Nn||{});var H={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"},Xe={AVOID_REPEATED_CALL(s){return`previous ${s.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o="";return Array.isArray(i.type)?o=i.type.join("|"):o=i.type,`'${r}' must be type of ${o} when calling ${e}(), received type: ${Pe(t)}.`},INVALID_PARAMETER_EMPTY({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${o} when calling ${e}(), received type: ${Pe(t)}.`},INVALID_PARAMETER_RANGE({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_MIN({key:s,rule:i,fnName:e,value:t}){return`the min value of ${s||i.name} is ${i.min}, received: ${t}.`},INVALID_PARAMETER_MAX({key:s,rule:i,fnName:e,value:t}){return`the max value of ${s||i.name} is ${i.max}, received: ${t}.`},API_CALL_TIMEOUT(s){return`${s.commandDesc||s.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(s){return`SignalChannel setup failure: (errorCode: ${s.errorCode}, errorMsg: ${s.errorMsg} }).`},ERROR_MESSAGE(s){let i=`${s.type} failed`;return s.message&&(i=`${i}: ${s.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(s){return`exchange sdp failed ${s.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(s){return`'${s}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(s){return`'${s}' 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:s,code:i}){return`Failed to join room - ${s} code: ${i}`},REJOIN_ROOM_FAILED(s){return`reJoin room: ${s.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(s){return`duplicate ${s} stream publishing, please unpublish your prev ${s} 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:s,userId:i,streamType:e}){return`failed to subscribe ${i} ${e} stream, reason: ${s}.`},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(s){return`switchRole failed, errCode: ${s.code} errMsg: ${s.message}.`},CLIENT_BANNED(s){return`client was banned because of ${s.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(s){return`startPublishCDNStream failed, errMsg: ${s.message}.`},STOP_PUBLISH_CDN_FAILED(s){return`stopPublishCDNStream failed, errMsg: ${s.message}.`},INVALID_STREAM_ID(s){return`'${s}' 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(s){return`cannot replace ${s.kind} track because stream has not ${s.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(s){return`startMixTranscode failed, errMsg: ${s.message}.`},STOP_MIX_TRANSCODE_FAILED(s){return`stopMixTranscode failed, errMsg: ${s.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:s,rule:i,fnName:e,value:t}){return`'${s||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(s){return`'${s}' 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:s,fnName:i})=>`'${s}' is not found in the document object when calling ${i}().`,INVALID_ELEMENT_ID_TYPE:({key:s,fnName:i,type:e})=>`the element corresponding to '${s}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`,PLAY_FAILED:s=>`${s.media} play failed, browser exception: ${s.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(s){return`${s}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(s){return`${s.signalResponse} failed, response code is ${s.code} , errMsg: ${s.message}.`},CATCH_HANDLER_ERROR({name:s,event:i}){return`an error was caught in ${s}.on('${i}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:s}){return`experimental api ${s} does not exist.`},REPEAT_JOIN:s=>"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:s}){return`failed to call ${s}() because client was destroyed.`},SEI_NOT_SUPPORT:s=>`not support to sendSEIMessage${s===!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:s,name:i,timesInSecond:e,maxSizeInSecond:t})=>`api ${i} call ${s?"size":"times"} is over ${s?`${t} bytes`:e} in a second.`,CONNECTION_ABORTED(s){return`connection aborted due to: ${s}`},API_CALL_ABORTED(s){let i;return s.message.includes("REMOTE_STREAM_NOT_EXIST")?i=`Subscribe ${s.userId} ${s.streamType} stream aborted, reason: remote user ${s.userId} unpublished stream.`:i=`API aborted, reason: ${s.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:s=>`'streamType' is required when 'userId' is not '*', calling ${s}()`};var bp=(s,i)=>i?`${gt}/${s}/${i}`:`${gt}/${s}/index.html`;var DE=()=>{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 s=localStorage==null?void 0:localStorage.getItem(ul);if(s){s=JSON.parse(s);let i=document.createElement("script");i.type="text/javascript",i.text=s.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 G(s){let{key:i,data:e,link:t,addDocLink:r=!0}=s,o="",n="",a="";me(Xe[i])?o=Xe[i](e):ne(Xe[i])&&(o=Xe[i]);let{TRTC_ERROR_INFO:c,TRTC_ERROR_LINK:l}=DE();t?a=`${t.className}.html#${t.fnName}`:l&&l[i]&&(me(l[i])?a=l[i](e):ne(l[i])&&(a=l[i]));let u=o;return ri()&&(c&&c[i]&&(me(c[i])?n=c[i](e):ne(c[i])&&(n=c[i])),n&&(r?u=`${n}
|
|
7
|
+
\u8BF7\u67E5\u770B\u6587\u6863: ${bp("zh-cn",a)}
|
|
6
8
|
|
|
7
|
-
`:
|
|
9
|
+
`:u=`${n}
|
|
8
10
|
|
|
9
|
-
`,
|
|
10
|
-
Refer to: ${
|
|
11
|
-
`),p}var Rh=ai(aE(),1);var sA=1,nA=0,Au=class{constructor(t=!0){m(this,"countMap",new Map);m(this,"distributionMap",new Map);m(this,"version");m(this,"log",B.createLogger({id:"kv"}));t&&(x.on("102",({track:e,cost:r})=>{this.addSuccessEvent({key:e.kind===M.AUDIO?501700:511700,cost:r})}),x.on("103",({track:e,error:r})=>{this.addFailedEvent({key:e.kind===M.AUDIO?501700:511700,error:r})}),x.on("266",({enable:e})=>{this.log.info(`${e?"enable":"disable"} sso`),e?this.addSuccessEvent({key:525701}):this.addFailedEvent({key:525701})}))}getReportData(t,e){let r={msg_sdk_basic_info:{uint32_sdk_version:kd(this.version||ft),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([o,s])=>({uint32_key:o,uint32_count:s})),stats_distribution:[...this.distributionMap.entries()].map(([o,s])=>({uint32_key:o,distribution_items:[...s.entries()].map(([n,a])=>({uint32_item_key:n,uint32_item_value:a}))})),str_user_sig:t,bytes_report_token:e};return this.countMap.clear(),this.distributionMap.clear(),r}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 d;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=((d=this.distributionMap)==null?void 0:d.get(t))||new Map,a=0;if(Be(r))a=Math.floor(e/r);else for(let l=r.length-1;l>0;l--)if(e>r[l]){a=l;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:sA,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=z.UNKNOWN;e&&(Be(e)?r=e:(!O(e.extraCode)||!O(e.code))&&(r=e.extraCode||e.code)),this.addEnum({key:t,value:nA,useUV:!1}),this.addEnum({key:t,value:Math.abs(r),useUV:!1})}},yu=(Y=>(Y[Y.enterRoom=500700]="enterRoom",Y[Y.exitRoom=500701]="exitRoom",Y[Y.switchRole=500702]="switchRole",Y[Y.destroy=500703]="destroy",Y[Y.startLocalAudio=500704]="startLocalAudio",Y[Y.updateLocalAudio=500705]="updateLocalAudio",Y[Y.stopLocalAudio=500706]="stopLocalAudio",Y[Y.startLocalVideo=500707]="startLocalVideo",Y[Y.updateLocalVideo=500708]="updateLocalVideo",Y[Y.stopLocalVideo=500709]="stopLocalVideo",Y[Y.startScreenShare=500710]="startScreenShare",Y[Y.updateScreenShare=500711]="updateScreenShare",Y[Y.stopScreenShare=500712]="stopScreenShare",Y[Y.startRemoteVideo=500713]="startRemoteVideo",Y[Y.updateRemoteVideo=500714]="updateRemoteVideo",Y[Y.stopRemoteVideo=500715]="stopRemoteVideo",Y[Y.muteRemoteAudio=500716]="muteRemoteAudio",Y[Y.setRemoteAudioVolume=500717]="setRemoteAudioVolume",Y[Y.use=500718]="use",Y[Y.switchRoom=500719]="switchRoom",Y[Y.getPermissions=500720]="getPermissions",Y[Y.sendSEIMessage=5e5]="sendSEIMessage",Y[Y.sendCustomMessage=500001]="sendCustomMessage",Y))(yu||{}),Ah=(y=>(y[y.AudioMixer=550700]="AudioMixer",y[y.AIDenoiser=551700]="AIDenoiser",y[y.VirtualBackground=570700]="VirtualBackground",y[y.Beauty=571700]="Beauty",y[y.Watermark=572700]="Watermark",y[y.BasicBeauty=574700]="BasicBeauty",y[y.FaceDetector=575700]="FaceDetector",y[y.CDNStreaming=590700]="CDNStreaming",y[y.DeviceDetector=591700]="DeviceDetector",y[y.Debug=592700]="Debug",y[y.SmallStreamAutoSwitcher=593700]="SmallStreamAutoSwitcher",y[y.VideoMixer=594700]="VideoMixer",y[y.AudioProcessor=595700]="AudioProcessor",y[y.LEBPlayer=596700]="LEBPlayer",y[y.RealtimeTranscriber=597700]="RealtimeTranscriber",y))(Ah||{}),yh=(y=>(y[y.AudioMixer=550701]="AudioMixer",y[y.AIDenoiser=551701]="AIDenoiser",y[y.VirtualBackground=570701]="VirtualBackground",y[y.Beauty=571701]="Beauty",y[y.Watermark=572701]="Watermark",y[y.BasicBeauty=574701]="BasicBeauty",y[y.FaceDetector=575701]="FaceDetector",y[y.CDNStreaming=590701]="CDNStreaming",y[y.DeviceDetector=591701]="DeviceDetector",y[y.Debug=592701]="Debug",y[y.SmallStreamAutoSwitcher=593701]="SmallStreamAutoSwitcher",y[y.VideoMixer=594701]="VideoMixer",y[y.AudioProcessor=595701]="AudioProcessor",y[y.LEBPlayer=596701]="LEBPlayer",y[y.RealtimeTranscriber=597701]="RealtimeTranscriber",y))(yh||{}),bh=(y=>(y[y.AudioMixer=550702]="AudioMixer",y[y.AIDenoiser=551702]="AIDenoiser",y[y.VirtualBackground=570702]="VirtualBackground",y[y.Beauty=571702]="Beauty",y[y.Watermark=572702]="Watermark",y[y.BasicBeauty=574702]="BasicBeauty",y[y.FaceDetector=575702]="FaceDetector",y[y.CDNStreaming=590702]="CDNStreaming",y[y.DeviceDetector=591702]="DeviceDetector",y[y.Debug=592702]="Debug",y[y.SmallStreamAutoSwitcher=593702]="SmallStreamAutoSwitcher",y[y.VideoMixer=594702]="VideoMixer",y[y.AudioProcessor=595702]="AudioProcessor",y[y.LEBPlayer=596702]="LEBPlayer",y[y.RealtimeTranscriber=597702]="RealtimeTranscriber",y))(bh||{});var Cn=(G=>(G[G.DECODER_TYPE=514700]="DECODER_TYPE",G[G.DECODER_HW_SW=514701]="DECODER_HW_SW",G[G.DECODE_RESULT=514702]="DECODE_RESULT",G[G.DECODE_FAILED_OS=514703]="DECODE_FAILED_OS",G[G.DOWNGRADE_RESULT=514704]="DOWNGRADE_RESULT",G[G.DOWNGRADE_WEBCODECS_VIDEO=514705]="DOWNGRADE_WEBCODECS_VIDEO",G[G.DOWNGRADE_WEBCODECS_2D=514706]="DOWNGRADE_WEBCODECS_2D",G[G.DOWNGRADE_WASM_WEGBL=514707]="DOWNGRADE_WASM_WEGBL",G[G.DOWNGRADE_WASM_VIDEO=514708]="DOWNGRADE_WASM_VIDEO",G[G.DOWNGRADE_WASM_2D=514709]="DOWNGRADE_WASM_2D",G[G.DECODE_H264_RESULT=514710]="DECODE_H264_RESULT",G[G.DECODE_H265_RESULT=514711]="DECODE_H265_RESULT",G[G.DECODE_VP8_RESULT=514712]="DECODE_VP8_RESULT",G[G.DECODE_CAPABILITIES=514713]="DECODE_CAPABILITIES",G[G.H264_PROFILE_LEVEL_ID_HIGH=514714]="H264_PROFILE_LEVEL_ID_HIGH",G[G.H264_PROFILE_LEVEL_ID_MAIN=514715]="H264_PROFILE_LEVEL_ID_MAIN",G[G.RENDER_FREEZE_RATE=514850]="RENDER_FREEZE_RATE",G[G.DATA_FREEZE_RATE=514851]="DATA_FREEZE_RATE",G[G.VIDEO_CONSUME_RENDER_RATE=514852]="VIDEO_CONSUME_RENDER_RATE",G))(Cn||{});var aA=new Au(!0),Is=new Au(!1);var J=aA;var Ne={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}},cA=new Map([[nt,["Firefox",qd]],[En,["Edg",Xd]],[An,["Chrome",uu]],[ct,["Safari",ki]],[Gr,["TBS",Zd]],[Li,["XWEB",Kd]],[xi&&Eo,["WeChat",eu]],[xa,["QQ(Win)",tu]],[Tn,["QQ(Mobile)",fn]],[_n,["QQ(Mobile X5)",fn]],[ka,["QQ(Mac)",ru]],[Ua,["QQ(iPad)",iu]],[Fa,["MI",ou]],[Ba,["HW",su]],[Ha,["Samsung",nu]],[In,["OPPO",au]],[Wa,["VIVO",cu]],[hs,["EDGE",Jd]],[Pa,["SogouMobile",Qd]],[La,["Sogou",Yd]]]);function vu(){let i=cA.get(!0),t=i?i[0]:"unknown",e=i?i[1]:"unknown";return{browserName:t,browserVersion:e}}var vh=function(){return!(zm||hs||En&&jm<80||nt&&zd<56)},Ch=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every(t=>t in window)},Cu=function(){if(!navigator.mediaDevices)return Gi()||B.error(sr.NOT_SUPPORTED_MEDIA),!1;let i=["getUserMedia","enumerateDevices"];return i.filter(t=>t in navigator.mediaDevices).length===i.length},cE=!1;function Gi(){return location.protocol==="http:"&&!zr?(cE||B.error(je({key:Ge.NOT_SUPPORTED_HTTP})),cE=!0,!0):!1}var Nh=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},dA=function(){return!!(window!=null&&window.MediaStreamTrackGenerator)},Dh=function(){return b(this,null,function*(){var o,s,n;if(Ne.detail.isH264EncodeSupported&&Ne.detail.isVp8EncodeSupported)return{isH264EncodeSupported:Ne.detail.isH264EncodeSupported,isVp8EncodeSupported:Ne.detail.isVp8EncodeSupported,isH265EncodeSupported:Ne.detail.isH265EncodeSupported};let i,t=!1,e=!1,r=!1;try{let a=new RTCPeerConnection,d=document.createElement(M.CANVAS);d.getContext("2d");let l=d.captureStream(0);return a.addTrack(l.getVideoTracks()[0],l),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}}})},hE=function(){return b(this,null,function*(){var r;if(Ne.detail.isH264DecodeSupported&&Ne.detail.isVp8DecodeSupported)return{isH264DecodeSupported:Ne.detail.isH264DecodeSupported,isVp8DecodeSupported:Ne.detail.isVp8DecodeSupported,isH265DecodeSupported:Ne.detail.isH265DecodeSupported};let i,t=!1,e=!1;try{let o=new RTCPeerConnection;wu()?(o.addTransceiver(M.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 uA(){return b(this,null,function*(){let[i,t]=yield Promise.all([Dh(),hE()]);return{encode:{h264:i.isH264EncodeSupported,vp8:i.isVp8EncodeSupported,h265:i.isH265EncodeSupported},decode:{h264:t.isH264DecodeSupported,vp8:t.isVp8DecodeSupported,h265:t.isH265DecodeSupported}}})}var Nu=Ud(i=>b(null,null,function*(){let t=Date.now(),e=Oh(),r=Cu(),o=Ch();if(Ne.detail.isWebRTCSupported=e,Ne.detail.isMediaDevicesSupported=r,Ne.detail.isWebCodecsSupported=o,Ne.detail.isScreenShareSupported=tc(),Ne.detail.isSmallStreamSupported=Du(),i===37)return Object.assign(Ne.detail,yield pA()),Ne.detail.isBrowserSupported=o,Ne.result=r&&o,Ne.result||B.error(`${navigator.userAgent} ${wa(Ne.detail,!1)}`),dE(i),J.addNumber({key:523800,value:Date.now()-t}),Ne;if(Ne.result&&Ne.detail.isH264EncodeSupported&&Ne.detail.isVp8EncodeSupported&&Ne.detail.isH265EncodeSupported&&Ne.detail.isH264DecodeSupported&&Ne.detail.isVp8DecodeSupported&&Ne.detail.isH265DecodeSupported)return Ne;let s=vh(),{encode:n,decode:a}=yield uA(),{h264:d,vp8:l}=n,{h264:p}=a,{h265:f}=n,{vp8:_,h265:I}=a;if(!d||!l){let R=yield Dh();B.warn(`detect encode again h264:${d} vp8:${l} result: ${JSON.stringify(R)}`),d=R.isH264EncodeSupported,l=R.isVp8EncodeSupported}if(d&&p&&rt&&qr&&!Li&&!Gr&&!(In&&Ut===115)){let{encode:R,decode:y}=yield hA();d=R,p=y}return Ne.result=s&&e&&r&&(d||l)&&(p||_),Ne.detail.isBrowserSupported=s,Ne.detail.isWebRTCSupported=e,Ne.detail.isH264EncodeSupported=d,Ne.detail.isVp8EncodeSupported=l,Ne.detail.isH265EncodeSupported=f,Ne.detail.isH264DecodeSupported=p,Ne.detail.isVp8DecodeSupported=_,Ne.detail.isH265DecodeSupported=I,Ne.result||B.error(`${navigator.userAgent} ${wa(Ne.detail,!1)}`),dE(),J.addNumber({key:523800,value:Date.now()-t}),Ne})),lA=function(){return Ne.result},tc=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},mA=typeof HTMLMediaElement!="undefined"&&"setSinkId"in HTMLMediaElement.prototype,bu=null;function hA(){return b(this,null,function*(){return bu||(bu=new Promise(i=>b(null,null,function*(){let t={encode:!1,decode:!1},e=()=>{};try{let r=document.createElement("canvas"),o=r.getContext("2d");r.width=640,r.height=480;let s=setInterval(()=>{o.fillText("test",Math.floor(Math.random()*640),Math.floor(Math.random()*480))},66),n=-1,a=-1;e=()=>{clearInterval(n),clearInterval(s),clearTimeout(a),l.close(),p.close(),d.getTracks().forEach(y=>y.stop())},a=setTimeout(()=>{e(),i(t)},2*1e3);let d=r.captureStream(),l=new RTCPeerConnection({}),p=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});l.addEventListener("icecandidate",y=>p.addIceCandidate(y.candidate)),p.addEventListener("icecandidate",y=>l.addIceCandidate(y.candidate)),l.addTrack(d.getVideoTracks()[0],d);let f=yield l.createOffer();yield l.setLocalDescription(f),yield p.setRemoteDescription(f);let _=yield p.createAnswer(),I=Rh.default.parse(_.sdp),R=I.media[0].rtp.findIndex(y=>y.codec==="H264");I.media[0].rtp=[I.media[0].rtp[R]],I.media[0].fmtp=I.media[0].fmtp.filter(y=>y.payload===I.media[0].rtp[0].payload),I.media[0].rtcpFb&&(I.media[0].rtcpFb=I.media[0].rtcpFb.filter(y=>y.payload===I.media[0].rtp[0].payload)),_.sdp=Rh.default.write(I),yield p.setLocalDescription(_),yield l.setRemoteDescription(_),n=setInterval(()=>b(null,null,function*(){t.encode&&t.decode&&(e(),i(t));let[y,N]=yield Promise.all([l.getSenders()[0].getStats(),p.getReceivers()[0].getStats()]);t.encode||y.forEach(P=>{P.type==="outbound-rtp"&&P.mediaType===M.VIDEO&&P.bytesSent>0&&(t.encode=!0)}),t.decode||N.forEach(P=>{P.type==="inbound-rtp"&&P.mediaType===M.VIDEO&&P.bytesReceived>0&&(t.decode=!0)})}),100)}catch(r){e(),B.warn("detectH264Supported failed",r),i({encode:!0,decode:!0})}})).then(i=>(i.encode||(i.decode=!0),(!i.encode||!i.decode)&&B.warn(`detectH264Supported encode: ${i.encode} decode: ${i.decode} ${Wr}`),i)),bu)})}var Ru=null;function pA(){return b(this,null,function*(){return Ru||(Ru=new Promise(i=>b(null,null,function*(){let t={isH264EncodeSupported:!1,isH264DecodeSupported:!1,isVp8EncodeSupported:!1,isVp8DecodeSupported:!1};if(!Ch()){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 d=[{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(d.map(p=>b(null,null,function*(){let f={type:p.type,encodeSupported:!1,decodeSupported:!1},_;try{_=yield new Promise((I,R)=>b(null,null,function*(){try{let y=new VideoEncoder({output:P=>{I(P),f.encodeSupported=!0},error:R});y.configure(p.encodeConfig),a();let N=new VideoFrame(e,{timestamp:0});y.encode(N,{keyFrame:!0}),N.close(),yield y.flush(),y.close()}catch(y){R(y)}}))}catch(I){return B.warn(`${p.type} encoder error:`,I),f}try{yield new Promise((I,R)=>b(null,null,function*(){try{let y=new VideoDecoder({output:N=>{f.decodeSupported=!0,I(0),N.close()},error:R});y.configure(p.decodeConfig),y.decode(_),yield y.flush(),y.close()}catch(y){R(y)}}))}catch(I){B.warn(`${p.type} decoder error:`,I)}return f})))).forEach(p=>{p.type==="h264"?(t.isH264EncodeSupported=p.encodeSupported,t.isH264DecodeSupported=p.decodeSupported):p.type==="vp8"&&(t.isVp8EncodeSupported=p.encodeSupported,t.isVp8DecodeSupported=p.decodeSupported)}),s(),i(t)}catch(n){s(),B.warn("detectWebCodecsSupported failed:",n),i(t)}})),Ru)})}var fA=(i,t,e)=>{location.protocol==="http:"&&!zr&&(i[t]=()=>{throw new ce({code:z.INVALID_OPERATION,message:sr.NOT_SUPPORTED_HTTP})})},gA=function(i){return i.type==="candidate-pair"&&i.nominated&&(i.state==="in-progress"||i.state==="succeeded")?!(Ze(i.selected)&&!i.selected):!1};function pE(){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 fE(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function gE(){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 EE(){return"captureStream"in HTMLCanvasElement.prototype}function _E(){return xi||it||Ut&&Ut<63?!1:!!(vh()&&EE())}function TE(){return!(Ut<74||hs||Pt<11||zd<46)}function Du(){return _E()||TE()}var EA=function(){if(O(window.RTCRtpTransceiver)||!wu()||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let i=null,t=!1;try{i=new RTCPeerConnection({sdpSemantics:vm}),i.addTransceiver(M.AUDIO),t=!0}catch(e){}return i==null||i.close(),t};function _A(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function IE(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function TA(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function wu(){return Pt===11&&!eh?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var IA=!(!wu()||qr&&Ut<86);function SA(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var rc="RTCRtpSender"in window;function AA(){return rc&&"replaceTrack"in window.RTCRtpSender.prototype}function yA(){return rc&&"setParameters"in window.RTCRtpSender.prototype&&IE()}var bA="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,Nn=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,wh=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,Mh=typeof InputDeviceInfo!="undefined"&&"getCapabilities"in InputDeviceInfo.prototype,Ss=rc&&"createEncodedStreams"in window.RTCRtpSender.prototype&&du()>=86,SE="RTCRtpScriptTransform"in window,ic=rc&&(Ss||SE),Oh=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(t=>t in window).length>0};function Mu(){let i={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return O(window.AudioDecoder)||(i.AudioDecoder=!0),O(window.AudioEncoder)||(i.AudioEncoder=!0),O(window.VideoDecoder)||(i.VideoDecoder=!0),O(window.VideoEncoder)||(i.VideoEncoder=!0),O(window.ImageDecoder)||(i.ImageDecoder=!0),i}function AE(){return"mediaSession"in navigator&&!O(navigator.mediaSession.setActionHandler)}function yE(){return!O(window.WebTransport)}function Ph(){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 RA(){let i={browser:`${li.name}/${li.version}`,os:yn(),displayResolution:pE(),isScreenShareSupported:tc(),isWebRTCSupported:Oh(),isGetUserMediaSupported:fE(),isWebAudioSupported:gE(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Mu(),isMediaSessionSupported:AE(),isWebTransportSupported:yE()};return navigator.userAgent.includes("miniProgram")&&(i.browser=`mini/${i.browser}`),i}var bE="checkResult";function dE(i=30){Rn.setItem(bE+i,{ua:navigator.userAgent,checkResult:Ne})}function Lh(i){Gi();let t=Rn.getItem(bE+i);t&&t.ua===navigator.userAgent&&t.checkResult&&vA(t.checkResult.detail,Ne.detail)&&(Ne=t.checkResult),Nu(i)}function vA(i,t){return fr(i)?Object.keys(t).every(e=>e in i):!1}function Qr(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var CA="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;function uE(i){return{h264:1,h265:2,vp8:3,vp9:4,av1:5}[i]}var lE=!1;function xh(){return b(this,null,function*(){var i;try{if(lE||!((i=navigator==null?void 0:navigator.mediaCapabilities)!=null&&i.encodingInfo))return;let t=Es(),e=th();if(t===0||e===0)return;lE=!0;let r=["H264","VP8","VP9","AV1","H265"],[o,s]=yield Promise.all([RE(r),vE(r)]);o&&Object.keys(o).forEach(d=>{let l=uE(d.toLowerCase());J.addEnum({key:513707,value:+`${l}${+o[d].supported}${+o[d].powerEfficient}${t}${e}`,useUV:!1})}),s&&Object.keys(s).forEach(d=>{let l=uE(d.toLowerCase());J.addEnum({key:514713,value:+`${l}${+s[d].supported}${+s[d].powerEfficient}${t}${e}`,useUV:!1})});let{sender:n,receiver:a}=CE();J.addEnum({key:513708,value:+`${t}${e}${+n.high}`,useUV:!1}),J.addEnum({key:513709,value:+`${t}${e}${+n.main}`,useUV:!1}),J.addEnum({key:514714,value:+`${t}${e}${+a.high}`,useUV:!1}),J.addEnum({key:514715,value:+`${t}${e}${+a.main}`,useUV:!1})}catch(t){B.info("detectVideoCodecCapabilities failed",t)}})}function RE(i,t=1920,e=1080,r=30,o=3e3){return b(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 vE(i,t=1920,e=1080,r=30,o=3e3){return b(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})}function CE(){let i={sender:{base:!1,main:!1,high:!1},receiver:{base:!1,main:!1,high:!1}};try{if(RTCRtpSender&&typeof RTCRtpSender.getCapabilities=="function"){let t=RTCRtpSender.getCapabilities("video");t&&t.codecs&&t.codecs.filter(r=>r.mimeType.toLowerCase()==="video/h264").forEach(r=>{if(r.sdpFmtpLine){let o=r.sdpFmtpLine.match(/profile-level-id=([0-9a-fA-F]+)/);if(o&&o[1])switch(o[1].slice(0,2)){case"42":i.sender.base=!0;break;case"4d":i.sender.main=!0;break;case"64":i.sender.high=!0;break}}})}if(RTCRtpReceiver&&typeof RTCRtpReceiver.getCapabilities=="function"){let t=RTCRtpReceiver.getCapabilities("video");t&&t.codecs&&t.codecs.filter(r=>r.mimeType.toLowerCase()==="video/h264").forEach(r=>{if(r.sdpFmtpLine){let o=r.sdpFmtpLine.match(/profile-level-id=([0-9a-fA-F]+)/);if(o&&o[1])switch(o[1].slice(0,2)){case"42":i.receiver.base=!0;break;case"4d":i.receiver.main=!0;break;case"64":i.receiver.high=!0;break}}})}}catch(t){B.warn("get H264 profile levelId failed",t)}return i}var DE=ai(mi(),1);var NE=Symbol("instance"),qN=Symbol("abortCtrl"),Ou=Symbol("cacheResult"),oc=class{constructor(t,e,r){this.oldState=t,this.newState=e,this.action=r,this.aborted=!1}abort(t){this.aborted=!0,ac.call(t,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},sc=class extends Error{constructor(t,e,r){super(e),this.state=t,this.message=e,this.cause=r}};function NA(i){return typeof i=="object"&&i&&"then"in i}var nc=new Map;function ot(i,t,e={}){return(r,o,s)=>{let n=e.action||o;if(!e.context){let d=nc.get(r)||[];nc.has(r)||nc.set(r,d),d.push({from:i,to:t,action:n})}let a=s.value;s.value=function(...d){let l=this;if(e.context&&(l=he.get(typeof e.context=="function"?e.context.call(this,...d):e.context)),l.state===t)return e.sync?l[Ou]:Promise.resolve(l[Ou]);l.state instanceof oc&&l.state.action==e.abortAction&&l.state.abort(l);let p=null;Array.isArray(i)?i.length==0?l.state instanceof oc&&l.state.abort(l):(typeof l.state!="string"||!i.includes(l.state))&&(p=new sc(l._state,`${l.name} ${n} to ${t} failed: current state ${l._state} not from ${i.join("|")}`)):i!==l.state&&(p=new sc(l._state,`${l.name} ${n} to ${t} failed: current state ${l._state} not from ${i}`));let f=N=>{if(e.fail&&e.fail.call(this,N),e.sync){if(e.ignoreError)return N;throw N}else return e.ignoreError?Promise.resolve(N):Promise.reject(N)};if(p)return f(p);let _=l.state,I=new oc(_,t,n);ac.call(l,I);let R=N=>{var P;return l[Ou]=N,I.aborted||(ac.call(l,t),(P=e.success)===null||P===void 0||P.call(this,l[Ou])),N},y=N=>(ac.call(l,_,N),f(N));try{let N=a.apply(this,d);return NA(N)?N.then(R).catch(y):e.sync?R(N):Promise.resolve(R(N))}catch(N){return y(new sc(l._state,`${l.name} ${n} from ${i} to ${t} failed: ${N}`,N instanceof Error?N:new Error(String(N))))}}}}var DA=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 ac(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(he.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var he=class i extends DE.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[NE];o?this.name=o.name+"-"+o.count++:r[NE]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=nc.get(t)||[],r=new Set,o=[],s=[],n=new Set,a=Object.getPrototypeOf(t);nc.has(a)&&(a.stateDiagram.forEach(l=>r.add(l)),a.allStates.forEach(l=>n.add(l))),e.forEach(({from:l,to:p,action:f})=>{typeof l=="string"?o.push({from:l,to:p,action:f}):l.length?l.forEach(_=>{o.push({from:_,to:p,action:f})}):s.push({to:p,action:f})}),o.forEach(({from:l,to:p,action:f})=>{n.add(l),n.add(p),n.add(f+"ing"),r.add(`${l} --> ${f}ing : ${f}`),r.add(`${f}ing --> ${p} : ${f} \u{1F7E2}`),r.add(`${f}ing --> ${l} : ${f} \u{1F534}`)}),s.forEach(({to:l,action:p})=>{r.add(`${p}ing --> ${l} : ${p} \u{1F7E2}`),n.forEach(f=>{f!==l&&r.add(`${f} --> ${p}ing : ${p}`)})});let d=[...r];return Object.defineProperties(t,{stateDiagram:{value:d},allStates:{value:n}}),d}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={}){DA(i.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){ac.call(this,t)}};he.STATECHANGED="stateChanged";he.UPDATEAFSM="updateAFSM";he.INIT="[*]";he.ON="on";he.OFF="off";he.instances=new Map;he.instances2=new WeakMap;var Uh=typeof window!="undefined",wE=Uh&&window.requestIdleCallback||function(i){let t=Date.now();return setTimeout(()=>{i({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-t))}})},1e3)},wA=Uh&&window.cancelIdleCallback||function(i){clearTimeout(i)},ME=Uh&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),vt=class vt{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=Q({delay:2e3,count:0,backgroundTask:!0},r):t==="ric"?r=Q({delay:1e4,count:0},r):t==="raf"?r=Q({fps:60,delay:16.6,count:0,backgroundTask:!0},r):r=Q({delay:2e3,count:0,backgroundTask:!0},r);let o=Te(Q({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,vt.isBreakLoop(t)};return t.intervalID=setInterval(e,t.delay)}static intervalInWorker(t){vt.sharedWorker||(vt.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
|
|
11
|
+
`,u+=o)),r&&(u+=`
|
|
12
|
+
Refer to: ${bp("en",a)}
|
|
13
|
+
`),u}var Su=Ge(Lp(),1);var FE=1,BE=0,Nc=class{constructor(i=!0){d(this,"countMap",new Map);d(this,"distributionMap",new Map);d(this,"version");d(this,"log",C.createLogger({id:"kv"}));i&&(S.on("102",({track:e,cost:t})=>{this.addSuccessEvent({key:e.kind===_.AUDIO?501700:511700,cost:t})}),S.on("103",({track:e,error:t})=>{this.addFailedEvent({key:e.kind===_.AUDIO?501700:511700,error:t})}),S.on("266",({enable:e})=>{this.log.info(`${e?"enable":"disable"} sso`),e?this.addSuccessEvent({key:525701}):this.addFailedEvent({key:525701})}))}getReportData(i,e){let t={msg_sdk_basic_info:{uint32_sdk_version:Wa(this.version||We),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([r,o])=>({uint32_key:r,uint32_count:o})),stats_distribution:[...this.distributionMap.entries()].map(([r,o])=>({uint32_key:r,distribution_items:[...o.entries()].map(([n,a])=>({uint32_item_key:n,uint32_item_value:a}))})),str_user_sig:i,bytes_report_token:e};return this.countMap.clear(),this.distributionMap.clear(),t}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 o;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=((o=this.distributionMap)==null?void 0:o.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:o=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>o&&(e=o),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(te(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:FE,useUV:!1}),e)){let o=+String(i).slice(-3);o<800&&o>=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=I.UNKNOWN;e&&(te(e)?t=e:(!T(e.extraCode)||!T(e.code))&&(t=e.extraCode||e.code)),this.addEnum({key:i,value:BE,useUV:!1}),this.addEnum({key:i,value:Math.abs(t),useUV:!1})}},Dc=(P=>(P[P.enterRoom=500700]="enterRoom",P[P.exitRoom=500701]="exitRoom",P[P.switchRole=500702]="switchRole",P[P.destroy=500703]="destroy",P[P.startLocalAudio=500704]="startLocalAudio",P[P.updateLocalAudio=500705]="updateLocalAudio",P[P.stopLocalAudio=500706]="stopLocalAudio",P[P.startLocalVideo=500707]="startLocalVideo",P[P.updateLocalVideo=500708]="updateLocalVideo",P[P.stopLocalVideo=500709]="stopLocalVideo",P[P.startScreenShare=500710]="startScreenShare",P[P.updateScreenShare=500711]="updateScreenShare",P[P.stopScreenShare=500712]="stopScreenShare",P[P.startRemoteVideo=500713]="startRemoteVideo",P[P.updateRemoteVideo=500714]="updateRemoteVideo",P[P.stopRemoteVideo=500715]="stopRemoteVideo",P[P.muteRemoteAudio=500716]="muteRemoteAudio",P[P.setRemoteAudioVolume=500717]="setRemoteAudioVolume",P[P.use=500718]="use",P[P.switchRoom=500719]="switchRoom",P[P.getPermissions=500720]="getPermissions",P[P.sendSEIMessage=5e5]="sendSEIMessage",P[P.sendCustomMessage=500001]="sendCustomMessage",P))(Dc||{}),gu=(g=>(g[g.AudioMixer=550700]="AudioMixer",g[g.AIDenoiser=551700]="AIDenoiser",g[g.VirtualBackground=570700]="VirtualBackground",g[g.Beauty=571700]="Beauty",g[g.Watermark=572700]="Watermark",g[g.BasicBeauty=574700]="BasicBeauty",g[g.FaceDetector=575700]="FaceDetector",g[g.CDNStreaming=590700]="CDNStreaming",g[g.DeviceDetector=591700]="DeviceDetector",g[g.Debug=592700]="Debug",g[g.SmallStreamAutoSwitcher=593700]="SmallStreamAutoSwitcher",g[g.VideoMixer=594700]="VideoMixer",g[g.AudioProcessor=595700]="AudioProcessor",g[g.LEBPlayer=596700]="LEBPlayer",g[g.RealtimeTranscriber=597700]="RealtimeTranscriber",g))(gu||{}),Eu=(g=>(g[g.AudioMixer=550701]="AudioMixer",g[g.AIDenoiser=551701]="AIDenoiser",g[g.VirtualBackground=570701]="VirtualBackground",g[g.Beauty=571701]="Beauty",g[g.Watermark=572701]="Watermark",g[g.BasicBeauty=574701]="BasicBeauty",g[g.FaceDetector=575701]="FaceDetector",g[g.CDNStreaming=590701]="CDNStreaming",g[g.DeviceDetector=591701]="DeviceDetector",g[g.Debug=592701]="Debug",g[g.SmallStreamAutoSwitcher=593701]="SmallStreamAutoSwitcher",g[g.VideoMixer=594701]="VideoMixer",g[g.AudioProcessor=595701]="AudioProcessor",g[g.LEBPlayer=596701]="LEBPlayer",g[g.RealtimeTranscriber=597701]="RealtimeTranscriber",g))(Eu||{}),Tu=(g=>(g[g.AudioMixer=550702]="AudioMixer",g[g.AIDenoiser=551702]="AIDenoiser",g[g.VirtualBackground=570702]="VirtualBackground",g[g.Beauty=571702]="Beauty",g[g.Watermark=572702]="Watermark",g[g.BasicBeauty=574702]="BasicBeauty",g[g.FaceDetector=575702]="FaceDetector",g[g.CDNStreaming=590702]="CDNStreaming",g[g.DeviceDetector=591702]="DeviceDetector",g[g.Debug=592702]="Debug",g[g.SmallStreamAutoSwitcher=593702]="SmallStreamAutoSwitcher",g[g.VideoMixer=594702]="VideoMixer",g[g.AudioProcessor=595702]="AudioProcessor",g[g.LEBPlayer=596702]="LEBPlayer",g[g.RealtimeTranscriber=597702]="RealtimeTranscriber",g))(Tu||{});var mo=(V=>(V[V.DECODER_TYPE=514700]="DECODER_TYPE",V[V.DECODER_HW_SW=514701]="DECODER_HW_SW",V[V.DECODE_RESULT=514702]="DECODE_RESULT",V[V.DECODE_FAILED_OS=514703]="DECODE_FAILED_OS",V[V.DOWNGRADE_RESULT=514704]="DOWNGRADE_RESULT",V[V.DOWNGRADE_WEBCODECS_VIDEO=514705]="DOWNGRADE_WEBCODECS_VIDEO",V[V.DOWNGRADE_WEBCODECS_2D=514706]="DOWNGRADE_WEBCODECS_2D",V[V.DOWNGRADE_WASM_WEGBL=514707]="DOWNGRADE_WASM_WEGBL",V[V.DOWNGRADE_WASM_VIDEO=514708]="DOWNGRADE_WASM_VIDEO",V[V.DOWNGRADE_WASM_2D=514709]="DOWNGRADE_WASM_2D",V[V.DECODE_H264_RESULT=514710]="DECODE_H264_RESULT",V[V.DECODE_H265_RESULT=514711]="DECODE_H265_RESULT",V[V.DECODE_VP8_RESULT=514712]="DECODE_VP8_RESULT",V[V.DECODE_CAPABILITIES=514713]="DECODE_CAPABILITIES",V[V.H264_PROFILE_LEVEL_ID_HIGH=514714]="H264_PROFILE_LEVEL_ID_HIGH",V[V.H264_PROFILE_LEVEL_ID_MAIN=514715]="H264_PROFILE_LEVEL_ID_MAIN",V[V.RENDER_FREEZE_RATE=514850]="RENDER_FREEZE_RATE",V[V.DATA_FREEZE_RATE=514851]="DATA_FREEZE_RATE",V[V.VIDEO_CONSUME_RENDER_RATE=514852]="VIDEO_CONSUME_RENDER_RATE",V))(mo||{});var HE=new Nc(!0),us=new Nc(!1);var y=HE;var oe={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}},$E=new Map([[re,["Firefox",ic]],[to,["Edg",sc]],[ao,["Chrome",Ec]],[ye,["Safari",Yi]],[ci,["TBS",ac]],[zi,["XWEB",cc]],[Qi&&yr,["WeChat",dc]],[mn,["QQ(Win)",lc]],[ro,["QQ(Mobile)",Zs]],[io,["QQ(Mobile X5)",Zs]],[pn,["QQ(Mac)",uc]],[fn,["QQ(iPad)",hc]],[gn,["MI",mc]],[En,["HW",pc]],[Sn,["Samsung",fc]],[so,["OPPO",_c]],[In,["VIVO",gc]],[rs,["EDGE",rc]],[un,["SogouMobile",oc]],[hn,["Sogou",nc]]]);function GE(){let s=$E.get(!0),i=s?s[0]:"unknown",e=s?s[1]:"unknown";return{browserName:i,browserVersion:e}}var Au=function(){return!(Gl||rs||to&&Hl<80||re&&eo<56)},Mn=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder"].every(i=>i in window)},Pc=function(){if(!navigator.mediaDevices)return tr()||C.error(Xe.NOT_SUPPORTED_MEDIA),!1;let s=["getUserMedia","enumerateDevices"];return s.filter(i=>i in navigator.mediaDevices).length===s.length},wp=!1;function tr(){return location.protocol==="http:"&&!li?(wp||C.error(G({key:H.NOT_SUPPORTED_HTTP})),wp=!0,!0):!1}var On=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},WE=function(){return!!(window!=null&&window.MediaStreamTrackGenerator)},Ru=function(){return f(this,null,function*(){var r,o,n;if(oe.detail.isH264EncodeSupported&&oe.detail.isVp8EncodeSupported)return{isH264EncodeSupported:oe.detail.isH264EncodeSupported,isVp8EncodeSupported:oe.detail.isVp8EncodeSupported,isH265EncodeSupported:oe.detail.isH265EncodeSupported};let s,i=!1,e=!1,t=!1;try{let a=new RTCPeerConnection,c=document.createElement(_.CANVAS);c.getContext("2d");let l=c.captureStream(0);return a.addTrack(l.getVideoTracks()[0],l),s=yield a.createOffer(),i=((r=s.sdp)==null?void 0:r.toLowerCase().indexOf("h264"))!==-1,e=((o=s.sdp)==null?void 0:o.toLowerCase().indexOf("vp8"))!==-1,t=((n=s.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}}})},kc=function(){return f(this,null,function*(){var t;if(oe.detail.isH264DecodeSupported&&oe.detail.isVp8DecodeSupported)return{isH264DecodeSupported:oe.detail.isH264DecodeSupported,isVp8DecodeSupported:oe.detail.isVp8DecodeSupported,isH265DecodeSupported:oe.detail.isH265DecodeSupported};let s,i=!1,e=!1;try{let r=new RTCPeerConnection;It()?(r.addTransceiver(_.VIDEO,{direction:"recvonly"}),s=yield r.createOffer()):s=yield r.createOffer({offerToReceiveVideo:!0}),s.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),s.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0);let o=((t=s.sdp)==null?void 0:t.toLowerCase().indexOf("h265"))!==-1;return r.close(),{isH264DecodeSupported:i,isVp8DecodeSupported:e,isH265DecodeSupported:o}}catch(r){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1,isH265DecodeSupported:!1}}})};function JE(){return f(this,null,function*(){let[s,i]=yield Promise.all([Ru(),kc()]);return{encode:{h264:s.isH264EncodeSupported,vp8:s.isVp8EncodeSupported,h265:s.isH265EncodeSupported},decode:{h264:i.isH264DecodeSupported,vp8:i.isVp8DecodeSupported,h265:i.isH265DecodeSupported}}})}var Lc=Ja(s=>f(null,null,function*(){let i=Date.now(),e=Nu(),t=Pc(),r=Mn();if(oe.detail.isWebRTCSupported=e,oe.detail.isMediaDevicesSupported=t,oe.detail.isWebCodecsSupported=r,oe.detail.isScreenShareSupported=Pn(),oe.detail.isSmallStreamSupported=xc(),s===37)return Object.assign(oe.detail,yield zE()),oe.detail.isBrowserSupported=r,oe.result=t&&r,oe.result||C.error(`${navigator.userAgent} ${an(oe.detail,!1)}`),xp(s),y.addNumber({key:523800,value:Date.now()-i}),oe;if(oe.result&&oe.detail.isH264EncodeSupported&&oe.detail.isVp8EncodeSupported&&oe.detail.isH265EncodeSupported&&oe.detail.isH264DecodeSupported&&oe.detail.isVp8DecodeSupported&&oe.detail.isH265DecodeSupported)return oe;let o=Au(),{encode:n,decode:a}=yield JE(),{h264:c,vp8:l}=n,{h264:u}=a,{h265:m}=n,{vp8:p,h265:h}=a;if(!c||!l){let E=yield Ru();C.warn(`detect encode again h264:${c} vp8:${l} result: ${JSON.stringify(E)}`),c=E.isH264EncodeSupported,l=E.isVp8EncodeSupported}if(c&&u&&fe&&tt&&!zi&&!ci&&!(so&&et===115)){let{encode:E,decode:g}=yield XE();c=E,u=g}return oe.result=o&&e&&t&&(c||l)&&(u||p),oe.detail.isBrowserSupported=o,oe.detail.isWebRTCSupported=e,oe.detail.isH264EncodeSupported=c,oe.detail.isVp8EncodeSupported=l,oe.detail.isH265EncodeSupported=m,oe.detail.isH264DecodeSupported=u,oe.detail.isVp8DecodeSupported=p,oe.detail.isH265DecodeSupported=h,oe.result||C.error(`${navigator.userAgent} ${an(oe.detail,!1)}`),xp(),y.addNumber({key:523800,value:Date.now()-i}),oe})),jE=function(){return oe.result},Pn=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},qE=typeof HTMLMediaElement!="undefined"&&"setSinkId"in HTMLMediaElement.prototype,Mc=null;function XE(){return f(this,null,function*(){return Mc||(Mc=new Promise(s=>f(null,null,function*(){let i={encode:!1,decode:!1},e=()=>{};try{let t=document.createElement("canvas"),r=t.getContext("2d");t.width=640,t.height=480;let o=setInterval(()=>{r.fillText("test",Math.floor(Math.random()*640),Math.floor(Math.random()*480))},66),n=-1,a=-1;e=()=>{clearInterval(n),clearInterval(o),clearTimeout(a),l.close(),u.close(),c.getTracks().forEach(g=>g.stop())},a=setTimeout(()=>{e(),s(i)},2*1e3);let c=t.captureStream(),l=new RTCPeerConnection({}),u=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});l.addEventListener("icecandidate",g=>u.addIceCandidate(g.candidate)),u.addEventListener("icecandidate",g=>l.addIceCandidate(g.candidate)),l.addTrack(c.getVideoTracks()[0],c);let m=yield l.createOffer();yield l.setLocalDescription(m),yield u.setRemoteDescription(m);let p=yield u.createAnswer(),h=Su.default.parse(p.sdp),E=h.media[0].rtp.findIndex(g=>g.codec==="H264");h.media[0].rtp=[h.media[0].rtp[E]],h.media[0].fmtp=h.media[0].fmtp.filter(g=>g.payload===h.media[0].rtp[0].payload),h.media[0].rtcpFb&&(h.media[0].rtcpFb=h.media[0].rtcpFb.filter(g=>g.payload===h.media[0].rtp[0].payload)),p.sdp=Su.default.write(h),yield u.setLocalDescription(p),yield l.setRemoteDescription(p),n=setInterval(()=>f(null,null,function*(){i.encode&&i.decode&&(e(),s(i));let[g,R]=yield Promise.all([l.getSenders()[0].getStats(),u.getReceivers()[0].getStats()]);i.encode||g.forEach(N=>{N.type==="outbound-rtp"&&N.mediaType===_.VIDEO&&N.bytesSent>0&&(i.encode=!0)}),i.decode||R.forEach(N=>{N.type==="inbound-rtp"&&N.mediaType===_.VIDEO&&N.bytesReceived>0&&(i.decode=!0)})}),100)}catch(t){e(),C.warn("detectH264Supported failed",t),s({encode:!0,decode:!0})}})).then(s=>(s.encode||(s.decode=!0),(!s.encode||!s.decode)&&C.warn(`detectH264Supported encode: ${s.encode} decode: ${s.decode} ${ai}`),s)),Mc)})}var Oc=null;function zE(){return f(this,null,function*(){return Oc||(Oc=new Promise(s=>f(null,null,function*(){let i={isH264EncodeSupported:!1,isH264DecodeSupported:!1,isVp8EncodeSupported:!1,isVp8DecodeSupported:!1};if(!Mn()){s(i);return}let e=null,t=null,r=null,o=()=>{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(()=>{o(),s(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(null,null,function*(){let m={type:u.type,encodeSupported:!1,decodeSupported:!1},p;try{p=yield new Promise((h,E)=>f(null,null,function*(){try{let g=new VideoEncoder({output:N=>{h(N),m.encodeSupported=!0},error:E});g.configure(u.encodeConfig),a();let R=new VideoFrame(e,{timestamp:0});g.encode(R,{keyFrame:!0}),R.close(),yield g.flush(),g.close()}catch(g){E(g)}}))}catch(h){return C.warn(`${u.type} encoder error:`,h),m}try{yield new Promise((h,E)=>f(null,null,function*(){try{let g=new VideoDecoder({output:R=>{m.decodeSupported=!0,h(0),R.close()},error:E});g.configure(u.decodeConfig),g.decode(p),yield g.flush(),g.close()}catch(g){E(g)}}))}catch(h){C.warn(`${u.type} decoder error:`,h)}return m})))).forEach(u=>{u.type==="h264"?(i.isH264EncodeSupported=u.encodeSupported,i.isH264DecodeSupported=u.decodeSupported):u.type==="vp8"&&(i.isVp8EncodeSupported=u.encodeSupported,i.isVp8DecodeSupported=u.decodeSupported)}),o(),s(i)}catch(n){o(),C.warn("detectWebCodecsSupported failed:",n),s(i)}})),Oc)})}var QE=(s,i,e)=>{location.protocol==="http:"&&!li&&(s[i]=()=>{throw new D({code:I.INVALID_OPERATION,message:Xe.NOT_SUPPORTED_HTTP})})},Or=function(s){return s.type==="candidate-pair"&&s.nominated&&(s.state==="in-progress"||s.state==="succeeded")?!(pe(s.selected)&&!s.selected):!1};function Fp(){let s="";if(screen.width){let i=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";s+=`${i} * ${e}`}return s}function Bp(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Hp(){let s={isSupported:!1},i=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<i.length;e++)if(i[e]in window){s.isSupported=!0;break}return s.isSupported}function $p(){return"captureStream"in HTMLCanvasElement.prototype}function wc(){return Qi||Ee||et&&et<63?!1:!!(Au()&&$p())}function Gp(){return!(et<74||rs||qe<11||eo<46)}function xc(){return wc()||Gp()}var YE=function(){if(T(window.RTCRtpTransceiver)||!It()||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let s=null,i=!1;try{s=new RTCPeerConnection({sdpSemantics:Ar}),s.addTransceiver(_.AUDIO),i=!0}catch(e){}return s==null||s.close(),i};function hs(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function Pr(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function kr(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function It(){return qe===11&&!zl?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var po=!(!It()||tt&&et<86);function ZE(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var kn="RTCRtpSender"in window;function Cu(){return kn&&"replaceTrack"in window.RTCRtpSender.prototype}function Ln(){return kn&&"setParameters"in window.RTCRtpSender.prototype&&Pr()}var yu="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,Di=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,bu=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,vu=typeof InputDeviceInfo!="undefined"&&"getCapabilities"in InputDeviceInfo.prototype,fi=kn&&"createEncodedStreams"in window.RTCRtpSender.prototype&&no()>=86,fo="RTCRtpScriptTransform"in window,wn=kn&&(fi||fo),Nu=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(i=>i in window).length>0};function Uc(){let s={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return T(window.AudioDecoder)||(s.AudioDecoder=!0),T(window.AudioEncoder)||(s.AudioEncoder=!0),T(window.VideoDecoder)||(s.VideoDecoder=!0),T(window.VideoEncoder)||(s.VideoEncoder=!0),T(window.ImageDecoder)||(s.ImageDecoder=!0),s}function Wp(){return"mediaSession"in navigator&&!T(navigator.mediaSession.setActionHandler)}function Jp(){return!T(window.WebTransport)}function Du(){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 KE(){let s={browser:`${vi.name}/${vi.version}`,os:Sc(),displayResolution:Fp(),isScreenShareSupported:Pn(),isWebRTCSupported:Nu(),isGetUserMediaSupported:Bp(),isWebAudioSupported:Hp(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Uc(),isMediaSessionSupported:Wp(),isWebTransportSupported:Jp()};return navigator.userAgent.includes("miniProgram")&&(s.browser=`mini/${s.browser}`),s}var jp="checkResult";function xp(s=30){lo.setItem(jp+s,{ua:navigator.userAgent,checkResult:oe})}function Mu(s){tr();let i=lo.getItem(jp+s);i&&i.ua===navigator.userAgent&&i.checkResult&&eT(i.checkResult.detail,oe.detail)&&(oe=i.checkResult),Lc(s)}function eT(s,i){return vt(s)?Object.keys(i).every(e=>e in s):!1}function ir(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var _o="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;function Up(s){return{h264:1,h265:2,vp8:3,vp9:4,av1:5}[s]}var Vp=!1;function Ou(){return f(this,null,function*(){var s;try{if(Vp||!((s=navigator==null?void 0:navigator.mediaCapabilities)!=null&&s.encodingInfo))return;let i=as(),e=Yl();if(i===0||e===0)return;Vp=!0;let t=["H264","VP8","VP9","AV1","H265"],[r,o]=yield Promise.all([qp(t),Xp(t)]);r&&Object.keys(r).forEach(c=>{let l=Up(c.toLowerCase());y.addEnum({key:513707,value:+`${l}${+r[c].supported}${+r[c].powerEfficient}${i}${e}`,useUV:!1})}),o&&Object.keys(o).forEach(c=>{let l=Up(c.toLowerCase());y.addEnum({key:514713,value:+`${l}${+o[c].supported}${+o[c].powerEfficient}${i}${e}`,useUV:!1})});let{sender:n,receiver:a}=zp();y.addEnum({key:513708,value:+`${i}${e}${+n.high}`,useUV:!1}),y.addEnum({key:513709,value:+`${i}${e}${+n.main}`,useUV:!1}),y.addEnum({key:514714,value:+`${i}${e}${+a.high}`,useUV:!1}),y.addEnum({key:514715,value:+`${i}${e}${+a.main}`,useUV:!1})}catch(i){C.info("detectVideoCodecCapabilities failed",i)}})}function qp(s,i=1920,e=1080,t=30,r=3e3){return f(this,null,function*(){let o={};try{for(let n of s){let a=yield navigator.mediaCapabilities.encodingInfo({type:"webrtc",video:{contentType:`video/${n}`,width:i,height:e,bitrate:r,framerate:t}});o[n]=a}}catch(n){}return o})}function Xp(s,i=1920,e=1080,t=30,r=3e3){return f(this,null,function*(){let o={};try{for(let n of s){let a=yield navigator.mediaCapabilities.decodingInfo({type:"webrtc",video:{contentType:`video/${n}`,width:i,height:e,bitrate:r,framerate:t}});o[n]=a}}catch(n){}return o})}function zp(){let s={sender:{base:!1,main:!1,high:!1},receiver:{base:!1,main:!1,high:!1}};try{if(RTCRtpSender&&typeof RTCRtpSender.getCapabilities=="function"){let i=RTCRtpSender.getCapabilities("video");i&&i.codecs&&i.codecs.filter(t=>t.mimeType.toLowerCase()==="video/h264").forEach(t=>{if(t.sdpFmtpLine){let r=t.sdpFmtpLine.match(/profile-level-id=([0-9a-fA-F]+)/);if(r&&r[1])switch(r[1].slice(0,2)){case"42":s.sender.base=!0;break;case"4d":s.sender.main=!0;break;case"64":s.sender.high=!0;break}}})}if(RTCRtpReceiver&&typeof RTCRtpReceiver.getCapabilities=="function"){let i=RTCRtpReceiver.getCapabilities("video");i&&i.codecs&&i.codecs.filter(t=>t.mimeType.toLowerCase()==="video/h264").forEach(t=>{if(t.sdpFmtpLine){let r=t.sdpFmtpLine.match(/profile-level-id=([0-9a-fA-F]+)/);if(r&&r[1])switch(r[1].slice(0,2)){case"42":s.receiver.base=!0;break;case"4d":s.receiver.main=!0;break;case"64":s.receiver.high=!0;break}}})}}catch(i){C.warn("get H264 profile levelId failed",i)}return s}var Yp=Ge(Ze(),1);var Qp=Symbol("instance"),qR=Symbol("abortCtrl"),Vc=Symbol("cacheResult"),xn=class{constructor(i,e,t){this.oldState=i,this.newState=e,this.action=t,this.aborted=!1}abort(i){this.aborted=!0,Fn.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},Un=class extends Error{constructor(i,e,t){super(e),this.state=i,this.message=e,this.cause=t}};function tT(s){return typeof s=="object"&&s&&"then"in s}var Vn=new Map;function ve(s,i,e={}){return(t,r,o)=>{let n=e.action||r;if(!e.context){let c=Vn.get(t)||[];Vn.has(t)||Vn.set(t,c),c.push({from:s,to:i,action:n})}let a=o.value;o.value=function(...c){let l=this;if(e.context&&(l=Y.get(typeof e.context=="function"?e.context.call(this,...c):e.context)),l.state===i)return e.sync?l[Vc]:Promise.resolve(l[Vc]);l.state instanceof xn&&l.state.action==e.abortAction&&l.state.abort(l);let u=null;Array.isArray(s)?s.length==0?l.state instanceof xn&&l.state.abort(l):(typeof l.state!="string"||!s.includes(l.state))&&(u=new Un(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${s.join("|")}`)):s!==l.state&&(u=new Un(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${s}`));let m=R=>{if(e.fail&&e.fail.call(this,R),e.sync){if(e.ignoreError)return R;throw R}else return e.ignoreError?Promise.resolve(R):Promise.reject(R)};if(u)return m(u);let p=l.state,h=new xn(p,i,n);Fn.call(l,h);let E=R=>{var N;return l[Vc]=R,h.aborted||(Fn.call(l,i),(N=e.success)===null||N===void 0||N.call(this,l[Vc])),R},g=R=>(Fn.call(l,p,R),m(R));try{let R=a.apply(this,c);return tT(R)?R.then(E).catch(g):e.sync?E(R):Promise.resolve(E(R))}catch(R){return g(new Un(l._state,`${l.name} ${n} from ${s} to ${i} failed: ${R}`,R instanceof Error?R:new Error(String(R))))}}}}var iT=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 Fn(s,i){let e=this._state;this._state=s;let t=s.toString();s&&this.emit(t,e),this.emit(Y.STATECHANGED,s,e,i),this.updateDevTools({value:s,old:e,err:i instanceof Error?i.message:String(i)})}var Y=class s extends Yp.default{constructor(i,e,t){super(),this.name=i,this.groupName=e,this._state=s.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[Qp];r?this.name=r.name+"-"+r.count++:t[Qp]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let i=Object.getPrototypeOf(this),e=Vn.get(i)||[],t=new Set,r=[],o=[],n=new Set,a=Object.getPrototypeOf(i);Vn.has(a)&&(a.stateDiagram.forEach(l=>t.add(l)),a.allStates.forEach(l=>n.add(l))),e.forEach(({from:l,to:u,action:m})=>{typeof l=="string"?r.push({from:l,to:u,action:m}):l.length?l.forEach(p=>{r.push({from:p,to:u,action:m})}):o.push({to:u,action:m})}),r.forEach(({from:l,to:u,action:m})=>{n.add(l),n.add(u),n.add(m+"ing"),t.add(`${l} --> ${m}ing : ${m}`),t.add(`${m}ing --> ${u} : ${m} \u{1F7E2}`),t.add(`${m}ing --> ${l} : ${m} \u{1F534}`)}),o.forEach(({to:l,action:u})=>{t.add(`${u}ing --> ${l} : ${u} \u{1F7E2}`),n.forEach(m=>{m!==l&&t.add(`${m} --> ${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=s.instances.get(i),e||s.instances.set(i,e=new s(i,void 0,Object.create(s.prototype)))):(e=s.instances2.get(i),e||s.instances2.set(i,e=new s(i.constructor.name,void 0,Object.create(s.prototype)))),e}static getState(i){var e;return(e=s.get(i))===null||e===void 0?void 0:e.state}updateDevTools(i={}){iT(s.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){Fn.call(this,i)}};Y.STATECHANGED="stateChanged";Y.UPDATEAFSM="updateAFSM";Y.INIT="[*]";Y.ON="on";Y.OFF="off";Y.instances=new Map;Y.instances2=new WeakMap;var ku=typeof window!="undefined",Zp=ku&&window.requestIdleCallback||function(s){let i=Date.now();return setTimeout(()=>{s({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-i))}})},1e3)},rT=ku&&window.cancelIdleCallback||function(s){clearTimeout(s)},Kp=ku&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),He=class He{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=M({delay:2e3,count:0,backgroundTask:!0},t):i==="ric"?t=M({delay:1e4,count:0},t):i==="raf"?t=M({fps:60,delay:16.6,count:0,backgroundTask:!0},t):t=M({delay:2e3,count:0,backgroundTask:!0},t);let r=w(M({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,He.isBreakLoop(i)};return i.intervalID=setInterval(e,i.delay)}static intervalInWorker(i){He.sharedWorker||(He.sharedWorker=new Worker(URL.createObjectURL(new Blob([`
|
|
12
14
|
const timers = new Map();
|
|
13
15
|
self.onmessage = function(e) {
|
|
14
16
|
const { taskId, delay, type } = e.data;
|
|
@@ -21,15 +23,15 @@ Refer to: ${Kg("en",a)}
|
|
|
21
23
|
timers.delete(taskId);
|
|
22
24
|
}
|
|
23
25
|
};
|
|
24
|
-
`],{type:"application/javascript"}))),
|
|
25
|
-
${r.stack}`));let s=Io.enable?Oi(o,2002,Number(this._configs.sdkAppId)):JSON.stringify(o);this.sendRequest(Mi(this._configs.sdkAppId,mo.LOG),s)}sendRequest(t,e){setTimeout(()=>Pi({url:t,body:e,priority:"low"}).catch(()=>{}),2e3)}},Ue=new Vh;var As=new WeakMap;function ys({settings:i={retries:5,timeout:2e3},onError:t,onRetrying:e,onRetryFailed:r}){return function(o,s,n){let a=fo({retryFunction:n.value,settings:i,onError({error:d,retry:l,reject:p,retryFuncArgs:f}){var _;t?t.call(this,d,()=>{var I;(I=As.get(o))!=null&&I.has(s)?l():p(d)},p,f):(_=As.get(o))!=null&&_.has(s)?l():p(d)},onRetrying(d,l){var p;po(e)&&e.call(this,d,l),(p=As.get(o))!=null&&p.has(s)&&(As.get(o).get(s).stopRetry=l)},onRetryFailed:r});return n.value=function(...d){let l=As.get(o);return l?l.set(s,{args:d}):As.set(o,new Map([[s,{args:d}]])),a.apply(this,d).finally(()=>{var p;return(p=As.get(o))==null?void 0:p.delete(s)})},n}}var Yr=class extends he{constructor(e,r){super(e.id,`${r}-player`);this.options=e;this.kind=r;m(this,"id");m(this,"element",null);m(this,"track");m(this,"url");m(this,"attr");m(this,"mode");m(this,"muted");m(this,"_log");m(this,"isPausedByUserCall",!1);m(this,"_pausedRetryCount");m(this,"_isElementPlayingFired",!1);m(this,"_interval");m(this,"_delayDestroyTimeoutId",0);m(this,"_playSuccessResolve");m(this,"_isReplayByRecreateMediaStreamCalled",!1);m(this,"isPlayCalled",!1);m(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=wi,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 b(this,null,function*(){if(!this.isPlaying)try{this.isPlayCalled=!0,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=je({key:Ge.PLAY_FAILED,data:{media:this.kind,error:e}});if(this._log.warn(e),r.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new ce({code:z.PLAY_NOT_ALLOWED,message:r})}})}stop(e=0){var r;this.isPlayCalled=!1,this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!vr?this._delayDestroyTimeoutId||((r=this.element)==null||r.remove(),this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(M.ENDED),this._interval>0&&mt.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.src="",this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){this._log.info("pause"),this.isPausedByUserCall=!0,this.doPause()}doPause(){var e;(e=this.element)==null||e.pause()}resume(e=!1){return this.isPausedByUserCall=!1,this.doResume(e)}doResume(e=!1){return this._log.info("resume"),this.isPausedByUserCall||this.isPlaying?Promise.resolve():Zm?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 Vt(this.element,this.element).add(M.PLAYING,e).add(M.ENDED,e).add(M.PAUSE,e).add(M.ERROR,e).add(M.LOADSTART,e).add(M.LOADEDDATA,e).add(M.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let r=this.handleTrackEvent.bind(this);pi==null||pi.create(e,e).add(M.ENDED,r).add(M.MUTE,r).add(M.UNMUTE,r),e.readyState===M.ENDED&&this.handleTrackEvent({type:M.ENDED}),e.muted&&this.handleTrackEvent({type:M.MUTE})}}bindAutoPlayEvent(){x.listeners(V.AUTOPLAY_DIALOG_CLICK_CONFIRM).includes(this.resume)||x.on(V.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&yt(e)}unbindEvents(){this.element&&yt(this.element),this.unbindTrackEvents(),x.off(V.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case M.PLAYING:vo()||(this.isInAutoPlayFailedState=!1),this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(M.PLAYING),this._interval&&(mt.clearTask(this._interval),this._interval=-1);break;case M.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(M.ENDED);break;case M.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(M.PAUSE);break;case M.ERROR:if(this.element&&this.element.error){this.handlePaused(M.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}`),Ue.uploadEvent({log:`stat-${this.kind}-${Ot.PLAYER_ERROR}-${o}-${navigator.userAgent}`,error:this.element.error}),Jm||$a?this.emit(ue.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case M.LOADEDDATA:this.kind===M.VIDEO&&this.emit(ue.LOADED_DATA);break;case M.LOADEDMETADATA:this.kind===M.VIDEO&&this.emit(ue.LOADED_META_DATA);break;case M.LOADSTART:this.emit(ue.LOAD_START);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),Ue.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),J.addSuccessEvent({key:this.kind===M.AUDIO?506700:516700})}).catch(()=>{var r;this._log.error("replayByRecreateMediaStream failed"),Ue.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),J.addFailedEvent({key:this.kind===M.AUDIO?506700:516700,error:(r=this.element)==null?void 0:r.error}),this.emit(ue.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((r,o)=>{Hr(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)}),Hr(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 b(this,null,function*(){let r=e.type;switch(this.options.enableLogTrackState&&this._log[r===M.UNMUTE?"info":"warn"](`track ${r}`),r){case M.ENDED:this.handleStopped(M.ENDED);break;case M.MUTE:this.handlePaused(M.MUTE);break;case M.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&!this.isPausedByUserCall&&(this._log.warn("track unmuted and element is paused, resume"),yield this.doResume()),this.element&&!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(M.UNMUTE));break}})}handlePlaying(e){var r;return this._log.debug("handlePlaying",e),(r=this._playSuccessResolve)==null||r.call(this,e),e}handlePaused(e){return this._log.debug("handlePaused",e),e}handleStopped(e){return this._log.debug("handleStopped",e),e}getElement(){return this.element}};m(Yr,"PlayerEvent",ue),Z([ys({settings:{retries:2,timeout:0},onError(e,r,o,s){s[0]=(s[0]||1e3)+1e3,r()}})],Yr.prototype,"doReplayByRecreateMediaStream",1),Z([ot([],"PLAYING",{sync:!0,success(e){this.emit(ue.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}})],Yr.prototype,"handlePlaying",1),Z([ot("PLAYING","PAUSED",{ignoreError:!0,sync:!0,success(e){this.emit(ue.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}})],Yr.prototype,"handlePaused",1),Z([ot([],"STOPPED",{sync:!0,success(e){this.emit(ue.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}})],Yr.prototype,"handleStopped",1);var ji="trtc_autoplay",Fh=`${ji}_mask`,dc=`${ji}_wrapper`,OE=`${ji}_header`,Bh=`${ji}_content`,Pu=`${ji}_action_wrapper`,$h=`${ji}_question`,Hh=`${ji}_collapse`,Lu=`${ji}_action_confirm`,PE=`${ji}_detail`,LE="#2473E8",jh="dialog",OA=`${jh}-show`,PA=`${jh}-1`,LA=`${jh}-2`,xE=!1,Wh=!1,vo=()=>Wh,UE=`${ir}/${Br()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,kE=`<br><a href='${UE}' target='_blank'>${Br()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,xA=`${Br()?`\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${kE}`:`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. ${kE}`}`,Gh=class{constructor(){m(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");m(this,"_dialogNode",null);m(this,"_bodyPosition","");m(this,"_showDetail",!1);m(this,"_isCollapseClicked",!1);m(this,"_isQuestionClicked",!1);if(Br()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!xE){let t=document.createElement("style");t.innerHTML=`.${Fh}{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;}.${Fh} div:not(.${Pu}){display:block !important;}.${dc}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${dc} a{color:${LE};}.${OE}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Bh}{margin:8px 0;}.${Pu}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Hh}{margin-right:auto;cursor:pointer}.${$h}{height:100%;line-height:16px;cursor:pointer;}.${Lu}{margin-left:8px;color:#fff;background:${LE};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${Lu}:hover{opacity:0.9;}.${Hh},.${Lu},.${Bh},.${$h}{font-size:14px;}@media screen and (max-width:750px){.${dc}{width:80vw;}}`,document.head.appendChild(t),xE=!0}this.addDiaLog()}createDiaLog(){let t=document.createElement("template");t.innerHTML=`<div class="${Fh}"><div class='${dc}'><div class='${OE}'>${location.host}</div><div class='${Bh}'>${this.content}</div><div class='${PE}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${xA}</div><div class='${Pu}'></div></div></div>`.trim();let e=document.createElement("button");e.className=Lu,e.innerText=Br()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let r=document.createElement("div");r.className=$h,r.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
|
|
26
|
+
`],{type:"application/javascript"}))),He.sharedWorker.onmessage=e=>{var t;if(e.data.type==="tick"){let r=He.workerTasks.get(e.data.taskId);r&&(He.isBreakLoop(r)?((t=He.sharedWorker)==null||t.postMessage({type:"stop",taskId:r.taskID}),He.workerTasks.delete(r.taskID)):(r.callback(),r.loopCount+=1))}}),He.workerTasks.set(i.taskID,i),He.sharedWorker.postMessage({taskId:i.taskID,delay:i.delay,type:"start"})}static timeout(i){let e=()=>{if(i.callback(),i.loopCount+=1,!He.isBreakLoop(i))return i.timeoutID=setTimeout(e,i.delay)};return i.timeoutID=setTimeout(e,i.delay)}static ric(i){let e=x(),t,r=()=>{if(t=x()-e,t>=i.delay&&(e=x()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!He.isBreakLoop(i))return i.ricID=Zp(r,{timeout:i.delay})};return i.ricID=Zp(r,{timeout:i.delay})}static raf(i){let e=x(),t,r=()=>{if(document.hidden&&i.backgroundTask)return t=x()-e,e=x(),i.callback(),i.loopCount+=1,He.isBreakLoop(i)?void 0:i.timeoutID=setTimeout(r,i.delay-Math.floor(t%i.delay));if(t=x()-e,t>=i.delay&&(e=x()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!He.isBreakLoop(i))return i.rafID=requestAnimationFrame(r)};if(i.rafID=requestAnimationFrame(r),i.backgroundTask){let o=()=>{if(document.hidden){let n=x()-e;n>=i.delay?r():i.timeoutID=setTimeout(r,i.delay-n)}};document.addEventListener("visibilitychange",o),i.onVisibilitychange=o,document.hidden&&o()}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:o,onVisibilitychange:n}=this.taskMap.get(i);return e&&clearInterval(e),t&&clearTimeout(t),r&&Kp&&Kp(r),o&&rT(o),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(He,"taskMap",new Map),d(He,"currentTaskID",1),d(He,"sharedWorker",null),d(He,"workerTasks",new Map);var Pu=He,ce=Pu;var rC={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:_.SEI_MESSAGE,ERROR:"error"};var W={LOAD_START:_.LOADSTART,LOADED_DATA:_.LOADEDDATA,LOADED_META_DATA:_.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",RESIZE:_.RESIZE,TIME_UPDATE:"time-update",LEAVE_PICTURE_IN_PICTURE:_.LEAVE_PICTURE_IN_PICTURE,ENTER_PICTURE_IN_PICTURE:_.ENTER_PICTURE_IN_PICTURE,USER_RESUME_IN_PIP_OR_FULL_SCREEN:"user-resume-in-pip-or-full-screen",USER_PAUSE_IN_PIP_OR_FULL_SCREEN:"user-pause-in-pip-or-full-screen",ENTER_FULL_SCREEN:"enter-full-screen",LEAVE_FULL_SCREEN:"leave-full-screen",VOLUME_CHANGE:"volume-change"};var Oi={};Bi(Oi,{create:()=>it,remove:()=>Fe});var Bn=new WeakMap;function it(s,i){Bn.has(s)||Bn.set(s,[]);let e=Bn.get(s),r={add:(o,n)=>("addEventListener"in i?(e.push(i.removeEventListener.bind(i,o,n)),i.addEventListener(o,n)):(e.push(i.off.bind(i,o,n)),i.on(o,n)),r)};return r}function Fe(s){let i=Bn.get(s);i&&(i.forEach(e=>e()),Bn.delete(s))}var Lu=class{constructor(){d(this,"_roomIdMap",new Map);d(this,"_configs");typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:We,env:$i.QCLOUD,browserVersion:vi.name+vi.version,ua:navigator.userAgent})}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){li||!C.isAbleToUpload||this._configs.env===$i.QCLOUD&&this.uploadEventToKibana(w(M({},i),{result:"success"}))}logFailedEvent(i){if(li||!C.isAbleToUpload)return;let{eventType:e,code:t,error:r,userId:o}=i,n={roomId:this._roomIdMap.get(o||this._configs.userId),userId:o,eventType:e,result:"failed",code:t||(r==null?void 0:r.extraCode)||(r==null?void 0:r.code)||I.UNKNOWN};this._configs.env===$i.QCLOUD&&this.uploadEventToKibana(w(M({},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:ba(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:We,log:i};t&&(r.errorInfo=t.message,t.stack&&(r.errorInfo+=`
|
|
27
|
+
${t.stack}`));let o=Nr.enable?qi(r,2002,Number(this._configs.sdkAppId)):JSON.stringify(r);this.sendRequest(ji(this._configs.sdkAppId,Er.LOG),o)}sendRequest(i,e){setTimeout(()=>Xi({url:i,body:e,priority:"low"}).catch(()=>{}),2e3)}},se=new Lu;var Pi=new WeakMap;function kt({settings:s={retries:5,timeout:2e3},onError:i,onRetrying:e,onRetryFailed:t}){return function(r,o,n){let a=bi({retryFunction:n.value,settings:s,onError({error:c,retry:l,reject:u,retryFuncArgs:m}){var p;i?i.call(this,c,()=>{var h;(h=Pi.get(r))!=null&&h.has(o)?l():u(c)},u,m):(p=Pi.get(r))!=null&&p.has(o)?l():u(c)},onRetrying(c,l){var u;yi(e)&&e.call(this,c,l),(u=Pi.get(r))!=null&&u.has(o)&&(Pi.get(r).get(o).stopRetry=l)},onRetryFailed:t});return n.value=function(...c){let l=Pi.get(r);return l?l.set(o,{args:c}):Pi.set(r,new Map([[o,{args:c}]])),a.apply(this,c).finally(()=>{var u;return(u=Pi.get(r))==null?void 0:u.delete(o)})},n}}function Hn({fnName:s,callback:i,validateArgs:e=!0}){return function(t,r,o){let n=o.value;return o.value=function(...a){var c,l;if((c=Pi.get(t))!=null&&c.has(s)){let{stopRetry:u,args:m}=Pi.get(t).get(s),p=!0;if(e){for(let h of m)if(!a.find(E=>E===h)){p=!1;break}}p&&(i&&i.apply(this,a),u&&u(),(l=Pi.get(t))==null||l.delete(s))}return n.apply(this,a)},o}}var _i=class extends Y{constructor(e,t){super(e.id,`${t}-player`);this.options=e;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,"isPausedByUserCall",!1);d(this,"_pausedRetryCount");d(this,"_isElementPlayingFired",!1);d(this,"_interval");d(this,"_delayDestroyTimeoutId",0);d(this,"_playSuccessResolve");d(this,"_isReplayByRecreateMediaStreamCalled",!1);d(this,"isPlayCalled",!1);d(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=Ji,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.isPlayCalled=!0,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=G({key:H.PLAY_FAILED,data:{media:this.kind,error:e}});if(this._log.warn(e),t.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new D({code:I.PLAY_NOT_ALLOWED,message:t})}})}stop(e=0){var t;this.isPlayCalled=!1,this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!Wt?this._delayDestroyTimeoutId||((t=this.element)==null||t.remove(),this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(_.ENDED),this._interval>0&&ce.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.src="",this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){this._log.info("pause"),this.isPausedByUserCall=!0,this.doPause()}doPause(){var e;(e=this.element)==null||e.pause()}resume(e=!1){return this.isPausedByUserCall=!1,this.doResume(e)}doResume(e=!1){return this._log.info("resume"),this.isPausedByUserCall||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 it(this.element,this.element).add(_.PLAYING,e).add(_.ENDED,e).add(_.PAUSE,e).add(_.ERROR,e).add(_.LOADSTART,e).add(_.LOADEDDATA,e).add(_.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let t=this.handleTrackEvent.bind(this);Oi==null||Oi.create(e,e).add(_.ENDED,t).add(_.MUTE,t).add(_.UNMUTE,t),e.readyState===_.ENDED&&this.handleTrackEvent({type:_.ENDED}),e.muted&&this.handleTrackEvent({type:_.MUTE})}}bindAutoPlayEvent(){S.listeners(A.AUTOPLAY_DIALOG_CLICK_CONFIRM).includes(this.resume)||S.on(A.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&Fe(e)}unbindEvents(){this.element&&Fe(this.element),this.unbindTrackEvents(),S.off(A.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case _.PLAYING:Lr()||(this.isInAutoPlayFailedState=!1),this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(_.PLAYING),this._interval&&(ce.clearTask(this._interval),this._interval=-1);break;case _.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(_.ENDED);break;case _.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(_.PAUSE);break;case _.ERROR:if(this.element&&this.element.error){this.handlePaused(_.ERROR);let{code:r,message:o}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${r} message: ${o} userAgent: ${navigator.userAgent}`),se.uploadEvent({log:`stat-${this.kind}-${Oe.PLAYER_ERROR}-${r}-${navigator.userAgent}`,error:this.element.error}),Wl||Tn?this.emit(W.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case _.LOADEDDATA:this.kind===_.VIDEO&&this.emit(W.LOADED_DATA);break;case _.LOADEDMETADATA:this.kind===_.VIDEO&&this.emit(W.LOADED_META_DATA);break;case _.LOADSTART:this.emit(W.LOAD_START);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"}),y.addSuccessEvent({key:this.kind===_.AUDIO?506700:516700})}).catch(()=>{var t;this._log.error("replayByRecreateMediaStream failed"),se.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),y.addFailedEvent({key:this.kind===_.AUDIO?506700:516700,error:(t=this.element)==null?void 0:t.error}),this.emit(W.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((t,r)=>{Ke(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var o,n,a;this._log.warn(`element onerror ${(n=(o=this.element)==null?void 0:o.error)==null?void 0:n.code} fired after recreated mediaStream`),r((a=this.element)==null?void 0:a.error)}),Ke(5e3).then(()=>{var o,n;(!this.isPlaying||(o=this.element)!=null&&o.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*(){let t=e.type;switch(this.options.enableLogTrackState&&this._log[t===_.UNMUTE?"info":"warn"](`track ${t}`),t){case _.ENDED:this.handleStopped(_.ENDED);break;case _.MUTE:this.handlePaused(_.MUTE);break;case _.UNMUTE:this.mode>0?this.handlePlaying(this.mode.toString()):this.element&&(this.element.paused&&!this.isPausedByUserCall&&(this._log.warn("track unmuted and element is paused, resume"),yield this.doResume()),this.element&&!this.element.paused&&this._isElementPlayingFired&&this.handlePlaying(_.UNMUTE));break}})}handlePlaying(e){var t;return this._log.debug("handlePlaying",e),(t=this._playSuccessResolve)==null||t.call(this,e),e}handlePaused(e){return this._log.debug("handlePaused",e),e}handleStopped(e){return this._log.debug("handleStopped",e),e}getElement(){return this.element}};d(_i,"PlayerEvent",W),O([kt({settings:{retries:2,timeout:0},onError(e,t,r,o){o[0]=(o[0]||1e3)+1e3,t()}})],_i.prototype,"doReplayByRecreateMediaStream",1),O([ve([],"PLAYING",{sync:!0,success(e){this.emit(W.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}})],_i.prototype,"handlePlaying",1),O([ve("PLAYING","PAUSED",{ignoreError:!0,sync:!0,success(e){this.emit(W.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}})],_i.prototype,"handlePaused",1),O([ve([],"STOPPED",{sync:!0,success(e){this.emit(W.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}})],_i.prototype,"handleStopped",1);var rr="trtc_autoplay",wu=`${rr}_mask`,$n=`${rr}_wrapper`,ef=`${rr}_header`,xu=`${rr}_content`,Fc=`${rr}_action_wrapper`,Uu=`${rr}_question`,Vu=`${rr}_collapse`,Bc=`${rr}_action_confirm`,tf=`${rr}_detail`,rf="#2473E8",Hu="dialog",oT=`${Hu}-show`,nT=`${Hu}-1`,aT=`${Hu}-2`,sf=!1,Fu=!1,Lr=()=>Fu,nf=`${gt}/${ri()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,of=`<br><a href='${nf}' target='_blank'>${ri()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,cT=`${ri()?`\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${of}`:`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. ${of}`}`,Bu=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(ri()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!sf){let i=document.createElement("style");i.innerHTML=`.${wu}{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;}.${wu} div:not(.${Fc}){display:block !important;}.${$n}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${$n} a{color:${rf};}.${ef}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${xu}{margin:8px 0;}.${Fc}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Vu}{margin-right:auto;cursor:pointer}.${Uu}{height:100%;line-height:16px;cursor:pointer;}.${Bc}{margin-left:8px;color:#fff;background:${rf};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${Bc}:hover{opacity:0.9;}.${Vu},.${Bc},.${xu},.${Uu}{font-size:14px;}@media screen and (max-width:750px){.${$n}{width:80vw;}}`,document.head.appendChild(i),sf=!0}this.addDiaLog()}createDiaLog(){let i=document.createElement("template");i.innerHTML=`<div class="${wu}"><div class='${$n}'><div class='${ef}'>${location.host}</div><div class='${xu}'>${this.content}</div><div class='${tf}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${cT}</div><div class='${Fc}'></div></div></div>`.trim();let e=document.createElement("button");e.className=Bc,e.innerText=ri()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let t=document.createElement("div");t.className=Uu,t.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
|
|
26
28
|
<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">
|
|
27
29
|
<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"/>
|
|
28
30
|
<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"/>
|
|
29
31
|
<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"/>
|
|
30
32
|
</svg>
|
|
31
|
-
`,r.onclick=this.onQuestionClick.bind(this);let o=document.createElement("div");o.className=Hh,o.innerText=`${Br()?"\u8BE6\u60C5 >":"Detail >"}`,o.onclick=this.onCollapseClick.bind(this);let s=t.content.firstChild,n=s.querySelector(`.${Pu}`);return n.appendChild(o),n.appendChild(r),n.appendChild(e),s}addDiaLog(){vo()||(Wh=!0,this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${dc}`).onclick=t=>t.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",B.info("show autoplay dialog"),Ue.uploadEvent({log:OA}))}deleteDialog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null,Wh=!1),uc=null}onConfirm(){B.warn("confirm clicked, try resume stream"),x.emit(V.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDialog()}onCollapseClick(){let t=this._dialogNode.querySelector(`.${PE}`);t.style.visibility=`${this._showDetail?"hidden":"visible"}`,t.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||Ue.uploadEvent({log:PA}),this._isCollapseClicked=!0}onQuestionClick(){window.open(UE,"_blank"),this._isQuestionClicked||Ue.uploadEvent({log:LA}),this._isQuestionClicked=!0}},uc=null;function Dn(){uc||(uc=new Gh)}function VE(){uc&&uc.deleteDialog()}var Ft=class i extends Yr{constructor(e){super(e,M.VIDEO);m(this,"stat",{});m(this,"_calculateTimeout",-1);m(this,"viewMirror",!1);m(this,"objectFit","cover");m(this,"container");m(this,"canvas");m(this,"shouldRenderAlpha",!1);m(this,"_preSize",{width:0,height:0});m(this,"posterImg");m(this,"pipWindow");m(this,"enterPIPPromise");m(this,"_originContainerPosition");m(this,"_isResettingSrcObject",!1);this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,O(e.viewMirror)||(this.viewMirror=e.viewMirror),O(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(M.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,rt&&(e.poster="data:,"),(r=this.container)==null||r.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width:100%;height:100%;object-fit:${this.objectFit};${this.shouldRenderAlpha?"":"background-color:black"};`;return this.viewMirror&&(e+="transform:scaleX(-1);"),e}setContainer(e){var r;this.container=e,this._pausedRetryCount=wi,this.track&&this.elementToRender&&((r=this.container)==null||r.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),this.handleFullscreenChange=this.handleFullscreenChange.bind(this),this.handleVolumeChange=this.handleVolumeChange.bind(this),e&&e.add(M.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(M.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent).add(M.RESIZE,this.handleElementEvent),this.element&&(this.element.addEventListener(M.FULLSCREEN_CHANGE,this.handleFullscreenChange),this.element.addEventListener("webkitbeginfullscreen",this.handleFullscreenChange),this.element.addEventListener("webkitendfullscreen",this.handleFullscreenChange),this.element.addEventListener("volumechange",this.handleVolumeChange))}handleTrackEvent(e){var r;return e.type===M.MUTE&&((r=this.stat)!=null&&r.fps&&(this.stat.fps=0),this.isFullscreen()&&this.resetSrcObjectToReplay()),super.handleTrackEvent(e)}handleFullscreenChange(){this.isFullscreen()?(this._log.info("enter fullscreen"),this.emit(ue.ENTER_FULL_SCREEN)):(this._log.info("leave fullscreen"),this.emit(ue.LEAVE_FULL_SCREEN))}handleVolumeChange(){var e;(this.isPictureInPicture()||this.isFullscreen())&&this.emit(ue.VOLUME_CHANGE,{muted:(e=this.element)==null?void 0:e.muted})}handleElementEvent(e){var a,d,l,p,f,_;if(this.mode===2)return;super.handleElementEvent(e);let r=e.type,o=this.isPictureInPicture(),s=this.isFullscreen(),n=e.isTrusted&&(o&&ct||s);if(r===M.PLAYING&&n&&!this._isResettingSrcObject&&(this._log.warn(`user resume in ${s?"fullscreen":"pip"}`),this.emit(ue.USER_RESUME_IN_PIP_OR_FULL_SCREEN)),r===M.PAUSE&&(n&&(this._log.warn(`user pause in ${s?"fullscreen":"pip"}`),this.emit(ue.USER_PAUSE_IN_PIP_OR_FULL_SCREEN)),this.container&&!this.container.isConnected&&(this._log.warn(`${this.kind} player has been remove, element ID: ${this.container.id}`),Hr(500).then(()=>{var I;(I=this.container)!=null&&I.isConnected&&(this._pausedRetryCount=wi,this._log.info(`view container ${this.container.id} is in dom, reset pausedRetryCount`))})),this._pausedRetryCount>0&&!vo()&&!this.isPausedByUserCall&&!n&&(this._log.info(`[${wi-this._pausedRetryCount+1}/${wi}] ${this.kind} player auto resume when paused`),this.doResume(),this._pausedRetryCount--),it&&!n&&(this._interval=mt.run("timeout",()=>{this.element&&this._state==="PAUSED"&&!this.isPausedByUserCall&&this.doResume()},{delay:3e3})),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let I=this.element.style.transform;r===M.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=I.replace("scaleX(-1)",""):r===M.LEAVE_PICTURE_IN_PICTURE&&!I.includes("scaleX")&&(this.element.style.transform=`${I} scaleX(-1)`)}r===M.RESIZE&&(this._preSize.height!==((a=this.element)==null?void 0:a.videoHeight)||this._preSize.width!==((d=this.element)==null?void 0:d.videoWidth))&&(this._log.info(`video size changed to ${(l=this.element)==null?void 0:l.videoWidth}x${(p=this.element)==null?void 0:p.videoHeight}`),this._preSize.height=((f=this.element)==null?void 0:f.videoHeight)||0,this._preSize.width=((_=this.element)==null?void 0:_.videoWidth)||0,this.emit(ue.RESIZE,{newWidth:this._preSize.width,newHeight:this._preSize.height})),r===M.LEAVE_PICTURE_IN_PICTURE&&(this._log.warn("exit pip"),this.isPaused&&!this.isPausedByUserCall&&(this._log.warn("resume after exit pip"),this.doResume()),this.resetSrcObjectToReplay(),this.emit(ue.LEAVE_PICTURE_IN_PICTURE)),r===M.ENTER_PICTURE_IN_PICTURE&&this.emit(ue.ENTER_PICTURE_IN_PICTURE)}resetSrcObjectToReplay(){rt&&_o&&this.isPlayCalled&&this.element&&this.track&&!this.isPausedByUserCall&&(this._log.warn("reset srcObject to replay for android chromium"),this._isResettingSrcObject=!0,this.element.srcObject=new MediaStream([this.track]),this.element.play().catch(e=>{this._log.warn("play failed after reset srcObject",e)}).finally(()=>{this._isResettingSrcObject=!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,r=!1){return new Promise(o=>{if(!this.element||(this._log.info("setPoster",e.slice(0,10)),e===""?this.element.removeAttribute("poster"):this.element.poster=e,!(r&&(ct||nt))))return o();if(e==="")return this.removePosterImg(),o();if(this.posterImg)return o();let n=document.createElement("img");n.src=e;let d=window.getComputedStyle(this.element).objectFit||this.objectFit;n.style=`position:absolute;top:0;left:0;width:100%;height:100%;object-fit:${d};`,n.onload=()=>b(this,null,function*(){var l;try{n.decode&&(yield n.decode()),this.container&&window.getComputedStyle(this.container).position==="static"&&(this._originContainerPosition=this.container.style.position,this.container.style.position="relative"),this.posterImg=n,(l=this.container)==null||l.appendChild(n),ms()&&Pt<=17&&this.elementToRender&&(this.elementToRender.style.visibility="hidden")}catch(p){this._log.warn("decode poster image error",p)}return o()}),n.onerror=()=>(this._log.warn("load poster image error"),o())})}removePosterImg(){this.posterImg&&(ms()&&Pt<=17&&this.elementToRender&&(this.elementToRender.style.visibility=""),this.posterImg.remove(),URL.revokeObjectURL(this.posterImg.src),this.container&&!O(this._originContainerPosition)&&this.container.style.position==="relative"&&(this.container.style.position=this._originContainerPosition),delete this.posterImg)}get hasPoster(){var e;return!!this.posterImg||!!((e=this.element)!=null&&e.getAttribute("poster"))}pause(e=!0){return b(this,null,function*(){Dt(i.prototype,this,"pause").call(this),!this.isPictureInPicture()&&!this.hasPoster&&(_o||e&&(nt||ct))&&(yield this.setPoster(this.getVideoFrame(),!0))})}resume(e=!1){return super.resume(e).then(()=>{var r;(this.posterImg||(r=this.element)!=null&&r.poster)&&this.setPoster("",!0)})}doResume(e=!1){return this.isPaused&&e&&this.element&&this.track&&_o&&this.track.kind==="video"&&(this.element.srcObject=new MediaStream([this.track])),super.doResume()}stop(e=0){var r;this.isPictureInPicture()&&this.exitPictureInPicture().catch(o=>{}),this.isFullscreen()&&this.exitFullscreen().catch(o=>{}),this.element&&(this.element.removeEventListener(M.FULLSCREEN_CHANGE,this.handleFullscreenChange),this.element.removeEventListener("webkitbeginfullscreen",this.handleFullscreenChange),this.element.removeEventListener("webkitendfullscreen",this.handleFullscreenChange),this.element.removeEventListener("volumechange",this.handleVolumeChange)),super.stop(e),(r=this.canvas)==null||r.remove(),this.removePosterImg()}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(ue.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(Qr()&&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)}}enterFullscreen(){return b(this,null,function*(){let e=this.elementToRender;if(!e)throw this._log.warn("no element to render, cannot enter fullscreen"),new Error("No element available for fullscreen");if(it&&this.isPictureInPicture()){this._log.info("exit pip before entering fullscreen");try{yield this.exitPictureInPicture()}catch(r){this._log.warn("exit pip failed before fullscreen:",r)}}try{if(e.requestFullscreen)yield e.requestFullscreen();else if(e.webkitRequestFullscreen)yield e.webkitRequestFullscreen();else if(e.webkitEnterFullscreen)yield e.webkitEnterFullscreen();else if(e.mozRequestFullScreen)yield e.mozRequestFullScreen();else if(e.msRequestFullscreen)yield e.msRequestFullscreen();else throw new Error("Fullscreen API not supported");this._log.info("entered fullscreen mode")}catch(r){throw this._log.error("failed to enter fullscreen:",r),r}})}exitFullscreen(){return b(this,null,function*(){try{if(document.exitFullscreen)yield document.exitFullscreen();else if(document.webkitExitFullscreen)yield document.webkitExitFullscreen();else if(document.mozCancelFullScreen)yield document.mozCancelFullScreen();else if(document.msExitFullscreen)yield document.msExitFullscreen();else throw new Error("Exit fullscreen API not supported");this._log.info("exited fullscreen mode")}catch(e){throw this._log.error("failed to exit fullscreen:",e),e}})}isFullscreen(){let e=this.elementToRender;return e?this.element&&this.element.webkitDisplayingFullscreen?!this.isPictureInPicture():(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)===e:!1}toggleFullscreen(){return b(this,null,function*(){this.isFullscreen()?yield this.exitFullscreen():yield this.enterFullscreen()})}enterPictureInPicture(){return b(this,null,function*(){this.enterPIPPromise=this._enterPictureInPicture();try{return yield this.enterPIPPromise}finally{delete this.enterPIPPromise}})}_enterPictureInPicture(){return b(this,null,function*(){var e;try{if(!this.element)throw new Error("No video element available for pip");if(this.canvas&&this.mode!==1)throw new Error("pip is not supported for canvas-only mode");let{element:r}=this;if(r.requestPictureInPicture){this._log.info("requestPictureInPicture");let o=yield r.requestPictureInPicture();return this.pipWindow=o,this._log.info("entered pip mode"),this.elementToRender===this.canvas&&(this.canvas.remove(),(e=this.container)==null||e.appendChild(this.element)),o}if(r.webkitSetPresentationMode)return this._log.info("webkitSetPresentationMode"),yield r.webkitSetPresentationMode("picture-in-picture"),this._log.info("entered pip mode (webkit)"),{};throw new Error("pip API not supported")}catch(r){throw this._log.error("failed to enter pip:",r.name,r.message),r}})}exitPictureInPicture(){return b(this,null,function*(){var e,r;try{if(!this.isPictureInPicture())return;if(delete this.pipWindow,document.pictureInPictureElement&&document.exitPictureInPicture)yield document.exitPictureInPicture(),this.elementToRender===this.canvas&&((e=this.element)==null||e.remove(),this._pausedRetryCount=wi,(r=this.container)==null||r.appendChild(this.canvas)),this._log.info("exited pip mode");else if(this.element&&this.element.webkitSetPresentationMode)yield this.element.webkitSetPresentationMode("inline"),this._log.info("exited pip mode (webkit)");else throw new Error("Exit pip API not supported or not in PiP mode")}catch(o){throw this._log.error("failed to exit pip:",o),o}})}isPictureInPicture(){if(!this.element)return!1;let{element:e}=this;return document.pictureInPictureElement?document.pictureInPictureElement===e:e.webkitPresentationMode?e.webkitPresentationMode==="picture-in-picture":!1}togglePictureInPicture(){return b(this,null,function*(){this.isPictureInPicture()?yield this.exitPictureInPicture():yield this.enterPictureInPicture()})}};function qi(i,t){return b(this,null,function*(){if(!i.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield i.audioWorklet.addModule(t),B.info("worklet addModule success")}catch(e){throw B.info(`worklet addModule catch error. ${e.message}`),e}})}var lc;typeof AudioContext!="undefined"?lc=AudioContext:typeof webkitAudioContext!="undefined"?lc=webkitAudioContext:typeof mozAudioContext!="undefined"&&(lc=mozAudioContext);var Xh=1500,Bt,FE=-1,xu=0,mc=-1,Jh=!1,BE=0,$E=-1,HE=-1;WE();function WE(){try{if(Bt)return;Bt=new lc({sampleRate:48e3}),Bt.onstatechange=()=>{B.info(`context state: ${Bt.state}${Bt.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),wn()},clearTimeout(FE)}catch(i){B.error(`initAudioContext failed: ${i} typeof AudioContextClass: ${typeof lc}`),FE=setTimeout(WE,1e3)}}var wn=()=>{Bt.state==="suspended"?(xu=pe(),kA(),Co(),document.addEventListener("click",wn)):Bt.state==="interrupted"?Co():(xu&&(J.addNumber({key:507800,value:pe()-xu,split:[0,500,1e3,1500,2e3,3e3,4e3,5e3,1e4,3e4],max:6e4}),xu=0),UA(),document.removeEventListener("visibilitychange",wn),document.removeEventListener("click",wn))},qh=0,zh=-1;function Co(){return new Promise((i,t)=>{if(Bt.state==="running")return i();Date.now()-qh<1e3?(clearTimeout(zh),zh=setTimeout(()=>{qh=Date.now(),Bt.resume().then(i,t)},1e3)):(clearTimeout(zh),qh=Date.now(),Bt.resume().then(i,t))}).catch(i=>{B.warn(`context resume failed: ${i}`),document.addEventListener("visibilitychange",wn)})}document.addEventListener("click",wn);function kA(){mc===-1&&(mc=setTimeout(()=>{Bt.state==="suspended"&&(Jh=!0,x.emit("155",{isSuspended:!0}))},Xh))}function UA(){mc!==-1&&(clearTimeout(mc),mc=-1,Jh&&(Jh=!1,x.emit("155",{isSuspended:!1})))}function GE(){if(!it||HE!==-1)return;let i=()=>{pe()-BE<500||(Bt&&Bt.state==="running"&&Bt.currentTime===$E&&(B.warn("context is fake running, auto resume"),Bt.suspend().catch(t=>{B.warn(`context suspend failed: ${t}`)})),$E=Bt.currentTime,BE=pe())};HE=setInterval(()=>{i()},2e3),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&i()})}var ze=i=>Bt;var It=class{constructor(t){this.name=t;m(this,"node");m(this,"node2");m(this,"pre",new Set);m(this,"next",new Set);m(this,"context");m(this,"connectedNodes",new Set);m(this,"nextInputChannelMap",new Map);m(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){B.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(),J.addSuccessEvent({key:502701})}catch(o){B.error(o),J.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(),J.addSuccessEvent({key:502702})}catch(e){B.error(e),J.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}},ku=class extends It{constructor(e=256){super();this.fftSize=e;m(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}},hc=class{constructor(){m(this,"source",new It);m(this,"gain",new It);m(this,"destination",new It)}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(ze().createGain()),this.gain.node.gain.value=t}replaceSource(t){let e=On(t);e&&this.source.replaceNode(e)}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}},Mn=class extends hc{constructor(e){super();this.context=e;m(this,"aec",new It("aec"));m(this,"mixNode",new It("mixNode"));m(this,"silentNode",new It("silentNode"));m(this,"denoiser",new It("denoiser"));m(this,"voiceChanger",new It("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)}get isProcessEnabled(){return this.aec.node||this.denoiser.node||this.voiceChanger.node||this.gain.node}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}},Uu=class{constructor(){m(this,"audioContext",ze("audio-mixer"));m(this,"destination",this.audioContext.createMediaStreamDestination());m(this,"inputs",new Set);m(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]}},jE=new WeakMap;function On(i){try{let t=jE.get(i);if(t)return t;let e=ze();if(i instanceof HTMLAudioElement)t=e.createMediaElementSource(i);else if(i instanceof MediaStreamTrack)t=e.createMediaStreamSource(new MediaStream([i]));else return i;return jE.set(i,t),t}catch(t){if(nt&&t instanceof Error&&t.name==="NotSupportedError")B.warn(t);else throw t}}var Tr=class Tr{constructor(t){m(this,"_volume",0);m(this,"_volumeDb",0);m(this,"_log");m(this,"_scriptProcessorNode",null);m(this,"_audioWorkletNode",null);m(this,"_interval",200);m(this,"ready",this.preload());let{log:e}=t;this._log=e,x.on(V.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-Tr.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!Tr.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);';Tr.workletReady=qi(Tr.audioContext,URL.createObjectURL(new Blob([t],{type:"application/javascript"})))}return Tr.workletReady.then(()=>this.initAudioWorklet()).catch(t=>(this._log.error(`volumeMeter preload error: ${t}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(Tr.audioContext,"volume-meter");let t=!1;this._audioWorkletNode.port.onmessage=e=>{Tr.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}`),Ue.logFailedEvent({userId:this._log.userId,eventType:Ot.LOAD_WORKLET,error:t}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=ze("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=t=>{Tr.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,x.off(V.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})}};m(Tr,"lastMessageTime",0),m(Tr,"audioContext",ze("volume-meter")),m(Tr,"workletReady");var Vu=Tr,pc=class extends It{constructor(e){super();m(this,"_volumeMeter");this._volumeMeter=new Vu(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return b(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()}}},Fu=Vu;var XE=ai(mi(),1);var zE=i=>t=>t.deviceId===i;var fc=class{constructor(t,e){m(this,"kind");m(this,"type");m(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&&Ln(this.devices[0])){this.devices=r;return}e&&(r.forEach(o=>{if(o.deviceId&&!this.devices.find(zE(o.deviceId))){let s=`${this.kind}${this.type}Added`;B.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}}),this.devices.forEach(o=>{if(o.deviceId&&!r.find(zE(o.deviceId))){let s=`${this.kind}${this.type}Removed`;B.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}})),this.devices=r}hasDevice(t){return!!this.devices.find(e=>e.deviceId===t)}},Qh=class extends XE.EventEmitter{constructor(){super();m(this,"audioInputs",new fc(M.AUDIO,"Input"));m(this,"videoInputs",new fc(M.VIDEO,"Input"));m(this,"audioOutputs",new fc(M.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||mt.run("interval",()=>{this.update()},{delay:1e4}))}init(){Pn().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return b(this,arguments,function*(e=0){let r=yield Pn(e);return this.audioInputs.update(r,this),this.videoInputs.update(r,this),this.audioOutputs.update(r,this),this})}hasBlueTooth(){var r;if(((r=ze())==null?void 0:r.outputLatency)*1e3>150)return!0;let e=["bluetooth","air","wireless","bt","tws","buds","headset","headphone"];return this.audioOutputs.devices.some(o=>e.some(s=>o.label.toLowerCase().includes(s)))||this.audioInputs.devices.some(o=>e.some(s=>o.label.toLowerCase().includes(s)))}},lt=Sa||en?null:new Qh;function Ln(i){return i.deviceId===i.groupId&&i.groupId===""}function Pn(){return b(this,arguments,function*(i=0){if(Gi()||!Cu())return[];let t=yield navigator.mediaDevices.enumerateDevices();if(i!==0){let e={audio:!1,video:!1};if(t.forEach(r=>{Ln(r)&&(r.kind===M.AUDIO_INPUT?e.audio=!0:r.kind===M.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&&Co()}catch(o){B.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&&Yh.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(o.getCapabilities=()=>e.getCapabilities()),o})})}function nr(i=!1){return lt.update(i?1:0).then(t=>t.audioInputs.devices)}function ar(i=!1){return lt.update(i?2:0).then(t=>t.videoInputs.devices)}var JE=!1;function QE(){return b(this,null,function*(){try{JE||(JE=!0,B.info(`speakers:${(yield No()).map(i=>` ${i.deviceId.slice(0,8)}: ${i.label}`)}`))}catch(i){}})}function No(i=!1){return b(this,null,function*(){return(it||ct)&&(i=!1),lt.update(i?1:0).then(t=>t.audioOutputs.devices)})}var Yh=new Set;function YE(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}_${M.VIDEO_INPUT}`;return!!Yh.has(r)}function ZE(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}_${M.AUDIO_INPUT}`;return!!Yh.has(r)}function Zh(i,t){return b(this,null,function*(){let r=(yield nr()).find(o=>o.deviceId===ss);return!t&&(r==null?void 0:r.groupId)===i||(r==null?void 0:r.groupId)===i&&r.label===t})}function KE(s){return b(this,arguments,function*({newDeviceId:i,oldDeviceId:t,oldGroupId:e,oldLabel:r,kind:o}){return i!==t?!1:o===M.AUDIO&&i===ss?yield Zh(e,r):!0})}var Bu,Kh=class extends hc{constructor(e){super();this.log=e;m(this,"volumeMeter");m(this,"volumeMeterAfter3A");m(this,"volumeDestination");m(this,"analyser",new ku);this.volumeMeter=new pc({log:this.log}),this.volumeMeterAfter3A=new pc({log:this.log}),this.volumeDestination=new It,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},xn=class i extends Yr{constructor(e){super(e,M.AUDIO);m(this,"_outputDeviceId");m(this,"_floatVolume",1);m(this,"_destination");m(this,"pipeline");m(this,"volumeMeterMode","worklet");m(this,"enableVolumeControlInIOS");this.enableVolumeControlInIOS=e.enableVolumeControlInIOS,this.mode=0,e.url&&(this.url=e.url),this.pipeline=new Kh(this._log)}setTrack(e){}get duration(){var e;return Math.floor((((e=this.element)==null?void 0:e.duration)||0)*1e3)}get currentTime(){var e;return Math.floor((((e=this.element)==null?void 0:e.currentTime)||0)*1e3)}set currentTime(e){this.element&&(this.element.currentTime=e/1e3)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((Er==="15.2"||Er==="15.3"||Er==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let o=Bu||new Audio;o.setAttribute("autoplay","autoplay"),o.srcObject=this.getMediaStream(),o.muted=this.muted,this.url&&(o.crossOrigin="anonymous",o.src=this.url),this.element=o,this.setVolume(Be(e)?e/100:this._floatVolume),o===Bu&&(Bu=void 0),this.options.enableTimeupdateEvent&&(this.element.ontimeupdate=()=>this.emit(ue.TIME_UPDATE,this.currentTime)),this.bindElementEvents()}play(e){return b(this,null,function*(){if(!(!this.track&&!this.url)){try{!this.pipeline.source.node&&this.track&&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(ze("player").createAnalyser()),QE()}catch(r){throw this._log.warn(`audio play error: ${r}`),Ga(Er,"18.7",!0)&&this.bindAutoPlayEvent(),r}return Dt(i.prototype,this,"play").call(this)}})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setVolume(e){this._floatVolume=e,this.element&&(this.element.volume=e)}setSinkId(e){return b(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()}},$u=class extends xn{setTrack(t){this.track!==t&&(this.unbindTrackEvents(),this.track=t,this.emit(ue.MEDIA_TRACK_CHANGED,t),t&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([t]))))}},kn=class extends xn{constructor(e){super(e);m(this,"_sourceElement");m(this,"_output",new It);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(ze("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(ue.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){var o;let r=e<=1&&!ms();if(!(this._floatVolume===e&&(r&&((o=this.element)==null?void 0:o.volume)===e||!r&&this.pipeline.volume===e)))if(this._floatVolume=e,this.useDestination)this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`);else if(r)this.element?(this._log.info(`set element volume: ${e}`),this.element.volume=e):this._log.info("set element volume: no element");else{if(ms())if(this.enableVolumeControlInIOS)GE();else return;if(nt&&!this.pipeline.source.node){this._log.warn("set pipeline volume failed: no source node");return}this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this._destination||(this._destination=ze("player").createMediaStreamDestination()),this.pipeline.destination.setNode(this._destination),yt(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play().catch(s=>{this.emit(ue.AUTOPLAY_FAILED,s)}))}}stop(e=0){this.pipeline.destroy();let r=this._sourceElement||this.element;r&&vr&&(Bu=r),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var bs=class extends he{constructor({userId:e,sdkAppId:r,mediaType:o,room:s,PlayerClass:n=o===1?kn:Ft}){var a;super();m(this,"id",qa());m(this,"userId","");m(this,"isRemote");m(this,"mediaType");m(this,"room");m(this,"user");m(this,"_log");m(this,"_inputTrack");m(this,"_outputTrack");m(this,"isPlayCalled");m(this,"container",null);m(this,"player");m(this,"subVideoPlayerMap");m(this,"muted",!1);m(this,"abortCtrl");m(this,"objectFit","cover");m(this,"mirror");m(this,"rotation");m(this,"isScreen",!1);m(this,"manager");m(this,"trackSettings");m(this,"isFirstVideoFrameEmitted",!1);this.userId=e||"",this.mediaType=o,this._log=B.createLogger({parent:s==null?void 0:s.getLogger(),id:`${this.kind[0]}t`,userId:(a=s||this.room)==null?void 0:a.userId,remoteUserId:this instanceof Zr?void 0:this.userId,sdkAppId:r,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof Zr}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log,enableVolumeControlInIOS:s==null?void 0:s.enableVolumeControlInIOS}),this.player.on(ue.PLAYER_STATE_CHANGED,d=>{if(x.emit(V.PLAYER_STATE_CHANGED,Q({track:this},d)),this.emit("player-state-changed",d),d.state==="PLAYING"&&this.room){let l=!0;for(let{remoteAudioTrack:p,remoteVideoTrack:f,remoteAuxiliaryTrack:_}of[...this.room.remotePublishedUserMap.values()])if(p.isAvailable&&!p.player.isPlaying||f.isAvailable&&!f.player.isPlaying||_.isAvailable&&!_.player.isPlaying){l=!1;break}l&&vo()&&VE()}}),this.kind===M.VIDEO&&(this.player.on(ue.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(ue.LOADED_DATA),x.emit(V.VIDEO_LOADED_DATA,{track:this})}),this.player.on(ue.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(ue.LOADED_META_DATA)}),this.player.on(ue.MEDIA_TRACK_CHANGED,d=>{var l;(l=this.subVideoPlayerMap)==null||l.forEach(p=>p.setTrack(d))}),this.player.on(ue.RESIZE,d=>{this.emitFirstVideoFrameEvent(ue.RESIZE),this.emit("video-size-changed",Q({userId:this.userId,streamType:this.mediaType===2?"auxiliary":"main"},d))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(ue.ERROR,this.onPlayerError.bind(this)),this.player.on(ue.AUTOPLAY_FAILED,this.handleAutoPlayFailed,this)}get log(){return this._log||B}get kind(){return this.mediaType===1?M.AUDIO:M.VIDEO}get isAudio(){return this.kind===M.AUDIO}get strMediaType(){return this.mediaType===4?M.VIDEO:this.mediaType===2?M.SCREEN:M.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 b(this,null,function*(){let o=ut(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(r)}`),r&&!O(r.muted)&&this.setPlayerMute(r.muted),r&&!O(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof Ft&&(this.player.setObjectFit(this.objectFit),this.container!==o&&o&&(ut(e)&&e.length>=1&&this.container&&e.includes(this.container)&&this.container.contains(this.player.elementToRender)?(e.splice(e.indexOf(this.container),1),e.unshift(this.container)):(this.container=o,this.player.setContainer(o))),ut(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),r)));return}if(r&&!O(r.muted)?this.setPlayerMute(r.muted):(!this.isRemote||this.kind===M.VIDEO)&&this.setPlayerMute(!0),r&&!O(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof Ft&&(this.player.setObjectFit(this.objectFit),r&&!O(r.poster)&&this.player.setPoster(r.poster)),this.isPlayCalled=!0,o&&(this.container=o,this.player instanceof Ft&&this.player.setContainer(o)),x.emit(V.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),ut(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!==M.VIDEO||O(e)||e===this.mirror)return;this.mirror=e;let o=this.player;r&&(o=r);let s=this.manager;if(Ze(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 b(this,null,function*(){if(!this._outputTrack||this.kind===M.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((s,n)=>{var a;e.find(d=>n===d)||(s.stop(),(a=this.subVideoPlayerMap)==null||a.delete(n))});for(let[s,n]of e.entries()){let a=this.subVideoPlayerMap.get(n);a?r&&(O(r.objectFit)||a.setObjectFit(r.objectFit)):this.subVideoPlayerMap.set(n,new Ft({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.isFirstVideoFrameEmitted=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(Hd(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(r=>{r.stop()}),this.container=null)}resume(){return b(this,null,function*(){var e;this.isPlayCalled&&(yield(e=this.player)==null?void 0:e.resume())})}close(){this._toInitState(),this.log.info("close"),this.isPlayCalled&&this.stop(!0)}_toInitState(){}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),x.emit(e?V.TRACK_MUTED:V.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){Vt(e,e).add(M.MUTE,this.onTrackMuted).add(M.UNMUTE,this.onTrackUnmuted).add(M.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===M.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){yt(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,s,n;let r=this._outputTrack;r!=null&&r.canvas&&((s=(o=r.canvas)==null?void 0:o.id)!=null&&s.includes("trtc_mix"))||e!==r&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(n=e.getSettings)==null?void 0:n.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){var r,o;if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(s=>this.handleAutoPlayFailed(s)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){if(Hd(this)&&this.isAudio&&((r=this.user)!=null&&r.muteState.hasAudio)&&((o=this.user)!=null&&o.muteState.audioMuted))return;this.player.stop(Hd(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){return b(this,null,function*(){var o;this.log.warn("handleAutoPlayFailed",e);let r=()=>{this.resume().then(()=>{document.removeEventListener("click",r,!0)})};if(this.room&&this.room.enableAutoPlayDialog){if((Li||xi)&&(yield Hr(100),(o=this.player)!=null&&o.isPlaying))return;Dn()}else document.addEventListener("click",r,!0);x.once(V.LOCAL_TRACK_CAPTURE_SUCCESS,({track:s})=>{s.kind==="audio"&&vo()&&!this.player.isPlaying&&this.isRemote&&this.isAvailable&&r()}),this.emit("error",e)})}getVideoFrame(){return this.player instanceof Ft?this.player.getVideoFrame():""}emitFirstVideoFrameEvent(e){var n,a,d;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)||((d=this.player.element)==null?void 0:d.videoHeight)||0;e===ue.RESIZE&&!o&&!s||e===ue.LOADED_META_DATA&&!o&&!s||(e===ue.LOADED_DATA&&!o&&!s&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,gr(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([ot([],he.INIT,{sync:!0})],bs.prototype,"_toInitState",1);var VA=Object.prototype.hasOwnProperty,{toString:XM}=Object.prototype;function FA(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(Jt(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(VA.call(i,t))return!1;return!0}}return!1}var gc=FA;var BA=function(i){return b(this,null,function*(){let t=HA(i);B.info(`getUserMedia with constraints: ${JSON.stringify(t)}`);let e=[],r=[],o=["label","deviceId","groupId"];if(t.audio&&(e=yield nr(),B.info(`microphones: ${br(e.map(s=>Te(Q({},s),{groupId:s.groupId.substring(0,8)})),{keysToInclude:o})}`)),t.video&&(r=yield ar(),B.info(`cameras: ${br(r,{keysToInclude:o})}`),!Ze(t.video)&&t.video.facingMode==="user"&&!t.video.deviceId)){let n=r.filter(a=>!a.label.includes("infrared")).find(a=>a.label.includes("facing front"));n&&(t.video.deviceId=n.deviceId,B.info(`exclude infrared camera: ${JSON.stringify(t)}`))}try{let s=yield navigator.mediaDevices.getUserMedia(t);return wh&&s.getTracks().forEach(n=>{var d;let a=n.getCapabilities();B.info(`${n.kind} capabilities: ${br(a,{keysToInclude:Dd})}`),!O(i.echoCancellation)&&((d=a.echoCancellation)==null?void 0:d.indexOf(i.echoCancellation))===-1&&B.warn(`Invalid argument for 'echoCancellation'. Expected one of [${JSON.stringify(a.echoCancellation)}], but received '${i.echoCancellation}'`)}),t.audio&&Co(),s}catch(s){let{message:n}=s;throw s.name==="NotFoundError"&&(i.video&&r&&r.length===0&&(n=je({key:Ge.CAMERA_NOT_FOUND})),i.audio&&e&&e.length===0&&(n=je({key:Ge.MICROPHONE_NOT_FOUND}))),new ce({code:z.INITIALIZE_FAILED,name:s.name,message:n,constraint:s.constraint})}})},$A=fo({retryFunction:BA,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"||i.name==="AbortError"?(s===1?(r[0].video&&(r[0].maxResolution=!1,(!ct||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&&e_(r[0].microphoneId,!1),r[0].cameraId&&e_(r[0].cameraId,!0)},onRetrying:i=>{B.warn(`getUserMedia NotReadableError observed, retrying [${i}/3]`)},onRetryFailed:i=>{Ue.logFailedEvent({eventType:Ot.GET_USER_MEDIA_RETRY,error:i})},onRetrySuccess:i=>{Ue.logSuccessEvent({eventType:Ot.GET_USER_MEDIA_RETRY}),Ue.uploadEvent({log:`stat-${Ot.GET_USER_MEDIA_RETRY}-success-${i}`})}});function e_(i,t){return b(this,null,function*(){let r=(t?yield ar():yield nr()).find(o=>o.deviceId===i);r&&Xe(r.getCapabilities)&&B.warn(br(r.getCapabilities(),{keysToInclude:Dd}))})}function HA(i){return{audio:WA(i),video:GA(i)}}function WA(i){if(!i.audio)return!1;if(i.useTrueAsConstraint)return!0;let t={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:i.sampleRate};return!gc(i.microphoneId)&&(t.deviceId=i.useExactDeviceId?{exact:i.microphoneId}:i.microphoneId,i.useDeviceIdOnly)?t:(Be(i.channelCount)&&(t.channelCount=i.channelCount),(Ze(i.echoCancellation)||i.echoCancellation==="remote-only"||i.echoCancellation==="all")&&(t.echoCancellation=i.echoCancellation),Ze(i.noiseSuppression)&&!i.noiseSuppression&&(t.noiseSuppression=!1),Ze(i.autoGainControl)&&!i.autoGainControl&&(t.autoGainControl=!1),gc(t)?!0:t)}function GA(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&&!gc(e)?e:(i.width&&(e.width={ideal:i.width},t&&!nt&&(e.width.max=i.width)),i.height&&(e.height={ideal:i.height},t&&!nt&&(e.height.max=i.height)),nt&&jr&&i.width&&i.height&&i.width*i.height<352*288&&(e.width=i.width,e.height=i.height),i.frameRate&&(e.frameRate=i.frameRate),gc(e)?!0:e)}var t_=$A;function Do(i){return Pe((t,e)=>function(...r){return b(this,null,function*(){let o=yield t.apply(this,r);return yield i.call(this,...r),o})})}function r_(i){return Pe((t,e)=>function(...r){return b(this,null,function*(){try{return yield t.apply(this,r)}catch(o){i.call(this,o)}})})}function Pe(i){return function(t,e,r){return r.value=i(r.value,e),r}}var i_=(()=>{let i=!1,t=document.visibilityState;return()=>{document.visibilityState!==t&&B.info(`visibility change: ${document.visibilityState}`),!i&&(document.addEventListener("visibilitychange",()=>{B.info(`visibility change: ${document.visibilityState}`),t=document.visibilityState}),i=!0)}})();var jA=0,Hu=class{constructor(t){m(this,"log");m(this,"isRunning",!1);m(this,"queue",[]);let e=`fq${++jA}`;t&&(e+=`|${t}`),this.log=B.createLogger({id:e})}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=Q({},t),o=new Promise((a,d)=>{r.resolve=a,r.reject=d});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}`,t.funcName,t.args),this.isRunning||this.callNext(),o}shift(){let t=this.queue.shift();return this.log.debug(`shift ${this.length}`,t==null?void 0:t.funcName,t==null?void 0:t.args),t}callNext(){if(this.isRunning||this.length===0)return;let{fn:t,args:e,context:r,resolve:o,reject:s,funcName:n}=this.queue[0];this.log.debug("callNext",this.length,n,e),this.isRunning=!0,t.apply(r,e).then(o,s).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},o_=new WeakMap,s_=new WeakMap;function Wu(i=!1){return function(t,e,r){let o=r.value;return r.value=function(...s){let n=o_.get(this)||new Hu;return o_.set(this,n),n.push({fn:o,args:s,context:this,funcName:e},i)},r}}function Gu(i,t){return function(e,r,o){let s=o.value,n=a=>i(...a);return o.value=function(...a){let d=s_.get(this)||new Map,l=d.get(n(a))||new Hu(t==null?void 0:t(...a));return d.set(n(a),l),s_.set(this,d),l.push({fn:s,args:a,context:this,funcName:r})},o}}function ju(i,t){return Pe((e,r)=>function(...o){let s=i;try{let n=e.apply(this,o),a=pe();return ho(n)?n.then(d=>(t?J.addSuccessEvent({key:s,cost:pe()-a}):J.addSuccessEvent({key:s}),d)).catch(d=>{throw J.addFailedEvent({key:s,error:d}),d}):(J.addSuccessEvent({key:s}),n)}catch(n){throw J.addFailedEvent({key:s,error:n}),n}})}var Bp={};vi(Bp,{Events:()=>Et,Inspect:()=>Nr,LastSink:()=>Rs,Sink:()=>Ie,Subscribe:()=>vs,TimeoutError:()=>Ec,audit:()=>Ny,bindCallback:()=>hy,bindNodeCallback:()=>py,buffer:()=>ey,bufferCount:()=>KA,bufferTime:()=>zy,call:()=>n_,catchError:()=>kp,combineLatest:()=>c_,concat:()=>JA,concatMap:()=>Fy,concatMapTo:()=>By,count:()=>Ey,create:()=>Fe,debounce:()=>Dy,debounceTime:()=>wy,defer:()=>d_,delay:()=>Jy,deliver:()=>Se,dispose:()=>qu,elementAt:()=>My,empty:()=>Sc,every:()=>ky,exhaustMap:()=>Wy,exhaustMapTo:()=>Gy,expand:()=>Xy,filter:()=>er,find:()=>Oy,findIndex:()=>Py,first:()=>Ly,fromAnimationFrame:()=>ly,fromArray:()=>sy,fromEvent:()=>ye,fromEventPattern:()=>ny,fromFetch:()=>ay,fromIterable:()=>cy,fromPromise:()=>m_,fromReadableStream:()=>uy,fromReader:()=>dy,groupBy:()=>jy,identity:()=>qA,ignoreElements:()=>Sy,iif:()=>QA,inspect:()=>a_,interval:()=>np,last:()=>xy,map:()=>Mo,mapTo:()=>Vy,max:()=>_y,merge:()=>_c,mergeMap:()=>$y,mergeMapTo:()=>Hy,min:()=>Ty,never:()=>fy,nothing:()=>qe,of:()=>oy,pairwise:()=>Uy,pipe:()=>be,race:()=>op,range:()=>my,reduce:()=>ap,retry:()=>Zy,scan:()=>xp,setAsapScheduler:()=>iy,share:()=>zi,shareReplay:()=>XA,skip:()=>yy,skipUntil:()=>by,skipWhile:()=>Yu,startWith:()=>Tc,subject:()=>bt,subscribe:()=>Le,sum:()=>Iy,switchMap:()=>fi,switchMapTo:()=>Ji,take:()=>Kr,takeLast:()=>Ay,takeUntil:()=>Je,takeWhile:()=>h_,tap:()=>ws,throttle:()=>vy,throwError:()=>gy,timeInterval:()=>qy,timeout:()=>Fp,timer:()=>Ic,toPromise:()=>Qy,toReadableStream:()=>Yy,withLatestFrom:()=>ZA,zip:()=>YA});function qe(...i){}var n_=i=>i(),qA=i=>i;function qu(){this.dispose()}var a_=()=>typeof __FASTRX_DEVTOOLS__!="undefined",zA=1,Nr=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(t){let e=new ep(t,this,this.streamId++);return Et.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},Rs=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=qe,this.error=qe,this.next=qe,this.dispose=qe,this.subscribe=qe,this.doDefer()}subscribe(t){return t instanceof Nr?t.subscribe(this):t(this),this}get bindSubscribe(){return t=>this.subscribe(t)}doDefer(){this.defers.forEach(n_),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}},Ie=class extends Rs{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)}},vs=class extends Rs{constructor(t,e=qe,r=qe,o=qe){if(super(),this._next=e,this._error=r,this._complete=o,this.then=qe,t instanceof Nr){let s={toString:()=>"subscribe",id:0,source:t};this.defer(()=>{Et.defer(s,0)}),Et.create(s),Et.pipe(s),this.sourceId=s.id,this.subscribe(t),Et.subscribe({id:s.id,end:!0}),e==qe?this._next=n=>Et.next(s,0,n):this.next=n=>{Et.next(s,0,n),e(n)},o==qe?this._complete=()=>Et.complete(s,0):this.complete=()=>{this.dispose(),Et.complete(s,0),o()},r==qe?this._error=n=>Et.complete(s,0,n):this.error=n=>{this.dispose(),Et.complete(s,0,n),r(n)}}else this.subscribe(t)}next(t){this._next(t)}complete(){this.dispose(),this._complete()}error(t){this.dispose(),this._error(t)}};function be(i,...t){return t.reduce((e,r)=>r(e),i)}function Fe(i,t,e){if(a_()){let r=Object.defineProperties(Object.setPrototypeOf(i,Nr.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}});Et.create(r);for(let o=0;o<e.length;o++){let s=e[o];typeof s=="function"&&s instanceof Nr&&Et.addSource(r,s)}return r}return i}function Se(i,t){return function(...e){return r=>{if(r instanceof Nr){let o=Fe(s=>{let n=new i(s,...e);n.sourceId=o.id,n.subscribe(r)},t,arguments);return o.source=r,Et.pipe(o),o}else return o=>r(new i(o,...e))}}}function wo(i,t){window.postMessage({source:"fastrx-devtools-backend",payload:{event:i,payload:t}})}var ep=class extends Ie{constructor(t,e,r){super(t),this.source=e,this.id=r,this.sourceId=t.sourceId,this.defer(()=>{Et.defer(this.source,this.id)})}next(t){Et.next(this.source,this.id,t),this.sink.next(t)}complete(){Et.complete(this.source,this.id),this.sink.complete()}error(t){Et.complete(this.source,this.id,t),this.sink.error(t)}},Et={addSource(i,t){wo("addSource",{id:i.id,name:i.toString(),source:{id:t.id,name:t.toString()}})},next(i,t,e){wo("next",{id:i.id,streamId:t,data:e&&e.toString()})},subscribe({id:i,end:t},e){wo("subscribe",{id:i,end:t,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(i,t,e){wo("complete",{id:i.id,streamId:t,err:e?e.toString():null})},defer(i,t){wo("defer",{id:i.id,streamId:t})},pipe(i){wo("pipe",{name:i.toString(),id:i.id,source:{id:i.source.id,name:i.source.toString()}})},update(i){wo("update",{id:i.id,name:i.toString()})},create(i){i.id||(i.id=zA++),wo("create",{name:i.toString(),id:i.id})}},Ec=class extends Error{constructor(t){super(`timeout after ${t}ms`),this.timeout=t}};var zu=class extends Rs{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 zi(){return i=>{let t=new zu(i);if(i instanceof Nr){let e=Fe(r=>{t.add(r)},"share",arguments);return t.sourceId=e.id,e.source=i,Et.pipe(e),e}return Fe(t.add.bind(t),"share",arguments)}}function _c(...i){return Fe(t=>{let e=new Ie(t),r=i.length;e.complete=()=>{--r===0&&t.complete()},i.forEach(e.bindSubscribe)},"merge",arguments)}function op(...i){return Fe(t=>{let e=new Map;i.forEach(r=>{let o=new Ie(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 JA(...i){return Fe(t=>{let e=0,r=i.length,o=new Ie(t);o.complete=()=>{e<r&&!o.disposed?(o.doDefer(),o.subscribe(i[e++])):t.complete()},o.complete()},"concat",arguments)}function XA(i){return t=>{let e=new zu(t),r=[];return e.next=function(o){r.push(o),r.length>i&&r.shift(),this.sinks.forEach(s=>s.next(o))},Fe(o=>{o.defer(()=>e.remove(o)),r.forEach(s=>o.next(s)),e.add(o)},"shareReplay",arguments)}}function QA(i,t,e){return Fe(r=>i()?t(r):e(r),"iif",arguments)}function c_(...i){return Fe(t=>{let e=i.length,r=e,o=e,s=new Array(e),n=()=>{--o===0&&t.complete()},a=(d,l)=>{let p=new Ie(t);p.next=f=>{r--,p.next=_=>{s[l]=_,r===0&&t.next(s)},p.next(f)},p.complete=n,p.subscribe(d)};i.forEach(a)},"combineLatest",arguments)}function YA(...i){return Fe(t=>{let e=i.length,r=e,o=new Array(e),s=()=>{--r===0&&t.complete()},n=(a,d)=>{let l=new Ie(t),p=[];o[d]=p,l.next=f=>{p.push(f),o.every(_=>_.length)&&t.next(o.map(_=>_.shift()))},l.complete=s,l.subscribe(a)};i.forEach(n)},"zip",arguments)}function Tc(...i){return t=>Fe((e,r=0,o=i.length)=>{for(;r<o&&!e.disposed;)e.next(i[r++]);e.disposed||e.subscribe(t)},"startWith",arguments)}var tp=class extends Ie{constructor(t,...e){super(t);let r=new Ie(this.sink);r.next=o=>this.buffer=o,r.complete=qe,r.subscribe(c_(...e))}next(t){this.buffer&&this.sink.next([t,...this.buffer])}},ZA=Se(tp,"withLatestFrom"),rp=class extends Ie{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()}},KA=Se(rp,"bufferCount"),ip=class extends Ie{constructor(t,e){super(t),this.buffer=[];let r=new Ie(t);r.next=o=>{t.next(this.buffer),this.buffer=[]},r.complete=qe,r.subscribe(e)}next(t){this.buffer.push(t)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},ey=Se(ip,"buffer");var ty=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(p){try{l(r.next(p))}catch(f){n(f)}}function d(p){try{l(r.throw(p))}catch(f){n(f)}}function l(p){p.done?s(p.value):o(p.value).then(a,d)}l((r=r.apply(i,t||[])).next())})};function bt(i){let t=arguments,e=zi()(Fe(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=qe,e.complete=qe,e.error=qe,e}function d_(i){return Fe(t=>t.subscribe(i()),"defer",arguments)}var Un={promise:i=>{Promise.resolve().then(i)},setImmediate:typeof setImmediate!="undefined"?i=>setImmediate(i):null,setTimeout:i=>setTimeout(i,0)},ry=()=>typeof Promise!="undefined"?Un.promise:Un.setImmediate?Un.setImmediate:Un.setTimeout,sp=ry(),u_=i=>t=>{sp(()=>i(t))},iy=i=>{typeof i=="function"?sp=i:Un[i]&&(sp=Un[i])};var l_=i=>u_(t=>{for(let e=0;!t.disposed&&e<i.length;e++)t.next(i[e]);t.complete()});function oy(...i){return Fe(l_(i),"of",arguments)}function sy(i){return Fe(l_(i),"fromArray",arguments)}function np(i){return Fe(t=>{let e=0,r=setInterval(()=>t.next(e++),i);return t.defer(()=>{clearInterval(r)}),"interval"},"interval",arguments)}function Ic(i,t){return Fe(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 Ju(i,t){return e=>{let r=o=>e.next(o);e.defer(()=>t(r)),i(r)}}function ny(i,t){return Fe(Ju(i,t),"fromEventPattern",arguments)}function ye(i,t){if("on"in i&&"off"in i)return Fe(Ju(e=>i.on(t,e),e=>i.off(t,e)),"fromEvent",arguments);if("addListener"in i&&"removeListener"in i)return Fe(Ju(e=>i.addListener(t,e),e=>i.removeListener(t,e)),"fromEvent",arguments);if("addEventListener"in i)return Fe(Ju(e=>i.addEventListener(t,e),e=>i.removeEventListener(t,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function m_(i){return Fe(t=>{i.then(e=>{t.next(e),t.complete()},t.error.bind(t))},"fromPromise",arguments)}function ay(i,t){return Fe(d_(()=>m_(fetch(i,t))),"fromFetch",arguments)}function cy(i){return Fe(u_(t=>{try{for(let e of i){if(t.disposed)return;t.next(e)}t.complete()}catch(e){t.error(e)}}),"fromIterable",arguments)}function dy(i){let t=e=>ty(this,void 0,void 0,function*(){try{if(e.disposed)return;let{done:r,value:o}=yield i.read();if(r){e.complete();return}else e.next(o),t(e)}catch(r){e.error(r)}});return Fe(e=>{t(e)},"fromReader",arguments)}function uy(i){return Fe(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 ly(){return Fe(i=>{let t=requestAnimationFrame(function e(r){i.disposed||(i.next(r),t=requestAnimationFrame(e))});i.defer(()=>cancelAnimationFrame(t))},"fromAnimationFrame",arguments)}function my(i,t){return Fe((e,r=i,o=t+i)=>{for(;r<o&&!e.disposed;)e.next(r++);return e.complete(),"range"},"range",arguments)}function hy(i,t,...e){return Fe(r=>{let o=e.concat(s=>(r.next(s),r.complete()));i.apply(t,o)},"bindCallback",arguments)}function py(i,t,...e){return Fe(r=>{let o=e.concat((s,n)=>s?r.error(s):(r.next(n),r.complete()));i.apply(t,o)},"bindNodeCallback",arguments)}function fy(){return Fe(()=>{},"never",arguments)}function gy(i){return Fe(t=>t.error(i),"throwError",arguments)}function Sc(){return Fe(i=>i.complete(),"empty",arguments)}var Cs=class extends Ie{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)}},ap=Se(Cs,"reduce"),Ey=i=>Se(Cs,"count")((t,e)=>i(e)?t+1:t,0),_y=()=>Se(Cs,"max")(Math.max),Ty=()=>Se(Cs,"min")(Math.min),Iy=()=>Se(Cs,"sum")((i,t)=>i+t,0);var cp=class extends Ie{constructor(t,e,r){super(t),this.filter=e,this.thisArg=r}next(t){this.filter.call(this.thisArg,t)&&this.sink.next(t)}},er=Se(cp,"filter"),dp=class extends Ie{next(t){}},Sy=Se(dp,"ignoreElements"),up=class extends Ie{constructor(t,e){super(t),this.count=e}next(t){this.sink.next(t),--this.count===0&&(this.doDefer(),this.complete())}},Kr=Se(up,"take"),lp=class extends Ie{constructor(t,e){super(t);let r=new Ie(t);r.next=()=>{r.doDefer(),t.complete()},r.complete=qu,r.subscribe(e)}},Je=Se(lp,"takeUntil"),mp=class extends Ie{constructor(t,e){super(t),this.f=e}next(t){this.f(t)?this.sink.next(t):(this.doDefer(),this.complete())}},h_=Se(mp,"takeWhile"),Ay=i=>ap((t,e)=>(t.push(e),t.length>i&&t.shift(),t),[]),hp=class extends Ie{constructor(t,e){super(t),this.count=e}next(t){--this.count===0&&(this.next=super.next)}},yy=Se(hp,"skip"),pp=class extends Ie{constructor(t,e){super(t),t.next=qe;let r=new Ie(t);r.next=()=>{r.doDefer(),t.resetNext()},r.complete=qu,r.subscribe(e)}},by=Se(pp,"skipUntil"),fp=class extends Ie{constructor(t,e){super(t),this.f=e}next(t){this.f(t)||(this.next=super.next,this.next(t))}},Yu=Se(fp,"skipWhile"),Ry={leading:!0,trailing:!1},gp=class extends Ie{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)}},Xu=class extends Ie{constructor(t,e,r=Ry){super(t),this.durationSelector=e,this.config=r,this._throttle=new gp(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=qe,this._throttle.complete(),super.complete()}},vy=Se(Xu,"throttle"),Cy={leading:!1,trailing:!0},Ny=i=>Se(Xu,"audit")(i,Cy),Ep=class extends Ie{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},Qu=class extends Ie{constructor(t,e){super(t),this.durationSelector=e,this._debounce=new Ep(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()}},Dy=Se(Qu,"debounce"),wy=i=>Se(Qu,"debounceTime")(t=>Ic(i)),_p=class extends Ie{constructor(t,e,r){super(t),this.count=e,this.defaultValue=r}next(t){this.count--===0&&(this.defaultValue=t,this.doDefer(),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()}},My=Se(_p,"elementAt"),Oy=i=>t=>Kr(1)(Yu(e=>!i(e))(t)),Tp=class extends Ie{constructor(t,e){super(t),this.f=e,this.i=0}next(t){this.f(t)?(this.sink.next(this.i++),this.doDefer(),this.complete()):++this.i}},Py=Se(Tp,"findIndex"),Ip=class extends Ie{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.doDefer(),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()}},Ly=Se(Ip,"first"),Sp=class extends Ie{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()}},xy=Se(Sp,"last"),Ap=class extends Ie{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.doDefer(),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()}},ky=Se(Ap,"every");var yp=class extends Ie{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))}},xp=Se(yp,"scan"),bp=class extends Ie{constructor(){super(...arguments),this.hasLast=!1}next(t){this.hasLast?this.sink.next([this.last,t]):this.hasLast=!0,this.last=t}},Uy=Se(bp,"pairwise"),Zu=class extends Ie{constructor(t,e,r){super(t),this.mapper=e,this.thisArg=r}next(t){super.next(this.mapper.call(this.thisArg,t))}},Mo=Se(Zu,"map"),Vy=i=>Se(Zu,"mapTo")(t=>i),Ns=class extends Ie{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()}},Ds=class i extends Ie{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===i.prototype.complete&&(this.complete=this.tryComplete),r.complete=r.tryComplete,r.subscribe(this.makeSource(t,this.index++))}complete(){this.sink.complete()}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},Ku=class extends Ns{},el=class extends Ds{next(t){this.subInner(t,Ku),this.next=e=>{this.currentSink.dispose(),this.subInner(e,Ku)}}},fi=Se(el,"switchMap");function ol(i){return(t,e)=>i(()=>t,e)}var Ji=ol(Se(el,"switchMapTo")),Rp=class extends Ns{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},tl=class extends Ds{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(),Rp),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},Fy=Se(tl,"concatMap"),By=ol(Se(tl,"concatMapTo")),vp=class extends Ns{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},rl=class extends Ds{constructor(){super(...arguments),this.inners=new Set}next(t){this.subInner(t,vp),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(t=>t.resetComplete()):this.dispose()}},$y=Se(rl,"mergeMap"),Hy=ol(Se(rl,"mergeMapTo")),Cp=class extends Ns{dispose(){this.context.resetNext(),super.dispose()}},il=class extends Ds{next(t){this.next=qe,this.subInner(t,Cp)}},Wy=Se(il,"exhaustMap"),Gy=ol(Se(il,"exhaustMapTo")),Np=class extends Ie{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)}},jy=Se(Np,"groupBy"),Dp=class extends Ie{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}},qy=Se(Dp,"timeInterval"),wp=class extends Ie{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()}},zy=Se(wp,"bufferTime"),Mp=class extends Ie{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)}},Jy=Se(Mp,"delay"),Op=class extends Ie{constructor(t,e){super(t),this.selector=e}error(t){this.dispose(),this.selector(t)(this.sink)}},kp=Se(Op,"catchError"),Pp=class extends Ns{tryComplete(){let t=this.context.inners.delete(this);super.dispose(),t&&this.context.checkComplete()}next(t){this.sink.next(t),this.context.expandValue(t)}},Lp=class extends Ds{constructor(t,e){super(t,e),this.project=e,this.inners=new Set,this.sourceCompleted=!1}next(t){this.sink.next(t),this.expandValue(t)}expandValue(t){let e=new Pp(this.sink,t,this);this.currentSink=e,this.complete=this.tryComplete,e.complete=e.tryComplete,this.inners.add(e),e.subscribe(this.makeSource(t,this.index++))}complete(){this.sourceCompleted=!0,this.checkComplete()}checkComplete(){this.sourceCompleted&&this.inners.size===0&&(this.resetComplete(),super.complete())}tryComplete(){this.sourceCompleted=!0,this.checkComplete()}},Xy=Se(Lp,"expand");var Qy=()=>i=>new Promise((t,e)=>{let r;new vs(i,o=>r=o,e,()=>t(r))}),Yy=()=>i=>{let t;return new ReadableStream({start(e){t=new vs(i,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){t.dispose()}})},Le=(i=qe,t=qe,e=qe)=>r=>new vs(r,i,t,e),Up=class extends Ie{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)}))}},ws=Se(Up,"tap"),Vp=class extends Ie{constructor(t,e){super(t),this.timeout=e,this.id=setTimeout(()=>this.error(new Ec(this.timeout)),this.timeout)}next(t){super.next(t),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},Fp=Se(Vp,"timeout"),Zy=(i=1/0)=>t=>{if(t instanceof Nr){let e=Fe(r=>{let o=i,s=new Ie(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,Et.pipe(e),e}else return e=>{let r=i,o=new Ie(e);o.error=s=>{r-- >0?t(o):e.error(s)},t(o)}};var Vn=(e=>(e[e.AUTO_SWITCH_NEW_DEVICE=0]="AUTO_SWITCH_NEW_DEVICE",e[e.WAIT_CURRENT_DEVICE=1]="WAIT_CURRENT_DEVICE",e))(Vn||{}),Ms=class Ms extends bs{constructor(e,r){super({mediaType:e,PlayerClass:r});m(this,"isRemote",!1);m(this,"deviceId");m(this,"groupId","");m(this,"label","");m(this,"sourceTrack");m(this,"enableAutoSwitchWhenRecapturing",!0);m(this,"_isRecapturing",!1);m(this,"_lastRecaptureTime",0);m(this,"_onMuteTimeoutId",-1);m(this,"_encodeCheckTimeoutId",-1);m(this,"recaptureMode",0);m(this,"profile");m(this,"retryEncodeFailed")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}get isUseCustomSource(){return!!(this.mediaTrack&&this.sourceTrack!==this.mediaTrack)}encodeFrame(e,r){throw new Error("Method not implemented.")}installTrackEvent(e){e.addEventListener(M.MUTE,this.onTrackMuted),e.addEventListener(M.UNMUTE,this.onTrackUnmuted),e.addEventListener(M.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===M.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){e.removeEventListener(M.MUTE,this.onTrackMuted),e.removeEventListener(M.UNMUTE,this.onTrackUnmuted),e.removeEventListener(M.ENDED,this.onTrackEnded)}setStateToReady(){}capture(e,r=!1){return b(this,null,function*(){var s;let o=this.sourceTrack;try{let n=pe();x.emit(V.LOCAL_TRACK_CAPTURE_START,{track:this});let a;e.customSource?(a=new MediaStream,a.addTrack(e.customSource)):(r||(s=this.sourceTrack)==null||s.stop(),a=yield t_(e));let d=a.getTracks()[0];return yield this.setInputMediaStreamTrack(d),e.customSource||(this.sourceTrack=d,this.updateDeviceIdInUse(),this.listenDeviceChange()),x.emit(V.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:pe()-n}),a}catch(n){throw x.emit(V.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:n}),this.log.error(`getUserMedia error observed ${n}`),n}finally{r&&(o==null||o.stop())}})}setOutputMediaStreamTrack(e){var r;if(super.setOutputMediaStreamTrack(e),this.setStateToReady(),this.isPublishing||this.isPublished)return(r=this.room)==null?void 0:r.replaceTrack(this)}get hasFlag(){var r,o;let e=ds(((r=this.room)==null?void 0:r.localPublishFlag)||0,((o=this.room)==null?void 0:o.userId)||"");return this.mediaType===4&&e.hasVideo||this.mediaType===1&&e.hasAudio||this.mediaType===2&&e.hasAuxiliary}publish(e,r){return b(this,null,function*(){return this.room=e,this.room.localTracks.add(this),this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.bindParent(e.getLogger()),yield r,this._checkPublishFlag(e)})}_checkPublishFlag(e){return new Promise((r,o)=>b(this,null,function*(){var d,l,p,f,_;let s=()=>o(new ce({code:z.API_CALL_ABORTED,message:"publish aborted"}));if(this.hasFlag||this.muted?r():((this.state===he.INIT||this.state==="ready")&&s(),be(ye(e,"local-publish-flag-changed"),er(()=>this.hasFlag),Je(_c(ye(this,he.INIT),ye(this,"ready"))),Le(r,o,s))),(p=(l=(d=this.room)==null?void 0:d.networkQuality)==null?void 0:l.hadRecentBadUplink)!=null&&p.call(l,2))return r();let n=e.heartbeatCount,a=((_=(f=this.mediaTrack)==null?void 0:f.stats)==null?void 0:_.totalFrames)||0;this._encodeCheckTimeoutId=setTimeout(()=>b(this,null,function*(){var I,R,y,N,P,W,G,ae;if((y=(R=(I=this.room)==null?void 0:I.networkQuality)==null?void 0:R.hadRecentBadUplink)!=null&&y.call(R,2)||e.heartbeatCount-n<3)return r();if((this.isPublished||this.isPublishing)&&this.isMediaTrackActive){if((N=this.mediaTrack)!=null&&N.stats){let Y=this.mediaTrack.stats.totalFrames||0;Y-a===0&&this.log.warn("capture totalFrames is 0 during encode check, totalFrames",Y)}let ke=this.kind===M.AUDIO,Me=this.stat.bytesSent>0;if(J[Me?"addSuccessEvent":"addFailedEvent"]({key:ke?503700:513702}),!ke){let Y=((W=(P=this.room)==null?void 0:P.videoCodec)==null?void 0:W.toUpperCase())||"H264",Or={H264:513704,H265:513705,VP8:513706}[Y];Or&&J[Me?"addSuccessEvent":"addFailedEvent"]({key:Or})}if(!Me){if(J.addEnum({key:ke?503701:513703,value:Es()}),Ue.uploadEvent({log:`stat-encode-failed-${this.kind}-${Vi()||Jr()}`,userId:this.userId}),this.log.warn(ke?"encode failed":`${(ae=(G=this.room)==null?void 0:G.videoCodec)==null?void 0:ae.toUpperCase()} encode failed`),this.retryEncodeFailed&&(this.log.warn("retry encode"),yield this.retryEncodeFailed(this),this.stat.bytesSent>0||this.hasFlag||(yield Hr(5e3),this.stat.bytesSent>0||this.hasFlag)))return r();this.emit("6",this),o(new ce({message:`${this.strMediaType} encode failed`,code:ke?z.AUDIO_ENCODE_FAILED:z.VIDEO_ENCODE_FAILED}))}}}),1e4)}))}unpublish(){this.room&&this.room.localTracks.delete(this),this.log.info("unpublish"),x.emit(V.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return b(this,null,function*(){if(this.sourceTrack&&Nn){let{deviceId:e,groupId:r}=this.sourceTrack.getSettings(),{label:o}=this.sourceTrack;(yield KE({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=o,r&&(this.groupId=r),Pn().then(n=>{let a=n.find(d=>{let l=d.deviceId===e;return r&&(l=l&&d.groupId===r),l});a&&this.emit("2",a)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.sourceTrack||this.kind===M.AUDIO&&!ZE(this.sourceTrack)||this.kind===M.VIDEO&&!YE(this.sourceTrack)||this._isRecapturing||e&&jr&&ct)}onTrackMuted(){if(super.onTrackMuted(),i_(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<on){setTimeout(()=>this.onTrackMuted(),on);return}this._onMuteTimeoutId=setTimeout(()=>b(this,null,function*(){var e;if((e=this.sourceTrack)!=null&&e.muted){if((it||rt)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return b(this,null,function*(){if(Dt(Ms.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()&&this.recaptureMode===0){if(Date.now()-this._lastRecaptureTime<on){setTimeout(()=>this.onTrackEnded(),on);return}this.emit("7"),this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e,r=!1){return b(this,null,function*(){var n;if(this._isRecapturing||!this.sourceTrack)return;this.log.warn("recapture trying");let o=this.sourceTrack;r||(n=this.sourceTrack)==null||n.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let s={useExactDeviceId:!0};if(e==="user"||e==="environment")s.facingMode=e;else{let a;(this.kind==="audio"?yield nr():yield ar()).find(l=>l.deviceId===e)&&(a=e),s.deviceId=a}return this.capture(s,r).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),x.emit(V.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(a=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${a.message}`),this.emit("5",a),x.emit(V.LOCAL_TRACK_RECAPTURE,{track:this,error:a})}).finally(()=>{r&&(o==null||o.stop())})})}getRecoverCaptureDeviceId(){return b(this,null,function*(){let e=this instanceof Ir;if(e&&this.facingMode)return this.facingMode;let{deviceId:r}=this;if(r){let o=(Ac.get(r)||0)+1;if(Ac.set(r,o),o>=3&&this.enableAutoSwitchWhenRecapturing){let s=e?(yield ar()).find(n=>!Ac.has(n.deviceId)):(yield nr()).find(n=>!Ac.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)),this._inputTrack&&this.uninstallTrackEvent(this._inputTrack),(e=this.manager)==null||e.removeInput(this),this._onMuteTimeoutId&&clearTimeout(this._onMuteTimeoutId)}close(){super.close(),this.stopCapture()}};Z([ot(he.INIT,"ready",{ignoreError:!0,sync:!0})],Ms.prototype,"setStateToReady",1),Z([Wu()],Ms.prototype,"capture",1),Z([ot("ready","publish",{ignoreError:!0,success(){x.emit(V.LOCAL_TRACK_PUBLISHED,{track:this,room:this.room}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),this.log.info("published")},fail(e){var n;(n=this.room)==null||n.localTracks.delete(this);let r="error",o=e instanceof ce?e:e.cause instanceof ce?e.cause:e,s=!1;o instanceof ce&&(o.message.includes("timeout")?r="timeout":o.code===z.API_CALL_ABORTED&&(s=!0,r="api-call")),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:r,error:o}),this.log[s?"info":"error"]("publish failed",o)}}),ju(521714,!1)],Ms.prototype,"publish",1),Z([Pe(e=>function(){return b(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)})}),ot([],"ready",{sync:!0})],Ms.prototype,"unpublish",1);var Zr=Ms,Ac=new Map;x.on(V.SWITCH_DEVICE_SUCCESS,i=>{i.track.deviceId&&Ac.delete(i.track.deviceId)});var gi=class i extends Zr{constructor(e){super(1,$u);m(this,"mediaType",1);m(this,"volume",0);m(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});m(this,"playerMuted",!0);m(this,"pipeline");m(this,"earMonitorGainNode",new It);m(this,"_output",new It);m(this,"codecPipeline",[]);m(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});m(this,"mixedAudioReferenceMap",new Map);m(this,"isAudioContextLongSuspended",!1);m(this,"after3aSilenceStartTime",0);m(this,"_micMuted",!1);m(this,"_volumeDetectionTrack",null);m(this,"_volumeDetectionSource",new It);this.manager=e,this.pipeline=new Mn(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._volumeDetectionSource.pipeTo(this.player.pipeline.volumeMeter),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this),x.on(V.AUDIO_CONTEXT_LONG_SUSPENDED,this.handleAudioContextLongSuspended,this)}get dbVolume(){return Fu.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.isProcessEnabled)return this.player.getInternalAudioLevelAfter3A()}updateAfter3aSilenceStartTime(e){O(e)||(e===0&&!this.after3aSilenceStartTime?this.after3aSilenceStartTime=pe():e>0&&(this.after3aSilenceStartTime=0))}setInputMediaStreamTrack(e){return b(this,null,function*(){let r=this.trackSettings||{};J.addEnum({key:501701,value:r.channelCount||0,useUV:!1}),J.addEnum({key:501702,value:r.sampleRate||0,useUV:!1}),J.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 Dt(i.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture(a){return b(this,arguments,function*({deviceId:e,customSource:r,useExactDeviceId:o=!0,retryWhenExactFailed:s},n=!1){let d=yield Dt(i.prototype,this,"capture").call(this,{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},n);return Co(),d})}switchDevice(e){return b(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e&&!this.isUseCustomSource)if(e===ss){if(yield Zh(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}),x.emit(V.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(){lt&&!lt.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&<.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return b(this,null,function*(){if(e.deviceId===this.deviceId){let r=this.recaptureMode===1;if(this.log.warn(`RecaptureMode: ${Vn[this.recaptureMode]}. Current microphone is lost: ${JSON.stringify(e)}`),this.recaptureMode===0){ht(this.userId,{eventId:2003,param1:6,streamType:1});let o=yield nr();o[0]?this.recapture(o[0].deviceId):r=!0}r&<.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.recaptureMode===1&&e.deviceId!==this.deviceId||(lt.off("audioInputAdded",this.handleMicrophoneAdded,this),this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId))}update3A(s){return b(this,arguments,function*({echoCancellation:e,noiseSuppression:r,autoGainControl:o}){let n=this.sourceTrack||this.mediaTrack;if(!n)return;let a=n.getConstraints(),d=!1;!O(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,a.echoCancellation=e,d=!0),!O(r)&&r!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=r,a.noiseSuppression=r,d=!0),!O(o)&&o!==this.profile.autoGainControl&&(this.profile.autoGainControl=o,a.autoGainControl=o,d=!0),d&&(nt||ct?yield n.applyConstraints(a).catch(l=>this._log.warn("update3A failed: ",l)):this.deviceId&&(yield this.recapture(this.deviceId,!0)))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&J.addEnum({key:502700,value:2})}setMute(e,r){var o;this._cleanupVolumeDetectionTrack(),e==="microphone"?(this._micMuted=!0,this.sourceTrack&&(this.sourceTrack.enabled=!1),r&&this._setupVolumeDetectionTrack(),((o=this.manager)==null?void 0:o.mixWeight)<=1?(this.muted=!0,this._inputTrack&&(this._inputTrack.enabled=!1),this._outputTrack&&(this._outputTrack.enabled=!1),this.emit("mute",this),x.emit(V.TRACK_MUTED,{track:this})):this._outputTrack&&(this._outputTrack.enabled=!0)):e===!0?(this._micMuted=!1,this.muted=!0,this.sourceTrack&&(this.sourceTrack.enabled=!1),this._inputTrack&&(this._inputTrack.enabled=!1),this._outputTrack&&(this._outputTrack.enabled=!1),r&&this._setupVolumeDetectionTrack(),this.emit("mute",this),x.emit(V.TRACK_MUTED,{track:this})):(this._micMuted=!1,this.muted=!1,this.sourceTrack&&(this.sourceTrack.enabled=!0),this._inputTrack&&(this._inputTrack.enabled=!0),this._outputTrack&&(this._outputTrack.enabled=!0),this.emit("unmute",this),x.emit(V.TRACK_UNMUTED,{track:this}))}_setupVolumeDetectionTrack(){let e=this.sourceTrack||this.mediaTrack;if(!e)return;this._volumeDetectionTrack=e.clone(),this._volumeDetectionTrack.enabled=!0;let r=On(this._volumeDetectionTrack);r&&this._volumeDetectionSource.setNode(r)}_cleanupVolumeDetectionTrack(){this._volumeDetectionTrack&&(this._volumeDetectionTrack.stop(),this._volumeDetectionTrack=null),this._volumeDetectionSource.deleteNode()}get isMicMuted(){return this._micMuted}setAudioVolume(e){super.setAudioVolume(0),it&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(ze().createGain()),this._output.setNode(ze().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}enableTrackAEC(e){if(this.sourceTrack&&!(ct||it))return this.update3A({echoCancellation:e})}addDenoiser(e){var r;if(Ut<=92&&((r=this.trackSettings)==null?void 0:r.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}J.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=On(e);if(!o)return;let s=new It,n=ze().createGain();n.gain.value=1;let a=new It;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){this.pipeline.silentNode.setNode(o),this.pipeline.mixNode.setNode(r),this.pipeline.aec.setNode(e)}removeDenoiser(e){if(this.pipeline.denoiser.node===e)return this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0)}removeAudioProcessor(e){this.pipeline.aec.node===e&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode())}close(){this._cleanupVolumeDetectionTrack(),this.mixedAudioReferenceMap.forEach(([e,r])=>{e.deleteNode(),r.deleteNode()}),this.mixedAudioReferenceMap.clear(),this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),lt.off("audioInputAdded",this.handleMicrophoneAdded,this),lt.off("audioInputRemoved",this.handleMicrophoneRemoved,this),x.off(V.AUDIO_CONTEXT_LONG_SUSPENDED,this.handleAudioContextLongSuspended,this),super.close()}recapture(e,r=!1){return b(this,null,function*(){try{yield Dt(i.prototype,this,"recapture").call(this,e,r)}catch(o){let s=(yield nr()).find(n=>n.deviceId!==e);if(s)yield Dt(i.prototype,this,"recapture").call(this,s.deviceId);else throw o}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((r,o)=>o?o({frame:r,ntp:Ci()}):r,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}get enableEncryptFrame(){return this.manager&&!!this.manager.encodePipeline[0]}handleAudioContextLongSuspended({isSuspended:e}){if(this.pipeline.isProcessEnabled)if(e){this.isAudioContextLongSuspended=!0,this.log.warn(`context has suspended for ${Xh/1e3} seconds, change to source audio${vr?"":", non-Safari"}`);let r=this.sourceTrack||this.mediaTrack;r&&this.setOutputMediaStreamTrack(r)}else this.isAudioContextLongSuspended=!1,this.log.warn("context has resumed, change to processed audio"),this.pipeline.track&&this.setOutputMediaStreamTrack(this.pipeline.track)}setOutputMediaStreamTrack(e){if(this.isAudioContextLongSuspended){let r=this.sourceTrack||this.mediaTrack;r&&(e=r)}super.setOutputMediaStreamTrack(e)}};function Fn(i,t){return t+4<=i.byteLength&&i.getUint8(t)===0&&i.getUint8(t+1)===0&&i.getUint8(t+2)===0&&i.getUint8(t+3)===1?4:t+3<=i.byteLength&&i.getUint8(t)===0&&i.getUint8(t+1)===0&&i.getUint8(t+2)===1?3:0}function sl(i,t=!1){let e=new DataView(i),r=[],o=0;for(;o<e.byteLength;){let s=Fn(e,o);if(s===0){o+=1;continue}let n=-1;for(let f=o+s;f<e.byteLength;f+=1)if(Fn(e,f)>0){n=f;break}let a=n===-1?e.byteLength:n,d=a-o,l=new ArrayBuffer(d),p=new DataView(l);for(let f=0;f<d;f+=1)p.setUint8(f,e.getUint8(o+f));r.push(new Xi(p,t)),o=a}return r}var Xi=class{constructor(t,e=!1){this.dataView=t;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let{seiPayloadStartIndex:t}=this,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+=1: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{seiPayloadStartIndex:t}=this,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 seiPayloadStartIndex(){let t=6;for(let e=6;e<this.dataView.buffer.byteLength&&(t+=1,this.dataView.getUint8(e)===255);e+=1);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 n=6;n<this.dataView.buffer.byteLength;n+=1){let a=this.dataView.getUint8(n);if(e+=1,a===255)t+=255;else{t+=a;break}}let r=new ArrayBuffer(t),o=new DataView(r),s=e;for(let n=0;n<r.byteLength;n+=1)o.setInt8(n,this.dataView.getInt8(s+n));return o}get naluType(){let t=this.getStartCodeLength();return t>=this.dataView.byteLength?0:this.dataView.getUint8(t)&31}getStartCodeLength(){return this.dataView.byteLength>=4&&this.dataView.getUint8(0)===0&&this.dataView.getUint8(1)===0&&this.dataView.getUint8(2)===0&&this.dataView.getUint8(3)===1?4:this.dataView.byteLength>=3&&this.dataView.getUint8(0)===0&&this.dataView.getUint8(1)===0&&this.dataView.getUint8(2)===1?3:0}get isIDR(){return this.naluType===5}get isSPS(){return this.naluType===7}get isPPS(){return this.naluType===8}get isSEI(){return this.naluType===6}};var nl=class{constructor(){m(this,"_seiMessageList",[]);m(this,"_smallSeiMessageList",[]);m(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 Xi(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((_,I)=>_+I.dataView.byteLength,0),d=new ArrayBuffer(a+t.data.byteLength),l=new DataView(d),p=new DataView(t.data),f=0;for(let _=0;_<n.length;_++)for(let I=0;I<n[_].dataView.byteLength;I++)l.setInt8(f++,n[_].dataView.getInt8(I));for(let _=0;_<t.data.byteLength;_++)l.setInt8(f++,p.getInt8(_));return t.data=d,n.length}return 0}};var Oo=class Oo extends Zr{constructor(e,r=4){super(r,Ft);m(this,"profile",Q({},ya));m(this,"avoidCropping",!1);m(this,"_scaleResolutionDownBy");m(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0,framesCaptured:0});m(this,"small");m(this,"isNeedToSetBandwidth");m(this,"muteImage");m(this,"manager");m(this,"_seiCodec",new nl);this.manager=e;let o=()=>{var s;if(this.isAllowed2k4k(this.profile))this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1});else{let n=Rr(((s=this.room)==null?void 0:s.sdkAppId)||0)?Sd:Id;this.log.warn(`Resolution is reset to 1080p, need to upgrade ability here ${n}`),this.setProfile(Te(Q({},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(!(!Nn||!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"}get hasSmall(){var e;return!!((e=this.manager)!=null&&e.hasSmall)}setMute(e){return b(this,null,function*(){var r,o,s;if(Oe(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,fillVideo:!0}),this.muteImage=e,Dt(Oo.prototype,this,"setMute").call(this,!1)}else this.muteImage&&(yield(s=this.manager)==null?void 0:s.deleteWatermark("mute"),this.muteImage=void 0),Dt(Oo.prototype,this,"setMute").call(this,e)})}capture(a){return b(this,arguments,function*({deviceId:e,facingMode:r,useExactDeviceId:o=!0,customSource:s,retryWhenExactFailed:n=!0}){let d={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};if(d.facingMode==="environment"){let l=yield this.getDeviceIdWhenUsingBackCamera();l&&(d.cameraId=l)}return Dt(Oo.prototype,this,"capture").call(this,d)})}setProfile(e){var o;let r=this.fallbackProfile(e);if(r.bitrate&&(this.isNeedToSetBandwidth=r.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile))super.setProfile(r);else{let s=Rr(((o=this.room)==null?void 0:o.sdkAppId)||0)?Sd:Id;this.log.warn(`Resolution is reset to 1080p, need to upgrade ability here ${s}`),super.setProfile(Te(Q({},this.profile),{width:1920,height:1080}))}}applyProfile(){return b(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&&(Pt===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:d=0,height:l=0}=(this.sourceTrack||this.mediaTrack).getSettings(),p=d*l;if(n&&p&&o&&p===o){this.log.warn("set bandwidth failed: resolution is not changed");return}return this.room.setBandWidth({bandwidth:this.profile.bitrate,type:M.VIDEO,videoType:M.BIG})}})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},r=this.sourceTrack||this.mediaTrack;return Nn&&r&&Object.assign(e,r.getSettings()),e}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:Fd(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 b(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e)&&!this.isUseCustomSource)return;let r={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?r.facingMode=e:r.deviceId=e,this.sourceTrack&&this.sourceTrack.stop(),yield this.capture(r),x.emit(V.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}})}getDeviceIdWhenUsingBackCamera(){return b(this,null,function*(){let e;try{if($a&&!Sn&&Mh){let o=(yield ar(!0)).map(n=>{var a;return Te(Q({},n),{capabilities:(a=n.getCapabilities)==null?void 0:a.call(n)})}).filter(n=>{var a,d;return(d=(a=n.capabilities)==null?void 0:a.facingMode)==null?void 0:d.includes("environment")}),s=o[0];o.forEach(n=>{var p,f,_,I;let{capabilities:a}=n,d=(p=a.width)!=null&&p.max&&((f=a.height)!=null&&f.max)?a.width.max*a.height.max:0,l=(_=s.capabilities.width)!=null&&_.max&&((I=s.capabilities.height)!=null&&I.max)?s.capabilities.width.max*s.capabilities.height.max:0;d>l&&(s=n)}),s!=null&&s.capabilities&&(this._log.info("use max resolution back camera",s),e=s.deviceId)}}catch(r){this._log.warn("get max res camera failed",r)}return e})}updateSmallConfig(e){return b(this,null,function*(){var o,s;this._log.info(`update small stream config: ${JSON.stringify(e)}`);let r=!this.small;this.small=this.fallbackProfile(e,!0),yield(o=this.manager)==null?void 0:o.update(),r&&(yield(s=this.room)==null?void 0:s.enableSmall(!0)),this.log.info("update small stream config success")})}fallbackProfile(e,r=!1){let o=e.width>e.height,s=Q({},e);return e.width*e.height<=19200&&rt&&qr&&(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&&Km&&(s.width=o?1280:720,s.height=o?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),Ym(Er,"14.3")&&Ga(Er,"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&&(qr||nt)&&!fs()&&e.width*e.height<=640*360&&e.width/e.height===16/9&&(this._scaleResolutionDownBy=1280/e.width,s.width=1280,s.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(){lt&&!lt.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&<.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return b(this,null,function*(){if(e.deviceId===this.deviceId){let r=this.recaptureMode===1;if(this.log.warn(`RecaptureMode: ${Vn[this.recaptureMode]}. Current camera is lost: ${JSON.stringify(e)}`),this.recaptureMode===0){ht(this.userId,{eventId:2003,param1:7,streamType:2});let o=yield ar();o[0]?this.recapture(o[0].deviceId):r=!0}r&<.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return b(this,null,function*(){this.recaptureMode===1&&e.deviceId!==this.deviceId||(lt.off("videoInputAdded",this.handleCameraAdded,this),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 O(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,r)}close(){lt.off("videoInputAdded",this.handleCameraAdded,this),lt.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return b(this,null,function*(){try{yield Dt(Oo.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield ar()).find(s=>s.deviceId!==e);if(o)yield Dt(Oo.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||O(e)||e!==this.rotation&&(this.rotation=e,this.manager.rotation=e))}};Z([Do(function(e){this.setContentHint(e.contentHint||"motion")})],Oo.prototype,"capture",1);var Ir=Oo;var Wp={};vi(Wp,{REPORT_TYPE:()=>pn,buildSSOPackage:()=>Oi,bytes2ms:()=>_g,calculateScaleResolutionDownNumber:()=>Fd,concatArrayBuffers:()=>Bd,convertObjectNumberToInt:()=>Ma,copyProperties:()=>Eg,deepClone:()=>ns,deepCloneBasic:()=>Pd,deepMerge:()=>$r,delay:()=>Hr,fibonacci:()=>as,formatedTime:()=>xd,getConstructorName:()=>dn,getContainerFromElement:()=>Cg,getEnv:()=>mg,getFirst16Bits:()=>wg,getInternalVersion:()=>Rg,getLast16Bits:()=>$d,getLoggerUrl:()=>Mi,getMediaStreamTrackInfo:()=>Vd,getMuteStateFromFlag:()=>ds,getNetworkType:()=>cn,getNumNetworkType:()=>Ld,getReconnectionTimeout:()=>Ig,getStringByteLength:()=>Ng,getTestSignalDomain:()=>hg,getTurnServer:()=>vg,getUint32Version:()=>kd,getValueType:()=>gt,getViewListFromView:()=>mn,glog:()=>Na,ipv4ToUint32:()=>ln,isArray:()=>ut,isAudioWorkletSupported:()=>yg,isBoolean:()=>Ze,isConstructor:()=>cs,isEmpty:()=>un,isFunction:()=>Xe,isLangChinese:()=>Br,isMediaStreamTrack:()=>Sg,isNumber:()=>Be,isObject:()=>fr,isOverseaSdkAppId:()=>Rr,isPlainObject:()=>Jt,isPortrait:()=>Bm,isPromise:()=>ho,isRemoteTrack:()=>Ag,isRotate90Or270:()=>gr,isSetSinkIdSupported:()=>bg,isString:()=>Oe,isUndefined:()=>O,loadImage:()=>hn,loadVideo:()=>Dg,ms2bytes:()=>Tg,ms2samples:()=>Fm,normalizeUrl:()=>us,performanceNow:()=>pe,promiseAny:()=>Da,samples2ms:()=>Vm,setNetworkTypeFromWebRTC:()=>gg,stringify:()=>br,stringifyIncludeValue:()=>wa,throttlePromise:()=>Ud});var eb=[-1,-1,1,-1,-1,1,1,1],tb=[0,0,1,0,0,1,1,1];var Po=class Po extends he{constructor(e,r){super();this.context=e;m(this,"name");m(this,"input");m(this,"output");m(this,"texture");m(this,"ctx2d",null);m(this,"fbo");m(this,"width",0);m(this,"height",0);m(this,"x",0);m(this,"y",0);m(this,"program");m(this,"vertexShader");m(this,"fragmentShader");m(this,"totalFrames",0);m(this,"dropFrames",0);m(this,"matchInputSize",!0);m(this,"texCoordBuffer");m(this,"positionBuffer");m(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});m(this,"cost",0);m(this,"_canvas",null);m(this,"_image");m(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 xt){e.ctx&&r.create2d&&(typeof OffscreenCanvas=="function"&&Pt!==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(tb),this.positionBuffer=this.createBuffer(eb),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.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 ce({code:z.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 Ct&&this.render(e)||this.context instanceof xt&&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 Ct){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,d,l,p){let f=!O(a)&&!O(d)&&!O(l)&&!O(p);return this.ctx2d&&e?(e instanceof ImageData?(f?this.ctx2d.putImageData(e,r,o,a,d,l,p):this.ctx2d.putImageData(e,r,o),this.emit(Po.RENDER,this.ctx2d.canvas)):(f?this.ctx2d.drawImage(e,a,d,l,p,r,o,s,n):this.ctx2d.drawImage(e,r,o,s,n),this.emit(Po.RENDER,e)),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 f;let{totalFrames:e,x:r,y:o,width:s,height:n,name:a,cost:d}=this,l=Date.now(),p=(e-this.lastInfo.totalFrames)/((l-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:n,timestamp:l,fps:p,name:a,cost:d},Q({parent:(f=this.input)==null?void 0:f.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.UNPACK_ALIGNMENT,1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),o}};m(Po,"RENDER","render"),Z([ot(he.INIT,"connected",{sync:!0})],Po.prototype,"connect",1),Z([ot("connected",he.INIT,{ignoreError:!0,sync:!0})],Po.prototype,"disconnect",1),Z([ot([],"closed",{sync:!0})],Po.prototype,"close",1);var _t=Po;var f_=be(np(250),Mo(()=>performance.now()),zi()),g_=i=>t=>{let e=0,r=performance.now();be(f_,Mo(o=>(o-r)/i>>0),er(o=>o!=e?(e=o,!0):!1))(t)},al=i=>t=>{let e=performance.now();be(f_,Yu(r=>r-e<i),Kr(1))(t)};var ib=[0,1,1,1,0,0,1,0],Os=class extends _t{constructor(e,r){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},r));m(this,"_intervalId",0);m(this,"_sequence",0);m(this,"checkGLError",!1);m(this,"checkVisibilityChange");e instanceof xt?this.ctx2d=e.ctx||null:e.available&&(r!=null&&r.mirrorUpAndDown)&&this.setTexBuffer(ib)}start(e){this.log.info(`${this.name} start render ${e} fps`),mt.clearTask(this._intervalId),this._intervalId=mt.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(mt.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof Ct){let o=this.context.ctx.getError();o&&this.context.destroy(new ce({code:z.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(),this.emit(_t.RENDER,this.context._canvas),!0):!1}addInput(e,...r){super.addInput(e,...r),this.start(this.context.frameRate)}update(e=0){this.state!=="closed"&&(this._intervalId&&(mt.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),mt.clearTask(this._intervalId)}resize(e,r){super.resize(e,r),this.context.setSize(e,r)}close(){super.close(),mt.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},Bn=class extends Os{constructor(e,r){super(e,r);m(this,"_videoTrack");m(this,"_muteOb");m(this,"_closedOb",ye(this,"closed"));m(this,"_subscription");m(this,"_canvasContainer");Number(ki)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e.canvas.captureStream().getVideoTracks(),this._muteOb=ye(this._videoTrack,"mute"),be(ye(this._videoTrack,"ended"),Je(this._closedOb),Le(()=>{this.context.destroy(new ce({code:z.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=be(this._muteOb,Je(this._closedOb),Ji(al(5e3)),er(()=>{var e;return!!((e=this._videoTrack)!=null&&e.muted)&&!document.hidden}),Le(()=>{this.context.destroy(new ce({code:z.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()}},cl=class extends Bn{render(t){var r;let e=!!((r=this.input)!=null&&r.requestFrame(t));if(this.context._canvas2d){let o=this.context._canvas2d.getContext("2d");o.clearRect(0,0,this.context._canvas2d.width,this.context._canvas2d.height),o.drawImage(this.context._canvas,0,0,this.context._canvas2d.width,this.context._canvas2d.height),this.emit(_t.RENDER,this.context._canvas2d)}else this.emit(_t.RENDER,this.context._canvas);return e}};var dl=class extends Bn{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/19200),super.resize(e/Math.sqrt(o),r/Math.sqrt(o))}};var yc=class extends _t{constructor(e,r){super(e,Q({name:"imageSource"},r));m(this,"_lastImage");m(this,"_totalFrames",0);m(this,"_autoResize",!1);m(this,"_canvasRendered");m(this,"videoCallbackId",0);m(this,"waitingFirstFrame",!0);m(this,"shouldUpdate",!0);this._autoResize=(r==null?void 0:r.autoResize)!==!1,Pt===16&&(this._canvasRendered=bt(),be(this._canvasRendered,Tc(this._image),fi(o=>o instanceof HTMLCanvasElement?ye(o,"rendered"):Sc()),Je(ye(this,"closed")),Le(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;let e=this.image;this.videoCallbackId&&e.cancelVideoFrameCallback(this.videoCallbackId),Qr()&&!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 d=this.context.ctx;d.texSubImage2D(d.TEXTURE_2D,0,0,0,d.RGBA,d.UNSIGNED_BYTE,n)}}else{if(r){this.useTexture();let d=this.context.ctx;d.texImage2D(d.TEXTURE_2D,0,d.RGBA,d.RGBA,d.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)}},bc=class extends yc{constructor(e,r,o){super(e,o);this._player=r;this.name="videoPlayerSource",be(ye(this._player,ue.PLAYER_STATE_CHANGED),Je(ye(this,"closed")),er(({state:s})=>s==="PLAYING"),Le(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},Dr=class extends bc{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(t,e,r){super(t,new Ft({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()}},ul=class extends _t{constructor(e,r,o){super(e,Te(Q({name:"textSource"},o),{create2d:!0}));m(this,"hasChange",!0);m(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/),d=(n?parseInt(n[1],10):16)*o,l=this.content.split(`
|
|
32
|
-
`);for(let
|
|
33
|
+
`,t.onclick=this.onQuestionClick.bind(this);let r=document.createElement("div");r.className=Vu,r.innerText=`${ri()?"\u8BE6\u60C5 >":"Detail >"}`,r.onclick=this.onCollapseClick.bind(this);let o=i.content.firstChild,n=o.querySelector(`.${Fc}`);return n.appendChild(r),n.appendChild(t),n.appendChild(e),o}addDiaLog(){Lr()||(Fu=!0,this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${$n}`).onclick=i=>i.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",C.info("show autoplay dialog"),se.uploadEvent({log:oT}))}deleteDialog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null,Fu=!1),Gn=null}onConfirm(){C.warn("confirm clicked, try resume stream"),S.emit(A.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDialog()}onCollapseClick(){let i=this._dialogNode.querySelector(`.${tf}`);i.style.visibility=`${this._showDetail?"hidden":"visible"}`,i.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||se.uploadEvent({log:nT}),this._isCollapseClicked=!0}onQuestionClick(){window.open(nf,"_blank"),this._isQuestionClicked||se.uploadEvent({log:aT}),this._isQuestionClicked=!0}},Gn=null;function go(){Gn||(Gn=new Bu)}function af(){Gn&&Gn.deleteDialog()}var rt=class s extends _i{constructor(e){super(e,_.VIDEO);d(this,"stat",{});d(this,"_calculateTimeout",-1);d(this,"viewMirror",!1);d(this,"objectFit","cover");d(this,"container");d(this,"canvas");d(this,"shouldRenderAlpha",!1);d(this,"_preSize",{width:0,height:0});d(this,"posterImg");d(this,"pipWindow");d(this,"enterPIPPromise");d(this,"_originContainerPosition");d(this,"_isResettingSrcObject",!1);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(_.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,fe&&(e.poster="data:,"),(t=this.container)==null||t.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width:100%;height:100%;object-fit:${this.objectFit};${this.shouldRenderAlpha?"":"background-color:black"};`;return this.viewMirror&&(e+="transform:scaleX(-1);"),e}setContainer(e){var t;this.container=e,this._pausedRetryCount=Ji,this.track&&this.elementToRender&&((t=this.container)==null||t.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),this.handleFullscreenChange=this.handleFullscreenChange.bind(this),this.handleVolumeChange=this.handleVolumeChange.bind(this),e&&e.add(_.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(_.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent).add(_.RESIZE,this.handleElementEvent),this.element&&(this.element.addEventListener(_.FULLSCREEN_CHANGE,this.handleFullscreenChange),this.element.addEventListener("webkitbeginfullscreen",this.handleFullscreenChange),this.element.addEventListener("webkitendfullscreen",this.handleFullscreenChange),this.element.addEventListener("volumechange",this.handleVolumeChange))}handleTrackEvent(e){var t;return e.type===_.MUTE&&((t=this.stat)!=null&&t.fps&&(this.stat.fps=0),this.isFullscreen()&&this.resetSrcObjectToReplay()),super.handleTrackEvent(e)}handleFullscreenChange(){this.isFullscreen()?(this._log.info("enter fullscreen"),this.emit(W.ENTER_FULL_SCREEN)):(this._log.info("leave fullscreen"),this.emit(W.LEAVE_FULL_SCREEN))}handleVolumeChange(){var e;(this.isPictureInPicture()||this.isFullscreen())&&this.emit(W.VOLUME_CHANGE,{muted:(e=this.element)==null?void 0:e.muted})}handleElementEvent(e){var a,c,l,u,m,p;if(this.mode===2)return;super.handleElementEvent(e);let t=e.type,r=this.isPictureInPicture(),o=this.isFullscreen(),n=e.isTrusted&&(r&&ye||o);if(t===_.PLAYING&&n&&!this._isResettingSrcObject&&(this._log.warn(`user resume in ${o?"fullscreen":"pip"}`),this.emit(W.USER_RESUME_IN_PIP_OR_FULL_SCREEN)),t===_.PAUSE&&(n&&(this._log.warn(`user pause in ${o?"fullscreen":"pip"}`),this.emit(W.USER_PAUSE_IN_PIP_OR_FULL_SCREEN)),this.container&&!this.container.isConnected&&(this._log.warn(`${this.kind} player has been remove, element ID: ${this.container.id}`),Ke(500).then(()=>{var h;(h=this.container)!=null&&h.isConnected&&(this._pausedRetryCount=Ji,this._log.info(`view container ${this.container.id} is in dom, reset pausedRetryCount`))})),this._pausedRetryCount>0&&!Lr()&&!this.isPausedByUserCall&&!n&&(this._log.info(`[${Ji-this._pausedRetryCount+1}/${Ji}] ${this.kind} player auto resume when paused`),this.doResume(),this._pausedRetryCount--),Ee&&!n&&(this._interval=ce.run("timeout",()=>{this.element&&this._state==="PAUSED"&&!this.isPausedByUserCall&&this.doResume()},{delay:3e3})),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let h=this.element.style.transform;t===_.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=h.replace("scaleX(-1)",""):t===_.LEAVE_PICTURE_IN_PICTURE&&!h.includes("scaleX")&&(this.element.style.transform=`${h} scaleX(-1)`)}t===_.RESIZE&&(this._preSize.height!==((a=this.element)==null?void 0:a.videoHeight)||this._preSize.width!==((c=this.element)==null?void 0:c.videoWidth))&&(this._log.info(`video size changed to ${(l=this.element)==null?void 0:l.videoWidth}x${(u=this.element)==null?void 0:u.videoHeight}`),this._preSize.height=((m=this.element)==null?void 0:m.videoHeight)||0,this._preSize.width=((p=this.element)==null?void 0:p.videoWidth)||0,this.emit(W.RESIZE,{newWidth:this._preSize.width,newHeight:this._preSize.height})),t===_.LEAVE_PICTURE_IN_PICTURE&&(this._log.warn("exit pip"),this.isPaused&&!this.isPausedByUserCall&&(this._log.warn("resume after exit pip"),this.doResume()),this.resetSrcObjectToReplay(),this.emit(W.LEAVE_PICTURE_IN_PICTURE)),t===_.ENTER_PICTURE_IN_PICTURE&&this.emit(W.ENTER_PICTURE_IN_PICTURE)}resetSrcObjectToReplay(){fe&&br&&this.isPlayCalled&&this.element&&this.track&&!this.isPausedByUserCall&&(this._log.warn("reset srcObject to replay for android chromium"),this._isResettingSrcObject=!0,this.element.srcObject=new MediaStream([this.track]),this.element.play().catch(e=>{this._log.warn("play failed after reset srcObject",e)}).finally(()=>{this._isResettingSrcObject=!1}))}setCanvas(e,t=1){var r,o,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?((o=this.element)==null||o.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,t=!1){return new Promise(r=>{if(!this.element||(this._log.info("setPoster",e.slice(0,10)),e===""?this.element.removeAttribute("poster"):this.element.poster=e,!(t&&(ye||re))))return r();if(e==="")return this.removePosterImg(),r();if(this.posterImg)return r();let n=document.createElement("img");n.src=e;let c=window.getComputedStyle(this.element).objectFit||this.objectFit;n.style=`position:absolute;top:0;left:0;width:100%;height:100%;object-fit:${c};`,n.onload=()=>f(this,null,function*(){var l;try{n.decode&&(yield n.decode()),this.container&&window.getComputedStyle(this.container).position==="static"&&(this._originContainerPosition=this.container.style.position,this.container.style.position="relative"),this.posterImg=n,(l=this.container)==null||l.appendChild(n),is()&&qe<=17&&this.elementToRender&&(this.elementToRender.style.visibility="hidden")}catch(u){this._log.warn("decode poster image error",u)}return r()}),n.onerror=()=>(this._log.warn("load poster image error"),r())})}removePosterImg(){this.posterImg&&(is()&&qe<=17&&this.elementToRender&&(this.elementToRender.style.visibility=""),this.posterImg.remove(),URL.revokeObjectURL(this.posterImg.src),this.container&&!T(this._originContainerPosition)&&this.container.style.position==="relative"&&(this.container.style.position=this._originContainerPosition),delete this.posterImg)}get hasPoster(){var e;return!!this.posterImg||!!((e=this.element)!=null&&e.getAttribute("poster"))}pause(e=!0){return f(this,null,function*(){xe(s.prototype,this,"pause").call(this),!this.isPictureInPicture()&&!this.hasPoster&&(br||e&&(re||ye))&&(yield this.setPoster(this.getVideoFrame(),!0))})}resume(e=!1){return super.resume(e).then(()=>{var t;(this.posterImg||(t=this.element)!=null&&t.poster)&&this.setPoster("",!0)})}doResume(e=!1){return this.isPaused&&e&&this.element&&this.track&&br&&this.track.kind==="video"&&(this.element.srcObject=new MediaStream([this.track])),super.doResume()}stop(e=0){var t;this.isPictureInPicture()&&this.exitPictureInPicture().catch(r=>{}),this.isFullscreen()&&this.exitFullscreen().catch(r=>{}),this.element&&(this.element.removeEventListener(_.FULLSCREEN_CHANGE,this.handleFullscreenChange),this.element.removeEventListener("webkitbeginfullscreen",this.handleFullscreenChange),this.element.removeEventListener("webkitendfullscreen",this.handleFullscreenChange),this.element.removeEventListener("volumechange",this.handleVolumeChange)),super.stop(e),(t=this.canvas)==null||t.remove(),this.removePosterImg()}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(W.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(ir()&&this.element&&this._calculateTimeout<0){let e=0,t=null,r=(o,n)=>{this.stat.width=n.width,this.stat.height=n.height,t&&(this.stat.fps=Math.round((n.presentedFrames-t.presentedFrames)/(o-e)*1e3)),e=o,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)}}enterFullscreen(){return f(this,null,function*(){let e=this.elementToRender;if(!e)throw this._log.warn("no element to render, cannot enter fullscreen"),new Error("No element available for fullscreen");if(Ee&&this.isPictureInPicture()){this._log.info("exit pip before entering fullscreen");try{yield this.exitPictureInPicture()}catch(t){this._log.warn("exit pip failed before fullscreen:",t)}}try{if(e.requestFullscreen)yield e.requestFullscreen();else if(e.webkitRequestFullscreen)yield e.webkitRequestFullscreen();else if(e.webkitEnterFullscreen)yield e.webkitEnterFullscreen();else if(e.mozRequestFullScreen)yield e.mozRequestFullScreen();else if(e.msRequestFullscreen)yield e.msRequestFullscreen();else throw new Error("Fullscreen API not supported");this._log.info("entered fullscreen mode")}catch(t){throw this._log.error("failed to enter fullscreen:",t),t}})}exitFullscreen(){return f(this,null,function*(){try{if(document.exitFullscreen)yield document.exitFullscreen();else if(document.webkitExitFullscreen)yield document.webkitExitFullscreen();else if(document.mozCancelFullScreen)yield document.mozCancelFullScreen();else if(document.msExitFullscreen)yield document.msExitFullscreen();else throw new Error("Exit fullscreen API not supported");this._log.info("exited fullscreen mode")}catch(e){throw this._log.error("failed to exit fullscreen:",e),e}})}isFullscreen(){let e=this.elementToRender;return e?this.element&&this.element.webkitDisplayingFullscreen?!this.isPictureInPicture():(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)===e:!1}toggleFullscreen(){return f(this,null,function*(){this.isFullscreen()?yield this.exitFullscreen():yield this.enterFullscreen()})}enterPictureInPicture(){return f(this,null,function*(){this.enterPIPPromise=this._enterPictureInPicture();try{return yield this.enterPIPPromise}finally{delete this.enterPIPPromise}})}_enterPictureInPicture(){return f(this,null,function*(){var e;try{if(!this.element)throw new Error("No video element available for pip");if(this.canvas&&this.mode!==1)throw new Error("pip is not supported for canvas-only mode");let{element:t}=this;if(t.requestPictureInPicture){this._log.info("requestPictureInPicture");let r=yield t.requestPictureInPicture();return this.pipWindow=r,this._log.info("entered pip mode"),this.elementToRender===this.canvas&&(this.canvas.remove(),(e=this.container)==null||e.appendChild(this.element)),r}if(t.webkitSetPresentationMode)return this._log.info("webkitSetPresentationMode"),yield t.webkitSetPresentationMode("picture-in-picture"),this._log.info("entered pip mode (webkit)"),{};throw new Error("pip API not supported")}catch(t){throw this._log.error("failed to enter pip:",t.name,t.message),t}})}exitPictureInPicture(){return f(this,null,function*(){var e,t;try{if(!this.isPictureInPicture())return;if(delete this.pipWindow,document.pictureInPictureElement&&document.exitPictureInPicture)yield document.exitPictureInPicture(),this.elementToRender===this.canvas&&((e=this.element)==null||e.remove(),this._pausedRetryCount=Ji,(t=this.container)==null||t.appendChild(this.canvas)),this._log.info("exited pip mode");else if(this.element&&this.element.webkitSetPresentationMode)yield this.element.webkitSetPresentationMode("inline"),this._log.info("exited pip mode (webkit)");else throw new Error("Exit pip API not supported or not in PiP mode")}catch(r){throw this._log.error("failed to exit pip:",r),r}})}isPictureInPicture(){if(!this.element)return!1;let{element:e}=this;return document.pictureInPictureElement?document.pictureInPictureElement===e:e.webkitPresentationMode?e.webkitPresentationMode==="picture-in-picture":!1}togglePictureInPicture(){return f(this,null,function*(){this.isPictureInPicture()?yield this.exitPictureInPicture():yield this.enterPictureInPicture()})}};function sr(s,i){return f(this,null,function*(){if(!s.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield s.audioWorklet.addModule(i),C.info("worklet addModule success")}catch(e){throw C.info(`worklet addModule catch error. ${e.message}`),e}})}var Wn;typeof AudioContext!="undefined"?Wn=AudioContext:typeof webkitAudioContext!="undefined"?Wn=webkitAudioContext:typeof mozAudioContext!="undefined"&&(Wn=mozAudioContext);var Ju=1500,st,cf=-1,Hc=0,Jn=-1,Wu=!1,df=0,lf=-1,uf=-1;hf();function hf(){try{if(st)return;st=new Wn({sampleRate:48e3}),st.onstatechange=()=>{C.info(`context state: ${st.state}${st.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),Eo()},clearTimeout(cf)}catch(s){C.error(`initAudioContext failed: ${s} typeof AudioContextClass: ${typeof Wn}`),cf=setTimeout(hf,1e3)}}var Eo=()=>{st.state==="suspended"?(Hc=x(),dT(),wr(),document.addEventListener("click",Eo)):st.state==="interrupted"?wr():(Hc&&(y.addNumber({key:507800,value:x()-Hc,split:[0,500,1e3,1500,2e3,3e3,4e3,5e3,1e4,3e4],max:6e4}),Hc=0),lT(),document.removeEventListener("visibilitychange",Eo),document.removeEventListener("click",Eo))},$u=0,Gu=-1;function wr(){return new Promise((s,i)=>{if(st.state==="running")return s();Date.now()-$u<1e3?(clearTimeout(Gu),Gu=setTimeout(()=>{$u=Date.now(),st.resume().then(s,i)},1e3)):(clearTimeout(Gu),$u=Date.now(),st.resume().then(s,i))}).catch(s=>{C.warn(`context resume failed: ${s}`),document.addEventListener("visibilitychange",Eo)})}document.addEventListener("click",Eo);function dT(){Jn===-1&&(Jn=setTimeout(()=>{st.state==="suspended"&&(Wu=!0,S.emit("155",{isSuspended:!0}))},Ju))}function lT(){Jn!==-1&&(clearTimeout(Jn),Jn=-1,Wu&&(Wu=!1,S.emit("155",{isSuspended:!1})))}function mf(){if(!Ee||uf!==-1)return;let s=()=>{x()-df<500||(st&&st.state==="running"&&st.currentTime===lf&&(C.warn("context is fake running, auto resume"),st.suspend().catch(i=>{C.warn(`context suspend failed: ${i}`)})),lf=st.currentTime,df=x())};uf=setInterval(()=>{s()},2e3),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&s()})}var Ae=s=>st;var Ue=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){C.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(),y.addSuccessEvent({key:502701})}catch(r){C.error(r),y.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(),y.addSuccessEvent({key:502702})}catch(e){C.error(e),y.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}},$c=class extends Ue{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,o=0,n=`M${r},${o}`;for(let a=0;a<e.length;a++)o=e[a]/128*100/2,n+=`L${r},${o}`,r+=t;return n}},jn=class{constructor(){d(this,"source",new Ue);d(this,"gain",new Ue);d(this,"destination",new Ue)}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(Ae().createGain()),this.gain.node.gain.value=i}replaceSource(i){let e=So(i);e&&this.source.replaceNode(e)}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}},To=class extends jn{constructor(e){super();this.context=e;d(this,"aec",new Ue("aec"));d(this,"mixNode",new Ue("mixNode"));d(this,"silentNode",new Ue("silentNode"));d(this,"denoiser",new Ue("denoiser"));d(this,"voiceChanger",new Ue("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)}get isProcessEnabled(){return this.aec.node||this.denoiser.node||this.voiceChanger.node||this.gain.node}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}},Gc=class{constructor(){d(this,"audioContext",Ae("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]}},pf=new WeakMap;function So(s){try{let i=pf.get(s);if(i)return i;let e=Ae();if(s instanceof HTMLAudioElement)i=e.createMediaElementSource(s);else if(s instanceof MediaStreamTrack)i=e.createMediaStreamSource(new MediaStream([s]));else return s;return pf.set(s,i),i}catch(i){if(re&&i instanceof Error&&i.name==="NotSupportedError")C.warn(i);else throw i}}var Lt=class Lt{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,S.on(A.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-Lt.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!Lt.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);';Lt.workletReady=sr(Lt.audioContext,URL.createObjectURL(new Blob([i],{type:"application/javascript"})))}return Lt.workletReady.then(()=>this.initAudioWorklet()).catch(i=>(this._log.error(`volumeMeter preload error: ${i}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(Lt.audioContext,"volume-meter");let i=!1;this._audioWorkletNode.port.onmessage=e=>{Lt.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:Oe.LOAD_WORKLET,error:i}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=Ae("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=i=>{Lt.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,S.off(A.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(Lt,"lastMessageTime",0),d(Lt,"audioContext",Ae("volume-meter")),d(Lt,"workletReady");var Wc=Lt,qn=class extends Ue{constructor(e){super();d(this,"_volumeMeter");this._volumeMeter=new Wc(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()}}},ms=Wc;var Ef=Ge(Ze(),1);var _f=s=>i=>i.deviceId===s;var Xn=class{constructor(i,e){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&&Ao(this.devices[0])){this.devices=t;return}e&&(t.forEach(r=>{if(r.deviceId&&!this.devices.find(_f(r.deviceId))){let o=`${this.kind}${this.type}Added`;C.warn(`${o}: ${JSON.stringify(r)}`),e.emit(o,r)}}),this.devices.forEach(r=>{if(r.deviceId&&!t.find(_f(r.deviceId))){let o=`${this.kind}${this.type}Removed`;C.warn(`${o}: ${JSON.stringify(r)}`),e.emit(o,r)}})),this.devices=t}hasDevice(i){return!!this.devices.find(e=>e.deviceId===i)}},ju=class extends Ef.EventEmitter{constructor(){super();d(this,"audioInputs",new Xn(_.AUDIO,"Input"));d(this,"videoInputs",new Xn(_.VIDEO,"Input"));d(this,"audioOutputs",new Xn(_.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||ce.run("interval",()=>{this.update()},{delay:1e4}))}init(){Io().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 Io(e);return this.audioInputs.update(t,this),this.videoInputs.update(t,this),this.audioOutputs.update(t,this),this})}hasBlueTooth(){var t;if(((t=Ae())==null?void 0:t.outputLatency)*1e3>150)return!0;let e=["bluetooth","air","wireless","bt","tws","buds","headset","headphone"];return this.audioOutputs.devices.some(r=>e.some(o=>r.label.toLowerCase().includes(o)))||this.audioInputs.devices.some(r=>e.some(o=>r.label.toLowerCase().includes(o)))}},Ne=Zo||Us?null:new ju;function Ao(s){return s.deviceId===s.groupId&&s.groupId===""}function Io(){return f(this,arguments,function*(s=0){if(tr()||!Pc())return[];let i=yield navigator.mediaDevices.enumerateDevices();if(s!==0){let e={audio:!1,video:!1};if(i.forEach(t=>{Ao(t)&&(t.kind===_.AUDIO_INPUT?e.audio=!0:t.kind===_.VIDEO_INPUT&&(e.video=!0))}),s===2&&(e.audio=!1),s===1&&(e.video=!1),e.audio||e.video){let t;try{t=yield navigator.mediaDevices.getUserMedia(e),e.audio&&wr()}catch(r){C.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&&qu.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(r.getCapabilities=()=>e.getCapabilities()),r})})}function At(s=!1){return Ne.update(s?1:0).then(i=>i.audioInputs.devices)}function Rt(s=!1){return Ne.update(s?2:0).then(i=>i.videoInputs.devices)}var gf=!1;function Tf(){return f(this,null,function*(){try{gf||(gf=!0,C.info(`speakers:${(yield xr()).map(s=>` ${s.deviceId.slice(0,8)}: ${s.label}`)}`))}catch(s){}})}function xr(s=!1){return f(this,null,function*(){return(Ee||ye)&&(s=!1),Ne.update(s?1:0).then(i=>i.audioOutputs.devices)})}var qu=new Set;function Sf(s){if(s instanceof CanvasCaptureMediaStreamTrack||!(s instanceof MediaStreamTrack))return!1;let i=s.label.toLocaleLowerCase();if(i.includes("camera")||i.includes("webcam"))return!0;let t=`${((s==null?void 0:s.getSettings())||{}).deviceId}_${_.VIDEO_INPUT}`;return!!qu.has(t)}function If(s){if(s instanceof CanvasCaptureMediaStreamTrack||!(s instanceof MediaStreamTrack))return!1;let i=s.label.toLocaleLowerCase();if(i.includes("mic")||i.includes("\u9EA6\u514B\u98CE"))return!0;let t=`${((s==null?void 0:s.getSettings())||{}).deviceId}_${_.AUDIO_INPUT}`;return!!qu.has(t)}function Xu(s,i){return f(this,null,function*(){let t=(yield At()).find(r=>r.deviceId===Qr);return!i&&(t==null?void 0:t.groupId)===s||(t==null?void 0:t.groupId)===s&&t.label===i})}function Af(o){return f(this,arguments,function*({newDeviceId:s,oldDeviceId:i,oldGroupId:e,oldLabel:t,kind:r}){return s!==i?!1:r===_.AUDIO&&s===Qr?yield Xu(e,t):!0})}var Jc,zu=class extends jn{constructor(e){super();this.log=e;d(this,"volumeMeter");d(this,"volumeMeterAfter3A");d(this,"volumeDestination");d(this,"analyser",new $c);this.volumeMeter=new qn({log:this.log}),this.volumeMeterAfter3A=new qn({log:this.log}),this.volumeDestination=new Ue,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},Ro=class s extends _i{constructor(e){super(e,_.AUDIO);d(this,"_outputDeviceId");d(this,"_floatVolume",1);d(this,"_destination");d(this,"pipeline");d(this,"volumeMeterMode","worklet");d(this,"enableVolumeControlInIOS");this.enableVolumeControlInIOS=e.enableVolumeControlInIOS,this.mode=0,e.url&&(this.url=e.url),this.pipeline=new zu(this._log)}setTrack(e){}get duration(){var e;return Math.floor((((e=this.element)==null?void 0:e.duration)||0)*1e3)}get currentTime(){var e;return Math.floor((((e=this.element)==null?void 0:e.currentTime)||0)*1e3)}set currentTime(e){this.element&&(this.element.currentTime=e/1e3)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((pt==="15.2"||pt==="15.3"||pt==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let r=Jc||new Audio;r.setAttribute("autoplay","autoplay"),r.srcObject=this.getMediaStream(),r.muted=this.muted,this.url&&(r.crossOrigin="anonymous",r.src=this.url),this.element=r,this.setVolume(te(e)?e/100:this._floatVolume),r===Jc&&(Jc=void 0),this.options.enableTimeupdateEvent&&(this.element.ontimeupdate=()=>this.emit(W.TIME_UPDATE,this.currentTime)),this.bindElementEvents()}play(e){return f(this,null,function*(){if(!(!this.track&&!this.url)){try{!this.pipeline.source.node&&this.track&&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(Ae("player").createAnalyser()),Tf()}catch(t){throw this._log.warn(`audio play error: ${t}`),Rn(pt,"18.7",!0)&&this.bindAutoPlayEvent(),t}return xe(s.prototype,this,"play").call(this)}})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setVolume(e){this._floatVolume=e,this.element&&(this.element.volume=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()}},jc=class extends Ro{setTrack(i){this.track!==i&&(this.unbindTrackEvents(),this.track=i,this.emit(W.MEDIA_TRACK_CHANGED,i),i&&(this.bindTrackEvents(),this.element&&(this.element.srcObject=new MediaStream([i]))))}},Co=class s extends Ro{constructor(e){super(e);d(this,"_sourceElement");d(this,"_output",new Ue);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(Ae("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var t,r,o;((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(W.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=((o=e.getSettings())==null?void 0:o.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}play(){return f(this,null,function*(){yield xe(s.prototype,this,"play").call(this),this.element.volume=0,this.setOutput()})}setVolume(e){var r;let t=e<=1&&!is();if(!(this._floatVolume===e&&(t&&((r=this.element)==null?void 0:r.volume)===e||!t&&this.pipeline.volume===e)))if(this._floatVolume=e,this.useDestination)this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`);else if(t)this.element?(this._log.info(`set element volume: ${e}`),this.element.volume=e):this._log.info("set element volume: no element");else{if(is())if(this.enableVolumeControlInIOS)mf();else return;if(re&&!this.pipeline.source.node){this._log.warn("set pipeline volume failed: no source node");return}this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this._destination||(this._destination=Ae("player").createMediaStreamDestination()),this.pipeline.destination.setNode(this._destination),Fe(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play().catch(o=>{this.emit(W.AUTOPLAY_FAILED,o)}))}}stop(e=0){this.pipeline.destroy();let t=this._sourceElement||this.element;t&&Wt&&(Jc=t),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var ps=class extends Y{constructor({userId:e,sdkAppId:t,mediaType:r,room:o,PlayerClass:n=r===1?Co:rt}){var a;super();d(this,"id",Cn());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=C.createLogger({parent:o==null?void 0:o.getLogger(),id:`${this.kind[0]}t`,userId:(a=o||this.room)==null?void 0:a.userId,remoteUserId:this instanceof gi?void 0:this.userId,sdkAppId:t,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof gi}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log,enableVolumeControlInIOS:o==null?void 0:o.enableVolumeControlInIOS}),this.player.on(W.PLAYER_STATE_CHANGED,c=>{if(S.emit(A.PLAYER_STATE_CHANGED,M({track:this},c)),this.emit("player-state-changed",c),c.state==="PLAYING"&&this.room){let l=!0;for(let{remoteAudioTrack:u,remoteVideoTrack:m,remoteAuxiliaryTrack:p}of[...this.room.remotePublishedUserMap.values()])if(u.isAvailable&&!u.player.isPlaying||m.isAvailable&&!m.player.isPlaying||p.isAvailable&&!p.player.isPlaying){l=!1;break}l&&Lr()&&af()}}),this.kind===_.VIDEO&&(this.player.on(W.LOADED_DATA,()=>{this.emitFirstVideoFrameEvent(W.LOADED_DATA),S.emit(A.VIDEO_LOADED_DATA,{track:this})}),this.player.on(W.LOADED_META_DATA,()=>{this.emitFirstVideoFrameEvent(W.LOADED_META_DATA)}),this.player.on(W.MEDIA_TRACK_CHANGED,c=>{var l;(l=this.subVideoPlayerMap)==null||l.forEach(u=>u.setTrack(c))}),this.player.on(W.RESIZE,c=>{this.emitFirstVideoFrameEvent(W.RESIZE),this.emit("video-size-changed",M({userId:this.userId,streamType:this.mediaType===2?"auxiliary":"main"},c))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(W.ERROR,this.onPlayerError.bind(this)),this.player.on(W.AUTOPLAY_FAILED,this.handleAutoPlayFailed,this)}get log(){return this._log||C}get kind(){return this.mediaType===1?_.AUDIO:_.VIDEO}get isAudio(){return this.kind===_.AUDIO}get strMediaType(){return this.mediaType===4?_.VIDEO:this.mediaType===2?_.SCREEN:_.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=Ie(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 rt&&(this.player.setObjectFit(this.objectFit),this.container!==r&&r&&(Ie(e)&&e.length>=1&&this.container&&e.includes(this.container)&&this.container.contains(this.player.elementToRender)?(e.splice(e.indexOf(this.container),1),e.unshift(this.container)):(this.container=r,this.player.setContainer(r))),Ie(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===_.VIDEO)&&this.setPlayerMute(!0),t&&!T(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof rt&&(this.player.setObjectFit(this.objectFit),t&&!T(t.poster)&&this.player.setPoster(t.poster)),this.isPlayCalled=!0,r&&(this.container=r,this.player instanceof rt&&this.player.setContainer(r)),S.emit(A.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),Ie(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),t))}catch(o){throw this.handleAutoPlayFailed(o),o}})}setMirror(e,t){if(this.isScreen||this.kind!==_.VIDEO||T(e)||e===this.mirror)return;this.mirror=e;let r=this.player;t&&(r=t);let o=this.manager;if(pe(this.mirror)){r.setViewMirror(this.mirror),!this.isRemote&&o&&(o.mirror=!1);return}switch(this.mirror){case"view":{o&&(o.mirror=!1),r.setViewMirror(!0);break}case"publish":{o&&(o.mirror=!0),r.setViewMirror(!0);break}case"both":o&&(o.mirror=!0),r.setViewMirror(!1)}}playSubContainer(e,t){return f(this,null,function*(){if(!this._outputTrack||this.kind===_.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((o,n)=>{var a;e.find(c=>n===c)||(o.stop(),(a=this.subVideoPlayerMap)==null||a.delete(n))});for(let[o,n]of e.entries()){let a=this.subVideoPlayerMap.get(n);a?t&&(T(t.objectFit)||a.setObjectFit(t.objectFit)):this.subVideoPlayerMap.set(n,new rt({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${o+1}`})}))}let r=[...this.subVideoPlayerMap.values()];for(let o of r)o.setViewMirror(this.player.mirror),yield o.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.isFirstVideoFrameEmitted=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(Za(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._toInitState(),this.log.info("close"),this.isPlayCalled&&this.stop(!0)}_toInitState(){}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),S.emit(e?A.TRACK_MUTED:A.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){it(e,e).add(_.MUTE,this.onTrackMuted).add(_.UNMUTE,this.onTrackUnmuted).add(_.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===_.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){Fe(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,o,n;let t=this._outputTrack;t!=null&&t.canvas&&((o=(r=t.canvas)==null?void 0:r.id)!=null&&o.includes("trtc_mix"))||e!==t&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(n=e.getSettings)==null?void 0:n.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){var t,r;if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(o=>this.handleAutoPlayFailed(o)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){if(Za(this)&&this.isAudio&&((t=this.user)!=null&&t.muteState.hasAudio)&&((r=this.user)!=null&&r.muteState.audioMuted))return;this.player.stop(Za(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){return f(this,null,function*(){var r;this.log.warn("handleAutoPlayFailed",e);let t=()=>{this.resume().then(()=>{document.removeEventListener("click",t,!0)})};if(this.room&&this.room.enableAutoPlayDialog){if((zi||Qi)&&(yield Ke(100),(r=this.player)!=null&&r.isPlaying))return;go()}else document.addEventListener("click",t,!0);S.once(A.LOCAL_TRACK_CAPTURE_SUCCESS,({track:o})=>{o.kind==="audio"&&Lr()&&!this.player.isPlaying&&this.isRemote&&this.isAvailable&&t()}),this.emit("error",e)})}getVideoFrame(){return this.player instanceof rt?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,o=(t==null?void 0:t.height)||((c=this.player.element)==null?void 0:c.videoHeight)||0;e===W.RESIZE&&!r&&!o||e===W.LOADED_META_DATA&&!r&&!o||(e===W.LOADED_DATA&&!r&&!o&&this._log.warn("the dimension of video is 0x0 in first-video-frame event"),this.isFirstVideoFrameEmitted=!0,Nt(this.rotation)&&([r,o]=[o,r]),this.emit("first-video-frame",{width:r,height:o,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`)}};O([ve([],Y.INIT,{sync:!0})],ps.prototype,"_toInitState",1);var uT=Object.prototype.hasOwnProperty,{toString:Qb}=Object.prototype;function hT(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(dt(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(uT.call(s,i))return!1;return!0}}return!1}var Ei=hT;var mT=function(s){return f(this,null,function*(){let i=fT(s);C.info(`getUserMedia with constraints: ${JSON.stringify(i)}`);let e=[],t=[],r=["label","deviceId","groupId"];if(i.audio&&(e=yield At(),C.info(`microphones: ${Et(e.map(o=>w(M({},o),{groupId:o.groupId.substring(0,8)})),{keysToInclude:r})}`)),i.video&&(t=yield Rt(),C.info(`cameras: ${Et(t,{keysToInclude:r})}`),!pe(i.video)&&i.video.facingMode==="user"&&!i.video.deviceId)){let n=t.filter(a=>!a.label.includes("infrared")).find(a=>a.label.includes("facing front"));n&&(i.video.deviceId=n.deviceId,C.info(`exclude infrared camera: ${JSON.stringify(i)}`))}try{let o=yield navigator.mediaDevices.getUserMedia(i);return bu&&o.getTracks().forEach(n=>{var c;let a=n.getCapabilities();C.info(`${n.kind} capabilities: ${Et(a,{keysToInclude:Ua})}`),!T(s.echoCancellation)&&((c=a.echoCancellation)==null?void 0:c.indexOf(s.echoCancellation))===-1&&C.warn(`Invalid argument for 'echoCancellation'. Expected one of [${JSON.stringify(a.echoCancellation)}], but received '${s.echoCancellation}'`)}),i.audio&&wr(),o}catch(o){let{message:n}=o;throw o.name==="NotFoundError"&&(s.video&&t&&t.length===0&&(n=G({key:H.CAMERA_NOT_FOUND})),s.audio&&e&&e.length===0&&(n=G({key:H.MICROPHONE_NOT_FOUND}))),new D({code:I.INITIALIZE_FAILED,name:o.name,message:n,constraint:o.constraint})}})},pT=bi({retryFunction:mT,settings:{retries:3,timeout:500},onError:({error:s,retry:i,reject:e,retryFuncArgs:t,retriedCount:r})=>{let o=r+1;s.name==="NotReadableError"||s.name==="OverconstrainedError"||s.name==="AbortError"?(o===1?(t[0].video&&(t[0].maxResolution=!1,(!ye||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)):o===2?t[0].useDeviceIdOnly=!0:o===3&&!t[0].useExactDeviceId&&(t[0].useTrueAsConstraint=!0),i()):e(s),t[0].microphoneId&&Rf(t[0].microphoneId,!1),t[0].cameraId&&Rf(t[0].cameraId,!0)},onRetrying:s=>{C.warn(`getUserMedia NotReadableError observed, retrying [${s}/3]`)},onRetryFailed:s=>{se.logFailedEvent({eventType:Oe.GET_USER_MEDIA_RETRY,error:s})},onRetrySuccess:s=>{se.logSuccessEvent({eventType:Oe.GET_USER_MEDIA_RETRY}),se.uploadEvent({log:`stat-${Oe.GET_USER_MEDIA_RETRY}-success-${s}`})}});function Rf(s,i){return f(this,null,function*(){let t=(i?yield Rt():yield At()).find(r=>r.deviceId===s);t&&me(t.getCapabilities)&&C.warn(Et(t.getCapabilities(),{keysToInclude:Ua}))})}function fT(s){return{audio:_T(s),video:gT(s)}}function _T(s){if(!s.audio)return!1;if(s.useTrueAsConstraint)return!0;let i={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:s.sampleRate};return!Ei(s.microphoneId)&&(i.deviceId=s.useExactDeviceId?{exact:s.microphoneId}:s.microphoneId,s.useDeviceIdOnly)?i:(te(s.channelCount)&&(i.channelCount=s.channelCount),(pe(s.echoCancellation)||s.echoCancellation==="remote-only"||s.echoCancellation==="all")&&(i.echoCancellation=s.echoCancellation),pe(s.noiseSuppression)&&!s.noiseSuppression&&(i.noiseSuppression=!1),pe(s.autoGainControl)&&!s.autoGainControl&&(i.autoGainControl=!1),Ei(i)?!0:i)}function gT(s){if(!s.video)return!1;if(s.useTrueAsConstraint)return!0;let{maxResolution:i=!0}=s,e={};return s.cameraId?e.deviceId=s.useExactDeviceId?{exact:s.cameraId}:s.cameraId:s.facingMode&&(e.facingMode=s.facingMode),s.useDeviceIdOnly&&!Ei(e)?e:(s.width&&(e.width={ideal:s.width},i&&!re&&(e.width.max=s.width)),s.height&&(e.height={ideal:s.height},i&&!re&&(e.height.max=s.height)),re&&di&&s.width&&s.height&&s.width*s.height<352*288&&(e.width=s.width,e.height=s.height),s.frameRate&&(e.frameRate=s.frameRate),Ei(e)?!0:e)}var Cf=pT;function qc(s){return K((i,e)=>function(...t){return f(this,null,function*(){return yield s.apply(this,t),i.apply(this,t)})})}function Ct(s){return K((i,e)=>function(...t){return f(this,null,function*(){let r=yield i.apply(this,t);return yield s.call(this,...t),r})})}function Xc(s){return K((i,e)=>function(...t){return f(this,null,function*(){try{return yield i.apply(this,t)}catch(r){s.call(this,r)}})})}function K(s){return function(i,e,t){return t.value=s(t.value,e),t}}var yf=(()=>{let s=!1,i=document.visibilityState;return()=>{document.visibilityState!==i&&C.info(`visibility change: ${document.visibilityState}`),!s&&(document.addEventListener("visibilitychange",()=>{C.info(`visibility change: ${document.visibilityState}`),i=document.visibilityState}),s=!0)}})();var ET=0,zc=class{constructor(i){d(this,"log");d(this,"isRunning",!1);d(this,"queue",[]);let e=`fq${++ET}`;i&&(e+=`|${i}`),this.log=C.createLogger({id:e})}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(i,e=!1){var o,n;let t=M({},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=(o=this.lastQueueItem)==null?void 0:o.promise)==null||n.then(t.resolve,t.reject):this.queue.push(t),this.log.debug(`push ${this.length}`,i.funcName,i.args),this.isRunning||this.callNext(),r}shift(){let i=this.queue.shift();return this.log.debug(`shift ${this.length}`,i==null?void 0:i.funcName,i==null?void 0:i.args),i}callNext(){if(this.isRunning||this.length===0)return;let{fn:i,args:e,context:t,resolve:r,reject:o,funcName:n}=this.queue[0];this.log.debug("callNext",this.length,n,e),this.isRunning=!0,i.apply(t,e).then(r,o).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},Qc=new WeakMap,Yc=new WeakMap;function or(s=!1){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=Qc.get(this)||new zc;return Qc.set(this,n),n.push({fn:r,args:o,context:this,funcName:e},s)},t}}function Zc(s){return function(i,e,t){let r=t.value;return t.value=function(...o){var a,c,l;let n=[];return(c=(a=Qc.get(this))==null?void 0:a.queue)==null||c.forEach(u=>n.push(u)),(l=Yc.get(this))==null||l.forEach(u=>u==null?void 0:u.queue.forEach(m=>n.push(m))),n.forEach(u=>{u.reject(new D({code:I.API_CALL_ABORTED,message:s}))}),Qc.delete(this),Yc.delete(this),r.apply(this,o)},t}}function Ti(s,i){return function(e,t,r){let o=r.value,n=a=>s(...a);return r.value=function(...a){let c=Yc.get(this)||new Map,l=c.get(n(a))||new zc(i==null?void 0:i(...a));return c.set(n(a),l),Yc.set(this,c),l.push({fn:o,args:a,context:this,funcName:t})},r}}function yt(s,i){return K((e,t)=>function(...r){let o=s;try{let n=e.apply(this,r),a=x();return Rr(n)?n.then(c=>(i?y.addSuccessEvent({key:o,cost:x()-a}):y.addSuccessEvent({key:o}),c)).catch(c=>{throw y.addFailedEvent({key:o,error:c}),c}):(y.addSuccessEvent({key:o}),n)}catch(n){throw y.addFailedEvent({key:o,error:n}),n}})}var wh={};Bi(wh,{Events:()=>ke,Inspect:()=>qt,LastSink:()=>fs,Sink:()=>Z,Subscribe:()=>_s,TimeoutError:()=>zn,audit:()=>tS,bindCallback:()=>BT,bindNodeCallback:()=>HT,buffer:()=>vT,bufferCount:()=>bT,bufferTime:()=>SS,call:()=>bf,catchError:()=>Ph,combineLatest:()=>Nf,concat:()=>IT,concatMap:()=>hS,concatMapTo:()=>mS,count:()=>WT,create:()=>le,debounce:()=>iS,debounceTime:()=>rS,defer:()=>Df,delay:()=>IS,deliver:()=>ee,dispose:()=>Kc,elementAt:()=>sS,empty:()=>Kn,every:()=>dS,exhaustMap:()=>_S,exhaustMapTo:()=>gS,expand:()=>AS,filter:()=>Xt,find:()=>oS,findIndex:()=>nS,first:()=>aS,fromAnimationFrame:()=>VT,fromArray:()=>PT,fromEvent:()=>ue,fromEventPattern:()=>kT,fromFetch:()=>LT,fromIterable:()=>wT,fromPromise:()=>Pf,fromReadableStream:()=>UT,fromReader:()=>xT,groupBy:()=>ES,identity:()=>TT,ignoreElements:()=>XT,iif:()=>RT,inspect:()=>vf,interval:()=>ih,last:()=>cS,map:()=>ea,mapTo:()=>uS,max:()=>JT,merge:()=>Qn,mergeMap:()=>pS,mergeMapTo:()=>fS,min:()=>jT,never:()=>$T,nothing:()=>Te,of:()=>OT,pairwise:()=>lS,pipe:()=>he,race:()=>eh,range:()=>FT,reduce:()=>rh,retry:()=>bS,scan:()=>Oh,setAsapScheduler:()=>MT,share:()=>nr,shareReplay:()=>AT,skip:()=>QT,skipUntil:()=>YT,skipWhile:()=>sd,startWith:()=>Yn,subject:()=>ot,subscribe:()=>Se,sum:()=>qT,switchMap:()=>Vr,switchMapTo:()=>Ss,take:()=>ar,takeLast:()=>zT,takeUntil:()=>Le,takeWhile:()=>kf,tap:()=>ta,throttle:()=>KT,throwError:()=>GT,timeInterval:()=>TS,timeout:()=>yS,timer:()=>Zn,toPromise:()=>RS,toReadableStream:()=>CS,withLatestFrom:()=>yT,zip:()=>CT});function Te(...s){}var bf=s=>s(),TT=s=>s;function Kc(){this.dispose()}var vf=()=>typeof __FASTRX_DEVTOOLS__!="undefined",ST=1,qt=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(i){let e=new Qu(i,this,this.streamId++);return ke.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},fs=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=Te,this.error=Te,this.next=Te,this.dispose=Te,this.subscribe=Te,this.doDefer()}subscribe(i){return i instanceof qt?i.subscribe(this):i(this),this}get bindSubscribe(){return i=>this.subscribe(i)}doDefer(){this.defers.forEach(bf),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}},Z=class extends fs{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)}},_s=class extends fs{constructor(i,e=Te,t=Te,r=Te){if(super(),this._next=e,this._error=t,this._complete=r,this.then=Te,i instanceof qt){let o={toString:()=>"subscribe",id:0,source:i};this.defer(()=>{ke.defer(o,0)}),ke.create(o),ke.pipe(o),this.sourceId=o.id,this.subscribe(i),ke.subscribe({id:o.id,end:!0}),e==Te?this._next=n=>ke.next(o,0,n):this.next=n=>{ke.next(o,0,n),e(n)},r==Te?this._complete=()=>ke.complete(o,0):this.complete=()=>{this.dispose(),ke.complete(o,0),r()},t==Te?this._error=n=>ke.complete(o,0,n):this.error=n=>{this.dispose(),ke.complete(o,0,n),t(n)}}else this.subscribe(i)}next(i){this._next(i)}complete(){this.dispose(),this._complete()}error(i){this.dispose(),this._error(i)}};function he(s,...i){return i.reduce((e,t)=>t(e),s)}function le(s,i,e){if(vf()){let t=Object.defineProperties(Object.setPrototypeOf(s,qt.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}});ke.create(t);for(let r=0;r<e.length;r++){let o=e[r];typeof o=="function"&&o instanceof qt&&ke.addSource(t,o)}return t}return s}function ee(s,i){return function(...e){return t=>{if(t instanceof qt){let r=le(o=>{let n=new s(o,...e);n.sourceId=r.id,n.subscribe(t)},i,arguments);return r.source=t,ke.pipe(r),r}else return r=>t(new s(r,...e))}}}function Ur(s,i){window.postMessage({source:"fastrx-devtools-backend",payload:{event:s,payload:i}})}var Qu=class extends Z{constructor(i,e,t){super(i),this.source=e,this.id=t,this.sourceId=i.sourceId,this.defer(()=>{ke.defer(this.source,this.id)})}next(i){ke.next(this.source,this.id,i),this.sink.next(i)}complete(){ke.complete(this.source,this.id),this.sink.complete()}error(i){ke.complete(this.source,this.id,i),this.sink.error(i)}},ke={addSource(s,i){Ur("addSource",{id:s.id,name:s.toString(),source:{id:i.id,name:i.toString()}})},next(s,i,e){Ur("next",{id:s.id,streamId:i,data:e&&e.toString()})},subscribe({id:s,end:i},e){Ur("subscribe",{id:s,end:i,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(s,i,e){Ur("complete",{id:s.id,streamId:i,err:e?e.toString():null})},defer(s,i){Ur("defer",{id:s.id,streamId:i})},pipe(s){Ur("pipe",{name:s.toString(),id:s.id,source:{id:s.source.id,name:s.source.toString()}})},update(s){Ur("update",{id:s.id,name:s.toString()})},create(s){s.id||(s.id=ST++),Ur("create",{name:s.toString(),id:s.id})}},zn=class extends Error{constructor(i){super(`timeout after ${i}ms`),this.timeout=i}};var ed=class extends fs{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 nr(){return s=>{let i=new ed(s);if(s instanceof qt){let e=le(t=>{i.add(t)},"share",arguments);return i.sourceId=e.id,e.source=s,ke.pipe(e),e}return le(i.add.bind(i),"share",arguments)}}function Qn(...s){return le(i=>{let e=new Z(i),t=s.length;e.complete=()=>{--t===0&&i.complete()},s.forEach(e.bindSubscribe)},"merge",arguments)}function eh(...s){return le(i=>{let e=new Map;s.forEach(t=>{let r=new Z(i);e.set(t,r),r.complete=()=>{e.delete(t),e.size===0?i.complete():r.dispose()},r.next=o=>{e.delete(t),e.forEach(n=>n.dispose()),r.resetNext(),r.resetComplete(),r.next(o)}}),s.forEach(t=>e.get(t).subscribe(t))},"race",arguments)}function IT(...s){return le(i=>{let e=0,t=s.length,r=new Z(i);r.complete=()=>{e<t&&!r.disposed?(r.doDefer(),r.subscribe(s[e++])):i.complete()},r.complete()},"concat",arguments)}function AT(s){return i=>{let e=new ed(i),t=[];return e.next=function(r){t.push(r),t.length>s&&t.shift(),this.sinks.forEach(o=>o.next(r))},le(r=>{r.defer(()=>e.remove(r)),t.forEach(o=>r.next(o)),e.add(r)},"shareReplay",arguments)}}function RT(s,i,e){return le(t=>s()?i(t):e(t),"iif",arguments)}function Nf(...s){return le(i=>{let e=s.length,t=e,r=e,o=new Array(e),n=()=>{--r===0&&i.complete()},a=(c,l)=>{let u=new Z(i);u.next=m=>{t--,u.next=p=>{o[l]=p,t===0&&i.next(o)},u.next(m)},u.complete=n,u.subscribe(c)};s.forEach(a)},"combineLatest",arguments)}function CT(...s){return le(i=>{let e=s.length,t=e,r=new Array(e),o=()=>{--t===0&&i.complete()},n=(a,c)=>{let l=new Z(i),u=[];r[c]=u,l.next=m=>{u.push(m),r.every(p=>p.length)&&i.next(r.map(p=>p.shift()))},l.complete=o,l.subscribe(a)};s.forEach(n)},"zip",arguments)}function Yn(...s){return i=>le((e,t=0,r=s.length)=>{for(;t<r&&!e.disposed;)e.next(s[t++]);e.disposed||e.subscribe(i)},"startWith",arguments)}var Yu=class extends Z{constructor(i,...e){super(i);let t=new Z(this.sink);t.next=r=>this.buffer=r,t.complete=Te,t.subscribe(Nf(...e))}next(i){this.buffer&&this.sink.next([i,...this.buffer])}},yT=ee(Yu,"withLatestFrom"),Zu=class extends Z{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()}},bT=ee(Zu,"bufferCount"),Ku=class extends Z{constructor(i,e){super(i),this.buffer=[];let t=new Z(i);t.next=r=>{i.next(this.buffer),this.buffer=[]},t.complete=Te,t.subscribe(e)}next(i){this.buffer.push(i)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},vT=ee(Ku,"buffer");var NT=function(s,i,e,t){function r(o){return o instanceof e?o:new e(function(n){n(o)})}return new(e||(e=Promise))(function(o,n){function a(u){try{l(t.next(u))}catch(m){n(m)}}function c(u){try{l(t.throw(u))}catch(m){n(m)}}function l(u){u.done?o(u.value):r(u.value).then(a,c)}l((t=t.apply(s,i||[])).next())})};function ot(s){let i=arguments,e=nr()(le(t=>{e.next=r=>t.next(r),e.complete=()=>t.complete(),e.error=r=>t.error(r),s&&t.subscribe(s)},"subject",i));return e.next=Te,e.complete=Te,e.error=Te,e}function Df(s){return le(i=>i.subscribe(s()),"defer",arguments)}var yo={promise:s=>{Promise.resolve().then(s)},setImmediate:typeof setImmediate!="undefined"?s=>setImmediate(s):null,setTimeout:s=>setTimeout(s,0)},DT=()=>typeof Promise!="undefined"?yo.promise:yo.setImmediate?yo.setImmediate:yo.setTimeout,th=DT(),Mf=s=>i=>{th(()=>s(i))},MT=s=>{typeof s=="function"?th=s:yo[s]&&(th=yo[s])};var Of=s=>Mf(i=>{for(let e=0;!i.disposed&&e<s.length;e++)i.next(s[e]);i.complete()});function OT(...s){return le(Of(s),"of",arguments)}function PT(s){return le(Of(s),"fromArray",arguments)}function ih(s){return le(i=>{let e=0,t=setInterval(()=>i.next(e++),s);return i.defer(()=>{clearInterval(t)}),"interval"},"interval",arguments)}function Zn(s,i){return le(e=>{let t=0,r=setTimeout(()=>{if(e.removeDefer(o),e.next(t++),i){let n=setInterval(()=>e.next(t++),i);e.defer(()=>{clearInterval(n)})}else e.complete()},s),o=()=>clearTimeout(r);e.defer(o)},"timer",arguments)}function td(s,i){return e=>{let t=r=>e.next(r);e.defer(()=>i(t)),s(t)}}function kT(s,i){return le(td(s,i),"fromEventPattern",arguments)}function ue(s,i){if("on"in s&&"off"in s)return le(td(e=>s.on(i,e),e=>s.off(i,e)),"fromEvent",arguments);if("addListener"in s&&"removeListener"in s)return le(td(e=>s.addListener(i,e),e=>s.removeListener(i,e)),"fromEvent",arguments);if("addEventListener"in s)return le(td(e=>s.addEventListener(i,e),e=>s.removeEventListener(i,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function Pf(s){return le(i=>{s.then(e=>{i.next(e),i.complete()},i.error.bind(i))},"fromPromise",arguments)}function LT(s,i){return le(Df(()=>Pf(fetch(s,i))),"fromFetch",arguments)}function wT(s){return le(Mf(i=>{try{for(let e of s){if(i.disposed)return;i.next(e)}i.complete()}catch(e){i.error(e)}}),"fromIterable",arguments)}function xT(s){let i=e=>NT(this,void 0,void 0,function*(){try{if(e.disposed)return;let{done:t,value:r}=yield s.read();if(t){e.complete();return}else e.next(r),i(e)}catch(t){e.error(t)}});return le(e=>{i(e)},"fromReader",arguments)}function UT(s){return le(i=>{let e=new AbortController,t=e.signal;i.defer(()=>e.abort("cancelled")),s.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 VT(){return le(s=>{let i=requestAnimationFrame(function e(t){s.disposed||(s.next(t),i=requestAnimationFrame(e))});s.defer(()=>cancelAnimationFrame(i))},"fromAnimationFrame",arguments)}function FT(s,i){return le((e,t=s,r=i+s)=>{for(;t<r&&!e.disposed;)e.next(t++);return e.complete(),"range"},"range",arguments)}function BT(s,i,...e){return le(t=>{let r=e.concat(o=>(t.next(o),t.complete()));s.apply(i,r)},"bindCallback",arguments)}function HT(s,i,...e){return le(t=>{let r=e.concat((o,n)=>o?t.error(o):(t.next(n),t.complete()));s.apply(i,r)},"bindNodeCallback",arguments)}function $T(){return le(()=>{},"never",arguments)}function GT(s){return le(i=>i.error(s),"throwError",arguments)}function Kn(){return le(s=>s.complete(),"empty",arguments)}var gs=class extends Z{constructor(i,e,t){super(i),this.f=e;let r=()=>{this.sink.next(this.acc),this.sink.complete()};typeof t=="undefined"?this.next=o=>{this.acc=o,this.complete=r,this.resetNext()}:(this.acc=t,this.complete=r)}next(i){this.acc=this.f(this.acc,i)}},rh=ee(gs,"reduce"),WT=s=>ee(gs,"count")((i,e)=>s(e)?i+1:i,0),JT=()=>ee(gs,"max")(Math.max),jT=()=>ee(gs,"min")(Math.min),qT=()=>ee(gs,"sum")((s,i)=>s+i,0);var sh=class extends Z{constructor(i,e,t){super(i),this.filter=e,this.thisArg=t}next(i){this.filter.call(this.thisArg,i)&&this.sink.next(i)}},Xt=ee(sh,"filter"),oh=class extends Z{next(i){}},XT=ee(oh,"ignoreElements"),nh=class extends Z{constructor(i,e){super(i),this.count=e}next(i){this.sink.next(i),--this.count===0&&(this.doDefer(),this.complete())}},ar=ee(nh,"take"),ah=class extends Z{constructor(i,e){super(i);let t=new Z(i);t.next=()=>{t.doDefer(),i.complete()},t.complete=Kc,t.subscribe(e)}},Le=ee(ah,"takeUntil"),ch=class extends Z{constructor(i,e){super(i),this.f=e}next(i){this.f(i)?this.sink.next(i):(this.doDefer(),this.complete())}},kf=ee(ch,"takeWhile"),zT=s=>rh((i,e)=>(i.push(e),i.length>s&&i.shift(),i),[]),dh=class extends Z{constructor(i,e){super(i),this.count=e}next(i){--this.count===0&&(this.next=super.next)}},QT=ee(dh,"skip"),lh=class extends Z{constructor(i,e){super(i),i.next=Te;let t=new Z(i);t.next=()=>{t.doDefer(),i.resetNext()},t.complete=Kc,t.subscribe(e)}},YT=ee(lh,"skipUntil"),uh=class extends Z{constructor(i,e){super(i),this.f=e}next(i){this.f(i)||(this.next=super.next,this.next(i))}},sd=ee(uh,"skipWhile"),ZT={leading:!0,trailing:!1},hh=class extends Z{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)}},id=class extends Z{constructor(i,e,t=ZT){super(i),this.durationSelector=e,this.config=t,this._throttle=new hh(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=Te,this._throttle.complete(),super.complete()}},KT=ee(id,"throttle"),eS={leading:!1,trailing:!0},tS=s=>ee(id,"audit")(s,eS),mh=class extends Z{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},rd=class extends Z{constructor(i,e){super(i),this.durationSelector=e,this._debounce=new mh(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()}},iS=ee(rd,"debounce"),rS=s=>ee(rd,"debounceTime")(i=>Zn(s)),ph=class extends Z{constructor(i,e,t){super(i),this.count=e,this.defaultValue=t}next(i){this.count--===0&&(this.defaultValue=i,this.doDefer(),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()}},sS=ee(ph,"elementAt"),oS=s=>i=>ar(1)(sd(e=>!s(e))(i)),fh=class extends Z{constructor(i,e){super(i),this.f=e,this.i=0}next(i){this.f(i)?(this.sink.next(this.i++),this.doDefer(),this.complete()):++this.i}},nS=ee(fh,"findIndex"),_h=class extends Z{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.doDefer(),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()}},aS=ee(_h,"first"),gh=class extends Z{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()}},cS=ee(gh,"last"),Eh=class extends Z{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.doDefer(),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()}},dS=ee(Eh,"every");var Th=class extends Z{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))}},Oh=ee(Th,"scan"),Sh=class extends Z{constructor(){super(...arguments),this.hasLast=!1}next(i){this.hasLast?this.sink.next([this.last,i]):this.hasLast=!0,this.last=i}},lS=ee(Sh,"pairwise"),od=class extends Z{constructor(i,e,t){super(i),this.mapper=e,this.thisArg=t}next(i){super.next(this.mapper.call(this.thisArg,i))}},ea=ee(od,"map"),uS=s=>ee(od,"mapTo")(i=>s),Es=class extends Z{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()}},Ts=class s extends Z{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===s.prototype.complete&&(this.complete=this.tryComplete),t.complete=t.tryComplete,t.subscribe(this.makeSource(i,this.index++))}complete(){this.sink.complete()}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},nd=class extends Es{},ad=class extends Ts{next(i){this.subInner(i,nd),this.next=e=>{this.currentSink.dispose(),this.subInner(e,nd)}}},Vr=ee(ad,"switchMap");function ud(s){return(i,e)=>s(()=>i,e)}var Ss=ud(ee(ad,"switchMapTo")),Ih=class extends Es{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},cd=class extends Ts{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(),Ih),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},hS=ee(cd,"concatMap"),mS=ud(ee(cd,"concatMapTo")),Ah=class extends Es{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},dd=class extends Ts{constructor(){super(...arguments),this.inners=new Set}next(i){this.subInner(i,Ah),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(i=>i.resetComplete()):this.dispose()}},pS=ee(dd,"mergeMap"),fS=ud(ee(dd,"mergeMapTo")),Rh=class extends Es{dispose(){this.context.resetNext(),super.dispose()}},ld=class extends Ts{next(i){this.next=Te,this.subInner(i,Rh)}},_S=ee(ld,"exhaustMap"),gS=ud(ee(ld,"exhaustMapTo")),Ch=class extends Z{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=ot(),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)}},ES=ee(Ch,"groupBy"),yh=class extends Z{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}},TS=ee(yh,"timeInterval"),bh=class extends Z{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()}},SS=ee(bh,"bufferTime"),vh=class extends Z{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)}},IS=ee(vh,"delay"),Nh=class extends Z{constructor(i,e){super(i),this.selector=e}error(i){this.dispose(),this.selector(i)(this.sink)}},Ph=ee(Nh,"catchError"),Dh=class extends Es{tryComplete(){let i=this.context.inners.delete(this);super.dispose(),i&&this.context.checkComplete()}next(i){this.sink.next(i),this.context.expandValue(i)}},Mh=class extends Ts{constructor(i,e){super(i,e),this.project=e,this.inners=new Set,this.sourceCompleted=!1}next(i){this.sink.next(i),this.expandValue(i)}expandValue(i){let e=new Dh(this.sink,i,this);this.currentSink=e,this.complete=this.tryComplete,e.complete=e.tryComplete,this.inners.add(e),e.subscribe(this.makeSource(i,this.index++))}complete(){this.sourceCompleted=!0,this.checkComplete()}checkComplete(){this.sourceCompleted&&this.inners.size===0&&(this.resetComplete(),super.complete())}tryComplete(){this.sourceCompleted=!0,this.checkComplete()}},AS=ee(Mh,"expand");var RS=()=>s=>new Promise((i,e)=>{let t;new _s(s,r=>t=r,e,()=>i(t))}),CS=()=>s=>{let i;return new ReadableStream({start(e){i=new _s(s,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){i.dispose()}})},Se=(s=Te,i=Te,e=Te)=>t=>new _s(t,s,i,e),kh=class extends Z{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)}))}},ta=ee(kh,"tap"),Lh=class extends Z{constructor(i,e){super(i),this.timeout=e,this.id=setTimeout(()=>this.error(new zn(this.timeout)),this.timeout)}next(i){super.next(i),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},yS=ee(Lh,"timeout"),bS=(s=1/0)=>i=>{if(i instanceof qt){let e=le(t=>{let r=s,o=new Z(t);o.error=n=>{r-- >0?o.subscribe(i):t.error(n)},o.sourceId=e.id,o.subscribe(i)},"retry",[s]);return e.source=i,ke.pipe(e),e}else return e=>{let t=s,r=new Z(e);r.error=o=>{t-- >0?i(r):e.error(o)},i(r)}};var bo=(e=>(e[e.AUTO_SWITCH_NEW_DEVICE=0]="AUTO_SWITCH_NEW_DEVICE",e[e.WAIT_CURRENT_DEVICE=1]="WAIT_CURRENT_DEVICE",e))(bo||{}),Is=class Is extends ps{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,"recaptureMode",0);d(this,"profile");d(this,"retryEncodeFailed")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}get isUseCustomSource(){return!!(this.mediaTrack&&this.sourceTrack!==this.mediaTrack)}encodeFrame(e,t){throw new Error("Method not implemented.")}installTrackEvent(e){e.addEventListener(_.MUTE,this.onTrackMuted),e.addEventListener(_.UNMUTE,this.onTrackUnmuted),e.addEventListener(_.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===_.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){e.removeEventListener(_.MUTE,this.onTrackMuted),e.removeEventListener(_.UNMUTE,this.onTrackUnmuted),e.removeEventListener(_.ENDED,this.onTrackEnded)}setStateToReady(){}capture(e,t=!1){return f(this,null,function*(){var o;let r=this.sourceTrack;try{let n=x();S.emit(A.LOCAL_TRACK_CAPTURE_START,{track:this});let a;e.customSource?(a=new MediaStream,a.addTrack(e.customSource)):(t||(o=this.sourceTrack)==null||o.stop(),a=yield Cf(e));let c=a.getTracks()[0];return yield this.setInputMediaStreamTrack(c),e.customSource||(this.sourceTrack=c,this.updateDeviceIdInUse(),this.listenDeviceChange()),S.emit(A.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:x()-n}),a}catch(n){throw S.emit(A.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:n}),this.log.error(`getUserMedia error observed ${n}`),n}finally{t&&(r==null||r.stop())}})}setOutputMediaStreamTrack(e){var t;if(super.setOutputMediaStreamTrack(e),this.setStateToReady(),this.isPublishing||this.isPublished)return(t=this.room)==null?void 0:t.replaceTrack(this)}get hasFlag(){var t,r;let e=oi(((t=this.room)==null?void 0:t.localPublishFlag)||0,((r=this.room)==null?void 0:r.userId)||"");return this.mediaType===4&&e.hasVideo||this.mediaType===1&&e.hasAudio||this.mediaType===2&&e.hasAuxiliary}publish(e,t){return f(this,null,function*(){return this.room=e,this.room.localTracks.add(this),this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.bindParent(e.getLogger()),yield t,this._checkPublishFlag(e)})}_checkPublishFlag(e){return new Promise((t,r)=>f(this,null,function*(){var c,l,u,m,p;let o=()=>r(new D({code:I.API_CALL_ABORTED,message:"publish aborted"}));if(this.hasFlag||this.muted?t():((this.state===Y.INIT||this.state==="ready")&&o(),he(ue(e,"local-publish-flag-changed"),Xt(()=>this.hasFlag),Le(Qn(ue(this,Y.INIT),ue(this,"ready"))),Se(t,r,o))),(u=(l=(c=this.room)==null?void 0:c.networkQuality)==null?void 0:l.hadRecentBadUplink)!=null&&u.call(l,2))return t();let n=e.heartbeatCount,a=((p=(m=this.mediaTrack)==null?void 0:m.stats)==null?void 0:p.totalFrames)||0;this._encodeCheckTimeoutId=setTimeout(()=>f(this,null,function*(){var h,E,g,R,N,j,V,ae;if((g=(E=(h=this.room)==null?void 0:h.networkQuality)==null?void 0:E.hadRecentBadUplink)!=null&&g.call(E,2)||e.heartbeatCount-n<3)return t();if((this.isPublished||this.isPublishing)&&this.isMediaTrackActive){if((R=this.mediaTrack)!=null&&R.stats){let P=this.mediaTrack.stats.totalFrames||0;P-a===0&&this.log.warn("capture totalFrames is 0 during encode check, totalFrames",P)}let b=this.kind===_.AUDIO,$=this.stat.bytesSent>0;if(y[$?"addSuccessEvent":"addFailedEvent"]({key:b?503700:513702}),!b){let P=((j=(N=this.room)==null?void 0:N.videoCodec)==null?void 0:j.toUpperCase())||"H264",ge={H264:513704,H265:513705,VP8:513706}[P];ge&&y[$?"addSuccessEvent":"addFailedEvent"]({key:ge})}if(!$){if(y.addEnum({key:b?503701:513703,value:as()}),se.uploadEvent({log:`stat-encode-failed-${this.kind}-${Dt()||Mt()}`,userId:this.userId}),this.log.warn(b?"encode failed":`${(ae=(V=this.room)==null?void 0:V.videoCodec)==null?void 0:ae.toUpperCase()} encode failed`),this.retryEncodeFailed&&(this.log.warn("retry encode"),yield this.retryEncodeFailed(this),this.stat.bytesSent>0||this.hasFlag||(yield Ke(5e3),this.stat.bytesSent>0||this.hasFlag)))return t();this.emit("6",this),r(new D({message:`${this.strMediaType} encode failed`,code:b?I.AUDIO_ENCODE_FAILED:I.VIDEO_ENCODE_FAILED}))}}}),1e4)}))}unpublish(){this.room&&this.room.localTracks.delete(this),this.log.info("unpublish"),S.emit(A.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return f(this,null,function*(){if(this.sourceTrack&&Di){let{deviceId:e,groupId:t}=this.sourceTrack.getSettings(),{label:r}=this.sourceTrack;(yield Af({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=r,t&&(this.groupId=t),Io().then(n=>{let a=n.find(c=>{let l=c.deviceId===e;return t&&(l=l&&c.groupId===t),l});a&&this.emit("2",a)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.sourceTrack||this.kind===_.AUDIO&&!If(this.sourceTrack)||this.kind===_.VIDEO&&!Sf(this.sourceTrack)||this._isRecapturing||e&&di&&ye)}onTrackMuted(){if(super.onTrackMuted(),yf(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<Bs){setTimeout(()=>this.onTrackMuted(),Bs);return}this._onMuteTimeoutId=setTimeout(()=>f(this,null,function*(){var e;if((e=this.sourceTrack)!=null&&e.muted){if((Ee||fe)&&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(xe(Is.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()&&this.recaptureMode===0){if(Date.now()-this._lastRecaptureTime<Bs){setTimeout(()=>this.onTrackEnded(),Bs);return}this.emit("7"),this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e,t=!1){return f(this,null,function*(){var n;if(this._isRecapturing||!this.sourceTrack)return;this.log.warn("recapture trying");let r=this.sourceTrack;t||(n=this.sourceTrack)==null||n.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let o={useExactDeviceId:!0};if(e==="user"||e==="environment")o.facingMode=e;else{let a;(this.kind==="audio"?yield At():yield Rt()).find(l=>l.deviceId===e)&&(a=e),o.deviceId=a}return this.capture(o,t).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),S.emit(A.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(a=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${a.message}`),this.emit("5",a),S.emit(A.LOCAL_TRACK_RECAPTURE,{track:this,error:a})}).finally(()=>{t&&(r==null||r.stop())})})}getRecoverCaptureDeviceId(){return f(this,null,function*(){let e=this instanceof ze;if(e&&this.facingMode)return this.facingMode;let{deviceId:t}=this;if(t){let r=(ia.get(t)||0)+1;if(ia.set(t,r),r>=3&&this.enableAutoSwitchWhenRecapturing){let o=e?(yield Rt()).find(n=>!ia.has(n.deviceId)):(yield At()).find(n=>!ia.has(n.deviceId));o&&(this.log.warn(`${t} capture fail ${r} times, change new ${o.deviceId}`),t=o.deviceId)}}return t})}stopCapture(){var e;this.sourceTrack&&(this.sourceTrack.stop(),this.uninstallTrackEvent(this.sourceTrack)),this._inputTrack&&this.uninstallTrackEvent(this._inputTrack),(e=this.manager)==null||e.removeInput(this),this._onMuteTimeoutId&&clearTimeout(this._onMuteTimeoutId)}close(){super.close(),this.stopCapture()}};O([ve(Y.INIT,"ready",{ignoreError:!0,sync:!0})],Is.prototype,"setStateToReady",1),O([or()],Is.prototype,"capture",1),O([ve("ready","publish",{ignoreError:!0,success(){S.emit(A.LOCAL_TRACK_PUBLISHED,{track:this,room:this.room}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),this.log.info("published")},fail(e){var n;(n=this.room)==null||n.localTracks.delete(this);let t="error",r=e instanceof D?e:e.cause instanceof D?e.cause:e,o=!1;r instanceof D&&(r.message.includes("timeout")?t="timeout":r.code===I.API_CALL_ABORTED&&(o=!0,t="api-call")),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:t,error:r}),this.log[o?"info":"error"]("publish failed",r)}}),yt(521714,!1)],Is.prototype,"publish",1),O([K(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)})}),ve([],"ready",{sync:!0})],Is.prototype,"unpublish",1);var gi=Is,ia=new Map;S.on(A.SWITCH_DEVICE_SUCCESS,s=>{s.track.deviceId&&ia.delete(s.track.deviceId)});var wt=class s extends gi{constructor(e){super(1,jc);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 Ue);d(this,"_output",new Ue);d(this,"codecPipeline",[]);d(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});d(this,"mixedAudioReferenceMap",new Map);d(this,"isAudioContextLongSuspended",!1);d(this,"after3aSilenceStartTime",0);d(this,"_micMuted",!1);d(this,"_volumeDetectionTrack",null);d(this,"_volumeDetectionSource",new Ue);this.manager=e,this.pipeline=new To(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._volumeDetectionSource.pipeTo(this.player.pipeline.volumeMeter),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this),S.on(A.AUDIO_CONTEXT_LONG_SUSPENDED,this.handleAudioContextLongSuspended,this)}get dbVolume(){return ms.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.isProcessEnabled)return this.player.getInternalAudioLevelAfter3A()}updateAfter3aSilenceStartTime(e){T(e)||(e===0&&!this.after3aSilenceStartTime?this.after3aSilenceStartTime=x():e>0&&(this.after3aSilenceStartTime=0))}setInputMediaStreamTrack(e){return f(this,null,function*(){let t=this.trackSettings||{};y.addEnum({key:501701,value:t.channelCount||0,useUV:!1}),y.addEnum({key:501702,value:t.sampleRate||0,useUV:!1}),y.addEnum({key:502700,value:0});let{sampleRate:r,channelCount:o}=t;this._log.info(`local audio track input ${JSON.stringify({sampleRate:r,channelCount:o})}`),this.pipeline.source.channelCount=o||1,this.pipeline.replaceSource(e),yield xe(s.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture(a){return f(this,arguments,function*({deviceId:e,customSource:t,useExactDeviceId:r=!0,retryWhenExactFailed:o},n=!1){let c=yield xe(s.prototype,this,"capture").call(this,{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:o,customSource:t},n);return wr(),c})}switchDevice(e){return f(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e&&!this.isUseCustomSource)if(e===Qr){if(yield Xu(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}),S.emit(A.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(){Ne&&!Ne.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&Ne.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){let t=this.recaptureMode===1;if(this.log.warn(`RecaptureMode: ${bo[this.recaptureMode]}. Current microphone is lost: ${JSON.stringify(e)}`),this.recaptureMode===0){Me(this.userId,{eventId:2003,param1:6,streamType:1});let r=yield At();r[0]?this.recapture(r[0].deviceId):t=!0}t&&Ne.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.recaptureMode===1&&e.deviceId!==this.deviceId||(Ne.off("audioInputAdded",this.handleMicrophoneAdded,this),this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId))}update3A(o){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&&(re||ye?yield n.applyConstraints(a).catch(l=>this._log.warn("update3A failed: ",l)):this.deviceId&&(yield this.recapture(this.deviceId,!0)))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&y.addEnum({key:502700,value:2})}setMute(e,t){var r;this._cleanupVolumeDetectionTrack(),e==="microphone"?(this._micMuted=!0,this.sourceTrack&&(this.sourceTrack.enabled=!1),t&&this._setupVolumeDetectionTrack(),((r=this.manager)==null?void 0:r.mixWeight)<=1?(this.muted=!0,this._inputTrack&&(this._inputTrack.enabled=!1),this._outputTrack&&(this._outputTrack.enabled=!1),this.emit("mute",this),S.emit(A.TRACK_MUTED,{track:this})):this._outputTrack&&(this._outputTrack.enabled=!0)):e===!0?(this._micMuted=!1,this.muted=!0,this.sourceTrack&&(this.sourceTrack.enabled=!1),this._inputTrack&&(this._inputTrack.enabled=!1),this._outputTrack&&(this._outputTrack.enabled=!1),t&&this._setupVolumeDetectionTrack(),this.emit("mute",this),S.emit(A.TRACK_MUTED,{track:this})):(this._micMuted=!1,this.muted=!1,this.sourceTrack&&(this.sourceTrack.enabled=!0),this._inputTrack&&(this._inputTrack.enabled=!0),this._outputTrack&&(this._outputTrack.enabled=!0),this.emit("unmute",this),S.emit(A.TRACK_UNMUTED,{track:this}))}_setupVolumeDetectionTrack(){let e=this.sourceTrack||this.mediaTrack;if(!e)return;this._volumeDetectionTrack=e.clone(),this._volumeDetectionTrack.enabled=!0;let t=So(this._volumeDetectionTrack);t&&this._volumeDetectionSource.setNode(t)}_cleanupVolumeDetectionTrack(){this._volumeDetectionTrack&&(this._volumeDetectionTrack.stop(),this._volumeDetectionTrack=null),this._volumeDetectionSource.deleteNode()}get isMicMuted(){return this._micMuted}setAudioVolume(e){super.setAudioVolume(0),Ee&&this.player.setMuted(!0),this.earMonitorGainNode.node||(this.earMonitorGainNode.setNode(Ae().createGain()),this._output.setNode(Ae().destination)),this.earMonitorGainNode.node.gain.value=e}enableTrackANS(e){return this.update3A({noiseSuppression:e})}enableTrackAEC(e){if(this.sourceTrack&&!(ye||Ee))return this.update3A({echoCancellation:e})}addDenoiser(e){var t;if(et<=92&&((t=this.trackSettings)==null?void 0:t.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}y.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=So(e);if(!r)return;let o=new Ue,n=Ae().createGain();n.gain.value=1;let a=new Ue;o.pipeTo(a).pipeTo(this.pipeline.mixNode),o.setNode(r),a.setNode(n),this.mixedAudioReferenceMap.set(t,[o,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,o]=this.mixedAudioReferenceMap.get(e)||[];o!=null&&o.node&&(o.node.gain.value=t/100,this.log.info(`setAudioReferenceVolume() => ${e} ${o.node.gain.value}`))}addAudioProcessor(e,t,r){this.pipeline.silentNode.setNode(r),this.pipeline.mixNode.setNode(t),this.pipeline.aec.setNode(e)}removeDenoiser(e){if(this.pipeline.denoiser.node===e)return this.pipeline.denoiser.deleteNode(),this.enableTrackANS(!0)}removeAudioProcessor(e){this.pipeline.aec.node===e&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode())}close(){this._cleanupVolumeDetectionTrack(),this.mixedAudioReferenceMap.forEach(([e,t])=>{e.deleteNode(),t.deleteNode()}),this.mixedAudioReferenceMap.clear(),this.pipeline.remove(),this.earMonitorGainNode.deleteNode(),this._output.deleteNode(),Ne.off("audioInputAdded",this.handleMicrophoneAdded,this),Ne.off("audioInputRemoved",this.handleMicrophoneRemoved,this),S.off(A.AUDIO_CONTEXT_LONG_SUSPENDED,this.handleAudioContextLongSuspended,this),super.close()}recapture(e,t=!1){return f(this,null,function*(){try{yield xe(s.prototype,this,"recapture").call(this,e,t)}catch(r){let o=(yield At()).find(n=>n.deviceId!==e);if(o)yield xe(s.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((t,r)=>r?r({frame:t,ntp:Hi()}):t,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}get enableEncryptFrame(){return this.manager&&!!this.manager.encodePipeline[0]}handleAudioContextLongSuspended({isSuspended:e}){if(this.pipeline.isProcessEnabled)if(e){this.isAudioContextLongSuspended=!0,this.log.warn(`context has suspended for ${Ju/1e3} seconds, change to source audio${Wt?"":", non-Safari"}`);let t=this.sourceTrack||this.mediaTrack;t&&this.setOutputMediaStreamTrack(t)}else this.isAudioContextLongSuspended=!1,this.log.warn("context has resumed, change to processed audio"),this.pipeline.track&&this.setOutputMediaStreamTrack(this.pipeline.track)}setOutputMediaStreamTrack(e){if(this.isAudioContextLongSuspended){let t=this.sourceTrack||this.mediaTrack;t&&(e=t)}super.setOutputMediaStreamTrack(e)}};function vo(s,i){return i+4<=s.byteLength&&s.getUint8(i)===0&&s.getUint8(i+1)===0&&s.getUint8(i+2)===0&&s.getUint8(i+3)===1?4:i+3<=s.byteLength&&s.getUint8(i)===0&&s.getUint8(i+1)===0&&s.getUint8(i+2)===1?3:0}function hd(s,i=!1){let e=new DataView(s),t=[],r=0;for(;r<e.byteLength;){let o=vo(e,r);if(o===0){r+=1;continue}let n=-1;for(let m=r+o;m<e.byteLength;m+=1)if(vo(e,m)>0){n=m;break}let a=n===-1?e.byteLength:n,c=a-r,l=new ArrayBuffer(c),u=new DataView(l);for(let m=0;m<c;m+=1)u.setUint8(m,e.getUint8(r+m));t.push(new cr(u,i)),r=a}return t}var cr=class{constructor(i,e=!1){this.dataView=i;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let{seiPayloadStartIndex:i}=this,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+=1:r=0,t.push(a);break;default:r=0,t.push(a);break}}t.push(this.dataView.getInt8(this.dataView.byteLength-1));let o=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=o}removePreventionByte(){let{seiPayloadStartIndex:i}=this,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 o=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=o}get seiPayloadStartIndex(){let i=6;for(let e=6;e<this.dataView.buffer.byteLength&&(i+=1,this.dataView.getUint8(e)===255);e+=1);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 n=6;n<this.dataView.buffer.byteLength;n+=1){let a=this.dataView.getUint8(n);if(e+=1,a===255)i+=255;else{i+=a;break}}let t=new ArrayBuffer(i),r=new DataView(t),o=e;for(let n=0;n<t.byteLength;n+=1)r.setInt8(n,this.dataView.getInt8(o+n));return r}get naluType(){let i=this.getStartCodeLength();return i>=this.dataView.byteLength?0:this.dataView.getUint8(i)&31}getStartCodeLength(){return this.dataView.byteLength>=4&&this.dataView.getUint8(0)===0&&this.dataView.getUint8(1)===0&&this.dataView.getUint8(2)===0&&this.dataView.getUint8(3)===1?4:this.dataView.byteLength>=3&&this.dataView.getUint8(0)===0&&this.dataView.getUint8(1)===0&&this.dataView.getUint8(2)===1?3:0}get isIDR(){return this.naluType===5}get isSPS(){return this.naluType===7}get isPPS(){return this.naluType===8}get isSEI(){return this.naluType===6}};var md=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,o=[];o.push(0,0,0,1,6,this._seiPayloadType);for(let a=0;a<t;a++)o.push(255);o.push(r);let n=new DataView(i);return o.push(...new Uint8Array(n.buffer)),o.push(128),new cr(new DataView(new Uint8Array(o).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 o=0;o<i.byteLength;o++)switch(r.getUint8(o)){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 o=9-this.getNaluCount(i.data);if(o<=0)return 0;let n=t.splice(0,o).reverse().map(this.encodeSEINalu.bind(this)),a=n.reduce((p,h)=>p+h.dataView.byteLength,0),c=new ArrayBuffer(a+i.data.byteLength),l=new DataView(c),u=new DataView(i.data),m=0;for(let p=0;p<n.length;p++)for(let h=0;h<n[p].dataView.byteLength;h++)l.setInt8(m++,n[p].dataView.getInt8(h));for(let p=0;p<i.data.byteLength;p++)l.setInt8(m++,u.getInt8(p));return i.data=c,n.length}return 0}};var Fr=class Fr extends gi{constructor(e,t=4){super(t,rt);d(this,"profile",M({},Tr));d(this,"avoidCropping",!1);d(this,"_scaleResolutionDownBy");d(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0,framesCaptured:0});d(this,"small");d(this,"isNeedToSetBandwidth");d(this,"muteImage");d(this,"manager");d(this,"_seiCodec",new md);this.manager=e;let r=()=>{var o;if(this.isAllowed2k4k(this.profile))this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1});else{let n=$t(((o=this.room)==null?void 0:o.sdkAppId)||0)?Na:va;this.log.warn(`Resolution is reset to 1080p, need to upgrade ability here ${n}`),this.setProfile(w(M({},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(!(!Di||!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"}get hasSmall(){var e;return!!((e=this.manager)!=null&&e.hasSmall)}setMute(e){return f(this,null,function*(){var t,r,o;if(ne(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,fillVideo:!0}),this.muteImage=e,xe(Fr.prototype,this,"setMute").call(this,!1)}else this.muteImage&&(yield(o=this.manager)==null?void 0:o.deleteWatermark("mute"),this.muteImage=void 0),xe(Fr.prototype,this,"setMute").call(this,e)})}capture(a){return f(this,arguments,function*({deviceId:e,facingMode:t,useExactDeviceId:r=!0,customSource:o,retryWhenExactFailed:n=!0}){let c={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:o};if(c.facingMode==="environment"){let l=yield this.getDeviceIdWhenUsingBackCamera();l&&(c.cameraId=l)}return xe(Fr.prototype,this,"capture").call(this,c)})}setProfile(e){var r;let t=this.fallbackProfile(e);if(t.bitrate&&(this.isNeedToSetBandwidth=t.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile))super.setProfile(t);else{let o=$t(((r=this.room)==null?void 0:r.sdkAppId)||0)?Na:va;this.log.warn(`Resolution is reset to 1080p, need to upgrade ability here ${o}`),super.setProfile(w(M({},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,o=this.settings,n=o.height!==this.profile.height||o.width!==this.profile.width||o.frameRate!==this.profile.frameRate;if(n&&(qe===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:_.VIDEO,videoType:_.BIG})}})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate},t=this.sourceTrack||this.mediaTrack;return Di&&t&&Object.assign(e,t.getSettings()),e}get scaleResolutionDownBy(){return this._scaleResolutionDownBy?this._scaleResolutionDownBy:Qs(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)&&!this.isUseCustomSource)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),S.emit(A.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}})}getDeviceIdWhenUsingBackCamera(){return f(this,null,function*(){let e;try{if(Tn&&!oo&&vu){let r=(yield Rt(!0)).map(n=>{var a;return w(M({},n),{capabilities:(a=n.getCapabilities)==null?void 0:a.call(n)})}).filter(n=>{var a,c;return(c=(a=n.capabilities)==null?void 0:a.facingMode)==null?void 0:c.includes("environment")}),o=r[0];r.forEach(n=>{var u,m,p,h;let{capabilities:a}=n,c=(u=a.width)!=null&&u.max&&((m=a.height)!=null&&m.max)?a.width.max*a.height.max:0,l=(p=o.capabilities.width)!=null&&p.max&&((h=o.capabilities.height)!=null&&h.max)?o.capabilities.width.max*o.capabilities.height.max:0;c>l&&(o=n)}),o!=null&&o.capabilities&&(this._log.info("use max resolution back camera",o),e=o.deviceId)}}catch(t){this._log.warn("get max res camera failed",t)}return e})}updateSmallConfig(e){return f(this,null,function*(){var r,o;this._log.info(`update small stream config: ${JSON.stringify(e)}`);let t=!this.small;this.small=this.fallbackProfile(e,!0),yield(r=this.manager)==null?void 0:r.update(),t&&(yield(o=this.room)==null?void 0:o.enableSmall(!0)),this.log.info("update small stream config success")})}fallbackProfile(e,t=!1){let r=e.width>e.height,o=M({},e);return e.width*e.height<=19200&&fe&&tt&&(this.log.warn(`${t?"small ":""}resolution is ${e.width}*${e.height}, fallback to 240*180 for android chrome`),o.width=r?240:180,o.height=r?180:240,o.bitrate=Math.max(e.bitrate,150)),e.width*e.height>1280*720&&Xl&&(o.width=r?1280:720,o.height=r?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),An(pt,"14.3")&&Rn(pt,"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&&(tt||re)&&!os()&&e.width*e.height<=640*360&&e.width/e.height===16/9&&(this._scaleResolutionDownBy=1280/e.width,o.width=1280,o.height=720,this.log.warn(`capture 720p, scale: ${this._scaleResolutionDownBy}`)),o}stopSmall(){var e,t;this.small&&(delete this.small,(e=this.manager)==null||e.update(),(t=this.room)==null||t.enableSmall(!1))}listenDeviceChange(){Ne&&!Ne.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&Ne.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){let t=this.recaptureMode===1;if(this.log.warn(`RecaptureMode: ${bo[this.recaptureMode]}. Current camera is lost: ${JSON.stringify(e)}`),this.recaptureMode===0){Me(this.userId,{eventId:2003,param1:7,streamType:2});let r=yield Rt();r[0]?this.recapture(r[0].deviceId):t=!0}t&&Ne.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return f(this,null,function*(){this.recaptureMode===1&&e.deviceId!==this.deviceId||(Ne.off("videoInputAdded",this.handleCameraAdded,this),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((o,n)=>n?n({frame:o,mediaType:r}):o,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(){Ne.off("videoInputAdded",this.handleCameraAdded,this),Ne.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return f(this,null,function*(){try{yield xe(Fr.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield Rt()).find(o=>o.deviceId!==e);if(r)yield xe(Fr.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))}};O([Ct(function(e){this.setContentHint(e.contentHint||"motion")})],Fr.prototype,"capture",1);var ze=Fr;var Uh={};Bi(Uh,{REPORT_TYPE:()=>Ys,buildSSOPackage:()=>qi,bytes2ms:()=>Xm,calculateScaleResolutionDownNumber:()=>Qs,concatArrayBuffers:()=>Xa,convertObjectNumberToInt:()=>dn,copyProperties:()=>qm,deepClone:()=>Yr,deepCloneBasic:()=>Ha,deepMerge:()=>ni,delay:()=>Ke,fibonacci:()=>Kr,formatedTime:()=>rp,getConstructorName:()=>Js,getContainerFromElement:()=>ip,getEnv:()=>Gm,getFirst16Bits:()=>op,getInternalVersion:()=>ep,getLast16Bits:()=>za,getLoggerUrl:()=>ji,getMediaStreamTrackInfo:()=>qa,getMuteStateFromFlag:()=>oi,getNetworkType:()=>$a,getNumNetworkType:()=>Zr,getReconnectionTimeout:()=>si,getStringByteLength:()=>cn,getTestSignalDomain:()=>Wm,getTurnServer:()=>tp,getUint32Version:()=>Wa,getValueType:()=>Pe,getViewListFromView:()=>Xs,glog:()=>wl,ipv4ToUint32:()=>qs,isArray:()=>Ie,isAudioWorkletSupported:()=>Zm,isBoolean:()=>pe,isConstructor:()=>es,isEmpty:()=>js,isFunction:()=>me,isLangChinese:()=>ri,isMediaStreamTrack:()=>Qm,isNumber:()=>te,isObject:()=>vt,isOverseaSdkAppId:()=>$t,isPlainObject:()=>dt,isPortrait:()=>xl,isPromise:()=>Rr,isRemoteTrack:()=>Ym,isRotate90Or270:()=>Nt,isSetSinkIdSupported:()=>Km,isString:()=>ne,isUndefined:()=>T,loadImage:()=>zs,loadVideo:()=>sp,ms2bytes:()=>zm,ms2samples:()=>Ll,normalizeUrl:()=>ja,performanceNow:()=>x,promiseAny:()=>ts,samples2ms:()=>kl,setNetworkTypeFromWebRTC:()=>Ga,stringify:()=>Et,stringifyIncludeValue:()=>an,throttlePromise:()=>Ja});var DS=[-1,-1,1,-1,-1,1,1,1],MS=[0,0,1,0,0,1,1,1];var Br=class Br extends Y{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 Qe){e.ctx&&t.create2d&&(typeof OffscreenCanvas=="function"&&qe!==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(MS),this.positionBuffer=this.createBuffer(DS),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.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 D({code:I.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 $e&&this.render(e)||this.context instanceof Qe&&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 $e){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,o)=>{r&&(t.activeTexture(t.TEXTURE0+o),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,o)=>{t.enableVertexAttribArray(o),t.bindBuffer(t.ARRAY_BUFFER,r),t.vertexAttribPointer(o,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,o,n,a,c,l,u){let m=!T(a)&&!T(c)&&!T(l)&&!T(u);return this.ctx2d&&e?(e instanceof ImageData?(m?this.ctx2d.putImageData(e,t,r,a,c,l,u):this.ctx2d.putImageData(e,t,r),this.emit(Br.RENDER,this.ctx2d.canvas)):(m?this.ctx2d.drawImage(e,a,c,l,u,t,r,o,n):this.ctx2d.drawImage(e,t,r,o,n),this.emit(Br.RENDER,e)),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 m;let{totalFrames:e,x:t,y:r,width:o,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:o,height:n,timestamp:l,fps:u,name:a,cost:c},M({parent:(m=this.input)==null?void 0:m.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.UNPACK_ALIGNMENT,1),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),r}};d(Br,"RENDER","render"),O([ve(Y.INIT,"connected",{sync:!0})],Br.prototype,"connect",1),O([ve("connected",Y.INIT,{ignoreError:!0,sync:!0})],Br.prototype,"disconnect",1),O([ve([],"closed",{sync:!0})],Br.prototype,"close",1);var we=Br;var OS=he(ih(250),ea(()=>performance.now()),nr());var Lf=s=>i=>{let e=performance.now();he(OS,sd(t=>t-e<s),ar(1))(i)};var kS=[0,1,1,1,0,0,1,0],As=class extends we{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 Qe?this.ctx2d=e.ctx||null:e.available&&(t!=null&&t.mirrorUpAndDown)&&this.setTexBuffer(kS)}start(e){this.log.info(`${this.name} start render ${e} fps`),ce.clearTask(this._intervalId),this._intervalId=ce.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(ce.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof $e){let r=this.context.ctx.getError();r&&this.context.destroy(new D({code:I.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(),this.emit(we.RENDER,this.context._canvas),!0):!1}addInput(e,...t){super.addInput(e,...t),this.start(this.context.frameRate)}update(e=0){this.state!=="closed"&&(this._intervalId&&(ce.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),ce.clearTask(this._intervalId)}resize(e,t){super.resize(e,t),this.context.setSize(e,t)}close(){super.close(),ce.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},No=class extends As{constructor(e,t){super(e,t);d(this,"_videoTrack");d(this,"_muteOb");d(this,"_closedOb",ue(this,"closed"));d(this,"_subscription");d(this,"_canvasContainer");Number(Yi)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e.canvas.captureStream().getVideoTracks(),this._muteOb=ue(this._videoTrack,"mute"),he(ue(this._videoTrack,"ended"),Le(this._closedOb),Se(()=>{this.context.destroy(new D({code:I.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=he(this._muteOb,Le(this._closedOb),Ss(Lf(5e3)),Xt(()=>{var e;return!!((e=this._videoTrack)!=null&&e.muted)&&!document.hidden}),Se(()=>{this.context.destroy(new D({code:I.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()}},pd=class extends No{render(i){var t;let e=!!((t=this.input)!=null&&t.requestFrame(i));if(this.context._canvas2d){let r=this.context._canvas2d.getContext("2d");r.clearRect(0,0,this.context._canvas2d.width,this.context._canvas2d.height),r.drawImage(this.context._canvas,0,0,this.context._canvas2d.width,this.context._canvas2d.height),this.emit(we.RENDER,this.context._canvas2d)}else this.emit(we.RENDER,this.context._canvas);return e}};var fd=class extends No{constructor(e,t,r){super(e,{name:"smallDestination",logger:r});this.resolution=t}resize(e,t){let r,o=e*t,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${t} small res: ${this.resolution.width}*${this.resolution.height} `),o>n?r=o/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=o/19200),super.resize(e/Math.sqrt(r),t/Math.sqrt(r))}};var ra=class extends we{constructor(e,t){super(e,M({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,qe===16&&(this._canvasRendered=ot(),he(this._canvasRendered,Yn(this._image),Vr(r=>r instanceof HTMLCanvasElement?ue(r,"rendered"):Kn()),Le(ue(this,"closed")),Se(()=>{this.update()})))}onFirstFrame(){this.waitingFirstFrame=!1}tryVideoFrameCallback(){if(!this.shouldUpdate)return;let e=this.image;this.videoCallbackId&&e.cancelVideoFrameCallback(this.videoCallbackId),ir()&&!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:o}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(),{videoWidth:r,videoHeight:o}=n,!r||!o)return!1;n.width=r,n.height=o}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:r,height:o}=n,n!==this._lastImage)this._lastImage=n;else if(r===this.width&&o===this.height)return!0}else n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas?({width:r,height:o}=n,this._lastImage=n):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:r,displayHeight:o}=n,(a=this._lastImage)==null||a.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===r&&this.height===o&&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,o)}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)}},sa=class extends ra{constructor(e,t,r){super(e,r);this._player=t;this.name="videoPlayerSource",he(ue(this._player,W.PLAYER_STATE_CHANGED),Le(ue(this,"closed")),Xt(({state:o})=>o==="PLAYING"),Se(()=>{this.tryVideoFrameCallback()}))}get image(){return this._player.element}},zt=class extends sa{get available(){return this._player.isPlaying&&!this.waitingFirstFrame}constructor(i,e,t){super(i,new rt({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()}},_d=class extends we{constructor(e,t,r){super(e,w(M({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:o}=this;super.resize(e,t),this.color=r,this.font=o}drawMultilineText(e=0,t=0,r=1.2){if(!this.ctx2d)return;let o=this.ctx2d.measureText(this.content);t+=o.fontBoundingBoxAscent||o.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 wS=`
|
|
33
35
|
// \u9876\u70B9\u7740\u8272\u5668
|
|
34
36
|
attribute vec4 a_position;
|
|
35
37
|
attribute vec2 a_texCoord;
|
|
@@ -39,7 +41,7 @@ void main() {
|
|
|
39
41
|
gl_Position = a_position;
|
|
40
42
|
v_texCoord = a_texCoord;
|
|
41
43
|
}
|
|
42
|
-
`,
|
|
44
|
+
`,xS=`
|
|
43
45
|
// \u7247\u5143\u7740\u8272\u5668
|
|
44
46
|
precision mediump float;
|
|
45
47
|
varying vec2 v_texCoord;
|
|
@@ -47,69 +49,34 @@ uniform sampler2D u_texture;
|
|
|
47
49
|
|
|
48
50
|
void main() {
|
|
49
51
|
gl_FragColor = texture2D(u_texture, v_texCoord);
|
|
50
|
-
} `;var Ps=class extends he{constructor(e){super();m(this,"frameRate");m(this,"_canvas");m(this,"log");m(this,"hasAlpha",!1);m(this,"name");m(this,"error");this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}get canvas(){return this._canvas}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 Dr(this,e,{logger:this.log,name:r})}createVideoTrackDestination(e){return new Bn(this,e)}createVideoImageSource(e,r){return new yc(this,r?Object.assign(r,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,r){return new bc(this,e,r?Object.assign(r,{logger:this.log}):{logger:this.log})}createTextSource(e,r){return new ul(this,e,r?Object.assign(r,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};m(Ps,"_ids",0);var $n=class $n extends Ps{constructor(){super(...arguments);m(this,"defaultProgam");m(this,"defaultVShader");m(this,"defaultFShader");m(this,"ctx");m(this,"_canvas2d")}get canvas(){return this._canvas2d||this._canvas}create(e=!1){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Ps._ids++}`),e&&(this._canvas2d=document.createElement("canvas")),this.ctx=this._canvas.getContext("webgl2",Cm),!this.ctx)throw new ce({code:z.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,sb),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,nb),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new ce({code:z.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(e){let r="";return e&&(r=e.message,this.error=e,J.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,this._canvas2d&&(this._canvas2d.width=e)}set height(e){var r;(r=this.ctx)==null||r.viewport(0,0,this.width,e),super.height=e,this._canvas2d&&(this._canvas2d.height=e)}setSize(e,r){var o;(o=this.ctx)==null||o.viewport(0,0,e,r),super.setSize(e,r),this._canvas2d&&(this._canvas2d.width=e,this._canvas2d.height=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}};m($n,"UNAVAILABLE","unavailable"),Z([ot(he.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),J.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),J.addSuccessEvent({key:512700})}})],$n.prototype,"create",1),Z([ot("created",he.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit($n.UNAVAILABLE,e),this.removeAllListeners()}})],$n.prototype,"destroy",1);var Ct=$n,xt=class extends Ps{constructor(){super(...arguments);m(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Ps._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha,willReadFrequently:e.willReadFrequently}),!this.ctx)throw new ce({code:z.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,J.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(),J.addSuccessEvent({key:512703})}};Z([ot(he.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),J.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),J.addSuccessEvent({key:512701})}})],xt.prototype,"create",1),Z([ot("created",he.INIT,{ignoreError:!0,sync:!0})],xt.prototype,"destroy",1);function ab(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),d=e/a,l=r/a;n.sx=(i-d)/2,n.sy=(t-l)/2,n.sWidth=d,n.sHeight=l;break}}return n}var jp=class{constructor(t,e){this.node=t;this.layout=e;m(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}},Hn=class extends _t{constructor(e,r){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:r});m(this,"inputs",[]);m(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 jp(e,r);this.inputs.splice(o,0,n)}changeInputLayout(e,r){let o=this.inputs.findIndex(R=>R.node===e);if(o<0)return;let{x:s,y:n,width:a,height:d,zIndex:l,fillMode:p,rotation:f,hidden:_}=r;if(!O(l)&&this.inputs.some(R=>R.layout.zIndex===l&&R.node!==e))throw new Error(`input already exists at zIndex ${r.zIndex}`);let I=this.inputs[o];O(s)||(I.layout.x=s),O(n)||(I.layout.y=n),O(a)||(I.layout.width=a),O(d)||(I.layout.height=d),O(f)||(I.layout.rotation=f),O(_)||(I.layout.hidden=_),p&&(I.layout.fillMode=p),!O(l)&&l!==I.layout.zIndex&&(I.layout.zIndex=l,this.inputs.sort((R,y)=>R.layout.zIndex-y.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 Ct&&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=ab(o.node.width,o.node.height,o.width,o.height,o.fillMode,gr(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,d=Date.now(),l=(e-this.lastInfo.totalFrames)/((d-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:n,timestamp:d,fps:l,name:a},Q({parent:this.inputs.filter(p=>p).map(p=>p.node.getInfo())},this.lastInfo)}removeAllInputs(){this.inputs.forEach(e=>{var r;if(e.node.disconnect(),e.positionBuffer&&this.context instanceof Ct)try{(r=this.context.ctx)==null||r.deleteBuffer(e.positionBuffer)}catch(o){}})}close(){super.close(),this.removeAllInputs()}};var cb=[1,0,0,0,1,1,0,1],wr=class extends _t{constructor(e,r,o,s){super(e,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"transform",logger:r});m(this,"mirror",!1);m(this,"rotation",0);if(o&&(this.mirror=o),s&&(this.rotation=s),e instanceof Ct)try{this.setTexBuffer(cb)}catch(n){e.destroy(new ce({code:z.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){gr(this.rotation)&&([e,r]=[r,e]),super.resize(e,r)}};var Ls=class extends Zr{constructor(e,r=4){super(r,Ft);m(this,"inputLocalVideoTracks",new Map);m(this,"inputLocalScreenTracks",new Map);m(this,"cameraNodeMap",new Map);m(this,"screenNodeMap",new Map);m(this,"textNodeMap",new Map);m(this,"imageNodeMap",new Map);m(this,"videoNodeMap",new Map);m(this,"endedIds",new Set);m(this,"videoContext");m(this,"mixNode");m(this,"destination");m(this,"manager");m(this,"stat");m(this,"_checkId",0);m(this,"autoSetFps",!0);this.manager=e,this.log.id+="mix",this.create2dVideoContext(),this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log}),this.destination.on(_t.RENDER,o=>{this.emit("render",o)}),this.mixNode=new Hn(this.videoContext,this.log),this.mixNode.matchInputSize=!1}listenDeviceChange(){throw new Error("Method not implemented.")}enablePrintDetail(e=2e3){this._checkId=mt.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}create2dVideoContext(){this.videoContext?this.videoContext.destroy():this.videoContext=new xt({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)if(a.profile.frameRate>r){if(this.endedIds.has(n)){let d=this.cameraNodeMap.get(n);d&&d.image.cancelVideoFrameCallback(d.videoCallbackId);continue}r=a.profile.frameRate,e=n}for(let[n,a]of this.inputLocalScreenTracks)if(a.profile.frameRate>r){if(this.endedIds.has(n)){let d=this.screenNodeMap.get(n);d&&d.image.cancelVideoFrameCallback(d.videoCallbackId);continue}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 b(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),vr&&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");r.recaptureMode=1,Vt(this,lt).add("videoInputRemoved",a=>{a.deviceId===r.deviceId&&(this.endedIds.add(e),this.setFpsAuto())}),r.on("output-media-track-changed",()=>{this.endedIds.delete(e),this.updateCameraSource(e,o,r.mediaTrack)});let n;Pt===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 screenSource failed");r.on("output-media-track-changed",()=>{this.updateScreenSource(e,o,r.mediaTrack)});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 d=this.videoContext.createTextSource({content:o,font:s,color:n});d.resize(a.width,a.height),this._connectMix(d,a),this.textNodeMap.set(r,d)}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(Pt===16&&o instanceof CanvasCaptureMediaStreamTrack)if(n instanceof Dr){let l=n.output;n.close(),n=this.videoContext.createVideoImageSource(o.canvas,{name:"cameraCanvasSource",logger:this.log}),n.connect(l),this.cameraNodeMap.set(e,n)}else n.image=o.canvas;else if(n instanceof Dr)n.replaceTrack(o);else{let l=n.output;n.close(),n=this.videoContext.createVideoTrackSource(o,"cameraNodeSource"),n.connect(l),this.cameraNodeMap.set(e,n)}let{width:a,height:d}=o.getSettings();a&&d&&n.resize(a,d)}s&&n.resize(s.width,s.height),(s||o)&&this.setFpsAuto(),this._changeMixLayout(n,r)}}updateScreenSource(e,r,o=null){let s=this.screenNodeMap.get(e);s&&(o&&s.replaceTrack(o),this._changeMixLayout(s,r))}updateTextSource(e){let{id:r,content:o,font:s,color:n,layout:a}=e,d=this.textNodeMap.get(r);d&&(O(o)||(d.content=o),O(s)||(d.font=s),O(n)||(d.color=n),d.resize(a.width,a.height),this._changeMixLayout(d,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 wr(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 wr&&(O(o)||(n.mirror=o),O(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 wr&&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 wr&&o.output.close(),o.close(),this.screenNodeMap.delete(e)),this.checkAfterRemove(!0)}removeTextSource(e){let r=this.textNodeMap.get(e);r&&(r.output instanceof wr&&r.output.close(),r.close(),this.textNodeMap.delete(e)),this.checkAfterRemove()}removeImageSource(e){let r=this.imageNodeMap.get(e);r&&(r.output instanceof wr&&r.output.close(),r.close(),this.imageNodeMap.delete(e)),this.checkAfterRemove()}removeVideoSource(e){let r=this.videoNodeMap.get(e);r&&(r.output instanceof wr&&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(),mt.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(),yt(this);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 ll=qa();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:ll,exposeOrigin:!0,permittedOrigins:["*"]})}catch(i){}var db=function(i){return b(this,null,function*(){let t=null,e=mb(i);B.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let r=yield navigator.mediaDevices.getDisplayMedia(e);i.systemAudio&&r.getAudioTracks().length===0&&(An&&Ut<74||ct||nt)&&B.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){B.warn(`screen applyConstraints failed: ${s}`)}i.captureElement&&(yield ub(o,i.captureElement))}if(i.audio){let s=lb(i);B.info(`getUserMedia with constraints: ${JSON.stringify(s)}`),t=yield navigator.mediaDevices.getUserMedia(s),r.addTrack(t.getAudioTracks()[0])}return r})};function ub(i,t){return b(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&Xe(i.cropTo))try{if(!(((e=i.getCaptureHandle())==null?void 0:e.handle)===ll))return;let o=yield CropTarget.fromElement(t);yield i.cropTo(o)}catch(r){B.warn(`cropTo target failed ${r}`)}})}function lb(i){let t={echoCancellation:i.echoCancellation,autoGainControl:i.autoGainControl,noiseSuppression:i.noiseSuppression,sampleRate:i.sampleRate,channelCount:i.channelCount};return O(i.microphoneId)||(t.deviceId=i.microphoneId),{audio:t,video:!1}}function mb(i){let t={preferCurrentTab:i.preferDisplaySurface==="current-tab"||!!i.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:ct?{max:i.width}:{ideal:i.width,max:i.width},height:ct?{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 E_=db;var Ei=class extends Ir{constructor(e){super(e,2);m(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});m(this,"objectFit","contain");m(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}get isShareCurrentTab(){var e,r;try{return ll===((r=(e=this.mediaTrack)==null?void 0:e.getCaptureHandle())==null?void 0:r.handle)}catch(o){return}}capture(p){return b(this,arguments,function*({systemAudio:e=!1,autoGainControl:r,echoCancellation:o,noiseSuppression:s,audioTrack:n,videoTrack:a,captureElement:d,preferDisplaySurface:l}){try{let f=pe(),_;return a||n?(_=new MediaStream,a&&_.addTrack(a),n&&_.addTrack(n)):(_=yield E_({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:r,echoCancellation:o,noiseSuppression:s,captureElement:d,preferDisplaySurface:l}),this.sourceTrack=_.getVideoTracks()[0]),yield this.setInputMediaStreamTrack(_.getVideoTracks()[0]),x.emit(V.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:pe()-f}),_}catch(f){throw this.log.error(`getDisplayMedia error observed ${f}`),f instanceof ce?f:new ce({code:z.INITIALIZE_FAILED,name:f.name,message:f.message})}})}switchDevice(e){return b(this,null,function*(){throw new Error("Method not implemented.")})}};Z([Do(function(e){this.setContentHint(e.contentHint||"detail")})],Ei.prototype,"capture",1);var xs=class extends gi{constructor(t){super(t),this._log.id=`s-${this._log.id}`,this.isScreen=!0}addAudioProcessor(t,e,r){this.pipeline.silentNode.setNode(r),this.pipeline.mixNode.setNode(e),this.pipeline.aec.setNode(t),this.enableTrackAEC(!1)}removeAudioProcessor(t){this.pipeline.aec.node===t&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}};var hb='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}});',qp;function Rc(i,t=48e3,e=1,r){return b(this,null,function*(){let o=ze("dump");qp||(qp=qi(o,URL.createObjectURL(new Blob([hb],{type:"application/javascript"})))),yield qp;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,d)=>a.connect(n,0,d)),new ReadableStream({start(a){n.port.onmessage=d=>{a.enqueue(d.data)}},cancel(){i.forEach(a=>a.disconnect(n)),n.port.close()}})})}var ml=class extends Uu{constructor(e){super();this.room=e;m(this,"_localAudioTrack");m(this,"_localScreenAudioTrack");m(this,"log");m(this,"denoiser");m(this,"voiceChanger");m(this,"mixChangedDebounce");m(this,"audioProcessor");m(this,"encodePipeline",[]);m(this,"decodePipeline",[]);m(this,"getPCMAbortCtrlMap",new Map);m(this,"audioFrameEventConfigMap",new Map);m(this,"audioReferenceMap",new Map);m(this,"isLocalAudioNeedAudioProcess",!1);m(this,"isScreenAudioNeedAudioProcess",!1);this.log=B.createLogger({parent:e==null?void 0:e.getLogger(),id:"am",userId:e==null?void 0:e.userId,sdkAppId:e==null?void 0:e.sdkAppId}),this.installEvent()}get localAudioTrack(){return this._localAudioTrack}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 p,f;if(!this._localAudioTrack)return;let r=[],o=[];(p=this._localAudioPipline)!=null&&p.source.node&&(r.push(this._localAudioPipline.source.node),o.push("mic")),(f=this._localAudioPipline)!=null&&f.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),d=()=>{for(let _=0;_<o.length;_++){let I=URL.createObjectURL(new Blob(n[_])),R=document.createElement("a");R.href=I,R.download=`${o[_]}.pcm`,R.style.display="none",document.body.appendChild(R),R.click(),URL.revokeObjectURL(I),R.remove()}clearTimeout(a),s.abort("download")},l=Rc(r).then(_=>_.pipeTo(new WritableStream({write(I){I.forEach((R,y)=>n[y]=n[y]?n[y].concat(R[0]):[R[0]])}}),s).catch(I=>d));return{then:l.then.bind(l),download:d}}getPCM(e,r){var P,W,G;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 d=Math.floor(s*.04),l=new Float32Array(d),p=new Float32Array(d),f,_,I=0,R=new AbortController,y=r===""?(P=this._localAudioTrack)==null?void 0:P.mediaTrack:(G=(W=this.room)==null?void 0:W.remotePublishedUserMap.get(r))==null?void 0:G.remoteAudioTrack.mediaTrack;if(!y){this.log.info(`getPCM failed: ${r||"local"} has no audio track`);return}let N=ze().createMediaStreamSource(new MediaStream([y]));return Rc([N],s,n,a).then(ae=>ae.pipeTo(new WritableStream({write(ke){ke[0][0]&&(I+ke[0][0].length>d?(l.set(ke[0][0].subarray(0,d-I),I),f=ke[0][0].subarray(d-I),ke[0][1]&&(p.set(ke[0][1].subarray(0,d-I),I),_=ke[0][1].subarray(d-I)),I+=d-I):(f&&(l.set(f,I),I+=f.length,f=void 0),_&&(p.set(_,I),_=void 0),l.set(ke[0][0],I),ke[0][1]&&p.set(ke[0][1],I),I+=ke[0][0].length),I>=d&&(I=0,e({userId:r,sampleRate:s,channelCount:n,data:n===1?l:[l,p]}),l=new Float32Array(d),p=new Float32Array(d)))}}),R).catch(ke=>this.log.warn(`stop getPCM reason:${ke}`))),R}get hasScreenAudioTrack(){return!O(this._localScreenAudioTrack)}get hasAudioTrack(){return!O(this._localAudioTrack)}changeInput(e){var r,o;if(e instanceof xs)return this._localScreenAudioTrack=e,this.isScreenAudioNeedAudioProcess&&((r=this.audioProcessor)!=null&&r.screenAudioWorkletNode)&&(e.addAudioProcessor(this.audioProcessor.screenAudioWorkletNode,this.audioProcessor.mixNode,this.audioProcessor.silentNode),this.audioReferenceMap.forEach((s,n)=>{e.mixAudioReference(s,n)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof gi)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),this.isLocalAudioNeedAudioProcess&&((o=this.audioProcessor)!=null&&o.localAudioWorkletNode)&&(e.addAudioProcessor(this.audioProcessor.localAudioWorkletNode,this.audioProcessor.mixNode,this.audioProcessor.silentNode),this.audioReferenceMap.forEach((s,n)=>{e.mixAudioReference(s,n)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof Qi)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 xs?delete this._localScreenAudioTrack:e instanceof gi?delete this._localAudioTrack:e instanceof Qi}addDenoiser(e){var r;this.denoiser=e,(r=this._localAudioTrack)==null||r.addDenoiser(e)}addAudioProcessor(e,r,o,s){var n;this.audioProcessor={localAudioWorkletNode:o,mixNode:e,silentNode:r,screenAudioWorkletNode:s},this.isLocalAudioNeedAudioProcess&&this._localAudioTrack&&o&&(this._localAudioTrack.addAudioProcessor(o,e,r),this.audioReferenceMap.forEach((a,d)=>{var l;(l=this._localAudioTrack)==null||l.mixAudioReference(a,d)})),this.isScreenAudioNeedAudioProcess&&this._localScreenAudioTrack&&s&&((n=this._localScreenAudioTrack)==null||n.addAudioProcessor(s,e,r),this.audioReferenceMap.forEach((a,d)=>{var l;(l=this._localScreenAudioTrack)==null||l.mixAudioReference(a,d)}))}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){var o,s;delete this.audioProcessor,(o=this._localAudioTrack)==null||o.removeAudioProcessor(e),(s=this._localScreenAudioTrack)==null||s.removeAudioProcessor(r)}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 d;(d=this.room)==null||d.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(){x.on("113",this.handleLocalTrackStarted,this),x.on("114",this.handleLocalTrackStopped,this),x.on("115",this.handleRemoteTrackStarted,this),x.on("116",this.handleRemoteTrackStopped,this)}uninstallEvent(){x.off("113",this.handleLocalTrackStarted),x.off("114",this.handleLocalTrackStopped),x.off("115",this.handleRemoteTrackStarted),x.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||O(s))return;this.setAudioReferenceVolume(o,s)}}};function __(i=30,t=2){return Pe((e,r)=>function(...o){return new Promise((s,n)=>{let a=setTimeout(()=>{let d=new ce({code:z.API_CALL_TIMEOUT,message:`checkPendingPromise ${r}() timeout ${i}s`});(this.log||this._log||B).warn(d),t===2?n(d):t===1&&s()},i*1e3);this._checkPendingPromiseSet||(this._checkPendingPromiseSet=new Set),this._checkPendingPromiseSet.add(a),e.apply(this,o).then(s,n).finally(()=>{clearTimeout(a),this._checkPendingPromiseSet&&a&&this._checkPendingPromiseSet.delete(a)})})})}var _i=class _i extends bs{constructor(e,r,o){super({userId:r.userId,sdkAppId:e.sdkAppId,mediaType:o,room:e});this.room=e;this.user=r;m(this,"tinyId");m(this,"isRemote",!0);m(this,"jitterBufferDelay",0);m(this,"availableState");m(this,"remotePublishState");m(this,"_triggerCheckDecodeSubject",bt(ye(this,_i.STATE_SUBSCRIBE)));m(this,"ignoreUpdatePlayingState");this.tinyId=r.tinyId,this.availableState=new he(`${r.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new he(`${r.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),be(_c(ye(this,he.STATECHANGED),ye(this.remotePublishState,he.STATECHANGED)),Mo(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),Le(d=>{this.availableState.state!==(d?he.ON:he.OFF)&&(this.availableState.state=d?he.ON:he.OFF),!(this.isRemotePublished&&this.ignoreUpdatePlayingState)&&this.updatePlayingState(d)}));let s=be(ye(this.player,ue.ERROR),er(d=>d.code===MediaError.MEDIA_ERR_DECODE)),n=be(Ic(5e3),er(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived||!this.isRemotePublished?!1:this.player.isPlaying||(this.kind===M.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)?(this.reportDecodeResult(!0),!1):!0)),a=be(op(s,n),Je(ye(this,he.INIT)));be(this._triggerCheckDecodeSubject,er(()=>!this.ignoreDecodeError),Ji(a),Le(d=>{this.reportDecodeResult(!1,d)}))}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,s,n;return((n=(s=(o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.hadRecentBadDownlink)==null?void 0:s.call(o,2))!=null?n:!1)||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===_i.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===he.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,r){var s,n;let o=this.kind===M.AUDIO;if(J[e?"addSuccessEvent":"addFailedEvent"]({key:o?504700:514702}),!o){let a=((s=this.room)==null?void 0:s.downlinkVideoCodec.toUpperCase())||"H264";J[e?"addSuccessEvent":"addFailedEvent"]({key:Cn[`DECODE_${a}_RESULT`]}),e||this.log.warn(`${(n=this.room)==null?void 0:n.downlinkVideoCodec} decode failed`)}e||(J.addEnum({key:o?504701:514703,value:Es()}),Ue.uploadEvent({log:`stat-decode-failed-${this.kind}-${Vi()||Jr()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===M.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:r}))}updatePlayingState(e){if(this.player.isPlayCalled&&this.player.setTrack(this.playerMediaTrack),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?he.ON:he.OFF,this.emit("remote-publish-changed",this.isRemotePublished)}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};m(_i,"STATE_SUBSCRIBE","subscribe"),Z([__(5,1)],_i.prototype,"waitHasMediaTrack",1),Z([ot(he.INIT,_i.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),x.emit(V.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),ju(521716,!1)],_i.prototype,"subscribe",1),Z([ot(_i.STATE_SUBSCRIBE,he.INIT,{sync:!0,success(){this.log.info("unsubscribed"),x.emit(V.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],_i.prototype,"unsubscribe",1);var Wn=_i;var Qi=class extends Wn{constructor(e,r){super(e,r,1);m(this,"volume",0);m(this,"mediaType",1);m(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}get dbVolume(){return Fu.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}onPlayerError(e){this.enableDecodeFrame&&(this._log.warn("use audio decoder"),this.room.enableInsertableStreams())}get enableDecodeFrame(){var e,r;return this.manager?this.manager.decodePipeline.some(o=>o)||((r=(e=this.player.element)==null?void 0:e.error)==null?void 0:r.code)===MediaError.MEDIA_ERR_DECODE&&Mu().AudioDecoder&&Ss:!1}get enableDecryptFrame(){return this.manager&&!!this.manager.decodePipeline[0]}decodeFrame(e){if(!this.manager)return e;let r=e;for(let[o,s]of this.manager.decodePipeline.entries()){if(!s)continue;let n={frame:e,track:this};if(o===1&&this.isAvailable&&this.room.role==="audience"&&(n.onAudioFrameNTPTime=({ntp:a,frame:d,hasLeavingTag:l})=>{this.emit("audio-frame-with-ntp",{ntp:a,frame:d,hasLeavingTag:l})}),r=s(n),!r)return}return r}getAudioLevel(){if(!this.isAvailable)return 0;let e=this.volume||super.getAudioLevel();return e>1?1:e}getInternalAudioLevel(){return this.isAvailable?super.getInternalAudioLevel():0}get isRemotePublished(){return this.user.muteState.audioAvailable}};var hl=class extends _t{constructor(e,r,o,s,n){super(e,{useDefaultProgram:!0,useFbo:!0,name:"alpha",create2d:!0,logger:r});this.setContainer=s;m(this,"initStat",{alphaStitchingType:1});m(this,"end",bt());m(this,"minSize",320);m(this,"maxSize",1280);m(this,"draggable",!1);m(this,"startDragX",0);m(this,"startDragY",0);m(this,"left",0);m(this,"top",0);m(this,"baseWidth",320);m(this,"baseRatio");m(this,"container");this.initStat=n,this.draggable=o,this.bindDragEvents(),J.addEnum({key:515700,value:1}),this.draggable&&J.addEnum({key:515700,value:11})}bindDragEvents(){let e=this.context._canvas;if(e)if(this.draggable){let r=Je(this.end);be(ye(e,"mousedown"),ws(this.startDrag.bind(this)),fi(()=>be(ye(window,"mousemove"),Je(ye(window,"mouseup")))),r,Le(this.doDrag.bind(this))),be(ye(e,"dblclick"),r,Le(this.resetPosition.bind(this))),be(ye(e,"wheel"),r,Le(this.handleZoom.bind(this))),this.renderCanvas()}else{if(!this.container)return;this.container.style.removeProperty("left"),this.container.style.removeProperty("top"),this.end.next()}}render(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}startDrag(e){e.preventDefault(),e.button===0&&(this.startDragX=e.clientX-this.left,this.startDragY=e.clientY-this.top)}renderCanvas(){let{container:e}=this;e||this.setContainer(),!(!e||!this.baseRatio||!this.draggable)&&(e.style.setProperty("width",`${this.baseWidth}px`),e.style.setProperty("height",`${this.baseWidth/this.baseRatio}px`),e.style.setProperty("position","fixed"),e.style.setProperty("left",`${this.left}px`),e.style.setProperty("top",`${this.top}px`))}doDrag(e){e.preventDefault(),this.left=e.clientX-this.startDragX,this.top=e.clientY-this.startDragY,this.renderCanvas()}handleZoom(e){e.preventDefault();let r=.1,o=e.deltaY,s=this.context._canvas;s&&(this.baseWidth||(this.baseWidth=s.offsetWidth),o<0?this.baseWidth=Math.min(this.baseWidth*(1+r),this.maxSize):this.baseWidth=Math.max(this.baseWidth*(1-r),this.minSize),this.renderCanvas())}resetPosition(){this.left=0,this.top=0,this.renderCanvas()}onRatioReset(){this.renderCanvas()}draw2d(e,r,o,s,n){var I;let{ctx2d:a}=this,d=this.context._canvas;if(!a||!d)return!1;let l=super.draw2d(e,r,o,s,n),p=a.getImageData(0,0,s,n),{data:f}=p,_=!1;if(this.initStat.alphaStitchingType===1){let R=Math.floor(s/2);for(let y=0;y<n;y++)for(let N=0;N<R;N++){let P=(y*s+N)*4,W=N+R,G=(y*s+W)*4,ae=f[G];f[G+3]=0;let ke=ae>=100;f[P+3]=ke?255:0}_=super.draw2d(p,0,0,0,0,R,n),d.width=R}else if(this.initStat.alphaStitchingType===2){let R=Math.floor(n/2);for(let y=0;y<R;y++)for(let N=0;N<s;N++){let P=(y*s+N)*4,G=((y+R)*s+N)*4,ae=f[G];f[G+3]=0;let ke=ae>=100;f[P+3]=ke?255:0}_=super.draw2d(p,0,0,0,0,s,R),d.height=R}return(I=this.context.ctx)==null||I.clearRect(0,0,s,n),l&&_}close(){this.baseRatio=void 0,this.end.next(),this.end.complete()}};function fb(i){return[15,30,45,60].reduce((e,r)=>Math.abs(r-i)<Math.abs(e-i)?r:e)}var Lo=class extends Wn{constructor(e,r,o=4){super(e,r,o);m(this,"mediaType",4);m(this,"source");m(this,"shouldRenderAlpha",!1);m(this,"alphaNode");m(this,"shouldBeDraggable",!0);m(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0,keyFramesDecoded:0});m(this,"_keyFrameCountLogged",!1);m(this,"_keyFrameStartTimestamp",0);m(this,"_keyFrameStartCount",0);m(this,"_keyFrameIntervals",[]);m(this,"_prevKeyFrameTimestamp",0);this.manager=e.videoManager,this.on("first-video-frame",s=>{this.room.emit("first-video-frame",s)})}isAlphaSei(e){if(this.userId!==e.userId||e.seiPayloadType!==50)return!1;let r=new Uint8Array(e.data);return r.length%3!==0||r[0]!==0||r[1]!==1?!1:r}play(e,r){return r!=null&&r.canvasRender&&!this.source&&this.useCanvasPlayer(),super.play(e,r).then(()=>{this.player.calculateStat(),x.emit("156",{track:this,player:this.player})})}updateAlphaRenderInfo(e){let r=this.isAlphaSei(e);if(r)if(!this.alphaNode)this.shouldRenderAlpha=!0,this.player.shouldRenderAlpha=!0,this.useCanvasPlayer(r[2]);else{let o=r[2];if(this.alphaNode.baseRatio&&this.alphaNode.initStat.alphaStitchingType===o)return;this.alphaNode.initStat={alphaStitchingType:o};let s=this.player.getElement();if(s){let n=s.videoWidth/s.videoHeight;n&&(this.alphaNode.baseRatio=n*(o===1?.5:2),this.alphaNode.onRatioReset())}this.player.canvas&&(this.player.canvas.id=this.generateAlphaCanvasName(o))}}generateAlphaCanvasName(e){let r="alpha",o=Ka[e];return`${r}_${o}_${this.userId}`}useCanvasPlayer(e){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let r=new xt({frameRate:15,logger:this.log,name:this.shouldRenderAlpha&&e?this.generateAlphaCanvasName(e):this.userId});r.create({alpha:this.shouldRenderAlpha,willReadFrequently:this.shouldRenderAlpha});let o=new Os(r,{name:"remotePlayer",logger:this.log});if(this.source=r.createVideoPlayerSource(this.player),this.player.setCanvas(r._canvas),this.shouldRenderAlpha&&e){let s=()=>{!this.player.container||!this.alphaNode||(this.alphaNode.container=this.player.container,this.alphaNode.renderCanvas())},n=new hl(r,this.log,this.shouldBeDraggable,s,{alphaStitchingType:e});this.source.connect(n),n.connect(o),this.alphaNode=n}else this.source.connect(o);Qr()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,r),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let r=this.decodeFPS,o=fb(r);if(!Be(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),x.emit("157",{track:this,player:this.player}),this.alphaNode&&this.alphaNode.close(),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)}setDraggable(e){this.shouldBeDraggable=e,this.alphaNode&&(this.alphaNode.draggable=e,this.alphaNode.bindDragEvents())}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}updateKeyFramesDecoded(e){let r=this.stat.keyFramesDecoded||0;if(this.stat.keyFramesDecoded=e,this._keyFrameCountLogged)return;let o=Date.now();if(!this._keyFrameStartTimestamp){this._keyFrameStartTimestamp=o,this._keyFrameStartCount=e,this._prevKeyFrameTimestamp=o;return}if(this._prevKeyFrameTimestamp&&e>r){let n=e-r,d=(o-this._prevKeyFrameTimestamp)/1e3/n;this._keyFrameIntervals.push(d)}this._prevKeyFrameTimestamp=o;let s=o-this._keyFrameStartTimestamp;if(s>=16e3){let n=e-this._keyFrameStartCount,a=n>0?s/1e3/n:0,d=`${n} keyframes in 16s ${a} [${this._keyFrameIntervals.map(p=>p.toFixed(1)).join(",")}] keyFramesDecoded ${e}`,l=a<=2.5?"debug":"info";this.log[l](d),this._keyFrameCountLogged=!0}}},pl=class extends Lo{constructor(e,r){super(e,r,2);m(this,"mediaType",2);m(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var Gn=new Map;x.on(V.JOIN_SUCCESS,({room:i})=>{ht(i.userId,{eventId:32788})});x.on(V.LEAVE_START,({room:i})=>{ht(i.userId,{eventId:32789})});x.on(V.LOCAL_TRACK_PUBLISHED,({track:i})=>{if(i.room){let t=32769;i.mediaType===4?t=32768:i.mediaType===2&&(t=32805),ht(i.room.userId,{eventId:t})}});x.on(V.LOCAL_TRACK_UNPUBLISHED,({track:i})=>{if(i.room){let t=32771;i.mediaType===4?t=32770:i.mediaType===2&&(t=32806),ht(i.room.userId,{eventId:t})}});x.on(V.TRACK_MUTED,({track:i})=>{i.room&&(i.kind===M.AUDIO?ht(i.room.userId,{eventId:i.isRemote?32785:32772,remoteUserId:i.isRemote?i.userId:void 0}):ht(i.room.userId,{eventId:i.isRemote?32784:32773,remoteUserId:i.isRemote?i.userId:void 0}))});x.on(V.TRACK_UNMUTED,({track:i})=>{i.room&&(i.kind===M.AUDIO?ht(i.room.userId,{eventId:i.isRemote?32787:32774,remoteUserId:i.isRemote?i.userId:void 0}):ht(i.room.userId,{eventId:i.isRemote?32786:32775,remoteUserId:i.isRemote?i.userId:void 0}))});x.on(V.REMOTE_TRACK_SUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&ht(i.room.userId,{eventId:32777,remoteUserId:i.userId}),i.mediaType===4&&ht(i.room.userId,{eventId:32776,remoteUserId:i.userId}),i.mediaType===8&&ht(i.room.userId,{eventId:32803,remoteUserId:i.userId}))});x.on(V.REMOTE_TRACK_UNSUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&ht(i.room.userId,{eventId:32779,remoteUserId:i.userId}),i.mediaType===4&&ht(i.room.userId,{eventId:32778,remoteUserId:i.userId}),i.mediaType===8&&ht(i.room.userId,{eventId:32804,remoteUserId:i.userId}))});x.on(V.SWITCH_DEVICE_SUCCESS,({track:i})=>{i.room&&ht(i.room.userId,{eventId:i.kind===M.VIDEO?32780:32781})});x.on(V.LOCAL_TRACK_REPLACED,({track:i})=>{i.room&&ht(i.room.userId,{eventId:i.kind===M.VIDEO?32782:32783})});x.on(V.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&&ht(i.userId,{eventId:r})});x.on(V.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&&ht(i.userId,{eventId:s,remoteUserId:r})});x.on(V.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 d={H264:0,H265:1,VP8:2}[r.toUpperCase()],l={eventId:4004,param1:a,param2:d,streamType:n||2};e&&(l.remoteUserId=e,l.eventId=4005),ht(t,l),J.addEnum({key:e?514701:513701,value:a}),J.addEnum({key:e?514700:513700,value:d})});x.on(V.LOCAL_TRACK_RECAPTURE,({track:i,error:t})=>{if(i.userId){let e={eventId:2003,param1:0};i.kind===M.AUDIO?(e.streamType=1,t&&(e.param1=2)):(e.streamType=i.streamType==="auxiliary"?7:2,t&&(e.param1=8)),ht(i.userId,e)}});function ht(i,t){let e=Te(Q({},t),{timestamp:Ci()});Gn.has(i)?Gn.get(i).push(e):Gn.set(i,[e])}function T_(i){if(Gn.has(i)){let t=Gn.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 Gn.delete(i),t}return[]}function I_(...i){return Pe((t,e)=>function(...r){return gb.call(this,i,r,e,this._name),t.apply(this,r)})}function gb(i,t,e,r){try{if(ut(i))for(let o=0;o<i.length;o++)fl.call(this,{rule:i[o],value:t[o],key:i[o].name,fnName:e,className:r});else fl.call(this,{rule:i,value:t[0],key:i.name,fnName:e,className:r})}catch(o){throw B.error(o),o}}function fl({rule:i,value:t,key:e,fnName:r,className:o}){if(O(t)){if(i.required)throw new ce({code:z.INVALID_PARAMETER,message:je({key:Ge.INVALID_PARAMETER_REQUIRED,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(O(i.defaultValue))return;t=i.defaultValue}if(Array.isArray(i.type)){let a=!1;for(let d=0;d<i.type.length;d++)i.type[d]===null&&t===null&&(a=!0),Xe(i.type[d])&&t instanceof i.type[d]&&(a=!0),Oe(i.type[d])&>(t)===i.type[d].toLowerCase()&&(a=!0);if(!a)throw new ce({code:z.INVALID_PARAMETER,message:je({key:Ge.INVALID_PARAMETER_TYPE,data:{key:e,rule:{type:i.type.map(d=>cs(d)?dn(d):Oe(d)?d:gt(d))},fnName:r,value:t},link:{className:o,fnName:r}})})}else if(!O(i.type)&>(t)!==i.type)throw new ce({code:z.INVALID_PARAMETER,message:je({key:Ge.INVALID_PARAMETER_TYPE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(i.allowEmpty===!1){let a=Be(t)&&(t===0||Number.isNaN(t)),d=Oe(t)&&t.trim()==="";if(a||d)throw new ce({code:z.INVALID_PARAMETER,message:je({key:Ge.INVALID_PARAMETER_EMPTY,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})})}if(i.notLessThanZero&&Be(t)&&t<0)throw new ce({code:z.INVALID_PARAMETER,message:je({key:Ge.CANNOT_LESS_THAN_ZERO,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(!O(i.min)&&Be(t)&&t<i.min)throw new ce({code:z.INVALID_PARAMETER,message:je({key:Ge.INVALID_PARAMETER_MIN,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(!O(i.max)&&Be(t)&&t>i.max)throw new ce({code:z.INVALID_PARAMETER,message:je({key:Ge.INVALID_PARAMETER_MAX,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});if(Oe(i.instanceOf)){if(!t||t._name!==i.instanceOf)throw new ce({code:z.INVALID_PARAMETER,message:je({key:Ge.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})})}else if(Xe(i.instanceOf)&&!(t instanceof i.instanceOf))throw new ce({code:z.INVALID_PARAMETER,message:je({key:Ge.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 ce({code:z.INVALID_PARAMETER,message:je({key:Ge.INVALID_PARAMETER_RANGE,data:{key:e,rule:i,fnName:r,value:t},link:{className:o,fnName:r}})});let{properties:s}=i;Jt(s)&&fr(t)&&Object.keys(s).forEach(a=>{fl.call(this,{rule:s[a],value:t&&t[a],key:`${e}.${a}`,fnName:r,className:o})});let{arrayItem:n}=i;Jt(n)&&ut(t)&&t.forEach((a,d)=>{fl.call(this,{rule:n,value:a,key:`${e}[${d}]`,fnName:r,className:o})}),Xe(i.validate)&&i.validate.call(this,t,e,r,o,this)}var Eb=ai(mi(),1);var _b=ai(mi(),1);var Tb=Object.create,Il=Object.defineProperty,Ib=Object.defineProperties,P_=Object.getOwnPropertyDescriptor,Sb=Object.getOwnPropertyDescriptors,L_=Object.getOwnPropertyNames,Tl=Object.getOwnPropertySymbols,Ab=Object.getPrototypeOf,cf=Object.prototype.hasOwnProperty,x_=Object.prototype.propertyIsEnumerable,Kp=(i,t,e)=>t in i?Il(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,Dc=(i,t)=>{for(var e in t||(t={}))cf.call(t,e)&&Kp(i,e,t[e]);if(Tl)for(var e of Tl(t))x_.call(t,e)&&Kp(i,e,t[e]);return i},wc=(i,t)=>Ib(i,Sb(t)),yb=(i,t)=>{var e={};for(var r in i)cf.call(i,r)&&t.indexOf(r)<0&&(e[r]=i[r]);if(i!=null&&Tl)for(var r of Tl(i))t.indexOf(r)<0&&x_.call(i,r)&&(e[r]=i[r]);return e},bb=(i,t)=>function(){return t||(0,i[L_(i)[0]])((t={exports:{}}).exports,t),t.exports},Rb=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of L_(t))cf.call(i,o)||o===e||Il(i,o,{get:()=>t[o],enumerable:!(r=P_(t,o))||r.enumerable});return i},k_=(i,t,e)=>(e=i!=null?Tb(Ab(i)):{},Rb(!t&&i&&i.__esModule?e:Il(e,"default",{value:i,enumerable:!0}),i)),Yi=(i,t,e,r)=>{for(var o,s=r>1?void 0:r?P_(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&&Il(t,e,s),s},st=(i,t,e)=>Kp(i,typeof t!="symbol"?t+"":t,e),U_=bb({"../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(l,p,f){this.fn=l,this.context=p,this.once=f||!1}function n(l,p,f,_,I){if(typeof f!="function")throw new TypeError("The listener must be a function");var R=new s(f,_||l,I),y=r?r+p:p;return l._events[y]?l._events[y].fn?l._events[y]=[l._events[y],R]:l._events[y].push(R):(l._events[y]=R,l._eventsCount++),l}function a(l,p){--l._eventsCount===0?l._events=new o:delete l._events[p]}function d(){this._events=new o,this._eventsCount=0}Object.create&&(o.prototype=Object.create(null),new o().__proto__||(r=!1)),d.prototype.eventNames=function(){var l,p,f=[];if(this._eventsCount===0)return f;for(p in l=this._events)e.call(l,p)&&f.push(r?p.slice(1):p);return Object.getOwnPropertySymbols?f.concat(Object.getOwnPropertySymbols(l)):f},d.prototype.listeners=function(l){var p=r?r+l:l,f=this._events[p];if(!f)return[];if(f.fn)return[f.fn];for(var _=0,I=f.length,R=new Array(I);_<I;_++)R[_]=f[_].fn;return R},d.prototype.listenerCount=function(l){var p=r?r+l:l,f=this._events[p];return f?f.fn?1:f.length:0},d.prototype.emit=function(l,p,f,_,I,R){var y=r?r+l:l;if(!this._events[y])return!1;var N,P,W=this._events[y],G=arguments.length;if(W.fn){switch(W.once&&this.removeListener(l,W.fn,void 0,!0),G){case 1:return W.fn.call(W.context),!0;case 2:return W.fn.call(W.context,p),!0;case 3:return W.fn.call(W.context,p,f),!0;case 4:return W.fn.call(W.context,p,f,_),!0;case 5:return W.fn.call(W.context,p,f,_,I),!0;case 6:return W.fn.call(W.context,p,f,_,I,R),!0}for(P=1,N=new Array(G-1);P<G;P++)N[P-1]=arguments[P];W.fn.apply(W.context,N)}else{var ae,ke=W.length;for(P=0;P<ke;P++)switch(W[P].once&&this.removeListener(l,W[P].fn,void 0,!0),G){case 1:W[P].fn.call(W[P].context);break;case 2:W[P].fn.call(W[P].context,p);break;case 3:W[P].fn.call(W[P].context,p,f);break;case 4:W[P].fn.call(W[P].context,p,f,_);break;default:if(!N)for(ae=1,N=new Array(G-1);ae<G;ae++)N[ae-1]=arguments[ae];W[P].fn.apply(W[P].context,N)}}return!0},d.prototype.on=function(l,p,f){return n(this,l,p,f,!1)},d.prototype.once=function(l,p,f){return n(this,l,p,f,!0)},d.prototype.removeListener=function(l,p,f,_){var I=r?r+l:l;if(!this._events[I])return this;if(!p)return a(this,I),this;var R=this._events[I];if(R.fn)R.fn!==p||_&&!R.once||f&&R.context!==f||a(this,I);else{for(var y=0,N=[],P=R.length;y<P;y++)(R[y].fn!==p||_&&!R[y].once||f&&R[y].context!==f)&&N.push(R[y]);N.length?this._events[I]=N.length===1?N[0]:N:a(this,I)}return this},d.prototype.removeAllListeners=function(l){var p;return l?(p=r?r+l:l,this._events[p]&&a(this,p)):(this._events=new o,this._eventsCount=0),this},d.prototype.off=d.prototype.removeListener,d.prototype.addListener=d.prototype.on,d.prefixed=r,d.EventEmitter=d,t!==void 0&&(t.exports=d)}}),vb=k_(U_(),1),S_=Symbol("instance"),uV=Symbol("abortCtrl"),gl=Symbol("cacheResult"),zp=class{constructor(i,t,e){this.oldState=i,this.newState=t,this.action=e,this.aborted=!1}abort(i){this.aborted=!0,Oc.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},_l=class extends Error{constructor(i,t,e){super(t),this.state=i,this.message=t,this.cause=e}};function Cb(i){return typeof i=="object"&&i&&"then"in i}var Mc=new Map;function xo(i,t,e={}){return(r,o,s)=>{let n=e.action||o;if(!e.context){let d=Mc.get(r)||[];Mc.has(r)||Mc.set(r,d),d.push({from:i,to:t,action:n})}let a=s.value;s.value=function(...d){let l=this;if(e.context&&(l=tr.get(typeof e.context=="function"?e.context.call(this,...d):e.context)),l.state===t)return e.sync?l[gl]:Promise.resolve(l[gl]);l.state instanceof zp&&l.state.action==e.abortAction&&l.state.abort(l);let p=null;Array.isArray(i)?i.length==0?l.state instanceof zp&&l.state.abort(l):typeof l.state=="string"&&i.includes(l.state)||(p=new _l(l._state,`${l.name} ${n} to ${t} failed: current state ${l._state} not from ${i.join("|")}`)):i!==l.state&&(p=new _l(l._state,`${l.name} ${n} to ${t} failed: current state ${l._state} not from ${i}`));let f=N=>{if(e.fail&&e.fail.call(this,N),e.sync){if(e.ignoreError)return N;throw N}return e.ignoreError?Promise.resolve(N):Promise.reject(N)};if(p)return f(p);let _=l.state,I=new zp(_,t,n);Oc.call(l,I);let R=N=>{var P;return l[gl]=N,I.aborted||(Oc.call(l,t),(P=e.success)===null||P===void 0||P.call(this,l[gl])),N},y=N=>(Oc.call(l,_,N),f(N));try{let N=a.apply(this,d);return Cb(N)?N.then(R).catch(y):e.sync?R(N):Promise.resolve(R(N))}catch(N){return y(new _l(l._state,`${l.name} ${n} from ${i} to ${t} failed: ${N}`,N instanceof Error?N:new Error(String(N))))}}}}function Nb(...i){return(t,e,r)=>{let o=r.value,s=e;r.value=function(...n){if(!i.includes(this.state.toString()))throw new _l(this.state,`${this.name} ${s} failed: current state ${this.state} not in ${i}`);return o.apply(this,n)}}}var Db=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 Oc(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(tr.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var tr=class Mr extends vb.default{constructor(t,e,r){super(),this.name=t,this.groupName=e,this._state=Mr.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[S_];o?this.name=o.name+"-"+o.count++:r[S_]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=Mc.get(t)||[],r=new Set,o=[],s=[],n=new Set,a=Object.getPrototypeOf(t);Mc.has(a)&&(a.stateDiagram.forEach(l=>r.add(l)),a.allStates.forEach(l=>n.add(l))),e.forEach(({from:l,to:p,action:f})=>{typeof l=="string"?o.push({from:l,to:p,action:f}):l.length?l.forEach(_=>{o.push({from:_,to:p,action:f})}):s.push({to:p,action:f})}),o.forEach(({from:l,to:p,action:f})=>{n.add(l),n.add(p),n.add(f+"ing"),r.add(`${l} --> ${f}ing : ${f}`),r.add(`${f}ing --> ${p} : ${f} \u{1F7E2}`),r.add(`${f}ing --> ${l} : ${f} \u{1F534}`)}),s.forEach(({to:l,action:p})=>{r.add(`${p}ing --> ${l} : ${p} \u{1F7E2}`),n.forEach(f=>{f!==l&&r.add(`${f} --> ${p}ing : ${p}`)})});let d=[...r];return Object.defineProperties(t,{stateDiagram:{value:d},allStates:{value:n}}),d}static get(t){let e;return typeof t=="string"?(e=Mr.instances.get(t),e||Mr.instances.set(t,e=new Mr(t,void 0,Object.create(Mr.prototype)))):(e=Mr.instances2.get(t),e||Mr.instances2.set(t,e=new Mr(t.constructor.name,void 0,Object.create(Mr.prototype)))),e}static getState(t){var e;return(e=Mr.get(t))===null||e===void 0?void 0:e.state}updateDevTools(t={}){Db(Mr.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){Oc.call(this,t)}};tr.STATECHANGED="stateChanged",tr.UPDATEAFSM="updateAFSM",tr.INIT="[*]",tr.ON="on",tr.OFF="off",tr.instances=new Map,tr.instances2=new WeakMap;var qn=class extends tr{constructor(){super(...arguments),st(this,"decoder"),st(this,"config")}initialize(){return b(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,i.description||i.codec==="av1"||(this.config[i.codec]={format:"annexb"}),this.decoder.configure(wc(Dc({},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 wb(){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,d={wasmBinary:o,postRun:()=>{i=new d.VideoDecoder({videoInfo(l,p){n=l,a=p,console.log("video info",l,p)},yuvData(l,p){let f=n*a,_=f>>2,I=d.HEAPU32[l>>2],R=d.HEAPU32[1+(l>>2)],y=d.HEAPU32[2+(l>>2)],N=d.HEAPU8.subarray(I,I+f),P=d.HEAPU8.subarray(R,R+_),W=d.HEAPU8.subarray(y,y+_),G=new Uint8Array(f+_+_);G.set(N),G.set(P,f),G.set(W,f+_);let ae=new VideoFrame(G,{codedWidth:n,codedHeight:a,format:"I420",timestamp:p});e?(s==null||s.drawImage(ae,0,0,e.width,e.height),s==null||s.commit()):self.postMessage({type:"yuvData",videoFrame:ae},[ae])}}),self.postMessage({type:"ready"})}};Function("var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;return "+r)()(d)}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:"")}}}Yi([xo([tr.INIT,"closed"],"initialized")],qn.prototype,"initialize",1),Yi([xo("initialized","configured",{sync:!0})],qn.prototype,"configure",1),Yi([Nb("configured")],qn.prototype,"decode",1),Yi([xo([],tr.INIT,{sync:!0})],qn.prototype,"reset",1),Yi([xo([],"closed",{ignoreError:!0,sync:!0})],qn.prototype,"close",1);var Nc=class extends tr{constructor(i,t,e=!1,r,o=!1){super(),this.createModule=i,this.wasmBinary=t,this.workerMode=e,this.canvas=r,this.yuvMode=o,st(this,"worker"),st(this,"decoder"),st(this,"config"),st(this,"module",{}),st(this,"width",0),st(this,"height",0)}initialize(i){return b(this,null,function*(){var t;if(this.workerMode){let r=new RegExp("\\{(.+)\\}","s").exec(wb.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:d}=a.data;this.emit("videoFrame",d)}}})}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),d=this.module.HEAPU8.subarray(s,s+r),l=this.module.HEAPU8.subarray(n,n+r);if(this.yuvMode)return void this.emit("videoFrame",{y:a,u:d,v:l,timestamp:t});let p=new Uint8Array(e+r+r);p.set(a),p.set(d,e),p.set(l,e+r),this.emit("videoFrame",new VideoFrame(p,{codedWidth:this.width,codedHeight:this.height,format:"I420",timestamp:t}))}errorInfo(i){let t={errMsg:i};this.emit("error",t)}};Yi([xo([tr.INIT,"closed"],"initialized")],Nc.prototype,"initialize",1),Yi([xo("initialized","configured",{sync:!0})],Nc.prototype,"configure",1),Yi([xo([],tr.INIT,{sync:!0})],Nc.prototype,"reset",1),Yi([xo([],"closed",{sync:!0})],Nc.prototype,"close",1);var Mb=(()=>{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,u)=>{e=c,r=u});var s,n,a,d=Object.assign({},o),l="./this.program",p=typeof window=="object",f=typeof importScripts=="function",_=(typeof process=="object"&&typeof process.versions=="object"&&process.versions.node,"");(p||f)&&(f?_=self.location.href:typeof document!="undefined"&&document.currentScript&&(_=document.currentScript.src),i&&(_=i),_=_.indexOf("blob:")!==0?_.substr(0,_.replace(/[?#].*/,"").lastIndexOf("/")+1):"",s=c=>{var u=new XMLHttpRequest;return u.open("GET",c,!1),u.send(null),u.responseText},f&&(a=c=>{var u=new XMLHttpRequest;return u.open("GET",c,!1),u.responseType="arraybuffer",u.send(null),new Uint8Array(u.response)}),n=(c,u,h)=>{var g=new XMLHttpRequest;g.open("GET",c,!0),g.responseType="arraybuffer",g.onload=()=>{g.status==200||g.status==0&&g.response?u(g.response):h()},g.onerror=h,g.send(null)});var I,R=o.print||console.log.bind(console),y=o.printErr||console.error.bind(console);Object.assign(o,d),d=null,o.arguments&&o.arguments,o.thisProgram&&(l=o.thisProgram),o.quit&&o.quit,o.wasmBinary&&(I=o.wasmBinary);var N,P;o.noExitRuntime,typeof WebAssembly!="object"&&ri("no native wasm support detected");var W,G,ae,ke,Me,Y,Or,Ye,ea,ta=!1,Yc=[],Zc=[],ti=[];function ra(c){Yc.unshift(c)}function jo(c){ti.unshift(c)}var Ar=0,re=null,Si=null;function Ws(c){Ar++,o.monitorRunDependencies&&o.monitorRunDependencies(Ar)}function qo(c){if(Ar--,o.monitorRunDependencies&&o.monitorRunDependencies(Ar),Ar==0&&(re!==null&&(clearInterval(re),re=null),Si)){var u=Si;Si=null,u()}}function ri(c){o.onAbort&&o.onAbort(c),y(c="Aborted("+c+")"),ta=!0,c+=". Build with -sASSERTIONS for more info.";var u=new WebAssembly.RuntimeError(c);throw r(u),u}var Ai,ia,Ae,H;function Wt(c){return c.startsWith("data:application/octet-stream;base64,")}function yi(c){if(c==Ai&&I)return new Uint8Array(I);if(a)return a(c);throw"both async and sync fetching of the wasm failed"}function ii(c,u,h){return(function(g){return I||!p&&!f||typeof fetch!="function"?Promise.resolve().then(()=>yi(g)):fetch(g,{credentials:"same-origin"}).then(A=>{if(!A.ok)throw"failed to load wasm binary file at '"+g+"'";return A.arrayBuffer()}).catch(()=>yi(g))})(c).then(g=>WebAssembly.instantiate(g,u)).then(g=>g).then(h,g=>{y("failed to asynchronously prepare wasm: "+g),ri(g)})}Wt(Ai="videodec.wasm")||(ia=Ai,Ai=o.locateFile?o.locateFile(ia,_):_+ia);var ro=c=>{for(;c.length>0;)c.shift()(o)};function io(c){this.excPtr=c,this.ptr=c-24,this.set_type=function(u){Y[this.ptr+4>>2]=u},this.get_type=function(){return Y[this.ptr+4>>2]},this.set_destructor=function(u){Y[this.ptr+8>>2]=u},this.get_destructor=function(){return Y[this.ptr+8>>2]},this.set_caught=function(u){u=u?1:0,W[this.ptr+12|0]=u},this.get_caught=function(){return W[this.ptr+12|0]!=0},this.set_rethrown=function(u){u=u?1:0,W[this.ptr+13|0]=u},this.get_rethrown=function(){return W[this.ptr+13|0]!=0},this.init=function(u,h){this.set_adjusted_ptr(0),this.set_type(u),this.set_destructor(h)},this.set_adjusted_ptr=function(u){Y[this.ptr+16>>2]=u},this.get_adjusted_ptr=function(){return Y[this.ptr+16>>2]},this.get_exception_ptr=function(){if(Ur(this.get_type()))return Y[this.excPtr>>2];var u=this.get_adjusted_ptr();return u!==0?u:this.excPtr}}var fe={isAbs:c=>c.charAt(0)==="/",splitPath:c=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(c).slice(1),normalizeArray:(c,u)=>{for(var h=0,g=c.length-1;g>=0;g--){var A=c[g];A==="."?c.splice(g,1):A===".."?(c.splice(g,1),h++):h&&(c.splice(g,1),h--)}if(u)for(;h;h--)c.unshift("..");return c},normalize:c=>{var u=fe.isAbs(c),h=c.substr(-1)==="/";return(c=fe.normalizeArray(c.split("/").filter(g=>!!g),!u).join("/"))||u||(c="."),c&&h&&(c+="/"),(u?"/":"")+c},dirname:c=>{var u=fe.splitPath(c),h=u[0],g=u[1];return h||g?(g&&(g=g.substr(0,g.length-1)),h+g):"."},basename:c=>{if(c==="/")return"/";var u=(c=(c=fe.normalize(c)).replace(/\/$/,"")).lastIndexOf("/");return u===-1?c:c.substr(u+1)},join:function(){var c=Array.prototype.slice.call(arguments);return fe.normalize(c.join("/"))},join2:(c,u)=>fe.normalize(c+"/"+u)},oa=c=>(oa=(()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return u=>crypto.getRandomValues(u);ri("initRandomDevice")})())(c),rr={resolve:function(){for(var c="",u=!1,h=arguments.length-1;h>=-1&&!u;h--){var g=h>=0?arguments[h]:E.cwd();if(typeof g!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!g)return"";c=g+"/"+c,u=fe.isAbs(g)}return(u?"/":"")+(c=fe.normalizeArray(c.split("/").filter(A=>!!A),!u).join("/"))||"."},relative:(c,u)=>{function h(k){for(var ee=0;ee<k.length&&k[ee]==="";ee++);for(var le=k.length-1;le>=0&&k[le]==="";le--);return ee>le?[]:k.slice(ee,le-ee+1)}c=rr.resolve(c).substr(1),u=rr.resolve(u).substr(1);for(var g=h(c.split("/")),A=h(u.split("/")),v=Math.min(g.length,A.length),C=v,D=0;D<v;D++)if(g[D]!==A[D]){C=D;break}var F=[];for(D=C;D<g.length;D++)F.push("..");return(F=F.concat(A.slice(C))).join("/")}},oo=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,Gt=(c,u,h)=>{for(var g=u+h,A=u;c[A]&&!(A>=g);)++A;if(A-u>16&&c.buffer&&oo)return oo.decode(c.subarray(u,A));for(var v="";u<A;){var C=c[u++];if(128&C){var D=63&c[u++];if((224&C)!=192){var F=63&c[u++];if((C=(240&C)==224?(15&C)<<12|D<<6|F:(7&C)<<18|D<<12|F<<6|63&c[u++])<65536)v+=String.fromCharCode(C);else{var k=C-65536;v+=String.fromCharCode(55296|k>>10,56320|1023&k)}}else v+=String.fromCharCode((31&C)<<6|D)}else v+=String.fromCharCode(C)}return v},sa=[],zo=c=>{for(var u=0,h=0;h<c.length;++h){var g=c.charCodeAt(h);g<=127?u++:g<=2047?u+=2:g>=55296&&g<=57343?(u+=4,++h):u+=3}return u},Jo=(c,u,h,g)=>{if(!(g>0))return 0;for(var A=h,v=h+g-1,C=0;C<c.length;++C){var D=c.charCodeAt(C);if(D>=55296&&D<=57343&&(D=65536+((1023&D)<<10)|1023&c.charCodeAt(++C)),D<=127){if(h>=v)break;u[h++]=D}else if(D<=2047){if(h+1>=v)break;u[h++]=192|D>>6,u[h++]=128|63&D}else if(D<=65535){if(h+2>=v)break;u[h++]=224|D>>12,u[h++]=128|D>>6&63,u[h++]=128|63&D}else{if(h+3>=v)break;u[h++]=240|D>>18,u[h++]=128|D>>12&63,u[h++]=128|D>>6&63,u[h++]=128|63&D}}return u[h]=0,h-A};function Gs(c,u,h){var g=h>0?h:zo(c)+1,A=new Array(g),v=Jo(c,A,0,A.length);return u&&(A.length=v),A}var Pr={ttys:[],init:function(){},shutdown:function(){},register:function(c,u){Pr.ttys[c]={input:[],output:[],ops:u},E.registerDevice(c,Pr.stream_ops)},stream_ops:{open:function(c){var u=Pr.ttys[c.node.rdev];if(!u)throw new E.ErrnoError(43);c.tty=u,c.seekable=!1},close:function(c){c.tty.ops.fsync(c.tty)},fsync:function(c){c.tty.ops.fsync(c.tty)},read:function(c,u,h,g,A){if(!c.tty||!c.tty.ops.get_char)throw new E.ErrnoError(60);for(var v=0,C=0;C<g;C++){var D;try{D=c.tty.ops.get_char(c.tty)}catch(F){throw new E.ErrnoError(29)}if(D===void 0&&v===0)throw new E.ErrnoError(6);if(D==null)break;v++,u[h+C]=D}return v&&(c.node.timestamp=Date.now()),v},write:function(c,u,h,g,A){if(!c.tty||!c.tty.ops.put_char)throw new E.ErrnoError(60);try{for(var v=0;v<g;v++)c.tty.ops.put_char(c.tty,u[h+v])}catch(C){throw new E.ErrnoError(29)}return g&&(c.node.timestamp=Date.now()),v}},default_tty_ops:{get_char:function(c){return(()=>{if(!sa.length){var u=null;if(typeof window!="undefined"&&typeof window.prompt=="function"?(u=window.prompt("Input: "))!==null&&(u+=`
|
|
51
|
-
`):typeof readline=="function"&&(u=readline())!==null&&(u+=`
|
|
52
|
-
`),!u)return null;sa=Gs(u,!0)}return sa.shift()})()},put_char:function(c,u){u===null||u===10?(R(Gt(c.output,0)),c.output=[]):u!=0&&c.output.push(u)},fsync:function(c){c.output&&c.output.length>0&&(R(Gt(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,u,h){return 0},ioctl_tiocgwinsz:function(c){return[24,80]}},default_tty1_ops:{put_char:function(c,u){u===null||u===10?(y(Gt(c.output,0)),c.output=[]):u!=0&&c.output.push(u)},fsync:function(c){c.output&&c.output.length>0&&(y(Gt(c.output,0)),c.output=[])}}},na=c=>{ri()},Ce={ops_table:null,mount:c=>Ce.createNode(null,"/",16895,0),createNode(c,u,h,g){if(E.isBlkdev(h)||E.isFIFO(h))throw new E.ErrnoError(63);Ce.ops_table||(Ce.ops_table={dir:{node:{getattr:Ce.node_ops.getattr,setattr:Ce.node_ops.setattr,lookup:Ce.node_ops.lookup,mknod:Ce.node_ops.mknod,rename:Ce.node_ops.rename,unlink:Ce.node_ops.unlink,rmdir:Ce.node_ops.rmdir,readdir:Ce.node_ops.readdir,symlink:Ce.node_ops.symlink},stream:{llseek:Ce.stream_ops.llseek}},file:{node:{getattr:Ce.node_ops.getattr,setattr:Ce.node_ops.setattr},stream:{llseek:Ce.stream_ops.llseek,read:Ce.stream_ops.read,write:Ce.stream_ops.write,allocate:Ce.stream_ops.allocate,mmap:Ce.stream_ops.mmap,msync:Ce.stream_ops.msync}},link:{node:{getattr:Ce.node_ops.getattr,setattr:Ce.node_ops.setattr,readlink:Ce.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Ce.node_ops.getattr,setattr:Ce.node_ops.setattr},stream:E.chrdev_stream_ops}});var A=E.createNode(c,u,h,g);return E.isDir(A.mode)?(A.node_ops=Ce.ops_table.dir.node,A.stream_ops=Ce.ops_table.dir.stream,A.contents={}):E.isFile(A.mode)?(A.node_ops=Ce.ops_table.file.node,A.stream_ops=Ce.ops_table.file.stream,A.usedBytes=0,A.contents=null):E.isLink(A.mode)?(A.node_ops=Ce.ops_table.link.node,A.stream_ops=Ce.ops_table.link.stream):E.isChrdev(A.mode)&&(A.node_ops=Ce.ops_table.chrdev.node,A.stream_ops=Ce.ops_table.chrdev.stream),A.timestamp=Date.now(),c&&(c.contents[u]=A,c.timestamp=A.timestamp),A},getFileDataAsTypedArray:c=>c.contents?c.contents.subarray?c.contents.subarray(0,c.usedBytes):new Uint8Array(c.contents):new Uint8Array(0),expandFileStorage(c,u){var h=c.contents?c.contents.length:0;if(!(h>=u)){u=Math.max(u,h*(h<1048576?2:1.125)>>>0),h!=0&&(u=Math.max(u,256));var g=c.contents;c.contents=new Uint8Array(u),c.usedBytes>0&&c.contents.set(g.subarray(0,c.usedBytes),0)}},resizeFileStorage(c,u){if(c.usedBytes!=u)if(u==0)c.contents=null,c.usedBytes=0;else{var h=c.contents;c.contents=new Uint8Array(u),h&&c.contents.set(h.subarray(0,Math.min(u,c.usedBytes))),c.usedBytes=u}},node_ops:{getattr(c){var u={};return u.dev=E.isChrdev(c.mode)?c.id:1,u.ino=c.id,u.mode=c.mode,u.nlink=1,u.uid=0,u.gid=0,u.rdev=c.rdev,E.isDir(c.mode)?u.size=4096:E.isFile(c.mode)?u.size=c.usedBytes:E.isLink(c.mode)?u.size=c.link.length:u.size=0,u.atime=new Date(c.timestamp),u.mtime=new Date(c.timestamp),u.ctime=new Date(c.timestamp),u.blksize=4096,u.blocks=Math.ceil(u.size/u.blksize),u},setattr(c,u){u.mode!==void 0&&(c.mode=u.mode),u.timestamp!==void 0&&(c.timestamp=u.timestamp),u.size!==void 0&&Ce.resizeFileStorage(c,u.size)},lookup(c,u){throw E.genericErrors[44]},mknod:(c,u,h,g)=>Ce.createNode(c,u,h,g),rename(c,u,h){if(E.isDir(c.mode)){var g;try{g=E.lookupNode(u,h)}catch(v){}if(g)for(var A in g.contents)throw new E.ErrnoError(55)}delete c.parent.contents[c.name],c.parent.timestamp=Date.now(),c.name=h,u.contents[h]=c,u.timestamp=c.parent.timestamp,c.parent=u},unlink(c,u){delete c.contents[u],c.timestamp=Date.now()},rmdir(c,u){var h=E.lookupNode(c,u);for(var g in h.contents)throw new E.ErrnoError(55);delete c.contents[u],c.timestamp=Date.now()},readdir(c){var u=[".",".."];for(var h in c.contents)c.contents.hasOwnProperty(h)&&u.push(h);return u},symlink(c,u,h){var g=Ce.createNode(c,u,41471,0);return g.link=h,g},readlink(c){if(!E.isLink(c.mode))throw new E.ErrnoError(28);return c.link}},stream_ops:{read(c,u,h,g,A){var v=c.node.contents;if(A>=c.node.usedBytes)return 0;var C=Math.min(c.node.usedBytes-A,g);if(C>8&&v.subarray)u.set(v.subarray(A,A+C),h);else for(var D=0;D<C;D++)u[h+D]=v[A+D];return C},write(c,u,h,g,A,v){if(!g)return 0;var C=c.node;if(C.timestamp=Date.now(),u.subarray&&(!C.contents||C.contents.subarray)){if(v)return C.contents=u.subarray(h,h+g),C.usedBytes=g,g;if(C.usedBytes===0&&A===0)return C.contents=u.slice(h,h+g),C.usedBytes=g,g;if(A+g<=C.usedBytes)return C.contents.set(u.subarray(h,h+g),A),g}if(Ce.expandFileStorage(C,A+g),C.contents.subarray&&u.subarray)C.contents.set(u.subarray(h,h+g),A);else for(var D=0;D<g;D++)C.contents[A+D]=u[h+D];return C.usedBytes=Math.max(C.usedBytes,A+g),g},llseek(c,u,h){var g=u;if(h===1?g+=c.position:h===2&&E.isFile(c.node.mode)&&(g+=c.node.usedBytes),g<0)throw new E.ErrnoError(28);return g},allocate(c,u,h){Ce.expandFileStorage(c.node,u+h),c.node.usedBytes=Math.max(c.node.usedBytes,u+h)},mmap(c,u,h,g,A){if(!E.isFile(c.node.mode))throw new E.ErrnoError(43);var v,C,D=c.node.contents;if(2&A||D.buffer!==W.buffer){if((h>0||h+u<D.length)&&(D=D.subarray?D.subarray(h,h+u):Array.prototype.slice.call(D,h,h+u)),C=!0,!(v=na()))throw new E.ErrnoError(48);W.set(D,v)}else C=!1,v=D.byteOffset;return{ptr:v,allocated:C}},msync:(c,u,h,g,A)=>(Ce.stream_ops.write(c,u,0,g,h,!1),0)}},om=(c,u,h,g)=>{var A=g?"":`al ${c}`;n(c,v=>{var C;C=`Loading data file "${c}" failed (no arrayBuffer).`,v||ri(C),u(new Uint8Array(v)),A&&qo()},v=>{if(!h)throw`Loading data file "${c}" failed.`;h()}),A&&Ws()},sm=o.preloadPlugins||[];function bi(c,u){var h=0;return c&&(h|=365),u&&(h|=146),h}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,u={})=>{if(!(c=rr.resolve(c)))return{path:"",node:null};if((u=Object.assign({follow_mount:!0,recurse_count:0},u)).recurse_count>8)throw new E.ErrnoError(32);for(var h=c.split("/").filter(k=>!!k),g=E.root,A="/",v=0;v<h.length;v++){var C=v===h.length-1;if(C&&u.parent)break;if(g=E.lookupNode(g,h[v]),A=fe.join2(A,h[v]),E.isMountpoint(g)&&(!C||C&&u.follow_mount)&&(g=g.mounted.root),!C||u.follow)for(var D=0;E.isLink(g.mode);){var F=E.readlink(A);if(A=rr.resolve(fe.dirname(A),F),g=E.lookupPath(A,{recurse_count:u.recurse_count+1}).node,D++>40)throw new E.ErrnoError(32)}}return{path:A,node:g}},getPath:c=>{for(var u;;){if(E.isRoot(c)){var h=c.mount.mountpoint;return u?h[h.length-1]!=="/"?`${h}/${u}`:h+u:h}u=u?`${c.name}/${u}`:c.name,c=c.parent}},hashName:(c,u)=>{for(var h=0,g=0;g<u.length;g++)h=(h<<5)-h+u.charCodeAt(g)|0;return(c+h>>>0)%E.nameTable.length},hashAddNode:c=>{var u=E.hashName(c.parent.id,c.name);c.name_next=E.nameTable[u],E.nameTable[u]=c},hashRemoveNode:c=>{var u=E.hashName(c.parent.id,c.name);if(E.nameTable[u]===c)E.nameTable[u]=c.name_next;else for(var h=E.nameTable[u];h;){if(h.name_next===c){h.name_next=c.name_next;break}h=h.name_next}},lookupNode:(c,u)=>{var h=E.mayLookup(c);if(h)throw new E.ErrnoError(h,c);for(var g=E.hashName(c.id,u),A=E.nameTable[g];A;A=A.name_next){var v=A.name;if(A.parent.id===c.id&&v===u)return A}return E.lookup(c,u)},createNode:(c,u,h,g)=>{var A=new E.FSNode(c,u,h,g);return E.hashAddNode(A),A},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 u=["r","w","rw"][3&c];return 512&c&&(u+="w"),u},nodePermissions:(c,u)=>E.ignorePermissions||(!u.includes("r")||292&c.mode)&&(!u.includes("w")||146&c.mode)&&(!u.includes("x")||73&c.mode)?0:2,mayLookup:c=>{var u=E.nodePermissions(c,"x");return u||(c.node_ops.lookup?0:2)},mayCreate:(c,u)=>{try{return E.lookupNode(c,u),20}catch(h){}return E.nodePermissions(c,"wx")},mayDelete:(c,u,h)=>{var g;try{g=E.lookupNode(c,u)}catch(v){return v.errno}var A=E.nodePermissions(c,"wx");if(A)return A;if(h){if(!E.isDir(g.mode))return 54;if(E.isRoot(g)||E.getPath(g)===E.cwd())return 10}else if(E.isDir(g.mode))return 31;return 0},mayOpen:(c,u)=>c?E.isLink(c.mode)?32:E.isDir(c.mode)&&(E.flagsToPermissionString(u)!=="r"||512&u)?31:E.nodePermissions(c,E.flagsToPermissionString(u)):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 u=E.getStream(c);if(!u)throw new E.ErrnoError(8);return u},getStream:c=>E.streams[c],createStream:(c,u=-1)=>(E.FSStream||(E.FSStream=function(){this.shared={}},E.FSStream.prototype={},Object.defineProperties(E.FSStream.prototype,{object:{get(){return this.node},set(h){this.node=h}},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(h){this.shared.flags=h}},position:{get(){return this.shared.position},set(h){this.shared.position=h}}})),c=Object.assign(new E.FSStream,c),u==-1&&(u=E.nextfd()),c.fd=u,E.streams[u]=c,c),closeStream:c=>{E.streams[c]=null},chrdev_stream_ops:{open:c=>{var u=E.getDevice(c.node.rdev);c.stream_ops=u.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,u)=>c<<8|u,registerDevice:(c,u)=>{E.devices[c]={stream_ops:u}},getDevice:c=>E.devices[c],getMounts:c=>{for(var u=[],h=[c];h.length;){var g=h.pop();u.push(g),h.push.apply(h,g.mounts)}return u},syncfs:(c,u)=>{typeof c=="function"&&(u=c,c=!1),E.syncFSRequests++,E.syncFSRequests>1&&y(`warning: ${E.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var h=E.getMounts(E.root.mount),g=0;function A(C){return E.syncFSRequests--,u(C)}function v(C){if(C)return v.errored?void 0:(v.errored=!0,A(C));++g>=h.length&&A(null)}h.forEach(C=>{if(!C.type.syncfs)return v(null);C.type.syncfs(C,c,v)})},mount:(c,u,h)=>{var g,A=h==="/",v=!h;if(A&&E.root)throw new E.ErrnoError(10);if(!A&&!v){var C=E.lookupPath(h,{follow_mount:!1});if(h=C.path,g=C.node,E.isMountpoint(g))throw new E.ErrnoError(10);if(!E.isDir(g.mode))throw new E.ErrnoError(54)}var D={type:c,opts:u,mountpoint:h,mounts:[]},F=c.mount(D);return F.mount=D,D.root=F,A?E.root=F:g&&(g.mounted=D,g.mount&&g.mount.mounts.push(D)),F},unmount:c=>{var u=E.lookupPath(c,{follow_mount:!1});if(!E.isMountpoint(u.node))throw new E.ErrnoError(28);var h=u.node,g=h.mounted,A=E.getMounts(g);Object.keys(E.nameTable).forEach(C=>{for(var D=E.nameTable[C];D;){var F=D.name_next;A.includes(D.mount)&&E.destroyNode(D),D=F}}),h.mounted=null;var v=h.mount.mounts.indexOf(g);h.mount.mounts.splice(v,1)},lookup:(c,u)=>c.node_ops.lookup(c,u),mknod:(c,u,h)=>{var g=E.lookupPath(c,{parent:!0}).node,A=fe.basename(c);if(!A||A==="."||A==="..")throw new E.ErrnoError(28);var v=E.mayCreate(g,A);if(v)throw new E.ErrnoError(v);if(!g.node_ops.mknod)throw new E.ErrnoError(63);return g.node_ops.mknod(g,A,u,h)},create:(c,u)=>(u=u!==void 0?u:438,u&=4095,u|=32768,E.mknod(c,u,0)),mkdir:(c,u)=>(u=u!==void 0?u:511,u&=1023,u|=16384,E.mknod(c,u,0)),mkdirTree:(c,u)=>{for(var h=c.split("/"),g="",A=0;A<h.length;++A)if(h[A]){g+="/"+h[A];try{E.mkdir(g,u)}catch(v){if(v.errno!=20)throw v}}},mkdev:(c,u,h)=>(h===void 0&&(h=u,u=438),u|=8192,E.mknod(c,u,h)),symlink:(c,u)=>{if(!rr.resolve(c))throw new E.ErrnoError(44);var h=E.lookupPath(u,{parent:!0}).node;if(!h)throw new E.ErrnoError(44);var g=fe.basename(u),A=E.mayCreate(h,g);if(A)throw new E.ErrnoError(A);if(!h.node_ops.symlink)throw new E.ErrnoError(63);return h.node_ops.symlink(h,g,c)},rename:(c,u)=>{var h,g,A=fe.dirname(c),v=fe.dirname(u),C=fe.basename(c),D=fe.basename(u);if(h=E.lookupPath(c,{parent:!0}).node,g=E.lookupPath(u,{parent:!0}).node,!h||!g)throw new E.ErrnoError(44);if(h.mount!==g.mount)throw new E.ErrnoError(75);var F,k=E.lookupNode(h,C),ee=rr.relative(c,v);if(ee.charAt(0)!==".")throw new E.ErrnoError(28);if((ee=rr.relative(u,A)).charAt(0)!==".")throw new E.ErrnoError(55);try{F=E.lookupNode(g,D)}catch(de){}if(k!==F){var le=E.isDir(k.mode),me=E.mayDelete(h,C,le);if(me)throw new E.ErrnoError(me);if(me=F?E.mayDelete(g,D,le):E.mayCreate(g,D))throw new E.ErrnoError(me);if(!h.node_ops.rename)throw new E.ErrnoError(63);if(E.isMountpoint(k)||F&&E.isMountpoint(F))throw new E.ErrnoError(10);if(g!==h&&(me=E.nodePermissions(h,"w")))throw new E.ErrnoError(me);E.hashRemoveNode(k);try{h.node_ops.rename(k,g,D)}catch(de){throw de}finally{E.hashAddNode(k)}}},rmdir:c=>{var u=E.lookupPath(c,{parent:!0}).node,h=fe.basename(c),g=E.lookupNode(u,h),A=E.mayDelete(u,h,!0);if(A)throw new E.ErrnoError(A);if(!u.node_ops.rmdir)throw new E.ErrnoError(63);if(E.isMountpoint(g))throw new E.ErrnoError(10);u.node_ops.rmdir(u,h),E.destroyNode(g)},readdir:c=>{var u=E.lookupPath(c,{follow:!0}).node;if(!u.node_ops.readdir)throw new E.ErrnoError(54);return u.node_ops.readdir(u)},unlink:c=>{var u=E.lookupPath(c,{parent:!0}).node;if(!u)throw new E.ErrnoError(44);var h=fe.basename(c),g=E.lookupNode(u,h),A=E.mayDelete(u,h,!1);if(A)throw new E.ErrnoError(A);if(!u.node_ops.unlink)throw new E.ErrnoError(63);if(E.isMountpoint(g))throw new E.ErrnoError(10);u.node_ops.unlink(u,h),E.destroyNode(g)},readlink:c=>{var u=E.lookupPath(c).node;if(!u)throw new E.ErrnoError(44);if(!u.node_ops.readlink)throw new E.ErrnoError(28);return rr.resolve(E.getPath(u.parent),u.node_ops.readlink(u))},stat:(c,u)=>{var h=E.lookupPath(c,{follow:!u}).node;if(!h)throw new E.ErrnoError(44);if(!h.node_ops.getattr)throw new E.ErrnoError(63);return h.node_ops.getattr(h)},lstat:c=>E.stat(c,!0),chmod:(c,u,h)=>{var g;if(typeof c=="string"?g=E.lookupPath(c,{follow:!h}).node:g=c,!g.node_ops.setattr)throw new E.ErrnoError(63);g.node_ops.setattr(g,{mode:4095&u|-4096&g.mode,timestamp:Date.now()})},lchmod:(c,u)=>{E.chmod(c,u,!0)},fchmod:(c,u)=>{var h=E.getStreamChecked(c);E.chmod(h.node,u)},chown:(c,u,h,g)=>{var A;if(typeof c=="string"?A=E.lookupPath(c,{follow:!g}).node:A=c,!A.node_ops.setattr)throw new E.ErrnoError(63);A.node_ops.setattr(A,{timestamp:Date.now()})},lchown:(c,u,h)=>{E.chown(c,u,h,!0)},fchown:(c,u,h)=>{var g=E.getStreamChecked(c);E.chown(g.node,u,h)},truncate:(c,u)=>{if(u<0)throw new E.ErrnoError(28);var h;if(typeof c=="string"?h=E.lookupPath(c,{follow:!0}).node:h=c,!h.node_ops.setattr)throw new E.ErrnoError(63);if(E.isDir(h.mode))throw new E.ErrnoError(31);if(!E.isFile(h.mode))throw new E.ErrnoError(28);var g=E.nodePermissions(h,"w");if(g)throw new E.ErrnoError(g);h.node_ops.setattr(h,{size:u,timestamp:Date.now()})},ftruncate:(c,u)=>{var h=E.getStreamChecked(c);if(!(2097155&h.flags))throw new E.ErrnoError(28);E.truncate(h.node,u)},utime:(c,u,h)=>{var g=E.lookupPath(c,{follow:!0}).node;g.node_ops.setattr(g,{timestamp:Math.max(u,h)})},open:(c,u,h)=>{if(c==="")throw new E.ErrnoError(44);var g;if(h=h===void 0?438:h,h=64&(u=typeof u=="string"?(function(D){var F={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[D];if(F===void 0)throw new Error(`Unknown file open mode: ${D}`);return F})(u):u)?4095&h|32768:0,typeof c=="object")g=c;else{c=fe.normalize(c);try{g=E.lookupPath(c,{follow:!(131072&u)}).node}catch(D){}}var A=!1;if(64&u)if(g){if(128&u)throw new E.ErrnoError(20)}else g=E.mknod(c,h,0),A=!0;if(!g)throw new E.ErrnoError(44);if(E.isChrdev(g.mode)&&(u&=-513),65536&u&&!E.isDir(g.mode))throw new E.ErrnoError(54);if(!A){var v=E.mayOpen(g,u);if(v)throw new E.ErrnoError(v)}512&u&&!A&&E.truncate(g,0),u&=-131713;var C=E.createStream({node:g,path:E.getPath(g),flags:u,seekable:!0,position:0,stream_ops:g.stream_ops,ungotten:[],error:!1});return C.stream_ops.open&&C.stream_ops.open(C),!o.logReadFiles||1&u||(E.readFiles||(E.readFiles={}),c in E.readFiles||(E.readFiles[c]=1)),C},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(u){throw u}finally{E.closeStream(c.fd)}c.fd=null},isClosed:c=>c.fd===null,llseek:(c,u,h)=>{if(E.isClosed(c))throw new E.ErrnoError(8);if(!c.seekable||!c.stream_ops.llseek)throw new E.ErrnoError(70);if(h!=0&&h!=1&&h!=2)throw new E.ErrnoError(28);return c.position=c.stream_ops.llseek(c,u,h),c.ungotten=[],c.position},read:(c,u,h,g,A)=>{if(g<0||A<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 v=A!==void 0;if(v){if(!c.seekable)throw new E.ErrnoError(70)}else A=c.position;var C=c.stream_ops.read(c,u,h,g,A);return v||(c.position+=C),C},write:(c,u,h,g,A,v)=>{if(g<0||A<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 C=A!==void 0;if(C){if(!c.seekable)throw new E.ErrnoError(70)}else A=c.position;var D=c.stream_ops.write(c,u,h,g,A,v);return C||(c.position+=D),D},allocate:(c,u,h)=>{if(E.isClosed(c))throw new E.ErrnoError(8);if(u<0||h<=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,u,h)},mmap:(c,u,h,g,A)=>{if(2&g&&!(2&A)&&(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,u,h,g,A)},msync:(c,u,h,g,A)=>c.stream_ops.msync?c.stream_ops.msync(c,u,h,g,A):0,munmap:c=>0,ioctl:(c,u,h)=>{if(!c.stream_ops.ioctl)throw new E.ErrnoError(59);return c.stream_ops.ioctl(c,u,h)},readFile:(c,u={})=>{if(u.flags=u.flags||0,u.encoding=u.encoding||"binary",u.encoding!=="utf8"&&u.encoding!=="binary")throw new Error(`Invalid encoding type "${u.encoding}"`);var h,g=E.open(c,u.flags),A=E.stat(c).size,v=new Uint8Array(A);return E.read(g,v,0,A,0),u.encoding==="utf8"?h=Gt(v,0):u.encoding==="binary"&&(h=v),E.close(g),h},writeFile:(c,u,h={})=>{h.flags=h.flags||577;var g=E.open(c,h.flags,h.mode);if(typeof u=="string"){var A=new Uint8Array(zo(u)+1),v=Jo(u,A,0,A.length);E.write(g,A,0,v,void 0,h.canOwn)}else{if(!ArrayBuffer.isView(u))throw new Error("Unsupported data type");E.write(g,u,0,u.byteLength,void 0,h.canOwn)}E.close(g)},cwd:()=>E.currentPath,chdir:c=>{var u=E.lookupPath(c,{follow:!0});if(u.node===null)throw new E.ErrnoError(44);if(!E.isDir(u.node.mode))throw new E.ErrnoError(54);var h=E.nodePermissions(u.node,"x");if(h)throw new E.ErrnoError(h);E.currentPath=u.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:(g,A,v,C,D)=>C}),E.mkdev("/dev/null",E.makedev(1,3)),Pr.register(E.makedev(5,0),Pr.default_tty_ops),Pr.register(E.makedev(6,0),Pr.default_tty1_ops),E.mkdev("/dev/tty",E.makedev(5,0)),E.mkdev("/dev/tty1",E.makedev(6,0));var c=new Uint8Array(1024),u=0,h=()=>(u===0&&(u=oa(c).byteLength),c[--u]);E.createDevice("/dev","random",h),E.createDevice("/dev","urandom",h),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 u=E.createNode(c,"fd",16895,73);return u.node_ops={lookup:(h,g)=>{var A=+g,v=E.getStreamChecked(A),C={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>v.path}};return C.parent=C,C}},u}},{},"/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,u){this.name="ErrnoError",this.node=u,this.setErrno=function(h){this.errno=h},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(Ce,{},"/"),E.createDefaultDirectories(),E.createDefaultDevices(),E.createSpecialDirectories(),E.filesystems={MEMFS:Ce}},init:(c,u,h)=>{E.init.initialized=!0,E.ensureErrnoError(),o.stdin=c||o.stdin,o.stdout=u||o.stdout,o.stderr=h||o.stderr,E.createStandardStreams()},quit:()=>{E.init.initialized=!1;for(var c=0;c<E.streams.length;c++){var u=E.streams[c];u&&E.close(u)}},findObject:(c,u)=>{var h=E.analyzePath(c,u);return h.exists?h.object:null},analyzePath:(c,u)=>{try{c=(g=E.lookupPath(c,{follow:!u})).path}catch(A){}var h={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var g=E.lookupPath(c,{parent:!0});h.parentExists=!0,h.parentPath=g.path,h.parentObject=g.node,h.name=fe.basename(c),g=E.lookupPath(c,{follow:!u}),h.exists=!0,h.path=g.path,h.object=g.node,h.name=g.node.name,h.isRoot=g.path==="/"}catch(A){h.error=A.errno}return h},createPath:(c,u,h,g)=>{c=typeof c=="string"?c:E.getPath(c);for(var A=u.split("/").reverse();A.length;){var v=A.pop();if(v){var C=fe.join2(c,v);try{E.mkdir(C)}catch(D){}c=C}}return C},createFile:(c,u,h,g,A)=>{var v=fe.join2(typeof c=="string"?c:E.getPath(c),u),C=bi(g,A);return E.create(v,C)},createDataFile:(c,u,h,g,A,v)=>{var C=u;c&&(c=typeof c=="string"?c:E.getPath(c),C=u?fe.join2(c,u):c);var D=bi(g,A),F=E.create(C,D);if(h){if(typeof h=="string"){for(var k=new Array(h.length),ee=0,le=h.length;ee<le;++ee)k[ee]=h.charCodeAt(ee);h=k}E.chmod(F,146|D);var me=E.open(F,577);E.write(me,h,0,h.length,0,v),E.close(me),E.chmod(F,D)}return F},createDevice:(c,u,h,g)=>{var A=fe.join2(typeof c=="string"?c:E.getPath(c),u),v=bi(!!h,!!g);E.createDevice.major||(E.createDevice.major=64);var C=E.makedev(E.createDevice.major++,0);return E.registerDevice(C,{open:D=>{D.seekable=!1},close:D=>{g&&g.buffer&&g.buffer.length&&g(10)},read:(D,F,k,ee,le)=>{for(var me=0,de=0;de<ee;de++){var we;try{we=h()}catch(We){throw new E.ErrnoError(29)}if(we===void 0&&me===0)throw new E.ErrnoError(6);if(we==null)break;me++,F[k+de]=we}return me&&(D.node.timestamp=Date.now()),me},write:(D,F,k,ee,le)=>{for(var me=0;me<ee;me++)try{g(F[k+me])}catch(de){throw new E.ErrnoError(29)}return ee&&(D.node.timestamp=Date.now()),me}}),E.mkdev(A,v,C)},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=Gs(s(c.url),!0),c.usedBytes=c.contents.length}catch(u){throw new E.ErrnoError(29)}},createLazyFile:(c,u,h,g,A)=>{function v(){this.lengthKnown=!1,this.chunks=[]}if(v.prototype.get=function(le){if(!(le>this.length-1||le<0)){var me=le%this.chunkSize,de=le/this.chunkSize|0;return this.getter(de)[me]}},v.prototype.setDataGetter=function(le){this.getter=le},v.prototype.cacheLength=function(){var le=new XMLHttpRequest;if(le.open("HEAD",h,!1),le.send(null),!(le.status>=200&&le.status<300||le.status===304))throw new Error("Couldn't load "+h+". Status: "+le.status);var me,de=Number(le.getResponseHeader("Content-length")),we=(me=le.getResponseHeader("Accept-Ranges"))&&me==="bytes",We=(me=le.getResponseHeader("Content-Encoding"))&&me==="gzip",xe=1048576;we||(xe=de);var pt=this;pt.setDataGetter(Ke=>{var qt=Ke*xe,Ea=(Ke+1)*xe-1;if(Ea=Math.min(Ea,de-1),pt.chunks[Ke]===void 0&&(pt.chunks[Ke]=((Zs,rs)=>{if(Zs>rs)throw new Error("invalid range ("+Zs+", "+rs+") or no bytes requested!");if(rs>de-1)throw new Error("only "+de+" bytes available! programmer error!");var Tt=new XMLHttpRequest;if(Tt.open("GET",h,!1),de!==xe&&Tt.setRequestHeader("Range","bytes="+Zs+"-"+rs),Tt.responseType="arraybuffer",Tt.overrideMimeType&&Tt.overrideMimeType("text/plain; charset=x-user-defined"),Tt.send(null),!(Tt.status>=200&&Tt.status<300||Tt.status===304))throw new Error("Couldn't load "+h+". Status: "+Tt.status);return Tt.response!==void 0?new Uint8Array(Tt.response||[]):Gs(Tt.responseText||"",!0)})(qt,Ea)),pt.chunks[Ke]===void 0)throw new Error("doXHR failed!");return pt.chunks[Ke]}),!We&&de||(xe=de=1,de=this.getter(0).length,xe=de,R("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=de,this._chunkSize=xe,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!f)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var C=new v;Object.defineProperties(C,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var D={isDevice:!1,contents:C}}else D={isDevice:!1,url:h};var F=E.createFile(c,u,D,g,A);D.contents?F.contents=D.contents:D.url&&(F.contents=null,F.url=D.url),Object.defineProperties(F,{usedBytes:{get:function(){return this.contents.length}}});var k={};function ee(le,me,de,we,We){var xe=le.node.contents;if(We>=xe.length)return 0;var pt=Math.min(xe.length-We,we);if(xe.slice)for(var Ke=0;Ke<pt;Ke++)me[de+Ke]=xe[We+Ke];else for(Ke=0;Ke<pt;Ke++)me[de+Ke]=xe.get(We+Ke);return pt}return Object.keys(F.stream_ops).forEach(le=>{var me=F.stream_ops[le];k[le]=function(){return E.forceLoadFile(F),me.apply(null,arguments)}}),k.read=(le,me,de,we,We)=>(E.forceLoadFile(F),ee(le,me,de,we,We)),k.mmap=(le,me,de,we,We)=>{E.forceLoadFile(F);var xe=na();if(!xe)throw new E.ErrnoError(48);return ee(le,W,xe,me,de),{ptr:xe,allocated:!0}},F.stream_ops=k,F}},se=(c,u)=>c?Gt(G,c,u):"",Nt={DEFAULT_POLLMASK:5,calculateAt:function(c,u,h){if(fe.isAbs(u))return u;var g;if(c===-100?g=E.cwd():g=Nt.getStreamFromFD(c).path,u.length==0){if(!h)throw new E.ErrnoError(44);return g}return fe.join2(g,u)},doStat:function(c,u,h){try{var g=c(u)}catch(D){if(D&&D.node&&fe.normalize(u)!==fe.normalize(E.getPath(D.node)))return-54;throw D}Me[h>>2]=g.dev,Me[h+4>>2]=g.mode,Y[h+8>>2]=g.nlink,Me[h+12>>2]=g.uid,Me[h+16>>2]=g.gid,Me[h+20>>2]=g.rdev,H=[g.size>>>0,(Ae=g.size,+Math.abs(Ae)>=1?Ae>0?+Math.floor(Ae/4294967296)>>>0:~~+Math.ceil((Ae-+(~~Ae>>>0))/4294967296)>>>0:0)],Me[h+24>>2]=H[0],Me[h+28>>2]=H[1],Me[h+32>>2]=4096,Me[h+36>>2]=g.blocks;var A=g.atime.getTime(),v=g.mtime.getTime(),C=g.ctime.getTime();return H=[Math.floor(A/1e3)>>>0,(Ae=Math.floor(A/1e3),+Math.abs(Ae)>=1?Ae>0?+Math.floor(Ae/4294967296)>>>0:~~+Math.ceil((Ae-+(~~Ae>>>0))/4294967296)>>>0:0)],Me[h+40>>2]=H[0],Me[h+44>>2]=H[1],Y[h+48>>2]=A%1e3*1e3,H=[Math.floor(v/1e3)>>>0,(Ae=Math.floor(v/1e3),+Math.abs(Ae)>=1?Ae>0?+Math.floor(Ae/4294967296)>>>0:~~+Math.ceil((Ae-+(~~Ae>>>0))/4294967296)>>>0:0)],Me[h+56>>2]=H[0],Me[h+60>>2]=H[1],Y[h+64>>2]=v%1e3*1e3,H=[Math.floor(C/1e3)>>>0,(Ae=Math.floor(C/1e3),+Math.abs(Ae)>=1?Ae>0?+Math.floor(Ae/4294967296)>>>0:~~+Math.ceil((Ae-+(~~Ae>>>0))/4294967296)>>>0:0)],Me[h+72>>2]=H[0],Me[h+76>>2]=H[1],Y[h+80>>2]=C%1e3*1e3,H=[g.ino>>>0,(Ae=g.ino,+Math.abs(Ae)>=1?Ae>0?+Math.floor(Ae/4294967296)>>>0:~~+Math.ceil((Ae-+(~~Ae>>>0))/4294967296)>>>0:0)],Me[h+88>>2]=H[0],Me[h+92>>2]=H[1],0},doMsync:function(c,u,h,g,A){if(!E.isFile(u.node.mode))throw new E.ErrnoError(43);if(2&g)return 0;var v=G.slice(c,c+h);E.msync(u,v,A,h,g)},varargs:void 0,get:()=>(Nt.varargs+=4,Me[Nt.varargs-4>>2]),getStr:c=>se(c),getStreamFromFD:function(c){return E.getStreamChecked(c)}};function Ri(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 U=void 0;function Mt(c){for(var u="",h=c;G[h];)u+=U[G[h++]];return u}var so={},yr={},js={},no=void 0;function $e(c){throw new no(c)}var Kc=void 0;function ur(c){throw new Kc(c)}function oi(c,u,h){function g(D){var F=h(D);F.length!==c.length&&ur("Mismatched type converter count");for(var k=0;k<c.length;++k)lr(c[k],F[k])}c.forEach(function(D){js[D]=u});var A=new Array(u.length),v=[],C=0;u.forEach((D,F)=>{yr.hasOwnProperty(D)?A[F]=yr[D]:(v.push(D),so.hasOwnProperty(D)||(so[D]=[]),so[D].push(()=>{A[F]=yr[D],++C===v.length&&g(A)}))}),v.length===0&&g(A)}function lr(c,u,h={}){if(!("argPackAdvance"in u))throw new TypeError("registerType registeredInstance requires argPackAdvance");return(function(g,A,v={}){var C=A.name;if(g||$e(`type "${C}" must have a positive integer typeid pointer`),yr.hasOwnProperty(g)){if(v.ignoreDuplicateRegistrations)return;$e(`Cannot register type '${C}' twice`)}if(yr[g]=A,delete js[g],so.hasOwnProperty(g)){var D=so[g];delete so[g],D.forEach(F=>F())}})(c,u,h)}function ed(c){if(!(this instanceof Lr)||!(c instanceof Lr))return!1;for(var u=this.$$.ptrType.registeredClass,h=this.$$.ptr,g=c.$$.ptrType.registeredClass,A=c.$$.ptr;u.baseClass;)h=u.upcast(h),u=u.baseClass;for(;g.baseClass;)A=g.upcast(A),g=g.baseClass;return u===g&&h===A}function aa(c){$e(c.$$.ptrType.registeredClass.name+" instance already deleted")}var Xo=!1;function td(c){}function rd(c){c.count.value-=1,c.count.value===0&&(function(u){u.smartPtr?u.smartPtrType.rawDestructor(u.smartPtr):u.ptrType.registeredClass.rawDestructor(u.ptr)})(c)}function id(c,u,h){if(u===h)return c;if(h.baseClass===void 0)return null;var g=id(c,u,h.baseClass);return g===null?null:h.downcast(g)}var Qo={};function nm(){return Object.keys(Zo).length}function am(){var c=[];for(var u in Zo)Zo.hasOwnProperty(u)&&c.push(Zo[u]);return c}var Yo=[];function mr(){for(;Yo.length;){var c=Yo.pop();c.$$.deleteScheduled=!1,c.delete()}}var si=void 0;function od(c){si=c,Yo.length&&si&&si(mr)}var Zo={};function ao(c,u){return u=(function(h,g){for(g===void 0&&$e("ptr should not be undefined");h.baseClass;)g=h.upcast(g),h=h.baseClass;return g})(c,u),Zo[u]}function Ko(c,u){return u.ptrType&&u.ptr||ur("makeClassHandle requires ptr and ptrType"),!!u.smartPtrType!=!!u.smartPtr&&ur("Both smartPtrType and smartPtr must be specified"),u.count={value:1},co(Object.create(c,{$$:{value:u}}))}function sd(c){var u=this.getPointee(c);if(!u)return this.destructor(c),null;var h=ao(this.registeredClass,u);if(h!==void 0){if(h.$$.count.value===0)return h.$$.ptr=u,h.$$.smartPtr=c,h.clone();var g=h.clone();return this.destructor(c),g}function A(){return this.isSmartPointer?Ko(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:u,smartPtrType:this,smartPtr:c}):Ko(this.registeredClass.instancePrototype,{ptrType:this,ptr:c})}var v,C=this.registeredClass.getActualType(u),D=Qo[C];if(!D)return A.call(this);v=this.isConst?D.constPointerType:D.pointerType;var F=id(u,this.registeredClass,v.registeredClass);return F===null?A.call(this):this.isSmartPointer?Ko(v.registeredClass.instancePrototype,{ptrType:v,ptr:F,smartPtrType:this,smartPtr:c}):Ko(v.registeredClass.instancePrototype,{ptrType:v,ptr:F})}var co=function(c){return typeof FinalizationRegistry=="undefined"?(co=u=>u,c):(Xo=new FinalizationRegistry(u=>{rd(u.$$)}),td=u=>Xo.unregister(u),(co=u=>{var h=u.$$;if(h.smartPtr){var g={$$:h};Xo.register(u,g,u)}return u})(c))};function nd(){if(this.$$.ptr||aa(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var c,u=co(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 u.$$.count.value+=1,u.$$.deleteScheduled=!1,u}function cm(){this.$$.ptr||aa(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&$e("Object already scheduled for deletion"),td(this),rd(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function ad(){return!this.$$.ptr}function cd(){return this.$$.ptr||aa(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&$e("Object already scheduled for deletion"),Yo.push(this),Yo.length===1&&si&&si(mr),this.$$.deleteScheduled=!0,this}function Lr(){}function jt(c){if(c===void 0)return"_unknown";var u=(c=c.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return u>=48&&u<=57?`_${c}`:c}function qs(c,u){return c=jt(c),{[c]:function(){return u.apply(this,arguments)}}[c]}function dd(c,u,h){if(c[u].overloadTable===void 0){var g=c[u];c[u]=function(){return c[u].overloadTable.hasOwnProperty(arguments.length)||$e(`Function '${h}' called with an invalid number of arguments (${arguments.length}) - expects one of (${c[u].overloadTable})!`),c[u].overloadTable[arguments.length].apply(this,arguments)},c[u].overloadTable=[],c[u].overloadTable[g.argCount]=g}}function zs(c,u,h,g,A,v,C,D){this.name=c,this.constructor=u,this.instancePrototype=h,this.rawDestructor=g,this.baseClass=A,this.getActualType=v,this.upcast=C,this.downcast=D,this.pureVirtualFunctions=[]}function es(c,u,h){for(;u!==h;)u.upcast||$e(`Expected null or instance of ${h.name}, got an instance of ${u.name}`),c=u.upcast(c),u=u.baseClass;return c}function dm(c,u){if(u===null)return this.isReference&&$e(`null is not a valid ${this.name}`),0;u.$$||$e(`Cannot pass "${pr(u)}" as a ${this.name}`),u.$$.ptr||$e(`Cannot pass deleted object as a pointer of type ${this.name}`);var h=u.$$.ptrType.registeredClass;return es(u.$$.ptr,h,this.registeredClass)}function um(c,u){var h;if(u===null)return this.isReference&&$e(`null is not a valid ${this.name}`),this.isSmartPointer?(h=this.rawConstructor(),c!==null&&c.push(this.rawDestructor,h),h):0;u.$$||$e(`Cannot pass "${pr(u)}" as a ${this.name}`),u.$$.ptr||$e(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&u.$$.ptrType.isConst&&$e(`Cannot convert argument of type ${u.$$.smartPtrType?u.$$.smartPtrType.name:u.$$.ptrType.name} to parameter type ${this.name}`);var g=u.$$.ptrType.registeredClass;if(h=es(u.$$.ptr,g,this.registeredClass),this.isSmartPointer)switch(u.$$.smartPtr===void 0&&$e("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:u.$$.smartPtrType===this?h=u.$$.smartPtr:$e(`Cannot convert argument of type ${u.$$.smartPtrType?u.$$.smartPtrType.name:u.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:h=u.$$.smartPtr;break;case 2:if(u.$$.smartPtrType===this)h=u.$$.smartPtr;else{var A=u.clone();h=this.rawShare(h,Ys.toHandle(function(){A.delete()})),c!==null&&c.push(this.rawDestructor,h)}break;default:$e("Unsupporting sharing policy")}return h}function ud(c,u){if(u===null)return this.isReference&&$e(`null is not a valid ${this.name}`),0;u.$$||$e(`Cannot pass "${pr(u)}" as a ${this.name}`),u.$$.ptr||$e(`Cannot pass deleted object as a pointer of type ${this.name}`),u.$$.ptrType.isConst&&$e(`Cannot convert argument of type ${u.$$.ptrType.name} to parameter type ${this.name}`);var h=u.$$.ptrType.registeredClass;return es(u.$$.ptr,h,this.registeredClass)}function ts(c){return this.fromWireType(Me[c>>2])}function lm(c){return this.rawGetPointee&&(c=this.rawGetPointee(c)),c}function ld(c){this.rawDestructor&&this.rawDestructor(c)}function mm(c){c!==null&&c.delete()}function xr(c,u,h,g,A,v,C,D,F,k,ee){this.name=c,this.registeredClass=u,this.isReference=h,this.isConst=g,this.isSmartPointer=A,this.pointeeType=v,this.sharingPolicy=C,this.rawGetPointee=D,this.rawConstructor=F,this.rawShare=k,this.rawDestructor=ee,A||u.baseClass!==void 0?this.toWireType=um:g?(this.toWireType=dm,this.destructorFunction=null):(this.toWireType=ud,this.destructorFunction=null)}var Js=[],md=c=>{var u=Js[c];return u||(c>=Js.length&&(Js.length=c+1),Js[c]=u=ea.get(c)),u},hm=(c,u,h)=>c.includes("j")?((g,A,v)=>{var C=o["dynCall_"+g];return v&&v.length?C.apply(null,[A].concat(v)):C.call(null,A)})(c,u,h):md(u).apply(null,h);function uo(c,u){var h,g,A,v=(c=Mt(c)).includes("j")?(h=c,g=u,A=[],function(){return A.length=0,Object.assign(A,arguments),hm(h,g,A)}):md(u);return typeof v!="function"&&$e(`unknown function pointer with signature ${c}: ${u}`),v}var hd=void 0;function Xs(c){var u=fa(c),h=Mt(u);return kr(u),h}function ca(c,u){var h=[],g={};throw u.forEach(function A(v){g[v]||yr[v]||(js[v]?js[v].forEach(A):(h.push(v),g[v]=!0))}),new hd(`${c}: `+h.map(Xs).join([", "]))}function da(c,u){for(var h=[],g=0;g<c;g++)h.push(Y[u+4*g>>2]);return h}function pd(c){for(;c.length;){var u=c.pop();c.pop()(u)}}function ua(c,u){if(!(c instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof c} which is not a function`);var h=qs(c.name||"unknownFunctionName",function(){});h.prototype=c.prototype;var g=new h,A=c.apply(g,u);return A instanceof Object?A:g}function la(c,u,h,g,A,v){var C=u.length;C<2&&$e("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var D=u[1]!==null&&h!==null,F=!1,k=1;k<u.length;++k)if(u[k]!==null&&u[k].destructorFunction===void 0){F=!0;break}var ee=u[0].name!=="void",le="",me="";for(k=0;k<C-2;++k)le+=(k!==0?", ":"")+"arg"+k,me+=(k!==0?", ":"")+"arg"+k+"Wired";var de=`
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
`),k=0;k<C-2;++k)de+="var arg"+k+"Wired = argType"+k+".toWireType("+we+", arg"+k+"); // "+u[k+2].name+`
|
|
59
|
-
`,We.push("argType"+k),xe.push(u[k+2]);if(D&&(me="thisWired"+(me.length>0?", ":"")+me),de+=(ee||v?"var rv = ":"")+"invoker(fn"+(me.length>0?", ":"")+me+`);
|
|
60
|
-
`,F)de+=`runDestructors(destructors);
|
|
61
|
-
`;else for(k=D?1:2;k<u.length;++k){var pt=k===1?"thisWired":"arg"+(k-2)+"Wired";u[k].destructorFunction!==null&&(de+=pt+"_dtor("+pt+"); // "+u[k].name+`
|
|
62
|
-
`,We.push(pt+"_dtor"),xe.push(u[k].destructorFunction))}return ee&&(de+=`var ret = retType.fromWireType(rv);
|
|
63
|
-
return ret;
|
|
64
|
-
`),de+=`}
|
|
65
|
-
`,We.push(de),ua(Function,We).apply(null,xe)}function lo(){this.allocated=[void 0],this.freelist=[]}var hr=new lo;function fd(c){c>=hr.reserved&&--hr.get(c).refcount===0&&hr.free(c)}function Qs(){for(var c=0,u=hr.reserved;u<hr.allocated.length;++u)hr.allocated[u]!==void 0&&++c;return c}var Ys={toValue:c=>(c||$e("Cannot use deleted val. handle = "+c),hr.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 hr.allocate({refcount:1,value:c})}}};function pr(c){if(c===null)return"null";var u=typeof c;return u==="object"||u==="array"||u==="function"?c.toString():""+c}function ma(c,u){switch(u){case 2:return function(h){return this.fromWireType(Or[h>>2])};case 3:return function(h){return this.fromWireType(Ye[h>>3])};default:throw new TypeError("Unknown float type: "+c)}}function gd(c,u,h){switch(u){case 0:return h?function(g){return W[g]}:function(g){return G[g]};case 1:return h?function(g){return ae[g>>1]}:function(g){return ke[g>>1]};case 2:return h?function(g){return Me[g>>2]}:function(g){return Y[g>>2]};default:throw new TypeError("Unknown integer type: "+c)}}var ha=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,Ed=(c,u)=>{for(var h=c,g=h>>1,A=g+u/2;!(g>=A)&&ke[g];)++g;if((h=g<<1)-c>32&&ha)return ha.decode(G.subarray(c,h));for(var v="",C=0;!(C>=u/2);++C){var D=ae[c+2*C>>1];if(D==0)break;v+=String.fromCharCode(D)}return v},S=(c,u,h)=>{if(h===void 0&&(h=2147483647),h<2)return 0;for(var g=u,A=(h-=2)<2*c.length?h/2:c.length,v=0;v<A;++v){var C=c.charCodeAt(v);ae[u>>1]=C,u+=2}return ae[u>>1]=0,u-g},T=c=>2*c.length,w=(c,u)=>{for(var h=0,g="";!(h>=u/4);){var A=Me[c+4*h>>2];if(A==0)break;if(++h,A>=65536){var v=A-65536;g+=String.fromCharCode(55296|v>>10,56320|1023&v)}else g+=String.fromCharCode(A)}return g},L=(c,u,h)=>{if(h===void 0&&(h=2147483647),h<4)return 0;for(var g=u,A=g+h-4,v=0;v<c.length;++v){var C=c.charCodeAt(v);if(C>=55296&&C<=57343&&(C=65536+((1023&C)<<10)|1023&c.charCodeAt(++v)),Me[u>>2]=C,(u+=4)+4>A)break}return Me[u>>2]=0,u-g},$=c=>{for(var u=0,h=0;h<c.length;++h){var g=c.charCodeAt(h);g>=55296&&g<=57343&&++h,u+=4}return u},j={},X=[];function K(c,u){var h=yr[c];return h===void 0&&$e(u+" has unknown type "+Xs(c)),h}var ie=[],q={},Ee=()=>{if(!Ee.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",_:l||"./this.program"};for(var u in q)q[u]===void 0?delete c[u]:c[u]=q[u];var h=[];for(var u in c)h.push(`${u}=${c[u]}`);Ee.strings=h}return Ee.strings},He,De,ge,Ve=function(c,u,h,g){c||(c=this),this.parent=c,this.mount=c.mount,this.mounted=null,this.id=E.nextInode++,this.name=u,this.mode=h,this.node_ops={},this.stream_ops={},this.rdev=g},dt=365,et=146;Object.defineProperties(Ve.prototype,{read:{get:function(){return(this.mode&dt)===dt},set:function(c){c?this.mode|=dt:this.mode&=-366}},write:{get:function(){return(this.mode&et)===et},set:function(c){c?this.mode|=et:this.mode&=-147}},isFolder:{get:function(){return E.isDir(this.mode)}},isDevice:{get:function(){return E.isChrdev(this.mode)}}}),E.FSNode=Ve,E.createPreloadedFile=function(c,u,h,g,A,v,C,D,F,k){var ee=u?rr.resolve(fe.join2(c,u)):c;function le(me){function de(we){k&&k(),D||E.createDataFile(c,u,we,g,A,F),v&&v(),qo()}(function(we,We,xe,pt){typeof Browser!="undefined"&&Browser.init();var Ke=!1;return sm.forEach(function(qt){Ke||qt.canHandle(We)&&(qt.handle(we,We,xe,pt),Ke=!0)}),Ke})(me,ee,de,()=>{C&&C(),qo()})||de(me)}Ws(),typeof h=="string"?om(h,me=>le(me),C):le(h)},E.staticInit(),(function(){for(var c=new Array(256),u=0;u<256;++u)c[u]=String.fromCharCode(u);U=c})(),no=o.BindingError=class extends Error{constructor(c){super(c),this.name="BindingError"}},Kc=o.InternalError=class extends Error{constructor(c){super(c),this.name="InternalError"}},Lr.prototype.isAliasOf=ed,Lr.prototype.clone=nd,Lr.prototype.delete=cm,Lr.prototype.isDeleted=ad,Lr.prototype.deleteLater=cd,o.getInheritedInstanceCount=nm,o.getLiveInheritedInstances=am,o.flushPendingDeletes=mr,o.setDelayFunction=od,xr.prototype.getPointee=lm,xr.prototype.destructor=ld,xr.prototype.argPackAdvance=8,xr.prototype.readValueFromPointer=ts,xr.prototype.deleteObject=mm,xr.prototype.fromWireType=sd,hd=o.UnboundTypeError=(He=Error,(ge=qs(De="UnboundTypeError",function(c){this.name=De,this.message=c;var u=new Error(c).stack;u!==void 0&&(this.stack=this.toString()+`
|
|
66
|
-
`+u.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(He.prototype),ge.prototype.constructor=ge,ge.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},ge),Object.assign(lo.prototype,{get(c){return this.allocated[c]},has(c){return this.allocated[c]!==void 0},allocate(c){var u=this.freelist.pop()||this.allocated.length;return this.allocated[u]=c,u},free(c){this.allocated[c]=void 0,this.freelist.push(c)}}),hr.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),hr.reserved=hr.allocated.length,o.count_emval_handles=Qs;var St,tt={p:function(c,u,h){throw new io(c).init(u,h),c},C:function(c,u,h){Nt.varargs=h;try{var g=Nt.getStreamFromFD(c);switch(u){case 0:return(A=Nt.get())<0?-28:E.createStream(g,A).fd;case 1:case 2:case 6:case 7:return 0;case 3:return g.flags;case 4:var A=Nt.get();return g.flags|=A,0;case 5:return A=Nt.get(),ae[A+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return v=28,Me[pa()>>2]=v,-1}}catch(C){if(E===void 0||C.name!=="ErrnoError")throw C;return-C.errno}var v},w:function(c,u,h,g){Nt.varargs=g;try{u=Nt.getStr(u),u=Nt.calculateAt(c,u);var A=g?Nt.get():0;return E.open(u,h,A).fd}catch(v){if(E===void 0||v.name!=="ErrnoError")throw v;return-v.errno}},t:function(c,u,h,g,A){},n:function(c,u,h,g,A){var v=Ri(h);lr(c,{name:u=Mt(u),fromWireType:function(C){return!!C},toWireType:function(C,D){return D?g:A},argPackAdvance:8,readValueFromPointer:function(C){var D;if(h===1)D=W;else if(h===2)D=ae;else{if(h!==4)throw new TypeError("Unknown boolean type size: "+u);D=Me}return this.fromWireType(D[C>>v])},destructorFunction:null})},r:function(c,u,h,g,A,v,C,D,F,k,ee,le,me){ee=Mt(ee),v=uo(A,v),D&&(D=uo(C,D)),k&&(k=uo(F,k)),me=uo(le,me);var de=jt(ee);(function(we,We,xe){o.hasOwnProperty(we)?((xe===void 0||o[we].overloadTable!==void 0&&o[we].overloadTable[xe]!==void 0)&&$e(`Cannot register public name '${we}' twice`),dd(o,we,we),o.hasOwnProperty(xe)&&$e(`Cannot register multiple overloads of a function with the same number of arguments (${xe})!`),o[we].overloadTable[xe]=We):(o[we]=We,xe!==void 0&&(o[we].numArguments=xe))})(de,function(){ca(`Cannot construct ${ee} due to unbound types`,[g])}),oi([c,u,h],g?[g]:[],function(we){var We,xe;we=we[0],xe=g?(We=we.registeredClass).instancePrototype:Lr.prototype;var pt=qs(de,function(){if(Object.getPrototypeOf(this)!==Ke)throw new no("Use 'new' to construct "+ee);if(qt.constructor_body===void 0)throw new no(ee+" has no accessible constructor");var Tt=qt.constructor_body[arguments.length];if(Tt===void 0)throw new no(`Tried to invoke ctor of ${ee} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(qt.constructor_body).toString()}) parameters instead!`);return Tt.apply(this,arguments)}),Ke=Object.create(xe,{constructor:{value:pt}});pt.prototype=Ke;var qt=new zs(ee,pt,Ke,me,We,v,D,k);qt.baseClass&&(qt.baseClass.__derivedClasses===void 0&&(qt.baseClass.__derivedClasses=[]),qt.baseClass.__derivedClasses.push(qt));var Ea=new xr(ee,qt,!0,!1,!1),Zs=new xr(ee+"*",qt,!1,!1,!1),rs=new xr(ee+" const*",qt,!1,!0,!1);return Qo[c]={pointerType:Zs,constPointerType:rs},(function(Tt,Qf,pm){o.hasOwnProperty(Tt)||ur("Replacing nonexistant public symbol"),o[Tt].overloadTable!==void 0&&pm!==void 0?o[Tt].overloadTable[pm]=Qf:(o[Tt]=Qf,o[Tt].argCount=pm)})(de,pt),[Ea,Zs,rs]})},q:function(c,u,h,g,A,v){var C=da(u,h);A=uo(g,A),oi([],[c],function(D){var F=`constructor ${(D=D[0]).name}`;if(D.registeredClass.constructor_body===void 0&&(D.registeredClass.constructor_body=[]),D.registeredClass.constructor_body[u-1]!==void 0)throw new no(`Cannot register multiple constructors with identical number of parameters (${u-1}) for class '${D.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return D.registeredClass.constructor_body[u-1]=()=>{ca(`Cannot construct ${D.name} due to unbound types`,C)},oi([],C,function(k){return k.splice(1,0,null),D.registeredClass.constructor_body[u-1]=la(F,k,null,A,v),[]}),[]})},d:function(c,u,h,g,A,v,C,D,F){var k=da(h,g);u=Mt(u),v=uo(A,v),oi([],[c],function(ee){var le=`${(ee=ee[0]).name}.${u}`;function me(){ca(`Cannot call ${le} due to unbound types`,k)}u.startsWith("@@")&&(u=Symbol[u.substring(2)]),D&&ee.registeredClass.pureVirtualFunctions.push(u);var de=ee.registeredClass.instancePrototype,we=de[u];return we===void 0||we.overloadTable===void 0&&we.className!==ee.name&&we.argCount===h-2?(me.argCount=h-2,me.className=ee.name,de[u]=me):(dd(de,u,le),de[u].overloadTable[h-2]=me),oi([],k,function(We){var xe=la(le,We,ee,v,C,F);return de[u].overloadTable===void 0?(xe.argCount=h-2,de[u]=xe):de[u].overloadTable[h-2]=xe,[]}),[]})},D:function(c,u){lr(c,{name:u=Mt(u),fromWireType:function(h){var g=Ys.toValue(h);return fd(h),g},toWireType:function(h,g){return Ys.toHandle(g)},argPackAdvance:8,readValueFromPointer:ts,destructorFunction:null})},k:function(c,u,h){var g=Ri(h);lr(c,{name:u=Mt(u),fromWireType:function(A){return A},toWireType:function(A,v){return v},argPackAdvance:8,readValueFromPointer:ma(u,g),destructorFunction:null})},c:function(c,u,h,g,A){u=Mt(u),A===-1&&(A=4294967295);var v=Ri(h),C=k=>k;if(g===0){var D=32-8*h;C=k=>k<<D>>>D}var F=u.includes("unsigned");lr(c,{name:u,fromWireType:C,toWireType:F?function(k,ee){return this.name,ee>>>0}:function(k,ee){return this.name,ee},argPackAdvance:8,readValueFromPointer:gd(u,v,g!==0),destructorFunction:null})},b:function(c,u,h){var g=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][u];function A(v){var C=Y,D=C[v>>=2],F=C[v+1];return new g(C.buffer,F,D)}lr(c,{name:h=Mt(h),fromWireType:A,argPackAdvance:8,readValueFromPointer:A},{ignoreDuplicateRegistrations:!0})},j:function(c,u){var h=(u=Mt(u))==="std::string";lr(c,{name:u,fromWireType:function(g){var A,v=Y[g>>2],C=g+4;if(h)for(var D=C,F=0;F<=v;++F){var k=C+F;if(F==v||G[k]==0){var ee=se(D,k-D);A===void 0?A=ee:(A+="\0",A+=ee),D=k+1}}else{var le=new Array(v);for(F=0;F<v;++F)le[F]=String.fromCharCode(G[C+F]);A=le.join("")}return kr(g),A},toWireType:function(g,A){var v;A instanceof ArrayBuffer&&(A=new Uint8Array(A));var C=typeof A=="string";C||A instanceof Uint8Array||A instanceof Uint8ClampedArray||A instanceof Int8Array||$e("Cannot pass non-string to std::string"),v=h&&C?zo(A):A.length;var D=Yt(4+v+1),F=D+4;if(Y[D>>2]=v,h&&C)Jo(A,G,F,v+1);else if(C)for(var k=0;k<v;++k){var ee=A.charCodeAt(k);ee>255&&(kr(F),$e("String has UTF-16 code units that do not fit in 8 bits")),G[F+k]=ee}else for(k=0;k<v;++k)G[F+k]=A[k];return g!==null&&g.push(kr,D),D},argPackAdvance:8,readValueFromPointer:ts,destructorFunction:function(g){kr(g)}})},f:function(c,u,h){var g,A,v,C,D;h=Mt(h),u===2?(g=Ed,A=S,C=T,v=()=>ke,D=1):u===4&&(g=w,A=L,C=$,v=()=>Y,D=2),lr(c,{name:h,fromWireType:function(F){for(var k,ee=Y[F>>2],le=v(),me=F+4,de=0;de<=ee;++de){var we=F+4+de*u;if(de==ee||le[we>>D]==0){var We=g(me,we-me);k===void 0?k=We:(k+="\0",k+=We),me=we+u}}return kr(F),k},toWireType:function(F,k){typeof k!="string"&&$e(`Cannot pass non-string to C++ string type ${h}`);var ee=C(k),le=Yt(4+ee+u);return Y[le>>2]=ee>>D,A(k,le+4,ee+u),F!==null&&F.push(kr,le),le},argPackAdvance:8,readValueFromPointer:ts,destructorFunction:function(F){kr(F)}})},o:function(c,u){lr(c,{isVoid:!0,name:u=Mt(u),argPackAdvance:0,fromWireType:function(){},toWireType:function(h,g){}})},g:function(c,u,h,g){var A,v;(c=X[c])(u=Ys.toValue(u),h=(v=j[A=h])===void 0?Mt(A):v,null,g)},m:fd,l:function(c,u){var h=(function(We,xe){for(var pt=new Array(We),Ke=0;Ke<We;++Ke)pt[Ke]=K(Y[xe+4*Ke>>2],"parameter "+Ke);return pt})(c,u),g=h[0],A=g.name+"_$"+h.slice(1).map(function(We){return We.name}).join("_")+"$",v=ie[A];if(v!==void 0)return v;for(var C=["retType"],D=[g],F="",k=0;k<c-1;++k)F+=(k!==0?", ":"")+"arg"+k,C.push("argType"+k),D.push(h[1+k]);var ee="return function "+jt("methodCaller_"+A)+`(handle, name, destructors, args) {
|
|
67
|
-
`,le=0;for(k=0;k<c-1;++k)ee+=" var arg"+k+" = argType"+k+".readValueFromPointer(args"+(le?"+"+le:"")+`);
|
|
68
|
-
`,le+=h[k+1].argPackAdvance;for(ee+=" var rv = handle[name]("+F+`);
|
|
69
|
-
`,k=0;k<c-1;++k)h[k+1].deleteObject&&(ee+=" argType"+k+".deleteObject(arg"+k+`);
|
|
70
|
-
`);g.isVoid||(ee+=` return retType.toWireType(destructors, rv);
|
|
71
|
-
`),ee+=`};
|
|
72
|
-
`,C.push(ee);var me,de,we=ua(Function,C).apply(null,D);return me=we,de=X.length,X.push(me),v=de,ie[A]=v,v},a:()=>{ri("")},e:function(){return Date.now()},v:()=>G.length,A:(c,u,h)=>G.copyWithin(c,u,u+h),u:c=>{G.length,ri("OOM")},y:(c,u)=>{var h=0;return Ee().forEach(function(g,A){var v=u+h;Y[c+4*A>>2]=v,((C,D)=>{for(var F=0;F<C.length;++F)W[0|D++]=C.charCodeAt(F);W[0|D]=0})(g,v),h+=g.length+1}),0},z:(c,u)=>{var h=Ee();Y[c>>2]=h.length;var g=0;return h.forEach(function(A){g+=A.length+1}),Y[u>>2]=g,0},i:function(c){try{var u=Nt.getStreamFromFD(c);return E.close(u),0}catch(h){if(E===void 0||h.name!=="ErrnoError")throw h;return h.errno}},x:function(c,u){try{var h=Nt.getStreamFromFD(c),g=h.tty?2:E.isDir(h.mode)?3:E.isLink(h.mode)?7:4;return W[u|0]=g,ae[u+2>>1]=0,H=[0,(Ae=0,+Math.abs(Ae)>=1?Ae>0?+Math.floor(Ae/4294967296)>>>0:~~+Math.ceil((Ae-+(~~Ae>>>0))/4294967296)>>>0:0)],Me[u+8>>2]=H[0],Me[u+12>>2]=H[1],H=[0,(Ae=0,+Math.abs(Ae)>=1?Ae>0?+Math.floor(Ae/4294967296)>>>0:~~+Math.ceil((Ae-+(~~Ae>>>0))/4294967296)>>>0:0)],Me[u+16>>2]=H[0],Me[u+20>>2]=H[1],0}catch(A){if(E===void 0||A.name!=="ErrnoError")throw A;return A.errno}},B:function(c,u,h,g){try{var A=((v,C,D,F)=>{for(var k=0,ee=0;ee<D;ee++){var le=Y[C>>2],me=Y[C+4>>2];C+=8;var de=E.read(v,W,le,me,F);if(de<0)return-1;if(k+=de,de<me)break;F!==void 0&&(F+=de)}return k})(Nt.getStreamFromFD(c),u,h);return Y[g>>2]=A,0}catch(v){if(E===void 0||v.name!=="ErrnoError")throw v;return v.errno}},s:function(c,u,h,g,A){var v,C,D=(C=h)+2097152>>>0<4194305-!!(v=u)?(v>>>0)+4294967296*C:NaN;try{if(isNaN(D))return 61;var F=Nt.getStreamFromFD(c);return E.llseek(F,D,g),H=[F.position>>>0,(Ae=F.position,+Math.abs(Ae)>=1?Ae>0?+Math.floor(Ae/4294967296)>>>0:~~+Math.ceil((Ae-+(~~Ae>>>0))/4294967296)>>>0:0)],Me[A>>2]=H[0],Me[A+4>>2]=H[1],F.getdents&&D===0&&g===0&&(F.getdents=null),0}catch(k){if(E===void 0||k.name!=="ErrnoError")throw k;return k.errno}},h:function(c,u,h,g){try{var A=((v,C,D,F)=>{for(var k=0,ee=0;ee<D;ee++){var le=Y[C>>2],me=Y[C+4>>2];C+=8;var de=E.write(v,W,le,me,F);if(de<0)return-1;k+=de,F!==void 0&&(F+=de)}return k})(Nt.getStreamFromFD(c),u,h);return Y[g>>2]=A,0}catch(v){if(E===void 0||v.name!=="ErrnoError")throw v;return v.errno}}},Yt=((function(){var c,u,h,g,A={a:tt};function v(C,D){var F,k,ee=C.exports;return N=(P=ee).E,F=N.buffer,o.HEAP8=W=new Int8Array(F),o.HEAP16=ae=new Int16Array(F),o.HEAP32=Me=new Int32Array(F),o.HEAPU8=G=new Uint8Array(F),o.HEAPU16=ke=new Uint16Array(F),o.HEAPU32=Y=new Uint32Array(F),o.HEAPF32=Or=new Float32Array(F),o.HEAPF64=Ye=new Float64Array(F),ea=P.H,k=P.F,Zc.unshift(k),qo(),ee}if(Ws(),o.instantiateWasm)try{return o.instantiateWasm(A,v)}catch(C){y("Module.instantiateWasm callback failed with error: "+C),r(C)}(c=I,u=Ai,h=A,g=function(C){v(C.instance)},c||typeof WebAssembly.instantiateStreaming!="function"||Wt(u)||typeof fetch!="function"?ii(u,h,g):fetch(u,{credentials:"same-origin"}).then(C=>WebAssembly.instantiateStreaming(C,h).then(g,function(D){return y("wasm streaming compile failed: "+D),y("falling back to ArrayBuffer instantiation"),ii(u,h,g)}))).catch(r)})(),c=>(Yt=P.G)(c)),kr=c=>(kr=P.I)(c),pa=()=>(pa=P.J)(),fa=c=>(fa=P.K)(c),Ur=(o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=P.L)(),c=>(Ur=P.M)(c));o.dynCall_jiji=(c,u,h,g,A)=>(o.dynCall_jiji=P.N)(c,u,h,g,A),o._ff_h264_cabac_tables=67061;function ga(){function c(){St||(St=!0,o.calledRun=!0,ta||(o.noFSInit||E.init.initialized||E.init(),E.ignorePermissions=!1,Pr.init(),ro(Zc),e(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),(function(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)jo(o.postRun.shift());ro(ti)})()))}Ar>0||((function(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)ra(o.preRun.shift());ro(Yc)})(),Ar>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),c()},1)):c()))}if(Si=function c(){St||ga(),St||(Si=c)},o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return ga(),t.ready}})(),Ob=Mb,Pb=class extends Nc{constructor(i){super(Ob,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)}},lV=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e,r,o=t;o.ready=new Promise((S,T)=>{e=S,r=T});var s,n=Object.assign({},o),a=typeof window=="object",d=typeof importScripts=="function",l=(typeof process=="object"&&typeof process.versions=="object"&&process.versions.node,"");(a||d)&&(d?l=self.location.href:typeof document!="undefined"&&document.currentScript&&(l=document.currentScript.src),i&&(l=i),l=l.indexOf("blob:")!==0?l.substr(0,l.replace(/[?#].*/,"").lastIndexOf("/")+1):"",d&&(s=S=>{var T=new XMLHttpRequest;return T.open("GET",S,!1),T.responseType="arraybuffer",T.send(null),new Uint8Array(T.response)}));var p,f=o.print||console.log.bind(console),_=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&&(p=o.wasmBinary);var I,R;o.noExitRuntime,typeof WebAssembly!="object"&&Ar("no native wasm support detected");var y,N,P,W,G,ae,ke,Me,Y,Or=!1,Ye=[],ea=[],ta=[];function Yc(S){Ye.unshift(S)}function Zc(S){ta.unshift(S)}var ti=0,ra=null,jo=null;function Ar(S){o.onAbort&&o.onAbort(S),_(S="Aborted("+S+")"),Or=!0,S+=". Build with -sASSERTIONS for more info.";var T=new WebAssembly.RuntimeError(S);throw r(T),T}var re,Si;function Ws(S){return S.startsWith("data:application/octet-stream;base64,")}function qo(S){if(S==re&&p)return new Uint8Array(p);if(s)return s(S);throw"both async and sync fetching of the wasm failed"}function ri(S,T,w){return(function(L){return p||!a&&!d||typeof fetch!="function"?Promise.resolve().then(()=>qo(L)):fetch(L,{credentials:"same-origin"}).then($=>{if(!$.ok)throw"failed to load wasm binary file at '"+L+"'";return $.arrayBuffer()}).catch(()=>qo(L))})(S).then(L=>WebAssembly.instantiate(L,T)).then(L=>L).then(w,L=>{_("failed to asynchronously prepare wasm: "+L),Ar(L)})}Ws(re="videodec_simd.wasm")||(Si=re,re=o.locateFile?o.locateFile(Si,l):l+Si);var Ai=S=>{for(;S.length>0;)S.shift()(o)};function ia(S){this.excPtr=S,this.ptr=S-24,this.set_type=function(T){ae[this.ptr+4>>2]=T},this.get_type=function(){return ae[this.ptr+4>>2]},this.set_destructor=function(T){ae[this.ptr+8>>2]=T},this.get_destructor=function(){return ae[this.ptr+8>>2]},this.set_caught=function(T){T=T?1:0,y[this.ptr+12|0]=T},this.get_caught=function(){return y[this.ptr+12|0]!=0},this.set_rethrown=function(T){T=T?1:0,y[this.ptr+13|0]=T},this.get_rethrown=function(){return y[this.ptr+13|0]!=0},this.init=function(T,w){this.set_adjusted_ptr(0),this.set_type(T),this.set_destructor(w)},this.set_adjusted_ptr=function(T){ae[this.ptr+16>>2]=T},this.get_adjusted_ptr=function(){return ae[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ha(this.get_type()))return ae[this.excPtr>>2];var T=this.get_adjusted_ptr();return T!==0?T:this.excPtr}}function Ae(S){switch(S){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${S}`)}}var H=void 0;function Wt(S){for(var T="",w=S;N[w];)T+=H[N[w++]];return T}var yi={},ii={},ro={},io=void 0;function fe(S){throw new io(S)}var oa=void 0;function rr(S){throw new oa(S)}function oo(S,T,w){function L(K){var ie=w(K);ie.length!==S.length&&rr("Mismatched type converter count");for(var q=0;q<S.length;++q)Gt(S[q],ie[q])}S.forEach(function(K){ro[K]=T});var $=new Array(T.length),j=[],X=0;T.forEach((K,ie)=>{ii.hasOwnProperty(K)?$[ie]=ii[K]:(j.push(K),yi.hasOwnProperty(K)||(yi[K]=[]),yi[K].push(()=>{$[ie]=ii[K],++X===j.length&&L($)}))}),j.length===0&&L($)}function Gt(S,T,w={}){if(!("argPackAdvance"in T))throw new TypeError("registerType registeredInstance requires argPackAdvance");return(function(L,$,j={}){var X=$.name;if(L||fe(`type "${X}" must have a positive integer typeid pointer`),ii.hasOwnProperty(L)){if(j.ignoreDuplicateRegistrations)return;fe(`Cannot register type '${X}' twice`)}if(ii[L]=$,delete ro[L],yi.hasOwnProperty(L)){var K=yi[L];delete yi[L],K.forEach(ie=>ie())}})(S,T,w)}function sa(S){if(!(this instanceof ur)||!(S instanceof ur))return!1;for(var T=this.$$.ptrType.registeredClass,w=this.$$.ptr,L=S.$$.ptrType.registeredClass,$=S.$$.ptr;T.baseClass;)w=T.upcast(w),T=T.baseClass;for(;L.baseClass;)$=L.upcast($),L=L.baseClass;return T===L&&w===$}function zo(S){fe(S.$$.ptrType.registeredClass.name+" instance already deleted")}var Jo=!1;function Gs(S){}function Pr(S){S.count.value-=1,S.count.value===0&&(function(T){T.smartPtr?T.smartPtrType.rawDestructor(T.smartPtr):T.ptrType.registeredClass.rawDestructor(T.ptr)})(S)}function na(S,T,w){if(T===w)return S;if(w.baseClass===void 0)return null;var L=na(S,T,w.baseClass);return L===null?null:w.downcast(L)}var Ce={};function om(){return Object.keys(Ri).length}function sm(){var S=[];for(var T in Ri)Ri.hasOwnProperty(T)&&S.push(Ri[T]);return S}var bi=[];function E(){for(;bi.length;){var S=bi.pop();S.$$.deleteScheduled=!1,S.delete()}}var se=void 0;function Nt(S){se=S,bi.length&&se&&se(E)}var Ri={};function U(S,T){return T=(function(w,L){for(L===void 0&&fe("ptr should not be undefined");w.baseClass;)L=w.upcast(L),w=w.baseClass;return L})(S,T),Ri[T]}function Mt(S,T){return T.ptrType&&T.ptr||rr("makeClassHandle requires ptr and ptrType"),!!T.smartPtrType!=!!T.smartPtr&&rr("Both smartPtrType and smartPtr must be specified"),T.count={value:1},yr(Object.create(S,{$$:{value:T}}))}function so(S){var T=this.getPointee(S);if(!T)return this.destructor(S),null;var w=U(this.registeredClass,T);if(w!==void 0){if(w.$$.count.value===0)return w.$$.ptr=T,w.$$.smartPtr=S,w.clone();var L=w.clone();return this.destructor(S),L}function $(){return this.isSmartPointer?Mt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:T,smartPtrType:this,smartPtr:S}):Mt(this.registeredClass.instancePrototype,{ptrType:this,ptr:S})}var j,X=this.registeredClass.getActualType(T),K=Ce[X];if(!K)return $.call(this);j=this.isConst?K.constPointerType:K.pointerType;var ie=na(T,this.registeredClass,j.registeredClass);return ie===null?$.call(this):this.isSmartPointer?Mt(j.registeredClass.instancePrototype,{ptrType:j,ptr:ie,smartPtrType:this,smartPtr:S}):Mt(j.registeredClass.instancePrototype,{ptrType:j,ptr:ie})}var yr=function(S){return typeof FinalizationRegistry=="undefined"?(yr=T=>T,S):(Jo=new FinalizationRegistry(T=>{Pr(T.$$)}),Gs=T=>Jo.unregister(T),(yr=T=>{var w=T.$$;if(w.smartPtr){var L={$$:w};Jo.register(T,L,T)}return T})(S))};function js(){if(this.$$.ptr||zo(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var S,T=yr(Object.create(Object.getPrototypeOf(this),{$$:{value:(S=this.$$,{count:S.count,deleteScheduled:S.deleteScheduled,preservePointerOnDelete:S.preservePointerOnDelete,ptr:S.ptr,ptrType:S.ptrType,smartPtr:S.smartPtr,smartPtrType:S.smartPtrType})}}));return T.$$.count.value+=1,T.$$.deleteScheduled=!1,T}function no(){this.$$.ptr||zo(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&fe("Object already scheduled for deletion"),Gs(this),Pr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function $e(){return!this.$$.ptr}function Kc(){return this.$$.ptr||zo(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&fe("Object already scheduled for deletion"),bi.push(this),bi.length===1&&se&&se(E),this.$$.deleteScheduled=!0,this}function ur(){}function oi(S){if(S===void 0)return"_unknown";var T=(S=S.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return T>=48&&T<=57?`_${S}`:S}function lr(S,T){return S=oi(S),{[S]:function(){return T.apply(this,arguments)}}[S]}function ed(S,T,w){if(S[T].overloadTable===void 0){var L=S[T];S[T]=function(){return S[T].overloadTable.hasOwnProperty(arguments.length)||fe(`Function '${w}' called with an invalid number of arguments (${arguments.length}) - expects one of (${S[T].overloadTable})!`),S[T].overloadTable[arguments.length].apply(this,arguments)},S[T].overloadTable=[],S[T].overloadTable[L.argCount]=L}}function aa(S,T,w,L,$,j,X,K){this.name=S,this.constructor=T,this.instancePrototype=w,this.rawDestructor=L,this.baseClass=$,this.getActualType=j,this.upcast=X,this.downcast=K,this.pureVirtualFunctions=[]}function Xo(S,T,w){for(;T!==w;)T.upcast||fe(`Expected null or instance of ${w.name}, got an instance of ${T.name}`),S=T.upcast(S),T=T.baseClass;return S}function td(S,T){if(T===null)return this.isReference&&fe(`null is not a valid ${this.name}`),0;T.$$||fe(`Cannot pass "${es(T)}" as a ${this.name}`),T.$$.ptr||fe(`Cannot pass deleted object as a pointer of type ${this.name}`);var w=T.$$.ptrType.registeredClass;return Xo(T.$$.ptr,w,this.registeredClass)}function rd(S,T){var w;if(T===null)return this.isReference&&fe(`null is not a valid ${this.name}`),this.isSmartPointer?(w=this.rawConstructor(),S!==null&&S.push(this.rawDestructor,w),w):0;T.$$||fe(`Cannot pass "${es(T)}" as a ${this.name}`),T.$$.ptr||fe(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&T.$$.ptrType.isConst&&fe(`Cannot convert argument of type ${T.$$.smartPtrType?T.$$.smartPtrType.name:T.$$.ptrType.name} to parameter type ${this.name}`);var L=T.$$.ptrType.registeredClass;if(w=Xo(T.$$.ptr,L,this.registeredClass),this.isSmartPointer)switch(T.$$.smartPtr===void 0&&fe("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:T.$$.smartPtrType===this?w=T.$$.smartPtr:fe(`Cannot convert argument of type ${T.$$.smartPtrType?T.$$.smartPtrType.name:T.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:w=T.$$.smartPtr;break;case 2:if(T.$$.smartPtrType===this)w=T.$$.smartPtr;else{var $=T.clone();w=this.rawShare(w,zs.toHandle(function(){$.delete()})),S!==null&&S.push(this.rawDestructor,w)}break;default:fe("Unsupporting sharing policy")}return w}function id(S,T){if(T===null)return this.isReference&&fe(`null is not a valid ${this.name}`),0;T.$$||fe(`Cannot pass "${es(T)}" as a ${this.name}`),T.$$.ptr||fe(`Cannot pass deleted object as a pointer of type ${this.name}`),T.$$.ptrType.isConst&&fe(`Cannot convert argument of type ${T.$$.ptrType.name} to parameter type ${this.name}`);var w=T.$$.ptrType.registeredClass;return Xo(T.$$.ptr,w,this.registeredClass)}function Qo(S){return this.fromWireType(G[S>>2])}function nm(S){return this.rawGetPointee&&(S=this.rawGetPointee(S)),S}function am(S){this.rawDestructor&&this.rawDestructor(S)}function Yo(S){S!==null&&S.delete()}function mr(S,T,w,L,$,j,X,K,ie,q,Ee){this.name=S,this.registeredClass=T,this.isReference=w,this.isConst=L,this.isSmartPointer=$,this.pointeeType=j,this.sharingPolicy=X,this.rawGetPointee=K,this.rawConstructor=ie,this.rawShare=q,this.rawDestructor=Ee,$||T.baseClass!==void 0?this.toWireType=rd:L?(this.toWireType=td,this.destructorFunction=null):(this.toWireType=id,this.destructorFunction=null)}var si=[],od=S=>{var T=si[S];return T||(S>=si.length&&(si.length=S+1),si[S]=T=Y.get(S)),T},Zo=(S,T,w)=>S.includes("j")?((L,$,j)=>{var X=o["dynCall_"+L];return j&&j.length?X.apply(null,[$].concat(j)):X.call(null,$)})(S,T,w):od(T).apply(null,w);function ao(S,T){var w,L,$,j=(S=Wt(S)).includes("j")?(w=S,L=T,$=[],function(){return $.length=0,Object.assign($,arguments),Zo(w,L,$)}):od(T);return typeof j!="function"&&fe(`unknown function pointer with signature ${S}: ${T}`),j}var Ko=void 0;function sd(S){var T=gd(S),w=Wt(T);return pr(T),w}function co(S,T){var w=[],L={};throw T.forEach(function $(j){L[j]||ii[j]||(ro[j]?ro[j].forEach($):(w.push(j),L[j]=!0))}),new Ko(`${S}: `+w.map(sd).join([", "]))}function nd(S,T){for(var w=[],L=0;L<S;L++)w.push(ae[T+4*L>>2]);return w}function cm(S){for(;S.length;){var T=S.pop();S.pop()(T)}}function ad(S,T){if(!(S instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof S} which is not a function`);var w=lr(S.name||"unknownFunctionName",function(){});w.prototype=S.prototype;var L=new w,$=S.apply(L,T);return $ instanceof Object?$:L}function cd(S,T,w,L,$,j){var X=T.length;X<2&&fe("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var K=T[1]!==null&&w!==null,ie=!1,q=1;q<T.length;++q)if(T[q]!==null&&T[q].destructorFunction===void 0){ie=!0;break}var Ee=T[0].name!=="void",He="",De="";for(q=0;q<X-2;++q)He+=(q!==0?", ":"")+"arg"+q,De+=(q!==0?", ":"")+"arg"+q+"Wired";var ge=`
|
|
73
|
-
return function ${oi(S)}(${He}) {
|
|
74
|
-
if (arguments.length !== ${X-2}) {
|
|
75
|
-
throwBindingError('function ${S} called with ${arguments.length} arguments, expected ${X-2} args!');
|
|
76
|
-
}`;ie&&(ge+=`var destructors = [];
|
|
77
|
-
`);var Ve=ie?"destructors":"null",dt=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],et=[fe,L,$,cm,T[0],T[1]];for(K&&(ge+="var thisWired = classParam.toWireType("+Ve+`, this);
|
|
78
|
-
`),q=0;q<X-2;++q)ge+="var arg"+q+"Wired = argType"+q+".toWireType("+Ve+", arg"+q+"); // "+T[q+2].name+`
|
|
79
|
-
`,dt.push("argType"+q),et.push(T[q+2]);if(K&&(De="thisWired"+(De.length>0?", ":"")+De),ge+=(Ee||j?"var rv = ":"")+"invoker(fn"+(De.length>0?", ":"")+De+`);
|
|
80
|
-
`,ie)ge+=`runDestructors(destructors);
|
|
81
|
-
`;else for(q=K?1:2;q<T.length;++q){var St=q===1?"thisWired":"arg"+(q-2)+"Wired";T[q].destructorFunction!==null&&(ge+=St+"_dtor("+St+"); // "+T[q].name+`
|
|
82
|
-
`,dt.push(St+"_dtor"),et.push(T[q].destructorFunction))}return Ee&&(ge+=`var ret = retType.fromWireType(rv);
|
|
83
|
-
return ret;
|
|
84
|
-
`),ge+=`}
|
|
85
|
-
`,dt.push(ge),ad(Function,dt).apply(null,et)}function Lr(){this.allocated=[void 0],this.freelist=[]}var jt=new Lr;function qs(S){S>=jt.reserved&&--jt.get(S).refcount===0&&jt.free(S)}function dd(){for(var S=0,T=jt.reserved;T<jt.allocated.length;++T)jt.allocated[T]!==void 0&&++S;return S}var zs={toValue:S=>(S||fe("Cannot use deleted val. handle = "+S),jt.get(S).value),toHandle:S=>{switch(S){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return jt.allocate({refcount:1,value:S})}}};function es(S){if(S===null)return"null";var T=typeof S;return T==="object"||T==="array"||T==="function"?S.toString():""+S}function dm(S,T){switch(T){case 2:return function(w){return this.fromWireType(ke[w>>2])};case 3:return function(w){return this.fromWireType(Me[w>>3])};default:throw new TypeError("Unknown float type: "+S)}}function um(S,T,w){switch(T){case 0:return w?function(L){return y[L]}:function(L){return N[L]};case 1:return w?function(L){return P[L>>1]}:function(L){return W[L>>1]};case 2:return w?function(L){return G[L>>2]}:function(L){return ae[L>>2]};default:throw new TypeError("Unknown integer type: "+S)}}var ud=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,ts=(S,T,w)=>{for(var L=T+w,$=T;S[$]&&!($>=L);)++$;if($-T>16&&S.buffer&&ud)return ud.decode(S.subarray(T,$));for(var j="";T<$;){var X=S[T++];if(128&X){var K=63&S[T++];if((224&X)!=192){var ie=63&S[T++];if((X=(240&X)==224?(15&X)<<12|K<<6|ie:(7&X)<<18|K<<12|ie<<6|63&S[T++])<65536)j+=String.fromCharCode(X);else{var q=X-65536;j+=String.fromCharCode(55296|q>>10,56320|1023&q)}}else j+=String.fromCharCode((31&X)<<6|K)}else j+=String.fromCharCode(X)}return j},lm=(S,T)=>S?ts(N,S,T):"",ld=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,mm=(S,T)=>{for(var w=S,L=w>>1,$=L+T/2;!(L>=$)&&W[L];)++L;if((w=L<<1)-S>32&&ld)return ld.decode(N.subarray(S,w));for(var j="",X=0;!(X>=T/2);++X){var K=P[S+2*X>>1];if(K==0)break;j+=String.fromCharCode(K)}return j},xr=(S,T,w)=>{if(w===void 0&&(w=2147483647),w<2)return 0;for(var L=T,$=(w-=2)<2*S.length?w/2:S.length,j=0;j<$;++j){var X=S.charCodeAt(j);P[T>>1]=X,T+=2}return P[T>>1]=0,T-L},Js=S=>2*S.length,md=(S,T)=>{for(var w=0,L="";!(w>=T/4);){var $=G[S+4*w>>2];if($==0)break;if(++w,$>=65536){var j=$-65536;L+=String.fromCharCode(55296|j>>10,56320|1023&j)}else L+=String.fromCharCode($)}return L},hm=(S,T,w)=>{if(w===void 0&&(w=2147483647),w<4)return 0;for(var L=T,$=L+w-4,j=0;j<S.length;++j){var X=S.charCodeAt(j);if(X>=55296&&X<=57343&&(X=65536+((1023&X)<<10)|1023&S.charCodeAt(++j)),G[T>>2]=X,(T+=4)+4>$)break}return G[T>>2]=0,T-L},uo=S=>{for(var T=0,w=0;w<S.length;++w){var L=S.charCodeAt(w);L>=55296&&L<=57343&&++w,T+=4}return T},hd={},Xs=[];function ca(S,T){var w=ii[S];return w===void 0&&fe(T+" has unknown type "+sd(S)),w}var da=[],pd;pd=()=>performance.now();var ua,la,lo,hr=[null,[],[]],fd=(S,T)=>{var w=hr[S];T===0||T===10?((S===1?f:_)(ts(w,0)),w.length=0):w.push(T)};(function(){for(var S=new Array(256),T=0;T<256;++T)S[T]=String.fromCharCode(T);H=S})(),io=o.BindingError=class extends Error{constructor(S){super(S),this.name="BindingError"}},oa=o.InternalError=class extends Error{constructor(S){super(S),this.name="InternalError"}},ur.prototype.isAliasOf=sa,ur.prototype.clone=js,ur.prototype.delete=no,ur.prototype.isDeleted=$e,ur.prototype.deleteLater=Kc,o.getInheritedInstanceCount=om,o.getLiveInheritedInstances=sm,o.flushPendingDeletes=E,o.setDelayFunction=Nt,mr.prototype.getPointee=nm,mr.prototype.destructor=am,mr.prototype.argPackAdvance=8,mr.prototype.readValueFromPointer=Qo,mr.prototype.deleteObject=Yo,mr.prototype.fromWireType=so,Ko=o.UnboundTypeError=(ua=Error,(lo=lr(la="UnboundTypeError",function(S){this.name=la,this.message=S;var T=new Error(S).stack;T!==void 0&&(this.stack=this.toString()+`
|
|
86
|
-
`+T.replace(/^Error(:[^\n]*)?\n/,""))})).prototype=Object.create(ua.prototype),lo.prototype.constructor=lo,lo.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},lo),Object.assign(Lr.prototype,{get(S){return this.allocated[S]},has(S){return this.allocated[S]!==void 0},allocate(S){var T=this.freelist.pop()||this.allocated.length;return this.allocated[T]=S,T},free(S){this.allocated[S]=void 0,this.freelist.push(S)}}),jt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),jt.reserved=jt.allocated.length,o.count_emval_handles=dd;var Qs,Ys={o:function(S,T,w){throw new ia(S).init(T,w),S},r:function(S,T,w,L,$){},m:function(S,T,w,L,$){var j=Ae(w);Gt(S,{name:T=Wt(T),fromWireType:function(X){return!!X},toWireType:function(X,K){return K?L:$},argPackAdvance:8,readValueFromPointer:function(X){var K;if(w===1)K=y;else if(w===2)K=P;else{if(w!==4)throw new TypeError("Unknown boolean type size: "+T);K=G}return this.fromWireType(K[X>>j])},destructorFunction:null})},q:function(S,T,w,L,$,j,X,K,ie,q,Ee,He,De){Ee=Wt(Ee),j=ao($,j),K&&(K=ao(X,K)),q&&(q=ao(ie,q)),De=ao(He,De);var ge=oi(Ee);(function(Ve,dt,et){o.hasOwnProperty(Ve)?((et===void 0||o[Ve].overloadTable!==void 0&&o[Ve].overloadTable[et]!==void 0)&&fe(`Cannot register public name '${Ve}' twice`),ed(o,Ve,Ve),o.hasOwnProperty(et)&&fe(`Cannot register multiple overloads of a function with the same number of arguments (${et})!`),o[Ve].overloadTable[et]=dt):(o[Ve]=dt,et!==void 0&&(o[Ve].numArguments=et))})(ge,function(){co(`Cannot construct ${Ee} due to unbound types`,[L])}),oo([S,T,w],L?[L]:[],function(Ve){var dt,et;Ve=Ve[0],et=L?(dt=Ve.registeredClass).instancePrototype:ur.prototype;var St=lr(ge,function(){if(Object.getPrototypeOf(this)!==tt)throw new io("Use 'new' to construct "+Ee);if(Yt.constructor_body===void 0)throw new io(Ee+" has no accessible constructor");var Ur=Yt.constructor_body[arguments.length];if(Ur===void 0)throw new io(`Tried to invoke ctor of ${Ee} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Yt.constructor_body).toString()}) parameters instead!`);return Ur.apply(this,arguments)}),tt=Object.create(et,{constructor:{value:St}});St.prototype=tt;var Yt=new aa(Ee,St,tt,De,dt,j,K,q);Yt.baseClass&&(Yt.baseClass.__derivedClasses===void 0&&(Yt.baseClass.__derivedClasses=[]),Yt.baseClass.__derivedClasses.push(Yt));var kr=new mr(Ee,Yt,!0,!1,!1),pa=new mr(Ee+"*",Yt,!1,!1,!1),fa=new mr(Ee+" const*",Yt,!1,!0,!1);return Ce[S]={pointerType:pa,constPointerType:fa},(function(Ur,ga,c){o.hasOwnProperty(Ur)||rr("Replacing nonexistant public symbol"),o[Ur].overloadTable!==void 0&&c!==void 0?o[Ur].overloadTable[c]=ga:(o[Ur]=ga,o[Ur].argCount=c)})(ge,St),[kr,pa,fa]})},p:function(S,T,w,L,$,j){var X=nd(T,w);$=ao(L,$),oo([],[S],function(K){var ie=`constructor ${(K=K[0]).name}`;if(K.registeredClass.constructor_body===void 0&&(K.registeredClass.constructor_body=[]),K.registeredClass.constructor_body[T-1]!==void 0)throw new io(`Cannot register multiple constructors with identical number of parameters (${T-1}) for class '${K.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return K.registeredClass.constructor_body[T-1]=()=>{co(`Cannot construct ${K.name} due to unbound types`,X)},oo([],X,function(q){return q.splice(1,0,null),K.registeredClass.constructor_body[T-1]=cd(ie,q,null,$,j),[]}),[]})},d:function(S,T,w,L,$,j,X,K,ie){var q=nd(w,L);T=Wt(T),j=ao($,j),oo([],[S],function(Ee){var He=`${(Ee=Ee[0]).name}.${T}`;function De(){co(`Cannot call ${He} due to unbound types`,q)}T.startsWith("@@")&&(T=Symbol[T.substring(2)]),K&&Ee.registeredClass.pureVirtualFunctions.push(T);var ge=Ee.registeredClass.instancePrototype,Ve=ge[T];return Ve===void 0||Ve.overloadTable===void 0&&Ve.className!==Ee.name&&Ve.argCount===w-2?(De.argCount=w-2,De.className=Ee.name,ge[T]=De):(ed(ge,T,He),ge[T].overloadTable[w-2]=De),oo([],q,function(dt){var et=cd(He,dt,Ee,j,X,ie);return ge[T].overloadTable===void 0?(et.argCount=w-2,ge[T]=et):ge[T].overloadTable[w-2]=et,[]}),[]})},u:function(S,T){Gt(S,{name:T=Wt(T),fromWireType:function(w){var L=zs.toValue(w);return qs(w),L},toWireType:function(w,L){return zs.toHandle(L)},argPackAdvance:8,readValueFromPointer:Qo,destructorFunction:null})},k:function(S,T,w){var L=Ae(w);Gt(S,{name:T=Wt(T),fromWireType:function($){return $},toWireType:function($,j){return j},argPackAdvance:8,readValueFromPointer:dm(T,L),destructorFunction:null})},b:function(S,T,w,L,$){T=Wt(T),$===-1&&($=4294967295);var j=Ae(w),X=q=>q;if(L===0){var K=32-8*w;X=q=>q<<K>>>K}var ie=T.includes("unsigned");Gt(S,{name:T,fromWireType:X,toWireType:ie?function(q,Ee){return this.name,Ee>>>0}:function(q,Ee){return this.name,Ee},argPackAdvance:8,readValueFromPointer:um(T,j,L!==0),destructorFunction:null})},a:function(S,T,w){var L=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][T];function $(j){var X=ae,K=X[j>>=2],ie=X[j+1];return new L(X.buffer,ie,K)}Gt(S,{name:w=Wt(w),fromWireType:$,argPackAdvance:8,readValueFromPointer:$},{ignoreDuplicateRegistrations:!0})},j:function(S,T){var w=(T=Wt(T))==="std::string";Gt(S,{name:T,fromWireType:function(L){var $,j=ae[L>>2],X=L+4;if(w)for(var K=X,ie=0;ie<=j;++ie){var q=X+ie;if(ie==j||N[q]==0){var Ee=lm(K,q-K);$===void 0?$=Ee:($+="\0",$+=Ee),K=q+1}}else{var He=new Array(j);for(ie=0;ie<j;++ie)He[ie]=String.fromCharCode(N[X+ie]);$=He.join("")}return pr(L),$},toWireType:function(L,$){var j;$ instanceof ArrayBuffer&&($=new Uint8Array($));var X=typeof $=="string";X||$ instanceof Uint8Array||$ instanceof Uint8ClampedArray||$ instanceof Int8Array||fe("Cannot pass non-string to std::string"),j=w&&X?(He=>{for(var De=0,ge=0;ge<He.length;++ge){var Ve=He.charCodeAt(ge);Ve<=127?De++:Ve<=2047?De+=2:Ve>=55296&&Ve<=57343?(De+=4,++ge):De+=3}return De})($):$.length;var K=ma(4+j+1),ie=K+4;if(ae[K>>2]=j,w&&X)((He,De,ge,Ve)=>{if(!(Ve>0))return 0;for(var dt=ge,et=ge+Ve-1,St=0;St<He.length;++St){var tt=He.charCodeAt(St);if(tt>=55296&&tt<=57343&&(tt=65536+((1023&tt)<<10)|1023&He.charCodeAt(++St)),tt<=127){if(ge>=et)break;De[ge++]=tt}else if(tt<=2047){if(ge+1>=et)break;De[ge++]=192|tt>>6,De[ge++]=128|63&tt}else if(tt<=65535){if(ge+2>=et)break;De[ge++]=224|tt>>12,De[ge++]=128|tt>>6&63,De[ge++]=128|63&tt}else{if(ge+3>=et)break;De[ge++]=240|tt>>18,De[ge++]=128|tt>>12&63,De[ge++]=128|tt>>6&63,De[ge++]=128|63&tt}}De[ge]=0})($,N,ie,j+1);else if(X)for(var q=0;q<j;++q){var Ee=$.charCodeAt(q);Ee>255&&(pr(ie),fe("String has UTF-16 code units that do not fit in 8 bits")),N[ie+q]=Ee}else for(q=0;q<j;++q)N[ie+q]=$[q];return L!==null&&L.push(pr,K),K},argPackAdvance:8,readValueFromPointer:Qo,destructorFunction:function(L){pr(L)}})},g:function(S,T,w){var L,$,j,X,K;w=Wt(w),T===2?(L=mm,$=xr,X=Js,j=()=>W,K=1):T===4&&(L=md,$=hm,X=uo,j=()=>ae,K=2),Gt(S,{name:w,fromWireType:function(ie){for(var q,Ee=ae[ie>>2],He=j(),De=ie+4,ge=0;ge<=Ee;++ge){var Ve=ie+4+ge*T;if(ge==Ee||He[Ve>>K]==0){var dt=L(De,Ve-De);q===void 0?q=dt:(q+="\0",q+=dt),De=Ve+T}}return pr(ie),q},toWireType:function(ie,q){typeof q!="string"&&fe(`Cannot pass non-string to C++ string type ${w}`);var Ee=X(q),He=ma(4+Ee+T);return ae[He>>2]=Ee>>K,$(q,He+4,Ee+T),ie!==null&&ie.push(pr,He),He},argPackAdvance:8,readValueFromPointer:Qo,destructorFunction:function(ie){pr(ie)}})},n:function(S,T){Gt(S,{isVoid:!0,name:T=Wt(T),argPackAdvance:0,fromWireType:function(){},toWireType:function(w,L){}})},e:function(S,T,w,L){var $,j;(S=Xs[S])(T=zs.toValue(T),w=(j=hd[$=w])===void 0?Wt($):j,null,L)},l:qs,h:function(S,T){var w=(function(dt,et){for(var St=new Array(dt),tt=0;tt<dt;++tt)St[tt]=ca(ae[et+4*tt>>2],"parameter "+tt);return St})(S,T),L=w[0],$=L.name+"_$"+w.slice(1).map(function(dt){return dt.name}).join("_")+"$",j=da[$];if(j!==void 0)return j;for(var X=["retType"],K=[L],ie="",q=0;q<S-1;++q)ie+=(q!==0?", ":"")+"arg"+q,X.push("argType"+q),K.push(w[1+q]);var Ee="return function "+oi("methodCaller_"+$)+`(handle, name, destructors, args) {
|
|
87
|
-
`,He=0;for(q=0;q<S-1;++q)Ee+=" var arg"+q+" = argType"+q+".readValueFromPointer(args"+(He?"+"+He:"")+`);
|
|
88
|
-
`,He+=w[q+1].argPackAdvance;for(Ee+=" var rv = handle[name]("+ie+`);
|
|
89
|
-
`,q=0;q<S-1;++q)w[q+1].deleteObject&&(Ee+=" argType"+q+".deleteObject(arg"+q+`);
|
|
90
|
-
`);L.isVoid||(Ee+=` return retType.toWireType(destructors, rv);
|
|
91
|
-
`),Ee+=`};
|
|
92
|
-
`,X.push(Ee);var De,ge,Ve=ad(Function,X).apply(null,K);return De=Ve,ge=Xs.length,Xs.push(De),j=ge,da[$]=j,j},f:()=>{Ar("")},c:pd,t:(S,T,w)=>N.copyWithin(S,T,T+w),s:S=>{N.length,Ar("OOM")},i:(S,T,w,L)=>{for(var $=0,j=0;j<w;j++){var X=ae[T>>2],K=ae[T+4>>2];T+=8;for(var ie=0;ie<K;ie++)fd(S,N[X+ie]);$+=K}return ae[L>>2]=$,0}},pr=((function(){var S,T,w,L,$={a:Ys};function j(X,K){var ie,q,Ee=X.exports;return I=(R=Ee).v,ie=I.buffer,o.HEAP8=y=new Int8Array(ie),o.HEAP16=P=new Int16Array(ie),o.HEAP32=G=new Int32Array(ie),o.HEAPU8=N=new Uint8Array(ie),o.HEAPU16=W=new Uint16Array(ie),o.HEAPU32=ae=new Uint32Array(ie),o.HEAPF32=ke=new Float32Array(ie),o.HEAPF64=Me=new Float64Array(ie),Y=R.z,q=R.w,ea.unshift(q),(function(){if(ti--,o.monitorRunDependencies&&o.monitorRunDependencies(ti),ti==0&&(ra!==null&&(clearInterval(ra),ra=null),jo)){var He=jo;jo=null,He()}})(),Ee}if(ti++,o.monitorRunDependencies&&o.monitorRunDependencies(ti),o.instantiateWasm)try{return o.instantiateWasm($,j)}catch(X){_("Module.instantiateWasm callback failed with error: "+X),r(X)}(S=p,T=re,w=$,L=function(X){j(X.instance)},S||typeof WebAssembly.instantiateStreaming!="function"||Ws(T)||typeof fetch!="function"?ri(T,w,L):fetch(T,{credentials:"same-origin"}).then(X=>WebAssembly.instantiateStreaming(X,w).then(L,function(K){return _("wasm streaming compile failed: "+K),_("falling back to ArrayBuffer instantiation"),ri(T,w,L)}))).catch(r)})(),S=>(pr=R.x)(S)),ma=S=>(ma=R.y)(S),gd=S=>(gd=R.A)(S),ha=(o.__embind_initialize_bindings=()=>(o.__embind_initialize_bindings=R.B)(),S=>(ha=R.C)(S));o.dynCall_jiji=(S,T,w,L,$)=>(o.dynCall_jiji=R.D)(S,T,w,L,$);function Ed(){function S(){Qs||(Qs=!0,o.calledRun=!0,Or||(Ai(ea),e(o),o.onRuntimeInitialized&&o.onRuntimeInitialized(),(function(){if(o.postRun)for(typeof o.postRun=="function"&&(o.postRun=[o.postRun]);o.postRun.length;)Zc(o.postRun.shift());Ai(ta)})()))}ti>0||((function(){if(o.preRun)for(typeof o.preRun=="function"&&(o.preRun=[o.preRun]);o.preRun.length;)Yc(o.preRun.shift());Ai(Ye)})(),ti>0||(o.setStatus?(o.setStatus("Running..."),setTimeout(function(){setTimeout(function(){o.setStatus("")},1),S()},1)):S()))}if(jo=function S(){Qs||Ed(),Qs||(jo=S)},o.preInit)for(typeof o.preInit=="function"&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();return Ed(),t.ready}})();var V_=(i=>(i.ROOM_DESTROY="1",i.JOIN_START="21",i.JOIN_SCHEDULE_SUCCESS="22",i.JOIN_SIGNAL_CONNECTION_START="23",i.JOIN_SIGNAL_CONNECTION_END="24",i.JOIN_SEND_CMD="25",i.JOIN_RECEIVED_CMD_RES="26",i.JOIN_SUCCESS="27",i.JOIN_FAILED="28",i.LEAVE_START="51",i.LEAVE_SEND_CMD="52",i.LEAVE_SUCCESS="53",i.PUBLISH_START="61",i.SEND_FIRST_VIDEO_FRAME="62",i.PUBLISH_FAILED="63",i.SUBSCRIBE_START="81",i.SUBSCRIBE_SUCCESS="82",i.SUBSCRIBE_FAILED="84",i.UNSUBSCRIBE_SUCCESS="83",i.LOCAL_TRACK_CAPTURE_START="101",i.LOCAL_TRACK_CAPTURE_SUCCESS="102",i.LOCAL_TRACK_CAPTURE_FAILED="103",i.LOCAL_TRACK_PUBLISHED="104",i.LOCAL_TRACK_UNPUBLISHED="105",i.LOCAL_TRACK_REPLACED="106",i.SWITCH_DEVICE_SUCCESS="107",i.TRACK_MUTED="108",i.TRACK_UNMUTED="109",i.REMOTE_TRACK_SUBSCRIBED="110",i.REMOTE_TRACK_UNSUBSCRIBED="111",i.LOCAL_TRACK_RECAPTURE="112",i.LOCAL_AUDIO_STARTED="113",i.LOCAL_AUDIO_STOPPED="114",i.REMOTE_AUDIO_STARTED="115",i.REMOTE_AUDIO_STOPPED="116",i.PLAY_TRACK_START="151",i.PLAYER_STATE_CHANGED="152",i.VIDEO_LOADED_DATA="153",i.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",i.AUDIO_CONTEXT_LONG_SUSPENDED="155",i.REMOTE_VIDEO_PLAY_START="156",i.REMOTE_VIDEO_PLAY_FINISH="157",i.SIGNAL_CONNECTION_STATE_CHANGED="201",i.PEER_CONNECTION_STATE_CHANGED="202",i.SINGLE_CONNECTION_STAT="203",i.SPC_RECONNECTED="204",i.HEARTBEAT_REPORT="251",i.RECEIVED_PUBLISHED_USER_LIST="252",i.REMOTE_PUBLISH_STATE_CHANGED="253",i.AUDIO_LEVEL_INTERVAL="260",i.NETWORK_QUALITY="261",i.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",i.QUALITY_LIMITATION_CHANGED="263",i.LOG="264",i.AUDIO_PROCESSOR_DEBUG="265",i.SSO_SWITCH="266",i.SEI_MESSAGE="267",i.USER_PAUSE_IN_PIP="268",i.USER_RESUME_IN_PIP="269",i.ENTER_PICTURE_IN_PICTURE="270",i.LEAVE_PICTURE_IN_PICTURE="271",i.SWITCH_ROOM_START="401",i.SWITCH_ROOM_SUCCESS="407",i.SWITCH_ROOM_FAILED="408",i))(V_||{}),Lb="5.0.0",xb=typeof importScripts!="undefined",kb=typeof registerProcessor!="undefined",Ub="",Vb="web.sdk.qcloud.com",Fb=`https://${Vb}/trtc/webrtc/doc`,mV=`${Fb}/zh-cn/`,Bb="https://yun.tim.qq.com",$b="https://apisgp.my-imcloud.com",Hb={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},ks=(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))(ks||{});var F_={"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}},hV=F_["480p_2"],pV=F_["120p_2"],Sl={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",LOADSTART:"loadstart",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",FULLSCREEN_CHANGE:"fullscreenchange",RESIZE:"resize",TIME_UPDATE:"timeupdate"},fV=Sl.MAIN,gV=Sl.AUXILIARY,EV=Sl.BIG,_V=Sl.SMALL;var TV=Object.keys(ks);var Wb=function(i,t,e,r){return new(e||(e=Promise))(function(o,s){function n(l){try{d(r.next(l))}catch(p){s(p)}}function a(l){try{d(r.throw(l))}catch(p){s(p)}}function d(l){var p;l.done?o(l.value):(p=l.value,p instanceof e?p:new e(function(f){f(p)})).then(n,a)}d((r=r.apply(i,t||[])).next())})},ef=Symbol(32),tf=Symbol(16),rf=Symbol(8),zn=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 Wb(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(ef)}readU16(){return this.read(tf)}readU8(){return this.read(rf)}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===ef){if(r(4))return;i=t[0]<<24|t[1]<<16|t[2]<<8|t[3]}else if(this.need===tf){if(r(2))return;i=t[0]<<8|t[1]}else if(this.need===rf){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}};zn.U32=ef,zn.U16=tf,zn.U8=rf;var Gb=128,jb=127,IV=~jb,SV=Math.pow(2,31);function Jp(i){let t=new zn;for(;i>=128;)t.malloc(1)[0]=255&i|Gb,i>>>=7;return t.malloc(1)[0]=255&i,t.buffer||new Uint8Array(0)}function of(i,t=0){let e=new zn,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(Jp(i));break;case"string":e.malloc(1)[0]=2|r;let s=new TextEncoder().encode(i);e.write(Jp(s.length));let n=e.malloc(s.length);for(let d=0;d<s.length;d++)n[d]=s[d];break;case"object":let a=new zn;if(Array.isArray(i))for(let d=0;d<i.length;d++){let l=of(i[d],d+1);l&&a.write(l)}else{let d=1;for(let l in i){let p=of(i[l],d++);p&&a.write(p)}}t===0?a.buffer&&e.write(a.buffer):(e.malloc(1)[0]=2|r,a.buffer&&(e.write(Jp(a.buffer.length)),e.write(a.buffer)))}return e.buffer||new Uint8Array(0)}var A_=class{constructor(){st(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(255&i)}writeInt16(i){this.buffer.push(i>>>8&255),this.buffer.push(255&i)}writeByte(i){this.buffer.push(255&i)}writeBytes(i){for(let t=0;t<i.length;t++)this.buffer.push(i[t])}};function y_(i,t,e){i[e]=t>>>24&255,i[e+1]=t>>>16&255,i[e+2]=t>>>8&255,i[e+3]=255&t}function cr(i,t){return i[t]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3]}function b_(i,t){return i[t]}function vc(i,t,e){return new TextDecoder().decode(qb(i,t,e))}function qb(i,t,e){return i.slice(t,t+e)}var Xp=0,sf=2654435769,nf=16,R_=4,Pc=2,Lc=7;function zb(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 Jb(i,t){let e=new A_,r=zb(t,i,Xp);Xp=Xp+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 A_;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(255&r.reqHead.appId);for(let W=4;W<16;W++)n.writeByte(0);let a=new TextEncoder().encode(r.reqHead.a2);n.writeInt32(a.length+4),a.length&&n.writeBytes(a);let d=new TextEncoder().encode(r.reqHead.serviceCmd);n.writeInt32(d.length+4),d.length&&n.writeBytes(d);let l=new TextEncoder().encode(r.reqHead.cookie);n.writeInt32(l.length+4),l.length&&n.writeBytes(l);let p=new TextEncoder().encode(r.reqHead.imei);n.writeInt32(p.length+4),p.length&&n.writeBytes(p);let f=new TextEncoder().encode(r.reqHead.ksid);n.writeInt32(f.length+4),f.length&&n.writeBytes(f);let _=new TextEncoder().encode(r.reqHead.clientVersionInfo);n.writeInt16(_.length+2),_.length&&n.writeBytes(_);let I=n.length;n.data[0]=I>>>24&255,n.data[1]=I>>>16&255,n.data[2]=I>>>8&255,n.data[3]=255&I,af(i)&&(i=new TextEncoder().encode(i)),n.writeInt32(i.length+4),i.length&&n.writeBytes(i);let R=new Uint8Array(n.data),y=null;r.encryption===1?y=new TextEncoder().encode(r.uin):r.encryption===2&&(y=new Uint8Array(16)),y&&(R=Xb(R,y)),e.writeBytes(R);let N=new Uint8Array(e.data),P=N.length;return N[0]=P>>>24&255,N[1]=P>>>16&255,N[2]=P>>>8&255,N[3]=255&P,N}function Xb(i,t){let e=i.length,r=(e+1+Pc+Lc)%8;r&&(r=8-r);let o=new Uint8Array(e+1+Pc+Lc+r),s=0,n=new Uint8Array(8),a=new Uint8Array(8),d=new Uint8Array(8),l=0;n[0]=248&Math.floor(256*Math.random())|r,l=1;for(let f=0;f<r;f++)n[l]=255&Math.floor(256*Math.random()),l+=1;for(let f=0;f<Pc;)if(l<8&&(n[l]=255&Math.floor(256*Math.random()),l+=1,f+=1),l===8){Qp(n,t,a,d,o,s),s+=8,l=0;for(let _=0;_<8;_++)d[_]=o[s-8+_]}let p=0;for(;p<e;)if(l<8&&(n[l]=i[p],l+=1,p+=1),l===8){Qp(n,t,a,d,o,s),s+=8,l=0;for(let f=0;f<8;f++)d[f]=o[s-8+f]}for(let f=0;f<Lc;)if(l<8&&(n[l]=0,l+=1,f+=1),l===8){Qp(n,t,a,d,o,s),s+=8,l=0;for(let _=0;_<8;_++)d[_]=o[s-8+_]}return o}function Qp(i,t,e,r,o,s){for(let n=0;n<8;n++)i[n]^=r[n];Qb(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 Qb(i,t,e,r){let o=cr(i,0),s=cr(i,4),n=[];for(let d=0;d<4;d++)n[d]=cr(t,4*d);let a=0;for(let d=0;d<nf;d++)a+=sf,a>>>=0,o+=(s<<4)+n[0]^s+a^(s>>>5)+n[1],o>>>=0,s+=(o<<4)+n[2]^o+a^(o>>>5)+n[3],s>>>=0;y_(e,o,r),y_(e,s,r+4)}var Yb=0,B_=function(){return Date.now()+Yb},Zb=function(){let i=new Date;return i.setTime(B_()),i.toLocaleString()},Kb=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}`};function eR(i){let t=tR(i);return t==null?void 0:t.busiBuff}function tR(i){try{let t={},e=0;t.totalLength=cr(i,e),e+=4,t.version=cr(i,e),e+=4,t.encryption=b_(i,e),e+=1,t.uinType=b_(i,e),e+=1,t.uinLength=cr(i,e),e+=4,t.uin=t.uinLength>4?vc(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=rR(r,o),t.decrypted=!0,e=0}else i=r,e=0;return t.rspHeadLength=cr(i,e),e+=4,t.seqNo=cr(i,e),e+=4,t.retCode=cr(i,e),e+=4,t.retStrLength=cr(i,e),e+=4,t.retStr=t.retStrLength?vc(i,e,t.retStrLength-4):"",e+=t.retStrLength-4,t.serviceCmdLength=cr(i,e),e+=4,t.serviceCmd=t.serviceCmdLength?vc(i,e,t.serviceCmdLength-4):"",e+=t.serviceCmdLength-4,t.cookieLength=cr(i,e),e+=4,t.cookie=t.cookieLength?vc(i,e,t.cookieLength-4):"",e+=t.cookieLength-4,t.flag=cr(i,e),e+=4,t.busiBuffLength=cr(i,e),e+=4,t.busiBuff=t.busiBuffLength?vc(i,e,t.busiBuffLength-4):"",e+=t.busiBuffLength-4,t}catch(t){}}function $_(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>>>=0,r>>>=0;let o=sf*nf>>>0;for(let s=0;s<nf;s++)r-=(e<<R_)+t[2]^e+o^(e>>>5)+t[3],r>>>=0,e-=(r<<R_)+t[0]^r+o^(r>>>5)+t[1],e>>>=0,o-=sf,o>>>=0;return new Uint8Array([e>>>24&255,e>>>16&255,e>>>8&255,255&e,r>>>24&255,r>>>16&255,r>>>8&255,255&r])}function rR(i,t){let e=0,r=new Uint8Array(8).fill(0),o=$_(new Uint8Array(i.slice(0,8)),t),s=7&o[0],n=i.length-1-s-Pc-Lc,a=new Uint8Array(n),d=0,l=r,p=i.slice(0,8);e=8;let f=1;f+=s;for(let I=1;I<=Pc;)if(f<8)f++,I++;else if(f===8){let R=Yp(i,e,l,p,o,t);l=R.ivPreCrypt,p=R.ivCurCrypt,o=R.debiBuf,e=R.bufPos,f=0}let _=n;for(;_>0;)if(f<8)a[d++]=o[f]^l[f],f++,_--;else if(f===8){let I=Yp(i,e,l,p,o,t);l=I.ivPreCrypt,p=I.ivCurCrypt,o=I.debiBuf,e=I.bufPos,f=0}for(let I=1;I<=Lc;)if(f<8)o[f],l[f],f++,I++;else if(f===8){if(e>=i.length)break;let R=Yp(i,e,l,p,o,t);if(!R.success)break;l=R.ivPreCrypt,p=R.ivCurCrypt,o=R.debiBuf,e=R.bufPos,f=0}return a}function Yp(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),d=new Uint8Array(8);for(let l=0;l<8;l++)d[l]=o[l]^a[l];return{success:!0,ivPreCrypt:n,ivCurCrypt:a,debiBuf:$_(d,s),bufPos:t+8}}var v_=typeof TextDecoder!="undefined"?new TextDecoder:void 0;function iR({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(d=>d.clone().json().then(l=>({data:l}),()=>d.arrayBuffer().then(l=>({data:eR(new Uint8Array(l))||(v_?v_.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 d=JSON.parse(a.response);s({data:d})}catch(d){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)})}var oR=Object.prototype.hasOwnProperty,Cc=i=>typeof i=="function",jn=i=>i===void 0,sR=i=>typeof i=="boolean",nR=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 aR(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(nR(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(oR.call(i,t))return!1;return!0}return!1}var cR=0,dR=1,C_=2;function uR({retryFunction:i,settings:t,onError:e,onRetrying:r,onRetryFailed:o,onRetrySuccess:s,context:n}){return function(...a){let{retries:d=5,timeout:l=1e3}=t,p=0,f=-1,_=cR,I=(R,y)=>b(this,null,function*(){let N=n||this;try{let P=yield i.apply(N,a);p>0&&s&&s.call(this,p),p=0,R(P)}catch(P){let W=()=>{clearTimeout(f),p=0,_=C_,y(P)},G=()=>{_!==C_&&p<(Cc(d)?d():d)?(p++,_=dR,Cc(r)&&r.call(this,p,W),f=window.setTimeout(()=>{f=-1,I(R,y)},Cc(l)?l(p):l)):(W(),Cc(o)&&o.call(this,P))};Cc(e)?e.call(this,{error:P,retry:G,reject:y,retryFuncArgs:a,retriedCount:p}):G()}});return new Promise(I)}}var lR=uR,Zp=class H_{constructor(t){st(this,"_parentPath"),st(this,"userId"),st(this,"remoteUserId"),st(this,"id"),st(this,"sdkAppId"),st(this,"type"),st(this,"isLocal"),this.id=t.id,this.userId=t.userId,this.sdkAppId=t.sdkAppId,this.remoteUserId=t.remoteUserId,this.isLocal=!sR(t.isLocal)||t.isLocal,this.type=this.isLocal?"":t.type}getFullId(){return this._parentPath&&this.id?`${this._parentPath}-${this.id}`:this._parentPath?this._parentPath:this.id}createChild(t){let e=new H_({id:t.id,userId:jn(t.userId)?this.userId:t.userId,sdkAppId:jn(t.sdkAppId)?this.sdkAppId:t.sdkAppId,type:jn(t.type)?this.type:t.type,isLocal:jn(t.isLocal)?this.isLocal:t.isLocal,remoteUserId:jn(t.remoteUserId)?this.remoteUserId:t.remoteUserId});return e.bindParent(this),e}bindParent(t){let e=t.getFullId();this._parentPath!==e&&(this.debug(`bind logger parent: ${t.id}`),this._parentPath=e,this.userId=t.userId||this.userId,this.sdkAppId=t.sdkAppId||this.sdkAppId)}setUserId(t){this.userId=t}setSdkAppId(t){this.sdkAppId=t}log(t,e){let r=this.isLocal?this.userId:this.remoteUserId,o=this.getFullId();e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${o}${r?`|${r}`:""}]`),qR.log(t,e,jn(this.userId)||aR(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)}},Ti=typeof navigator=="undefined"?"":navigator.userAgent,ve=i=>new RegExp(i,"i").test(Ti),Rt=i=>{if(ve(i)){let t=new RegExp(`${i}\\/([\\d.]+)`),e=Ti.match(t);if(e&&e[1])return e[1]}return""},Al=i=>{if(ve(i)){let t=new RegExp(`${i}\\/(\\d+)`),e=Ti.match(t);if(e&&e[1])return parseFloat(e[1])}return NaN},N_=/AppleWebKit\/([\d.]+)/i.exec(Ti),mR=N_?parseFloat(N_[1]):NaN,W_=ve("iPad"),G_=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&ve("Macintosh"),j_=ve("iPhone")&&!W_,hR=ve("iPod"),df=j_||W_||hR||G_,xc=ve("Android"),q_=(function(){if(xc){let i=Ti.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})(),AV=xc&&ve("webkit")&&q_<2.3,yV=xc&&q_<5&&mR<537,pR=ve("Firefox"),fR=Rt("Firefox"),bV=Al("Firefox"),z_=ve("Edge"),gR=Rt("Edge"),J_=ve("Edg"),ER=Rt("Edg"),RV=Al("Edg"),X_=ve("SogouMobileBrowser"),_R=Rt("SogouMobileBrowser"),Q_=ve("MetaSr\\s"),TR=Rt("MetaSr\\s"),Us=ve("TBS"),IR=Rt("TBS"),Y_=ve("XWEB"),SR=Rt("XWEB"),vV=ve("MSIE\\s8\\.0"),AR=ve("MSIE\\/\\d+"),CV=(function(){if(AR){let i=/MSIE\s(\d+)\.\d/.exec(Ti),t=i&&parseFloat(i[1]);return!t&&/Trident\/7.0/i.test(Ti)&&/rv:11.0/.test(Ti)&&(t=11),t}return NaN})(),yR=ve("(micromessenger|webbrowser)"),bR=Rt("MicroMessenger"),uf=!Us&&ve("MQQBrowser")&&ve("COVC"),lf=!Us&&ve("MQQBrowser")&&!ve("COVC"),D_=lf||uf?Rt("MQQBrowser"):"",Z_=!Us&&ve(" QQBrowser"),RR=Rt(" QQBrowser"),K_=!Us&&ve("QQBrowserLite"),vR=Rt("QQBrowserLite"),eT=!Us&&ve("MQBHD"),CR=Rt("MQBHD"),NV=ve("Windows"),DV=!df&&ve("MAC OS X"),wV=!xc&&ve("Linux"),MV=ve("CrOS"),OV=ve("MicroMessenger"),PV=ve("UCBrowser"),LV=ve("Electron"),tT=ve("MiuiBrowser"),NR=Rt("MiuiBrowser"),rT=ve("HuaweiBrowser"),xV=ve("Huawei")||ve("HUAWEI"),kV=ve("Honor")||ve("HONOR"),DR=Rt("HuaweiBrowser"),iT=ve("SamsungBrowser"),wR=Rt("SamsungBrowser"),oT=ve("HeyTapBrowser"),MR=Rt("HeyTapBrowser"),sT=ve("VivoBrowser"),OR=Rt("VivoBrowser"),UV=ve("OpenHarmony"),VV=Rt("OpenHarmony"),PR=()=>Al("Chrome"),w_=ve("CriOS"),mf=ve("Chrome"),LR=!z_&&!Q_&&!X_&&!Us&&!Y_&&!J_&&!Z_&&!tT&&!rT&&!iT&&!oT&&!sT&&mf,xR=ve("HeadlessChrome"),M_=PR(),FV=mf&&M_>=128&&M_<=143,kR=Rt("Chrome"),BV=Al("Electron"),UR=!mf&&!lf&&!uf&&!K_&&!eT&&ve("Safari"),nT=Rt("Version"),$V=/Android.*(wv|.0.0.0)/.test(Ti),aT=(()=>{if(G_)return nT;if(df){let i=Ti.match(/OS (\d+)_(\d+)/i);if(i&&i[1]){let t=i[1];return i[2]&&(t+=`.${i[2]}`),t}}return""})(),HV=Number(aT.split(".")[0]),WV=(()=>{let i=Number(aT.split(".")[0]);return i===14||i===13})(),GV=typeof location!="undefined"&&(location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1"),jV=VR();function VR(){let i=new Map([[pR,["Firefox",fR]],[J_,["Edg",ER]],[LR,["Chrome",kR]],[w_,["ChiOS",Rt("CriOS")]],[UR&&!w_,["Safari",nT]],[Us,["TBS",IR]],[Y_,["XWEB",SR]],[yR&&j_,["WeChat",bR]],[Z_,["QQ(Win)",RR]],[lf,["QQ(Mobile)",D_]],[uf,["QQ(Mobile X5)",D_]],[K_,["QQ(Mac)",vR]],[eT,["QQ(iPad)",CR]],[tT,["MI",NR]],[rT,["HW",DR]],[iT,["Samsung",wR]],[oT,["OPPO",MR]],[sT,["VIVO",OR]],[z_,["EDGE",gR]],[X_,["SogouMobile",_R]],[Q_,["Sogou",TR]]]),t="unknown",e="unknown";return i.has(!0)&&([t,e]=i.get(!0)),{name:t,version:e}}var FR=k_(U_(),1),BR=new FR.default,ko=BR,El=V_,$R=class{constructor(){st(this,"enable",!1),st(this,"ssoFailCount",0),ko.on("22",({schedule:i})=>{var t;(t=i==null?void 0:i.config)!=null&&t.sso&&ko.emit("266",{enable:!0})}),ko.on("266",({enable:i})=>{this.enable=i})}handleUploadFailed(){this.ssoFailCount++,this.ssoFailCount>3&&ko.emit("266",{enable:!1})}},O_=new $R,HR="%cTRTC%c%s",WR="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",GR="display: inline",cT=class dT{constructor(){st(this,"_isEnableUploadLog",!0),st(this,"_localJoinedUser",new Map),st(this,"_queue",[]),st(this,"_timeoutId",-1),st(this,"_logLevel",1),st(this,"_logLevelToUpload",2),xb||kb||(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){ko.on(El.JOIN_SCHEDULE_SUCCESS,({schedule:t})=>{var e;(e=t==null?void 0:t.config)!=null&&e.logLevelToUpload&&ks[t.config.logLevelToUpload]&&(this._logLevelToUpload=t.config.logLevelToUpload)}),ko.on(El.JOIN_START,({params:t})=>{this.addJoinedUser({userId:t.userId,sdkAppId:t.sdkAppId}),this.startUpload()}),ko.on(El.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(af(r.userId)&&XR(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 b(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:d}=o[s],l={timestamp:Zb(),sdkAppId:String(a),userId:n,version:Lb,log:d.map(_=>_.log).join(`
|
|
93
|
-
`)},p=JSON.stringify(l),f=O_.enable?ZR(l,2002,a):p;yield this.uploadLogWithRetry(f,a,f instanceof Uint8Array,p),d.forEach(_=>_.uploaded=!0)}}catch(o){}let r=e.filter(o=>!o.uploaded);r.length>0&&(this._queue=r.concat(this._queue))})}uploadLogWithRetry(t,e,r,o){return lR({retryFunction:()=>iR({url:JR(e,Hb.LOG),body:t,timeout:5e3,priority:"low"}).then(s=>{r&&s.data!=="ok"&&(O_.handleUploadFailed(),this.uploadLogWithRetry(o,e,!1,o))}),settings:{retries:3,timeout:2e3},onError:({retry:s})=>{s()}})()}getPrefix(t){let e=new Date;return e.setTime(B_()),`[${Kb(e)}] <${ks[t]}>`}getLogLevel(){return this._logLevel}setLogLevel(t){uT(ks[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(af(t))return t;try{return t instanceof Error?t.toString():JSON.stringify(t)}catch(e){return""}}addLogToQueue(t,e,r=!0,o,s){let n={log:e.reduce((a,d)=>`${a} ${this.logChunkToString(d)}`.trim(),""),level:t,userId:o,sdkAppId:s,forAllJoinedClients:r};ko.emit(El.LOG,{log:n}),this._isEnableUploadLog&&t>=this._logLevelToUpload&&this._queue.push(n)}log(t,e,r=!0,o,s){var n;if(e.unshift(this.getPrefix(t)),this.addLogToQueue(t,e,r,o,s),t<this._logLevel)return;let a=((n=ks[t])==null?void 0:n.toLowerCase())||"info";dT.PRINT_LOG_TAG?console[a](HR,WR,GR,...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){if(t.parent instanceof Zp){let e=t,{parent:r}=e,o=yb(e,["parent"]),s=new Zp(o);return s.bindParent(r),s}return new Zp(t)}checkURLParam(){let t=new URLSearchParams(location.search).get("logLevelToUpload"),e=t?Number(t):-1;ks[e]&&(this._logLevelToUpload=e)}getQueue(){return this._queue}};st(cT,"PRINT_LOG_TAG",!(df||xc||xR));var jR=cT,qR=new jR,zR=i=>Number(i)<14e8,JR=function(i,t){let e;return e=Ub||(zR(i)?$b:Bb),`${e}/v5/AVQualityReportSvc/C2S?random=${Math.floor(Math.random()*ni(2,31))}&sdkappid=${i}&cmdtype=${t}`},qV=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},uT=i=>i===void 0,af=i=>typeof i=="string",XR=i=>typeof i=="number",zV=typeof HTMLMediaElement!="undefined"&&"setSinkId"in HTMLMediaElement.prototype;function QR(){return performance&&performance.now?Math.floor(performance.now()):Date.now()}var{toString:JV}=Object.prototype;function YR(i,t,e,r){let o={data:i,random:Math.floor(Math.random()*2147483648),sdkAppId:e};return uT(r)||(o=wc(Dc({},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 ZR(i,t,e,r){try{let o=YR(i,t,e,r);return Jb(of(o),e)}catch(o){return JSON.stringify(i)}}var lT=class mT{constructor(t){this.core=t,st(this,"contextMap",new Map),st(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 mT.Name}getValidateRule(t){return{type:this.core.enums.BASIC_TYPE.Object}}createDecoder(t,e){var r;switch(t){case"wasm":let s=((r=this.core.assetsPath)==null?void 0:r.replace(/\/+$/,""))||".";return new Pb(wc(Dc({},e),{wasmPath:`${s}/videodec.wasm`}));case"webCodecs":return new qn;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(wc(Dc({},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=QR()-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(wc(Dc({},t),{createDecoder:this.createDecoder})))):e.mock(this.core.enums.DECODE_FAILED_ERROR_CODE.TEST))}getRemoteTrackFreezeDuration(t,e){let r=this.core.room.badCaseDetector.getDataFreezeMap().get(`${t.userId}_${t.streamType}`),o=this.core.room.badCaseDetector.getRenderFreezeDuration(`${t.userId}_${t.streamType}`),s=0;return r&&r.durationItemList.forEach(n=>{n.startTime>e.startPerformanceTime&&(s+=n.getDuration())}),{renderFreezeTotal:o,dataFreezeTotal:s}}destroy(){this.core.innerEmitter.off("51",this.addKVReportBeforeExitRoom)}};st(lT,"Name","TRTCVideoDecoder");var hf=lT;var qT=ai(mi());function pf({timesInSecond:i,maxSizeInSecond:t,getSize:e}){return Pe((r,o)=>{let s=new WeakMap;return x.on(V.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 ce({code:z.INVALID_OPERATION,message:je({key:Ge.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 KR="2026-01-27 14:14:19",hT=!0,pT=function(){var i;if(hT){hT=!1,B.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${ir}/en/index.html`),console.info(`* Changelog: ${ir}/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:",ft),zr||B.debug("Build Time:",KR);let t=`UA: ${navigator.userAgent}
|
|
94
|
-
CPU core: ${navigator.hardwareConcurrency}, GPU: ${To()}`;if(it&&window.screen&&(window.screen.width||window.screen.height)){let r=`${window.screen.width}x${window.screen.height}@${window.devicePixelRatio}`;t+=`, screen: ${r}`}let e=navigator.deviceMemory;e&&(t+=`, minRAM: ${e}GB`),B.info(t),B.info(`URL: ${location.href}${((i=self.frameElement)==null?void 0:i.tagName)==="IFRAME"?" in iframe":""}`),gs().then(r=>{r&&B.info(Wr)})}};var Vs={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 oe={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},Sr=(U=>(U[U.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",U[U.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",U[U.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",U[U.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",U[U.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",U[U.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",U[U.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",U[U.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",U[U.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",U[U.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",U[U.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",U[U.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",U[U.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",U[U.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",U[U.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",U[U.INVALID_ROOM_ID_REQUIRED=5015]="INVALID_ROOM_ID_REQUIRED",U[U.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",U[U.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",U[U.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",U[U.INVALID_ROOM_ID_TYPE_MISMATCH=5019]="INVALID_ROOM_ID_TYPE_MISMATCH",U[U.INVALID_ROOM_ID_DUPLICATE=5020]="INVALID_ROOM_ID_DUPLICATE",U[U.INVALID_OPERATION=5100]="INVALID_OPERATION",U[U.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",U[U.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",U[U.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",U[U.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",U[U.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",U[U.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",U[U.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",U[U.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",U[U.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",U[U.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",U[U.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",U[U.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",U[U.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",U[U.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",U[U.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",U[U.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",U[U.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",U[U.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",U[U.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",U[U.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",U[U.DEVICE_ERROR=5300]="DEVICE_ERROR",U[U.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",U[U.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",U[U.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",U[U.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",U[U.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",U[U.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",U[U.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",U[U.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",U[U.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",U[U.NOT_SUPPORTED_MISMATCH_SAMPLE_RATE_IN_FIREFOX=5310]="NOT_SUPPORTED_MISMATCH_SAMPLE_RATE_IN_FIREFOX",U[U.SERVER_ERROR=5400]="SERVER_ERROR",U[U.NEED_TO_BUY=5401]="NEED_TO_BUY",U[U.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",U[U.OPERATION_FAILED=5500]="OPERATION_FAILED",U[U.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",U[U.REJOIN_FAILED=5502]="REJOIN_FAILED",U[U.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",U[U.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",U[U.VIDEO_ENCODE_FAILED=5505]="VIDEO_ENCODE_FAILED",U[U.AUDIO_ENCODE_FAILED=5506]="AUDIO_ENCODE_FAILED",U[U.VIDEO_DECODE_FAILED=5507]="VIDEO_DECODE_FAILED",U[U.AUDIO_DECODE_FAILED=5508]="AUDIO_DECODE_FAILED",U[U.OPERATION_ABORT=5998]="OPERATION_ABORT",U[U.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",U))(Sr||{});function gT({code:i,params:t,enableDocLink:e=!1}){let r="",o,s=Sr[i];try{o=fT[s]}catch(n){o=fT.UNKNOWN_ERROR}return Xe(o)?r=o(t):Oe(o)&&(r=o),t.fnName&&!r.includes(t.fnName)&&(r[r.length-1]!=="."&&(r+="."),r+=` thrown from ${t.fnName}()`),e&&(r+=" doc:"),r}var fT=Te(Q({},sr),{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: ${gt(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: ${gt(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=Fs(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=Fs(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=Fs(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=Fs(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=Fs(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=Fs(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=Fs(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 Fs(i){if(!i)return"camera";let t=i.toLowerCase();return t.includes("screen")?"screen share":t.includes("audio")?"microphone":"camera"}var ff=class i extends Error{constructor({code:e,extraCode:r,message:o="",messageParams:s,fnName:n="",originError:a,data:d}){var p;let l;o?l=o:l=gT({code:e===oe.SERVER_ERROR?e:r||e,params:Q({fnName:n,error:a},s)});super(l);m(this,"name","RtcError");m(this,"code");m(this,"extraCode");m(this,"functionName");m(this,"message");m(this,"data");m(this,"handler");m(this,"originError");this.name=Sr[e],this.code=e,this.extraCode=r,this.functionName=n,this.originError=a,this.message=l,this.data=d,this.extraCode===5302&&((p=this.originError)!=null&&p.message.includes("system"))&&(this.handler=()=>{let f={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},_={startLocalVideo:"webcam",startLocalAudio:"microphone"},I=document.createElement("a");ps?I.href=`ms-settings:privacy-${_[this.functionName]}`:jr&&(I.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${f[this.functionName]}`),I.href.length>0&&I.click()})}static convertFrom(e,r,o){let s=e;if(e instanceof ce){let{stack:n}=e,a={code:oe.UNKNOWN_ERROR,fnName:r,originError:e};switch(e.getCode()){case z.INVALID_PARAMETER:a.code=oe.INVALID_PARAMETER,a.message=e.message;break;case z.INVALID_OPERATION:a.code=oe.INVALID_OPERATION;break;case z.NOT_SUPPORTED:case z.NOT_SUPPORTED_H264:a.code=oe.ENV_NOT_SUPPORTED,e.getCode()===z.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes(sr.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case z.JOIN_ROOM_FAILED:a.messageParams={fnParams:o};case z.SERVER_TIMEOUT:case z.SWITCH_ROLE_FAILED:case z.SWITCH_ROOM_FAILED:a.code=oe.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case z.API_CALL_ABORTED:a.code=oe.OPERATION_ABORT;break;case z.DEVICE_NOT_FOUND:case z.DEVICE_AUTO_RECOVER_FAILED:case z.INITIALIZE_FAILED:a.code=5300,e.name&&(a.extraCode=ev(e.name));break;case z.VIDEO_ENCODE_FAILED:a.extraCode=5505;case z.AUDIO_ENCODE_FAILED:a.extraCode=5506,a.code=oe.OPERATION_FAILED;break;case z.UNKNOWN:break;default:a.code=oe.OPERATION_FAILED}s=new i(a),n&&(s.stack+=n.substr(n.indexOf(`
|
|
95
|
-
`)))}else{if(e instanceof i)return e;s=new i({code:oe.UNKNOWN_ERROR,fnName:r,originError:e})}return s}};function ev(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 ne=ff;function dr(i){return i==="sub"?"auxiliary":i==="auxiliary"?"sub":"main"}function kc(i){return i===Vs.QOS_PREFERENCE_CLEAR?"detail":i===Vs.QOS_PREFERENCE_SMOOTH?"motion":""}function Jn(i,t){let e=t?Am:ya;return Wm(i)?Q(Q({},e),i):Fr[i]?Fr[i]:e}var ET={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}}},_T={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}}},Xn={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(i,t,e){if(Oe(i)&&!document.getElementById(i))throw new ne({code:oe.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:t}})}},TT={name:"userId",required:!0,type:"string"},IT={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{type:["string","object"],properties:{bitrate:{type:"number"},channelCount:{type:"number"}}},echoCancellation:{values:[!0,!1,"remote-only","all"]},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function Qn(i,t){if(!i)throw new ne({code:oe.INVALID_OPERATION,extraCode:5101,fnName:t})}function ST(i,t,e){if(!i)throw new ne({code:oe.INVALID_OPERATION,extraCode:5102,fnName:t,messageParams:{value:e}})}function AT(i,t,e){if(!(/^[1-9]\d*$/.test(String(i))&&i<4294967295))throw new ne({code:oe.INVALID_PARAMETER,extraCode:5013,fnName:t,messageParams:{key:e}})}function yT(i,t,e){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(i))throw new ne({code:oe.INVALID_PARAMETER,extraCode:5012,fnName:t,messageParams:{key:e}})}var I1={type:"number",notLessThanZero:!0},tv=(i,t)=>i.width*i.height>=t.width*t.height&&i.frameRate>=t.frameRate&&i.bitrate>=t.bitrate;function bT(i){var r;if(!((r=i==null?void 0:i.option)!=null&&r.small))return;if(!Du()){B.warn("small stream is not supported"),delete i.option.small;return}let t=Jn(i.option.profile),e=Jn(i.option.small,!0);if(!tv(t,e)){B.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 rv={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 ne({code:oe.INVALID_OPERATION,extraCode:5104,fnName:e});if(i.roomId){if(Oe(i.roomId))throw new ne({code:oe.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:t}});AT(i.roomId,e,t)}else if(i.strRoomId)yT(i.strRoomId,e,t);else throw new ne({code:oe.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:Xn,mute:{type:["boolean","string"]},publish:{type:"boolean"},capture:{required:!1,type:"boolean"},option:ET},validate(i){var t,e;if(!((t=i==null?void 0:i.option)!=null&&t.videoTrack)&&Gi())throw new ne({code:oe.ENV_NOT_SUPPORTED,extraCode:5201});(e=i==null?void 0:i.option)!=null&&e.small&&bT(i)}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:Te(Q({},Xn),{required:!1}),publish:{type:"boolean"},capture:{required:!1,type:"boolean"},mute:{type:["boolean","string"]},option:ET},validate(i){var t;(t=i==null?void 0:i.option)!=null&&t.small&&bT(i)}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},mute:{type:["boolean","string"],values:[!0,!1,"microphone"]},muteKeepVolumeDetection:{type:"boolean"},option:IT},validate(i){var t;if(!((t=i==null?void 0:i.option)!=null&&t.audioTrack)&&Gi())throw new ne({code:oe.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:["boolean","string"],values:[!0,!1,"microphone"]},muteKeepVolumeDetection:{type:"boolean"},option:IT}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:Xn,publish:{type:"boolean"},option:_T},validate(i,t,e,r,o){var s;if(!((s=i==null?void 0:i.option)!=null&&s.videoTrack)){if(Gi())throw new ne({code:oe.ENV_NOT_SUPPORTED,extraCode:5201});if(!tc())throw new ne({code:oe.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:Xn,publish:{type:"boolean"},option:_T}},muteRemoteAudio:[TT,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[TT,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:Xn,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){Qn(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(ST(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new ne({code:oe.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:Te(Q({},Xn),{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){Qn(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(ST(!!r,e,i),r){if(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary)throw new ne({code:oe.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}});if(i.option){let o=i.streamType==="main"?r.remoteVideoTrack:r.remoteAuxiliaryTrack;if((i.option.pictureInPicture||i.option.fullScreen||i.option.fullScreen)&&(!o.isSubscribed||!o.player.isPlaying))throw new ne({code:oe.INVALID_OPERATION,message:"cannot set pictureInPicture or fullScreen when remote video is not playing"})}}}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(i,t,e){if(i.userId!=="*"&&O(i.streamType))throw new ne({code:oe.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(i,t,e){Qn(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(!ic)throw new ne({code:oe.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new ne({code:oe.INVALID_OPERATION,fnName:e,extraCode:5108});if(i.byteLength>1e3)throw new ne({code:oe.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new ne({code:oe.INVALID_PARAMETER,extraCode:5017,messageParams:{key:t},fnName:e});Qn(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 ne({code:oe.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 ne({code:oe.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new ne({code:oe.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:t}})}}},validate(i,t,e){if(Qn(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new ne({code:oe.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:t}})}},switchRoom:{name:"switchRoomConfig",type:"object",required:!0,validate(i,t,e){if(Qn(this._room.isJoined,e),this._room.useStringRoomId&&i.strRoomId===this._room.roomId||!this._room.useStringRoomId&&i.roomId===Number(this._room.roomId))throw new ne({code:oe.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 ne({code:oe.INVALID_PARAMETER,extraCode:5019,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(i.roomId)AT(i.roomId,e,t);else if(i.strRoomId)yT(i.strRoomId,e,t);else throw new ne({code:oe.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}}}},wt={TRTC:rv};var Qt=class extends Error{};function iv(i,t){let e=ns(i);for(let r=0;r<t.length;r++)$r(e[r],t[r]);return e}function ov(i){this._resolve=Promise.resolve(i)}function sv(i){this._reject=Promise.reject(i)}var Uo=class Uo{constructor(t,e){this.instance=t;this.group=e;m(this,"started",!1);m(this,"ops",[]);m(this,"startSame",()=>!0);m(this,"mergeUpdate",iv);let r=Uo.instances.get(t);r?r.set(e,this):Uo.instances.set(t,new Map([[e,this]]))}static get(t,e){if(!e)return;let r=Uo.instances.get(t);return r&&r.get(e)||new Uo(t,e)}static gets(t,e){let r=Uo.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 d;return t===0?this.started=!0:t===3&&(this.started=!1),this.ops.shift(),(d=this.currentOp)==null||d.action(),a},s=a=>{var d,l;throw this.ops.shift(),t===0&&((d=this.currentOp)==null?void 0:d.type)===2&&this.ops.shift().reject(new Qt("start failed")),(l=this.currentOp)==null||l.action(),a},n={type:t,action:()=>e(...n.args).then(o,s),args:r,resolve:ov,reject:sv};try{switch(this.state){case 1:if(t===0)throw new Qt("already started");break;case 4:if(t===2)throw new Qt("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 Qt("already start");break;case 3:switch(t.type){case 2:throw new Qt("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new Qt("unknown state")}else switch(t.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let r=new Qt("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 Qt("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new Qt("start not allowed after update");case 0:throw new Qt("duplicate start");case 3:if(this.startSame(this.currentOp.args,t.args))throw this.ops.pop().reject(new Qt("keep start")),new Qt("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}};m(Uo,"instances",new WeakMap);var Zi=Uo;var bl=new WeakMap,Rl=(i,t)=>{if(t instanceof Qt){let{stack:e}=t;t=new ne({code:oe.OPERATION_ABORT,message:`${i} abort: ${t.message}`,fnName:i}),e&&(t.stack+=e.substr(e.indexOf(`
|
|
96
|
-
`)))}throw t};function Vo(i,t){return Pe((e,r)=>function(...o){let s=Zi.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(Rl.bind(null,r))):e.apply(this,o)})}function Bs(i,t){let{merge:e,debounce:r}=t||{};return Pe((o,s)=>function(...n){let a=Zi.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:d,getKey:l}=r;return new Promise((p,f)=>{var R,y;let _=(R=bl.get(this))==null?void 0:R.get(l(...n));if(_){let{timeoutId:N,resolve:P}=_;clearTimeout(N),P()}let I=setTimeout(()=>{if(a.state===3||a.state===4)return p();a.action(2,o.bind(this),n).catch(Rl.bind(null,s)).then(p,f)},d);bl.has(this)?(y=bl.get(this))==null||y.set(l(...n),{timeoutId:I,resolve:p}):bl.set(this,new Map([[l(...n),{timeoutId:I,resolve:p}]]))})}return a.action(2,o.bind(this),n).catch(Rl.bind(null,s))})}function Fo(i){return Pe((t,e)=>function(...r){let o=typeof i=="function"?i.call(this,...r):i;if(o instanceof RegExp)return Promise.all(Zi.gets(this,o).map(n=>n.action(3,()=>Promise.resolve(),r))).then(()=>t.call(this,...r));let s=Zi.get(this,o);return s?s.action(3,t.bind(this),r).catch(Rl.bind(null,e)):t.apply(this,r)})}function Bo(){return function(i,t,e){return i.prototype[t]=function(){let r=this._log||console,o=`"${t}" is a static method. Use TRTC.${t}() instead. See: ${ir}/en/TRTC.html#.${t}`;r.warn(o)},e}}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",PERMISSION_STATE_CHANGE:"permission-state-change",VIDEO_SIZE_CHANGED:"video-size-changed",REALTIME_TRANSCRIBER_MESSAGE:"realtime-transcriber-message",REALTIME_TRANSCRIBER_STATE_CHANGED:"realtime-transcriber-state-changed",PICTURE_IN_PICTURE_STATE_CHANGED:"picture-in-picture-state-changed",FULL_SCREEN_STATE_CHANGED:"full-screen-state-changed"},RT=new Set([te.AUDIO_VOLUME,te.AUDIO_FRAME,te.NETWORK_QUALITY,te.STATISTICS,te.SEI_MESSAGE,te.CUSTOM_MESSAGE,te.LAYER_DATA]);var _f={};vi(_f,{ScheduleRequestType:()=>NT,getAbilityConfig:()=>cv,getScheduleDomain:()=>Nl,isNeedToSchedule:()=>vl,scheduleProxy:()=>ei,sendScheduleRequest:()=>Ef,setIsNeedToSchedule:()=>Ki,setScheduleProxy:()=>Cl});var gf=null,CT=0,nv=48*3600*1e3,vl=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(Di).map(i=>`<link rel="dns-prefetch" href="https://${i}">`).join(`\r
|
|
97
|
-
`));function Ki(i){Ze(i)&&i!==vl&&(vl=i,B.info(`setIsNeedToSchedule ${i}`),i||(CT=Date.now()+nv))}x.on("28",()=>Ki(!0));x.on("63",()=>Ki(!0));x.on("84",()=>Ki(!0));x.on("201",i=>{i.state==="RECONNECTING"&&Ki(!0)});x.on("202",i=>{i.state==="RECONNECTING"&&Ki(!0)});function av(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=$o(i,"config",M.MAIN),n=$o(i,"config",M.BACKUP);for(let a of o)if(a.startTime>=e&&(a.name===s||a.name===n)&&a.transferSize>0){let d=a.name===s?M.MAIN:M.BACKUP,l=Math.round(a.duration),p=Math.round(a.domainLookupStart-a.startTime),f=a.redirectStart>0?Math.round(a.redirectEnd-a.redirectStart):0,_=a.fetchStart>0?Math.round(a.domainLookupStart-a.fetchStart):0,I=Math.round(a.domainLookupEnd-a.domainLookupStart),R=Math.round(a.requestStart-a.secureConnectionStart),y=Math.round(a.secureConnectionStart-a.connectStart),N=Math.round(a.responseStart-a.requestStart),P=Math.round(a.responseEnd-a.responseStart),W=[I,R,y,N,P];Ue.uploadEvent({log:`stat-schedule-net:${l}(${p}(${f}->${_})->${W.join("->")}) ${d}`,userId:t}),r=Te(Q({},r),{totalCost:l,local:p,dns:I,tcp:y,tls:R,request:N,response:P});break}}catch(o){B.error("getScheduleDetailCost error",o)}return r}function Ef(l){return b(this,arguments,function*({userId:i,sdkAppId:t,useStringRoomId:e,roomId:r,userSig:o,version:s,frameWorkType:n,role:a,latencyLevel:d}){var f;if(!vl&&gf&&CT>Date.now())return{isCached:!0,result:gf};let p={delta:0,count:[1,1],msg:[],detail:[]};try{let _=new FormData;_.append("userId",String(i)),_.append("sdkAppId",String(t)),_.append("isStrGroupId",String(e)),_.append("groupId",String(r)),_.append("sdkVersion",s),_.append("userSig",String(o));let I=((f=yield gs())==null?void 0:f.model)||lu();I&&_.append("model",I);let R=Jr();R&&_.append("osString",R);let y=To();y&&_.append("gpu",y),a&&_.append("role",String(a)),d&&_.append("latencyLevel",String(d)),n&&_.append("frameWorkType",String(n));let N=pe(),P=yield uv(_,p,t);P.config&&(P.config.loggerDomain&&is(P.config.loggerDomain),Ze(P.config.scheduleCache)&&Ki(!P.config.scheduleCache)),p.delta=pe()-N;let W=av(Number(t),i,N);return gf=P,{isCached:!1,result:P,detailCost:W}}catch(_){let I=ut(_)?_[0]:_,R=Be(I.code)?I.code:0,y=`schedule failed${I.message?`: ${I.message}`:""}`,N=new ce({code:z.SCHEDULE_FAILED,extraCode:R,message:je({key:Ge.JOIN_ROOM_FAILED,data:{error:y,code:R}})});throw B.error(y,R),N}})}var ei={main:"",backup:""};function Cl(i){ut(i)?(ei.main=i[0],ei.backup=i[1]):(ei.main=i,ei.backup=i)}var NT=(r=>(r.CONFIG="config",r.TRTC_AUTO_CONF="trtcAutoConf",r.AUDIO_AI_AUTH="audioAiAuth",r))(NT||{});function $o(i,t,e=M.MAIN,r=!1){return`https://${ei[e]||Nl(i,e,r)}/api/v1/${t}`}function cv(i,t,e){let r=$o(i,t),o=$o(i,t,M.BACKUP),s=new URLSearchParams(e).toString(),n=fetch(`${r}?${s}`).then(d=>d.json()),a=fetch(`${o}?${s}`).then(d=>d.json());return Da([n,a])}function Nl(i,t=M.MAIN,e=!1){let r;return Rr(i)?e?r=t===M.MAIN?Di.MAIN_OVERSEA_BACKUP:Di.BACKUP_OVERSEA:r=t===M.MAIN?Di.MAIN_OVERSEA:Di.BACKUP_OVERSEA:r=t===M.MAIN?Di.MAIN:Di.BACKUP,r}function dv(i,t,e){return new Promise((r,o)=>{Pi({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 vT=(i,t)=>fo({retryFunction:dv,settings:{retries:3,timeout:0},onError:t,onRetrying:i});function uv(i,t,e){return new Promise((r,o)=>{let s=null;Da([vT(n=>t.count[0]=n+1,({error:n,retry:a,retriedCount:d,retryFuncArgs:l})=>{t.msg[0]=n.message,s||(d>=1&&(l[0]=$o(e,"config",M.MAIN,!0)),a())})($o(e,"config",M.MAIN),i,{get timeout(){return as(2+t.count[0])*1e3}}),vT(n=>t.count[1]=n+1,({error:n,retry:a,retriedCount:d,retryFuncArgs:l})=>{t.msg[1]=n.message,s||(d>=2&&(l[0]=$o(e,"config",M.BACKUP,!0)),a())})($o(e,"config",M.BACKUP),i,{get timeout(){return as(2+t.count[1])*1e3}})]).then(n=>{s=n,r(s)}).catch(o)})}var lv=i=>i.startsWith("data:application/octet-stream;base64,"),mv=i=>i.startsWith("file://"),Uc=class{constructor(){m(this,"_log");this._log=B.createLogger({id:"fd"})}download(t,e){return b(this,null,function*(){let{type:r="blob"}=e||{};t=us(t);try{let o=pe(),s;if(Xe(fetch)?s=yield this.downloadWithFetch(t,r):s=yield this.downloadWithXHR(t,r),!s||!s.data)throw new Error("data is empty");let n=pe()-o;return this._log.info(`downloaded: ${t}, return type: ${r}, cost: ${n}ms`),J.addSuccessEvent({key:522700,cost:pe()-o}),s.data}catch(o){throw this._log.error(`failed to download: ${t}, error: ${o}`),J.addFailedEvent({key:522700,error:o}),o}})}downloadWithFetch(t,e){return b(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 b(this,null,function*(){this._log.info(`loadWasm ${t}, importObject: ${JSON.stringify(e)}`);let r=pe(),o=null,s=null;if(Xe(WebAssembly.instantiateStreaming)&&!lv(t)&&!mv(t)&&Xe(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=pe()-r;return this._log.info(`loadedWasm ${t}, cost: ${n}ms`),J.addSuccessEvent({key:522701,cost:n}),o}throw this._log.error(`failed to loadWasm ${t}, error: ${s}`),J.addFailedEvent({key:522701,error:s}),s})}loadScript(t){this._log.info(`loadScript ${t}`);let e=pe();return new Promise((r,o)=>{let s=document.createElement("script");s.type="text/javascript",s.onload=()=>{this._log.info(`loadedScript ${t}, cost: ${pe()-e}ms`),J.addSuccessEvent({key:522702,cost:pe()-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)}`),J.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([ys({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}`)}})],Uc.prototype,"download",1),Z([ys({settings:{timeout:3e3,retries:3},onRetrying(t){this._log.warn(`loadScript retrying: ${t}`)}})],Uc.prototype,"loadScript",1);var Vc=new Uc;function Tf([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 Xi(new DataView(new Uint8Array(s).buffer),!0)}function If(i){return i.type==="empty"||i.data.byteLength===0}function Sf(i){let t=new DataView(i),e=0;for(;e<t.byteLength;){let r=Fn(t,e);if(r===0){e+=1;continue}let o=e+r;if(o<t.byteLength&&(t.getUint8(o)&31)===6)return!0;e+=r+1}return!1}function Af(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 yf({frame:i,seiMessageList:t}){if(!t||t.length===0||i.data.byteLength===0)return i;let r=9-Af(i.data);if(r<=0)return i;let o=t.splice(0,r).reverse().map(Tf),s=o.reduce((p,f)=>p+f.dataView.byteLength,0),n=new ArrayBuffer(s+i.data.byteLength),a=new DataView(n),d=new DataView(i.data),l=0;for(let p=0;p<o.length;p++)for(let f=0;f<o[p].dataView.byteLength;f++)a.setInt8(l++,o[p].dataView.getInt8(f));for(let p=0;p<i.data.byteLength;p++)a.setInt8(l++,d.getInt8(p));return i.data=n,i}function bf({frame:i,onSEI:t}){try{if(If(i)||!Sf(i.data))return i;let e=sl(i.data,!1).filter(r=>r.isSEI);t==null||t(e.reverse())}catch(e){}return i}function DT({seiMessageList:i,isAudio:t,getNtpTime:e,isMain:r}){return new TransformStream({transform(o,s){let n=o;t?audioEncodePipeline.forEach(a=>{n=a({frame:n,ntp:e(),onDump:()=>{self.postMessage({type:"dump",isAudio:t,data:n.data,userId:""})}})}):videoEncodePipeline.forEach(a=>{n=a({frame:n,seiMessageList:i,onDump:()=>{self.postMessage({type:"dump",isAudio:t,data:n.data,userId:"",streamType:r?"main":"auxiliary"})}})}),s.enqueue(n)}})}function wT({userId:i,streamType:t,isAudio:e}){return new TransformStream({transform(r,o){let s=r;e?(audioDecodePipeline.forEach(n=>{s=n({frame:s,onAudioFrameNTPTime:a=>{self.postMessage({type:"audio-ntp",data:a,userId:i,streamType:t})},onDump:()=>{self.postMessage({type:"dump",isAudio:e,data:s.data,userId:i})}})}),o.enqueue(s)):videoDecodePipeline.forEach(n=>{s=n({frame:s,onSEI:a=>{a.forEach(d=>{self.postMessage({type:"sei",seiPayloadType:d.seiPayloadType,data:d.seiPayload.buffer,userId:i,streamType:t})})},onDump:()=>{self.postMessage({type:"dump",isAudio:e,data:s.data,userId:i,streamType:t})}})}),o.enqueue(s)}})}function MT(i){let t=[Xi],e=[Af,If,sl,Sf,Tf,DT,wT,$d,Bd,Fn],r=()=>{let l=[],p=[],f=[],_=0;self.onmessage=I=>{switch(I.data.type){case"sei":I.data.isMain?(l.push(I.data.data),I.data.small&&f.push(I.data.data)):p.push(I.data.data);break;case"ntp-offset":_=I.data.data;break}},self.onrtctransform=I=>{let{options:R}=I.transformer,y=R.isReceiver?wT({userId:R.userId,streamType:R.streamType,isAudio:R.isAudio}):DT({getNtpTime:()=>Date.now()+_,isAudio:R.isAudio,isMain:R.isMain,seiMessageList:R.isMain?R.small?f:l:p});I.transformer.readable.pipeThrough(y).pipeTo(I.transformer.writable)}},o=`const videoEncodePipeline=[${i.videoEncodePipeline.toString()}];
|
|
98
|
-
const videoDecodePipeline=[${i.videoDecodePipeline.toString()}];
|
|
99
|
-
const audioEncodePipeline = [${i.audioEncodePipeline.toString()}];
|
|
100
|
-
const audioDecodePipeline = [${i.audioDecodePipeline.toString()}];`,s=`(()=>{${t.map(l=>`const ${l.name}=(()=>${l.toString()})()`).join(`
|
|
52
|
+
} `;var Rs=class extends Y{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}get canvas(){return this._canvas}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 zt(this,e,{logger:this.log,name:t})}createVideoTrackDestination(e){return new No(this,e)}createVideoImageSource(e,t){return new ra(this,t?Object.assign(t,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,t){return new sa(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}createTextSource(e,t){return new _d(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};d(Rs,"_ids",0);var Do=class Do extends Rs{constructor(){super(...arguments);d(this,"defaultProgam");d(this,"defaultVShader");d(this,"defaultFShader");d(this,"ctx");d(this,"_canvas2d")}get canvas(){return this._canvas2d||this._canvas}create(e=!1){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Rs._ids++}`),e&&(this._canvas2d=document.createElement("canvas")),this.ctx=this._canvas.getContext("webgl2",Al),!this.ctx)throw new D({code:I.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,wS),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,xS),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new D({code:I.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))})}destroy(e){let t="";return e&&(t=e.message,this.error=e,y.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,this._canvas2d&&(this._canvas2d.width=e)}set height(e){var t;(t=this.ctx)==null||t.viewport(0,0,this.width,e),super.height=e,this._canvas2d&&(this._canvas2d.height=e)}setSize(e,t){var r;(r=this.ctx)==null||r.viewport(0,0,e,t),super.setSize(e,t),this._canvas2d&&(this._canvas2d.width=e,this._canvas2d.height=t)}createShader(e,t){let r=this.ctx,o=r.createShader(e);return r.shaderSource(o,t),r.compileShader(o),o}createProgram(e,t){let r=this.ctx,o=r.createProgram();return r.attachShader(o,e),r.attachShader(o,t),r.linkProgram(o),r.getProgramParameter(o,r.LINK_STATUS)||this.log.error(r.getProgramInfoLog(o)),o}};d(Do,"UNAVAILABLE","unavailable"),O([ve(Y.INIT,"created",{sync:!0,fail(e){this.log.error("video gl context create failed",e.cause),y.addFailedEvent({key:512700,error:e.cause||e})},success(){this.log.info("video context created use webgl"),y.addSuccessEvent({key:512700})}})],Do.prototype,"create",1),O([ve("created",Y.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(Do.UNAVAILABLE,e),this.removeAllListeners()}})],Do.prototype,"destroy",1);var $e=Do,Qe=class extends Rs{constructor(){super(...arguments);d(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Rs._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha,willReadFrequently:e.willReadFrequently}),!this.ctx)throw new D({code:I.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,y.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(),y.addSuccessEvent({key:512703})}};O([ve(Y.INIT,"created",{sync:!0,fail(e){this.log.error("video 2d context create failed",e.cause),y.addFailedEvent({key:512701,error:e.cause||e})},success(){this.log.info("video context created use 2d"),y.addSuccessEvent({key:512701})}})],Qe.prototype,"create",1),O([ve("created",Y.INIT,{ignoreError:!0,sync:!0})],Qe.prototype,"destroy",1);function US(s,i,e,t,r,o=!1){o&&([e,t]=[t,e]);let n={sWidth:s,sHeight:i,dWidth:e,dHeight:t,sx:0,sy:0,dx:0,dy:0};if(s===0||i===0)return n;switch(r){case void 0:case"fill":break;case"contain":{let a=Math.min(e/s,t/i);n.dWidth=s*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/s,t/i),c=e/a,l=t/a;n.sx=(s-c)/2,n.sy=(i-l)/2,n.sWidth=c,n.sHeight=l;break}}return n}var Fh=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}},Mo=class extends we{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,o=this.inputs.length;for(;r<o;){let a=Math.floor((r+o)/2);if(this.inputs[a].layout.zIndex<t.zIndex)r=a+1;else if(this.inputs[a].layout.zIndex>t.zIndex)o=a;else throw new Error(`input already exists at zIndex ${t.zIndex}`)}let n=new Fh(e,t);this.inputs.splice(r,0,n)}changeInputLayout(e,t){let r=this.inputs.findIndex(E=>E.node===e);if(r<0)return;let{x:o,y:n,width:a,height:c,zIndex:l,fillMode:u,rotation:m,hidden:p}=t;if(!T(l)&&this.inputs.some(E=>E.layout.zIndex===l&&E.node!==e))throw new Error(`input already exists at zIndex ${t.zIndex}`);let h=this.inputs[r];T(o)||(h.layout.x=o),T(n)||(h.layout.y=n),T(a)||(h.layout.width=a),T(c)||(h.layout.height=c),T(m)||(h.layout.rotation=m),T(p)||(h.layout.hidden=p),u&&(h.layout.fillMode=u),!T(l)&&l!==h.layout.zIndex&&(h.layout.zIndex=l,this.inputs.sort((E,g)=>E.layout.zIndex-g.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((o,n)=>n?Object.assign(o,{width:Math.max(o.width,n.right),height:Math.max(o.height,n.bottom)}):o,{width:0,height:0});super.resize(r.width,r.height),this.context instanceof $e&&this.inputs.forEach(o=>{if(o){let n=this.layout2texCoords(o);o.positionBuffer?this.changeBufferData(o.positionBuffer,n):o.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((o,n)=>n.node.requestFrame(e)||o,!1)&&t){this.useProgram(),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let o=0;o<this.inputs.length;o++){let n=this.inputs[o];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 o=US(r.node.width,r.node.height,r.width,r.height,r.fillMode,Nt(r.rotation));this.draw2d(r.node.image,r.x+o.dx,r.y+o.dy,o.dWidth,o.dHeight,o.sx,o.sy,o.sWidth,o.sHeight)}return!0}return!1}debugLayout(e,t,r,o,n=!1){this.ctx2d&&(n&&([r,o]=[o,r]),this.ctx2d.save(),this.ctx2d.strokeStyle="red",this.ctx2d.lineWidth=2,this.ctx2d.strokeRect(e,t,r,o),this.ctx2d.restore())}getInfo(){let{totalFrames:e,x:t,y:r,width:o,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:o,height:n,timestamp:c,fps:l,name:a},M({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 $e)try{(t=this.context.ctx)==null||t.deleteBuffer(e.positionBuffer)}catch(r){}})}close(){super.close(),this.removeAllInputs()}};var VS=[1,0,0,0,1,1,0,1],Qt=class extends we{constructor(e,t,r,o){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),o&&(this.rotation=o),e instanceof $e)try{this.setTexBuffer(VS)}catch(n){e.destroy(new D({code:I.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${n.message||n}`}))}}draw2d(e,t,r,o,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(o,0),this.ctx2d.rotate(Math.PI/2),this.ctx2d.scale(n/o,o/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/o,o/n));let a=super.draw2d(e,t,r,o,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){Nt(this.rotation)&&([e,t]=[t,e]),super.resize(e,t)}};var Cs=class extends gi{constructor(e,t=4){super(t,rt);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,"endedIds",new Set);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.destination.on(we.RENDER,r=>{this.emit("render",r)}),this.mixNode=new Mo(this.videoContext,this.log),this.mixNode.matchInputSize=!1}listenDeviceChange(){throw new Error("Method not implemented.")}enablePrintDetail(e=2e3){this._checkId=ce.run("interval",()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}create2dVideoContext(){this.videoContext?this.videoContext.destroy():this.videoContext=new Qe({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 o;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)if(a.profile.frameRate>t){if(this.endedIds.has(n)){let c=this.cameraNodeMap.get(n);c&&c.image.cancelVideoFrameCallback(c.videoCallbackId);continue}t=a.profile.frameRate,e=n}for(let[n,a]of this.inputLocalScreenTracks)if(a.profile.frameRate>t){if(this.endedIds.has(n)){let c=this.screenNodeMap.get(n);c&&c.image.cancelVideoFrameCallback(c.videoCallbackId);continue}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(o=this.destination)==null||o.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),Wt&&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:o}=t;if(!o)throw new Error("no mediaTrack, add cameraSource failed");t.recaptureMode=1,it(this,Ne).add("videoInputRemoved",a=>{a.deviceId===t.deviceId&&(this.endedIds.add(e),this.setFpsAuto())}),t.on("output-media-track-changed",()=>{this.endedIds.delete(e),this.updateCameraSource(e,r,t.mediaTrack)});let n;qe===16&&o instanceof CanvasCaptureMediaStreamTrack?n=this.videoContext.createVideoImageSource(o.canvas,{name:"cameraCanvasSource",logger:this.log}):n=this.videoContext.createVideoTrackSource(o,"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:o}=t;if(!o)throw new Error("no mediaTrack, add screenSource failed");t.on("output-media-track-changed",()=>{this.updateScreenSource(e,r,t.mediaTrack)});let n=this.videoContext.createVideoTrackSource(o,"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:o,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:o,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 o=this.videoContext.createVideoImageSource(t,{autoResize:!1,logger:this.log});o.resize(t.width,t.height),this._connectMix(o,r),this.imageNodeMap.set(e,o)}addVideoSource(e,t,r){if(this.videoNodeMap.has(e))throw new Error(`There is already a videoSource with the same ID: ${e}`);let o=this.videoContext.createVideoImageSource(t,{autoResize:!1,logger:this.log});o.resize(t.videoWidth,t.videoHeight),o.shouldUpdate=!1,this._connectMix(o,r),this.videoNodeMap.set(e,o)}updateCameraSource(e,t,r=null,o){let n=this.cameraNodeMap.get(e);if(n){if(r){if(qe===16&&r instanceof CanvasCaptureMediaStreamTrack)if(n instanceof zt){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 zt)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)}o&&n.resize(o.width,o.height),(o||r)&&this.setFpsAuto(),this._changeMixLayout(n,t)}}updateScreenSource(e,t,r=null){let o=this.screenNodeMap.get(e);o&&(r&&o.replaceTrack(r),this._changeMixLayout(o,t))}updateTextSource(e){let{id:t,content:r,font:o,color:n,layout:a}=e,c=this.textNodeMap.get(t);c&&(T(r)||(c.content=r),T(o)||(c.font=o),T(n)||(c.color=n),c.resize(a.width,a.height),this._changeMixLayout(c,a))}updateImageSource(e,t,r){let o=this.imageNodeMap.get(e);o&&(r&&(o.image=r,o.resize(r.width,r.height)),this._changeMixLayout(o,t))}updateVideoSource(e,t,r){let o=this.videoNodeMap.get(e);if(o){if(r){let n=o.image;n instanceof HTMLVideoElement&&this.stopVideoElement(n),o.image=r,o.resize(r.videoWidth,r.videoHeight)}this._changeMixLayout(o,t)}}_connectMix(e,t,r="contain"){if(!this.mixNode)return;let{mirror:o,rotation:n}=t;e.disconnect();let a=new Qt(this.videoContext,this.log,o,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:o}=t,n=e.output||e;n instanceof Qt&&(T(r)||(n.mirror=r),T(o)||(n.rotation=o),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 Qt&&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 Qt&&r.output.close(),r.close(),this.screenNodeMap.delete(e)),this.checkAfterRemove(!0)}removeTextSource(e){let t=this.textNodeMap.get(e);t&&(t.output instanceof Qt&&t.output.close(),t.close(),this.textNodeMap.delete(e)),this.checkAfterRemove()}removeImageSource(e){let t=this.imageNodeMap.get(e);t&&(t.output instanceof Qt&&t.output.close(),t.close(),this.imageNodeMap.delete(e)),this.checkAfterRemove()}removeVideoSource(e){let t=this.videoNodeMap.get(e);t&&(t.output instanceof Qt&&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(),ce.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(),Fe(this);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 gd=Cn();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:gd,exposeOrigin:!0,permittedOrigins:["*"]})}catch(s){}var FS=function(s){return f(this,null,function*(){let i=null,e=$S(s);C.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let t=yield navigator.mediaDevices.getDisplayMedia(e);s.systemAudio&&t.getAudioTracks().length===0&&(ao&&et<74||ye||re)&&C.warn("Your browser not support capture system audio");let r=t.getVideoTracks()[0];if(r){if(s.frameRate)try{yield r.applyConstraints({frameRate:{min:s.frameRate,ideal:s.frameRate},width:s.width,height:s.height})}catch(o){C.warn(`screen applyConstraints failed: ${o}`)}s.captureElement&&(yield BS(r,s.captureElement))}if(s.audio){let o=HS(s);C.info(`getUserMedia with constraints: ${JSON.stringify(o)}`),i=yield navigator.mediaDevices.getUserMedia(o),t.addTrack(i.getAudioTracks()[0])}return t})};function BS(s,i){return f(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&me(s.cropTo))try{if(!(((e=s.getCaptureHandle())==null?void 0:e.handle)===gd))return;let r=yield CropTarget.fromElement(i);yield s.cropTo(r)}catch(t){C.warn(`cropTo target failed ${t}`)}})}function HS(s){let i={echoCancellation:s.echoCancellation,autoGainControl:s.autoGainControl,noiseSuppression:s.noiseSuppression,sampleRate:s.sampleRate,channelCount:s.channelCount};return T(s.microphoneId)||(i.deviceId=s.microphoneId),{audio:i,video:!1}}function $S(s){let i={preferCurrentTab:s.preferDisplaySurface==="current-tab"||!!s.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:ye?{max:s.width}:{ideal:s.width,max:s.width},height:ye?{max:s.height}:{ideal:s.height,max:s.height},frameRate:s.frameRate,displaySurface:s.preferDisplaySurface||"monitor"};if(i.video=e,s.systemAudio){let{echoCancellation:t=!0,noiseSuppression:r=!1,autoGainControl:o=!1}=s;i.audio={echoCancellation:t,noiseSuppression:r,autoGainControl:o,sampleRate:48e3}}return i}var wf=FS;var xt=class extends ze{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 gd===((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:o,audioTrack:n,videoTrack:a,captureElement:c,preferDisplaySurface:l}){try{let m=x(),p;return a||n?(p=new MediaStream,a&&p.addTrack(a),n&&p.addTrack(n)):(p=yield wf({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:t,echoCancellation:r,noiseSuppression:o,captureElement:c,preferDisplaySurface:l}),this.sourceTrack=p.getVideoTracks()[0]),yield this.setInputMediaStreamTrack(p.getVideoTracks()[0]),S.emit(A.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:x()-m}),p}catch(m){throw this.log.error(`getDisplayMedia error observed ${m}`),m instanceof D?m:new D({code:I.INITIALIZE_FAILED,name:m.name,message:m.message})}})}switchDevice(e){return f(this,null,function*(){throw new Error("Method not implemented.")})}};O([Ct(function(e){this.setContentHint(e.contentHint||"detail")})],xt.prototype,"capture",1);var ys=class extends wt{constructor(i){super(i),this._log.id=`s-${this._log.id}`,this.isScreen=!0}addAudioProcessor(i,e,t){this.pipeline.silentNode.setNode(t),this.pipeline.mixNode.setNode(e),this.pipeline.aec.setNode(i),this.enableTrackAEC(!1)}removeAudioProcessor(i){this.pipeline.aec.node===i&&(this.pipeline.aec.deleteNode(),this.pipeline.silentNode.deleteNode(),this.pipeline.mixNode.deleteNode(),this.enableTrackAEC(!0))}};var GS='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}});',Bh;function oa(s,i=48e3,e=1,t){return f(this,null,function*(){let r=Ae("dump");Bh||(Bh=sr(r,URL.createObjectURL(new Blob([GS],{type:"application/javascript"})))),yield Bh;let o=r.sampleRate,n=new AudioWorkletNode(r,"dumper",{numberOfInputs:s.length,numberOfOutputs:0,processorOptions:{sourceSampleRate:o,targetSampleRate:i}});return n.channelCountMode="explicit",n.channelCount=e,t&&n.port.postMessage({port:t},[t]),s.forEach((a,c)=>a.connect(n,0,c)),new ReadableStream({start(a){n.port.onmessage=c=>{a.enqueue(c.data)}},cancel(){s.forEach(a=>a.disconnect(n)),n.port.close()}})})}var Ed=class extends Gc{constructor(e){super();this.room=e;d(this,"_localAudioTrack");d(this,"_localScreenAudioTrack");d(this,"log");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);this.log=C.createLogger({parent:e==null?void 0:e.getLogger(),id:"am",userId:e==null?void 0:e.userId,sdkAppId:e==null?void 0:e.sdkAppId}),this.installEvent()}get localAudioTrack(){return this._localAudioTrack}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,m;if(!this._localAudioTrack)return;let t=[],r=[];(u=this._localAudioPipline)!=null&&u.source.node&&(t.push(this._localAudioPipline.source.node),r.push("mic")),(m=this._localAudioPipline)!=null&&m.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 o=new AbortController,n=[],a=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),o.abort("timeout")},e*1e3),c=()=>{for(let p=0;p<r.length;p++){let h=URL.createObjectURL(new Blob(n[p])),E=document.createElement("a");E.href=h,E.download=`${r[p]}.pcm`,E.style.display="none",document.body.appendChild(E),E.click(),URL.revokeObjectURL(h),E.remove()}clearTimeout(a),o.abort("download")},l=oa(t).then(p=>p.pipeTo(new WritableStream({write(h){h.forEach((E,g)=>n[g]=n[g]?n[g].concat(E[0]):[E[0]])}}),o).catch(h=>c));return{then:l.then.bind(l),download:c}}getPCM(e,t){var N,j,V;if(typeof WritableStream=="undefined"){this.log.warn("getPCM failed: browser not support WritableStream");return}let{enable:r,sampleRate:o=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(o*.04),l=new Float32Array(c),u=new Float32Array(c),m,p,h=0,E=new AbortController,g=t===""?(N=this._localAudioTrack)==null?void 0:N.mediaTrack:(V=(j=this.room)==null?void 0:j.remotePublishedUserMap.get(t))==null?void 0:V.remoteAudioTrack.mediaTrack;if(!g){this.log.info(`getPCM failed: ${t||"local"} has no audio track`);return}let R=Ae().createMediaStreamSource(new MediaStream([g]));return oa([R],o,n,a).then(ae=>ae.pipeTo(new WritableStream({write(b){b[0][0]&&(h+b[0][0].length>c?(l.set(b[0][0].subarray(0,c-h),h),m=b[0][0].subarray(c-h),b[0][1]&&(u.set(b[0][1].subarray(0,c-h),h),p=b[0][1].subarray(c-h)),h+=c-h):(m&&(l.set(m,h),h+=m.length,m=void 0),p&&(u.set(p,h),p=void 0),l.set(b[0][0],h),b[0][1]&&u.set(b[0][1],h),h+=b[0][0].length),h>=c&&(h=0,e({userId:t,sampleRate:o,channelCount:n,data:n===1?l:[l,u]}),l=new Float32Array(c),u=new Float32Array(c)))}}),E).catch(b=>this.log.warn(`stop getPCM reason:${b}`))),E}get hasScreenAudioTrack(){return!T(this._localScreenAudioTrack)}get hasAudioTrack(){return!T(this._localAudioTrack)}changeInput(e){var t,r;if(e instanceof ys)return this._localScreenAudioTrack=e,this.isScreenAudioNeedAudioProcess&&((t=this.audioProcessor)!=null&&t.screenAudioWorkletNode)&&(e.addAudioProcessor(this.audioProcessor.screenAudioWorkletNode,this.audioProcessor.mixNode,this.audioProcessor.silentNode),this.audioReferenceMap.forEach((o,n)=>{e.mixAudioReference(o,n)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof wt)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),this.isLocalAudioNeedAudioProcess&&((r=this.audioProcessor)!=null&&r.localAudioWorkletNode)&&(e.addAudioProcessor(this.audioProcessor.localAudioWorkletNode,this.audioProcessor.mixNode,this.audioProcessor.silentNode),this.audioReferenceMap.forEach((o,n)=>{e.mixAudioReference(o,n)})),e.pipeline.connect(),this.mixOnChange();if(e instanceof Si)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 ys?delete this._localScreenAudioTrack:e instanceof wt?delete this._localAudioTrack:e instanceof Si}addDenoiser(e){var t;this.denoiser=e,(t=this._localAudioTrack)==null||t.addDenoiser(e)}addAudioProcessor(e,t,r,o){var n;this.audioProcessor={localAudioWorkletNode:r,mixNode:e,silentNode:t,screenAudioWorkletNode:o},this.isLocalAudioNeedAudioProcess&&this._localAudioTrack&&r&&(this._localAudioTrack.addAudioProcessor(r,e,t),this.audioReferenceMap.forEach((a,c)=>{var l;(l=this._localAudioTrack)==null||l.mixAudioReference(a,c)})),this.isScreenAudioNeedAudioProcess&&this._localScreenAudioTrack&&o&&((n=this._localScreenAudioTrack)==null||n.addAudioProcessor(o,e,t),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){var r,o;delete this.audioProcessor,(r=this._localAudioTrack)==null||r.removeAudioProcessor(e),(o=this._localScreenAudioTrack)==null||o.removeAudioProcessor(t)}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 o;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)&&((o=this._localAudioTrack)==null||o.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(o=>{var n;(n=this.room)==null||n.emit("audio-frame",o)},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(){S.on("113",this.handleLocalTrackStarted,this),S.on("114",this.handleLocalTrackStopped,this),S.on("115",this.handleRemoteTrackStarted,this),S.on("116",this.handleRemoteTrackStopped,this)}uninstallEvent(){S.off("113",this.handleLocalTrackStarted),S.off("114",this.handleLocalTrackStopped),S.off("115",this.handleRemoteTrackStarted),S.off("116",this.handleRemoteTrackStopped)}updateAudioReference({type:e,audioReference:t,refId:r,volume:o}){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(o))return;this.setAudioReferenceVolume(r,o)}}};function bs(s=30,i=2){return K((e,t)=>function(...r){return new Promise((o,n)=>{let a=setTimeout(()=>{let c=new D({code:I.API_CALL_TIMEOUT,message:`checkPendingPromise ${t}() timeout ${s}s`});(this.log||this._log||C).warn(c),i===2?n(c):i===1&&o()},s*1e3);this._checkPendingPromiseSet||(this._checkPendingPromiseSet=new Set),this._checkPendingPromiseSet.add(a),e.apply(this,r).then(o,n).finally(()=>{clearTimeout(a),this._checkPendingPromiseSet&&a&&this._checkPendingPromiseSet.delete(a)})})})}function xf(){return K((s,i)=>function(...e){return this._checkPendingPromiseSet&&(this._checkPendingPromiseSet.forEach(t=>clearTimeout(t)),this._checkPendingPromiseSet.clear()),s.apply(this,e)})}var Li=class Li extends ps{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",ot(ue(this,Li.STATE_SUBSCRIBE)));d(this,"ignoreUpdatePlayingState");this.tinyId=t.tinyId,this.availableState=new Y(`${t.userId}-${this.mediaType}-available`,"remote-track-available"),this.remotePublishState=new Y(`${t.userId}-${this.mediaType}-remote-publish`,"remote-track-publish"),he(Qn(ue(this,Y.STATECHANGED),ue(this.remotePublishState,Y.STATECHANGED)),ea(()=>this.isRemotePublished&&(this.isSubscribed||this.isSubscribing)),Se(c=>{this.availableState.state!==(c?Y.ON:Y.OFF)&&(this.availableState.state=c?Y.ON:Y.OFF),!(this.isRemotePublished&&this.ignoreUpdatePlayingState)&&this.updatePlayingState(c)}));let o=he(ue(this.player,W.ERROR),Xt(c=>c.code===MediaError.MEDIA_ERR_DECODE)),n=he(Zn(5e3),Xt(()=>this.ignoreDecodeError||!this.isSubscribed||!this.isPlayCalled||!this.stat.bytesReceived||!this.isRemotePublished?!1:this.player.isPlaying||(this.kind===_.AUDIO?this.getAudioLevel()>0:this.stat.framesDecoded>0)?(this.reportDecodeResult(!0),!1):!0)),a=he(eh(o,n),Le(ue(this,Y.INIT)));he(this._triggerCheckDecodeSubject,Xt(()=>!this.ignoreDecodeError),Ss(a),Se(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,o,n;return((n=(o=(r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.hadRecentBadDownlink)==null?void 0:o.call(r,2))!=null?n:!1)||this.player.isInAutoPlayFailedState}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===Li.STATE_SUBSCRIBE}get isAvailable(){return this.availableState.state===Y.ON}get isNeedPlay(){return this.isAvailable&&this.isPlayCalled}subscribe(e){return e}unsubscribe(){this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,t){var o,n;let r=this.kind===_.AUDIO;if(y[e?"addSuccessEvent":"addFailedEvent"]({key:r?504700:514702}),!r){let a=((o=this.room)==null?void 0:o.downlinkVideoCodec.toUpperCase())||"H264";y[e?"addSuccessEvent":"addFailedEvent"]({key:mo[`DECODE_${a}_RESULT`]}),e||this.log.warn(`${(n=this.room)==null?void 0:n.downlinkVideoCodec} decode failed`)}e||(y.addEnum({key:r?504701:514703,value:as()}),se.uploadEvent({log:`stat-decode-failed-${this.kind}-${Dt()||Mt()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===_.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:t}))}updatePlayingState(e){if(this.player.isPlayCalled&&this.player.setTrack(this.playerMediaTrack),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?Y.ON:Y.OFF,this.emit("remote-publish-changed",this.isRemotePublished)}onTrackMuted(){this.isNeedPlay&&super.onTrackMuted()}onTrackUnmuted(){this.isNeedPlay&&super.onTrackUnmuted()}onTrackEnded(){this.isNeedPlay&&super.onTrackEnded()}};d(Li,"STATE_SUBSCRIBE","subscribe"),O([bs(5,1)],Li.prototype,"waitHasMediaTrack",1),O([ve(Y.INIT,Li.STATE_SUBSCRIBE,{success(){this.log.info("subscribed"),S.emit(A.REMOTE_TRACK_SUBSCRIBED,{track:this})},ignoreError:!0}),yt(521716,!1)],Li.prototype,"subscribe",1),O([ve(Li.STATE_SUBSCRIBE,Y.INIT,{sync:!0,success(){this.log.info("unsubscribed"),S.emit(A.REMOTE_TRACK_UNSUBSCRIBED,{track:this})}})],Li.prototype,"unsubscribe",1);var Oo=Li;var Si=class extends Oo{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 ms.isRunning?this.player.pipeline.volumeMeter.getVolumeDb():Math.floor(Math.max(10*Math.log10(this.volume)+100,0))}onPlayerError(e){this.enableDecodeFrame&&(this._log.warn("use audio decoder"),this.room.enableInsertableStreams())}get enableDecodeFrame(){var e,t;return this.manager?this.manager.decodePipeline.some(r=>r)||((t=(e=this.player.element)==null?void 0:e.error)==null?void 0:t.code)===MediaError.MEDIA_ERR_DECODE&&Uc().AudioDecoder&&fi:!1}get enableDecryptFrame(){return this.manager&&!!this.manager.decodePipeline[0]}decodeFrame(e){if(!this.manager)return e;let t=e;for(let[r,o]of this.manager.decodePipeline.entries()){if(!o)continue;let n={frame:e,track:this};if(r===1&&this.isAvailable&&this.room.role==="audience"&&(n.onAudioFrameNTPTime=({ntp:a,frame:c,hasLeavingTag:l})=>{this.emit("audio-frame-with-ntp",{ntp:a,frame:c,hasLeavingTag:l})}),t=o(n),!t)return}return t}getAudioLevel(){if(!this.isAvailable)return 0;let e=this.volume||super.getAudioLevel();return e>1?1:e}getInternalAudioLevel(){return this.isAvailable?super.getInternalAudioLevel():0}get isRemotePublished(){return this.user.muteState.audioAvailable}};var Td=class extends we{constructor(e,t,r,o,n){super(e,{useDefaultProgram:!0,useFbo:!0,name:"alpha",create2d:!0,logger:t});this.setContainer=o;d(this,"initStat",{alphaStitchingType:1});d(this,"end",ot());d(this,"minSize",320);d(this,"maxSize",1280);d(this,"draggable",!1);d(this,"startDragX",0);d(this,"startDragY",0);d(this,"left",0);d(this,"top",0);d(this,"baseWidth",320);d(this,"baseRatio");d(this,"container");this.initStat=n,this.draggable=r,this.bindDragEvents(),y.addEnum({key:515700,value:1}),this.draggable&&y.addEnum({key:515700,value:11})}bindDragEvents(){let e=this.context._canvas;if(e)if(this.draggable){let t=Le(this.end);he(ue(e,"mousedown"),ta(this.startDrag.bind(this)),Vr(()=>he(ue(window,"mousemove"),Le(ue(window,"mouseup")))),t,Se(this.doDrag.bind(this))),he(ue(e,"dblclick"),t,Se(this.resetPosition.bind(this))),he(ue(e,"wheel"),t,Se(this.handleZoom.bind(this))),this.renderCanvas()}else{if(!this.container)return;this.container.style.removeProperty("left"),this.container.style.removeProperty("top"),this.end.next()}}render(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}startDrag(e){e.preventDefault(),e.button===0&&(this.startDragX=e.clientX-this.left,this.startDragY=e.clientY-this.top)}renderCanvas(){let{container:e}=this;e||this.setContainer(),!(!e||!this.baseRatio||!this.draggable)&&(e.style.setProperty("width",`${this.baseWidth}px`),e.style.setProperty("height",`${this.baseWidth/this.baseRatio}px`),e.style.setProperty("position","fixed"),e.style.setProperty("left",`${this.left}px`),e.style.setProperty("top",`${this.top}px`))}doDrag(e){e.preventDefault(),this.left=e.clientX-this.startDragX,this.top=e.clientY-this.startDragY,this.renderCanvas()}handleZoom(e){e.preventDefault();let t=.1,r=e.deltaY,o=this.context._canvas;o&&(this.baseWidth||(this.baseWidth=o.offsetWidth),r<0?this.baseWidth=Math.min(this.baseWidth*(1+t),this.maxSize):this.baseWidth=Math.max(this.baseWidth*(1-t),this.minSize),this.renderCanvas())}resetPosition(){this.left=0,this.top=0,this.renderCanvas()}onRatioReset(){this.renderCanvas()}draw2d(e,t,r,o,n){var h;let{ctx2d:a}=this,c=this.context._canvas;if(!a||!c)return!1;let l=super.draw2d(e,t,r,o,n),u=a.getImageData(0,0,o,n),{data:m}=u,p=!1;if(this.initStat.alphaStitchingType===1){let E=Math.floor(o/2);for(let g=0;g<n;g++)for(let R=0;R<E;R++){let N=(g*o+R)*4,j=R+E,V=(g*o+j)*4,ae=m[V];m[V+3]=0;let b=ae>=100;m[N+3]=b?255:0}p=super.draw2d(u,0,0,0,0,E,n),c.width=E}else if(this.initStat.alphaStitchingType===2){let E=Math.floor(n/2);for(let g=0;g<E;g++)for(let R=0;R<o;R++){let N=(g*o+R)*4,V=((g+E)*o+R)*4,ae=m[V];m[V+3]=0;let b=ae>=100;m[N+3]=b?255:0}p=super.draw2d(u,0,0,0,0,o,E),c.height=E}return(h=this.context.ctx)==null||h.clearRect(0,0,o,n),l&&p}close(){this.baseRatio=void 0,this.end.next(),this.end.complete()}};function jS(s){return[15,30,45,60].reduce((e,t)=>Math.abs(t-s)<Math.abs(e-s)?t:e)}var wi=class extends Oo{constructor(e,t,r=4){super(e,t,r);d(this,"mediaType",4);d(this,"source");d(this,"shouldRenderAlpha",!1);d(this,"alphaNode");d(this,"shouldBeDraggable",!0);d(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0,keyFramesDecoded:0});d(this,"_keyFrameCountLogged",!1);d(this,"_keyFrameStartTimestamp",0);d(this,"_keyFrameStartCount",0);d(this,"_keyFrameIntervals",[]);d(this,"_prevKeyFrameTimestamp",0);this.manager=e.videoManager,this.on("first-video-frame",o=>{this.room.emit("first-video-frame",o)})}isAlphaSei(e){if(this.userId!==e.userId||e.seiPayloadType!==50)return!1;let t=new Uint8Array(e.data);return t.length%3!==0||t[0]!==0||t[1]!==1?!1:t}play(e,t){return t!=null&&t.canvasRender&&!this.source&&this.useCanvasPlayer(),super.play(e,t).then(()=>{this.player.calculateStat(),S.emit("156",{track:this,player:this.player})})}updateAlphaRenderInfo(e){let t=this.isAlphaSei(e);if(t)if(!this.alphaNode)this.shouldRenderAlpha=!0,this.player.shouldRenderAlpha=!0,this.useCanvasPlayer(t[2]);else{let r=t[2];if(this.alphaNode.baseRatio&&this.alphaNode.initStat.alphaStitchingType===r)return;this.alphaNode.initStat={alphaStitchingType:r};let o=this.player.getElement();if(o){let n=o.videoWidth/o.videoHeight;n&&(this.alphaNode.baseRatio=n*(r===1?.5:2),this.alphaNode.onRatioReset())}this.player.canvas&&(this.player.canvas.id=this.generateAlphaCanvasName(r))}}generateAlphaCanvasName(e){let t="alpha",r=Nn[e];return`${t}_${r}_${this.userId}`}useCanvasPlayer(e){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let t=new Qe({frameRate:15,logger:this.log,name:this.shouldRenderAlpha&&e?this.generateAlphaCanvasName(e):this.userId});t.create({alpha:this.shouldRenderAlpha,willReadFrequently:this.shouldRenderAlpha});let r=new As(t,{name:"remotePlayer",logger:this.log});if(this.source=t.createVideoPlayerSource(this.player),this.player.setCanvas(t._canvas),this.shouldRenderAlpha&&e){let o=()=>{!this.player.container||!this.alphaNode||(this.alphaNode.container=this.player.container,this.alphaNode.renderCanvas())},n=new Td(t,this.log,this.shouldBeDraggable,o,{alphaStitchingType:e});this.source.connect(n),n.connect(r),this.alphaNode=n}else this.source.connect(r);ir()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,t),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let t=this.decodeFPS,r=jS(t);if(!te(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),S.emit("157",{track:this,player:this.player}),this.alphaNode&&this.alphaNode.close(),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)}setDraggable(e){this.shouldBeDraggable=e,this.alphaNode&&(this.alphaNode.draggable=e,this.alphaNode.bindDragEvents())}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}updateKeyFramesDecoded(e){let t=this.stat.keyFramesDecoded||0;if(this.stat.keyFramesDecoded=e,this._keyFrameCountLogged)return;let r=Date.now();if(!this._keyFrameStartTimestamp){this._keyFrameStartTimestamp=r,this._keyFrameStartCount=e,this._prevKeyFrameTimestamp=r;return}if(this._prevKeyFrameTimestamp&&e>t){let n=e-t,c=(r-this._prevKeyFrameTimestamp)/1e3/n;this._keyFrameIntervals.push(c)}this._prevKeyFrameTimestamp=r;let o=r-this._keyFrameStartTimestamp;if(o>=16e3){let n=e-this._keyFrameStartCount,a=n>0?o/1e3/n:0,c=`${n} keyframes in 16s ${a} [${this._keyFrameIntervals.map(u=>u.toFixed(1)).join(",")}] keyFramesDecoded ${e}`,l=a<=2.5?"debug":"info";this.log[l](c),this._keyFrameCountLogged=!0}}},Po=class extends wi{constructor(e,t){super(e,t,2);d(this,"mediaType",2);d(this,"objectFit","contain")}get isRemotePublished(){return this.user.muteState.hasAuxiliary}};var ko=new Map;S.on(A.JOIN_SUCCESS,({room:s})=>{Me(s.userId,{eventId:32788})});S.on(A.LEAVE_START,({room:s})=>{Me(s.userId,{eventId:32789})});S.on(A.LOCAL_TRACK_PUBLISHED,({track:s})=>{if(s.room){let i=32769;s.mediaType===4?i=32768:s.mediaType===2&&(i=32805),Me(s.room.userId,{eventId:i})}});S.on(A.LOCAL_TRACK_UNPUBLISHED,({track:s})=>{if(s.room){let i=32771;s.mediaType===4?i=32770:s.mediaType===2&&(i=32806),Me(s.room.userId,{eventId:i})}});S.on(A.TRACK_MUTED,({track:s})=>{s.room&&(s.kind===_.AUDIO?Me(s.room.userId,{eventId:s.isRemote?32785:32772,remoteUserId:s.isRemote?s.userId:void 0}):Me(s.room.userId,{eventId:s.isRemote?32784:32773,remoteUserId:s.isRemote?s.userId:void 0}))});S.on(A.TRACK_UNMUTED,({track:s})=>{s.room&&(s.kind===_.AUDIO?Me(s.room.userId,{eventId:s.isRemote?32787:32774,remoteUserId:s.isRemote?s.userId:void 0}):Me(s.room.userId,{eventId:s.isRemote?32786:32775,remoteUserId:s.isRemote?s.userId:void 0}))});S.on(A.REMOTE_TRACK_SUBSCRIBED,({track:s})=>{s.room&&(s.mediaType===1&&Me(s.room.userId,{eventId:32777,remoteUserId:s.userId}),s.mediaType===4&&Me(s.room.userId,{eventId:32776,remoteUserId:s.userId}),s.mediaType===8&&Me(s.room.userId,{eventId:32803,remoteUserId:s.userId}))});S.on(A.REMOTE_TRACK_UNSUBSCRIBED,({track:s})=>{s.room&&(s.mediaType===1&&Me(s.room.userId,{eventId:32779,remoteUserId:s.userId}),s.mediaType===4&&Me(s.room.userId,{eventId:32778,remoteUserId:s.userId}),s.mediaType===8&&Me(s.room.userId,{eventId:32804,remoteUserId:s.userId}))});S.on(A.SWITCH_DEVICE_SUCCESS,({track:s})=>{s.room&&Me(s.room.userId,{eventId:s.kind===_.VIDEO?32780:32781})});S.on(A.LOCAL_TRACK_REPLACED,({track:s})=>{s.room&&Me(s.room.userId,{eventId:s.kind===_.VIDEO?32782:32783})});S.on(A.SIGNAL_CONNECTION_STATE_CHANGED,({room:s,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&&Me(s.userId,{eventId:t})});S.on(A.PEER_CONNECTION_STATE_CHANGED,({room:s,prevState:i,state:e,remoteUserId:t})=>{let r=!!t,o;switch(e){case"CONNECTED":i==="RECONNECTING"?o=r?32801:32798:o=r?32793:32792;break;case"DISCONNECTED":i==="RECONNECTING"&&(o=r?32802:32799);break;case"RECONNECTING":o=r?32800:32797;break}o&&Me(s.userId,{eventId:o,remoteUserId:t})});S.on(A.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:s,userId:i,remoteUserId:e,codec:t,isHWCodec:r,prevImplementation:o,streamType:n})=>{let a=r?1:0;o||(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),Me(i,l),y.addEnum({key:e?514701:513701,value:a}),y.addEnum({key:e?514700:513700,value:c})});S.on(A.LOCAL_TRACK_RECAPTURE,({track:s,error:i})=>{if(s.userId){let e={eventId:2003,param1:0};s.kind===_.AUDIO?(e.streamType=1,i&&(e.param1=2)):(e.streamType=s.streamType==="auxiliary"?7:2,i&&(e.param1=8)),Me(s.userId,e)}});function Me(s,i){let e=w(M({},i),{timestamp:Hi()});ko.has(s)?ko.get(s).push(e):ko.set(s,[e])}function Uf(s){if(ko.has(s)){let i=ko.get(s).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 ko.delete(s),i}return[]}function Vf(...s){return K((i,e)=>function(...t){return qS.call(this,s,t,e,this._name),i.apply(this,t)})}function qS(s,i,e,t){try{if(Ie(s))for(let r=0;r<s.length;r++)Sd.call(this,{rule:s[r],value:i[r],key:s[r].name,fnName:e,className:t});else Sd.call(this,{rule:s,value:i[0],key:s.name,fnName:e,className:t})}catch(r){throw C.error(r),r}}function Sd({rule:s,value:i,key:e,fnName:t,className:r}){if(T(i)){if(s.required)throw new D({code:I.INVALID_PARAMETER,message:G({key:H.INVALID_PARAMETER_REQUIRED,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(T(s.defaultValue))return;i=s.defaultValue}if(Array.isArray(s.type)){let a=!1;for(let c=0;c<s.type.length;c++)s.type[c]===null&&i===null&&(a=!0),me(s.type[c])&&i instanceof s.type[c]&&(a=!0),ne(s.type[c])&&Pe(i)===s.type[c].toLowerCase()&&(a=!0);if(!a)throw new D({code:I.INVALID_PARAMETER,message:G({key:H.INVALID_PARAMETER_TYPE,data:{key:e,rule:{type:s.type.map(c=>es(c)?Js(c):ne(c)?c:Pe(c))},fnName:t,value:i},link:{className:r,fnName:t}})})}else if(!T(s.type)&&Pe(i)!==s.type)throw new D({code:I.INVALID_PARAMETER,message:G({key:H.INVALID_PARAMETER_TYPE,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(s.allowEmpty===!1){let a=te(i)&&(i===0||Number.isNaN(i)),c=ne(i)&&i.trim()==="";if(a||c)throw new D({code:I.INVALID_PARAMETER,message:G({key:H.INVALID_PARAMETER_EMPTY,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})})}if(s.notLessThanZero&&te(i)&&i<0)throw new D({code:I.INVALID_PARAMETER,message:G({key:H.CANNOT_LESS_THAN_ZERO,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(!T(s.min)&&te(i)&&i<s.min)throw new D({code:I.INVALID_PARAMETER,message:G({key:H.INVALID_PARAMETER_MIN,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(!T(s.max)&&te(i)&&i>s.max)throw new D({code:I.INVALID_PARAMETER,message:G({key:H.INVALID_PARAMETER_MAX,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(ne(s.instanceOf)){if(!i||i._name!==s.instanceOf)throw new D({code:I.INVALID_PARAMETER,message:G({key:H.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})})}else if(me(s.instanceOf)&&!(i instanceof s.instanceOf))throw new D({code:I.INVALID_PARAMETER,message:G({key:H.INVALID_PARAMETER_INSTANCE,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});if(s.values&&!s.values.includes(i))throw new D({code:I.INVALID_PARAMETER,message:G({key:H.INVALID_PARAMETER_RANGE,data:{key:e,rule:s,fnName:t,value:i},link:{className:r,fnName:t}})});let{properties:o}=s;dt(o)&&vt(i)&&Object.keys(o).forEach(a=>{Sd.call(this,{rule:o[a],value:i&&i[a],key:`${e}.${a}`,fnName:t,className:r})});let{arrayItem:n}=s;dt(n)&&Ie(i)&&i.forEach((a,c)=>{Sd.call(this,{rule:n,value:a,key:`${e}[${c}]`,fnName:t,className:r})}),me(s.validate)&&s.validate.call(this,i,e,t,r,this)}var Ff=Ge(Ze(),1);var Id=class extends Ff.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);d(this,"asrRobotUserMap",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:o,role:n,fromType:a}=e;if(a===Hs){this.addAsrRobotUser(e);return}if(this.userMap.has(t))return;let c={userId:r,tinyId:o,role:n===20?"anchor":"audience"};this.userMap.set(t,c),this.emit("1",c)}addAsrRobotUser(e){let t=e[this.key],{userId:r,tinyId:o,role:n}=e;if(this.asrRobotUserMap.has(t))return;let a={userId:r,tinyId:o,role:n===20?"anchor":"audience"};this.asrRobotUserMap.set(t,a),this.emit("8",a)}deleteUser(e,t){let r=this.userMap.get(e);if(!r)return;if(this.asrRobotUserMap.has(e)){this.deleteAsrRobotUser(e);return}let n=`peer leave [${e}]`;T(t)||(n+=`:${Il[t]}`),this._log.info(n);let a=this.remotePublishedUserMap.get(e);if(a){let c=a.muteState;a.flag=0,this.emit("5",a.userId),this.deleteRemotePublishedUser(e),this.emit("6",{prevMuteState:c,muteState:a.muteState,flag:0})}this.userMap.delete(e),this.emit("2",{userId:r.userId,reason:t})}deleteAsrRobotUser(e){if(!this.asrRobotUserMap.has(e))return;let t=this.asrRobotUserMap.get(e);t&&(this.asrRobotUserMap.delete(e),this.emit("9",t))}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(o=>o[this.key]===t[this.key])<0){this._log.info(`remote [${r}] unpublish`);let o=t.muteState;t.flag=0,this.emit("5",t.userId),this.deleteRemotePublishedUser(r),this.emit("6",{prevMuteState:o,muteState:t.muteState,flag:0})}}),e.forEach(t=>{var m;let r=t[this.key];if(r===this.mySelfId){this.emit("7",t);return}let{flag:o,userId:n,tinyId:a,fromType:c}=t,l=oi(o,n),u=(m=this.remotePublishedUserMap.get(r))==null?void 0:m.muteState;if(u){let p=this.remotePublishedUserMap.get(r);p&&p.flag!==o&&(p.flag=o,this._log.info(`remote publish updated: ${JSON.stringify(p.muteState)}`),this.emit("6",{prevMuteState:u,muteState:l,flag:o}))}else this._log.info(`remote publish. state: ${JSON.stringify(l)}`),this.addUser({userId:n,tinyId:a,role:20,fromType:c}),this.emit("3",t),this.emit("6",{prevMuteState:oi(0,n),muteState:l,flag:o})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}};var Bf=Ge(Ze(),1);var Lo=class extends Bf.default{constructor(){super(...arguments);d(this,"_connectionTimeoutCount",0);d(this,"_isFirewallRestrictionEventEmitted",!1)}increaseTimeoutCount(){this._connectionTimeoutCount+=1,this.checkAndEmitFirewallRestriction()}resetTimeoutCount(){this._connectionTimeoutCount=0}checkAndEmitFirewallRestriction(){this._connectionTimeoutCount>=3&&!this._isFirewallRestrictionEventEmitted&&(this._isFirewallRestrictionEventEmitted=!0,this.emit("firewall-restriction"))}destroy(){this._connectionTimeoutCount=0,this._isFirewallRestrictionEventEmitted=!1,this.removeAllListeners()}};function Hh({timesInSecond:s,maxSizeInSecond:i,getSize:e}){return K((t,r)=>{let o=new WeakMap;return S.on(A.ROOM_DESTROY,({room:n})=>o.delete(n)),function(...n){let a=o.get(this);if(a||(a={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},o.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>=s||a.totalSizeInSecond>i))throw new D({code:I.INVALID_OPERATION,message:G({key:H.CALL_FREQUENCY_LIMIT,data:{isTimes:a.callCountInSecond>=s,isSize:a.totalSizeInSecond>i,name:r,timesInSecond:s,maxSizeInSecond:i}})});a.callCountInSecond++,t.call(this,...n)}})}var zS="2026-01-27 15:25:00",Hf=!0,$f=function(){var s;if(Hf){Hf=!1,C.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${gt}/en/index.html`),console.info(`* Changelog: ${gt}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),C.info("TRTC Web SDK Version:",We),li||C.debug("Build Time:",zS);let i=`UA: ${navigator.userAgent}
|
|
53
|
+
CPU core: ${navigator.hardwareConcurrency}, GPU: ${vr()}`;if(Ee&&window.screen&&(window.screen.width||window.screen.height)){let t=`${window.screen.width}x${window.screen.height}@${window.devicePixelRatio}`;i+=`, screen: ${t}`}let e=navigator.deviceMemory;e&&(i+=`, minRAM: ${e}GB`),C.info(i),C.info(`URL: ${location.href}${((s=self.frameElement)==null?void 0:s.tagName)==="IFRAME"?" in iframe":""}`),ns().then(t=>{t&&C.info(ai)})}};var vs={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},Ut=(v=>(v[v.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",v[v.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",v[v.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",v[v.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",v[v.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",v[v.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",v[v.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",v[v.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",v[v.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",v[v.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",v[v.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",v[v.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",v[v.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",v[v.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",v[v.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",v[v.INVALID_ROOM_ID_REQUIRED=5015]="INVALID_ROOM_ID_REQUIRED",v[v.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",v[v.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",v[v.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",v[v.INVALID_ROOM_ID_TYPE_MISMATCH=5019]="INVALID_ROOM_ID_TYPE_MISMATCH",v[v.INVALID_ROOM_ID_DUPLICATE=5020]="INVALID_ROOM_ID_DUPLICATE",v[v.INVALID_OPERATION=5100]="INVALID_OPERATION",v[v.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",v[v.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",v[v.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",v[v.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",v[v.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",v[v.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",v[v.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",v[v.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",v[v.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",v[v.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",v[v.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",v[v.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",v[v.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",v[v.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",v[v.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",v[v.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",v[v.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",v[v.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",v[v.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",v[v.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",v[v.DEVICE_ERROR=5300]="DEVICE_ERROR",v[v.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",v[v.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",v[v.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",v[v.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",v[v.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",v[v.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",v[v.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",v[v.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",v[v.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",v[v.NOT_SUPPORTED_MISMATCH_SAMPLE_RATE_IN_FIREFOX=5310]="NOT_SUPPORTED_MISMATCH_SAMPLE_RATE_IN_FIREFOX",v[v.SERVER_ERROR=5400]="SERVER_ERROR",v[v.NEED_TO_BUY=5401]="NEED_TO_BUY",v[v.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",v[v.OPERATION_FAILED=5500]="OPERATION_FAILED",v[v.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",v[v.REJOIN_FAILED=5502]="REJOIN_FAILED",v[v.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",v[v.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",v[v.VIDEO_ENCODE_FAILED=5505]="VIDEO_ENCODE_FAILED",v[v.AUDIO_ENCODE_FAILED=5506]="AUDIO_ENCODE_FAILED",v[v.VIDEO_DECODE_FAILED=5507]="VIDEO_DECODE_FAILED",v[v.AUDIO_DECODE_FAILED=5508]="AUDIO_DECODE_FAILED",v[v.OPERATION_ABORT=5998]="OPERATION_ABORT",v[v.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",v))(Ut||{});function Wf({code:s,params:i,enableDocLink:e=!1}){let t="",r,o=Ut[s];try{r=Gf[o]}catch(n){r=Gf.UNKNOWN_ERROR}return me(r)?t=r(i):ne(r)&&(t=r),i.fnName&&!t.includes(i.fnName)&&(t[t.length-1]!=="."&&(t+="."),t+=` thrown from ${i.fnName}()`),e&&(t+=" doc:"),t}var Gf=w(M({},Xe),{INVALID_PARAMETER({fnName:s}){return`the parameters of the '${s}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o="";return Array.isArray(i.type)?o=i.type.join("|"):o=i.type,`'${r}' must be type of ${o} when calling ${e}(), received type: ${Pe(t)}.`},INVALID_PARAMETER_EMPTY({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${o} when calling ${e}(), received type: ${Pe(t)}.`},INVALID_PARAMETER_RANGE({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:s,rule:i,fnName:e}){return`'${s||i.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:s,rule:i,value:e}){return`the min value of ${s||i.name} is ${i.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:s,rule:i,value:e}){return`the max value of ${s||i.name} is ${i.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:s,fnName:i}){return`'${s}' is not found in the document object when calling ${i}().`},INVALID_ELEMENT_ID_TYPE({key:s,fnName:i,type:e}){return`the element corresponding to '${s}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`},INVALID_STREAM_ID({key:s}){return`'${s}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:s}){return`'${s}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:s}){return`'${s}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:s}){return`'${s}' 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:s}){return`The type of target roomId must match the current roomId. Current room is using '${s}', but received '${s==="strRoomId"?"roomId":"strRoomId"}'.`},INVALID_ROOM_ID_DUPLICATE({key:s}){return`the target '${s}' must not be the same as the current '${s}'.`},INVALID_STREAM_TYPE:({fnName:s})=>`'streamType' is required when 'userId' is not '*', calling ${s}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:s}){return`the API '${s}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:s}){return`cannot ${s} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:s,value:i}){return`cannot ${s} because remote user(userId: ${i.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:s,value:i}){return`cannot ${s} because remote user(userId: ${i.userId}) does not publishing ${i.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:s}){return`you are already ${s}(), cannot repeated call '${s}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:s}){return`cannot call '${s}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:s}){return`cannot call '${s}' because the microphone or screen share is not turned on.`},INVALID_BUFFER_EMPTY:({key:s})=>`the buffer size of paramerter '${s}' 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:s})=>`you need to call ${s}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:s}){return`the current browser does not support the capability of the function '${s}' 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:s}){return`cannot call ${s} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:s,error:i}){return`'${s}' got device exception${i?`, error: ${i.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:s,deviceType:i=Ns(s),error:e}){return`NotFoundError, no ${i} detected, please check your device and the configuration on '${s}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:s,deviceType:i=Ns(s),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:s,deviceType:i=Ns(s),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:s,deviceType:i=Ns(s),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:s,deviceType:i=Ns(s),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:s,deviceType:i=Ns(s),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:s,deviceType:i=Ns(s),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:s}){return`camera recover capture failed ${(s==null?void 0:s.name)||""}: ${(s==null?void 0:s.originMessage)||(s==null?void 0:s.message)}`},MICROPHONE_RECOVER_FAILED({error:s}){return`microphone recover capture failed ${(s==null?void 0:s.name)||""}: ${(s==null?void 0:s.originMessage)||(s==null?void 0:s.message)}`},OPERATION_FAILED({fnName:s,error:i}){return`'${s}' 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:s}){return`an error was caught on trtc.on('${s}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:s,error:i}){return`video context error ${s} ${(i==null?void 0:i.name)||""} ${(i==null?void 0:i.message)||""}`},SERVER_ERROR({fnName:s,error:i}){return`'${s}' got server error: ${i==null?void 0:i.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:s,url:i}){return`You need to buy packages for ${s}. Refer to: ${i}`},ACCOUNT_NO_MONEY:({fnParams:s})=>`your TRTC account run out of credit, please recharge.${s.sdkAppId?` SDKAppId: ${s.sdkAppId}`:""}`,OPERATION_ABORT({fnName:s}){return`'${s}' abort`},UNKNOWN_ERROR({fnName:s,error:i}){return`'${s}' throw unknown exception${i?`, error: ${i.toString()}.`:"."}`}});function Ns(s){if(!s)return"camera";let i=s.toLowerCase();return i.includes("screen")?"screen share":i.includes("audio")?"microphone":"camera"}var $h=class s extends Error{constructor({code:e,extraCode:t,message:r="",messageParams:o,fnName:n="",originError:a,data:c}){var u;let l;r?l=r:l=Wf({code:e===U.SERVER_ERROR?e:t||e,params:M({fnName:n,error:a},o)});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=Ut[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 m={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},p={startLocalVideo:"webcam",startLocalAudio:"microphone"},h=document.createElement("a");ss?h.href=`ms-settings:privacy-${p[this.functionName]}`:di&&(h.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${m[this.functionName]}`),h.href.length>0&&h.click()})}static convertFrom(e,t,r){let o=e;if(e instanceof D){let{stack:n}=e,a={code:U.UNKNOWN_ERROR,fnName:t,originError:e};switch(e.getCode()){case I.INVALID_PARAMETER:a.code=U.INVALID_PARAMETER,a.message=e.message;break;case I.INVALID_OPERATION:a.code=U.INVALID_OPERATION;break;case I.NOT_SUPPORTED:case I.NOT_SUPPORTED_H264:a.code=U.ENV_NOT_SUPPORTED,e.getCode()===I.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes(Xe.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case I.JOIN_ROOM_FAILED:a.messageParams={fnParams:r};case I.SERVER_TIMEOUT:case I.SWITCH_ROLE_FAILED:case I.SWITCH_ROOM_FAILED:a.code=U.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case I.API_CALL_ABORTED:a.code=U.OPERATION_ABORT;break;case I.DEVICE_NOT_FOUND:case I.DEVICE_AUTO_RECOVER_FAILED:case I.INITIALIZE_FAILED:a.code=5300,e.name&&(a.extraCode=QS(e.name));break;case I.VIDEO_ENCODE_FAILED:a.extraCode=5505;case I.AUDIO_ENCODE_FAILED:a.extraCode=5506,a.code=U.OPERATION_FAILED;break;case I.UNKNOWN:break;default:a.code=U.OPERATION_FAILED}o=new s(a),n&&(o.stack+=n.substr(n.indexOf(`
|
|
54
|
+
`)))}else{if(e instanceof s)return e;o=new s({code:U.UNKNOWN_ERROR,fnName:t,originError:e})}return o}};function QS(s){let i;switch(s){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 B=$h;function bt(s){return s==="sub"?"auxiliary":s==="auxiliary"?"sub":"main"}function na(s){return s===vs.QOS_PREFERENCE_CLEAR?"detail":s===vs.QOS_PREFERENCE_SMOOTH?"motion":""}function wo(s,i){let e=i?hl:Tr;return Fl(s)?M(M({},e),s):ti[s]?ti[s]:e}var Jf={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}}},jf={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}}},xo={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(s,i,e){if(ne(s)&&!document.getElementById(s))throw new B({code:U.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:i}})}},qf={name:"userId",required:!0,type:"string"},Xf={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{type:["string","object"],properties:{bitrate:{type:"number"},channelCount:{type:"number"}}},echoCancellation:{values:[!0,!1,"remote-only","all"]},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function Uo(s,i){if(!s)throw new B({code:U.INVALID_OPERATION,extraCode:5101,fnName:i})}function zf(s,i,e){if(!s)throw new B({code:U.INVALID_OPERATION,extraCode:5102,fnName:i,messageParams:{value:e}})}function Qf(s,i,e){if(!(/^[1-9]\d*$/.test(String(s))&&s<4294967295))throw new B({code:U.INVALID_PARAMETER,extraCode:5013,fnName:i,messageParams:{key:e}})}function Yf(s,i,e){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(s))throw new B({code:U.INVALID_PARAMETER,extraCode:5012,fnName:i,messageParams:{key:e}})}var Tw={type:"number",notLessThanZero:!0},YS=(s,i)=>s.width*s.height>=i.width*i.height&&s.frameRate>=i.frameRate&&s.bitrate>=i.bitrate;function Zf(s){var t;if(!((t=s==null?void 0:s.option)!=null&&t.small))return;if(!xc()){C.warn("small stream is not supported"),delete s.option.small;return}let i=wo(s.option.profile),e=wo(s.option.small,!0);if(!YS(i,e)){C.warn(`small stream profile must be less than big stream profile. Big: ${JSON.stringify(i)}, Small: ${JSON.stringify(e)}`),delete s.option.small;return}}var ZS={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(s,i,e){if(this._room.isJoined)throw new B({code:U.INVALID_OPERATION,extraCode:5104,fnName:e});if(s.roomId){if(ne(s.roomId))throw new B({code:U.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:i}});Qf(s.roomId,e,i)}else if(s.strRoomId)Yf(s.strRoomId,e,i);else throw new B({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:xo,mute:{type:["boolean","string"]},publish:{type:"boolean"},capture:{required:!1,type:"boolean"},option:Jf},validate(s){var i,e;if(!((i=s==null?void 0:s.option)!=null&&i.videoTrack)&&tr())throw new B({code:U.ENV_NOT_SUPPORTED,extraCode:5201});(e=s==null?void 0:s.option)!=null&&e.small&&Zf(s)}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:w(M({},xo),{required:!1}),publish:{type:"boolean"},capture:{required:!1,type:"boolean"},mute:{type:["boolean","string"]},option:Jf},validate(s){var i;(i=s==null?void 0:s.option)!=null&&i.small&&Zf(s)}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},mute:{type:["boolean","string"],values:[!0,!1,"microphone"]},muteKeepVolumeDetection:{type:"boolean"},option:Xf},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.audioTrack)&&tr())throw new B({code:U.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:["boolean","string"],values:[!0,!1,"microphone"]},muteKeepVolumeDetection:{type:"boolean"},option:Xf}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:xo,publish:{type:"boolean"},option:jf},validate(s,i,e,t,r){var o;if(!((o=s==null?void 0:s.option)!=null&&o.videoTrack)){if(tr())throw new B({code:U.ENV_NOT_SUPPORTED,extraCode:5201});if(!Pn())throw new B({code:U.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:xo,publish:{type:"boolean"},option:jf}},muteRemoteAudio:[qf,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[qf,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:xo,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(s,i,e){Uo(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(zf(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new B({code:U.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:s}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:w(M({},xo),{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(s,i,e){Uo(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(zf(!!t,e,s),t){if(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary)throw new B({code:U.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:s}});if(s.option){let r=s.streamType==="main"?t.remoteVideoTrack:t.remoteAuxiliaryTrack;if((s.option.pictureInPicture||s.option.fullScreen||s.option.fullScreen)&&(!r.isSubscribed||!r.player.isPlaying))throw new B({code:U.INVALID_OPERATION,message:"cannot set pictureInPicture or fullScreen when remote video is not playing"})}}}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(s,i,e){if(s.userId!=="*"&&T(s.streamType))throw new B({code:U.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(s,i,e){Uo(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(s,i,e,t){if(!wn)throw new B({code:U.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new B({code:U.INVALID_OPERATION,fnName:e,extraCode:5108});if(s.byteLength>1e3)throw new B({code:U.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new B({code:U.INVALID_PARAMETER,extraCode:5017,messageParams:{key:i},fnName:e});Uo(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(s,i,e){if(!s&&!this._room.isMainStreamPublished||s&&!this._room.isAuxStreamPublished)throw new B({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(s,i,e,t){if(s.byteLength>1e3)throw new B({code:U.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new B({code:U.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:i}})}}},validate(s,i,e){if(Uo(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new B({code:U.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:i}})}},switchRoom:{name:"switchRoomConfig",type:"object",required:!0,validate(s,i,e){if(Uo(this._room.isJoined,e),this._room.useStringRoomId&&s.strRoomId===this._room.roomId||!this._room.useStringRoomId&&s.roomId===Number(this._room.roomId))throw new B({code:U.INVALID_PARAMETER,extraCode:5020,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(s.roomId&&this._room.useStringRoomId||!s.roomId&&s.strRoomId&&!this._room.useStringRoomId)throw new B({code:U.INVALID_PARAMETER,extraCode:5019,fnName:e,messageParams:{key:this._room.useStringRoomId?"strRoomId":"roomId"}});if(s.roomId)Qf(s.roomId,e,i);else if(s.strRoomId)Yf(s.strRoomId,e,i);else throw new B({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}}}},je={TRTC:ZS};var ht=class extends Error{};function KS(s,i){let e=Yr(s);for(let t=0;t<i.length;t++)ni(e[t],i[t]);return e}function eI(s){this._resolve=Promise.resolve(s)}function tI(s){this._reject=Promise.reject(s)}var Hr=class Hr{constructor(i,e){this.instance=i;this.group=e;d(this,"started",!1);d(this,"ops",[]);d(this,"startSame",()=>!0);d(this,"mergeUpdate",KS);let t=Hr.instances.get(i);t?t.set(e,this):Hr.instances.set(i,new Map([[e,this]]))}static get(i,e){if(!e)return;let t=Hr.instances.get(i);return t&&t.get(e)||new Hr(i,e)}static gets(i,e){let t=Hr.instances.get(i),r=[];return t&&t.forEach((o,n)=>{e.test(n)&&r.push(o)}),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},o=a=>{var c,l;throw this.ops.shift(),i===0&&((c=this.currentOp)==null?void 0:c.type)===2&&this.ops.shift().reject(new ht("start failed")),(l=this.currentOp)==null||l.action(),a},n={type:i,action:()=>e(...n.args).then(r,o),args:t,resolve:eI,reject:tI};try{switch(this.state){case 1:if(i===0)throw new ht("already started");break;case 4:if(i===2)throw new ht("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,o)}cacheOp(i){if(this.ops.length===1)switch(this.state){case 0:case 2:if(i.type===0)throw new ht("already start");break;case 3:switch(i.type){case 2:throw new ht("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new ht("unknown state")}else switch(i.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let t=new ht("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 ht("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new ht("start not allowed after update");case 0:throw new ht("duplicate start");case 3:if(this.startSame(this.currentOp.args,i.args))throw this.ops.pop().reject(new ht("keep start")),new ht("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(Hr,"instances",new WeakMap);var dr=Hr;var Rd=new WeakMap,Cd=(s,i)=>{if(i instanceof ht){let{stack:e}=i;i=new B({code:U.OPERATION_ABORT,message:`${s} abort: ${i.message}`,fnName:s}),e&&(i.stack+=e.substr(e.indexOf(`
|
|
55
|
+
`)))}throw i};function $r(s,i){return K((e,t)=>function(...r){let o=dr.get(this,typeof s=="string"?s:s.call(this,...r));return o?(i&&(o.startSame=i.bind(this)),o.action(0,e.bind(this),r).catch(Cd.bind(null,t))):e.apply(this,r)})}function Ds(s,i){let{merge:e,debounce:t}=i||{};return K((r,o)=>function(...n){let a=dr.get(this,typeof s=="string"?s:s.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,m)=>{var E,g;let p=(E=Rd.get(this))==null?void 0:E.get(l(...n));if(p){let{timeoutId:R,resolve:N}=p;clearTimeout(R),N()}let h=setTimeout(()=>{if(a.state===3||a.state===4)return u();a.action(2,r.bind(this),n).catch(Cd.bind(null,o)).then(u,m)},c);Rd.has(this)?(g=Rd.get(this))==null||g.set(l(...n),{timeoutId:h,resolve:u}):Rd.set(this,new Map([[l(...n),{timeoutId:h,resolve:u}]]))})}return a.action(2,r.bind(this),n).catch(Cd.bind(null,o))})}function Gr(s){return K((i,e)=>function(...t){let r=typeof s=="function"?s.call(this,...t):s;if(r instanceof RegExp)return Promise.all(dr.gets(this,r).map(n=>n.action(3,()=>Promise.resolve(),t))).then(()=>i.call(this,...t));let o=dr.get(this,r);return o?o.action(3,i.bind(this),t).catch(Cd.bind(null,e)):i.apply(this,t)})}function Wr(){return function(s,i,e){return s.prototype[i]=function(){let t=this._log||console,r=`"${i}" is a static method. Use TRTC.${i}() instead. See: ${gt}/en/TRTC.html#.${i}`;t.warn(r)},e}}var L={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",PERMISSION_STATE_CHANGE:"permission-state-change",VIDEO_SIZE_CHANGED:"video-size-changed",REALTIME_TRANSCRIBER_MESSAGE:"realtime-transcriber-message",REALTIME_TRANSCRIBER_STATE_CHANGED:"realtime-transcriber-state-changed",PICTURE_IN_PICTURE_STATE_CHANGED:"picture-in-picture-state-changed",FULL_SCREEN_STATE_CHANGED:"full-screen-state-changed"},Kf=new Set([L.AUDIO_VOLUME,L.AUDIO_FRAME,L.NETWORK_QUALITY,L.STATISTICS,L.SEI_MESSAGE,L.CUSTOM_MESSAGE,L.LAYER_DATA]);var Jh={};Bi(Jh,{ScheduleRequestType:()=>i_,getAbilityConfig:()=>sI,getScheduleDomain:()=>vd,isNeedToSchedule:()=>yd,scheduleProxy:()=>Ii,sendScheduleRequest:()=>Wh,setIsNeedToSchedule:()=>Vt,setScheduleProxy:()=>bd});var Gh=null,t_=0,iI=48*3600*1e3,yd=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(Wi).map(s=>`<link rel="dns-prefetch" href="https://${s}">`).join(`\r
|
|
56
|
+
`));function Vt(s){pe(s)&&s!==yd&&(yd=s,C.info(`setIsNeedToSchedule ${s}`),s||(t_=Date.now()+iI))}S.on("28",()=>Vt(!0));S.on("63",()=>Vt(!0));S.on("84",()=>Vt(!0));S.on("201",s=>{s.state==="RECONNECTING"&&Vt(!0)});S.on("202",s=>{s.state==="RECONNECTING"&&Vt(!0)});function rI(s,i,e){let t={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let r=performance.getEntriesByType("resource"),o=Jr(s,"config",_.MAIN),n=Jr(s,"config",_.BACKUP);for(let a of r)if(a.startTime>=e&&(a.name===o||a.name===n)&&a.transferSize>0){let c=a.name===o?_.MAIN:_.BACKUP,l=Math.round(a.duration),u=Math.round(a.domainLookupStart-a.startTime),m=a.redirectStart>0?Math.round(a.redirectEnd-a.redirectStart):0,p=a.fetchStart>0?Math.round(a.domainLookupStart-a.fetchStart):0,h=Math.round(a.domainLookupEnd-a.domainLookupStart),E=Math.round(a.requestStart-a.secureConnectionStart),g=Math.round(a.secureConnectionStart-a.connectStart),R=Math.round(a.responseStart-a.requestStart),N=Math.round(a.responseEnd-a.responseStart),j=[h,E,g,R,N];se.uploadEvent({log:`stat-schedule-net:${l}(${u}(${m}->${p})->${j.join("->")}) ${c}`,userId:i}),t=w(M({},t),{totalCost:l,local:u,dns:h,tcp:g,tls:E,request:R,response:N});break}}catch(r){C.error("getScheduleDetailCost error",r)}return t}function Wh(l){return f(this,arguments,function*({userId:s,sdkAppId:i,useStringRoomId:e,roomId:t,userSig:r,version:o,frameWorkType:n,role:a,latencyLevel:c}){var m;if(!yd&&Gh&&t_>Date.now())return{isCached:!0,result:Gh};let u={delta:0,count:[1,1],msg:[],detail:[]};try{let p=new FormData;p.append("userId",String(s)),p.append("sdkAppId",String(i)),p.append("isStrGroupId",String(e)),p.append("groupId",String(t)),p.append("sdkVersion",o),p.append("userSig",String(r));let h=((m=yield ns())==null?void 0:m.model)||Tc();h&&p.append("model",h);let E=Mt();E&&p.append("osString",E);let g=vr();g&&p.append("gpu",g),a&&p.append("role",String(a)),c&&p.append("latencyLevel",String(c)),n&&p.append("frameWorkType",String(n));let R=x(),N=yield nI(p,u,i);N.config&&(N.config.loggerDomain&&qr(N.config.loggerDomain),pe(N.config.scheduleCache)&&Vt(!N.config.scheduleCache)),u.delta=x()-R;let j=rI(Number(i),s,R);return Gh=N,{isCached:!1,result:N,detailCost:j}}catch(p){let h=Ie(p)?p[0]:p,E=te(h.code)?h.code:0,g=`schedule failed${h.message?`: ${h.message}`:""}`,R=new D({code:I.SCHEDULE_FAILED,extraCode:E,message:G({key:H.JOIN_ROOM_FAILED,data:{error:g,code:E}})});throw C.error(g,E),R}})}var Ii={main:"",backup:""};function bd(s){Ie(s)?(Ii.main=s[0],Ii.backup=s[1]):(Ii.main=s,Ii.backup=s)}var i_=(t=>(t.CONFIG="config",t.TRTC_AUTO_CONF="trtcAutoConf",t.AUDIO_AI_AUTH="audioAiAuth",t))(i_||{});function Jr(s,i,e=_.MAIN,t=!1){return`https://${Ii[e]||vd(s,e,t)}/api/v1/${i}`}function sI(s,i,e){let t=Jr(s,i),r=Jr(s,i,_.BACKUP),o=new URLSearchParams(e).toString(),n=fetch(`${t}?${o}`).then(c=>c.json()),a=fetch(`${r}?${o}`).then(c=>c.json());return ts([n,a])}function vd(s,i=_.MAIN,e=!1){let t;return $t(s)?e?t=i===_.MAIN?Wi.MAIN_OVERSEA_BACKUP:Wi.BACKUP_OVERSEA:t=i===_.MAIN?Wi.MAIN_OVERSEA:Wi.BACKUP_OVERSEA:t=i===_.MAIN?Wi.MAIN:Wi.BACKUP,t}function oI(s,i,e){return new Promise((t,r)=>{Xi({url:s,body:i,timeout:e.timeout,priority:"high"}).then(o=>{o.data.code===0?t(o.data.data):r({code:o.data.code,message:o.data.msg})}).catch(r)})}var e_=(s,i)=>bi({retryFunction:oI,settings:{retries:3,timeout:0},onError:i,onRetrying:s});function nI(s,i,e){return new Promise((t,r)=>{let o=null;ts([e_(n=>i.count[0]=n+1,({error:n,retry:a,retriedCount:c,retryFuncArgs:l})=>{i.msg[0]=n.message,o||(c>=1&&(l[0]=Jr(e,"config",_.MAIN,!0)),a())})(Jr(e,"config",_.MAIN),s,{get timeout(){return Kr(2+i.count[0])*1e3}}),e_(n=>i.count[1]=n+1,({error:n,retry:a,retriedCount:c,retryFuncArgs:l})=>{i.msg[1]=n.message,o||(c>=2&&(l[0]=Jr(e,"config",_.BACKUP,!0)),a())})(Jr(e,"config",_.BACKUP),s,{get timeout(){return Kr(2+i.count[1])*1e3}})]).then(n=>{o=n,t(o)}).catch(r)})}var aI=s=>s.startsWith("data:application/octet-stream;base64,"),cI=s=>s.startsWith("file://"),aa=class{constructor(){d(this,"_log");this._log=C.createLogger({id:"fd"})}download(i,e){return f(this,null,function*(){let{type:t="blob"}=e||{};i=ja(i);try{let r=x(),o;if(me(fetch)?o=yield this.downloadWithFetch(i,t):o=yield this.downloadWithXHR(i,t),!o||!o.data)throw new Error("data is empty");let n=x()-r;return this._log.info(`downloaded: ${i}, return type: ${t}, cost: ${n}ms`),y.addSuccessEvent({key:522700,cost:x()-r}),o.data}catch(r){throw this._log.error(`failed to download: ${i}, error: ${r}`),y.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 o=new Error(`network response was not ok: ${t.status}`);throw o.status=t.status,o}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 o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType=e,o.onload=()=>{if(o.status===200||o.status===0&&o.response)t({data:o.response});else{let n=new Error(`XHR failed, status: ${o.status}`);n.status=o.status,r(n)}},o.onerror=r,o.send(null)})}loadWasm(i,e){return f(this,null,function*(){this._log.info(`loadWasm ${i}, importObject: ${JSON.stringify(e)}`);let t=x(),r=null,o=null;if(me(WebAssembly.instantiateStreaming)&&!aI(i)&&!cI(i)&&me(fetch))try{let n=fetch(i);r=(yield WebAssembly.instantiateStreaming(n,e)).instance}catch(n){o=n}if(!r)try{let n=yield this.download(i,{type:"arraybuffer"});r=(yield WebAssembly.instantiate(n,e)).instance}catch(n){o=n}if(r){let n=x()-t;return this._log.info(`loadedWasm ${i}, cost: ${n}ms`),y.addSuccessEvent({key:522701,cost:n}),r}throw this._log.error(`failed to loadWasm ${i}, error: ${o}`),y.addFailedEvent({key:522701,error:o}),o})}loadScript(i){this._log.info(`loadScript ${i}`);let e=x();return new Promise((t,r)=>{let o=document.createElement("script");o.type="text/javascript",o.onload=()=>{this._log.info(`loadedScript ${i}, cost: ${x()-e}ms`),y.addSuccessEvent({key:522702,cost:x()-e,split:1e3}),t(o)},o.onerror=n=>{this._log.error(`failed to loadScript ${i}, error: ${(n==null?void 0:n.message)||JSON.stringify(n)}`),y.addFailedEvent({key:522702}),r(n)},o.crossOrigin="anonymous",o.src=i,document.head.append?document.head.append(o):document.getElementsByTagName("head")[0].appendChild(o)})}};O([kt({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}`)}})],aa.prototype,"download",1),O([kt({settings:{timeout:3e3,retries:3},onRetrying(i){this._log.warn(`loadScript retrying: ${i}`)}})],aa.prototype,"loadScript",1);var ca=new aa;function jh([s,i]){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,o=[];o.push(0,0,0,1,6,s);for(let a=0;a<t;a++)o.push(255);o.push(r);let n=new DataView(i);return o.push(...new Uint8Array(n.buffer)),o.push(128),new cr(new DataView(new Uint8Array(o).buffer),!0)}function qh(s){return s.type==="empty"||s.data.byteLength===0}function Xh(s){let i=new DataView(s),e=0;for(;e<i.byteLength;){let t=vo(i,e);if(t===0){e+=1;continue}let r=e+t;if(r<i.byteLength&&(i.getUint8(r)&31)===6)return!0;e+=t+1}return!1}function zh(s){let i=0,e=0,t=new DataView(s);for(let r=0;r<s.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 Qh({frame:s,seiMessageList:i}){if(!i||i.length===0||s.data.byteLength===0)return s;let t=9-zh(s.data);if(t<=0)return s;let r=i.splice(0,t).reverse().map(jh),o=r.reduce((u,m)=>u+m.dataView.byteLength,0),n=new ArrayBuffer(o+s.data.byteLength),a=new DataView(n),c=new DataView(s.data),l=0;for(let u=0;u<r.length;u++)for(let m=0;m<r[u].dataView.byteLength;m++)a.setInt8(l++,r[u].dataView.getInt8(m));for(let u=0;u<s.data.byteLength;u++)a.setInt8(l++,c.getInt8(u));return s.data=n,s}function Yh({frame:s,onSEI:i}){try{if(qh(s)||!Xh(s.data))return s;let e=hd(s.data,!1).filter(t=>t.isSEI);i==null||i(e.reverse())}catch(e){}return s}function r_({seiMessageList:s,isAudio:i,getNtpTime:e,isMain:t}){return new TransformStream({transform(r,o){let n=r;i?audioEncodePipeline.forEach(a=>{n=a({frame:n,ntp:e(),onDump:()=>{self.postMessage({type:"dump",isAudio:i,data:n.data,userId:""})}})}):videoEncodePipeline.forEach(a=>{n=a({frame:n,seiMessageList:s,onDump:()=>{self.postMessage({type:"dump",isAudio:i,data:n.data,userId:"",streamType:t?"main":"auxiliary"})}})}),o.enqueue(n)}})}function s_({userId:s,streamType:i,isAudio:e}){return new TransformStream({transform(t,r){let o=t;e?(audioDecodePipeline.forEach(n=>{o=n({frame:o,onAudioFrameNTPTime:a=>{self.postMessage({type:"audio-ntp",data:a,userId:s,streamType:i})},onDump:()=>{self.postMessage({type:"dump",isAudio:e,data:o.data,userId:s})}})}),r.enqueue(o)):videoDecodePipeline.forEach(n=>{o=n({frame:o,onSEI:a=>{a.forEach(c=>{self.postMessage({type:"sei",seiPayloadType:c.seiPayloadType,data:c.seiPayload.buffer,userId:s,streamType:i})})},onDump:()=>{self.postMessage({type:"dump",isAudio:e,data:o.data,userId:s,streamType:i})}})}),r.enqueue(o)}})}function Nd(s){let i=[cr],e=[zh,qh,hd,Xh,jh,r_,s_,za,Xa,vo],t=()=>{let l=[],u=[],m=[],p=0;self.onmessage=h=>{switch(h.data.type){case"sei":h.data.isMain?(l.push(h.data.data),h.data.small&&m.push(h.data.data)):u.push(h.data.data);break;case"ntp-offset":p=h.data.data;break}},self.onrtctransform=h=>{let{options:E}=h.transformer,g=E.isReceiver?s_({userId:E.userId,streamType:E.streamType,isAudio:E.isAudio}):r_({getNtpTime:()=>Date.now()+p,isAudio:E.isAudio,isMain:E.isMain,seiMessageList:E.isMain?E.small?m:l:u});h.transformer.readable.pipeThrough(g).pipeTo(h.transformer.writable)}},r=`const videoEncodePipeline=[${s.videoEncodePipeline.toString()}];
|
|
57
|
+
const videoDecodePipeline=[${s.videoDecodePipeline.toString()}];
|
|
58
|
+
const audioEncodePipeline = [${s.audioEncodePipeline.toString()}];
|
|
59
|
+
const audioDecodePipeline = [${s.audioDecodePipeline.toString()}];`,o=`(()=>{${i.map(l=>`const ${l.name}=(()=>${l.toString()})()`).join(`
|
|
101
60
|
`)}
|
|
102
61
|
${e.map(l=>l.toString()).join(`
|
|
103
|
-
`)};(${
|
|
62
|
+
`)};(${t})();${r}})()`,n=new Blob([o],{type:"text/javascript"}),a=URL.createObjectURL(n),c=new Worker(a);return URL.revokeObjectURL(a),c}var lr=class{constructor(i){d(this,"audioPlayer");d(this,"videoPlayer");d(this,"log");this.audioPlayer=i.audioPlayer,this.videoPlayer=i.videoPlayer,this.log=i.log.createChild({id:"pip"}),this.videoPlayer.on(W.USER_RESUME_IN_PIP_OR_FULL_SCREEN,this.handleUserResumeInPIPOrFullScreen,this),this.videoPlayer.on(W.USER_PAUSE_IN_PIP_OR_FULL_SCREEN,this.handleUserPauseInPIPOrFullScreen,this),this.videoPlayer.on(W.ENTER_PICTURE_IN_PICTURE,this.handleEnterPIPOrFullScreen,this),this.videoPlayer.on(W.ENTER_FULL_SCREEN,this.handleEnterPIPOrFullScreen,this),this.videoPlayer.on(W.LEAVE_PICTURE_IN_PICTURE,this.handleLeavePIP,this),this.videoPlayer.on(W.LEAVE_FULL_SCREEN,this.handleLeaveFullScreen,this),this.videoPlayer.on(W.VOLUME_CHANGE,this.handleVolumeChange,this)}handleUserResumeInPIPOrFullScreen(){this.audioPlayer.isPaused&&(this.log.warn(`resume audio in ${this.videoPlayer.isPictureInPicture()?"pip":"fullscreen"}`),this.audioPlayer.doResume()),fe&&br&&this.videoPlayer.resetSrcObjectToReplay()}handleUserPauseInPIPOrFullScreen(){this.audioPlayer.isPaused||(this.log.warn(`pause audio in ${this.videoPlayer.isPictureInPicture()?"pip":"fullscreen"}`),this.audioPlayer.doPause())}handleEnterPIPOrFullScreen(){this.videoPlayer.element&&this.audioPlayer.muted!==this.videoPlayer.element.muted&&(this.log.warn(`sync video muted to ${this.audioPlayer.muted} when enter ${this.videoPlayer.isPictureInPicture()?"pip":"fullscreen"}`),this.videoPlayer.element.muted=this.audioPlayer.muted)}handleLeavePIP(){this.audioPlayer.isPaused&&!this.audioPlayer.isPausedByUserCall&&(this.log.warn("resume after leave pip"),this.audioPlayer.doResume()),this.videoPlayer.isPaused&&!this.videoPlayer.isPausedByUserCall&&(this.log.warn("resume video after leave pip"),this.videoPlayer.doResume())}handleLeaveFullScreen(){this.audioPlayer.isPaused&&!this.audioPlayer.isPausedByUserCall&&(this.log.warn("resume audio after leave fullscreen"),this.audioPlayer.doResume()),this.videoPlayer.isPaused&&!this.videoPlayer.isPausedByUserCall&&(this.log.warn("resume video after leave fullscreen"),fe&&br?this.videoPlayer.resetSrcObjectToReplay():this.videoPlayer.doResume())}handleVolumeChange(i){i.muted!==void 0&&this.audioPlayer.muted!==i.muted&&(this.log.warn(`sync audio muted to ${i.muted} in ${this.videoPlayer.isPictureInPicture()?"pip":"fullscreen"}`),this.audioPlayer.setMuted(i.muted))}destroy(){this.videoPlayer.off(W.USER_RESUME_IN_PIP_OR_FULL_SCREEN,this.handleUserResumeInPIPOrFullScreen,this),this.videoPlayer.off(W.USER_PAUSE_IN_PIP_OR_FULL_SCREEN,this.handleUserPauseInPIPOrFullScreen,this),this.videoPlayer.off(W.ENTER_PICTURE_IN_PICTURE,this.handleEnterPIPOrFullScreen,this),this.videoPlayer.off(W.ENTER_FULL_SCREEN,this.handleEnterPIPOrFullScreen,this),this.videoPlayer.off(W.LEAVE_PICTURE_IN_PICTURE,this.handleLeavePIP,this),this.videoPlayer.off(W.LEAVE_FULL_SCREEN,this.handleLeaveFullScreen,this),this.videoPlayer.off(W.VOLUME_CHANGE,this.handleVolumeChange,this)}};var o_=!1,n_;function a_({TRTC:s,room:i,errorModule:e,assetsPath:t}){return{TRTC:s,LocalMixVideoTrack:Cs,LocalVideoTrack:ze,LocalScreenTrack:xt,room:i,assetsPath:t,fileDownloader:ca,innerEmitter:S,INNER_EVENT:A,constants:Rl,environment:co,utils:Uh,eventLogger:se,log:this.room.getLogger(),loggerManager:C,errorModule:e,kvStatManager:y,rtcDectection:Mi,trtc:this,rx:wh,enums:fu,schedule:Jh,getDevices:Io,initVisionTaskRegistry:(r,o,n="/mediapipe/vision.js")=>f(this,null,function*(){!window.VisionTaskRegistry&&!o_&&(o_=!0,n_=ca.loadScript(`${r}/${n}`.replace(/([^:]\/)\/+/g,"$1"))),yield n_,yield(yield window.VisionTaskRegistry.getInstance(r)).preloadModels(o)}),audioContext:Ae(),deviceDetector:Ne,AudioPlayer:Ro,RemoteAudioPlayer:Co,VideoPlayer:rt,showAutoPlayDialog:go,Timer:ce,clearStarted:(r,o)=>{let n=r.getAlias(),a=dr.instances.get(this);if(a)if(o){let c=a.get(n+o);if(!c)return;c.started=!1}else a.forEach((c,l)=>{l.startsWith(n)&&(c.started=!1)})},startGetPCM:oa,createAudioNode:So,getNetworkTimeOffset:xm,validateSourceNode:()=>{var r;if(re&&!((r=this.room.audioManager._localAudioPipline)!=null&&r.source.node))throw new B({code:U.DEVICE_ERROR,extraCode:5310,message:"The audio processing plugin cannot be used due to the microphone's sampling rate is not 48KHz in Firefox. Please switch to another browser such as Chrome."})},createScriptTransformWorker:Nd,AVPlayerStateSyncManager:lr,PlayerEvent:W}}var c_=(s,i)=>{let{emit:e}=s;return s.emit=(...t)=>{try{return e.apply(s,t)}catch(r){let o=G({key:H.CATCH_HANDLER_ERROR,data:{name:i,event:t[0]},addDocLink:!1});return C.warn(`${o}
|
|
104
63
|
|
|
105
|
-
${o.stack}`),!1}},i};var Yn=new WeakMap;function kT(i){let t=Yn.get(i);t&&(t.forEach(e=>clearTimeout(e)),Yn.delete(i))}function UT(i,t){return Pe((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 d=setTimeout(()=>{var l;(l=Yn.get(this))==null||l.delete(n)},i);s.set(n,d)}else{clearTimeout(a);let d=window.setTimeout(()=>{var l;e.apply(this,o),(l=Yn.get(this))==null||l.delete(n)},i);s.set(n,d)}})}var FT="trtc-sdk-v5",Rf="5.15.1-wasm.3";function $t(...i){return Pe((t,e)=>function(...r){try{wl.call(this,i,r,e,this._name)}catch(o){return Promise.reject(o)}return t.apply(this,r)})}function vf(...i){return Pe((t,e)=>function(...r){try{wl.call(this,i,r,e,this._name)}catch(o){throw o}return t.apply(this,r)})}function wl(i,t,e,r){if(ut(i))for(let o=0;o<i.length;o++)Dl.call(this,{rule:i[o],value:t[o],key:i[o].name,fnName:e,className:r});else Dl.call(this,{rule:i,value:t[0],key:i.name,fnName:e,className:r})}function Dl({rule:i,value:t,key:e,fnName:r,className:o}){function s(d){return{code:oe.INVALID_PARAMETER,extraCode:d,fnName:r,messageParams:{key:e,rule:i,value:t}}}if(O(t)){if(i.required)throw new ne(s(5001));if(O(i.defaultValue)){Xe(i.validate)&&i.validate.call(this,t,e,r,o,this);return}t=i.defaultValue}if(Array.isArray(i.type)){let d=!1;for(let l=0;l<i.type.length;l++)i.type[l]===null&&t===null&&(d=!0),Xe(i.type[l])&&t instanceof i.type[l]&&(d=!0),Oe(i.type[l])&>(t)===i.type[l].toLowerCase()&&(d=!0);if(!d)throw new ne({code:oe.INVALID_PARAMETER,extraCode:5002,fnName:r,messageParams:{key:e,rule:{type:i.type.map(l=>cs(l)?dn(l):Oe(l)?l:gt(l))},value:t}})}else if(!O(i.type)&>(t)!==i.type)throw new ne(s(5002));if(i.allowEmpty===!1){let d=Be(t)&&(t===0||Number.isNaN(t)),l=Oe(t)&&t.trim()==="";if(d||l)throw new ne(s(5003))}if(i.notLessThanZero&&Be(t)&&t<0)throw new ne(s(5006));if(!O(i.min)&&Be(t)&&t<i.min)throw new ne(s(5007));if(!O(i.max)&&Be(t)&&t>i.max)throw new ne(s(5008));if(Oe(i.instanceOf)){if(!t||t._name!==i.instanceOf)throw new ne(s(5004))}else if(Xe(i.instanceOf)&&!(t instanceof i.instanceOf))throw new ne(s(5004));if(Array.isArray(i.values)&&!i.values.includes(t))throw new ne(s(5005));let{properties:n}=i;Jt(n)&&fr(t)&&Object.keys(n).forEach(d=>{Dl.call(this,{rule:n[d],value:t&&t[d],key:`${d}`,fnName:r,className:o})});let{arrayItem:a}=i;Jt(a)&&ut(t)&&t.forEach((d,l)=>{Dl.call(this,{rule:a,value:d,key:`${e}[${l}]`,fnName:r,className:o})}),Xe(i.validate)&&i.validate.call(this,t,e,r,o,this)}var hv=0;function at(i={}){let{getRemoteId:t=()=>"",replaceArg:e,getKVReportKey:r,ignoreLog:o,ignoreErrorLog:s}=i;return Pe((n,a)=>function(...d){var R,y,N;function l(P,W,G){if(G&&G.includes(P))return"hided";if(e){let ae=e(...d);if(d[ae.argIndex]===W)return ae.value}if(W===d||P in d)return W;try{return W instanceof HTMLElement?`id: ${W.id} type:${gt(W)}`:W instanceof MediaStreamTrack?Vd(W):(JSON.stringify(W),W)}catch(ae){return`type:${gt(W)}`}}let p=(this==null?void 0:this._log)||B,f=++hv;if(o!=null&&o(...d))return n.apply(this,d);d.length>0?p.info(`${a}() ${f} ${JSON.stringify(d,(P,W)=>l(P,W,["userSig","privateMapKey"]))}`):p.info(`${a}() ${f}`);let _=r?r(...d):yu[a],I=(s==null?void 0:s(...d))||!1;try{let P=n.apply(this,d),W=pe();if(ho(P)){let G=`${a.includes("Plugin")?`${((y=(R=d[0]).getName)==null?void 0:y.call(R))||""} `:" "}`;return P.then(ae=>(p.info(`${a}() success ${f} ${G}${t.call(this,...d)}`),J.addSuccessEvent({key:_,cost:pe()-W}),ae)).catch(ae=>{var Or;ae=ne.convertFrom.call(this,ae,a,d.length===1?d[0]:d);let ke=ae.extraCode||ae.code,Me=(Or=ae.message)!=null&&Or.includes(ke)?"":` code:${ke}`,Y=(ae==null?void 0:ae.code)===oe.OPERATION_ABORT;throw I||p[Y?"warn":"error"](`${a}() failed ${f} ${G}${t.call(this,...d)} ${ae}${Me} params: ${JSON.stringify(d,l)}`),J.addFailedEvent({key:_,error:ae}),ae})}return J.addSuccessEvent({key:_}),P}catch(P){P=ne.convertFrom.call(this,P,a);let W=P.extraCode||P.code,G=(N=P.message)!=null&&N.includes(W)?"":` code:${W}`,ae=(P==null?void 0:P.code)===oe.OPERATION_ABORT;throw I||p[ae?"warn":"error"](`${a}() failed ${f} ${P}${G} params: ${JSON.stringify(d,l)}`),J.addFailedEvent({key:_,error:P}),P}})}var Ml=i=>Pe((t,e)=>function(r,o){return b(this,null,function*(){let s=this._plugins.get(r);if(!s)throw this._log.error(`plugin ${String(r)} is not found`),new ne({code:oe.OPERATION_ABORT,message:`plugin ${String(r)} is not found`,fnName:e});if(Xe(s.constructor.isSupported)&&!s.constructor.isSupported())throw this._log.error(`plugin ${String(r)} is not supported`),new ne({code:oe.ENV_NOT_SUPPORTED,message:`plugin ${String(r)} is not supported`,extraCode:5210,fnName:e});return wl.call(this,s.getValidateRule(i),[o],e,"TRTC"),t.call(this,s,o)})});var Ol=0,Cf,eo=class eo{constructor(t){this.core=t;m(this,"log");m(this,"customAudioReferenceMap",new Map);m(this,"audioRefId",0);m(this,"audioContext",ze());m(this,"localAudioWorkletNode");m(this,"screenAudioWorkletNode");m(this,"mixNode");m(this,"silentNode");Ol=Ol+1,this.log=t.log.createChild({id:`${this.getAlias()}${Ol}`}),this.log.info(`created id=${this.getAlias()}${Ol}`),this.installEvent()}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 ne({code:oe.INVALID_OPERATION,extraCode:5106,fnName:o})}}}preload(t){return Cf||(Cf=this.doPreload(t)),Cf}doPreload(t){return b(this,null,function*(){let e=yield this.core.fileDownloader.download(t,{type:"blob"}),r=URL.createObjectURL(e);try{yield qi(this.audioContext,r)}catch(o){this.log.error(`preload audioProcessor failed. ${o}`)}finally{URL.revokeObjectURL(r)}})}getName(){return eo.Name}getAlias(){return"ap"}getGroup(){return"ap"}getValidateRule(t){switch(t){case"start":return eo.getStartValidateRule(this.core);case"update":return eo.updateValidateRule;case"stop":return eo.stopValidateRule}}start(t){return b(this,null,function*(){var _,I,R,y;let{room:e}=this.core,{sdkAppId:r,userId:o,userSig:s,assetsPath:n=this.core.assetsPath,audioReference:a,processLevel:d,enableDump:l,isLocalAudioNeedAudioProcess:p=!0,isScreenAudioNeedAudioProcess:f=!1}=t;if(this.core.room.audioManager.isLocalAudioNeedAudioProcess=p,this.core.room.audioManager.isScreenAudioNeedAudioProcess=f,!n)throw new ne({code:oe.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(this.core.validateSourceNode(),yield this.preload(`${n}/audioProcessor-wasm.js`),p&&!this.localAudioWorkletNode){let{sign:N,status:P,timestamp:W}=yield this.getAuthData(r,o,s);this.localAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.localAudioWorkletNode,"localAudio",r,o,W,N,P,e)}if(f&&!this.screenAudioWorkletNode){let{sign:N,status:P,timestamp:W}=yield this.getAuthData(r,o,s);this.screenAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.screenAudioWorkletNode,"screenAudio",r,o,W,N,P,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)==null||_.port.postMessage({type:"enable"}),(I=this.screenAudioWorkletNode)==null||I.port.postMessage({type:"enable"}),e.audioManager.addAudioProcessor(this.mixNode,this.silentNode,this.localAudioWorkletNode,this.screenAudioWorkletNode),O(a)||a.forEach(N=>{this.customAudioReferenceMap.set(N,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:N,refId:`o-${this.audioRefId++}`})}),O(d)||(R=this.localAudioWorkletNode)==null||R.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:d}}),O(l)||(y=this.localAudioWorkletNode)==null||y.port.postMessage({type:"dump",data:{enable:l}})})}update(t){return b(this,null,function*(){var s,n,a;let{audioReference:e,enableDump:r,processLevel:o}=t;O(e)||(this.customAudioReferenceMap.forEach((d,l)=>{this.customAudioReferenceMap.delete(l),this.core.room.audioManager.updateAudioReference({type:"remove",refId:d})}),e.forEach(d=>{this.customAudioReferenceMap.set(d,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:d,refId:`o-${this.audioRefId++}`})})),O(o)||(s=this.localAudioWorkletNode)==null||s.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:o}}),O(r)||((n=this.localAudioWorkletNode)==null||n.port.postMessage({type:"dump",data:{enable:r}}),(a=this.screenAudioWorkletNode)==null||a.port.postMessage({type:"dump",data:{enable:r}}))})}stop(){return b(this,null,function*(){var e,r;let{room:t}=this.core;(e=this.localAudioWorkletNode)==null||e.port.postMessage({type:"disable"}),(r=this.screenAudioWorkletNode)==null||r.port.postMessage({type:"disable"}),yield t.audioManager.removeAudioProcessor(this.localAudioWorkletNode,this.screenAudioWorkletNode)})}destroy(){this.localAudioWorkletNode&&(this.localAudioWorkletNode.port.onmessage=null),this.screenAudioWorkletNode&&(this.screenAudioWorkletNode.port.onmessage=null),this.uninstallEvent()}getAuthData(t,e,r){return b(this,null,function*(){let o=String(Date.now()).slice(0,-3),{auth:s,sign:n,status:a,message:d}=yield fv({sdkAppId:t,userSig:r,userId:e,timestamp:o});if(!s)throw this.log.info(`audioProcessor: ${e} auth result: ${s}. Message: ${d}`),new ne({code:oe.INVALID_PARAMETER,message:d});return{sign:n,status:a,timestamp:o}})}initWorkletNode(t,e,r,o,s,n,a,d){t.port.postMessage({type:"init",data:{sdkAppId:String(r),userId:o,timestamp:s,sign:n,status:a}}),t.port.onmessage=l=>{var f;let{data:p}=l;switch(p.type){case"cost":let _=(p==null?void 0:p.value)>10?"info":"debug";this.log[_](`${e==="localAudio"?"":`[${e}] `}avg cost: ${p.value} max: ${p==null?void 0:p.max}(${Ks(new Date(p==null?void 0:p.maxCostTimestamp))}) hist: ${(f=p==null?void 0:p.hist)==null?void 0:f.join(" ")}`);return;case"log":this.log[p.logLevel](`${e==="localAudio"?"":`[${e}] `}${p.value}`);return;case"dump":x.emit("265",{room:d,data:p.value,type:e==="localAudio"?"dump":"dump-screen-audio"});return;case"detectEcho":this.log.warn(`${e==="localAudio"?"":`[${e}] `}detect echo: ${fs()?Vi():Jr()}`);return}}}handleLocalAudioStarted(t){return b(this,null,function*(){var e;if(!(!this.hitTest(t.room)||((e=this.core.room.scheduleResult.config)==null?void 0:e.audioProcessor)!==!0))try{yield this.core.trtc.startPlugin("AudioProcessor",{sdkAppId:this.core.room.sdkAppId,userId:this.core.room.userId,userSig:this.core.room.userSig}),this.log.warn("audio processor auto start success")}catch(r){this.log.warn(`audio processor auto start failed, error: ${r}`)}})}handleLocalAudioStopped(t){return b(this,null,function*(){var e;!this.hitTest(t.room)||((e=this.core.room.scheduleResult.config)==null?void 0:e.audioProcessor)!==!0||(yield this.core.trtc.stopPlugin("AudioProcessor"))})}installEvent(){this.core.innerEmitter.on("104",this.handleLocalAudioStarted,this),this.core.innerEmitter.on("114",this.handleLocalAudioStopped,this)}uninstallEvent(){this.core.innerEmitter.off("104",this.handleLocalAudioStarted,this),this.core.innerEmitter.off("114",this.handleLocalAudioStopped,this)}hitTest(t){return t===this.core.room}};m(eo,"updateValidateRule",{type:"object"}),m(eo,"stopValidateRule",{type:"object"}),m(eo,"Name","AudioProcessor");var Pl=eo;function pv(i,t=M.MAIN){return`https://${ei[t]||Nl(i,t)}/api/v1/audioAiAuth`}function fv(o){return b(this,arguments,function*({sdkAppId:i,userId:t,userSig:e,timestamp:r}){let n=`${pv(i)}?sdkAppId=${i}&userId=${t}&userSig=${e}×tamp=${r}`,a=yield fetch(n),{data:{errCode:d,errMsg:l,sign:p,status:f}}=yield a.json();if(f==="1")return{auth:!0,sign:p,status:f,message:l};let _=Rr(i)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",I="Init RTCAudioProcessor failed.",R="";switch(d){case 1:R="Please check your params.";break;case 2:R=`You need to buy packages. Refer to: ${_}`;break;case 3:R="Server is invalid. Please contact our engineer. ";break;case 4:R=`Your packages is not active. Refer to: ${_}`;break;case 5:R=`Your packages is expired. Refer to: ${_}`;break;case 6:R="Your version is not supported.";break}return{auth:!1,status:f,message:l?`${I} Reason: ${l}. ${R}`:`${I}, ${R}`}})}var Ll=0,Nf=class{constructor(t,e){m(this,"audioObjectURL");m(this,"player");m(this,"publisher");m(this,"mixInput");this.mixInput=new Mn(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&&(O(t.volume)||(this.volume=t.volume),O(t.loop)||(this.loop=t.loop),O(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)}}reload(t){return b(this,null,function*(){if(t.url){let e=yield Vc.download(t.url,{retries:3,type:"blob"});this.audioObjectURL&&URL.revokeObjectURL(this.audioObjectURL),this.audioObjectURL=URL.createObjectURL(e),this.player&&this.publisher?(this.player.src=this.audioObjectURL,this.publisher.src=this.audioObjectURL):(this.player=new Audio(this.audioObjectURL),this.player.crossOrigin="anonymous",this.publisher=new Audio(this.audioObjectURL),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher),this.updateListener(t),this.updateSettings(t))}else this.mixInput.replaceSource(t.track)})}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 Promise.all([(t=this.player)==null?void 0:t.play(),(e=this.publisher)==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 Zn(i,t){if(t&&typeof t!="function")throw new ne({code:oe.INVALID_PARAMETER,message:`start audioMixer plugin: param ${i} should be a function.`})}var Ii=class Ii{constructor(t){this.core=t;m(this,"log");m(this,"mixedMusicMap",new Map);m(this,"cacheMusicMap",new Map);Ll=Ll+1,this.log=t.log.createChild({id:`${this.getAlias()}${Ll}`}),this.log.info(`created id=${this.getAlias()}${Ll}`)}getName(){return Ii.Name}getAlias(){return"ax"}getGroup(t){return t==null?void 0:t.id}getValidateRule(t){switch(t){case"start":return Ii.startValidateRule;case"update":return Ii.updateValidateRule;case"stop":return Ii.stopValidateRule}}start(t){return b(this,null,function*(){let{room:e}=this.core;this.core.validateSourceNode(),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 Nf(t,e.audioManager),this.cacheMusicMap.set(r,s)),s.updateListener(t),s.updateSettings(t);try{yield s.play()}catch(n){yield this.handleAutoPlayFailed(s,t,n)}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.`),J.addEnum({key:502700,value:3}),this.kvUpload(t)})}handleAutoPlayFailed(t,e,r){return b(this,null,function*(){if(r.name==="NotSupportedError")this.log.error(`play failed, try to reload source. error: ${r}`),yield t.reload(e),yield t.play();else if(r.name==="NotAllowedError")if(this.core.room.enableAutoPlayDialog){let o=()=>{var s;(s=t.play())==null||s.finally(()=>{x.off("154",o,this)})};x.on("154",o,this),Dn()}else this.core.trtc.emit(te.AUTOPLAY_FAILED,{userId:"",mediaType:"audio",resume:()=>b(this,null,function*(){return t.play()})});else throw r})}update(t){return b(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),O(r)||n.setOperation(r),O(o)||n.seek(o),this.kvUpload(t)})}stop(e){return b(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:d,onDurationChange:l,onEnded:p}=t;e&&J.addCount({key:502009}),r&&J.addCount({key:502001}),o&&J.addCount({key:502002}),s&&J.addCount({key:502003}),n&&J.addCount({key:502004}),a&&J.addCount({key:502005}),typeof d!="function"&&J.addCount({key:502007}),typeof p!="function"&&J.addCount({key:502008}),typeof l!="function"&&J.addCount({key:502006})}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()}};m(Ii,"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,d=o.startsWith("blob"),l=o.startsWith("data");if(!(a||d||l))throw new ne({code:oe.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:r})}if(!t.url&&!t.track)throw new ne({code:oe.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:r});Zn("onTimeUpdate",t.onTimeUpdate),Zn("onEnded",t.onEnded),Zn("onDurationChange",t.onDurationChange)}}),m(Ii,"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){Zn("onTimeUpdate",t.onTimeUpdate),Zn("onEnded",t.onEnded),Zn("onDurationChange",t.onDurationChange)}}),m(Ii,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),m(Ii,"Name","AudioMixer");var xl=Ii;var kl=0,Df,to=class to{constructor(t){this.core=t;m(this,"log");m(this,"audioContext",ze("denoiser"));m(this,"workletNode");m(this,"config",{enableFarFieldReduce:!1,farFieldReduceThreshold:.5});kl=kl+1,this.log=t.log.createChild({id:`${this.getAlias()}${kl}`}),this.log.info(`created id=${this.getAlias()}${kl}`)}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},mode:{type:"number",required:!1,values:[0,1]},farFieldReduceThreshold:{type:"number",required:!1,min:0,max:1}},validate(e,r,o,s){if(!t.room.audioManager.hasAudioTrack)throw new ne({code:oe.INVALID_OPERATION,extraCode:5106,fnName:o})}}}preload(t){return Df||(Df=this.doPreload(t)),Df}doPreload(t){return b(this,null,function*(){let e=yield this.core.fileDownloader.download(t,{type:"blob"}),r=URL.createObjectURL(e);try{yield qi(this.audioContext,r)}catch(o){throw this.log.error("load worklet failed",o),o}finally{URL.revokeObjectURL(r)}})}getName(){return to.Name}getAlias(){return"ad"}getGroup(){return"AIDenoiser"}getValidateRule(t){switch(t){case"start":return to.startValidateRule(this.core);case"update":return to.updateValidateRule;case"stop":return to.stopValidateRule}}start(t){return b(this,null,function*(){let{room:e,schedule:r}=this.core,{assetsPath:o=this.core.assetsPath}=t;if(!o)throw new ne({code:oe.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(this.core.validateSourceNode(),yield this.preload(`${o}/denoiser-wasm${Ph()?"":"-nosimd"}.js`),!this.workletNode){let s=String(Date.now()).slice(0,-3),{auth:n,sign:a,status:d,message:l}=yield Ev(r,Te(Q({},t),{timestamp:s}));if(!n)throw this.log.info(`RTCAIDenoiser: ${t.userId} auth result: ${n}. Message: ${l}`),new ne({code:oe.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(t.sdkAppId),userId:t.userId,timestamp:s,sign:a,status:d}}),this.workletNode.port.onmessage=p=>{var _;let{data:f}=p;if(f.type==="cost"){let I=(f==null?void 0:f.max)>20?"warn":(f==null?void 0:f.max)>10?"info":"debug";this.log[I](`avg cost: ${f.value} max: ${f==null?void 0:f.max}(${Ks(new Date(f==null?void 0:f.maxCostTimestamp))}) hist: ${(_=f==null?void 0:f.hist)==null?void 0:_.join(" ")}`)}else f.type==="log"&&this.log[f.logLevel](`${f.value}`)}}this.updateConfig(t),this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(t){return b(this,null,function*(){this.updateConfig(t)})}stop(){return b(this,null,function*(){if(!this.workletNode)return;let{room:t}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield t.audioManager.removeDenoiser(this.workletNode)})}updateConfig(t){if(!this.workletNode)return;let e=!1;O(t.mode)||(t.mode===0?this.config.enableFarFieldReduce=!1:t.mode===1&&(this.config.enableFarFieldReduce=!0),e=!0),O(t.farFieldReduceThreshold)||(this.config.farFieldReduceThreshold=t.farFieldReduceThreshold,e=!0),e&&this.workletNode.port.postMessage({type:"setConfig",data:this.config})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};m(to,"updateValidateRule",{type:"object",properties:{mode:{type:"number",required:!1,values:[0,1]},farFieldReduceThreshold:{type:"number",required:!1,min:0,max:1}}}),m(to,"stopValidateRule",{type:"object"}),m(to,"Name","AIDenoiser");var Ul=to;function Ev(s,n){return b(this,arguments,function*(i,{sdkAppId:t,userId:e,userSig:r,timestamp:o}){try{let{data:{errCode:a,errMsg:d,sign:l,status:p}}=yield i.getAbilityConfig(t,i.ScheduleRequestType.AUDIO_AI_AUTH,{sdkAppId:t,userId:e,userSig:r,timestamp:o});if(p==="1")return{auth:!0,sign:l,status:p,message:d};let f=Rr(t)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",_="Init RTCAIDenoiser failed.",I="";switch(a){case 1:I="Please check your params.";break;case 2:I=`You need to buy packages. Refer to: ${f}`;break;case 3:I="Server is invalid. Please contact our engineer. ";break;case 4:I=`Your packages is not active. Refer to: ${f}`;break;case 5:I=`Your packages is expired. Refer to: ${f}`;break;case 6:I="Your version is not supported.";break}return{auth:!1,status:p,message:d?`${_} Reason: ${d}. ${I}`:`${_}, ${I}`}}catch(a){return{auth:!1,status:"0",message:`Init RTCAIDenoiser failed. All requests failed. ${a}`}}})}var $T=ai(mi(),1);var wf=class extends $T.EventEmitter{constructor(){super();m(this,"observer");m(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 b(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!rt&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){Ue.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)&&B.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){Ue.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:r})}}},_v=new wf,Mf=_v;var Of=0,Bc=class Bc{constructor(t){this.core=t;m(this,"log");m(this,"_seiMessageList",[]);m(this,"_smallSeiMessageList",[]);m(this,"_subStreamSeiMessageList",[]);Of++,this.log=t.log.createChild({id:`${this.getAlias()}${Of}`}),this.log.info(`[sei] created id=${this.getAlias()}${Of}`),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 yf({frame:t,seiMessageList:r})}catch(r){this.log.warn(r)}return t}decode({frame:t,track:e}){return bf({frame:t,onSEI:r=>{r.forEach(o=>{e!=null&&e.userId?this.core.trtc.emit(te.SEI_MESSAGE,{seiPayloadType:o.seiPayloadType,data:o.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"}):this.core.innerEmitter.emit(this.core.INNER_EVENT.SEI_MESSAGE,{room:this.core.room,nalu:o})})}})}destroy(){this.log.debug("destroy"),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:Ss?this.encode:yf,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:Ss?this.decode:bf,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 Bc.Name}getAlias(){return"sei"}getGroup(){return"sei"}};m(Bc,"autoStart",!0),m(Bc,"Name","SEI");var Vl=Bc;var Tv=0,Fl,$c=class $c{constructor(t){this.core=t;m(this,"_core");m(this,"log");m(this,"dialog");this._core=t,this.log=t.log.createChild({id:`${this.getAlias()}${++Tv}`}),this.log.info("created")}getName(){return $c.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 b(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())})}update(e){return b(this,arguments,function*({visible:t}){t?yield this.openDebugDiaLog():this.closeDebugDiaLog()})}stop(){this.closeDebugDiaLog()}destroy(){this.stop()}openDebugDiaLog(){return b(this,null,function*(){var t;if(!this.dialog)try{if(Fl)yield Fl;else{let e=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((t=window.sessionStorage)==null?void 0:t.getItem("TRTC_DEBUG_DIALOG_PATH"))||`https://unpkg.com/${FT}@${ft}/assets/debug-dialog.js`;Fl=this._core.fileDownloader.loadScript(e),yield Fl}this.dialog=new TRTCDebugDialog(this._core,this.log),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)}};m($c,"Name","Debug"),m($c,"autoStart",!0);var Bl=$c;var HT=i=>{switch(i){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},$l=class{constructor(t,e,r){m(this,"trackDoneOB");m(this,"startOB");m(this,"stopOB");m(this,"inputFrameCount",0);m(this,"decodedFrameCount",0);m(this,"type","auto");m(this,"config");m(this,"decoder");m(this,"_decodeSink");let{kvStatManager:o,trtc:s}=t;this.config=r.config,this.trackDoneOB=ye(e,he.INIT),this.stopOB=bt(),this.startOB=bt(),r.type==="auto"?this.type="webCodecs":this.type=r.type;let n=bt(),a=d=>{let l=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),be(l,Je(this.stopOB),Le(()=>{},p=>{e.log.error(p),o.addFailedEvent({key:HT(this.type),error:p}),d>4?this.startOB.error(p):this.startOB.next(d+1)})),be(l,Kr(1),kp(Sc))};be(this.startOB,Tc(0),fi(a),Je(this.stopOB),Le(()=>{e.player.setOutput(),n.next("STARTED")},d=>{n.next("FAILED")},()=>{o.addSuccessEvent({key:HT(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 zi()(e=>b(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"}))}},Iv={type:"object"},Hc=class Hc{constructor(t){this.core=t;m(this,"log");m(this,"contextMap",new Map);m(this,"decodeProcessorMap",new WeakMap);this.log=t.log.createChild({id:`${this.getAlias()}`})}getAlias(){return Hc.Name}getGroup(t){return t.track.userId+t.track.streamType}getName(){return Hc.Name}getValidateRule(t){return Iv}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 $l(this.core,r,t);return be(o.trackDoneOB,Kr(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 $l(this.core,t.track,t))}}};m(Hc,"Name","TRTCAudioDecoder");var Wc=Hc;var Hl=class{constructor(){m(this,"log");this.log=B.createLogger({id:"exp"})}call(t,e){return b(this,null,function*(){return Xe(this[t])?this[t](e):Promise.reject(new ce({code:z.INVALID_PARAMETER,message:je({key:Ge.API_NOT_EXIST,data:{name:t}})}))})}enableAudioFrameEvent(t){return b(this,null,function*(){let{trtcInstance:e,enable:r,userId:o,sampleRate:s=48e3,channelCount:n=1,port:a}=t,{audioManager:d}=e.room,{getPCMAbortCtrlMap:l,audioFrameEventConfigMap:p}=d;if(p.set(o,{enable:r,sampleRate:s,channelCount:n,port:a}),r)if(o==="*")e.room.remotePublishedUserMap.forEach(f=>{if(f.remoteAudioTrack.isAvailable){if(l.get(f.userId))return;let _=d.getPCM(I=>{e.emit(te.AUDIO_FRAME,I)},f.userId);l.set(f.userId,_)}});else{if(l.get(o))return;let f=d.getPCM(_=>{e.emit(te.AUDIO_FRAME,_)},o);l.set(o,f)}else if(o==="*")e.room.remotePublishedUserMap.forEach(f=>{if(f.remoteAudioTrack.isSubscribed){let{userId:_}=f,I=l.get(_);I==null||I.abort("disable"),l.delete(_)}});else{let f=l.get(o);f==null||f.abort("disable"),l.delete(o)}})}resumeRemotePlayer(t){return b(this,null,function*(){if(t.userId==="*"){let r=[];return t.trtcInstance.room.remotePublishedUserMap.forEach(o=>{let{remoteAudioTrack:s,remoteVideoTrack:n,remoteAuxiliaryTrack:a}=o;t.streamType?t.streamType==="main"?(s.isAvailable&&r.push(s.player.resume()),n.isAvailable&&r.push(n.player.resume())):a.isAvailable&&r.push(a.player.resume()):(s.isAvailable&&r.push(s.player.resume()),n.isAvailable&&r.push(n.player.resume()),a.isAvailable&&r.push(a.player.resume()))}),Promise.all(r)}let e=t.trtcInstance.room.remotePublishedUserMap.get(t.userId);if(e)return t.streamType==="main"?Promise.all([e.remoteAudioTrack.player.resume(),e.remoteVideoTrack.player.resume()]):e.remoteAuxiliaryTrack.player.resume()})}pauseRemotePlayer(t){if(t.userId==="*")t.trtcInstance.room.remotePublishedUserMap.forEach(e=>{let{remoteAudioTrack:r,remoteVideoTrack:o,remoteAuxiliaryTrack:s}=e;t.streamType?t.streamType==="main"?(r.isAvailable&&r.player.pause(),o.isAvailable&&o.player.pause(!1)):s.isAvailable&&s.player.pause(!1):(r.isAvailable&&r.player.pause(),o.isAvailable&&o.player.pause(!1),s.isAvailable&&s.player.pause(!1))});else{let e=t.trtcInstance.room.remotePublishedUserMap.get(t.userId);e&&(t.streamType==="main"?(e.remoteAudioTrack.player.pause(),e.remoteVideoTrack.player.pause(!1)):e.remoteAuxiliaryTrack.player.pause(!1))}}};Z([I_({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"}}})],Hl.prototype,"enableAudioFrameEvent",1);var WT=new Hl;var GT=ai(mi(),1);var Pf=class extends GT.EventEmitter{constructor(){super();m(this,"states",{});m(this,"permissionChangeHandler");m(this,"log");this.log=B.createLogger({id:"pm"}),this.permissionChangeHandler=()=>{var e,r;this.emit("permission-state-change",{camera:(e=this.states.camera)==null?void 0:e.state,microphone:(r=this.states.microphone)==null?void 0:r.state})}}request(e){return b(this,null,function*(){if(this.log.info(`request ${e.join(", ")}`),e.length===0)return Promise.resolve();(yield navigator.mediaDevices.getUserMedia({video:e.includes("camera"),audio:e.includes("microphone")})).getTracks().forEach(o=>o.stop())})}get(e){return b(this,null,function*(){try{return this.states[e]||(this.states[e]=yield navigator.permissions.query({name:e}),this.states[e].addEventListener("change",this.permissionChangeHandler)),this.log.info(`get ${e} permission state: ${this.states[e].state}`),this.states[e].state}catch(r){return this.log.error(`get ${e} permission failed, error: ${r instanceof Error?r.message:r}`),null}})}destroy(){Object.values(this.states).forEach(e=>{e==null||e.removeEventListener("change",this.permissionChangeHandler)}),this.states={}}},Gc=new Pf;var jT=0,jc=new Set,kt=null;_m(Rf);Rn.checkStorage();var _e=class _e extends qT.EventEmitter{constructor(e,r){super();m(this,"_room");m(this,"_eventListened",new Set);m(this,"_localVideoTrack",null);m(this,"_localAudioTrack",null);m(this,"_localScreenTrack",null);m(this,"_localScreenAudioTrack",null);m(this,"_localVideoConfig",null);m(this,"_localScreenConfig",null);m(this,"_localAudioConfig",null);m(this,"_remoteVideoConfigMap",new Map);m(this,"_remoteAudioConfigMap",new Map);m(this,"_remoteAudioVolumeMap",new Map);m(this,"_remoteAudioMuteMap",new Map);m(this,"_mediaTrackMap",new WeakMap);m(this,"_log",B.createLogger({id:`t${++jT}`}));m(this,"_plugins",new Map);m(this,"_networkQuality",null);m(this,"_speakerId");m(this,"enterRoomParams");m(this,"_enableAutoSwitchWhenRecapturing",!0);m(this,"_autoSubscribeDataChannel",!1);this._room=new e(Q({logger:this._log,frameWorkType:_e.frameWorkType},r)),this._room.videoDecodeFallbackType=r.videoDecodeFallback,Ze(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(xl,r.assetsPath),this._use(Pl,r.assetsPath),this._use(Ul,r.assetsPath),this._use(Wc,r.assetsPath),this._use(Bl),r.enableSEI&&ic&&this._use(Vl),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 l;let d=a.userId===""?this._localAudioTrack:(l=this.room.remotePublishedUserMap.get(a.userId))==null?void 0:l.remoteAudioTrack;d&&(a.volume=d.dbVolume)}),r.enableDbVolume&&o.forEach(a=>{var l;let d=a.userId===""?this._localAudioTrack:(l=this.room.remotePublishedUserMap.get(a.userId))==null?void 0:l.remoteAudioTrack;d&&(a.volume=d.dbVolume)}),this.emit(te.AUDIO_VOLUME,{result:o.sort((a,d)=>d.volume-a.volume)})}),this._room.videoManager.on("error",o=>{this._log.error(new ne({code:oe.OPERATION_FAILED,extraCode:5504,message:o.message,originError:o}))}),this._listenEvents(),this._initActiveSpeaker(),xT(this,"trtc")}static create(e){}static _create(e,r){pT();let o=new _e(e,r||{});return jc.add(o),o.__v_skip=!0,o}get room(){return this._room}_listenEvents(){Vt(this,this._room).add("peer-join",e=>{let{userId:r}=e;this.emit(te.REMOTE_USER_ENTER,{userId:r})}).add("peer-leave",({userId:e,reason:r})=>{this.emit(te.REMOTE_USER_EXIT,{userId:e,reason:r})}).add("banned",e=>{Ki(!0),this._exitRoom().finally(()=>{this.emit(te.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(te.ERROR,ne.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(te.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let r=Te(Q({},e),{uplinkRTT:Math.min(e.uplinkRTT,va),downlinkRTT:Math.min(e.downlinkRTT,va)});this.emit(te.NETWORK_QUALITY,r)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{Vt(o,o).add("player-state-changed",s=>{let n=Te(Q({},s),{userId:e.userId});o.kind===M.VIDEO&&(n.streamType=dr(o.streamType)),this.emit(o.kind===M.AUDIO?te.AUDIO_PLAY_STATE_CHANGED:te.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",s=>{s.getCode()===z.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=>{yt(o)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:r})=>{let{userId:o}=r,s=e.audioAvailable,n=e.videoAvailable,{audioAvailable:a,videoAvailable:d}=r;a||this._remoteAudioConfigMap.delete(o),d||this._removeRemoteVideoConfig(o,"main"),r.hasAuxiliary||this._removeRemoteVideoConfig(o,"sub"),n!==d&&(d?this._onVideoAvailable({userId:o,streamType:"main"}):this._onVideoUnavailable({userId:o,streamType:"main"}),this.emit(d?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"})),e.hasDatachannel!==r.hasDatachannel&&r.hasDatachannel&&this._onDataChannelAvailable()}).add("sei-message",e=>{this.emit(te.SEI_MESSAGE,Te(Q({},e),{streamType:dr(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(te.ERROR,new ne({code:oe.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var s,n,a,d,l,p,f;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,va),upLoss:((d=this._networkQuality)==null?void 0:d.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:(((p=e.msg_up_stream_info.msg_audio_status)==null?void 0:p.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((f=e.msg_up_stream_info.msg_audio_status)==null?void 0:f.uint32_audio_level)||0)/$i},video:e.msg_up_stream_info.msg_video_status.filter(_=>r[_.uint32_video_stream_type]).map(_=>({bitrate:(_.uint32_video_codec_bitrate||0)/1e3,width:_.uint32_video_width,height:_.uint32_video_height,frameRate:_.uint32_video_enc_fps,videoType:r[_.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(_=>({userId:_.msg_user_info.str_identifier,audio:{bitrate:(_.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(_.msg_audio_status.uint32_audio_level||0)/$i,point2pointDelay:(_.msg_audio_status.uint32_audio_p2p_delay||0)+(_.msg_audio_status.uint32_audio_cache_ms||0),jitterBufferDelay:_.msg_audio_status.uint32_audio_cache_ms||0},video:_.msg_video_status.map(I=>({bitrate:(I.uint32_video_codec_bitrate||0)/1e3,width:I.uint32_video_width,height:I.uint32_video_height,frameRate:I.uint32_video_dec_fps,videoType:r[I.uint32_video_stream_type],point2pointDelay:(I.uint32_video_p2p_delay||0)+(I.uint32_video_cache_ms||0),jitterBufferDelay:I.uint32_video_cache_ms||0,codec:I.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,Te(Q({},e),{streamType:dr(e.streamType)}))}).add("audio-frame",e=>{this.emit(te.AUDIO_FRAME,e)}).add("data-channel-message",e=>{var s,n,a,d,l;let{data:r}=e;if(r.sender==="")return;let o={segmentId:(s=r.payload)==null?void 0:s.roundid,speakerUserId:r.sender,sourceText:(n=r.payload)==null?void 0:n.text,translationTexts:(a=r.payload)==null?void 0:a.translate_msg,timestamp:(d=r.payload)==null?void 0:d.start_utc_ms,isCompleted:(l=r.payload)==null?void 0:l.end,robotId:r.robotid};o.sourceText!==""&&this.emit(te.REALTIME_TRANSCRIBER_MESSAGE,o)}).add("asr-robot-peer-join",e=>{this.emit(te.REALTIME_TRANSCRIBER_STATE_CHANGED,{state:"started",roomId:this.room.roomId,transcriberRobotId:e.userId})}).add("asr-robot-peer-leave",e=>{this.emit(te.REALTIME_TRANSCRIBER_STATE_CHANGED,{state:"stopped",roomId:this.room.roomId,transcriberRobotId:e.userId})}),Vt(this,lt).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=>b(this,null,function*(){if(this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),kt&&kt.deviceId===Ra){let r=(yield No()).find(o=>o.deviceId===Ra);r&&kt.groupId!==r.groupId&&(kt=r,this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))}})).add("audioOutputRemoved",e=>b(this,null,function*(){this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let r=(yield No())[0];if(!r||!kt||kt.groupId===r.groupId)return;let o=kt.deviceId===e.deviceId,s=kt.deviceId===Ra&&kt.deviceId===r.deviceId;(o||s)&&(kt=r,this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))})),Vt(this,Gc).add("permission-state-change",e=>{this.emit(te.PERMISSION_STATE_CHANGE,e)}),this.room.enableSEI&&this.on(te.SEI_MESSAGE,e=>{var o;let r=(o=this.room.remotePublishedUserMap.get(e.userId))==null?void 0:o.remoteVideoTrack;r&&r.updateAlphaRenderInfo(e)})}getNetworkTime(){return Ci()}use(e){let r,o;return"plugin"in e?(r=e.plugin,o=e.assetsPath):r=e,r.Name==="Chorus"&&(this.room.enableChorus=!0),this._use(r,o)}_use(e,r){let o=this._plugins.get(e.Name);if(o)return this._log.warn("duplicate install plugin",e.Name),o;let s=new e(LT.call(this,{TRTC:_e,room:this._room,assetsPath:r,errorModule:{RtcError:ne,ErrorCode:oe,CoreErrorCode:z,ErrorCodeDictionary:Sr}}));return this._plugins.set(e.Name,s),s.__v_skip=!0,e.autoStart&&this.startPlugin(e.Name),s}enterRoom(e){return b(this,null,function*(){var d,l;this.enterRoomParams=e;let{scene:r="rtc",enableAutoPlayDialog:o=!0,autoReceiveAudio:s=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!Oe(e.proxy)&&e.proxy.turnServer&&((l=(d=this._room).setTurnServer)==null||l.call(d,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=o,this._room.autoReceiveAudio=s,this._room.autoReceiveVideo=n,Ze(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,enableDataChannel:this._plugins.has("RealtimeTranscriber"),frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8,useH265:e.useH265||!1,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,r,_e.frameWorkType),this._checkTrackToPublish(),Mf.start()})}exitRoom(){return b(this,null,function*(){return yield this._exitRoom()})}switchRoom(e){return b(this,null,function*(){if(this.room.isSwitchRoomSupported())try{this._clearRemoteTracks(),yield this._room.switchRoom(e)}catch(r){if(r instanceof Ia&&(r.code===z.API_CALL_TIMEOUT||r.code===z.SWITCH_ROOM_FAILED))this._log.warn(`switchRoom ${r.code===z.API_CALL_TIMEOUT?"timeout":"failed"}, fallback to exitRoom() and enterRoom()`),yield this._rejoinRoom(e);else throw r}else yield this._rejoinRoom(e)})}_rejoinRoom(e){return b(this,null,function*(){yield this.exitRoom();let r=Q(Q({},this.enterRoomParams),e);yield this.enterRoom(r)})}_clearRemoteTracks(){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(),kT(this),this._room.remotePublishedUserMap.forEach(e=>{yt(e.remoteAudioTrack),yt(e.remoteVideoTrack),yt(e.remoteAuxiliaryTrack)})}switchRole(e,r){return b(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(){this._plugins.forEach(e=>{var r;return(r=e.destroy)==null?void 0:r.call(e)}),this._plugins.clear(),yt(this),this.removeAllListeners(),this._room.destroy(),jc.delete(this),jc.size===0&&Mf.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),x.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return b(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:r=!0,mute:o,muteKeepVolumeDetection:s,option:n}=e,a=new gi(this._room.audioManager),d={},l={muted:!0};n&&(O(n.microphoneId)?O(n.audioTrack)||(d.customSource=n.audioTrack):d.deviceId=n.microphoneId,n&&Be(n.captureVolume)&&a.setCaptureVolume(n.captureVolume),O(n.profile)||(Oe(n.profile)?yd[n.profile]&&a.setProfile(yd[n.profile]):a.setProfile(n.profile)),Be(n.earMonitorVolume)&&(l.muted=!(n.earMonitorVolume>0),l.volume=n.earMonitorVolume),O(n.echoCancellation)||(a.profile.echoCancellation=n.echoCancellation),O(n.noiseSuppression)||(a.profile.noiseSuppression=n.noiseSuppression),O(n.autoGainControl)||(a.profile.autoGainControl=n.autoGainControl),Ze(this._enableAutoSwitchWhenRecapturing)&&(a.enableAutoSwitchWhenRecapturing=this._enableAutoSwitchWhenRecapturing)),a.on("5",p=>{this.emit(te.ERROR,new ne({code:oe.DEVICE_ERROR,extraCode:5309,messageParams:{error:p}}))}),a.on("2",p=>{this.emit(te.DEVICE_CHANGED,{type:"microphone",action:"active",device:p})}),a.on("4",p=>{let f;p.error&&(f=ne.convertFrom(p.error)),this.emit(te.PUBLISH_STATE_CHANGED,Te(Q({},p),{error:f}))}),a.on("6",()=>{}),this._listenOutputTrackChanged(a),this._speakerId&&a.setAudioOutput(this._speakerId),yield a.capture(d),O(o)||a.setMute(o,s),Vt(a,a).add("player-state-changed",p=>{this.emit(te.AUDIO_PLAY_STATE_CHANGED,Te(Q({},p),{userId:""}))}),r&&this._room.isJoined&&this._room.publish(a).catch(()=>{}),this._localAudioTrack=a,this._room.capturedLocalMainAudioTrack=a,this._localAudioConfig=Te(Q({},e),{publish:r}),yield this._updateAudioPlayOption({playOption:l,track:a}),x.emit("113",{userId:"",room:this.room})})}updateLocalAudio(e){return b(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:r,mute:o,muteKeepVolumeDetection:s,option:n}=e,a={};n&&(n.microphoneId?yield this._localAudioTrack.switchDevice(n.microphoneId):O(n.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(n.audioTrack)),O(n.captureVolume)||this._localAudioTrack.setCaptureVolume(n.captureVolume),O(n.earMonitorVolume)||(a.muted=!(n.earMonitorVolume>0),a.volume=n.earMonitorVolume),yield this._localAudioTrack.update3A(n)),this._room.isJoined&&!O(r)&&(r&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!r&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),O(o)||this._localAudioTrack.setMute(o,s),yield this._updateAudioPlayOption({playOption:a,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),$r(this._localAudioConfig,e)})}stopLocalAudio(){return b(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),x.emit("114",{userId:"",room:this.room}),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),yt(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null,delete this._room.capturedLocalMainAudioTrack)})}startLocalVideo(){return b(this,arguments,function*(e={publish:!0,view:null,capture:!0}){var _,I;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,d=o,l=new Ir(this._room.videoManager),p={},f={};a&&(Ze(a.avoidCropping)&&(l.avoidCropping=a.avoidCropping),a.cameraId?p.deviceId=a.cameraId:O(a.useFrontCamera)?O(a.videoTrack)||(p.customSource=a.videoTrack):p.facingMode=a.useFrontCamera?M.FACING_MODE_USER:M.FACING_MODE_ENVIRONMENT,O(a.retryWhenExactFailed)||(p.retryWhenExactFailed=a.retryWhenExactFailed),a.qosPreference&&(p.contentHint=kc(a.qosPreference)),O(a.profile)||(Oe(a.profile)?Fr[a.profile]&&l.setProfile(Fr[a.profile]):l.setProfile(a.profile)),O(a.fillMode)||(f.objectFit=a.fillMode),O(a.mirror)||(f.mirror=a.mirror),O(a.small)||(O(a.smallMode)||(this._room.smallMode=a.smallMode),Ze(a.small)&&a.small===!1?l.stopSmall():l.updateSmallConfig(Jn(a.small,!0))),O(a.rotation)||l.setRotation(a.rotation),Ze(this._enableAutoSwitchWhenRecapturing)&&(l.enableAutoSwitchWhenRecapturing=this._enableAutoSwitchWhenRecapturing)),l.once("first-video-frame",R=>{this.emit(te.FIRST_VIDEO_FRAME,Te(Q({},R),{streamType:dr(R.streamType)}))}),l.on("5",R=>{this.emit(te.ERROR,new ne({code:oe.DEVICE_ERROR,extraCode:5308,messageParams:{error:R}}))}),l.on("2",R=>{this.emit(te.DEVICE_CHANGED,{type:"camera",action:"active",device:R})}),l.on("4",R=>{let y;R.error&&(y=ne.convertFrom(R.error)),this.emit(te.PUBLISH_STATE_CHANGED,Te(Q({},R),{error:y}))}),l.on("6",()=>{}),this._listenOutputTrackChanged(l),s?yield l.capture(p):(_=l.manager)==null||_.changeInput(l),O(n)||(yield l.setMute(n)),Vt(l,l).add("player-state-changed",R=>{this.emit(te.VIDEO_PLAY_STATE_CHANGED,Te(Q({},R),{userId:"",streamType:"main"}))}).add("video-size-changed",R=>{this.emit(te.VIDEO_SIZE_CHANGED,Te(Q({},R),{streamType:dr(R.streamType)}))}),d&&this._room.isJoined&&(this._localScreenTrack&&((I=this._localScreenConfig)==null?void 0:I.publish)&&this._localScreenConfig.streamType==="main"?(d=!1,this._log.warn("main stream is already published, local video track will not publish")):this._room.publish(l).catch(()=>{})),this._localVideoTrack=l,this._room.capturedLocalMainVideoTrack=l,this._localVideoConfig=Te(Q({},e),{view:r,publish:d,capture:s}),yield this._updateVideoPlayOption({view:r,playOption:f,track:l})})}updateLocalVideo(e){return b(this,null,function*(){var f,_,I,R;if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:r,publish:o=!0,mute:s,capture:n,option:a,forcePublish:d=!1}=e,l=o||d,p={};if(this._localVideoConfig.capture)n!==!1?a!=null&&a.cameraId?yield this._localVideoTrack.switchDevice(a==null?void 0:a.cameraId):O(a==null?void 0:a.useFrontCamera)?O(a==null?void 0:a.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(a==null?void 0:a.videoTrack)):yield this._localVideoTrack.switchDevice(a!=null&&a.useFrontCamera?M.FACING_MODE_USER:M.FACING_MODE_ENVIRONMENT):this._localVideoTrack.stopCapture();else if(n){let y={};y.deviceId=(a==null?void 0:a.cameraId)||((f=this._localVideoConfig.option)==null?void 0:f.cameraId),y.facingMode=a!=null&&a.useFrontCamera||(_=this._localVideoConfig.option)!=null&&_.useFrontCamera?M.FACING_MODE_USER:M.FACING_MODE_ENVIRONMENT,y.customSource=(a==null?void 0:a.videoTrack)||((I=this._localVideoConfig.option)==null?void 0:I.videoTrack),yield this._localVideoTrack.capture(y)}a&&(O(a.profile)||(Oe(a.profile)?Fr[a.profile]&&this._localVideoTrack.setProfile(Fr[a.profile]):this._localVideoTrack.setProfile(a.profile),(!a.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(a.cameraId||a.useFrontCamera?M.FACING_MODE_USER:M.FACING_MODE_ENVIRONMENT))&&(yield this._localVideoTrack.applyProfile())),O(a.fillMode)||(p.objectFit=a.fillMode),O(a.mirror)||(p.mirror=a.mirror),O(a.rotation)||this._localVideoTrack.setRotation(a.rotation),a.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(kc(a.qosPreference)),O(a.small)||(Ze(a.small)&&!a.small?this._localVideoTrack.stopSmall():this._localVideoTrack.updateSmallConfig(Jn(a.small,!0)))),this._room.isJoined&&O(l)&&this._localVideoConfig.publish&&n&&!this._localVideoConfig.capture&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._room.isJoined&&((l!=null?l:this._localVideoConfig.publish)||d?!(this._localScreenTrack&&((R=this._localScreenConfig)==null?void 0:R.publish)&&this._localScreenConfig.streamType==="main")||d?this._room.publish(this._localVideoTrack).catch(()=>{}):(l=!1,this._log.warn("main stream is already published, local video track will not publish")):this._room.unpublish(this._localVideoTrack).catch(()=>{})),O(s)||(yield this._localVideoTrack.setMute(s)),yield this._updateVideoPlayOption({view:r,playOption:p,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),$r(this._localVideoConfig,Te(Q({},e),{publish:l}))})}stopLocalVideo(){return b(this,null,function*(){var e;this._localVideoTrack&&(this._room.isJoined&&((e=this._localVideoConfig)!=null&&e.publish)&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),yt(this._localVideoTrack),this._localVideoTrack=null,delete this._room.capturedLocalMainVideoTrack,this._localVideoConfig=null)})}startScreenShare(){return b(this,arguments,function*(e={publish:!0,view:null}){var I,R,y;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=o,d=new Ei(this._room.videoManager);d.on("4",N=>{let P;N.error&&(P=ne.convertFrom(N.error)),this.emit(te.PUBLISH_STATE_CHANGED,Te(Q({},N),{error:P}))}),d.once("first-video-frame",N=>{this.emit(te.FIRST_VIDEO_FRAME,Te(Q({},N),{streamType:dr(N.streamType)}))}),this._listenOutputTrackChanged(d),e.streamType==="main"&&(d.mediaType=4);let l=null,p={},f={};n&&(O(n.profile)||(Oe(n.profile)?bd[n.profile]&&d.setProfile(bd[n.profile]):d.setProfile(n.profile)),n.systemAudio&&(p.systemAudio=!0,p.echoCancellation=n.echoCancellation,p.noiseSuppression=n.noiseSuppression,p.autoGainControl=n.autoGainControl),O(n.fillMode)||(f.objectFit=n.fillMode),n.videoTrack&&(p.videoTrack=n.videoTrack),n.audioTrack&&(p.audioTrack=n.audioTrack),n.captureElement&&(p.captureElement=n.captureElement),n.preferDisplaySurface&&(p.preferDisplaySurface=n.preferDisplaySurface),n.qosPreference&&(p.contentHint=kc(n.qosPreference)));let _=yield d.capture(p);if(d.mediaTrack.addEventListener(M.ENDED,()=>{this._stopScreenShare(),this.emit(te.SCREEN_SHARE_STOPPED)}),_.getAudioTracks()[0]){l=new xs(this._room.audioManager);let N=_.getAudioTracks()[0];(I=e.option)!=null&&I.systemAudio&&!((R=e.option)!=null&&R.audioTrack)&&(l.sourceTrack=N),yield l.setInputMediaStreamTrack(N),Ze(s)&&l.mediaTrack&&(l.mediaTrack.enabled=!s),this._speakerId&&l.setAudioOutput(this._speakerId)}if(Vt(d,d).add("player-state-changed",N=>{this.emit(te.VIDEO_PLAY_STATE_CHANGED,Te(Q({},N),{userId:"",streamType:"sub"}))}),a&&this._room.isJoined){let N=this._localVideoTrack&&((y=this._localVideoConfig)==null?void 0:y.publish);!(e.streamType==="main"&&N)?this._room.publish(d).catch(()=>{}):(a=!1,this._log.warn("main stream is already published, screen share main will not publish")),l&&(this._checkScreenAudioEchoCancellation(d,l),this._room.publish(l).catch(()=>{}))}this._localScreenTrack=d,this._room.capturedLocalAuxVideoTrack=d,this._localScreenAudioTrack=l,this._localScreenConfig=Te(Q({},e),{view:r,publish:a}),yield this._updateVideoPlayOption({view:r,playOption:f,track:d})})}updateScreenShare(e){return b(this,null,function*(){var l,p;if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:r,publish:o,muteSystemAudio:s,option:n}=e,a=o,d={};if(n){if(O(n.fillMode)||(d.objectFit=n.fillMode),n.qosPreference){let f=kc(n.qosPreference);this._localScreenTrack.setContentHint(f)}n.videoTrack&&this._localScreenTrack.setInputMediaStreamTrack(n.videoTrack),n.audioTrack&&this._localScreenAudioTrack&&this._localScreenAudioTrack.setInputMediaStreamTrack(n.audioTrack)}if(this._room.isJoined&&!O(a)){if(a&&!this._localScreenConfig.publish){let f=this._localVideoTrack&&((l=this._localVideoConfig)==null?void 0:l.publish);!(this._localScreenConfig.streamType==="main"&&f)?this._room.publish(this._localScreenTrack).catch(()=>{}):(a=!1,this._log.warn("main stream is already published, screen share main will not publish")),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})}if(this._localScreenConfig.publish&&!a){let f=[this._localScreenTrack];this._localScreenAudioTrack&&f.push(this._localScreenAudioTrack),f.forEach(_=>this._room.unpublish(_).catch(()=>{}))}}(p=this._localScreenAudioTrack)!=null&&p.mediaTrack&&Ze(s)&&(this._localScreenAudioTrack.mediaTrack.enabled=!s),yield this._updateVideoPlayOption({view:r,playOption:d,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),$r(this._localScreenConfig,Te(Q({},e),{publish:a}))})}stopScreenShare(){return b(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return b(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 d=this._room.remotePublishedUserMap.get(o);if(!d)return;let l={},p=s==="main"?d.remoteVideoTrack:d.remoteAuxiliaryTrack,f=this._bindRemoteVideoTrackEvents(p);this._listenOutputTrackChanged(p),n&&(O(n.fillMode)||(l.objectFit=n.fillMode),O(n.mirror)||(l.mirror=n.mirror),O(n.poster)||(l.poster=n.poster),l.canvasRender=n.canvasRender,s==="main"&&!O(n.small)&&(!d.remoteVideoTrack.isSubscribing&&!d.remoteVideoTrack.isSubscribed&&d.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,p.user)),O(n.draggable)||p.setDraggable(n.draggable)),yield this._room.subscribe(p),yield this._enableVideoDecodeFallback(p,s),yield this._updateVideoPlayOption({view:r,playOption:l,track:p}),this._emitTrackEvent(p),this._remoteVideoConfigMap.set(a,{config:e,handlers:f}),n&&!O(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:p,view:r,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return b(this,null,function*(){var P,W;let{view:r,userId:o,streamType:s,option:n,mute:a}=e,d=`${o}_${s}`,l=this._remoteVideoConfigMap.get(d);if(!l||!this._room.remotePublishedUserMap.has(o))return;let p={};n&&(O(n.fillMode)||(p.objectFit=n.fillMode),O(n.mirror)||(p.mirror=n.mirror));let f=null,_=this._room.remotePublishedUserMap.get(o);if(s==="main"&&(_!=null&&_.muteState.hasVideo)&&(f=_.remoteVideoTrack),s==="sub"&&(_!=null&&_.muteState.hasAuxiliary)&&(f=_.remoteAuxiliaryTrack),!f)return;let{config:I}=l;s==="main"&&n&&!O(n.small)&&this._room.changeType(n.small,f.user),n&&!O(n.draggable)&&f.setDraggable(n.draggable),n&&(Ze(n.pictureInPicture)&&(n.pictureInPicture?yield f.player.enterPictureInPicture():yield f.player.exitPictureInPicture()),Ze(n.fullScreen)&&(n.fullScreen?yield f.player.enterFullscreen():yield f.player.exitFullscreen())),Ze(a)&&(f.ignoreUpdatePlayingState=!0,a?(yield f.player.pause(),yield this.room.unsubscribe(f)):(yield this.room.subscribe(f),yield f.player.resume(!0))),yield this._updateVideoPlayOption({view:r,playOption:p,track:f,prevConfig:I}),$r(I,e);let R=O(n==null?void 0:n.receiveWhenViewVisible)?(P=I.option)==null?void 0:P.receiveWhenViewVisible:n.receiveWhenViewVisible,y=O(r)?I.view:r,N=O(n==null?void 0:n.viewRoot)?(W=I.option)==null?void 0:W.viewRoot:n.viewRoot;this._observeView({remoteTrack:f,view:y,receiveWhenViewVisible:R,viewRoot:N})})}stopRemoteVideo(e){return b(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,r=!0){return b(this,null,function*(){let o=[],s=this._room.remotePublishedUserMap.get(e.userId);if(s){let{muteState:n,remoteVideoTrack:a,remoteAuxiliaryTrack:d}=s;e.streamType==="main"&&(a.stop(),n.hasVideo&&o.push(a)),e.streamType==="sub"&&(d.stop(),n.hasAuxiliary&&o.push(d))}for(let n of o)r&&(delete n.ignoreUpdatePlayingState,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);if(s&&(s.observer&&s.observer.disconnect(),s.handlers)){let n=this._room.remotePublishedUserMap.get(e);if(n){let a=r==="main"?n.remoteVideoTrack:n.remoteAuxiliaryTrack;this._unbindRemoteVideoTrackEvents(a,s.handlers)}}this._remoteVideoConfigMap.delete(o)}_bindRemoteVideoTrackEvents(e){let r={onEnterPIP:()=>b(this,null,function*(){yield e.player.enterPIPPromise,this.emit(te.PICTURE_IN_PICTURE_STATE_CHANGED,{streamType:dr(e.streamType),userId:e.userId,isPictureInPicture:!0,pictureInPictureWindow:e.player.pipWindow})}),onLeavePIP:()=>{this.emit(te.PICTURE_IN_PICTURE_STATE_CHANGED,{streamType:dr(e.streamType),userId:e.userId,isPictureInPicture:!1})},onEnterFullScreen:()=>{this.emit(te.FULL_SCREEN_STATE_CHANGED,{streamType:dr(e.streamType),userId:e.userId,isFullScreen:!0})},onLeaveFullScreen:()=>{this.emit(te.FULL_SCREEN_STATE_CHANGED,{streamType:dr(e.streamType),userId:e.userId,isFullScreen:!1})},onDecodeFailed:()=>{this.emit(te.ERROR,new ne({code:oe.OPERATION_FAILED,extraCode:5507,message:"video decode failed"}))},onVideoSizeChanged:o=>{this.emit(te.VIDEO_SIZE_CHANGED,Te(Q({},o),{streamType:dr(o.streamType)}))}};return e.player.on(ue.ENTER_PICTURE_IN_PICTURE,r.onEnterPIP),e.player.on(ue.LEAVE_PICTURE_IN_PICTURE,r.onLeavePIP),e.player.on(ue.ENTER_FULL_SCREEN,r.onEnterFullScreen),e.player.on(ue.LEAVE_FULL_SCREEN,r.onLeaveFullScreen),e.on("decode-failed",r.onDecodeFailed),e.on("video-size-changed",r.onVideoSizeChanged),r}_unbindRemoteVideoTrackEvents(e,r){e.player.off(ue.ENTER_PICTURE_IN_PICTURE,r.onEnterPIP),e.player.off(ue.LEAVE_PICTURE_IN_PICTURE,r.onLeavePIP),e.player.off(ue.ENTER_FULL_SCREEN,r.onEnterFullScreen),e.player.off(ue.LEAVE_FULL_SCREEN,r.onLeaveFullScreen),e.off("decode-failed",r.onDecodeFailed),e.off("video-size-changed",r.onVideoSizeChanged)}muteRemoteAudio(e,r){return b(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)&&this.room.isJoined&&(yield this._startRemoteAudio({userId:s.userId}))}else r?yield this._stopRemoteAudio({userId:e}):!this._remoteAudioConfigMap.has(e)&&this.room.isJoined&&(yield this._startRemoteAudio({userId:e}))}catch(o){throw o.code!==oe.OPERATION_ABORT&&this._remoteAudioMuteMap.delete(e),o}})}setRemoteAudioVolume(e,r){if(e==="*"){this._remoteAudioVolumeMap.set("*",r),this._remoteAudioVolumeMap.forEach((s,n)=>this._remoteAudioVolumeMap.set(n,r));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 b(this,null,function*(){return e.start(r)})}updatePlugin(e,r){return b(this,null,function*(){return e.update(r)})}stopPlugin(e,r){return b(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 e==="realtime-transcriber-message"&&this._room.subscribeDataChannel(),this}emit(e,...r){try{RT.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==="realtime-transcriber-message"||e==="*")&&this.listeners("realtime-transcriber-message").length===0&&this._room.unsubscribeDataChannel(),(e===_e.EVENT.AUDIO_FRAME||e==="*")&&this.listeners(_e.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(Oe(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 b(this,null,function*(){(yield No()).forEach(o=>{o.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}),kt=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: ${ir}/en/TRTC.html#.setCurrentSpeaker`)})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return b(this,null,function*(){var a;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",d=>{this.emit(te.ERROR,new ne({code:oe.OPERATION_FAILED,extraCode:5508,message:"audio decode failed"}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let d=(a=this._remoteAudioVolumeMap.get(r))!=null?a:this._remoteAudioVolumeMap.get("*"),l=Be(d)?d:100;s.volume=l,this._remoteAudioConfigMap.set(r,e),yield this._room.subscribe(n),be(ye(n,"decode-failed"),Je(ye(n,he.INIT)),Le(()=>{this.startPlugin(Wc.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:s,track:n}),x.emit("115",{userId:r,room:this.room}),n.outMediaTrack&&this.room.audioManager.updateAudioReference({type:"add",audioReference:n.outMediaTrack,refId:`ra-${r}`})}catch(d){throw this._remoteAudioConfigMap.delete(r),d}this._emitTrackEvent(n)})}_stopRemoteAudio(e,r=!0){return b(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}`),x.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;be(ye(e,"decode-failed"),Je(ye(e,he.INIT)),ws(()=>{this._room.downlinkVideoCodec!=="h265"&&this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:o})}),Ji(ye(e,"decode-downgrade-state-changed")),Le(n=>{s=n.state,this.emit(te.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,Te(Q({},n),{streamType:r,userId:e.userId}))},n=>{e.log.error("fallback",n)},()=>{s==="STARTED"&&e.log.info("fallback complete")}))}_updateVideoPlayOption(n){return b(this,arguments,function*({view:e,playOption:r,track:o,prevConfig:s}){if(o.setMirror(r.mirror),O(e)&&s&&s.view&&!un(r)){let a=mn(s.view);a.length>0&&(yield o.play(a,r))}if(!O(e)){let a=mn(e);a.length>0?yield o.play(a,r):o.stop()}})}_updateAudioPlayOption(s){return b(this,arguments,function*({playOption:e={},track:r,prevConfig:o}){if(!r.isPlayCalled)try{yield r.play(null,e)}catch(n){}if(O(e.muted)||r.setPlayerMute(e.muted),O(e.volume)||r.setAudioVolume(e.volume/100),r instanceof gi&&r.mediaTrack){let n=e.muted===!1&&!O(e.volume)&&e.volume>0?"add":"remove";this.room.audioManager.updateAudioReference({type:n,audioReference:r.mediaTrack,refId:"em"})}else if(r instanceof Qi){let n=e.muted?0:e.volume;if(O(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:dr(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 Promise.all(e.map(n=>this._room.publish(n).catch(()=>{})))}_observeView({remoteTrack:e,view:r,receiveWhenViewVisible:o,viewRoot:s}){if(O(r)||O(o))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${dr(e.streamType)}`);if(!n)return;let a=n.observer||void 0;if(r===null||ut(r)&&r.length===0||!o){a==null||a.disconnect(),e.isSubscribed||(this._log.info("_observeView observer disconnect, resubscribe",e.userId,e.strMediaType),this._room.subscribe(e).catch(()=>{}));return}let l=n.visibleViewMap||new Map,p=-1;(!a||a.root!==s)&&(a==null||a.disconnect(),l.clear(),a=new IntersectionObserver(_=>{_.forEach(I=>{l.set(I.target,I.isIntersecting),e.log.info(`view ${I.target.id} is${I.isIntersecting?"":" not"} visible`)}),clearTimeout(p),p=window.setTimeout(()=>{[...l.values()].find(R=>R)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:s}));let f=new Set(mn(r));l.forEach((_,I)=>{f.has(I)||(a.unobserve(I),l.delete(I))}),f.forEach(_=>{l.set(_,!0),a.observe(_)}),a.takeRecords().forEach(_=>{l.set(_.target,_.isIntersecting)}),n.visibleViewMap=l,n.observer=a}_exitRoom(){return b(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),this._clearRemoteTracks()})}_stopScreenShare(){return b(this,null,function*(){var e,r;if(this._localScreenTrack){if(this._room.isJoined){let o=[];(e=this._localScreenConfig)!=null&&e.publish&&o.push(this._localScreenTrack),this._localScreenAudioTrack&&o.push(this._localScreenAudioTrack),yield Promise.all(o.map(s=>this._room.unpublish(s).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),yt(this._localScreenTrack),this._localScreenTrack=null,delete this._room.capturedLocalAuxVideoTrack,this._localScreenConfig=null}})}_checkScreenAudioEchoCancellation(e,r){return b(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"&&(!kt||Ln(kt))&&(this._initActiveSpeaker(),x.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return b(this,null,function*(){if(kt&&!Ln(kt))this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"active",device:kt});else{let e=yield No();e[0]&&!Ln(e[0])?(kt=e[0],this.emit(te.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):x.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(()=>{})}_onDataChannelAvailable(){if(this.listeners("realtime-transcriber-message").length>0)return this._room.subscribeDataChannel()}sendSEIMessage(e,r){var s;let o=this._plugins.get("SEI");o&&(o.update({buffer:e,options:Te(Q({seiPayloadType:243},r),{small:!!((s=this._localVideoTrack)!=null&&s.small)})}),J.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var r,o;(o=(r=this._room).sendCustomMessage)==null||o.call(r,e),J.addCount({key:500001,useUV:!0})}callExperimentalAPI(e,r){return b(this,null,function*(){return this._log.info(`callExperimentalAPI(${e}, ${JSON.stringify(r)})`),WT.call(e,Q({trtcInstance:this},r))})}static setLogLevel(e,r){B.setLogLevel(e),O(r)||(r?B.enableUploadLog():B.disableUploadLog())}static isSupported(){return Nu(_e.frameWorkType)}static getPermissions(o){return b(this,arguments,function*({request:e=!0,types:r=["camera","microphone"]}){e&&(yield Gc.request(r).catch(a=>{var d;return B.error(`getPermissions request failed, error: ${(d=a==null?void 0:a.message)!=null?d:a}`)}));let[s,n]=yield Promise.all([Gc.get("camera"),Gc.get("microphone")]);return{camera:s,microphone:n}})}static getCameraList(e=!0){return ar(e)}static getMicrophoneList(e=!0){return nr(e)}static getSpeakerList(e=!0){return No(e)}static setCurrentSpeaker(e){return b(this,null,function*(){if(rt&&(e===Vs.SPEAKER||e===Vs.HEADSET)){let o=yield _e.getMicrophoneList(),s="";if(o.forEach(n=>{n.label===e&&(s=n.deviceId)}),!s)return;jc.forEach(n=>b(null,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:s}}))}));return}(yield No()).forEach(o=>{o.deviceId===e&&(jc.forEach(s=>{s._setCurrentSpeaker(e),s.emit(te.DEVICE_CHANGED,{type:"speaker",action:"active",device:o})}),kt=o)})})}static _addKVStat({type:e,key:r,value:o,base:s,useUV:n,version:a,max:d}){switch(a&&(Is.version=a),e){case"count":Is.addCount({key:r,useUV:n});break;case"enum":Is.addEnum({key:r,value:o,useUV:n});break;case"number":Is.addNumber({key:r,value:o,split:s,max:d});break}}get localVideoTrack(){return this._localVideoTrack}get localScreenTrack(){return this._localScreenTrack}get localScreenAudioTrack(){return this._localScreenAudioTrack}};m(_e,"VERSION",Rf),m(_e,"_loggerManager",B),m(_e,"EVENT",te),m(_e,"ERROR_CODE",oe),m(_e,"TYPE",Vs),m(_e,"frameWorkType",30),Z([at({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"}})})],_e.prototype,"use",1),Z([$t(wt.TRTC.enterRoom),Vo("room",([e],[r])=>(e.roomId||e.strRoomId)===(r.roomId||r.strRoomId)&&e.userId===r.userId&&e.sdkAppId===r.sdkAppId),Pe(e=>function(r){return this._log.setUserId(r.userId),this._log.setSdkAppId(r.sdkAppId),e.call(this,r)}),at()],_e.prototype,"enterRoom",1),Z([at()],_e.prototype,"exitRoom",1),Z([$t(wt.TRTC.switchRoom),at(),Wu()],_e.prototype,"switchRoom",1),Z([$t(wt.TRTC.switchRole),Bs("room",{merge:(e,r)=>r}),at()],_e.prototype,"switchRole",1),Z([at()],_e.prototype,"destroy",1),Z([$t(wt.TRTC.startLocalAudio),Vo("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)}),at()],_e.prototype,"startLocalAudio",1),Z([$t(wt.TRTC.updateLocalAudio),Bs("audio",{debounce:{delay:200,getKey:()=>`${jT}-localAudio`,isNeedToDebounce:e=>{var r;return!O((r=e.option)==null?void 0:r.captureVolume)}}}),at()],_e.prototype,"updateLocalAudio",1),Z([Fo("audio"),at()],_e.prototype,"stopLocalAudio",1),Z([$t(wt.TRTC.startLocalVideo),Vo("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)}),at()],_e.prototype,"startLocalVideo",1),Z([$t(wt.TRTC.updateLocalVideo),Bs("video"),at()],_e.prototype,"updateLocalVideo",1),Z([Fo("video"),at()],_e.prototype,"stopLocalVideo",1),Z([$t(wt.TRTC.startScreenShare),Vo("screen",()=>!0),at()],_e.prototype,"startScreenShare",1),Z([$t(wt.TRTC.updateScreenShare),Bs("screen"),at()],_e.prototype,"updateScreenShare",1),Z([at()],_e.prototype,"stopScreenShare",1),Z([$t(wt.TRTC.startRemoteVideo),Vo(e=>`v${e.userId}${e.streamType}`,()=>!0),at({getRemoteId:e=>`${e.userId}_${e.streamType}`})],_e.prototype,"startRemoteVideo",1),Z([$t(wt.TRTC.updateRemoteVideo),Bs(e=>`v${e.userId}${e.streamType}`),at({getRemoteId:e=>`${e.userId}_${e.streamType}`})],_e.prototype,"updateRemoteVideo",1),Z([$t(wt.TRTC.stopRemoteVideo),Pe(e=>function(r){return b(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)})}),at({getRemoteId:e=>`${e.userId}_${e.streamType}`})],_e.prototype,"stopRemoteVideo",1),Z([Fo(e=>`v${e.userId}${e.streamType}`)],_e.prototype,"_stopRemoteVideo",1),Z([$t(...wt.TRTC.muteRemoteAudio),at({getRemoteId:e=>e})],_e.prototype,"muteRemoteAudio",1),Z([vf(...wt.TRTC.setRemoteAudioVolume),UT(200,e=>e),at({getRemoteId:e=>e})],_e.prototype,"setRemoteAudioVolume",1),Z([Ml("start"),Do(e=>{var r;return(r=e.afterStart)==null?void 0:r.call(e)}),Vo((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r)),at({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Ah[e.getName()],ignoreLog:e=>e.getName()==="Debug",ignoreErrorLog:e=>e.getName()==="AudioProcessor"})],_e.prototype,"startPlugin",1),Z([Ml("update"),Bs((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r),{merge:(e,r)=>($r(e[1],r[1]),e)}),at({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>yh[e.getName()]})],_e.prototype,"updatePlugin",1),Z([Ml("stop"),Fo((e,r)=>{if(e.disableRandomCall)return null;let o=e.getGroup(r),s=e.getAlias();return o==="*"?new RegExp(`${s}.*`):s+o}),at({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>bh[e.getName()]})],_e.prototype,"stopPlugin",1),Z([vf(...wt.TRTC.enableAudioVolumeEvaluation)],_e.prototype,"enableAudioVolumeEvaluation",1),Z([at()],_e.prototype,"getVideoSnapshot",1),Z([at()],_e.prototype,"_setCurrentSpeaker",1),Z([Vo(e=>`a${e.userId}`,()=>!0)],_e.prototype,"_startRemoteAudio",1),Z([Pe(e=>function(r){return b(this,null,function*(){return r.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(o=>this._stopRemoteAudio(Te(Q({},r),{userId:o.userId})).catch(()=>{}))):e.call(this,r)})}),Fo(e=>`a${e.userId}`)],_e.prototype,"_stopRemoteAudio",1),Z([Fo("room")],_e.prototype,"_exitRoom",1),Z([Fo("screen")],_e.prototype,"_stopScreenShare",1),Z([$t(...wt.TRTC.sendSEIMessage),pf({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],_e.prototype,"sendSEIMessage",1),Z([$t(wt.TRTC.sendCustomMessage),pf({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],_e.prototype,"sendCustomMessage",1),Z([Bo()],_e,"create",1),Z([$t(wt.TRTC.create)],_e,"_create",1),Z([Bo()],_e,"setLogLevel",1),Z([Bo()],_e,"isSupported",1),Z([Bo(),at()],_e,"getPermissions",1),Z([Bo()],_e,"getCameraList",1),Z([Bo()],_e,"getMicrophoneList",1),Z([Bo()],_e,"getSpeakerList",1);var Lf=_e,Kn=Lf;var Wl=class{constructor(t,e){m(this,"_flag");m(this,"terminalType");m(this,"userId");m(this,"tinyId");m(this,"role");m(this,"remoteAudioTrack");m(this,"remoteVideoTrack");m(this,"remoteAuxiliaryTrack");this.userId=e.userId||"",this.tinyId=e.tinyId||"",this.role=e.role||"audience",this.terminalType=e.terminalType,this.remoteAudioTrack=new Qi(t,this),this.remoteVideoTrack=new Lo(t,this),this.remoteAuxiliaryTrack=new pl(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 ds(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 xf=class{constructor(){m(this,"_set",new Set);x.on(V.LEAVE_SUCCESS,this.delete,this),x.on(V.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 Sv(){return b(this,null,function*(){let i,t;try{let I=yield nr();i=I&&I.length}catch(I){}try{let I=yield ar();t=I&&I.length}catch(I){}let e={microphone:i,camera:t},{isH264EncodeSupported:r,isVp8EncodeSupported:o,isH264DecodeSupported:s,isVp8DecodeSupported:n,isH265EncodeSupported:a,isH265DecodeSupported:d}=this.checkSystemResult.detail,l=Ro.basis(),p={webRTC:l.isWebRTCSupported,getUserMedia:l.isGetUserMediaSupported,webSocket:l.isWebSocketsSupported,screenShare:l.isScreenShareSupported,webAudio:l.isWebAudioSupported,h264Encode:r,h264Decode:s,vp8Encode:o,vp8Decode:n,h265Encode:a,h265Decode:d},f={browser:l.browser,os:l.os,trtc:p,devices:e},_={isWebCodecSupported:l.isWebCodecSupported,isMediaSessionSupported:l.isMediaSessionSupported,isWebTransportSupported:l.isWebTransportSupported};Ue.uploadEvent({log:`trtcstats-${JSON.stringify(f)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(f)}`),Ue.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(_)}`,userId:this.userId}),xh()})}function zT(){return Pe(i=>{let t=new xf;return function(e,r,o){return b(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 ce({code:z.INVALID_OPERATION,message:je({key:Ge.INVALID_JOIN})});if(this.checkDestroy(),t.isJoined({userId:this.userId,roomId:s,sdkAppId:this.sdkAppId,room:this}))throw new ce({code:z.INVALID_OPERATION,message:je({key:Ge.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}`),x.emit(V.JOIN_START,{room:this,roomId:s,params:e});let n=ui.getEnv();n||(n=Ni.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(Rd.OLD_CLOUD_LADDER)?n=Ni.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(Rd.WEBRTC)&&(n=Ni.WEBRTC))),Ue.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:s}),Ro.checkSystemRequirementsInternal(o).then(a=>{this.checkSystemResult=a,Sv.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!ui.getEnv()&&(yield this.schedule(e,o));let a=yield i.call(this,e,r,o);return this.roomId=s,this._joinedTimestamp=ui.performanceNow(),x.emit(V.JOIN_SUCCESS,{room:this}),o===30&&!e.component&&Ue.uploadEvent({log:`stat-conv-${Number(zr)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw t.delete({room:this,roomId:s}),x.emit(V.JOIN_FAILED,{room:this,error:a}),a}})}})}var JT=()=>Pe(i=>function(...t){return b(this,null,function*(){x.emit(V.LEAVE_START,{room:this}),yield i.call(this,...t),x.emit(V.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function XT(){return Pe(i=>function(...t){return b(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(t=t.filter(r=>r.outMediaTrack&&r.state==="ready"),!t.length))return;x.emit("61",{room:this});let e=i.apply(this,t);return Promise.all(t.map(r=>r.publish(this,e)))})})}function QT(){return Pe(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>r.unpublish()),e})}function YT(){return Pe(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>!r.isSubscribed&&r.subscribe(e)),e})}function Av({fn:i,context:t}){return function(...e){try{let r=i.apply(t,e);return ho(r)?r.catch(o=>B.error(`${i.name}() error observed ${o}`)):r}catch(r){B.error(`${i.name}() error observed ${r}`)}}}var Gl=class{constructor(t){m(this,"_frameWorkType");m(this,"_component");m(this,"_language");m(this,"connectionType");m(this,"_room");m(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0,reportToken:void 0});m(this,"_keyPrefix");m(this,"_log");m(this,"_intervalId");m(this,"_firstPublishedUserList");m(this,"_networkQuality");m(this,"_basicInfo");m(this,"_pathJoinRoom");m(this,"_pathLeaveRoom");m(this,"_pathMainVideoMap");m(this,"_pathMainAudioMap");m(this,"_pathAuxiliaryMap");m(this,"_remoteStreamStatMap");m(this,"_localStreamStat");m(this,"_eventMap",new Map);m(this,"_captureCostSum",0);m(this,"_captureCostCount",0);m(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=B.createLogger({parent:this._room.getLogger(),id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&Xe(this[e])&&(this[e]=Av({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:ft,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,uint32_audio_capture_thread_health_zero_cnt:0,uint32_after3a_silence_duration:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,gs().then(()=>{this._basicInfo.string_os_version=Jr(),this._basicInfo.string_device_name=Vi()||this._basicInfo.string_os_version})}addEvent(t,e){return this._eventMap.set(t,e),x.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(V.JOIN_START,this.handleJoinStart).addEvent(V.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(V.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(V.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(V.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(V.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(V.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(V.JOIN_FAILED,this.handleJoinFailed).addEvent(V.LEAVE_START,this.handleLeaveStart).addEvent(V.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(V.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(V.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(V.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(V.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(V.PUBLISH_START,this.handlePublishStart).addEvent(V.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(V.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(V.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(V.PLAY_TRACK_START,this.handlePlayStart).addEvent(V.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(V.PLAYER_STATE_CHANGED,(({track:t,state:e,type:r})=>{!t.isRemote||!this.hitTest(t.room)||e==="PLAYING"&&(r===M.AUDIO?this.handleAudioPlaying(t):this.handleVideoPlaying(t))})).addEvent(V.SWITCH_ROOM_START,this.handleSwitchRoomStart).addEvent(V.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess).addEvent(V.SWITCH_ROOM_FAILED,this.handleSwitchRoomFailed).addEvent(V.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(V.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(V.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(V.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(V.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)=>x.off(e,t)),this._eventMap.clear()}destroy(){this.uninstallEvents(),mt.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&&(O(t.params.frameWorkType)||(this._frameWorkType=t.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),O(t.params.component)||(this._component=t.params.component,this._basicInfo.uint32_component=this._component),O(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:d,response:l}=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=d,this._pathJoinRoom.int32_schedule_response=l}}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 ce?Number(e.getExtraCode()||e.getCode()):z.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){var e;if(this.hitTest(t.room)&&this._pathLeaveRoom.uint64_end_time===0){if(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;let r=(e=this._room.audioManager.localAudioTrack)==null?void 0:e.after3aSilenceStartTime;r&&(this._localStreamStat.statsToReport.uint32_after3a_silence_duration=pe()-r)}else 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 ce?Number(e.getExtraCode()||e.getCode()):z.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:Te(Q({},yv),{msg_user_info:new qc({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,d=new qc({userId:s,tinyId:n,role:a==="anchor"?20:21}),l=Date.now(),p=`${s}_${r}`,f=this._remoteStreamStatMap.get(p);f&&f.subscribeStartTime===0&&(f.subscribeStartTime=l),r==="main"?(e.muteState.hasVideo&&(o.video||o.smallVideo)&&!this._pathMainVideoMap.has(p)&&this._pathMainVideoMap.set(p,{statsToReport:{msg_user_info:d,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&&o.audio&&!this._pathMainAudioMap.has(p)&&this._pathMainAudioMap.set(p,{statsToReport:{msg_user_info:d,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:s,sendSubscribeCMDTime:l})):e.muteState.hasAuxiliary&&o.auxiliary&&!this._pathAuxiliaryMap.has(p)&&this._pathAuxiliaryMap.set(p,{sendSubscribeCMDTime:l})}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,J.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 d,l,p,f;s&&(l=s,p=1),n&&(d=n,f=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(o,{totalRTT:e,totalLoss:r,count:1,totalAudioDelay:d,totalVideoDelay:l,audioDelayCount:f,videoDelayCount:p})}}))}handleHeartbeatStats(t){var e;if(this.hitTest(t.room)){let{msg_device_info:r,msg_up_stream_info:o,msg_down_stream_info:s}=t.report;if(o.msg_video_status[0]){let{uint32_video_codec_bitrate:n,uint32_video_enc_fps:a,uint32_video_width:d,uint32_video_height:l}=o.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=n,this._localStreamStat.totalVideoFPS+=a,this._localStreamStat.totalVideoWidth+=d,this._localStreamStat.totalVideoHeight+=l,this._localStreamStat.videoCount++}if(o.msg_audio_status){let{uint32_audio_level:n}=o.msg_audio_status;Math.floor(n/$i*100)>0&&(this._localStreamStat.totalAudioLevel+=n/$i,this._localStreamStat.audioLevelCount++)}s.forEach(n=>{let{msg_user_info:a,msg_audio_status:d,msg_video_status:l}=n,p=a.str_identifier,f=this._room.remotePublishedUserMap.get(p);if(l.forEach(_=>{let I=_.uint32_video_stream_type===2,R=_.uint32_video_stream_type===7,y=`${p}_${I?"main":"auxiliary"}`,N=this._remoteStreamStatMap.get(y);if(N&&(I&&(f!=null&&f.remoteVideoTrack.isSubscribed)||R&&(f!=null&&f.remoteAuxiliaryTrack))){N.totalVideoFPS+=_.uint32_video_receive_fps,N.totalVideoBitrate+=_.uint32_video_codec_bitrate,N.videoCount++,N.statsToReport.uint32_video_width===0&&(N.statsToReport.uint32_video_width=_.uint32_video_width),N.statsToReport.uint32_video_height===0&&(N.statsToReport.uint32_video_height=_.uint32_video_height);let P=I?f.remoteVideoTrack:f.remoteAuxiliaryTrack;P.stat.jitterBufferDelay&&(N.videoJitterBufferDelay=P.stat.jitterBufferDelay),P.stat.framesReceived&&(N.statsToReport.uint32_video_consume_render_rate=Math.floor(P.stat.framesDecoded/P.stat.framesReceived*ni(10,6)))}}),!un(d)){let _=`${p}_main`,I=this._remoteStreamStatMap.get(_);this._remoteStreamStatMap.has(_)&&I&&f!=null&&f.remoteAudioTrack.isSubscribed&&(I.totalAudioBitrate+=d.uint32_audio_codec_bitrate,I.audioCount++,f.remoteAudioTrack.stat.jitterBufferDelay&&(I.audioJitterBufferDelay=f.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(d.uint32_audio_level/$i*100)>0&&(I.totalAudioLevel+=d.uint32_audio_level/$i,I.audioLevelCount++),d.uint32_audio_block_time&&(I.statsToReport.uint32_audio_block_time+=d.uint32_audio_block_time))}}),r.uint32_audio_capture_cost&&(this._captureCostSum+=r.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)),r.uint32_audio_capture_cost===0&&((e=this._room.audioManager.localAudioTrack)==null?void 0:e.muted)===!1&&(this._localStreamStat.statsToReport.uint32_audio_capture_thread_health_zero_cnt+=1)}}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 ce?e.getExtraCode()||e.getCode():z.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&tn)>=0}hasAudioFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&rn)>=0}hasAuxFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&ba)>=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:p,count:f,audioDelayCount:_,videoDelayCount:I,totalAudioDelay:R,totalVideoDelay:y}=o;t.statsToReport.uint32_avg_down_loss=Math.floor(p/f),_&&R&&(t.statsToReport.uint32_audio_network_p2p_delay=Math.floor(R/_),t.audioJitterBufferDelay&&(t.statsToReport.uint32_p2p_delay=Math.floor(t.statsToReport.uint32_audio_network_p2p_delay+t.audioJitterBufferDelay))),I&&y&&(t.statsToReport.uint32_video_network_p2p_delay=Math.floor(y/I))}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,M.AUDIO),t.statsToReport.uint32_video_play_time=s.getDuration(e,M.VIDEO)),t.statsToReport.uint32_video_render_first&&(t.statsToReport.uint32_video_render_first=Math.min(t.statsToReport.uint32_video_render_first,$s));let{badCaseDetector:n}=this._room,{dataFreeze:a,count:d}=n.getDataFreezeDuration(e),{renderFreeze:l}=n.getRenderFreezeDuration(e);t.statsToReport.uint32_video_block_count=d,t.statsToReport.uint32_video_block_time=Math.min(a,t.statsToReport.uint32_video_play_time),t.statsToReport.uint32_video_external_block_time=Math.min(l,t.statsToReport.uint32_video_play_time),t.statsToReport.uint32_audio_block_time=Math.min(t.statsToReport.uint32_audio_block_time,t.statsToReport.uint32_audio_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>$s&&(t.statsToReport.uint64_play_first_frame_time=t.statsToReport.uint64_start_enter_time+$s)}),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>$s&&(t.statsToReport.uint64_render_first_frame_time=t.statsToReport.uint64_start_enter_time+$s)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>$s&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+$s)}getReportData(){this._basicInfo.uint32_networkType=Ld();let t={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new qc({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:ln(this._signalInfo.relayIp),uint32_client_ip:ln(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*ni(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:ln(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend,str_user_sig:this._room.userSig,bytes_report_token:this._signalInfo.reportToken};return Ma(t),t}report(){return b(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 b(this,null,function*(){if(t.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),r=Io.enable?Oi(t,2001,e):yield Hm(t),o=r instanceof ArrayBuffer,s=`${Mi(e,mo.KEY_POINT)}&gzip=${+o}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(s,r));let a=[this.uploadKVStat(J),this.uploadKVStat(Is)];n||a.push(Pi({url:s,body:r,priority:"low"})),yield Promise.all(a)})}setConnectionType(t){this.connectionType=t,this._basicInfo.uint32_connection_type=t}uploadKVStat(r){return b(this,arguments,function*(t,e=this._room.sdkAppId){var l,p;let o=t.getReportData((l=this._room)==null?void 0:l.userSig,(p=this._signalInfo)==null?void 0:p.reportToken);if(o.stats_count.length===0&&o.stats_distribution.length===0)return;o.msg_sdk_basic_info=Te(Q({},o.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(o);let s=Io.enable?Oi(o,2003,e):yield Hm(o),n=s instanceof ArrayBuffer,a=`${Mi(+e,mo.KV_STAT)}&gzip=${+n}`,d=!1;navigator.sendBeacon&&(d=navigator.sendBeacon(a,s)),d||Pi({url:a,body:s})})}};Z([ys({settings:{timeout:500,retries:3}})],Gl.prototype,"upload",1);var $s=5e3,yv={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},qc=class{constructor(t){m(this,"str_identifier");m(this,"str_tinyid");m(this,"uint32_role");this.str_identifier=String(t.userId),this.str_tinyid=String(t.tinyId||0),this.uint32_role=t.role}},ZT=Gl;var kf=class{constructor(){m(this,"_startTime");m(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=pe())}stop(){this._endTime===0&&(this._endTime=pe())}getDuration(){return this._endTime===0?pe()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},jl=kf;var Uf=class{constructor(t){m(this,"_room",null);m(this,"_durationMap");m(this,"_eventMap",new Map);this._room=t.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(V.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(V.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(V.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`,M.AUDIO),e.hasVideo&&!r.hasVideo&&this.stopDurationItem(`${o}_main`,M.VIDEO),e.hasAuxiliary&&!r.hasAuxiliary&&this.stopDurationItem(`${o}_auxiliary`,M.VIDEO);let s=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(o);s&&(!e.hasAudio&&r.hasAudio&&s.remoteAudioTrack.isSubscribed&&this.addDuractionItem(o,M.AUDIO,"main"),!e.hasVideo&&r.hasVideo&&s.remoteVideoTrack.isSubscribed&&this.addDuractionItem(o,M.VIDEO,"main"),!e.hasAuxiliary&&r.hasAuxiliary&&s.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(o,M.VIDEO,"auxiliary"))}),this._eventMap.forEach((t,e)=>x.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>x.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 jl,n=this._durationMap.get(o);n?this.isRecording(n[e])||n[e].push(s):this._durationMap.set(o,{userId:t,type:r,audio:e===M.AUDIO?[s]:[],video:e===M.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()}},KT=Uf;var Vf=class{constructor(){m(this,"renderFreezeMap",new Map);m(this,"dataFreezeMap",new Map)}get(t,e){let r=this.renderFreezeMap.get(t),o=this.dataFreezeMap.get(t);return e?e==="data"?o:r:(ct||nt)&&r&&o&&r.duration>o.duration?r:o}set(t,e,r){r==="data"?this.dataFreezeMap.set(t,e):this.renderFreezeMap.set(t,e)}clear(){this.renderFreezeMap.clear(),this.dataFreezeMap.clear()}},Ff=class{constructor(t){m(this,"_room");m(this,"_renderFreezeMap",new Map);m(this,"_isVideoPlayingEventFiredMap",new Map);m(this,"_dataFreezeMap",new Map);m(this,"_monitorFreezeData",new Vf);m(this,"_eventMap",new Map);m(this,"_videoEncodeFailedCount",0);m(this,"_audioEncodeFailedCount",0);m(this,"_encodeFailedThreshold",3);m(this,"ABNORMAL_TIME_LOWER_LIMIT",3e3);m(this,"ABNORMAL_TIME_UPPER_LIMIT",5e3);m(this,"_videoAbnormalTimestampMap",new Map);m(this,"_remoteVideoAbnormalTimestampMap",new Map);m(this,"_audioAbnormalTimestampMap",new Map);m(this,"eventListenerMap",new Map);this._room=t.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(V.LEAVE_SUCCESS,({room:t})=>{this.hitTest(t)&&this.stop()}).set(V.PLAY_TRACK_START,this.onPlayTrackStart).set(V.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(V.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(V.PLAYER_STATE_CHANGED,({track:t,state:e,reason:r,type:o})=>{if(!(!t.isRemote||!t.room||!this.hitTest(t.room)||o!==M.VIDEO)){if(e==="PLAYING"){let s=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.set(s,!0)}r===M.MUTE?this.onVideoTrackMuted(t):r===M.UNMUTE&&this.onVideoTrackUnmuted(t)}}).set(V.HEARTBEAT_REPORT,this.onHearBeatReport).set(V.REMOTE_VIDEO_PLAY_START,this.onRemoteVideoPlayStart).set(V.REMOTE_VIDEO_PLAY_FINISH,this.onRemoteVideoPlayEnd),this._eventMap.forEach((t,e)=>x.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>x.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 jl;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)&&(this.localMediaTrackDetector(e),this.remoteMediaTrackDetector(e))}remoteMediaTrackDetector(t){t.msg_down_stream_info.length>0&&t.msg_down_stream_info.forEach(e=>{var s;if(e.msg_video_status.length===0)return;let r=e.msg_user_info.str_identifier,o=(s=this._room.remotePublishedUserMap.get(r))==null?void 0:s.remoteVideoTrack;e.msg_video_status.forEach(n=>{let a=pe();if(n.uint32_video_codec_bitrate!==void 0&&n.uint32_video_codec_bitrate>0&&n.uint32_video_receive_fps===0&&(o!=null&&o.muted))if(!this._remoteVideoAbnormalTimestampMap.has(`${r}-decode`))this._remoteVideoAbnormalTimestampMap.set(`${r}-decode`,a);else{let d=this._remoteVideoAbnormalTimestampMap.get(`${r}-decode`);d&&a-d>this.ABNORMAL_TIME_LOWER_LIMIT&&a-d<this.ABNORMAL_TIME_UPPER_LIMIT&&Ue.uploadEvent({userId:this._room.userId,log:`stat-${Ot.VIDEO_DECODE_FAILED_DURING_CALL}`})}else{let d=this._remoteVideoAbnormalTimestampMap.get(`${r}-decode`);d&&a-d>=this.ABNORMAL_TIME_UPPER_LIMIT&&(Ue.uploadEvent({userId:this._room.userId,log:`stat-${Ot.VIDEO_DECODE_RESUME_DURING_CALL}`}),this._remoteVideoAbnormalTimestampMap.delete(`${r}-decode`))}if(n.uint32_video_codec_bitrate!==void 0&&n.uint32_video_codec_bitrate>5e5&&n.uint32_video_dec_fps!==void 0&&n.uint32_video_dec_fps<=5)if(!this._remoteVideoAbnormalTimestampMap.has(`${r}-hardware`))this._remoteVideoAbnormalTimestampMap.set(`${r}-hardware`,a);else{let d=this._remoteVideoAbnormalTimestampMap.get(`${r}-hardware`);if(d&&a-d>this.ABNORMAL_TIME_LOWER_LIMIT/2&&a-d<this.ABNORMAL_TIME_UPPER_LIMIT*2){Ue.uploadEvent({userId:this._room.userId,log:`stat-${Ot.VIDEO_HARDWARE_DECODE_FAILED}`});let l=this._room.remotePublishedUserMap.get(r);if(l){let p=n.uint32_video_stream_type===2?l.remoteVideoTrack:l.remoteAuxiliaryTrack;p&&(p.log.warn("decode failed during call"),p.emit("decode-failed-during-call"))}}}else{let d=this._remoteVideoAbnormalTimestampMap.get(`${r}-hardware`);d&&a-d>=this.ABNORMAL_TIME_UPPER_LIMIT*2&&(Ue.uploadEvent({userId:this._room.userId,log:`stat-${Ot.VIDEO_HARDWARE_DECODE_RESUME}`}),this._remoteVideoAbnormalTimestampMap.delete(`${r}-hardware`))}})})}localMediaTrackDetector(t){if(t.msg_up_stream_info.msg_video_status){let e=t.msg_up_stream_info.msg_video_status,r=Array.from(this._room.localTracks).find(s=>s.kind==="video"&&!s.isScreen),o=(r==null?void 0:r.stat.bytesSent)||0;if((r==null?void 0:r.isMediaTrackActive)===!1||o<=0||r!=null&&r.isUseCustomSource)return;e.forEach(s=>{let n=pe();if(s.uint32_video_stream_type===2)if(s.uint32_video_capture_fps!==0&&s.uint32_video_codec_bitrate===0&&s.uint32_video_enc_fps===0&&(r!=null&&r.isPublished))if(!this._videoAbnormalTimestampMap.has("local-encode"))this._videoAbnormalTimestampMap.set("local-encode",n);else{let a=this._videoAbnormalTimestampMap.get("local-encode");a&&n-a>this.ABNORMAL_TIME_LOWER_LIMIT&&n-a<this.ABNORMAL_TIME_UPPER_LIMIT&&Ue.uploadEvent({userId:this._room.userId,log:`stat-${Ot.VIDEO_ENCODE_FAILED_DURING_CALL}`})}else{let a=this._videoAbnormalTimestampMap.get("local-encode");a&&n-a>=this.ABNORMAL_TIME_UPPER_LIMIT&&Ue.uploadEvent({userId:this._room.userId,log:`stat-${Ot.VIDEO_ENCODE_RESUME_DURING_CALL}`}),this._videoAbnormalTimestampMap.delete("local-encode")}})}if(t.msg_up_stream_info.msg_audio_status){let e=t.msg_up_stream_info.msg_audio_status,r=Array.from(this._room.localTracks).find(n=>n.kind==="audio"),o=(r==null?void 0:r.stat.bytesSent)||0;if((r==null?void 0:r.isMediaTrackActive)===!1||o<=0||r!=null&&r.isUseCustomSource)return;let s=pe();if(e.uint32_audio_codec_bitrate===0&&(r!=null&&r.isPublished))if(!this._audioAbnormalTimestampMap.has("local-encode"))this._audioAbnormalTimestampMap.set("local-encode",s);else{let n=this._audioAbnormalTimestampMap.get("local-encode");n&&s-n>this.ABNORMAL_TIME_LOWER_LIMIT&&s-n<this.ABNORMAL_TIME_UPPER_LIMIT&&Ue.uploadEvent({userId:this._room.userId,log:`stat-${Ot.AUDIO_ENCODE_FAILED_DURING_CALL}`})}else{let n=this._audioAbnormalTimestampMap.get("local-encode");n&&s-n>=this.ABNORMAL_TIME_UPPER_LIMIT&&Ue.uploadEvent({userId:this._room.userId,log:`stat-${Ot.AUDIO_ENCODE_RESUME_DURING_CALL}`}),this._audioAbnormalTimestampMap.delete("local-encode")}}}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();if(n>Nd){let a=this._monitorFreezeData.get(t,"data");this._monitorFreezeData.set(t,{userId:e,type:r,duration:a?a.duration+n:n},"data")}else o.durationItemList.pop()}getTotalDuration(t){return t.reduce((e,r)=>{let o=r.getDuration();return e+Math.min(o,5e3)},0)}onPlayTrackStart({track:t}){if(!t.isRemote||!this.hitTest(t.room)||t.kind!==M.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()<Nd&&r.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(r.durationItemList),e.count=r.durationItemList.length}return e}getRenderFreezeDuration(t){let e={renderFreeze:0,count:0},r=this._renderFreezeMap.get(t);return r&&(e.renderFreeze=r.totalDuration,e.count=r.count),e}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(t){return this._isVideoPlayingEventFiredMap.has(t)?!this._isVideoPlayingEventFiredMap.get(t):!1}onRemoteVideoPlayStart({track:t,player:e}){var n;if(!Qr())return;let r=0,o=()=>{document.hidden||(r=0)};document.addEventListener("visibilitychange",o);let s=(a,d)=>{var l;if(r){let p=t.decodeFPS,f=p>0&&p<=5?600+1e3/p:600,_=d.presentationTime-r;if(_>f){_=Math.min(_,5e3);let I=`${t.userId}_${t.streamType}`,R=this._monitorFreezeData.get(I,"render");R?R.duration+=_:this._monitorFreezeData.set(I,{userId:t.userId,type:t.streamType,duration:_},"render");let y=this._renderFreezeMap.get(I);y?(y.totalDuration+=_,y.count+=1):this._renderFreezeMap.set(I,{userId:t.userId,type:t.streamType,totalDuration:_,count:1})}}r=d.presentationTime,(l=e.element)==null||l.requestVideoFrameCallback(s)};(n=e.element)==null||n.requestVideoFrameCallback(s),this.eventListenerMap.set(`${t.userId}_${t.streamType}`,{onVisibilityChange:o})}onRemoteVideoPlayEnd({track:t,player:e}){let r=`${t.userId}_${t.streamType}`,o=this.eventListenerMap.get(r);o&&document.removeEventListener("visibilitychange",o.onVisibilityChange)}resetMonitor(){this._monitorFreezeData.clear()}hitTest(t){return t===this._room}destroy(){this.uninstallEvents()}},eI=Ff;var iI=ai(mi(),1);var ql=class{constructor(t,e,r,o,s,n=4/3){this.vbMode=t;this.faceDetectorHash=r;this.visionTaskRegistry=o;this.logger=s;m(this,"animationState");m(this,"originalAspect");m(this,"totalOffsetX",0);m(this,"totalOffsetY",0);m(this,"defaultScaleRatio",.1);m(this,"isRecovering",!1);m(this,"boundaryY",280);m(this,"lastActionTime",0);m(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=n||4/3,this.visionTaskRegistry.setVideo(this.faceDetectorHash,e)}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?J.addSuccessEvent({key:s.key}):J.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,d=n.originY,l=n.width,p=n.height;this.vbMode===1?this.dualStageCropping(r,o,a,d,l,p):this.vbMode===2&&this.movingPortrait(r,o,a,d,l,p)}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 d=t+r/2,l=e+o/2,p,f,{min:_,offset:I}=this.calculateBoundary(d,s,t,r),{min:R,offset:y}=this.calculateBoundary(l,n,e,o);return p=2*_+r,f=2*R+o,p/f>this.originalAspect?(p=f*this.originalAspect,I=d-p/2):(f=p/this.originalAspect,y=l-f/2),r/s>a&&(I=0,y=0,p=s,f=n),I=Math.max(0,Math.min(I,s-p)),y=Math.max(0,Math.min(y,n-f)),{sx:I,sy:y,cropWidth:p,cropHeight:f,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=Q({},t),this.animationState.target=Q({},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)),Be(this.animationState.current.scaleOffsetX)&&Be(this.animationState.target.scaleOffsetX)&&Be(this.animationState.current.scaleOffsetY)&&Be(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(ni(t.sx-e.sx,2)+ni(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 d=this.calculateTargetPosition(r,o,s,n,t,e);this.processFacePositionCrop(d,t,e),s*n/d.cropWidth/d.cropHeight>a&&this.recoverOriginal(t,e)}movingPortrait(t,e,r,o,s,n){var d,l,p,f,_,I,R,y,N,P,W,G;let a={sx:r+s/2+this.totalOffsetX,sy:o+n/2+this.totalOffsetY,cropWidth:t,cropHeight:e,scaleRatio:(l=(d=this.animationState.current)==null?void 0:d.scaleRatio)!=null?l:1,scaleOffsetX:(f=(p=this.animationState.current)==null?void 0:p.scaleOffsetX)!=null?f:0,scaleOffsetY:(I=(_=this.animationState.current)==null?void 0:_.scaleOffsetY)!=null?I:0,timestamp:Date.now()};this.animationState.target={sx:t/2,sy:o+n/2,cropWidth:t,cropHeight:e,scaleRatio:(y=(R=this.animationState.target)==null?void 0:R.scaleRatio)!=null?y:1,scaleOffsetX:(P=(N=this.animationState.target)==null?void 0:N.scaleOffsetX)!=null?P:0,scaleOffsetY:(G=(W=this.animationState.target)==null?void 0:W.scaleOffsetY)!=null?G: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 bv=`#version 300 es
|
|
64
|
+
${r.stack}`),!1}},s};var Vo=new WeakMap;function d_(s){let i=Vo.get(s);i&&(i.forEach(e=>clearTimeout(e)),Vo.delete(s))}function l_(s,i){return K((e,t)=>function(...r){let o=Vo.get(this);o||(o=new Map,Vo.set(this,o));let n=i(...r),a=o.get(n);if(!a||a<=0){e.apply(this,r);let c=setTimeout(()=>{var l;(l=Vo.get(this))==null||l.delete(n)},s);o.set(n,c)}else{clearTimeout(a);let c=window.setTimeout(()=>{var l;e.apply(this,r),(l=Vo.get(this))==null||l.delete(n)},s);o.set(n,c)}})}var h_="trtc-sdk-v5",Zh="5.15.2-beta.1";function nt(...s){return K((i,e)=>function(...t){try{Md.call(this,s,t,e,this._name)}catch(r){return Promise.reject(r)}return i.apply(this,t)})}function Kh(...s){return K((i,e)=>function(...t){try{Md.call(this,s,t,e,this._name)}catch(r){throw r}return i.apply(this,t)})}function Md(s,i,e,t){if(Ie(s))for(let r=0;r<s.length;r++)Dd.call(this,{rule:s[r],value:i[r],key:s[r].name,fnName:e,className:t});else Dd.call(this,{rule:s,value:i[0],key:s.name,fnName:e,className:t})}function Dd({rule:s,value:i,key:e,fnName:t,className:r}){function o(c){return{code:U.INVALID_PARAMETER,extraCode:c,fnName:t,messageParams:{key:e,rule:s,value:i}}}if(T(i)){if(s.required)throw new B(o(5001));if(T(s.defaultValue)){me(s.validate)&&s.validate.call(this,i,e,t,r,this);return}i=s.defaultValue}if(Array.isArray(s.type)){let c=!1;for(let l=0;l<s.type.length;l++)s.type[l]===null&&i===null&&(c=!0),me(s.type[l])&&i instanceof s.type[l]&&(c=!0),ne(s.type[l])&&Pe(i)===s.type[l].toLowerCase()&&(c=!0);if(!c)throw new B({code:U.INVALID_PARAMETER,extraCode:5002,fnName:t,messageParams:{key:e,rule:{type:s.type.map(l=>es(l)?Js(l):ne(l)?l:Pe(l))},value:i}})}else if(!T(s.type)&&Pe(i)!==s.type)throw new B(o(5002));if(s.allowEmpty===!1){let c=te(i)&&(i===0||Number.isNaN(i)),l=ne(i)&&i.trim()==="";if(c||l)throw new B(o(5003))}if(s.notLessThanZero&&te(i)&&i<0)throw new B(o(5006));if(!T(s.min)&&te(i)&&i<s.min)throw new B(o(5007));if(!T(s.max)&&te(i)&&i>s.max)throw new B(o(5008));if(ne(s.instanceOf)){if(!i||i._name!==s.instanceOf)throw new B(o(5004))}else if(me(s.instanceOf)&&!(i instanceof s.instanceOf))throw new B(o(5004));if(Array.isArray(s.values)&&!s.values.includes(i))throw new B(o(5005));let{properties:n}=s;dt(n)&&vt(i)&&Object.keys(n).forEach(c=>{Dd.call(this,{rule:n[c],value:i&&i[c],key:`${c}`,fnName:t,className:r})});let{arrayItem:a}=s;dt(a)&&Ie(i)&&i.forEach((c,l)=>{Dd.call(this,{rule:a,value:c,key:`${e}[${l}]`,fnName:t,className:r})}),me(s.validate)&&s.validate.call(this,i,e,t,r,this)}var dI=0;function Re(s={}){let{getRemoteId:i=()=>"",replaceArg:e,getKVReportKey:t,ignoreLog:r,ignoreErrorLog:o}=s;return K((n,a)=>function(...c){var E,g,R;function l(N,j,V){if(V&&V.includes(N))return"hided";if(e){let ae=e(...c);if(c[ae.argIndex]===j)return ae.value}if(j===c||N in c)return j;try{return j instanceof HTMLElement?`id: ${j.id} type:${Pe(j)}`:j instanceof MediaStreamTrack?qa(j):(JSON.stringify(j),j)}catch(ae){return`type:${Pe(j)}`}}let u=(this==null?void 0:this._log)||C,m=++dI;if(r!=null&&r(...c))return n.apply(this,c);c.length>0?u.info(`${a}() ${m} ${JSON.stringify(c,(N,j)=>l(N,j,["userSig","privateMapKey"]))}`):u.info(`${a}() ${m}`);let p=t?t(...c):Dc[a],h=(o==null?void 0:o(...c))||!1;try{let N=n.apply(this,c),j=x();if(Rr(N)){let V=`${a.includes("Plugin")?`${((g=(E=c[0]).getName)==null?void 0:g.call(E))||""} `:" "}`;return N.then(ae=>(u.info(`${a}() success ${m} ${V}${i.call(this,...c)}`),y.addSuccessEvent({key:p,cost:x()-j}),ae)).catch(ae=>{var ge;ae=B.convertFrom.call(this,ae,a,c.length===1?c[0]:c);let b=ae.extraCode||ae.code,$=(ge=ae.message)!=null&&ge.includes(b)?"":` code:${b}`,P=(ae==null?void 0:ae.code)===U.OPERATION_ABORT;throw h||u[P?"warn":"error"](`${a}() failed ${m} ${V}${i.call(this,...c)} ${ae}${$} params: ${JSON.stringify(c,l)}`),y.addFailedEvent({key:p,error:ae}),ae})}return y.addSuccessEvent({key:p}),N}catch(N){N=B.convertFrom.call(this,N,a);let j=N.extraCode||N.code,V=(R=N.message)!=null&&R.includes(j)?"":` code:${j}`,ae=(N==null?void 0:N.code)===U.OPERATION_ABORT;throw h||u[ae?"warn":"error"](`${a}() failed ${m} ${N}${V} params: ${JSON.stringify(c,l)}`),y.addFailedEvent({key:p,error:N}),N}})}var Od=s=>K((i,e)=>function(t,r){return f(this,null,function*(){let o=this._plugins.get(t);if(!o)throw this._log.error(`plugin ${String(t)} is not found`),new B({code:U.OPERATION_ABORT,message:`plugin ${String(t)} is not found`,fnName:e});if(me(o.constructor.isSupported)&&!o.constructor.isSupported())throw this._log.error(`plugin ${String(t)} is not supported`),new B({code:U.ENV_NOT_SUPPORTED,message:`plugin ${String(t)} is not supported`,extraCode:5210,fnName:e});return Md.call(this,o.getValidateRule(s),[r],e,"TRTC"),i.call(this,o,r)})});var Pd=0,em,ur=class ur{constructor(i){this.core=i;d(this,"log");d(this,"customAudioReferenceMap",new Map);d(this,"audioRefId",0);d(this,"audioContext",Ae());d(this,"localAudioWorkletNode");d(this,"screenAudioWorkletNode");d(this,"mixNode");d(this,"silentNode");Pd=Pd+1,this.log=i.log.createChild({id:`${this.getAlias()}${Pd}`}),this.log.info(`created id=${this.getAlias()}${Pd}`),this.installEvent()}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,o){if(!i.room.audioManager.hasAudioTrack&&!i.room.audioManager.hasScreenAudioTrack)throw new B({code:U.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return em||(em=this.doPreload(i)),em}doPreload(i){return f(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield sr(this.audioContext,t)}catch(r){this.log.error(`preload audioProcessor failed. ${r}`)}finally{URL.revokeObjectURL(t)}})}getName(){return ur.Name}getAlias(){return"ap"}getGroup(){return"ap"}getValidateRule(i){switch(i){case"start":return ur.getStartValidateRule(this.core);case"update":return ur.updateValidateRule;case"stop":return ur.stopValidateRule}}start(i){return f(this,null,function*(){var p,h,E,g;let{room:e}=this.core,{sdkAppId:t,userId:r,userSig:o,assetsPath:n=this.core.assetsPath,audioReference:a,processLevel:c,enableDump:l,isLocalAudioNeedAudioProcess:u=!0,isScreenAudioNeedAudioProcess:m=!1}=i;if(this.core.room.audioManager.isLocalAudioNeedAudioProcess=u,this.core.room.audioManager.isScreenAudioNeedAudioProcess=m,!n)throw new B({code:U.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(this.core.validateSourceNode(),yield this.preload(`${n}/audioProcessor-wasm.js`),u&&!this.localAudioWorkletNode){let{sign:R,status:N,timestamp:j}=yield this.getAuthData(t,r,o);this.localAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.localAudioWorkletNode,"localAudio",t,r,j,R,N,e)}if(m&&!this.screenAudioWorkletNode){let{sign:R,status:N,timestamp:j}=yield this.getAuthData(t,r,o);this.screenAudioWorkletNode=new AudioWorkletNode(this.audioContext,"trtc-audio-processor",{numberOfInputs:2,numberOfOutputs:1}),this.initWorkletNode(this.screenAudioWorkletNode,"screenAudio",t,r,j,R,N,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()),(p=this.localAudioWorkletNode)==null||p.port.postMessage({type:"enable"}),(h=this.screenAudioWorkletNode)==null||h.port.postMessage({type:"enable"}),e.audioManager.addAudioProcessor(this.mixNode,this.silentNode,this.localAudioWorkletNode,this.screenAudioWorkletNode),T(a)||a.forEach(R=>{this.customAudioReferenceMap.set(R,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:R,refId:`o-${this.audioRefId++}`})}),T(c)||(E=this.localAudioWorkletNode)==null||E.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:c}}),T(l)||(g=this.localAudioWorkletNode)==null||g.port.postMessage({type:"dump",data:{enable:l}})})}update(i){return f(this,null,function*(){var o,n,a;let{audioReference:e,enableDump:t,processLevel:r}=i;T(e)||(this.customAudioReferenceMap.forEach((c,l)=>{this.customAudioReferenceMap.delete(l),this.core.room.audioManager.updateAudioReference({type:"remove",refId:c})}),e.forEach(c=>{this.customAudioReferenceMap.set(c,`o-${this.audioRefId++}`),this.core.room.audioManager.updateAudioReference({type:"add",audioReference:c,refId:`o-${this.audioRefId++}`})})),T(r)||(o=this.localAudioWorkletNode)==null||o.port.postMessage({type:"setConfig",data:{aecEnable:1,aecNlpLevel:r}}),T(t)||((n=this.localAudioWorkletNode)==null||n.port.postMessage({type:"dump",data:{enable:t}}),(a=this.screenAudioWorkletNode)==null||a.port.postMessage({type:"dump",data:{enable:t}}))})}stop(){return f(this,null,function*(){var e,t;let{room:i}=this.core;(e=this.localAudioWorkletNode)==null||e.port.postMessage({type:"disable"}),(t=this.screenAudioWorkletNode)==null||t.port.postMessage({type:"disable"}),yield i.audioManager.removeAudioProcessor(this.localAudioWorkletNode,this.screenAudioWorkletNode)})}destroy(){this.localAudioWorkletNode&&(this.localAudioWorkletNode.port.onmessage=null),this.screenAudioWorkletNode&&(this.screenAudioWorkletNode.port.onmessage=null),this.uninstallEvent()}getAuthData(i,e,t){return f(this,null,function*(){let r=String(Date.now()).slice(0,-3),{auth:o,sign:n,status:a,message:c}=yield uI({sdkAppId:i,userSig:t,userId:e,timestamp:r});if(!o)throw this.log.info(`audioProcessor: ${e} auth result: ${o}. Message: ${c}`),new B({code:U.INVALID_PARAMETER,message:c});return{sign:n,status:a,timestamp:r}})}initWorkletNode(i,e,t,r,o,n,a,c){i.port.postMessage({type:"init",data:{sdkAppId:String(t),userId:r,timestamp:o,sign:n,status:a}}),i.port.onmessage=l=>{var m;let{data:u}=l;switch(u.type){case"cost":let p=(u==null?void 0:u.value)>10?"info":"debug";this.log[p](`${e==="localAudio"?"":`[${e}] `}avg cost: ${u.value} max: ${u==null?void 0:u.max}(${xs(new Date(u==null?void 0:u.maxCostTimestamp))}) hist: ${(m=u==null?void 0:u.hist)==null?void 0:m.join(" ")}`);return;case"log":this.log[u.logLevel](`${e==="localAudio"?"":`[${e}] `}${u.value}`);return;case"dump":S.emit("265",{room:c,data:u.value,type:e==="localAudio"?"dump":"dump-screen-audio"});return;case"detectEcho":this.log.warn(`${e==="localAudio"?"":`[${e}] `}detect echo: ${os()?Dt():Mt()}`);return}}}handleLocalAudioStarted(i){return f(this,null,function*(){var e;if(!(!this.hitTest(i.room)||((e=this.core.room.scheduleResult.config)==null?void 0:e.audioProcessor)!==!0))try{yield this.core.trtc.startPlugin("AudioProcessor",{sdkAppId:this.core.room.sdkAppId,userId:this.core.room.userId,userSig:this.core.room.userSig}),this.log.warn("audio processor auto start success")}catch(t){this.log.warn(`audio processor auto start failed, error: ${t}`)}})}handleLocalAudioStopped(i){return f(this,null,function*(){var e;!this.hitTest(i.room)||((e=this.core.room.scheduleResult.config)==null?void 0:e.audioProcessor)!==!0||(yield this.core.trtc.stopPlugin("AudioProcessor"))})}installEvent(){this.core.innerEmitter.on("104",this.handleLocalAudioStarted,this),this.core.innerEmitter.on("114",this.handleLocalAudioStopped,this)}uninstallEvent(){this.core.innerEmitter.off("104",this.handleLocalAudioStarted,this),this.core.innerEmitter.off("114",this.handleLocalAudioStopped,this)}hitTest(i){return i===this.core.room}};d(ur,"updateValidateRule",{type:"object"}),d(ur,"stopValidateRule",{type:"object"}),d(ur,"Name","AudioProcessor");var kd=ur;function lI(s,i=_.MAIN){return`https://${Ii[i]||vd(s,i)}/api/v1/audioAiAuth`}function uI(r){return f(this,arguments,function*({sdkAppId:s,userId:i,userSig:e,timestamp:t}){let n=`${lI(s)}?sdkAppId=${s}&userId=${i}&userSig=${e}×tamp=${t}`,a=yield fetch(n),{data:{errCode:c,errMsg:l,sign:u,status:m}}=yield a.json();if(m==="1")return{auth:!0,sign:u,status:m,message:l};let p=$t(s)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",h="Init RTCAudioProcessor failed.",E="";switch(c){case 1:E="Please check your params.";break;case 2:E=`You need to buy packages. Refer to: ${p}`;break;case 3:E="Server is invalid. Please contact our engineer. ";break;case 4:E=`Your packages is not active. Refer to: ${p}`;break;case 5:E=`Your packages is expired. Refer to: ${p}`;break;case 6:E="Your version is not supported.";break}return{auth:!1,status:m,message:l?`${h} Reason: ${l}. ${E}`:`${h}, ${E}`}})}var Ld=0,tm=class{constructor(i,e){d(this,"audioObjectURL");d(this,"player");d(this,"publisher");d(this,"mixInput");this.mixInput=new To(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)}}reload(i){return f(this,null,function*(){if(i.url){let e=yield ca.download(i.url,{retries:3,type:"blob"});this.audioObjectURL&&URL.revokeObjectURL(this.audioObjectURL),this.audioObjectURL=URL.createObjectURL(e),this.player&&this.publisher?(this.player.src=this.audioObjectURL,this.publisher.src=this.audioObjectURL):(this.player=new Audio(this.audioObjectURL),this.player.crossOrigin="anonymous",this.publisher=new Audio(this.audioObjectURL),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher),this.updateListener(i),this.updateSettings(i))}else this.mixInput.replaceSource(i.track)})}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 Promise.all([(i=this.player)==null?void 0:i.play(),(e=this.publisher)==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 Fo(s,i){if(i&&typeof i!="function")throw new B({code:U.INVALID_PARAMETER,message:`start audioMixer plugin: param ${s} should be a function.`})}var xi=class xi{constructor(i){this.core=i;d(this,"log");d(this,"mixedMusicMap",new Map);d(this,"cacheMusicMap",new Map);Ld=Ld+1,this.log=i.log.createChild({id:`${this.getAlias()}${Ld}`}),this.log.info(`created id=${this.getAlias()}${Ld}`)}getName(){return xi.Name}getAlias(){return"ax"}getGroup(i){return i==null?void 0:i.id}getValidateRule(i){switch(i){case"start":return xi.startValidateRule;case"update":return xi.updateValidateRule;case"stop":return xi.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e}=this.core;this.core.validateSourceNode(),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 o=this.cacheMusicMap.get(t);o?i.url?o.reset():(o.mixInput.replaceSource(i.track),o.mixInput.connect()):(o=new tm(i,e.audioManager),this.cacheMusicMap.set(t,o)),o.updateListener(i),o.updateSettings(i);try{yield o.play()}catch(n){yield this.handleAutoPlayFailed(o,i,n)}this.mixedMusicMap.set(t,o),o.mixInput.source.node&&this.core.room.audioManager.updateAudioReference({type:"add",audioReference:o.mixInput.source.node,refId:`ax-${t}`}),this.log.info(`start mix audio track ${t} success.`),y.addEnum({key:502700,value:3}),this.kvUpload(i)})}handleAutoPlayFailed(i,e,t){return f(this,null,function*(){if(t.name==="NotSupportedError")this.log.error(`play failed, try to reload source. error: ${t}`),yield i.reload(e),yield i.play();else if(t.name==="NotAllowedError")if(this.core.room.enableAutoPlayDialog){let r=()=>{var o;(o=i.play())==null||o.finally(()=>{S.off("154",r,this)})};S.on("154",r,this),go()}else this.core.trtc.emit(L.AUTOPLAY_FAILED,{userId:"",mediaType:"audio",resume:()=>f(this,null,function*(){return i.play()})});else throw t})}update(i){return f(this,null,function*(){let{id:e,operation:t,seekFrom:r,playbackRate:o}=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:o,operation:n,seekFrom:a,onTimeUpdate:c,onDurationChange:l,onEnded:u}=i;e&&y.addCount({key:502009}),t&&y.addCount({key:502001}),r&&y.addCount({key:502002}),o&&y.addCount({key:502003}),n&&y.addCount({key:502004}),a&&y.addCount({key:502005}),typeof c!="function"&&y.addCount({key:502007}),typeof u!="function"&&y.addCount({key:502008}),typeof l!="function"&&y.addCount({key:502006})}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(xi,"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],o=["mp3","ogg","wav","flac"],n=r.split(".").pop(),a=o.indexOf(n)>=0,c=r.startsWith("blob"),l=r.startsWith("data");if(!(a||c||l))throw new B({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 B({code:U.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:t});Fo("onTimeUpdate",i.onTimeUpdate),Fo("onEnded",i.onEnded),Fo("onDurationChange",i.onDurationChange)}}),d(xi,"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){Fo("onTimeUpdate",i.onTimeUpdate),Fo("onEnded",i.onEnded),Fo("onDurationChange",i.onDurationChange)}}),d(xi,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),d(xi,"Name","AudioMixer");var wd=xi;var xd=0,im,hr=class hr{constructor(i){this.core=i;d(this,"log");d(this,"audioContext",Ae("denoiser"));d(this,"workletNode");d(this,"config",{enableFarFieldReduce:!1,farFieldReduceThreshold:.5});xd=xd+1,this.log=i.log.createChild({id:`${this.getAlias()}${xd}`}),this.log.info(`created id=${this.getAlias()}${xd}`)}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},mode:{type:"number",required:!1,values:[0,1]},farFieldReduceThreshold:{type:"number",required:!1,min:0,max:1}},validate(e,t,r,o){if(!i.room.audioManager.hasAudioTrack)throw new B({code:U.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return im||(im=this.doPreload(i)),im}doPreload(i){return f(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield sr(this.audioContext,t)}catch(r){throw this.log.error("load worklet failed",r),r}finally{URL.revokeObjectURL(t)}})}getName(){return hr.Name}getAlias(){return"ad"}getGroup(){return"AIDenoiser"}getValidateRule(i){switch(i){case"start":return hr.startValidateRule(this.core);case"update":return hr.updateValidateRule;case"stop":return hr.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 B({code:U.INVALID_PARAMETER,message:"you need to deploy the assets of the npm package and set assetsPath param in TRTC.create()"});if(this.core.validateSourceNode(),yield this.preload(`${r}/denoiser-wasm${Du()?"":"-nosimd"}.js`),!this.workletNode){let o=String(Date.now()).slice(0,-3),{auth:n,sign:a,status:c,message:l}=yield mI(t,w(M({},i),{timestamp:o}));if(!n)throw this.log.info(`RTCAIDenoiser: ${i.userId} auth result: ${n}. Message: ${l}`),new B({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:o,sign:a,status:c}}),this.workletNode.port.onmessage=u=>{var p;let{data:m}=u;if(m.type==="cost"){let h=(m==null?void 0:m.max)>20?"warn":(m==null?void 0:m.max)>10?"info":"debug";this.log[h](`avg cost: ${m.value} max: ${m==null?void 0:m.max}(${xs(new Date(m==null?void 0:m.maxCostTimestamp))}) hist: ${(p=m==null?void 0:m.hist)==null?void 0:p.join(" ")}`)}else m.type==="log"&&this.log[m.logLevel](`${m.value}`)}}this.updateConfig(i),this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(i){return f(this,null,function*(){this.updateConfig(i)})}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)})}updateConfig(i){if(!this.workletNode)return;let e=!1;T(i.mode)||(i.mode===0?this.config.enableFarFieldReduce=!1:i.mode===1&&(this.config.enableFarFieldReduce=!0),e=!0),T(i.farFieldReduceThreshold)||(this.config.farFieldReduceThreshold=i.farFieldReduceThreshold,e=!0),e&&this.workletNode.port.postMessage({type:"setConfig",data:this.config})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};d(hr,"updateValidateRule",{type:"object",properties:{mode:{type:"number",required:!1,values:[0,1]},farFieldReduceThreshold:{type:"number",required:!1,min:0,max:1}}}),d(hr,"stopValidateRule",{type:"object"}),d(hr,"Name","AIDenoiser");var Ud=hr;function mI(o,n){return f(this,arguments,function*(s,{sdkAppId:i,userId:e,userSig:t,timestamp:r}){try{let{data:{errCode:a,errMsg:c,sign:l,status:u}}=yield s.getAbilityConfig(i,s.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 m=$t(i)?"https://trtc.io/document/42734?platform=web&product=rtcengine&menulabel=coresdk":"https://cloud.tencent.com/document/product/647/44247",p="Init RTCAIDenoiser failed.",h="";switch(a){case 1:h="Please check your params.";break;case 2:h=`You need to buy packages. Refer to: ${m}`;break;case 3:h="Server is invalid. Please contact our engineer. ";break;case 4:h=`Your packages is not active. Refer to: ${m}`;break;case 5:h=`Your packages is expired. Refer to: ${m}`;break;case 6:h="Your version is not supported.";break}return{auth:!1,status:u,message:c?`${p} Reason: ${c}. ${h}`:`${p}, ${h}`}}catch(a){return{auth:!1,status:"0",message:`Init RTCAIDenoiser failed. All requests failed. ${a}`}}})}var p_=Ge(Ze(),1);var rm=class extends p_.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&&!fe&&(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)&&C.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})}}},pI=new rm,sm=pI;var om=0,da=class da{constructor(i){this.core=i;d(this,"log");d(this,"_seiMessageList",[]);d(this,"_smallSeiMessageList",[]);d(this,"_subStreamSeiMessageList",[]);om++,this.log=i.log.createChild({id:`${this.getAlias()}${om}`}),this.log.info(`[sei] created id=${this.getAlias()}${om}`),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 Qh({frame:i,seiMessageList:t})}catch(t){this.log.warn(t)}return i}decode({frame:i,track:e}){return Yh({frame:i,onSEI:t=>{t.forEach(r=>{e!=null&&e.userId?this.core.trtc.emit(L.SEI_MESSAGE,{seiPayloadType:r.seiPayloadType,data:r.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"}):this.core.innerEmitter.emit(this.core.INNER_EVENT.SEI_MESSAGE,{room:this.core.room,nalu:r})})}})}destroy(){this.log.debug("destroy"),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:fi?this.encode:Qh,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:fi?this.decode:Yh,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:i,options:e}){var o;let t=[e.seiPayloadType,i],r=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(t):(this._seiMessageList.push(t),r&&this._smallSeiMessageList.push(t)),(o=this.core.room.scriptTransformWorker)==null||o.postMessage({type:"sei",data:t,isMain:!e.toSubStream,small:r})}getName(){return da.Name}getAlias(){return"sei"}getGroup(){return"sei"}};d(da,"autoStart",!0),d(da,"Name","SEI");var Vd=da;var fI=0,Fd,la=class la{constructor(i){this.core=i;d(this,"_core");d(this,"log");d(this,"dialog");this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${++fI}`}),this.log.info("created")}getName(){return la.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())})}update(e){return f(this,arguments,function*({visible:i}){i?yield this.openDebugDiaLog():this.closeDebugDiaLog()})}stop(){this.closeDebugDiaLog()}destroy(){this.stop()}openDebugDiaLog(){return f(this,null,function*(){var i;if(!this.dialog)try{if(Fd)yield Fd;else{let e=new URLSearchParams(location.search).get("trtcDebugDialogPath")||((i=window.sessionStorage)==null?void 0:i.getItem("TRTC_DEBUG_DIALOG_PATH"))||`https://unpkg.com/${h_}@${We}/assets/debug-dialog.js`;Fd=this._core.fileDownloader.loadScript(e),yield Fd}this.dialog=new TRTCDebugDialog(this._core,this.log),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)}};d(la,"Name","Debug"),d(la,"autoStart",!0);var Bd=la;var f_=s=>{switch(s){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},Hd=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:o}=i;this.config=t.config,this.trackDoneOB=ue(e,Y.INIT),this.stopOB=ot(),this.startOB=ot(),t.type==="auto"?this.type="webCodecs":this.type=t.type;let n=ot(),a=c=>{let l=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),he(l,Le(this.stopOB),Se(()=>{},u=>{e.log.error(u),r.addFailedEvent({key:f_(this.type),error:u}),c>4?this.startOB.error(u):this.startOB.next(c+1)})),he(l,ar(1),Ph(Kn))};he(this.startOB,Yn(0),Vr(a),Le(this.stopOB),Se(()=>{e.player.setOutput(),n.next("STARTED")},c=>{n.next("FAILED")},()=>{r.addSuccessEvent({key:f_(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 nr()(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"}))}},_I={type:"object"},ua=class ua{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 ua.Name}getGroup(i){return i.track.userId+i.track.streamType}getName(){return ua.Name}getValidateRule(i){return _I}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 Hd(this.core,t,i);return he(r.trackDoneOB,ar(1),Se(()=>{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 Hd(this.core,i.track,i))}}};d(ua,"Name","TRTCAudioDecoder");var ha=ua;var $d=class{constructor(){d(this,"log");this.log=C.createLogger({id:"exp"})}call(i,e){return f(this,null,function*(){return me(this[i])?this[i](e):Promise.reject(new D({code:I.INVALID_PARAMETER,message:G({key:H.API_NOT_EXIST,data:{name:i}})}))})}enableAudioFrameEvent(i){return f(this,null,function*(){let{trtcInstance:e,enable:t,userId:r,sampleRate:o=48e3,channelCount:n=1,port:a}=i,{audioManager:c}=e.room,{getPCMAbortCtrlMap:l,audioFrameEventConfigMap:u}=c;if(u.set(r,{enable:t,sampleRate:o,channelCount:n,port:a}),t)if(r==="*")e.room.remotePublishedUserMap.forEach(m=>{if(m.remoteAudioTrack.isAvailable){if(l.get(m.userId))return;let p=c.getPCM(h=>{e.emit(L.AUDIO_FRAME,h)},m.userId);l.set(m.userId,p)}});else{if(l.get(r))return;let m=c.getPCM(p=>{e.emit(L.AUDIO_FRAME,p)},r);l.set(r,m)}else if(r==="*")e.room.remotePublishedUserMap.forEach(m=>{if(m.remoteAudioTrack.isSubscribed){let{userId:p}=m,h=l.get(p);h==null||h.abort("disable"),l.delete(p)}});else{let m=l.get(r);m==null||m.abort("disable"),l.delete(r)}})}resumeRemotePlayer(i){return f(this,null,function*(){if(i.userId==="*"){let t=[];return i.trtcInstance.room.remotePublishedUserMap.forEach(r=>{let{remoteAudioTrack:o,remoteVideoTrack:n,remoteAuxiliaryTrack:a}=r;i.streamType?i.streamType==="main"?(o.isAvailable&&t.push(o.player.resume()),n.isAvailable&&t.push(n.player.resume())):a.isAvailable&&t.push(a.player.resume()):(o.isAvailable&&t.push(o.player.resume()),n.isAvailable&&t.push(n.player.resume()),a.isAvailable&&t.push(a.player.resume()))}),Promise.all(t)}let e=i.trtcInstance.room.remotePublishedUserMap.get(i.userId);if(e)return i.streamType==="main"?Promise.all([e.remoteAudioTrack.player.resume(),e.remoteVideoTrack.player.resume()]):e.remoteAuxiliaryTrack.player.resume()})}pauseRemotePlayer(i){if(i.userId==="*")i.trtcInstance.room.remotePublishedUserMap.forEach(e=>{let{remoteAudioTrack:t,remoteVideoTrack:r,remoteAuxiliaryTrack:o}=e;i.streamType?i.streamType==="main"?(t.isAvailable&&t.player.pause(),r.isAvailable&&r.player.pause(!1)):o.isAvailable&&o.player.pause(!1):(t.isAvailable&&t.player.pause(),r.isAvailable&&r.player.pause(!1),o.isAvailable&&o.player.pause(!1))});else{let e=i.trtcInstance.room.remotePublishedUserMap.get(i.userId);e&&(i.streamType==="main"?(e.remoteAudioTrack.player.pause(),e.remoteVideoTrack.player.pause(!1)):e.remoteAuxiliaryTrack.player.pause(!1))}}};O([Vf({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"}}})],$d.prototype,"enableAudioFrameEvent",1);var __=new $d;var g_=Ge(Ze(),1);var nm=class extends g_.EventEmitter{constructor(){super();d(this,"states",{});d(this,"permissionChangeHandler");d(this,"log");this.log=C.createLogger({id:"pm"}),this.permissionChangeHandler=()=>{var e,t;this.emit("permission-state-change",{camera:(e=this.states.camera)==null?void 0:e.state,microphone:(t=this.states.microphone)==null?void 0:t.state})}}request(e){return f(this,null,function*(){if(this.log.info(`request ${e.join(", ")}`),e.length===0)return Promise.resolve();(yield navigator.mediaDevices.getUserMedia({video:e.includes("camera"),audio:e.includes("microphone")})).getTracks().forEach(r=>r.stop())})}get(e){return f(this,null,function*(){try{return this.states[e]||(this.states[e]=yield navigator.permissions.query({name:e}),this.states[e].addEventListener("change",this.permissionChangeHandler)),this.log.info(`get ${e} permission state: ${this.states[e].state}`),this.states[e].state}catch(t){return this.log.error(`get ${e} permission failed, error: ${t instanceof Error?t.message:t}`),null}})}destroy(){Object.values(this.states).forEach(e=>{e==null||e.removeEventListener("change",this.permissionChangeHandler)}),this.states={}}},ma=new nm;var E_=0,pa=new Set,Ye=null;cl(Zh);lo.checkStorage();var z=class z extends T_.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",C.createLogger({id:`t${++E_}`}));d(this,"_plugins",new Map);d(this,"_networkQuality",null);d(this,"_speakerId");d(this,"enterRoomParams");d(this,"_enableAutoSwitchWhenRecapturing",!0);d(this,"_autoSubscribeDataChannel",!1);this._room=new e(M({logger:this._log,frameWorkType:z.frameWorkType},t)),this._room.videoDecodeFallbackType=t.videoDecodeFallback,pe(t.enableAutoSwitchWhenRecapturing)&&(this._enableAutoSwitchWhenRecapturing=t.enableAutoSwitchWhenRecapturing),this._log.info(`create() ${JSON.stringify(t,(r,o)=>r==="plugins"?o.map(n=>n.Name):o)}`),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(wd,t.assetsPath),this._use(kd,t.assetsPath),this._use(Ud,t.assetsPath),this._use(ha,t.assetsPath),this._use(Bd),t.enableSEI&&wn&&this._use(Vd),this._room.on("audio-volume",r=>{var o,n;!r.find(a=>a.userId==="")&&this._localAudioTrack&&r.push({userId:"",volume:Math.floor(((o=this._localAudioTrack.getInternalAudioLevelAfter3A())!=null?o: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)}),t.enableDbVolume&&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(L.AUDIO_VOLUME,{result:r.sort((a,c)=>c.volume-a.volume)})}),this._room.videoManager.on("error",r=>{this._log.error(new B({code:U.OPERATION_FAILED,extraCode:5504,message:r.message,originError:r}))}),this._listenEvents(),this._initActiveSpeaker(),c_(this,"trtc")}static create(e){}static _create(e,t){$f();let r=new z(e,t||{});return pa.add(r),r.__v_skip=!0,r}get room(){return this._room}_listenEvents(){it(this,this._room).add("peer-join",e=>{let{userId:t}=e;this.emit(L.REMOTE_USER_ENTER,{userId:t})}).add("peer-leave",({userId:e,reason:t})=>{this.emit(L.REMOTE_USER_EXIT,{userId:e,reason:t})}).add("banned",e=>{Vt(!0),this._exitRoom().finally(()=>{this.emit(L.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().finally(()=>{this.emit(L.ERROR,B.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(L.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let t=w(M({},e),{uplinkRTT:Math.min(e.uplinkRTT,on),downlinkRTT:Math.min(e.downlinkRTT,on)});this.emit(L.NETWORK_QUALITY,t)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{it(r,r).add("player-state-changed",o=>{let n=w(M({},o),{userId:e.userId});r.kind===_.VIDEO&&(n.streamType=bt(r.streamType)),this.emit(r.kind===_.AUDIO?L.AUDIO_PLAY_STATE_CHANGED:L.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",o=>{o.getCode()===I.PLAY_NOT_ALLOWED&&this.emit(L.AUTOPLAY_FAILED,{userId:r.userId,mediaType:r.strMediaType,resume:()=>r.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{Fe(r)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:t})=>{let{userId:r}=t,o=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?L.REMOTE_VIDEO_AVAILABLE:L.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"main"})),o!==a&&(a?this._onAudioAvailable({userId:r}):this._onAudioUnavailable({userId:r,muteState:t}),this.emit(a?L.REMOTE_AUDIO_AVAILABLE:L.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?L.REMOTE_VIDEO_AVAILABLE:L.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"sub"})),e.hasDatachannel!==t.hasDatachannel&&t.hasDatachannel&&this._onDataChannelAvailable()}).add("sei-message",e=>{this.emit(L.SEI_MESSAGE,w(M({},e),{streamType:bt(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(L.ERROR,new B({code:U.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var o,n,a,c,l,u,m;let t={2:"big",3:"small",7:"sub"},r={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((o=e.msg_down_stream_info[0])==null?void 0:o.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((a=this._networkQuality)==null?void 0:a.downlinkRTT)||0,on),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:(((m=e.msg_up_stream_info.msg_audio_status)==null?void 0:m.uint32_audio_level)||0)/Pt},video:e.msg_up_stream_info.msg_video_status.filter(p=>t[p.uint32_video_stream_type]).map(p=>({bitrate:(p.uint32_video_codec_bitrate||0)/1e3,width:p.uint32_video_width,height:p.uint32_video_height,frameRate:p.uint32_video_enc_fps,videoType:t[p.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(p=>({userId:p.msg_user_info.str_identifier,audio:{bitrate:(p.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(p.msg_audio_status.uint32_audio_level||0)/Pt,point2pointDelay:(p.msg_audio_status.uint32_audio_p2p_delay||0)+(p.msg_audio_status.uint32_audio_cache_ms||0),jitterBufferDelay:p.msg_audio_status.uint32_audio_cache_ms||0},video:p.msg_video_status.map(h=>({bitrate:(h.uint32_video_codec_bitrate||0)/1e3,width:h.uint32_video_width,height:h.uint32_video_height,frameRate:h.uint32_video_dec_fps,videoType:t[h.uint32_video_stream_type],point2pointDelay:(h.uint32_video_p2p_delay||0)+(h.uint32_video_cache_ms||0),jitterBufferDelay:h.uint32_video_cache_ms||0,codec:h.uint32_video_codec}))}))};this.emit(L.STATISTICS,r)}).add("custom-message",e=>{this.emit(L.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(L.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(L.FIRST_VIDEO_FRAME,w(M({},e),{streamType:bt(e.streamType)}))}).add("audio-frame",e=>{this.emit(L.AUDIO_FRAME,e)}).add("data-channel-message",e=>{var o,n,a,c,l;let{data:t}=e;if(t.sender==="")return;let r={segmentId:(o=t.payload)==null?void 0:o.roundid,speakerUserId:t.sender,sourceText:(n=t.payload)==null?void 0:n.text,translationTexts:(a=t.payload)==null?void 0:a.translate_msg,timestamp:(c=t.payload)==null?void 0:c.start_utc_ms,isCompleted:(l=t.payload)==null?void 0:l.end,robotId:t.robotid};r.sourceText!==""&&this.emit(L.REALTIME_TRANSCRIBER_MESSAGE,r)}).add("asr-robot-peer-join",e=>{this.emit(L.REALTIME_TRANSCRIBER_STATE_CHANGED,{state:"started",roomId:this.room.roomId,transcriberRobotId:e.userId})}).add("asr-robot-peer-leave",e=>{this.emit(L.REALTIME_TRANSCRIBER_STATE_CHANGED,{state:"stopped",roomId:this.room.roomId,transcriberRobotId:e.userId})}),it(this,Ne).add("audioInputAdded",e=>{this.emit(L.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(L.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(L.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(L.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>f(this,null,function*(){if(this.emit(L.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Ye&&Ye.deviceId===sn){let t=(yield xr()).find(r=>r.deviceId===sn);t&&Ye.groupId!==t.groupId&&(Ye=t,this.emit(L.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}})).add("audioOutputRemoved",e=>f(this,null,function*(){this.emit(L.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let t=(yield xr())[0];if(!t||!Ye||Ye.groupId===t.groupId)return;let r=Ye.deviceId===e.deviceId,o=Ye.deviceId===sn&&Ye.deviceId===t.deviceId;(r||o)&&(Ye=t,this.emit(L.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))})),it(this,ma).add("permission-state-change",e=>{this.emit(L.PERMISSION_STATE_CHANGE,e)}),this.room.enableSEI&&this.on(L.SEI_MESSAGE,e=>{var r;let t=(r=this.room.remotePublishedUserMap.get(e.userId))==null?void 0:r.remoteVideoTrack;t&&t.updateAlphaRenderInfo(e)})}getNetworkTime(){return Hi()}use(e){let t,r;return"plugin"in e?(t=e.plugin,r=e.assetsPath):t=e,t.Name==="Chorus"&&(this.room.enableChorus=!0),this._use(t,r)}_use(e,t){let r=this._plugins.get(e.Name);if(r)return this._log.warn("duplicate install plugin",e.Name),r;let o=new e(a_.call(this,{TRTC:z,room:this._room,assetsPath:t,errorModule:{RtcError:B,ErrorCode:U,CoreErrorCode:I,ErrorCodeDictionary:Ut}}));return this._plugins.set(e.Name,o),o.__v_skip=!0,e.autoStart&&this.startPlugin(e.Name),o}enterRoom(e){return f(this,null,function*(){var c,l;this.enterRoomParams=e;let{scene:t="rtc",enableAutoPlayDialog:r=!0,autoReceiveAudio:o=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!ne(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=o,this._room.autoReceiveVideo=n,pe(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,enableDataChannel:this._plugins.has("RealtimeTranscriber"),frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8,useH265:e.useH265||!1,keepAlive:e.keepAlive};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,t,z.frameWorkType),this._checkTrackToPublish(),sm.start()})}exitRoom(){return f(this,null,function*(){return yield this._exitRoom()})}switchRoom(e){return f(this,null,function*(){if(this.room.isSwitchRoomSupported())try{this._clearRemoteTracks(),yield this._room.switchRoom(e)}catch(t){if(t instanceof Qo&&(t.code===I.API_CALL_TIMEOUT||t.code===I.SWITCH_ROOM_FAILED))this._log.warn(`switchRoom ${t.code===I.API_CALL_TIMEOUT?"timeout":"failed"}, fallback to exitRoom() and enterRoom()`),yield this._rejoinRoom(e);else throw t}else yield this._rejoinRoom(e)})}_rejoinRoom(e){return f(this,null,function*(){yield this.exitRoom();let t=M(M({},this.enterRoomParams),e);yield this.enterRoom(t)})}_clearRemoteTracks(){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(),d_(this),this._room.remotePublishedUserMap.forEach(e=>{Fe(e.remoteAudioTrack),Fe(e.remoteVideoTrack),Fe(e.remoteAuxiliaryTrack)})}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(){this._plugins.forEach(e=>{var t;return(t=e.destroy)==null?void 0:t.call(e)}),this._plugins.clear(),Fe(this),this.removeAllListeners(),this._room.destroy(),pa.delete(this),pa.size===0&&sm.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),S.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,muteKeepVolumeDetection:o,option:n}=e,a=new wt(this._room.audioManager),c={},l={muted:!0};n&&(T(n.microphoneId)?T(n.audioTrack)||(c.customSource=n.audioTrack):c.deviceId=n.microphoneId,n&&te(n.captureVolume)&&a.setCaptureVolume(n.captureVolume),T(n.profile)||(ne(n.profile)?Oa[n.profile]&&a.setProfile(Oa[n.profile]):a.setProfile(n.profile)),te(n.earMonitorVolume)&&(l.muted=!(n.earMonitorVolume>0),l.volume=n.earMonitorVolume),T(n.echoCancellation)||(a.profile.echoCancellation=n.echoCancellation),T(n.noiseSuppression)||(a.profile.noiseSuppression=n.noiseSuppression),T(n.autoGainControl)||(a.profile.autoGainControl=n.autoGainControl),pe(this._enableAutoSwitchWhenRecapturing)&&(a.enableAutoSwitchWhenRecapturing=this._enableAutoSwitchWhenRecapturing)),a.on("5",u=>{this.emit(L.ERROR,new B({code:U.DEVICE_ERROR,extraCode:5309,messageParams:{error:u}}))}),a.on("2",u=>{this.emit(L.DEVICE_CHANGED,{type:"microphone",action:"active",device:u})}),a.on("4",u=>{let m;u.error&&(m=B.convertFrom(u.error)),this.emit(L.PUBLISH_STATE_CHANGED,w(M({},u),{error:m}))}),a.on("6",()=>{}),this._listenOutputTrackChanged(a),this._speakerId&&a.setAudioOutput(this._speakerId),yield a.capture(c),T(r)||a.setMute(r,o),it(a,a).add("player-state-changed",u=>{this.emit(L.AUDIO_PLAY_STATE_CHANGED,w(M({},u),{userId:""}))}),t&&this._room.isJoined&&this._room.publish(a).catch(()=>{}),this._localAudioTrack=a,this._room.capturedLocalMainAudioTrack=a,this._localAudioConfig=w(M({},e),{publish:t}),yield this._updateAudioPlayOption({playOption:l,track:a}),S.emit("113",{userId:"",room:this.room})})}updateLocalAudio(e){return f(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:t,mute:r,muteKeepVolumeDetection:o,option:n}=e,a={};n&&(n.microphoneId?yield this._localAudioTrack.switchDevice(n.microphoneId):T(n.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(n.audioTrack)),T(n.captureVolume)||this._localAudioTrack.setCaptureVolume(n.captureVolume),T(n.earMonitorVolume)||(a.muted=!(n.earMonitorVolume>0),a.volume=n.earMonitorVolume),yield this._localAudioTrack.update3A(n)),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,o),yield this._updateAudioPlayOption({playOption:a,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),ni(this._localAudioConfig,e)})}stopLocalAudio(){return f(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),S.emit("114",{userId:"",room:this.room}),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),Fe(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null,delete this._room.capturedLocalMainAudioTrack)})}startLocalVideo(){return f(this,arguments,function*(e={publish:!0,view:null,capture:!0}){var p,h;if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:t,publish:r=!0,capture:o=!0,mute:n,option:a}=e,c=r,l=new ze(this._room.videoManager),u={},m={};a&&(pe(a.avoidCropping)&&(l.avoidCropping=a.avoidCropping),a.cameraId?u.deviceId=a.cameraId:T(a.useFrontCamera)?T(a.videoTrack)||(u.customSource=a.videoTrack):u.facingMode=a.useFrontCamera?_.FACING_MODE_USER:_.FACING_MODE_ENVIRONMENT,T(a.retryWhenExactFailed)||(u.retryWhenExactFailed=a.retryWhenExactFailed),a.qosPreference&&(u.contentHint=na(a.qosPreference)),T(a.profile)||(ne(a.profile)?ti[a.profile]&&l.setProfile(ti[a.profile]):l.setProfile(a.profile)),T(a.fillMode)||(m.objectFit=a.fillMode),T(a.mirror)||(m.mirror=a.mirror),T(a.small)||(T(a.smallMode)||(this._room.smallMode=a.smallMode),pe(a.small)&&a.small===!1?l.stopSmall():l.updateSmallConfig(wo(a.small,!0))),T(a.rotation)||l.setRotation(a.rotation),pe(this._enableAutoSwitchWhenRecapturing)&&(l.enableAutoSwitchWhenRecapturing=this._enableAutoSwitchWhenRecapturing)),l.once("first-video-frame",E=>{this.emit(L.FIRST_VIDEO_FRAME,w(M({},E),{streamType:bt(E.streamType)}))}),l.on("5",E=>{this.emit(L.ERROR,new B({code:U.DEVICE_ERROR,extraCode:5308,messageParams:{error:E}}))}),l.on("2",E=>{this.emit(L.DEVICE_CHANGED,{type:"camera",action:"active",device:E})}),l.on("4",E=>{let g;E.error&&(g=B.convertFrom(E.error)),this.emit(L.PUBLISH_STATE_CHANGED,w(M({},E),{error:g}))}),l.on("6",()=>{}),this._listenOutputTrackChanged(l),o?yield l.capture(u):(p=l.manager)==null||p.changeInput(l),T(n)||(yield l.setMute(n)),it(l,l).add("player-state-changed",E=>{this.emit(L.VIDEO_PLAY_STATE_CHANGED,w(M({},E),{userId:"",streamType:"main"}))}).add("video-size-changed",E=>{this.emit(L.VIDEO_SIZE_CHANGED,w(M({},E),{streamType:bt(E.streamType)}))}),c&&this._room.isJoined&&(this._localScreenTrack&&((h=this._localScreenConfig)==null?void 0:h.publish)&&this._localScreenConfig.streamType==="main"?(c=!1,this._log.warn("main stream is already published, local video track will not publish")):this._room.publish(l).catch(()=>{})),this._localVideoTrack=l,this._room.capturedLocalMainVideoTrack=l,this._localVideoConfig=w(M({},e),{view:t,publish:c,capture:o}),yield this._updateVideoPlayOption({view:t,playOption:m,track:l})})}updateLocalVideo(e){return f(this,null,function*(){var m,p,h,E;if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:t,publish:r=!0,mute:o,capture:n,option:a,forcePublish:c=!1}=e,l=r||c,u={};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?_.FACING_MODE_USER:_.FACING_MODE_ENVIRONMENT):this._localVideoTrack.stopCapture();else if(n){let g={};g.deviceId=(a==null?void 0:a.cameraId)||((m=this._localVideoConfig.option)==null?void 0:m.cameraId),g.facingMode=a!=null&&a.useFrontCamera||(p=this._localVideoConfig.option)!=null&&p.useFrontCamera?_.FACING_MODE_USER:_.FACING_MODE_ENVIRONMENT,g.customSource=(a==null?void 0:a.videoTrack)||((h=this._localVideoConfig.option)==null?void 0:h.videoTrack),yield this._localVideoTrack.capture(g)}a&&(T(a.profile)||(ne(a.profile)?ti[a.profile]&&this._localVideoTrack.setProfile(ti[a.profile]):this._localVideoTrack.setProfile(a.profile),(!a.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(a.cameraId||a.useFrontCamera?_.FACING_MODE_USER:_.FACING_MODE_ENVIRONMENT))&&(yield this._localVideoTrack.applyProfile())),T(a.fillMode)||(u.objectFit=a.fillMode),T(a.mirror)||(u.mirror=a.mirror),T(a.rotation)||this._localVideoTrack.setRotation(a.rotation),a.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(na(a.qosPreference)),T(a.small)||(pe(a.small)&&!a.small?this._localVideoTrack.stopSmall():this._localVideoTrack.updateSmallConfig(wo(a.small,!0)))),this._room.isJoined&&T(l)&&this._localVideoConfig.publish&&n&&!this._localVideoConfig.capture&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._room.isJoined&&((l!=null?l:this._localVideoConfig.publish)||c?!(this._localScreenTrack&&((E=this._localScreenConfig)==null?void 0:E.publish)&&this._localScreenConfig.streamType==="main")||c?this._room.publish(this._localVideoTrack).catch(()=>{}):(l=!1,this._log.warn("main stream is already published, local video track will not publish")):this._room.unpublish(this._localVideoTrack).catch(()=>{})),T(o)||(yield this._localVideoTrack.setMute(o)),yield this._updateVideoPlayOption({view:t,playOption:u,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),ni(this._localVideoConfig,w(M({},e),{publish:l}))})}stopLocalVideo(){return f(this,null,function*(){var e;this._localVideoTrack&&(this._room.isJoined&&((e=this._localVideoConfig)!=null&&e.publish)&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),Fe(this._localVideoTrack),this._localVideoTrack=null,delete this._room.capturedLocalMainVideoTrack,this._localVideoConfig=null)})}startScreenShare(){return f(this,arguments,function*(e={publish:!0,view:null}){var h,E,g;if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:t=null,publish:r=!0,muteSystemAudio:o,option:n}=e,a=r,c=new xt(this._room.videoManager);c.on("4",R=>{let N;R.error&&(N=B.convertFrom(R.error)),this.emit(L.PUBLISH_STATE_CHANGED,w(M({},R),{error:N}))}),c.once("first-video-frame",R=>{this.emit(L.FIRST_VIDEO_FRAME,w(M({},R),{streamType:bt(R.streamType)}))}),this._listenOutputTrackChanged(c),e.streamType==="main"&&(c.mediaType=4);let l=null,u={},m={};n&&(T(n.profile)||(ne(n.profile)?Pa[n.profile]&&c.setProfile(Pa[n.profile]):c.setProfile(n.profile)),n.systemAudio&&(u.systemAudio=!0,u.echoCancellation=n.echoCancellation,u.noiseSuppression=n.noiseSuppression,u.autoGainControl=n.autoGainControl),T(n.fillMode)||(m.objectFit=n.fillMode),n.videoTrack&&(u.videoTrack=n.videoTrack),n.audioTrack&&(u.audioTrack=n.audioTrack),n.captureElement&&(u.captureElement=n.captureElement),n.preferDisplaySurface&&(u.preferDisplaySurface=n.preferDisplaySurface),n.qosPreference&&(u.contentHint=na(n.qosPreference)));let p=yield c.capture(u);if(c.mediaTrack.addEventListener(_.ENDED,()=>{this._stopScreenShare(),this.emit(L.SCREEN_SHARE_STOPPED)}),p.getAudioTracks()[0]){l=new ys(this._room.audioManager);let R=p.getAudioTracks()[0];(h=e.option)!=null&&h.systemAudio&&!((E=e.option)!=null&&E.audioTrack)&&(l.sourceTrack=R),yield l.setInputMediaStreamTrack(R),pe(o)&&l.mediaTrack&&(l.mediaTrack.enabled=!o),this._speakerId&&l.setAudioOutput(this._speakerId)}if(it(c,c).add("player-state-changed",R=>{this.emit(L.VIDEO_PLAY_STATE_CHANGED,w(M({},R),{userId:"",streamType:"sub"}))}),a&&this._room.isJoined){let R=this._localVideoTrack&&((g=this._localVideoConfig)==null?void 0:g.publish);!(e.streamType==="main"&&R)?this._room.publish(c).catch(()=>{}):(a=!1,this._log.warn("main stream is already published, screen share main will not publish")),l&&(this._checkScreenAudioEchoCancellation(c,l),this._room.publish(l).catch(()=>{}))}this._localScreenTrack=c,this._room.capturedLocalAuxVideoTrack=c,this._localScreenAudioTrack=l,this._localScreenConfig=w(M({},e),{view:t,publish:a}),yield this._updateVideoPlayOption({view:t,playOption:m,track:c})})}updateScreenShare(e){return f(this,null,function*(){var l,u;if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:t,publish:r,muteSystemAudio:o,option:n}=e,a=r,c={};if(n){if(T(n.fillMode)||(c.objectFit=n.fillMode),n.qosPreference){let m=na(n.qosPreference);this._localScreenTrack.setContentHint(m)}n.videoTrack&&this._localScreenTrack.setInputMediaStreamTrack(n.videoTrack),n.audioTrack&&this._localScreenAudioTrack&&this._localScreenAudioTrack.setInputMediaStreamTrack(n.audioTrack)}if(this._room.isJoined&&!T(a)){if(a&&!this._localScreenConfig.publish){let m=this._localVideoTrack&&((l=this._localVideoConfig)==null?void 0:l.publish);!(this._localScreenConfig.streamType==="main"&&m)?this._room.publish(this._localScreenTrack).catch(()=>{}):(a=!1,this._log.warn("main stream is already published, screen share main will not publish")),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})}if(this._localScreenConfig.publish&&!a){let m=[this._localScreenTrack];this._localScreenAudioTrack&&m.push(this._localScreenAudioTrack),m.forEach(p=>this._room.unpublish(p).catch(()=>{}))}}(u=this._localScreenAudioTrack)!=null&&u.mediaTrack&&pe(o)&&(this._localScreenAudioTrack.mediaTrack.enabled=!o),yield this._updateVideoPlayOption({view:t,playOption:c,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),ni(this._localScreenConfig,w(M({},e),{publish:a}))})}stopScreenShare(){return f(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return f(this,null,function*(){let{view:t,userId:r,streamType:o,option:n}=e,a=`${r}_${o}`;if(this._remoteVideoConfigMap.has(a)){this._log.warn(`remote video has already started. userId:${r}, streamType:${o}`);return}let c=this._room.remotePublishedUserMap.get(r);if(!c)return;let l={},u=o==="main"?c.remoteVideoTrack:c.remoteAuxiliaryTrack,m=this._bindRemoteVideoTrackEvents(u);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,o==="main"&&!T(n.small)&&(!c.remoteVideoTrack.isSubscribing&&!c.remoteVideoTrack.isSubscribed&&c.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,u.user)),T(n.draggable)||u.setDraggable(n.draggable)),yield this._room.subscribe(u),yield this._enableVideoDecodeFallback(u,o),yield this._updateVideoPlayOption({view:t,playOption:l,track:u}),this._emitTrackEvent(u),this._remoteVideoConfigMap.set(a,{config:e,handlers:m}),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 N,j;let{view:t,userId:r,streamType:o,option:n,mute:a}=e,c=`${r}_${o}`,l=this._remoteVideoConfigMap.get(c);if(!l||!this._room.remotePublishedUserMap.has(r))return;let u={};n&&(T(n.fillMode)||(u.objectFit=n.fillMode),T(n.mirror)||(u.mirror=n.mirror));let m=null,p=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(p!=null&&p.muteState.hasVideo)&&(m=p.remoteVideoTrack),o==="sub"&&(p!=null&&p.muteState.hasAuxiliary)&&(m=p.remoteAuxiliaryTrack),!m)return;let{config:h}=l;o==="main"&&n&&!T(n.small)&&this._room.changeType(n.small,m.user),n&&!T(n.draggable)&&m.setDraggable(n.draggable),n&&(pe(n.pictureInPicture)&&(n.pictureInPicture?yield m.player.enterPictureInPicture():yield m.player.exitPictureInPicture()),pe(n.fullScreen)&&(n.fullScreen?yield m.player.enterFullscreen():yield m.player.exitFullscreen())),pe(a)&&(m.ignoreUpdatePlayingState=!0,a?(yield m.player.pause(),yield this.room.unsubscribe(m)):(yield this.room.subscribe(m),yield m.player.resume(!0))),yield this._updateVideoPlayOption({view:t,playOption:u,track:m,prevConfig:h}),ni(h,e);let E=T(n==null?void 0:n.receiveWhenViewVisible)?(N=h.option)==null?void 0:N.receiveWhenViewVisible:n.receiveWhenViewVisible,g=T(t)?h.view:t,R=T(n==null?void 0:n.viewRoot)?(j=h.option)==null?void 0:j.viewRoot:n.viewRoot;this._observeView({remoteTrack:m,view:g,receiveWhenViewVisible:E,viewRoot:R})})}stopRemoteVideo(e){return f(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,t=!0){return f(this,null,function*(){let r=[],o=this._room.remotePublishedUserMap.get(e.userId);if(o){let{muteState:n,remoteVideoTrack:a,remoteAuxiliaryTrack:c}=o;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&&(delete n.ignoreUpdatePlayingState,yield this._room.unsubscribe(n),this._mediaTrackMap.delete(n.outMediaTrack));this._removeRemoteVideoConfig(e.userId,e.streamType)})}_removeRemoteVideoConfig(e,t){let r=`${e}_${t}`,o=this._remoteVideoConfigMap.get(r);if(o&&(o.observer&&o.observer.disconnect(),o.handlers)){let n=this._room.remotePublishedUserMap.get(e);if(n){let a=t==="main"?n.remoteVideoTrack:n.remoteAuxiliaryTrack;this._unbindRemoteVideoTrackEvents(a,o.handlers)}}this._remoteVideoConfigMap.delete(r)}_bindRemoteVideoTrackEvents(e){let t={onEnterPIP:()=>f(this,null,function*(){yield e.player.enterPIPPromise,this.emit(L.PICTURE_IN_PICTURE_STATE_CHANGED,{streamType:bt(e.streamType),userId:e.userId,isPictureInPicture:!0,pictureInPictureWindow:e.player.pipWindow})}),onLeavePIP:()=>{this.emit(L.PICTURE_IN_PICTURE_STATE_CHANGED,{streamType:bt(e.streamType),userId:e.userId,isPictureInPicture:!1})},onEnterFullScreen:()=>{this.emit(L.FULL_SCREEN_STATE_CHANGED,{streamType:bt(e.streamType),userId:e.userId,isFullScreen:!0})},onLeaveFullScreen:()=>{this.emit(L.FULL_SCREEN_STATE_CHANGED,{streamType:bt(e.streamType),userId:e.userId,isFullScreen:!1})},onDecodeFailed:()=>{this.emit(L.ERROR,new B({code:U.OPERATION_FAILED,extraCode:5507,message:"video decode failed"}))},onVideoSizeChanged:r=>{this.emit(L.VIDEO_SIZE_CHANGED,w(M({},r),{streamType:bt(r.streamType)}))}};return e.player.on(W.ENTER_PICTURE_IN_PICTURE,t.onEnterPIP),e.player.on(W.LEAVE_PICTURE_IN_PICTURE,t.onLeavePIP),e.player.on(W.ENTER_FULL_SCREEN,t.onEnterFullScreen),e.player.on(W.LEAVE_FULL_SCREEN,t.onLeaveFullScreen),e.on("decode-failed",t.onDecodeFailed),e.on("video-size-changed",t.onVideoSizeChanged),t}_unbindRemoteVideoTrackEvents(e,t){e.player.off(W.ENTER_PICTURE_IN_PICTURE,t.onEnterPIP),e.player.off(W.LEAVE_PICTURE_IN_PICTURE,t.onLeavePIP),e.player.off(W.ENTER_FULL_SCREEN,t.onEnterFullScreen),e.player.off(W.LEAVE_FULL_SCREEN,t.onLeaveFullScreen),e.off("decode-failed",t.onDecodeFailed),e.off("video-size-changed",t.onVideoSizeChanged)}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 o of r)o.muteState.hasAudio&&!this._remoteAudioConfigMap.has(o.userId)&&this.room.isJoined&&(yield this._startRemoteAudio({userId:o.userId}))}else t?yield this._stopRemoteAudio({userId:e}):!this._remoteAudioConfigMap.has(e)&&this.room.isJoined&&(yield this._startRemoteAudio({userId:e}))}catch(r){throw r.code!==U.OPERATION_ABORT&&this._remoteAudioMuteMap.delete(e),r}})}setRemoteAudioVolume(e,t){if(e==="*"){this._remoteAudioVolumeMap.set("*",t),this._remoteAudioVolumeMap.forEach((o,n)=>this._remoteAudioVolumeMap.set(n,t));let r=[...this._room.remotePublishedUserMap.values()];for(let o of r)this._remoteAudioVolumeMap.set(o.userId,t),o.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:o.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(L.AUDIO_FRAME).length>0){let{audioFrameEventConfigMap:o}=this.room.audioManager;o.get("")||o.set("",{enable:!0}),this._localAudioTrack&&this.room.audioManager.handleLocalTrackStarted({userId:"",room:this.room})}return e==="realtime-transcriber-message"&&this._room.subscribeDataChannel(),this}emit(e,...t){try{Kf.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==="realtime-transcriber-message"||e==="*")&&this.listeners("realtime-transcriber-message").length===0&&this._room.unsubscribeDataChannel(),(e===z.EVENT.AUDIO_FRAME||e==="*")&&this.listeners(z.EVENT.AUDIO_FRAME).length===0){let{getPCMAbortCtrlMap:o}=this.room.audioManager;o.forEach(n=>{n==null||n.abort("off")}),o.clear()}return this}getAudioTrack(e={userId:"",streamType:"main"}){let t,r=null,o="main",n=!1;if(ne(e)?t=e:(t=e.userId,n=e.processed===!0,e.streamType&&(o=e.streamType)),t){let a=this._room.remotePublishedUserMap.get(t);a&&(r=a.remoteAudioTrack)}else r=o==="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:o=!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?o&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:t,streamType:r="main"}=e;if(t){let o=this._room.remotePublishedUserMap.get(t);if(r==="main"&&(o!=null&&o.muteState.hasVideo))return o.remoteVideoTrack.getVideoFrame();if(r==="sub"&&(o!=null&&o.muteState.hasAuxiliary))return o.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(o=>o.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return f(this,null,function*(){(yield xr()).forEach(r=>{r.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(L.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}),Ye=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: ${gt}/en/TRTC.html#.setCurrentSpeaker`)})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return f(this,null,function*(){var a;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 o={},n=r.remoteAudioTrack;n.on("decode-failed",c=>{this.emit(L.ERROR,new B({code:U.OPERATION_FAILED,extraCode:5508,message:"audio decode failed"}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let c=(a=this._remoteAudioVolumeMap.get(t))!=null?a:this._remoteAudioVolumeMap.get("*"),l=te(c)?c:100;o.volume=l,this._remoteAudioConfigMap.set(t,e),yield this._room.subscribe(n),he(ue(n,"decode-failed"),Le(ue(n,Y.INIT)),Se(()=>{this.startPlugin(ha.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:o,track:n}),S.emit("115",{userId:t,room:this.room}),n.outMediaTrack&&this.room.audioManager.updateAudioReference({type:"add",audioReference:n.outMediaTrack,refId:`ra-${t}`})}catch(c){throw this._remoteAudioConfigMap.delete(t),c}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}`),S.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 o;he(ue(e,"decode-failed"),Le(ue(e,Y.INIT)),ta(()=>{this._room.downlinkVideoCodec!=="h265"&&this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:r})}),Ss(ue(e,"decode-downgrade-state-changed")),Se(n=>{o=n.state,this.emit(L.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,w(M({},n),{streamType:t,userId:e.userId}))},n=>{e.log.error("fallback",n)},()=>{o==="STARTED"&&e.log.info("fallback complete")}))}_updateVideoPlayOption(n){return f(this,arguments,function*({view:e,playOption:t,track:r,prevConfig:o}){if(r.setMirror(t.mirror),T(e)&&o&&o.view&&!js(t)){let a=Xs(o.view);a.length>0&&(yield r.play(a,t))}if(!T(e)){let a=Xs(e);a.length>0?yield r.play(a,t):r.stop()}})}_updateAudioPlayOption(o){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 wt&&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 Si){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(L.TRACK,{userId:r,streamType:bt(e.streamType),track:e.outMediaTrack,sourceTrack:e.mediaTrack})))}_checkTrackToPublish(){var t,r,o;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),(o=this._localScreenConfig)!=null&&o.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack),this._checkScreenAudioEchoCancellation(this._localScreenTrack,this._localScreenAudioTrack)),e.length!==0)return Promise.all(e.map(n=>this._room.publish(n).catch(()=>{})))}_observeView({remoteTrack:e,view:t,receiveWhenViewVisible:r,viewRoot:o}){if(T(t)||T(r))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${bt(e.streamType)}`);if(!n)return;let a=n.observer||void 0;if(t===null||Ie(t)&&t.length===0||!r){a==null||a.disconnect(),e.isSubscribed||(this._log.info("_observeView observer disconnect, resubscribe",e.userId,e.strMediaType),this._room.subscribe(e).catch(()=>{}));return}let l=n.visibleViewMap||new Map,u=-1;(!a||a.root!==o)&&(a==null||a.disconnect(),l.clear(),a=new IntersectionObserver(p=>{p.forEach(h=>{l.set(h.target,h.isIntersecting),e.log.info(`view ${h.target.id} is${h.isIntersecting?"":" not"} visible`)}),clearTimeout(u),u=window.setTimeout(()=>{[...l.values()].find(E=>E)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:o}));let m=new Set(Xs(t));l.forEach((p,h)=>{m.has(h)||(a.unobserve(h),l.delete(h))}),m.forEach(p=>{l.set(p,!0),a.observe(p)}),a.takeRecords().forEach(p=>{l.set(p.target,p.isIntersecting)}),n.visibleViewMap=l,n.observer=a}_exitRoom(){return f(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),this._clearRemoteTracks()})}_stopScreenShare(){return f(this,null,function*(){var e,t;if(this._localScreenTrack){if(this._room.isJoined){let r=[];(e=this._localScreenConfig)!=null&&e.publish&&r.push(this._localScreenTrack),this._localScreenAudioTrack&&r.push(this._localScreenAudioTrack),yield Promise.all(r.map(o=>this._room.unpublish(o).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),Fe(this._localScreenTrack),this._localScreenTrack=null,delete this._room.capturedLocalAuxVideoTrack,this._localScreenConfig=null}})}_checkScreenAudioEchoCancellation(e,t){return f(this,null,function*(){var o,n;if(!e||!t)return;let r=(o=e.trackSettings)==null?void 0:o.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"&&(!Ye||Ao(Ye))&&(this._initActiveSpeaker(),S.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return f(this,null,function*(){if(Ye&&!Ao(Ye))this.emit(L.DEVICE_CHANGED,{type:"speaker",action:"active",device:Ye});else{let e=yield xr();e[0]&&!Ao(e[0])?(Ye=e[0],this.emit(L.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):S.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 o=t==="main"?r.remoteVideoTrack:r.remoteAuxiliaryTrack,n=[o];this._room.autoReceiveAudio&&r.remoteAudioTrack.isAvailable&&n.push(r.remoteAudioTrack),this._room.subscribe(...n).then(()=>{this._emitTrackEvent(o)}).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(()=>{})}_onDataChannelAvailable(){if(this.listeners("realtime-transcriber-message").length>0)return this._room.subscribeDataChannel()}sendSEIMessage(e,t){var o;let r=this._plugins.get("SEI");r&&(r.update({buffer:e,options:w(M({seiPayloadType:243},t),{small:!!((o=this._localVideoTrack)!=null&&o.small)})}),y.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var t,r;(r=(t=this._room).sendCustomMessage)==null||r.call(t,e),y.addCount({key:500001,useUV:!0})}callExperimentalAPI(e,t){return f(this,null,function*(){return this._log.info(`callExperimentalAPI(${e}, ${JSON.stringify(t)})`),__.call(e,M({trtcInstance:this},t))})}static setLogLevel(e,t){C.setLogLevel(e),T(t)||(t?C.enableUploadLog():C.disableUploadLog())}static isSupported(){return Lc(z.frameWorkType)}static getPermissions(r){return f(this,arguments,function*({request:e=!0,types:t=["camera","microphone"]}){e&&(yield ma.request(t).catch(a=>{var c;return C.error(`getPermissions request failed, error: ${(c=a==null?void 0:a.message)!=null?c:a}`)}));let[o,n]=yield Promise.all([ma.get("camera"),ma.get("microphone")]);return{camera:o,microphone:n}})}static getCameraList(e=!0){return Rt(e)}static getMicrophoneList(e=!0){return At(e)}static getSpeakerList(e=!0){return xr(e)}static setCurrentSpeaker(e){return f(this,null,function*(){if(fe&&(e===vs.SPEAKER||e===vs.HEADSET)){let r=yield z.getMicrophoneList(),o="";if(r.forEach(n=>{n.label===e&&(o=n.deviceId)}),!o)return;pa.forEach(n=>f(null,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:o}}))}));return}(yield xr()).forEach(r=>{r.deviceId===e&&(pa.forEach(o=>{o._setCurrentSpeaker(e),o.emit(L.DEVICE_CHANGED,{type:"speaker",action:"active",device:r})}),Ye=r)})})}static _addKVStat({type:e,key:t,value:r,base:o,useUV:n,version:a,max:c}){switch(a&&(us.version=a),e){case"count":us.addCount({key:t,useUV:n});break;case"enum":us.addEnum({key:t,value:r,useUV:n});break;case"number":us.addNumber({key:t,value:r,split:o,max:c});break}}get localVideoTrack(){return this._localVideoTrack}get localScreenTrack(){return this._localScreenTrack}get localScreenAudioTrack(){return this._localScreenAudioTrack}};d(z,"VERSION",Zh),d(z,"_loggerManager",C),d(z,"EVENT",L),d(z,"ERROR_CODE",U),d(z,"TYPE",vs),d(z,"frameWorkType",30),O([Re({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"}})})],z.prototype,"use",1),O([nt(je.TRTC.enterRoom),$r("room",([e],[t])=>(e.roomId||e.strRoomId)===(t.roomId||t.strRoomId)&&e.userId===t.userId&&e.sdkAppId===t.sdkAppId),K(e=>function(t){return this._log.setUserId(t.userId),this._log.setSdkAppId(t.sdkAppId),e.call(this,t)}),Re()],z.prototype,"enterRoom",1),O([Re()],z.prototype,"exitRoom",1),O([nt(je.TRTC.switchRoom),Re(),or()],z.prototype,"switchRoom",1),O([nt(je.TRTC.switchRole),Ds("room",{merge:(e,t)=>t}),Re()],z.prototype,"switchRole",1),O([Re()],z.prototype,"destroy",1),O([nt(je.TRTC.startLocalAudio),$r("audio",([e],[t])=>{var r,o;return((r=e==null?void 0:e.option)==null?void 0:r.microphoneId)===((o=t==null?void 0:t.option)==null?void 0:o.microphoneId)}),Re()],z.prototype,"startLocalAudio",1),O([nt(je.TRTC.updateLocalAudio),Ds("audio",{debounce:{delay:200,getKey:()=>`${E_}-localAudio`,isNeedToDebounce:e=>{var t;return!T((t=e.option)==null?void 0:t.captureVolume)}}}),Re()],z.prototype,"updateLocalAudio",1),O([Gr("audio"),Re()],z.prototype,"stopLocalAudio",1),O([nt(je.TRTC.startLocalVideo),$r("video",([e],[t])=>{var r,o;return((r=e==null?void 0:e.option)==null?void 0:r.cameraId)===((o=t==null?void 0:t.option)==null?void 0:o.cameraId)}),Re()],z.prototype,"startLocalVideo",1),O([nt(je.TRTC.updateLocalVideo),Ds("video"),Re()],z.prototype,"updateLocalVideo",1),O([Gr("video"),Re()],z.prototype,"stopLocalVideo",1),O([nt(je.TRTC.startScreenShare),$r("screen",()=>!0),Re()],z.prototype,"startScreenShare",1),O([nt(je.TRTC.updateScreenShare),Ds("screen"),Re()],z.prototype,"updateScreenShare",1),O([Re()],z.prototype,"stopScreenShare",1),O([nt(je.TRTC.startRemoteVideo),$r(e=>`v${e.userId}${e.streamType}`,()=>!0),Re({getRemoteId:e=>`${e.userId}_${e.streamType}`})],z.prototype,"startRemoteVideo",1),O([nt(je.TRTC.updateRemoteVideo),Ds(e=>`v${e.userId}${e.streamType}`),Re({getRemoteId:e=>`${e.userId}_${e.streamType}`})],z.prototype,"updateRemoteVideo",1),O([nt(je.TRTC.stopRemoteVideo),K(e=>function(t){return f(this,null,function*(){if(t.userId==="*"){let r=[];return this._room.remotePublishedUserMap.forEach(o=>{this._remoteVideoConfigMap.has(`${o.userId}_main`)&&r.push(this.stopRemoteVideo({streamType:"main",userId:o.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${o.userId}_sub`)&&r.push(this.stopRemoteVideo({streamType:"sub",userId:o.userId}).catch(()=>{}))}),Promise.all(r)}return e.call(this,t)})}),Re({getRemoteId:e=>`${e.userId}_${e.streamType}`})],z.prototype,"stopRemoteVideo",1),O([Gr(e=>`v${e.userId}${e.streamType}`)],z.prototype,"_stopRemoteVideo",1),O([nt(...je.TRTC.muteRemoteAudio),Re({getRemoteId:e=>e})],z.prototype,"muteRemoteAudio",1),O([Kh(...je.TRTC.setRemoteAudioVolume),l_(200,e=>e),Re({getRemoteId:e=>e})],z.prototype,"setRemoteAudioVolume",1),O([Od("start"),Ct(e=>{var t;return(t=e.afterStart)==null?void 0:t.call(e)}),$r((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),Re({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>gu[e.getName()],ignoreLog:e=>e.getName()==="Debug",ignoreErrorLog:e=>e.getName()==="AudioProcessor"})],z.prototype,"startPlugin",1),O([Od("update"),Ds((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t),{merge:(e,t)=>(ni(e[1],t[1]),e)}),Re({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Eu[e.getName()]})],z.prototype,"updatePlugin",1),O([Od("stop"),Gr((e,t)=>{if(e.disableRandomCall)return null;let r=e.getGroup(t),o=e.getAlias();return r==="*"?new RegExp(`${o}.*`):o+r}),Re({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Tu[e.getName()]})],z.prototype,"stopPlugin",1),O([Kh(...je.TRTC.enableAudioVolumeEvaluation)],z.prototype,"enableAudioVolumeEvaluation",1),O([Re()],z.prototype,"getVideoSnapshot",1),O([Re()],z.prototype,"_setCurrentSpeaker",1),O([$r(e=>`a${e.userId}`,()=>!0)],z.prototype,"_startRemoteAudio",1),O([K(e=>function(t){return f(this,null,function*(){return t.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(r=>this._stopRemoteAudio(w(M({},t),{userId:r.userId})).catch(()=>{}))):e.call(this,t)})}),Gr(e=>`a${e.userId}`)],z.prototype,"_stopRemoteAudio",1),O([Gr("room")],z.prototype,"_exitRoom",1),O([Gr("screen")],z.prototype,"_stopScreenShare",1),O([nt(...je.TRTC.sendSEIMessage),Hh({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],z.prototype,"sendSEIMessage",1),O([nt(je.TRTC.sendCustomMessage),Hh({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],z.prototype,"sendCustomMessage",1),O([Wr()],z,"create",1),O([nt(je.TRTC.create)],z,"_create",1),O([Wr()],z,"setLogLevel",1),O([Wr()],z,"isSupported",1),O([Wr(),Re()],z,"getPermissions",1),O([Wr()],z,"getCameraList",1),O([Wr()],z,"getMicrophoneList",1),O([Wr()],z,"getSpeakerList",1);var am=z,fa=am;var cm=class{constructor(){d(this,"_set",new Set);S.on(A.LEAVE_SUCCESS,this.delete,this),S.on(A.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 gI(){return f(this,null,function*(){let s,i;try{let h=yield At();s=h&&h.length}catch(h){}try{let h=yield Rt();i=h&&h.length}catch(h){}let e={microphone:s,camera:i},{isH264EncodeSupported:t,isVp8EncodeSupported:r,isH264DecodeSupported:o,isVp8DecodeSupported:n,isH265EncodeSupported:a,isH265DecodeSupported:c}=this.checkSystemResult.detail,l=Mi.basis(),u={webRTC:l.isWebRTCSupported,getUserMedia:l.isGetUserMediaSupported,webSocket:l.isWebSocketsSupported,screenShare:l.isScreenShareSupported,webAudio:l.isWebAudioSupported,h264Encode:t,h264Decode:o,vp8Encode:r,vp8Decode:n,h265Encode:a,h265Decode:c},m={browser:l.browser,os:l.os,trtc:u,devices:e},p={isWebCodecSupported:l.isWebCodecSupported,isMediaSessionSupported:l.isMediaSessionSupported,isWebTransportSupported:l.isWebTransportSupported};se.uploadEvent({log:`trtcstats-${JSON.stringify(m)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(m)}`),se.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(p)}`,userId:this.userId}),Ou()})}function S_(){return K(s=>{let i=new cm;return function(e,t,r){return f(this,null,function*(){let o=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 D({code:I.INVALID_OPERATION,message:G({key:H.INVALID_JOIN})});if(this.checkDestroy(),i.isJoined({userId:this.userId,roomId:o,sdkAppId:this.sdkAppId,room:this}))throw new D({code:I.INVALID_OPERATION,message:G({key:H.REPEAT_JOIN,data:this.userId})});i.add({room:this,roomId:o}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${o} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),S.emit(A.JOIN_START,{room:this,roomId:o,params:e});let n=Tt.getEnv();n||(n=$i.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(ka.OLD_CLOUD_LADDER)?n=$i.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(ka.WEBRTC)&&(n=$i.WEBRTC))),se.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:o}),Mi.checkSystemRequirementsInternal(r).then(a=>{this.checkSystemResult=a,gI.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!Tt.getEnv()&&(yield this.schedule(e,r));let a=yield s.call(this,e,t,r);return this.roomId=o,this._joinedTimestamp=Tt.performanceNow(),S.emit(A.JOIN_SUCCESS,{room:this}),r===30&&!e.component&&se.uploadEvent({log:`stat-conv-${Number(li)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw i.delete({room:this,roomId:o}),S.emit(A.JOIN_FAILED,{room:this,error:a}),a}})}})}var I_=()=>K(s=>function(...i){return f(this,null,function*(){S.emit(A.LEAVE_START,{room:this}),yield s.call(this,...i),S.emit(A.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function A_(){return K(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>!t.isSubscribed&&t.subscribe(e)),e})}var y_=Ge(Ze());var Ce={SETUP_SUCCESS:"1",CONNECTION_STATE_CHANGED:"2",CONNECTED:"3",RECONNECT_FAILED:"4",SETUP_FAILED:"5",DISCONNECTED:"6",CLOSE:"7",ONLINE:"8"};var Yt={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,UPDATE_NETWORK_TIME_RESULT:5001,CUSTOM_CMD_RES:8220},R_=[Yt.UPDATE_REMOTE_MUTE_STAT,Yt.UPLINK_NETWORK_STATS,Yt.USER_LIST_RES,Yt.MUTE_RESULT,Yt.SERVER_FIRST_PACKAGE_RECEIVED,Yt.RECEIVE_CUSTOM_MSG,Yt.UPDATE_NETWORK_TIME_RESULT],q={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",UPDATE_NETWORK_TIME_RESULT:"update_network_time_result",CUSTOM_CMD_RES:"custom-cmd-res"},Q={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",UPDATE_NETWORK_TIME:"update_network_time",CUSTOM_CMD:"abstract_cmd"},C_=new Set([Q.PUBLISH,Q.PUBLISH_CHANGE,Q.PUBLISH_STATE_CHANGE,Q.UNPUBLISH,Q.SUBSCRIBE,Q.SUBSCRIBE_CHANGE,Q.UNSUBSCRIBE,Q.SPC_PUBLISH,Q.SPC_SUBSCRIBE]);var Gd=new Set;function b_(s){let i=[...Gd.values()].find(e=>e.room.userId===s&&!e.room.isJoined);return i||null}var TI=["autoTest","relayInnerIp","relayOuterIp","mcd","newRelay","clientIp"],SI=0,Bo=class extends y_.default{constructor(e){var r,o,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:[],reportToken:void 0});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,"_isFirstConnect",!0);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=((o=(r=this.room.scheduleResult)==null?void 0:r.config)==null?void 0:o.keepAliveClient)||0;(n=this.room.joinParams)!=null&&n.keepAlive&&!t&&(t=1),t-Gd.size>0&&this.room.enableSPC&&(this.keepAlive=!0,Gd.add(this)),this.url=e.url,this.backupUrl=e.backupUrl,this._seq=0,this._log=C.createLogger({parent:this.room.getLogger(),id:`ws${++SI}`,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);return TI.forEach(r=>{let o=t.get(`trtc_${r}`);o&&(e+=`&${r}=${encodeURIComponent(o)}`)}),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=x();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 ts(t),this.unbindAndCloseSocket(this._socketInUse===this._socket?_.BACKUP:_.MAIN),this._isFirstConnect&&(y.addSuccessEvent({key:521720}),this._isFirstConnect=!1),this.emitConnectionStateChanged("CONNECTED")})}connectWS({url:e,timeout:t,isMain:r}){let o=new WebSocket(e);this.bindSocket(o),r?this._socket=o:this._backupSocket=o;let n=-1;return new Promise((a,c)=>{o.onclose=c,o.onerror=c,o.onopen=()=>a(o),t&&(n=setTimeout(()=>{this.unbindAndCloseSocket(r?_.MAIN:_.BACKUP),c(new D({code:I.SIGNAL_CHANNEL_SETUP_FAILED,message:"ws connect timeout"}))},t))}).finally(()=>{o.onclose=null,o.onerror=null,o.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===_.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(Ce.SETUP_FAILED,new D({code:I.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(_.MAIN),this.unbindAndCloseSocket(_.BACKUP),this._socketInUse=null,this.reconnect()),this.room.isJoining&&this.emit(Ce.SETUP_FAILED,new D({code:I.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onerror"}))}onmessage(e){if(!this.isConnected)return;let{isOnline:t}=this;this._lastMessageTime=Date.now(),t||this.emit(Ce.ONLINE),this.bytesReceived+=cn(e.data);let r=JSON.parse(e.data),{cmd:o,data:n}=r,a=Object.values(Yt),l=Object.keys(Yt)[a.indexOf(o)],u=q[l]||o;switch(R_.includes(o)||(this._log.debug(`received ${o} msg: ${e.data}`),u&&this._log.info(`Received event: [ ${u} ]`)),o){case Yt.CHANNEL_SETUP_RESULT:{if(r.code===0)this._signalInfo.clientIp=n.clientIp,this._signalInfo.signalIp=n.signalInnerIp,n.svrTime&&ya(n.svrTime-new Date().getTime()),this._log.info(`ChannelSetup Success ${x()-this._connectStartTime}`),y.addSuccessEvent({key:521701,cost:x()-this._connectStartTime}),this._connectStartTime=-1,this.room.firewallDetector.resetTimeoutCount(),this.emit(Ce.SETUP_SUCCESS,{signalInfo:this._signalInfo});else{let m=new D({code:I.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:r.code,message:G({key:H.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:r.code,errorMsg:r.message}})});this._log.error(`${r.code}, ${r.message}`),this.close(),y.addFailedEvent({key:521701,error:m}),this.emit(Ce.SETUP_FAILED,m)}break}case Yt.JOIN_ROOM_RESULT:{r.code===0&&(this._signalInfo.relayIp=n.relayOuterIp,this._signalInfo.relayInnerIp=n.relayInnerIp,this._signalInfo.bakRelayIps=n.bakRelayIps,this._signalInfo.relayPort=n.relayPort,this._signalInfo.tinyId=r.tinyId,this._signalInfo.endReportExtend=n.endReportExtend,this._signalInfo.reportToken=n.reportToken,this._log.info(`signalIp:${this._signalInfo.signalIp} clientIp:${this._signalInfo.clientIp} relayIp: ${this._signalInfo.relayIp}`)),this.emit(u,{data:r});break}default:this.emit(String(u),{data:r});break}}reGetSignalChannelUrl(){return f(this,null,function*(){try{if(!this.room.joinParams)return;Vt(!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?_.MAIN:_.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:o,relayPort:n}=this._signalInfo,{data:a}=yield this.sendWaitForResponse({command:Q.RECONNECT_WS,data:{roomId:e,useStringRoomId:t,relayInnerIp:o,relayOuterIp:r,relayPort:n},responseCommand:q.CHANNEL_RECONNECT_RESULT});a.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),y.addSuccessEvent({key:521702,cost:x()-this._connectStartTime}),this._connectStartTime=-1,this.room.syncUserList(),this.room.checkConnectionsToReconnect()):(y.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},o=JSON.stringify(r);return this._socketInUse.send(o),C_.has(e)&&this._log.info("send",e,t),this.bytesSent+=cn(o),r.seq}}sendWaitForResponse({command:e,data:t,timeout:r=5e3,responseCommand:o,commandDesc:n,enableLog:a=!0,addReceiveTime:c=!1}){return new Promise((l,u)=>{let m=()=>{clearTimeout(p),u(new D({code:I.API_CALL_ABORTED,message:`${e} aborted due to connection closed`}))};this.once(Ce.CLOSE,m);let p=setTimeout(()=>{this.off(o,h),this.off(Ce.CLOSE,m);let g=new D({code:I.API_CALL_TIMEOUT,message:G({key:H.API_CALL_TIMEOUT,data:{commandDesc:n,command:e}})});a&&this._log.warn(g),u(g)},r),h=g=>{g.data.seq===E&&(clearTimeout(p),this.off(o,h),this.off(Ce.CLOSE,m),c&&(g.data.receiveTime=Date.now()),l(g))};this.on(o,h);let E=this.send(e,t)})}sendWaitForResponseWithRetry(e){let{commandDesc:t,command:r,retries:o=0,retryTimeout:n=0}=e;return bi({retryFunction:this.sendWaitForResponse,onError:({retry:a,reject:c,error:l})=>{!this.room.isJoined||this.destroyed||l.code===I.API_CALL_ABORTED?c(l):this.isOnline?a():(this._log.warn(`retry ${r} when connected`),this.once(Ce.ONLINE,a))},onRetrying:a=>{this._log.warn(`${t||r} timeout observed, retrying [${a}/${o}]`)},settings:{retries:o,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),Gd.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,bakRelayIps:[],endReportExtend:void 0,reportToken:void 0},this._socketInUse=null,this.bytesSent=0,this.bytesReceived=0,this._stopConnectRetry&&this._stopConnectRetry(),this.unbindAndCloseSocket(_.MAIN),this.unbindAndCloseSocket(_.BACKUP),this.emitConnectionStateChanged("DISCONNECTED"),this.emit(Ce.CLOSE)}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(q.JOIN_ROOM_RESULT,t)},e*1e3);let t=r=>{r.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(q.JOIN_ROOM_RESULT,t))};this.on(q.JOIN_ROOM_RESULT,t)}}emitConnectionStateChanged(e){if(e===this._currentState)return;this._log.info(`${this._currentState} -> ${e}`);let t={prevState:this._currentState,state:e};e==="CONNECTING"&&(t.isReconnecting=this._isReconnecting),this.emit(Ce.CONNECTION_STATE_CHANGED,t),this._currentState=e,e==="CONNECTED"?this.emit(Ce.CONNECTED):e==="DISCONNECTED"&&this.emit(Ce.DISCONNECTED)}};O([kt({settings:{retries:1/0,timeout:2e3},onError(e,t){!this.room.isDestroyed&&!this.destroyed&&(this._isFirstConnect&&(y.addFailedEvent({key:521720,error:e}),this._isFirstConnect=!1),this.room.firewallDetector.increaseTimeoutCount(),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())}})],Bo.prototype,"connect",1);var v_=Ge(Ze());var dm=!1,_t=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 v_.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");d(this,"isDestoyed",!1);this.userId=i.userId,this.tinyId=i.tinyId,this._room=i.room,this._sdpSemantics=i.room.sdpSemantics,this._isUplink=i.isUplink,this._log=i.room.getLogger().createChild({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=x())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,y.addSuccessEvent({key:521705,cost:Math.min(x()-this._prevTime,30*1e3)})):this._isReconnecting&&y.addSuccessEvent({key:521706,cost:x()-this._prevTime}),this._prevTime=-1}catch(i){throw this._isFirstConnection?(this._isFirstConnection=!1,y.addFailedEvent({key:521705,error:i})):this._isReconnecting&&this._reconnectionCount>=3&&y.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()}destroy(){this.isDestoyed=!0}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 D({code:I.API_CALL_ABORTED,message:"connection closed"}))}getDTLSTransportState(){if(!this._peerConnection)return ii;let i=null;if(this._isUplink){if(!Pr()||this._peerConnection.getSenders().length===0)return ii;i=this._peerConnection.getSenders()[0].transport}else{if(!hs()||this._peerConnection.getReceivers().length===0)return ii;i=this._peerConnection.getReceivers()[0].transport}return i?i.state:ii}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===be.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),i.target.connectionState===be.FAILED||i.target.connectionState===be.CLOSED){let r=`connection ${i.target.connectionState}. ICE Transport state: ${e}, DTLS Transport state: ${t}`,o=new D({message:r,code:I.ICE_TRANSPORT_ERROR});this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection(),this._isErrorObserved||this._emitter.emit("error",o)}(i.target.connectionState===be.CONNECTED||i.target.connectionState===be.COMPLETED)&&(this.logSelectedCandidate(),se.logSuccessEvent({userId:this._room.userId,eventType:Oe.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(i){return i===this._currentState?!1:(i==="CONNECTED"&&(this._room.firewallDetector.resetTimeoutCount(),dm=!0),S.emit(A.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(Or(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),o(),i())},r=({room:a})=>{a===this._room&&(clearTimeout(n),o(),e(new D({code:I.API_CALL_ABORTED,message:G({key:H.CONNECTION_ABORTED,data:"leave room"})})))},o=()=>{S.off(A.LEAVE_SUCCESS,r,this),this._emitter.off("connection-state-changed",t,this)},n=setTimeout(()=>{o();let a=new D({code:I.API_CALL_TIMEOUT,message:"connection timeout"});this._room.firewallDetector.increaseTimeoutCount(),e(a)},rn);S.on(A.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(Ce.CONNECTED,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=Gi()){this._log.warn(`SDK has tried reconnect for ${this._reconnectionCount} times, but all failed, please check your network`),this.stopReconnection();let i=new D({code:this._isUplink?I.UPLINK_RECONNECTION_FAILED:I.DOWNLINK_RECONNECTION_FAILED,message:G({key:this._isUplink?H.UPLINK_RECONNECTION_FAILED:H.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(Ce.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)}};O([yt(521712,!1)],_t.prototype,"setOffer",1),O([yt(521713,!1)],_t.prototype,"setAnswer",1);var mm=Ge(hm());var De=function(s){return mm.default.parse(s)},Zt=function(s){return mm.default.write(s)},w_=function(s){let i=De(s);return i.media.forEach(e=>{e.type===_.AUDIO&&e.fmtp.forEach(t=>{t.config+=";sprop-stereo=1;stereo=1"})}),Zt(i)};function x_(s){let i=De(s);return i.media.forEach(e=>{var t,r;if(e.type===_.VIDEO){let o=new Set;e.rtp.forEach(({payload:a,codec:c})=>c==="H264"&&o.add(a)),e.fmtp.forEach(({payload:a,config:c})=>{let l=c.match(/apt=(\d+)/);l&&l[1]&&o.has(Number(l[1]))&&o.add(a)});let n=({payload:a})=>!o.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=>!o.has(Number(a))).join(" ")}}),Zt(i)}function Wd(s){return Object.keys(s).filter(i=>s[i])}var $o=class $o extends _t{constructor(e){super(w(M({},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,"avPlayerStateSyncManager");d(this,"ssrc",{audio:0,video:0,auxiliary:0});d(this,"_isSDPExchanging",!1);d(this,"_videoCodec");d(this,"fromType");this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new Si(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new wi(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new Po(this._room,this),this.avPlayerStateSyncManager=new lr({log:this._log,audioPlayer:this.remoteAudioTrack.player,videoPlayer:this.remoteVideoTrack.player})}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 oi(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,o;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(o=this.remoteAuxiliaryTrack)==null||o.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===_.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.avPlayerStateSyncManager.destroy(),this.uninstallEvents()}installEvents(){}uninstallEvents(){this._emitter.removeAllListeners()}emitConnectionStateChangedEvent(e){var o,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((o=this.remoteVideoTrack)==null||o.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,o=t.id===tn?_.MAIN:_.AUXILIARY;this._log.debug(`ontrack ${o} ${r.kind}`);let n=_.AUDIO;r.kind===_.VIDEO&&(n=o===_.MAIN?_.VIDEO:_.AUXILIARY);let a=this.remoteAudioTrack;n===_.VIDEO?a=this.remoteVideoTrack:n===_.AUXILIARY&&(a=this.remoteAuxiliaryTrack),a.setInputMediaStreamTrack(r)}addRRTRLine(e){let t=e.split(`\r
|
|
65
|
+
`),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 o=[...r];for(let n=0;n<o.length;n++){let[a,c]=o[n];t.splice(a+n,0,c)}return t.join(`\r
|
|
66
|
+
`)}addSPSDescription(e){let t=De(e);return t.media.forEach(r=>{r.type===_.VIDEO&&r.fmtp.forEach(o=>{o.config+=";sps-pps-idr-in-keyframe=1"})}),Zt(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=De(e);return r.media.forEach(o=>{o.ext&&(o.ext=o.ext.filter(n=>!t.includes(n.uri)))}),Zt(r)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,t){return f(this,null,function*(){var r,o;try{if((((r=this._peerConnection)==null?void 0:r.connectionState)===be.NEW||((o=this._peerConnection)==null?void 0:o.connectionState)===be.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 D({code:I.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 o=M({},this.subscribeState);e.forEach(a=>{switch(a.mediaType){case 1:o.audio=!1;break;case 4:o.video=!1;break;case 8:o.smallVideo=!1;break;case 2:o.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(o).find(a=>a===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${Wd(o)}]`),yield this.sendSubscription(n,o),n==="unsubscribe"&&(this.closePeerConnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"))})}unsubscribeDataChannel(){return f(this,null,function*(){})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},o=Q.UNSUBSCRIBE,n=q.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=Q.SUBSCRIBE_CHANGE,n=q.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponse({command:o,data:r,responseCommand:n,timeout:1e4}).then(({data:a})=>{if(a.code!==0){let c=new D({code:a.code,message:G({key:H.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,o={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:Q.SUBSCRIBE,commandDesc:"exchange sdp",data:o,responseCommand:q.SUBSCRIBE_RESULT,timeout:Sl});if(!this._peerConnection){let a=new D({code:I.INVALID_OPERATION,message:G({key:H.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};It()&&this._sdpSemantics===Ar?(this._peerConnection.addTransceiver(_.AUDIO,{direction:de.RECVONLY}),this._peerConnection.addTransceiver(_.VIDEO,{direction:de.RECVONLY}),this._peerConnection.addTransceiver(_.VIDEO,{direction:de.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let t=yield this._peerConnection.createOffer(e);if(t.sdp){let{isH264DecodeSupported:r}=yield kc();r||(this._log.warn("remove h264 desc from sdp"),t.sdp=x_(t.sdp)),t.sdp=this.addRRTRLine(t.sdp),t.sdp=this.addSPSDescription(t.sdp),t.sdp=w_(t.sdp),this._sdpSemantics===Ar&&(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:o,sdp:n}=e&&e.data&&e.data.data||{};if(t===zr)throw new D({code:I.NOT_SUPPORTED_H264,message:G({key:H.NOT_SUPPORTED_H264DECODE})});try{if(t!==0)throw new D({code:t,message:G({key:H.EXCHANGE_SDP_FAILED,data:{errMsg:r}})});this._log.debug(`accept remote answer: ${n}`),yield this.setAnswer({type:o,sdp:n}),this.updateSSRC(n)}catch(a){throw this._log.error(a),a}})}updateSSRC(e){try{De(e).media.forEach(r=>{if(r.ssrcs)if(r.type===_.AUDIO){let o=r.ssrcs.find(n=>{var a;return(a=n.value)==null?void 0:a.includes(tn)});o&&(this.ssrc.audio=Number(o.id))}else{let o=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(tn)}),n=r.ssrcs.find(a=>{var c;return(c=a.value)==null?void 0:c.includes(fl)});o&&(this.ssrc.video=Number(o.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(!(xe($o.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=si(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}};O([K(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this._emitter.off("closed",n),o(new D({code:I.API_CALL_ABORTED,message:G({key:H.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this._emitter.off("closed",n)})})})],$o.prototype,"subscribe",1),O([yt(521717,!1)],$o.prototype,"unsubscribe",1),O([Ct(_t.prototype.afterConnect),qc(_t.prototype.beforeConnect)],$o.prototype,"connect",1);var pm=$o,fm=pm;var V_={voiceActivityDetection:!1},Go=class Go extends _t{constructor(e){super(w(M({},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)}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,o=super.emitConnectionStateChangedEvent(e);return o&&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}))),o}publish(o){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(),It()?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:o}){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||_.AUDIO,{direction:de.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?_.VIDEO:c||_.VIDEO,{direction:de.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(r||_.VIDEO,{direction:de.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?c||_.VIDEO:_.VIDEO,{direction:de.SENDONLY,streams:[a]}),yield this.connect();else{let m=[];if(l&&(u[0].sender.track||m.push(0),yield u[0].sender.replaceTrack(l),yield this.setBandwidth({bandwidth:(e==null?void 0:e.profile.bitrate)||40,type:_.AUDIO})),c){let p=o?3:1;yield u[p].sender.replaceTrack(c),yield this.setBandwidth({bandwidth:t.profile.bitrate,type:_.VIDEO,videoType:o?_.AUXILIARY:_.BIG}),m.push(p),r&&(yield u[2].sender.replaceTrack(r),yield this.setBandwidth({bandwidth:t.small.bitrate,type:_.VIDEO,videoType:_.SMALL}),m.push(2))}yield this.setTransceiverDirection(de.SENDONLY,m),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(o){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(de.SENDONLY,[2])):(yield t[2].sender.replaceTrack(null),yield this.setTransceiverDirection(de.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(!kr()){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 o=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),c=[];e&&(o?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localAuxAudioTrack&&!this.localMainAudioTrack&&(yield a[0].replaceTrack(null),c.push(0))),n&&(o?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=w(M({},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(M({},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(de.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._room.publishState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponse({command:Q.PUBLISH_STATE_CHANGE,data:t,responseCommand:q.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Q.UNPUBLISH,commandDesc:"unpublish",responseCommand:q.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===I.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:o,localAuxVideoTrack:n}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?n=this._publishingLocalVideoTrack:o=this._publishingLocalVideoTrack),Di){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(o&&o.outMediaTrack){let a=o.outMediaTrack.getSettings();this._mediaSettings.videoWidth=a.width||0,this._mediaSettings.videoHeight=a.height||0,this._mediaSettings.videoFps=a.frameRate||0,this._mediaSettings.videoBps=o.profile.bitrate*1e3,o.small&&(this._mediaSettings.smallVideoWidth=o.small.width,this._mediaSettings.smallVideoHeight=o.small.height,this._mediaSettings.smallVideoFps=o.small.frameRate,this._mediaSettings.smallVideoBps=o.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),o&&o.outMediaTrack&&(this._mediaSettings.videoWidth=o.profile.width,this._mediaSettings.videoHeight=o.profile.height,this._mediaSettings.videoFps=o.profile.frameRate,this._mediaSettings.videoBps=o.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:Q.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:q.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?_.AUXILIARY:_.MAIN} stream`),It()?yield this.addTrackByTransceiver(e,t):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,t){return f(this,null,function*(){var o;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===_.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((o=this.localMainVideoTrack)!=null&&o.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===de.INACTIVE&&(yield this.setTransceiverDirection(de.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}addTrackBySender(e){return f(this,null,function*(){if(!e.outMediaTrack)return;let t=e.outMediaTrack;kr()&&this._peerConnection.getTransceivers().findIndex(o=>o.direction==="stopped")>=0&&(this._log.warn("transceiver is stopping, negotiate sdp first"),yield this.updateOffer("remove",t));let r=this._peerConnection.getSenders().find(o=>o.track&&o.track.kind===t.kind);if(r&&r.track){this._log.warn("sender already exists, remove sender first");let o=r.track;this.removeSender(r),yield this.updateOffer("remove",o)}if(t&&this._peerConnection.addTrack(t,new MediaStream([t])),t.kind===_.VIDEO&&e instanceof ze&&e.small){let o=new MediaStream,{smallTrack:n}=this._room.videoManager;o.addTrack(n),this._peerConnection.addTrack(n,o)}yield this.updateOffer("add",t)})}isNeedToResetOfferOrder(){if(this._sdpSemantics===Vs||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,t=De(e);for(let r=0;r<t.media.length;r++)if(Number(t.media[r].mid)===0&&t.media[r].type===_.VIDEO)return!0;return!1}removeSender(e){let t=null;kr()&&(t=this._peerConnection.getTransceivers().find(r=>r.sender&&r.sender.track===e.track)),this._peerConnection.removeTrack(e),t&&me(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?_.AUXILIARY:_.MAIN} stream`),It()?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===_.AUDIO)yield r[0].sender.replaceTrack(null);else{let o=t?3:1;yield r[o].sender.replaceTrack(null),o===1&&e.small&&(yield r[2].sender.replaceTrack(null)),yield this.setTransceiverDirection(de.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}setTransceiverDirection(e,t){return f(this,null,function*(){if(!re)return;let r=!1,o=!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
|
|
67
|
+
`).map(l=>{if(l.match(new RegExp(`a=(${de.INACTIVE}|${de.RECVONLY}|${de.SENDONLY})`))&&a++,t.includes(a)){if(e===de.INACTIVE&&l.includes(`a=${de.RECVONLY}`))return o=!0,`a=${e}`;if(e===de.SENDONLY&&l.includes(`a=${de.INACTIVE}`))return o=!0,`a=${de.RECVONLY}`}return l}).join(`\r
|
|
68
|
+
`);o&&(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===_.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===_.VIDEO&&e.small&&this._peerConnection.getSenders().forEach(r=>{r.track&&r.track.kind===_.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(It()?r=e.kind===_.AUDIO?t[0]:t[1]:r=t.find(a=>a.track&&a.track.kind===e.kind),!r)return!1;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${e.kind} track on ${o?_.AUXILIARY:_.MAIN} stream`),e.kind===_.AUDIO?yield r.replaceTrack(e.outMediaTrack):e.kind===_.VIDEO&&(o?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(V_);re&&r.sdp&&(r.sdp=this.setSDPDirection(r.sdp,"sendrecv")),yield this.setOffer(r);let o=this.updateMediaSettings(),n={action:e,trackId:t.id,kind:t.kind===_.VIDEO?"bigVideo":t.kind,type:"offer",sdp:this._peerConnection.localDescription.sdp,constraintConfig:o,state:this._room.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:Q.PUBLISH_CHANGE,data:n,responseCommand:q.UPDATE_OFFER_RESULT,timeout:Tl,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:o}){if(!Ln())return o?t===_.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e):void 0;let a,c=this._peerConnection.getSenders();if(It()){let l=0;t===_.VIDEO&&(r===_.SMALL?l=2:r===_.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`),o}catch(u){if(this._log.info(`failed to set bandwidth by setting maxBitrate: ${u}`),o)return t===_.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e)}}return o})}updateVideoBandwidthRestriction(e,t,r){let o="AS";re&&(o="TIAS",t=t*1e3);let n=0,a=-1;return r===_.SMALL?n=1:r===_.AUXILIARY&&(n=2),e=e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/g,c=>(a+=1,a===n?`${c}b=${o}:${t}\r
|
|
69
|
+
`:c)),e}updateAudioBandwidthRestriction(e,t){let r="AS";return re&&(r="TIAS",t=t*1e3),e=e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,`m=audio $1\r
|
|
70
|
+
c=IN $2\r
|
|
71
|
+
b=${r}:${t}\r
|
|
72
|
+
`),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(V_);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:Q.PUBLISH,responseCommand:q.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof xt||this.localAuxVideoTrack instanceof xt,state:this._room.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:o,data:n}=t.data;return r===0?this.acceptAnswer(n):this.checkPublishResultCode(r,o)})}setSDPDirection(e,t,r="all"){let o=De(e);return o.media.forEach(n=>{(r==="all"||n.type===r)&&(n.direction=t)}),Zt(o)}acceptAnswer(e){return f(this,null,function*(){var t,r,o,n,a;try{let c;if(this._publishingLocalAudioTrack||this._publishingLocalVideoTrack||this.isMainStreamPublished){let m=((t=this._publishingLocalVideoTrack)==null?void 0:t.profile.bitrate)||((r=this.localMainVideoTrack)==null?void 0:r.profile.bitrate),p=((o=this._publishingLocalAudioTrack)==null?void 0:o.profile.bitrate)||((n=this.localMainAudioTrack)==null?void 0:n.profile.bitrate);if(m){let h=this._isPublishingAux?_.AUXILIARY:_.BIG;c=yield this.setBandwidth({bandwidth:m,type:_.VIDEO,sdp:c,videoType:h})}p&&(c=yield this.setBandwidth({bandwidth:p,type:_.AUDIO,sdp:c}))}if(c=this.removeVideoOrientation(e.sdp),(a=this._publishingLocalVideoTrack)!=null&&a.small){let{smallStreamConfig:m}=this._room;c=yield this.setBandwidth({bandwidth:this._publishingLocalVideoTrack.small.bitrate||m.bitrate,type:_.VIDEO,videoType:_.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){e===this.localAuxAudioTrack||e===this.localAuxVideoTrack||(this._log.info(`send muted state: ${JSON.stringify(this._room.muteState)}`),this._signalChannel.send(Q.UPDATE_MUTE_STAT,this._room.muteState))}getIsReconnecting(){return this._isReconnecting}reconnect(){return f(this,null,function*(){if(!(xe(Go.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:Q.UNPUBLISH,responseCommand:q.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=si(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)&&S.emit(A.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{De(e).media.forEach((r,o)=>{if(r.type===_.AUDIO){let n=r.ssrcs&&r.ssrcs[0];n&&(this.ssrc.audio=Number(n.id))}else{if(this._sdpSemantics===Vs&&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(o){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=_.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===_.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===_.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===_.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===_.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===zr?(this._log.error(Xe.NOT_SUPPORTED_H264ENCODE),new D({code:I.NOT_SUPPORTED_H264,message:G({key:H.NOT_SUPPORTED_H264ENCODE})})):new D({code:I.UNKNOWN,message:G({key:H.SIGNAL_RESPONSE_FAILED,data:{signalResponse:q.PUBLISH_RESULT,code:e,message:t}})})}};O([K(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this._emitter.off("closed",n),o(new D({code:I.API_CALL_ABORTED,message:G({key:H.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this._emitter.off("closed",n)})})})],Go.prototype,"publish",1),O([yt(521715,!1)],Go.prototype,"unpublish",1),O([Ct(_t.prototype.afterConnect),qc(_t.prototype.beforeConnect)],Go.prototype,"connect",1);var _m=Go,ga=_m;var Ea=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,"_prevQpSum",0);d(this,"_prevAuxQpSum",0);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 o,n,a,c,l,u,m;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(h=>{var R,N,j,V,ae,b,$,P,ge,X,Be,Bt,ws;let E,g;if(h.type==="outbound-rtp")if((h.mediaType||h.kind)===_.VIDEO){if(h.ssrc===r.video?(E=_.VIDEO,g=i.localMainVideoTrack):h.ssrc===r.small?E=_.SMALL:h.ssrc===r.auxiliary&&(g=i.localAuxVideoTrack,E=_.AUXILIARY),!E)return;e[E].bytesSent=h.bytesSent,e[E].packetsSent=h.packetsSent,e[E].framesEncoded=h.framesEncoded,T(h.keyFramesEncoded)||(e[E].keyFramesEncoded=h.keyFramesEncoded),T(h.nackCount)||(e[E].nackCount=h.nackCount),T(h.pliCount)||(e[E].pliCount=h.pliCount),T(h.retransmittedPacketsSent)||(e[E].retransmittedPacketsSent=h.retransmittedPacketsSent),T(h.totalEncodeTime)||(e[E].totalEncodeTime=h.totalEncodeTime),T(h.totalPacketSendDelay)||(e[E].totalPacketSendDelay=h.totalPacketSendDelay);let qo=0;if(!T(h.qpSum)&&!T(h.framesEncoded)&&h.framesEncoded>0){let Vi=h.qpSum,jr=h.framesEncoded,Ia=E===_.VIDEO?this._prevQpSum:this._prevAuxQpSum,F=E===_.VIDEO?((N=(R=i.localMainVideoTrack)==null?void 0:R.stat)==null?void 0:N.framesEncoded)||0:((V=(j=i.localAuxVideoTrack)==null?void 0:j.stat)==null?void 0:V.framesEncoded)||0;if(jr>F&&Vi>Ia){let rl=Vi-Ia,ug=jr-F;qo=Math.round(rl/ug),qo>35&&this._log.warn(`${E===_.AUXILIARY?"aux ":""}video encoder QP is high: ${qo}, resolution: ${h.frameWidth}x${h.frameHeight}, codec: ${i.videoCodec}, `)}E===_.VIDEO?this._prevQpSum=Vi:E===_.AUXILIARY&&(this._prevAuxQpSum=Vi)}if(!T(h.encoderImplementation)&&(E===_.VIDEO&&this._prevEncoderImplementation!==h.encoderImplementation||E===_.AUXILIARY&&this._prevAuxEncoderImpl!==h.encoderImplementation)){let Vi=2,jr=this._prevEncoderImplementation;E===_.AUXILIARY&&(Vi=7,jr=this._prevAuxEncoderImpl),S.emit("262",{userId:i.userId,streamType:Vi,prevImplementation:jr,implementation:h.encoderImplementation,codec:i.videoCodec,isHWCodec:h.powerEfficientEncoder}),this[E===_.VIDEO?"_prevEncoderImplementation":"_prevAuxEncoderImpl"]=h.encoderImplementation,g==null||g.log.info(`encoderImplementation change to ${h.encoderImplementation}(${i.videoCodec}) HWEncoder: ${h.powerEfficientEncoder}`)}h.ssrc===r.video?!T(h.qualityLimitationReason)&&h.bytesSent!==0&&this._prevQualityLimitationReason!==h.qualityLimitationReason&&(g==null||g.log.info(`qualityLimitationReason change to ${h.qualityLimitationReason}`),S.emit("263",{userId:i.userId,reason:h.qualityLimitationReason,prevReason:this._prevQualityLimitationReason,streamType:2,isQosClearFirst:(ae=i.localMainVideoTrack)==null?void 0:ae.isQosClearFirst}),this._prevQualityLimitationReason=h.qualityLimitationReason):h.ssrc===r.auxiliary&&!T(h.qualityLimitationReason)&&h.bytesSent!==0&&this._prevAuxQualityLimitationReason!==h.qualityLimitationReason&&(this._log.info(`aux qualityLimitationReason change to ${h.qualityLimitationReason}`),S.emit("263",{userId:i.userId,reason:h.qualityLimitationReason,prevReason:this._prevAuxQualityLimitationReason,streamType:7,isQosClearFirst:(b=i.localAuxVideoTrack)==null?void 0:b.isQosClearFirst}),this._prevAuxQualityLimitationReason=h.qualityLimitationReason)}else e.audio.bytesSent=h.bytesSent,e.audio.packetsSent=h.packetsSent;else if(h.type==="candidate-pair")Or(h)&&(this.totalBytesSent=h.bytesSent,te(h.currentRoundTripTime)&&(e.rtt=Math.floor(h.currentRoundTripTime*1e3)));else if(h.type==="media-source"){if(h.kind===_.AUDIO)e.audio.audioLevel=h.audioLevel||0,e.audio.totalAudioEnergy=h.totalAudioEnergy||0,h.echoReturnLoss,T((ge=(P=($=i.localMainAudioTrack)==null?void 0:$.sourceTrack)==null?void 0:P.stats)==null?void 0:ge.deliveredFramesDuration)?h.totalSamplesDuration&&(e.audio.totalSamplesDuration=h.totalSamplesDuration):e.audio.totalSamplesDuration=i.localMainAudioTrack.sourceTrack.stats.deliveredFramesDuration/1e3;else if(h.kind===_.VIDEO)if(h.trackIdentifier===i.getVideoTrackId(_.VIDEO))if((Bt=(Be=(X=i.localMainVideoTrack)==null?void 0:X.sourceTrack)==null?void 0:Be.stats)!=null&&Bt.deliveredFrames){let{deliveredFrames:Ht}=i.localMainVideoTrack.sourceTrack.stats;e.video.framesCaptured=Ht,i.localMainVideoTrack.stat.framesCaptured&&i.localMainVideoTrack.stat.framesCaptured>0&&Ht>=i.localMainVideoTrack.stat.framesCaptured?e.video.fpsCapture=Math.floor((Ht-i.localMainVideoTrack.stat.framesCaptured)/this.statInterval):e.video.fpsCapture=h.framesPerSecond}else e.video.fpsCapture=h.framesPerSecond;else h.trackIdentifier===i.getVideoTrackId(_.AUXILIARY)?e.auxiliary.fpsCapture=h.framesPerSecond:e.small.fpsCapture=h.framesPerSecond}if(!T(h.audioLevel)&&((ws=i.localMainAudioTrack)!=null&&ws.mediaTrack)&&h.trackIdentifier===i.localMainAudioTrack.mediaTrack.id&&(e.audio.audioLevel=h.audioLevel||0),!T(h.frameWidth)){let Ht=_.SMALL;h.trackIdentifier===i.getVideoTrackId(_.VIDEO)||h.ssrc===r.video?Ht=_.VIDEO:(h.trackIdentifier===i.getVideoTrackId(_.AUXILIARY)||h.ssrc===r.auxiliary)&&(Ht=_.AUXILIARY),e[Ht].frameWidth=h.frameWidth,e[Ht].frameHeight=h.frameHeight,e[Ht].framesSent=h.framesSent}}),i.localMainAudioTrack||i.getRoom().capturedLocalMainAudioTrack){let h=i.localMainAudioTrack||i.getRoom().capturedLocalMainAudioTrack;if(h){let E=h.getInternalAudioLevel(),g=h.getInternalAudioLevelAfter3A();e.audio.audioCaptureEnergyAfter3a=g,e.audio.micAudioLevel=E,e.audio.audioLevel===0&&i.localMainAudioTrack&&(e.audio.audioLevel=g!=null?g:E),!i.localMainAudioTrack&&!T((n=(o=h.sourceTrack)==null?void 0:o.stats)==null?void 0:n.deliveredFramesDuration)&&(e.audio.totalSamplesDuration=h.sourceTrack.stats.deliveredFramesDuration/1e3)}}if(!i.localMainVideoTrack&&i.getRoom().capturedLocalMainVideoTrack){let h=i.getRoom().capturedLocalMainVideoTrack;if((c=(a=h==null?void 0:h.sourceTrack)==null?void 0:a.stats)!=null&&c.deliveredFrames){let{deliveredFrames:E}=h.sourceTrack.stats;e.video.framesCaptured=E,h.stat.framesCaptured&&h.stat.framesCaptured>0&&E>=h.stat.framesCaptured&&(e.video.fpsCapture=Math.floor((E-h.stat.framesCaptured)/this.statInterval)),h.stat.framesCaptured=E}}if(!i.localAuxVideoTrack&&i.getRoom().capturedLocalAuxVideoTrack){let h=i.getRoom().capturedLocalAuxVideoTrack;if((u=(l=h==null?void 0:h.sourceTrack)==null?void 0:l.stats)!=null&&u.deliveredFrames){let{deliveredFrames:E}=h.sourceTrack.stats;e.auxiliary.framesCaptured=E,h.stat.framesCaptured&&h.stat.framesCaptured>0&&E>=h.stat.framesCaptured&&(e.auxiliary.fpsCapture=Math.floor((E-h.stat.framesCaptured)/this.statInterval)),h.stat.framesCaptured=E}}this.totalBytesSent||(this.totalBytesSent+=e.audio.bytesSent+e.video.bytesSent+e.auxiliary.bytesSent),Object.keys(e).forEach(h=>{h===_.AUDIO?(i.localMainAudioTrack&&(i.localMainAudioTrack.stat=e[h]),i.localAuxAudioTrack&&(i.localAuxAudioTrack.stat=e[h])):h===_.VIDEO?i.localMainVideoTrack&&(i.localMainVideoTrack.stat=e[h]):h===_.AUXILIARY&&i.localAuxVideoTrack&&(i.localAuxVideoTrack.stat=e[h])})}catch(p){this._log.warn(`failed to getStats on sender connection ${p}`)}return e.rtt===0&&(e.rtt=((m=this.room.networkQuality)==null?void 0:m.uplinkRTT)||0),e})}getReceiverStats(i){return f(this,null,function*(){var r,o,n;let e={tinyId:i.tinyId,userId:i.userId,rtt:0,hasAudio:!1,hasVideo:!1,hasAuxiliary:!1,isSmallSubscribed:!1,avSyncDelay:0,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 E,g;if(h.type==="codec"&&this._decodeMap.set(h.id,h),h.type==="inbound-rtp"){let R=(h.mediaType||h.kind)===_.AUDIO;if(R){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:N}=i;N.stat.packetsReceived=h.packetsReceived,N.stat.bytesReceived=h.bytesReceived,N.stat.packetsLost=h.packetsLost,e.audio.p2pDelay=N.stat.end2EndDelay,e.hasAudio=!0}else{if(re&&h.bytesReceived===0)return;let N;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[(E=this._decodeMap.get(h.codecId))==null?void 0:E.mimeType.split("/")[1]]||"h264",e.video.codec=i.videoCodec,N=i.remoteVideoTrack,c.hasSmall&&l.smallVideo&&(e.isSmallSubscribed=!0),h.decoderImplementation&&(!this._prevDecoderImplementationMap.has(e.userId)||this._prevDecoderImplementationMap.get(e.userId)!==h.decoderImplementation)&&(N.log.info(`decoderImplementation change to ${h.decoderImplementation}(${i.videoCodec}) HWDecoder: ${h.powerEfficientDecoder}`),S.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)),T(h.keyFramesDecoded)||N.updateKeyFramesDecoded(h.keyFramesDecoded)),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,N=i.remoteAuxiliaryTrack,e.auxiliary.p2pDelay=N.stat.end2EndDelay,e.hasAuxiliary=!0,e.video.codec=((g=this._decodeMap.get(h.codecId))==null?void 0:g.mimeType.split("/")[1].toLowerCase())||"h264",T(h.keyFramesDecoded)||N.updateKeyFramesDecoded(h.keyFramesDecoded)),N&&(N.stat.packetsReceived=h.packetsReceived,N.stat.bytesReceived=h.bytesReceived,N.stat.packetsLost=h.packetsLost,N.stat.framesReceived=h.framesReceived,N.stat.framesDecoded=h.framesDecoded,h.jitterBufferDelay&&(N.stat.jitterBufferDelay=Math.floor(h.jitterBufferDelay/h.jitterBufferEmittedCount*1e3)),e.video.p2pDelay=N.stat.end2EndDelay)}h.jitterBufferDelay&&(R?(e.audio.totalJitter=h.jitterBufferDelay,e.audio.totalJitterCount=h.jitterBufferEmittedCount,e.audio.estimatedPlayoutTimestamp=h.estimatedPlayoutTimestamp):h.ssrc===a.video&&c.hasVideo?(e.video.totalJitter=h.jitterBufferDelay,e.video.totalJitterCount=h.jitterBufferEmittedCount,e.video.estimatedPlayoutTimestamp=h.estimatedPlayoutTimestamp):h.ssrc===a.auxiliary&&c.hasAuxiliary&&(e.auxiliary.totalJitter=h.jitterBufferDelay,e.auxiliary.totalJitterCount=h.jitterBufferEmittedCount))}else h.type==="candidate-pair"&&Or(h)&&(this.totalBytesReceived=h.bytesReceived,te(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((o=i.remoteAuxiliaryTrack.player.stat)==null?void 0:o.fps)||(e.auxiliary.fpsRender=i.remoteAuxiliaryTrack.player.stat.fps);let m=e.audio.estimatedPlayoutTimestamp,p=e.video.estimatedPlayoutTimestamp;if(m&&p&&i.remoteAudioTrack.isAvailable&&i.remoteVideoTrack.isAvailable){let h=p-m;Math.abs(h)<=1e4&&(e.avSyncDelay=h,Math.abs(h)>150&&this._log.warn("av sync delay",h))}}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,o=[];if(this.room.singlePC){let n=this.room.singlePC.getPeerConnection();if(!n)return{senderStats:t,receiverStats:o};let a=x(),c=yield n.getStats(),l=x();l-a>2e3&&this._log.warn(`getStats cost ${l-a}ms`);let u=[],m=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source","codec","media-playout"]);c.forEach(p=>m.has(p.type)&&u.push(p)),this._spcStats=u}i&&(t=yield this.getSenderStats(i));for(let[n,a]of e){let c=yield this.getReceiverStats(a);c&&o.push(c)}return e.size&&(r=this.getMediaPlayoutStats(this._spcStats)),{senderStats:t,receiverStats:o,mediaPlayoutStats:r}})}getDifferenceValue(i,e){if(Ei(i))return e;let t=e-i;return t<0?0:t}prepareReport({stats:i,report:e,freezeMap:t,uplinkConnection:r}){var p,h,E,g,R,N,j,V,ae;if(!Ei(i.senderStats)){let b={uint32_audio_level:i.senderStats.audio.audioLevel*Pt,uint32_audio_energy:(i.senderStats.audio.totalAudioEnergy||0)*1e6,uint32_audio_codec_bitrate:i.senderStats.audio.bytesSent};i.senderStats.audio.micAudioLevel&&(b.uint32_mic_audio_level=i.senderStats.audio.micAudioLevel*Pt),T(i.senderStats.audio.audioCaptureEnergyAfter3a)||(b.uint32_audio_capture_energy_after3a=i.senderStats.audio.audioCaptureEnergyAfter3a*Pt),i.senderStats.audio.totalSamplesDuration&&(e.msg_device_info.uint32_audio_capture_cost=i.senderStats.audio.totalSamplesDuration);let $=[];if(i.senderStats.video.bytesSent){let ge={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};$.push(ge)}if(i.senderStats.small.bytesSent){let ge={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};$.push(ge)}if(i.senderStats.auxiliary.bytesSent){let ge={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};$.push(ge)}let P={uint32_bitrate:0,uint32_lost:0,uint32_rtt:i.senderStats.rtt};e.msg_up_stream_info={msg_audio_status:b,msg_video_status:$,msg_network_status:P}}let{statInterval:o}=this;e.msg_down_stream_info=[],i.receiverStats.forEach(b=>{let $={msg_user_info:{str_identifier:b.userId,uint64_tinyid:b.tinyId},msg_network_status:{uint32_rtt:b.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(b.hasAudio){let P={uint32_audio_p2p_delay:b.audio.p2pDelay,uint32_audio_cache_ms:b.audio.totalJitter,uint32_audio_cache_ms_count:b.audio.totalJitterCount,uint32_audio_codec_bitrate:b.audio.bytesReceived,uint32_audio_total_bitrate:b.audio.bytesReceived,uint32_audio_level:b.audio.audioLevel*1e8,uint32_audio_energy:b.audio.totalAudioEnergy*1e6,uint32_audio_receive:b.audio.packetsReceived,uint32_audio_origin_lost:b.audio.packetsLost};$.msg_audio_status=P}if(b.hasVideo){let P=t.get(`${b.userId}_${_l}`),ge=P?P.duration:0,X={uint32_video_stream_type:b.isSmallSubscribed?3:2,uint32_video_receive_fps:b.video.framesReceived,uint32_video_width:b.video.frameWidth,uint32_video_height:b.video.frameHeight,uint32_video_codec_bitrate:b.video.bytesReceived,uint32_video_receive:b.video.packetsReceived,uint32_video_origin_lost:b.video.packetsLost,uint32_video_block_time:ge,uint32_video_dec_fps:b.video.framesDecoded,uint32_video_codec_fps:b.video.fpsRender,uint32_video_cache_ms:b.video.totalJitter,uint32_video_cache_ms_count:b.video.totalJitterCount,uint32_video_p2p_delay:b.video.p2pDelay,uint32_video_codec:b.video.codec,int32_video_audio_relative_delay:b.avSyncDelay+5e3};$.msg_video_status.push(X)}if(b.hasAuxiliary){let P=t.get(`${b.userId}_${gl}`),ge=P?P.duration:0,X={uint32_video_stream_type:7,uint32_video_receive_fps:b.auxiliary.framesReceived,uint32_video_width:b.auxiliary.frameWidth,uint32_video_height:b.auxiliary.frameHeight,uint32_video_codec_bitrate:b.auxiliary.bytesReceived,uint32_video_receive:b.auxiliary.packetsReceived+b.auxiliary.packetsLost,uint32_video_origin_lost:b.auxiliary.packetsLost,uint32_video_block_time:ge,uint32_video_dec_fps:b.auxiliary.framesDecoded,uint32_video_codec_fps:b.video.fpsRender,uint32_video_cache_ms:b.auxiliary.totalJitter,uint32_video_cache_ms_count:b.auxiliary.totalJitterCount,uint32_video_p2p_delay:b.auxiliary.p2pDelay,uint32_video_codec:b.video.codec};$.msg_video_status.push(X)}e.msg_down_stream_info.push($)}),i.mediaPlayoutStats&&!Ei(i.mediaPlayoutStats)&&(i.mediaPlayoutStats.synthesizedSamplesDuration*=1e3,i.mediaPlayoutStats.totalSamplesDuration*=1e3);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 b=n.msg_up_stream_info.msg_audio_status,$=e.msg_up_stream_info.msg_audio_status;if(b.uint32_audio_codec_bitrate===0)$.uint32_audio_codec_bitrate=0;else{let P=this.getDifferenceValue(b.uint32_audio_codec_bitrate,$.uint32_audio_codec_bitrate);$.uint32_audio_codec_bitrate=Math.round(P*8/o),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=$.uint32_audio_codec_bitrate}(p=n.msg_device_info)!=null&&p.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/o),e.msg_device_info.uint32_audio_capture_cost>0&&((E=r==null?void 0:r.localMainAudioTrack)==null||E.updateAfter3aSilenceStartTime((h=i.senderStats.audio.audioCaptureEnergyAfter3a)!=null?h:i.senderStats.audio.micAudioLevel))):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(b=>{let $=c.find(Bt=>Bt.uint32_video_stream_type===b.uint32_video_stream_type);if(!$||$.uint32_video_codec_bitrate===0){b.uint32_video_codec_bitrate=0,b.uint32_video_enc_fps=0,b.uint32_video_codec_fps=0;return}let P=0,ge=0,X=0;$&&b.uint32_video_codec_bitrate>=$.uint32_video_codec_bitrate&&(P=$.uint32_video_codec_bitrate,ge=$.uint32_video_enc_fps,X=$.uint32_video_codec_fps);let Be=this.getDifferenceValue(P,b.uint32_video_codec_bitrate);b.uint32_video_codec_bitrate=Math.round(Be*8/o),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=b.uint32_video_codec_bitrate,b.uint32_video_enc_fps=Math.round(this.getDifferenceValue(ge,b.uint32_video_enc_fps)/o),b.uint32_video_codec_fps=Math.round(this.getDifferenceValue(X,b.uint32_video_codec_fps)/o),$.uint32_video_width===0&&$.uint32_video_height===0&&$.uint32_video_codec_fps===0&&(b.uint32_video_codec_fps=b.uint32_video_enc_fps),T($.uint32_key_frame_count)||(b.uint32_key_frame_count=Math.round(this.getDifferenceValue($.uint32_key_frame_count,b.uint32_key_frame_count))),T($.uint32_nack_count)||(b.uint32_nack_count=Math.round(this.getDifferenceValue($.uint32_nack_count,b.uint32_nack_count))),T($.uint32_pli_count)||(b.uint32_pli_count=Math.round(this.getDifferenceValue($.uint32_pli_count,b.uint32_pli_count))),T($.uint32_video_arq_packets)||(b.uint32_video_arq_packets=Math.round(this.getDifferenceValue($.uint32_video_arq_packets,b.uint32_video_arq_packets))),T($.uint32_encode_cost)||(b.uint32_encode_cost=Math.round(this.getDifferenceValue($.uint32_encode_cost,b.uint32_encode_cost)/o)),T($.uint32_send_packet_cost)||(b.uint32_send_packet_cost=Math.round(this.getDifferenceValue($.uint32_send_packet_cost,b.uint32_send_packet_cost)/o))});let u=n.msg_down_stream_info;e.msg_down_stream_info=e.msg_down_stream_info.filter(b=>u.find($=>$.msg_user_info.uint64_tinyid===b.msg_user_info.uint64_tinyid));let m=e.msg_down_stream_info;if(m.forEach(b=>{let $=u.find(P=>P.msg_user_info.uint64_tinyid===b.msg_user_info.uint64_tinyid);if(!Ei(b.msg_audio_status)&&!Ei($.msg_audio_status)){let P=b.msg_audio_status,ge=$.msg_audio_status,X=this.getDifferenceValue(ge.uint32_audio_cache_ms_count,P.uint32_audio_cache_ms_count);delete P.uint32_audio_cache_ms_count,P.uint32_audio_cache_ms=Math.floor(1e3*this.getDifferenceValue(ge.uint32_audio_cache_ms,P.uint32_audio_cache_ms)/X)||0;let Be=this.room.remotePublishedUserMap.get(b.msg_user_info.str_identifier);Be&&(Be.remoteAudioTrack.stat.jitterBufferDelay=P.uint32_audio_cache_ms),P.uint32_audio_origin_lost=this.getDifferenceValue(ge.uint32_audio_origin_lost,P.uint32_audio_origin_lost),P.uint32_audio_receive=this.getDifferenceValue(ge.uint32_audio_receive,P.uint32_audio_receive),P.uint32_audio_receive+=P.uint32_audio_origin_lost;let Bt=this.getDifferenceValue(ge.uint32_audio_codec_bitrate,P.uint32_audio_codec_bitrate);P.uint32_audio_codec_bitrate=Math.round(Bt*8/o),P.uint32_audio_total_bitrate=Math.round(Bt*8/o)}else b.msg_audio_status={};if(b.msg_video_status&&$.msg_video_status){let P=$.msg_video_status;b.msg_video_status=b.msg_video_status.filter(X=>P.find(Be=>Be.uint32_video_stream_type===X.uint32_video_stream_type)),b.msg_video_status.forEach(X=>{let Be=P.find(rl=>rl.uint32_video_stream_type===X.uint32_video_stream_type),Bt=Be.uint32_video_receive,ws=Be.uint32_video_origin_lost,Ht=Be.uint32_video_codec_bitrate,qo=Be.uint32_video_receive_fps,Vi=Be.uint32_video_dec_fps;X.uint32_video_origin_lost=this.getDifferenceValue(ws,X.uint32_video_origin_lost),X.uint32_video_receive=this.getDifferenceValue(Bt,X.uint32_video_receive)+X.uint32_video_origin_lost;let jr=this.getDifferenceValue(Ht,X.uint32_video_codec_bitrate);X.uint32_video_codec_bitrate=Math.round(jr*8/o);let Ia=this.getDifferenceValue(qo,X.uint32_video_receive_fps);X.uint32_video_receive_fps=Math.round(Ia/o),X.uint32_video_dec_fps=Math.round(this.getDifferenceValue(Vi,X.uint32_video_dec_fps)/o);let F=this.getDifferenceValue(Be.uint32_video_cache_ms_count,X.uint32_video_cache_ms_count);delete X.uint32_video_cache_ms_count,X.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(Be.uint32_video_cache_ms,X.uint32_video_cache_ms)/F)||0})}}),!T((g=a==null?void 0:a.mediaPlayoutStats)==null?void 0:g.totalSamplesDuration)&&!T((R=i.mediaPlayoutStats)==null?void 0:R.totalSamplesDuration)){let b=2*Math.floor(this.getDifferenceValue((N=a==null?void 0:a.mediaPlayoutStats)==null?void 0:N.synthesizedSamplesDuration,(j=i.mediaPlayoutStats)==null?void 0:j.synthesizedSamplesDuration)/o),$=2*Math.floor(this.getDifferenceValue((V=a==null?void 0:a.mediaPlayoutStats)==null?void 0:V.totalSamplesDuration,(ae=i.mediaPlayoutStats)==null?void 0:ae.totalSamplesDuration)/o);e.msg_device_info.uint32_audio_play_cost=$-b}return a&&i.receiverStats.forEach(b=>{if(b.audio.concealedSamples&&b.audio.totalSamplesReceived){let $=a.receiverStats.find(P=>P.userId===b.userId);if($&&$.audio.concealedSamples&&$.audio.totalSamplesReceived){let P=(b.audio.silentConcealedSamples||0)-($.audio.silentConcealedSamples||0),ge=b.audio.concealedSamples-$.audio.concealedSamples,X=b.audio.totalSamplesReceived-$.audio.totalSamplesReceived,Be=Math.floor((ge-P)/X*1e3*o);if(Be>o*1e3/5){let Bt=m.find(ws=>ws.msg_user_info.str_identifier===b.userId);Bt&&(Bt.msg_audio_status.uint32_audio_block_time=Be)}}}}),e.msg_down_stream_info.forEach(b=>{b.msg_video_status.forEach($=>{$.uint32_video_codec_bitrate===0&&$.uint32_video_receive_fps===0&&($.uint32_video_width=0,$.uint32_video_height=0)})}),e}getStatsReport(r){return f(this,arguments,function*({uplinkConnection:i,downlinkConnections:e,freezeMap:t}){let o={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,uint32_video_codec_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(o))),this.prepareReport({stats:n,report:o,freezeMap:t,uplinkConnection:i}),this._prevReportTime=Date.now(),o})}getMediaPlayoutStats(i){let e;if(Ie(i)){for(let t of i)if(t.type==="media-playout"){let{synthesizedSamplesDuration:r,totalSamplesDuration:o}=t;e={synthesizedSamplesDuration:r,totalSamplesDuration:o};break}return e}}reset(){this._prevReportTime=0,this._prevReport={},this._prevEncoderImplementation="",this._prevQualityLimitationReason="",this._prevDecoderImplementationMap=new Map,[this.room.localMainVideoTrack,this.room.capturedLocalMainVideoTrack,this.room.localAuxVideoTrack,this.room.capturedLocalAuxVideoTrack].forEach(i=>{i!=null&&i.stat&&(i.stat.framesCaptured=0)})}};var H_=Ge(Ze());function F_(s){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===s){let r=Math.round(t.duration),o=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),m=Math.round(t.responseStart-t.requestStart),p=Math.round(t.responseEnd-(t.responseStart||t.startTime));i=w(M({},i),{totalCost:r,local:o,redirect:n,httpCache:a,dns:c,tcp:u,tls:l,request:m,response:p});break}}catch(e){}return i}function B_(s){return new Promise(i=>f(null,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://${s}/?t=${t}`;try{yield fetch(r)}catch(n){}clearTimeout(e);let o=F_(r);o.totalCost===0&&(o.totalCost=Date.now()-t),i(o)}))}var MI=700,Ui=class Ui extends H_.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);d(this,"_uplinkQualityHistory",[]);d(this,"_downlinkQualityHistory",[]);this._room=t,this._signalChannel=e,this._log=C.createLogger({parent:t.getLogger(),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,this._uplinkQualityHistory.push(e),this._uplinkQualityHistory.length>Ui.HISTORY_SIZE&&this._uplinkQualityHistory.shift()}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,this._downlinkQualityHistory.push(e),this._downlinkQualityHistory.length>Ui.HISTORY_SIZE&&this._downlinkQualityHistory.shift()}initialize(){this._signalChannel.on(q.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(Ce.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 o=t.expectAudPkg+t.expectVidPkg,n=t.recvAudPkg+t.recvVidPkg,a=o-n;o===0&&n===0||(a<=0?this.uplinkLoss=0:this.uplinkLoss=Math.round(a/o*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)===be.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:m}=yield this.getStat(c);if(!this._downlinkPrevStatMap.has(c)){this._downlinkPrevStatMap.set(c,{totalPacketsLost:u,totalPacketsReceived:m});continue}let p=0,h=this._downlinkPrevStatMap.get(c),E=u-h.totalPacketsLost,g=m-h.totalPacketsReceived;E<=0||g<0?p=0:p=Math.round(E/(E+g)*100),this._downlinkPrevStatMap.set(c,{totalPacketsLost:u,totalPacketsReceived:m}),this._downlinkLossAndRTTMap.set(c,{rtt:l,loss:p,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:o,loss:n}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this.downlinkRTT=o,this.downlinkLoss=n,this.downlinkNetworkQuality=this.getNetworkQuality(n,o)})}getStat(e){return f(this,null,function*(){let t={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!hs())return t;let r=e.getReceivers();try{for(let o=0;o<r.length;o++)(yield r[o].getStats()).forEach(c=>{c.type==="candidate-pair"&&te(c.currentRoundTripTime)&&(t.rtt=Math.round(c.currentRoundTripTime*1e3)),c.type==="inbound-rtp"&&(c.mediaType===_.AUDIO||c.mediaType===_.VIDEO)&&(t.totalPacketsLost+=c.packetsLost,t.totalPacketsReceived+=c.packetsReceived)});return t.rtt===0&&(t.rtt=this.uplinkRTT),t}catch(o){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===be.DISCONNECTED||e.connectionState===be.FAILED||e.connectionState===be.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=ce.run("ric",()=>{var n;this.handleDownlinkNetworkQuality();let e=[...this._downlinkLossAndRTTMap.values()];S.emit(A.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(M({},r),{pingResults:this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold?this.pingResults:{}})),this.emit(Ui.EVENT_NETWORK_QUALITY,r);let o=Date.now();if(t&&(this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold)&&o-Ui.lastPingTime>t.interval*1e3){Ui.lastPingTime=Date.now();let a=t.domain.map(c=>B_(c).then(l=>({domain:c,cost:l.totalCost})));Promise.all(a).then(c=>{this.pingResults.isPoorNetwork=c.some(l=>l.cost>MI),this.pingResults.timestamp=o,this.pingResults.data=c,c.forEach(l=>{y.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})}hadRecentBadUplink(e=2){return this._uplinkQualityHistory.some(t=>t>e)}hadRecentBadDownlink(e=2){return this._downlinkQualityHistory.some(t=>t>e)}stop(){this._log.debug("stopped"),this._interval!==-1&&(ce.clearTask(this._interval),this._interval=-1),this._downlinkLossAndRTTMap.clear(),this._downlinkPrevStatMap.clear()}updateDelay(e){let{tinyIdToUserIdMap:t}=this._room;e.forEach(({srcTinyId:r,videoDelay:o,audioDelay:n})=>{let a=t.get(r);if(a){let c=this._room.remotePublishedUserMap.get(a);c==null||c.setDelay({videoDelay:o,audioDelay:n})}})}};d(Ui,"HISTORY_SIZE",10),d(Ui,"EVENT_NETWORK_QUALITY","0"),d(Ui,"lastPingTime",0);var Wo=Ui;function OI({fn:s,context:i}){return function(...e){try{let t=s.apply(i,e);return Rr(t)?t.catch(r=>C.error(`${s.name}() error observed ${r}`)):t}catch(t){C.error(`${s.name}() error observed ${t}`)}}}var Jd=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,reportToken: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=C.createLogger({parent:this._room.getLogger(),id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&me(this[e])&&(this[e]=OI({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:We,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,uint32_audio_capture_thread_health_zero_cnt:0,uint32_after3a_silence_duration:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,ns().then(()=>{this._basicInfo.string_os_version=Mt(),this._basicInfo.string_device_name=Dt()||this._basicInfo.string_os_version})}addEvent(i,e){return this._eventMap.set(i,e),S.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(A.JOIN_START,this.handleJoinStart).addEvent(A.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(A.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(A.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(A.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(A.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(A.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(A.JOIN_FAILED,this.handleJoinFailed).addEvent(A.LEAVE_START,this.handleLeaveStart).addEvent(A.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(A.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(A.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(A.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(A.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(A.PUBLISH_START,this.handlePublishStart).addEvent(A.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(A.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(A.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(A.PLAY_TRACK_START,this.handlePlayStart).addEvent(A.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(A.PLAYER_STATE_CHANGED,(({track:i,state:e,type:t})=>{!i.isRemote||!this.hitTest(i.room)||e==="PLAYING"&&(t===_.AUDIO?this.handleAudioPlaying(i):this.handleVideoPlaying(i))})).addEvent(A.SWITCH_ROOM_START,this.handleSwitchRoomStart).addEvent(A.SWITCH_ROOM_SUCCESS,this.handleSwitchRoomSuccess).addEvent(A.SWITCH_ROOM_FAILED,this.handleSwitchRoomFailed).addEvent(A.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(A.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(A.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(A.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let r=e.hasAudio||e.hasVideo||e.hasSmall,o=e.hasAuxiliary,n=t.hasAudio||t.hasVideo||t.hasSmall,a=t.hasAuxiliary;!r&&n&&this.handleRemoteStreamAdded(t.userId,"main"),!o&&a&&this.handleRemoteStreamAdded(t.userId,"auxiliary")}).addEvent(A.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)=>S.off(e,i)),this._eventMap.clear()}destroy(){this.uninstallEvents(),ce.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:o,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=o,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 D?Number(e.getExtraCode()||e.getCode()):I.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){var e;if(this.hitTest(i.room)&&this._pathLeaveRoom.uint64_end_time===0){if(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;let t=(e=this._room.audioManager.localAudioTrack)==null?void 0:e.after3aSilenceStartTime;t&&(this._localStreamStat.statsToReport.uint32_after3a_silence_duration=x()-t)}else 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 D?Number(e.getExtraCode()||e.getCode()):I.UNKNOWN)}}handleRemoteStreamAdded(i,e){var r;let t=`${i}_${e}`;if(!this._remoteStreamStatMap.has(t)){let o={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(M({},PI),{msg_user_info:new Ta({userId:i,tinyId:(r=this._room.remotePublishedUserMap.get(i))==null?void 0:r.tinyId,role:20})})};o.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(t,o)}}handleSubscribeStart({room:i,remotePublishedUser:e,streamType:t,subscribeState:r}){if(!this.hitTest(i))return;let{userId:o,tinyId:n,role:a}=e,c=new Ta({userId:o,tinyId:n,role:a==="anchor"?20:21}),l=Date.now(),u=`${o}_${t}`,m=this._remoteStreamStatMap.get(u);m&&m.subscribeStartTime===0&&(m.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:o,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:o,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}`,o=this._remoteStreamStatMap.get(r);o&&o.subscribedTime===0&&(o.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),o=this._remoteStreamStatMap.get(e);if(o){let{statsToReport:n}=o;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,y.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:o,audioDelay:n})=>{let a=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(a)a.totalRTT+=e,a.totalLoss+=t,o&&(a.totalVideoDelay=(a.totalVideoDelay||0)+o,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,m;o&&(l=o,u=1),n&&(c=n,m=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(r,{totalRTT:e,totalLoss:t,count:1,totalAudioDelay:c,totalVideoDelay:l,audioDelayCount:m,videoDelayCount:u})}}))}handleHeartbeatStats(i){var e;if(this.hitTest(i.room)){let{msg_device_info:t,msg_up_stream_info:r,msg_down_stream_info:o}=i.report;if(r.msg_video_status[0]){let{uint32_video_codec_bitrate:n,uint32_video_enc_fps:a,uint32_video_width:c,uint32_video_height:l}=r.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=n,this._localStreamStat.totalVideoFPS+=a,this._localStreamStat.totalVideoWidth+=c,this._localStreamStat.totalVideoHeight+=l,this._localStreamStat.videoCount++}if(r.msg_audio_status){let{uint32_audio_level:n}=r.msg_audio_status;Math.floor(n/Pt*100)>0&&(this._localStreamStat.totalAudioLevel+=n/Pt,this._localStreamStat.audioLevelCount++)}o.forEach(n=>{let{msg_user_info:a,msg_audio_status:c,msg_video_status:l}=n,u=a.str_identifier,m=this._room.remotePublishedUserMap.get(u);if(l.forEach(p=>{let h=p.uint32_video_stream_type===2,E=p.uint32_video_stream_type===7,g=`${u}_${h?"main":"auxiliary"}`,R=this._remoteStreamStatMap.get(g);if(R&&(h&&(m!=null&&m.remoteVideoTrack.isSubscribed)||E&&(m!=null&&m.remoteAuxiliaryTrack))){R.totalVideoFPS+=p.uint32_video_receive_fps,R.totalVideoBitrate+=p.uint32_video_codec_bitrate,R.videoCount++,R.statsToReport.uint32_video_width===0&&(R.statsToReport.uint32_video_width=p.uint32_video_width),R.statsToReport.uint32_video_height===0&&(R.statsToReport.uint32_video_height=p.uint32_video_height);let N=h?m.remoteVideoTrack:m.remoteAuxiliaryTrack;N.stat.jitterBufferDelay&&(R.videoJitterBufferDelay=N.stat.jitterBufferDelay),N.stat.framesReceived&&(R.statsToReport.uint32_video_consume_render_rate=Math.floor(N.stat.framesDecoded/N.stat.framesReceived*gr(10,6)))}}),!js(c)){let p=`${u}_main`,h=this._remoteStreamStatMap.get(p);this._remoteStreamStatMap.has(p)&&h&&m!=null&&m.remoteAudioTrack.isSubscribed&&(h.totalAudioBitrate+=c.uint32_audio_codec_bitrate,h.audioCount++,m.remoteAudioTrack.stat.jitterBufferDelay&&(h.audioJitterBufferDelay=m.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(c.uint32_audio_level/Pt*100)>0&&(h.totalAudioLevel+=c.uint32_audio_level/Pt,h.audioLevelCount++),c.uint32_audio_block_time&&(h.statsToReport.uint32_audio_block_time+=c.uint32_audio_block_time))}}),t.uint32_audio_capture_cost&&(this._captureCostSum+=t.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)),t.uint32_audio_capture_cost===0&&((e=this._room.audioManager.localAudioTrack)==null?void 0:e.muted)===!1&&(this._localStreamStat.statsToReport.uint32_audio_capture_thread_health_zero_cnt+=1)}}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 D?e.getExtraCode()||e.getCode():I.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&Sr)>=0}hasAudioFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Ir)>=0}hasAuxFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Xr)>=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:m,audioDelayCount:p,videoDelayCount:h,totalAudioDelay:E,totalVideoDelay:g}=r;i.statsToReport.uint32_avg_down_loss=Math.floor(u/m),p&&E&&(i.statsToReport.uint32_audio_network_p2p_delay=Math.floor(E/p),i.audioJitterBufferDelay&&(i.statsToReport.uint32_p2p_delay=Math.floor(i.statsToReport.uint32_audio_network_p2p_delay+i.audioJitterBufferDelay))),h&&g&&(i.statsToReport.uint32_video_network_p2p_delay=Math.floor(g/h))}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:o}=this._room;o&&(i.statsToReport.uint32_audio_play_time=o.getDuration(e,_.AUDIO),i.statsToReport.uint32_video_play_time=o.getDuration(e,_.VIDEO)),i.statsToReport.uint32_video_render_first&&(i.statsToReport.uint32_video_render_first=Math.min(i.statsToReport.uint32_video_render_first,Os));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),i.statsToReport.uint32_audio_block_time=Math.min(i.statsToReport.uint32_audio_block_time,i.statsToReport.uint32_audio_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>Os&&(i.statsToReport.uint64_play_first_frame_time=i.statsToReport.uint64_start_enter_time+Os)}),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>Os&&(i.statsToReport.uint64_render_first_frame_time=i.statsToReport.uint64_start_enter_time+Os)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>Os&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+Os)}getReportData(){this._basicInfo.uint32_networkType=Zr();let i={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new Ta({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:qs(this._signalInfo.relayIp),uint32_client_ip:qs(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*gr(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:qs(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend,str_user_sig:this._room.userSig,bytes_report_token:this._signalInfo.reportToken};return dn(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*(){if(i.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),t=Nr.enable?qi(i,2001,e):yield Vl(i),r=t instanceof ArrayBuffer,o=`${ji(e,Er.KEY_POINT)}&gzip=${+r}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(o,t));let a=[this.uploadKVStat(y),this.uploadKVStat(us)];n||a.push(Xi({url:o,body:t,priority:"low"})),yield Promise.all(a)})}setConnectionType(i){this.connectionType=i,this._basicInfo.uint32_connection_type=i}uploadKVStat(t){return f(this,arguments,function*(i,e=this._room.sdkAppId){var l,u;let r=i.getReportData((l=this._room)==null?void 0:l.userSig,(u=this._signalInfo)==null?void 0:u.reportToken);if(r.stats_count.length===0&&r.stats_distribution.length===0)return;r.msg_sdk_basic_info=w(M({},r.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(r);let o=Nr.enable?qi(r,2003,e):yield Vl(r),n=o instanceof ArrayBuffer,a=`${ji(+e,Er.KV_STAT)}&gzip=${+n}`,c=!1;navigator.sendBeacon&&(c=navigator.sendBeacon(a,o)),c||Xi({url:a,body:o})})}};O([kt({settings:{timeout:500,retries:3}})],Jd.prototype,"upload",1);var Os=5e3,PI={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},Ta=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}},$_=Jd;var gm=class{constructor(){d(this,"_startTime");d(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=x())}stop(){this._endTime===0&&(this._endTime=x())}getDuration(){return this._endTime===0?x()-this._startTime:this._endTime-this._startTime}get startTime(){return this._startTime}get endTime(){return this._endTime}},jd=gm;var Em=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(A.REMOTE_TRACK_SUBSCRIBED,this.handleSubscribed).set(A.REMOTE_TRACK_UNSUBSCRIBED,this.handleUnsubscribed).set(A.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`,_.AUDIO),e.hasVideo&&!t.hasVideo&&this.stopDurationItem(`${r}_main`,_.VIDEO),e.hasAuxiliary&&!t.hasAuxiliary&&this.stopDurationItem(`${r}_auxiliary`,_.VIDEO);let o=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(r);o&&(!e.hasAudio&&t.hasAudio&&o.remoteAudioTrack.isSubscribed&&this.addDuractionItem(r,_.AUDIO,"main"),!e.hasVideo&&t.hasVideo&&o.remoteVideoTrack.isSubscribed&&this.addDuractionItem(r,_.VIDEO,"main"),!e.hasAuxiliary&&t.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(r,_.VIDEO,"auxiliary"))}),this._eventMap.forEach((i,e)=>S.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>S.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}`,o=new jd,n=this._durationMap.get(r);n?this.isRecording(n[e])||n[e].push(o):this._durationMap.set(r,{userId:i,type:t,audio:e===_.AUDIO?[o]:[],video:e===_.AUDIO?[]:[o]})}stopDurationItem(i,e){if(this._durationMap.has(i)){let r=this._durationMap.get(i)[e].find(o=>o.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,o)=>r+o.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},G_=Em;var Tm=class{constructor(){d(this,"renderFreezeMap",new Map);d(this,"dataFreezeMap",new Map)}get(i,e){let t=this.renderFreezeMap.get(i),r=this.dataFreezeMap.get(i);return e?e==="data"?r:t:(ye||re)&&t&&r&&t.duration>r.duration?t:r}set(i,e,t){t==="data"?this.dataFreezeMap.set(i,e):this.renderFreezeMap.set(i,e)}clear(){this.renderFreezeMap.clear(),this.dataFreezeMap.clear()}},Sm=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 Tm);d(this,"_eventMap",new Map);d(this,"_videoEncodeFailedCount",0);d(this,"_audioEncodeFailedCount",0);d(this,"_encodeFailedThreshold",3);d(this,"ABNORMAL_TIME_LOWER_LIMIT",3e3);d(this,"ABNORMAL_TIME_UPPER_LIMIT",5e3);d(this,"_videoAbnormalTimestampMap",new Map);d(this,"_remoteVideoAbnormalTimestampMap",new Map);d(this,"_audioAbnormalTimestampMap",new Map);d(this,"eventListenerMap",new Map);this._room=i.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}getDataFreezeMap(){return this._dataFreezeMap}installEvents(){this._eventMap.set(A.LEAVE_SUCCESS,({room:i})=>{this.hitTest(i)&&this.stop()}).set(A.PLAY_TRACK_START,this.onPlayTrackStart).set(A.UNSUBSCRIBE_SUCCESS,({room:i,streamType:e,remotePublishedUser:t})=>{if(!this.hitTest(i))return;let{userId:r}=t,o=`${r}_${e}`;this.stopDataFreeze({key:o,userId:r,type:e})}).set(A.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 o="main",n=`${t.userId}_${o}`;this.stopDataFreeze({key:n,userId:r,type:o})}if(e.hasAuxiliary&&!t.hasAuxiliary){let o="auxiliary",n=`${t.userId}_${o}`;this.stopDataFreeze({key:n,userId:r,type:o})}}).set(A.PLAYER_STATE_CHANGED,({track:i,state:e,reason:t,type:r})=>{if(!(!i.isRemote||!i.room||!this.hitTest(i.room)||r!==_.VIDEO)){if(e==="PLAYING"){let o=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.set(o,!0)}t===_.MUTE?this.onVideoTrackMuted(i):t===_.UNMUTE&&this.onVideoTrackUnmuted(i)}}).set(A.HEARTBEAT_REPORT,this.onHearBeatReport).set(A.REMOTE_VIDEO_PLAY_START,this.onRemoteVideoPlayStart).set(A.REMOTE_VIDEO_PLAY_FINISH,this.onRemoteVideoPlayEnd),this._eventMap.forEach((i,e)=>S.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>S.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}`,o=this._dataFreezeMap.get(r),n=new jd;o?o.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)&&(this.localMediaTrackDetector(e),this.remoteMediaTrackDetector(e))}remoteMediaTrackDetector(i){i.msg_down_stream_info.length>0&&i.msg_down_stream_info.forEach(e=>{var o;if(e.msg_video_status.length===0)return;let t=e.msg_user_info.str_identifier,r=(o=this._room.remotePublishedUserMap.get(t))==null?void 0:o.remoteVideoTrack;e.msg_video_status.forEach(n=>{let a=x();if(n.uint32_video_codec_bitrate!==void 0&&n.uint32_video_codec_bitrate>0&&n.uint32_video_receive_fps===0&&(r!=null&&r.muted))if(!this._remoteVideoAbnormalTimestampMap.has(`${t}-decode`))this._remoteVideoAbnormalTimestampMap.set(`${t}-decode`,a);else{let c=this._remoteVideoAbnormalTimestampMap.get(`${t}-decode`);c&&a-c>this.ABNORMAL_TIME_LOWER_LIMIT&&a-c<this.ABNORMAL_TIME_UPPER_LIMIT&&se.uploadEvent({userId:this._room.userId,log:`stat-${Oe.VIDEO_DECODE_FAILED_DURING_CALL}`})}else{let c=this._remoteVideoAbnormalTimestampMap.get(`${t}-decode`);c&&a-c>=this.ABNORMAL_TIME_UPPER_LIMIT&&(se.uploadEvent({userId:this._room.userId,log:`stat-${Oe.VIDEO_DECODE_RESUME_DURING_CALL}`}),this._remoteVideoAbnormalTimestampMap.delete(`${t}-decode`))}if(n.uint32_video_codec_bitrate!==void 0&&n.uint32_video_codec_bitrate>5e5&&n.uint32_video_dec_fps!==void 0&&n.uint32_video_dec_fps<=5)if(!this._remoteVideoAbnormalTimestampMap.has(`${t}-hardware`))this._remoteVideoAbnormalTimestampMap.set(`${t}-hardware`,a);else{let c=this._remoteVideoAbnormalTimestampMap.get(`${t}-hardware`);if(c&&a-c>this.ABNORMAL_TIME_LOWER_LIMIT/2&&a-c<this.ABNORMAL_TIME_UPPER_LIMIT*2){se.uploadEvent({userId:this._room.userId,log:`stat-${Oe.VIDEO_HARDWARE_DECODE_FAILED}`});let l=this._room.remotePublishedUserMap.get(t);if(l){let u=n.uint32_video_stream_type===2?l.remoteVideoTrack:l.remoteAuxiliaryTrack;u&&(u.log.warn("decode failed during call"),u.emit("decode-failed-during-call"))}}}else{let c=this._remoteVideoAbnormalTimestampMap.get(`${t}-hardware`);c&&a-c>=this.ABNORMAL_TIME_UPPER_LIMIT*2&&(se.uploadEvent({userId:this._room.userId,log:`stat-${Oe.VIDEO_HARDWARE_DECODE_RESUME}`}),this._remoteVideoAbnormalTimestampMap.delete(`${t}-hardware`))}})})}localMediaTrackDetector(i){if(i.msg_up_stream_info.msg_video_status){let e=i.msg_up_stream_info.msg_video_status,t=Array.from(this._room.localTracks).find(o=>o.kind==="video"&&!o.isScreen),r=(t==null?void 0:t.stat.bytesSent)||0;if((t==null?void 0:t.isMediaTrackActive)===!1||r<=0||t!=null&&t.isUseCustomSource)return;e.forEach(o=>{let n=x();if(o.uint32_video_stream_type===2)if(o.uint32_video_capture_fps!==0&&o.uint32_video_codec_bitrate===0&&o.uint32_video_enc_fps===0&&(t!=null&&t.isPublished))if(!this._videoAbnormalTimestampMap.has("local-encode"))this._videoAbnormalTimestampMap.set("local-encode",n);else{let a=this._videoAbnormalTimestampMap.get("local-encode");a&&n-a>this.ABNORMAL_TIME_LOWER_LIMIT&&n-a<this.ABNORMAL_TIME_UPPER_LIMIT&&se.uploadEvent({userId:this._room.userId,log:`stat-${Oe.VIDEO_ENCODE_FAILED_DURING_CALL}`})}else{let a=this._videoAbnormalTimestampMap.get("local-encode");a&&n-a>=this.ABNORMAL_TIME_UPPER_LIMIT&&se.uploadEvent({userId:this._room.userId,log:`stat-${Oe.VIDEO_ENCODE_RESUME_DURING_CALL}`}),this._videoAbnormalTimestampMap.delete("local-encode")}})}if(i.msg_up_stream_info.msg_audio_status){let e=i.msg_up_stream_info.msg_audio_status,t=Array.from(this._room.localTracks).find(n=>n.kind==="audio"),r=(t==null?void 0:t.stat.bytesSent)||0;if((t==null?void 0:t.isMediaTrackActive)===!1||r<=0||t!=null&&t.isUseCustomSource)return;let o=x();if(e.uint32_audio_codec_bitrate===0&&(t!=null&&t.isPublished))if(!this._audioAbnormalTimestampMap.has("local-encode"))this._audioAbnormalTimestampMap.set("local-encode",o);else{let n=this._audioAbnormalTimestampMap.get("local-encode");n&&o-n>this.ABNORMAL_TIME_LOWER_LIMIT&&o-n<this.ABNORMAL_TIME_UPPER_LIMIT&&se.uploadEvent({userId:this._room.userId,log:`stat-${Oe.AUDIO_ENCODE_FAILED_DURING_CALL}`})}else{let n=this._audioAbnormalTimestampMap.get("local-encode");n&&o-n>=this.ABNORMAL_TIME_UPPER_LIMIT&&se.uploadEvent({userId:this._room.userId,log:`stat-${Oe.AUDIO_ENCODE_RESUME_DURING_CALL}`}),this._audioAbnormalTimestampMap.delete("local-encode")}}}stopDataFreeze({key:i,userId:e,type:t}){let r=this._dataFreezeMap.get(i);if(!r||!r.isFreezing())return;let o=r.durationItemList[r.durationItemList.length-1];o.stop();let n=o.getDuration();if(n>xa){let a=this._monitorFreezeData.get(i,"data");this._monitorFreezeData.set(i,{userId:e,type:t,duration:a?a.duration+n:n},"data")}else r.durationItemList.pop()}getTotalDuration(i){return i.reduce((e,t)=>{let r=t.getDuration();return e+Math.min(r,5e3)},0)}onPlayTrackStart({track:i}){if(!i.isRemote||!this.hitTest(i.room)||i.kind!==_.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()<xa&&t.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(t.durationItemList),e.count=t.durationItemList.length}return e}getRenderFreezeDuration(i){let e={renderFreeze:0,count:0},t=this._renderFreezeMap.get(i);return t&&(e.renderFreeze=t.totalDuration,e.count=t.count),e}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(i){return this._isVideoPlayingEventFiredMap.has(i)?!this._isVideoPlayingEventFiredMap.get(i):!1}onRemoteVideoPlayStart({track:i,player:e}){var n;if(!ir())return;let t=0,r=()=>{document.hidden||(t=0)};document.addEventListener("visibilitychange",r);let o=(a,c)=>{var l;if(t){let u=i.decodeFPS,m=u>0&&u<=5?600+1e3/u:600,p=c.presentationTime-t;if(p>m){p=Math.min(p,5e3);let h=`${i.userId}_${i.streamType}`,E=this._monitorFreezeData.get(h,"render");E?E.duration+=p:this._monitorFreezeData.set(h,{userId:i.userId,type:i.streamType,duration:p},"render");let g=this._renderFreezeMap.get(h);g?(g.totalDuration+=p,g.count+=1):this._renderFreezeMap.set(h,{userId:i.userId,type:i.streamType,totalDuration:p,count:1})}}t=c.presentationTime,(l=e.element)==null||l.requestVideoFrameCallback(o)};(n=e.element)==null||n.requestVideoFrameCallback(o),this.eventListenerMap.set(`${i.userId}_${i.streamType}`,{onVisibilityChange:r})}onRemoteVideoPlayEnd({track:i,player:e}){let t=`${i.userId}_${i.streamType}`,r=this.eventListenerMap.get(t);r&&document.removeEventListener("visibilitychange",r.onVisibilityChange)}resetMonitor(){this._monitorFreezeData.clear()}hitTest(i){return i===this._room}destroy(){this.uninstallEvents()}},W_=Sm;var q_=Ge(Ze(),1);var qd=class{constructor(i,e,t,r,o,n=4/3){this.vbMode=i;this.faceDetectorHash=t;this.visionTaskRegistry=r;this.logger=o;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=n||4/3,this.visionTaskRegistry.setVideo(this.faceDetectorHash,e)}addEvent(i,e,t){let o=[{key:570704,error:t!=null?t:e?void 0:11},{key:570705,error:t!=null?t:e?void 0:22}][i-1];o&&(e?y.addSuccessEvent({key:o.key}):y.addFailedEvent({key:o.key,error:o.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 o=this.visionTaskRegistry.getResult(this.faceDetectorHash);if(o.detections.length<=0){this.vbMode===1&&this.recoverOriginal(t,r);return}let n=o.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(o){this.logger.error(o)}this.lastActionTime=e}calculateBoundary(i,e,t,r){let o,n;return i>e/2?(o=e-t-r,n=t-o):(o=t,n=0),{min:o,offset:n}}calculateTargetPosition(i,e,t,r,o,n,a=.4){let c=i+t/2,l=e+r/2,u,m,{min:p,offset:h}=this.calculateBoundary(c,o,i,t),{min:E,offset:g}=this.calculateBoundary(l,n,e,r);return u=2*p+t,m=2*E+r,u/m>this.originalAspect?(u=m*this.originalAspect,h=c-u/2):(m=u/this.originalAspect,g=l-m/2),t/o>a&&(h=0,g=0,u=o,m=n),h=Math.max(0,Math.min(h,o-u)),g=Math.max(0,Math.min(g,n-m)),{sx:h,sy:g,cropWidth:u,cropHeight:m,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),o=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&&o>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=M({},i),this.animationState.target=M({},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 o=(this.animationState.target.sy-this.animationState.current.sy)*t(e);if(this.animationState.current.sy+=o,this.totalOffsetY+=o,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)),te(this.animationState.current.scaleOffsetX)&&te(this.animationState.target.scaleOffsetX)&&te(this.animationState.current.scaleOffsetY)&&te(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(gr(i.sx-e.sx,2)+gr(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,o,n,a=.3){if(this.isRecovering)return;let c=this.calculateTargetPosition(t,r,o,n,i,e);this.processFacePositionCrop(c,i,e),o*n/c.cropWidth/c.cropHeight>a&&this.recoverOriginal(i,e)}movingPortrait(i,e,t,r,o,n){var c,l,u,m,p,h,E,g,R,N,j,V;let a={sx:t+o/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:(m=(u=this.animationState.current)==null?void 0:u.scaleOffsetX)!=null?m:0,scaleOffsetY:(h=(p=this.animationState.current)==null?void 0:p.scaleOffsetY)!=null?h:0,timestamp:Date.now()};this.animationState.target={sx:i/2,sy:r+n/2,cropWidth:i,cropHeight:e,scaleRatio:(g=(E=this.animationState.target)==null?void 0:E.scaleRatio)!=null?g:1,scaleOffsetX:(N=(R=this.animationState.target)==null?void 0:R.scaleOffsetX)!=null?N:0,scaleOffsetY:(V=(j=this.animationState.target)==null?void 0:j.scaleOffsetY)!=null?V:0,timestamp:Date.now()},this.animationState.animating||(this.animationState.target.scaleRatio=Math.sqrt(o*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 kI=`#version 300 es
|
|
106
73
|
in vec2 a_position;
|
|
107
74
|
in vec2 a_texCoord;
|
|
108
75
|
out vec2 v_texCoord;
|
|
109
76
|
void main() {
|
|
110
77
|
gl_Position = vec4(a_position.x, a_position.y, 0, 1);
|
|
111
78
|
v_texCoord = a_texCoord;
|
|
112
|
-
}`,
|
|
79
|
+
}`,LI=`#version 300 es
|
|
113
80
|
precision highp float;
|
|
114
81
|
uniform sampler2D u_texture;
|
|
115
82
|
uniform sampler2D mask;
|
|
@@ -118,7 +85,7 @@ in vec2 v_texCoord;
|
|
|
118
85
|
out vec4 outColor;
|
|
119
86
|
void main() {
|
|
120
87
|
outColor = vec4(texture(u_texture, v_texCoord).rgb, texture(mask, v_texCoord).a);
|
|
121
|
-
}`,
|
|
88
|
+
}`,Xd=class extends zt{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,"predictReady");d(this,"_color");d(this,"_prePrograme");d(this,"_segmentationMask");d(this,"_weixin",!1);d(this,"_centerFace");d(this,"_textureMatrixLocation");d(this,"_offsetMatrixLocation");d(this,"_colorLocation");d(this,"_enableFaceCentering",!1);d(this,"_enableEffectOptimization",!1);d(this,"_mat4");d(this,"_postProcessing");d(this,"_onAbort");d(this,"_visionTaskRegistry");d(this,"resolvePreditReady");this.init(t).catch(r=>{e.log.error(r),e.destroy(new D({code:I.VIDEO_MANAGER_ERROR,extraCode:6,message:`init vb node error ${r.message||r}`})),this.resolvePreditReady()})}init(e){return f(this,null,function*(){var n,a,c;this.predictReady=new Promise(l=>{this.resolvePreditReady=l});let t=e.Wasm,r=this.context.ctx;if(e.color&&(this._color=e.color),e.mat4&&(this._mat4=e.mat4),e.postProcessing&&(this._postProcessing=e.postProcessing),this._enableFaceCentering=(n=e.enableFaceCentering)!=null?n:!1,this._enableEffectOptimization=(a=e.enableEffectOptimization)!=null?a:!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==="color"?3:0,this._onAbort=e.onAbort,e.bg||this.resolvePreditReady(),e.waterMark){let{x:l,y:u,width:m,height:p}=e.waterMark;this.wasm.setWaterMark(l,u,m,p)}if(e.beautyParams){let{beauty:l,brightness:u,ruddy:m}=e.beautyParams;this.wasm.setBeauty(l,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),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 o=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,o),this._offsetMatrixLocation=r.getUniformLocation(this.program,"u_offsetMatrix"),r.uniformMatrix4fv(this._offsetMatrixLocation,!1,o),this._colorLocation=r.getUniformLocation(this.program,"u_color"),r.uniform1i(r.getUniformLocation(this.program,"lastMask"),4),this._weixin){let l=this.context.createShader(r.FRAGMENT_SHADER,LI),u=this.context.createShader(r.VERTEX_SHADER,kI);this._prePrograme=this.context.createProgram(u,l),r.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.uniform1i(r.getUniformLocation(this._prePrograme,"mask"),1)}this._enableEffectOptimization&&(this.wasm.vbMode===2||this.wasm.vbMode===3)?os()?(this._postProcessing=void 0,this.log.warn("Virtual background post-processing isn't allowed on mobile.")):(c=this._postProcessing)==null||c.init(r,this.positionBuffer,this.texCoordBuffer,4/3):this._postProcessing=void 0,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._selfieSegmentationHash=yield this._visionTaskRegistry.register(window.VisionTaskType.ImageSegmenter,{canvas:this.context._canvas}),this._visionTaskRegistry.setVideo(this._selfieSegmentationHash,this.image),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 qd(this.wasm.vbMode,this.image,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)));let r=this.getMaskTexture(e);if(!r)return;let o=r;this._postProcessing&&(this._postProcessing.ratio=this.image.videoWidth/this.image.videoHeight,o=this._postProcessing.postProcessing(r)),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),this.useTexture(),t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,o||null),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.wasm.vbMode===3&&t.uniform3fv(this._colorLocation,this._color),this.useBufferFrame(),this._segmentationMask=e,this.totalFrames++,this.centerFace(),Nt(this.wasm.rotation)&&this.resize(this.image.height,this.image.width),t.viewport(0,0,t.canvas.width,t.canvas.height),t.drawArrays(t.TRIANGLE_STRIP,0,4),e.close()}getMaskTexture(e){return e.confidenceMasks?e.confidenceMasks[0].getAsWebGLTexture():void 0}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:o,videoHeight:n}=r;if(Nt(this.wasm.rotation)&&!this._visionTaskRegistry&&([o,n]=[n,o]),o===0||n===0||!this.available)return!1;r.width=o,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}if(this.width!==o||this.height!==n||!a?(this.resize(o,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){if(t.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask){let c=this.getMaskTexture(this._segmentationMask);t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,c||null),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,o,n):t.copyTexImage2D(t.TEXTURE_2D,0,t.RGBA,0,0,o,n,0)}try{if(this._selfieSegmentationHash&&this._visionTaskRegistry){let c=this._visionTaskRegistry.getResult(this._selfieSegmentationHash);this.totalFrames===1&&this.context._canvas&&this.resolvePreditReady(),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 o=this._mat4.create(),{scaleRatio:n=1,scaleOffsetX:a=0,scaleOffsetY:c=0}=t;this._mat4.fromTranslation(o,[-r.offsetX/e.canvas.width+a,c,0]),this._mat4.scale(o,o,[n,n,1]),e.uniformMatrix4fv(this._offsetMatrixLocation,!1,o)}}drawImage(e,t,r,o){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+o)/c,0]),this._mat4.scale(l,l,[r/a,o/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),this._postProcessing&&this._postProcessing.close(),(t=this.wasm)==null||t.close()}};var zd=class extends we{constructor(e){super(e,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:e.log,fragmentShaderSource:`
|
|
122
89
|
precision highp float;
|
|
123
90
|
uniform sampler2D ySampler;
|
|
124
91
|
uniform sampler2D uSampler;
|
|
@@ -143,4 +110,9 @@ void main() {
|
|
|
143
110
|
void main() {
|
|
144
111
|
gl_Position = vertexPos;
|
|
145
112
|
textureCoord = texturePos;
|
|
146
|
-
}`});m(this,"yTextureRef");m(this,"uTextureRef");m(this,"vTextureRef");m(this,"Y");m(this,"U");m(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 tI=(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 vv(i){return i[0]===0&&i[1]===0&&i[2]===0&&i[3]===1}var Cv=0,Xl=class{constructor(t){m(this,"id",Cv++);m(this,"trackDoneOB");m(this,"startOB");m(this,"stopOB");m(this,"decoder");m(this,"videoContext");m(this,"gop",0);m(this,"gop_helper",0);m(this,"waitFirstKeyFrame",!0);m(this,"startTimestamp",0);m(this,"startTime",0);m(this,"startPerformanceTime",0);m(this,"inputFrameCount",0);m(this,"decodedFrameCount",0);m(this,"decodeFrameCount",0);m(this,"downgradeLevel",0);m(this,"lastDowngradeTime",0);m(this,"lastFrameDiff",0);m(this,"lastDecodeFrameTimestamp",0);m(this,"config");m(this,"gop_before_configure",[]);m(this,"videoElement");m(this,"type","wasm");m(this,"goodType");m(this,"renderer","2d");m(this,"wasmOption");m(this,"createDecoder");m(this,"_decodeSink");m(this,"isReported",!1);m(this,"track");m(this,"stateChangeOB");m(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=ye(e.availableState,he.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),be(this.stateChangeOB,xp((o,s)=>(o!==s&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:o,state:s}),s),"INITIALIZED"),Je(this.stopOB),Le()),this.start()}start(t=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=be(this.pipe(this.track),Je(this.stopOB),zi());be(e,Le(()=>{this.track.stat.framesDecoded++},r=>{if(this.track.log.error(`${this.id} play failed: ${r} retryCount: ${t}`),J.addFailedEvent({key:tI(this.type,this.renderer),error:r}),t>4)this.failedReason=r,this.stateChangeOB.next("FAILED"),J.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`),J.addSuccessEvent({key:tI(this.type,this.renderer)}),J.addSuccessEvent({key:514704})})),be(e,Kr(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"&&!Nh()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(t,e=!1){var a,d;if(this.failedReason)return;this.inputFrameCount++;let r=new Uint8Array(t.data);if(!vv(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(l=>this.decode(l,!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=pe();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} ${(d=t.getMetadata)==null?void 0:d.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=>b(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":r=this.createDecoder(n);break;default:throw new Error("not supported yet")}let a=0;if(r.on("videoFrame",d=>{this.decodedFrameCount++,a++,(a<=10||a%500===0)&&t.log.debug(`frame ${a} ${this.decodedFrameCount}/${this.decodeFrameCount} decoded ${d.timestamp}`),Date.now()-this.lastDowngradeTime>5e3&&(this.type==="webCodecs"?this.checkDowngradeByFrameDiff():this.type==="wasm"&&this.checkDowngradeByTimestampDiff(d.timestamp)),e.next(d)}),r.on("error",d=>{t.log.error(d),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 Ct({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create(),this.videoContext.on(Ct.UNAVAILABLE,l=>{t.log.error(l),e.error(7)});let d=new Jl(this.videoContext);r.on("videoCodecInfo",l=>d.resize(l.width,l.height)),r.on("videoFrame",l=>{({y:d.Y,u:d.U,v:d.V}=l),this.downgradeLevel===1?this.decodedFrameCount%2===0&&d.render(this.decodedFrameCount):d.render(this.decodedFrameCount)}),t.source=d,t.player.setCanvas(this.videoContext._canvas,2)}else if(s==="videoFrame"){t.player.setCanvas();let d=new MediaStreamTrackGenerator({kind:"video"}),l=d.writable.getWriter();t.setInputMediaStreamTrack(d),r.on("videoFrame",p=>l.write(p))}else{this.videoContext=new xt({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create({alpha:!1});let d=this.videoContext.createVideoImageSource();r.on("videoFrame",p=>{try{d.image=p,d.update()}catch(f){delete this.goodType,t.log.error(f),e.error(11)}});let l=new Os(this.videoContext,{name:"remotePlayer",logger:t.log});d.connect(l),t.source=d,t.player.setCanvas(this.videoContext._canvas,2)}this.decoder=r}catch(a){t.log.error(a),e.error(n==="webCodecs"?2:6)}}))}};var rI=Promise.resolve(),zc=class extends iI.EventEmitter{constructor(e){super();this.room=e;m(this,"videoContext");m(this,"_glVideoContext");m(this,"_2dVideoContext");m(this,"destination");m(this,"smallVideoContext");m(this,"smallDestination");m(this,"smallTrackSource");m(this,"smallImageSource");m(this,"_isMirror",!1);m(this,"_rotation",0);m(this,"cameraTrack");m(this,"cameraNode");m(this,"transformNode");m(this,"mixNode");m(this,"screenTrack");m(this,"screenNode");m(this,"selfModel",!1);m(this,"blurRadius",3);m(this,"arTrack");m(this,"_enableFaceCentering",!1);m(this,"_enableEffectOptimization",!1);m(this,"onAbort");m(this,"_color");m(this,"Wasm");m(this,"waterMarkNode");m(this,"_waterMarkOption");m(this,"watermarkImageList",[]);m(this,"_beautyParams");m(this,"isUsingArTrack",!1);m(this,"mixTrack");m(this,"_isMixScreen",!1);m(this,"_virtualBackground");m(this,"_virtualBackgroundAbortCallback");m(this,"virtualBackgroundInstance");m(this,"_bgAssetPath");m(this,"log");m(this,"_mat4");m(this,"_postProcessing");m(this,"_checkId",0);m(this,"_use2d",!1);m(this,"_autoSwitchRenderMode",!0);m(this,"encodePipeline",[]);m(this,"decodePipeline",[]);m(this,"updated",rI);m(this,"_updateFlag",!1);this.log=B.createLogger({parent:e==null?void 0:e.getLogger(),id:"vm",userId:e==null?void 0:e.userId,sdkAppId:e==null?void 0:e.sdkAppId}),this.smallVideoContext=new xt({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 gr(this._rotation)?{width:r,height:e}:{width:e,height:r}}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new xt({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new Ct({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(Qm<=22),this._glVideoContext.on(Ct.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,o){this.onAbort=e,this._mat4=r,this._postProcessing=o}enablePrintDetail(e=2e3){this._checkId=mt.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(),mt.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(vr||this._isMixScreen||this._isTransform||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",r){let o=e==="videoCtxGl"?512700:512701;r?J.addFailedEvent({key:o,error:r}):J.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 Ct({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 dl(this.smallVideoContext,e,this.log),this.smallVideoContext.on(Ct.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;vr&&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 b(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}),this.destination.on(_t.RENDER,n=>{var a;(a=this.cameraTrack)==null||a.emit("render",n)})),Pt===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof Dr?(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 Dr?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 cl(this.videoContext,{name:"mainDestination",logger:this.log}),this.destination.on(_t.RENDER,l=>{var p;(p=this.cameraTrack)==null||p.emit("render",l)}));let{width:n,height:a}=this.cameraResolution,d=yield this.getWatermarkImage(n,a);this._waterMarkOption={x:0,y:0,width:d.width,height:d.height,image:d},this.cameraNode=new zl(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,enableEffectOptimization:this._enableEffectOptimization,onAbort:this.onAbort,mat4:this._mat4,postProcessing:this._postProcessing,color:this._color}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute(),yield this.cameraNode.predictReady}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 wr(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 Hn(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:d,height:l}=this.cameraResolution;this.waterMarkNode.image=yield this.getWatermarkImage(d,l),d&&l&&this.waterMarkNode.resize(d,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 r,o,s,n,a;if(e instanceof Ei)return this.log.info("change screen input",(r=e.mediaTrack)==null?void 0:r.label),this.setScreenTrack(e);if(e instanceof Ir)return this.log.info("change video input",(o=e.mediaTrack)==null?void 0:o.label),this.setCameraTrack(e);if(e instanceof Lo){this.log.info("change remote input",(s=e.mediaTrack)==null?void 0:s.label);let d=e.mediaTrack;return e.setOutputMediaStreamTrack(d)}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 Ei?((r=this.screenNode)==null||r.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof Ir?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 Lo?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 b(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 b(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 ce({code:z.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:d,width:l,height:p,fillVideo:f})=>{let _=f&&e||l,I=f&&r||p,R=f?0:a,y=f?0:d;s.drawImage(n,R,y,_,I)}),hn(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&&s.fillVideo===e.fillVideo)||((r==="mute"||r==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(s=>s.type!==r)),this.watermarkImageList.push(e))}setBeautyParams(e){return b(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return b(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return b(this,null,function*(){let r;try{r=yield hn((e==null?void 0:e.imageElement)||e.imageUrl)}catch(_){throw new ce({code:z.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:d="watermark",zIndex:l=2,fillVideo:p=!1}=e;this.watermarkImageList.some(_=>_.type===d)?(this.watermarkImageList=this.watermarkImageList.filter(_=>_.type!==d),this.pushWaterMarkImageList({x:o,y:s,width:n,height:a,image:r,zIndex:l,type:d,imageUrl:e.imageUrl,fillVideo:p}),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:l,type:d,imageUrl:e.imageUrl,fillVideo:p}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(_,I)=>_==="imageUrl"?void 0:I))})}deleteWatermark(e="watermark"){return b(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 b(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 b(this,null,function*(){var r,o,s;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 hn(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type),this._enableFaceCentering=(r=e.enableFaceCentering)!=null?r:this._enableFaceCentering,this._enableEffectOptimization=(o=e.enableEffectOptimization)!=null?o:this._enableEffectOptimization,this._color=(s=e.color)!=null?s:[0,1,0]}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 ce({code:z.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 b(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 Xl(e)}clear(){var e,r;(e=this.videoContext)==null||e.disconnect(),(r=this.destination)==null||r.removeAllListeners(),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([r_(function(e){this.log.error("update failed",e)}),Pe(e=>function(...r){return b(this,null,function*(){this._updateFlag||(this._updateFlag=!0,yield rI,this.updated=new Promise((o,s)=>{e.apply(this,r).then(o,s),setTimeout(s,5e3,new ce({code:z.API_CALL_TIMEOUT,message:"update timeout"}))}),this._updateFlag=!1,yield this.updated)})})],zc.prototype,"update",1);var Nv=0;var Ql=class extends he{constructor(e){super("room");m(this,"seq",++Nv);m(this,"sdkAppId");m(this,"userId");m(this,"userSig");m(this,"privateMapKey");m(this,"latencyLevel");m(this,"tinyId");m(this,"scene");m(this,"roomId");m(this,"useStringRoomId");m(this,"role","anchor");m(this,"joinParams",null);m(this,"localPublishFlag",0);m(this,"localTracks",new Set);m(this,"enableAutoPlayDialog",!0);m(this,"autoReceiveAudio",!0);m(this,"autoReceiveVideo",!0);m(this,"proxy_ws");m(this,"proxy_wt");m(this,"proxy_unified");m(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}});m(this,"keyPointManager");m(this,"audioManager");m(this,"videoManager");m(this,"callDurationCalculator");m(this,"badCaseDetector");m(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});m(this,"videoDecodeFallbackType");m(this,"smallMode","canvas");m(this,"enableChorus",!1);m(this,"_isUsingCachedSchedule",!1);m(this,"_log");m(this,"_joinedTimestamp",0);m(this,"_sdkType");m(this,"heartbeatReport");m(this,"heartbeatCount",0);m(this,"quality");m(this,"enableSEI");m(this,"isDestroyed",!1);this._log=B.createLogger({parent:e.logger,id:`r${this.seq}`}),this.useStringRoomId=!!e.useStringRoomId,Ze(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),Ze(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),Ze(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new ZT({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new KT({room:this}),this.badCaseDetector=new eI({room:this}),this.audioManager=new ml(this),this.videoManager=new zc(this)}get videoCodec(){return"h264"}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 localMainAudioTrack(){for(let e of this.localTracks)if(e.mediaType&1)return e;return null}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}get publishState(){let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};return this.localTracks.forEach(r=>{if(r.isPublished||r.isPublishing)switch(r.mediaType){case 1:e.audio=!0;break;case 4:e.bigVideo=!0,e.smallVideo=r.hasSmall;break;case 2:e.auxVideo=!0;default:break}}),e}get muteState(){var e,r,o;return{audio:!!((e=this.localMainAudioTrack)!=null&&e.muted),bigVideo:!!((r=this.localMainVideoTrack)!=null&&r.muted),auxVideo:!!((o=this.localAuxVideoTrack)!=null&&o.muted)}}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 b(this,null,function*(){return this.publish(e)})}removeTrack(e){return b(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return b(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(Oe(e))/^wss?:\/\//i.test(e)?this.proxy_ws=e:/^https?:\/\//i.test(e)&&(this.proxy_wt=e);else if(Jt(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?(Cl([a,a]),is(`https://${a}`)):(s&&is(s),n&&Cl(n))}x.once(V.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:ei.main,sched_back_domain:ei.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return b(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(r=>{e[r.userId]=r.remoteAudioTrack.stat}),e})}getTransportStats(){return b(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 b(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 ce({code:z.INVALID_OPERATION,message:je({key:Ge.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(sr.INVALID_DESTROY),new ce({code:z.INVALID_OPERATION,message:je({key:Ge.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,x.emit(V.ROOM_DESTROY,{room:this})}schedule(e,r){return b(this,null,function*(){var s,n,a,d;let o=pe();try{let{isCached:l,result:p,detailCost:f}=yield Ef({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:ft,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:r,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=l,this._log.info(`schedule cache:${+l} ${br(p,{keysToExclude:["username","credential"]})}`),l&&x.once(V.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=Q(Q({},this.scheduleResult),p),Be((s=p.config)==null?void 0:s.retryCount)&&Rm(p.config.retryCount),Oe((n=p.config)==null?void 0:n.loggerDomain)&&is(p.config.loggerDomain),this.videoDecodeFallbackType=((a=p.config)==null?void 0:a.videoDecodeFallback)||this.videoDecodeFallbackType,this.smallMode=((d=p.config)==null?void 0:d.smallMode)||this.smallMode,x.emit(V.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:f}),J.addSuccessEvent({key:521700,cost:pe()-o})}catch(l){throw J.addFailedEvent({key:521700,error:l}),l}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}switchRoom(e){return Promise.reject()}isSwitchRoomSupported(){return!1}};function oI(i,t=!1){let e=Object.defineProperties(bt(),{postMessage:{value:i.postMessage.bind(i)},port:{get(){return i},set(o){i.onmessage=qe,i.onmessageerror=qe,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 Bf=class extends Ie{constructor(t,e){super(t);let r=new Ie(t);r.next=qe,e(r)}},r8=Se(Bf,"takeUntilComplete");var Ht={useWt:!0,useAINS:!0,useHardDecoder:"prefer-software",useHardEncoder:"prefer-software",unreliable:!1,debug:!1,assetsPath:"",enableUpload:!0},sI="__INLINE__WORKER__",nI="__INLINE__WASM__",{debug:aI}=console;Ht.debug||(console.debug=()=>{});var Dv=!sI.startsWith("__"),wv=!nI.startsWith("__");function Yl(){let i=us(`${Ht.assetsPath?`${Ht.assetsPath}/`:""}worker.js`);return Dv?URL.createObjectURL(new Blob([atob(sI)],{type:"application/javascript"})):i.startsWith("http")?fetch(i).then(t=>t.blob().then(e=>URL.createObjectURL(e))):i}var Jc;function Zl(){return b(this,null,function*(){let i=Ht.assetsPath?`${Ht.assetsPath}/`:"";return Jc||(wv?Jc=new TextEncoder().encode(atob(nI)).buffer:Jc=yield fetch(us(`${i}av_processing.wasm`)).then(t=>t.arrayBuffer()),Jc)})}var $f=class{constructor(){m(this,"playPort");m(this,"playPortSent",!1);m(this,"worklet");m(this,"workletPromise")}init(){return this.workletPromise||(this.workletPromise=this._init()),this.workletPromise}_init(){return b(this,null,function*(){let t=ze("player"),e=Yl();try{yield t.audioWorklet.addModule(typeof e=="string"?e:yield e),B.info("global audio player worklet addModule success",e)}catch(r){throw B.error("global audio player worklet addModule failed:",r),r}return this.worklet=new AudioWorkletNode(t,"global-audio-player",{processorOptions:{wasm:yield Zl(),flag:Ht},numberOfInputs:2}),B.info("global audio player worklet created",t.state),this.playPort=this.worklet.port,this.playPort})}playAudio(t){return b(this,null,function*(){var r;yield this.init();let e=new MessageChannel;(r=this.playPort)==null||r.postMessage(null,[e.port1]),t(e.port2)})}},Xc=new $f;var Hf=(()=>{if(typeof self=="undefined")return!1;if(!("top"in self&&self!==top)){if("showOpenFilePicker"in self)return"showOpenFilePicker"}return!1})(),u8=Hf?Promise.resolve().then(function(){return Lv}):Promise.resolve().then(function(){return Bv});var l8=Hf?Promise.resolve().then(function(){return kv}):Promise.resolve().then(function(){return Hv});var Mv=Hf?Promise.resolve().then(function(){return Vv}):Promise.resolve().then(function(){return Gv});function Wf(...i){return b(this,null,function*(){return(yield Mv).default(...i)})}var Ov=i=>b(null,null,function*(){let t=yield i.getFile();return t.handle=i,t}),Pv=(...t)=>b(null,[...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(Ov));return i[0].multiple?o:o[0]}),Lv={__proto__:null,default:Pv};function Kl(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 Kl=function(e){this.s=e,this.n=e.next},Kl.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 Kl(i)}var cI=(o,s,...n)=>b(null,[o,s,...n],function*(i,t,e=i.name,r){let a=[],d=[];var l,p=!1,f=!1;try{for(var _,I=(function(R){var y,N,P,W=2;for(typeof Symbol!="undefined"&&(N=Symbol.asyncIterator,P=Symbol.iterator);W--;){if(N&&(y=R[N])!=null)return y.call(R);if(P&&(y=R[P])!=null)return new Kl(y.call(R));N="@@asyncIterator",P="@@iterator"}throw new TypeError("Object is not async iterable")})(i.values());p=!(_=yield I.next()).done;p=!1){let R=_.value,y=`${e}/${R.name}`;R.kind==="file"?d.push(R.getFile().then(N=>(N.directoryHandle=i,N.handle=R,Object.defineProperty(N,"webkitRelativePath",{configurable:!0,enumerable:!0,get:()=>y})))):R.kind!=="directory"||!t||r&&r(R)||a.push(cI(R,t,y,r))}}catch(R){f=!0,l=R}finally{try{p&&I.return!=null&&(yield I.return())}finally{if(f)throw l}}return[...(yield Promise.all(a)).flat(),...yield Promise.all(d)]}),xv=(...t)=>b(null,[...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 cI(e,i.recursive,void 0,i.skipDirectory)}),kv={__proto__:null,default:xv},Uv=(s,...n)=>b(null,[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=[],d=null;if(i instanceof Blob&&i.type?d=i.type:i.headers&&i.headers.get("content-type")&&(d=i.headers.get("content-type")),t.forEach((f,_)=>{a[_]={description:f.description||"Files",accept:{}},f.mimeTypes?(_===0&&d&&f.mimeTypes.push(d),f.mimeTypes.map(I=>{a[_].accept[I]=f.extensions||[]})):d?a[_].accept[d]=f.extensions||[]:a[_].accept["*/*"]=f.extensions||[]}),e)try{yield e.getFile()}catch(f){if(e=null,r)throw f}let l=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(l);let p=yield l.createWritable();return"stream"in i?(yield i.stream().pipeTo(p),l):"body"in i?(yield i.body.pipeTo(p),l):(yield p.write(yield i),yield p.close(),l)}),Vv={__proto__:null,default:Uv},Fv=(...t)=>b(null,[...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(l=>l.mimeTypes||[]),...i.map(l=>l.extensions||[])].join();o.multiple=i[0].multiple||!1,o.accept=s||"",o.style.display="none",document.body.append(o);let n=l=>{typeof a=="function"&&a(),e(l)},a=i[0].legacySetup&&i[0].legacySetup(n,()=>a(r),o),d=()=>{window.removeEventListener("focus",d),o.remove()};o.addEventListener("click",()=>{window.addEventListener("focus",d)}),o.addEventListener("change",()=>{window.removeEventListener("focus",d),o.remove(),n(o.multiple?Array.from(o.files):o.files[0])}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),Bv={__proto__:null,default:Fv},$v=(...t)=>b(null,[...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(d=>d.webkitRelativePath.split("/").every(l=>!i[0].skipDirectory({name:l,kind:"directory"})))):a=a.filter(d=>d.webkitRelativePath.split("/").length===2),s(a)}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),Hv={__proto__:null,default:$v},Wv=(e,...r)=>b(null,[e,...r],function*(i,t={}){Array.isArray(t)&&(t=t[0]);let o=document.createElement("a"),s=i;"body"in i&&(s=yield(function(d,l){return b(this,null,function*(){let p=d.getReader(),f=new ReadableStream({start:R=>(function y(){return b(this,null,function*(){return p.read().then(({done:N,value:P})=>{if(!N)return R.enqueue(P),y();R.close()})})})()}),_=new Response(f),I=yield _.blob();return p.releaseLock(),new Blob([I],{type:l})})})(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}),Gv={__proto__:null,default:Wv};var Gf=class{constructor(t){this.name=t;m(this,"ready");m(this,"worker");m(this,"ports");m(this,"ids",1);m(this,"transactions",new Map);m(this,"log");m(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 b(this,null,function*(){if(this.ready)return this.ready;t||(t=this.name),console.time(`createWorker_${t}`);let e=Yl(),r=new Worker(typeof e=="string"?e:yield e,{name:t});return this.worker=r,this.ready=new Promise((o,s)=>b(this,null,function*(){r.onmessage=({data:{id:n,type:a,payload:d}})=>{var l;if(n)(l=this.transactions.get(n))==null||l(d),this.transactions.delete(n);else switch(a){case"error":console.timeEnd(`createWorker_${t}`),console.warn("worker error:",d),s(d);break;case"ready":console.timeEnd(`createWorker_${t}`),o(this);break;case"updateAFSM":if(d.value){let p=typeof d.old=="string"?d.old:`${d.old.action}ing`,f=typeof d.value=="string"?d.value:`${d.value.action}ing`;console.log(xd(),d.group,d.name,p,"\u{1F449}",f)}break;case"log":console.log(d);break;case"glog":window.dispatchEvent(new CustomEvent(a,{detail:d}));break}},r.postMessage({wasm:yield Zl(),flag:Ht},this.ports)}))})}destroy(){var t;console.log("destroy worker",this.name),delete this.ready,(t=this.worker)==null||t.terminate()}},jf=class{constructor(t,e,r){this.worker=t;m(this,"channel",new MessageChannel);m(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()}},qf=class i extends Gf{constructor(){super("main");m(this,"switchValue",new Map);m(this,"extendChannel");m(this,"sessionCount",0)}setSwitchValue(e,r){var o;this.switchValue.set(e,r),(o=this.extendChannel)==null||o.port1.postMessage([e,r])}create(){return b(this,null,function*(){return this.ready?this.ready:(this.extendChannel=new MessageChannel,this.ports=[this.extendChannel.port2],yield Dt(i.prototype,this,"create").call(this),this.switchValue.forEach((e,r)=>{this.extendChannel.port1.postMessage([r,e])}),this)})}},Ho=new qf,Hs,uI=-1;function dI(i){return console.log(i),Hs.push(i.slice()),Hs.length>1e3&&Hs.shift(),i}function lI(i){return b(this,null,function*(){switch(uI){case 0:this.edpl.willDecodeAudio=dI;break;case 2:this.edpl.didEncodeAudio=dI;break}yield Ho.create(),x.emit(V.JOIN_SEND_CMD,{room:this});let t=new jf(Ho,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(x.emit(V.JOIN_RECEIVED_CMD_RES,{room:this,code:e}),e===0)return Object.assign(this,r,{session:t});throw new ce({code:z.JOIN_ROOM_FAILED,extraCode:Number(e),message:je({key:Ge.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:e,errorMsg:""}})})}else throw e})}Object.defineProperties(window,{useAINS:{set:zf,configurable:!0},useWt:{set:jv,configurable:!0},enableDebug:{set(i){console.debug=i?aI:()=>{},Ho.setSwitchValue("enableDebug",i)},configurable:!0},useV2:{set:Jf,configurable:!0},dump:{value(i=0){if(uI=i,Hs||(console.warn("dump audio will be activated at next time join room"),Hs=[]),!Hs.length){console.warn("no audio data to dump,try it later");return}let t=[];return Hs.forEach(e=>{t.push(new Uint16Array([e.length])),t.push(e)}),Wf(new Blob(t),{fileName:"audio dump hex",extensions:[".hex"]})},writable:!0,configurable:!0},dumpAudio:{value(i="audio",t=2e3){let e=[],r=new Promise(o=>{let s=new MessageChannel;Ho.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,Ho.extendChannel.port1.postMessage(["dump",i]),s.port2.close(),o(new Blob(e)))}});return Wf(r,{fileName:i,extensions:[".pcm"]})},writable:!0,configurable:!0},hardDec:{set(i){switch(i){case!0:Ht.useHardDecoder="prefer-hardware";break;case!1:Ht.useHardDecoder="prefer-software";break;default:Ht.useHardDecoder="no-preference"}},configurable:!0}});function zf(i){return b(this,null,function*(){Ho.setSwitchValue("useAINS",i)})}function Jf(i){return b(this,null,function*(){Ho.setSwitchValue("useV2",i)})}function jv(i){return b(this,null,function*(){Ho.setSwitchValue("useWt",i)})}function mI(i){let t=new MediaStreamTrackGenerator({kind:"audio"});i.setInputMediaStreamTrack(t),this.postMessage({cmd:"pullAudio",payload:{tinyId:i.tinyId,writable:t.writable}},[t.writable])}function hI(i){return b(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),be(oI(r.port2),Je(ye(i,he.INIT)),Le(s=>{let{data:n,packetsReceived:a}=s;i.stat.packetsReceived=a,i.stat.framesReceived++,e++;let d=n[4]&31;if(e<=10){let p=Array.from(n.slice(0,10)).map(f=>f.toString(16).padStart(2,"0")).join(" ");this._log.info(`Frame ${e} - Size: ${n.length} bytes, Type: ${d}, Timestamp: ${Date.now()-t}ms First 10 bytes: ${p}`)}let l;switch(d){case 5:case 7:l="key";break;default:l="delta";break}i.isAvailable?i.decodeFrame({data:n.buffer,type:l,timestamp:(Date.now()-t)*1e3}):console.warn("track is not available")},()=>{},()=>{r.port2.postMessage(null),r.port2.close()}))})}var em=[];function fI(i){var d;let t=bt();if(this.state!=="joined")throw new Error("Room is not joined");if(i.state==="publish")return;for(let l=0;l<=em.length;l++)if(!em[l]){em[l]=this,this.index=l;break}let e=i.profile;this._log.info("start push audio",this.index,e);let r=new MessageChannel,o=i.enableEncryptFrame?new MessageChannel:null;(d=this.session)==null||d.postMessage({cmd:"pushAudio",payload:Q({index:this.index},e)},o?[r.port2,o.port2]:[r.port2]),r.port1.onmessage=l=>{l.data==null||(typeof l.data=="number"?t.next(l.data):o&&o.port1.postMessage(Te(Q({},l.data),{data:new Uint8Array(i.encodeFrame({data:l.data.data.buffer,timestamp:l.data.timestamp}).data)})))};let s=new MediaStream,n,a=l=>{let p=s.getAudioTracks()[0];p&&(n.disconnect(),s.removeTrack(p)),s.addTrack(l),this._log.info("push audio track:",l.readyState,l.getSettings().deviceId),n=ze("player").createMediaStreamSource(s),n.connect(Xc.worklet,0,this.index)};be(ye(i,"output-media-track-changed"),Je(ye(i,"ready")),Le(a,console.error,()=>{this._log.info("stop push audio",e),i.volume=0,n.disconnect(),em[this.index]=null,o&&o.port1.postMessage(null),r.port1.postMessage(null)})),be(t,ws(l=>i.volume=l),Ji(al(1e3)),Le(()=>{i.volume=0})),a(i.outMediaTrack)}var j8=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium"});var Xf=class{constructor(t,e,r,o){this.localTrack=t;this.type=e;this.config=r;this.port=o;m(this,"track");m(this,"label");m(this,"insertKeyFrame",!0);m(this,"session");m(this,"tsMap",new Map);m(this,"startTime",0);m(this,"startTimestamp",0);t._log.info("create Video Encoder",r)}trans(t,e,r){return b(this,null,function*(){let o=yield this.recreate(r,{recreateCount:0,frameEncoded:0,selectConfigIndex:0});e.signal.addEventListener("abort",()=>{o.encoder.close()});let s=0;return t.pipeThrough(new TransformStream({transform:(n,a)=>{o.encoder.state==="configured"&&(this.tsMap.set(s,Date.now()),this.encode(n),s++,a.enqueue(n))}}),e)})}encode(t){var e,r;(r=(e=this.session)==null?void 0:e.encoder)==null||r.encode(t,{keyFrame:this.insertKeyFrame}),this.insertKeyFrame=!1}start(t,e,r){return b(this,null,function*(){let o=yield this.recreate(r,{recreateCount:0,frameEncoded:0,selectConfigIndex:0});this.session=o;let s=0;t.pipeTo(new WritableStream({write:n=>{let a=Date.now();o.encoder.state==="configured"&&(s<10&&this.localTrack.log.info(`capture ${this.label} track frame:`,s,Date.now(),n.timestamp,n.displayWidth,n.displayHeight),(n.displayWidth!==this.config.width||n.displayHeight!==this.config.height)&&(this.localTrack.log.info("resize video track frame:",n.displayWidth,n.displayHeight,this.config.width,this.config.height),this.configure({width:n.displayWidth,height:n.displayHeight},o)),Ut===126?this.tsMap.set(s,pe()):s===0&&(this.startTime=a,this.startTimestamp=n.timestamp),this.encode(n),s<10&&this.localTrack.log.info(`encode ${this.label} track frame:`,s),s++,n.close())}}),e).catch(n=>{this.localTrack.log.warn(n),o.encoder.close()})})}recreate(t,e){return b(this,null,function*(){let r=0,o=new VideoEncoder({output:s=>{let n=Ut===126?this.tsMap.get(r):(this.startTime+(s.timestamp-this.startTimestamp)/1e3&4294967295)>>>0;if(Ut===126&&this.tsMap.delete(r),r<10&&(r===0&&e.recreateCount===0&&x.emit(V.SEND_FIRST_VIDEO_FRAME,{room:t}),this.localTrack.log.info(`encoded ${this.label} track frame:`,r,Date.now(),s.timestamp)),r++,e.frameEncoded=r,this.track.enabled===!1)return;let a=null;if(this.localTrack.enableEncodeFrame){a=new Uint8Array(s.byteLength),s.copyTo(a);let d=this.localTrack.encodeFrame({data:a.buffer},this.type===3);a=new Uint8Array(d.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),e.recreateCount++,setTimeout(()=>this.recreate(t,e),100)}});return e.encoder=o,yield this.configure(null,e),e})}configure(t,e){return b(this,null,function*(){var r;t&&Object.assign(this.config,t),(r=e.encoder)==null||r.configure(this.config)})}close(){this.port.postMessage(null),this.port.close()}};function tm(i,t){return b(this,null,function*(){let e=i.mediaType===2,r=e?"screen":"video",o={codec:"avc1.420028",latencyMode:"realtime",avc:{format:"annexb"},hardwareAcceleration:Ht.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 Xf(i,t.type,o,s.port2);return s.port2.onmessage=a=>{if(a.data===260)n.insertKeyFrame=!0;else if(!e){let{bitrate:d}=a.data;Na({configureBr:[a.data.bitrate,d]}),n.session&&n.configure({bitrate:d},n.session)}},this._log.info("start push",r,t),n})}function gI(i){return b(this,null,function*(){var p;let t=i.mediaType===2,e=t?"screen":"video",r={type:t?7:2,profile:i.profile,trackType:t?"screen":"camera",crypto:!!((p=i.manager)!=null&&p.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 tm.call(this,i,r);this._log.info("VideoEncoder created",r);let d,l=f=>b(this,null,function*(){if(d==null||d.abort("track changed"),!f)return;d=new AbortController;let{width:_,height:I,displaySurface:R}=f.getSettings();_&&(a.config.width=_),I&&(a.config.height=I);let y=or.match(/Chrome\/(\d+)/);(y==null?void 0:y[1])==="114"&&R==="browser"&&delete a.config.hardwareAcceleration,this._log.info("push",e,"track:",f.readyState,f.getSettings());let N;if(typeof MediaStreamTrackProcessor!="undefined"&&!(f instanceof CanvasCaptureMediaStreamTrack))N=new MediaStreamTrackProcessor({track:f}).readable;else{let W;N=new ReadableStream({start(G){i.on("render",ae=>{if(!(i.player.mode===0&&!document.hidden))try{G.enqueue(new VideoFrame(ae,{timestamp:performance.now()*1e3}))}catch(ke){console.warn(ke)}})},pull(G){return b(this,null,function*(){if(i.player.mode===0&&Qr()&&i.player.element)return new Promise(ae=>{i.player.element.requestVideoFrameCallback((ke,Me)=>{try{let Y=new VideoFrame(i.player.element);G.enqueue(Y)}catch(Y){console.warn(Y)}ae()})})})}})}let P="small"in i&&i.small;return P?(this.smallEncoder||(this.smallEncoder=yield tm.call(this,i,{profile:P,type:3,trackType:o})),this.smallEncoder.track=f,this.smallEncoder.label="small",N=yield this.smallEncoder.trans(N,d,this)):this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder),a.track=f,a.label=e,a.start(N,d,this)});return be(ye(i,"output-media-track-changed"),Je(ye(i,"ready")),Le(l,console.error,()=>{var f;this._log.info("stop push",e,r),d.abort("unpublish"),a.close(),(f=this.smallEncoder)==null||f.close()})),l(i.outMediaTrack)})}var Wo=class Wo extends he{constructor(e){var r,o;super((o=(r=e.roomid)==null?void 0:r.toString())!=null?o:e.name,"volumeEvaluation");this.room=e;m(this,"enableInBackground",!1);m(this,"interval",400);e.on("joined",()=>{this.emit(Wo.INTERVALCHANGED,this.interval)}),be(ye(this,Wo.INTERVALCHANGED),fi(s=>this.room.state==="joined"?this.room.fromWorker("getAudioEnergy",s):be(g_(s),Mo(()=>[]))),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==he.ON&&this.room.emit("audio-volume",s)}))}start(e,r){this.interval=e,this.enableInBackground=r,this.emit(Wo.INTERVALCHANGED,this.interval)}stop(){}};m(Wo,"INTERVALCHANGED","intervalChanged"),Z([ot([he.INIT,he.OFF],he.ON)],Wo.prototype,"start",1),Z([ot([],he.OFF)],Wo.prototype,"stop",1);var rm=Wo;var Go=class Go extends Ql{constructor(e){super(e);m(this,"index",0);m(this,"session");m(this,"tinyid");m(this,"roomid");m(this,"openid");m(this,"socketid");m(this,"relayip");m(this,"clientip");m(this,"remotePublishedUserMap",new Map);m(this,"bussinessInfo");m(this,"token");m(this,"audioVolumeEvalution",new rm(this));m(this,"enableAIVoice",zf);m(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:rh(),uint32_device_type:0,str_os_verion:ih(),uint32_link_type:1,str_client_version:ft,uint32_net_type:os[ui.getNetworkType()],ua:navigator.userAgent,version:""}});m(this,"joinAbortController",new AbortController);m(this,"smallAbortCtrl");m(this,"smallEncoder");e.tinyId&&(this.tinyId=e.tinyId,Jf(!0)),this._log||(this._log=e.logger),this.bussinessInfo=e.bussinessInfo,e.encodedDataProcessingListener&&this.setEncodedDataProcessingListener(e.encodedDataProcessingListener)}replaceTrack(e){return b(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 b(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 b(this,null,function*(){var d;let s=ui.getEnv(),n=vu(),a={isH264EncodeSupported:this.checkSystemResult.detail.isH264EncodeSupported,isVp8EncodeSupported:this.checkSystemResult.detail.isVp8EncodeSupported,frameWorkType:o,params:e,proxy_wt:this.proxy_wt,proxy_ws:this.proxy_ws,proxy_cloud:(d=this.scheduleResult.iceServers)!=null&&d.length?this.scheduleResult.iceServers[0].urls:[],proxy_unified:this.proxy_unified,domains:this.scheduleResult.domains,env:s,osName:yn(),browserInfo:vu(),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:ft,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 lI.call(this,a),console.log(this),Xc.playAudio(l=>this.postMessage({cmd:"setAudioWorkletPort"},[l])),this.checkDestroy()})}leave(){return b(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()),this.localTracks.clear()})}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 b(this,null,function*(){let e=Je(ye(this,"left")),r=this.audioManager.decodePipeline.some(o=>o);be(o=>b(this,null,function*(){let s=new MessageChannel;s.port2.onmessage=n=>{n.data?o.next({data:n.data,port:s.port2}):o.complete()},s.port2.onmessageerror=n=>o.error(n),o.defer(()=>{s.port2.postMessage(null),s.port2.close()}),this.postMessage({cmd:"decodeAudio",payload:r},[s.port1])}),e,Le(({data:o,port:s})=>{var a;let n={data:o.data.buffer};for(let[d,l]of this.audioManager.decodePipeline.entries())if(l&&(n=l({frame:n,track:(a=this.remotePublishedUserMap.get(o.userId))==null?void 0:a.remoteAudioTrack}),!n))return;s.postMessage(Te(Q({},o),{data:new Uint8Array(n.data)}),[n.data])}))})}onWorkerEvent(e,r){switch(e!=="network-quality"&&console.info(this.userId,"onWorkerEvent",e,JSON.stringify(r)),e){case V.RECEIVED_PUBLISHED_USER_LIST:x.emit(e,Q({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 Wl(this,r);this.remotePublishedUserMap.set(r.userId,o),this.emit("remote-published",o);return;case"5":{let f=r,_=this.remotePublishedUserMap.get(f);_&&(_.remoteVideoTrack.close(),_.remoteAuxiliaryTrack.close(),_.remoteAudioTrack.close(),this.remotePublishedUserMap.delete(f),this.emit("remote-unpublished",_))}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:f,muteState:_,flag:I}=r,R=this.remotePublishedUserMap.get(_.userId);if(!R){this.emit("remote-publish-state-changed",r);return}R.flag=I}x.emit(V.REMOTE_PUBLISH_STATE_CHANGED,Q({room:this},r)),this.emit("remote-publish-state-changed",r);return;case"7":this.localPublishFlag!==r.flag&&(this.localPublishFlag=r.flag,this.emit("local-publish-flag-changed",r.flag));return;case"network-quality":this.quality=Q({},r);let{uplinkLoss:s,uplinkRTT:n,uplinkInfo:a,downlinkInfo:d,msg_down_stream_info:l}=r,p={str_sdk_version:ft,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:os[cn()]},msg_event_msg:T_(this.userId),str_acc_ip:this.relayip,str_client_ip:this.clientip,msg_up_stream_info:a,msg_down_stream_info:l};x.emit(V.HEARTBEAT_REPORT,{room:this,report:p}),this.emit("heartbeat-report",p),x.emit(V.NETWORK_QUALITY,{room:this,uplink:{rtt:n,loss:s},downlinks:d}),delete r.downlinkInfo;break;case"signal-connection-state-changed":x.emit(V.SIGNAL_CONNECTION_STATE_CHANGED,Q({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 b(this,null,function*(){switch(yield this.sendMessage("publish",e.mediaType).then(r=>r.err!==0?Promise.reject(r.err):r),Vt(e,e).add("mute",()=>{this.postMessage("mute",{mediaType:e.mediaType,userId:this.userId,srctinyid:this.tinyid,remove:!0})}).add("unmute",()=>{this.postMessage("unmute",{mediaType:e.mediaType,userId:this.userId,srctinyid:this.tinyid,add:!0})}),e.mediaType){case 1:yield Xc.init(),fI.call(this,e);break;default:yield gI.call(this,e)}e.muted&&this.postMessage("mute",{mediaType:e.mediaType,srctinyid:this.tinyid,userId:this.openid,remove:!0})})}unpublish(e){return b(this,null,function*(){yt(e)})}subscribe(...e){return b(this,null,function*(){let r=e.reduce((f,_)=>_.mediaType|f,0),{userId:o,tinyId:s,streamType:n}=e[0],a=this.remotePublishedUserMap.get(o),d=Q({},a.subscribeState),l=Object.assign(new za,d);l.mediaType|=r,x.emit(V.SUBSCRIBE_START,{room:this,streamType:n,remotePublishedUser:a,subscribeState:l});let p=yield this.sendMessage("subscribe",{mediaType:l.mediaType,userId:o,srctinyid:s,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8,2].filter(f=>l.mediaType&f).map(f=>({mediaType:f,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}});console.dir("subscribe",p),yield Promise.all(e.filter(f=>!f.isSubscribed).map(f=>{switch(f.mediaType){case 1:return mI.call(this,f);default:return hI.call(this,f)}})),x.emit(V.SUBSCRIBE_SUCCESS,{room:this,streamType:n,remotePublishedUser:a})})}unsubscribe(...e){return b(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();x.emit(V.UNSUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:this.remotePublishedUserMap.get(o)})}})}enableSmall(e){return b(this,null,function*(){var r;if(e){if(this.videoManager.smallTrack){let o=this.videoManager.cameraTrack;this.smallEncoder=yield tm.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([Do(Go.prototype.afterJoin),ot(["left",he.INIT],"joined"),zT()],Go.prototype,"join",1),Z([ot("joined","left",{ignoreError:!0}),JT()],Go.prototype,"leave",1),Z([Gu(e=>e.mediaType),XT()],Go.prototype,"publish",1),Z([Gu(e=>e.mediaType),QT()],Go.prototype,"unpublish",1),Z([Gu((...e)=>e[0].userId),YT()],Go.prototype,"subscribe",1);var im=Go;Kn.frameWorkType=37;Kn.create=function(i){let t=Kn._create.call(this,im,i);return t._use(hf,i==null?void 0:i.assetsPath),i!=null&&i.assetsPath&&(Ht.assetsPath=i==null?void 0:i.assetsPath),console.log("trtc wasm sdk:",ft,"created",Ht),t};Object.assign(Kn.prototype,{_setCurrentSpeaker(i){let t=ze("player");return t!=null&&t.setSinkId?t.setSinkId(i):Promise.reject("not support")},_enableVideoDecodeFallback(i,t){return b(this,null,function*(){return this.startPlugin(hf.Name,{type:"webCodecs",renderer:"videoFrame",track:i,config:{codec:"avc1.640028",hardwareAcceleration:"prefer-software",optimizeForLatency:!0},fallback:"wasm"}),new Promise((e,r)=>{be(ye(i,"decode-downgrade-state-changed"),er(o=>o.state==="STARTED"),Kr(1),Fp(1e4),Je(ye(i,he.INIT)),Le(e,r))})})}});Lh(37);var Tj=Kn;export{Tj as default};
|
|
113
|
+
}`});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,o=r.createTexture();return r.bindTexture(r.TEXTURE_2D,o),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),o}render(e){let t=this.context.ctx,r=this.width,o=this.height;return this.useProgram(),t.viewport(0,0,r,o),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.yTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r,o,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,o/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,o/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 J_=(s,i)=>{switch(s){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 wI(s){return s[0]===0&&s[1]===0&&s[2]===0&&s[3]===1}var xI=0,Qd=class{constructor(i){d(this,"id",xI++);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=ot(),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=ue(e.availableState,Y.OFF),this.stopOB=ot(),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),he(this.stateChangeOB,Oh((r,o)=>(r!==o&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:this.failedReason,prevState:r,state:o}),o),"INITIALIZED"),Le(this.stopOB),Se()),this.start()}start(i=0){this.waitFirstKeyFrame=!0,this.stateChangeOB.next("STARTING");let e=he(this.pipe(this.track),Le(this.stopOB),nr());he(e,Se(()=>{this.track.stat.framesDecoded++},t=>{if(this.track.log.error(`${this.id} play failed: ${t} retryCount: ${i}`),y.addFailedEvent({key:J_(this.type,this.renderer),error:t}),i>4)this.failedReason=t,this.stateChangeOB.next("FAILED"),y.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`),y.addSuccessEvent({key:J_(this.type,this.renderer)}),y.addSuccessEvent({key:514704})})),he(e,ar(1),Se(()=>{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"&&!On()&&(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(!wI(t)||t.length<5)return this.stateChangeOB.next("FAILED"),this.close(`not h26x frame ${t.subarray(0,5)}`),i;let r=t[4]&31,o=!1;switch(r){case 5:case 7:o=!0;break}if(((a=this.decoder)==null?void 0:a.state)!=="configured")return this.track.log.debug(`not configured ${this.inputFrameCount}`),o&&(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(o?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame)if(o)this.waitFirstKeyFrame=!1,this.startTimestamp=n,this.startTime=Date.now(),this.startPerformanceTime=x();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:o,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":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"&&o==="webgl"){this.videoContext=new $e({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create(),this.videoContext.on($e.UNAVAILABLE,l=>{i.log.error(l),e.error(7)});let c=new zd(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(o==="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 Qe({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(m){delete this.goodType,i.log.error(m),e.error(11)}});let l=new As(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 j_=Promise.resolve(),Sa=class extends q_.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,"_enableEffectOptimization",!1);d(this,"onAbort");d(this,"_color");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");d(this,"_mat4");d(this,"_postProcessing");d(this,"_checkId",0);d(this,"_use2d",!1);d(this,"_autoSwitchRenderMode",!0);d(this,"encodePipeline",[]);d(this,"decodePipeline",[]);d(this,"updated",j_);d(this,"_updateFlag",!1);this.log=C.createLogger({parent:e==null?void 0:e.getLogger(),id:"vm",userId:e==null?void 0:e.userId,sdkAppId:e==null?void 0:e.sdkAppId}),this.smallVideoContext=new Qe({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 Nt(this._rotation)?{width:t,height:e}:{width:e,height:t}}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new Qe({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new $e({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(jl<=22),this._glVideoContext.on($e.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,r){this.onAbort=e,this._mat4=t,this._postProcessing=r}enablePrintDetail(e=2e3){this._checkId=ce.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(),ce.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(Wt||this._isMixScreen||this._isTransform||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",t){let r=e==="videoCtxGl"?512700:512701;t?y.addFailedEvent({key:r,error:t}):y.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 $e({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 fd(this.smallVideoContext,e,this.log),this.smallVideoContext.on($e.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:o}=this.cameraTrack.settings;this.smallTrackSource.resize(r,o),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:o,player:n}=r;Wt&&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(o,e),r.setOutputMediaStreamTrack(a)}catch(r){this.log.error("set main output failed",r)}}update(e=!1){return f(this,null,function*(){var o;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}),this.destination.on(we.RENDER,n=>{var a;(a=this.cameraTrack)==null||a.emit("render",n)})),qe===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof zt?(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 zt?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 pd(this.videoContext,{name:"mainDestination",logger:this.log}),this.destination.on(we.RENDER,l=>{var u;(u=this.cameraTrack)==null||u.emit("render",l)}));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 Xd(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,enableEffectOptimization:this._enableEffectOptimization,onAbort:this.onAbort,mat4:this._mat4,postProcessing:this._postProcessing,color:this._color}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute(),yield this.cameraNode.predictReady}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 Qt(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 Mo(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)}(o=this.waterMarkNode)==null||o.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,o,n,a;if(e instanceof xt)return this.log.info("change screen input",(t=e.mediaTrack)==null?void 0:t.label),this.setScreenTrack(e);if(e instanceof ze)return this.log.info("change video input",(r=e.mediaTrack)==null?void 0:r.label),this.setCameraTrack(e);if(e instanceof wi){this.log.info("change remote input",(o=e.mediaTrack)==null?void 0:o.label);let c=e.mediaTrack;return e.setOutputMediaStreamTrack(c)}if(e instanceof Cs)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 xt?((t=this.screenNode)==null||t.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof ze?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 wi?e.source&&e.source.context.destroy():e instanceof Cs&&(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 o=r.getContext("2d");if(!o)throw new D({code:I.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,fillVideo:m})=>{let p=m&&e||l,h=m&&t||u,E=m?0:a,g=m?0:c;o.drawImage(n,E,g,p,h)}),zs(r.toDataURL())})}pushWaterMarkImageList(e){let{type:t}=e;this.watermarkImageList.some(o=>o.imageUrl===e.imageUrl&&o.height===e.height&&o.width===e.width&&o.x===e.x&&o.y===e.y&&o.type===e.type&&o.zIndex===e.zIndex&&o.fillVideo===e.fillVideo)||((t==="mute"||t==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(o=>o.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 zs((e==null?void 0:e.imageElement)||e.imageUrl)}catch(p){throw new D({code:I.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:r=0,y:o=0,width:n=t.width,height:a=t.height,type:c="watermark",zIndex:l=2,fillVideo:u=!1}=e;this.watermarkImageList.some(p=>p.type===c)?(this.watermarkImageList=this.watermarkImageList.filter(p=>p.type!==c),this.pushWaterMarkImageList({x:r,y:o,width:n,height:a,image:t,zIndex:l,type:c,imageUrl:e.imageUrl,fillVideo:u}),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:o,width:n,height:a,image:t,zIndex:l,type:c,imageUrl:e.imageUrl,fillVideo:u}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(p,h)=>p==="imageUrl"?void 0:h))})}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 o;(o=this.waterMarkNode)==null||o.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,r,o;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 zs(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type),this._enableFaceCentering=(t=e.enableFaceCentering)!=null?t:this._enableFaceCentering,this._enableEffectOptimization=(r=e.enableEffectOptimization)!=null?r:this._enableEffectOptimization,this._color=(o=e.color)!=null?o:[0,1,0]}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 D({code:I.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 Qd(e)}clear(){var e,t;(e=this.videoContext)==null||e.disconnect(),(t=this.destination)==null||t.removeAllListeners(),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}};O([Xc(function(e){this.log.error("update failed",e)}),K(e=>function(...t){return f(this,null,function*(){this._updateFlag||(this._updateFlag=!0,yield j_,this.updated=new Promise((r,o)=>{e.apply(this,t).then(r,o),setTimeout(o,5e3,new D({code:I.API_CALL_TIMEOUT,message:"update timeout"}))}),this._updateFlag=!1,yield this.updated)})})],Sa.prototype,"update",1);var UI=0;var Yd=class extends Y{constructor(e){super("room");d(this,"seq",++UI);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,"localPublishFlag",0);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,"enableChorus",!1);d(this,"_isUsingCachedSchedule",!1);d(this,"_log");d(this,"_joinedTimestamp",0);d(this,"_sdkType");d(this,"heartbeatReport");d(this,"heartbeatCount",0);d(this,"quality");d(this,"enableSEI");d(this,"isDestroyed",!1);this._log=C.createLogger({parent:e.logger,id:`r${this.seq}`}),this.useStringRoomId=!!e.useStringRoomId,pe(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),pe(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),pe(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new $_({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new G_({room:this}),this.badCaseDetector=new W_({room:this}),this.audioManager=new Ed(this),this.videoManager=new Sa(this)}get videoCodec(){return"h264"}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 localMainAudioTrack(){for(let e of this.localTracks)if(e.mediaType&1)return e;return null}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}get publishState(){let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};return this.localTracks.forEach(t=>{if(t.isPublished||t.isPublishing)switch(t.mediaType){case 1:e.audio=!0;break;case 4:e.bigVideo=!0,e.smallVideo=t.hasSmall;break;case 2:e.auxVideo=!0;default:break}}),e}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)}}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(ne(e))/^wss?:\/\//i.test(e)?this.proxy_ws=e:/^https?:\/\//i.test(e)&&(this.proxy_wt=e);else if(dt(e)){let{websocketProxy:t,webtransportProxy:r,loggerProxy:o,scheduleProxy:n,unifiedProxy:a}=e;this.proxy_ws=t,this.proxy_wt=r,this.proxy_unified=a,a?(bd([a,a]),qr(`https://${a}`)):(o&&qr(o),n&&bd(n))}S.once(A.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:Ii.main,sched_back_domain:Ii.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 o=e==="auxiliary"?r.remoteAuxiliaryTrack:r.remoteVideoTrack;t[r.userId]=o.stat}),t})}checkDestroy(){if(this.isDestroyed)throw new D({code:I.INVALID_OPERATION,message:G({key:H.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(Xe.INVALID_DESTROY),new D({code:I.INVALID_OPERATION,message:G({key:H.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,S.emit(A.ROOM_DESTROY,{room:this})}schedule(e,t){return f(this,null,function*(){var o,n,a,c;let r=x();try{let{isCached:l,result:u,detailCost:m}=yield Wh({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:We,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} ${Et(u,{keysToExclude:["username","credential"]})}`),l&&S.once(A.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=M(M({},this.scheduleResult),u),te((o=u.config)==null?void 0:o.retryCount)&&El(u.config.retryCount),ne((n=u.config)==null?void 0:n.loggerDomain)&&qr(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,S.emit(A.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:m}),y.addSuccessEvent({key:521700,cost:x()-r})}catch(l){throw y.addFailedEvent({key:521700,error:l}),l}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}switchRoom(e){return Promise.reject()}isSwitchRoomSupported(){return!1}};var ig=Ge(Ze());var Im=Ge(hm());var X_=s=>{let i=De(s),e={audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0};return i.media.forEach((t,r)=>{var o;if(t.ssrcs&&!T(t.ssrcs[0].id)){let n=Number(t.ssrcs[0].id),a=Number((o=t.ssrcs.filter(c=>c.attribute==="cname")[1])==null?void 0:o.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 z_(s){var e;let i=[];for(let t=0;t<s.rtp.length;t++){if(["rtx","red","ulpfec"].includes(s.rtp[t].codec))continue;let r=s.fmtp.filter(o=>o.payload===s.rtp[t].payload)[0];i.push({payload:s.rtp[t].payload,codec:s.rtp[t].codec,fmtp:r?r.config:"",rate:s.rtp[t].rate,rtx:((e=s.rtp[t+1])==null?void 0:e.codec)==="rtx"?s.rtp[t+1].payload:0,rtcpfb:((s==null?void 0:s.rtcpFb)||[]).filter(o=>o.payload===s.rtp[t].payload).map(({type:o,subtype:n})=>({id:o,params:n?[n]:[]}))})}return i}function VI(){return f(this,null,function*(){let s=new RTCPeerConnection;s.addTransceiver(_.VIDEO,{direction:_.TRANSCEIVER_DIRECTION_RECVONLY});let i=yield s.createOffer();if(!i.sdp)return[];let e=De(i.sdp),t=z_(e.media[0]);return s.close(),t})}var Q_=(s,i,e)=>f(null,null,function*(){var c;let t=De(s),r={ice:{ufrag:"",password:""},dtls:{hash:"",fingerprint:"",setup:""},audio:{codecs:[],extensions:[]},video:{codecs:[],decoders:[],extensions:[]},useDataChannel:e};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 o=t.media[0],n=t.media[1];o.ext&&(r.audio.extensions=o.ext.map(l=>({id:l.value,uri:l.uri}))),n.ext&&(r.video.extensions=n.ext.map(l=>({id:l.value,uri:l.uri})));for(let l of o.rtp){if(l.codec!=="opus")continue;let u=o.fmtp.find(p=>p.payload===l.payload);if(!u)continue;let m={codec:l.codec,fmtp:u.config,payload:u.payload,rate:l.rate,channels:l.encoding,rtcpfb:[],rtx:0};(c=o.rtcpFb)==null||c.forEach(({payload:p,type:h,subtype:E})=>{if(p===m.payload){let g={id:h,params:[]};E&&g.params.push(E),m.rtcpfb.push(g)}}),r.audio.codecs.push(m);break}let a=["h264","vp8","h265"];return i&&a.shift(),r.video.codecs=[...z_(n)].filter(l=>a.includes(l.codec.toLocaleLowerCase())),r.video.decoders=(yield VI()).filter(l=>["h264","vp8","h265"].includes(l.codec.toLocaleLowerCase())),r}),Am=(s,i)=>{let e=(s||"").trim(),t=(i||"").trim(),r="profile-level-id",o=`${r}=[0-9a-fA-F]{6}`;if(new RegExp(o).test(e)){let c=new RegExp(o,"g");return e.replace(c,`${r}=${t}`)}if(!e)return`${r}=${t}`;let a=e.endsWith(";")?"":";";return`${e}${a}${r}=${t}`},Y_=({serverAbility:s,clientAbility:i,offerSDP:e,enableCustomMessage:t,profileLevelIdConfig:r})=>{let o=De(e),n={extmapAllowMixed:"extmap-allow-mixed",groups:o.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},a={candidates:s.candidates.map(l=>({component:1,foundation:"1",generation:0,ip:l.ip,port:l.port,priority:l.priority,transport:l.foundation,type:l.type})),connection:{version:4,ip:"0.0.0.0"},direction:_.TRANSCEIVER_DIRECTION_RECVONLY,ext:s.audio.extensions.map(l=>({value:l.id,uri:l.uri})),fingerprint:{type:s.dtls.hash,hash:s.dtls.fingerprint},fmtp:[{payload:s.audio.codecs[0].payload,config:s.audio.codecs[0].fmtp}],icePwd:s.ice.password,iceUfrag:s.ice.ufrag,mid:"0",payloads:String(s.audio.codecs[0].payload),port:o.media[0].port,protocol:o.media[0].protocol,type:_.AUDIO,setup:s.dtls.setup,rtcpFb:s.audio.codecs[0].rtcpfb.map(l=>({payload:s.audio.codecs[0].payload,type:l.id,subtype:l.params[0]})),rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[{payload:s.audio.codecs[0].payload,codec:s.audio.codecs[0].codec,rate:s.audio.codecs[0].rate,encoding:s.audio.codecs[0].channels}]};n.media.push(a);let c=[r==null?void 0:r.big,r==null?void 0:r.small,r==null?void 0:r.aux];return[1,2,3].forEach((l,u)=>{n.media.push(Rm({mid:l,serverAbility:s,clientAbility:i,parsedOffer:o,profileLevelId:c[u]}))}),t&&n.media.push(o.media.find(l=>l.mid==="dc")),Zt(n)},Rm=({mid:s,serverAbility:i,clientAbility:e,parsedOffer:t,isDownlink:r=!1,profileLevelId:o})=>{let n={candidates:i.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:_.TRANSCEIVER_DIRECTION_RECVONLY,ext:i.video.extensions.map(a=>({value:a.id,uri:a.uri})),fingerprint:{type:i.dtls.hash,hash:i.dtls.fingerprint},fmtp:[],icePwd:i.ice.password,iceUfrag:i.ice.ufrag,mid:String(s),payloads:"",port:t.media[0].port,protocol:t.media[0].protocol,type:_.VIDEO,setup:i.dtls.setup,rtcpFb:[],rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[]};if(r){let a=i.video.decoders;(!a||a.length===0)&&(a=i.video.codecs),(!a||a.length===0)&&(a=e.video.decoders),a.forEach(c=>{Ps(n,c)})}else{let a;i.useH265?a=i.video.codecs.findIndex(l=>l.codec.toLowerCase()==="h265"):a=i.video.codecs.findIndex(l=>l.codec.toLowerCase()===(i.useVp8?"vp8":"h264"));let c=i.video.codecs[a]||e.video.codecs[0];Ps(n,c)}if(!r&&o){let a=n.rtp,c=n.fmtp,l=a.find(u=>{var m;return((m=u.codec)==null?void 0:m.toLowerCase())==="h264"});if(l){let u=c.find(m=>String(m.payload)===String(l.payload));u&&(u.config=Am(u.config,o))}}return n},Ps=(s,i)=>{s.payloads=`${s.payloads} ${i.payload}`.trim(),s.fmtp.push({payload:i.payload,config:i.fmtp}),s.rtcpFb=[...s.rtcpFb||[],...i.rtcpfb.map(e=>({payload:i.payload,type:e.id,subtype:e.params[0]}))],s.rtp.push({payload:i.payload,codec:i.codec.toUpperCase(),rate:i.rate}),i.rtx&&(s.payloads=`${s.payloads} ${i.rtx}`,s.fmtp.push({payload:i.rtx,config:`apt=${i.payload}`}),s.rtp.push({payload:i.rtx,codec:"rtx",rate:i.rate}))};function FI(s){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"]);s.ext&&(s.ext=s.ext.filter(e=>!i.has(e.uri)))}function BI(s){if(!s.rtcpFb)return;let i=[];s.rtcpFb.forEach((e,t)=>{var r;i.push(e),s.rtcpFb&&((r=s.rtcpFb[t+1])==null?void 0:r.payload)!==e.payload&&e.type!=="rrtr"&&i.push({payload:e.payload,type:"rrtr"})}),s.rtcpFb=i}function HI(s){s.type===_.VIDEO&&s.fmtp&&s.fmtp.forEach(i=>{i.config.includes("apt")||(i.config+=";sps-pps-idr-in-keyframe=1")})}function $I(s){s.type===_.AUDIO&&s.fmtp&&s.fmtp.forEach(i=>{i.config+=";sprop-stereo=1;stereo=1"})}var Z_=(s,i,e)=>{let t=Im.default.parse(s);return t.media.forEach((r,o)=>{var n;if((r.type===_.AUDIO||r.type===_.VIDEO)&&(BI(r),HI(r),$I(r),FI(r),r.type===_.VIDEO)){if(o<4)r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[],i.video.codecs.forEach(a=>Ps(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=>Ps(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")}),Im.default.write(t)};function Zd(s){var e,t;let i=/profile-level-id=([0-9a-fA-F]{6})/.exec(s);return(t=(e=i==null?void 0:i[1])==null?void 0:e.toLowerCase())!=null?t:null}function Kd(s){let i=s.toLowerCase();if(!/^[0-9a-f]{6}$/.test(i))return"unknown";let e=parseInt(i.slice(0,2),16);return e===66?"baseline":e===77?"main":e===100?"high":"unknown"}function Cm(s,i){if(!i)return"";let e=s.trim().toLowerCase().replace(/_/g,"-");if(!e)return"";if(/^[0-9a-f]{6}$/.test(e))return e;if(e!=="baseline"&&e!=="main"&&e!=="high")return"";for(let t of i.video.codecs){let r=Zd(t.fmtp);if(!(!r||Kd(r)!==e))return r}return""}var K_=Ge(Ze());var el=class extends K_.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");!fe&&tt&&S.on("262",this.onVideoCodecChanged,this),this.log=e.getLogger().createChild({id:"h-d"})}onVideoCodecChanged({remoteUserId:e,streamType:t,isHWCodec:r,codec:o}){if(!(e||t===7||o!=="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(){S.off("262",this.onVideoCodecChanged,this),this.room.off("heartbeat-report",this.onHeartbeatReport,this)}};d(el,"EVENT_BAD_HEALTH","bad_health");var eg=el;var fr=(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))(fr||{}),GI=1,Kt=class extends ig.default{constructor({signalChannel:e,room:t,enableDataChannel:r}){super();d(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0});d(this,"isDestroyed",!1);d(this,"currentState","DISCONNECTED");d(this,"_room");d(this,"_signalChannel");d(this,"_peerConnection",null);d(this,"_datachannel",null);d(this,"_enableDataChannel");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._enableDataChannel=r,this._signalChannel=e,this._log=C.createLogger({parent:this._room.getLogger(),id:`spc${GI++}`,userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(fi?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("destroy"),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,o;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":(o=this._serverAbility)!=null&&o.useVp8?"vp8":"h264"}get downlinkVideoCodec(){var e,t,r;return(e=this._serverAbility)!=null&&e.useH265&&((t=this._serverAbility)!=null&&t.video.decoders.find(o=>o.codec.toLowerCase()==="h265"))&&!this._h265DecodeFailed?"h265":(r=this._serverAbility)!=null&&r.video.decoders.find(o=>o.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}isProfileLevelIdSupported(e){return this.clientAbility?!!this.clientAbility.video.codecs.find(t=>t.fmtp.includes(e)):!1}get uplinkSSRC(){return this._peerConnection&&this._peerConnection.localDescription?X_(this._peerConnection.localDescription.sdp):{audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0}}onBadHealth({isAux:e}){}initScriptTransformWorker(){fo&&(this.scriptTransformWorker=Nd({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,e.data.type==="dump"&&this.emit("dump",e.data)},this.scriptTransformWorker.onerror=e=>{this._log.error("scriptTransformWorker error: ",e.message)})}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 o;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=(o=this._peerConnection)==null?void 0:o.getConfiguration().encodedInsertableStreams;return Ya(r)&&(t.encodedInsertableStreams=r),this._log.debug("getPeerConnectionConfig",JSON.stringify(t)),t}initialize(e){return f(this,null,function*(){var r;let t;try{return this._peerConnection=new RTCPeerConnection(this.getPeerConnectionConfig(e)),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let o=this._peerConnection.iceConnectionState;this._log.debug(`ice state: ${o}`),o==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():o==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),this._signalChannel.clearBakRelayIps(),y.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):o==="failed"&&y.addFailedEvent({key:521711})},this._peerConnection.onsignalingstatechange=()=>{var n;let o=((n=this._peerConnection)==null?void 0:n.signalingState)||"";this._log[o==="closed"?"debug":"info"](`signaling state: ${o}`)},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=o=>this.emit("track",o),this._enableDataChannel&&(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=o=>{let n=new bm(o.data);this.emit("data_channel_msg",{data:n})},this._datachannel.onerror=o=>{this._log.warn("datachannel error",o)}),this._peerConnection.addTransceiver(_.AUDIO,{direction:_.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(_.VIDEO,{direction:_.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(_.VIDEO,{direction:_.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(_.VIDEO,{direction:_.TRANSCEIVER_DIRECTION_SENDONLY}),t=yield this._peerConnection.createOffer(),this.clientAbility=yield Q_(t.sdp,((r=this._room.scheduleResult.config)==null?void 0:r.remove264FromSDP)||!1,this._enableDataChannel),this.originOffer=t,this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:o}=this;o&&(this._log.debug(`dtls state: ${o.state}`),o.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():o.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),y.addSuccessEvent({key:521707}),this.clientAbility}catch(o){throw y.addFailedEvent({key:521707,error:o}),this._log.error(`initialize failed ${o}
|
|
114
|
+
offer: ${t==null?void 0:t.sdp}`),o}})}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,o)=>r==="username"||r==="credential"?"hided":o)),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 o=r.getParameters();o.encodings[0]&&(o.encodings[0].priority=e,o.encodings[0].networkPriority=e,r.setParameters(o).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,o,n;try{if(this.currentState==="CONNECTED")return;!((r=this._peerConnection)!=null&&r.localDescription)&&this.originOffer&&(yield this.setOffer(this.originOffer));let a=x(),c=this.getProfileLevelIdConfig(),u={type:"answer",sdp:Y_({serverAbility:e,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableDataChannel,profileLevelIdConfig:c})};this._serverAbility=e,yield this.setAnswer(u),yield this.waitForPeerConnectionConnected(),this._room.firewallDetector.resetTimeoutCount();let m=((o=this._room.scheduleResult.config)==null?void 0:o.priority)||((n=this._room.joinParams)==null?void 0:n.priority)||new URLSearchParams(location.search).get("priority");m&&this.setPriority(m),t||y.addSuccessEvent({key:521703,cost:x()-a})}catch(a){let c=a instanceof D&&a.code===I.API_CALL_ABORTED;throw c||this._log.error(`connect failed: ${a}`,e),this.reset(),!c&&!this.isReconnecting&&!this.isDestroyed&&(y.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(Ce.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=M({ability:t},e),o=yield this._signalChannel.sendWaitForResponse({command:Q.REBUILD_PEER_CONNECTION,responseCommand:q.REBUILD_PEER_CONNECTION_RES,data:r,enableLog:!1});if(o.data.code!==0)throw new D({code:o.data.code,message:o.data.message});yield this.connect(o.data.data.ability,!0),y.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),S.emit(A.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(e){if(!this.isReconnecting||this.isDestroyed)return;if(e!=null&&e.message.includes("timeout")){let t=si(this.reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${t/1e3}s`),yield Ke(t,r=>{this._reconnectionTimer=r}),this.clearReconnectionTimer(),yield this.reconnect()}else this._log.error(`reconnect() failed ${e==null?void 0:e.code} ${e}`),y.addFailedEvent({key:521704,error:e}),this.reconnectionCount>=Gi()&&this._log.warn(`SDK has tried reconnect for ${Gi()} 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(Ce.CONNECTED,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var e;!this.isReconnecting&&((e=this._peerConnection)==null?void 0:e.connectionState)===be.CLOSED&&this.startReconnection()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}onConnectionStateChange(e){var o;let t=((o=this._peerConnection)==null?void 0:o.iceConnectionState)||"closed",r=this.getDTLSTransportState();this._log.info(`connectionState: ${e.target.connectionState} ICE: ${t} DTLS: ${r}`),e.target.connectionState===be.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(e.target.connectionState===be.FAILED||e.target.connectionState===be.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(e.target.connectionState===be.CONNECTED||e.target.connectionState===be.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),S.emit(A.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 ii;let e=null;return!Pr()||this._peerConnection.getSenders().length===0?ii:(e=this._peerConnection.getSenders()[0].transport,!hs()||this._peerConnection.getReceivers().length===0?ii:e?e.state:ii)}emitConnectionStateChangedEvent(e){e!==this.currentState&&(this.currentState==="RECONNECTING"&&e==="CONNECTING"||(this.emit(fr.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(Or(r)){let o=e.get(r.localCandidateId),n=e.get(r.remoteCandidateId);o&&(this._log.info(`local candidate: ${o.candidateType} ${o.protocol}:${o.ip||o.address}:${o.port} ${o.networkType||""} ${o.relayProtocol?`relayProtocol:${o.relayProtocol} url: ${o.url}`:""}`),o.networkType&&Ga(o.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())},o=({room:c})=>{c===this._room&&(clearTimeout(a),n(),t(new D({code:I.API_CALL_ABORTED,message:G({key:H.CONNECTION_ABORTED,data:"leave room"})})))},n=()=>{S.off(A.LEAVE_SUCCESS,o,this),this.off(fr.CONNECTION_STATE_CHANGED,r,this)},a=setTimeout(()=>{n();let c=new D({code:I.API_CALL_TIMEOUT,message:"connection timeout"});this._room.firewallDetector.increaseTimeoutCount(),t(c)},rn);this.clearConnectTimeout=()=>{n(),clearTimeout(a),delete this.clearConnectTimeout},this.clearWaitForConnectedPromise=()=>{this._waitForPCConnectedPromise=null,t(new D({code:I.API_CALL_TIMEOUT,message:"connection timeout"}))},S.on(A.LEAVE_SUCCESS,o,this),this.on(fr.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 o=this._peerConnection.getTransceivers().slice(4).filter(p=>p.direction==="inactive").slice(0,3).map(p=>(p.direction=_.TRANSCEIVER_DIRECTION_RECVONLY,Number(p.mid)));this._parsedAnswer||(this._parsedAnswer=De(this._peerConnection.remoteDescription.sdp));let n=this._parsedAnswer.media.filter(p=>{var h;return(h=p.ssrcs)==null?void 0:h.find(E=>{var g;return(g=E.value)==null?void 0:g.includes(r)})}),a,c,l;if(n.length===3)a=n[0],c=n[1],l=n[2];else if(o.length===3)a=this._parsedAnswer.media.find(p=>Number(p.mid)===Number(o[0])),c=this._parsedAnswer.media.find(p=>Number(p.mid)===Number(o[1])),l=this._parsedAnswer.media.find(p=>Number(p.mid)===Number(o[2]));else if(o.length===0){this._peerConnection.addTransceiver(_.AUDIO,{direction:_.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(_.VIDEO,{direction:_.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(_.VIDEO,{direction:_.TRANSCEIVER_DIRECTION_RECVONLY}),a=JSON.parse(JSON.stringify(this._parsedAnswer.media[0]));let p=Rm({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:De(this._peerConnection.localDescription.sdp),isDownlink:!0});c=JSON.parse(JSON.stringify(p)),l=JSON.parse(JSON.stringify(p)),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=_.TRANSCEIVER_DIRECTION_SENDONLY;let u=`${r}-${e.audio}`;a.ssrcs=[{id:e.audio,attribute:"cname",value:`${u}`},{id:e.audio,attribute:"msid",value:`${u}-${_.MAIN} ${u}-audio`}],c.direction=_.TRANSCEIVER_DIRECTION_SENDONLY,c.ssrcs=[{id:e.video,attribute:"cname",value:`${u}`},{id:e.video,attribute:"msid",value:`${u}-${_.MAIN} ${u}-bigvideo`},{id:e.videoRtx,attribute:"cname",value:`${u}`},{id:e.videoRtx,attribute:"msid",value:`${u}-${_.MAIN} ${u}-bigvideo`}],c.ssrcGroups=[{semantics:"FID",ssrcs:`${e.video} ${e.videoRtx}`}],l.direction=_.TRANSCEIVER_DIRECTION_SENDONLY;let m=`${u}-aux`;l.ssrcs=[{id:e.auxiliary,attribute:"cname",value:m},{id:e.auxiliary,attribute:"msid",value:`${m} ${u}-aux${_.VIDEO}`},{id:e.auxiliaryRtx,attribute:"cname",value:`${m} ${u}-aux${_.VIDEO}`},{id:e.auxiliaryRtx,attribute:"msid",value:`${m} ${u}-aux${_.VIDEO}`}],l.ssrcGroups=[{semantics:"FID",ssrcs:`${e.auxiliary} ${e.auxiliaryRtx}`}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(p=>p.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(o=>{t!=null&&t.includes(Number(o.mid))&&(r=!0,o.direction="inactive")}),this._parsedAnswer||(this._parsedAnswer=De(this._peerConnection.remoteDescription.sdp)),this._parsedAnswer.media.forEach(o=>{t!=null&&t.includes(Number(o.mid))&&(r=!0,o.direction="inactive",o.ssrcs=[],o.ssrcGroups=[])}),this.removeDownlinkQueue.size===0&&r&&(yield this.updateSDP()),this._downlinkMIDMap.delete(e),t==null||t.forEach(o=>this._downlinkMIDUserIDMap.delete(o)),this._log.info(`removeDownlink(${e}) done`)})}setBandwidth(e){return f(this,null,function*(){if(!this._peerConnection)return;let{audio:t,bigVideo:r,smallVideo:o,auxVideo:n}=e;try{if(Ln()){let a=this._peerConnection.getSenders().slice(0,4);for(let l=0;l<a.length;l++){let u=a[l],m;l===0&&t?m=t:l===1&&r?m=r:l===2&&o?m=o:l===3&&n&&(m=n),m&&(yield this.setSenderMaxBitrate(u,m))}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,o;return(r=this._peerConnection)!=null&&r.remoteDescription&&(this._parsedAnswer||(this._parsedAnswer=De(this._peerConnection.remoteDescription.sdp)),(o=this._parsedAnswer.media[e])!=null&&o.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();if((!r.encodings||r.encodings.length===0)&&(r.encodings=[{}]),t==="unlimited")delete r.encodings[0].maxBitrate;else{if(r.encodings[0].maxBitrate===t*1e3)return;r.encodings[0].maxBitrate=t*1e3}return e.setParameters(r)}setBandwidthBySDP({audio:e,bigVideo:t,smallVideo:r,auxVideo:o}){if(!this._peerConnection||!this._peerConnection.localDescription)return;let n=De(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=De(this._peerConnection.remoteDescription.sdp));let a=re?"TIAS":"AS";e&&(n.media[0].bandwidth=[{type:a,limit:re?e*1e3:e}],this._parsedAnswer.media[0].bandwidth=[{type:a,limit:re?e*1e3:e}]),t&&(n.media[1].bandwidth=[{type:a,limit:re?t*1e3:t}],this._parsedAnswer.media[1].bandwidth=[{type:a,limit:re?t*1e3:t}]),r&&(n.media[2].bandwidth=[{type:a,limit:re?r*1e3:r}],this._parsedAnswer.media[2].bandwidth=[{type:a,limit:re?r*1e3:r}]),o&&(n.media[3].bandwidth=[{type:a,limit:re?o*1e3:o}],this._parsedAnswer.media[3].bandwidth=[{type:a,limit:re?o*1e3:o}]);let c={type:"offer",sdp:Zt(n)};return this.updateSDP({localDescription:c})}setScaleResolutionDownBy(e,t,r){let o=e.getParameters();(!o.encodings||o.encodings.length===0)&&(o.encodings=[{}]);let n=o.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),o.encodings[0].scaleResolutionDownBy=t,e.setParameters(o)}setDegradationPreference(e,t,r){if(tt&&et<83||Ee&&An(pt,"12.1")||re&&eo<138)return;let o=e.getParameters(),n="balanced";if(t==="motion"?n="maintain-framerate":t==="detail"&&(n="maintain-resolution"),o.degradationPreference===n)return;let a=`setDegradationPreference ${r} ${n}`;return this._log.info(a),o.degradationPreference=n,e.setParameters(o).catch(c=>this._log.warn(`${a} failed: ${c}`))}updateSDP({localDescription:e}={}){if(!this._parsedAnswer)return Promise.resolve();let t=Zt(this._parsedAnswer);return this._updateSDPPromise=new Promise((r,o)=>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)}
|
|
115
|
+
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)}
|
|
116
|
+
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:m,stopped:p})=>({mid:l,currentDirection:u,direction:m,stopped:p})))}`),this._log.warn(`parsedAnswer: ${JSON.stringify(this._parsedAnswer)}`),this._isSDPLogged=!0),this._updateSDPPromise=null,o(c)}})),this._updateSDPPromise}setTransceiverDirection(e,t){return f(this,null,function*(){if(!re||!this._peerConnection||!this._parsedAnswer)return;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let r=this._peerConnection.getTransceivers();t.forEach(o=>{r[o].direction!==e&&(r[o].direction=e)});for(let o of t){let n=this._parsedAnswer.media[o].direction;e===de.INACTIVE&&n===de.RECVONLY&&(this._parsedAnswer.media[o].direction=e),e===de.SENDONLY&&n===de.INACTIVE&&(this._parsedAnswer.media[o].direction=de.RECVONLY)}yield this.updateSDP()})}filterSDPDirection(e=""){return De(e).media.map(r=>r.direction)}setOffer(e){this._log.info("setting offer");let t=Z_(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=De(this._peerConnection.remoteDescription.sdp)),!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let t=!1;this._parsedAnswer.media.forEach(r=>{var o;if(r.type===_.VIDEO){let n=this._serverAbility.video.codecs.find(a=>a.codec.toLowerCase()===e);n&&!((o=r.payloads)!=null&&o.includes(String(n.payload)))&&(r.fmtp=[],r.payloads="",r.rtp=[],r.rtcpFb=[],Ps(r,n),t=!0)}}),t&&(this._log.warn(`switch video encoder to ${e}`),yield this.updateSDP())})}getScheduleProfileLevelId(e){var t;try{let r=(t=this._room.scheduleResult.config)==null?void 0:t.profileLevelId,o="";if(e===2?o=Qa(r==null?void 0:r.big)?r.big:"":e===3?o=Qa(r==null?void 0:r.small)?r.small:"":e===7&&(o=Qa(r==null?void 0:r.aux)?r.aux:""),!o)return"";let n=Cm(o,this.clientAbility);return n?this._log.info(`use schedule profile level id: streamType=${e}, raw=${o}, resolved=${n}`):this._log.warn(`schedule profile level id not resolved: streamType=${e}, raw=${o}`),n}catch(r){return this._log.warn(`getScheduleProfileLevelId error: ${r}`),""}}getProfileLevelIdConfig(){try{let e=new URLSearchParams(location.search).get("profileLevelId")||"",t=Cm(e,this.clientAbility);if(t)return this._log.info(`use url profile level id: raw=${e}, resolved=${t}`),{big:t,small:t,aux:t};let r=this.getScheduleProfileLevelId(2),o=this.getScheduleProfileLevelId(3),n=this.getScheduleProfileLevelId(7);if(!r&&!o&&!n)return;let a={};return r&&(a.big=r),o&&(a.small=o),n&&(a.aux=n),a}catch(e){this._log.warn(`getProfileLevelIdConfig error: ${e}`);return}}setH264ProfileLevelId(e,t){return f(this,null,function*(){if(!this._peerConnection||!this._serverAbility)return;this._updateSDPPromise&&(yield this._updateSDPPromise),this._log.info(`set H264 profile-level-id to ${t?"high":"default"} for ${e}`),this._parsedAnswer||(this._parsedAnswer=De(this._peerConnection.remoteDescription.sdp));let r=e==="main"?1:3,o=this._parsedAnswer.media[r];if(!o||o.type!==_.VIDEO)return;let n=o.rtp||[],a=o.fmtp||[],c=n.find(R=>{var N;return((N=R.codec)==null?void 0:N.toLowerCase())==="h264"});if(!c)return;let l=a.find(R=>String(R.payload)===String(c.payload));if(!l)return;let u=Zd(l.config);if(!u)return;let p=Kd(u)==="high";if(t&&p||!t&&!p)return;let E=this._serverAbility.video.codecs.map(R=>Zd(R.fmtp)).filter(Boolean).find(R=>{let N=Kd(R);return t?N==="high":N!=="high"});if(!E)return;let g=l.config;l.config=Am(l.config,E),l.config!==g&&(yield this.updateSDP(),this._log.info(`set H264 profile-level-id to ${t?"high":"default"} success`))})}useHWEncoder(e=!0,t){return f(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let r=!1,o=[];T(t)?o=this._parsedAnswer.media.slice(1,4):t===2?o.push(this._parsedAnswer.media[1]):t===3?o.push(this._parsedAnswer.media[2]):t===7&&o.push(this._parsedAnswer.media[3]),o.forEach(n=>{var a;if(n.type===_.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=[],Ps(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),this._datachannel=null,(e=this.clearWaitForConnectedPromise)==null||e.call(this),this._parsedAnswer=null,this.originOffer=null}close(){this._log.info("close pc"),this.isDestroyed=!0,this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(e=>yi(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,o=Math.max(e,t),{rttRatioThreshold:n,rttThreshold:a}=((u=this._room.scheduleResult.config)==null?void 0:u.useTurnTcpInfo)||{};if(!n||!a||!r||!o)return;let c=Math.floor(o/r),l=(this._isRelayTried||c>n)&&o>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",o=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`),y.addSuccessEvent({key:o,cost:Date.now()-n})}catch(n){this._log.warn(`switchRelay ${r} failed`,n),y.addFailedEvent({key:o,error:n}),t?this._room.reJoin():yield this.switchRelay(!e,!0)}})}doSwitchRelay(e){return new Promise((t,r)=>{let o=setTimeout(()=>{this.stopReconnection(),r(new Error(`switch ${e} timeout`))},1e4);this.startReconnection().then(t,r).finally(()=>clearTimeout(o))})}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:Q.UPDATE_CONSTRAINT_CONFIG,data:{videoDecCodec:"h264"},responseCommand:q.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)})}};O([Zc("reconnect")],Kt.prototype,"startReconnection",1),O([Ti(e=>e.userId)],Kt.prototype,"addDownlink",1),O([Ti(e=>e)],Kt.prototype,"removeDownlink",1),O([or(!0)],Kt.prototype,"updateSDP",1),O([yt(521712,!1),bs(10,0)],Kt.prototype,"setOffer",1),O([yt(521713,!1),bs(10,0)],Kt.prototype,"setAnswer",1),O([xf()],Kt.prototype,"close",1);var ym=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}},bm=class{constructor(i){d(this,"tinyId");d(this,"data");let e=new DataView(i),t=0,r=[];for(;t<e.byteLength;){let l=e.getUint16(t+2),u=new ym(new Uint8Array(i).slice(t,t+2+2+l).buffer);r.push(u),t+=4+l}let o=[];r.forEach(l=>{l.tag===1?this.tinyId=new TextDecoder().decode(l.data):l.tag===2&&o.push(l.data)});let n=o.reduce((l,u)=>l+u.byteLength,0),a=new Uint8Array(n),c=0;o.forEach(l=>{a.set(new Uint8Array(l),c),c+=l.byteLength}),this.data=a.buffer}},tg=new Set;function Ft(){let s=Math.floor(Math.random()*4294967296);return tg.has(s)?Ft():(tg.add(s),s)}var rg=Ge(Ze());var ks=class extends rg.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");d(this,"isDestroyed",!1);this.userId=e.userId,this.tinyId=e.tinyId,this._room=e.room,this._sdpSemantics=e.room.sdpSemantics,this._isUplink=e.isUplink,this._log=C.createLogger({parent:this._room.getLogger(),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)}destroy(){this.isDestroyed=!0}emitConnectionStateChangedEvent(e){return e===this._currentState?!1:(S.emit(A.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"))}};function vm(s){let{when:i,onSkip:e}=s;return K((t,r)=>function(...o){return f(this,null,function*(){if(i.apply(this,o)){e==null||e.call(this,r,...o);return}return t.apply(this,o)})})}var Nm=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=C.createLogger({id:"bvd"})}getWorker(){if(!this.worker){let i=`
|
|
117
|
+
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)};
|
|
118
|
+
`,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:o,trackId:n,message:a,count:c}=r.data;if(o==="black")(l=this.callbacks.get(n))==null||l();else if(o==="log")this._log.warn(a);else if(o==="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:o}){if(this._log.debug("start detect black video",i.id),!On()||!o||!i||typeof Worker=="undefined"){this._log.warn("black video detector not supported");return}let n=a=>{var l,u,m,p;let c;if(e)c=(u=(l=a.msg_up_stream_info)==null?void 0:l.msg_video_status)==null?void 0:u.filter(h=>h.uint32_video_stream_type===3)[0];else{let h=(m=a.msg_down_stream_info)==null?void 0:m.filter(E=>{var g;return((g=E.msg_user_info)==null?void 0:g.str_identifier)===r})[0];c=(p=h==null?void 0:h.msg_video_status)==null?void 0:p.filter(E=>E.uint32_video_stream_type===3)[0]}if(c){let h=(c.uint32_video_codec_bitrate||0)/1e3;if(this.sleep[i.id]&&this.sleep[i.id]>0){this.sleep[i.id]-=1;return}h>0&&h<10&&(this.sleep[i.id]=30,this._log.info("track bitrate",h,"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,o),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)}},_r=new Nm;var Jo=class extends ks{constructor(e){super(w(M({},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:o,smallVideoRtxSsrc:n,auxVideoSsrc:a,auxVideoRtxSsrc:c}=this.singlePC.uplinkSSRC;return{audio:e||0,video:t||0,videoRtx:r||0,small:o||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){try{if(!e&&this._checkPublishStateTimeoutId>0)return;let{serverPublishState:t}=this,{publishState:r}=this._room,o=Object.keys(r).filter(n=>{if(r[n]!==t[n]&&r[n])switch(n){case"audio":return!(!this.localMainAudioTrack||!this.localMainAudioTrack.isMediaTrackActive);case"bigVideo":case"smallVideo":return!(!this.localMainVideoTrack||!this.localMainVideoTrack.isMediaTrackActive);case"auxVideo":return!(!this.localAuxVideoTrack||!this.localAuxVideoTrack.isMediaTrackActive)}return!1});if(o.length>0){if(e)y.addCount({key:521e3}),o.forEach(n=>{this._log.warn(`${n} publish failed during call ${Mt()} ${Dt()}`),y.addEnum({key:521719,value:sg[n]})});else{this._checkPublishStateTimeoutId=ce.run("timeout",()=>this.checkPublishState(!0),{delay:10*1e3,count:1});return}ce.clearTask(this._checkPublishStateTimeoutId),this._checkPublishStateTimeoutId=-1}}catch(t){this._log.warn("checkPublishState failed",t)}}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get serverPublishState(){return{audio:!!(this.flag&Ir),bigVideo:!!(this.flag&Sr),smallVideo:!!(this.flag&en),auxVideo:!!(this.flag&Xr)}}initialize(){this.installEvents()}close(e){var r;let t=((r=this._peerConnection)==null?void 0:r.getSenders())||[];for(let o of t)o.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,o=super.emitConnectionStateChangedEvent(e);return o&&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}))),o}onVideoEncodeFailed(e){return f(this,null,function*(){if(!e||!e.isMediaTrackActive)return;let{videoCodec:t,singlePC:r}=this;if(!r)return;let o={h265:{supported:r.isH264EncodeSupported,target:"h264",log:"h265 encoder not working"},h264:{supported:r.isVP8EncodeSupported,target:"vp8",log:"h264 encoder not working"},vp8:{supported:!1,target:"vp8",log:"vp8 encoder not working, no fallback available"}};if(t==="vp9"||t==="av1")return;let n=o[t];this._log.warn(n.log),n!=null&&n.supported&&(yield r.switchVideoEncoder(n.target))})}publish(o){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){var c,l,u,m,p,h,E;if(!this.singlePC)return;if(this.installEvents(),this.installTrackMuteEvents(e,t),t&&(t.retryEncodeFailed=this.onVideoEncodeFailed.bind(this)),yield this.singlePC.waitForPeerConnectionConnected(),e&&(this._publishingLocalAudioTrack=e),t){if(!this.singlePC.isH264EncodeSupported&&!this.singlePC.isVP8EncodeSupported)throw new D({code:I.NOT_SUPPORTED_H264,message:G({key:H.NOT_SUPPORTED_H264ENCODE})});this.singlePC.isUsingH264&&!this.singlePC.isH264EncodeSupported&&this.singlePC.isVP8EncodeSupported&&(this._log.warn("h264 encoder not supported"),yield this.singlePC.switchVideoEncoder("vp8")),fe&&no()===115&&t.profile.width*t.profile.height<=640*360&&(this._log.warn(`fallback video to defaultBigVideoProfile: ${JSON.stringify(Tr)}`),t.setProfile(Tr),yield t.applyProfile()),this._publishingLocalVideoTrack=t}this._isPublishingAux=r;let n;if(t&&!r&&t.small&&(n=this._room.videoManager.smallTrack),yield this._signalChannel.sendWaitForResponseWithRetry({command:Q.SPC_PUBLISH,responseCommand:q.SPC_PUBLISH_RESULT,data:w(M({},this.singlePC.uplinkSSRC),{state:this._room.publishState,muteState:this._room.muteState}),retries:3}),t&&(yield this.checkHighProfile({streamType:t.streamType,newWidth:t.settings.width,newHeight:t.settings.height})),yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:n,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:g}=t;yield this.singlePC.setScaleResolutionDownBy(this._peerConnection.getSenders()[r?3:1],g,t.streamType)}e&&(this[r?"localAuxAudioTrack":"localMainAudioTrack"]=e),yield this.singlePC.setBandwidth({audio:((c=this.localMainAudioTrack)==null?void 0:c.profile.bitrate)||((l=this.localAuxAudioTrack)==null?void 0:l.profile.bitrate),bigVideo:(u=this.localMainVideoTrack)==null?void 0:u.profile.bitrate,smallVideo:(p=(m=this.localMainVideoTrack)==null?void 0:m.small)==null?void 0:p.bitrate,auxVideo:(h=this.localAuxVideoTrack)==null?void 0:h.profile.bitrate}),this.sendMediaSettings();let a=r?7:2;(this._room.preferHW||(E=this._room.scheduleResult.config)!=null&&E.preferHW)&&t&&t.profile.width*t.profile.height>=1280*720&&this.singlePC.useHWEncoder(!0,a)})}publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:o}){if(!It())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=[],m=(h,E,g)=>{var N;let R=c[E].sender.replaceTrack(g);u.push(E),(N=this.singlePC)!=null&&N.enableInsertableStreams&&R.then(()=>this.createEncodedStreams(c[E].sender,h)),this.initSenderTransform(c[E].sender,h),l.push(R)};a&&m(e.mediaType,0,a),n&&m(t.mediaType,o?3:1,n),t!=null&&t.small&&l.push(this.publishSmall(this._room.videoManager.smallMode,t));let p=this.singlePC.setTransceiverDirection(de.SENDONLY,u);return l.push(p),Promise.all(l)}getTrackByMediaType(e){switch(e){case 1:return this.localMainAudioTrack||this._room.localMainAudioTrack;case 4:case 8:return this.localMainVideoTrack||this._room.localMainVideoTrack;case 2:return this.localAuxVideoTrack||this._room.localAuxVideoTrack;default:return null}}createEncodedStreams(e,t){var a,c;if(this.singlePC.insertableStreamsAbortMap.has(e))return;let r=e.createEncodedStreams(),o=new AbortController;(a=this.singlePC)==null||a.addAbortController(e,o),((c=this.getTrackByMediaType(t))!=null&&c.enableEncodeFrame?r.readable.pipeThrough(new TransformStream({transform:(l,u)=>{var p,h;let m=this.getTrackByMediaType(t);if(!m||!m.encodeFrame)return u.enqueue(l);m.isAudio?u.enqueue(m.enableEncodeFrame?m.encodeFrame(l):l):u.enqueue((p=this.singlePC)!=null&&p.isUsingH264||(h=this.singlePC)!=null&&h.isUsingH265?m.encodeFrame(l,t===8):l)}}),o):r.readable).pipeTo(r.writable,o).catch(l=>{this._log.debug("encoded stream error",l),l!=="destroy"&&this._log.warn(l)})}initSenderTransform(e,t){if(!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||!fo)return;let r=t!==2,o=t===8;e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!1,isAudio:t===1,isMain:r,isSmall:o}))}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"&&!wc()){this._log.warn("canvas mode small stream is not supported");return}let o=this._peerConnection.getTransceivers(),{sender:n}=o[2],a=yield this.doPublishSmall(e,t),c=e==="canvas"?524700:524701;if(y.addSuccessEvent({key:c}),!a){y.addFailedEvent({key:c,error:10001});return}(l=this.singlePC)!=null&&l.enableInsertableStreams&&this.createEncodedStreams(n,8),this.initSenderTransform(n,8),yield this.singlePC.setTransceiverDirection(de.SENDONLY,[2]),this.updateMediaSettings(),yield this.doPublishChange(),n.track&&(this._blackSmallVideoDetectionId=_r.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;y.addFailedEvent({key:u,error:10002}),_r.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 o=this._peerConnection.getTransceivers(),{sender:n}=o[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=Qs(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(de.INACTIVE,[2]),this.updateMediaSettings(),yield this.doPublishChange(),_r.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0})}checkHighProfile(e){return f(this,null,function*(){var a,c;let t=((a=this._room.scheduleResult.config)==null?void 0:a.profileLevelId)||{},r=e.streamType==="main"?"big":"aux";if(t[r]!=="high")return;let n=e.newWidth*e.newHeight>=1280*720&&!Ql();try{yield(c=this.singlePC)==null?void 0:c.setH264ProfileLevelId(e.streamType,n)}catch(l){this._log.warn("setH264ProfileLevelId failed, ignore",l)}})}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 o=t&&t===this.localAuxVideoTrack||e&&e===this.localAuxAudioTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),c=[];e&&(o?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localMainAudioTrack&&!this.localAuxAudioTrack&&(yield a[0].replaceTrack(null),c.push(0))),n&&(o?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=w(M({},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(M({},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(de.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._room.publishState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponseWithRetry({command:Q.PUBLISH_STATE_CHANGE,data:t,responseCommand:q.PUBLISH_STATE_CHANGE_RESULT,enableLog:e,retries:3});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:Q.UNPUBLISH,commandDesc:"unpublish",responseCommand:q.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===I.API_CALL_TIMEOUT||t.getCode()===I.API_CALL_ABORTED)return Promise.resolve();throw t})}updateMediaSettings(){var o,n;this._mediaSettings.videoCodec=((o=this.singlePC)==null?void 0:o.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),Di){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||0)/c||0,this._mediaSettings.videoHeight=(a.height||0)/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||0)/c||0,this._mediaSettings.auxVideoHeight=(a.height||0)/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:Q.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:q.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?_.AUXILIARY:_.MAIN} stream`),kr()&&(yield this.addTrackByTransceiver(e,t))})}addTrackByTransceiver(e,t){return f(this,null,function*(){var o;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===_.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((o=this.localMainVideoTrack)!=null&&o.small)&&this._room.videoManager.smallTrack&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===de.INACTIVE&&(yield this.singlePC.setTransceiverDirection(de.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?_.AUXILIARY:_.MAIN} stream`),kr()&&(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===_.AUDIO)yield r[0].sender.replaceTrack(null);else{let o=t?3:1;yield r[o].sender.replaceTrack(null),o===1&&this._room.videoManager.hasSmall&&(yield r[2].sender.replaceTrack(null)),yield this.singlePC.setTransceiverDirection(de.INACTIVE,[o])}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 o=e.mediaType===2||e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${r.kind} track ${r.id} ${r.label} on ${o?_.AUXILIARY:_.MAIN} stream`),r.kind===_.AUDIO&&t[0]&&(yield t[0].replaceTrack(r)),r.kind===_.VIDEO&&(!o&&t[1]&&(yield t[1].replaceTrack(r)),o&&t[3]&&(yield t[3].replaceTrack(r))),!0})}setBandwidth(o){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r}){if(this.singlePC){let n={};t===_.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._room.muteState)}`),this._signalChannel.sendWaitForResponseWithRetry({command:Q.UPDATE_MUTE_STAT,responseCommand:q.MUTE_RESULT,data:this._room.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&S.emit(A.SEND_FIRST_VIDEO_FRAME,{room:this._room})}getVideoTrackId(e=_.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===_.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===_.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===_.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===_.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===zr?(this._log.error(Xe.NOT_SUPPORTED_H264ENCODE),new D({code:I.NOT_SUPPORTED_H264,message:G({key:H.NOT_SUPPORTED_H264ENCODE})})):new D({code:I.UNKNOWN,message:G({key:H.SIGNAL_RESPONSE_FAILED,data:{signalResponse:q.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}))})}};O([Ct(({localVideoTrack:e})=>{e==null||delete e.retryEncodeFailed})],Jo.prototype,"unpublish",1),O([vm({when(){return this.isDestroyed}})],Jo.prototype,"doPublishChange",1),O([vm({when(){return this.isDestroyed}})],Jo.prototype,"doUnpublish",1);var sg=(r=>(r[r.audio=1]="audio",r[r.bigVideo=2]="bigVideo",r[r.smallVideo=3]="smallVideo",r[r.auxVideo=4]="auxVideo",r))(sg||{}),Dm=Jo;function og(s){return Object.keys(s).filter(i=>s[i])}var jo=class extends ks{constructor(e){super(w(M({},e),{isUplink:!1}));d(this,"_flag",0);d(this,"isRobot",!1);d(this,"role","anchor");d(this,"fromType");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");d(this,"avPlayerStateSyncManager");d(this,"isDataChannelSubscribed",!1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.fromType=e.fromType,this.remoteAudioTrack=new Si(this._room,this),this.remoteVideoTrack=new wi(this._room,this),this.remoteAuxiliaryTrack=new Po(this._room,this),this.avPlayerStateSyncManager=new lr({log:this._log,audioPlayer:this.remoteAudioTrack.player,videoPlayer:this.remoteVideoTrack.player}),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,datachannel:this.isDataChannelSubscribed}}get muteState(){return oi(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,o;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(o=this.remoteAuxiliaryTrack)==null||o.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===_.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.avPlayerStateSyncManager.destroy(),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 o,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((o=this.remoteVideoTrack)==null||o.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,m;let t=e.streams[0],{track:r,receiver:o}=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=_.AUDIO;r.kind===_.VIDEO&&(c=a===_.MAIN?_.VIDEO:_.AUXILIARY);let l=this.remoteAudioTrack;c===_.VIDEO?l=this.remoteVideoTrack:c===_.AUXILIARY&&(l=this.remoteAuxiliaryTrack),(u=this.singlePC)==null||u.receiverRemoteTrackMap.set(o,l),(m=this.singlePC)!=null&&m.scriptTransformWorker&&this.initReceiverTransform(o,a,r.kind===_.AUDIO),this.singlePC.enableInsertableStreams&&this.createEncodedStreams(o),l.setInputMediaStreamTrack(r)}createEncodedStreams(e){if(!this.singlePC.insertableStreamsAbortMap.has(e)){let t=e.createEncodedStreams(),r=new AbortController,o={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=o.enqueue(n);c&&a.enqueue(c)}})).pipeTo(t.writable,r).catch(n=>{n!=="destroy"&&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,o;try{let n=!0;if(this._log.info(`subscribe ${t} ${og(e)}`),this.hasSSRC){let l="subscribe_change";Object.values(e).find(u=>u===!0)||(l="unsubscribe"),yield this.sendSubscription(l,e)}else{if(yield this._room.switchRoomSubedReq,(r=this.singlePC)!=null&&r.autoSubscribedUserMap.size){let l=this.singlePC.autoSubscribedUserMap.get(this.userId);if(l){this.singlePC.autoSubscribedUserMap.delete(this.userId);let u=(o=this.singlePC.autoSubscribedSsrcGroups.get(this._room.roomId))==null?void 0:o[l.groupIndex];u&&(this.ssrc={audio:u.audioSsrc,video:u.bigVideoSsrc,videoRtx:u.bigVideoRtxSsrc,auxiliary:u.auxVideoSsrc,auxiliaryRtx:u.auxVideoRtxSsrc},n=!1)}}yield this.doSubscribe(e,n),this.checkTrackEnded(e)}let{user:a,mediaTrack:c}=this.remoteVideoTrack;e.smallVideo&&c?(y.addSuccessEvent({key:524702}),this._blackSmallVideoDetectionId=_r.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),y.addFailedEvent({key:524702}),_r.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0}})):(_r.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 D({code:I.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):n}})}checkTrackEnded(e){var t,r,o;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&&((o=this.remoteAuxiliaryTrack.mediaTrack)==null?void 0:o.readyState)==="ended")&&this.singlePC&&!this.singlePC.isReconnecting){if(this._log.warn("remote track ended start spc reconnect"),tt&&et<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 o=M({},this.subscribeState);e.forEach(c=>{switch(c.mediaType){case 1:o.audio=!1;break;case 4:o.video=!1;break;case 8:o.smallVideo=!1;break;case 2:o.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(o).find(c=>c===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${og(o)}]`),n==="unsubscribe"&&((a=this.singlePC)==null||a.removeDownlinkQueue.add(this.tinyId)),yield this.sendSubscription(n,o),t==="main"&&(_r.stop(this._blackSmallVideoDetectionId),this._blackSmallVideoDetectionId=void 0),n==="unsubscribe"&&(yield this.removeDownlink())})}subscribeDataChannel(){return f(this,null,function*(){if(!this.singlePC)return;yield this.singlePC.waitForPeerConnectionConnected();let e=w(M({},this.subscribeState),{datachannel:!0});yield this.doSubscribe(e)})}unsubscribeDataChannel(){return f(this,null,function*(){let e=w(M({},this.subscribeState),{datachannel:!1});yield this.sendSubscription("unsubscribe",e),yield this.removeDownlink()})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},o=Q.UNSUBSCRIBE,n=q.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,customData:t.datachannel,srcTinyId:this.tinyId},o=Q.SUBSCRIBE_CHANGE,n=q.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponseWithRetry({command:o,data:r,responseCommand:n,timeout:1e4,retries:3}).then(({data:a})=>{if(a.code!==0){let c=new D({code:a.code,message:G({key:H.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.isDataChannelSubscribed)&&(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){var r,o;if(this.singlePC){this.singlePC.addDownlinkQueue.add(this.tinyId),yield this.singlePC.waitForPeerConnectionConnected();try{if(t||!this.hasSSRC){let n={audioSsrc:Ft(),bigVideoSsrc:Ft(),bigVideoRtxSsrc:Ft(),auxVideoSsrc:Ft(),auxVideoRtxSsrc:Ft()},{audioSsrc:a,bigVideoSsrc:c,bigVideoRtxSsrc:l,auxVideoSsrc:u,auxVideoRtxSsrc:m}=n;this.ssrc={audio:a,video:c,videoRtx:l,auxiliary:u,auxiliaryRtx:m},this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc});try{let p=yield this._signalChannel.sendWaitForResponseWithRetry({command:Q.SPC_SUBSCRIBE,responseCommand:q.SPC_SUBSCRIBE_RESULT,data:{srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:(r=e.datachannel)!=null?r:!1,ssrc:n},retries:3,retryTimeout:0});if(p.data.code!==0&&p.data.code!==-10036)throw new D({code:p.data.code,message:p.data.message});this.isDataChannelSubscribed=(o=e.datachannel)!=null?o:!1}catch(p){throw yield this.removeDownlink(),p}return}this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc})}finally{if(!(!e.audio&&!e.video&&!e.smallVideo&&!e.auxiliary&&e.datachannel)&&_o){let{main:a,aux:c}=this._room.jitterBufferDelay||{},{jitterDelay:l=a,jitterDelayAux:u=c}=this._room.scheduleResult.config||{};(te(l)||te(u))&&this.setJitterBufferDelay({mainDelay:l,auxDelay:u})}}}})}removeDownlink(){return f(this,null,function*(){if(!this.singlePC)return;this.isDataChannelSubscribed=!1,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(!_o||!this.singlePC||!this._peerConnection||St(e)&&St(t))return Promise.resolve();this._log.info(`set jitterBuffer main: ${e} aux: ${t}`);let r=this.singlePC.getReceiversByUserId(this.userId);return te(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),te(t)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=t,St(e)&&(this.remoteAudioTrack.jitterBufferDelay=t)),new Promise(o=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o})})}doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o}){try{if(e===0&&t===0)return r.forEach(a=>a.jitterBufferTarget=0),o();if(r.forEach(a=>{var m;let c=a.track===this.remoteAuxiliaryTrack.outMediaTrack||St(e)&&a.track===this.remoteAudioTrack.outMediaTrack;if(c&&St(t)||!c&&St(e))return;let l=c?t||0:e,u=(a.jitterBufferTarget||0)+100;u>l||(a.jitterBufferTarget=u,this._log.debug(`set ${c?"aux ":""}${(m=a==null?void 0:a.track)==null?void 0:m.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`),o();this.jitterBufferTimeoutId=setTimeout(()=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o})},1e3)}catch(n){this._log.warn(`set jitterBuffer delay error: ${n}`),clearTimeout(this.jitterBufferTimeoutId),o()}}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()}};O([or(),K(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this.off("closed",n),o(new D({code:I.API_CALL_ABORTED,message:G({key:H.CONNECTION_ABORTED,data:a})}))};this.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this.off("closed",n)})})})],jo.prototype,"subscribe",1),O([or()],jo.prototype,"unsubscribe",1),O([Ti(()=>"jitter")],jo.prototype,"setJitterBufferDelay",1);var ng=jo;function ag(){return K(s=>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;S.emit("61",{room:this});let e=s.apply(this,i);return Promise.all(i.map(t=>t.publish(this,e)))})})}function cg(){return K(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>t.unpublish()),e})}var dg=Ge(Ze());function JI(){return Math.floor(Math.random()*16383)}var il=class il extends dg.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=C.createLogger({parent:e.getLogger(),id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),t.on(q.RECEIVE_CUSTOM_MSG,this.onReceiveMsg),this.room.on("peer-leave",({userId:r})=>{[...this.messageMap.keys()].forEach(o=>{o.split("_").slice(0,-1).join("_")===r&&this.messageMap.delete(o)})})}send({cmdId:e,data:t}){let r=this.cmdIdSeqMap.get(e)||JI(),o={cmdId:e,msg:btoa(String.fromCharCode(...new Uint8Array(t))),ordered:!0,reliable:!0,streamSeq:r};this.cmdIdSeqMap.set(e,r+1),this.signalChannel.send(Q.SEND_CUSTOM_MSG,o),this.log.debug(`send custom msg: ${JSON.stringify(o)}`)}onReceiveMsg(e){let{data:t}=e.data,r=this.room.tinyIdToUserIdMap.get(t.srcTinyId);if(r){let o={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}_${o.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(o,!0),100)),a.cachedMessageMap.set(o.seq,{message:o});else if(Math.abs(a.lastSeq-o.seq)>il.SEQ_INTERVAL)this.messageMap.set(n,{lastSeq:o.seq,cachedMessageMap:new Map}),this.emitMessage(o);else if(o.seq>a.lastSeq){if(o.seq===a.lastSeq+1)this.emitMessage(o);else if(!a.cachedMessageMap.has(o.seq)){let c=setTimeout(()=>this.emitMessage(o,!0),5e3);a.cachedMessageMap.set(o.seq,{message:o,timeoutId:c})}}else this.log.debug(`drop message ${o.userId}-${o.cmdId}-${o.seq}`)}else this.emit("message",o)}else{this.log.warn(`receive msg from unknown user, wait peer-join tinyId: ${t.srcTinyId}`);let o=n=>{n.tinyId===t.srcTinyId&&(this.room.off("peer-join",o),this.onReceiveMsg(e))};this.room.on("peer-join",o),Ke(2e3).then(()=>this.room.off("peer-join",o))}}emitMessage(e,t=!1){var a;let r=this.messageMap.get(`${e.userId}_${e.cmdId}`),o=e;if(r){if(t){let c=[...r.cachedMessageMap.values()].sort((l,u)=>l.message.seq-u.message.seq);c[0]&&(o=c[0].message)}r.lastSeq!==0&&o.seq-r.lastSeq>1&&this.log.debug(`msg lost userId: ${o.userId} seq: ${r.lastSeq} -> ${o.seq}`),r.lastSeq=o.seq,clearTimeout((a=r.cachedMessageMap.get(o.seq))==null?void 0:a.timeoutId),r.cachedMessageMap.delete(o.seq)}this.log.debug(`receive custom msg: ${JSON.stringify(o)}`),this.emit("message",o);let n=r==null?void 0:r.cachedMessageMap.get(o.seq+1);n&&this.emitMessage(n.message)}};d(il,"SEQ_INTERVAL",300);var tl=il;var{isString:lg,isUndefined:Ls,getNetworkType:jI,isEmpty:qI}=Tt,Ai=class extends Yd{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",po);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,"_enableDataChannel",!1);d(this,"preferHW",!1);d(this,"healthDetector");d(this,"playoutDelay");d(this,"jitterBufferDelay");d(this,"_updateAudioLevelTaskId",-1);d(this,"switchRoomSubedReq");d(this,"resolveSwitchRoomSubedReq");d(this,"enableVolumeControlInIOS");d(this,"capturedLocalMainAudioTrack");d(this,"capturedLocalMainVideoTrack");d(this,"capturedLocalAuxVideoTrack");d(this,"firewallDetector");this.firewallDetector=new Lo,this.firewallDetector.on("firewall-restriction",()=>{this._log.warn("firewall restriction"),this.emit("firewall-restriction")}),this._stats=new Ea(this,this._log),this.userManager=new Id(this.userId,this._log),this._version=We,this.sdpSemantics=Vs,Ls(e.sdpSemantics)?Mi.isUnifiedPlanDefault()&&(this.sdpSemantics=Ar):this.sdpSemantics=e.sdpSemantics,this._log.info(`sdpSemantics: ${this.sdpSemantics}, netType: ${jI()}`),e.iceTransportPolicy&&(this._iceTransportPolicy=e.iceTransportPolicy),this._enableMultiAuxStream=Ls(e.enableMultiAuxStream)?!1:e.enableMultiAuxStream,this.enableSEI=e.enableSEI&&po,!Ls(e.enableSPC)&&po&&(this.enableSPC=e.enableSPC),this.preferHW=!!e.preferHW,this.enableVolumeControlInIOS=e.enableVolumeControlInIOS,this._initBusinessInfo(e),this.healthDetector=new eg(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",o=>{this.emit("peer-join",o)}),this.userManager.on("8",o=>{this.emit("asr-robot-peer-join",o)}),this.userManager.on("9",o=>{this.emit("asr-robot-peer-leave",o)}),this.userManager.on("2",({userId:o,reason:n})=>{this.closeDownLinkConnection(o,"remote user exitRoom"),this.emit("peer-leave",{userId:o,reason:n})}),this.userManager.on("3",this.createDownlinkConnection,this),this.userManager.on("5",this.closeDownLinkConnection,this),this.userManager.on("6",n=>{var o=Ra(n,[]);S.emit(A.REMOTE_PUBLISH_STATE_CHANGED,M({room:this},o)),this.emit("remote-publish-state-changed",M({},o))}),this.joinParams=e,pe(e.enableDataChannel)&&(this._enableDataChannel=e.enableDataChannel),new Promise((o,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 D&&u.code===I.SPC_INITIALIZED_FAILED)(a=this.signalChannel)==null||a.destroy(),yield this.initialize();else return n(u)}let l=x();yield this.doJoin(e,(c=this.singlePC)==null?void 0:c.clientAbility),y.addSuccessEvent({key:521708,cost:x()-l}),o(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(l){y.addFailedEvent({key:521708,error:l}),n(l)}this._joinReject=null}))})}initSinglePC(){return f(this,null,function*(){if(!(!this.enableSPC||this.singlePC)){this.singlePC=new Kt({signalChannel:this.signalChannel,room:this,enableDataChannel:this._enableDataChannel}),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()),this.singlePC.on("data_channel_msg",e=>{let t=new TextDecoder().decode(e.data.data||e.data);try{this.emit("data-channel-message",{data:JSON.parse(t)})}catch(r){}});try{return yield this.singlePC.initialize()}catch(e){throw this.fallbackToMPC(),new D({code:I.SPC_INITIALIZED_FAILED,message:e==null?void 0:e.message})}}})}doJoin(e,t){return new Promise((r,o)=>f(this,null,function*(){var l,u,m,p,h,E,g,R;e.privateMapKey&&(this.privateMapKey=e.privateMapKey),e.latencyLevel&&(this.latencyLevel=e.latencyLevel),this.signalChannel.once(Ce.SETUP_FAILED,N=>{this.clearJoinTimeout(),S.emit(A.JOIN_SIGNAL_CONNECTION_END,{room:this,error:N}),o(N)}),pe((u=(l=this.scheduleResult)==null?void 0:l.config)==null?void 0:u.singlePC)&&po&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2),(!(((p=(m=this.scheduleResult)==null?void 0:m.config)==null?void 0:p.jitterDelay)||((E=(h=this.scheduleResult)==null?void 0:h.config)==null?void 0:E.jitterDelayAux))||!_o)&&t&&this.playoutDelay&&(this._log.info("set playoutDelay",JSON.stringify(this.playoutDelay)),t.playoutDelay=this.playoutDelay);let a={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:Zl(),netType:Zr(),bussinessInfo:this._businessInfo,ability:t,sdkType:this._sdkType,userSig:this.userSig,receiveMix:!0,isChorus:!!this.enableChorus,enableNtpAudioFrame:!!this.enableChorus&&Mn(),transcription:this._enableDataChannel,downUseVp8:((g=this.scheduleResult.config)==null?void 0:g.downUseVp8)||!1};this._log.debug(`join room signal data: ${JSON.stringify(a)}`);let c=5e3;(R=this.scheduleResult.config)!=null&&R.enterRoomTimeout&&this.scheduleResult.config.enterRoomTimeout>=1&&(c=this.scheduleResult.config.enterRoomTimeout*1e3),this._joinTimeout=window.setTimeout(()=>{o(new D({code:I.JOIN_ROOM_FAILED,message:G({key:H.JOIN_ROOM_TIMEOUT})}))},c),S.emit(A.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?Q.SPC_JOIN_ROOM:Q.JOIN_ROOM,a),this.signalChannel.once(q.JOIN_ROOM_RESULT,N=>f(this,null,function*(){this.clearJoinTimeout();let{code:j,message:V,data:ae,tinyId:b}=N.data;S.emit(A.JOIN_RECEIVED_CMD_RES,{room:this,code:j}),j===0?(this._log.info("Join room success, start heartbeat"),b&&(this.tinyId=b),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=ae.publishers,this._iceServersFromJoin=ae.iceServer?[ae.iceServer]:[],this.singlePC&&this.singlePC.setIceServers(this.getIceServers()).then(()=>{var $;($=this.singlePC)==null||$.connect(w(M({},ae.ability),{useVp8:ae.ability.useVp8||!!e.useVp8,useH265:ae.ability.useH265&&!!e.useH265})).catch(()=>{})}),r()):(this._log.error(`Join room failed result: ${j} error: ${V}`),o(new D({code:I.JOIN_ROOM_FAILED,extraCode:j,message:G({key:H.JOIN_ROOM_FAILED,data:{error:V,code:j}})})))}))}))}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(M({},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:Oe.REJOIN}),this.singlePC){let r=o=>{var n;o.state==="CONNECTED"&&((n=this.singlePC)==null||n.off(fr.CONNECTION_STATE_CHANGED,r),this.uplinkConnection instanceof Dm&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(a=>{a.installEvents(),a.onSinglePCReconnected()}))};this.singlePC.on(fr.CONNECTION_STATE_CHANGED,r),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof ga&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(e){this._log.warn(`reJoin fail ${e}`),this.reset(),se.logFailedEvent({userId:this.userId,eventType:Oe.REJOIN,error:e}),this.emit("error",new D({code:I.JOIN_ROOM_FAILED,message:G({key:H.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}})}initialize(){return f(this,null,function*(){let{mainUrl:e,backupUrl:t}=this.getSignalChannelUrl(),r=this.signalChannel||b_(this.userId),o=!!(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(`${o?"reuse":"setup"} signal channel`),o?(r.url=e,r.backupUrl=t,r.room=this,this.signalChannel=r):(r&&r.close(),this.signalChannel=new Bo({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 tl(this,this.signalChannel),this._customMessageManager.on("message",a=>{this.emit("custom-message",a)})),this.networkQuality||(this.networkQuality=new Wo({signalChannel:this.signalChannel,room:this}),this.networkQuality.on(Wo.EVENT_NETWORK_QUALITY,a=>{var c;this.emit("network-quality",a),(c=this.singlePC)==null||c.detectTCPAndUDP(a)})),it(this,this.signalChannel).add(Ce.CONNECTION_STATE_CHANGED,a=>{S.emit(A.SIGNAL_CONNECTION_STATE_CHANGED,M({room:this},a)),this.emit("signal-connection-state-changed",a)}).add(Ce.RECONNECT_FAILED,a=>{this.reset(),this.emit("error",a)}).add(q.PEER_JOIN,a=>{let{srcTinyId:c,userId:l,role:u,fromType:m}=a.data.data;this.userManager.addUser({userId:l,tinyId:c,role:u,fromType:m})}).add(q.PEER_LEAVE,a=>{let{userId:c,reason:l=0}=a.data.data;this.userManager.deleteUser(c,l)}).add(q.UPDATE_REMOTE_MUTE_STAT,a=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=10*1e3&&this.doHeartbeat(),this.onPublishedUserList(a.data)}).add(q.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(q.SEND_SWITCH_ROOM_SUBED_REQ,a=>{if(!this.singlePC)return;let{subList:c}=a.data.data;this._log.info(`auto subscribe ${Et(c,{keysToInclude:["userId"]})}`),c.forEach(l=>{this.singlePC.autoSubscribedUserMap.set(l.userId,l)}),this.resolveSwitchRoomSubedReq()}).add(q.FALLBACK_CODEC,a=>f(this,null,function*(){var l,u,m,p,h;let c=a.data.data;((l=c.videoControlInfo)==null?void 0:l.enableH265Enc)===0&&((u=this.singlePC)==null?void 0:u.videoCodec)==="h265"&&(this._log.warn(`fallback codec enableH265Enc: ${(m=c.videoControlInfo)==null?void 0:m.enableH265Enc}`),y.addCount({key:513e3}),yield(p=this.singlePC)==null?void 0:p.switchVideoEncoder("h264"),yield(h=this.uplinkConnection)==null?void 0:h.sendMediaSettings())})),this.signalChannel.once(Ce.SETUP_SUCCESS,a=>{this.tinyId=a.signalInfo.tinyId,S.emit(A.JOIN_SIGNAL_CONNECTION_END,{room:this})}),S.emit(A.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),o&&S.emit(A.JOIN_SIGNAL_CONNECTION_END,{room:this}),o})}setSignalChannel(e){this.signalChannel=e,e||Fe(this)}leave(){return f(this,null,function*(){var e;try{yield this.doHeartbeat()}catch(t){}this._log.info("leave() => leaving room"),S.emit(A.LEAVE_SEND_CMD,{room:this}),(e=this.signalChannel)==null||e.send(Q.LEAVE_ROOM),this.switchRoomSubedReq=void 0,this._changeBigSmallRecords.clear()})}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=ce.run("ric",this.doHeartbeat.bind(this),{delay:2e3}),this.enableChorus&&this.startUpdateNTPTime())}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),ce.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?Uf(this.userId):[],o=w(M({str_sdk_version:Yo,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:M({uint32_terminal_type:15,str_device_name:Dt(),str_os_version:"",uint32_net_type:Zr()},t.msg_device_info)});if(this.heartbeatReport=o,this.heartbeatCount++,S.emit(A.HEARTBEAT_REPORT,{room:this,report:o}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(Q.ON_QUALITY_REPORT,o);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(M({},o),{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=!1,r=e.data.userList||[],o=e.data.mixRobotList||[],n=[];for(let l of r){if(l.flag===ml)continue;let{userId:u,srcTinyId:m,flag:p,fromType:h}=l;u===this.userId&&(t=!0,this.uplinkConnection&&(this.uplinkConnection.flag=p),this.localPublishFlag!==p&&(this.localPublishFlag=p,this.emit("local-publish-flag-changed",p))),n.push({userId:u,tinyId:m,flag:p,fromType:h})}let c=[...o.map(({userId:l,srcTinyId:u,flag:m,mixUserList:p,fromType:h})=>({userId:l,tinyId:u,flag:m,isRobot:!0,mixUserList:p,fromType:h})),...n];c.forEach(({userId:l})=>{let u=this.remotePublishedUserMap.get(l);u&&this.checkSubscribeBigSmallVideo(u)}),e.data.fakeMixUser&&(e.data.fakeMixUser.tinyId=e.data.fakeMixUser.srcTinyId,c.push(e.data.fakeMixUser)),S.emit(A.RECEIVED_PUBLISHED_USER_LIST,{room:this,publishedUserList:c}),t||(this.localPublishFlag=0,this.emit("local-publish-flag-changed",0)),this.userManager.setRemotePublishedUserList(c)}closeUplink(e="you unpublished"){this.uplinkConnection&&(this.localTracks.size>0&&this.uplinkConnection.doUnpublish().catch(()=>{}),this.uplinkConnection.close(e),e==="you exitRoom"&&(this.uplinkConnection.destroy(),this.uplinkConnection=null),this.uplinkConnection instanceof ga&&(this.uplinkConnection=null)),this.localTracks.forEach(t=>t.unpublish()),this.localTracks.clear()}createDownlinkConnection({userId:e,tinyId:t,flag:r,isRobot:o,fromType:n}){let a=new(this.singlePC?ng:fm)({userId:e,tinyId:t,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:r,isRobot:o,fromType:n});this.userManager.addRemotePublishedUser(a),this.installDownlinkEvents(a,e),this.emit("remote-published",a)}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 o=r.getCode();o!==I.ICE_TRANSPORT_ERROR&&(o===I.DOWNLINK_RECONNECTION_FAILED&&this.closeDownLinkConnection(t),this.emit("error",r))}),e.on("connection-state-changed",r=>{this.emit("media-connection-state-changed",w(M({},r),{userId:e.userId}))})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=ce.run("ric",this.syncUserList.bind(this)))}stopSyncUserListInterval(){ce.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:Q.GET_USER_LIST,responseCommand:q.USER_LIST_RES,enableLog:!1,timeout:2e3}).then(({data:t})=>{let{code:r,message:o}=t;if(r===0)return(t.data&&t.data.userList||[]).map(({userId:a,srcTinyId:c,role:l,fromType:u})=>({userId:a,tinyId:c,role:l,fromType:u}));throw G({key:H.SIGNAL_RESPONSE_FAILED,data:{signalResponse:q.USER_LIST_RES,code:r,message:o}})}):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||!dm)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)===be.CLOSED&&!this.singlePC.isReconnecting&&(this._log.warn("spc pc is closed but not reconnect"),this.singlePC.startReconnection()):this.getAllConnections().forEach(r=>{if(r instanceof _t&&!r.getIsReconnecting()){let o=r.getPeerConnection();o&&o.connectionState===be.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 ga({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 fm({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 D({code:I.INVALID_OPERATION,message:G({key:H.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.firewallDetector.destroy(),this.removeAllListeners(),this.healthDetector.destroy(),ce.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:Q.SWITCH_ROLE,data:{role:e==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:q.SWITCH_ROLE_RES,retries:1};return this._log.info(`switchRole signal data: ${JSON.stringify(t.data)}`),this.signalChannel.sendWaitForResponseWithRetry(t).then(r=>{let{code:o,message:n}=r.data;if(o!==0)throw new D({code:I.SWITCH_ROLE_FAILED,message:G({key:H.SWITCH_ROLE_FAILED,data:{message:n,code:o}})});this.role=e}).catch(r=>{throw r instanceof D&&r.getCode()===I.API_CALL_TIMEOUT&&(r=new D({code:I.SWITCH_ROLE_FAILED,message:G({key:H.SWITCH_ROLE_TIMEOUT})})),this._log.error(r),r})}subscribeDataChannel(){return f(this,null,function*(){if(this.remotePublishedUserMap.size===0)return;let e=[...this.remotePublishedUserMap.values()].filter(t=>t.fromType===Hs);this._log.info("subscribeDataChannel",e.map(t=>t.userId)),yield Promise.all(e.map(t=>f(this,null,function*(){try{yield t.subscribe(w(M({},t.subscribeState),{datachannel:!0}),"main")}catch(r){this._log.error("subscribeDataChannel failed:",t.userId,r)}})))})}unsubscribeDataChannel(){return f(this,null,function*(){if(this.remotePublishedUserMap.size===0)return;let e=[...this.remotePublishedUserMap.values()].filter(t=>t.fromType===Hs);this._log.info("unsubscribeDataChannel",e.map(t=>t.userId)),yield Promise.all(e.map(t=>t.unsubscribeDataChannel()))})}_initUplinkConnection(){this.uplinkConnection=this.singlePC?new Dm({userId:this.userId,tinyId:this.tinyId,room:this}):new ga({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),this.uplinkConnection.on("connection-state-changed",e=>{this.emit("media-connection-state-changed",w(M({},e),{userId:this.userId}))}),this.uplinkConnection.on("error",e=>{let t=e.getCode();t!==I.ICE_TRANSPORT_ERROR&&(t===I.UPLINK_RECONNECTION_FAILED&&this.closeUplink(),this.emit("error",e))})}publish(e){return f(this,null,function*(){var r;this.uplinkConnection||this._initUplinkConnection();let t=`${e.streamType} ${e.isAudio&&e.isScreen?"screen":""}${e.kind}`;this._log.info(`publish() => ${t}`),yield(r=this.singlePC)==null?void 0:r.waitForPeerConnectionConnected(),yield this.uplinkConnection.publish({localAudioTrack:e instanceof wt?e:null,localVideoTrack:e instanceof ze?e:null,isAuxiliary:e.streamType==="auxiliary"})})}unpublish(e){return f(this,null,function*(){if(!(this.scene==="live"&&this.role!=="anchor"||!this.isMainStreamPublished&&!this.isAuxStreamPublished||!this.uplinkConnection)){try{let t=`${e.streamType} ${e.isAudio&&e.isScreen?"screen":""}${e.kind}`;this._log.info(`unpublish() => ${t}`),yield this.uplinkConnection.unpublish({localAudioTrack:e instanceof wt?e:null,localVideoTrack:e instanceof ze?e:null})}catch(t){}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():(e.unpublish(),this.uplinkConnection.removeTrack(e))}replaceTrack(e){return!this.uplinkConnection||!e.mediaTrack||!Cu()?Promise.resolve():this.uplinkConnection.replaceTrack(e).then(t=>{t&&S.emit(A.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:_.VIDEO,videoType:_.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 o=e.find(n=>n.mediaType===2)?"auxiliary":"main";try{let n=M({},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),S.emit(A.SUBSCRIBE_START,{room:this,streamType:o,remotePublishedUser:r,subscribeState:n}),this._log.info(`subscribe() => ${t} ${o} ${e.map(c=>c.strMediaType).join(",")} [${Wd(n)}] prev: [${Wd(r.subscribeState)}]`),yield r.subscribe(n,o),this._log.info(`subscribe ${t} ${o} done`);for(let c of e)c.mediaTrack||(yield c.waitHasMediaTrack());S.emit(A.SUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:r})}catch(n){let a=n instanceof D?n.getCode():I.UNKNOWN,c=n;throw n instanceof D?a===I.REMOTE_STREAM_NOT_EXIST&&(c=new D({code:I.API_CALL_ABORTED,message:G({key:H.API_CALL_ABORTED,data:{message:n.message,userId:t,streamType:o}})}),this._log.warn(c)):(c=new D({code:a,message:G({key:H.SUBSCRIBE_FAILED,data:{message:n.message,userId:t,streamType:o}})}),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 o=e.find(n=>n.mediaType===2)?"auxiliary":"main";this._log.info(`unsubscribe() => ${t} ${o} ${e.map(n=>n.strMediaType).join(",")}`);try{yield r.unsubscribe({remoteTracks:e,streamType:o})}catch(n){this._log.warn(`unsubscribe() => failed ${n}`)}e.forEach(n=>{n.unsubscribe(),n.mediaType===8&&n.setMediaType(4)}),S.emit(A.UNSUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:r})})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAudioVolumeEvaluation(e=2e3,t){if(e<=0){this._enableAudioVolumeEvaluation=!1,ce.clearTask(this._audioVolumeIntervalId);return}e=Math.floor(Math.max(e,100)),S.emit(A.AUDIO_LEVEL_INTERVAL,{interval:e}),this._audioVolumeIntervalId&&ce.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=ce.run("intervalInWorker",()=>{var o;ms.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(e,t);let r=[];(o=this.remotePublishedUserMap)==null||o.forEach(n=>{if(n.muteState.hasAudio){!ms.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 o=Math.max(e,500);this._log.warn(`updateAudioLevelFromSenderStat ${o}`),this._updateAudioLevelTaskId=ce.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:o,backgroundTask:t})})}stopUpdateAudioLevelFromSenderStat(){var e;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),ce.clearTask(this._updateAudioLevelTaskId),this._updateAudioLevelTaskId=-1,(e=this.uplinkConnection)!=null&&e.localMainAudioTrack&&(this.uplinkConnection.localMainAudioTrack.volume=0))}updateDownlinkAudioLevelFromReceiver(e){var o;let{audioReceiver:t}=e;if(!yu||!t)return;let r=(o=t.getSynchronizationSources()[0])==null?void 0:o.audioLevel;te(r)?e.remoteAudioTrack.volume=Math.min(r*2,1):t.getStats().then(n=>{n.forEach(a=>{a.type==="inbound-rtp"&&te(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,o]of this.remotePublishedUserMap)e==="main"&&o.muteState.hasVideo&&(t[r]=o.remoteVideoTrack.stat),e==="auxiliary"&&o.muteState.hasAuxiliary&&(t[r]=o.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(o=>r.push(Tt.getTurnServer(o))):Tt.isPlainObject(e)&&r.push(Tt.getTurnServer(e)),this._turnServers=r,t&&(this._iceTransportPolicy=t)}sendStartMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Q.START_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:q.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"}).catch(t=>{if(t.code!==I.API_CALL_ABORTED)throw t})}sendStopMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:Q.STOP_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:q.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"}).catch(t=>{if(t.code!==I.API_CALL_ABORTED)throw t})}sendStartPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Q.START_PUBLISH_TENCENT_CDN:Q.START_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?q.START_PUBLISH_TENCENT_CDN_RES:q.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"}).catch(r=>{if(r.code!==I.API_CALL_ABORTED)throw r})}sendStopPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?Q.STOP_PUBLISH_TENCENT_CDN:Q.STOP_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?q.STOP_PUBLISH_TENCENT_CDN_RES:q.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"}).catch(r=>{if(r.code!==I.API_CALL_ABORTED)throw r})}sendStartPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Q.START_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:q.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"}).catch(t=>{if(t.code!==I.API_CALL_ABORTED)throw t})}sendUpdatePushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Q.UPDATE_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:q.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"}).catch(t=>{if(t.code!==I.API_CALL_ABORTED)throw t})}sendStopPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:Q.STOP_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:q.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"}).catch(t=>{if(t.code!==I.API_CALL_ABORTED)throw t})}sendAbilityStatus(e){var t;(t=this.signalChannel)==null||t.sendWaitForResponse({command:Q.ABILITY_STATUS_REPORT,data:e,timeout:5e3,responseCommand:q.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=Tt.getEnv();return t?(e.mainUrl=`wss://${Tt.getTestSignalDomain(t)}`,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.localPublishFlag=0,this.heartbeatCount=0,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:o,hasVideo:n}}=e;if(!o&&!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&&o)return;let u={audio:e.remoteAudioTrack.isSubscribed||e.remoteAudioTrack.isSubscribing,auxiliary:e.remoteAuxiliaryTrack.isSubscribed||e.remoteAuxiliaryTrack.isSubscribing,video:c.video,smallVideo:c.smallVideo,datachannel:e.subscribeState.datachannel};try{if(!o&&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 ${Fs-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount=Fs}catch(m){this._log.info(`change [${r}] to ${u.smallVideo?"small":"big"} video failed. count ${Fs-a.reSubscribeCount}. reason: ${m}`),a.isSubscribing=!1,a.reSubscribeCount===0&&this._changeBigSmallRecords.delete(r)}})}changeType(e,t){let o={options:{video:!e,smallVideo:e},isSubscribing:!1,reSubscribeCount:Fs};this._changeBigSmallRecords.set(t.userId,o),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(lg(e.businessInfo)&&(t=JSON.parse(e.businessInfo)),!Ls(e.pureAudioPushMode)){if(!Number.isInteger(Number(e.pureAudioPushMode)))throw new D({code:I.INVALID_PARAMETER,message:G({key:H.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(!Ls(e.userDefineRecordId)){let r=/^[A-Za-z0-9_-]{1,64}$/gi;if(e.userDefineRecordId.match(r)===null)throw new D({code:I.INVALID_PARAMETER,message:G({key:H.INVALID_USER_DEFINE_RECORDID})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_record_id=e.userDefineRecordId}if(!Ls(e.userDefinePushArgs))if(lg(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 D({code:I.INVALID_PARAMETER,message:G({key:H.INVALID_USER_DEFINE_PUSH_ARGS})});qI(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&&fi)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 D({code:I.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 h;if(!this.signalChannel||!this.singlePC)return;let{roomId:t,strRoomId:r,userSig:o,privateMapKey:n}=e,a=((h=this.scheduleResult.config)==null?void 0:h.autoSubscribeCount)||(e==null?void 0:e.autoSubscribeCount)||1,c=String(this.useStringRoomId?r:t),l=[];for(let E=0;E<a;E++)l.push({audioSsrc:Ft(),bigVideoSsrc:Ft(),bigVideoRtxSsrc:Ft(),auxVideoSsrc:Ft(),auxVideoRtxSsrc:Ft()});let u={currRoomId:this.roomId,targetRoomId:c,useStringRoomId:this.useStringRoomId,ability:this.singlePC.clientAbility,userSig:o,privateMapKey:n!=null?n:this.privateMapKey,subscribe:l};this.singlePC.autoSubscribedUserMap.clear(),this.singlePC.autoSubscribedSsrcGroups.clear(),this.singlePC.autoSubscribedSsrcGroups.set(c,l);let m=this.roomId;this.roomId=this.useStringRoomId?r:String(t),this.switchRoomSubedReq=new Promise(E=>{this.resolveSwitchRoomSubedReq=E,Ke(5e3).then(E)}),S.emit(A.SWITCH_ROOM_START,{room:this}),yield this.singlePC.waitForPeerConnectionConnected();let p;try{this.userManager.clear(),p=yield this.signalChannel.sendWaitForResponse({command:Q.SWITCH_ROOM,responseCommand:q.SEND_SWITCH_ROOM_RES,data:u});let{code:E,message:g}=p.data;if(E===0)this.userSig=o,Ls(n)||(this.privateMapKey=n),S.emit(A.SWITCH_ROOM_SUCCESS,{room:this,currentRoomId:m,targetRoomId:c});else{this._log.error(`switch room failed. result: ${E} error: ${g}`);let R=new D({code:I.SWITCH_ROOM_FAILED,extraCode:E,message:g});throw S.emit(A.SWITCH_ROOM_FAILED,{room:this,error:R}),R}}catch(E){throw this.singlePC.autoSubscribedSsrcGroups.clear(),this.roomId=m,this.resolveSwitchRoomSubedReq(),E}})}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()}startUpdateNTPTime(){if(!this.signalChannel)return;let e=[];for(let t=0;t<5;t++)e.push(this.updateNTPTime());return Promise.all(e).then(t=>{var c;let r=t[0].offset,o=t[0].offset;t.forEach(l=>{r=Math.min(l.offset,r),o=Math.max(l.offset,o)});let n=Math.floor(t.reduce((l,u)=>l+u.rtt,0)/t.length),a=Math.floor(t.reduce((l,u)=>l+u.offset,0)/t.length);(o-r>30||n>50)&&setTimeout(()=>this.startUpdateNTPTime(),5e3),ya(a),(c=this.scriptTransformWorker)==null||c.postMessage({type:"ntp-offset",data:a}),this._log.debug(`ntp updated offset: ${a}`),this.emit("ntp-time-updated")}).catch(t=>{this._log.warn(`ntp updated failed: ${t}`)})}updateNTPTime(){let e=Date.now();return this.signalChannel.sendWaitForResponse({command:Q.UPDATE_NETWORK_TIME,responseCommand:q.UPDATE_NETWORK_TIME_RESULT,addReceiveTime:!0,data:{clientSendTime:String(e)},enableLog:!1}).then(t=>{let r=Number(t.data.data.serverSendTime),o=Number(t.data.data.serverRecvTime),n=t.data.receiveTime||Date.now(),a=(o-e+(r-n))/2;return{rtt:n-e-(o-r),offset:a}})}};O([ve(["left",Y.INIT],"joined"),kt({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"),Vt(!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())}}),S_()],Ai.prototype,"join",1),O([ve("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),I_(),Zc("leave room"),Hn({fnName:"publish",validateArgs:!1}),Hn({fnName:"unsubscribe",validateArgs:!1})],Ai.prototype,"leave",1),O([Ti(e=>e.mediaType),ag(),kt({settings:{retries:Gi,timeout:e=>si(e)},onError(e,t,r,[o]){var n;(n=e.message)!=null&&n.includes("timeout")?(this._log.warn(`publish ${o.strMediaType} timeout`,e),t()):(this._log.error(`publish ${o.strMediaType} failed: ${e}`),r(e),S.emit(A.PUBLISH_FAILED,{room:this}))}})],Ai.prototype,"publish",1),O([Hn({fnName:"publish"}),Ti(e=>e.mediaType),cg(),Ct(function(){var e,t;this.localTracks.size===0&&Pr()&&((t=(e=this.singlePC)==null?void 0:e.getPeerConnection())==null||t.getSenders().forEach(r=>r.track&&r.replaceTrack(null)))})],Ai.prototype,"unpublish",1),O([Xc(e=>{if(e.code!==I.API_CALL_ABORTED)throw e}),Ti(e=>e.userId)],Ai.prototype,"replaceTrack",1),O([Ti((...e)=>e[0].userId,(...e)=>`${e[0].userId}|sub`),bs(),A_(),kt({settings:{retries:Gi,timeout:e=>si(e)},onError(e,t,r,o){if(e.message.includes("timeout"))this._log.warn("subscribe timeout"),t();else{let n=(e==null?void 0:e.code)===I.API_CALL_ABORTED;this._log[n?"warn":"error"](`subscribe failed ${o.map(a=>a.strMediaType).join(",")}: ${e}`),r(e),S.emit(A.SUBSCRIBE_FAILED,{room:this,remoteTracks:o})}}})],Ai.prototype,"subscribe",1),O([Hn({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")})}}),Ti((...e)=>e[0].userId,(...e)=>`${e[0].userId}|sub`)],Ai.prototype,"unsubscribe",1);fa.create=fa._create.bind(fa,Ai);Mu(30);var k5=fa;export{k5 as default};
|