@livedigital/client 3.0.0 → 3.0.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/dist/index.es.js CHANGED
@@ -236,4 +236,4 @@ PERFORMANCE OF THIS SOFTWARE.
236
236
  personMask = smoothstep(u_coverage.x, u_coverage.y, personMask);
237
237
  outColor = vec4(frameColor * personMask + backgroundColor * (1.0 - personMask), 1.0);
238
238
  }
239
- `,{width:c,height:d}=n,l=c/d,p=wa(e,e.VERTEX_SHADER,o),u=wa(e,e.FRAGMENT_SHADER,a),h=ka(e,p,u,t,r),f=e.getUniformLocation(h,"u_backgroundScale"),m=e.getUniformLocation(h,"u_backgroundOffset"),g=e.getUniformLocation(h,"u_inputFrame"),v=e.getUniformLocation(h,"u_personMask"),y=e.getUniformLocation(h,"u_background"),b=e.getUniformLocation(h,"u_coverage"),w=e.getUniformLocation(h,"u_lightWrapping"),_=e.getUniformLocation(h,"u_blendMode");e.useProgram(h),e.uniform2f(f,1,1),e.uniform2f(m,0,0),e.uniform1i(g,0),e.uniform1i(v,1),e.uniform2f(b,0,1),e.uniform1f(w,0),e.uniform1f(_,0);let S=null;function k(t){S=_a(e,e.RGBA8,t.naturalWidth,t.naturalHeight,e.LINEAR,e.LINEAR),e.texSubImage2D(e.TEXTURE_2D,0,0,0,t.naturalWidth,t.naturalHeight,e.RGBA,e.UNSIGNED_BYTE,t);let r=0,i=0,s=t.naturalWidth,n=t.naturalHeight;s/n<l?(n=s/l,i=(t.naturalHeight-n)/2):(s=n*l,r=(t.naturalWidth-s)/2);const o=s/t.naturalWidth,a=n/t.naturalHeight;r/=t.naturalWidth,i/=t.naturalHeight,e.uniform2f(f,o,a),e.uniform2f(m,r,i)}return(null==s?void 0:s.complete)?k(s):s&&(s.onload=()=>{k(s)}),{render:function(){e.viewport(0,0,c,d),e.useProgram(h),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,i),null!==S&&(e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,S),e.uniform1i(y,2)),e.bindFramebuffer(e.FRAMEBUFFER,null),e.drawArrays(e.TRIANGLE_STRIP,0,4)},updateCoverage:function(t){e.useProgram(h),e.uniform2f(b,t[0],t[1])},updateLightWrapping:function(t){e.useProgram(h),e.uniform1f(w,t)},updateBlendMode:function(t){e.useProgram(h),e.uniform1f(_,"screen"===t?0:1)},cleanUp:function(){e.deleteTexture(S),e.deleteProgram(h),e.deleteShader(u),e.deleteShader(p)}}}(u,m,g,b,t,n);return{render:function(){return r(this,void 0,void 0,(function*(){u.activeTexture(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,v),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,e.htmlElement),u.bindVertexArray(f),yield w.render(),o._runInference(),_.render(),S.render(),k.render()}))},updatePostProcessingConfig:function(e){if(S.updateSigmaSpace(e.jointBilateralFilter.sigmaSpace),S.updateSigmaColor(e.jointBilateralFilter.sigmaColor),"image"===i.type){const t=k;t.updateCoverage(e.coverage),t.updateLightWrapping(e.lightWrapping),t.updateBlendMode(e.blendMode)}else if("blur"===i.type){k.updateCoverage(e.coverage)}else{const e=k;e.updateCoverage([0,.9999]),e.updateLightWrapping(0)}},cleanUp:function(){k.cleanUp(),S.cleanUp(),_.cleanUp(),w.cleanUp(),u.deleteTexture(b),u.deleteTexture(y),u.deleteTexture(v),u.deleteBuffer(g),u.deleteBuffer(m),u.deleteVertexArray(f),u.deleteShader(h)}}}var xa,Ma,La,Ia,Oa,Aa,ja,Fa,Na,Ba;class Ua{constructor(e){xa.set(this,!1),Ma.set(this,void 0),La.set(this,void 0),Ia.set(this,void 0),s(this,Ia,new Ke({logLevel:e,namespace:"TensorFlowLoader"}),"f")}get isLoaded(){return i(this,xa,"f")}get tfliteModule(){return i(this,Ma,"f")||i(this,La,"f")}loadTFLite(){return r(this,void 0,void 0,(function*(){yield Promise.all([this.loadTFLiteRegular(),this.loadTFLiteSIMD()]),this.tfliteModule&&s(this,xa,!0,"f")}))}loadTFLiteModel(e){return r(this,void 0,void 0,(function*(){if(this.tfliteModule)try{const t=Ua.getTFLiteModelFileName(e);i(this,Ia,"f").info("loading model",{modelFileName:t});const r=yield fetch(`${window.location.origin}/tflite/models/${t}.tflite`),s=yield r.arrayBuffer(),n=this.tfliteModule._getModelBufferMemoryOffset();this.tfliteModule.HEAPU8.set(new Uint8Array(s),n);const o=this.tfliteModule._loadModel(s.byteLength);i(this,Ia,"f").info("loading model result",{result:o})}catch(e){i(this,Ia,"f").warn("loadTFLiteModel()",{error:e})}else i(this,Ia,"f").warn("loadTFLiteModel()",{description:"TFLite module is not loaded"})}))}loadTFLiteRegular(){return r(this,void 0,void 0,(function*(){try{s(this,Ma,yield createTFLiteModule(),"f")}catch(e){i(this,Ia,"f").error("Failed to create TFLite WebAssembly module.",{error:e})}}))}loadTFLiteSIMD(){return r(this,void 0,void 0,(function*(){try{s(this,La,yield createTFLiteSIMDModule(),"f")}catch(e){i(this,Ia,"f").error("Failed to create TFLite SIMD WebAssembly module.",{error:e})}}))}static getTFLiteModelFileName({model:e,inputResolution:t}){switch(e){case"meet":return"256x144"===t?"segm_full_v679":"segm_lite_v681";case"mlkit":return"selfiesegmentation_mlkit-256x256-2021_01_19-v1215.f16";default:throw new Error(`No TFLite file for this segmentation model: ${e}`)}}}function qa({sourcePlayback:e,backgroundConfig:t,segmentationConfig:i,canvas:s,tflite:n}){const o=s.getContext("2d");o.scale(1.031,1.031),o.translate(-11,-11);const[a,c]=Ra[i.inputResolution],d=a*c,l=new ImageData(a,c),p=document.createElement("canvas");p.width=a,p.height=c;const u=p.getContext("2d"),h=n._getInputMemoryOffset()/4,f=n._getOutputMemoryOffset()/4;let m;return{render:function(){return r(this,void 0,void 0,(function*(){"none"!==t.type&&(function(){if(u.drawImage(e.htmlElement,0,0,e.width,e.height,0,0,a,c),"meet"===i.model||"mlkit"===i.model){const e=u.getImageData(0,0,a,c);for(let t=0;t<d;t+=1)n.HEAPF32[h+3*t]=e.data[4*t]/255,n.HEAPF32[h+3*t+1]=e.data[4*t+1]/255,n.HEAPF32[h+3*t+2]=e.data[4*t+2]/255}}(),function(){n._runInference();for(let e=0;e<d;e+=1)if("meet"===i.model){const t=n.HEAPF32[f+2*e],r=n.HEAPF32[f+2*e+1],i=Math.max(t,r),s=Math.exp(t-i),o=Math.exp(r-i);l.data[4*e+3]=255*o/(s+o)}else if("mlkit"===i.model){const t=n.HEAPF32[f+e];l.data[4*e+3]=255*t}u.putImageData(l,0,0)}()),o.globalCompositeOperation="copy",o.filter="none",(null==m?void 0:m.smoothSegmentationMask)&&("blur"===t.type||"image"===t.type)&&(o.filter="blur(8px)"),"none"!==t.type&&(o.drawImage(p,0,0,a,c,0,0,e.width,e.height),o.globalCompositeOperation="source-in",o.filter="none"),o.drawImage(e.htmlElement,0,0),"blur"===t.type&&(o.globalCompositeOperation="destination-over",o.filter="blur(8px)",o.drawImage(e.htmlElement,0,0))}))},updatePostProcessingConfig:function(e){m=e},cleanUp:function(){}}}xa=new WeakMap,Ma=new WeakMap,La=new WeakMap,Ia=new WeakMap;class Wa{constructor(e){Oa.set(this,void 0),Aa.set(this,void 0),ja.set(this,!1),Fa.set(this,void 0),s(this,Oa,new Ua(e.logLevel),"f"),s(this,Fa,new Ke({namespace:"VideoTrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return i(this,ja,"f")}processTrack(e){return r(this,void 0,void 0,(function*(){const{track:t,pipelineConfig:n}=e;i(this,ja,"f")&&this.stopProcessing();try{i(this,Oa,"f").isLoaded||(yield i(this,Oa,"f").loadTFLite(),yield i(this,Oa,"f").loadTFLiteModel(n.segmentationConfig));const{tfliteModule:o}=i(this,Oa,"f");if(!o)throw new Error("TensorFlow model is not available");const{targetFps:a}=n.segmentationConfig,c=yield Wa.buildSourcePlayback(t),d=document.createElement("canvas");d.width=c.width,d.height=c.height;const l=function(){const e=new Map,t=new Worker(`${window.location.origin}/timerWorker.js`);t.onmessage=t=>{const r=e.get(t.data.callbackId);r&&(e.delete(t.data.callbackId),r())};let r=1;return{setTimeout:function(i,s){return r+=1,e.set(r,i),t.postMessage({callbackId:r,timeoutMs:s}),r},clearTimeout:function(r){e.has(r)&&(t.postMessage({callbackId:r}),e.delete(r))},terminate:function(){e.clear(),t.terminate()}}}(),p={config:n,sourcePlayback:c,destinationPlayback:d,tflite:o},u="canvas2dCpu"===e.pipelineConfig.segmentationConfig.pipeline?Wa.buildCanvas2dPipeline(p):Wa.buildWebGL2Pipeline(p),h=()=>r(this,void 0,void 0,(function*(){const e=performance.now();return yield u.render(),l.setTimeout(h,performance.now()-e)})),f=yield h();u.updatePostProcessingConfig(n.postprocessingConfig);const m=d.captureStream(a),[g]=m.getVideoTracks();return s(this,Aa,{pipeline:u,destination:d,source:c.htmlElement,track:g,timerWorker:l,timerId:f},"f"),s(this,ja,!0,"f"),g}catch(e){throw i(this,Fa,"f").error("processTrack()",{error:e,track:t}),new Error("Can not process this track")}}))}stopProcessing(){if(this.isProcessing)if(i(this,Aa,"f"))try{i(this,Aa,"f").pipeline.cleanUp(),i(this,Aa,"f").source.remove(),i(this,Aa,"f").destination.remove(),i(this,Aa,"f").timerWorker.clearTimeout(i(this,Aa,"f").timerId),i(this,Aa,"f").timerWorker.terminate(),i(this,Aa,"f").destination.remove(),i(this,Aa,"f").track.stop(),s(this,Aa,void 0,"f"),s(this,ja,!1,"f")}catch(e){i(this,Fa,"f").error("cleanUp()",{error:e})}else i(this,Fa,"f").warn("cleanUp()",{description:"This track is not processing"});else i(this,Fa,"f").debug("stopProcessing()",{description:"Track is not processed"})}static buildWebGL2Pipeline(e){return Da({backgroundImage:e.config.backgroundConfig.imageSource,sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildCanvas2dPipeline(e){return qa({sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildSourcePlayback(e){return r(this,void 0,void 0,(function*(){const t=document.createElement("video");return t.srcObject=new MediaStream([e]),t.autoplay=!0,yield t.play(),{htmlElement:t,width:t.videoWidth,height:t.videoHeight}}))}}Oa=new WeakMap,Aa=new WeakMap,ja=new WeakMap,Fa=new WeakMap;class Va extends ya{constructor(e){super(e),Na.set(this,void 0),Ba.set(this,void 0),this.transformParams={},s(this,Na,new Wa({logLevel:e.logLevel}),"f"),this.watchOrientation(),this.watchDocumentVisibility()}get isEffectsProcessing(){return i(this,Na,"f").isProcessing}getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||(this.getLabel()===u.ScreenVideo?"vp8":"h264")}getEncodings(){return this.getEncoderConfig().encodings||Wo}setTransformParams(e){this.transformParams=e}setMaxSpatialLayer(e){return r(this,void 0,void 0,(function*(){const t=this.getProducer();t?(yield t.setMaxSpatialLayer(e),this.logger.debug("setMaxSpatialLayer()",{label:this.getLabel(),spatialLayer:e})):this.logger.warn("setMaxSpatialLayer()",{message:"Not produced yet"})}))}getMaxSpatialLayer(){const e=this.getProducer();if(e)return e.maxSpatialLayer;this.logger.warn("getMaxSpatialLayer()",{message:"Not produced yet"})}enableBlur(){return r(this,void 0,void 0,(function*(){try{s(this,Ba,this.mediaStreamTrack.clone(),"f");const e=yield i(this,Na,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?Ta:Pa});yield this.replaceTrack(e),this.logger.info("enableBlur()",{track:this})}catch(e){throw this.logger.warn("enableBlur()",{track:this,error:e}),new Error("Can not enable virtual background")}}))}disableBlur(){return r(this,void 0,void 0,(function*(){try{if(!i(this,Na,"f").isProcessing)return void this.logger.debug("disableBlur()",{description:"Track is not processed"});if(!i(this,Ba,"f"))return void this.logger.warn("disableBlur()",{description:"Original track missing"});yield this.replaceTrack(i(this,Ba,"f")),i(this,Na,"f").stopProcessing(),this.logger.info("disableBlur()",{track:this})}catch(e){throw this.logger.warn("disableBlur()",{track:this,error:e}),new Error("Can not disable virtual background")}}))}publish(e={}){var t;return r(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),transformParams:this.transformParams,codecOptions:this.getCodecOptions(),keyFrameRequestDelay:null!==(t=e.keyFrameRequestDelay)&&void 0!==t?t:0}),this.clientEventEmitter.emit(q,this)}))}watchOrientation(){window.screen.orientation&&(this.logger.debug("watchOrientation()",{description:"Watching started"}),window.screen.orientation.addEventListener("change",(()=>r(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{this.mediaStreamTrack.enabled=!1;const e=yield i(this,Na,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?Ta:Pa});yield this.replaceTrack(e)}catch(e){this.logger.warn("watchOrientation()",{description:"Restart blur error after orientation change",error:e})}})))))}watchDocumentVisibility(){this.logger.debug("watchDocumentVisibility()",{description:"Watching started"}),window.addEventListener("visibilitychange",(()=>r(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{yield this.disableBlur(),yield this.enableBlur()}catch(e){this.logger.warn("watchDocumentVisibility()",{description:"Restart blur error after change document visibility",error:e})}}))))}}Na=new WeakMap,Ba=new WeakMap;const za=new class{sleepMs(e){return r(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}now(){return new Date(Date.now())}},$a=(e,t={})=>r(void 0,void 0,void 0,(function*(){var r;const i=t.maxRetries||2,s=t.minBackoffDelayMs||50;let n,o=0;for(;o<i;){o+=1;try{return yield e()}catch(e){if(n=e,t.logger&&t.logger.info("Action retry failed",{currentAttempt:o,actionName:t.actionName,error:e}),t.abortOnError&&t.abortOnError(e))throw n;if(o<i){const e=Math.pow(2,o-1)*s;yield za.sleepMs(Math.min(e,null!==(r=t.maxBackoffDelayMs)&&void 0!==r?r:e))}}}throw n}));class Ga extends g{constructor(e,t){super(e,null!=t?t:"need_join_first")}}class Ha{constructor(e){this.initialized=!1,this.isJoined=!1,this.isChannelJoining=!1;const{clientEventEmitter:t,network:r,media:i,dependenciesFactory:s,logLevel:n}=e;this.logLevel=n||We,this.system=s.createSystem({logLevel:this.logLevel,clientEventEmitter:t,onLogMessage:e.onLogMessage}),this.media=s.createMedia({logLevel:this.logLevel,engine:this,clientEventEmitter:t,mediaTracksFactory:i.mediaTracksFactory,onLogMessage:e.onLogMessage}),this.network=s.createNetwork({logLevel:this.logLevel,loadbalancer:r.loadbalancer,onLogMessage:e.onLogMessage}),this.peersRepository=new Map,this.clientEventEmitter=t,this.channelEventsHandler=s.createChannelEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.mediaSoupEventsHandler=s.createMediaSoupEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.channelAudioObserverEventHandler=s.createAudioObserverEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.logger=new Ke({logLevel:this.logLevel,namespace:"Engine",onLogMessage:e.onLogMessage}),this.webRtcIssueDetector=e.disableWid?void 0:s.createIssueDetector({onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:[1234],logger:new Ke({logLevel:this.logLevel,namespace:"WID"})}),this.watchSocketState(),this.watchClientEvents()}initialize(){var e,t,i;return r(this,void 0,void 0,(function*(){try{const{rtpCapabilities:r}=yield this.network.socket.request("router.getRtpCapabilities");yield this.media.createNoiseSuppressor(),yield this.media.loadDevice(r),null===(e=this.webRtcIssueDetector)||void 0===e||e.watchNewPeerConnections(),yield this.network.createSendTransport(this.media.mediasoupDevice),yield this.network.createRecvTransport(this.media.mediasoupDevice),this.initialized=!0,this.logger.debug("initialize()",{sendTransportId:null===(t=this.network.sendTransport)||void 0===t?void 0:t.id,recvTransportId:null===(i=this.network.receiveTransport)||void 0===i?void 0:i.id})}catch(e){if(this.logger.error("initialize()",{error:e}),e instanceof f&&"device not supported"===e.message||e instanceof Error&&"RTCPeerConnection is not defined"===e.message)throw new v("Device not supported",v.UNSUPPORTED_DEVICE_CODE);throw new Error("Error initialize engine")}}))}release(){var e,t;return r(this,void 0,void 0,(function*(){try{this.initialized=!1,this.isJoined=!1,this.app=void 0,this.channel=void 0,null===(e=this.webRtcIssueDetector)||void 0===e||e.stopWatchingNewPeerConnections(),this.network.socket.disconnect(),this.peersRepository.clear(),yield this.network.closeSendTransport(),yield this.network.closeReceiveTransport(),yield this.media.clearTracks(),null===(t=this.audioObserver)||void 0===t||t.close(),this.logger.debug("release()",{socketId:this.mySocketId})}catch(e){throw this.logger.error("release()",{error:e}),new Error("Error release engine")}}))}watchSocketState(){this.network.socket.observer.on("state",(e=>{var t;const{state:r,code:i,error:s}=e;this.clientEventEmitter.emit(r,{code:i,error:s});const n="unauthorized"===(null===(t=null==s?void 0:s.data)||void 0===t?void 0:t.errorCode);(r===se.Error&&this.isJoined&&n||r===se.Reconnected)&&this.clientEventEmitter.emit(O)}))}get activeSpeaker(){return this.activeSpeakerPeer}get peers(){return Array.from(this.peersRepository.values())}get hostPeers(){return this.peers.filter((e=>"host"===e.role))}get audiencePeers(){return this.peers.filter((e=>"audience"===e.role))}get mySocketId(){return this.network.socket.id}getPeerById(e){return this.peersRepository.get(e)}confirmActivity(){var e;return r(this,void 0,void 0,(function*(){if(!this.channel||this.isChannelJoining)throw new Error("Connect to the channel first");if(!(null===(e=this.network.socket.connection)||void 0===e?void 0:e.active))throw new Error("Socket is inactive");yield this.network.socket.request(k)}))}join(e){return r(this,void 0,void 0,(function*(){try{this.logger.debug("join()",{params:e}),this.isChannelJoining=!0,yield this.connectToSocketServerWithRetry(e),yield this.performJoin({appData:e.appData})}catch(e){throw this.logger.error("join()",{error:e}),e}finally{this.isChannelJoining=!1}}))}loadPeers(e){return r(this,void 0,void 0,(function*(){const{peers:t}=yield this.network.socket.request(w,{role:e});t.filter((e=>!this.peersRepository.has(e.id))).forEach((e=>this.setPeer(e)))}))}setPeer(e){const t=this.peersRepository.get(e.id);if(t)return t;const r=new Uo(Object.assign(Object.assign({},e),{engine:this,loginDate:new Date}));return this.peersRepository.set(r.id,r),r}removePeer(e){const t=this.peersRepository.get(e);t&&(t.tracks.forEach((e=>e.close())),this.peersRepository.delete(e))}updateAppData(e){return r(this,void 0,void 0,(function*(){const{myPeer:t}=this;if(!t)throw new Error("Need join to channel first");try{No(e),yield this.network.updatePeerAppData({peerId:t.id,appData:e})}catch(e){throw this.logger.error("updateAppData()",{error:e}),new Error("Can not update peer appData")}}))}createCameraVideoTrack(e){return r(this,void 0,void 0,(function*(){const t=ta.getCameraVideoTrackParams(e);try{const[r]=yield this.media.createUserMediaTracks({audio:!1,video:t.videoTrackOptions});if(r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof Va&&(r.setLabel(u.Camera),r.setEncoderConfig(t.encoderConfig),r.setTransformParams(ta.getVideoTrackTransformParams(r.mediaStreamTrack)),null==e?void 0:e.blur))try{yield r.enableBlur()}catch(e){this.logger.warn("Failed to start virtual background, featured original track",{track:this})}return this.media.setTrack(r),this.logger.debug("createCameraVideoTrack()",{trackParams:t,track:r}),r}catch(e){throw this.logger.error("createCameraVideoTrack()",{error:e,trackParams:t}),new Error(`Can not create camera track: ${e.message}`)}}))}createMicrophoneAudioTrack(e){return r(this,void 0,void 0,(function*(){try{const[t]=yield this.media.createUserMediaTracks({video:!1,audio:null==e?void 0:e.audio});if(t.setLabel(u.Microphone),t.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),(null==e?void 0:e.encoderConfig)&&t.setEncoderConfig(e.encoderConfig),"audio"===t.kind&&(null==e?void 0:e.noiseSuppression))try{yield t.enableNoiseSuppression()}catch(e){this.logger.warn("Failed to start noise suppression, featured original track",{track:this})}return this.media.setTrack(t),this.logger.debug("createMicrophoneAudioTrack()",{options:e,track:t}),t}catch(t){throw this.logger.error("createMicrophoneAudioTrack()",{error:t,options:e}),new Error(`Can not create microphone track: ${t.message}`)}}))}createScreenMediaTracks(e){return r(this,void 0,void 0,(function*(){const t=ta.getScreenVideoTrackParams(e);try{const r=yield this.media.createDisplayMediaTracks({audio:null==e?void 0:e.audio,video:null==e?void 0:e.video});return r.forEach((r=>{if(r.mediaStreamTrack.addEventListener("ended",(()=>{r.unpublish()})),r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof Va){r.setLabel(u.ScreenVideo),r.setEncoderConfig(t.encoderConfig);const e=ta.getVideoTrackTransformParams(r.mediaStreamTrack);return r.setTransformParams(e),this.media.setTrack(r),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,transformParams:e,track:r})}r.setLabel(u.ScreenAudio),(null==e?void 0:e.audioEncoderConfig)&&r.setEncoderConfig(e.audioEncoderConfig),this.media.setTrack(r),this.logger.debug("createScreenMediaTrack()",{trackParams:null==e?void 0:e.audio,encoderConfig:null==e?void 0:e.audioEncoderConfig,track:r})})),r}catch(e){throw this.logger.error("createScreenMediaTrack()",{error:e,trackParams:t}),new Error(`Can not create screen media tracks: ${e.message}`)}}))}deleteTrack(e){return this.media.deleteTrack(e)}get channelId(){return this.channel}get appId(){return this.app}get canUseNoiseSuppression(){return this.media.isNoiseSuppressorLoaded}setActiveSpeakerPeer(e){this.activeSpeaker!==e&&(this.activeSpeakerPeer=e,this.clientEventEmitter.safeEmit(B,{peer:e}))}connectToSocketServerWithRetry(e){return r(this,void 0,void 0,(function*(){return $a((()=>r(this,void 0,void 0,(function*(){return this.connectToSocketServer(e)}))),{maxRetries:15,minBackoffDelayMs:150,maxBackoffDelayMs:5e3,actionName:"connectToSocketServer",logger:new Ke({namespace:"RetrySocketConnect",logLevel:this.logLevel}),abortOnError:e=>{var t;return"unauthorized"===(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.errorCode)}})}))}connectToSocketServer(e){return r(this,void 0,void 0,(function*(){const{webSocketUrl:t}=yield this.getAvailableNode({channelId:e.channelId,role:e.role});this.network.socket.connect(t,e.token);try{yield this.waitForSocketConnection()}catch(r){throw this.logger.error("Failed to connect to socket server",{error:r,role:e.role,channelId:e.channelId,webSocketUrl:t}),this.network.socket.disconnect(),r}}))}getAvailableNode(e){return r(this,void 0,void 0,(function*(){try{return{webSocketUrl:(yield this.network.loadBalancerClient.getNode(e)).webSocketUrl}}catch(e){throw this.logger.error("getAvailableNode()",{error:"No available nodes"}),e}}))}waitForSocketConnection(){return new Promise(((e,t)=>{const i=s=>r(this,void 0,void 0,(function*(){const{error:r,state:n}=s,o=()=>this.network.socket.observer.removeListener("state",i),a=[se.Disconnected,se.Reconnecting].includes(n);return r?(o(),void t(r)):this.isChannelJoining&&a?(o(),void t(new Error(`Not expected socket state for new connection: ${n}`))):void(this.isChannelJoining&&[se.Connected,se.Reconnected].includes(n)&&(o(),e()))}));this.network.socket.observer.on("state",i)}))}performJoin(e){return r(this,void 0,void 0,(function*(){try{const{appId:t,channelId:r}=yield this.sendJoinChannelRequestWithRetry(e);this.app=t,this.channel=r,yield this.initialize(),this.channelEventsHandler.subscribeToEvents(),this.mediaSoupEventsHandler.subscribeToEvents(),this.isJoined=!0,this.logger.debug("Successfully joined channel",{channelId:r}),yield this.createAudioObserver()}catch(e){throw this.logger.error("performJoin()",{error:e}),e}}))}sendJoinChannelRequestWithRetry(e){return r(this,void 0,void 0,(function*(){return $a((()=>r(this,void 0,void 0,(function*(){return this.sendJoinChannelRequest(e)}))),{maxRetries:3,minBackoffDelayMs:300,actionName:"sendJoinChannelRequest",logger:new Ke({namespace:"RetryJoin",logLevel:this.logLevel})})}))}sendJoinChannelRequest(e){return r(this,void 0,void 0,(function*(){return this.network.socket.request(b,e)}))}get cahPublish(){var e;return"host"===(null===(e=this.peers.find((e=>e.isMe)))||void 0===e?void 0:e.role)}get myPeer(){return this.peers.find((e=>e.isMe))}watchClientEvents(){this.clientEventEmitter.on(q,(e=>r(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)})))),this.clientEventEmitter.on(W,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.close(),this.media.deleteTrack(e)})),this.clientEventEmitter.on(V,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.pause()})),this.clientEventEmitter.on(z,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.resume()})),this.clientEventEmitter.on($,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.close()})),this.clientEventEmitter.on(G,(e=>r(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)}))))}createSelfPeerTrack(e){var t;return r(this,void 0,void 0,(function*(){const r=this.peersRepository.get(this.mySocketId);if(!r)return;yield null===(t=r.tracks.get(e.getLabel()))||void 0===t?void 0:t.close();const i=new Fo({mediaStreamTrack:e.mediaStreamTrack,label:e.getLabel(),engine:this,muted:!1,paused:e.isPaused,peerEventEmitter:r.observer});r.tracks.set(i.label,i)}))}createAudioObserver(){var e;return r(this,void 0,void 0,(function*(){if(!this.isJoined)throw new Ga("Need to join first");const t={channelId:this.channelId,appId:this.appId,peerId:null===(e=this.myPeer)||void 0===e?void 0:e.id};try{const{producerId:e}=yield this.network.getAudioObserverProducer(),r=yield this.network.createDataConsumer({producerId:e,appId:this.appId,channelId:this.channelId});r.on("message",(e=>{this.channelAudioObserverEventHandler.handle(e)})),this.audioObserver=r,this.logger.debug("Successfully create audio observer",t)}catch(e){this.logger.error("Failed to create audio observer",t)}}))}}var Ja,Ka,Qa;function Xa(){}function Ya(){Ya.init.call(this)}function Za(e){return void 0===e._maxListeners?Ya.defaultMaxListeners:e._maxListeners}function ec(e,t,r){if(t)e.call(r);else for(var i=e.length,s=cc(e,i),n=0;n<i;++n)s[n].call(r)}function tc(e,t,r,i){if(t)e.call(r,i);else for(var s=e.length,n=cc(e,s),o=0;o<s;++o)n[o].call(r,i)}function rc(e,t,r,i,s){if(t)e.call(r,i,s);else for(var n=e.length,o=cc(e,n),a=0;a<n;++a)o[a].call(r,i,s)}function ic(e,t,r,i,s,n){if(t)e.call(r,i,s,n);else for(var o=e.length,a=cc(e,o),c=0;c<o;++c)a[c].call(r,i,s,n)}function sc(e,t,r,i){if(t)e.apply(r,i);else for(var s=e.length,n=cc(e,s),o=0;o<s;++o)n[o].apply(r,i)}function nc(e,t,r,i){var s,n,o,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((n=e._events)?(n.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),o=n[t]):(n=e._events=new Xa,e._eventsCount=0),o){if("function"==typeof o?o=n[t]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),!o.warned&&(s=Za(e))&&s>0&&o.length>s){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=n[t]=r,++e._eventsCount;return e}function oc(e,t,r){var i=!1;function s(){e.removeListener(t,s),i||(i=!0,r.apply(e,arguments))}return s.listener=r,s}function ac(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function cc(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}Xa.prototype=Object.create(null),Ya.EventEmitter=Ya,Ya.usingDomains=!1,Ya.prototype.domain=void 0,Ya.prototype._events=void 0,Ya.prototype._maxListeners=void 0,Ya.defaultMaxListeners=10,Ya.init=function(){this.domain=null,Ya.usingDomains&&(void 0).active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Xa,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ya.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Ya.prototype.getMaxListeners=function(){return Za(this)},Ya.prototype.emit=function(e){var t,r,i,s,n,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(r=o[e]))return!1;var l="function"==typeof r;switch(i=arguments.length){case 1:ec(r,l,this);break;case 2:tc(r,l,this,arguments[1]);break;case 3:rc(r,l,this,arguments[1],arguments[2]);break;case 4:ic(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(i-1),n=1;n<i;n++)s[n-1]=arguments[n];sc(r,l,this,s)}return!0},Ya.prototype.addListener=function(e,t){return nc(this,e,t,!1)},Ya.prototype.on=Ya.prototype.addListener,Ya.prototype.prependListener=function(e,t){return nc(this,e,t,!0)},Ya.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,oc(this,e,t)),this},Ya.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,oc(this,e,t)),this},Ya.prototype.removeListener=function(e,t){var r,i,s,n,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new Xa:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(s=-1,n=r.length;n-- >0;)if(r[n]===t||r[n].listener&&r[n].listener===t){o=r[n].listener,s=n;break}if(s<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Xa,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,s=e.length;i<s;r+=1,i+=1)e[r]=e[i];e.pop()}(r,s);i.removeListener&&this.emit("removeListener",e,o||t)}return this},Ya.prototype.off=function(e,t){return this.removeListener(e,t)},Ya.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Xa,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Xa:delete r[e]),this;if(0===arguments.length){for(var i,s=Object.keys(r),n=0;n<s.length;++n)"removeListener"!==(i=s[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new Xa,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},Ya.prototype.listeners=function(e){var t,r=this._events;return r&&(t=r[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[]},Ya.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):ac.call(e,t)},Ya.prototype.listenerCount=ac,Ya.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class dc extends Ya{}!function(e){e.Issue="issue",e.NetworkScoresUpdated="network-scores-updated",e.StatsParsingFinished="stats-parsing-finished"}(Ja||(Ja={})),function(e){e.Network="network",e.CPU="cpu",e.Server="server",e.Stream="stream"}(Ka||(Ka={})),function(e){e.OutboundNetworkQuality="outbound-network-quality",e.InboundNetworkQuality="inbound-network-quality",e.OutboundNetworkMediaLatency="outbound-network-media-latency",e.InboundNetworkMediaLatency="inbound-network-media-latency",e.NetworkMediaSyncFailure="network-media-sync-failure",e.OutboundNetworkThroughput="outbound-network-throughput",e.InboundNetworkThroughput="inbound-network-throughput",e.EncoderCPUThrottling="encoder-cpu-throttling",e.DecoderCPUThrottling="decoder-cpu-throttling",e.ServerIssue="server-issue",e.UnknownVideoDecoderIssue="unknown-video-decoder",e.LowInboundMOS="low-inbound-mean-opinion-score",e.LowOutboundMOS="low-outbound-mean-opinion-score"}(Qa||(Qa={}));class lc extends Ya{static STATS_REPORT_READY_EVENT="stats-report-ready";static STATS_REPORTS_PARSED="stats-reports-parsed";isStopped=!1;reportTimer;getStatsInterval;compositeStatsParser;constructor(e){super(),this.compositeStatsParser=e.compositeStatsParser,this.getStatsInterval=e.getStatsInterval??1e4}get isRunning(){return!!this.reportTimer&&!this.isStopped}startReporting(){if(this.reportTimer)return;const e=()=>setTimeout((()=>{this.isStopped?this.reportTimer=void 0:this.parseReports().finally((()=>{this.reportTimer=e()}))}),this.getStatsInterval);this.isStopped=!1,this.reportTimer=e()}stopReporting(){this.isStopped=!0,this.reportTimer&&(clearTimeout(this.reportTimer),this.reportTimer=void 0)}async parseReports(){const e=Date.now(),t=await this.compositeStatsParser.parse(),r=Date.now()-e;this.emit(lc.STATS_REPORTS_PARSED,{timeTaken:r}),t.forEach((e=>{this.emit(lc.STATS_REPORT_READY_EVENT,e)}))}}const pc=(()=>{const e=new Map;return t=>{const{taskId:r,delayMs:i,maxJitterMs:s,callback:n}=t,o=Math.ceil(Math.random()*(s||0)),a=e.get(r);a&&clearTimeout(a);const c=setTimeout((()=>{n(),e.delete(r)}),i+o);e.set(r,c)}})();class uc{#e={};calculate(e){const{connection:{id:t}}=e,r=this.calculateOutboundScore(e),i=this.calculateInboundScore(e);return this.#e[t]=e,pc({taskId:t,delayMs:35e3,callback:()=>delete this.#e[t]}),{outbound:r,inbound:i}}calculateOutboundScore(e){const t=[...e.remote?.audio.inbound||[],...e.remote?.video.inbound||[]];if(!t.length)return;const r=this.#e[e.connection.id];if(!r)return;const i=[...r.remote?.audio.inbound||[],...r.remote?.video.inbound||[]],{packetsSent:s}=e.connection,n=r.connection.packetsSent,o=t.reduce(((e,t)=>{const r=i.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),a=1e3*e.connection.currentRoundTripTime||0,{sumJitter:c}=o,d=c/t.length,l=s-n,p=o.packetsLost-o.lastPacketsLost,u=l&&p?Math.round(100*p/(l+p)):0;return this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u})}calculateInboundScore(e){const t=[...e.audio?.inbound,...e.video?.inbound];if(!t.length)return;const r=this.#e[e.connection.id];if(!r)return;const i=[...r.video?.inbound,...r.audio?.inbound],{packetsReceived:s}=e.connection,n=r.connection.packetsReceived,o=t.reduce(((e,t)=>{const r=i.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),a=1e3*e.connection.currentRoundTripTime||0,{sumJitter:c}=o,d=c/t.length,l=s-n,p=o.packetsLost-o.lastPacketsLost,u=l&&p?Math.round(100*p/(l+p)):0;return this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u})}calculateMOS({avgJitter:e,rtt:t,packetsLoss:r}){const i=t+2*e+10;let s=i<160?93.2-i/40:93.2-i/120-10;return s-=2.5*r,1+.035*s+7e-6*s*(s-60)*(100-s)}}class hc{#e;#t;constructor(e={}){this.#e=new Map,this.#t=e.statsCleanupTtlMs??35e3}detect(e){const t=this.performDetection(e);return this.performPrevStatsCleanup({connectionId:e.connection.id}),t}performPrevStatsCleanup(e){const{connectionId:t,cleanupCallback:r}=e;this.#e.has(t)&&pc({taskId:t,delayMs:this.#t,callback:()=>{this.deleteLastProcessedStats(t),"function"==typeof r&&r()}})}setLastProcessedStats(e,t){this.#e.set(e,t)}getLastProcessedStats(e){return this.#e.get(e)}deleteLastProcessedStats(e){this.#e.delete(e)}}class fc extends hc{#r;constructor(e={}){super(e),this.#r=e.availableOutgoingBitrateThreshold??1e5}performDetection(e){const t=[],{availableOutgoingBitrate:r}=e.connection;if(void 0===r)return t;const i=e.audio.outbound.reduce(((e,t)=>e+t.targetBitrate),0),s=e.video.outbound.reduce(((e,t)=>e+t.bitrate),0);if(!i&&!s)return t;const n={availableOutgoingBitrate:r,videoStreamsTotalBitrate:s,audioStreamsTotalTargetBitrate:i};return i>r||s>0&&r<this.#r?(t.push({statsSample:n,type:Ka.Network,reason:Qa.OutboundNetworkThroughput}),t):t}}class mc extends hc{#i;constructor(e={}){super(e),this.#i=e.framesDroppedThreshold??.5}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.inbound.filter((e=>e.framesDropped>0)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.inbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesDropped===t.framesDropped)return;const s=e.framesReceived-t.framesReceived,n=e.framesDecoded-t.framesDecoded,o=e.framesDropped-t.framesDropped,a=o/s;if(0===s||0===n)return;const c={deltaFramesDropped:o,deltaFramesReceived:s,deltaFramesDecoded:n,framesDroppedPct:Math.round(100*a)};a>=this.#i&&r.push({statsSample:c,type:Ka.CPU,reason:Qa.DecoderCPUThrottling,ssrc:e.ssrc})})),r):r}}class gc extends hc{#s;constructor(e={}){super(e),this.#s=e.missedFramesThreshold??.15}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.outbound.filter((e=>e.framesEncoded>0)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.outbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesEncoded===t.framesEncoded)return;const s=e.framesEncoded-t.framesEncoded,n=e.framesSent-t.framesSent,o=1-n/s;if(0===s)return;if(s===n)return;const a={deltaFramesSent:n,deltaFramesEncoded:s,missedFramesPct:Math.round(100*o)};o>=this.#s&&r.push({statsSample:a,type:Ka.Network,reason:Qa.OutboundNetworkThroughput,ssrc:e.ssrc})})),r):r}}class vc extends hc{highPacketLossThresholdPct;highJitterThreshold;highJitterBufferDelayThresholdMs;highRttThresholdMs;constructor(e={}){super(),this.highPacketLossThresholdPct=e.highPacketLossThresholdPct??5,this.highJitterThreshold=e.highJitterThreshold??200,this.highJitterBufferDelayThresholdMs=e.highJitterBufferDelayThresholdMs??500,this.highRttThresholdMs=e.highRttThresholdMs??250}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=[],r=[...e.audio?.inbound,...e.video?.inbound];if(!r.length)return t;const i=this.getLastProcessedStats(e.connection.id);if(!i)return t;const s=[...i.video?.inbound,...i.audio?.inbound],{packetsReceived:n}=e.connection,o=i.connection.packetsReceived,a=r.reduce(((e,t)=>{const r=s.find((e=>e.ssrc===t.ssrc)),i=r?.jitterBufferDelay||0,n=r?.jitterBufferEmittedCount||0,o=t.jitterBufferDelay-i,a=t.jitterBufferEmittedCount-n,c=o&&a?1e3*o/a:0;return{sumJitter:e.sumJitter+t.jitter,sumJitterBufferDelayMs:e.sumJitterBufferDelayMs+c,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,sumJitterBufferDelayMs:0,packetsLost:0,lastPacketsLost:0}),c=1e3*e.connection.currentRoundTripTime||0,{sumJitter:d,sumJitterBufferDelayMs:l}=a,p=d/r.length,u=l/r.length,h=n-o,f=a.packetsLost-a.lastPacketsLost,m=h&&f?Math.round(100*f/(h+f)):0,g=m>this.highPacketLossThresholdPct,v=p>=this.highJitterThreshold,y=c>=this.highRttThresholdMs,b=u>this.highJitterBufferDelayThresholdMs,w=y&&!v&&!g,_=g&&v,S=v&&b,k={rtt:c,packetLossPct:m,avgJitter:p,avgJitterBufferDelay:u};return(v||g)&&t.push({statsSample:k,type:Ka.Network,reason:Qa.InboundNetworkQuality,iceCandidate:e.connection.local.id}),w&&t.push({statsSample:k,type:Ka.Server,reason:Qa.ServerIssue,iceCandidate:e.connection.remote.id}),_&&t.push({statsSample:k,type:Ka.Network,reason:Qa.InboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),S&&t.push({statsSample:k,type:Ka.Network,reason:Qa.NetworkMediaSyncFailure,iceCandidate:e.connection.local.id}),t}}class yc extends hc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.audio.inbound,r=[],i=this.getLastProcessedStats(e.connection.id)?.audio.inbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const s=e.track.insertedSamplesForDeceleration+e.track.removedSamplesForAcceleration,n=t.track.insertedSamplesForDeceleration+t.track.removedSamplesForAcceleration;if(s===n)return;const o=e.track.totalSamplesReceived-t.track.totalSamplesReceived,a=s-n,c=Math.round(100*a/o),d={correctedSamplesPct:c};c>5&&r.push({statsSample:d,type:Ka.Network,reason:Qa.NetworkMediaSyncFailure,ssrc:e.ssrc})})),r):r}}class bc extends hc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=[],r=[...e.remote?.audio.inbound||[],...e.remote?.video.inbound||[]];if(!r.length)return t;const i=this.getLastProcessedStats(e.connection.id);if(!i)return t;const s=[...i.remote?.audio.inbound||[],...i.remote?.video.inbound||[]],{packetsSent:n}=e.connection,o=i.connection.packetsSent,a=r.reduce(((e,t)=>{const r=s.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),c=1e3*e.connection.currentRoundTripTime||0,{sumJitter:d}=a,l=d/r.length,p=n-o,u=a.packetsLost-a.lastPacketsLost,h=p&&u?Math.round(100*u/(p+u)):0,f=h>5,m=l>=200,g=!f&&m||m||f,v={rtt:c,avgJitter:l,packetLossPct:h};return f&&m&&t.push({statsSample:v,type:Ka.Network,reason:Qa.OutboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),g&&t.push({statsSample:v,type:Ka.Network,reason:Qa.OutboundNetworkQuality,iceCandidate:e.connection.local.id}),t}}class wc extends hc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.outbound.filter((e=>"none"!==e.qualityLimitationReason)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.outbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const s={qualityLimitationReason:e.qualityLimitationReason};e.framesSent>t.framesSent||("cpu"===e.qualityLimitationReason&&r.push({statsSample:s,type:Ka.CPU,reason:Qa.EncoderCPUThrottling,ssrc:e.ssrc}),"bandwidth"===e.qualityLimitationReason&&r.push({statsSample:s,type:Ka.Network,reason:Qa.OutboundNetworkThroughput,ssrc:e.ssrc}))})),r):r}}class _c extends hc{UNKNOWN_DECODER="unknown";#n={};performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}performPrevStatsCleanup(e){const{connectionId:t,cleanupCallback:r}=e;super.performPrevStatsCleanup({...e,cleanupCallback:()=>{delete this.#n[t],"function"==typeof r&&r()}})}processData(e){const t=[],{id:r}=e.connection,i=this.getLastProcessedStats(r)?.video.inbound;return e.video.inbound.forEach((e=>{const{decoderImplementation:s,ssrc:n}=e,o=i?.find((e=>e.ssrc===n));if(o)if(s===this.UNKNOWN_DECODER){if(!this.hadLastDecoderWithIssue(r,n)){this.setLastDecoderWithIssue(r,n,this.UNKNOWN_DECODER);const i={mimeType:e.mimeType,decoderImplementation:s};t.push({ssrc:n,statsSample:i,type:Ka.Stream,reason:Qa.UnknownVideoDecoderIssue,trackIdentifier:e.track.trackIdentifier})}}else this.setLastDecoderWithIssue(r,n,void 0)})),t}setLastDecoderWithIssue(e,t,r){const i=this.#n[e]??{};void 0===r?delete i[t]:i[t]=r,this.#n[e]=i}hadLastDecoderWithIssue(e,t){const r=this.#n[e];return(r&&r[t])===this.UNKNOWN_DECODER}}const Sc=e=>"closed"===e.iceConnectionState||"closed"===e.connectionState,kc=(e,t,r)=>8*((e,t,r)=>{if(!t)return 0;const i=e[r],s=t[r];if(null==i||null==s)return 0;const n=Math.floor(e.timestamp)-Math.floor(t.timestamp);return 0===n?0:(Number(i)-Number(s))/n*1e3})(e,t,r);class Cc{connections=[];statsParser;constructor(e){this.statsParser=e.statsParser}listConnections(){return[...this.connections]}addPeerConnection(e){this.connections.push({id:e.id??String(Date.now()+Math.random().toString(32)),pc:e.pc})}removePeerConnection(e){const t=this.connections.findIndex((({pc:t})=>t===e.pc));t>=0&&this.removeConnectionsByIndexes([t])}async parse(){const e=[],t=this.connections.map((async(t,r)=>{if(!Sc(t.pc))return this.statsParser.parse(t);e.unshift(r)}));return e.length&&this.removeConnectionsByIndexes(e),(await Promise.all(t)).filter((e=>void 0!==e))}removeConnectionsByIndexes(e){e.forEach((e=>{this.connections.splice(e,1)}))}}class Rc{prevStats=new Map;allowedReportTypes=new Set(["candidate-pair","inbound-rtp","outbound-rtp","remote-outbound-rtp","remote-inbound-rtp","track","transport"]);logger;constructor(e){this.logger=e.logger}get previouslyParsedStatsConnectionsIds(){return[...this.prevStats.keys()]}async parse(e){if(!Sc(e.pc))return this.getConnectionStats(e);this.logger.debug("Skip stats parsing. Connection is closed.",{connection:e})}async getConnectionStats(e){const{pc:t,id:r}=e;try{const i=Date.now(),s=await Promise.all(t.getReceivers().map((e=>e.getStats()))),n=await Promise.all(t.getSenders().map((e=>e.getStats())));return{id:r,stats:this.mapReportsStats([...s,...n],e),timeTaken:Date.now()-i}}catch(e){return void this.logger.error("Failed to get stats for PC",{id:r,pc:t,error:e})}}mapReportsStats(e,t){const r={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]},connection:{},remote:{video:{inbound:[],outbound:[]},audio:{inbound:[],outbound:[]}}};e.forEach((e=>{e.forEach((t=>{this.allowedReportTypes.has(t.type)&&this.updateMappedStatsWithReportItemData(t,r,e)}))}));const{id:i}=t,s=this.prevStats.get(i);return s&&this.propagateStatsWithRateValues(r,s.stats),this.prevStats.set(i,{stats:r,ts:Date.now()}),pc({taskId:i,delayMs:35e3,callback:()=>this.prevStats.delete(i)}),r}updateMappedStatsWithReportItemData(e,t,r){const i=e.type;if("candidate-pair"===i&&"succeeded"===e.state&&e.nominated)return void(t.connection=this.prepareConnectionStats(e,r));const s=this.getMediaType(e);if(s)if("outbound-rtp"!==i)if("inbound-rtp"!==i)"remote-outbound-rtp"!==i?"remote-inbound-rtp"===i&&(this.mapConnectionStatsIfNecessary(t,e,r),t.remote[s].inbound.push({...e})):t.remote[s].outbound.push({...e});else{const i=r.get(e.trackId)||r.get(e.mediaSourceId)||{};this.mapConnectionStatsIfNecessary(t,e,r);const n={...e,track:{...i}};t[s].inbound.push(n)}else{const i=r.get(e.trackId)||r.get(e.mediaSourceId)||{},n={...e,track:{...i}};t[s].outbound.push(n)}}getMediaType(e){const t=e.mediaType||e.kind;if(!["audio","video"].includes(t)){const{id:t}=e;if(!t)return;return String(t).includes("Video")?"video":String(t).includes("Audio")?"audio":void 0}return t}propagateStatsWithRateValues(e,t){e.audio.inbound.forEach((e=>{const r=t.audio.inbound.find((({id:t})=>t===e.id));e.bitrate=kc(e,r,"bytesReceived"),e.packetRate=kc(e,r,"packetsReceived")})),e.audio.outbound.forEach((e=>{const r=t.audio.outbound.find((({id:t})=>t===e.id));e.bitrate=kc(e,r,"bytesSent"),e.packetRate=kc(e,r,"packetsSent")})),e.video.inbound.forEach((e=>{const r=t.video.inbound.find((({id:t})=>t===e.id));e.bitrate=kc(e,r,"bytesReceived"),e.packetRate=kc(e,r,"packetsReceived")})),e.video.outbound.forEach((e=>{const r=t.video.outbound.find((({id:t})=>t===e.id));e.bitrate=kc(e,r,"bytesSent"),e.packetRate=kc(e,r,"packetsSent")}))}mapConnectionStatsIfNecessary(e,t,r){if(e.connection.id||!t.transportId)return;const i=r.get(t.transportId);if(i&&i.selectedCandidatePairId){const t=r.get(i.selectedCandidatePairId);e.connection=this.prepareConnectionStats(t,r)}}prepareConnectionStats(e,t){if(!e||!t)return{};const r={...e};if(r.remoteCandidateId){const e=t.get(r.remoteCandidateId);r.remote={...e}}if(r.localCandidateId){const e=t.get(r.localCandidateId);r.local={...e}}return r}}class Pc{eventEmitter;#o=!1;detectors=[];networkScoresCalculator;statsReporter;compositeStatsParser;logger;constructor(e){this.logger=e.logger??{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},this.eventEmitter=e.issueEmitter??new dc,e.onIssues&&this.eventEmitter.on(Ja.Issue,e.onIssues),e.onNetworkScoresUpdated&&this.eventEmitter.on(Ja.NetworkScoresUpdated,e.onNetworkScoresUpdated),this.detectors=e.detectors??[new wc,new mc,new gc,new vc,new bc,new yc,new fc,new _c],this.networkScoresCalculator=e.networkScoresCalculator??new uc,this.compositeStatsParser=e.compositeStatsParser??new Cc({statsParser:new Rc({logger:this.logger})}),this.statsReporter=e.statsReporter??new lc({compositeStatsParser:this.compositeStatsParser,getStatsInterval:e.getStatsInterval??5e3}),window.wid=this,this.wrapRTCPeerConnection(),this.statsReporter.on(lc.STATS_REPORT_READY_EVENT,(t=>{this.detectIssues({data:t.stats,ignoreSSRCList:e.ignoreSSRCList}),this.calculateNetworkScores(t.stats)})),this.statsReporter.on(lc.STATS_REPORTS_PARSED,(e=>{const t={timeTaken:e.timeTaken,ts:Date.now()};this.eventEmitter.emit(Ja.StatsParsingFinished,t)}))}watchNewPeerConnections(){this.#o?this.logger.warn("WebRTCIssueDetector is already started. Skip processing"):(this.logger.info("Start watching peer connections"),this.#o=!0,this.statsReporter.startReporting())}stopWatchingNewPeerConnections(){this.#o?(this.logger.info("Stop watching peer connections"),this.#o=!1,this.statsReporter.stopReporting()):this.logger.warn("WebRTCIssueDetector is already stopped. Skip processing")}handleNewPeerConnection(e){this.#o?(this.logger.debug("Handling new peer connection",e),this.compositeStatsParser.addPeerConnection({pc:e})):this.logger.debug("Skip handling new peer connection. Detector is not running",e)}emitIssues(e){this.eventEmitter.emit(Ja.Issue,e)}detectIssues({data:e,ignoreSSRCList:t}){let r=this.detectors.reduce(((t,r)=>[...t,...r.detect(e)]),[]);t?.length&&(r=r.filter((e=>!e.ssrc||!t.includes(e.ssrc)))),r.length>0&&this.emitIssues(r)}calculateNetworkScores(e){const t=this.networkScoresCalculator.calculate(e);this.eventEmitter.emit(Ja.NetworkScoresUpdated,t)}wrapRTCPeerConnection(){if(!window.RTCPeerConnection)return void this.logger.warn("No RTCPeerConnection found in browser window. Skipping");const e=window.RTCPeerConnection,t=e=>this.handleNewPeerConnection(e);function r(r){const i=new e(r);return t(i),i}r.prototype=e.prototype,window.RTCPeerConnection=r}}class Tc{constructor(e){const{socketClient:t,loadBalancerApiClient:r,onLogMessage:i}=e;this.socket=t,this.loadBalancerClient=r,this.logger=new Ke({namespace:"Network",logLevel:e.logLevel,onLogMessage:i})}closeRemoteProducer(e){return r(this,void 0,void 0,(function*(){yield this.socket.request(oe,{peerId:this.socket.id,producerId:e})}))}closeSendTransport(){var e;return r(this,void 0,void 0,(function*(){this.sendTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.sendTransport)),this.sendTransport=void 0):this.logger.warn("closeSendTransport()",{message:"No available send transport"})}))}closeReceiveTransport(){var e;return r(this,void 0,void 0,(function*(){this.receiveTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.receiveTransport)),this.receiveTransport=void 0):this.logger.warn("closeReceiveTransport()",{message:"No available receive transport"})}))}closeTransport(e){return r(this,void 0,void 0,(function*(){try{const{success:t}=yield this.socket.request(Re,{transportId:e.id});return this.logger.debug("closeTransport()",{transport:e}),Boolean(t)}catch(e){return this.logger.error("closeTransport()",{error:e}),!1}finally{e.close()}}))}createSendTransport(e){return r(this,void 0,void 0,(function*(){if(this.sendTransport)return void this.logger.warn("createSendTransport()",{message:"Send transport already exists"});const t=yield this.socket.request(Ce,{sctpCapabilities:e.sctpCapabilities,localDirection:"send"}),i=e.createSendTransport(t);this.logger.debug("createSendTransport()",{transport:this.sendTransport}),i.on(Me,(({dtlsParameters:e},s,n)=>r(this,void 0,void 0,(function*(){try{yield this.socket.request(Pe,{transportId:i.id,dtlsParameters:e}),s(),this.logger.debug("sendTransport.connect()",{transportId:i.id,dtlsRole:e.role})}catch(r){this.logger.error("sendTransport.on(`connect`)",{dtlsParameters:e,sendTransportOptions:t,error:r}),n(r)}})))),i.on(Le,((e,t,s)=>r(this,void 0,void 0,(function*(){try{const{id:r}=yield this.socket.request(Te,{transportId:i.id,kind:e.kind,rtpParameters:e.rtpParameters,appData:e.appData});t({id:r}),this.logger.debug("sendTransport.produce()",{producerId:r,transportId:i.id,kind:e.kind})}catch(t){this.logger.error("sendTransport.produce()",{error:t,transportId:i.id,kind:e.kind}),s(t)}})))),i.on(De,(e=>{this.logger.debug("sendTransport.state",{state:e}),"failed"===e&&(this.restartIce(i),this.logger.warn("sendTransport.restartIce()",{state:e,sendTransportId:i.id})),setTimeout((()=>{var e;"disconnected"===i.connectionState&&(null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&this.logger.warn("sendTransport is closed before websocket is closed",{sendTransportId:i.id})}),3e3)})),this.sendTransport=i}))}createRecvTransport(e){return r(this,void 0,void 0,(function*(){if(this.receiveTransport)return void this.logger.warn("createReceiveTransport()",{message:"Receive transport already exists"});const t=yield this.socket.request(Ce,{localDirection:"receive"}),i=e.createRecvTransport(t);this.logger.debug("createReceiveTransport()",{transport:this.receiveTransport}),i.on(Me,(({dtlsParameters:e},t,s)=>r(this,void 0,void 0,(function*(){try{yield this.socket.request(Pe,{transportId:i.id,dtlsParameters:e}),t(),this.logger.debug("receiveTransport.connect()",{transportId:i.id,dtlsRole:e.role})}catch(e){this.logger.error("receiveTransport.on(`connect`)",{error:e}),s(e)}})))),i.on(De,(e=>{this.logger.debug("receiveTransport.state",{state:e}),"failed"===e&&(this.restartIce(i),this.logger.debug("receiveTransport.restartIce()",{recvTransportId:i.id})),setTimeout((()=>{var e;"disconnected"===i.connectionState&&(null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&this.logger.warn("receiveTransport is closed before websocket is closed",{recvTransportId:i.id})}),3e3)})),this.receiveTransport=i}))}getIceParameters(e){return r(this,void 0,void 0,(function*(){const t=yield this.socket.request(xe,{transportId:e.id}),{error:r}=t;if(r)throw new Error(r);return this.logger.debug("getIceParameters()",{iceParameters:t}),t}))}restartIce(e){return r(this,void 0,void 0,(function*(){try{const t=yield this.getIceParameters(e);yield e.restartIce({iceParameters:t}),this.logger.debug("restartIce() completed",{iceParameters:t})}catch(e){this.logger.error("restartIce()",{error:e})}}))}createConsumer({producerId:e,rtpCapabilities:t,appId:i,channelId:s,producerPeerId:n}){return r(this,void 0,void 0,(function*(){const r=this.receiveTransport;if(!r)throw this.logger.error("createConsumer()",{reason:"missing receive transport"}),new Error("Failed to create consumer");this.logger.debug("createConsumer()",{producerId:e});const o=yield this.socket.request(me,{producerId:e,transportId:r.id,rtpCapabilities:t,appData:{peerId:this.socket.id,appId:i,channelId:s},producerPeerId:n}),a=yield r.consume(o),{producerPaused:c}=o;return this.logger.debug("Consumer created",{consumer:a,isProducerPaused:c}),{consumer:a,isProducerPaused:c}}))}createDataConsumer({producerId:e,appId:t,channelId:i}){return r(this,void 0,void 0,(function*(){const r=this.receiveTransport;if(!r)throw this.logger.error("createDataConsumer()",{reason:"missing receive transport"}),new Error("Failed to create consumer");this.logger.debug("createDataConsumer()",{producerId:e});const s=yield this.socket.request(ge,{dataProducerId:e,transportId:r.id,appData:{peerId:this.socket.id,producerId:e,appId:t,channelId:i}}),n=yield r.consumeData(s);return this.logger.debug("Data consumer created",{consumer:n}),n}))}closeRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.socket.request(ve,{peerId:this.socket.id,consumerId:e})}))}resumeRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.socket.request(be,{consumerId:e})}))}pauseRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.socket.request(ye,{consumerId:e})}))}updatePeerAppData({peerId:e,appData:t}){return r(this,void 0,void 0,(function*(){return this.socket.request(S,{peerId:e,appData:t})}))}getAudioObserverProducer(){return r(this,void 0,void 0,(function*(){return this.socket.request(T)}))}getTransportsStateInfo(){return r(this,void 0,void 0,(function*(){const[e,t]=yield Promise.all([this.getParsedTransportStats(this.receiveTransport),this.getParsedTransportStats(this.sendTransport)]);return{receive:e,send:t}}))}getParsedTransportStats(e){return r(this,void 0,void 0,(function*(){if(e)try{const t=Array.from((yield e.getStats()).values()),r=t.find((e=>"local-candidate"===e.type)),i=t.find((e=>"remote-candidate"===e.type)),s=t.find((e=>"transport"===e.type));return{dtlsState:null==s?void 0:s.dtlsState,iceState:null==s?void 0:s.iceState,dtlsRole:null==s?void 0:s.dtlsRole,iceRole:null==s?void 0:s.iceRole,selectedCandidatePairChanges:null==s?void 0:s.selectedCandidatePairChanges,tlsVersion:null==s?void 0:s.tlsVersion,localCandidateState:{ip:null==r?void 0:r.ip,address:null==r?void 0:r.address,port:null==r?void 0:r.port,protocol:null==r?void 0:r.protocol,candidateType:null==r?void 0:r.candidateType},remoteCandidateState:{ip:null==i?void 0:i.ip,address:null==i?void 0:i.address,port:null==i?void 0:i.port,protocol:null==i?void 0:i.protocol,candidateType:null==i?void 0:i.candidateType}}}catch(e){return void this.logger.warn("getParsedTransportStats()",{error:e})}else this.logger.debug("getParsedTransportStats()",{message:"Transport is missing"})}))}}const Ec=e=>![h.NotFoundError,h.NotAllowedError,h.DeviceIsBusy].includes(e);class Dc{constructor(e){this.isEnableVideoDevicesLock=!1,this.isEnableAudioDevicesLock=!1,this.isDevicesDetected=!1,this.availableVideoDevices=[],this.availableAudioDevices=[];const{clientEventEmitter:t,logLevel:r,onLogMessage:i}=e;this.clientEventEmitter=t,this.logger=new Ke({namespace:"System",logLevel:r,onLogMessage:i}),this.deviceChangeHandler=this.deviceChangeHandler.bind(this),this.listenDevices()}setIsEnableVideoDevicesLock(e){this.isEnableVideoDevicesLock=e}setIsEnableAudioDevicesLock(e){this.isEnableAudioDevicesLock=e}setAvailableVideoDevices(e){this.availableVideoDevices=e}setAvailableAudioDevices(e){this.availableAudioDevices=e}requestMediaDevicesAccess(e={video:!0,audio:!0}){return r(this,void 0,void 0,(function*(){try{return(yield navigator.mediaDevices.getUserMedia(e)).getTracks()}catch(t){if(this.logger.error("getUserMedia()",{error:t,constraints:e}),"NotAllowedError"===t.name)throw new Error(h.NotAllowedError);if("NotReadableError"===t.name)throw new Error(h.DeviceIsBusy);if("NotFoundError"===t.name)throw new Error(h.NotFoundError);throw new Error(h.RequestDevicesUnknownError)}}))}refreshAvailableMediaDevicesList(){return r(this,void 0,void 0,(function*(){const e=yield navigator.mediaDevices.enumerateDevices(),t=[],r=[];e.forEach((e=>{""!==e.deviceId&&("videoinput"===e.kind&&t.push(e),"audioinput"===e.kind&&r.push(e))})),this.setAvailableVideoDevices(t),this.setAvailableAudioDevices(r);const i=({label:e,kind:t})=>({label:e,kind:t});return this.logger.debug("Devices list updated",{videoDevices:t.map(i),audioDevices:r.map(i)}),e}))}detectDevices(){return r(this,void 0,void 0,(function*(){let e=[];if(this.isDevicesDetected)return;try{e=yield this.requestMediaDevicesAccess()}catch(e){if(Ec(e.message))throw e;e.message!==h.DeviceIsBusy&&(yield this.assertHasAccessToMediaDevices({audio:!0}),yield this.assertHasAccessToMediaDevices({video:!0}))}this.isDevicesDetected=!0;const t=yield this.refreshAvailableMediaDevicesList();e.forEach((e=>e.stop()));const r=t.some((e=>"audioinput"===e.kind)),i=t.some((e=>"videoinput"===e.kind));if(!r&&!i)throw new Error(h.NoDevices)}))}deviceChangeHandler(){return r(this,void 0,void 0,(function*(){this.isDevicesDetected&&(yield this.refreshAvailableMediaDevicesList(),this.clientEventEmitter.safeEmit(A,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}listenDevices(){navigator.mediaDevices.addEventListener("devicechange",this.deviceChangeHandler)}assertHasAccessToMediaDevices(e={video:!0,audio:!0}){return r(this,void 0,void 0,(function*(){try{(yield this.requestMediaDevicesAccess(e)).forEach((e=>e.stop()))}catch(e){if(Ec(e.message))throw e}}))}}class xc{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Ke({logLevel:t.logLevel,namespace:"ChannelEvents",onLogMessage:r})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(y,(e=>{this.engine.clientEventEmitter.safeEmit(E,e),this.logger.debug("New channel event",{event:e})})),e.on(b,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(D,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(_,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(x,e),this.logger.debug("Peer left the channel",{peerId:e})})),e.on(R,(e=>{this.engine.clientEventEmitter.safeEmit(M,e),this.logger.info("Notify the channel that activity confirmation is required",e)})),e.on(P,(e=>{this.engine.clientEventEmitter.safeEmit(I,e),this.logger.info("Notify the channel that it has disconnected due to the activity confirmation expiring",e)})),e.on(C,(e=>{this.engine.clientEventEmitter.safeEmit(L,e),this.logger.info("Notify the channel that the activity has been acquired.",e)})),e.on(S,(({peerId:e,appData:t})=>{const r=this.engine.peers.find((t=>t.id===e));r&&r.observer.emit(S,t)}))}}class Mc{constructor(e){this.queue=new jo;const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Ke({logLevel:t.logLevel,namespace:"MediasoupEvents",onLogMessage:r})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(oe,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(oe,e)})),e.on(ne,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(ne,e)})),e.on(ve,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(ve,e)})),e.on(be,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(be,e)})),e.on(ye,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(ye,e)})),e.on(_e,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const s=this.engine.peers.find((t=>t.id===e));s&&!s.isMe&&s.observer.safeEmit(_e,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(we,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(we,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(we,e)})),e.on(ue,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(ue,e)})),e.on(fe,(({producerId:e,spatialLayer:t})=>r(this,void 0,void 0,(function*(){yield this.queue.push((()=>r(this,void 0,void 0,(function*(){yield this.handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t})}))),fe)})))),e.on(he,(({peerId:e,producerId:t,spatialLayer:i})=>r(this,void 0,void 0,(function*(){const r=this.engine.peers.find((t=>t.id===e));r&&!r.isMe&&r.observer.safeEmit(he,{peerId:e,producerId:t,spatialLayer:i})})))),e.on(Ee,(({reason:e,transportId:t,direction:i,timeout:s})=>r(this,void 0,void 0,(function*(){const r=[this.engine.network.receiveTransport,this.engine.network.sendTransport].find((e=>(null==e?void 0:e.id)===t));r&&"connected"!==r.connectionState&&(this.logger.warn(Ee,{reason:e,transportId:t,direction:i,timeout:s}),this.engine.clientEventEmitter.emit(j,{direction:i,reason:e}))})))),e.on(de,(({peerId:e,producerId:t})=>{const r=this.engine.peers.find((t=>t.id===e)),i=null==r?void 0:r.producers.get(t);r&&i&&(i.paused=!0,r.observer.safeEmit(K,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(le,(({peerId:e,producerId:t})=>{const r=this.engine.peers.find((t=>t.id===e)),i=null==r?void 0:r.producers.get(t);r&&i&&(i.paused=!1,r.observer.safeEmit(Q,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(pe,(({label:e})=>r(this,void 0,void 0,(function*(){const t=this.engine.media.getTrack(e);t&&(t.stopMediaStreamTrack(),this.engine.clientEventEmitter.safeEmit($,t),this.engine.clientEventEmitter.emit(N,{label:e}),yield this.engine.media.deleteTrack(t))}))))}handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t}){return r(this,void 0,void 0,(function*(){const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e}));if(!r)return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Producer not found"});if(!(r instanceof Va))return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Wrong producer kind"});const i=r.getMaxSpatialLayer();i!==t?(yield r.setMaxSpatialLayer(t),yield this.engine.network.socket.request(he,{producerId:e,maxSpatialLayer:t})):this.logger.debug("producerRequestMaxSpatialLayer()",{message:"Skip set max spatial layer",requestedSpatialLayer:t,currentMaxSpatialLayer:i})}))}}var Lc=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Ic=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],Oc=function(e){var t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));for(var s,n,o=Lc.exec(e||""),a={},c=14;c--;)a[Ic[c]]=o[c]||"";return-1!=r&&-1!=i&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){var r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.substr(0,1)&&0!==t.length||i.splice(0,1);"/"==t.substr(t.length-1,1)&&i.splice(i.length-1,1);return i}(0,a.path),a.queryKey=(s=a.query,n={},s.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(n[t]=r)})),n),a};var Ac={exports:{}};try{Ac.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){Ac.exports=!1}var jc=Ac.exports,Fc="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Nc(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||jc))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Fc[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Bc(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Uc=setTimeout,qc=clearTimeout;function Wc(e,t){t.useNativeTimers?(e.setTimeoutFn=Uc.bind(Fc),e.clearTimeoutFn=qc.bind(Fc)):(e.setTimeoutFn=setTimeout.bind(Fc),e.clearTimeoutFn=clearTimeout.bind(Fc))}var Vc=zc;function zc(e){if(e)return function(e){for(var t in zc.prototype)e[t]=zc.prototype[t];return e}(e)}zc.prototype.on=zc.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},zc.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},zc.prototype.off=zc.prototype.removeListener=zc.prototype.removeAllListeners=zc.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var s=0;s<i.length;s++)if((r=i[s])===t||r.fn===t){i.splice(s,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},zc.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var s=(r=r.slice(0)).length;i<s;++i)r[i].apply(this,t)}return this},zc.prototype.emitReserved=zc.prototype.emit,zc.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},zc.prototype.hasListeners=function(e){return!!this.listeners(e).length};const $c=Object.create(null);$c.open="0",$c.close="1",$c.ping="2",$c.pong="3",$c.message="4",$c.upgrade="5",$c.noop="6";const Gc=Object.create(null);Object.keys($c).forEach((e=>{Gc[$c[e]]=e}));const Hc={type:"error",data:"parser error"},Jc="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Kc="function"==typeof ArrayBuffer,Qc=({type:e,data:t},r,i)=>{return Jc&&t instanceof Blob?r?i(t):Xc(t,i):Kc&&(t instanceof ArrayBuffer||(s=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(s):s&&s.buffer instanceof ArrayBuffer))?r?i(t):Xc(new Blob([t]),i):i($c[e]+(t||""));var s},Xc=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+e)},r.readAsDataURL(e)};for(var Yc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Zc="undefined"==typeof Uint8Array?[]:new Uint8Array(256),ed=0;ed<Yc.length;ed++)Zc[Yc.charCodeAt(ed)]=ed;const td="function"==typeof ArrayBuffer,rd=(e,t)=>{if("string"!=typeof e)return{type:"message",data:sd(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:id(e.substring(1),t)};return Gc[r]?e.length>1?{type:Gc[r],data:e.substring(1)}:{type:Gc[r]}:Hc},id=(e,t)=>{if(td){const r=function(e){var t,r,i,s,n,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);var d=new ArrayBuffer(o),l=new Uint8Array(d);for(t=0;t<a;t+=4)r=Zc[e.charCodeAt(t)],i=Zc[e.charCodeAt(t+1)],s=Zc[e.charCodeAt(t+2)],n=Zc[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|s>>2,l[c++]=(3&s)<<6|63&n;return d}(e);return sd(r,t)}return{base64:!0,data:e}},sd=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e,nd=String.fromCharCode(30);class od extends Vc{constructor(e){super(),this.writable=!1,Wc(this,e),this.opts=e,this.query=e.query,this.readyState="",this.socket=e.socket}onError(e,t){const r=new Error(e);return r.type="TransportError",r.description=t,super.emit("error",r),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emit("open")}onData(e){const t=rd(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emit("packet",e)}onClose(){this.readyState="closed",super.emit("close")}}var ad,cd="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),dd={},ld=0,pd=0;function ud(e){var t="";do{t=cd[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function hd(){var e=ud(+new Date);return e!==ad?(ld=0,ad=e):e+"."+ud(ld++)}for(;pd<64;pd++)dd[cd[pd]]=pd;hd.encode=ud,hd.decode=function(e){var t=0;for(pd=0;pd<e.length;pd++)t=64*t+dd[e.charAt(pd)];return t};var fd=hd,md={encode:function(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t},decode:function(e){for(var t={},r=e.split("&"),i=0,s=r.length;i<s;i++){var n=r[i].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}};class gd extends od{constructor(){super(...arguments),this.polling=!1}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emit("poll")}onData(e){((e,t)=>{const r=e.split(nd),i=[];for(let e=0;e<r.length;e++){const s=rd(r[e],t);if(i.push(s),"error"===s.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose(),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let s=0;e.forEach(((e,n)=>{Qc(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(nd))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let r="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=fd()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port);const i=md.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}}function vd(){}const yd=null!=new Nc({xdomain:!1}).responseType;class bd extends Vc{constructor(e,t){super(),Wc(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=Bc(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new Nc(e);try{t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=bd.requestsCount++,bd.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(e){this.emit("data",e),this.onSuccess()}onError(e){this.emit("error",e),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=vd,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete bd.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&this.onData(e)}abort(){this.cleanup()}}if(bd.requestsCount=0,bd.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",wd);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Fc?"pagehide":"unload",wd,!1)}function wd(){for(let e in bd.requests)bd.requests.hasOwnProperty(e)&&bd.requests[e].abort()}const _d="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Sd=Fc.WebSocket||Fc.MozWebSocket,kd="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class Cd extends od{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=kd?{}:Bc(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=kd?new Sd(e,t,r):t?new Sd(e,t):new Sd(e)}catch(e){return this.emit("error",e)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;Qc(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&_d((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let r="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=fd()),this.supportsBinary||(e.b64=1);const i=md.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!(!Sd||"__initialize"in Sd&&this.name===Cd.prototype.name)}}const Rd={websocket:Cd,polling:class extends gd{constructor(e){if(super(e),"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=yd&&!t}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new bd(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",(e=>{this.onError("xhr post error",e)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e=>{this.onError("xhr poll error",e)})),this.pollXhr=e}}};class Pd extends Vc{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=Oc(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=Oc(t.host).host),Wc(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=md.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=function(e){const t={};for(let r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}(this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new Rd[e](r)}open(){let e;if(this.opts.rememberUpgrade&&Pd.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(()=>{this.onClose("transport close")}))}probe(e){let t=this.createTransport(e),r=!1;Pd.priorWebsocketSuccess=!1;const i=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!r)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;Pd.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{r||"closed"!==this.readyState&&(d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function s(){r||(r=!0,d(),t.close(),t=null)}const n=e=>{const r=new Error("probe error: "+e);r.transport=t.name,s(),this.emitReserved("upgradeError",r)};function o(){n("transport closed")}function a(){n("socket closed")}function c(e){t&&e.name!==t.name&&s()}const d=()=>{t.removeListener("open",i),t.removeListener("error",n),t.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};t.once("open",i),t.once("error",n),t.once("close",o),this.once("close",a),this.once("upgrading",c),t.open()}onOpen(){if(this.readyState="open",Pd.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.resetPingTimeout(),this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emitReserved("flush"))}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(e){Pd.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}Pd.protocol=4,Pd.protocol;const Td="function"==typeof ArrayBuffer,Ed=Object.prototype.toString,Dd="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Ed.call(Blob),xd="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Ed.call(File);function Md(e){return Td&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||Dd&&e instanceof Blob||xd&&e instanceof File}function Ld(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Ld(e[t]))return!0;return!1}if(Md(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Ld(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Ld(e[t]))return!0;return!1}function Id(e){const t=[],r=e.data,i=e;return i.data=Od(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Od(e,t){if(!e)return e;if(Md(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=Od(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)e.hasOwnProperty(i)&&(r[i]=Od(e[i],t));return r}return e}function Ad(e,t){return e.data=jd(e.data,t),e.attachments=void 0,e}function jd(e,t){if(!e)return e;if(e&&e._placeholder)return t[e.num];if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=jd(e[r],t);else if("object"==typeof e)for(const r in e)e.hasOwnProperty(r)&&(e[r]=jd(e[r],t));return e}var Fd;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Fd||(Fd={}));class Nd extends Vc{constructor(){super()}add(e){let t;if("string"==typeof e)t=this.decodeString(e),t.type===Fd.BINARY_EVENT||t.type===Fd.BINARY_ACK?(this.reconstructor=new Bd(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t);else{if(!Md(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===Fd[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Fd.BINARY_EVENT||r.type===Fd.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=function(e){try{return JSON.parse(e)}catch(e){return!1}}(e.substr(t));if(!Nd.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}static isPayloadValid(e,t){switch(e){case Fd.CONNECT:return"object"==typeof t;case Fd.DISCONNECT:return void 0===t;case Fd.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case Fd.EVENT:case Fd.BINARY_EVENT:return Array.isArray(t)&&t.length>0;case Fd.ACK:case Fd.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class Bd{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=Ad(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var Ud=Object.freeze({__proto__:null,protocol:5,get PacketType(){return Fd},Encoder:class{encode(e){return e.type!==Fd.EVENT&&e.type!==Fd.ACK||!Ld(e)?[this.encodeAsString(e)]:(e.type=e.type===Fd.EVENT?Fd.BINARY_EVENT:Fd.BINARY_ACK,this.encodeAsBinary(e))}encodeAsString(e){let t=""+e.type;return e.type!==Fd.BINARY_EVENT&&e.type!==Fd.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data)),t}encodeAsBinary(e){const t=Id(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:Nd});function qd(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Wd=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Vd extends Vc{constructor(e,t,r){super(),this.connected=!1,this.disconnected=!0,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this.io._autoConnect&&this.open()}subEvents(){if(this.subs)return;const e=this.io;this.subs=[qd(e,"open",this.onopen.bind(this)),qd(e,"packet",this.onpacket.bind(this)),qd(e,"error",this.onerror.bind(this)),qd(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(Wd.hasOwnProperty(e))throw new Error('"'+e+'" is a reserved event name');t.unshift(e);const r={type:Fd.EVENT,data:t,options:{}};r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]&&(this.acks[this.ids]=t.pop(),r.id=this.ids++);const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?this.packet(r):this.sendBuffer.push(r)),this.flags={},this}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this.packet({type:Fd.CONNECT,data:e})})):this.packet({type:Fd.CONNECT,data:this.auth})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e){this.connected=!1,this.disconnected=!0,delete this.id,this.emitReserved("disconnect",e)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Fd.CONNECT:if(e.data&&e.data.sid){const t=e.data.sid;this.onconnect(t)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Fd.EVENT:case Fd.BINARY_EVENT:this.onevent(e);break;case Fd.ACK:case Fd.BINARY_ACK:this.onack(e);break;case Fd.DISCONNECT:this.ondisconnect();break;case Fd.CONNECT_ERROR:const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e)}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Fd.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e){this.id=e,this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>this.packet(e))),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Fd.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}}var zd=$d;function $d(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}$d.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},$d.prototype.reset=function(){this.attempts=0},$d.prototype.setMin=function(e){this.ms=e},$d.prototype.setMax=function(e){this.max=e},$d.prototype.setJitter=function(e){this.jitter=e};class Gd extends Vc{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,Wc(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new zd({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||Ud;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Pd(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=qd(t,"open",(function(){r.onopen(),e&&e()})),s=qd(t,"error",(t=>{r.cleanup(),r._readyState="closed",this.emitReserved("error",t),e?e(t):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;0===e&&i();const r=this.setTimeoutFn((()=>{i(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(qd(e,"ping",this.onping.bind(this)),qd(e,"data",this.ondata.bind(this)),qd(e,"error",this.onerror.bind(this)),qd(e,"close",this.onclose.bind(this)),qd(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){this.decoder.add(e)}ondecoded(e){this.emitReserved("packet",e)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r||(r=new Vd(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,"opening"===this._readyState&&this.cleanup(),this.backoff.reset(),this._readyState="closed",this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Hd={};function Jd(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=Oc(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const s=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+s+":"+i.port+t,i.href=i.protocol+"://"+s+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,s=r.id,n=r.path,o=Hd[s]&&n in Hd[s].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new Gd(i,t):(Hd[s]||(Hd[s]=new Gd(i,t)),a=Hd[s]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}class Kd{constructor(e){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new n,this.knownDisconnectReasonsCodes={"io server disconnect":"server.disconnect","io client disconnect":"client.disconnect","ping timeout":"ping.timeout","transport close":"transport.close","transport error":"transport.error"},this.logger=new Ke({namespace:"Socket",logLevel:e.logLevel,onLogMessage:e.onLogMessage})}get observer(){return this._observer}get id(){var e;return null===(e=this.connection)||void 0===e?void 0:e.id}connect(e,t){const r=Jd(e,{transports:["polling","websocket"],upgrade:!0,rememberUpgrade:!1,auth:{token:t}});this.connection=r,this.serverUrl=e,r.on("connect",(()=>{const e=this.reconnectingAttempt?se.Reconnected:se.Connected;this.isConnected=!0,this.setReconnectingAttempt(0),this.logger.debug("connection.on(`connect`)",{connectionId:r.id}),this.observer.safeEmit("state",{state:e})})),r.on("connect_error",(e=>{this.connectionError=e,this.logger.error("connection.on(`connect_error`)",{error:e}),this.observer.safeEmit("state",{state:se.Error,error:e})})),r.on("disconnect",(e=>{this.isConnected=!1,this.setReconnectingAttempt(0),this.disconnectReason=e,this.logger.warn("connection.on(`disconnect`)",{reason:e}),this.observer.safeEmit("state",{state:se.Disconnected,code:this.getDisconnectReasonCode(e)})})),r.io.on("reconnect_attempt",(e=>{this.setReconnectingAttempt(e),this.logger.warn("connection.on(`reconnect_attempt`)",{attempt:e}),this.observer.safeEmit("state",{state:se.Reconnecting})})),r.io.on("reconnect",(()=>{this.logger.debug("connection.on(`reconnect`)",{connectionId:r.id}),this.observer.safeEmit("state",{state:se.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect(),this.setReconnectingAttempt(0))}request(e,t={}){return new Promise(((r,i)=>{if(!this.connection)return this.logger.error("request()",{type:e,data:t}),void i(new Error("Socket request: Socket connection is not initialized"));this.connection.emit(e,t,(s=>{s.error?(this.logger.error("request()",{event:e,payload:t,response:s}),i(s.error)):r(s)}))}))}getDisconnectReasonCode(e){const t=String(e).toLowerCase();return this.knownDisconnectReasonsCodes[t]||t}setReconnectingAttempt(e){this.reconnectingAttempt=e}}var Qd={exports:{}},Xd=function(e,t){return function(){for(var r=new Array(arguments.length),i=0;i<r.length;i++)r[i]=arguments[i];return e.apply(t,r)}},Yd=Xd,Zd=Object.prototype.toString;function el(e){return"[object Array]"===Zd.call(e)}function tl(e){return void 0===e}function rl(e){return null!==e&&"object"==typeof e}function il(e){if("[object Object]"!==Zd.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function sl(e){return"[object Function]"===Zd.call(e)}function nl(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),el(e))for(var r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}var ol={isArray:el,isArrayBuffer:function(e){return"[object ArrayBuffer]"===Zd.call(e)},isBuffer:function(e){return null!==e&&!tl(e)&&null!==e.constructor&&!tl(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:rl,isPlainObject:il,isUndefined:tl,isDate:function(e){return"[object Date]"===Zd.call(e)},isFile:function(e){return"[object File]"===Zd.call(e)},isBlob:function(e){return"[object Blob]"===Zd.call(e)},isFunction:sl,isStream:function(e){return rl(e)&&sl(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:nl,merge:function e(){var t={};function r(r,i){il(t[i])&&il(r)?t[i]=e(t[i],r):il(r)?t[i]=e({},r):el(r)?t[i]=r.slice():t[i]=r}for(var i=0,s=arguments.length;i<s;i++)nl(arguments[i],r);return t},extend:function(e,t,r){return nl(t,(function(t,i){e[i]=r&&"function"==typeof t?Yd(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},al=ol;function cl(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var dl=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(al.isURLSearchParams(t))i=t.toString();else{var s=[];al.forEach(t,(function(e,t){null!=e&&(al.isArray(e)?t+="[]":e=[e],al.forEach(e,(function(e){al.isDate(e)?e=e.toISOString():al.isObject(e)&&(e=JSON.stringify(e)),s.push(cl(t)+"="+cl(e))})))})),i=s.join("&")}if(i){var n=e.indexOf("#");-1!==n&&(e=e.slice(0,n)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},ll=ol;function pl(){this.handlers=[]}pl.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},pl.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},pl.prototype.forEach=function(e){ll.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var ul=pl,hl=ol,fl=function(e,t,r,i,s){return e.config=t,r&&(e.code=r),e.request=i,e.response=s,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e},ml=fl,gl=function(e,t,r,i,s){var n=new Error(e);return ml(n,t,r,i,s)},vl=gl,yl=ol,bl=yl.isStandardBrowserEnv()?{write:function(e,t,r,i,s,n){var o=[];o.push(e+"="+encodeURIComponent(t)),yl.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),yl.isString(i)&&o.push("path="+i),yl.isString(s)&&o.push("domain="+s),!0===n&&o.push("secure"),document.cookie=o.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},wl=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},_l=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},Sl=ol,kl=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],Cl=ol,Rl=Cl.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function i(e){var i=e;return t&&(r.setAttribute("href",i),i=r.href),r.setAttribute("href",i),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=i(window.location.href),function(t){var r=Cl.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},Pl=ol,Tl=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(vl("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},El=bl,Dl=dl,xl=function(e,t){return e&&!wl(t)?_l(e,t):t},Ml=function(e){var t,r,i,s={};return e?(Sl.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=Sl.trim(e.substr(0,i)).toLowerCase(),r=Sl.trim(e.substr(i+1)),t){if(s[t]&&kl.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+", "+r:r}})),s):s},Ll=Rl,Il=gl,Ol=function(e){return new Promise((function(t,r){var i=e.data,s=e.headers,n=e.responseType;Pl.isFormData(i)&&delete s["Content-Type"];var o=new XMLHttpRequest;if(e.auth){var a=e.auth.username||"",c=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";s.Authorization="Basic "+btoa(a+":"+c)}var d=xl(e.baseURL,e.url);function l(){if(o){var i="getAllResponseHeaders"in o?Ml(o.getAllResponseHeaders()):null,s={data:n&&"text"!==n&&"json"!==n?o.response:o.responseText,status:o.status,statusText:o.statusText,headers:i,config:e,request:o};Tl(t,r,s),o=null}}if(o.open(e.method.toUpperCase(),Dl(d,e.params,e.paramsSerializer),!0),o.timeout=e.timeout,"onloadend"in o?o.onloadend=l:o.onreadystatechange=function(){o&&4===o.readyState&&(0!==o.status||o.responseURL&&0===o.responseURL.indexOf("file:"))&&setTimeout(l)},o.onabort=function(){o&&(r(Il("Request aborted",e,"ECONNABORTED",o)),o=null)},o.onerror=function(){r(Il("Network Error",e,null,o)),o=null},o.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(Il(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",o)),o=null},Pl.isStandardBrowserEnv()){var p=(e.withCredentials||Ll(d))&&e.xsrfCookieName?El.read(e.xsrfCookieName):void 0;p&&(s[e.xsrfHeaderName]=p)}"setRequestHeader"in o&&Pl.forEach(s,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete s[t]:o.setRequestHeader(t,e)})),Pl.isUndefined(e.withCredentials)||(o.withCredentials=!!e.withCredentials),n&&"json"!==n&&(o.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&o.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&o.upload&&o.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){o&&(o.abort(),r(e),o=null)})),i||(i=null),o.send(i)}))},Al=ol,jl=function(e,t){hl.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},Fl=fl,Nl={"Content-Type":"application/x-www-form-urlencoded"};function Bl(e,t){!Al.isUndefined(e)&&Al.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var Ul,ql={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(Ul=Ol),Ul),transformRequest:[function(e,t){return jl(t,"Accept"),jl(t,"Content-Type"),Al.isFormData(e)||Al.isArrayBuffer(e)||Al.isBuffer(e)||Al.isStream(e)||Al.isFile(e)||Al.isBlob(e)?e:Al.isArrayBufferView(e)?e.buffer:Al.isURLSearchParams(e)?(Bl(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):Al.isObject(e)||t&&"application/json"===t["Content-Type"]?(Bl(t,"application/json"),function(e,t,r){if(Al.isString(e))try{return(t||JSON.parse)(e),Al.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,i=t&&t.forcedJSONParsing,s=!r&&"json"===this.responseType;if(s||i&&Al.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw Fl(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};ql.headers={common:{Accept:"application/json, text/plain, */*"}},Al.forEach(["delete","get","head"],(function(e){ql.headers[e]={}})),Al.forEach(["post","put","patch"],(function(e){ql.headers[e]=Al.merge(Nl)}));var Wl=ql,Vl=ol,zl=Wl,$l=function(e){return!(!e||!e.__CANCEL__)},Gl=ol,Hl=function(e,t,r){var i=this||zl;return Vl.forEach(r,(function(r){e=r.call(i,e,t)})),e},Jl=$l,Kl=Wl;function Ql(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var Xl=ol,Yl=function(e,t){t=t||{};var r={},i=["url","method","data"],s=["headers","auth","proxy","params"],n=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],o=["validateStatus"];function a(e,t){return Xl.isPlainObject(e)&&Xl.isPlainObject(t)?Xl.merge(e,t):Xl.isPlainObject(t)?Xl.merge({},t):Xl.isArray(t)?t.slice():t}function c(i){Xl.isUndefined(t[i])?Xl.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(e[i],t[i])}Xl.forEach(i,(function(e){Xl.isUndefined(t[e])||(r[e]=a(void 0,t[e]))})),Xl.forEach(s,c),Xl.forEach(n,(function(i){Xl.isUndefined(t[i])?Xl.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(void 0,t[i])})),Xl.forEach(o,(function(i){i in t?r[i]=a(e[i],t[i]):i in e&&(r[i]=a(void 0,e[i]))}));var d=i.concat(s).concat(n).concat(o),l=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return Xl.forEach(l,c),r},Zl={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},ep={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){ep[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var tp={},rp=Zl.version.split(".");function ip(e,t){for(var r=t?t.split("."):rp,i=e.split("."),s=0;s<3;s++){if(r[s]>i[s])return!0;if(r[s]<i[s])return!1}return!1}ep.transitional=function(e,t,r){var i=t&&ip(t);function s(e,t){return"[Axios v"+Zl.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,n,o){if(!1===e)throw new Error(s(n," has been removed in "+t));return i&&!tp[n]&&(tp[n]=!0,console.warn(s(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,o)}};var sp={isOlderVersion:ip,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var i=Object.keys(e),s=i.length;s-- >0;){var n=i[s],o=t[n];if(o){var a=e[n],c=void 0===a||o(a,n,e);if(!0!==c)throw new TypeError("option "+n+" must be "+c)}else if(!0!==r)throw Error("Unknown option "+n)}},validators:ep},np=ol,op=dl,ap=ul,cp=function(e){return Ql(e),e.headers=e.headers||{},e.data=Hl.call(e,e.data,e.headers,e.transformRequest),e.headers=Gl.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Gl.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Kl.adapter)(e).then((function(t){return Ql(e),t.data=Hl.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return Jl(t)||(Ql(e),t&&t.response&&(t.response.data=Hl.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},dp=Yl,lp=sp,pp=lp.validators;function up(e){this.defaults=e,this.interceptors={request:new ap,response:new ap}}up.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=dp(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&lp.assertOptions(t,{silentJSONParsing:pp.transitional(pp.boolean,"1.0.0"),forcedJSONParsing:pp.transitional(pp.boolean,"1.0.0"),clarifyTimeoutError:pp.transitional(pp.boolean,"1.0.0")},!1);var r=[],i=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(i=i&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var s,n=[];if(this.interceptors.response.forEach((function(e){n.push(e.fulfilled,e.rejected)})),!i){var o=[cp,void 0];for(Array.prototype.unshift.apply(o,r),o=o.concat(n),s=Promise.resolve(e);o.length;)s=s.then(o.shift(),o.shift());return s}for(var a=e;r.length;){var c=r.shift(),d=r.shift();try{a=c(a)}catch(e){d(e);break}}try{s=cp(a)}catch(e){return Promise.reject(e)}for(;n.length;)s=s.then(n.shift(),n.shift());return s},up.prototype.getUri=function(e){return e=dp(this.defaults,e),op(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},np.forEach(["delete","get","head","options"],(function(e){up.prototype[e]=function(t,r){return this.request(dp(r||{},{method:e,url:t,data:(r||{}).data}))}})),np.forEach(["post","put","patch"],(function(e){up.prototype[e]=function(t,r,i){return this.request(dp(i||{},{method:e,url:t,data:r}))}}));var hp=up;function fp(e){this.message=e}fp.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},fp.prototype.__CANCEL__=!0;var mp=fp,gp=mp;function vp(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new gp(e),t(r.reason))}))}vp.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},vp.source=function(){var e,t=new vp((function(t){e=t}));return{token:t,cancel:e}};var yp=vp,bp=ol,wp=Xd,_p=hp,Sp=Yl;function kp(e){var t=new _p(e),r=wp(_p.prototype.request,t);return bp.extend(r,_p.prototype,t),bp.extend(r,t),r}var Cp=kp(Wl);Cp.Axios=_p,Cp.create=function(e){return kp(Sp(Cp.defaults,e))},Cp.Cancel=mp,Cp.CancelToken=yp,Cp.isCancel=$l,Cp.all=function(e){return Promise.all(e)},Cp.spread=function(e){return function(t){return e.apply(null,t)}},Cp.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},Qd.exports=Cp,Qd.exports.default=Cp;var Rp=Qd.exports,Pp="undefined"!=typeof Symbol&&Symbol,Tp=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var i=Object.getOwnPropertySymbols(e);if(1!==i.length||i[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var s=Object.getOwnPropertyDescriptor(e,t);if(42!==s.value||!0!==s.enumerable)return!1}return!0},Ep="Function.prototype.bind called on incompatible ",Dp=Array.prototype.slice,xp=Object.prototype.toString,Mp=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==xp.call(t))throw new TypeError(Ep+t);for(var r,i=Dp.call(arguments,1),s=function(){if(this instanceof r){var s=t.apply(this,i.concat(Dp.call(arguments)));return Object(s)===s?s:this}return t.apply(e,i.concat(Dp.call(arguments)))},n=Math.max(0,t.length-i.length),o=[],a=0;a<n;a++)o.push("$"+a);if(r=Function("binder","return function ("+o.join(",")+"){ return binder.apply(this,arguments); }")(s),t.prototype){var c=function(){};c.prototype=t.prototype,r.prototype=new c,c.prototype=null}return r},Lp=Function.prototype.bind||Mp,Ip=Lp.call(Function.call,Object.prototype.hasOwnProperty),Op=SyntaxError,Ap=Function,jp=TypeError,Fp=function(e){try{return Ap('"use strict"; return ('+e+").constructor;")()}catch(e){}},Np=Object.getOwnPropertyDescriptor;if(Np)try{Np({},"")}catch(Ka){Np=null}var Bp=function(){throw new jp},Up=Np?function(){try{return Bp}catch(e){try{return Np(arguments,"callee").get}catch(e){return Bp}}}():Bp,qp="function"==typeof Pp&&"function"==typeof Symbol&&"symbol"==typeof Pp("foo")&&"symbol"==typeof Symbol("bar")&&Tp(),Wp=Object.getPrototypeOf||function(e){return e.__proto__},Vp={},zp="undefined"==typeof Uint8Array?undefined:Wp(Uint8Array),$p={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":qp?Wp([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":Vp,"%AsyncGenerator%":Vp,"%AsyncGeneratorFunction%":Vp,"%AsyncIteratorPrototype%":Vp,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":Ap,"%GeneratorFunction%":Vp,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":qp?Wp(Wp([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&qp?Wp((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&qp?Wp((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":qp?Wp(""[Symbol.iterator]()):undefined,"%Symbol%":qp?Symbol:undefined,"%SyntaxError%":Op,"%ThrowTypeError%":Up,"%TypedArray%":zp,"%TypeError%":jp,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet},Gp=function e(t){var r;if("%AsyncFunction%"===t)r=Fp("async function () {}");else if("%GeneratorFunction%"===t)r=Fp("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=Fp("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var s=e("%AsyncGenerator%");s&&(r=Wp(s.prototype))}return $p[t]=r,r},Hp={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Jp=Lp,Kp=Ip,Qp=Jp.call(Function.call,Array.prototype.concat),Xp=Jp.call(Function.apply,Array.prototype.splice),Yp=Jp.call(Function.call,String.prototype.replace),Zp=Jp.call(Function.call,String.prototype.slice),eu=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,tu=/\\(\\)?/g,ru=function(e){var t=Zp(e,0,1),r=Zp(e,-1);if("%"===t&&"%"!==r)throw new Op("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new Op("invalid intrinsic syntax, expected opening `%`");var i=[];return Yp(e,eu,(function(e,t,r,s){i[i.length]=r?Yp(s,tu,"$1"):t||e})),i},iu=function(e,t){var r,i=e;if(Kp(Hp,i)&&(i="%"+(r=Hp[i])[0]+"%"),Kp($p,i)){var s=$p[i];if(s===Vp&&(s=Gp(i)),void 0===s&&!t)throw new jp("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:s}}throw new Op("intrinsic "+e+" does not exist!")},su=function(e,t){if("string"!=typeof e||0===e.length)throw new jp("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new jp('"allowMissing" argument must be a boolean');var r=ru(e),i=r.length>0?r[0]:"",s=iu("%"+i+"%",t),n=s.name,o=s.value,a=!1,c=s.alias;c&&(i=c[0],Xp(r,Qp([0,1],c)));for(var d=1,l=!0;d<r.length;d+=1){var p=r[d],u=Zp(p,0,1),h=Zp(p,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new Op("property names with quotes must have matching quotes");if("constructor"!==p&&l||(a=!0),Kp($p,n="%"+(i+="."+p)+"%"))o=$p[n];else if(null!=o){if(!(p in o)){if(!t)throw new jp("base intrinsic for "+e+" exists, but the property is not available.");return}if(Np&&d+1>=r.length){var f=Np(o,p);o=(l=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:o[p]}else l=Kp(o,p),o=o[p];l&&!a&&($p[n]=o)}}return o},nu={exports:{}};!function(e){var t=Lp,r=su,i=r("%Function.prototype.apply%"),s=r("%Function.prototype.call%"),n=r("%Reflect.apply%",!0)||t.call(s,i),o=r("%Object.getOwnPropertyDescriptor%",!0),a=r("%Object.defineProperty%",!0),c=r("%Math.max%");if(a)try{a({},"a",{value:1})}catch(e){a=null}e.exports=function(e){var r=n(t,s,arguments);if(o&&a){var i=o(r,"length");i.configurable&&a(r,"length",{value:1+c(0,e.length-(arguments.length-1))})}return r};var d=function(){return n(t,i,arguments)};a?a(e.exports,"apply",{value:d}):e.exports.apply=d}(nu);var ou=su,au=nu.exports,cu=au(ou("String.prototype.indexOf")),du=c(Object.freeze({__proto__:null,default:{}})),lu="function"==typeof Map&&Map.prototype,pu=Object.getOwnPropertyDescriptor&&lu?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,uu=lu&&pu&&"function"==typeof pu.get?pu.get:null,hu=lu&&Map.prototype.forEach,fu="function"==typeof Set&&Set.prototype,mu=Object.getOwnPropertyDescriptor&&fu?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,gu=fu&&mu&&"function"==typeof mu.get?mu.get:null,vu=fu&&Set.prototype.forEach,yu="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,bu="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,wu="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,_u=Boolean.prototype.valueOf,Su=Object.prototype.toString,ku=Function.prototype.toString,Cu=String.prototype.match,Ru="function"==typeof BigInt?BigInt.prototype.valueOf:null,Pu=Object.getOwnPropertySymbols,Tu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Eu="function"==typeof Symbol&&"object"==typeof Symbol.iterator,Du=Object.prototype.propertyIsEnumerable,xu=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),Mu=du.custom,Lu=Mu&&Fu(Mu)?Mu:null,Iu="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function Ou(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function Au(e){return String(e).replace(/"/g,"&quot;")}function ju(e){return!("[object Array]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}function Fu(e){if(Eu)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!Tu)return!1;try{return Tu.call(e),!0}catch(e){}return!1}var Nu=Object.prototype.hasOwnProperty||function(e){return e in this};function Bu(e,t){return Nu.call(e,t)}function Uu(e){return Su.call(e)}function qu(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,i=e.length;r<i;r++)if(e[r]===t)return r;return-1}function Wu(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return Wu(e.slice(0,t.maxStringLength),t)+i}return Ou(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,Vu),"single",t)}function Vu(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+t.toString(16).toUpperCase()}function zu(e){return"Object("+e+")"}function $u(e){return e+" { ? }"}function Gu(e,t,r,i){return e+" ("+t+") {"+(i?Hu(r,i):r.join(", "))+"}"}function Hu(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function Ju(e,t){var r=ju(e),i=[];if(r){i.length=e.length;for(var s=0;s<e.length;s++)i[s]=Bu(e,s)?t(e[s],e):""}var n,o="function"==typeof Pu?Pu(e):[];if(Eu){n={};for(var a=0;a<o.length;a++)n["$"+o[a]]=o[a]}for(var c in e)Bu(e,c)&&(r&&String(Number(c))===c&&c<e.length||Eu&&n["$"+c]instanceof Symbol||(/[^\w$]/.test(c)?i.push(t(c,e)+": "+t(e[c],e)):i.push(c+": "+t(e[c],e))));if("function"==typeof Pu)for(var d=0;d<o.length;d++)Du.call(e,o[d])&&i.push("["+t(o[d])+"]: "+t(e[o[d]],e));return i}var Ku=su,Qu=function(e,t){var r=ou(e,!!t);return"function"==typeof r&&cu(e,".prototype.")>-1?au(r):r},Xu=function e(t,r,i,s){var n=r||{};if(Bu(n,"quoteStyle")&&"single"!==n.quoteStyle&&"double"!==n.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Bu(n,"maxStringLength")&&("number"==typeof n.maxStringLength?n.maxStringLength<0&&n.maxStringLength!==1/0:null!==n.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var o=!Bu(n,"customInspect")||n.customInspect;if("boolean"!=typeof o&&"symbol"!==o)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Bu(n,"indent")&&null!==n.indent&&"\t"!==n.indent&&!(parseInt(n.indent,10)===n.indent&&n.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return Wu(t,n);if("number"==typeof t)return 0===t?1/0/t>0?"0":"-0":String(t);if("bigint"==typeof t)return String(t)+"n";var a=void 0===n.depth?5:n.depth;if(void 0===i&&(i=0),i>=a&&a>0&&"object"==typeof t)return ju(t)?"[Array]":"[Object]";var c=function(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;r=Array(e.indent+1).join(" ")}return{base:r,prev:Array(t+1).join(r)}}(n,i);if(void 0===s)s=[];else if(qu(s,t)>=0)return"[Circular]";function d(t,r,o){if(r&&(s=s.slice()).push(r),o){var a={depth:n.depth};return Bu(n,"quoteStyle")&&(a.quoteStyle=n.quoteStyle),e(t,a,i+1,s)}return e(t,n,i+1,s)}if("function"==typeof t){var l=function(e){if(e.name)return e.name;var t=Cu.call(ku.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),p=Ju(t,d);return"[Function"+(l?": "+l:" (anonymous)")+"]"+(p.length>0?" { "+p.join(", ")+" }":"")}if(Fu(t)){var u=Eu?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):Tu.call(t);return"object"!=typeof t||Eu?u:zu(u)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(t)){for(var h="<"+String(t.nodeName).toLowerCase(),f=t.attributes||[],m=0;m<f.length;m++)h+=" "+f[m].name+"="+Ou(Au(f[m].value),"double",n);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(ju(t)){if(0===t.length)return"[]";var g=Ju(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(qu(e[t],"\n")>=0)return!1;return!0}(g)?"["+Hu(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}(t)){var v=Ju(t,d);return 0===v.length?"["+String(t)+"]":"{ ["+String(t)+"] "+v.join(", ")+" }"}if("object"==typeof t&&o){if(Lu&&"function"==typeof t[Lu])return t[Lu]();if("symbol"!==o&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!uu||!e||"object"!=typeof e)return!1;try{uu.call(e);try{gu.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var y=[];return hu.call(t,(function(e,r){y.push(d(r,t,!0)+" => "+d(e,t))})),Gu("Map",uu.call(t),y,c)}if(function(e){if(!gu||!e||"object"!=typeof e)return!1;try{gu.call(e);try{uu.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return vu.call(t,(function(e){b.push(d(e,t))})),Gu("Set",gu.call(t),b,c)}if(function(e){if(!yu||!e||"object"!=typeof e)return!1;try{yu.call(e,yu);try{bu.call(e,bu)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return $u("WeakMap");if(function(e){if(!bu||!e||"object"!=typeof e)return!1;try{bu.call(e,bu);try{yu.call(e,yu)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return $u("WeakSet");if(function(e){if(!wu||!e||"object"!=typeof e)return!1;try{return wu.call(e),!0}catch(e){}return!1}(t))return $u("WeakRef");if(function(e){return!("[object Number]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}(t))return zu(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!Ru)return!1;try{return Ru.call(e),!0}catch(e){}return!1}(t))return zu(d(Ru.call(t)));if(function(e){return!("[object Boolean]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}(t))return zu(_u.call(t));if(function(e){return!("[object String]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}(t))return zu(d(String(t)));if(!function(e){return!("[object Date]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}(t)&&!function(e){return!("[object RegExp]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}(t)){var w=Ju(t,d),_=xu?xu(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",k=!_&&Iu&&Object(t)===t&&Iu in t?Uu(t).slice(8,-1):S?"Object":"",C=(_||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(k||S?"["+[].concat(k||[],S||[]).join(": ")+"] ":"");return 0===w.length?C+"{}":c?C+"{"+Hu(w,c)+"}":C+"{ "+w.join(", ")+" }"}return String(t)},Yu=Ku("%TypeError%"),Zu=Ku("%WeakMap%",!0),eh=Ku("%Map%",!0),th=Qu("WeakMap.prototype.get",!0),rh=Qu("WeakMap.prototype.set",!0),ih=Qu("WeakMap.prototype.has",!0),sh=Qu("Map.prototype.get",!0),nh=Qu("Map.prototype.set",!0),oh=Qu("Map.prototype.has",!0),ah=function(e,t){for(var r,i=e;null!==(r=i.next);i=r)if(r.key===t)return i.next=r.next,r.next=e.next,e.next=r,r},ch=String.prototype.replace,dh=/%20/g,lh="RFC3986",ph={default:lh,formatters:{RFC1738:function(e){return ch.call(e,dh,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:lh},uh=ph,hh=Object.prototype.hasOwnProperty,fh=Array.isArray,mh=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),gh=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},i=0;i<e.length;++i)void 0!==e[i]&&(r[i]=e[i]);return r},vh={arrayToObject:gh,assign:function(e,t){return Object.keys(t).reduce((function(e,r){return e[r]=t[r],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],i=0;i<t.length;++i)for(var s=t[i],n=s.obj[s.prop],o=Object.keys(n),a=0;a<o.length;++a){var c=o[a],d=n[c];"object"==typeof d&&null!==d&&-1===r.indexOf(d)&&(t.push({obj:n,prop:c}),r.push(d))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(fh(r)){for(var i=[],s=0;s<r.length;++s)void 0!==r[s]&&i.push(r[s]);t.obj[t.prop]=i}}}(t),e},decode:function(e,t,r){var i=e.replace(/\+/g," ");if("iso-8859-1"===r)return i.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(i)}catch(e){return i}},encode:function(e,t,r,i,s){if(0===e.length)return e;var n=e;if("symbol"==typeof e?n=Symbol.prototype.toString.call(e):"string"!=typeof e&&(n=String(e)),"iso-8859-1"===r)return escape(n).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var o="",a=0;a<n.length;++a){var c=n.charCodeAt(a);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||s===uh.RFC1738&&(40===c||41===c)?o+=n.charAt(a):c<128?o+=mh[c]:c<2048?o+=mh[192|c>>6]+mh[128|63&c]:c<55296||c>=57344?o+=mh[224|c>>12]+mh[128|c>>6&63]+mh[128|63&c]:(a+=1,c=65536+((1023&c)<<10|1023&n.charCodeAt(a)),o+=mh[240|c>>18]+mh[128|c>>12&63]+mh[128|c>>6&63]+mh[128|63&c])}return o},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(fh(e)){for(var r=[],i=0;i<e.length;i+=1)r.push(t(e[i]));return r}return t(e)},merge:function e(t,r,i){if(!r)return t;if("object"!=typeof r){if(fh(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!hh.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var s=t;return fh(t)&&!fh(r)&&(s=gh(t,i)),fh(t)&&fh(r)?(r.forEach((function(r,s){if(hh.call(t,s)){var n=t[s];n&&"object"==typeof n&&r&&"object"==typeof r?t[s]=e(n,r,i):t.push(r)}else t[s]=r})),t):Object.keys(r).reduce((function(t,s){var n=r[s];return hh.call(t,s)?t[s]=e(t[s],n,i):t[s]=n,t}),s)}},yh=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new Yu("Side channel does not contain "+Xu(e))},get:function(i){if(Zu&&i&&("object"==typeof i||"function"==typeof i)){if(e)return th(e,i)}else if(eh){if(t)return sh(t,i)}else if(r)return function(e,t){var r=ah(e,t);return r&&r.value}(r,i)},has:function(i){if(Zu&&i&&("object"==typeof i||"function"==typeof i)){if(e)return ih(e,i)}else if(eh){if(t)return oh(t,i)}else if(r)return function(e,t){return!!ah(e,t)}(r,i);return!1},set:function(i,s){Zu&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new Zu),rh(e,i,s)):eh?(t||(t=new eh),nh(t,i,s)):(r||(r={key:{},next:null}),function(e,t,r){var i=ah(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,s))}};return i},bh=vh,wh=ph,_h=Object.prototype.hasOwnProperty,Sh={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},kh=Array.isArray,Ch=String.prototype.split,Rh=Array.prototype.push,Ph=function(e,t){Rh.apply(e,kh(t)?t:[t])},Th=Date.prototype.toISOString,Eh=wh.default,Dh={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:bh.encode,encodeValuesOnly:!1,format:Eh,formatter:wh.formatters[Eh],indices:!1,serializeDate:function(e){return Th.call(e)},skipNulls:!1,strictNullHandling:!1},xh={},Mh=function e(t,r,i,s,n,o,a,c,d,l,p,u,h,f,m,g){for(var v=t,y=g,b=0,w=!1;void 0!==(y=y.get(xh))&&!w;){var _=y.get(t);if(b+=1,void 0!==_){if(_===b)throw new RangeError("Cyclic object value");w=!0}void 0===y.get(xh)&&(b=0)}if("function"==typeof c?v=c(r,v):v instanceof Date?v=p(v):"comma"===i&&kh(v)&&(v=bh.maybeMap(v,(function(e){return e instanceof Date?p(e):e}))),null===v){if(n)return a&&!f?a(r,Dh.encoder,m,"key",u):r;v=""}if(function(e){return"string"==typeof e||"number"==typeof e||"boolean"==typeof e||"symbol"==typeof e||"bigint"==typeof e}(v)||bh.isBuffer(v)){if(a){var S=f?r:a(r,Dh.encoder,m,"key",u);if("comma"===i&&f){for(var k=Ch.call(String(v),","),C="",R=0;R<k.length;++R)C+=(0===R?"":",")+h(a(k[R],Dh.encoder,m,"value",u));return[h(S)+(s&&kh(v)&&1===k.length?"[]":"")+"="+C]}return[h(S)+"="+h(a(v,Dh.encoder,m,"value",u))]}return[h(r)+"="+h(String(v))]}var P,T=[];if(void 0===v)return T;if("comma"===i&&kh(v))P=[{value:v.length>0?v.join(",")||null:void 0}];else if(kh(c))P=c;else{var E=Object.keys(v);P=d?E.sort(d):E}for(var D=s&&kh(v)&&1===v.length?r+"[]":r,x=0;x<P.length;++x){var M=P[x],L="object"==typeof M&&void 0!==M.value?M.value:v[M];if(!o||null!==L){var I=kh(v)?"function"==typeof i?i(D,M):D:D+(l?"."+M:"["+M+"]");g.set(t,b);var O=yh();O.set(xh,g),Ph(T,e(L,I,i,s,n,o,a,c,d,l,p,u,h,f,m,O))}}return T},Lh=vh,Ih=Object.prototype.hasOwnProperty,Oh=Array.isArray,Ah={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:Lh.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},jh=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},Fh=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},Nh=function(e,t,r,i){if(e){var s=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,n=/(\[[^[\]]*])/g,o=r.depth>0&&/(\[[^[\]]*])/.exec(s),a=o?s.slice(0,o.index):s,c=[];if(a){if(!r.plainObjects&&Ih.call(Object.prototype,a)&&!r.allowPrototypes)return;c.push(a)}for(var d=0;r.depth>0&&null!==(o=n.exec(s))&&d<r.depth;){if(d+=1,!r.plainObjects&&Ih.call(Object.prototype,o[1].slice(1,-1))&&!r.allowPrototypes)return;c.push(o[1])}return o&&c.push("["+s.slice(o.index)+"]"),function(e,t,r,i){for(var s=i?t:Fh(t,r),n=e.length-1;n>=0;--n){var o,a=e[n];if("[]"===a&&r.parseArrays)o=[].concat(s);else{o=r.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,d=parseInt(c,10);r.parseArrays||""!==c?!isNaN(d)&&a!==c&&String(d)===c&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(o=[])[d]=s:"__proto__"!==c&&(o[c]=s):o={0:s}}s=o}return s}(c,t,r,i)}},Bh=function(e,t){var r,i=e,s=function(e){if(!e)return Dh;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||Dh.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var r=wh.default;if(void 0!==e.format){if(!_h.call(wh.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=wh.formatters[r],s=Dh.filter;return("function"==typeof e.filter||kh(e.filter))&&(s=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:Dh.addQueryPrefix,allowDots:void 0===e.allowDots?Dh.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Dh.charsetSentinel,delimiter:void 0===e.delimiter?Dh.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:Dh.encode,encoder:"function"==typeof e.encoder?e.encoder:Dh.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:Dh.encodeValuesOnly,filter:s,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:Dh.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:Dh.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Dh.strictNullHandling}}(t);"function"==typeof s.filter?i=(0,s.filter)("",i):kh(s.filter)&&(r=s.filter);var n,o=[];if("object"!=typeof i||null===i)return"";n=t&&t.arrayFormat in Sh?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var a=Sh[n];if(t&&"commaRoundTrip"in t&&"boolean"!=typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var c="comma"===a&&t&&t.commaRoundTrip;r||(r=Object.keys(i)),s.sort&&r.sort(s.sort);for(var d=yh(),l=0;l<r.length;++l){var p=r[l];s.skipNulls&&null===i[p]||Ph(o,Mh(i[p],p,a,c,s.strictNullHandling,s.skipNulls,s.encode?s.encoder:null,s.filter,s.sort,s.allowDots,s.serializeDate,s.format,s.formatter,s.encodeValuesOnly,s.charset,d))}var u=o.join(s.delimiter),h=!0===s.addQueryPrefix?"?":"";return s.charsetSentinel&&("iso-8859-1"===s.charset?h+="utf8=%26%2310003%3B&":h+="utf8=%E2%9C%93&"),u.length>0?h+u:""},Uh=function(e,t){var r=function(e){if(!e)return Ah;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?Ah.charset:e.charset;return{allowDots:void 0===e.allowDots?Ah.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:Ah.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:Ah.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:Ah.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Ah.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:Ah.comma,decoder:"function"==typeof e.decoder?e.decoder:Ah.decoder,delimiter:"string"==typeof e.delimiter||Lh.isRegExp(e.delimiter)?e.delimiter:Ah.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:Ah.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:Ah.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:Ah.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:Ah.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Ah.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){var r,i={},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,n=t.parameterLimit===1/0?void 0:t.parameterLimit,o=s.split(t.delimiter,n),a=-1,c=t.charset;if(t.charsetSentinel)for(r=0;r<o.length;++r)0===o[r].indexOf("utf8=")&&("utf8=%E2%9C%93"===o[r]?c="utf-8":"utf8=%26%2310003%3B"===o[r]&&(c="iso-8859-1"),a=r,r=o.length);for(r=0;r<o.length;++r)if(r!==a){var d,l,p=o[r],u=p.indexOf("]="),h=-1===u?p.indexOf("="):u+1;-1===h?(d=t.decoder(p,Ah.decoder,c,"key"),l=t.strictNullHandling?null:""):(d=t.decoder(p.slice(0,h),Ah.decoder,c,"key"),l=Lh.maybeMap(Fh(p.slice(h+1),t),(function(e){return t.decoder(e,Ah.decoder,c,"value")}))),l&&t.interpretNumericEntities&&"iso-8859-1"===c&&(l=jh(l)),p.indexOf("[]=")>-1&&(l=Oh(l)?[l]:l),Ih.call(i,d)?i[d]=Lh.combine(i[d],l):i[d]=l}return i}(e,r):e,s=r.plainObjects?Object.create(null):{},n=Object.keys(i),o=0;o<n.length;++o){var a=n[o],c=Nh(a,i[a],r,"string"==typeof e);s=Lh.merge(s,c,r)}return!0===r.allowSparse?s:Lh.compact(s)},qh={formats:ph,parse:Uh,stringify:Bh};class Wh{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=Rp.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>qh.stringify(e)}),this.customNode=i}getNode(e){return r(this,void 0,void 0,(function*(){if(this.customNode)return this.customNode;const{data:t}=yield this.api.get("/nodes/best",{params:e});return t}))}}Error;const Vh=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],zh=({from:e,seen:t,to_:r,forceEnumerable:i})=>{const s=r||(Array.isArray(e)?[]:{});t.push(e);for(const[r,n]of Object.entries(e))"function"!=typeof n&&(n&&"object"==typeof n?t.includes(e[r])?s[r]="[Circular]":s[r]=zh({from:e[r],seen:t.slice(),forceEnumerable:i}):s[r]=n);for(const{property:t,enumerable:r}of Vh)"string"==typeof e[t]&&Object.defineProperty(s,t,{value:e[t],enumerable:!!i||r,configurable:!0,writable:!0});return s};var $h,Gh,Hh,Jh,Kh,Qh,Xh,Yh=e=>"object"==typeof e&&null!==e?zh({from:e,seen:[],forceEnumerable:!0}):"function"==typeof e?`[Function: ${e.name||"anonymous"}]`:e;class Zh extends g{constructor(e,t){super(e,null!=t?t:"invalid_payload")}}!function(e){e.DominantSpeaker="dominant-speaker",e.PeersVolumes="peers-volumes",e.Silence="silence"}($h||($h={}));class ef{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Ke({logLevel:t.logLevel,namespace:"ChannelAudioObserverEventHandler",onLogMessage:r})}handle(e){try{const t=JSON.parse(e);switch(ef.validateEventPayload(t),t.event){case $h.DominantSpeaker:this.handleDominantSpeaker(t);break;case $h.PeersVolumes:this.handlePeerVolumes(t);break;case $h.Silence:this.handleSilence()}}catch(t){this.logger.warn("Failed to handle audio observer event",{error:Yh(t),eventData:e})}}handleDominantSpeaker(e){const{peerId:t}=e.data,r=this.engine.getPeerById(t);this.engine.setActiveSpeakerPeer(r)}handlePeerVolumes(e){e.volumes.forEach((e=>{var t;const{peerId:r,trackLabel:i,value:s}=e,n=null===(t=this.engine.getPeerById(r))||void 0===t?void 0:t.tracks.get(i);n&&n.setVolume(s)}))}handleSilence(){this.engine.peers.flatMap((e=>Array.from(e.tracks.values()))).forEach((e=>e.setVolume(0))),this.engine.setActiveSpeakerPeer(void 0)}static validateEventPayload(e){switch(e.event){case $h.Silence:break;case $h.DominantSpeaker:{e.data||ef.throwInvalidPayload();const{peerId:t,producerId:r,trackLabel:i}=e.data;"string"==typeof t&&"string"==typeof r&&i===u.Microphone||ef.throwInvalidPayload();break}case $h.PeersVolumes:Array.isArray(e.volumes)||ef.throwInvalidPayload(),e.volumes.forEach((e=>{const{peerId:t,producerId:r,value:i,trackLabel:s}=e;"string"==typeof t&&"string"==typeof r&&"number"==typeof i&&s===u.Microphone||ef.throwInvalidPayload()}));break;default:ef.throwInvalidPayload()}}static throwInvalidPayload(){throw new Zh("Invalid channel audio observer event handler payload")}}class tf{createSystem(e){return new Dc(e)}createMedia(e){return new ta(e)}createNetwork(e){const{loadbalancer:t,logLevel:r,onLogMessage:i}=e,s=new Kd({logLevel:r,onLogMessage:i}),n=new Wh(t);return new Tc({logLevel:r,socketClient:s,loadBalancerApiClient:n,onLogMessage:i})}createChannelEventHandler(e){return new xc(e)}createMediaSoupEventHandler(e){return new Mc(e)}createAudioObserverEventHandler(e){return new ef(e)}createIssueDetector(e){var t,r;const i=null!==(t=e.logger)&&void 0!==t?t:console,s=new Cc({statsParser:new Rc({logger:null!==(r=e.logger)&&void 0!==r?r:console})});return new Pc({issueEmitter:new dc,networkScoresCalculator:new uc,detectors:[new wc,new mc,new gc,new vc,new bc,new yc,new fc,new _c],statsReporter:new lc({compositeStatsParser:s,getStatsInterval:5e3}),onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:e.ignoreSSRCList,compositeStatsParser:s,logger:i})}}class rf extends AudioWorkletNode{constructor(e){super(e.context,"rnnoise",{channelCountMode:"explicit",channelCount:1,channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,outputChannelCount:[1],processorOptions:{module:e.noiseSuppressor.module}}),this.port.onmessage=({data:e})=>{const t=Object.assign(new Event("status"),e);this.dispatchEvent(t)}}update(e){this.port.postMessage(e)}static register(e){return r(this,void 0,void 0,(function*(){yield e.audioWorklet.addModule(`${window.location.origin}/noiseSuppressionWorklet.js`)}))}}class sf{constructor(e){Gh.set(this,void 0),Hh.set(this,void 0),Jh.set(this,void 0),Kh.set(this,void 0),Qh.set(this,void 0),Xh.set(this,!0),s(this,Gh,e.noiseSuppressor.instance.exports,"f"),s(this,Hh,e.context,"f"),s(this,Jh,new Float32Array(i(this,Gh,"f").memory.buffer),"f"),s(this,Kh,i(this,Gh,"f").newState(),"f"),s(this,Qh,i(this,Hh,"f").createScriptProcessor(),"f"),this.setOnAudioProcess()}get noiseSuppressionScriptProcessorNode(){return i(this,Qh,"f")}update(e){e||(s(this,Xh,!1,"f"),i(this,Gh,"f").deleteState(i(this,Kh,"f")));const t=Object.assign(new Event("status"),{vadProb:i(this,Gh,"f").getVadProb(i(this,Kh,"f"))});i(this,Qh,"f").dispatchEvent(t)}setOnAudioProcess(){i(this,Qh,"f").addEventListener("audioprocess",(({inputBuffer:e,outputBuffer:t})=>{if(!i(this,Xh,"f"))return;i(this,Jh,"f").set(e.getChannelData(0),i(this,Gh,"f").getInput(i(this,Kh,"f"))/4);const r=t.getChannelData(0),s=i(this,Gh,"f").pipe(i(this,Kh,"f"),r.length)/4;s&&r.set(i(this,Jh,"f").subarray(s,s+r.length))}))}}Gh=new WeakMap,Hh=new WeakMap,Jh=new WeakMap,Kh=new WeakMap,Qh=new WeakMap,Xh=new WeakMap;var nf,of,af,cf,df,lf,pf,uf,hf,ff,mf;class gf{constructor({context:e,noiseSuppressor:t}){nf.set(this,void 0),of.set(this,void 0),af.set(this,void 0),s(this,nf,e,"f"),s(this,of,t,"f")}createNoiseSuppressionNode(){return r(this,void 0,void 0,(function*(){return/apple/i.test(navigator.vendor)?this.createScriptProcessorNode():this.createAudioWorkletNode()}))}stop(){var e;null===(e=i(this,af,"f"))||void 0===e||e.update(!1)}createAudioWorkletNode(){return r(this,void 0,void 0,(function*(){return yield rf.register(i(this,nf,"f")),s(this,af,new rf({context:i(this,nf,"f"),noiseSuppressor:i(this,of,"f")}),"f"),i(this,af,"f")}))}createScriptProcessorNode(){return s(this,af,new sf({context:i(this,nf,"f"),noiseSuppressor:i(this,of,"f")}),"f"),i(this,af,"f").noiseSuppressionScriptProcessorNode}}nf=new WeakMap,of=new WeakMap,af=new WeakMap;class vf{constructor(e){cf.set(this,void 0),df.set(this,void 0),lf.set(this,void 0),pf.set(this,void 0),uf.set(this,!1),s(this,cf,e.noiseSuppressor,"f"),s(this,lf,new Ke({namespace:"TrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return i(this,uf,"f")}processTrack(e){return r(this,void 0,void 0,(function*(){const t=(e=>{const t=window.AudioContext||window.webkitAudioContext||!1;return t?new t(e):null})();if(!t)throw new Error("AudioContext is not available");const r=new MediaStreamAudioDestinationNode(t,{channelCountMode:"explicit",channelCount:1,channelInterpretation:"speakers"});yield rf.register(t);const n=t.createMediaStreamSource(new MediaStream([e])),o=new gf({context:t,noiseSuppressor:i(this,cf,"f")}),a=yield o.createNoiseSuppressionNode();a.connect(r),n.connect(a);const[c]=r.stream.getTracks();return s(this,df,{audioContext:t,streamDestination:r,noiseSuppressionNode:a,noiseSuppressionProvider:o},"f"),s(this,pf,c,"f"),i(this,lf,"f").info("processTrack()",{track:e}),c}))}stopProcessing(){var e;return r(this,void 0,void 0,(function*(){if(this.isProcessing)if(i(this,df,"f"))try{i(this,df,"f").noiseSuppressionProvider.stop(),i(this,df,"f").noiseSuppressionNode.disconnect(),i(this,df,"f").streamDestination.disconnect(),yield i(this,df,"f").audioContext.close(),null===(e=i(this,pf,"f"))||void 0===e||e.stop(),i(this,lf,"f").info("stopProcessing()",{success:!0})}catch(e){i(this,lf,"f").error("stopProcessing()",{success:!1,error:e})}else i(this,lf,"f").warn("stopProcessing()",{success:!1,description:"Processing context is not available"});else i(this,lf,"f").debug("stopProcessing()",{description:"Track is not processed"})}))}}cf=new WeakMap,df=new WeakMap,lf=new WeakMap,pf=new WeakMap,uf=new WeakMap;class yf extends ya{constructor(e){super(e),hf.set(this,void 0),ff.set(this,void 0),mf.set(this,void 0),e.noiseSuppressor&&s(this,hf,new vf({noiseSuppressor:e.noiseSuppressor,logLevel:e.logLevel}),"f"),s(this,mf,new Ke({namespace:"AudioTrack",logLevel:e.logLevel}),"f")}get isEffectsProcessing(){var e;return!!(null===(e=i(this,hf,"f"))||void 0===e?void 0:e.isProcessing)}getEncoderConfig(){return this.encoderConfig}getEncodings(){var e;return null!==(e=this.getEncoderConfig().encodings)&&void 0!==e?e:zo}getCodecOptions(){var e,t;return{opusFec:null===(e=this.getEncoderConfig().enableFec)||void 0===e||e,opusDtx:null===(t=this.getEncoderConfig().enableDtx)||void 0===t||t}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||"opus"}enableNoiseSuppression(){var e;return r(this,void 0,void 0,(function*(){if(i(this,hf,"f"))try{const t=yield null===(e=i(this,hf,"f"))||void 0===e?void 0:e.processTrack(this.mediaStreamTrack);s(this,ff,this.mediaStreamTrack,"f"),yield this.replaceTrack(t)}catch(e){throw this.logger.warn("enableNoiseSuppression()",{description:"Can not enable noise suppression",track:this,error:e}),new Error("Can not enable noise suppression")}else this.logger.warn("enableNoiseSuppression()",{description:"Track suppressor is not defined"})}))}disableNoiseSuppression(){var e,t;return r(this,void 0,void 0,(function*(){try{if(!(null===(e=i(this,hf,"f"))||void 0===e?void 0:e.isProcessing))return void i(this,mf,"f").debug("stopProcessing()",{description:"Track is not processed"});if(!i(this,ff,"f"))return void this.logger.warn("disableNoiseSuppression()",{description:"Original track missing"});yield this.replaceTrack(i(this,ff,"f")),yield null===(t=i(this,hf,"f"))||void 0===t?void 0:t.stopProcessing()}catch(e){throw this.logger.warn("disableNoiseSuppression()",{description:"Can not disable noise suppression",track:this,error:e}),new Error("Can not disable noise suppression")}}))}publish(){return r(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),codecOptions:this.getCodecOptions()}),this.clientEventEmitter.emit(q,this)}))}}hf=new WeakMap,ff=new WeakMap,mf=new WeakMap;class bf{createAudioTrack(e){return new yf(e)}createVideoTrack(e){return new Va(e)}}class wf{constructor(e){var t,r;const{observer:i,network:s,onLogMessage:o,onIssues:a,onNetworkScoresUpdated:c,logLevel:d,disableWid:l}=e;this._observer=null!=i?i:new n;const p=new tf,u=new bf;this.engine=new Ha({dependenciesFactory:p,clientEventEmitter:this.observer,media:{mediaTracksFactory:u},network:{loadbalancer:{baseURL:null===(t=null==s?void 0:s.loadbalancer)||void 0===t?void 0:t.baseURL,customNode:null===(r=null==s?void 0:s.loadbalancer)||void 0===r?void 0:r.customNode}},logLevel:d,onLogMessage:o,onIssues:a,onNetworkScoresUpdated:c,disableWid:l})}get observer(){return this._observer}get id(){return this.engine.mySocketId}get peers(){return this.engine.peers}get availableVideoDevices(){return this.engine.system.availableVideoDevices}get availableAudioDevices(){return this.engine.system.availableAudioDevices}get canUseNoiseSuppression(){return this.engine.canUseNoiseSuppression}detectDevices(){return r(this,void 0,void 0,(function*(){return yield this.engine.system.detectDevices(),{video:this.engine.system.availableVideoDevices,audio:this.engine.system.availableAudioDevices}}))}join(e){return this.engine.join(e)}leave(){return this.engine.release()}confirmActivity(){return this.engine.confirmActivity()}createCameraVideoTrack(e){return this.engine.createCameraVideoTrack(e)}createMicrophoneAudioTrack(e){return this.engine.createMicrophoneAudioTrack(e)}createScreenMediaTracks(e){return this.engine.createScreenMediaTracks(e)}deleteTrack(e){return this.engine.deleteTrack(e)}loadPeers(e){return this.engine.loadPeers(e)}updateAppData(e){return this.engine.updateAppData(e)}getTransportsInfo(){return r(this,void 0,void 0,(function*(){return this.engine.network.getTransportsStateInfo()}))}}export{wf as default};
239
+ `,{width:c,height:d}=n,l=c/d,p=wa(e,e.VERTEX_SHADER,o),u=wa(e,e.FRAGMENT_SHADER,a),h=ka(e,p,u,t,r),f=e.getUniformLocation(h,"u_backgroundScale"),m=e.getUniformLocation(h,"u_backgroundOffset"),g=e.getUniformLocation(h,"u_inputFrame"),v=e.getUniformLocation(h,"u_personMask"),y=e.getUniformLocation(h,"u_background"),b=e.getUniformLocation(h,"u_coverage"),w=e.getUniformLocation(h,"u_lightWrapping"),_=e.getUniformLocation(h,"u_blendMode");e.useProgram(h),e.uniform2f(f,1,1),e.uniform2f(m,0,0),e.uniform1i(g,0),e.uniform1i(v,1),e.uniform2f(b,0,1),e.uniform1f(w,0),e.uniform1f(_,0);let S=null;function k(t){S=_a(e,e.RGBA8,t.naturalWidth,t.naturalHeight,e.LINEAR,e.LINEAR),e.texSubImage2D(e.TEXTURE_2D,0,0,0,t.naturalWidth,t.naturalHeight,e.RGBA,e.UNSIGNED_BYTE,t);let r=0,i=0,s=t.naturalWidth,n=t.naturalHeight;s/n<l?(n=s/l,i=(t.naturalHeight-n)/2):(s=n*l,r=(t.naturalWidth-s)/2);const o=s/t.naturalWidth,a=n/t.naturalHeight;r/=t.naturalWidth,i/=t.naturalHeight,e.uniform2f(f,o,a),e.uniform2f(m,r,i)}return(null==s?void 0:s.complete)?k(s):s&&(s.onload=()=>{k(s)}),{render:function(){e.viewport(0,0,c,d),e.useProgram(h),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,i),null!==S&&(e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,S),e.uniform1i(y,2)),e.bindFramebuffer(e.FRAMEBUFFER,null),e.drawArrays(e.TRIANGLE_STRIP,0,4)},updateCoverage:function(t){e.useProgram(h),e.uniform2f(b,t[0],t[1])},updateLightWrapping:function(t){e.useProgram(h),e.uniform1f(w,t)},updateBlendMode:function(t){e.useProgram(h),e.uniform1f(_,"screen"===t?0:1)},cleanUp:function(){e.deleteTexture(S),e.deleteProgram(h),e.deleteShader(u),e.deleteShader(p)}}}(u,m,g,b,t,n);return{render:function(){return r(this,void 0,void 0,(function*(){u.activeTexture(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,v),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,e.htmlElement),u.bindVertexArray(f),yield w.render(),o._runInference(),_.render(),S.render(),k.render()}))},updatePostProcessingConfig:function(e){if(S.updateSigmaSpace(e.jointBilateralFilter.sigmaSpace),S.updateSigmaColor(e.jointBilateralFilter.sigmaColor),"image"===i.type){const t=k;t.updateCoverage(e.coverage),t.updateLightWrapping(e.lightWrapping),t.updateBlendMode(e.blendMode)}else if("blur"===i.type){k.updateCoverage(e.coverage)}else{const e=k;e.updateCoverage([0,.9999]),e.updateLightWrapping(0)}},cleanUp:function(){k.cleanUp(),S.cleanUp(),_.cleanUp(),w.cleanUp(),u.deleteTexture(b),u.deleteTexture(y),u.deleteTexture(v),u.deleteBuffer(g),u.deleteBuffer(m),u.deleteVertexArray(f),u.deleteShader(h)}}}var xa,Ma,La,Ia,Oa,Aa,ja,Fa,Na,Ba;class Ua{constructor(e){xa.set(this,!1),Ma.set(this,void 0),La.set(this,void 0),Ia.set(this,void 0),s(this,Ia,new Ke({logLevel:e,namespace:"TensorFlowLoader"}),"f")}get isLoaded(){return i(this,xa,"f")}get tfliteModule(){return i(this,Ma,"f")||i(this,La,"f")}loadTFLite(){return r(this,void 0,void 0,(function*(){yield Promise.all([this.loadTFLiteRegular(),this.loadTFLiteSIMD()]),this.tfliteModule&&s(this,xa,!0,"f")}))}loadTFLiteModel(e){return r(this,void 0,void 0,(function*(){if(this.tfliteModule)try{const t=Ua.getTFLiteModelFileName(e);i(this,Ia,"f").info("loading model",{modelFileName:t});const r=yield fetch(`${window.location.origin}/tflite/models/${t}.tflite`),s=yield r.arrayBuffer(),n=this.tfliteModule._getModelBufferMemoryOffset();this.tfliteModule.HEAPU8.set(new Uint8Array(s),n);const o=this.tfliteModule._loadModel(s.byteLength);i(this,Ia,"f").info("loading model result",{result:o})}catch(e){i(this,Ia,"f").warn("loadTFLiteModel()",{error:e})}else i(this,Ia,"f").warn("loadTFLiteModel()",{description:"TFLite module is not loaded"})}))}loadTFLiteRegular(){return r(this,void 0,void 0,(function*(){try{s(this,Ma,yield createTFLiteModule(),"f")}catch(e){i(this,Ia,"f").error("Failed to create TFLite WebAssembly module.",{error:e})}}))}loadTFLiteSIMD(){return r(this,void 0,void 0,(function*(){try{s(this,La,yield createTFLiteSIMDModule(),"f")}catch(e){i(this,Ia,"f").error("Failed to create TFLite SIMD WebAssembly module.",{error:e})}}))}static getTFLiteModelFileName({model:e,inputResolution:t}){switch(e){case"meet":return"256x144"===t?"segm_full_v679":"segm_lite_v681";case"mlkit":return"selfiesegmentation_mlkit-256x256-2021_01_19-v1215.f16";default:throw new Error(`No TFLite file for this segmentation model: ${e}`)}}}function qa({sourcePlayback:e,backgroundConfig:t,segmentationConfig:i,canvas:s,tflite:n}){const o=s.getContext("2d");o.scale(1.031,1.031),o.translate(-11,-11);const[a,c]=Ra[i.inputResolution],d=a*c,l=new ImageData(a,c),p=document.createElement("canvas");p.width=a,p.height=c;const u=p.getContext("2d"),h=n._getInputMemoryOffset()/4,f=n._getOutputMemoryOffset()/4;let m;return{render:function(){return r(this,void 0,void 0,(function*(){"none"!==t.type&&(function(){if(u.drawImage(e.htmlElement,0,0,e.width,e.height,0,0,a,c),"meet"===i.model||"mlkit"===i.model){const e=u.getImageData(0,0,a,c);for(let t=0;t<d;t+=1)n.HEAPF32[h+3*t]=e.data[4*t]/255,n.HEAPF32[h+3*t+1]=e.data[4*t+1]/255,n.HEAPF32[h+3*t+2]=e.data[4*t+2]/255}}(),function(){n._runInference();for(let e=0;e<d;e+=1)if("meet"===i.model){const t=n.HEAPF32[f+2*e],r=n.HEAPF32[f+2*e+1],i=Math.max(t,r),s=Math.exp(t-i),o=Math.exp(r-i);l.data[4*e+3]=255*o/(s+o)}else if("mlkit"===i.model){const t=n.HEAPF32[f+e];l.data[4*e+3]=255*t}u.putImageData(l,0,0)}()),o.globalCompositeOperation="copy",o.filter="none",(null==m?void 0:m.smoothSegmentationMask)&&("blur"===t.type||"image"===t.type)&&(o.filter="blur(8px)"),"none"!==t.type&&(o.drawImage(p,0,0,a,c,0,0,e.width,e.height),o.globalCompositeOperation="source-in",o.filter="none"),o.drawImage(e.htmlElement,0,0),"blur"===t.type&&(o.globalCompositeOperation="destination-over",o.filter="blur(8px)",o.drawImage(e.htmlElement,0,0))}))},updatePostProcessingConfig:function(e){m=e},cleanUp:function(){}}}xa=new WeakMap,Ma=new WeakMap,La=new WeakMap,Ia=new WeakMap;class Wa{constructor(e){Oa.set(this,void 0),Aa.set(this,void 0),ja.set(this,!1),Fa.set(this,void 0),s(this,Oa,new Ua(e.logLevel),"f"),s(this,Fa,new Ke({namespace:"VideoTrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return i(this,ja,"f")}processTrack(e){return r(this,void 0,void 0,(function*(){const{track:t,pipelineConfig:n}=e;i(this,ja,"f")&&this.stopProcessing();try{i(this,Oa,"f").isLoaded||(yield i(this,Oa,"f").loadTFLite(),yield i(this,Oa,"f").loadTFLiteModel(n.segmentationConfig));const{tfliteModule:o}=i(this,Oa,"f");if(!o)throw new Error("TensorFlow model is not available");const{targetFps:a}=n.segmentationConfig,c=yield Wa.buildSourcePlayback(t),d=document.createElement("canvas");d.width=c.width,d.height=c.height;const l=function(){const e=new Map,t=new Worker(`${window.location.origin}/timerWorker.js`);t.onmessage=t=>{const r=e.get(t.data.callbackId);r&&(e.delete(t.data.callbackId),r())};let r=1;return{setTimeout:function(i,s){return r+=1,e.set(r,i),t.postMessage({callbackId:r,timeoutMs:s}),r},clearTimeout:function(r){e.has(r)&&(t.postMessage({callbackId:r}),e.delete(r))},terminate:function(){e.clear(),t.terminate()}}}(),p={config:n,sourcePlayback:c,destinationPlayback:d,tflite:o},u="canvas2dCpu"===e.pipelineConfig.segmentationConfig.pipeline?Wa.buildCanvas2dPipeline(p):Wa.buildWebGL2Pipeline(p),h=()=>r(this,void 0,void 0,(function*(){const e=performance.now();return yield u.render(),l.setTimeout(h,performance.now()-e)})),f=yield h();u.updatePostProcessingConfig(n.postprocessingConfig);const m=d.captureStream(a),[g]=m.getVideoTracks();return s(this,Aa,{pipeline:u,destination:d,source:c.htmlElement,track:g,timerWorker:l,timerId:f},"f"),s(this,ja,!0,"f"),g}catch(e){throw i(this,Fa,"f").error("processTrack()",{error:e,track:t}),new Error("Can not process this track")}}))}stopProcessing(){if(this.isProcessing)if(i(this,Aa,"f"))try{i(this,Aa,"f").pipeline.cleanUp(),i(this,Aa,"f").source.remove(),i(this,Aa,"f").destination.remove(),i(this,Aa,"f").timerWorker.clearTimeout(i(this,Aa,"f").timerId),i(this,Aa,"f").timerWorker.terminate(),i(this,Aa,"f").destination.remove(),i(this,Aa,"f").track.stop(),s(this,Aa,void 0,"f"),s(this,ja,!1,"f")}catch(e){i(this,Fa,"f").error("cleanUp()",{error:e})}else i(this,Fa,"f").warn("cleanUp()",{description:"This track is not processing"});else i(this,Fa,"f").debug("stopProcessing()",{description:"Track is not processed"})}static buildWebGL2Pipeline(e){return Da({backgroundImage:e.config.backgroundConfig.imageSource,sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildCanvas2dPipeline(e){return qa({sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildSourcePlayback(e){return r(this,void 0,void 0,(function*(){const t=document.createElement("video");return t.srcObject=new MediaStream([e]),t.autoplay=!0,yield t.play(),{htmlElement:t,width:t.videoWidth,height:t.videoHeight}}))}}Oa=new WeakMap,Aa=new WeakMap,ja=new WeakMap,Fa=new WeakMap;class Va extends ya{constructor(e){super(e),Na.set(this,void 0),Ba.set(this,void 0),this.transformParams={},s(this,Na,new Wa({logLevel:e.logLevel}),"f"),this.watchOrientation(),this.watchDocumentVisibility()}get isEffectsProcessing(){return i(this,Na,"f").isProcessing}getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||(this.getLabel()===u.ScreenVideo?"vp8":"h264")}getEncodings(){return this.getEncoderConfig().encodings||Wo}setTransformParams(e){this.transformParams=e}setMaxSpatialLayer(e){return r(this,void 0,void 0,(function*(){const t=this.getProducer();t?(yield t.setMaxSpatialLayer(e),this.logger.debug("setMaxSpatialLayer()",{label:this.getLabel(),spatialLayer:e})):this.logger.warn("setMaxSpatialLayer()",{message:"Not produced yet"})}))}getMaxSpatialLayer(){const e=this.getProducer();if(e)return e.maxSpatialLayer;this.logger.warn("getMaxSpatialLayer()",{message:"Not produced yet"})}enableBlur(){return r(this,void 0,void 0,(function*(){try{s(this,Ba,this.mediaStreamTrack.clone(),"f");const e=yield i(this,Na,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?Ta:Pa});yield this.replaceTrack(e),this.logger.info("enableBlur()",{track:this})}catch(e){throw this.logger.warn("enableBlur()",{track:this,error:e}),new Error("Can not enable virtual background")}}))}disableBlur(){return r(this,void 0,void 0,(function*(){try{if(!i(this,Na,"f").isProcessing)return void this.logger.debug("disableBlur()",{description:"Track is not processed"});if(!i(this,Ba,"f"))return void this.logger.warn("disableBlur()",{description:"Original track missing"});yield this.replaceTrack(i(this,Ba,"f")),i(this,Na,"f").stopProcessing(),this.logger.info("disableBlur()",{track:this})}catch(e){throw this.logger.warn("disableBlur()",{track:this,error:e}),new Error("Can not disable virtual background")}}))}publish(e={}){var t;return r(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),transformParams:this.transformParams,codecOptions:this.getCodecOptions(),keyFrameRequestDelay:null!==(t=e.keyFrameRequestDelay)&&void 0!==t?t:0}),this.clientEventEmitter.emit(q,this)}))}watchOrientation(){window.screen.orientation&&(this.logger.debug("watchOrientation()",{description:"Watching started"}),window.screen.orientation.addEventListener("change",(()=>r(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{this.mediaStreamTrack.enabled=!1;const e=yield i(this,Na,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?Ta:Pa});yield this.replaceTrack(e)}catch(e){this.logger.warn("watchOrientation()",{description:"Restart blur error after orientation change",error:e})}})))))}watchDocumentVisibility(){this.logger.debug("watchDocumentVisibility()",{description:"Watching started"}),window.addEventListener("visibilitychange",(()=>r(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{yield this.disableBlur(),yield this.enableBlur()}catch(e){this.logger.warn("watchDocumentVisibility()",{description:"Restart blur error after change document visibility",error:e})}}))))}}Na=new WeakMap,Ba=new WeakMap;const za=new class{sleepMs(e){return r(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}now(){return new Date(Date.now())}},$a=(e,t={})=>r(void 0,void 0,void 0,(function*(){var r;const i=t.maxRetries||2,s=t.minBackoffDelayMs||50;let n,o=0;for(;o<i;){o+=1;try{return yield e()}catch(e){if(n=e,t.logger&&t.logger.info("Action retry failed",{currentAttempt:o,actionName:t.actionName,error:e}),t.abortOnError&&t.abortOnError(e))throw n;if(o<i){const e=Math.pow(2,o-1)*s;yield za.sleepMs(Math.min(e,null!==(r=t.maxBackoffDelayMs)&&void 0!==r?r:e))}}}throw n}));class Ga extends g{constructor(e,t){super(e,null!=t?t:"need_join_first")}}class Ha{constructor(e){this.initialized=!1,this.isJoined=!1,this.isChannelJoining=!1;const{clientEventEmitter:t,network:r,media:i,dependenciesFactory:s,logLevel:n}=e;this.logLevel=n||We,this.system=s.createSystem({logLevel:this.logLevel,clientEventEmitter:t,onLogMessage:e.onLogMessage}),this.media=s.createMedia({logLevel:this.logLevel,engine:this,clientEventEmitter:t,mediaTracksFactory:i.mediaTracksFactory,onLogMessage:e.onLogMessage}),this.network=s.createNetwork({logLevel:this.logLevel,loadbalancer:r.loadbalancer,onLogMessage:e.onLogMessage}),this.peersRepository=new Map,this.clientEventEmitter=t,this.channelEventsHandler=s.createChannelEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.mediaSoupEventsHandler=s.createMediaSoupEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.channelAudioObserverEventHandler=s.createAudioObserverEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.logger=new Ke({logLevel:this.logLevel,namespace:"Engine",onLogMessage:e.onLogMessage}),this.webRtcIssueDetector=e.disableWid?void 0:s.createIssueDetector({onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:[1234],logger:new Ke({logLevel:this.logLevel,namespace:"WID"})}),this.watchSocketState(),this.watchClientEvents()}initialize(){var e,t,i;return r(this,void 0,void 0,(function*(){try{const{rtpCapabilities:r}=yield this.network.socket.request("router.getRtpCapabilities");yield this.media.createNoiseSuppressor(),yield this.media.loadDevice(r),null===(e=this.webRtcIssueDetector)||void 0===e||e.watchNewPeerConnections(),yield this.network.createSendTransport(this.media.mediasoupDevice),yield this.network.createRecvTransport(this.media.mediasoupDevice),this.initialized=!0,this.logger.debug("initialize()",{sendTransportId:null===(t=this.network.sendTransport)||void 0===t?void 0:t.id,recvTransportId:null===(i=this.network.receiveTransport)||void 0===i?void 0:i.id})}catch(e){if(this.logger.error("initialize()",{error:e}),e instanceof f&&"device not supported"===e.message||e instanceof Error&&"RTCPeerConnection is not defined"===e.message)throw new v("Device not supported",v.UNSUPPORTED_DEVICE_CODE);throw new Error("Error initialize engine")}}))}release(){var e,t;return r(this,void 0,void 0,(function*(){try{this.initialized=!1,this.isJoined=!1,this.app=void 0,this.channel=void 0,null===(e=this.webRtcIssueDetector)||void 0===e||e.stopWatchingNewPeerConnections(),this.network.socket.disconnect(),this.peersRepository.clear(),yield this.network.closeSendTransport(),yield this.network.closeReceiveTransport(),yield this.media.clearTracks(),null===(t=this.audioObserver)||void 0===t||t.close(),this.logger.debug("release()",{socketId:this.mySocketId})}catch(e){throw this.logger.error("release()",{error:e}),new Error("Error release engine")}}))}watchSocketState(){this.network.socket.observer.on("state",(e=>{var t;const{state:r,code:i,error:s}=e;this.clientEventEmitter.emit(r,{code:i,error:s});const n="unauthorized"===(null===(t=null==s?void 0:s.data)||void 0===t?void 0:t.errorCode);(r===se.Error&&this.isJoined&&n||r===se.Reconnected)&&this.clientEventEmitter.emit(O)}))}get activeSpeaker(){return this.activeSpeakerPeer}get peers(){return Array.from(this.peersRepository.values())}get hostPeers(){return this.peers.filter((e=>"host"===e.role))}get audiencePeers(){return this.peers.filter((e=>"audience"===e.role))}get mySocketId(){return this.network.socket.id}getPeerById(e){return this.peersRepository.get(e)}confirmActivity(){var e;return r(this,void 0,void 0,(function*(){if(!this.channel||this.isChannelJoining)throw new Error("Connect to the channel first");if(!(null===(e=this.network.socket.connection)||void 0===e?void 0:e.active))throw new Error("Socket is inactive");yield this.network.socket.request(k)}))}join(e){return r(this,void 0,void 0,(function*(){try{this.logger.debug("join()",{params:e}),this.isChannelJoining=!0,yield this.connectToSocketServerWithRetry(e),yield this.performJoin({appData:e.appData})}catch(e){throw this.logger.error("join()",{error:e}),e}finally{this.isChannelJoining=!1}}))}loadPeers(e){return r(this,void 0,void 0,(function*(){const{peers:t}=yield this.network.socket.request(w,{role:e});t.filter((e=>!this.peersRepository.has(e.id))).forEach((e=>this.setPeer(e)))}))}setPeer(e){const t=this.peersRepository.get(e.id);if(t)return t;const r=new Uo(Object.assign(Object.assign({},e),{engine:this,loginDate:new Date}));return this.peersRepository.set(r.id,r),r}removePeer(e){const t=this.peersRepository.get(e);t&&(t.tracks.forEach((e=>e.close())),this.peersRepository.delete(e))}updateAppData(e){return r(this,void 0,void 0,(function*(){const{myPeer:t}=this;if(!t)throw new Error("Need join to channel first");try{No(e),yield this.network.updatePeerAppData({peerId:t.id,appData:e})}catch(e){throw this.logger.error("updateAppData()",{error:e}),new Error("Can not update peer appData")}}))}createCameraVideoTrack(e){return r(this,void 0,void 0,(function*(){const t=ta.getCameraVideoTrackParams(e);try{const[r]=yield this.media.createUserMediaTracks({audio:!1,video:t.videoTrackOptions});if(r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof Va&&(r.setLabel(u.Camera),r.setEncoderConfig(t.encoderConfig),r.setTransformParams(ta.getVideoTrackTransformParams(r.mediaStreamTrack)),null==e?void 0:e.blur))try{yield r.enableBlur()}catch(e){this.logger.warn("Failed to start virtual background, featured original track",{track:this})}return this.media.setTrack(r),this.logger.debug("createCameraVideoTrack()",{trackParams:t,track:r}),r}catch(e){throw this.logger.error("createCameraVideoTrack()",{error:e,trackParams:t}),new Error(`Can not create camera track: ${e.message}`)}}))}createMicrophoneAudioTrack(e){return r(this,void 0,void 0,(function*(){try{const[t]=yield this.media.createUserMediaTracks({video:!1,audio:null==e?void 0:e.audio});if(t.setLabel(u.Microphone),t.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),(null==e?void 0:e.encoderConfig)&&t.setEncoderConfig(e.encoderConfig),"audio"===t.kind&&(null==e?void 0:e.noiseSuppression))try{yield t.enableNoiseSuppression()}catch(e){this.logger.warn("Failed to start noise suppression, featured original track",{track:this})}return this.media.setTrack(t),this.logger.debug("createMicrophoneAudioTrack()",{options:e,track:t}),t}catch(t){throw this.logger.error("createMicrophoneAudioTrack()",{error:t,options:e}),new Error(`Can not create microphone track: ${t.message}`)}}))}createScreenMediaTracks(e){return r(this,void 0,void 0,(function*(){const t=ta.getScreenVideoTrackParams(e);try{const r=yield this.media.createDisplayMediaTracks({audio:null==e?void 0:e.audio,video:null==e?void 0:e.video});return r.forEach((r=>{if(r.mediaStreamTrack.addEventListener("ended",(()=>{r.unpublish()})),r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof Va){r.setLabel(u.ScreenVideo),r.setEncoderConfig(t.encoderConfig);const e=ta.getVideoTrackTransformParams(r.mediaStreamTrack);return r.setTransformParams(e),this.media.setTrack(r),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,transformParams:e,track:r})}r.setLabel(u.ScreenAudio),(null==e?void 0:e.audioEncoderConfig)&&r.setEncoderConfig(e.audioEncoderConfig),this.media.setTrack(r),this.logger.debug("createScreenMediaTrack()",{trackParams:null==e?void 0:e.audio,encoderConfig:null==e?void 0:e.audioEncoderConfig,track:r})})),r}catch(e){throw this.logger.error("createScreenMediaTrack()",{error:e,trackParams:t}),new Error(`Can not create screen media tracks: ${e.message}`)}}))}deleteTrack(e){return this.media.deleteTrack(e)}get channelId(){return this.channel}get appId(){return this.app}get canUseNoiseSuppression(){return this.media.isNoiseSuppressorLoaded}setActiveSpeakerPeer(e){this.activeSpeaker!==e&&(this.activeSpeakerPeer=e,this.clientEventEmitter.safeEmit(B,{peer:e}))}connectToSocketServerWithRetry(e){return r(this,void 0,void 0,(function*(){return $a((()=>r(this,void 0,void 0,(function*(){return this.connectToSocketServer(e)}))),{maxRetries:15,minBackoffDelayMs:150,maxBackoffDelayMs:5e3,actionName:"connectToSocketServer",logger:new Ke({namespace:"RetrySocketConnect",logLevel:this.logLevel}),abortOnError:e=>{var t;return"unauthorized"===(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.errorCode)}})}))}connectToSocketServer(e){return r(this,void 0,void 0,(function*(){const{webSocketUrl:t}=yield this.getAvailableNode({channelId:e.channelId,role:e.role});this.network.socket.connect(t,e.token);try{yield this.waitForSocketConnection()}catch(r){throw this.logger.error("Failed to connect to socket server",{error:r,role:e.role,channelId:e.channelId,webSocketUrl:t}),this.network.socket.disconnect(),r}}))}getAvailableNode(e){return r(this,void 0,void 0,(function*(){try{return{webSocketUrl:(yield this.network.loadBalancerClient.getNode(e)).webSocketUrl}}catch(e){throw this.logger.error("getAvailableNode()",{error:"No available nodes"}),e}}))}waitForSocketConnection(){return new Promise(((e,t)=>{const i=s=>r(this,void 0,void 0,(function*(){const{error:r,state:n}=s,o=()=>this.network.socket.observer.removeListener("state",i),a=[se.Disconnected,se.Reconnecting].includes(n);return r?(o(),void t(r)):this.isChannelJoining&&a?(o(),void t(new Error(`Not expected socket state for new connection: ${n}`))):void(this.isChannelJoining&&[se.Connected,se.Reconnected].includes(n)&&(o(),e()))}));this.network.socket.observer.on("state",i)}))}performJoin(e){return r(this,void 0,void 0,(function*(){try{const{appId:t,channelId:r}=yield this.sendJoinChannelRequestWithRetry(e);this.app=t,this.channel=r,yield this.initialize(),this.channelEventsHandler.subscribeToEvents(),this.mediaSoupEventsHandler.subscribeToEvents(),this.isJoined=!0,this.logger.debug("Successfully joined channel",{channelId:r}),yield this.createAudioObserver()}catch(e){throw this.logger.error("performJoin()",{error:e}),e}}))}sendJoinChannelRequestWithRetry(e){return r(this,void 0,void 0,(function*(){return $a((()=>r(this,void 0,void 0,(function*(){return this.sendJoinChannelRequest(e)}))),{maxRetries:3,minBackoffDelayMs:300,actionName:"sendJoinChannelRequest",logger:new Ke({namespace:"RetryJoin",logLevel:this.logLevel})})}))}sendJoinChannelRequest(e){return r(this,void 0,void 0,(function*(){return this.network.socket.request(b,e)}))}get cahPublish(){var e;return"host"===(null===(e=this.peers.find((e=>e.isMe)))||void 0===e?void 0:e.role)}get myPeer(){return this.peers.find((e=>e.isMe))}watchClientEvents(){this.clientEventEmitter.on(q,(e=>r(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)})))),this.clientEventEmitter.on(W,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.close(),this.media.deleteTrack(e)})),this.clientEventEmitter.on(V,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.pause()})),this.clientEventEmitter.on(z,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.resume()})),this.clientEventEmitter.on($,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.close()})),this.clientEventEmitter.on(G,(e=>r(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)}))))}createSelfPeerTrack(e){var t;return r(this,void 0,void 0,(function*(){const r=this.peersRepository.get(this.mySocketId);if(!r)return;yield null===(t=r.tracks.get(e.getLabel()))||void 0===t?void 0:t.close();const i=new Fo({mediaStreamTrack:e.mediaStreamTrack,label:e.getLabel(),engine:this,muted:!1,paused:e.isPaused,peerEventEmitter:r.observer});r.tracks.set(i.label,i)}))}createAudioObserver(){var e;return r(this,void 0,void 0,(function*(){if(!this.isJoined)throw new Ga("Need to join first");const t={channelId:this.channelId,appId:this.appId,peerId:null===(e=this.myPeer)||void 0===e?void 0:e.id};try{const{producerId:e}=yield this.network.getAudioObserverProducer(),r=yield this.network.createDataConsumer({producerId:e,appId:this.appId,channelId:this.channelId});r.on("message",(e=>{this.channelAudioObserverEventHandler.handle(e)})),this.audioObserver=r,this.logger.debug("Successfully create audio observer",t)}catch(e){this.logger.error("Failed to create audio observer",t)}}))}}var Ja,Ka,Qa;function Xa(){}function Ya(){Ya.init.call(this)}function Za(e){return void 0===e._maxListeners?Ya.defaultMaxListeners:e._maxListeners}function ec(e,t,r){if(t)e.call(r);else for(var i=e.length,s=cc(e,i),n=0;n<i;++n)s[n].call(r)}function tc(e,t,r,i){if(t)e.call(r,i);else for(var s=e.length,n=cc(e,s),o=0;o<s;++o)n[o].call(r,i)}function rc(e,t,r,i,s){if(t)e.call(r,i,s);else for(var n=e.length,o=cc(e,n),a=0;a<n;++a)o[a].call(r,i,s)}function ic(e,t,r,i,s,n){if(t)e.call(r,i,s,n);else for(var o=e.length,a=cc(e,o),c=0;c<o;++c)a[c].call(r,i,s,n)}function sc(e,t,r,i){if(t)e.apply(r,i);else for(var s=e.length,n=cc(e,s),o=0;o<s;++o)n[o].apply(r,i)}function nc(e,t,r,i){var s,n,o,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((n=e._events)?(n.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),o=n[t]):(n=e._events=new Xa,e._eventsCount=0),o){if("function"==typeof o?o=n[t]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),!o.warned&&(s=Za(e))&&s>0&&o.length>s){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=n[t]=r,++e._eventsCount;return e}function oc(e,t,r){var i=!1;function s(){e.removeListener(t,s),i||(i=!0,r.apply(e,arguments))}return s.listener=r,s}function ac(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function cc(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}Xa.prototype=Object.create(null),Ya.EventEmitter=Ya,Ya.usingDomains=!1,Ya.prototype.domain=void 0,Ya.prototype._events=void 0,Ya.prototype._maxListeners=void 0,Ya.defaultMaxListeners=10,Ya.init=function(){this.domain=null,Ya.usingDomains&&(void 0).active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Xa,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ya.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Ya.prototype.getMaxListeners=function(){return Za(this)},Ya.prototype.emit=function(e){var t,r,i,s,n,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(r=o[e]))return!1;var l="function"==typeof r;switch(i=arguments.length){case 1:ec(r,l,this);break;case 2:tc(r,l,this,arguments[1]);break;case 3:rc(r,l,this,arguments[1],arguments[2]);break;case 4:ic(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(i-1),n=1;n<i;n++)s[n-1]=arguments[n];sc(r,l,this,s)}return!0},Ya.prototype.addListener=function(e,t){return nc(this,e,t,!1)},Ya.prototype.on=Ya.prototype.addListener,Ya.prototype.prependListener=function(e,t){return nc(this,e,t,!0)},Ya.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,oc(this,e,t)),this},Ya.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,oc(this,e,t)),this},Ya.prototype.removeListener=function(e,t){var r,i,s,n,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new Xa:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(s=-1,n=r.length;n-- >0;)if(r[n]===t||r[n].listener&&r[n].listener===t){o=r[n].listener,s=n;break}if(s<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Xa,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,s=e.length;i<s;r+=1,i+=1)e[r]=e[i];e.pop()}(r,s);i.removeListener&&this.emit("removeListener",e,o||t)}return this},Ya.prototype.off=function(e,t){return this.removeListener(e,t)},Ya.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Xa,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Xa:delete r[e]),this;if(0===arguments.length){for(var i,s=Object.keys(r),n=0;n<s.length;++n)"removeListener"!==(i=s[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new Xa,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},Ya.prototype.listeners=function(e){var t,r=this._events;return r&&(t=r[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[]},Ya.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):ac.call(e,t)},Ya.prototype.listenerCount=ac,Ya.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class dc extends Ya{}!function(e){e.Issue="issue",e.NetworkScoresUpdated="network-scores-updated",e.StatsParsingFinished="stats-parsing-finished"}(Ja||(Ja={})),function(e){e.Network="network",e.CPU="cpu",e.Server="server",e.Stream="stream"}(Ka||(Ka={})),function(e){e.OutboundNetworkQuality="outbound-network-quality",e.InboundNetworkQuality="inbound-network-quality",e.OutboundNetworkMediaLatency="outbound-network-media-latency",e.InboundNetworkMediaLatency="inbound-network-media-latency",e.NetworkMediaSyncFailure="network-media-sync-failure",e.OutboundNetworkThroughput="outbound-network-throughput",e.InboundNetworkThroughput="inbound-network-throughput",e.EncoderCPUThrottling="encoder-cpu-throttling",e.DecoderCPUThrottling="decoder-cpu-throttling",e.ServerIssue="server-issue",e.UnknownVideoDecoderIssue="unknown-video-decoder",e.LowInboundMOS="low-inbound-mean-opinion-score",e.LowOutboundMOS="low-outbound-mean-opinion-score"}(Qa||(Qa={}));class lc extends Ya{static STATS_REPORT_READY_EVENT="stats-report-ready";static STATS_REPORTS_PARSED="stats-reports-parsed";isStopped=!1;reportTimer;getStatsInterval;compositeStatsParser;constructor(e){super(),this.compositeStatsParser=e.compositeStatsParser,this.getStatsInterval=e.getStatsInterval??1e4}get isRunning(){return!!this.reportTimer&&!this.isStopped}startReporting(){if(this.reportTimer)return;const e=()=>setTimeout((()=>{this.isStopped?this.reportTimer=void 0:this.parseReports().finally((()=>{this.reportTimer=e()}))}),this.getStatsInterval);this.isStopped=!1,this.reportTimer=e()}stopReporting(){this.isStopped=!0,this.reportTimer&&(clearTimeout(this.reportTimer),this.reportTimer=void 0)}async parseReports(){const e=Date.now(),t=await this.compositeStatsParser.parse(),r=Date.now()-e;this.emit(lc.STATS_REPORTS_PARSED,{timeTaken:r}),t.forEach((e=>{this.emit(lc.STATS_REPORT_READY_EVENT,e)}))}}const pc=(()=>{const e=new Map;return t=>{const{taskId:r,delayMs:i,maxJitterMs:s,callback:n}=t,o=Math.ceil(Math.random()*(s||0)),a=e.get(r);a&&clearTimeout(a);const c=setTimeout((()=>{n(),e.delete(r)}),i+o);e.set(r,c)}})();class uc{#e={};calculate(e){const{connection:{id:t}}=e,r=this.calculateOutboundScore(e),i=this.calculateInboundScore(e);return this.#e[t]=e,pc({taskId:t,delayMs:35e3,callback:()=>delete this.#e[t]}),{outbound:r,inbound:i}}calculateOutboundScore(e){const t=[...e.remote?.audio.inbound||[],...e.remote?.video.inbound||[]];if(!t.length)return;const r=this.#e[e.connection.id];if(!r)return;const i=[...r.remote?.audio.inbound||[],...r.remote?.video.inbound||[]],{packetsSent:s}=e.connection,n=r.connection.packetsSent,o=t.reduce(((e,t)=>{const r=i.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),a=1e3*e.connection.currentRoundTripTime||0,{sumJitter:c}=o,d=c/t.length,l=s-n,p=o.packetsLost-o.lastPacketsLost,u=l&&p?Math.round(100*p/(l+p)):0;return this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u})}calculateInboundScore(e){const t=[...e.audio?.inbound,...e.video?.inbound];if(!t.length)return;const r=this.#e[e.connection.id];if(!r)return;const i=[...r.video?.inbound,...r.audio?.inbound],{packetsReceived:s}=e.connection,n=r.connection.packetsReceived,o=t.reduce(((e,t)=>{const r=i.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),a=1e3*e.connection.currentRoundTripTime||0,{sumJitter:c}=o,d=c/t.length,l=s-n,p=o.packetsLost-o.lastPacketsLost,u=l&&p?Math.round(100*p/(l+p)):0;return this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u})}calculateMOS({avgJitter:e,rtt:t,packetsLoss:r}){const i=t+2*e+10;let s=i<160?93.2-i/40:93.2-i/120-10;return s-=2.5*r,1+.035*s+7e-6*s*(s-60)*(100-s)}}class hc{#e;#t;constructor(e={}){this.#e=new Map,this.#t=e.statsCleanupTtlMs??35e3}detect(e){const t=this.performDetection(e);return this.performPrevStatsCleanup({connectionId:e.connection.id}),t}performPrevStatsCleanup(e){const{connectionId:t,cleanupCallback:r}=e;this.#e.has(t)&&pc({taskId:t,delayMs:this.#t,callback:()=>{this.deleteLastProcessedStats(t),"function"==typeof r&&r()}})}setLastProcessedStats(e,t){this.#e.set(e,t)}getLastProcessedStats(e){return this.#e.get(e)}deleteLastProcessedStats(e){this.#e.delete(e)}}class fc extends hc{#r;constructor(e={}){super(e),this.#r=e.availableOutgoingBitrateThreshold??1e5}performDetection(e){const t=[],{availableOutgoingBitrate:r}=e.connection;if(void 0===r)return t;const i=e.audio.outbound.reduce(((e,t)=>e+t.targetBitrate),0),s=e.video.outbound.reduce(((e,t)=>e+t.bitrate),0);if(!i&&!s)return t;const n={availableOutgoingBitrate:r,videoStreamsTotalBitrate:s,audioStreamsTotalTargetBitrate:i};return i>r||s>0&&r<this.#r?(t.push({statsSample:n,type:Ka.Network,reason:Qa.OutboundNetworkThroughput}),t):t}}class mc extends hc{#i;constructor(e={}){super(e),this.#i=e.framesDroppedThreshold??.5}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.inbound.filter((e=>e.framesDropped>0)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.inbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesDropped===t.framesDropped)return;const s=e.framesReceived-t.framesReceived,n=e.framesDecoded-t.framesDecoded,o=e.framesDropped-t.framesDropped,a=o/s;if(0===s||0===n)return;const c={deltaFramesDropped:o,deltaFramesReceived:s,deltaFramesDecoded:n,framesDroppedPct:Math.round(100*a)};a>=this.#i&&r.push({statsSample:c,type:Ka.CPU,reason:Qa.DecoderCPUThrottling,ssrc:e.ssrc})})),r):r}}class gc extends hc{#s;constructor(e={}){super(e),this.#s=e.missedFramesThreshold??.15}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.outbound.filter((e=>e.framesEncoded>0)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.outbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesEncoded===t.framesEncoded)return;const s=e.framesEncoded-t.framesEncoded,n=e.framesSent-t.framesSent,o=1-n/s;if(0===s)return;if(s===n)return;const a={deltaFramesSent:n,deltaFramesEncoded:s,missedFramesPct:Math.round(100*o)};o>=this.#s&&r.push({statsSample:a,type:Ka.Network,reason:Qa.OutboundNetworkThroughput,ssrc:e.ssrc})})),r):r}}class vc extends hc{highPacketLossThresholdPct;highJitterThreshold;highJitterBufferDelayThresholdMs;highRttThresholdMs;constructor(e={}){super(),this.highPacketLossThresholdPct=e.highPacketLossThresholdPct??5,this.highJitterThreshold=e.highJitterThreshold??200,this.highJitterBufferDelayThresholdMs=e.highJitterBufferDelayThresholdMs??500,this.highRttThresholdMs=e.highRttThresholdMs??250}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=[],r=[...e.audio?.inbound,...e.video?.inbound];if(!r.length)return t;const i=this.getLastProcessedStats(e.connection.id);if(!i)return t;const s=[...i.video?.inbound,...i.audio?.inbound],{packetsReceived:n}=e.connection,o=i.connection.packetsReceived,a=r.reduce(((e,t)=>{const r=s.find((e=>e.ssrc===t.ssrc)),i=r?.jitterBufferDelay||0,n=r?.jitterBufferEmittedCount||0,o=t.jitterBufferDelay-i,a=t.jitterBufferEmittedCount-n,c=o&&a?1e3*o/a:0;return{sumJitter:e.sumJitter+t.jitter,sumJitterBufferDelayMs:e.sumJitterBufferDelayMs+c,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,sumJitterBufferDelayMs:0,packetsLost:0,lastPacketsLost:0}),c=1e3*e.connection.currentRoundTripTime||0,{sumJitter:d,sumJitterBufferDelayMs:l}=a,p=d/r.length,u=l/r.length,h=n-o,f=a.packetsLost-a.lastPacketsLost,m=h&&f?Math.round(100*f/(h+f)):0,g=m>this.highPacketLossThresholdPct,v=p>=this.highJitterThreshold,y=c>=this.highRttThresholdMs,b=u>this.highJitterBufferDelayThresholdMs,w=y&&!v&&!g,_=g&&v,S=v&&b,k={rtt:c,packetLossPct:m,avgJitter:p,avgJitterBufferDelay:u};return(v||g)&&t.push({statsSample:k,type:Ka.Network,reason:Qa.InboundNetworkQuality,iceCandidate:e.connection.local.id}),w&&t.push({statsSample:k,type:Ka.Server,reason:Qa.ServerIssue,iceCandidate:e.connection.remote.id}),_&&t.push({statsSample:k,type:Ka.Network,reason:Qa.InboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),S&&t.push({statsSample:k,type:Ka.Network,reason:Qa.NetworkMediaSyncFailure,iceCandidate:e.connection.local.id}),t}}class yc extends hc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.audio.inbound,r=[],i=this.getLastProcessedStats(e.connection.id)?.audio.inbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const s=e.track.insertedSamplesForDeceleration+e.track.removedSamplesForAcceleration,n=t.track.insertedSamplesForDeceleration+t.track.removedSamplesForAcceleration;if(s===n)return;const o=e.track.totalSamplesReceived-t.track.totalSamplesReceived,a=s-n,c=Math.round(100*a/o),d={correctedSamplesPct:c};c>5&&r.push({statsSample:d,type:Ka.Network,reason:Qa.NetworkMediaSyncFailure,ssrc:e.ssrc})})),r):r}}class bc extends hc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=[],r=[...e.remote?.audio.inbound||[],...e.remote?.video.inbound||[]];if(!r.length)return t;const i=this.getLastProcessedStats(e.connection.id);if(!i)return t;const s=[...i.remote?.audio.inbound||[],...i.remote?.video.inbound||[]],{packetsSent:n}=e.connection,o=i.connection.packetsSent,a=r.reduce(((e,t)=>{const r=s.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),c=1e3*e.connection.currentRoundTripTime||0,{sumJitter:d}=a,l=d/r.length,p=n-o,u=a.packetsLost-a.lastPacketsLost,h=p&&u?Math.round(100*u/(p+u)):0,f=h>5,m=l>=200,g=!f&&m||m||f,v={rtt:c,avgJitter:l,packetLossPct:h};return f&&m&&t.push({statsSample:v,type:Ka.Network,reason:Qa.OutboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),g&&t.push({statsSample:v,type:Ka.Network,reason:Qa.OutboundNetworkQuality,iceCandidate:e.connection.local.id}),t}}class wc extends hc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.outbound.filter((e=>"none"!==e.qualityLimitationReason)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.outbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const s={qualityLimitationReason:e.qualityLimitationReason};e.framesSent>t.framesSent||("cpu"===e.qualityLimitationReason&&r.push({statsSample:s,type:Ka.CPU,reason:Qa.EncoderCPUThrottling,ssrc:e.ssrc}),"bandwidth"===e.qualityLimitationReason&&r.push({statsSample:s,type:Ka.Network,reason:Qa.OutboundNetworkThroughput,ssrc:e.ssrc}))})),r):r}}class _c extends hc{UNKNOWN_DECODER="unknown";#n={};performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}performPrevStatsCleanup(e){const{connectionId:t,cleanupCallback:r}=e;super.performPrevStatsCleanup({...e,cleanupCallback:()=>{delete this.#n[t],"function"==typeof r&&r()}})}processData(e){const t=[],{id:r}=e.connection,i=this.getLastProcessedStats(r)?.video.inbound;return e.video.inbound.forEach((e=>{const{decoderImplementation:s,ssrc:n}=e,o=i?.find((e=>e.ssrc===n));if(o)if(s===this.UNKNOWN_DECODER){if(!this.hadLastDecoderWithIssue(r,n)){this.setLastDecoderWithIssue(r,n,this.UNKNOWN_DECODER);const i={mimeType:e.mimeType,decoderImplementation:s};t.push({ssrc:n,statsSample:i,type:Ka.Stream,reason:Qa.UnknownVideoDecoderIssue,trackIdentifier:e.track.trackIdentifier})}}else this.setLastDecoderWithIssue(r,n,void 0)})),t}setLastDecoderWithIssue(e,t,r){const i=this.#n[e]??{};void 0===r?delete i[t]:i[t]=r,this.#n[e]=i}hadLastDecoderWithIssue(e,t){const r=this.#n[e];return(r&&r[t])===this.UNKNOWN_DECODER}}const Sc=e=>"closed"===e.iceConnectionState||"closed"===e.connectionState,kc=(e,t,r)=>8*((e,t,r)=>{if(!t)return 0;const i=e[r],s=t[r];if(null==i||null==s)return 0;const n=Math.floor(e.timestamp)-Math.floor(t.timestamp);return 0===n?0:(Number(i)-Number(s))/n*1e3})(e,t,r);class Cc{connections=[];statsParser;constructor(e){this.statsParser=e.statsParser}listConnections(){return[...this.connections]}addPeerConnection(e){this.connections.push({id:e.id??String(Date.now()+Math.random().toString(32)),pc:e.pc})}removePeerConnection(e){const t=this.connections.findIndex((({pc:t})=>t===e.pc));t>=0&&this.removeConnectionsByIndexes([t])}async parse(){const e=[],t=this.connections.map((async(t,r)=>{if(!Sc(t.pc))return this.statsParser.parse(t);e.unshift(r)}));return e.length&&this.removeConnectionsByIndexes(e),(await Promise.all(t)).filter((e=>void 0!==e))}removeConnectionsByIndexes(e){e.forEach((e=>{this.connections.splice(e,1)}))}}class Rc{prevStats=new Map;allowedReportTypes=new Set(["candidate-pair","inbound-rtp","outbound-rtp","remote-outbound-rtp","remote-inbound-rtp","track","transport"]);logger;constructor(e){this.logger=e.logger}get previouslyParsedStatsConnectionsIds(){return[...this.prevStats.keys()]}async parse(e){if(!Sc(e.pc))return this.getConnectionStats(e);this.logger.debug("Skip stats parsing. Connection is closed.",{connection:e})}async getConnectionStats(e){const{pc:t,id:r}=e;try{const i=Date.now(),s=await Promise.all(t.getReceivers().map((e=>e.getStats()))),n=await Promise.all(t.getSenders().map((e=>e.getStats())));return{id:r,stats:this.mapReportsStats([...s,...n],e),timeTaken:Date.now()-i}}catch(e){return void this.logger.error("Failed to get stats for PC",{id:r,pc:t,error:e})}}mapReportsStats(e,t){const r={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]},connection:{},remote:{video:{inbound:[],outbound:[]},audio:{inbound:[],outbound:[]}}};e.forEach((e=>{e.forEach((t=>{this.allowedReportTypes.has(t.type)&&this.updateMappedStatsWithReportItemData(t,r,e)}))}));const{id:i}=t,s=this.prevStats.get(i);return s&&this.propagateStatsWithRateValues(r,s.stats),this.prevStats.set(i,{stats:r,ts:Date.now()}),pc({taskId:i,delayMs:35e3,callback:()=>this.prevStats.delete(i)}),r}updateMappedStatsWithReportItemData(e,t,r){const i=e.type;if("candidate-pair"===i&&"succeeded"===e.state&&e.nominated)return void(t.connection=this.prepareConnectionStats(e,r));const s=this.getMediaType(e);if(s)if("outbound-rtp"!==i)if("inbound-rtp"!==i)"remote-outbound-rtp"!==i?"remote-inbound-rtp"===i&&(this.mapConnectionStatsIfNecessary(t,e,r),t.remote[s].inbound.push({...e})):t.remote[s].outbound.push({...e});else{const i=r.get(e.trackId)||r.get(e.mediaSourceId)||{};this.mapConnectionStatsIfNecessary(t,e,r);const n={...e,track:{...i}};t[s].inbound.push(n)}else{const i=r.get(e.trackId)||r.get(e.mediaSourceId)||{},n={...e,track:{...i}};t[s].outbound.push(n)}}getMediaType(e){const t=e.mediaType||e.kind;if(!["audio","video"].includes(t)){const{id:t}=e;if(!t)return;return String(t).includes("Video")?"video":String(t).includes("Audio")?"audio":void 0}return t}propagateStatsWithRateValues(e,t){e.audio.inbound.forEach((e=>{const r=t.audio.inbound.find((({id:t})=>t===e.id));e.bitrate=kc(e,r,"bytesReceived"),e.packetRate=kc(e,r,"packetsReceived")})),e.audio.outbound.forEach((e=>{const r=t.audio.outbound.find((({id:t})=>t===e.id));e.bitrate=kc(e,r,"bytesSent"),e.packetRate=kc(e,r,"packetsSent")})),e.video.inbound.forEach((e=>{const r=t.video.inbound.find((({id:t})=>t===e.id));e.bitrate=kc(e,r,"bytesReceived"),e.packetRate=kc(e,r,"packetsReceived")})),e.video.outbound.forEach((e=>{const r=t.video.outbound.find((({id:t})=>t===e.id));e.bitrate=kc(e,r,"bytesSent"),e.packetRate=kc(e,r,"packetsSent")}))}mapConnectionStatsIfNecessary(e,t,r){if(e.connection.id||!t.transportId)return;const i=r.get(t.transportId);if(i&&i.selectedCandidatePairId){const t=r.get(i.selectedCandidatePairId);e.connection=this.prepareConnectionStats(t,r)}}prepareConnectionStats(e,t){if(!e||!t)return{};const r={...e};if(r.remoteCandidateId){const e=t.get(r.remoteCandidateId);r.remote={...e}}if(r.localCandidateId){const e=t.get(r.localCandidateId);r.local={...e}}return r}}class Pc{eventEmitter;#o=!1;detectors=[];networkScoresCalculator;statsReporter;compositeStatsParser;logger;constructor(e){this.logger=e.logger??{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},this.eventEmitter=e.issueEmitter??new dc,e.onIssues&&this.eventEmitter.on(Ja.Issue,e.onIssues),e.onNetworkScoresUpdated&&this.eventEmitter.on(Ja.NetworkScoresUpdated,e.onNetworkScoresUpdated),this.detectors=e.detectors??[new wc,new mc,new gc,new vc,new bc,new yc,new fc,new _c],this.networkScoresCalculator=e.networkScoresCalculator??new uc,this.compositeStatsParser=e.compositeStatsParser??new Cc({statsParser:new Rc({logger:this.logger})}),this.statsReporter=e.statsReporter??new lc({compositeStatsParser:this.compositeStatsParser,getStatsInterval:e.getStatsInterval??5e3}),window.wid=this,this.wrapRTCPeerConnection(),this.statsReporter.on(lc.STATS_REPORT_READY_EVENT,(t=>{this.detectIssues({data:t.stats,ignoreSSRCList:e.ignoreSSRCList}),this.calculateNetworkScores(t.stats)})),this.statsReporter.on(lc.STATS_REPORTS_PARSED,(e=>{const t={timeTaken:e.timeTaken,ts:Date.now()};this.eventEmitter.emit(Ja.StatsParsingFinished,t)}))}watchNewPeerConnections(){this.#o?this.logger.warn("WebRTCIssueDetector is already started. Skip processing"):(this.logger.info("Start watching peer connections"),this.#o=!0,this.statsReporter.startReporting())}stopWatchingNewPeerConnections(){this.#o?(this.logger.info("Stop watching peer connections"),this.#o=!1,this.statsReporter.stopReporting()):this.logger.warn("WebRTCIssueDetector is already stopped. Skip processing")}handleNewPeerConnection(e){this.#o?(this.logger.debug("Handling new peer connection",e),this.compositeStatsParser.addPeerConnection({pc:e})):this.logger.debug("Skip handling new peer connection. Detector is not running",e)}emitIssues(e){this.eventEmitter.emit(Ja.Issue,e)}detectIssues({data:e,ignoreSSRCList:t}){let r=this.detectors.reduce(((t,r)=>[...t,...r.detect(e)]),[]);t?.length&&(r=r.filter((e=>!e.ssrc||!t.includes(e.ssrc)))),r.length>0&&this.emitIssues(r)}calculateNetworkScores(e){const t=this.networkScoresCalculator.calculate(e);this.eventEmitter.emit(Ja.NetworkScoresUpdated,t)}wrapRTCPeerConnection(){if(!window.RTCPeerConnection)return void this.logger.warn("No RTCPeerConnection found in browser window. Skipping");const e=window.RTCPeerConnection,t=e=>this.handleNewPeerConnection(e);function r(r){const i=new e(r);return t(i),i}r.prototype=e.prototype,window.RTCPeerConnection=r}}class Tc{constructor(e){const{socketClient:t,loadBalancerApiClient:r,onLogMessage:i}=e;this.socket=t,this.loadBalancerClient=r,this.logger=new Ke({namespace:"Network",logLevel:e.logLevel,onLogMessage:i})}closeRemoteProducer(e){return r(this,void 0,void 0,(function*(){yield this.socket.request(oe,{peerId:this.socket.id,producerId:e})}))}closeSendTransport(){var e;return r(this,void 0,void 0,(function*(){this.sendTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.sendTransport)),this.sendTransport=void 0):this.logger.warn("closeSendTransport()",{message:"No available send transport"})}))}closeReceiveTransport(){var e;return r(this,void 0,void 0,(function*(){this.receiveTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.receiveTransport)),this.receiveTransport=void 0):this.logger.warn("closeReceiveTransport()",{message:"No available receive transport"})}))}closeTransport(e){return r(this,void 0,void 0,(function*(){try{const{success:t}=yield this.socket.request(Re,{transportId:e.id});return this.logger.debug("closeTransport()",{transport:e}),Boolean(t)}catch(e){return this.logger.error("closeTransport()",{error:e}),!1}finally{e.close()}}))}createSendTransport(e){return r(this,void 0,void 0,(function*(){if(this.sendTransport)return void this.logger.warn("createSendTransport()",{message:"Send transport already exists"});const t=yield this.socket.request(Ce,{sctpCapabilities:e.sctpCapabilities,localDirection:"send"}),i=e.createSendTransport(t);this.logger.debug("createSendTransport()",{transport:this.sendTransport}),i.on(Me,(({dtlsParameters:e},s,n)=>r(this,void 0,void 0,(function*(){try{yield this.socket.request(Pe,{transportId:i.id,dtlsParameters:e}),s(),this.logger.debug("sendTransport.connect()",{transportId:i.id,dtlsRole:e.role})}catch(r){this.logger.error("sendTransport.on(`connect`)",{dtlsParameters:e,sendTransportOptions:t,error:r}),n(r)}})))),i.on(Le,((e,t,s)=>r(this,void 0,void 0,(function*(){try{const{id:r}=yield this.socket.request(Te,{transportId:i.id,kind:e.kind,rtpParameters:e.rtpParameters,appData:e.appData});t({id:r}),this.logger.debug("sendTransport.produce()",{producerId:r,transportId:i.id,kind:e.kind})}catch(t){this.logger.error("sendTransport.produce()",{error:t,transportId:i.id,kind:e.kind}),s(t)}})))),i.on(De,(e=>{this.logger.debug("sendTransport.state",{state:e}),"failed"===e&&(this.restartIce(i),this.logger.warn("sendTransport.restartIce()",{state:e,sendTransportId:i.id})),setTimeout((()=>{var e;"disconnected"===i.connectionState&&(null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&this.logger.warn("sendTransport is closed before websocket is closed",{sendTransportId:i.id})}),3e3)})),this.sendTransport=i}))}createRecvTransport(e){return r(this,void 0,void 0,(function*(){if(this.receiveTransport)return void this.logger.warn("createReceiveTransport()",{message:"Receive transport already exists"});const t=yield this.socket.request(Ce,{localDirection:"receive"}),i=e.createRecvTransport(t);this.logger.debug("createReceiveTransport()",{transport:this.receiveTransport}),i.on(Me,(({dtlsParameters:e},t,s)=>r(this,void 0,void 0,(function*(){try{yield this.socket.request(Pe,{transportId:i.id,dtlsParameters:e}),t(),this.logger.debug("receiveTransport.connect()",{transportId:i.id,dtlsRole:e.role})}catch(e){this.logger.error("receiveTransport.on(`connect`)",{error:e}),s(e)}})))),i.on(De,(e=>{this.logger.debug("receiveTransport.state",{state:e}),"failed"===e&&(this.restartIce(i),this.logger.debug("receiveTransport.restartIce()",{recvTransportId:i.id})),setTimeout((()=>{var e;"disconnected"===i.connectionState&&(null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&this.logger.warn("receiveTransport is closed before websocket is closed",{recvTransportId:i.id})}),3e3)})),this.receiveTransport=i}))}getIceParameters(e){return r(this,void 0,void 0,(function*(){const t=yield this.socket.request(xe,{transportId:e.id}),{error:r}=t;if(r)throw new Error(r);return this.logger.debug("getIceParameters()",{iceParameters:t}),t}))}restartIce(e){return r(this,void 0,void 0,(function*(){try{const t=yield this.getIceParameters(e);yield e.restartIce({iceParameters:t}),this.logger.debug("restartIce() completed",{iceParameters:t})}catch(e){this.logger.error("restartIce()",{error:e})}}))}createConsumer({producerId:e,rtpCapabilities:t,appId:i,channelId:s,producerPeerId:n}){return r(this,void 0,void 0,(function*(){const r=this.receiveTransport;if(!r)throw this.logger.error("createConsumer()",{reason:"missing receive transport"}),new Error("Failed to create consumer");this.logger.debug("createConsumer()",{producerId:e});const o=yield this.socket.request(me,{producerId:e,transportId:r.id,rtpCapabilities:t,appData:{peerId:this.socket.id,appId:i,channelId:s},producerPeerId:n}),a=yield r.consume(o),{producerPaused:c}=o;return this.logger.debug("Consumer created",{consumer:a,isProducerPaused:c}),{consumer:a,isProducerPaused:c}}))}createDataConsumer({producerId:e,appId:t,channelId:i}){return r(this,void 0,void 0,(function*(){const r=this.receiveTransport;if(!r)throw this.logger.error("createDataConsumer()",{reason:"missing receive transport"}),new Error("Failed to create consumer");this.logger.debug("createDataConsumer()",{producerId:e});const s=yield this.socket.request(ge,{dataProducerId:e,transportId:r.id,appData:{peerId:this.socket.id,producerId:e,appId:t,channelId:i}}),n=yield r.consumeData(s);return this.logger.debug("Data consumer created",{consumer:n}),n}))}closeRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.socket.request(ve,{peerId:this.socket.id,consumerId:e})}))}resumeRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.socket.request(be,{consumerId:e})}))}pauseRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.socket.request(ye,{consumerId:e})}))}updatePeerAppData({peerId:e,appData:t}){return r(this,void 0,void 0,(function*(){return this.socket.request(S,{peerId:e,appData:t})}))}getAudioObserverProducer(){return r(this,void 0,void 0,(function*(){return this.socket.request(T)}))}getTransportsStateInfo(){return r(this,void 0,void 0,(function*(){const[e,t]=yield Promise.all([this.getParsedTransportStats(this.receiveTransport),this.getParsedTransportStats(this.sendTransport)]);return{receive:e,send:t}}))}getParsedTransportStats(e){return r(this,void 0,void 0,(function*(){if(e)try{const t=Array.from((yield e.getStats()).values()),r=t.find((e=>"local-candidate"===e.type)),i=t.find((e=>"remote-candidate"===e.type)),s=t.find((e=>"transport"===e.type));return{dtlsState:null==s?void 0:s.dtlsState,iceState:null==s?void 0:s.iceState,dtlsRole:null==s?void 0:s.dtlsRole,iceRole:null==s?void 0:s.iceRole,selectedCandidatePairChanges:null==s?void 0:s.selectedCandidatePairChanges,tlsVersion:null==s?void 0:s.tlsVersion,localCandidateState:{ip:null==r?void 0:r.ip,address:null==r?void 0:r.address,port:null==r?void 0:r.port,protocol:null==r?void 0:r.protocol,candidateType:null==r?void 0:r.candidateType},remoteCandidateState:{ip:null==i?void 0:i.ip,address:null==i?void 0:i.address,port:null==i?void 0:i.port,protocol:null==i?void 0:i.protocol,candidateType:null==i?void 0:i.candidateType}}}catch(e){return void this.logger.warn("getParsedTransportStats()",{error:e})}else this.logger.debug("getParsedTransportStats()",{message:"Transport is missing"})}))}}const Ec=e=>![h.NotFoundError,h.NotAllowedError,h.DeviceIsBusy].includes(e);class Dc{constructor(e){this.isEnableVideoDevicesLock=!1,this.isEnableAudioDevicesLock=!1,this.isDevicesDetected=!1,this.availableVideoDevices=[],this.availableAudioDevices=[];const{clientEventEmitter:t,logLevel:r,onLogMessage:i}=e;this.clientEventEmitter=t,this.logger=new Ke({namespace:"System",logLevel:r,onLogMessage:i}),this.deviceChangeHandler=this.deviceChangeHandler.bind(this),this.listenDevices()}setIsEnableVideoDevicesLock(e){this.isEnableVideoDevicesLock=e}setIsEnableAudioDevicesLock(e){this.isEnableAudioDevicesLock=e}setAvailableVideoDevices(e){this.availableVideoDevices=e}setAvailableAudioDevices(e){this.availableAudioDevices=e}requestMediaDevicesAccess(e={video:!0,audio:!0}){return r(this,void 0,void 0,(function*(){try{return(yield navigator.mediaDevices.getUserMedia(e)).getTracks()}catch(t){if(this.logger.error("getUserMedia()",{error:t,constraints:e}),"NotAllowedError"===t.name)throw new Error(h.NotAllowedError);if("NotReadableError"===t.name)throw new Error(h.DeviceIsBusy);if("NotFoundError"===t.name)throw new Error(h.NotFoundError);throw new Error(h.RequestDevicesUnknownError)}}))}refreshAvailableMediaDevicesList(){return r(this,void 0,void 0,(function*(){const e=yield navigator.mediaDevices.enumerateDevices(),t=[],r=[];e.forEach((e=>{""!==e.deviceId&&("videoinput"===e.kind&&t.push(e),"audioinput"===e.kind&&r.push(e))})),this.setAvailableVideoDevices(t),this.setAvailableAudioDevices(r);const i=({label:e,kind:t})=>({label:e,kind:t});return this.logger.debug("Devices list updated",{videoDevices:t.map(i),audioDevices:r.map(i)}),e}))}detectDevices(){return r(this,void 0,void 0,(function*(){let e=[];if(this.isDevicesDetected)return;try{e=yield this.requestMediaDevicesAccess()}catch(e){if(Ec(e.message))throw e;e.message!==h.DeviceIsBusy&&(yield this.assertHasAccessToMediaDevices({audio:!0}),yield this.assertHasAccessToMediaDevices({video:!0}))}this.isDevicesDetected=!0;const t=yield this.refreshAvailableMediaDevicesList();e.forEach((e=>e.stop()));const r=t.some((e=>"audioinput"===e.kind)),i=t.some((e=>"videoinput"===e.kind));if(!r&&!i)throw new Error(h.NoDevices)}))}deviceChangeHandler(){return r(this,void 0,void 0,(function*(){this.isDevicesDetected&&(yield this.refreshAvailableMediaDevicesList(),this.clientEventEmitter.safeEmit(A,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}listenDevices(){navigator.mediaDevices.addEventListener("devicechange",this.deviceChangeHandler)}assertHasAccessToMediaDevices(e={video:!0,audio:!0}){return r(this,void 0,void 0,(function*(){try{(yield this.requestMediaDevicesAccess(e)).forEach((e=>e.stop()))}catch(e){if(Ec(e.message))throw e}}))}}class xc{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Ke({logLevel:t.logLevel,namespace:"ChannelEvents",onLogMessage:r})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(y,(e=>{this.engine.clientEventEmitter.safeEmit(E,e),this.logger.debug("New channel event",{event:e})})),e.on(b,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(D,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(_,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(x,e),this.logger.debug("Peer left the channel",{peerId:e})})),e.on(R,(e=>{this.engine.clientEventEmitter.safeEmit(M,e),this.logger.info("Notify the channel that activity confirmation is required",e)})),e.on(P,(e=>{this.engine.clientEventEmitter.safeEmit(I,e),this.logger.info("Notify the channel that it has disconnected due to the activity confirmation expiring",e)})),e.on(C,(e=>{this.engine.clientEventEmitter.safeEmit(L,e),this.logger.info("Notify the channel that the activity has been acquired.",e)})),e.on(S,(({peerId:e,appData:t})=>{const r=this.engine.peers.find((t=>t.id===e));r&&r.observer.emit(S,t)}))}}class Mc{constructor(e){this.queue=new jo;const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Ke({logLevel:t.logLevel,namespace:"MediasoupEvents",onLogMessage:r})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(oe,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(oe,e)})),e.on(ne,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(ne,e)})),e.on(ve,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(ve,e)})),e.on(be,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(be,e)})),e.on(ye,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(ye,e)})),e.on(_e,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const s=this.engine.peers.find((t=>t.id===e));s&&!s.isMe&&s.observer.safeEmit(_e,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(we,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(we,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(we,e)})),e.on(ue,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(ue,e)})),e.on(fe,(({producerId:e,spatialLayer:t})=>r(this,void 0,void 0,(function*(){yield this.queue.push((()=>r(this,void 0,void 0,(function*(){yield this.handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t})}))),fe)})))),e.on(he,(({peerId:e,producerId:t,spatialLayer:i})=>r(this,void 0,void 0,(function*(){const r=this.engine.peers.find((t=>t.id===e));r&&!r.isMe&&r.observer.safeEmit(he,{peerId:e,producerId:t,spatialLayer:i})})))),e.on(Ee,(({reason:e,transportId:t,direction:i,timeout:s})=>r(this,void 0,void 0,(function*(){const r=[this.engine.network.receiveTransport,this.engine.network.sendTransport].find((e=>(null==e?void 0:e.id)===t));r&&"connected"!==r.connectionState&&(this.logger.warn(Ee,{reason:e,transportId:t,direction:i,timeout:s}),this.engine.clientEventEmitter.emit(j,{direction:i,reason:e}))})))),e.on(de,(({peerId:e,producerId:t})=>{const r=this.engine.peers.find((t=>t.id===e)),i=null==r?void 0:r.producers.get(t);r&&i&&(i.paused=!0,r.observer.safeEmit(K,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(le,(({peerId:e,producerId:t})=>{const r=this.engine.peers.find((t=>t.id===e)),i=null==r?void 0:r.producers.get(t);r&&i&&(i.paused=!1,r.observer.safeEmit(Q,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(pe,(({label:e})=>r(this,void 0,void 0,(function*(){const t=this.engine.media.getTrack(e);t&&(t.stopMediaStreamTrack(),this.engine.clientEventEmitter.safeEmit($,t),this.engine.clientEventEmitter.emit(N,{label:e}),yield this.engine.media.deleteTrack(t))}))))}handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t}){return r(this,void 0,void 0,(function*(){const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e}));if(!r)return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Producer not found"});if(!(r instanceof Va))return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Wrong producer kind"});const i=r.getMaxSpatialLayer();i!==t?(yield r.setMaxSpatialLayer(t),yield this.engine.network.socket.request(he,{producerId:e,maxSpatialLayer:t})):this.logger.debug("producerRequestMaxSpatialLayer()",{message:"Skip set max spatial layer",requestedSpatialLayer:t,currentMaxSpatialLayer:i})}))}}var Lc=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Ic=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],Oc=function(e){var t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));for(var s,n,o=Lc.exec(e||""),a={},c=14;c--;)a[Ic[c]]=o[c]||"";return-1!=r&&-1!=i&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){var r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.substr(0,1)&&0!==t.length||i.splice(0,1);"/"==t.substr(t.length-1,1)&&i.splice(i.length-1,1);return i}(0,a.path),a.queryKey=(s=a.query,n={},s.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(n[t]=r)})),n),a};var Ac={exports:{}};try{Ac.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){Ac.exports=!1}var jc=Ac.exports,Fc="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Nc(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||jc))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Fc[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Bc(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Uc=setTimeout,qc=clearTimeout;function Wc(e,t){t.useNativeTimers?(e.setTimeoutFn=Uc.bind(Fc),e.clearTimeoutFn=qc.bind(Fc)):(e.setTimeoutFn=setTimeout.bind(Fc),e.clearTimeoutFn=clearTimeout.bind(Fc))}var Vc=zc;function zc(e){if(e)return function(e){for(var t in zc.prototype)e[t]=zc.prototype[t];return e}(e)}zc.prototype.on=zc.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},zc.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},zc.prototype.off=zc.prototype.removeListener=zc.prototype.removeAllListeners=zc.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var s=0;s<i.length;s++)if((r=i[s])===t||r.fn===t){i.splice(s,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},zc.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var s=(r=r.slice(0)).length;i<s;++i)r[i].apply(this,t)}return this},zc.prototype.emitReserved=zc.prototype.emit,zc.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},zc.prototype.hasListeners=function(e){return!!this.listeners(e).length};const $c=Object.create(null);$c.open="0",$c.close="1",$c.ping="2",$c.pong="3",$c.message="4",$c.upgrade="5",$c.noop="6";const Gc=Object.create(null);Object.keys($c).forEach((e=>{Gc[$c[e]]=e}));const Hc={type:"error",data:"parser error"},Jc="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Kc="function"==typeof ArrayBuffer,Qc=({type:e,data:t},r,i)=>{return Jc&&t instanceof Blob?r?i(t):Xc(t,i):Kc&&(t instanceof ArrayBuffer||(s=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(s):s&&s.buffer instanceof ArrayBuffer))?r?i(t):Xc(new Blob([t]),i):i($c[e]+(t||""));var s},Xc=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+e)},r.readAsDataURL(e)};for(var Yc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Zc="undefined"==typeof Uint8Array?[]:new Uint8Array(256),ed=0;ed<Yc.length;ed++)Zc[Yc.charCodeAt(ed)]=ed;const td="function"==typeof ArrayBuffer,rd=(e,t)=>{if("string"!=typeof e)return{type:"message",data:sd(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:id(e.substring(1),t)};return Gc[r]?e.length>1?{type:Gc[r],data:e.substring(1)}:{type:Gc[r]}:Hc},id=(e,t)=>{if(td){const r=function(e){var t,r,i,s,n,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);var d=new ArrayBuffer(o),l=new Uint8Array(d);for(t=0;t<a;t+=4)r=Zc[e.charCodeAt(t)],i=Zc[e.charCodeAt(t+1)],s=Zc[e.charCodeAt(t+2)],n=Zc[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|s>>2,l[c++]=(3&s)<<6|63&n;return d}(e);return sd(r,t)}return{base64:!0,data:e}},sd=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e,nd=String.fromCharCode(30);class od extends Vc{constructor(e){super(),this.writable=!1,Wc(this,e),this.opts=e,this.query=e.query,this.readyState="",this.socket=e.socket}onError(e,t){const r=new Error(e);return r.type="TransportError",r.description=t,super.emit("error",r),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emit("open")}onData(e){const t=rd(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emit("packet",e)}onClose(){this.readyState="closed",super.emit("close")}}var ad,cd="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),dd={},ld=0,pd=0;function ud(e){var t="";do{t=cd[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function hd(){var e=ud(+new Date);return e!==ad?(ld=0,ad=e):e+"."+ud(ld++)}for(;pd<64;pd++)dd[cd[pd]]=pd;hd.encode=ud,hd.decode=function(e){var t=0;for(pd=0;pd<e.length;pd++)t=64*t+dd[e.charAt(pd)];return t};var fd=hd,md={encode:function(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t},decode:function(e){for(var t={},r=e.split("&"),i=0,s=r.length;i<s;i++){var n=r[i].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}};class gd extends od{constructor(){super(...arguments),this.polling=!1}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emit("poll")}onData(e){((e,t)=>{const r=e.split(nd),i=[];for(let e=0;e<r.length;e++){const s=rd(r[e],t);if(i.push(s),"error"===s.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose(),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let s=0;e.forEach(((e,n)=>{Qc(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(nd))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let r="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=fd()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port);const i=md.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}}function vd(){}const yd=null!=new Nc({xdomain:!1}).responseType;class bd extends Vc{constructor(e,t){super(),Wc(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=Bc(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new Nc(e);try{t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=bd.requestsCount++,bd.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(e){this.emit("data",e),this.onSuccess()}onError(e){this.emit("error",e),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=vd,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete bd.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&this.onData(e)}abort(){this.cleanup()}}if(bd.requestsCount=0,bd.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",wd);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Fc?"pagehide":"unload",wd,!1)}function wd(){for(let e in bd.requests)bd.requests.hasOwnProperty(e)&&bd.requests[e].abort()}const _d="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Sd=Fc.WebSocket||Fc.MozWebSocket,kd="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class Cd extends od{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=kd?{}:Bc(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=kd?new Sd(e,t,r):t?new Sd(e,t):new Sd(e)}catch(e){return this.emit("error",e)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;Qc(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&_d((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let r="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=fd()),this.supportsBinary||(e.b64=1);const i=md.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!(!Sd||"__initialize"in Sd&&this.name===Cd.prototype.name)}}const Rd={websocket:Cd,polling:class extends gd{constructor(e){if(super(e),"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=yd&&!t}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new bd(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",(e=>{this.onError("xhr post error",e)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e=>{this.onError("xhr poll error",e)})),this.pollXhr=e}}};class Pd extends Vc{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=Oc(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=Oc(t.host).host),Wc(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=md.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=function(e){const t={};for(let r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}(this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new Rd[e](r)}open(){let e;if(this.opts.rememberUpgrade&&Pd.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(()=>{this.onClose("transport close")}))}probe(e){let t=this.createTransport(e),r=!1;Pd.priorWebsocketSuccess=!1;const i=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!r)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;Pd.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{r||"closed"!==this.readyState&&(d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function s(){r||(r=!0,d(),t.close(),t=null)}const n=e=>{const r=new Error("probe error: "+e);r.transport=t.name,s(),this.emitReserved("upgradeError",r)};function o(){n("transport closed")}function a(){n("socket closed")}function c(e){t&&e.name!==t.name&&s()}const d=()=>{t.removeListener("open",i),t.removeListener("error",n),t.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};t.once("open",i),t.once("error",n),t.once("close",o),this.once("close",a),this.once("upgrading",c),t.open()}onOpen(){if(this.readyState="open",Pd.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.resetPingTimeout(),this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emitReserved("flush"))}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(e){Pd.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}Pd.protocol=4,Pd.protocol;const Td="function"==typeof ArrayBuffer,Ed=Object.prototype.toString,Dd="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Ed.call(Blob),xd="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Ed.call(File);function Md(e){return Td&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||Dd&&e instanceof Blob||xd&&e instanceof File}function Ld(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Ld(e[t]))return!0;return!1}if(Md(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Ld(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Ld(e[t]))return!0;return!1}function Id(e){const t=[],r=e.data,i=e;return i.data=Od(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Od(e,t){if(!e)return e;if(Md(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=Od(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)e.hasOwnProperty(i)&&(r[i]=Od(e[i],t));return r}return e}function Ad(e,t){return e.data=jd(e.data,t),e.attachments=void 0,e}function jd(e,t){if(!e)return e;if(e&&e._placeholder)return t[e.num];if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=jd(e[r],t);else if("object"==typeof e)for(const r in e)e.hasOwnProperty(r)&&(e[r]=jd(e[r],t));return e}var Fd;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Fd||(Fd={}));class Nd extends Vc{constructor(){super()}add(e){let t;if("string"==typeof e)t=this.decodeString(e),t.type===Fd.BINARY_EVENT||t.type===Fd.BINARY_ACK?(this.reconstructor=new Bd(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t);else{if(!Md(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===Fd[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Fd.BINARY_EVENT||r.type===Fd.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=function(e){try{return JSON.parse(e)}catch(e){return!1}}(e.substr(t));if(!Nd.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}static isPayloadValid(e,t){switch(e){case Fd.CONNECT:return"object"==typeof t;case Fd.DISCONNECT:return void 0===t;case Fd.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case Fd.EVENT:case Fd.BINARY_EVENT:return Array.isArray(t)&&t.length>0;case Fd.ACK:case Fd.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class Bd{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=Ad(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var Ud=Object.freeze({__proto__:null,protocol:5,get PacketType(){return Fd},Encoder:class{encode(e){return e.type!==Fd.EVENT&&e.type!==Fd.ACK||!Ld(e)?[this.encodeAsString(e)]:(e.type=e.type===Fd.EVENT?Fd.BINARY_EVENT:Fd.BINARY_ACK,this.encodeAsBinary(e))}encodeAsString(e){let t=""+e.type;return e.type!==Fd.BINARY_EVENT&&e.type!==Fd.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data)),t}encodeAsBinary(e){const t=Id(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:Nd});function qd(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Wd=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Vd extends Vc{constructor(e,t,r){super(),this.connected=!1,this.disconnected=!0,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this.io._autoConnect&&this.open()}subEvents(){if(this.subs)return;const e=this.io;this.subs=[qd(e,"open",this.onopen.bind(this)),qd(e,"packet",this.onpacket.bind(this)),qd(e,"error",this.onerror.bind(this)),qd(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(Wd.hasOwnProperty(e))throw new Error('"'+e+'" is a reserved event name');t.unshift(e);const r={type:Fd.EVENT,data:t,options:{}};r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]&&(this.acks[this.ids]=t.pop(),r.id=this.ids++);const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?this.packet(r):this.sendBuffer.push(r)),this.flags={},this}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this.packet({type:Fd.CONNECT,data:e})})):this.packet({type:Fd.CONNECT,data:this.auth})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e){this.connected=!1,this.disconnected=!0,delete this.id,this.emitReserved("disconnect",e)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Fd.CONNECT:if(e.data&&e.data.sid){const t=e.data.sid;this.onconnect(t)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Fd.EVENT:case Fd.BINARY_EVENT:this.onevent(e);break;case Fd.ACK:case Fd.BINARY_ACK:this.onack(e);break;case Fd.DISCONNECT:this.ondisconnect();break;case Fd.CONNECT_ERROR:const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e)}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Fd.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e){this.id=e,this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>this.packet(e))),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Fd.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}}var zd=$d;function $d(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}$d.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},$d.prototype.reset=function(){this.attempts=0},$d.prototype.setMin=function(e){this.ms=e},$d.prototype.setMax=function(e){this.max=e},$d.prototype.setJitter=function(e){this.jitter=e};class Gd extends Vc{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,Wc(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new zd({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||Ud;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Pd(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=qd(t,"open",(function(){r.onopen(),e&&e()})),s=qd(t,"error",(t=>{r.cleanup(),r._readyState="closed",this.emitReserved("error",t),e?e(t):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;0===e&&i();const r=this.setTimeoutFn((()=>{i(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(qd(e,"ping",this.onping.bind(this)),qd(e,"data",this.ondata.bind(this)),qd(e,"error",this.onerror.bind(this)),qd(e,"close",this.onclose.bind(this)),qd(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){this.decoder.add(e)}ondecoded(e){this.emitReserved("packet",e)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r||(r=new Vd(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,"opening"===this._readyState&&this.cleanup(),this.backoff.reset(),this._readyState="closed",this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Hd={};function Jd(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=Oc(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const s=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+s+":"+i.port+t,i.href=i.protocol+"://"+s+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,s=r.id,n=r.path,o=Hd[s]&&n in Hd[s].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new Gd(i,t):(Hd[s]||(Hd[s]=new Gd(i,t)),a=Hd[s]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}class Kd{constructor(e){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new n,this.knownDisconnectReasonsCodes={"io server disconnect":"server.disconnect","io client disconnect":"client.disconnect","ping timeout":"ping.timeout","transport close":"transport.close","transport error":"transport.error"},this.logger=new Ke({namespace:"Socket",logLevel:e.logLevel,onLogMessage:e.onLogMessage})}get observer(){return this._observer}get id(){var e;return null===(e=this.connection)||void 0===e?void 0:e.id}connect(e,t){const r=Jd(e,{transports:["polling","websocket"],upgrade:!0,rememberUpgrade:!1,auth:{token:t}});this.connection=r,this.serverUrl=e,r.on("connect",(()=>{const e=this.reconnectingAttempt?se.Reconnected:se.Connected;this.isConnected=!0,this.setReconnectingAttempt(0),this.logger.debug("connection.on(`connect`)",{connectionId:r.id}),this.observer.safeEmit("state",{state:e})})),r.on("connect_error",(e=>{this.connectionError=e,this.logger.error("connection.on(`connect_error`)",{error:e}),this.observer.safeEmit("state",{state:se.Error,error:e})})),r.on("disconnect",(e=>{this.isConnected=!1,this.setReconnectingAttempt(0),this.disconnectReason=e,this.logger.warn("connection.on(`disconnect`)",{reason:e}),this.observer.safeEmit("state",{state:se.Disconnected,code:this.getDisconnectReasonCode(e)})})),r.io.on("reconnect_attempt",(e=>{this.setReconnectingAttempt(e),this.logger.warn("connection.on(`reconnect_attempt`)",{attempt:e}),this.observer.safeEmit("state",{state:se.Reconnecting})})),r.io.on("reconnect",(()=>{this.logger.debug("connection.on(`reconnect`)",{connectionId:r.id}),this.observer.safeEmit("state",{state:se.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect(),this.setReconnectingAttempt(0))}request(e,t={}){return new Promise(((r,i)=>{if(!this.connection)return this.logger.error("request()",{type:e,data:t}),void i(new Error("Socket request: Socket connection is not initialized"));this.connection.emit(e,t,(s=>{s.error?(this.logger.error("request()",{event:e,payload:t,response:s}),i(s.error)):r(s)}))}))}getDisconnectReasonCode(e){const t=String(e).toLowerCase();return this.knownDisconnectReasonsCodes[t]||t}setReconnectingAttempt(e){this.reconnectingAttempt=e}}var Qd={exports:{}},Xd=function(e,t){return function(){for(var r=new Array(arguments.length),i=0;i<r.length;i++)r[i]=arguments[i];return e.apply(t,r)}},Yd=Xd,Zd=Object.prototype.toString;function el(e){return"[object Array]"===Zd.call(e)}function tl(e){return void 0===e}function rl(e){return null!==e&&"object"==typeof e}function il(e){if("[object Object]"!==Zd.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function sl(e){return"[object Function]"===Zd.call(e)}function nl(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),el(e))for(var r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}var ol={isArray:el,isArrayBuffer:function(e){return"[object ArrayBuffer]"===Zd.call(e)},isBuffer:function(e){return null!==e&&!tl(e)&&null!==e.constructor&&!tl(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:rl,isPlainObject:il,isUndefined:tl,isDate:function(e){return"[object Date]"===Zd.call(e)},isFile:function(e){return"[object File]"===Zd.call(e)},isBlob:function(e){return"[object Blob]"===Zd.call(e)},isFunction:sl,isStream:function(e){return rl(e)&&sl(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:nl,merge:function e(){var t={};function r(r,i){il(t[i])&&il(r)?t[i]=e(t[i],r):il(r)?t[i]=e({},r):el(r)?t[i]=r.slice():t[i]=r}for(var i=0,s=arguments.length;i<s;i++)nl(arguments[i],r);return t},extend:function(e,t,r){return nl(t,(function(t,i){e[i]=r&&"function"==typeof t?Yd(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},al=ol;function cl(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var dl=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(al.isURLSearchParams(t))i=t.toString();else{var s=[];al.forEach(t,(function(e,t){null!=e&&(al.isArray(e)?t+="[]":e=[e],al.forEach(e,(function(e){al.isDate(e)?e=e.toISOString():al.isObject(e)&&(e=JSON.stringify(e)),s.push(cl(t)+"="+cl(e))})))})),i=s.join("&")}if(i){var n=e.indexOf("#");-1!==n&&(e=e.slice(0,n)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},ll=ol;function pl(){this.handlers=[]}pl.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},pl.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},pl.prototype.forEach=function(e){ll.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var ul=pl,hl=ol,fl=function(e,t,r,i,s){return e.config=t,r&&(e.code=r),e.request=i,e.response=s,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e},ml=fl,gl=function(e,t,r,i,s){var n=new Error(e);return ml(n,t,r,i,s)},vl=gl,yl=ol,bl=yl.isStandardBrowserEnv()?{write:function(e,t,r,i,s,n){var o=[];o.push(e+"="+encodeURIComponent(t)),yl.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),yl.isString(i)&&o.push("path="+i),yl.isString(s)&&o.push("domain="+s),!0===n&&o.push("secure"),document.cookie=o.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},wl=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},_l=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},Sl=ol,kl=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],Cl=ol,Rl=Cl.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function i(e){var i=e;return t&&(r.setAttribute("href",i),i=r.href),r.setAttribute("href",i),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=i(window.location.href),function(t){var r=Cl.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},Pl=ol,Tl=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(vl("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},El=bl,Dl=dl,xl=function(e,t){return e&&!wl(t)?_l(e,t):t},Ml=function(e){var t,r,i,s={};return e?(Sl.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=Sl.trim(e.substr(0,i)).toLowerCase(),r=Sl.trim(e.substr(i+1)),t){if(s[t]&&kl.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+", "+r:r}})),s):s},Ll=Rl,Il=gl,Ol=function(e){return new Promise((function(t,r){var i=e.data,s=e.headers,n=e.responseType;Pl.isFormData(i)&&delete s["Content-Type"];var o=new XMLHttpRequest;if(e.auth){var a=e.auth.username||"",c=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";s.Authorization="Basic "+btoa(a+":"+c)}var d=xl(e.baseURL,e.url);function l(){if(o){var i="getAllResponseHeaders"in o?Ml(o.getAllResponseHeaders()):null,s={data:n&&"text"!==n&&"json"!==n?o.response:o.responseText,status:o.status,statusText:o.statusText,headers:i,config:e,request:o};Tl(t,r,s),o=null}}if(o.open(e.method.toUpperCase(),Dl(d,e.params,e.paramsSerializer),!0),o.timeout=e.timeout,"onloadend"in o?o.onloadend=l:o.onreadystatechange=function(){o&&4===o.readyState&&(0!==o.status||o.responseURL&&0===o.responseURL.indexOf("file:"))&&setTimeout(l)},o.onabort=function(){o&&(r(Il("Request aborted",e,"ECONNABORTED",o)),o=null)},o.onerror=function(){r(Il("Network Error",e,null,o)),o=null},o.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(Il(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",o)),o=null},Pl.isStandardBrowserEnv()){var p=(e.withCredentials||Ll(d))&&e.xsrfCookieName?El.read(e.xsrfCookieName):void 0;p&&(s[e.xsrfHeaderName]=p)}"setRequestHeader"in o&&Pl.forEach(s,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete s[t]:o.setRequestHeader(t,e)})),Pl.isUndefined(e.withCredentials)||(o.withCredentials=!!e.withCredentials),n&&"json"!==n&&(o.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&o.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&o.upload&&o.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){o&&(o.abort(),r(e),o=null)})),i||(i=null),o.send(i)}))},Al=ol,jl=function(e,t){hl.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},Fl=fl,Nl={"Content-Type":"application/x-www-form-urlencoded"};function Bl(e,t){!Al.isUndefined(e)&&Al.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var Ul,ql={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(Ul=Ol),Ul),transformRequest:[function(e,t){return jl(t,"Accept"),jl(t,"Content-Type"),Al.isFormData(e)||Al.isArrayBuffer(e)||Al.isBuffer(e)||Al.isStream(e)||Al.isFile(e)||Al.isBlob(e)?e:Al.isArrayBufferView(e)?e.buffer:Al.isURLSearchParams(e)?(Bl(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):Al.isObject(e)||t&&"application/json"===t["Content-Type"]?(Bl(t,"application/json"),function(e,t,r){if(Al.isString(e))try{return(t||JSON.parse)(e),Al.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,i=t&&t.forcedJSONParsing,s=!r&&"json"===this.responseType;if(s||i&&Al.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw Fl(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};ql.headers={common:{Accept:"application/json, text/plain, */*"}},Al.forEach(["delete","get","head"],(function(e){ql.headers[e]={}})),Al.forEach(["post","put","patch"],(function(e){ql.headers[e]=Al.merge(Nl)}));var Wl=ql,Vl=ol,zl=Wl,$l=function(e){return!(!e||!e.__CANCEL__)},Gl=ol,Hl=function(e,t,r){var i=this||zl;return Vl.forEach(r,(function(r){e=r.call(i,e,t)})),e},Jl=$l,Kl=Wl;function Ql(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var Xl=ol,Yl=function(e,t){t=t||{};var r={},i=["url","method","data"],s=["headers","auth","proxy","params"],n=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],o=["validateStatus"];function a(e,t){return Xl.isPlainObject(e)&&Xl.isPlainObject(t)?Xl.merge(e,t):Xl.isPlainObject(t)?Xl.merge({},t):Xl.isArray(t)?t.slice():t}function c(i){Xl.isUndefined(t[i])?Xl.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(e[i],t[i])}Xl.forEach(i,(function(e){Xl.isUndefined(t[e])||(r[e]=a(void 0,t[e]))})),Xl.forEach(s,c),Xl.forEach(n,(function(i){Xl.isUndefined(t[i])?Xl.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(void 0,t[i])})),Xl.forEach(o,(function(i){i in t?r[i]=a(e[i],t[i]):i in e&&(r[i]=a(void 0,e[i]))}));var d=i.concat(s).concat(n).concat(o),l=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return Xl.forEach(l,c),r},Zl={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},ep={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){ep[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var tp={},rp=Zl.version.split(".");function ip(e,t){for(var r=t?t.split("."):rp,i=e.split("."),s=0;s<3;s++){if(r[s]>i[s])return!0;if(r[s]<i[s])return!1}return!1}ep.transitional=function(e,t,r){var i=t&&ip(t);function s(e,t){return"[Axios v"+Zl.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,n,o){if(!1===e)throw new Error(s(n," has been removed in "+t));return i&&!tp[n]&&(tp[n]=!0,console.warn(s(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,o)}};var sp={isOlderVersion:ip,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var i=Object.keys(e),s=i.length;s-- >0;){var n=i[s],o=t[n];if(o){var a=e[n],c=void 0===a||o(a,n,e);if(!0!==c)throw new TypeError("option "+n+" must be "+c)}else if(!0!==r)throw Error("Unknown option "+n)}},validators:ep},np=ol,op=dl,ap=ul,cp=function(e){return Ql(e),e.headers=e.headers||{},e.data=Hl.call(e,e.data,e.headers,e.transformRequest),e.headers=Gl.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Gl.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Kl.adapter)(e).then((function(t){return Ql(e),t.data=Hl.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return Jl(t)||(Ql(e),t&&t.response&&(t.response.data=Hl.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},dp=Yl,lp=sp,pp=lp.validators;function up(e){this.defaults=e,this.interceptors={request:new ap,response:new ap}}up.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=dp(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&lp.assertOptions(t,{silentJSONParsing:pp.transitional(pp.boolean,"1.0.0"),forcedJSONParsing:pp.transitional(pp.boolean,"1.0.0"),clarifyTimeoutError:pp.transitional(pp.boolean,"1.0.0")},!1);var r=[],i=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(i=i&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var s,n=[];if(this.interceptors.response.forEach((function(e){n.push(e.fulfilled,e.rejected)})),!i){var o=[cp,void 0];for(Array.prototype.unshift.apply(o,r),o=o.concat(n),s=Promise.resolve(e);o.length;)s=s.then(o.shift(),o.shift());return s}for(var a=e;r.length;){var c=r.shift(),d=r.shift();try{a=c(a)}catch(e){d(e);break}}try{s=cp(a)}catch(e){return Promise.reject(e)}for(;n.length;)s=s.then(n.shift(),n.shift());return s},up.prototype.getUri=function(e){return e=dp(this.defaults,e),op(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},np.forEach(["delete","get","head","options"],(function(e){up.prototype[e]=function(t,r){return this.request(dp(r||{},{method:e,url:t,data:(r||{}).data}))}})),np.forEach(["post","put","patch"],(function(e){up.prototype[e]=function(t,r,i){return this.request(dp(i||{},{method:e,url:t,data:r}))}}));var hp=up;function fp(e){this.message=e}fp.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},fp.prototype.__CANCEL__=!0;var mp=fp,gp=mp;function vp(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new gp(e),t(r.reason))}))}vp.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},vp.source=function(){var e,t=new vp((function(t){e=t}));return{token:t,cancel:e}};var yp=vp,bp=ol,wp=Xd,_p=hp,Sp=Yl;function kp(e){var t=new _p(e),r=wp(_p.prototype.request,t);return bp.extend(r,_p.prototype,t),bp.extend(r,t),r}var Cp=kp(Wl);Cp.Axios=_p,Cp.create=function(e){return kp(Sp(Cp.defaults,e))},Cp.Cancel=mp,Cp.CancelToken=yp,Cp.isCancel=$l,Cp.all=function(e){return Promise.all(e)},Cp.spread=function(e){return function(t){return e.apply(null,t)}},Cp.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},Qd.exports=Cp,Qd.exports.default=Cp;var Rp=Qd.exports,Pp="undefined"!=typeof Symbol&&Symbol,Tp=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var i=Object.getOwnPropertySymbols(e);if(1!==i.length||i[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var s=Object.getOwnPropertyDescriptor(e,t);if(42!==s.value||!0!==s.enumerable)return!1}return!0},Ep="Function.prototype.bind called on incompatible ",Dp=Array.prototype.slice,xp=Object.prototype.toString,Mp=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==xp.call(t))throw new TypeError(Ep+t);for(var r,i=Dp.call(arguments,1),s=function(){if(this instanceof r){var s=t.apply(this,i.concat(Dp.call(arguments)));return Object(s)===s?s:this}return t.apply(e,i.concat(Dp.call(arguments)))},n=Math.max(0,t.length-i.length),o=[],a=0;a<n;a++)o.push("$"+a);if(r=Function("binder","return function ("+o.join(",")+"){ return binder.apply(this,arguments); }")(s),t.prototype){var c=function(){};c.prototype=t.prototype,r.prototype=new c,c.prototype=null}return r},Lp=Function.prototype.bind||Mp,Ip=Lp.call(Function.call,Object.prototype.hasOwnProperty),Op=SyntaxError,Ap=Function,jp=TypeError,Fp=function(e){try{return Ap('"use strict"; return ('+e+").constructor;")()}catch(e){}},Np=Object.getOwnPropertyDescriptor;if(Np)try{Np({},"")}catch(Ka){Np=null}var Bp=function(){throw new jp},Up=Np?function(){try{return Bp}catch(e){try{return Np(arguments,"callee").get}catch(e){return Bp}}}():Bp,qp="function"==typeof Pp&&"function"==typeof Symbol&&"symbol"==typeof Pp("foo")&&"symbol"==typeof Symbol("bar")&&Tp(),Wp=Object.getPrototypeOf||function(e){return e.__proto__},Vp={},zp="undefined"==typeof Uint8Array?undefined:Wp(Uint8Array),$p={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":qp?Wp([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":Vp,"%AsyncGenerator%":Vp,"%AsyncGeneratorFunction%":Vp,"%AsyncIteratorPrototype%":Vp,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":Ap,"%GeneratorFunction%":Vp,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":qp?Wp(Wp([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&qp?Wp((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&qp?Wp((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":qp?Wp(""[Symbol.iterator]()):undefined,"%Symbol%":qp?Symbol:undefined,"%SyntaxError%":Op,"%ThrowTypeError%":Up,"%TypedArray%":zp,"%TypeError%":jp,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet},Gp=function e(t){var r;if("%AsyncFunction%"===t)r=Fp("async function () {}");else if("%GeneratorFunction%"===t)r=Fp("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=Fp("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var s=e("%AsyncGenerator%");s&&(r=Wp(s.prototype))}return $p[t]=r,r},Hp={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Jp=Lp,Kp=Ip,Qp=Jp.call(Function.call,Array.prototype.concat),Xp=Jp.call(Function.apply,Array.prototype.splice),Yp=Jp.call(Function.call,String.prototype.replace),Zp=Jp.call(Function.call,String.prototype.slice),eu=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,tu=/\\(\\)?/g,ru=function(e){var t=Zp(e,0,1),r=Zp(e,-1);if("%"===t&&"%"!==r)throw new Op("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new Op("invalid intrinsic syntax, expected opening `%`");var i=[];return Yp(e,eu,(function(e,t,r,s){i[i.length]=r?Yp(s,tu,"$1"):t||e})),i},iu=function(e,t){var r,i=e;if(Kp(Hp,i)&&(i="%"+(r=Hp[i])[0]+"%"),Kp($p,i)){var s=$p[i];if(s===Vp&&(s=Gp(i)),void 0===s&&!t)throw new jp("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:s}}throw new Op("intrinsic "+e+" does not exist!")},su=function(e,t){if("string"!=typeof e||0===e.length)throw new jp("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new jp('"allowMissing" argument must be a boolean');var r=ru(e),i=r.length>0?r[0]:"",s=iu("%"+i+"%",t),n=s.name,o=s.value,a=!1,c=s.alias;c&&(i=c[0],Xp(r,Qp([0,1],c)));for(var d=1,l=!0;d<r.length;d+=1){var p=r[d],u=Zp(p,0,1),h=Zp(p,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new Op("property names with quotes must have matching quotes");if("constructor"!==p&&l||(a=!0),Kp($p,n="%"+(i+="."+p)+"%"))o=$p[n];else if(null!=o){if(!(p in o)){if(!t)throw new jp("base intrinsic for "+e+" exists, but the property is not available.");return}if(Np&&d+1>=r.length){var f=Np(o,p);o=(l=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:o[p]}else l=Kp(o,p),o=o[p];l&&!a&&($p[n]=o)}}return o},nu={exports:{}};!function(e){var t=Lp,r=su,i=r("%Function.prototype.apply%"),s=r("%Function.prototype.call%"),n=r("%Reflect.apply%",!0)||t.call(s,i),o=r("%Object.getOwnPropertyDescriptor%",!0),a=r("%Object.defineProperty%",!0),c=r("%Math.max%");if(a)try{a({},"a",{value:1})}catch(e){a=null}e.exports=function(e){var r=n(t,s,arguments);if(o&&a){var i=o(r,"length");i.configurable&&a(r,"length",{value:1+c(0,e.length-(arguments.length-1))})}return r};var d=function(){return n(t,i,arguments)};a?a(e.exports,"apply",{value:d}):e.exports.apply=d}(nu);var ou=su,au=nu.exports,cu=au(ou("String.prototype.indexOf")),du=c(Object.freeze({__proto__:null,default:{}})),lu="function"==typeof Map&&Map.prototype,pu=Object.getOwnPropertyDescriptor&&lu?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,uu=lu&&pu&&"function"==typeof pu.get?pu.get:null,hu=lu&&Map.prototype.forEach,fu="function"==typeof Set&&Set.prototype,mu=Object.getOwnPropertyDescriptor&&fu?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,gu=fu&&mu&&"function"==typeof mu.get?mu.get:null,vu=fu&&Set.prototype.forEach,yu="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,bu="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,wu="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,_u=Boolean.prototype.valueOf,Su=Object.prototype.toString,ku=Function.prototype.toString,Cu=String.prototype.match,Ru="function"==typeof BigInt?BigInt.prototype.valueOf:null,Pu=Object.getOwnPropertySymbols,Tu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Eu="function"==typeof Symbol&&"object"==typeof Symbol.iterator,Du=Object.prototype.propertyIsEnumerable,xu=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),Mu=du.custom,Lu=Mu&&Fu(Mu)?Mu:null,Iu="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function Ou(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function Au(e){return String(e).replace(/"/g,"&quot;")}function ju(e){return!("[object Array]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}function Fu(e){if(Eu)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!Tu)return!1;try{return Tu.call(e),!0}catch(e){}return!1}var Nu=Object.prototype.hasOwnProperty||function(e){return e in this};function Bu(e,t){return Nu.call(e,t)}function Uu(e){return Su.call(e)}function qu(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,i=e.length;r<i;r++)if(e[r]===t)return r;return-1}function Wu(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return Wu(e.slice(0,t.maxStringLength),t)+i}return Ou(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,Vu),"single",t)}function Vu(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+t.toString(16).toUpperCase()}function zu(e){return"Object("+e+")"}function $u(e){return e+" { ? }"}function Gu(e,t,r,i){return e+" ("+t+") {"+(i?Hu(r,i):r.join(", "))+"}"}function Hu(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function Ju(e,t){var r=ju(e),i=[];if(r){i.length=e.length;for(var s=0;s<e.length;s++)i[s]=Bu(e,s)?t(e[s],e):""}var n,o="function"==typeof Pu?Pu(e):[];if(Eu){n={};for(var a=0;a<o.length;a++)n["$"+o[a]]=o[a]}for(var c in e)Bu(e,c)&&(r&&String(Number(c))===c&&c<e.length||Eu&&n["$"+c]instanceof Symbol||(/[^\w$]/.test(c)?i.push(t(c,e)+": "+t(e[c],e)):i.push(c+": "+t(e[c],e))));if("function"==typeof Pu)for(var d=0;d<o.length;d++)Du.call(e,o[d])&&i.push("["+t(o[d])+"]: "+t(e[o[d]],e));return i}var Ku=su,Qu=function(e,t){var r=ou(e,!!t);return"function"==typeof r&&cu(e,".prototype.")>-1?au(r):r},Xu=function e(t,r,i,s){var n=r||{};if(Bu(n,"quoteStyle")&&"single"!==n.quoteStyle&&"double"!==n.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Bu(n,"maxStringLength")&&("number"==typeof n.maxStringLength?n.maxStringLength<0&&n.maxStringLength!==1/0:null!==n.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var o=!Bu(n,"customInspect")||n.customInspect;if("boolean"!=typeof o&&"symbol"!==o)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Bu(n,"indent")&&null!==n.indent&&"\t"!==n.indent&&!(parseInt(n.indent,10)===n.indent&&n.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return Wu(t,n);if("number"==typeof t)return 0===t?1/0/t>0?"0":"-0":String(t);if("bigint"==typeof t)return String(t)+"n";var a=void 0===n.depth?5:n.depth;if(void 0===i&&(i=0),i>=a&&a>0&&"object"==typeof t)return ju(t)?"[Array]":"[Object]";var c=function(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;r=Array(e.indent+1).join(" ")}return{base:r,prev:Array(t+1).join(r)}}(n,i);if(void 0===s)s=[];else if(qu(s,t)>=0)return"[Circular]";function d(t,r,o){if(r&&(s=s.slice()).push(r),o){var a={depth:n.depth};return Bu(n,"quoteStyle")&&(a.quoteStyle=n.quoteStyle),e(t,a,i+1,s)}return e(t,n,i+1,s)}if("function"==typeof t){var l=function(e){if(e.name)return e.name;var t=Cu.call(ku.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),p=Ju(t,d);return"[Function"+(l?": "+l:" (anonymous)")+"]"+(p.length>0?" { "+p.join(", ")+" }":"")}if(Fu(t)){var u=Eu?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):Tu.call(t);return"object"!=typeof t||Eu?u:zu(u)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(t)){for(var h="<"+String(t.nodeName).toLowerCase(),f=t.attributes||[],m=0;m<f.length;m++)h+=" "+f[m].name+"="+Ou(Au(f[m].value),"double",n);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(ju(t)){if(0===t.length)return"[]";var g=Ju(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(qu(e[t],"\n")>=0)return!1;return!0}(g)?"["+Hu(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}(t)){var v=Ju(t,d);return 0===v.length?"["+String(t)+"]":"{ ["+String(t)+"] "+v.join(", ")+" }"}if("object"==typeof t&&o){if(Lu&&"function"==typeof t[Lu])return t[Lu]();if("symbol"!==o&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!uu||!e||"object"!=typeof e)return!1;try{uu.call(e);try{gu.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var y=[];return hu.call(t,(function(e,r){y.push(d(r,t,!0)+" => "+d(e,t))})),Gu("Map",uu.call(t),y,c)}if(function(e){if(!gu||!e||"object"!=typeof e)return!1;try{gu.call(e);try{uu.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return vu.call(t,(function(e){b.push(d(e,t))})),Gu("Set",gu.call(t),b,c)}if(function(e){if(!yu||!e||"object"!=typeof e)return!1;try{yu.call(e,yu);try{bu.call(e,bu)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return $u("WeakMap");if(function(e){if(!bu||!e||"object"!=typeof e)return!1;try{bu.call(e,bu);try{yu.call(e,yu)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return $u("WeakSet");if(function(e){if(!wu||!e||"object"!=typeof e)return!1;try{return wu.call(e),!0}catch(e){}return!1}(t))return $u("WeakRef");if(function(e){return!("[object Number]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}(t))return zu(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!Ru)return!1;try{return Ru.call(e),!0}catch(e){}return!1}(t))return zu(d(Ru.call(t)));if(function(e){return!("[object Boolean]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}(t))return zu(_u.call(t));if(function(e){return!("[object String]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}(t))return zu(d(String(t)));if(!function(e){return!("[object Date]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}(t)&&!function(e){return!("[object RegExp]"!==Uu(e)||Iu&&"object"==typeof e&&Iu in e)}(t)){var w=Ju(t,d),_=xu?xu(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",k=!_&&Iu&&Object(t)===t&&Iu in t?Uu(t).slice(8,-1):S?"Object":"",C=(_||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(k||S?"["+[].concat(k||[],S||[]).join(": ")+"] ":"");return 0===w.length?C+"{}":c?C+"{"+Hu(w,c)+"}":C+"{ "+w.join(", ")+" }"}return String(t)},Yu=Ku("%TypeError%"),Zu=Ku("%WeakMap%",!0),eh=Ku("%Map%",!0),th=Qu("WeakMap.prototype.get",!0),rh=Qu("WeakMap.prototype.set",!0),ih=Qu("WeakMap.prototype.has",!0),sh=Qu("Map.prototype.get",!0),nh=Qu("Map.prototype.set",!0),oh=Qu("Map.prototype.has",!0),ah=function(e,t){for(var r,i=e;null!==(r=i.next);i=r)if(r.key===t)return i.next=r.next,r.next=e.next,e.next=r,r},ch=String.prototype.replace,dh=/%20/g,lh="RFC3986",ph={default:lh,formatters:{RFC1738:function(e){return ch.call(e,dh,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:lh},uh=ph,hh=Object.prototype.hasOwnProperty,fh=Array.isArray,mh=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),gh=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},i=0;i<e.length;++i)void 0!==e[i]&&(r[i]=e[i]);return r},vh={arrayToObject:gh,assign:function(e,t){return Object.keys(t).reduce((function(e,r){return e[r]=t[r],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],i=0;i<t.length;++i)for(var s=t[i],n=s.obj[s.prop],o=Object.keys(n),a=0;a<o.length;++a){var c=o[a],d=n[c];"object"==typeof d&&null!==d&&-1===r.indexOf(d)&&(t.push({obj:n,prop:c}),r.push(d))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(fh(r)){for(var i=[],s=0;s<r.length;++s)void 0!==r[s]&&i.push(r[s]);t.obj[t.prop]=i}}}(t),e},decode:function(e,t,r){var i=e.replace(/\+/g," ");if("iso-8859-1"===r)return i.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(i)}catch(e){return i}},encode:function(e,t,r,i,s){if(0===e.length)return e;var n=e;if("symbol"==typeof e?n=Symbol.prototype.toString.call(e):"string"!=typeof e&&(n=String(e)),"iso-8859-1"===r)return escape(n).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var o="",a=0;a<n.length;++a){var c=n.charCodeAt(a);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||s===uh.RFC1738&&(40===c||41===c)?o+=n.charAt(a):c<128?o+=mh[c]:c<2048?o+=mh[192|c>>6]+mh[128|63&c]:c<55296||c>=57344?o+=mh[224|c>>12]+mh[128|c>>6&63]+mh[128|63&c]:(a+=1,c=65536+((1023&c)<<10|1023&n.charCodeAt(a)),o+=mh[240|c>>18]+mh[128|c>>12&63]+mh[128|c>>6&63]+mh[128|63&c])}return o},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(fh(e)){for(var r=[],i=0;i<e.length;i+=1)r.push(t(e[i]));return r}return t(e)},merge:function e(t,r,i){if(!r)return t;if("object"!=typeof r){if(fh(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!hh.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var s=t;return fh(t)&&!fh(r)&&(s=gh(t,i)),fh(t)&&fh(r)?(r.forEach((function(r,s){if(hh.call(t,s)){var n=t[s];n&&"object"==typeof n&&r&&"object"==typeof r?t[s]=e(n,r,i):t.push(r)}else t[s]=r})),t):Object.keys(r).reduce((function(t,s){var n=r[s];return hh.call(t,s)?t[s]=e(t[s],n,i):t[s]=n,t}),s)}},yh=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new Yu("Side channel does not contain "+Xu(e))},get:function(i){if(Zu&&i&&("object"==typeof i||"function"==typeof i)){if(e)return th(e,i)}else if(eh){if(t)return sh(t,i)}else if(r)return function(e,t){var r=ah(e,t);return r&&r.value}(r,i)},has:function(i){if(Zu&&i&&("object"==typeof i||"function"==typeof i)){if(e)return ih(e,i)}else if(eh){if(t)return oh(t,i)}else if(r)return function(e,t){return!!ah(e,t)}(r,i);return!1},set:function(i,s){Zu&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new Zu),rh(e,i,s)):eh?(t||(t=new eh),nh(t,i,s)):(r||(r={key:{},next:null}),function(e,t,r){var i=ah(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,s))}};return i},bh=vh,wh=ph,_h=Object.prototype.hasOwnProperty,Sh={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},kh=Array.isArray,Ch=String.prototype.split,Rh=Array.prototype.push,Ph=function(e,t){Rh.apply(e,kh(t)?t:[t])},Th=Date.prototype.toISOString,Eh=wh.default,Dh={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:bh.encode,encodeValuesOnly:!1,format:Eh,formatter:wh.formatters[Eh],indices:!1,serializeDate:function(e){return Th.call(e)},skipNulls:!1,strictNullHandling:!1},xh={},Mh=function e(t,r,i,s,n,o,a,c,d,l,p,u,h,f,m,g){for(var v=t,y=g,b=0,w=!1;void 0!==(y=y.get(xh))&&!w;){var _=y.get(t);if(b+=1,void 0!==_){if(_===b)throw new RangeError("Cyclic object value");w=!0}void 0===y.get(xh)&&(b=0)}if("function"==typeof c?v=c(r,v):v instanceof Date?v=p(v):"comma"===i&&kh(v)&&(v=bh.maybeMap(v,(function(e){return e instanceof Date?p(e):e}))),null===v){if(n)return a&&!f?a(r,Dh.encoder,m,"key",u):r;v=""}if(function(e){return"string"==typeof e||"number"==typeof e||"boolean"==typeof e||"symbol"==typeof e||"bigint"==typeof e}(v)||bh.isBuffer(v)){if(a){var S=f?r:a(r,Dh.encoder,m,"key",u);if("comma"===i&&f){for(var k=Ch.call(String(v),","),C="",R=0;R<k.length;++R)C+=(0===R?"":",")+h(a(k[R],Dh.encoder,m,"value",u));return[h(S)+(s&&kh(v)&&1===k.length?"[]":"")+"="+C]}return[h(S)+"="+h(a(v,Dh.encoder,m,"value",u))]}return[h(r)+"="+h(String(v))]}var P,T=[];if(void 0===v)return T;if("comma"===i&&kh(v))P=[{value:v.length>0?v.join(",")||null:void 0}];else if(kh(c))P=c;else{var E=Object.keys(v);P=d?E.sort(d):E}for(var D=s&&kh(v)&&1===v.length?r+"[]":r,x=0;x<P.length;++x){var M=P[x],L="object"==typeof M&&void 0!==M.value?M.value:v[M];if(!o||null!==L){var I=kh(v)?"function"==typeof i?i(D,M):D:D+(l?"."+M:"["+M+"]");g.set(t,b);var O=yh();O.set(xh,g),Ph(T,e(L,I,i,s,n,o,a,c,d,l,p,u,h,f,m,O))}}return T},Lh=vh,Ih=Object.prototype.hasOwnProperty,Oh=Array.isArray,Ah={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:Lh.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},jh=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},Fh=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},Nh=function(e,t,r,i){if(e){var s=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,n=/(\[[^[\]]*])/g,o=r.depth>0&&/(\[[^[\]]*])/.exec(s),a=o?s.slice(0,o.index):s,c=[];if(a){if(!r.plainObjects&&Ih.call(Object.prototype,a)&&!r.allowPrototypes)return;c.push(a)}for(var d=0;r.depth>0&&null!==(o=n.exec(s))&&d<r.depth;){if(d+=1,!r.plainObjects&&Ih.call(Object.prototype,o[1].slice(1,-1))&&!r.allowPrototypes)return;c.push(o[1])}return o&&c.push("["+s.slice(o.index)+"]"),function(e,t,r,i){for(var s=i?t:Fh(t,r),n=e.length-1;n>=0;--n){var o,a=e[n];if("[]"===a&&r.parseArrays)o=[].concat(s);else{o=r.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,d=parseInt(c,10);r.parseArrays||""!==c?!isNaN(d)&&a!==c&&String(d)===c&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(o=[])[d]=s:"__proto__"!==c&&(o[c]=s):o={0:s}}s=o}return s}(c,t,r,i)}},Bh=function(e,t){var r,i=e,s=function(e){if(!e)return Dh;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||Dh.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var r=wh.default;if(void 0!==e.format){if(!_h.call(wh.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=wh.formatters[r],s=Dh.filter;return("function"==typeof e.filter||kh(e.filter))&&(s=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:Dh.addQueryPrefix,allowDots:void 0===e.allowDots?Dh.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Dh.charsetSentinel,delimiter:void 0===e.delimiter?Dh.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:Dh.encode,encoder:"function"==typeof e.encoder?e.encoder:Dh.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:Dh.encodeValuesOnly,filter:s,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:Dh.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:Dh.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Dh.strictNullHandling}}(t);"function"==typeof s.filter?i=(0,s.filter)("",i):kh(s.filter)&&(r=s.filter);var n,o=[];if("object"!=typeof i||null===i)return"";n=t&&t.arrayFormat in Sh?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var a=Sh[n];if(t&&"commaRoundTrip"in t&&"boolean"!=typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var c="comma"===a&&t&&t.commaRoundTrip;r||(r=Object.keys(i)),s.sort&&r.sort(s.sort);for(var d=yh(),l=0;l<r.length;++l){var p=r[l];s.skipNulls&&null===i[p]||Ph(o,Mh(i[p],p,a,c,s.strictNullHandling,s.skipNulls,s.encode?s.encoder:null,s.filter,s.sort,s.allowDots,s.serializeDate,s.format,s.formatter,s.encodeValuesOnly,s.charset,d))}var u=o.join(s.delimiter),h=!0===s.addQueryPrefix?"?":"";return s.charsetSentinel&&("iso-8859-1"===s.charset?h+="utf8=%26%2310003%3B&":h+="utf8=%E2%9C%93&"),u.length>0?h+u:""},Uh=function(e,t){var r=function(e){if(!e)return Ah;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?Ah.charset:e.charset;return{allowDots:void 0===e.allowDots?Ah.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:Ah.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:Ah.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:Ah.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Ah.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:Ah.comma,decoder:"function"==typeof e.decoder?e.decoder:Ah.decoder,delimiter:"string"==typeof e.delimiter||Lh.isRegExp(e.delimiter)?e.delimiter:Ah.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:Ah.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:Ah.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:Ah.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:Ah.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Ah.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){var r,i={},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,n=t.parameterLimit===1/0?void 0:t.parameterLimit,o=s.split(t.delimiter,n),a=-1,c=t.charset;if(t.charsetSentinel)for(r=0;r<o.length;++r)0===o[r].indexOf("utf8=")&&("utf8=%E2%9C%93"===o[r]?c="utf-8":"utf8=%26%2310003%3B"===o[r]&&(c="iso-8859-1"),a=r,r=o.length);for(r=0;r<o.length;++r)if(r!==a){var d,l,p=o[r],u=p.indexOf("]="),h=-1===u?p.indexOf("="):u+1;-1===h?(d=t.decoder(p,Ah.decoder,c,"key"),l=t.strictNullHandling?null:""):(d=t.decoder(p.slice(0,h),Ah.decoder,c,"key"),l=Lh.maybeMap(Fh(p.slice(h+1),t),(function(e){return t.decoder(e,Ah.decoder,c,"value")}))),l&&t.interpretNumericEntities&&"iso-8859-1"===c&&(l=jh(l)),p.indexOf("[]=")>-1&&(l=Oh(l)?[l]:l),Ih.call(i,d)?i[d]=Lh.combine(i[d],l):i[d]=l}return i}(e,r):e,s=r.plainObjects?Object.create(null):{},n=Object.keys(i),o=0;o<n.length;++o){var a=n[o],c=Nh(a,i[a],r,"string"==typeof e);s=Lh.merge(s,c,r)}return!0===r.allowSparse?s:Lh.compact(s)},qh={formats:ph,parse:Uh,stringify:Bh};class Wh{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=Rp.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>qh.stringify(e)}),this.customNode=i}getNode(e){return r(this,void 0,void 0,(function*(){if(this.customNode)return this.customNode;const{data:t}=yield this.api.get("/nodes/best",{params:e});return t}))}}Error;const Vh=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],zh=({from:e,seen:t,to_:r,forceEnumerable:i})=>{const s=r||(Array.isArray(e)?[]:{});t.push(e);for(const[r,n]of Object.entries(e))"function"!=typeof n&&(n&&"object"==typeof n?t.includes(e[r])?s[r]="[Circular]":s[r]=zh({from:e[r],seen:t.slice(),forceEnumerable:i}):s[r]=n);for(const{property:t,enumerable:r}of Vh)"string"==typeof e[t]&&Object.defineProperty(s,t,{value:e[t],enumerable:!!i||r,configurable:!0,writable:!0});return s};var $h,Gh,Hh,Jh,Kh,Qh,Xh,Yh=e=>"object"==typeof e&&null!==e?zh({from:e,seen:[],forceEnumerable:!0}):"function"==typeof e?`[Function: ${e.name||"anonymous"}]`:e;class Zh extends g{constructor(e,t){super(e,null!=t?t:"invalid_payload")}}!function(e){e.DominantSpeaker="dominant-speaker",e.PeersVolumes="peers-volumes",e.Silence="silence"}($h||($h={}));class ef{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Ke({logLevel:t.logLevel,namespace:"ChannelAudioObserverEventHandler",onLogMessage:r})}handle(e){try{const t=JSON.parse(e);switch(ef.validateEventPayload(t),t.event){case $h.DominantSpeaker:this.handleDominantSpeaker(t);break;case $h.PeersVolumes:this.handlePeerVolumes(t);break;case $h.Silence:this.handleSilence()}}catch(t){this.logger.warn("Failed to handle audio observer event",{error:Yh(t),eventData:e})}}handleDominantSpeaker(e){const{peerId:t}=e.data,r=this.engine.getPeerById(t);this.engine.setActiveSpeakerPeer(r)}handlePeerVolumes(e){e.volumes.forEach((e=>{var t;const{peerId:r,trackLabel:i,value:s}=e,n=null===(t=this.engine.getPeerById(r))||void 0===t?void 0:t.tracks.get(i);n&&n.setVolume(s)}))}handleSilence(){this.engine.peers.flatMap((e=>Array.from(e.tracks.values()))).forEach((e=>e.setVolume(0))),this.engine.setActiveSpeakerPeer(void 0)}static validateEventPayload(e){switch(e.event){case $h.Silence:break;case $h.DominantSpeaker:{e.data||ef.throwInvalidPayload();const{peerId:t,producerId:r,trackLabel:i}=e.data;"string"==typeof t&&"string"==typeof r&&i===u.Microphone||ef.throwInvalidPayload();break}case $h.PeersVolumes:Array.isArray(e.volumes)||ef.throwInvalidPayload(),e.volumes.forEach((e=>{const{peerId:t,producerId:r,value:i,trackLabel:s}=e;"string"==typeof t&&"string"==typeof r&&"number"==typeof i&&s===u.Microphone||ef.throwInvalidPayload()}));break;default:ef.throwInvalidPayload()}}static throwInvalidPayload(){throw new Zh("Invalid channel audio observer event handler payload")}}class tf{createSystem(e){return new Dc(e)}createMedia(e){return new ta(e)}createNetwork(e){const{loadbalancer:t,logLevel:r,onLogMessage:i}=e,s=new Kd({logLevel:r,onLogMessage:i}),n=new Wh(t);return new Tc({logLevel:r,socketClient:s,loadBalancerApiClient:n,onLogMessage:i})}createChannelEventHandler(e){return new xc(e)}createMediaSoupEventHandler(e){return new Mc(e)}createAudioObserverEventHandler(e){return new ef(e)}createIssueDetector(e){var t,r;const i=null!==(t=e.logger)&&void 0!==t?t:console,s=new Cc({statsParser:new Rc({logger:null!==(r=e.logger)&&void 0!==r?r:console})});return new Pc({issueEmitter:new dc,networkScoresCalculator:new uc,detectors:[new wc,new mc,new gc,new vc,new bc,new yc,new fc,new _c],statsReporter:new lc({compositeStatsParser:s,getStatsInterval:5e3}),onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:e.ignoreSSRCList,compositeStatsParser:s,logger:i})}}class rf extends AudioWorkletNode{constructor(e){super(e.context,"rnnoise",{channelCountMode:"explicit",channelCount:1,channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,outputChannelCount:[1],processorOptions:{module:e.noiseSuppressor.module}}),this.port.onmessage=({data:e})=>{const t=Object.assign(new Event("status"),e);this.dispatchEvent(t)}}update(e){this.port.postMessage(e)}static register(e){return r(this,void 0,void 0,(function*(){yield e.audioWorklet.addModule(`${window.location.origin}/noiseSuppressionWorklet.js`)}))}}class sf{constructor(e){Gh.set(this,void 0),Hh.set(this,void 0),Jh.set(this,void 0),Kh.set(this,void 0),Qh.set(this,void 0),Xh.set(this,!0),s(this,Gh,e.noiseSuppressor.instance.exports,"f"),s(this,Hh,e.context,"f"),s(this,Jh,new Float32Array(i(this,Gh,"f").memory.buffer),"f"),s(this,Kh,i(this,Gh,"f").newState(),"f"),s(this,Qh,i(this,Hh,"f").createScriptProcessor(),"f"),this.setOnAudioProcess()}get noiseSuppressionScriptProcessorNode(){return i(this,Qh,"f")}update(e){e||(s(this,Xh,!1,"f"),i(this,Gh,"f").deleteState(i(this,Kh,"f")));const t=Object.assign(new Event("status"),{vadProb:i(this,Gh,"f").getVadProb(i(this,Kh,"f"))});i(this,Qh,"f").dispatchEvent(t)}setOnAudioProcess(){i(this,Qh,"f").addEventListener("audioprocess",(({inputBuffer:e,outputBuffer:t})=>{if(!i(this,Xh,"f"))return;i(this,Jh,"f").set(e.getChannelData(0),i(this,Gh,"f").getInput(i(this,Kh,"f"))/4);const r=t.getChannelData(0),s=i(this,Gh,"f").pipe(i(this,Kh,"f"),r.length)/4;s&&r.set(i(this,Jh,"f").subarray(s,s+r.length))}))}}Gh=new WeakMap,Hh=new WeakMap,Jh=new WeakMap,Kh=new WeakMap,Qh=new WeakMap,Xh=new WeakMap;var nf,of,af,cf,df,lf,pf,uf,hf,ff;class mf{constructor({context:e,noiseSuppressor:t}){nf.set(this,void 0),of.set(this,void 0),af.set(this,void 0),s(this,nf,e,"f"),s(this,of,t,"f")}createNoiseSuppressionNode(){return r(this,void 0,void 0,(function*(){return/apple/i.test(navigator.vendor)?this.createScriptProcessorNode():this.createAudioWorkletNode()}))}stop(){var e;null===(e=i(this,af,"f"))||void 0===e||e.update(!1)}createAudioWorkletNode(){return r(this,void 0,void 0,(function*(){return yield rf.register(i(this,nf,"f")),s(this,af,new rf({context:i(this,nf,"f"),noiseSuppressor:i(this,of,"f")}),"f"),i(this,af,"f")}))}createScriptProcessorNode(){return s(this,af,new sf({context:i(this,nf,"f"),noiseSuppressor:i(this,of,"f")}),"f"),i(this,af,"f").noiseSuppressionScriptProcessorNode}}nf=new WeakMap,of=new WeakMap,af=new WeakMap;class gf{constructor(e){cf.set(this,void 0),df.set(this,void 0),lf.set(this,void 0),pf.set(this,void 0),s(this,cf,e.noiseSuppressor,"f"),s(this,lf,new Ke({namespace:"TrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return!!i(this,pf,"f")}processTrack(e){return r(this,void 0,void 0,(function*(){const t=(e=>{const t=window.AudioContext||window.webkitAudioContext||!1;return t?new t(e):null})();if(!t)throw new Error("AudioContext is not available");const r=new MediaStreamAudioDestinationNode(t,{channelCountMode:"explicit",channelCount:1,channelInterpretation:"speakers"});yield rf.register(t);const n=t.createMediaStreamSource(new MediaStream([e])),o=new mf({context:t,noiseSuppressor:i(this,cf,"f")}),a=yield o.createNoiseSuppressionNode();a.connect(r),n.connect(a);const[c]=r.stream.getTracks();return s(this,df,{audioContext:t,streamDestination:r,noiseSuppressionNode:a,noiseSuppressionProvider:o},"f"),s(this,pf,c,"f"),i(this,lf,"f").info("processTrack()",{track:e}),c}))}stopProcessing(){var e;return r(this,void 0,void 0,(function*(){if(this.isProcessing)if(i(this,df,"f"))try{i(this,df,"f").noiseSuppressionProvider.stop(),i(this,df,"f").noiseSuppressionNode.disconnect(),i(this,df,"f").streamDestination.disconnect(),yield i(this,df,"f").audioContext.close(),null===(e=i(this,pf,"f"))||void 0===e||e.stop(),s(this,pf,void 0,"f"),i(this,lf,"f").info("stopProcessing()",{success:!0})}catch(e){i(this,lf,"f").error("stopProcessing()",{success:!1,error:e})}else i(this,lf,"f").warn("stopProcessing()",{success:!1,description:"Processing context is not available"});else i(this,lf,"f").debug("stopProcessing()",{description:"Track is not processed"})}))}}cf=new WeakMap,df=new WeakMap,lf=new WeakMap,pf=new WeakMap;class vf extends ya{constructor(e){super(e),uf.set(this,void 0),hf.set(this,void 0),ff.set(this,void 0),e.noiseSuppressor&&s(this,uf,new gf({noiseSuppressor:e.noiseSuppressor,logLevel:e.logLevel}),"f"),s(this,ff,new Ke({namespace:"AudioTrack",logLevel:e.logLevel}),"f")}get isEffectsProcessing(){var e;return!!(null===(e=i(this,uf,"f"))||void 0===e?void 0:e.isProcessing)}getEncoderConfig(){return this.encoderConfig}getEncodings(){var e;return null!==(e=this.getEncoderConfig().encodings)&&void 0!==e?e:zo}getCodecOptions(){var e,t;return{opusFec:null===(e=this.getEncoderConfig().enableFec)||void 0===e||e,opusDtx:null===(t=this.getEncoderConfig().enableDtx)||void 0===t||t}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||"opus"}enableNoiseSuppression(){var e;return r(this,void 0,void 0,(function*(){if(i(this,uf,"f"))try{const t=yield null===(e=i(this,uf,"f"))||void 0===e?void 0:e.processTrack(this.mediaStreamTrack);s(this,hf,this.mediaStreamTrack,"f"),yield this.replaceTrack(t)}catch(e){throw this.logger.warn("enableNoiseSuppression()",{description:"Can not enable noise suppression",track:this,error:e}),new Error("Can not enable noise suppression")}else this.logger.warn("enableNoiseSuppression()",{description:"Track suppressor is not defined"})}))}disableNoiseSuppression(){var e,t;return r(this,void 0,void 0,(function*(){try{if(!(null===(e=i(this,uf,"f"))||void 0===e?void 0:e.isProcessing))return void i(this,ff,"f").debug("stopProcessing()",{description:"Track is not processed"});if(!i(this,hf,"f"))return void this.logger.warn("disableNoiseSuppression()",{description:"Original track missing"});yield this.replaceTrack(i(this,hf,"f")),yield null===(t=i(this,uf,"f"))||void 0===t?void 0:t.stopProcessing()}catch(e){throw this.logger.warn("disableNoiseSuppression()",{description:"Can not disable noise suppression",track:this,error:e}),new Error("Can not disable noise suppression")}}))}publish(){return r(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),codecOptions:this.getCodecOptions()}),this.clientEventEmitter.emit(q,this)}))}}uf=new WeakMap,hf=new WeakMap,ff=new WeakMap;class yf{createAudioTrack(e){return new vf(e)}createVideoTrack(e){return new Va(e)}}class bf{constructor(e){var t,r;const{observer:i,network:s,onLogMessage:o,onIssues:a,onNetworkScoresUpdated:c,logLevel:d,disableWid:l}=e;this._observer=null!=i?i:new n;const p=new tf,u=new yf;this.engine=new Ha({dependenciesFactory:p,clientEventEmitter:this.observer,media:{mediaTracksFactory:u},network:{loadbalancer:{baseURL:null===(t=null==s?void 0:s.loadbalancer)||void 0===t?void 0:t.baseURL,customNode:null===(r=null==s?void 0:s.loadbalancer)||void 0===r?void 0:r.customNode}},logLevel:d,onLogMessage:o,onIssues:a,onNetworkScoresUpdated:c,disableWid:l})}get observer(){return this._observer}get id(){return this.engine.mySocketId}get peers(){return this.engine.peers}get availableVideoDevices(){return this.engine.system.availableVideoDevices}get availableAudioDevices(){return this.engine.system.availableAudioDevices}get canUseNoiseSuppression(){return this.engine.canUseNoiseSuppression}detectDevices(){return r(this,void 0,void 0,(function*(){return yield this.engine.system.detectDevices(),{video:this.engine.system.availableVideoDevices,audio:this.engine.system.availableAudioDevices}}))}join(e){return this.engine.join(e)}leave(){return this.engine.release()}confirmActivity(){return this.engine.confirmActivity()}createCameraVideoTrack(e){return this.engine.createCameraVideoTrack(e)}createMicrophoneAudioTrack(e){return this.engine.createMicrophoneAudioTrack(e)}createScreenMediaTracks(e){return this.engine.createScreenMediaTracks(e)}deleteTrack(e){return this.engine.deleteTrack(e)}loadPeers(e){return this.engine.loadPeers(e)}updateAppData(e){return this.engine.updateAppData(e)}getTransportsInfo(){return r(this,void 0,void 0,(function*(){return this.engine.network.getTransportsStateInfo()}))}}export{bf as default};